diff --git a/BUILD.gn b/BUILD.gn
index 85c215a..6e6e8a8 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -1051,19 +1051,19 @@
       ":layout_test_data_mojo_bindings",
       ":layout_test_data_mojo_bindings_lite",
       "//content/shell:content_shell",
-      "//content/test:mojo_web_test_bindings_js_data_deps",
       "//content/shell:mojo_bindings_js_data_deps",
+      "//content/test:mojo_web_test_bindings_js_data_deps",
       "//device/bluetooth/public/mojom:fake_bluetooth_interfaces_js_data_deps",
       "//device/vr/public/mojom:mojom_js_data_deps",
       "//media/capture/mojom:image_capture_js_data_deps",
       "//media/midi:mojo_js_data_deps",
       "//mojo/public/interfaces/bindings/tests:test_data_deps",
-      "//mojo/public/mojom/base:base_js_data_deps",
       "//mojo/public/js/ts/bindings/tests:test_interfaces_js_data_deps",
-      "//services/shape_detection/public/mojom:mojom_js_data_deps",
-      "//services/device/public/mojom:mojom_js_data_deps",
+      "//mojo/public/mojom/base:base_js_data_deps",
       "//services/device/public/mojom:generic_sensor_js_data_deps",
+      "//services/device/public/mojom:mojom_js_data_deps",
       "//services/device/public/mojom:usb_js_data_deps",
+      "//services/shape_detection/public/mojom:mojom_js_data_deps",
       "//skia/public/mojom:mojom_js_data_deps",
       "//testing/buildbot/filters:blink_web_tests_filter",
       "//third_party/blink/public:blink_devtools_frontend_resources_files",
@@ -1102,8 +1102,8 @@
 
     if (is_fuchsia) {
       data_deps += [
-        "//content/shell:content_shell_fuchsia",
         "//build/fuchsia/layout_test_proxy:layout_test_proxy_runner",
+        "//content/shell:content_shell_fuchsia",
       ]
     }
 
@@ -1244,8 +1244,8 @@
     }
     if (is_win || is_android) {
       data_deps += [
-        "//components:components_perftests",
         "//chrome/test:angle_perftests",
+        "//components:components_perftests",
       ]
     }
   }
@@ -1324,11 +1324,11 @@
     data_deps = [
       "chrome/browser/resources:closure_compile",
       "chrome/test:closure_compile",
+      "components/flags_ui/resources:closure_compile",
       "components/neterror/resources:closure_compile",
       "components/security_interstitials/core/common/resources:closure_compile",
       "components/sync/driver/resources:closure_compile",
       "components/ukm/debug:closure_compile",
-      "components/flags_ui/resources:closure_compile",
       "content/browser/resources:closure_compile",
       "mojo/public/tools/bindings/generators/js_templates/lite/test:closure_compile",
       "ui/webui/resources:closure_compile",
diff --git a/DEPS b/DEPS
index 6840c99e..229fc62 100644
--- a/DEPS
+++ b/DEPS
@@ -175,11 +175,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': '706eb5788e8b7cc7e211989807eeb517a6ced38d',
+  'skia_revision': 'fdb2b7d530383d85956b883779209a0627cc275b',
   # 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': '259dff3db0cc5126c95efc07addd5b380b93da48',
+  'v8_revision': '29760046ff9e33dec7fa39cf2cf77577c836b525',
   # 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.
@@ -187,7 +187,7 @@
   # 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': 'd1860ea17e8e9434c3124821f192a09bb8e5ecdd',
+  'angle_revision': '7587588595901010a7b8d8683d06796ae420edb8',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling SwiftShader
   # and whatever else without interference from each other.
@@ -195,14 +195,14 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling PDFium
   # and whatever else without interference from each other.
-  'pdfium_revision': '11d89e6d25af02147c19ebaccefcdde691ee292d',
+  'pdfium_revision': 'f3163cf2ed39849aecbcb10c38b241634e647039',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling BoringSSL
   # and whatever else without interference from each other.
   #
   # Note this revision should be updated with
   # third_party/boringssl/roll_boringssl.py, not roll-dep.
-  'boringssl_revision': '243b5cc9e33979ae2afa79eaa4e4c8d59db161d4',
+  'boringssl_revision': 'cb3f04f584a53844546aaa32e949534c453185aa',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling google-toolbox-for-mac
   # and whatever else without interference from each other.
@@ -226,7 +226,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling freetype
   # and whatever else without interference from each other.
-  'freetype_revision': '0c14a3adb08ca5aaac3188a63246361c50b069d4',
+  'freetype_revision': '7e1b39f6cd1f8e14d45592c9b192ade643d8d9de',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling HarfBuzz
   # and whatever else without interference from each other.
@@ -238,7 +238,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling catapult
   # and whatever else without interference from each other.
-  'catapult_revision': '69337c37ded7647937c3a9d2cdeb4ebfa6930f5f',
+  'catapult_revision': 'ba22253ee917ef8b05185302ef7b0706363a6b17',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libFuzzer
   # and whatever else without interference from each other.
@@ -246,7 +246,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling devtools-frontend
   # and whatever else without interference from each other.
-  'devtools_frontend_revision': '527977db7a923a2b0e9fdedfbd8857bde0dc8ed9',
+  'devtools_frontend_revision': 'da2f64ae4a747fc868ca05a851f1d650ba7701a3',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libprotobuf-mutator
   # and whatever else without interference from each other.
@@ -290,7 +290,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.
-  'spv_tools_revision': '96354f5047bf35765af49657304357e00264e5f9',
+  'spv_tools_revision': '38d7fbaad0a376c777fa5ee95338c2c90e02d416',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
@@ -302,11 +302,11 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
-  'shaderc_revision': '979ad21e84227ea1ebedbd59aaa8040028dabaeb',
+  'shaderc_revision': '4399459c192085e44270b3dea25c0d3224ad77df',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
-  'dawn_revision': '77fd4750ae5ad3ee9f281089fddfeaca56ed049c',
+  'dawn_revision': '1bbbe8f52da580bd245af733e068eaabacf72731',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
@@ -864,7 +864,7 @@
 
   # Build tools for Chrome OS. Note: This depends on third_party/pyelftools.
   'src/third_party/chromite': {
-      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '0870992e3e4ba6e6cc74adce9616fad23864c6de',
+      'url': Var('chromium_git') + '/chromiumos/chromite.git' + '@' + '3c5c3d31fe5d54054b75b7e01b5f72cec9df4d76',
       'condition': 'checkout_linux',
   },
 
@@ -1156,7 +1156,7 @@
   },
 
   'src/third_party/libjpeg_turbo':
-    Var('chromium_git') + '/chromium/deps/libjpeg_turbo.git' + '@' + 'bc13578529255ec75005ffc98aae151666122892',
+    Var('chromium_git') + '/chromium/deps/libjpeg_turbo.git' + '@' + 'ce0e57e8e636f5132fe6f0590a4dba91f92fd935',
 
   'src/third_party/liblouis/src': {
       'url': Var('chromium_git') + '/external/liblouis-github.git' + '@' + '67ab8e96cc2f4db70f220f71cbdee0903e8abac6',
@@ -1295,7 +1295,7 @@
   },
 
   'src/third_party/perfetto':
-    Var('android_git') + '/platform/external/perfetto.git' + '@' + '7623b24e01317f3a04dd461695cb3f3e90162503',
+    Var('android_git') + '/platform/external/perfetto.git' + '@' + 'bd963dc116517241b00a1115ca1123d914024852',
 
   'src/third_party/perl': {
       'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3',
@@ -1496,7 +1496,7 @@
     Var('chromium_git') + '/external/khronosgroup/webgl.git' + '@' + 'dd55f3ca8f2ea716ca917a4aaf36f0729fe902b1',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + '17ea068e8c72ec8ee31002eb6c23cf453c090d60',
+    Var('webrtc_git') + '/src.git' + '@' + '3a8df884d1691260c93da86ce864f8c890e9d155',
 
   'src/third_party/libgifcodec':
      Var('skia_git') + '/libgifcodec' + '@'+  Var('libgifcodec_revision'),
diff --git a/android_webview/browser/aw_browser_context.cc b/android_webview/browser/aw_browser_context.cc
index 70563ea..bd669cb3 100644
--- a/android_webview/browser/aw_browser_context.cc
+++ b/android_webview/browser/aw_browser_context.cc
@@ -84,13 +84,12 @@
   old_cache_path = old_cache_path.DirName().Append(
       FILE_PATH_LITERAL("org.chromium.android_webview"));
 
-  if (!base::PathExists(old_cache_path))
-    return;
-
-  bool success = base::CreateDirectory(cache_path);
-  if (success)
-    success &= base::Move(old_cache_path, cache_path);
-  DCHECK(success);
+  if (base::PathExists(old_cache_path)) {
+    bool success = base::CreateDirectory(cache_path);
+    if (success)
+      success &= base::Move(old_cache_path, cache_path);
+    DCHECK(success);
+  }
 
   base::FilePath old_context_storage_path;
   base::PathService::Get(base::DIR_ANDROID_APP_DATA, &old_context_storage_path);
@@ -101,19 +100,39 @@
 
   auto migrate_context_storage_data = [&old_context_storage_path,
                                        &context_storage_path](auto& suffix) {
-    if (base::PathExists(old_context_storage_path.Append(suffix))) {
-      bool success = base::Move(old_context_storage_path.Append(suffix),
-                                context_storage_path.Append(suffix));
+    FilePath old_file = old_context_storage_path.Append(suffix);
+    if (base::PathExists(old_file)) {
+      FilePath new_file = context_storage_path.Append(suffix);
 
+      if (base::PathExists(new_file)) {
+        bool success =
+            base::Move(new_file, new_file.AddExtension(".partial-migration"));
+        DCHECK(success);
+      }
+      bool success = base::Move(old_file, new_file);
       DCHECK(success);
     }
   };
 
+  // These were handled in the initial migration
   migrate_context_storage_data("Web Data");
   migrate_context_storage_data("Web Data-journal");
   migrate_context_storage_data("GPUCache");
   migrate_context_storage_data("blob_storage");
   migrate_context_storage_data("Session Storage");
+
+  // These were missed in the initial migration
+  migrate_context_storage_data("Application Cache");
+  migrate_context_storage_data("File System");
+  migrate_context_storage_data("IndexedDB");
+  migrate_context_storage_data("Local Storage");
+  migrate_context_storage_data("QuotaManager");
+  migrate_context_storage_data("QuotaManager-journal");
+  migrate_context_storage_data("Service Worker");
+  migrate_context_storage_data("VideoDecodeStats");
+  migrate_context_storage_data("databases");
+  migrate_context_storage_data("shared_proto_db");
+  migrate_context_storage_data("webrtc_event_logs");
 }
 
 }  // namespace
diff --git a/android_webview/browser/aw_feature_list_creator.cc b/android_webview/browser/aw_feature_list_creator.cc
index f636fa5..2e7de65cd 100644
--- a/android_webview/browser/aw_feature_list_creator.cc
+++ b/android_webview/browser/aw_feature_list_creator.cc
@@ -28,7 +28,6 @@
 #include "cc/base/switches.h"
 #include "components/autofill/core/common/autofill_prefs.h"
 #include "components/metrics/metrics_pref_names.h"
-#include "components/metrics/metrics_service.h"
 #include "components/pref_registry/pref_registry_syncable.h"
 #include "components/prefs/in_memory_pref_store.h"
 #include "components/prefs/json_pref_store.h"
@@ -58,6 +57,12 @@
     metrics::prefs::kInstallDate,
     metrics::prefs::kMetricsReportingEnabledTimestamp,
     metrics::prefs::kMetricsSessionID,
+    // Logged in system_profile.stability fields.
+    metrics::prefs::kStabilityLaunchCount,
+    metrics::prefs::kStabilityPageLoadCount,
+    metrics::prefs::kStabilityRendererHangCount,
+    metrics::prefs::kStabilityRendererLaunchCount,
+    metrics::prefs::kUninstallMetricsPageLoadCount,
     // Current and past country codes, to filter variations studies by country.
     variations::prefs::kVariationsCountry,
     variations::prefs::kVariationsPermanentConsistencyCountry,
@@ -83,7 +88,7 @@
 std::unique_ptr<PrefService> CreatePrefService() {
   auto pref_registry = base::MakeRefCounted<user_prefs::PrefRegistrySyncable>();
 
-  metrics::MetricsService::RegisterPrefs(pref_registry.get());
+  AwMetricsServiceClient::RegisterPrefs(pref_registry.get());
   variations::VariationsService::RegisterPrefs(pref_registry.get());
   pref_registry->RegisterIntegerPref(prefs::kRestartsWithStaleSeed, 0);
 
diff --git a/android_webview/browser/cookie_manager.cc b/android_webview/browser/cookie_manager.cc
index d0d1f64..984dc5b5 100644
--- a/android_webview/browser/cookie_manager.cc
+++ b/android_webview/browser/cookie_manager.cc
@@ -202,9 +202,18 @@
 
 void CookieManager::MigrateCookieStorePath() {
   base::FilePath old_cookie_store_path = GetPathInAppDirectory("Cookies");
+  base::FilePath old_cookie_journal_path =
+      GetPathInAppDirectory("Cookies-journal");
 
   if (base::PathExists(old_cookie_store_path)) {
     base::Move(old_cookie_store_path, cookie_store_path_);
+    base::Move(old_cookie_journal_path, cookie_store_path_);
+  } else {
+    // Some users got an incomplete version of this migration where the journal
+    // was not moved. Delete the old journal if it exists, as we can't merge
+    // them.
+    // TODO(torne): remove this in a future release (M81?)
+    base::DeleteFile(old_cookie_journal_path, false);
   }
 }
 
diff --git a/android_webview/browser/gfx/deferred_gpu_command_service.cc b/android_webview/browser/gfx/deferred_gpu_command_service.cc
index ccdeecf..008c9e9 100644
--- a/android_webview/browser/gfx/deferred_gpu_command_service.cc
+++ b/android_webview/browser/gfx/deferred_gpu_command_service.cc
@@ -34,7 +34,6 @@
                                      nullptr,
                                      gl::GLSurfaceFormat(),
                                      gpu_service->shared_image_manager(),
-                                     nullptr,
                                      nullptr),
       task_queue_(task_queue),
       gpu_service_(gpu_service) {}
@@ -70,4 +69,9 @@
   return false;
 }
 
+scoped_refptr<gpu::SharedContextState>
+DeferredGpuCommandService::GetSharedContextState() {
+  return nullptr;
+}
+
 }  // namespace android_webview
diff --git a/android_webview/browser/gfx/deferred_gpu_command_service.h b/android_webview/browser/gfx/deferred_gpu_command_service.h
index 4188cc09..f1736257 100644
--- a/android_webview/browser/gfx/deferred_gpu_command_service.h
+++ b/android_webview/browser/gfx/deferred_gpu_command_service.h
@@ -25,6 +25,7 @@
   void ScheduleOutOfOrderTask(base::OnceClosure task) override;
   void ScheduleDelayedWork(base::OnceClosure task) override;
   void PostNonNestableToClient(base::OnceClosure callback) override;
+  scoped_refptr<gpu::SharedContextState> GetSharedContextState() override;
 
  protected:
   ~DeferredGpuCommandService() override;
diff --git a/android_webview/browser/metrics/BUILD.gn b/android_webview/browser/metrics/BUILD.gn
index 3283d27..2f8379e4 100644
--- a/android_webview/browser/metrics/BUILD.gn
+++ b/android_webview/browser/metrics/BUILD.gn
@@ -8,6 +8,8 @@
     "aw_metrics_log_uploader.h",
     "aw_metrics_service_client.cc",
     "aw_metrics_service_client.h",
+    "aw_stability_metrics_provider.cc",
+    "aw_stability_metrics_provider.h",
     "memory_metrics_logger.cc",
     "memory_metrics_logger.h",
   ]
diff --git a/android_webview/browser/metrics/DEPS b/android_webview/browser/metrics/DEPS
new file mode 100644
index 0000000..7d0b15c
--- /dev/null
+++ b/android_webview/browser/metrics/DEPS
@@ -0,0 +1,5 @@
+include_rules = [
+  "-android_webview/browser",
+  "+android_webview/browser/metrics",
+  "+third_party/metrics_proto",
+]
diff --git a/android_webview/browser/metrics/aw_metrics_service_client.cc b/android_webview/browser/metrics/aw_metrics_service_client.cc
index af441f45..93a2f7ad0 100644
--- a/android_webview/browser/metrics/aw_metrics_service_client.cc
+++ b/android_webview/browser/metrics/aw_metrics_service_client.cc
@@ -9,6 +9,7 @@
 #include <memory>
 
 #include "android_webview/browser/metrics/aw_metrics_log_uploader.h"
+#include "android_webview/browser/metrics/aw_stability_metrics_provider.h"
 #include "android_webview/browser_jni_headers/AwMetricsServiceClient_jni.h"
 #include "android_webview/common/aw_features.h"
 #include "base/android/jni_android.h"
@@ -36,6 +37,7 @@
 #include "components/metrics/net/network_metrics_provider.h"
 #include "components/metrics/ui/screen_info_metrics_provider.h"
 #include "components/metrics/version_utils.h"
+#include "components/prefs/pref_registry_simple.h"
 #include "components/prefs/pref_service.h"
 #include "components/version_info/android/channel_getter.h"
 #include "components/version_info/version_info.h"
@@ -123,6 +125,8 @@
       std::make_unique<metrics::NetworkMetricsProvider>(
           content::CreateNetworkConnectionTrackerAsyncGetter()));
   service->RegisterMetricsProvider(
+      std::make_unique<android_webview::AwStabilityMetricsProvider>(prefs));
+  service->RegisterMetricsProvider(
       std::make_unique<metrics::AndroidMetricsProvider>());
   service->RegisterMetricsProvider(
       std::make_unique<metrics::CPUMetricsProvider>());
@@ -184,6 +188,12 @@
 AwMetricsServiceClient::AwMetricsServiceClient() = default;
 AwMetricsServiceClient::~AwMetricsServiceClient() = default;
 
+// static
+void AwMetricsServiceClient::RegisterPrefs(PrefRegistrySimple* registry) {
+  metrics::MetricsService::RegisterPrefs(registry);
+  metrics::StabilityMetricsHelper::RegisterPrefs(registry);
+}
+
 void AwMetricsServiceClient::Initialize(PrefService* pref_service) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   DCHECK(!init_finished_);
diff --git a/android_webview/browser/metrics/aw_metrics_service_client.h b/android_webview/browser/metrics/aw_metrics_service_client.h
index 812941d..ee44dc4 100644
--- a/android_webview/browser/metrics/aw_metrics_service_client.h
+++ b/android_webview/browser/metrics/aw_metrics_service_client.h
@@ -19,6 +19,7 @@
 #include "content/public/browser/notification_observer.h"
 #include "content/public/browser/notification_registrar.h"
 
+class PrefRegistrySimple;
 class PrefService;
 
 namespace metrics {
@@ -103,6 +104,9 @@
   AwMetricsServiceClient();
   ~AwMetricsServiceClient() override;
 
+  // Registers local state prefs used by this class.
+  static void RegisterPrefs(PrefRegistrySimple* registry);
+
   void Initialize(PrefService* pref_service);
   void SetHaveMetricsConsent(bool user_consent, bool app_consent);
   void SetFastStartupForTesting(bool fast_startup_for_testing);
diff --git a/android_webview/browser/metrics/aw_metrics_service_client_unittest.cc b/android_webview/browser/metrics/aw_metrics_service_client_unittest.cc
index 5edde27..2c48d296 100644
--- a/android_webview/browser/metrics/aw_metrics_service_client_unittest.cc
+++ b/android_webview/browser/metrics/aw_metrics_service_client_unittest.cc
@@ -85,7 +85,7 @@
 
 std::unique_ptr<TestingPrefServiceSimple> CreateTestPrefs() {
   auto prefs = std::make_unique<TestingPrefServiceSimple>();
-  metrics::MetricsService::RegisterPrefs(prefs->registry());
+  AwMetricsServiceClient::RegisterPrefs(prefs->registry());
   return prefs;
 }
 
diff --git a/android_webview/browser/metrics/aw_stability_metrics_provider.cc b/android_webview/browser/metrics/aw_stability_metrics_provider.cc
new file mode 100644
index 0000000..e060506f
--- /dev/null
+++ b/android_webview/browser/metrics/aw_stability_metrics_provider.cc
@@ -0,0 +1,68 @@
+// 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 "android_webview/browser/metrics/aw_stability_metrics_provider.h"
+
+#include "base/macros.h"
+#include "components/prefs/pref_service.h"
+#include "content/public/browser/notification_details.h"
+#include "content/public/browser/notification_service.h"
+#include "content/public/browser/notification_source.h"
+#include "content/public/browser/notification_types.h"
+#include "third_party/metrics_proto/system_profile.pb.h"
+
+namespace android_webview {
+
+AwStabilityMetricsProvider::AwStabilityMetricsProvider(PrefService* local_state)
+    : helper_(local_state) {
+  registrar_.Add(this, content::NOTIFICATION_LOAD_START,
+                 content::NotificationService::AllSources());
+  registrar_.Add(this, content::NOTIFICATION_RENDER_WIDGET_HOST_HANG,
+                 content::NotificationService::AllSources());
+  registrar_.Add(this, content::NOTIFICATION_RENDERER_PROCESS_CREATED,
+                 content::NotificationService::AllSources());
+}
+
+AwStabilityMetricsProvider::~AwStabilityMetricsProvider() {
+  registrar_.RemoveAll();
+}
+
+void AwStabilityMetricsProvider::OnRecordingEnabled() {}
+
+void AwStabilityMetricsProvider::OnRecordingDisabled() {}
+
+void AwStabilityMetricsProvider::ProvideStabilityMetrics(
+    metrics::SystemProfileProto* system_profile_proto) {
+  helper_.ProvideStabilityMetrics(system_profile_proto);
+}
+
+void AwStabilityMetricsProvider::ClearSavedStabilityMetrics() {
+  helper_.ClearSavedStabilityMetrics();
+}
+
+void AwStabilityMetricsProvider::Observe(
+    int type,
+    const content::NotificationSource& source,
+    const content::NotificationDetails& details) {
+  switch (type) {
+    case content::NOTIFICATION_LOAD_START:
+      helper_.LogLoadStarted();
+      break;
+
+    case content::NOTIFICATION_RENDER_WIDGET_HOST_HANG:
+      helper_.LogRendererHang();
+      break;
+
+    case content::NOTIFICATION_RENDERER_PROCESS_CREATED: {
+      helper_.LogRendererLaunched(/*was_extension_process=*/false);
+      break;
+    }
+
+    default:
+      NOTREACHED();
+      break;
+  }
+}
+
+}  // namespace android_webview
diff --git a/android_webview/browser/metrics/aw_stability_metrics_provider.h b/android_webview/browser/metrics/aw_stability_metrics_provider.h
new file mode 100644
index 0000000..2eab869
--- /dev/null
+++ b/android_webview/browser/metrics/aw_stability_metrics_provider.h
@@ -0,0 +1,61 @@
+// 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 ANDROID_WEBVIEW_BROWSER_METRICS_AW_STABILITY_METRICS_PROVIDER_H_
+#define ANDROID_WEBVIEW_BROWSER_METRICS_AW_STABILITY_METRICS_PROVIDER_H_
+
+#include "base/macros.h"
+#include "components/metrics/metrics_provider.h"
+#include "components/metrics/stability_metrics_helper.h"
+#include "content/public/browser/notification_observer.h"
+#include "content/public/browser/notification_registrar.h"
+
+class PrefService;
+
+namespace content {
+class NotificationDetails;
+class NotificationSource;
+}  // namespace content
+
+namespace metrics {
+class SystemProfileProto;
+}  // namespace metrics
+
+namespace android_webview {
+
+// AwStabilityMetricsProvider gathers and logs Content-embedder-specific
+// stability-related metrics. TODO(ntfschr): once we've fully implemented
+// stability metrics in AW, we should componentize most of this to be shared by
+// weblayer and chrome. See https://crbug.com/1015655.
+class AwStabilityMetricsProvider : public metrics::MetricsProvider,
+                                   public content::NotificationObserver {
+ public:
+  explicit AwStabilityMetricsProvider(PrefService* local_state);
+  ~AwStabilityMetricsProvider() override;
+
+  // metrics::MetricsDataProvider:
+  void OnRecordingEnabled() override;
+  void OnRecordingDisabled() override;
+  void ProvideStabilityMetrics(
+      metrics::SystemProfileProto* system_profile_proto) override;
+  void ClearSavedStabilityMetrics() override;
+
+ protected:
+  // content::NotificationObserver:
+  void Observe(int type,
+               const content::NotificationSource& source,
+               const content::NotificationDetails& details) override;
+
+ private:
+  metrics::StabilityMetricsHelper helper_;
+
+  // Registrar for receiving stability-related notifications.
+  content::NotificationRegistrar registrar_;
+
+  DISALLOW_COPY_AND_ASSIGN(AwStabilityMetricsProvider);
+};
+
+}  // namespace android_webview
+
+#endif  // ANDROID_WEBVIEW_BROWSER_METRICS_AW_STABILITY_METRICS_PROVIDER_H_
diff --git a/android_webview/browser/metrics/aw_stability_metrics_provider_unittest.cc b/android_webview/browser/metrics/aw_stability_metrics_provider_unittest.cc
new file mode 100644
index 0000000..7ee89e1
--- /dev/null
+++ b/android_webview/browser/metrics/aw_stability_metrics_provider_unittest.cc
@@ -0,0 +1,115 @@
+// 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 "android_webview/browser/metrics/aw_stability_metrics_provider.h"
+
+#include <memory>
+
+#include "base/macros.h"
+#include "base/test/metrics/histogram_tester.h"
+#include "base/test/metrics/user_action_tester.h"
+#include "components/metrics/stability_metrics_helper.h"
+#include "components/prefs/pref_service.h"
+#include "components/prefs/testing_pref_service.h"
+#include "content/public/browser/notification_service.h"
+#include "content/public/browser/notification_types.h"
+#include "content/public/test/browser_task_environment.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/metrics_proto/system_profile.pb.h"
+
+namespace android_webview {
+
+namespace {
+
+class AwStabilityMetricsProviderTest : public testing::Test {
+ protected:
+  AwStabilityMetricsProviderTest()
+      : prefs_(new TestingPrefServiceSimple),
+        notification_service_(content::NotificationService::Create()) {
+    metrics::StabilityMetricsHelper::RegisterPrefs(prefs()->registry());
+  }
+
+  TestingPrefServiceSimple* prefs() { return prefs_.get(); }
+
+ private:
+  std::unique_ptr<TestingPrefServiceSimple> prefs_;
+  content::BrowserTaskEnvironment task_environment_;
+
+  // AwStabilityMetricsProvider::RegisterForNotifications() requires the
+  // NotificationService to be up and running. Initialize it here, throw away
+  // the value because we don't need it directly.
+  std::unique_ptr<content::NotificationService> notification_service_;
+
+  DISALLOW_COPY_AND_ASSIGN(AwStabilityMetricsProviderTest);
+};
+
+class TestMetricsProvider : public AwStabilityMetricsProvider {
+ public:
+  explicit TestMetricsProvider(PrefService* local_state)
+      : AwStabilityMetricsProvider(local_state) {}
+  ~TestMetricsProvider() override {}
+
+  void Observe(int type,
+               const content::NotificationSource& source,
+               const content::NotificationDetails& details) override {
+    AwStabilityMetricsProvider::Observe(type, source, details);
+  }
+};
+
+}  // namespace
+
+TEST_F(AwStabilityMetricsProviderTest, PageLoadCount) {
+  base::HistogramTester histogram_tester;
+  base::UserActionTester user_action_tester;
+  TestMetricsProvider provider(prefs());
+  metrics::SystemProfileProto system_profile;
+
+  // Create a fake notification. Source and details aren't checked in the
+  // implementation, so just use empty values.
+  provider.Observe(content::NOTIFICATION_LOAD_START,
+                   content::NotificationService::AllSources(),
+                   content::NotificationService::NoDetails());
+
+  provider.ProvideStabilityMetrics(&system_profile);
+  EXPECT_EQ(1, system_profile.stability().page_load_count());
+  EXPECT_EQ(1, user_action_tester.GetActionCount("PageLoad"));
+  histogram_tester.ExpectUniqueSample("Stability.Experimental.Counts",
+                                      metrics::StabilityEventType::kPageLoad,
+                                      1);
+}
+
+TEST_F(AwStabilityMetricsProviderTest, RendererHangCount) {
+  base::HistogramTester histogram_tester;
+  TestMetricsProvider provider(prefs());
+  metrics::SystemProfileProto system_profile;
+
+  // Create a fake notification. Source and details aren't checked in the
+  // implementation, so just use empty values.
+  provider.Observe(content::NOTIFICATION_RENDER_WIDGET_HOST_HANG,
+                   content::NotificationService::AllSources(),
+                   content::NotificationService::NoDetails());
+
+  provider.ProvideStabilityMetrics(&system_profile);
+  EXPECT_EQ(1, system_profile.stability().renderer_hang_count());
+  histogram_tester.ExpectUniqueSample("ChildProcess.HungRendererInForeground",
+                                      /* true */ 1, 1);
+  histogram_tester.ExpectTotalCount(
+      "ChildProcess.HungRendererAvailableMemoryMB", 1);
+}
+
+TEST_F(AwStabilityMetricsProviderTest, RendererLaunchCount) {
+  TestMetricsProvider provider(prefs());
+  metrics::SystemProfileProto system_profile;
+
+  // Create a fake notification. Source and details aren't checked in the
+  // implementation, so just use empty values.
+  provider.Observe(content::NOTIFICATION_RENDERER_PROCESS_CREATED,
+                   content::NotificationService::AllSources(),
+                   content::NotificationService::NoDetails());
+
+  provider.ProvideStabilityMetrics(&system_profile);
+  EXPECT_EQ(1, system_profile.stability().renderer_launch_count());
+}
+
+}  // namespace android_webview
diff --git a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumAwInit.java b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumAwInit.java
index 901017db..f3d8ec8 100644
--- a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumAwInit.java
+++ b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumAwInit.java
@@ -30,7 +30,6 @@
 import org.chromium.android_webview.AwServiceWorkerController;
 import org.chromium.android_webview.AwTracingController;
 import org.chromium.android_webview.HttpAuthDatabase;
-import org.chromium.android_webview.ProductConfig;
 import org.chromium.android_webview.R;
 import org.chromium.android_webview.VariationsSeedLoader;
 import org.chromium.android_webview.WebViewChromiumRunQueue;
@@ -38,7 +37,6 @@
 import org.chromium.android_webview.gfx.AwDrawFnImpl;
 import org.chromium.base.BuildConfig;
 import org.chromium.base.BuildInfo;
-import org.chromium.base.BundleUtils;
 import org.chromium.base.ContextUtils;
 import org.chromium.base.FieldTrialList;
 import org.chromium.base.JNIUtils;
@@ -145,8 +143,6 @@
             ResourceBundle.setAvailablePakLocales(
                     new String[] {}, AwLocaleConfig.getWebViewSupportedPakLocales());
 
-            BundleUtils.setIsBundle(ProductConfig.IS_BUNDLE);
-
             // We are rewriting Java resources in the background.
             // NOTE: Any reference to Java resources will cause a crash.
 
diff --git a/android_webview/test/BUILD.gn b/android_webview/test/BUILD.gn
index 3c5efc1..08d1669 100644
--- a/android_webview/test/BUILD.gn
+++ b/android_webview/test/BUILD.gn
@@ -407,6 +407,7 @@
     "../browser/gfx/test/rendering_test.h",
     "../browser/input_stream_unittest.cc",
     "../browser/metrics/aw_metrics_service_client_unittest.cc",
+    "../browser/metrics/aw_stability_metrics_provider_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",
diff --git a/ash/BUILD.gn b/ash/BUILD.gn
index d81f621..e200d72c 100644
--- a/ash/BUILD.gn
+++ b/ash/BUILD.gn
@@ -1510,11 +1510,11 @@
     # Ash should not depend upon cryptohome_client or components that depend
     # on it. TODO(stevenjb): Assert on //chromeos/dbus/cryptohome_client once it
     # is extracted from //chromeos/dbus. https://crbug.com/647367.
-    "//components/arc",
     "//chromeos/attestation",
     "//chromeos/cryptohome",
     "//chromeos/login/auth",
     "//chromeos/tpm",
+    "//components/arc",
 
     # Ash should not depend upon content at all.
     "//content/public/browser",
@@ -1643,9 +1643,9 @@
     ":ash_shell_lib",
   ]
   data_deps = [
-    "//ash/strings:ash_test_strings",
-    "//ash/resources:ash_test_resources_with_content_100_percent",
     "//ash/resources:ash_test_resources_200_percent",
+    "//ash/resources:ash_test_resources_with_content_100_percent",
+    "//ash/strings:ash_test_strings",
   ]
 }
 
@@ -2426,8 +2426,8 @@
   ]
 
   data_deps = [
-    "//ash/strings:ash_test_strings",
     "//ash/resources:ash_test_resources_100_percent",
     "//ash/resources:ash_test_resources_200_percent",
+    "//ash/strings:ash_test_strings",
   ]
 }
diff --git a/ash/app_list/app_list_controller_impl_unittest.cc b/ash/app_list/app_list_controller_impl_unittest.cc
index 551072d..5cb5270 100644
--- a/ash/app_list/app_list_controller_impl_unittest.cc
+++ b/ash/app_list/app_list_controller_impl_unittest.cc
@@ -718,7 +718,7 @@
     shelf->SetAlignment(ShelfAlignment::kBottom);
 
     if (GetParam()) {
-      shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+      shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
     }
 
     // The shelf should be shown at this point despite auto hide behavior, given
diff --git a/ash/app_list/app_list_presenter_delegate_unittest.cc b/ash/app_list/app_list_presenter_delegate_unittest.cc
index fc598783..5e62af9 100644
--- a/ash/app_list/app_list_presenter_delegate_unittest.cc
+++ b/ash/app_list/app_list_presenter_delegate_unittest.cc
@@ -1698,7 +1698,7 @@
 // app list but keep shelf visible.
 TEST_F(AppListPresenterDelegateTest, TapAutoHideShelfWithAppListOpened) {
   Shelf* shelf = GetPrimaryShelf();
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
 
   // Create a normal unmaximized window; the shelf should be hidden.
   std::unique_ptr<views::Widget> window = CreateTestWidget();
diff --git a/ash/app_list/views/assistant/privacy_info_view.cc b/ash/app_list/views/assistant/privacy_info_view.cc
index e487b98..0ba6c7c 100644
--- a/ash/app_list/views/assistant/privacy_info_view.cc
+++ b/ash/app_list/views/assistant/privacy_info_view.cc
@@ -199,7 +199,6 @@
   close_button_->set_ink_drop_visible_opacity(kInkDropVisibleOpacity);
   close_button_->set_ink_drop_highlight_opacity(kInkDropHighlightOpacity);
   close_button_->set_ink_drop_base_color(kInkDropBaseColor);
-  close_button_->set_has_ink_drop_action_on_click(true);
   views::InstallCircleHighlightPathGenerator(close_button_);
   row_container_->AddChildView(close_button_);
 }
diff --git a/ash/app_list/views/page_switcher.cc b/ash/app_list/views/page_switcher.cc
index daf2bd8a..f0402717 100644
--- a/ash/app_list/views/page_switcher.cc
+++ b/ash/app_list/views/page_switcher.cc
@@ -141,11 +141,6 @@
                                             : kInkDropRadiusForFolderGrid));
   }
 
-  void NotifyClick(const ui::Event& event) override {
-    Button::NotifyClick(event);
-    GetInkDrop()->AnimateToState(views::InkDropState::ACTION_TRIGGERED);
-  }
-
  private:
   // Stores the information of how to paint the button.
   struct PaintButtonInfo {
diff --git a/ash/assistant/assistant_web_view_delegate_impl.cc b/ash/assistant/assistant_web_view_delegate_impl.cc
index 79ddde6..b739f5c 100644
--- a/ash/assistant/assistant_web_view_delegate_impl.cc
+++ b/ash/assistant/assistant_web_view_delegate_impl.cc
@@ -68,8 +68,10 @@
   caption_button_model->set_back_button_visibility(visibility);
 
   auto* non_client_view = widget->non_client_view();
+
   DCHECK_EQ(NonClientFrameViewAsh::kViewClassName,
-            non_client_view->GetClassName());
+            non_client_view->frame_view()->GetClassName());
+
   auto* frame_view_ash =
       static_cast<NonClientFrameViewAsh*>(non_client_view->frame_view());
   frame_view_ash->SetCaptionButtonModel(std::move(caption_button_model));
diff --git a/ash/assistant/ui/base/assistant_button.cc b/ash/assistant/ui/base/assistant_button.cc
index 6142898..422bcb8 100644
--- a/ash/assistant/ui/base/assistant_button.cc
+++ b/ash/assistant/ui/base/assistant_button.cc
@@ -43,7 +43,6 @@
 
   // Ink drop.
   SetInkDropMode(InkDropMode::ON);
-  set_has_ink_drop_action_on_click(true);
   set_ink_drop_base_color(kInkDropBaseColor);
   set_ink_drop_visible_opacity(kInkDropVisibleOpacity);
 }
diff --git a/ash/assistant/ui/proactive_suggestions_rich_view.cc b/ash/assistant/ui/proactive_suggestions_rich_view.cc
index 2805252..d9a33911 100644
--- a/ash/assistant/ui/proactive_suggestions_rich_view.cc
+++ b/ash/assistant/ui/proactive_suggestions_rich_view.cc
@@ -72,7 +72,7 @@
   event_monitor_ = views::EventMonitor::CreateWindowMonitor(
       this, GetWidget()->GetNativeWindow(),
       {ui::ET_GESTURE_TAP, ui::ET_GESTURE_TAP_CANCEL, ui::ET_GESTURE_TAP_DOWN,
-       ui::ET_MOUSE_ENTERED, ui::ET_MOUSE_MOVED, ui::ET_MOUSE_EXITED});
+       ui::ET_MOUSE_ENTERED, ui::ET_MOUSE_EXITED});
 }
 
 void ProactiveSuggestionsRichView::OnMouseEntered(const ui::MouseEvent& event) {
diff --git a/ash/autoclick/autoclick_unittest.cc b/ash/autoclick/autoclick_unittest.cc
index cc2a5b1..e16198a2 100644
--- a/ash/autoclick/autoclick_unittest.cc
+++ b/ash/autoclick/autoclick_unittest.cc
@@ -960,7 +960,7 @@
                        gfx::Rect(0, 0, 200, 200), true /* show */);
 
   // Turn on auto-hide for the shelf.
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
   EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState());
 
@@ -987,7 +987,7 @@
   Shell::Get()->accessibility_controller()->SetAutoclickMenuPosition(
       AutoclickMenuPosition::kBottomRight);
   Shelf* shelf = GetPrimaryShelf();
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kNever);
   EXPECT_EQ(shelf->GetVisibilityState(), SHELF_VISIBLE);
   AutoclickMenuView* menu = GetAutoclickMenuView();
   ASSERT_TRUE(menu);
diff --git a/ash/components/strings/ash_components_strings_pt-BR.xtb b/ash/components/strings/ash_components_strings_pt-BR.xtb
index f07eb68..a03cca49 100644
--- a/ash/components/strings/ash_components_strings_pt-BR.xtb
+++ b/ash/components/strings/ash_components_strings_pt-BR.xtb
@@ -117,7 +117,7 @@
 <translation id="5236674127086649162">Atualizar a página atual sem usar conteúdo em cache</translation>
 <translation id="526651782186312376">Selecionar o texto até o início da linha</translation>
 <translation id="5316716239522500219">Espelhar monitores</translation>
-<translation id="539072479502328326">Ativar ou desativar a lupa ancorada</translation>
+<translation id="539072479502328326">Ativar ou desativar a lupa em área fixa</translation>
 <translation id="5541719484267030947">Ao arrastar a guia, pressione <ph name="ESC" /></translation>
 <translation id="5554139136362089836">Pesquisar na página atual</translation>
 <translation id="5563050856984839829">Pressione <ph name="CTRL" /><ph name="SEPARATOR" /><ph name="SHIFT" /> e clique em um link</translation>
diff --git a/ash/display/mirror_window_controller.cc b/ash/display/mirror_window_controller.cc
index 7526cb8..213c47ca 100644
--- a/ash/display/mirror_window_controller.cc
+++ b/ash/display/mirror_window_controller.cc
@@ -18,17 +18,14 @@
 #include "ash/window_factory.h"
 #include "base/strings/stringprintf.h"
 #include "base/threading/thread_task_runner_handle.h"
-#include "components/viz/common/features.h"
 #include "components/viz/common/surfaces/surface_id.h"
 #include "ui/aura/client/capture_client.h"
-#include "ui/aura/env.h"
 #include "ui/aura/window_delegate.h"
 #include "ui/aura/window_event_dispatcher.h"
 #include "ui/aura/window_tree_host.h"
 #include "ui/base/layout.h"
 #include "ui/base/ui_base_features.h"
 #include "ui/base/ui_base_switches_util.h"
-#include "ui/compositor/reflector.h"
 #include "ui/display/display_layout.h"
 #include "ui/display/display_transform.h"
 #include "ui/display/manager/display_layout_store.h"
@@ -126,10 +123,6 @@
   return display::kInvalidDisplayId;
 }
 
-ui::ContextFactoryPrivate* GetContextFactoryPrivate() {
-  return aura::Env::GetInstance()->context_factory_private();
-}
-
 }  // namespace
 
 struct MirrorWindowController::MirroringHostInfo {
@@ -228,19 +221,6 @@
       host_info->ash_host->SetRootWindowTransformer(std::move(transformer));
       // The accelerated widget is created synchronously.
       DCHECK_NE(gfx::kNullAcceleratedWidget, host->GetAcceleratedWidget());
-      if (!features::IsVizDisplayCompositorEnabled()) {
-        mirror_window->SetBounds(host->window()->bounds());
-        mirror_window->Show();
-        if (reflector_) {
-          reflector_->AddMirroringLayer(mirror_window->layer());
-        } else if (GetContextFactoryPrivate()) {
-          reflector_ = GetContextFactoryPrivate()->CreateReflector(
-              Shell::GetRootWindowForDisplayId(reflecting_source_id_)
-                  ->GetHost()
-                  ->compositor(),
-              mirror_window->layer());
-        }
-      }
     } else {
       AshWindowTreeHost* ash_host =
           mirroring_host_info_map_[display_info.id()]->ash_host.get();
@@ -250,44 +230,41 @@
       host->SetBoundsInPixels(display_info.bounds_in_native());
     }
 
-    if (features::IsVizDisplayCompositorEnabled()) {
-      // |mirror_size| is the size of the compositor of the mirror source in
-      // physical pixels. The RootWindowTransformer corrects the scale of the
-      // mirrored display and the location of input events.
-      ui::Compositor* source_compositor =
-          Shell::GetRootWindowForDisplayId(reflecting_source_id_)
-              ->GetHost()
-              ->compositor();
-      gfx::Size mirror_size = source_compositor->size();
+    // |mirror_size| is the size of the compositor of the mirror source in
+    // physical pixels. The RootWindowTransformer corrects the scale of the
+    // mirrored display and the location of input events.
+    ui::Compositor* source_compositor =
+        Shell::GetRootWindowForDisplayId(reflecting_source_id_)
+            ->GetHost()
+            ->compositor();
+    gfx::Size mirror_size = source_compositor->size();
 
-      auto* mirroring_host_info = mirroring_host_info_map_[display_info.id()];
+    auto* mirroring_host_info = mirroring_host_info_map_[display_info.id()];
 
-      // The rotation of the source display (internal display) should be undone
-      // in the destination display (external display) if mirror mode is enabled
-      // in tablet mode. This allows the destination display to show in an
-      // orientation independent of the source display.
-      // See https://crbug.com/824417
-      const bool should_undo_rotation = Shell::Get()
-                                            ->display_manager()
-                                            ->layout_store()
-                                            ->forced_mirror_mode_for_tablet();
-      if (!should_undo_rotation) {
-        // Use the rotation from source display without panel orientation
-        // applied instead of the display transform hint in |source_compositor|
-        // so that panel orientation is not applied to the mirror host.
-        mirroring_host_info->ash_host->AsWindowTreeHost()
-            ->SetDisplayTransformHint(
-                display::DisplayRotationToOverlayTransform(
-                    display_manager->GetDisplayInfo(reflecting_source_id_)
-                        .GetActiveRotation()));
-      }
-
-      aura::Window* mirror_window = mirroring_host_info->mirror_window;
-      mirror_window->SetBounds(gfx::Rect(mirror_size));
-      mirror_window->Show();
-      mirror_window->layer()->SetShowReflectedSurface(reflecting_surface_id,
-                                                      mirror_size);
+    // The rotation of the source display (internal display) should be undone in
+    // the destination display (external display) if mirror mode is enabled in
+    // tablet mode. This allows the destination display to show in an
+    // orientation independent of the source display.
+    // See https://crbug.com/824417
+    const bool should_undo_rotation = Shell::Get()
+                                          ->display_manager()
+                                          ->layout_store()
+                                          ->forced_mirror_mode_for_tablet();
+    if (!should_undo_rotation) {
+      // Use the rotation from source display without panel orientation
+      // applied instead of the display transform hint in |source_compositor|
+      // so that panel orientation is not applied to the mirror host.
+      mirroring_host_info->ash_host->AsWindowTreeHost()
+          ->SetDisplayTransformHint(display::DisplayRotationToOverlayTransform(
+              display_manager->GetDisplayInfo(reflecting_source_id_)
+                  .GetActiveRotation()));
     }
+
+    aura::Window* mirror_window = mirroring_host_info->mirror_window;
+    mirror_window->SetBounds(gfx::Rect(mirror_size));
+    mirror_window->Show();
+    mirror_window->layer()->SetShowReflectedSurface(reflecting_surface_id,
+                                                    mirror_size);
   }
 
   // Deleting WTHs for disconnected displays.
@@ -306,11 +283,6 @@
     }
   }
 
-  if (mirroring_host_info_map_.empty() && reflector_) {
-    // Close the mirror window if all displays are disconnected.
-    GetContextFactoryPrivate()->RemoveReflector(reflector_.get());
-    reflector_.reset();
-  }
 }
 
 void MirrorWindowController::UpdateWindow() {
@@ -346,11 +318,6 @@
 }
 
 void MirrorWindowController::Close(bool delay_host_deletion) {
-  if (reflector_) {
-    GetContextFactoryPrivate()->RemoveReflector(reflector_.get());
-    reflector_.reset();
-  }
-
   for (auto& info : mirroring_host_info_map_)
     CloseAndDeleteHost(info.second, delay_host_deletion);
   mirroring_host_info_map_.clear();
@@ -363,8 +330,6 @@
       if (info->mirror_window_host_size == host->GetBoundsInPixels().size())
         return;
       info->mirror_window_host_size = host->GetBoundsInPixels().size();
-      if (reflector_)
-        reflector_->OnMirroringCompositorResized();
       // No need to update the transformer as new transformer is already set
       // in UpdateWindow.
       Shell::Get()
@@ -436,9 +401,6 @@
   host->RemoveObserver(Shell::Get()->window_tree_host_manager());
   host->RemoveObserver(this);
   host_info->ash_host->PrepareForShutdown();
-  // |reflector_| may be null during display disconnect or shutdown.
-  if (reflector_ && host_info->mirror_window->layer()->GetCompositor())
-    reflector_->RemoveMirroringLayer(host_info->mirror_window->layer());
 
   // EventProcessor may be accessed after this call if the mirroring window
   // was deleted as a result of input event (e.g. shortcut), so don't delete
diff --git a/ash/display/mirror_window_controller.h b/ash/display/mirror_window_controller.h
index 20f298e0..4c889e60 100644
--- a/ash/display/mirror_window_controller.h
+++ b/ash/display/mirror_window_controller.h
@@ -31,10 +31,6 @@
 class ManagedDisplayInfo;
 }
 
-namespace ui {
-class Reflector;
-}
-
 namespace ash {
 class AshWindowTreeHost;
 class MirrorWindowTestApi;
@@ -103,13 +99,11 @@
 
   display::DisplayManager::MultiDisplayMode multi_display_mode_;
 
-  // The id of the display being mirrored in the reflector.
+  // The id of the display being mirrored.
   int64_t reflecting_source_id_ = display::kInvalidDisplayId;
 
   std::unique_ptr<aura::client::ScreenPositionClient> screen_position_client_;
 
-  std::unique_ptr<ui::Reflector> reflector_;
-
   DISALLOW_COPY_AND_ASSIGN(MirrorWindowController);
 };
 
diff --git a/ash/display/root_window_transformers.cc b/ash/display/root_window_transformers.cc
index 5929bc9..32f89f66 100644
--- a/ash/display/root_window_transformers.cc
+++ b/ash/display/root_window_transformers.cc
@@ -12,7 +12,6 @@
 #include "ash/shell.h"
 #include "ash/utility/transformer_util.h"
 #include "base/command_line.h"
-#include "components/viz/common/features.h"
 #include "ui/compositor/dip_util.h"
 #include "ui/display/display.h"
 #include "ui/display/manager/display_layout_store.h"
@@ -245,13 +244,6 @@
       transform_.Translate(margin, 0);
       transform_.Scale(inverted_scale, inverted_scale);
     }
-
-    // Apply rotation only when reflector is used for mirroring (non viz display
-    // compositor).
-    if (!features::IsVizDisplayCompositorEnabled()) {
-      // Make sure the rotation transform is applied in the beginning.
-      transform_.PreconcatTransform(rotation_transform);
-    }
   }
 
   // aura::RootWindowTransformer overrides:
diff --git a/ash/display/window_tree_host_manager.cc b/ash/display/window_tree_host_manager.cc
index 94e7ef1b..9e8d7a7 100644
--- a/ash/display/window_tree_host_manager.cc
+++ b/ash/display/window_tree_host_manager.cc
@@ -773,7 +773,7 @@
   UpdateMouseLocationAfterDisplayChange();
 
   // Enable cursor compositing, so that cursor could be mirrored to destination
-  // displays along with other display content through reflector.
+  // displays along with other display content.
   Shell::Get()->UpdateCursorCompositingEnabled();
 }
 
diff --git a/ash/login/ui/lock_screen_media_controls_view.cc b/ash/login/ui/lock_screen_media_controls_view.cc
index 48d88d2..9e9a4ca 100644
--- a/ash/login/ui/lock_screen_media_controls_view.cc
+++ b/ash/login/ui/lock_screen_media_controls_view.cc
@@ -145,7 +145,6 @@
                        action == MediaSessionAction::kPlay),
         icon_size_(icon_size) {
     SetInkDropMode(views::Button::InkDropMode::ON);
-    set_has_ink_drop_action_on_click(true);
     SetImageHorizontalAlignment(views::ImageButton::ALIGN_CENTER);
     SetImageVerticalAlignment(views::ImageButton::ALIGN_MIDDLE);
     SetBorder(
diff --git a/ash/login/ui/login_button.cc b/ash/login/ui/login_button.cc
index c5c1c85..2d1ace5 100644
--- a/ash/login/ui/login_button.cc
+++ b/ash/login/ui/login_button.cc
@@ -30,7 +30,6 @@
   SetInstallFocusRingOnFocus(true);
   focus_ring()->SetColor(ShelfConfig::Get()->shelf_focus_border_color());
   SetInkDropMode(InkDropMode::ON);
-  set_has_ink_drop_action_on_click(true);
 }
 
 LoginButton::~LoginButton() = default;
diff --git a/ash/magnifier/docked_magnifier_controller_impl.cc b/ash/magnifier/docked_magnifier_controller_impl.cc
index 807f7298..8ecec7d7 100644
--- a/ash/magnifier/docked_magnifier_controller_impl.cc
+++ b/ash/magnifier/docked_magnifier_controller_impl.cc
@@ -22,15 +22,12 @@
 #include "components/prefs/pref_change_registrar.h"
 #include "components/prefs/pref_registry_simple.h"
 #include "components/prefs/pref_service.h"
-#include "components/viz/common/features.h"
 #include "ui/aura/client/drag_drop_client.h"
-#include "ui/aura/env.h"
 #include "ui/aura/window_tree_host.h"
 #include "ui/base/ime/ime_bridge.h"
 #include "ui/base/ime/input_method.h"
 #include "ui/base/ime/text_input_client.h"
 #include "ui/compositor/layer.h"
-#include "ui/compositor/reflector.h"
 #include "ui/compositor/scoped_layer_animation_settings.h"
 #include "ui/display/screen.h"
 #include "ui/views/widget/widget.h"
@@ -85,41 +82,12 @@
                    DockedMagnifierControllerImpl::kSeparatorHeight);
 }
 
-// Returns the angle by which the magnifier layer should be rotated such that
-// the effect of the current screen rotation is undone, and the magnifier
-// layer shows its contents in the correct rotation.
-double GetMagnifierLayerRotationAngle(
-    display::Display::Rotation current_display_active_rotation) {
-  switch (current_display_active_rotation) {
-    case display::Display::ROTATE_0:
-      return 0.0;
-
-    case display::Display::ROTATE_90:
-      return -90.0;
-
-    case display::Display::ROTATE_180:
-      return -180.0;
-
-    case display::Display::ROTATE_270:
-      return -270.0;
-  }
-
-  NOTREACHED();
-  return 0.0;
-}
-
 // Returns the child container in |root| that should be used as the parent of
 // viewport widget and the separator layer.
 aura::Window* GetViewportParentContainerForRoot(aura::Window* root) {
   return root->GetChildById(kShellWindowId_DockedMagnifierContainer);
 }
 
-// Returns true if the docked magnifier should use layer mirroring rather than
-// ui::Reflector. Layer mirroring is used when OOP-D is enabled.
-bool ShouldUseLayerMirroring() {
-  return features::IsVizDisplayCompositorEnabled();
-}
-
 }  // namespace
 
 // static
@@ -229,69 +197,20 @@
     point_in_pixels.set_y(minimum_point_of_interest_height_);
 
   // The pixel space is the magnified space.
-  if (!ShouldUseLayerMirroring()) {
-    // When ui::Reflector is used, the texture has the root transform applied to
-    // it. The same transform should be applied to the |point_in_pixels| to map
-    // it to the corresponding location in the texture. This is not the case
-    // when layer mirroring is used.
-    host->GetRootTransform().TransformPoint(&point_in_pixels);
-  }
   const float scale = GetScale();
   point_in_pixels.Scale(scale);
 
+  // Transform steps: (Note that the transform is applied in the opposite
+  // order)
+  // 1- Scale the layer by |scale|.
+  // 2- Translate the point of interest to the center point of the viewport
+  //    widget.
+  const gfx::Point viewport_center_point =
+      GetViewportWidgetBoundsInRoot(current_source_root_window_).CenterPoint();
   gfx::Transform transform;
-  if (ShouldUseLayerMirroring()) {
-    // When layer mirroring is used, the mirrored content is not rotated around
-    // Z-axis; so, there is no need to compnesate for it.
-    // Transform steps: (Note that the transform is applied in the opposite
-    // order)
-    // 1- Scale the layer by |scale|.
-    // 2- Translate the point of interest to the center point of the viewport
-    //    widget.
-
-    // 2- Translate to the center of the viewport widget.
-    const gfx::Point viewport_center_point =
-        GetViewportWidgetBoundsInRoot(current_source_root_window_)
-            .CenterPoint();
-    transform.Translate(viewport_center_point.x() - point_in_pixels.x(),
-                        viewport_center_point.y() - point_in_pixels.y());
-
-    // 1- Scale.
-    transform.Scale(scale, scale);
-  } else {
-    // When ui::Reflector is used, the mirrored content is rotated around
-    // Z-axis; so, we need to compnesate for it.
-    // Transform steps: (Note that the transform is applied in the opposite
-    // order)
-    // 1- Scale the layer by |scale|.
-    // 2- Translate the point of interest back to the origin so that we can
-    //    rotate around the Z-axis.
-    // 3- Rotate around the Z-axis to undo the effect of screen rotation (if
-    //    any).
-    // 4- Translate the point of interest to the center point of the viewport
-    //    widget.
-
-    // 4- Translate to the center of the viewport widget.
-    const gfx::Point viewport_center_point =
-        GetViewportWidgetBoundsInRoot(current_source_root_window_)
-            .CenterPoint();
-    transform.Translate(viewport_center_point.x(), viewport_center_point.y());
-
-    // 3- Rotate around Z-axis. Account for a possibly rotated screen.
-    const int64_t display_id =
-        screen->GetDisplayNearestPoint(point_in_screen).id();
-    DCHECK_NE(display_id, display::kInvalidDisplayId);
-    const auto& display_info =
-        Shell::Get()->display_manager()->GetDisplayInfo(display_id);
-    transform.RotateAboutZAxis(
-        GetMagnifierLayerRotationAngle(display_info.GetActiveRotation()));
-
-    // 2- Translate back to origin.
-    transform.Translate(-point_in_pixels.x(), -point_in_pixels.y());
-
-    // 1- Scale.
-    transform.Scale(scale, scale);
-  }
+  transform.Translate(viewport_center_point.x() - point_in_pixels.x(),
+                      viewport_center_point.y() - point_in_pixels.y());
+  transform.Scale(scale, scale);
 
   // When updating the transform, we don't want any animation, otherwise the
   // movement of the mouse won't be very smooth. We want the magnifier layer to
@@ -429,12 +348,6 @@
         GetViewportWidgetBoundsInRoot(current_source_root_window_);
     viewport_widget_->SetBounds(viewport_bounds);
     viewport_background_layer_->SetBounds(viewport_bounds);
-    if (!ShouldUseLayerMirroring()) {
-      // In case of layer mirroring, |viewport_magnifier_layer_| automatically
-      // matches size of mirrored layer and there is no need to set its bounds
-      // here.
-      viewport_magnifier_layer_->SetBounds(viewport_bounds);
-    }
     separator_layer_->SetBounds(
         SeparatorBoundsFromViewportBounds(viewport_bounds));
     SetViewportHeightInWorkArea(current_source_root_window_,
@@ -521,15 +434,6 @@
         ->ConfineCursorToRootWindow();
   }
 
-  // A change in the current root window means we must clear the existing
-  // reflector and the viewport widget and its layers. New viewport and
-  // reflector may be recreated later if |new_root_window| is not |nullptr|.
-  if (reflector_) {
-    aura::Env::GetInstance()->context_factory_private()->RemoveReflector(
-        reflector_.get());
-    reflector_.reset();
-  }
-
   separator_layer_ = nullptr;
 
   if (viewport_widget_) {
@@ -552,19 +456,10 @@
   if (input_method_)
     input_method_->AddObserver(this);
 
-  DCHECK(aura::Env::GetInstance()->context_factory_private());
-  DCHECK(viewport_widget_);
-  if (ShouldUseLayerMirroring()) {
-    auto* magnified_container = current_source_root_window_->GetChildById(
-        kShellWindowId_MagnifiedContainer);
-    viewport_magnifier_layer_->SetShowReflectedLayerSubtree(
-        magnified_container->layer());
-  } else {
-    reflector_ =
-        aura::Env::GetInstance()->context_factory_private()->CreateReflector(
-            current_source_root_window_->layer()->GetCompositor(),
-            viewport_magnifier_layer_.get());
-  }
+  auto* magnified_container = current_source_root_window_->GetChildById(
+      kShellWindowId_MagnifiedContainer);
+  viewport_magnifier_layer_->SetShowReflectedLayerSubtree(
+      magnified_container->layer());
 }
 
 void DockedMagnifierControllerImpl::InitFromUserPrefs() {
@@ -585,19 +480,6 @@
       base::BindRepeating(&DockedMagnifierControllerImpl::
                               OnFullscreenMagnifierEnabledPrefChanged,
                           base::Unretained(this)));
-  if (!ShouldUseLayerMirroring()) {
-    // When ui::Reflector is used and high contrast is enabled, the reflected
-    // texture is already inverted and will be inverted once more because the
-    // root window is set to be inverted, undoing the original inversion. To
-    // prevent that, observe changes to the high contrast mode and invert the
-    // magnifier layer one more time.  Layer mirroring mode does not have this
-    // issue.
-    pref_change_registrar_->Add(
-        prefs::kAccessibilityHighContrastEnabled,
-        base::BindRepeating(
-            &DockedMagnifierControllerImpl::OnHighContrastEnabledPrefChanged,
-            base::Unretained(this)));
-  }
 
   OnEnabledPrefChanged();
 }
@@ -678,16 +560,6 @@
     SetEnabled(false);
 }
 
-void DockedMagnifierControllerImpl::OnHighContrastEnabledPrefChanged() {
-  DCHECK(!ShouldUseLayerMirroring());
-
-  if (!GetEnabled())
-    return;
-
-  viewport_magnifier_layer_->SetLayerInverted(
-      Shell::Get()->accessibility_controller()->high_contrast_enabled());
-}
-
 void DockedMagnifierControllerImpl::Refresh() {
   DCHECK(GetEnabled());
   CenterOnPoint(GetCursorScreenPoint());
@@ -696,7 +568,6 @@
 void DockedMagnifierControllerImpl::CreateMagnifierViewport() {
   DCHECK(GetEnabled());
   DCHECK(current_source_root_window_);
-  DCHECK(ShouldUseLayerMirroring() || !reflector_);
 
   const auto viewport_bounds =
       GetViewportWidgetBoundsInRoot(current_source_root_window_);
@@ -746,10 +617,6 @@
   viewport_layer->Add(viewport_magnifier_layer_.get());
   viewport_layer->SetMasksToBounds(true);
 
-  // In case of ui::Reflector, handle high contrast mode.
-  if (!ShouldUseLayerMirroring())
-    OnHighContrastEnabledPrefChanged();
-
   // 5- Update the workarea of the current screen such that an area enough to
   //    contain the viewport and the separator is allocated at the top of the
   //    screen.
@@ -830,18 +697,10 @@
   // angle, so we just simply use Length().
   // Note: Why transform the point to the magnified scale and back? The reason
   // is that we need to go through the root window transform to go to the pixel
-  // space (the reflector copies pixels). This will account for device scale
-  // factors, screen rotations, and any other transforms that we cannot
-  // anticipate ourselves.
+  // space. This will account for device scale factors, screen rotations, and
+  // any other transforms that we cannot anticipate ourselves.
   gfx::Vector3dF scaled_magnifier_bottom_in_pixels(
       0.0f, viewport_bounds.bottom() + kSeparatorHeight, 0.0f);
-  if (!ShouldUseLayerMirroring()) {
-    // For ui::Reflector, the reflected texture has root transform applied to
-    // it. Apply the same transform to map the point to its corresponding
-    // location on the reflected texture.
-    host->GetRootTransform().TransformVector(
-        &scaled_magnifier_bottom_in_pixels);
-  }
   const float scale = GetScale();
   scaled_magnifier_bottom_in_pixels.Scale(scale);
 
@@ -854,11 +713,6 @@
 
   // 3- Back to non-magnified space to get point (b)'s height.
   minimum_height_vector.Scale(1 / scale);
-  if (!ShouldUseLayerMirroring()) {
-    // For ui::Reflector, apply the reverse root transform to undo the transform
-    // applied earlier.
-    host->GetInverseRootTransform().TransformVector(&minimum_height_vector);
-  }
   minimum_point_of_interest_height_ = minimum_height_vector.Length();
   is_minimum_point_of_interest_height_valid_ = true;
 }
diff --git a/ash/magnifier/docked_magnifier_controller_impl.h b/ash/magnifier/docked_magnifier_controller_impl.h
index ccf05a5..7efb5e1 100644
--- a/ash/magnifier/docked_magnifier_controller_impl.h
+++ b/ash/magnifier/docked_magnifier_controller_impl.h
@@ -26,7 +26,6 @@
 }  // namespace aura
 
 namespace ui {
-class Reflector;
 class Layer;
 }  // namespace ui
 
@@ -149,7 +148,6 @@
   void OnEnabledPrefChanged();
   void OnScalePrefChanged();
   void OnFullscreenMagnifierEnabledPrefChanged();
-  void OnHighContrastEnabledPrefChanged();
 
   void Refresh();
 
@@ -197,10 +195,6 @@
   // viewport from the rest of the display contents.
   std::unique_ptr<ui::Layer> separator_layer_;
 
-  // Reflects the contents of the current display's compositor into the
-  // viewport's magnifier layer.
-  std::unique_ptr<ui::Reflector> reflector_;
-
   // The pref service of the currently active user. Can be null in
   // ash_unittests.
   PrefService* active_user_pref_service_ = nullptr;
diff --git a/ash/public/cpp/shelf_prefs.cc b/ash/public/cpp/shelf_prefs.cc
index 5fc46fc..8cfe87d0 100644
--- a/ash/public/cpp/shelf_prefs.cc
+++ b/ash/public/cpp/shelf_prefs.cc
@@ -149,17 +149,17 @@
   // "Default" as well as "Never" and "Always", "Default" should now
   // be treated as "Never" (http://crbug.com/146773).
   if (value == kShelfAutoHideBehaviorAlways)
-    return SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS;
-  return SHELF_AUTO_HIDE_BEHAVIOR_NEVER;
+    return ShelfAutoHideBehavior::kAlways;
+  return ShelfAutoHideBehavior::kNever;
 }
 
 const char* AutoHideBehaviorToPref(ShelfAutoHideBehavior behavior) {
   switch (behavior) {
-    case SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS:
+    case ShelfAutoHideBehavior::kAlways:
       return kShelfAutoHideBehaviorAlways;
-    case SHELF_AUTO_HIDE_BEHAVIOR_NEVER:
+    case ShelfAutoHideBehavior::kNever:
       return kShelfAutoHideBehaviorNever;
-    case SHELF_AUTO_HIDE_ALWAYS_HIDDEN:
+    case ShelfAutoHideBehavior::kAlwaysHidden:
       // This should not be a valid preference option for now. We only want to
       // completely hide it when we run in app mode - or while we temporarily
       // hide the shelf (e.g. SessionAbortedDialog).
diff --git a/ash/public/cpp/shelf_types.h b/ash/public/cpp/shelf_types.h
index aa85a39..5a865c9 100644
--- a/ash/public/cpp/shelf_types.h
+++ b/ash/public/cpp/shelf_types.h
@@ -32,15 +32,10 @@
   kExtended,
 };
 
-enum ShelfAutoHideBehavior {
-  // Always auto-hide.
-  SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS,
-
-  // Never auto-hide.
-  SHELF_AUTO_HIDE_BEHAVIOR_NEVER,
-
-  // Always hide.
-  SHELF_AUTO_HIDE_ALWAYS_HIDDEN,
+enum class ShelfAutoHideBehavior {
+  kAlways,        // Always auto-hide.
+  kNever,         // Never auto-hide.
+  kAlwaysHidden,  // Always hide.
 };
 
 enum ShelfAutoHideState {
diff --git a/ash/session/session_aborted_dialog.cc b/ash/session/session_aborted_dialog.cc
index f99dfa58..f4f8c7a 100644
--- a/ash/session/session_aborted_dialog.cc
+++ b/ash/session/session_aborted_dialog.cc
@@ -44,7 +44,8 @@
   std::vector<RootWindowController*> controllers =
       Shell::GetAllRootWindowControllers();
   for (RootWindowController* controller : controllers) {
-    controller->shelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_ALWAYS_HIDDEN);
+    controller->shelf()->SetAutoHideBehavior(
+        ShelfAutoHideBehavior::kAlwaysHidden);
   }
 }
 
diff --git a/ash/shelf/hotseat_transition_animator.cc b/ash/shelf/hotseat_transition_animator.cc
index ed7f4f5..a31d66c 100644
--- a/ash/shelf/hotseat_transition_animator.cc
+++ b/ash/shelf/hotseat_transition_animator.cc
@@ -22,26 +22,38 @@
  public:
   TransitionAnimationMetricsReporter() = default;
   ~TransitionAnimationMetricsReporter() override = default;
-  void set_animating_to_shown_hotseat(bool animating_to_shown_hotseat) {
-    animating_to_shown_hotseat_ = animating_to_shown_hotseat;
-  }
+
+  void set_new_state(HotseatState new_state) { new_state_ = new_state; }
+
   // ui::AnimationMetricsReporter:
   void Report(int value) override {
-    if (animating_to_shown_hotseat_) {
-      UMA_HISTOGRAM_PERCENTAGE(
-          "Ash.HotseatTransition.AnimationSmoothness.TransitionToShownHotseat",
-          value);
-    } else {
-      UMA_HISTOGRAM_PERCENTAGE(
-          "Ash.HotseatTransition.AnimationSmoothness."
-          "TransitionFromShownHotseat",
-          value);
+    switch (new_state_) {
+      case HotseatState::kShown:
+        UMA_HISTOGRAM_PERCENTAGE(
+            "Ash.HotseatTransition.AnimationSmoothness."
+            "TransitionToShownHotseat",
+            value);
+        break;
+      case HotseatState::kExtended:
+        UMA_HISTOGRAM_PERCENTAGE(
+            "Ash.HotseatTransition.AnimationSmoothness."
+            "TransitionToExtendedHotseat",
+            value);
+        break;
+      case HotseatState::kHidden:
+        UMA_HISTOGRAM_PERCENTAGE(
+            "Ash.HotseatTransition.AnimationSmoothness."
+            "TransitionToHiddenHotseat",
+            value);
+        break;
+      default:
+        NOTREACHED();
     }
   }
 
  private:
-  // Whether the animation reported is transitioning state into a shown hotseat.
-  bool animating_to_shown_hotseat_ = false;
+  // The state to which the animation is transitioning.
+  HotseatState new_state_;
 };
 
 HotseatTransitionAnimator::HotseatTransitionAnimator(ShelfWidget* shelf_widget)
@@ -123,8 +135,7 @@
   const int y_offset = starting_y - target_bounds.y();
   transform.Translate(0, y_offset);
   shelf_widget_->GetAnimatingBackground()->SetTransform(transform);
-  animation_metrics_reporter_->set_animating_to_shown_hotseat(
-      animating_to_shown_hotseat);
+  animation_metrics_reporter_->set_new_state(new_state);
 
   {
     ui::ScopedLayerAnimationSettings shelf_bg_animation_setter(
diff --git a/ash/shelf/hotseat_widget.cc b/ash/shelf/hotseat_widget.cc
index 1561186..e822451 100644
--- a/ash/shelf/hotseat_widget.cc
+++ b/ash/shelf/hotseat_widget.cc
@@ -11,6 +11,7 @@
 #include "ash/public/cpp/shelf_model.h"
 #include "ash/public/cpp/wallpaper_controller_observer.h"
 #include "ash/shelf/scrollable_shelf_view.h"
+#include "ash/shelf/shelf_layout_manager.h"
 #include "ash/shelf/shelf_navigation_widget.h"
 #include "ash/shelf/shelf_view.h"
 #include "ash/shell.h"
@@ -18,6 +19,9 @@
 #include "ash/wallpaper/wallpaper_controller_impl.h"
 #include "ash/wm/tablet_mode/tablet_mode_controller.h"
 #include "chromeos/constants/chromeos_switches.h"
+#include "ui/aura/scoped_window_targeter.h"
+#include "ui/aura/window_targeter.h"
+#include "ui/compositor/scoped_layer_animation_settings.h"
 #include "ui/gfx/color_analysis.h"
 #include "ui/gfx/color_palette.h"
 #include "ui/gfx/color_utils.h"
@@ -32,6 +36,53 @@
   return chromeos::switches::ShouldShowScrollableShelf();
 }
 
+// Custom window targeter for the hotseat. Used so the hotseat only processes
+// events that land on the visible portion of the hotseat, and only while the
+// hotseat is not animating.
+class HotseatWindowTargeter : public aura::WindowTargeter {
+ public:
+  explicit HotseatWindowTargeter(HotseatWidget* hotseat_widget)
+      : hotseat_widget_(hotseat_widget) {}
+  ~HotseatWindowTargeter() override = default;
+
+  HotseatWindowTargeter(const HotseatWindowTargeter& other) = delete;
+  HotseatWindowTargeter& operator=(const HotseatWindowTargeter& rhs) = delete;
+
+  // aura::WindowTargeter:
+  bool SubtreeShouldBeExploredForEvent(aura::Window* window,
+                                       const ui::LocatedEvent& event) override {
+    // Do not handle events if the hotseat window is animating as it may animate
+    // over other items which want to process events.
+    if (hotseat_widget_->GetLayer()->GetAnimator()->is_animating())
+      return false;
+    return aura::WindowTargeter::SubtreeShouldBeExploredForEvent(window, event);
+  }
+
+  bool GetHitTestRects(aura::Window* target,
+                       gfx::Rect* hit_test_rect_mouse,
+                       gfx::Rect* hit_test_rect_touch) const override {
+    // If the hotseat is not extended we can use the normal targeting as the
+    // hidden parts of the hotseat will not block non-shelf items from taking
+    // events.
+    if (target == hotseat_widget_->GetNativeWindow() &&
+        hotseat_widget_->state() == HotseatState::kExtended) {
+      // Shrink the hit bounds from the size of the window to the size of the
+      // hotseat opaque background.
+      gfx::Rect hit_bounds = target->bounds();
+      hit_bounds.ClampToCenteredSize(
+          hotseat_widget_->GetOpaqueBackgroundSize());
+      *hit_test_rect_mouse = *hit_test_rect_touch = hit_bounds;
+      return true;
+    }
+    return aura::WindowTargeter::GetHitTestRects(target, hit_test_rect_mouse,
+                                                 hit_test_rect_touch);
+  }
+
+ private:
+  // Unowned and guaranteed to be not null for the duration of |this|.
+  HotseatWidget* const hotseat_widget_;
+};
+
 }  // namespace
 
 class HotseatWidget::DelegateView : public views::WidgetDelegateView,
@@ -192,6 +243,9 @@
     scrollable_shelf_view_ = GetContentsView()->AddChildView(
         std::make_unique<ScrollableShelfView>(ShelfModel::Get(), shelf));
     scrollable_shelf_view_->Init();
+
+    hotseat_window_targeter_ = std::make_unique<aura::ScopedWindowTargeter>(
+        GetNativeWindow(), std::make_unique<HotseatWindowTargeter>(this));
   } else {
     // The shelf view observes the shelf model and creates icons as items are
     // added to the model.
@@ -270,10 +324,36 @@
   delegate_view_->OnTabletModeChanged();
 }
 
+float HotseatWidget::CalculateOpacity() {
+  const float target_opacity =
+      GetShelfView()->shelf()->shelf_layout_manager()->GetOpacity();
+  return (state() == HotseatState::kExtended) ? 1.0f  // fully opaque
+                                              : target_opacity;
+}
+
 void HotseatWidget::UpdateOpaqueBackground() {
   delegate_view_->UpdateOpaqueBackground();
 }
 
+void HotseatWidget::UpdateLayout() {
+  ui::Layer* layer = GetNativeView()->layer();
+  ui::ScopedLayerAnimationSettings animation_setter(layer->GetAnimator());
+  animation_setter.SetTransitionDuration(
+      ShelfConfig::Get()->shelf_animation_duration());
+  animation_setter.SetTweenType(gfx::Tween::EASE_OUT);
+  animation_setter.SetPreemptionStrategy(
+      ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET);
+
+  layer->SetOpacity(CalculateOpacity());
+  SetBounds(
+      GetShelfView()->shelf()->shelf_layout_manager()->GetHotseatBounds());
+}
+
+gfx::Size HotseatWidget::GetOpaqueBackgroundSize() const {
+  DCHECK(scrollable_shelf_view_);
+  return scrollable_shelf_view_->GetHotseatBackgroundBounds().size();
+}
+
 void HotseatWidget::SetFocusCycler(FocusCycler* focus_cycler) {
   delegate_view_->set_focus_cycler(focus_cycler);
   if (focus_cycler)
diff --git a/ash/shelf/hotseat_widget.h b/ash/shelf/hotseat_widget.h
index e6ca858..8154832 100644
--- a/ash/shelf/hotseat_widget.h
+++ b/ash/shelf/hotseat_widget.h
@@ -10,6 +10,10 @@
 #include "ash/public/cpp/shelf_types.h"
 #include "ui/views/widget/widget.h"
 
+namespace aura {
+class ScopedWindowTargeter;
+}
+
 namespace ash {
 class FocusCycler;
 class ScrollableShelfView;
@@ -50,9 +54,17 @@
   // Notifies children of tablet mode state changes.
   void OnTabletModeChanged();
 
+  // Returns the target opacity (between 0 and 1) given current conditions.
+  float CalculateOpacity();
+
   // Updates the opaque background which functions as the hotseat background.
   void UpdateOpaqueBackground();
 
+  // Updates this widget's layout according to current conditions.
+  void UpdateLayout();
+
+  gfx::Size GetOpaqueBackgroundSize() const;
+
   // Sets the focus cycler and adds the hotseat to the cycle.
   void SetFocusCycler(FocusCycler* focus_cycler);
 
@@ -98,6 +110,11 @@
   // dragged it. This will be reset with any visible shelf configuration change.
   bool is_manually_extended_ = false;
 
+  // The window targeter installed on the hotseat. Filters out events which land
+  // on the non visible portion of the hotseat, or events that reach the hotseat
+  // during an animation.
+  std::unique_ptr<aura::ScopedWindowTargeter> hotseat_window_targeter_;
+
   DISALLOW_COPY_AND_ASSIGN(HotseatWidget);
 };
 
diff --git a/ash/shelf/login_shelf_view.cc b/ash/shelf/login_shelf_view.cc
index b35b4b2..873ede8 100644
--- a/ash/shelf/login_shelf_view.cc
+++ b/ash/shelf/login_shelf_view.cc
@@ -158,7 +158,6 @@
     focus_ring()->SetColor(ShelfConfig::Get()->shelf_focus_border_color());
     SetFocusPainter(nullptr);
     SetInkDropMode(InkDropMode::ON);
-    set_has_ink_drop_action_on_click(true);
     set_ink_drop_base_color(ShelfConfig::Get()->shelf_ink_drop_base_color());
     set_ink_drop_visible_opacity(
         ShelfConfig::Get()->shelf_ink_drop_visible_opacity());
@@ -264,7 +263,6 @@
     focus_ring()->SetColor(ShelfConfig::Get()->shelf_focus_border_color());
     SetFocusPainter(nullptr);
     SetInkDropMode(InkDropMode::ON);
-    set_has_ink_drop_action_on_click(true);
     set_ink_drop_base_color(ShelfConfig::Get()->shelf_ink_drop_base_color());
     set_ink_drop_visible_opacity(
         ShelfConfig::Get()->shelf_ink_drop_visible_opacity());
diff --git a/ash/shelf/scroll_arrow_view.cc b/ash/shelf/scroll_arrow_view.cc
index 3f80e3a..3692a10 100644
--- a/ash/shelf/scroll_arrow_view.cc
+++ b/ash/shelf/scroll_arrow_view.cc
@@ -25,7 +25,6 @@
     : ShelfButton(shelf, shelf_button_delegate),
       arrow_type_(arrow_type),
       is_horizontal_alignment_(is_horizontal_alignment) {
-  set_has_ink_drop_action_on_click(true);
   SetInkDropMode(InkDropMode::ON_NO_GESTURE_HANDLER);
 }
 
diff --git a/ash/shelf/shelf.cc b/ash/shelf/shelf.cc
index 68f48be..7793b89e 100644
--- a/ash/shelf/shelf.cc
+++ b/ash/shelf/shelf.cc
@@ -75,7 +75,7 @@
         event, static_cast<aura::Window*>(event->target()));
   }
   void OnTouchEvent(ui::TouchEvent* event) override {
-    if (shelf_->auto_hide_behavior() != SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS)
+    if (shelf_->auto_hide_behavior() != ShelfAutoHideBehavior::kAlways)
       return;
 
     // The event target should be the shelf widget or the hotseat widget.
diff --git a/ash/shelf/shelf.h b/ash/shelf/shelf.h
index 358cb2a..ec29b0c1 100644
--- a/ash/shelf/shelf.h
+++ b/ash/shelf/shelf.h
@@ -221,7 +221,8 @@
 
   // These initial values hide the shelf until user preferences are available.
   ShelfAlignment alignment_ = ShelfAlignment::kBottomLocked;
-  ShelfAutoHideBehavior auto_hide_behavior_ = SHELF_AUTO_HIDE_ALWAYS_HIDDEN;
+  ShelfAutoHideBehavior auto_hide_behavior_ =
+      ShelfAutoHideBehavior::kAlwaysHidden;
 
   // Sets shelf alignment to bottom during login and screen lock.
   ShelfLockingManager shelf_locking_manager_;
diff --git a/ash/shelf/shelf_button.cc b/ash/shelf/shelf_button.cc
index ce597ac6f..6160625 100644
--- a/ash/shelf/shelf_button.cc
+++ b/ash/shelf/shelf_button.cc
@@ -26,6 +26,7 @@
       ShelfConfig::Get()->shelf_ink_drop_visible_opacity());
   SetFocusBehavior(FocusBehavior::ALWAYS);
   SetInkDropMode(InkDropMode::ON_NO_GESTURE_HANDLER);
+  set_has_ink_drop_action_on_click(false);
   SetFocusPainter(views::Painter::CreateSolidFocusPainter(
       ShelfConfig::Get()->shelf_focus_border_color(), kFocusBorderThickness,
       gfx::InsetsF()));
diff --git a/ash/shelf/shelf_context_menu_model.cc b/ash/shelf/shelf_context_menu_model.cc
index e743b17..ca4d4b9 100644
--- a/ash/shelf/shelf_context_menu_model.cc
+++ b/ash/shelf/shelf_context_menu_model.cc
@@ -92,9 +92,9 @@
       SetShelfAutoHideBehaviorPref(
           prefs, display_id_,
           GetShelfAutoHideBehaviorPref(prefs, display_id_) ==
-                  SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS
-              ? SHELF_AUTO_HIDE_BEHAVIOR_NEVER
-              : SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+                  ShelfAutoHideBehavior::kAlways
+              ? ShelfAutoHideBehavior::kNever
+              : ShelfAutoHideBehavior::kAlways);
       break;
     case MENU_ALIGNMENT_LEFT:
       DCHECK(!is_tablet_mode);
@@ -140,7 +140,7 @@
   if (CanUserModifyShelfAutoHide(prefs) && !IsFullScreenMode(display_id_)) {
     const bool is_autohide_set =
         GetShelfAutoHideBehaviorPref(prefs, display_id_) ==
-        SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS;
+        ShelfAutoHideBehavior::kAlways;
     auto string_id = is_autohide_set
                          ? IDS_ASH_SHELF_CONTEXT_MENU_ALWAYS_SHOW_SHELF
                          : IDS_ASH_SHELF_CONTEXT_MENU_AUTO_HIDE;
diff --git a/ash/shelf/shelf_context_menu_model_unittest.cc b/ash/shelf/shelf_context_menu_model_unittest.cc
index 804f7fd..9a674fe 100644
--- a/ash/shelf/shelf_context_menu_model_unittest.cc
+++ b/ash/shelf/shelf_context_menu_model_unittest.cc
@@ -115,13 +115,13 @@
 
   // Check the shelf auto-hide behavior and menu interaction.
   ShelfContextMenuModel menu1(nullptr, primary_id);
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kNever, shelf->auto_hide_behavior());
   menu1.ActivatedAt(0);
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways, shelf->auto_hide_behavior());
 
   // Recreate the menu, auto-hide should still be enabled.
   ShelfContextMenuModel menu2(nullptr, primary_id);
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways, shelf->auto_hide_behavior());
 
   // By default the shelf should be on bottom, shelf alignment options in order:
   // Left, Bottom, Right. Bottom should be checked.
diff --git a/ash/shelf/shelf_control_button.cc b/ash/shelf/shelf_control_button.cc
index 181fcca..769b535 100644
--- a/ash/shelf/shelf_control_button.cc
+++ b/ash/shelf/shelf_control_button.cc
@@ -61,7 +61,6 @@
     Shelf* shelf,
     ShelfButtonDelegate* shelf_button_delegate)
     : ShelfButton(shelf, shelf_button_delegate) {
-  set_has_ink_drop_action_on_click(true);
   SetInstallFocusRingOnFocus(true);
   views::HighlightPathGenerator::Install(
       this, std::make_unique<ShelfControlButtonHighlightPathGenerator>());
diff --git a/ash/shelf/shelf_controller.cc b/ash/shelf/shelf_controller.cc
index 682a931..2a7b7dd2 100644
--- a/ash/shelf/shelf_controller.cc
+++ b/ash/shelf/shelf_controller.cc
@@ -53,7 +53,7 @@
     auto value = GetShelfAutoHideBehaviorPref(prefs, display.id());
     // Don't show the shelf in app mode.
     if (session_controller->IsRunningInAppMode())
-      value = SHELF_AUTO_HIDE_ALWAYS_HIDDEN;
+      value = ShelfAutoHideBehavior::kAlwaysHidden;
     if (Shelf* shelf = GetShelfForDisplay(display.id()))
       shelf->SetAutoHideBehavior(value);
   }
diff --git a/ash/shelf/shelf_controller_unittest.cc b/ash/shelf/shelf_controller_unittest.cc
index fdc4040..33ab854d 100644
--- a/ash/shelf/shelf_controller_unittest.cc
+++ b/ash/shelf/shelf_controller_unittest.cc
@@ -144,7 +144,7 @@
 TEST_F(ShelfControllerPrefsTest, ShelfRespectsPrefs) {
   Shelf* shelf = GetPrimaryShelf();
   EXPECT_EQ(ShelfAlignment::kBottom, shelf->alignment());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kNever, shelf->auto_hide_behavior());
 
   PrefService* prefs =
       Shell::Get()->session_controller()->GetLastActiveUserPrefService();
@@ -152,7 +152,7 @@
   prefs->SetString(prefs::kShelfAutoHideBehaviorLocal, "Always");
 
   EXPECT_EQ(ShelfAlignment::kLeft, shelf->alignment());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways, shelf->auto_hide_behavior());
 }
 
 // Ensure shelf settings are updated on per-display preference changes.
@@ -166,20 +166,20 @@
 
   EXPECT_EQ(ShelfAlignment::kBottom, shelf1->alignment());
   EXPECT_EQ(ShelfAlignment::kBottom, shelf2->alignment());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER, shelf1->auto_hide_behavior());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER, shelf2->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kNever, shelf1->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kNever, shelf2->auto_hide_behavior());
 
   PrefService* prefs =
       Shell::Get()->session_controller()->GetLastActiveUserPrefService();
   SetShelfAlignmentPref(prefs, id1, ShelfAlignment::kLeft);
   SetShelfAlignmentPref(prefs, id2, ShelfAlignment::kRight);
-  SetShelfAutoHideBehaviorPref(prefs, id1, SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
-  SetShelfAutoHideBehaviorPref(prefs, id2, SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  SetShelfAutoHideBehaviorPref(prefs, id1, ShelfAutoHideBehavior::kAlways);
+  SetShelfAutoHideBehaviorPref(prefs, id2, ShelfAutoHideBehavior::kAlways);
 
   EXPECT_EQ(ShelfAlignment::kLeft, shelf1->alignment());
   EXPECT_EQ(ShelfAlignment::kRight, shelf2->alignment());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf1->auto_hide_behavior());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf2->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways, shelf1->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways, shelf2->auto_hide_behavior());
 }
 
 // Ensures that pre-Unified Mode per-display shelf settings don't prevent us
@@ -207,14 +207,14 @@
 
   shelf = GetShelfForDisplay(unified_id);
   EXPECT_EQ(ShelfAlignment::kBottom, shelf->alignment());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kNever, shelf->auto_hide_behavior());
 
   SetShelfAlignmentPref(prefs, unified_id, ShelfAlignment::kLeft);
   SetShelfAutoHideBehaviorPref(prefs, unified_id,
-                               SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+                               ShelfAutoHideBehavior::kAlways);
 
   EXPECT_EQ(ShelfAlignment::kLeft, shelf->alignment());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways, shelf->auto_hide_behavior());
 
   SetShelfAlignmentPref(prefs, unified_id, ShelfAlignment::kRight);
   EXPECT_EQ(ShelfAlignment::kRight, shelf->alignment());
@@ -238,9 +238,9 @@
   PrefService* prefs =
       Shell::Get()->session_controller()->GetLastActiveUserPrefService();
   // Check for the default shelf preferences.
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER,
+  EXPECT_EQ(ShelfAutoHideBehavior::kNever,
             GetShelfAutoHideBehaviorPref(prefs, internal_display_id));
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER,
+  EXPECT_EQ(ShelfAutoHideBehavior::kNever,
             GetShelfAutoHideBehaviorPref(prefs, external_display_id));
   EXPECT_EQ(ShelfAlignment::kBottom,
             GetShelfAlignmentPref(prefs, internal_display_id));
@@ -248,9 +248,9 @@
             GetShelfAlignmentPref(prefs, external_display_id));
 
   // Check the current state; shelves have locked alignments in the lock screen.
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER,
+  EXPECT_EQ(ShelfAutoHideBehavior::kNever,
             GetShelfForDisplay(internal_display_id)->auto_hide_behavior());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER,
+  EXPECT_EQ(ShelfAutoHideBehavior::kNever,
             GetShelfForDisplay(external_display_id)->auto_hide_behavior());
   EXPECT_EQ(ShelfAlignment::kBottomLocked,
             GetShelfForDisplay(internal_display_id)->alignment());
@@ -266,10 +266,10 @@
             GetShelfForDisplay(external_display_id)->alignment());
 
   SetShelfAutoHideBehaviorPref(prefs, external_display_id,
-                               SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER,
+                               ShelfAutoHideBehavior::kAlways);
+  EXPECT_EQ(ShelfAutoHideBehavior::kNever,
             GetShelfForDisplay(internal_display_id)->auto_hide_behavior());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS,
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways,
             GetShelfForDisplay(external_display_id)->auto_hide_behavior());
 
   // Simulate the external display becoming the primary display. The shelves are
@@ -280,9 +280,9 @@
             GetShelfForDisplay(internal_display_id)->alignment());
   EXPECT_EQ(ShelfAlignment::kBottomLocked,
             GetShelfForDisplay(external_display_id)->alignment());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER,
+  EXPECT_EQ(ShelfAutoHideBehavior::kNever,
             GetShelfForDisplay(internal_display_id)->auto_hide_behavior());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS,
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways,
             GetShelfForDisplay(external_display_id)->auto_hide_behavior());
 
   // After screen unlock the shelves should have the expected alignment values.
@@ -292,9 +292,9 @@
             GetShelfForDisplay(internal_display_id)->alignment());
   EXPECT_EQ(ShelfAlignment::kRight,
             GetShelfForDisplay(external_display_id)->alignment());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER,
+  EXPECT_EQ(ShelfAutoHideBehavior::kNever,
             GetShelfForDisplay(internal_display_id)->auto_hide_behavior());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS,
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways,
             GetShelfForDisplay(external_display_id)->auto_hide_behavior());
 }
 
@@ -315,7 +315,7 @@
   SetShelfAlignmentPref(prefs, internal_display_id, ShelfAlignment::kLeft);
   SetShelfAlignmentPref(prefs, external_display_id, ShelfAlignment::kRight);
   SetShelfAutoHideBehaviorPref(prefs, external_display_id,
-                               SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+                               ShelfAutoHideBehavior::kAlways);
 
   // Unlock the screen.
   GetSessionControllerClient()->UnlockScreen();
@@ -329,9 +329,9 @@
             GetShelfForDisplay(internal_display_id)->alignment());
   EXPECT_EQ(ShelfAlignment::kRight,
             GetShelfForDisplay(external_display_id)->alignment());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER,
+  EXPECT_EQ(ShelfAutoHideBehavior::kNever,
             GetShelfForDisplay(internal_display_id)->auto_hide_behavior());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS,
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways,
             GetShelfForDisplay(external_display_id)->auto_hide_behavior());
 }
 
@@ -341,28 +341,28 @@
       Shell::Get()->session_controller()->GetLastActiveUserPrefService();
   SetShelfAlignmentPref(prefs, GetPrimaryDisplay().id(), ShelfAlignment::kLeft);
   SetShelfAutoHideBehaviorPref(prefs, GetPrimaryDisplay().id(),
-                               SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+                               ShelfAutoHideBehavior::kAlways);
   ASSERT_EQ(ShelfAlignment::kLeft, shelf->alignment());
-  ASSERT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior());
+  ASSERT_EQ(ShelfAutoHideBehavior::kAlways, shelf->auto_hide_behavior());
 
   // Verify after entering tablet mode, the shelf alignment is bottom and the
   // auto hide behavior has not changed.
   Shell::Get()->tablet_mode_controller()->SetEnabledForTest(true);
   EXPECT_EQ(ShelfAlignment::kBottom, shelf->alignment());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways, shelf->auto_hide_behavior());
 
   // Verify that screen rotation does not change alignment or auto-hide.
   display_manager()->SetDisplayRotation(
       display::Screen::GetScreen()->GetPrimaryDisplay().id(),
       display::Display::ROTATE_90, display::Display::RotationSource::ACTIVE);
   EXPECT_EQ(ShelfAlignment::kBottom, shelf->alignment());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways, shelf->auto_hide_behavior());
 
   // Verify after exiting tablet mode, the shelf alignment and auto hide
   // behavior get their stored pref values.
   Shell::Get()->tablet_mode_controller()->SetEnabledForTest(false);
   EXPECT_EQ(ShelfAlignment::kLeft, shelf->alignment());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways, shelf->auto_hide_behavior());
 }
 
 using ShelfControllerAppModeTest = NoSessionAshTestBase;
@@ -372,18 +372,18 @@
   SimulateKioskMode(user_manager::USER_TYPE_KIOSK_APP);
 
   Shelf* shelf = GetPrimaryShelf();
-  EXPECT_EQ(SHELF_AUTO_HIDE_ALWAYS_HIDDEN, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlwaysHidden, shelf->auto_hide_behavior());
 
   Shell::Get()->tablet_mode_controller()->SetEnabledForTest(true);
-  EXPECT_EQ(SHELF_AUTO_HIDE_ALWAYS_HIDDEN, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlwaysHidden, shelf->auto_hide_behavior());
 
   display_manager()->SetDisplayRotation(
       display::Screen::GetScreen()->GetPrimaryDisplay().id(),
       display::Display::ROTATE_90, display::Display::RotationSource::ACTIVE);
-  EXPECT_EQ(SHELF_AUTO_HIDE_ALWAYS_HIDDEN, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlwaysHidden, shelf->auto_hide_behavior());
 
   Shell::Get()->tablet_mode_controller()->SetEnabledForTest(false);
-  EXPECT_EQ(SHELF_AUTO_HIDE_ALWAYS_HIDDEN, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlwaysHidden, shelf->auto_hide_behavior());
 }
 
 }  // namespace
diff --git a/ash/shelf/shelf_layout_manager.cc b/ash/shelf/shelf_layout_manager.cc
index 6505876..603a18e 100644
--- a/ash/shelf/shelf_layout_manager.cc
+++ b/ash/shelf/shelf_layout_manager.cc
@@ -116,13 +116,6 @@
   return widget->GetNativeView()->layer();
 }
 
-float CalculateHotseatTargetOpacity(HotseatWidget* hotseat_widget,
-                                    float target_opacity) {
-  return (hotseat_widget->state() == HotseatState::kExtended)
-             ? kDefaultShelfOpacity
-             : target_opacity;
-}
-
 void SetupAnimator(ui::ScopedLayerAnimationSettings* animation_setter,
                    base::TimeDelta animation_duration,
                    gfx::Tween::Type type) {
@@ -532,7 +525,7 @@
     SetState(SHELF_HIDDEN);
   } else {
     // TODO(zelidrag): Verify shelf drag animation still shows on the device
-    // when we are in SHELF_AUTO_HIDE_ALWAYS_HIDDEN.
+    // when we are in ShelfAutoHideBehavior::kAlwaysHidden.
     switch (window_state) {
       case WorkspaceWindowState::kFullscreen:
         if (IsShelfAutoHideForFullscreenMaximized()) {
@@ -1075,6 +1068,24 @@
   return nav_bounds;
 }
 
+gfx::Rect ShelfLayoutManager::GetHotseatBounds() const {
+  gfx::Vector2d offset = target_bounds_.shelf_bounds.OffsetFromOrigin();
+  gfx::Rect hotseat_bounds = target_bounds_.hotseat_bounds_in_shelf;
+  hotseat_bounds.Offset(offset);
+  return hotseat_bounds;
+}
+
+gfx::Rect ShelfLayoutManager::GetStatusAreaBounds() const {
+  gfx::Vector2d offset = target_bounds_.shelf_bounds.OffsetFromOrigin();
+  gfx::Rect status_bounds = target_bounds_.status_bounds_in_shelf;
+  status_bounds.Offset(offset);
+  return status_bounds;
+}
+
+float ShelfLayoutManager::GetOpacity() const {
+  return target_bounds_.opacity;
+}
+
 int ShelfLayoutManager::CalculateHotseatYInShelf(
     HotseatState hotseat_target_state) const {
   DCHECK(shelf_->IsHorizontalAlignment());
@@ -1387,11 +1398,11 @@
 
 ShelfVisibilityState ShelfLayoutManager::CalculateShelfVisibility() {
   switch (shelf_->auto_hide_behavior()) {
-    case SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS:
+    case ShelfAutoHideBehavior::kAlways:
       return SHELF_AUTO_HIDE;
-    case SHELF_AUTO_HIDE_BEHAVIOR_NEVER:
+    case ShelfAutoHideBehavior::kNever:
       return SHELF_VISIBLE;
-    case SHELF_AUTO_HIDE_ALWAYS_HIDDEN:
+    case ShelfAutoHideBehavior::kAlwaysHidden:
       return SHELF_HIDDEN;
   }
   return SHELF_VISIBLE;
@@ -1426,8 +1437,7 @@
                  kDimAnimationDuration, gfx::Tween::LINEAR);
 
   AnimateOpacity(shelf_widget_->hotseat_widget(),
-                 CalculateHotseatTargetOpacity(shelf_widget_->hotseat_widget(),
-                                               target_bounds_.opacity),
+                 shelf_widget_->hotseat_widget()->CalculateOpacity(),
                  kDimAnimationDuration, gfx::Tween::LINEAR);
 
   AnimateOpacity(shelf_widget_->status_area_widget(), target_bounds_.opacity,
@@ -1457,10 +1467,6 @@
   {
     ui::ScopedLayerAnimationSettings shelf_animation_setter(
         GetLayer(shelf_widget_)->GetAnimator());
-    ui::ScopedLayerAnimationSettings hotseat_animation_setter(
-        GetLayer(hotseat_widget)->GetAnimator());
-    ui::ScopedLayerAnimationSettings status_animation_setter(
-        GetLayer(status_widget)->GetAnimator());
 
     if (hide_animation_observer_)
       shelf_animation_setter.AddObserver(hide_animation_observer_.get());
@@ -1476,17 +1482,7 @@
     gfx::Rect shelf_bounds = target_bounds_.shelf_bounds;
     shelf_widget_->SetBounds(shelf_bounds);
 
-    SetupAnimator(&hotseat_animation_setter, animation_duration,
-                  gfx::Tween::EASE_OUT);
-    GetLayer(hotseat_widget)
-        ->SetOpacity(CalculateHotseatTargetOpacity(hotseat_widget,
-                                                   target_bounds_.opacity));
-
-    gfx::Vector2d hotseat_offset =
-        target_bounds_.shelf_bounds.OffsetFromOrigin();
-    gfx::Rect hotseat_bounds = target_bounds_.hotseat_bounds_in_shelf;
-    hotseat_bounds.Offset(hotseat_offset);
-    hotseat_widget->SetBounds(hotseat_bounds);
+    hotseat_widget->UpdateLayout();
 
     // Having a window which is visible but does not have an opacity is an
     // illegal state. We therefore hide the shelf here if required.
@@ -1495,20 +1491,7 @@
       status_widget->Hide();
     }
 
-    SetupAnimator(&status_animation_setter, animation_duration,
-                  gfx::Tween::EASE_OUT);
-    GetLayer(status_widget)->SetOpacity(target_bounds_.opacity);
-
-    if (observer)
-      status_animation_setter.AddObserver(observer);
-
-    // Setting visibility during an animation causes the visibility property to
-    // animate. Override the animation settings to immediately set the
-    // visibility property. Opacity will still animate.
-
-    gfx::Rect status_bounds = target_bounds_.status_bounds_in_shelf;
-    status_bounds.Offset(target_bounds_.shelf_bounds.OffsetFromOrigin());
-    status_widget->SetBounds(status_bounds);
+    status_widget->UpdateLayout(animate);
 
     // Nav widget handles its own bounds animations so we use AnimateOpacity to
     // create a separate ScopedLayerAnimationSettings for nav widget opacity.
diff --git a/ash/shelf/shelf_layout_manager.h b/ash/shelf/shelf_layout_manager.h
index cd618c5f..9c19184 100644
--- a/ash/shelf/shelf_layout_manager.h
+++ b/ash/shelf/shelf_layout_manager.h
@@ -245,7 +245,11 @@
   // coordinates.
   int CalculateHotseatYInShelf(HotseatState hotseat_target_state) const;
 
+  // Getters for bounds and opacity of the various sub-components.
   gfx::Rect GetNavigationBounds() const;
+  gfx::Rect GetHotseatBounds() const;
+  gfx::Rect GetStatusAreaBounds() const;
+  float GetOpacity() const;
 
   bool updating_bounds() const { return updating_bounds_; }
   ShelfAutoHideState auto_hide_state() const { return state_.auto_hide_state; }
diff --git a/ash/shelf/shelf_layout_manager_unittest.cc b/ash/shelf/shelf_layout_manager_unittest.cc
index 7702716..b48339b 100644
--- a/ash/shelf/shelf_layout_manager_unittest.cc
+++ b/ash/shelf/shelf_layout_manager_unittest.cc
@@ -582,7 +582,7 @@
   generator->MoveMouseTo(display.bounds().CenterPoint());
 
   Shelf* shelf = GetPrimaryShelf();
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kNever);
 
   views::Widget* widget = CreateTestWidget();
   widget->Maximize();
@@ -598,7 +598,7 @@
   gfx::Rect window_bounds_with_shelf = window->bounds();
   EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState());
 
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   layout_manager->LayoutShelf();
   EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState());
 
@@ -606,7 +606,7 @@
   gfx::Rect shelf_hidden = GetShelfWidget()->GetWindowBoundsInScreen();
 
   // Tests the gesture drag on always shown shelf.
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kNever);
   layout_manager->LayoutShelf();
 
   const int kNumScrollSteps = 4;
@@ -621,7 +621,7 @@
                             base::Unretained(&handler)));
   }
   EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kNever, shelf->auto_hide_behavior());
   EXPECT_EQ(window_bounds_with_shelf.ToString(), window->bounds().ToString());
   EXPECT_EQ(shelf_shown.ToString(),
             GetShelfWidget()->GetWindowBoundsInScreen().ToString());
@@ -635,21 +635,21 @@
   layout_manager->UpdateVisibilityState();
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
   EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kNever, shelf->auto_hide_behavior());
 
   // Swiping up should show the shelf if shelf is hidden in fullscreen mode.
   generator->GestureScrollSequence(edge_to_hide, edge_to_show, kTimeDelta,
                                    kNumScrollSteps);
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
   EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kNever, shelf->auto_hide_behavior());
 
   // Swiping down should hide the shelf.
   generator->GestureScrollSequence(edge_to_show, edge_to_hide, kTimeDelta,
                                    kNumScrollSteps);
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
   EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kNever, shelf->auto_hide_behavior());
 
   // Verify that after toggling fullscreen to off, the shelf is visible.
   widget->SetFullscreen(false);
@@ -659,11 +659,11 @@
   // visible windows, even in auto-hide mode.
   window_state->Minimize();
   EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kNever, shelf->auto_hide_behavior());
 
   // Tests gesture drag on auto-hide shelf.
   window_state->Maximize();
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   layout_manager->LayoutShelf();
   EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState());
 
@@ -679,7 +679,7 @@
   EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState());
   // Gesture drag should not change the auto hide behavior of shelf, even though
   // its visibility has been changed.
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways, shelf->auto_hide_behavior());
   // The auto-hide shelf is above the window, which should not change the bounds
   // of the window.
   EXPECT_EQ(window_bounds_with_noshelf.ToString(), window->bounds().ToString());
@@ -693,7 +693,7 @@
   generator->GestureScrollSequence(edge_to_show, new_point, kTimeDelta, 5);
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
   EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways, shelf->auto_hide_behavior());
   EXPECT_EQ(window_bounds_with_noshelf.ToString(), window->bounds().ToString());
   EXPECT_EQ(shelf_shown.ToString(),
             GetShelfWidget()->GetWindowBoundsInScreen().ToString());
@@ -707,7 +707,7 @@
   }
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
   EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways, shelf->auto_hide_behavior());
   EXPECT_EQ(window_bounds_with_noshelf.ToString(), window->bounds().ToString());
   EXPECT_EQ(shelf_hidden.ToString(),
             GetShelfWidget()->GetWindowBoundsInScreen().ToString());
@@ -731,7 +731,7 @@
 
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
   EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways, shelf->auto_hide_behavior());
   EXPECT_EQ(window_bounds_with_noshelf.ToString(), window->bounds().ToString());
   EXPECT_EQ(shelf_shown.ToString(),
             GetShelfWidget()->GetWindowBoundsInScreen().ToString());
@@ -746,7 +746,7 @@
   }
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
   EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways, shelf->auto_hide_behavior());
   EXPECT_EQ(window_bounds_with_noshelf.ToString(), window->bounds().ToString());
   EXPECT_EQ(shelf_hidden.ToString(),
             GetShelfWidget()->GetWindowBoundsInScreen().ToString());
@@ -760,7 +760,7 @@
                                    kTimeDelta, kNumScrollSteps);
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
   EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways, shelf->auto_hide_behavior());
   EXPECT_EQ(window_bounds_with_noshelf.ToString(), window->bounds().ToString());
   EXPECT_EQ(shelf_hidden.ToString(),
             GetShelfWidget()->GetWindowBoundsInScreen().ToString());
@@ -770,7 +770,7 @@
                                    kNumScrollSteps);
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
   EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways, shelf->auto_hide_behavior());
   EXPECT_EQ(window_bounds_with_noshelf.ToString(), window->bounds().ToString());
   EXPECT_EQ(shelf_shown.ToString(),
             GetShelfWidget()->GetWindowBoundsInScreen().ToString());
@@ -785,7 +785,7 @@
   }
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
   EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways, shelf->auto_hide_behavior());
   EXPECT_EQ(window_bounds_with_noshelf.ToString(), window->bounds().ToString());
   EXPECT_EQ(shelf_hidden.ToString(),
             GetShelfWidget()->GetWindowBoundsInScreen().ToString());
@@ -814,7 +814,7 @@
   }
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
   EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways, shelf->auto_hide_behavior());
   EXPECT_EQ(shelf_shown.ToString(),
             GetShelfWidget()->GetWindowBoundsInScreen().ToString());
   EXPECT_EQ(window_bounds_fullscreen.ToString(), window->bounds().ToString());
@@ -829,7 +829,7 @@
   }
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
   EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways, shelf->auto_hide_behavior());
   EXPECT_EQ(shelf_hidden.ToString(),
             GetShelfWidget()->GetWindowBoundsInScreen().ToString());
   EXPECT_EQ(window_bounds_fullscreen.ToString(), window->bounds().ToString());
@@ -840,7 +840,7 @@
 
   layout_manager->UpdateVisibilityState();
   EXPECT_EQ(SHELF_HIDDEN, shelf->GetVisibilityState());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways, shelf->auto_hide_behavior());
 
   // Swipe-up. This should not change anything.
   {
@@ -850,7 +850,7 @@
         base::BindRepeating(&ShelfDragCallback::ProcessScroll,
                             base::Unretained(&handler)));
     EXPECT_EQ(SHELF_HIDDEN, shelf->GetVisibilityState());
-    EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior());
+    EXPECT_EQ(ShelfAutoHideBehavior::kAlways, shelf->auto_hide_behavior());
     EXPECT_EQ(window_bounds_fullscreen.ToString(), window->bounds().ToString());
   }
 
@@ -863,7 +863,7 @@
   // The shelf should be shown because there are no more visible windows.
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
   EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways, shelf->auto_hide_behavior());
 
   // Swipe-down to hide. This should have no effect because there are no visible
   // windows.
@@ -876,7 +876,7 @@
   }
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
   EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways, shelf->auto_hide_behavior());
   EXPECT_EQ(shelf_shown.ToString(),
             GetShelfWidget()->GetWindowBoundsInScreen().ToString());
 
@@ -897,7 +897,7 @@
                             base::Unretained(&handler)));
   }
   EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways, shelf->auto_hide_behavior());
   EXPECT_EQ(shelf_shown.ToString(),
             GetShelfWidget()->GetWindowBoundsInScreen().ToString());
 
@@ -915,7 +915,7 @@
                             base::Unretained(&handler)));
   }
   EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways, shelf->auto_hide_behavior());
   EXPECT_EQ(shelf_shown.ToString(),
             GetShelfWidget()->GetWindowBoundsInScreen().ToString());
 
@@ -941,7 +941,7 @@
 
   Shelf* shelf = GetPrimaryShelf();
   if (autohide_shelf)
-    shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+    shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
 
   // Create more than one window to prepare for the possibly window stacking
   // change during drag.
@@ -1177,7 +1177,7 @@
 
   Shelf* shelf = GetPrimaryShelf();
   ShelfLayoutManager* layout_manager = GetShelfLayoutManager();
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   views::Widget* widget = CreateTestWidget();
   widget->Maximize();
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
@@ -1282,7 +1282,7 @@
   // visible.
   CreateTestWidget();
 
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
 
   display::Display display = display::Screen::GetScreen()->GetPrimaryDisplay();
@@ -1390,7 +1390,7 @@
 TEST_P(ShelfLayoutManagerTest, VisibleWhenLockScreenShowing) {
   Shelf* shelf = GetPrimaryShelf();
   ShelfLayoutManager* layout_manager = GetShelfLayoutManager();
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   views::Widget* widget = CreateTestWidget();
   widget->Maximize();
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
@@ -1426,7 +1426,7 @@
   std::unique_ptr<aura::Window> window(CreateTestWindow());
   window->Show();
   Shelf* shelf = GetPrimaryShelf();
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
   EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState());
 
@@ -1449,7 +1449,7 @@
   std::unique_ptr<aura::Window> window(CreateTestWindow());
   window->Show();
   Shelf* shelf = GetPrimaryShelf();
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
   EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState());
 
@@ -1489,10 +1489,10 @@
   Shelf* shelf = GetPrimaryShelf();
   views::Widget* widget = CreateTestWidget();
 
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
 
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kNever);
   EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState());
 
   widget->Maximize();
@@ -1501,7 +1501,7 @@
   EXPECT_EQ(screen->GetPrimaryDisplay().work_area().bottom(),
             widget->GetWorkAreaBoundsInScreen().bottom());
 
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
   EXPECT_EQ(screen->GetPrimaryDisplay().work_area().bottom(),
             widget->GetWorkAreaBoundsInScreen().bottom());
@@ -1509,7 +1509,7 @@
   ui::ScopedAnimationDurationScaleMode animation_duration(
       ui::ScopedAnimationDurationScaleMode::SLOW_DURATION);
 
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kNever);
   ShelfWidget* shelf_widget = GetShelfWidget();
   EXPECT_TRUE(shelf_widget->status_area_widget()->IsVisible());
   StepWidgetLayerAnimatorToEnd(shelf_widget);
@@ -1523,7 +1523,7 @@
 TEST_P(ShelfLayoutManagerTest, VisibleWhenStatusOrShelfFocused) {
   Shelf* shelf = GetPrimaryShelf();
   views::Widget* widget = CreateTestWidget();
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
   EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState());
 
@@ -1547,7 +1547,7 @@
 // Ensure a SHELF_VISIBLE shelf stays visible when the app list is shown.
 TEST_P(ShelfLayoutManagerTest, OpenAppListWithShelfVisibleState) {
   Shelf* shelf = GetPrimaryShelf();
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kNever);
 
   // Create a normal unmaximized window; the shelf should be visible.
   aura::Window* window = CreateTestWindow();
@@ -1571,7 +1571,7 @@
 // when the app list is shown, but the visibility state doesn't change.
 TEST_P(ShelfLayoutManagerTest, OpenAppListWithShelfAutoHideState) {
   Shelf* shelf = GetPrimaryShelf();
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
 
   // Create a normal unmaximized window; the shelf should be hidden.
   aura::Window* window = CreateTestWindow();
@@ -1612,9 +1612,9 @@
   EXPECT_NE(shelf_1, shelf_2);
   EXPECT_NE(shelf_1->GetWindow()->GetRootWindow(),
             shelf_2->GetWindow()->GetRootWindow());
-  shelf_1->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf_1->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   shelf_1->shelf_layout_manager()->LayoutShelf();
-  shelf_2->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf_2->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   shelf_2->shelf_layout_manager()->LayoutShelf();
 
   // Create a window in each display and show them in maximized state.
@@ -1693,7 +1693,7 @@
   Shelf* shelf = GetPrimaryShelf();
   ShelfLayoutManager* layout_manager = GetShelfLayoutManager();
   layout_manager->LayoutShelf();
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
 
   aura::Window* window = CreateTestWindow();
   window->SetBounds(gfx::Rect(0, 0, 100, 100));
@@ -1724,9 +1724,9 @@
   EXPECT_NE(shelf_1, shelf_2);
   EXPECT_NE(shelf_1->GetWindow()->GetRootWindow(),
             shelf_2->GetWindow()->GetRootWindow());
-  shelf_1->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf_1->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   shelf_1->shelf_layout_manager()->LayoutShelf();
-  shelf_2->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf_2->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   shelf_2->shelf_layout_manager()->LayoutShelf();
 
   // Create a window in each display and show them in maximized state.
@@ -1837,7 +1837,7 @@
   Shelf* shelf = GetPrimaryShelf();
   ShelfLayoutManager* layout_manager = GetShelfLayoutManager();
   // Force an initial layout.
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kNever);
   layout_manager->LayoutShelf();
   EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState());
 
@@ -1867,12 +1867,12 @@
   EXPECT_EQ(display.bounds().x(), shelf_bounds.x());
   EXPECT_EQ(display.bounds().y(), shelf_bounds.y());
   EXPECT_EQ(display.bounds().height(), shelf_bounds.height());
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   display = display::Screen::GetScreen()->GetPrimaryDisplay();
   EXPECT_EQ(0, display.GetWorkAreaInsets().left());
   EXPECT_EQ(0, display.work_area().x());
 
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kNever);
   shelf->SetAlignment(ShelfAlignment::kRight);
   shelf_bounds = GetShelfWidget()->GetWindowBoundsInScreen();
   display = display::Screen::GetScreen()->GetPrimaryDisplay();
@@ -1902,7 +1902,7 @@
   const gfx::Rect stable_work_area =
       display::Screen::GetScreen()->GetPrimaryDisplay().work_area();
 
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   display = display::Screen::GetScreen()->GetPrimaryDisplay();
   EXPECT_EQ(0, display.GetWorkAreaInsets().right());
   EXPECT_EQ(0, display.bounds().right() - display.work_area().right());
@@ -1981,7 +1981,7 @@
 
     // Check the shelf's default state.
     ASSERT_EQ(ShelfAlignment::kBottom, shelf->alignment());
-    ASSERT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER, shelf->auto_hide_behavior());
+    ASSERT_EQ(ShelfAutoHideBehavior::kNever, shelf->auto_hide_behavior());
     ASSERT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState());
 
     // Verifies that dragging AppList view from Shelf works as expected.
@@ -1992,7 +1992,7 @@
     SCOPED_TRACE("AUTO_HIDE");
     GetEventGenerator()->MoveMouseTo(
         GetPrimaryDisplay().bounds().CenterPoint());
-    shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+    shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
     views::Widget* widget = CreateTestWidget();
     widget->Maximize();
 
@@ -2012,7 +2012,7 @@
 TEST_P(ShelfLayoutManagerTest, FlingUpOnShelfForAppList) {
   Shelf* shelf = GetPrimaryShelf();
   EXPECT_EQ(ShelfAlignment::kBottom, shelf->alignment());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kNever, shelf->auto_hide_behavior());
   EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState());
 
   // Starts the drag from the center of the shelf's bottom.
@@ -2099,7 +2099,7 @@
 TEST_P(ShelfLayoutManagerTest, ChangeShelfAlignmentDuringAppListDragging) {
   Shelf* shelf = GetPrimaryShelf();
   EXPECT_EQ(ShelfAlignment::kBottom, shelf->alignment());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kNever, shelf->auto_hide_behavior());
   EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState());
 
   StartScroll(GetShelfWidget()->GetWindowBoundsInScreen().CenterPoint());
@@ -2117,7 +2117,7 @@
 TEST_P(ShelfLayoutManagerTest, SwipingUpOnShelfInLaptopModeForAppList) {
   Shelf* shelf = GetPrimaryShelf();
   EXPECT_EQ(ShelfAlignment::kBottom, shelf->alignment());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kNever, shelf->auto_hide_behavior());
   EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState());
 
   ui::test::EventGenerator* generator = GetEventGenerator();
@@ -2168,7 +2168,7 @@
   GetAppListTestHelper()->CheckVisibility(false);
   GetAppListTestHelper()->CheckState(ash::AppListViewState::kClosed);
 
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   // Create a normal unmaximized window, the auto-hide shelf should be hidden.
   aura::Window* window = CreateTestWindow();
   window->SetBounds(gfx::Rect(0, 0, 100, 100));
@@ -2199,7 +2199,7 @@
   ShelfLayoutManager* layout_manager = GetShelfLayoutManager();
   layout_manager->OnAppListVisibilityChanged(true, GetPrimaryDisplayId());
   EXPECT_EQ(ShelfAlignment::kBottom, shelf->alignment());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kNever, shelf->auto_hide_behavior());
   EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState());
 
   // Note: A window must be visible in order to hide the shelf.
@@ -2215,7 +2215,7 @@
   gfx::Point end = start + gfx::Vector2d(0, 120);
   generator->GestureScrollSequence(start, end, kTimeDelta, kNumScrollSteps);
   EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kNever, shelf->auto_hide_behavior());
 
   // Swiping left on shelf when the fullscreen app list is opened
   // should not hide the shelf.
@@ -2223,7 +2223,7 @@
   end = start + gfx::Vector2d(-120, 0);
   generator->GestureScrollSequence(start, end, kTimeDelta, kNumScrollSteps);
   EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kNever, shelf->auto_hide_behavior());
 
   // Swiping right on shelf when the fullscreen app list is opened
   // should not hide the shelf.
@@ -2231,7 +2231,7 @@
   end = start + gfx::Vector2d(120, 0);
   generator->GestureScrollSequence(start, end, kTimeDelta, kNumScrollSteps);
   EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kNever, shelf->auto_hide_behavior());
 }
 
 TEST_P(ShelfLayoutManagerTest, WindowVisibilityDisablesAutoHide) {
@@ -2239,7 +2239,7 @@
   Shelf* shelf = GetPrimaryShelf();
   ShelfLayoutManager* layout_manager = GetShelfLayoutManager();
   layout_manager->LayoutShelf();
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
 
   // Create a visible window so auto-hide behavior is enforced
   views::Widget* dummy = CreateTestWidget();
@@ -2290,7 +2290,7 @@
 TEST_P(ShelfLayoutManagerTest,
        ShelfAnimatesWhenGestureCompleteNoVisibleWindow) {
   Shelf* shelf = GetPrimaryShelf();
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
   EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState());
   gfx::Rect visible_bounds = GetShelfWidget()->GetWindowBoundsInScreen();
@@ -2320,7 +2320,7 @@
 // the auto hidden shelf.
 TEST_P(ShelfLayoutManagerTest, ShelfAnimatesToVisibleWhenGestureInComplete) {
   Shelf* shelf = GetPrimaryShelf();
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
   EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState());
   gfx::Rect visible_bounds = GetShelfWidget()->GetWindowBoundsInScreen();
@@ -2359,7 +2359,7 @@
 TEST_P(ShelfLayoutManagerTest,
        DISABLED_ShelfAnimatesToHiddenWhenGestureOutComplete) {
   Shelf* shelf = GetPrimaryShelf();
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
   EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState());
   gfx::Rect visible_bounds = GetShelfWidget()->GetWindowBoundsInScreen();
@@ -2458,7 +2458,7 @@
   CreateTestWidget();
 
   // Turn on auto-hide for the shelf.
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
   EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState());
 
@@ -2474,7 +2474,7 @@
   // Make sure the shelf is always visible.
   Shelf* shelf = GetPrimaryShelf();
   ShelfLayoutManager* layout_manager = GetShelfLayoutManager();
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kNever);
   layout_manager->LayoutShelf();
 
   views::Widget* widget_one = CreateTestWidget();
@@ -2491,7 +2491,7 @@
       widget_one->GetNativeWindow()->bounds().size().GetArea();
 
   // Now hide the shelf.
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
 
   // Both windows should be resized according to the shelf status.
   EXPECT_EQ(widget_one->GetNativeWindow()->bounds().ToString(),
@@ -2501,7 +2501,7 @@
             widget_one->GetNativeWindow()->bounds().size().GetArea());
 
   // Now show the shelf.
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kNever);
 
   // Again both windows should be of the same size.
   EXPECT_EQ(widget_one->GetNativeWindow()->bounds().ToString(),
@@ -2641,7 +2641,7 @@
   EXPECT_EQ(ShelfBackgroundType::kDefaultBg,
             GetShelfWidget()->GetBackgroundType());
 
-  GetPrimaryShelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  GetPrimaryShelf()->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   std::unique_ptr<aura::Window> w1(CreateTestWindow());
   w1->Show();
   wm::ActivateWindow(w1.get());
@@ -2716,11 +2716,11 @@
 
   ui::ScopedAnimationDurationScaleMode regular_animations(
       ui::ScopedAnimationDurationScaleMode::SLOW_DURATION);
-  GetPrimaryShelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_ALWAYS_HIDDEN);
+  GetPrimaryShelf()->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlwaysHidden);
   gfx::Rect hide_target_bounds = status_window->GetTargetBounds();
   EXPECT_GT(hide_target_bounds.y(), initial_bounds.y());
 
-  GetPrimaryShelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER);
+  GetPrimaryShelf()->SetAutoHideBehavior(ShelfAutoHideBehavior::kNever);
   gfx::Rect reshow_target_bounds = status_window->GetTargetBounds();
   EXPECT_EQ(initial_bounds, reshow_target_bounds);
 }
@@ -2728,7 +2728,7 @@
 // Tests that during shutdown, that window activation changes are properly
 // handled, and do not crash (crbug.com/458768)
 TEST_P(ShelfLayoutManagerTest, ShutdownHandlesWindowActivation) {
-  GetPrimaryShelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  GetPrimaryShelf()->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
 
   aura::Window* window1 = CreateTestWindowInShellWithId(0);
   window1->SetBounds(gfx::Rect(0, 0, 100, 100));
@@ -2763,7 +2763,7 @@
 TEST_P(ShelfLayoutManagerTest, PressHomeButtonOnAutoHideShelf) {
   TabletModeControllerTestApi().EnterTabletMode();
   Shelf* shelf = GetPrimaryShelf();
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   const display::Display display =
       display::Screen::GetScreen()->GetPrimaryDisplay();
 
@@ -2805,7 +2805,7 @@
 TEST_P(ShelfLayoutManagerTest, PressHomeBtnWhenAutoHideShelfBeingDragged) {
   // Create a widget to hide the shelf in auto-hide mode.
   CreateTestWidget();
-  GetPrimaryShelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  GetPrimaryShelf()->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   EXPECT_FALSE(GetPrimaryShelf()->IsVisible());
 
   // Emulate to drag the shelf to show it.
@@ -2917,7 +2917,7 @@
   Shelf* shelf = GetPrimaryShelf();
   ui::test::EventGenerator* generator = GetEventGenerator();
 
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   ShelfLayoutManager* layout_manager = GetShelfLayoutManager();
   layout_manager->LayoutShelf();
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
@@ -2970,7 +2970,7 @@
   const gfx::Rect display_bounds =
       display::Screen::GetScreen()->GetPrimaryDisplay().bounds();
 
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   ShelfLayoutManager* layout_manager = GetShelfLayoutManager();
   layout_manager->LayoutShelf();
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
@@ -3011,7 +3011,7 @@
   display::Display display = display::Screen::GetScreen()->GetPrimaryDisplay();
 
   // Set the shelf to auto-hide.
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   ShelfLayoutManager* layout_manager = GetShelfLayoutManager();
   layout_manager->LayoutShelf();
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
@@ -3062,7 +3062,7 @@
       .RunMessageLoopUntilAnimationsDone();
 
   // Turn on the auto-hide mode for shelf. Check the initial states.
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   ShelfLayoutManager* layout_manager = GetShelfLayoutManager();
   layout_manager->LayoutShelf();
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
@@ -3094,7 +3094,7 @@
   ui::test::EventGenerator* generator = GetEventGenerator();
   generator->MoveMouseTo(0, 0);
 
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   ShelfLayoutManager* layout_manager = GetShelfLayoutManager();
   layout_manager->LayoutShelf();
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
@@ -3139,7 +3139,7 @@
 // Tests that tap shelf item in auto-hide shelf should do nothing.
 TEST_P(ShelfLayoutManagerTest, TapShelfItemInAutoHideShelf) {
   Shelf* shelf = GetPrimaryShelf();
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
 
   // Create a normal unmaximized window; the shelf should be hidden.
   aura::Window* window = CreateTestWindow();
@@ -3209,7 +3209,7 @@
 // Verifies the auto-hide shelf is hidden if there is only a single PIP window.
 TEST_P(ShelfLayoutManagerTest, AutoHideShelfHiddenForSinglePipWindow) {
   Shelf* shelf = GetPrimaryShelf();
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
   EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState());
 
@@ -3364,8 +3364,8 @@
 // Used to test autohide and always shown shelf.
 INSTANTIATE_TEST_SUITE_P(All,
                          HotseatShelfLayoutManagerTest,
-                         testing::Values(SHELF_AUTO_HIDE_BEHAVIOR_NEVER,
-                                         SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS));
+                         testing::Values(ShelfAutoHideBehavior::kNever,
+                                         ShelfAutoHideBehavior::kAlways));
 
 // Tests that the hotseat is kShown when entering tablet mode with no windows.
 TEST_P(HotseatShelfLayoutManagerTest, GoingToTabletModeNoWindows) {
@@ -3433,7 +3433,7 @@
 // Tests that swiping up on an autohidden shelf shows the hotseat, and swiping
 // down hides it.
 TEST_F(HotseatShelfLayoutManagerTest, ShowingAndHidingAutohiddenShelf) {
-  GetPrimaryShelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  GetPrimaryShelf()->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   TabletModeControllerTestApi().EnterTabletMode();
   std::unique_ptr<aura::Window> window =
       AshTestBase::CreateTestWindow(gfx::Rect(0, 0, 400, 400));
@@ -3611,14 +3611,14 @@
                                      InAppShelfGestures::kSwipeDownToHide, 0);
   histogram_tester.ExpectBucketCount(kHotseatGestureHistogramName,
                                      InAppShelfGestures::kSwipeUpToShow, 1);
-  if (GetParam() == SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS)
+  if (GetParam() == ShelfAutoHideBehavior::kAlways)
     EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, GetPrimaryShelf()->GetAutoHideState());
 
   // Swipe up on the Hotseat (parent of ShelfView) does nothing.
   gfx::Point start(GetPrimaryShelf()
                        ->shelf_widget()
-                       ->shelf_view_for_testing()
-                       ->GetBoundsInScreen()
+                       ->hotseat_widget()
+                       ->GetWindowBoundsInScreen()
                        .top_center());
   const gfx::Point end(start + gfx::Vector2d(0, -300));
   const base::TimeDelta kTimeDelta = base::TimeDelta::FromMilliseconds(100);
@@ -3628,7 +3628,7 @@
 
   EXPECT_FALSE(Shell::Get()->app_list_controller()->IsVisible());
   EXPECT_EQ(HotseatState::kExtended, GetShelfLayoutManager()->hotseat_state());
-  if (GetParam() == SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS)
+  if (GetParam() == ShelfAutoHideBehavior::kAlways)
     EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, GetPrimaryShelf()->GetAutoHideState());
   histogram_tester.ExpectBucketCount(kHotseatGestureHistogramName,
                                      InAppShelfGestures::kSwipeDownToHide, 0);
@@ -3666,7 +3666,7 @@
   GetEventGenerator()->GestureTapAt(tap_point);
 
   EXPECT_EQ(HotseatState::kExtended, GetShelfLayoutManager()->hotseat_state());
-  if (GetParam() == SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS)
+  if (GetParam() == ShelfAutoHideBehavior::kAlways)
     EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, GetPrimaryShelf()->GetAutoHideState());
 
   // Tap the active window, the hotseat should hide.
@@ -3674,7 +3674,7 @@
   GetEventGenerator()->GestureTapAt(tap_point);
 
   EXPECT_EQ(HotseatState::kHidden, GetShelfLayoutManager()->hotseat_state());
-  if (GetParam() == SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS)
+  if (GetParam() == ShelfAutoHideBehavior::kAlways)
     EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, GetPrimaryShelf()->GetAutoHideState());
 
   histogram_tester.ExpectBucketCount(kHotseatGestureHistogramName,
@@ -3705,7 +3705,7 @@
   histogram_tester.ExpectBucketCount(kHotseatGestureHistogramName,
                                      InAppShelfGestures::kSwipeUpToShow, 1);
 
-  if (GetParam() == SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS)
+  if (GetParam() == ShelfAutoHideBehavior::kAlways)
     EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, GetPrimaryShelf()->GetAutoHideState());
 
   // Gesture drag on the active window, the hotseat should hide.
@@ -3719,7 +3719,7 @@
       start, end, base::TimeDelta::FromMilliseconds(10), 4);
 
   EXPECT_EQ(HotseatState::kHidden, GetShelfLayoutManager()->hotseat_state());
-  if (GetParam() == SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS)
+  if (GetParam() == ShelfAutoHideBehavior::kAlways)
     EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, GetPrimaryShelf()->GetAutoHideState());
 
   histogram_tester.ExpectBucketCount(kHotseatGestureHistogramName,
@@ -3762,7 +3762,7 @@
 // Tests that releasing the hotseat gesture below the threshold results in a
 // kHidden hotseat when the shelf is shown.
 TEST_F(HotseatShelfLayoutManagerTest, ReleasingSlowDragBelowThreshold) {
-  GetPrimaryShelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER);
+  GetPrimaryShelf()->SetAutoHideBehavior(ShelfAutoHideBehavior::kNever);
   TabletModeControllerTestApi().EnterTabletMode();
   std::unique_ptr<aura::Window> window =
       AshTestBase::CreateTestWindow(gfx::Rect(0, 0, 400, 400));
@@ -3825,7 +3825,7 @@
                                              kNumScrollSteps);
 
   EXPECT_EQ(HotseatState::kExtended, GetShelfLayoutManager()->hotseat_state());
-  if (GetParam() == SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS)
+  if (GetParam() == ShelfAutoHideBehavior::kAlways)
     EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, GetPrimaryShelf()->GetAutoHideState());
   histogram_tester.ExpectBucketCount(kHotseatGestureHistogramName,
                                      InAppShelfGestures::kSwipeDownToHide, 0);
@@ -3945,7 +3945,7 @@
 
   // If the shelf is auto-hidden, swipe up to bring up shelf and hotseat first
   // (otherwise, the window drag to overview will not be handled).
-  if (auto_hide_behavior == SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS) {
+  if (auto_hide_behavior == ShelfAutoHideBehavior::kAlways) {
     SwipeUpOnShelf();
     ASSERT_EQ(HotseatState::kExtended,
               GetShelfLayoutManager()->hotseat_state());
@@ -4001,7 +4001,7 @@
 
   EXPECT_TRUE(overview_controller->InOverviewSession());
   EXPECT_EQ(HotseatState::kExtended, GetShelfLayoutManager()->hotseat_state());
-  if (GetParam() == SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS) {
+  if (GetParam() == ShelfAutoHideBehavior::kAlways) {
     EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
     EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState());
   } else {
@@ -4014,7 +4014,7 @@
 
   EXPECT_TRUE(overview_controller->InOverviewSession());
   EXPECT_EQ(HotseatState::kExtended, GetShelfLayoutManager()->hotseat_state());
-  if (GetParam() == SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS) {
+  if (GetParam() == ShelfAutoHideBehavior::kAlways) {
     EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
     EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState());
   } else {
@@ -4025,7 +4025,7 @@
 
   EXPECT_TRUE(overview_controller->InOverviewSession());
   EXPECT_EQ(HotseatState::kExtended, GetShelfLayoutManager()->hotseat_state());
-  if (GetParam() == SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS) {
+  if (GetParam() == ShelfAutoHideBehavior::kAlways) {
     EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
     EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState());
   } else {
@@ -4054,7 +4054,7 @@
   EXPECT_TRUE(split_view_controller->InSplitViewMode());
   EXPECT_TRUE(overview_controller->InOverviewSession());
   EXPECT_EQ(HotseatState::kExtended, GetShelfLayoutManager()->hotseat_state());
-  if (GetParam() == SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS) {
+  if (GetParam() == ShelfAutoHideBehavior::kAlways) {
     EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
     EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState());
   } else {
@@ -4066,7 +4066,7 @@
   EXPECT_TRUE(split_view_controller->InSplitViewMode());
   EXPECT_TRUE(overview_controller->InOverviewSession());
   EXPECT_EQ(HotseatState::kHidden, GetShelfLayoutManager()->hotseat_state());
-  if (GetParam() == SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS) {
+  if (GetParam() == ShelfAutoHideBehavior::kAlways) {
     EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
     EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState());
   } else {
@@ -4078,7 +4078,7 @@
   EXPECT_TRUE(split_view_controller->InSplitViewMode());
   EXPECT_TRUE(overview_controller->InOverviewSession());
   EXPECT_EQ(HotseatState::kExtended, GetShelfLayoutManager()->hotseat_state());
-  if (GetParam() == SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS) {
+  if (GetParam() == ShelfAutoHideBehavior::kAlways) {
     EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
     EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState());
   } else {
@@ -4107,7 +4107,7 @@
 
   EXPECT_TRUE(split_view_controller->InSplitViewMode());
   EXPECT_EQ(HotseatState::kExtended, GetShelfLayoutManager()->hotseat_state());
-  if (GetParam() == SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS) {
+  if (GetParam() == ShelfAutoHideBehavior::kAlways) {
     EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
     EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState());
   } else {
@@ -4118,7 +4118,7 @@
 
   EXPECT_TRUE(split_view_controller->InSplitViewMode());
   EXPECT_EQ(HotseatState::kHidden, GetShelfLayoutManager()->hotseat_state());
-  if (GetParam() == SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS) {
+  if (GetParam() == ShelfAutoHideBehavior::kAlways) {
     EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
     EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState());
   } else {
@@ -4129,7 +4129,7 @@
 
   EXPECT_TRUE(split_view_controller->InSplitViewMode());
   EXPECT_EQ(HotseatState::kExtended, GetShelfLayoutManager()->hotseat_state());
-  if (GetParam() == SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS) {
+  if (GetParam() == ShelfAutoHideBehavior::kAlways) {
     EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
     EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState());
   } else {
@@ -4303,7 +4303,7 @@
   std::unique_ptr<aura::Window> window =
       AshTestBase::CreateTestWindow(gfx::Rect(0, 0, 400, 400));
   wm::ActivateWindow(window.get());
-  if (GetParam() == SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS)
+  if (GetParam() == ShelfAutoHideBehavior::kAlways)
     SwipeUpOnShelf();
   views::View* home_button = GetPrimaryShelf()->shelf_widget()->GetHomeButton();
   GetEventGenerator()->GestureTapAt(
@@ -4378,7 +4378,7 @@
   }
 
   // Nothing left to test for autohidden shelf.
-  if (GetParam() == SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS)
+  if (GetParam() == ShelfAutoHideBehavior::kAlways)
     return;
 
   // Go to in-app and do not extend the hotseat.
@@ -4450,7 +4450,7 @@
 
   // Make sure shelf (and overview button) are visible - this is moves the
   // hotseat into kExtended state.
-  if (GetParam() == SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS)
+  if (GetParam() == ShelfAutoHideBehavior::kAlways)
     SwipeUpOnShelf();
 
   gfx::Point overview_button_center = GetPrimaryShelf()
@@ -4501,7 +4501,7 @@
 
   // Make sure shelf (and overview button) are visible - this is moves the
   // hotseat into kExtended state.
-  if (GetParam() == SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS)
+  if (GetParam() == ShelfAutoHideBehavior::kAlways)
     SwipeUpOnShelf();
 
   gfx::Point overview_button_center = GetPrimaryShelf()
@@ -4543,7 +4543,7 @@
 // autohidden shelf.
 TEST_F(HotseatShelfLayoutManagerTest,
        InAppToOverviewChangesStateOnceAutohiddenShelf) {
-  GetPrimaryShelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  GetPrimaryShelf()->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   TabletModeControllerTestApi().EnterTabletMode();
 
   // Test going to overview mode using the controller from an autohide hidden
@@ -4885,6 +4885,34 @@
   EXPECT_EQ(HotseatState::kExtended, GetShelfLayoutManager()->hotseat_state());
 }
 
+// Tests that in overview, we can still exit by clicking on the hotseat if the
+// point is not on the visible area.
+TEST_F(HotseatShelfLayoutManagerTest, ExitOverviewWithClickOnHotseat) {
+  std::unique_ptr<aura::Window> window1 = AshTestBase::CreateTestWindow();
+  ShelfTestUtil::AddAppShortcut("app_id_1", TYPE_APP);
+
+  TabletModeControllerTestApi().EnterTabletMode();
+  ASSERT_TRUE(TabletModeControllerTestApi().IsTabletModeStarted());
+  ASSERT_FALSE(WindowState::Get(window1.get())->IsMinimized());
+
+  // Enter overview, hotseat is visible. Choose the point to the farthest left.
+  // This point will not be visible.
+  auto* overview_controller = Shell::Get()->overview_controller();
+  auto* hotseat_widget = GetShelfWidget()->hotseat_widget();
+  overview_controller->StartOverview();
+  ASSERT_TRUE(overview_controller->InOverviewSession());
+  ASSERT_EQ(HotseatState::kExtended, GetShelfLayoutManager()->hotseat_state());
+  gfx::Point far_left_point =
+      hotseat_widget->GetWindowBoundsInScreen().left_center();
+
+  // Tests that on clicking, we exit overview and all windows are minimized.
+  GetEventGenerator()->set_current_screen_location(far_left_point);
+  GetEventGenerator()->ClickLeftButton();
+  EXPECT_EQ(HotseatState::kShown, GetShelfLayoutManager()->hotseat_state());
+  EXPECT_TRUE(WindowState::Get(window1.get())->IsMinimized());
+  EXPECT_FALSE(overview_controller->InOverviewSession());
+}
+
 class ShelfLayoutManagerWindowDraggingTest : public ShelfLayoutManagerTestBase {
  public:
   ShelfLayoutManagerWindowDraggingTest() = default;
@@ -5179,7 +5207,7 @@
   EXPECT_TRUE(IsWindowDragInProgress());
   EndScroll(/*is_fling=*/false, 0.f);
 
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   ShelfLayoutManager* layout_manager = GetShelfLayoutManager();
   layout_manager->LayoutShelf();
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
@@ -5274,7 +5302,7 @@
   wm::ActivateWindow(window.get());
 
   Shelf* shelf = GetPrimaryShelf();
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   SwipeUpOnShelf();
   EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState());
   EXPECT_EQ(HotseatState::kExtended, GetShelfLayoutManager()->hotseat_state());
@@ -5319,7 +5347,7 @@
   wm::ActivateWindow(window.get());
 
   Shelf* shelf = GetPrimaryShelf();
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   SwipeUpOnShelf();
   EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState());
   EXPECT_EQ(HotseatState::kExtended, GetShelfLayoutManager()->hotseat_state());
diff --git a/ash/shelf/shelf_tooltip_manager_unittest.cc b/ash/shelf/shelf_tooltip_manager_unittest.cc
index ed4bdde..0ae14ab4 100644
--- a/ash/shelf/shelf_tooltip_manager_unittest.cc
+++ b/ash/shelf/shelf_tooltip_manager_unittest.cc
@@ -135,9 +135,9 @@
   ShowTooltipForFirstAppIcon();
   ASSERT_TRUE(tooltip_manager_->IsVisible());
 
-  GetPrimaryShelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  GetPrimaryShelf()->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   GetPrimaryShelf()->UpdateAutoHideState();
-  ASSERT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS,
+  ASSERT_EQ(ShelfAutoHideBehavior::kAlways,
             GetPrimaryShelf()->auto_hide_behavior());
   ASSERT_EQ(SHELF_AUTO_HIDE_HIDDEN, GetPrimaryShelf()->GetAutoHideState());
   EXPECT_FALSE(tooltip_manager_->IsVisible());
@@ -154,7 +154,7 @@
   // Close the window to show the auto-hide shelf; tooltips should now show.
   widget.reset();
   GetPrimaryShelf()->UpdateAutoHideState();
-  ASSERT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS,
+  ASSERT_EQ(ShelfAutoHideBehavior::kAlways,
             GetPrimaryShelf()->auto_hide_behavior());
   ASSERT_EQ(SHELF_AUTO_HIDE_SHOWN, GetPrimaryShelf()->GetAutoHideState());
 
diff --git a/ash/shelf/shelf_view.cc b/ash/shelf/shelf_view.cc
index 0eb2281..34f5c3a 100644
--- a/ash/shelf/shelf_view.cc
+++ b/ash/shelf/shelf_view.cc
@@ -2092,13 +2092,13 @@
 void ShelfView::AnnounceShelfAutohideBehavior() {
   base::string16 announcement;
   switch (shelf_->auto_hide_behavior()) {
-    case SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS:
+    case ShelfAutoHideBehavior::kAlways:
       announcement = l10n_util::GetStringUTF16(IDS_SHELF_STATE_AUTO_HIDE);
       break;
-    case SHELF_AUTO_HIDE_BEHAVIOR_NEVER:
+    case ShelfAutoHideBehavior::kNever:
       announcement = l10n_util::GetStringUTF16(IDS_SHELF_STATE_ALWAYS_SHOWN);
       break;
-    case SHELF_AUTO_HIDE_ALWAYS_HIDDEN:
+    case ShelfAutoHideBehavior::kAlwaysHidden:
       announcement = l10n_util::GetStringUTF16(IDS_SHELF_STATE_ALWAYS_HIDDEN);
       break;
   }
@@ -2283,13 +2283,8 @@
   } else {
     // If there is no fade out animation, notify the parent view of the
     // changed size before bounds animations start.
-    if (chromeos::switches::ShouldShowScrollableShelf()) {
-      // Ensures that the invisble view is removed before animating to ideal
-      // bounds.
-      view.reset();
-
-      PreferredSizeChanged();
-    }
+    if (chromeos::switches::ShouldShowScrollableShelf())
+      HandleInvisibleViewRemovedInScrollableShelf(std::move(view));
 
     // We don't need to show a fade out animation for invisible |view|. When an
     // item is ripped out from the shelf, its |view| is already invisible.
@@ -2638,4 +2633,20 @@
          (last_visible_index_ != previous_last_visible_index);
 }
 
+void ShelfView::HandleInvisibleViewRemovedInScrollableShelf(
+    std::unique_ptr<views::View> view) {
+  DCHECK(chromeos::switches::ShouldShowScrollableShelf());
+  DCHECK(!view->GetVisible());
+
+  // Ensures that |view| is not used after destruction.
+  if (bounds_animator_->IsAnimating(view.get()))
+    bounds_animator_->StopAnimatingView(view.get());
+
+  // Remove |view| so that the visible index is updated before triggering
+  // PreferredSizeChanged().
+  view.reset();
+
+  PreferredSizeChanged();
+}
+
 }  // namespace ash
diff --git a/ash/shelf/shelf_view.h b/ash/shelf/shelf_view.h
index 4ab27582..5e0884812 100644
--- a/ash/shelf/shelf_view.h
+++ b/ash/shelf/shelf_view.h
@@ -567,6 +567,10 @@
   // Different from GetTitleForView, |view| here must be a child view.
   base::string16 GetTitleForChildView(const views::View* view) const;
 
+  // |view| is the unique pointer to the shelf icon to be removed.
+  void HandleInvisibleViewRemovedInScrollableShelf(
+      std::unique_ptr<views::View> view);
+
   // The model; owned by Launcher.
   ShelfModel* model_;
 
diff --git a/ash/shelf/shelf_view_unittest.cc b/ash/shelf/shelf_view_unittest.cc
index 1fdafb0..33191de 100644
--- a/ash/shelf/shelf_view_unittest.cc
+++ b/ash/shelf/shelf_view_unittest.cc
@@ -1329,10 +1329,10 @@
 // Confirm that shelf item bounds are correctly updated on shelf changes.
 TEST_F(ShelfViewTest, ShelfItemBoundsCheck) {
   VerifyShelfItemBoundsAreValid();
-  shelf_view_->shelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf_view_->shelf()->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   test_api_->RunMessageLoopUntilAnimationsDone();
   VerifyShelfItemBoundsAreValid();
-  shelf_view_->shelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER);
+  shelf_view_->shelf()->SetAutoHideBehavior(ShelfAutoHideBehavior::kNever);
   test_api_->RunMessageLoopUntilAnimationsDone();
   VerifyShelfItemBoundsAreValid();
 }
@@ -2426,7 +2426,7 @@
   Shelf* shelf = GetPrimaryShelf();
   std::unique_ptr<views::Widget> widget = CreateTestWidget();
   widget->Show();
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
   EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState());
 
diff --git a/ash/shelf/shelf_widget_unittest.cc b/ash/shelf/shelf_widget_unittest.cc
index d0fbc82..4c30f3c0 100644
--- a/ash/shelf/shelf_widget_unittest.cc
+++ b/ash/shelf/shelf_widget_unittest.cc
@@ -289,7 +289,7 @@
 
   // Now restore shelf alignment (bottom) and auto-hide (hidden) the shelf.
   shelf->SetAlignment(ShelfAlignment::kBottom);
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   shelf_layout_manager->LayoutShelf();
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf_layout_manager->visibility_state());
   EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf_layout_manager->auto_hide_state());
@@ -349,7 +349,7 @@
   }
 
   // Now auto-hide (hidden) the shelf.
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   shelf_layout_manager->LayoutShelf();
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf_layout_manager->visibility_state());
   EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf_layout_manager->auto_hide_state());
@@ -411,7 +411,7 @@
   // Ensure settings are correct before login.
   EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState());
   EXPECT_EQ(ShelfAlignment::kBottomLocked, shelf->alignment());
-  EXPECT_EQ(SHELF_AUTO_HIDE_ALWAYS_HIDDEN, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlwaysHidden, shelf->auto_hide_behavior());
   EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState());
 
   // Simulate login.
@@ -420,32 +420,32 @@
   // Ensure settings are correct after login.
   EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState());
   EXPECT_EQ(ShelfAlignment::kBottom, shelf->alignment());
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kNever, shelf->auto_hide_behavior());
   // "Hidden" is the default state when auto-hide is turned off.
   EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState());
 }
 
 TEST_F(ShelfWidgetAfterLoginTest, CreateAutoHideAlwaysShelf) {
   // The actual auto hide state is shown because there are no open windows.
-  TestShelf(ShelfAlignment::kBottom, SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS,
+  TestShelf(ShelfAlignment::kBottom, ShelfAutoHideBehavior::kAlways,
             SHELF_AUTO_HIDE, SHELF_AUTO_HIDE_SHOWN);
 }
 
 TEST_F(ShelfWidgetAfterLoginTest, CreateAutoHideNeverShelf) {
   // The auto hide state 'HIDDEN' is returned for any non-auto-hide behavior.
-  TestShelf(ShelfAlignment::kLeft, SHELF_AUTO_HIDE_BEHAVIOR_NEVER,
-            SHELF_VISIBLE, SHELF_AUTO_HIDE_HIDDEN);
+  TestShelf(ShelfAlignment::kLeft, ShelfAutoHideBehavior::kNever, SHELF_VISIBLE,
+            SHELF_AUTO_HIDE_HIDDEN);
 }
 
 TEST_F(ShelfWidgetAfterLoginTest, CreateAutoHideAlwaysHideShelf) {
   // The auto hide state 'HIDDEN' is returned for any non-auto-hide behavior.
-  TestShelf(ShelfAlignment::kRight, SHELF_AUTO_HIDE_ALWAYS_HIDDEN, SHELF_HIDDEN,
-            SHELF_AUTO_HIDE_HIDDEN);
+  TestShelf(ShelfAlignment::kRight, ShelfAutoHideBehavior::kAlwaysHidden,
+            SHELF_HIDDEN, SHELF_AUTO_HIDE_HIDDEN);
 }
 
 TEST_F(ShelfWidgetAfterLoginTest, CreateLockedShelf) {
   // The auto hide state 'HIDDEN' is returned for any non-auto-hide behavior.
-  TestShelf(ShelfAlignment::kBottomLocked, SHELF_AUTO_HIDE_BEHAVIOR_NEVER,
+  TestShelf(ShelfAlignment::kBottomLocked, ShelfAutoHideBehavior::kNever,
             SHELF_VISIBLE, SHELF_AUTO_HIDE_HIDDEN);
 }
 
diff --git a/ash/shell_unittest.cc b/ash/shell_unittest.cc
index f367133b..c4482f1 100644
--- a/ash/shell_unittest.cc
+++ b/ash/shell_unittest.cc
@@ -521,20 +521,20 @@
   wm::ActivateWindow(window.get());
 
   Shelf* shelf = GetPrimaryShelf();
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior());
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways, shelf->auto_hide_behavior());
 
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER);
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER, shelf->auto_hide_behavior());
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kNever);
+  EXPECT_EQ(ShelfAutoHideBehavior::kNever, shelf->auto_hide_behavior());
 
   window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED);
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kNever, shelf->auto_hide_behavior());
 
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior());
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways, shelf->auto_hide_behavior());
 
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER);
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_NEVER, shelf->auto_hide_behavior());
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kNever);
+  EXPECT_EQ(ShelfAutoHideBehavior::kNever, shelf->auto_hide_behavior());
 }
 
 // Tests that the cursor-filter is ahead of the drag-drop controller in the
diff --git a/ash/strings/ash_strings_ar.xtb b/ash/strings/ash_strings_ar.xtb
index c13545cf..9f245f58 100644
--- a/ash/strings/ash_strings_ar.xtb
+++ b/ash/strings/ash_strings_ar.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">إرسال</translation>
 <translation id="2658778018866295321">انقر واسحب</translation>
 <translation id="2700493154570097719">تعيين لوحة المفاتيح</translation>
+<translation id="2704781753052663061">‏الانضمام إلى شبكات Wi-Fi أخرى</translation>
 <translation id="2718395828230677721">الإضاءة الليلية</translation>
 <translation id="2727977024730340865">تمّ توصيل شاحن منخفض الطاقة. لذا قد لا تكون عملية شحن البطارية جديرة بالثقة.</translation>
 <translation id="2761704814324807722">علبة الحالة، والوقت <ph name="TIME" />، و<ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_az.xtb b/ash/strings/ash_strings_az.xtb
index 717da01..419fe11 100644
--- a/ash/strings/ash_strings_az.xtb
+++ b/ash/strings/ash_strings_az.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Təqdim edin</translation>
 <translation id="2658778018866295321">Klikləyin və çəkin</translation>
 <translation id="2700493154570097719">Klaviaturanı ayarlayın</translation>
+<translation id="2704781753052663061">Digər Wi-Fi şəbəkələrinə qoşulun</translation>
 <translation id="2718395828230677721">Gecə İşığı</translation>
 <translation id="2727977024730340865">Zəif şarjerə qoşulub. Ola bilər ki, enerji dolmasın.</translation>
 <translation id="2761704814324807722">Status sinisi, vaxt: <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_be.xtb b/ash/strings/ash_strings_be.xtb
index ec00598..4bf276c 100644
--- a/ash/strings/ash_strings_be.xtb
+++ b/ash/strings/ash_strings_be.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Адправіць</translation>
 <translation id="2658778018866295321">Націснуць і перацягнуць</translation>
 <translation id="2700493154570097719">Наладзьце клавіятуру</translation>
+<translation id="2704781753052663061">Падключыцца да іншых сетак Wi-Fi</translation>
 <translation id="2718395828230677721">Начны рэжым</translation>
 <translation id="2727977024730340865">Падключана зарадная прылада нізкай магутнасці. Зарадка акумулятара можа быць нестабільнай.</translation>
 <translation id="2761704814324807722">Панэль стану, час <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_bg.xtb b/ash/strings/ash_strings_bg.xtb
index 05bb159..a3f4ce2 100644
--- a/ash/strings/ash_strings_bg.xtb
+++ b/ash/strings/ash_strings_bg.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Изпращане</translation>
 <translation id="2658778018866295321">Кликване и преместване с плъзгане</translation>
 <translation id="2700493154570097719">Задайте клавиатура</translation>
+<translation id="2704781753052663061">Присъединяване към други Wi-Fi мрежи</translation>
 <translation id="2718395828230677721">Нощно осветление</translation>
 <translation id="2727977024730340865">Използва се зарядно устройство с малка мощност. Зареждането на батерията може да не е надеждно.</translation>
 <translation id="2761704814324807722">Област за състоянието, часът е <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_bn.xtb b/ash/strings/ash_strings_bn.xtb
index ed6931e..39ffa4ec 100644
--- a/ash/strings/ash_strings_bn.xtb
+++ b/ash/strings/ash_strings_bn.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">জমা দিন</translation>
 <translation id="2658778018866295321">ক্লিক করে ড্র্যাগ করুন</translation>
 <translation id="2700493154570097719">আপনার কীবোর্ড সেট করুন</translation>
+<translation id="2704781753052663061">অন্য ওয়াই-ফাই নেটওয়ার্কে যোগ দিন</translation>
 <translation id="2718395828230677721">নাইট লাইট</translation>
 <translation id="2727977024730340865">একটি নিম্ন শক্তির চার্জার প্লাগইন করা হয়েছে৷ বিশ্বস্ত ব্যাটারি চার্জ নাও হতে পারে৷</translation>
 <translation id="2761704814324807722">স্থিতি ট্রে, সময় <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_bs.xtb b/ash/strings/ash_strings_bs.xtb
index a81d8c6..1266621 100644
--- a/ash/strings/ash_strings_bs.xtb
+++ b/ash/strings/ash_strings_bs.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Pošalji</translation>
 <translation id="2658778018866295321">Kliknite i prevucite</translation>
 <translation id="2700493154570097719">Postavite tastaturu</translation>
+<translation id="2704781753052663061">Pridružite se drugim WiFi mrežama</translation>
 <translation id="2718395828230677721">Noćno svjetlo</translation>
 <translation id="2727977024730340865">Priključeno na niskonaponski punjač. Punjenje baterije može biti nepouzdano.</translation>
 <translation id="2761704814324807722">Statusna traka, vrijeme <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_cs.xtb b/ash/strings/ash_strings_cs.xtb
index 100ed35..6669d9d 100644
--- a/ash/strings/ash_strings_cs.xtb
+++ b/ash/strings/ash_strings_cs.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Odeslat</translation>
 <translation id="2658778018866295321">Kliknout a přetáhnout</translation>
 <translation id="2700493154570097719">Nastavit klávesnici</translation>
+<translation id="2704781753052663061">Připojit se k dalším sítím Wi-Fi</translation>
 <translation id="2718395828230677721">Noční režim</translation>
 <translation id="2727977024730340865">Byla připojena nabíječka s nízkým výkonem. Nabíjení baterie nemusí probíhat spolehlivě.</translation>
 <translation id="2761704814324807722">Systémový panel, čas <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_da.xtb b/ash/strings/ash_strings_da.xtb
index 841d4d0..d915bd2 100644
--- a/ash/strings/ash_strings_da.xtb
+++ b/ash/strings/ash_strings_da.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Indsend</translation>
 <translation id="2658778018866295321">Klik og træk</translation>
 <translation id="2700493154570097719">Angiv dit tastatur</translation>
+<translation id="2704781753052663061">Opret forbindelse til andre Wi-Fi-netværk</translation>
 <translation id="2718395828230677721">Nattelys</translation>
 <translation id="2727977024730340865">Tilsluttet en oplader med lav kraft. Batteriopladningen er muligvis ikke pålidelig.</translation>
 <translation id="2761704814324807722">Statusbakke, tid <ph name="TIME" />, <ph name="BATTERY" /></translation>
@@ -156,7 +157,7 @@
 <translation id="3009178788565917040">Output</translation>
 <translation id="3051128274746680507">Din administrerede brugerprofil fjernes snart. Log ind for at få flere oplysninger.</translation>
 <translation id="3055162170959710888">Du har brugt denne enhed i <ph name="USED_TIME" /> i dag</translation>
-<translation id="3077734595579995578">shift</translation>
+<translation id="3077734595579995578">Shift</translation>
 <translation id="3081696990447829002">Udvid menu</translation>
 <translation id="3087734570205094154">Bund</translation>
 <translation id="3105990244222795498"><ph name="DEVICE_NAME" /> (Bluetooth)</translation>
diff --git a/ash/strings/ash_strings_de.xtb b/ash/strings/ash_strings_de.xtb
index c86c42f..d7d3b2c 100644
--- a/ash/strings/ash_strings_de.xtb
+++ b/ash/strings/ash_strings_de.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Senden</translation>
 <translation id="2658778018866295321">Klicken und ziehen</translation>
 <translation id="2700493154570097719">Tastatur einrichten</translation>
+<translation id="2704781753052663061">Mit anderen WLANs verbinden</translation>
 <translation id="2718395828230677721">Nachtlicht</translation>
 <translation id="2727977024730340865">Das Gerät ist an ein Schwachstrom-Ladegerät angeschlossen. Möglicherweise kann der Akku nicht zuverlässig aufgeladen werden.</translation>
 <translation id="2761704814324807722">Statusleiste, Uhrzeit <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_es-419.xtb b/ash/strings/ash_strings_es-419.xtb
index ea20764c..2c8b803 100644
--- a/ash/strings/ash_strings_es-419.xtb
+++ b/ash/strings/ash_strings_es-419.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Enviar</translation>
 <translation id="2658778018866295321">Hacer clic y arrastrar</translation>
 <translation id="2700493154570097719">Establecer el teclado</translation>
+<translation id="2704781753052663061">Unirse a otras redes Wi-Fi</translation>
 <translation id="2718395828230677721">Luz nocturna</translation>
 <translation id="2727977024730340865">Conexión a un cargador de baja potencia. Es posible que la carga de la batería no sea confiable.</translation>
 <translation id="2761704814324807722">Bandeja de estado, hora <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_es.xtb b/ash/strings/ash_strings_es.xtb
index 2f5565a..394b84c 100644
--- a/ash/strings/ash_strings_es.xtb
+++ b/ash/strings/ash_strings_es.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Enviar</translation>
 <translation id="2658778018866295321">Hacer clic y arrastrar</translation>
 <translation id="2700493154570097719">Elegir el teclado</translation>
+<translation id="2704781753052663061">Conectarse a otras redes Wi‑Fi</translation>
 <translation id="2718395828230677721">Luz nocturna</translation>
 <translation id="2727977024730340865">Conectado a un cargador de baja potencia. Es posible que la carga de la batería no sea fiable.</translation>
 <translation id="2761704814324807722">Bandeja de estado, hora <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_et.xtb b/ash/strings/ash_strings_et.xtb
index b0a1a9b..82d62cf 100644
--- a/ash/strings/ash_strings_et.xtb
+++ b/ash/strings/ash_strings_et.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Esita</translation>
 <translation id="2658778018866295321">Klõpsamine ja lohistamine</translation>
 <translation id="2700493154570097719">Valige klaviatuur</translation>
+<translation id="2704781753052663061">Muude WiFi-võrkudega liitumine</translation>
 <translation id="2718395828230677721">Öövalgus</translation>
 <translation id="2727977024730340865">Ühendatud väikese energiakuluga laadijaga. Aku laadimine võib olla ebastabiilne.</translation>
 <translation id="2761704814324807722">Olekusalv, kellaaeg <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_fa.xtb b/ash/strings/ash_strings_fa.xtb
index 6c3521d..d545bee 100644
--- a/ash/strings/ash_strings_fa.xtb
+++ b/ash/strings/ash_strings_fa.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">ارائه</translation>
 <translation id="2658778018866295321">کلیک کنید و بکشید</translation>
 <translation id="2700493154570097719">تنظیم صفحه‌کلید</translation>
+<translation id="2704781753052663061">‏افزودن دیگر شبکه‌های Wi-Fi</translation>
 <translation id="2718395828230677721">نور شب</translation>
 <translation id="2727977024730340865">باتری به شارژر برق ضعیف متصل است. شارژ باتری ممکن است قابل اطمینان نباشد.</translation>
 <translation id="2761704814324807722">سینی وضعیت، زمان <ph name="TIME" />، ‏<ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_fi.xtb b/ash/strings/ash_strings_fi.xtb
index 17bea46..76f79a9 100644
--- a/ash/strings/ash_strings_fi.xtb
+++ b/ash/strings/ash_strings_fi.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Lähetä</translation>
 <translation id="2658778018866295321">Klikkaa ja vedä</translation>
 <translation id="2700493154570097719">Määritä näppäimistö</translation>
+<translation id="2704781753052663061">Liity muihin Wi-Fi-verkkoihin</translation>
 <translation id="2718395828230677721">Yövalo</translation>
 <translation id="2727977024730340865">Pienitehoinen laturi kytketty. Akku ei ehkä lataudu luotettavasti.</translation>
 <translation id="2761704814324807722">Tila-alue, aika <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_fil.xtb b/ash/strings/ash_strings_fil.xtb
index 3cfc68d..ecf56a4b 100644
--- a/ash/strings/ash_strings_fil.xtb
+++ b/ash/strings/ash_strings_fil.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Isumite</translation>
 <translation id="2658778018866295321">I-click at i-drag</translation>
 <translation id="2700493154570097719">Itakda ang iyong keyboard</translation>
+<translation id="2704781753052663061">Sumali sa iba pang Wi-Fi network</translation>
 <translation id="2718395828230677721">Night Light</translation>
 <translation id="2727977024730340865">Naka-saksak sa isang low-power charger. Maaaring hindi maging tiyak ang pag-charge ng baterya.</translation>
 <translation id="2761704814324807722">Status tray, oras <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_fr-CA.xtb b/ash/strings/ash_strings_fr-CA.xtb
index a7d9f01..96b835b 100644
--- a/ash/strings/ash_strings_fr-CA.xtb
+++ b/ash/strings/ash_strings_fr-CA.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Envoyer</translation>
 <translation id="2658778018866295321">Cliquez et faites glisser</translation>
 <translation id="2700493154570097719">Définir votre clavier</translation>
+<translation id="2704781753052663061">Se connecter à d'autres réseaux Wi-Fi</translation>
 <translation id="2718395828230677721">Éclairage nocturne</translation>
 <translation id="2727977024730340865">L'appareil est branché à un chargeur de faible puissance. Il se peut que la recharge de la batterie ne soit pas fiable.</translation>
 <translation id="2761704814324807722">Barre d'état – Heure : <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_fr.xtb b/ash/strings/ash_strings_fr.xtb
index 89d652fc..d2241b6 100644
--- a/ash/strings/ash_strings_fr.xtb
+++ b/ash/strings/ash_strings_fr.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Valider</translation>
 <translation id="2658778018866295321">Cliquer et faire glisser</translation>
 <translation id="2700493154570097719">Définir votre clavier</translation>
+<translation id="2704781753052663061">Rejoindre d'autres réseaux Wi-Fi</translation>
 <translation id="2718395828230677721">Éclairage nocturne</translation>
 <translation id="2727977024730340865">L'appareil est branché à un chargeur de faible puissance. Il se peut que la charge ne soit pas fiable.</translation>
 <translation id="2761704814324807722">Barre d'état – Heure : <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_gl.xtb b/ash/strings/ash_strings_gl.xtb
index 81c9fd7..943ea98f 100644
--- a/ash/strings/ash_strings_gl.xtb
+++ b/ash/strings/ash_strings_gl.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Enviar</translation>
 <translation id="2658778018866295321">Facer clic e arrastrar</translation>
 <translation id="2700493154570097719">Definir teclado</translation>
+<translation id="2704781753052663061">Unirse a outras redes wifi</translation>
 <translation id="2718395828230677721">Luz nocturna</translation>
 <translation id="2727977024730340865">Conectado a un cargador de baixa potencia. É posible que a carga da batería non sexa fiable.</translation>
 <translation id="2761704814324807722">Bandexa de estado, hora <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_gu.xtb b/ash/strings/ash_strings_gu.xtb
index 9a35a1cf..320e1572 100644
--- a/ash/strings/ash_strings_gu.xtb
+++ b/ash/strings/ash_strings_gu.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">સબમિટ કરો</translation>
 <translation id="2658778018866295321">ક્લિક કરો અને ખેંચો</translation>
 <translation id="2700493154570097719">તમારું કીબોર્ડ સેટ કરો</translation>
+<translation id="2704781753052663061">બીજા વાઇ-ફાઇ નેટવર્ક સાથે જોડાઓ</translation>
 <translation id="2718395828230677721">રાત્રિ પ્રકાશ</translation>
 <translation id="2727977024730340865">નિમ્ન-પાવર ચાર્જરમાં પ્લગ કરેલું છે. બૅટરી ચાર્જિંગ વિશ્વસનીય હશે નહીં.</translation>
 <translation id="2761704814324807722">સ્થિતિ ટ્રે, સમય <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_hr.xtb b/ash/strings/ash_strings_hr.xtb
index f15a43f..36d514b 100644
--- a/ash/strings/ash_strings_hr.xtb
+++ b/ash/strings/ash_strings_hr.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Pošalji</translation>
 <translation id="2658778018866295321">Klikanje i povlačenje</translation>
 <translation id="2700493154570097719">Postavite tipkovnicu</translation>
+<translation id="2704781753052663061">Pridružite se drugim Wi-Fi mrežama</translation>
 <translation id="2718395828230677721">Noćno svjetlo</translation>
 <translation id="2727977024730340865">Uređaj je priključen na punjač male snage. Punjenje baterije možda nije pouzdano.</translation>
 <translation id="2761704814324807722">Traka statusa, vrijeme <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_hu.xtb b/ash/strings/ash_strings_hu.xtb
index d0c6601..5bb47a0 100644
--- a/ash/strings/ash_strings_hu.xtb
+++ b/ash/strings/ash_strings_hu.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Elküldés</translation>
 <translation id="2658778018866295321">Kattintás és húzás</translation>
 <translation id="2700493154570097719">Billentyűzetet beállítása</translation>
+<translation id="2704781753052663061">Csatlakozás másik Wi-Fi-hálózatokhoz</translation>
 <translation id="2718395828230677721">Éjszakai fény</translation>
 <translation id="2727977024730340865">Kis teljesítményű töltőt csatlakoztatott. Az akkumulátor töltése nem megbízható.</translation>
 <translation id="2761704814324807722">Állapotterület, idő: <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_hy.xtb b/ash/strings/ash_strings_hy.xtb
index e01aad97..772e43a 100644
--- a/ash/strings/ash_strings_hy.xtb
+++ b/ash/strings/ash_strings_hy.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Ուղարկել</translation>
 <translation id="2658778018866295321">Սեղմել և քաշել</translation>
 <translation id="2700493154570097719">Ընտրեք ստեղնաշարը</translation>
+<translation id="2704781753052663061">Միացեք այլ Wi-Fi ցանցերի</translation>
 <translation id="2718395828230677721">Գիշերային ռեժիմ</translation>
 <translation id="2727977024730340865">Միացված է թույլ լիցքավորիչի: Մարտկոցի լիցքավորումը կարող է հուսալի չլինել:</translation>
 <translation id="2761704814324807722">Կարգավիճակի գոտի, ժամանակը <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_id.xtb b/ash/strings/ash_strings_id.xtb
index 21f9e9c..5c1c013 100644
--- a/ash/strings/ash_strings_id.xtb
+++ b/ash/strings/ash_strings_id.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Kirim</translation>
 <translation id="2658778018866295321">Klik dan tarik</translation>
 <translation id="2700493154570097719">Setel keyboard Anda</translation>
+<translation id="2704781753052663061">Bergabung dengan jaringan Wi-Fi lain</translation>
 <translation id="2718395828230677721">Cahaya Malam</translation>
 <translation id="2727977024730340865">Dipasang ke pengisi daya rendah. Pengisian daya baterai mungkin tidak dapat diandalkan.</translation>
 <translation id="2761704814324807722">Baki status, waktu <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_is.xtb b/ash/strings/ash_strings_is.xtb
index 41a6329..c0c4a5c 100644
--- a/ash/strings/ash_strings_is.xtb
+++ b/ash/strings/ash_strings_is.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Senda</translation>
 <translation id="2658778018866295321">Smella og draga</translation>
 <translation id="2700493154570097719">Veldu lyklaborð</translation>
+<translation id="2704781753052663061">Tengjast við önnur Wi-Fi net</translation>
 <translation id="2718395828230677721">Næturljós</translation>
 <translation id="2727977024730340865">Tengt við afllítið hleðslutæki. Hleðsla rafhlöðunnar kann að vera brigðul.</translation>
 <translation id="2761704814324807722">Stöðubakki, klukkan er <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_iw.xtb b/ash/strings/ash_strings_iw.xtb
index e4c2b3d7..a4da4afa 100644
--- a/ash/strings/ash_strings_iw.xtb
+++ b/ash/strings/ash_strings_iw.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">שלח</translation>
 <translation id="2658778018866295321">לחיצה וגרירה</translation>
 <translation id="2700493154570097719">בחירת מקלדת</translation>
+<translation id="2704781753052663061">‏הצטרפות לרשתות Wi-Fi רשתות</translation>
 <translation id="2718395828230677721">תאורת לילה</translation>
 <translation id="2727977024730340865">מחובר למטען בעל מתח נמוך. ייתכן שטעינת הסוללה לא תהיה אמינה.</translation>
 <translation id="2761704814324807722">מגש מערכת, שעה <ph name="TIME" />‏, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_ja.xtb b/ash/strings/ash_strings_ja.xtb
index c46418c..e484edfc 100644
--- a/ash/strings/ash_strings_ja.xtb
+++ b/ash/strings/ash_strings_ja.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">送信</translation>
 <translation id="2658778018866295321">クリックしてドラッグ</translation>
 <translation id="2700493154570097719">キーボードを設定</translation>
+<translation id="2704781753052663061">他の Wi-Fi ネットワークに接続</translation>
 <translation id="2718395828230677721">夜間モード</translation>
 <translation id="2727977024730340865">低電力の充電器に接続しています。バッテリーが充電されない可能性があります。</translation>
 <translation id="2761704814324807722">ステータス トレイ、時刻 <ph name="TIME" />、<ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_ka.xtb b/ash/strings/ash_strings_ka.xtb
index 9092ffa2e..25d8956 100644
--- a/ash/strings/ash_strings_ka.xtb
+++ b/ash/strings/ash_strings_ka.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">გაგზავნა</translation>
 <translation id="2658778018866295321">დაწკაპუნება და ჩავლებით გადატანა</translation>
 <translation id="2700493154570097719">დააყენეთ კლავიატურა</translation>
+<translation id="2704781753052663061">სხვა Wi-Fi ქსელებში გაწევრიანება</translation>
 <translation id="2718395828230677721">ღამის განათება</translation>
 <translation id="2727977024730340865">შეერთებულია დაბალი სიმძლავრის დამტენთან. ბატარეის დატენვა შეიძლება არ იყოს სანდო.</translation>
 <translation id="2761704814324807722">სტატუსი უჯრა, დრო <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_kk.xtb b/ash/strings/ash_strings_kk.xtb
index 75359b68..803d9ed1 100644
--- a/ash/strings/ash_strings_kk.xtb
+++ b/ash/strings/ash_strings_kk.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Жіберу</translation>
 <translation id="2658778018866295321">Басу және сүйреу</translation>
 <translation id="2700493154570097719">Пернетақтаны орнатыңыз</translation>
+<translation id="2704781753052663061">Басқа Wi-Fi желілеріне қосылу</translation>
 <translation id="2718395828230677721">Түнгі жарық</translation>
 <translation id="2727977024730340865">Төмен қуатты зарядтағышқа жалғанған. Батареяны зарядтау кезінде қиындықтар болуы мүмкін.</translation>
 <translation id="2761704814324807722">Күй науасы, уақыт: <ph name="TIME" /> , <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_kn.xtb b/ash/strings/ash_strings_kn.xtb
index 697171df..badd8d1 100644
--- a/ash/strings/ash_strings_kn.xtb
+++ b/ash/strings/ash_strings_kn.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">ಸಲ್ಲಿಸು</translation>
 <translation id="2658778018866295321">ಕ್ಲಿಕ್ ಮಾಡಿ ಮತ್ತು ಡ್ರ್ಯಾಗ್ ಮಾಡಿ</translation>
 <translation id="2700493154570097719">ನಿಮ್ಮ ಕೀಬೋರ್ಡ್ ಅನ್ನು ಹೊಂದಿಸಿ</translation>
+<translation id="2704781753052663061">ಇತರ ವೈ-ಫೈ ನೆಟ್‌ವರ್ಕ್‌ಗಳಿಗೆ ಸೇರಿ</translation>
 <translation id="2718395828230677721">ನೈಟ್ ಲೈಟ್</translation>
 <translation id="2727977024730340865">ಕಡಿಮೆ ವಿದ್ಯುತ್ ಚಾರ್ಜರ್‌ಗೆ ಪ್ಲಗ್ ಮಾಡಲಾಗಿದೆ. ಬ್ಯಾಟರಿ ಚಾರ್ಜಿಂಗ್ ವಿಶ್ವಾಸಾರ್ಹವಾಗಿಲ್ಲದಿರಬಹುದು.</translation>
 <translation id="2761704814324807722">ಸ್ಥಿತಿ ಟ್ರೇ, ಸಮಯ <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_ko.xtb b/ash/strings/ash_strings_ko.xtb
index 8ddd93e..6eaf79fe7 100644
--- a/ash/strings/ash_strings_ko.xtb
+++ b/ash/strings/ash_strings_ko.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">제출</translation>
 <translation id="2658778018866295321">클릭하여 드래그</translation>
 <translation id="2700493154570097719">키보드 설정</translation>
+<translation id="2704781753052663061">다른 Wi-Fi 네트워크에 연결</translation>
 <translation id="2718395828230677721">야간 조명</translation>
 <translation id="2727977024730340865">저출력 충전기에 연결되었습니다. 배터리 충전 상태가 불안정합니다.</translation>
 <translation id="2761704814324807722">상태 표시줄, 시간 <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_ky.xtb b/ash/strings/ash_strings_ky.xtb
index 8234c62..d31a814 100644
--- a/ash/strings/ash_strings_ky.xtb
+++ b/ash/strings/ash_strings_ky.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Тапшыруу</translation>
 <translation id="2658778018866295321">Чыкылдатып, сүйрөө</translation>
 <translation id="2700493154570097719">Баскычтобуңузду тандаңыз</translation>
+<translation id="2704781753052663061">Башка Wi-Fi тармактарына кошулуу</translation>
 <translation id="2718395828230677721">Түнкү режим</translation>
 <translation id="2727977024730340865">Кубаттуулугу төмөн кубаттагычка сайылды. Батареяны кубаттоо аракети ишенимдүү эмес.</translation>
 <translation id="2761704814324807722">Абал жаймасы, убакыты <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_lo.xtb b/ash/strings/ash_strings_lo.xtb
index dd6cb62..3cb1ec0e 100644
--- a/ash/strings/ash_strings_lo.xtb
+++ b/ash/strings/ash_strings_lo.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">ສົ່ງ</translation>
 <translation id="2658778018866295321">ຄລິກ ແລ້ວລາກ</translation>
 <translation id="2700493154570097719">ຕັ້ງຄ່າແປ້ນພິມຂອງທ່ານ</translation>
+<translation id="2704781753052663061">ເຂົ້າຮ່ວມເຄືອຂ່າຍ Wi-Fi ອື່ນ</translation>
 <translation id="2718395828230677721">ແສງກາງຄືນ</translation>
 <translation id="2727977024730340865">ສຽບໃສ່ເຄື່ອງສາກໄຟຕໍ່າແລ້ວ. ການສາກແບັດເຕີຣີອາດຈະບໍ່ເຊື່ອຖືໄດ້.</translation>
 <translation id="2761704814324807722">ຖາດສະຖານະ, ເວລາ <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_lt.xtb b/ash/strings/ash_strings_lt.xtb
index 0ce2bcd..8345e56c0 100644
--- a/ash/strings/ash_strings_lt.xtb
+++ b/ash/strings/ash_strings_lt.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Pateikti</translation>
 <translation id="2658778018866295321">Spustelėti ir vilkti</translation>
 <translation id="2700493154570097719">Klaviatūros nustatymas</translation>
+<translation id="2704781753052663061">Prisijungti prie kitų „Wi-Fi“ tinklų</translation>
 <translation id="2718395828230677721">Nakties šviesa</translation>
 <translation id="2727977024730340865">Prijungtas mažos galios įkroviklis. Akumuliatoriaus įkrovimas gali būti nepatikimas.</translation>
 <translation id="2761704814324807722">Būsenos dėklas, laikas <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_lv.xtb b/ash/strings/ash_strings_lv.xtb
index 012d4e43..06e94b1 100644
--- a/ash/strings/ash_strings_lv.xtb
+++ b/ash/strings/ash_strings_lv.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Iesniegt</translation>
 <translation id="2658778018866295321">Noklikšķiniet un velciet</translation>
 <translation id="2700493154570097719">Iestatiet savu tastatūru</translation>
+<translation id="2704781753052663061">Pievienoties citiem Wi-Fi tīkliem</translation>
 <translation id="2718395828230677721">Nakts režīms</translation>
 <translation id="2727977024730340865">Pievienots lādētājs ar mazu strāvas padevi. Akumulatora uzlāde var nebūt uzticama.</translation>
 <translation id="2761704814324807722">Statusa josla, laiks: <ph name="TIME" />. <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_mk.xtb b/ash/strings/ash_strings_mk.xtb
index 32a0dec..2c744d0 100644
--- a/ash/strings/ash_strings_mk.xtb
+++ b/ash/strings/ash_strings_mk.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Поднеси</translation>
 <translation id="2658778018866295321">Кликни и повлечи</translation>
 <translation id="2700493154570097719">Поставете ја вашата тастатура</translation>
+<translation id="2704781753052663061">Поврзете се на други Wi-Fi мрежи</translation>
 <translation id="2718395828230677721">Ноќно светло</translation>
 <translation id="2727977024730340865">Приклучен на полнач со мало напојување. Полнењето на батеријата може да не е веродостојно.</translation>
 <translation id="2761704814324807722">Статусна фиока, време <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_mn.xtb b/ash/strings/ash_strings_mn.xtb
index 69f43f0..a56932e 100644
--- a/ash/strings/ash_strings_mn.xtb
+++ b/ash/strings/ash_strings_mn.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Илгээх</translation>
 <translation id="2658778018866295321">Товшоод чирэх</translation>
 <translation id="2700493154570097719">Гараа тохируулах</translation>
+<translation id="2704781753052663061">Бусад Wi-Fi сүлжээнд нэгдэх</translation>
 <translation id="2718395828230677721">Шөнийн гэрэл</translation>
 <translation id="2727977024730340865">Бага энергитэй цэнэглэгч залгасан байна. Тэжээлийг цэнэглэхгүй байж болох юм.</translation>
 <translation id="2761704814324807722">Статусын мэдээллийн хэсэг, цаг <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_ms.xtb b/ash/strings/ash_strings_ms.xtb
index af22a3cb..ef076ea 100644
--- a/ash/strings/ash_strings_ms.xtb
+++ b/ash/strings/ash_strings_ms.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Serah</translation>
 <translation id="2658778018866295321">Klik dan seret</translation>
 <translation id="2700493154570097719">Tetapkan papan kekunci anda</translation>
+<translation id="2704781753052663061">Sertai rangkaian Wi-Fi yang lain</translation>
 <translation id="2718395828230677721">Cahaya Malam</translation>
 <translation id="2727977024730340865">Dipalamkan pada pengecas berkuasa rendah. Pengecasan bateri mungkin tidak boleh diharapkan.</translation>
 <translation id="2761704814324807722">Dulang status, masa <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_my.xtb b/ash/strings/ash_strings_my.xtb
index bd8b3b4..0406a98 100644
--- a/ash/strings/ash_strings_my.xtb
+++ b/ash/strings/ash_strings_my.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">ပေးပို့ရန်</translation>
 <translation id="2658778018866295321">နှိပ်ပြီး ဖိဆွဲပါ</translation>
 <translation id="2700493154570097719">သင်၏ ကီးဘုတ်ကို သတ်မှတ်ပါ</translation>
+<translation id="2704781753052663061">အခြား Wi-Fi ကွန်ရက်များသို့ ချိတ်ဆက်ရန်</translation>
 <translation id="2718395828230677721">ညအလင်းရောင်</translation>
 <translation id="2727977024730340865">ပါဝါနည်းသည့် အားသွင်းကိရိယာသို့ ချိတ်ဆက်ထားသည်။ ဘတ်ထရီအားသွင်းခြင်း အားကိုး၍ရမည် မဟုတ်ပါ။</translation>
 <translation id="2761704814324807722">အ​ခြေအနေပြ ဗန်း၊ အချိန် <ph name="TIME" />၊ <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_ne.xtb b/ash/strings/ash_strings_ne.xtb
index d5dc118..956b5984 100644
--- a/ash/strings/ash_strings_ne.xtb
+++ b/ash/strings/ash_strings_ne.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">पेश गर्नुहोस्</translation>
 <translation id="2658778018866295321">क्लिक गरेर ड्र्याग गर्नुहोस्</translation>
 <translation id="2700493154570097719">आफ्नो किबोर्ड सेट गर्नुहोस्‌</translation>
+<translation id="2704781753052663061">अन्य Wi-Fi नेटवर्कहरूमा सामेल हुनुहोस्</translation>
 <translation id="2718395828230677721">रात्रि प्रकाश</translation>
 <translation id="2727977024730340865">कम शक्ति भएको चार्जरमा प्लग इन गरिएको छ। ब्याट्री चार्जिङ भरपर्दो नहुन सक्छ।</translation>
 <translation id="2761704814324807722">स्थिति ट्रे, समय <ph name="TIME" /> , <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_no.xtb b/ash/strings/ash_strings_no.xtb
index bee6f75..679f466 100644
--- a/ash/strings/ash_strings_no.xtb
+++ b/ash/strings/ash_strings_no.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Send</translation>
 <translation id="2658778018866295321">Klikk og dra</translation>
 <translation id="2700493154570097719">Velg tastatur</translation>
+<translation id="2704781753052663061">Koble til andre Wi-Fi-nettverk</translation>
 <translation id="2718395828230677721">Nattlys</translation>
 <translation id="2727977024730340865">Tilkoblet laveffektslader. Batteriladingen kan være upålitelig.</translation>
 <translation id="2761704814324807722">Statusfelt, klokken <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_or.xtb b/ash/strings/ash_strings_or.xtb
index ac6c51a7..a3dac91 100644
--- a/ash/strings/ash_strings_or.xtb
+++ b/ash/strings/ash_strings_or.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">ଉପସ୍ଥାପନ</translation>
 <translation id="2658778018866295321">କ୍ଲିକ୍ କରି ଡ୍ରାଗ୍ କରନ୍ତୁ</translation>
 <translation id="2700493154570097719">ନିଜର କୀ'ବୋର୍ଡକୁ ସେଟ୍ କରନ୍ତୁ</translation>
+<translation id="2704781753052663061">ଅନ୍ୟ ୱାଇ-ଫାଇ ନେଟ୍‍ୱାର୍କଗୁଡ଼ିକୁ ଯୋଗ କରନ୍ତୁ</translation>
 <translation id="2718395828230677721">ରାତି ଆଲୋକ</translation>
 <translation id="2727977024730340865">କମ୍-ପାୱର୍‍ଯୁକ୍ତ ଚାର୍ଜର୍। ବ୍ୟାଟେରୀ ଚାର୍ଜିଂ ନିର୍ଭରଯୋଗ୍ୟ ହୋଇନପାରେ।</translation>
 <translation id="2761704814324807722">ସ୍ଥିତି ଟ୍ରେ, ସମୟ <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_pl.xtb b/ash/strings/ash_strings_pl.xtb
index 04dbb00..1a6c2d6 100644
--- a/ash/strings/ash_strings_pl.xtb
+++ b/ash/strings/ash_strings_pl.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Prześlij</translation>
 <translation id="2658778018866295321">Kliknij i przeciągnij</translation>
 <translation id="2700493154570097719">Ustaw klawiaturę</translation>
+<translation id="2704781753052663061">Połącz z innymi sieciami Wi-Fi</translation>
 <translation id="2718395828230677721">Podświetlenie nocne</translation>
 <translation id="2727977024730340865">Podłączono ładowarkę o małej mocy. Ładowanie baterii może być nieprawidłowe.</translation>
 <translation id="2761704814324807722">Pasek stanu, godzina <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_pt-BR.xtb b/ash/strings/ash_strings_pt-BR.xtb
index fb81671..e8cba10 100644
--- a/ash/strings/ash_strings_pt-BR.xtb
+++ b/ash/strings/ash_strings_pt-BR.xtb
@@ -91,7 +91,7 @@
 <translation id="209965399369889474">Sem conexão com a rede</translation>
 <translation id="2126242104232412123">Nova área</translation>
 <translation id="2127372758936585790">Carregador de baixa potência</translation>
-<translation id="2135456203358955318">Lupa ancorada</translation>
+<translation id="2135456203358955318">Lupa em área fixa</translation>
 <translation id="2144487987174258011">Reinicie para atualizar o Adobe Flash Player</translation>
 <translation id="2148902151539191989">VOLTAR</translation>
 <translation id="2208323208084708176">Modo de área de trabalho unificada.</translation>
@@ -123,7 +123,7 @@
 <translation id="2517825809102302935">Desativar esta noite</translation>
 <translation id="2542089167727451762">Toque na imagem do seu perfil</translation>
 <translation id="255671100581129685">O Google Assistente não está disponível para uma sessão pública.</translation>
-<translation id="256712445991462162">a lupa ancorada</translation>
+<translation id="256712445991462162">a lupa em área fixa</translation>
 <translation id="2575685495496069081">A opção de login múltiplo foi desativada</translation>
 <translation id="2582112259361606227">Reiniciar para atualizar</translation>
 <translation id="2617342710774726426">O chip está bloqueado</translation>
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Enviar</translation>
 <translation id="2658778018866295321">Clicar e arrastar</translation>
 <translation id="2700493154570097719">Configurar teclado</translation>
+<translation id="2704781753052663061">Conectar-se a outras redes Wi-Fi</translation>
 <translation id="2718395828230677721">Modo noturno</translation>
 <translation id="2727977024730340865">Conectado a um carregador de baixa potência. O carregamento da bateria pode não ser confiável.</translation>
 <translation id="2761704814324807722">Bandeja de status, tempo <ph name="TIME" />, <ph name="BATTERY" /></translation>
@@ -143,7 +144,7 @@
 <translation id="2872961005593481000">Desligar</translation>
 <translation id="2878884018241093801">Nenhum item recente</translation>
 <translation id="2903844815300039659">Conectado a <ph name="NAME" />, <ph name="STRENGTH" /></translation>
-<translation id="2942350706960889382">Lupa ancorada</translation>
+<translation id="2942350706960889382">Lupa em área fixa</translation>
 <translation id="2942516765047364088">Posição da estante</translation>
 <translation id="2946119680249604491">Adicionar conexão</translation>
 <translation id="2961963223658824723">Algo deu errado. Tente novamente em alguns segundos.</translation>
@@ -151,7 +152,7 @@
 <translation id="2970920913501714344">instalar apps, extensões e temas;</translation>
 <translation id="2977598380246111477">Próximo número</translation>
 <translation id="2995447421581609334">Mostrar dispositivos de transmissão.</translation>
-<translation id="2996462380875591307">Lupa ancorada ativada. Pressione Ctrl+Pesquisa+D novamente para desativá-la.</translation>
+<translation id="2996462380875591307">Lupa em área fixa ativada. Pressione Ctrl+Pesquisa+D novamente para desativá-la.</translation>
 <translation id="3000461861112256445">Áudio mono</translation>
 <translation id="3009178788565917040">Saída</translation>
 <translation id="3051128274746680507">Seu perfil de usuário supervisionado será removido em breve. Faça login para saber mais.</translation>
@@ -253,7 +254,7 @@
 <translation id="4378551569595875038">Conectando...</translation>
 <translation id="4379531060876907730">Estas são suas ferramentas da stylus</translation>
 <translation id="4383956581743965695">-<ph name="TIME_SINCE_EXPIRATION" /></translation>
-<translation id="4389184120735010762">Você pressionou o atalho de teclado para a lupa ancorada. Gostaria de ativá-la?</translation>
+<translation id="4389184120735010762">Você pressionou o atalho de teclado para a lupa em área fixa. Gostaria de ativá-la?</translation>
 <translation id="4421231901400348175">Compartilhando o controle da sua tela com <ph name="HELPER_NAME" /> via Assistência remota.</translation>
 <translation id="4430019312045809116">Volume</translation>
 <translation id="4450893287417543264">Não mostrar novamente</translation>
diff --git a/ash/strings/ash_strings_pt-PT.xtb b/ash/strings/ash_strings_pt-PT.xtb
index 9d5a2254..6a5979f 100644
--- a/ash/strings/ash_strings_pt-PT.xtb
+++ b/ash/strings/ash_strings_pt-PT.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Submeter</translation>
 <translation id="2658778018866295321">Clique e arraste</translation>
 <translation id="2700493154570097719">Definir o teclado</translation>
+<translation id="2704781753052663061">Estabelecer ligação a outras redes Wi-Fi</translation>
 <translation id="2718395828230677721">Luz noturna</translation>
 <translation id="2727977024730340865">Ligado a um carregador de baixo consumo. O carregamento da bateria pode não ser fiável.</translation>
 <translation id="2761704814324807722">Tabuleiro do estado, hora <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_ro.xtb b/ash/strings/ash_strings_ro.xtb
index 3608eda..26a42dd8 100644
--- a/ash/strings/ash_strings_ro.xtb
+++ b/ash/strings/ash_strings_ro.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Trimite</translation>
 <translation id="2658778018866295321">Dă clic și trage</translation>
 <translation id="2700493154570097719">Setează tastatura</translation>
+<translation id="2704781753052663061">Alătură-te altor rețele Wi-Fi</translation>
 <translation id="2718395828230677721">Lumină de noapte</translation>
 <translation id="2727977024730340865">V-ați conectat la un încărcător de putere joasă. Încărcarea bateriei poate fi nesigură.</translation>
 <translation id="2761704814324807722">Bară de stare, durată <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_ru.xtb b/ash/strings/ash_strings_ru.xtb
index cec35e2..fb30532 100644
--- a/ash/strings/ash_strings_ru.xtb
+++ b/ash/strings/ash_strings_ru.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Отправить</translation>
 <translation id="2658778018866295321">Перетаскивание</translation>
 <translation id="2700493154570097719">Выберите раскладку</translation>
+<translation id="2704781753052663061">Подключиться к другим сетям Wi-Fi</translation>
 <translation id="2718395828230677721">Ночной режим</translation>
 <translation id="2727977024730340865">Подключено маломощное зарядное устройство. Возможны проблемы при зарядке.</translation>
 <translation id="2761704814324807722">Строка состояния, время <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_sl.xtb b/ash/strings/ash_strings_sl.xtb
index 783724d..c3b3b26 100644
--- a/ash/strings/ash_strings_sl.xtb
+++ b/ash/strings/ash_strings_sl.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Pošlji</translation>
 <translation id="2658778018866295321">Klikanje in vlečenje</translation>
 <translation id="2700493154570097719">Nastavitev tipkovnice</translation>
+<translation id="2704781753052663061">Pridružitev drugih omrežij Wi-Fi</translation>
 <translation id="2718395828230677721">Nočna svetloba</translation>
 <translation id="2727977024730340865">Priključen je nizkoenergijski polnilnik. Polnjenje akumulatorja morda ne bo zanesljivo.</translation>
 <translation id="2761704814324807722">Vrstica stanja, čas: <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_sq.xtb b/ash/strings/ash_strings_sq.xtb
index d26ecbf..f6e1c05 100644
--- a/ash/strings/ash_strings_sq.xtb
+++ b/ash/strings/ash_strings_sq.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Dërgoje</translation>
 <translation id="2658778018866295321">Kliko dhe zvarrit</translation>
 <translation id="2700493154570097719">Vendos tastierën</translation>
+<translation id="2704781753052663061">Bashkohu me rrjete të tjera Wi-Fi</translation>
 <translation id="2718395828230677721">Drita e natës</translation>
 <translation id="2727977024730340865">E lidhur me një karikues me fuqi të ulët. Ngarkimi i baterisë mund të mos jetë i sigurt.</translation>
 <translation id="2761704814324807722">Kutia e statusit, koha <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_sr.xtb b/ash/strings/ash_strings_sr.xtb
index 8d0d7553..b855808 100644
--- a/ash/strings/ash_strings_sr.xtb
+++ b/ash/strings/ash_strings_sr.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Пошаљи</translation>
 <translation id="2658778018866295321">Кликните и превуците</translation>
 <translation id="2700493154570097719">Подесите тастатуру</translation>
+<translation id="2704781753052663061">Придружите се другим Wi-Fi мрежама</translation>
 <translation id="2718395828230677721">Ноћно светло</translation>
 <translation id="2727977024730340865">Уређај је укључен у пуњач мале снаге. Пуњење батерије можда неће бити поуздано.</translation>
 <translation id="2761704814324807722">Статусна трака, време <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_sv.xtb b/ash/strings/ash_strings_sv.xtb
index 376c2c62..007ef0d 100644
--- a/ash/strings/ash_strings_sv.xtb
+++ b/ash/strings/ash_strings_sv.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Skicka</translation>
 <translation id="2658778018866295321">Klicka och dra</translation>
 <translation id="2700493154570097719">Ställ in tangentbord</translation>
+<translation id="2704781753052663061">Anslut till andra Wi-Fi-nätverk</translation>
 <translation id="2718395828230677721">Nattljus</translation>
 <translation id="2727977024730340865">Ansluten till en laddare med låg effekt. Batteriet kanske inte laddas ordentligt.</translation>
 <translation id="2761704814324807722">Statusfältet, tid <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_te.xtb b/ash/strings/ash_strings_te.xtb
index 8c64f77..db8f2c8 100644
--- a/ash/strings/ash_strings_te.xtb
+++ b/ash/strings/ash_strings_te.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">సమర్పించు</translation>
 <translation id="2658778018866295321">క్లిక్ చేసి, లాగండి</translation>
 <translation id="2700493154570097719">మీ కీబోర్డ్‌ని సెట్ చేయండి</translation>
+<translation id="2704781753052663061">ఇతర Wi-Fi నెట్‌వర్క్‌లలో చేరండి</translation>
 <translation id="2718395828230677721">రాత్రి కాంతి</translation>
 <translation id="2727977024730340865">తక్కువ-పవర్ గల ఛార్జర్‌కు ప్లగిన్ చేయబడింది. బ్యాటరీ ఛార్జింగ్ విశ్వసనీయంగా ఉండకపోవచ్చు.</translation>
 <translation id="2761704814324807722">స్థితి ట్రే, సమయం <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_th.xtb b/ash/strings/ash_strings_th.xtb
index ce12eb5..96b143c 100644
--- a/ash/strings/ash_strings_th.xtb
+++ b/ash/strings/ash_strings_th.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">ส่ง</translation>
 <translation id="2658778018866295321">คลิกแล้วลาก</translation>
 <translation id="2700493154570097719">ตั้งค่าแป้นพิมพ์</translation>
+<translation id="2704781753052663061">เข้าร่วมเครือข่าย Wi-Fi อื่น</translation>
 <translation id="2718395828230677721">แสงตอนกลางคืน</translation>
 <translation id="2727977024730340865">เสียบอยู่กับที่ชาร์จพลังงานต่ำ การชาร์จแบตเตอรี่อาจไม่น่าเชื่อถือ</translation>
 <translation id="2761704814324807722">ถาดสถานะ เวลา <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_tr.xtb b/ash/strings/ash_strings_tr.xtb
index 851db1a..dd2fc34 100644
--- a/ash/strings/ash_strings_tr.xtb
+++ b/ash/strings/ash_strings_tr.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Gönder</translation>
 <translation id="2658778018866295321">Tıkla ve sürükle</translation>
 <translation id="2700493154570097719">Klavyenizi ayarlayın</translation>
+<translation id="2704781753052663061">Başka kablosuz ağlara katıl</translation>
 <translation id="2718395828230677721">Gece Işığı</translation>
 <translation id="2727977024730340865">Düşük güçlü bir şarj cihazına takıldı. Şarj durumu güvenilir olmayabilir.</translation>
 <translation id="2761704814324807722">Durum tepsisi, saat: <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_uk.xtb b/ash/strings/ash_strings_uk.xtb
index c61d81b..d30ee5b 100644
--- a/ash/strings/ash_strings_uk.xtb
+++ b/ash/strings/ash_strings_uk.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Надіслати</translation>
 <translation id="2658778018866295321">Натиснути й перетягнути</translation>
 <translation id="2700493154570097719">Вибрати клавіатуру</translation>
+<translation id="2704781753052663061">Підключитися до інших мереж Wi-Fi</translation>
 <translation id="2718395828230677721">Нічний режим</translation>
 <translation id="2727977024730340865">Підключено до зарядного пристрою низької потужності. Акумулятор може заряджатися неналежним чином.</translation>
 <translation id="2761704814324807722">Панель статусу, час: <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_ur.xtb b/ash/strings/ash_strings_ur.xtb
index c2bdaec..235be151 100644
--- a/ash/strings/ash_strings_ur.xtb
+++ b/ash/strings/ash_strings_ur.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">جمع کرائیں</translation>
 <translation id="2658778018866295321">کلک کریں اور گھسیٹیں</translation>
 <translation id="2700493154570097719">اپنا کی بورڈ سیٹ کریں</translation>
+<translation id="2704781753052663061">‏Wi-Fi کے دیگر نیٹ ورکس میں شامل ہوں</translation>
 <translation id="2718395828230677721">نائٹ لائٹ</translation>
 <translation id="2727977024730340865">ایک کم پاور کے چارجر میں پلگ ان ہے۔ بیٹری چارجنگ ممکن ہے بھروسہ مند نہ ہو۔</translation>
 <translation id="2761704814324807722">صورتحال کی ٹرے، وقت <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_uz.xtb b/ash/strings/ash_strings_uz.xtb
index 4009be4c..e647247 100644
--- a/ash/strings/ash_strings_uz.xtb
+++ b/ash/strings/ash_strings_uz.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Yuborish</translation>
 <translation id="2658778018866295321">Bosib torting</translation>
 <translation id="2700493154570097719">Klaviaturani tanlash</translation>
+<translation id="2704781753052663061">Boshqa Wi-Fi tarmoqlarga ulanish</translation>
 <translation id="2718395828230677721">Tungi rejim</translation>
 <translation id="2727977024730340865">Kam quvvatli zaryadlash vositasi ulanildi. Quvvatlantirishda muammolar bo‘lishi mumkin.</translation>
 <translation id="2761704814324807722">Holat qatori, vaqt <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_zh-CN.xtb b/ash/strings/ash_strings_zh-CN.xtb
index 8097366..5999e0a 100644
--- a/ash/strings/ash_strings_zh-CN.xtb
+++ b/ash/strings/ash_strings_zh-CN.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">提交</translation>
 <translation id="2658778018866295321">点击并拖动</translation>
 <translation id="2700493154570097719">设置键盘</translation>
+<translation id="2704781753052663061">连接到其他 Wi-Fi 网络</translation>
 <translation id="2718395828230677721">夜间模式</translation>
 <translation id="2727977024730340865">已插入低功率充电器;可能无法保证充电成功。</translation>
 <translation id="2761704814324807722">状态栏,时间为<ph name="TIME" />,<ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_zh-HK.xtb b/ash/strings/ash_strings_zh-HK.xtb
index 6620961d..e0df2439 100644
--- a/ash/strings/ash_strings_zh-HK.xtb
+++ b/ash/strings/ash_strings_zh-HK.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">提交</translation>
 <translation id="2658778018866295321">按一下並拖曳</translation>
 <translation id="2700493154570097719">設定鍵盤</translation>
+<translation id="2704781753052663061">加入其他 Wi-Fi 網路</translation>
 <translation id="2718395828230677721">夜燈模式</translation>
 <translation id="2727977024730340865">使用低功率充電器,可能導致充電狀態不穩定。</translation>
 <translation id="2761704814324807722">狀態匣:時間 <ph name="TIME" />,<ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_zh-TW.xtb b/ash/strings/ash_strings_zh-TW.xtb
index 561ca65..3b481bdc 100644
--- a/ash/strings/ash_strings_zh-TW.xtb
+++ b/ash/strings/ash_strings_zh-TW.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">提交</translation>
 <translation id="2658778018866295321">按住並拖曳</translation>
 <translation id="2700493154570097719">設定鍵盤</translation>
+<translation id="2704781753052663061">加入其他 Wi-Fi 網路</translation>
 <translation id="2718395828230677721">夜燈</translation>
 <translation id="2727977024730340865">使用低功率充電器,可能導致充電狀態不穩定。</translation>
 <translation id="2761704814324807722">狀態匣:時間 <ph name="TIME" />,<ph name="BATTERY" /></translation>
diff --git a/ash/strings/ash_strings_zu.xtb b/ash/strings/ash_strings_zu.xtb
index e25ae58..1596ef0 100644
--- a/ash/strings/ash_strings_zu.xtb
+++ b/ash/strings/ash_strings_zu.xtb
@@ -131,6 +131,7 @@
 <translation id="2653659639078652383">Hambisa</translation>
 <translation id="2658778018866295321">Chofoza uphinde uhudule</translation>
 <translation id="2700493154570097719">Setha ikhibhodi yakho</translation>
+<translation id="2704781753052663061">Joyina amanye amanethiwekhi we-Wi-Fi</translation>
 <translation id="2718395828230677721">Ukukhanya kwasebusuku</translation>
 <translation id="2727977024730340865">Ixhunye kushaja yamandla aphansi. Ukushaja ibhethri kungenzeka kungathembeki.</translation>
 <translation id="2761704814324807722">Okuphatha isimo, isikhathi <ph name="TIME" />, <ph name="BATTERY" /></translation>
diff --git a/ash/system/message_center/ash_message_popup_collection_unittest.cc b/ash/system/message_center/ash_message_popup_collection_unittest.cc
index 04c330b..45d95710 100644
--- a/ash/system/message_center/ash_message_popup_collection_unittest.cc
+++ b/ash/system/message_center/ash_message_popup_collection_unittest.cc
@@ -146,7 +146,7 @@
   std::unique_ptr<views::Widget> widget = CreateTestWidget(
       nullptr, desks_util::GetActiveDeskContainerId(), gfx::Rect(0, 0, 50, 50));
   Shelf* shelf = GetPrimaryShelf();
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   EXPECT_EQ(origin_x, popup_collection()->GetToastOriginX(toast_size));
   EXPECT_LT(baseline, popup_collection()->GetBaseline());
 }
diff --git a/ash/system/message_center/unified_message_center_view.cc b/ash/system/message_center/unified_message_center_view.cc
index c3616e53..0530be9 100644
--- a/ash/system/message_center/unified_message_center_view.cc
+++ b/ash/system/message_center/unified_message_center_view.cc
@@ -504,6 +504,7 @@
 void UnifiedMessageCenterView::FocusEntered(bool reverse) {
   views::View* focus_view =
       reverse ? GetLastFocusableChild() : GetFirstFocusableChild();
+  GetFocusManager()->ClearFocus();
   GetFocusManager()->SetFocusedView(focus_view);
 }
 
diff --git a/ash/system/status_area_widget.cc b/ash/system/status_area_widget.cc
index 614c753..0f7d133 100644
--- a/ash/system/status_area_widget.cc
+++ b/ash/system/status_area_widget.cc
@@ -9,6 +9,7 @@
 #include "ash/public/cpp/shelf_config.h"
 #include "ash/session/session_controller_impl.h"
 #include "ash/shelf/shelf.h"
+#include "ash/shelf/shelf_layout_manager.h"
 #include "ash/shelf/shelf_widget.h"
 #include "ash/shell.h"
 #include "ash/system/accessibility/dictation_button_tray.h"
@@ -28,6 +29,7 @@
 #include "base/containers/adapters.h"
 #include "base/i18n/time_formatting.h"
 #include "chromeos/constants/chromeos_switches.h"
+#include "ui/compositor/scoped_layer_animation_settings.h"
 #include "ui/display/display.h"
 #include "ui/native_theme/native_theme_dark_aura.h"
 
@@ -180,6 +182,21 @@
   }
 }
 
+void StatusAreaWidget::UpdateLayout(bool animate) {
+  const ShelfLayoutManager* layout_manager = shelf_->shelf_layout_manager();
+  ui::Layer* layer = GetNativeView()->layer();
+  ui::ScopedLayerAnimationSettings animation_setter(layer->GetAnimator());
+  layer->SetOpacity(layout_manager->GetOpacity());
+
+  animation_setter.SetTransitionDuration(
+      animate ? ShelfConfig::Get()->shelf_animation_duration()
+              : base::TimeDelta::FromMilliseconds(0));
+  animation_setter.SetTweenType(gfx::Tween::EASE_OUT);
+  animation_setter.SetPreemptionStrategy(
+      ui::LayerAnimator::IMMEDIATELY_ANIMATE_TO_NEW_TARGET);
+  SetBounds(layout_manager->GetStatusAreaBounds());
+}
+
 void StatusAreaWidget::CalculateButtonVisibilityForCollapsedState() {
   DCHECK(collapse_state_ == CollapseState::COLLAPSED);
 
diff --git a/ash/system/status_area_widget.h b/ash/system/status_area_widget.h
index 6598f73e..39eace8 100644
--- a/ash/system/status_area_widget.h
+++ b/ash/system/status_area_widget.h
@@ -61,6 +61,9 @@
   // changes.
   void UpdateCollapseState();
 
+  // Updates this widget's bounds according to current conditions.
+  void UpdateLayout(bool animate);
+
   // Sets system tray visibility. Shows or hides widget if needed.
   void SetSystemTrayVisibility(bool visible);
 
diff --git a/ash/system/toast/toast_manager_unittest.cc b/ash/system/toast/toast_manager_unittest.cc
index ae6724e1..0f3ae856 100644
--- a/ash/system/toast/toast_manager_unittest.cc
+++ b/ash/system/toast/toast_manager_unittest.cc
@@ -221,7 +221,7 @@
 
   Shelf* shelf = GetPrimaryShelf();
   EXPECT_EQ(ShelfAlignment::kBottom, shelf->alignment());
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState());
 
   ShowToast("DUMMY", ToastData::kInfiniteDuration);
@@ -243,7 +243,7 @@
 TEST_F(ToastManagerImplTest, PositionWithHiddenBottomShelf) {
   Shelf* shelf = GetPrimaryShelf();
   EXPECT_EQ(ShelfAlignment::kBottom, shelf->alignment());
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_ALWAYS_HIDDEN);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlwaysHidden);
   EXPECT_EQ(SHELF_HIDDEN, shelf->GetVisibilityState());
 
   ShowToast("DUMMY", ToastData::kInfiniteDuration);
diff --git a/ash/system/toast/toast_overlay.cc b/ash/system/toast/toast_overlay.cc
index 339828f9..3658f93 100644
--- a/ash/system/toast/toast_overlay.cc
+++ b/ash/system/toast/toast_overlay.cc
@@ -118,7 +118,6 @@
                      const SkColor toast_backgrond_color)
       : views::LabelButton(listener, text, CONTEXT_TOAST_OVERLAY) {
     SetInkDropMode(InkDropMode::ON);
-    set_has_ink_drop_action_on_click(true);
     set_ink_drop_base_color(AshColorProvider::Get()
                                 ->GetRippleAttributes(toast_backgrond_color)
                                 .base_color);
diff --git a/ash/system/tray/tray_constants.h b/ash/system/tray/tray_constants.h
index bac03c3..6fb58401 100644
--- a/ash/system/tray/tray_constants.h
+++ b/ash/system/tray/tray_constants.h
@@ -106,6 +106,7 @@
 constexpr int kUnifiedMenuPadding = 8;
 constexpr int kUnifiedMessageCenterBubbleSpacing = 8;
 constexpr int kUnifiedNotificationCenterSpacing = 16;
+constexpr int kUnifiedNonInAppBubblePadding = 8;
 constexpr int kUnifiedTrayIconSize = 20;
 constexpr int kUnifiedTraySpacingBetweenIcons = 6;
 constexpr int kUnifiedTrayBatteryWidth = 10;
diff --git a/ash/system/tray/tray_popup_utils.cc b/ash/system/tray/tray_popup_utils.cc
index 07b3eed..20625b3 100644
--- a/ash/system/tray/tray_popup_utils.cc
+++ b/ash/system/tray/tray_popup_utils.cc
@@ -260,7 +260,6 @@
   button->SetInstallFocusRingOnFocus(true);
   button->SetFocusForPlatform();
   button->SetInkDropMode(views::InkDropHostView::InkDropMode::ON);
-  button->set_has_ink_drop_action_on_click(true);
 }
 
 void TrayPopupUtils::ConfigureAsStickyHeader(views::View* view) {
diff --git a/ash/system/unified/unified_system_tray_bubble.cc b/ash/system/unified/unified_system_tray_bubble.cc
index ee819c8..cdc10bcb 100644
--- a/ash/system/unified/unified_system_tray_bubble.cc
+++ b/ash/system/unified/unified_system_tray_bubble.cc
@@ -303,17 +303,13 @@
     return;
   }
 
-  // Don't close the bubble if the message center is gaining or losing
-  // activation.
+  // Don't close the bubble if the message center is gaining activation.
   if (features::IsUnifiedMessageCenterRefactorEnabled() &&
       tray_->IsMessageCenterBubbleShown()) {
     views::Widget* message_center_widget =
         tray_->message_center_bubble()->GetBubbleWidget();
     if (message_center_widget ==
-            views::Widget::GetWidgetForNativeView(gained_active) ||
-        (lost_active &&
-         message_center_widget ==
-             views::Widget::GetWidgetForNativeView(lost_active))) {
+        views::Widget::GetWidgetForNativeView(gained_active)) {
       return;
     }
   }
@@ -372,16 +368,16 @@
       kUnifiedMenuPadding, kUnifiedMenuPadding, kUnifiedMenuPadding - 1,
       kUnifiedMenuPadding - (base::i18n::IsRTL() ? 0 : 1));
 
-  // A special case exists on the homescreen in tablet mode in which the padding
-  // is already applied in the status area. We should not set the padding again
-  // for the bubble. See crbug.com/1011924.
+  // The work area in tablet mode always uses the in-app shelf height, which is
+  // shorter than the standard shelf height. In this state, we need to add back
+  // the difference to compensate (see crbug.com/1033302).
   bool in_tablet_mode = Shell::Get()->tablet_mode_controller() &&
                         Shell::Get()->tablet_mode_controller()->InTabletMode();
   bool is_bottom_alignment =
       tray_->shelf()->alignment() == ShelfAlignment::kBottom;
   if (chromeos::switches::ShouldShowShelfHotseat() && in_tablet_mode &&
       !ShelfConfig::Get()->is_in_app() && is_bottom_alignment) {
-    insets.set_bottom(0);
+    insets.set_bottom(insets.bottom() + kUnifiedNonInAppBubblePadding);
   }
 
   return insets;
diff --git a/ash/system/unified/unified_system_tray_view.cc b/ash/system/unified/unified_system_tray_view.cc
index 11715da..7e457e3 100644
--- a/ash/system/unified/unified_system_tray_view.cc
+++ b/ash/system/unified/unified_system_tray_view.cc
@@ -491,6 +491,7 @@
 void UnifiedSystemTrayView::FocusEntered(bool reverse) {
   views::View* focus_view =
       reverse ? GetLastFocusableChild() : GetFirstFocusableChild();
+  GetFocusManager()->ClearFocus();
   GetFocusManager()->SetFocusedView(focus_view);
 }
 
diff --git a/ash/wallpaper/wallpaper_controller_impl.cc b/ash/wallpaper/wallpaper_controller_impl.cc
index a97165e..94d7505 100644
--- a/ash/wallpaper/wallpaper_controller_impl.cc
+++ b/ash/wallpaper/wallpaper_controller_impl.cc
@@ -695,25 +695,45 @@
 }
 
 void WallpaperControllerImpl::UpdateWallpaperBlurForLockState(bool blur) {
-  bool needs_blur = blur && IsBlurAllowedForLockState();
-  bool changed = is_wallpaper_blurred_for_lock_state_ != needs_blur;
+  if (!IsBlurAllowedForLockState())
+    return;
+
+  bool changed = is_wallpaper_blurred_for_lock_state_ != blur;
   // is_wallpaper_blurrred_for_lock_state_ may already be updated in
   // InstallDesktopController. Always try to update, then invoke observer
   // if something changed.
   for (auto* root_window_controller : Shell::GetAllRootWindowControllers()) {
-    changed |=
-        root_window_controller->wallpaper_widget_controller()
-            ->SetWallpaperProperty(needs_blur ? wallpaper_constants::kLockState
-                                              : wallpaper_constants::kClear);
+    changed |= root_window_controller->wallpaper_widget_controller()
+                   ->SetWallpaperProperty(blur ? wallpaper_constants::kLockState
+                                               : wallpaper_constants::kClear);
   }
 
-  is_wallpaper_blurred_for_lock_state_ = needs_blur;
+  is_wallpaper_blurred_for_lock_state_ = blur;
   if (changed) {
     for (auto& observer : observers_)
       observer.OnWallpaperBlurChanged();
   }
 }
 
+void WallpaperControllerImpl::RestoreWallpaperPropertyForLockState(
+    const WallpaperProperty& property) {
+  if (!IsBlurAllowedForLockState())
+    return;
+
+  // |is_wallpaper_blurrred_for_lock_state_| may already be updated in
+  // InstallDesktopController. Always try to update, then invoke observer
+  // if something changed.
+  for (auto* root_window_controller : Shell::GetAllRootWindowControllers()) {
+    root_window_controller->wallpaper_widget_controller()->SetWallpaperProperty(
+        property);
+  }
+
+  DCHECK(is_wallpaper_blurred_for_lock_state_);
+  is_wallpaper_blurred_for_lock_state_ = false;
+  for (auto& observer : observers_)
+    observer.OnWallpaperBlurChanged();
+}
+
 bool WallpaperControllerImpl::ShouldApplyDimming() const {
   // Dim the wallpaper in a blocked user session or in tablet mode unless during
   // wallpaper preview.
diff --git a/ash/wallpaper/wallpaper_controller_impl.h b/ash/wallpaper/wallpaper_controller_impl.h
index 876b498..44b5f4b4 100644
--- a/ash/wallpaper/wallpaper_controller_impl.h
+++ b/ash/wallpaper/wallpaper_controller_impl.h
@@ -41,6 +41,7 @@
 namespace ash {
 
 class WallpaperColorCalculator;
+struct WallpaperProperty;
 class WallpaperResizer;
 class WallpaperWindowStateManager;
 
@@ -160,6 +161,9 @@
   // existing blur is removed.
   void UpdateWallpaperBlurForLockState(bool blur);
 
+  // Restores the wallpaper property from lock state.
+  void RestoreWallpaperPropertyForLockState(const WallpaperProperty& property);
+
   // Wallpaper should be dimmed for login, lock, OOBE and add user screens.
   bool ShouldApplyDimming() const;
 
diff --git a/ash/wallpaper/wallpaper_utils/wallpaper_resizer.cc b/ash/wallpaper/wallpaper_utils/wallpaper_resizer.cc
index f44e7c89..efd49c6 100644
--- a/ash/wallpaper/wallpaper_utils/wallpaper_resizer.cc
+++ b/ash/wallpaper/wallpaper_utils/wallpaper_resizer.cc
@@ -11,7 +11,7 @@
 #include "base/location.h"
 #include "base/logging.h"
 #include "base/metrics/histogram_macros.h"
-#include "base/task_runner.h"
+#include "base/threading/thread_restrictions.h"
 #include "third_party/skia/include/core/SkImage.h"
 #include "ui/gfx/geometry/safe_integer_conversions.h"
 #include "ui/gfx/image/image_skia_rep.h"
@@ -28,9 +28,8 @@
 void Resize(const gfx::ImageSkia image,
             const gfx::Size& target_size,
             WallpaperLayout layout,
-            SkBitmap* resized_bitmap_out,
-            base::TaskRunner* task_runner) {
-  DCHECK(task_runner->RunsTasksInCurrentSequence());
+            SkBitmap* resized_bitmap_out) {
+  base::AssertLongCPUWorkAllowed();
 
   SkBitmap orig_bitmap = *image.bitmap();
   SkBitmap new_bitmap = orig_bitmap;
@@ -124,7 +123,7 @@
   if (!task_runner_->PostTaskAndReply(
           FROM_HERE,
           base::BindOnce(&Resize, image_, target_size_, wallpaper_info_.layout,
-                         resized_bitmap, base::RetainedRef(task_runner_)),
+                         resized_bitmap),
           base::BindOnce(&WallpaperResizer::OnResizeFinished,
                          weak_ptr_factory_.GetWeakPtr(),
                          base::Owned(resized_bitmap)))) {
diff --git a/ash/wallpaper/wallpaper_utils/wallpaper_resizer.h b/ash/wallpaper/wallpaper_utils/wallpaper_resizer.h
index a2becad..b42d5a6 100644
--- a/ash/wallpaper/wallpaper_utils/wallpaper_resizer.h
+++ b/ash/wallpaper/wallpaper_utils/wallpaper_resizer.h
@@ -14,6 +14,7 @@
 #include "base/memory/ref_counted.h"
 #include "base/memory/weak_ptr.h"
 #include "base/observer_list.h"
+#include "base/task_runner.h"
 #include "base/time/time.h"
 #include "skia/ext/image_operations.h"
 #include "third_party/skia/include/core/SkBitmap.h"
@@ -21,10 +22,6 @@
 #include "ui/gfx/geometry/size.h"
 #include "ui/gfx/image/image_skia.h"
 
-namespace base {
-class TaskRunner;
-}
-
 namespace ash {
 
 class WallpaperResizerObserver;
diff --git a/ash/wm/collision_detection/collision_detection_utils_unittest.cc b/ash/wm/collision_detection/collision_detection_utils_unittest.cc
index 590bab6..ccf75bb5 100644
--- a/ash/wm/collision_detection/collision_detection_utils_unittest.cc
+++ b/ash/wm/collision_detection/collision_detection_utils_unittest.cc
@@ -94,7 +94,7 @@
     scoped_root_.reset(new ScopedRootWindowForNewWindows(root_window_));
     for (auto* root_window_controller : Shell::GetAllRootWindowControllers()) {
       auto* shelf = root_window_controller->shelf();
-      shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_ALWAYS_HIDDEN);
+      shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlwaysHidden);
     }
   }
 
@@ -311,7 +311,7 @@
 
 TEST_P(CollisionDetectionUtilsDisplayTest, AutoHideShownShelfAffectsWindow) {
   auto* shelf = Shelf::ForWindow(root_window());
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState());
 
   auto shelf_bounds = shelf->GetWindow()->GetBoundsInScreen();
diff --git a/ash/wm/desks/close_desk_button.cc b/ash/wm/desks/close_desk_button.cc
index 120b51b..3c981b2 100644
--- a/ash/wm/desks/close_desk_button.cc
+++ b/ash/wm/desks/close_desk_button.cc
@@ -51,7 +51,6 @@
   inkdrop_base_color_ = ripple_attributes.base_color;
 
   SetInkDropMode(InkDropMode::ON);
-  set_has_ink_drop_action_on_click(true);
   set_ink_drop_visible_opacity(ripple_attributes.inkdrop_opacity);
   SetFocusPainter(nullptr);
 
diff --git a/ash/wm/desks/desks_unittests.cc b/ash/wm/desks/desks_unittests.cc
index 587e8193..64c4c20 100644
--- a/ash/wm/desks/desks_unittests.cc
+++ b/ash/wm/desks/desks_unittests.cc
@@ -2053,7 +2053,7 @@
   ShelfWidget* shelf_widget = shelf->shelf_widget();
   const gfx::Rect shown_shelf_bounds = shelf_widget->GetWindowBoundsInScreen();
 
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
 
   // Enable animations so that we can make sure that they occur.
   ui::ScopedAnimationDurationScaleMode regular_animations(
diff --git a/ash/wm/desks/new_desk_button.cc b/ash/wm/desks/new_desk_button.cc
index 448e156..61c6f29c 100644
--- a/ash/wm/desks/new_desk_button.cc
+++ b/ash/wm/desks/new_desk_button.cc
@@ -65,7 +65,6 @@
   SetTextColor(views::Button::STATE_DISABLED, kDisabledTextAndIconColor);
   SetImageLabelSpacing(kImageLabelSpacing);
   SetInkDropMode(InkDropMode::ON);
-  set_has_ink_drop_action_on_click(true);
   set_ink_drop_visible_opacity(kInkDropVisibleOpacity);
   SetFocusPainter(nullptr);
 
diff --git a/ash/wm/immersive_fullscreen_controller_unittest.cc b/ash/wm/immersive_fullscreen_controller_unittest.cc
index a60d6d2..9fedf59 100644
--- a/ash/wm/immersive_fullscreen_controller_unittest.cc
+++ b/ash/wm/immersive_fullscreen_controller_unittest.cc
@@ -1111,7 +1111,7 @@
   EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState());
 
   // The user could toggle the shelf auto-hide behavior.
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
 
   // Entering immersive fullscreen keeps auto-hide.
diff --git a/ash/wm/lock_state_controller.cc b/ash/wm/lock_state_controller.cc
index d333e283..894ad34 100644
--- a/ash/wm/lock_state_controller.cc
+++ b/ash/wm/lock_state_controller.cc
@@ -12,11 +12,13 @@
 #include "ash/cancel_mode.h"
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/public/cpp/shutdown_controller.h"
+#include "ash/root_window_controller.h"
 #include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/shell_delegate.h"
 #include "ash/shutdown_reason.h"
 #include "ash/wallpaper/wallpaper_controller_impl.h"
+#include "ash/wallpaper/wallpaper_widget_controller.h"
 #include "ash/wm/session_state_animator.h"
 #include "ash/wm/session_state_animator_impl.h"
 #include "base/bind.h"
@@ -144,7 +146,8 @@
 void LockStateController::CancelLockAnimation() {
   VLOG(1) << "CancelLockAnimation";
   animating_lock_ = false;
-  Shell::Get()->wallpaper_controller()->UpdateWallpaperBlurForLockState(false);
+  Shell::Get()->wallpaper_controller()->RestoreWallpaperPropertyForLockState(
+      saved_property_);
   base::OnceClosure next_animation_starter =
       base::BindOnce(&LockStateController::LockAnimationCancelled,
                      weak_ptr_factory_.GetWeakPtr());
@@ -313,6 +316,9 @@
 void LockStateController::PreLockAnimation(
     SessionStateAnimator::AnimationSpeed speed,
     bool request_lock_on_completion) {
+  saved_property_ = Shell::GetPrimaryRootWindowController()
+                        ->wallpaper_widget_controller()
+                        ->property();
   Shell::Get()->wallpaper_controller()->UpdateWallpaperBlurForLockState(true);
   base::OnceClosure next_animation_starter = base::BindOnce(
       &LockStateController::PreLockAnimationFinished,
diff --git a/ash/wm/lock_state_controller.h b/ash/wm/lock_state_controller.h
index 3a5535d..c8857d43 100644
--- a/ash/wm/lock_state_controller.h
+++ b/ash/wm/lock_state_controller.h
@@ -10,6 +10,7 @@
 #include "ash/ash_export.h"
 #include "ash/session/session_observer.h"
 #include "ash/shutdown_reason.h"
+#include "ash/wallpaper/wallpaper_property.h"
 #include "ash/wm/lock_state_observer.h"
 #include "ash/wm/session_state_animator.h"
 #include "base/macros.h"
@@ -207,6 +208,10 @@
 
   ScopedSessionObserver scoped_session_observer_;
 
+  // The wallpaper property before entring lock state. Used to restore the
+  // wallpaper blur and opacity after exiting lock state.
+  WallpaperProperty saved_property_;
+
   base::ObserverList<LockStateObserver>::Unchecked observers_;
 
   base::WeakPtrFactory<LockStateController> weak_ptr_factory_{this};
diff --git a/ash/wm/lock_state_controller_unittest.cc b/ash/wm/lock_state_controller_unittest.cc
index fd92942..a6de24af 100644
--- a/ash/wm/lock_state_controller_unittest.cc
+++ b/ash/wm/lock_state_controller_unittest.cc
@@ -8,7 +8,9 @@
 #include <utility>
 
 #include "ash/public/cpp/ash_switches.h"
+#include "ash/public/cpp/login_constants.h"
 #include "ash/public/cpp/shutdown_controller.h"
+#include "ash/root_window_controller.h"
 #include "ash/session/session_controller_impl.h"
 #include "ash/shell.h"
 #include "ash/shutdown_reason.h"
@@ -16,7 +18,11 @@
 #include "ash/system/power/power_button_controller_test_api.h"
 #include "ash/system/power/power_button_test_base.h"
 #include "ash/touch/touch_devices_controller.h"
+#include "ash/wallpaper/wallpaper_view.h"
+#include "ash/wallpaper/wallpaper_widget_controller.h"
 #include "ash/wm/lock_state_controller_test_api.h"
+#include "ash/wm/overview/overview_constants.h"
+#include "ash/wm/overview/overview_controller.h"
 #include "ash/wm/session_state_animator.h"
 #include "ash/wm/test_session_state_animator.h"
 #include "base/bind.h"
@@ -696,4 +702,38 @@
   EXPECT_EQ(1, NumShutdownRequests());
 }
 
+TEST_F(LockStateControllerTest, CancelShouldResetWallpaperProperty) {
+  Initialize(ButtonType::NORMAL, LoginStatus::USER);
+
+  ExpectUnlockedState();
+
+  auto* wallpaper_view = Shell::Get()
+                             ->GetPrimaryRootWindowController()
+                             ->wallpaper_widget_controller()
+                             ->wallpaper_view();
+
+  auto* overview_controller = Shell::Get()->overview_controller();
+  // Enter Overview and verify wallpaper properties.
+  overview_controller->StartOverview();
+  EXPECT_EQ(overview_constants::kBlurSigma, wallpaper_view->blur_sigma());
+  EXPECT_EQ(overview_constants::kOpacity, wallpaper_view->opacity());
+
+  // Start lock animation and verify wallpaper properties.
+  PressLockButton();
+  ExpectPreLockAnimationStarted();
+  EXPECT_EQ(login_constants::kBlurSigma, wallpaper_view->blur_sigma());
+  EXPECT_EQ(1.f, wallpaper_view->opacity());
+
+  // Cancel lock animation.
+  AdvancePartially(SessionStateAnimator::ANIMATION_SPEED_UNDOABLE, 0.5f);
+  ReleaseLockButton();
+  ExpectPreLockAnimationCancel();
+  Advance(SessionStateAnimator::ANIMATION_SPEED_MOVE_WINDOWS);
+  ExpectUnlockedState();
+
+  // Verify walpaper properties are restored to overview's.
+  EXPECT_EQ(overview_constants::kBlurSigma, wallpaper_view->blur_sigma());
+  EXPECT_EQ(overview_constants::kOpacity, wallpaper_view->opacity());
+}
+
 }  // namespace ash
diff --git a/ash/wm/overview/overview_session_unittest.cc b/ash/wm/overview/overview_session_unittest.cc
index 33be85b..d699aeb 100644
--- a/ash/wm/overview/overview_session_unittest.cc
+++ b/ash/wm/overview/overview_session_unittest.cc
@@ -2870,7 +2870,7 @@
 
   Shelf* shelf = GetPrimaryShelf();
   shelf->SetAlignment(ShelfAlignment::kBottom);
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kNever);
 
   // Test that with the bottom shelf, the grid should take up the entire display
   // minus the shelf area on the bottom regardless of auto hide behavior.
@@ -2879,7 +2879,7 @@
   EXPECT_EQ(gfx::Rect(0, 0, 600, 600 - shelf_size), GetGridBounds());
   ToggleOverview();
 
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   ToggleOverview();
   EXPECT_EQ(gfx::Rect(0, 0, 600, 600 - shelf_size), GetGridBounds());
   ToggleOverview();
@@ -2887,12 +2887,12 @@
   // Test that with the right shelf, the grid should take up the entire display
   // minus the shelf area on the right regardless of auto hide behavior.
   shelf->SetAlignment(ShelfAlignment::kRight);
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kNever);
   ToggleOverview();
   EXPECT_EQ(gfx::Rect(0, 0, 600 - shelf_size, 600), GetGridBounds());
   ToggleOverview();
 
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   ToggleOverview();
   EXPECT_EQ(gfx::Rect(0, 0, 600 - shelf_size, 600), GetGridBounds());
   ToggleOverview();
diff --git a/ash/wm/pip/pip_test_utils.cc b/ash/wm/pip/pip_test_utils.cc
index cfca636..9135762 100644
--- a/ash/wm/pip/pip_test_utils.cc
+++ b/ash/wm/pip/pip_test_utils.cc
@@ -13,7 +13,7 @@
 void ForceHideShelvesForTest() {
   for (auto* root_window_controller : Shell::GetAllRootWindowControllers()) {
     auto* shelf = root_window_controller->shelf();
-    shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_ALWAYS_HIDDEN);
+    shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlwaysHidden);
   }
 }
 
diff --git a/ash/wm/splitview/split_view_controller_unittest.cc b/ash/wm/splitview/split_view_controller_unittest.cc
index aa48ad80..f840e23 100644
--- a/ash/wm/splitview/split_view_controller_unittest.cc
+++ b/ash/wm/splitview/split_view_controller_unittest.cc
@@ -4723,7 +4723,7 @@
 TEST_P(SplitViewAppDraggingTest, AutoHideShelf) {
   UpdateDisplay("800x600");
   Shelf* shelf = GetPrimaryShelf();
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kNever);
   InitializeWindow();
   gfx::Rect display_bounds =
       display::Screen::GetScreen()->GetPrimaryDisplay().bounds();
@@ -4733,14 +4733,14 @@
   EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState());
   EXPECT_TRUE(WindowState::Get(window())->IsMaximized());
 
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   shelf_layout_manager->LayoutShelf();
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
   EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState());
 
   const gfx::Point location(0, display_bounds.height() / 4 + 5);
   SendScrollStartAndUpdate(location);
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways, shelf->auto_hide_behavior());
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
   // Shelf should be shown during drag.
   EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState());
diff --git a/ash/wm/tablet_mode/tablet_mode_window_manager_unittest.cc b/ash/wm/tablet_mode/tablet_mode_window_manager_unittest.cc
index 5dab680..b9686ac 100644
--- a/ash/wm/tablet_mode/tablet_mode_window_manager_unittest.cc
+++ b/ash/wm/tablet_mode/tablet_mode_window_manager_unittest.cc
@@ -960,7 +960,7 @@
 
   // Allow the shelf to hide and set the pref.
   SetShelfAutoHideBehaviorPref(GetPrimaryDisplay().id(),
-                               SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+                               ShelfAutoHideBehavior::kAlways);
   EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState());
 
   WMEvent event(WM_EVENT_TOGGLE_FULLSCREEN);
@@ -1144,7 +1144,7 @@
   Shelf* shelf = GetPrimaryShelf();
 
   // Allow the shelf to hide and enter full screen.
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   WMEvent event(WM_EVENT_TOGGLE_FULLSCREEN);
   window_state->OnWMEvent(&event);
   ASSERT_FALSE(window_state->IsMinimized());
@@ -1165,12 +1165,12 @@
 TEST_P(TabletModeWindowManagerTest, DoNotDisableAutoHideBehaviorOnTabletMode) {
   Shelf* shelf = GetPrimaryShelf();
   SetShelfAutoHideBehaviorPref(GetPrimaryDisplay().id(),
-                               SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior());
+                               ShelfAutoHideBehavior::kAlways);
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways, shelf->auto_hide_behavior());
   CreateTabletModeWindowManager();
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways, shelf->auto_hide_behavior());
   DestroyTabletModeWindowManager();
-  EXPECT_EQ(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS, shelf->auto_hide_behavior());
+  EXPECT_EQ(ShelfAutoHideBehavior::kAlways, shelf->auto_hide_behavior());
 }
 
 // Check that full screen mode can be turned on in tablet mode and remains
@@ -1185,7 +1185,7 @@
 
   // Allow the shelf to hide and set the pref.
   SetShelfAutoHideBehaviorPref(GetPrimaryDisplay().id(),
-                               SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+                               ShelfAutoHideBehavior::kAlways);
 
   EXPECT_FALSE(window_state->IsFullscreen());
   EXPECT_FALSE(window_state->IsMaximized());
diff --git a/ash/wm/workspace/workspace_layout_manager_unittest.cc b/ash/wm/workspace/workspace_layout_manager_unittest.cc
index 915db8f..c33c564 100644
--- a/ash/wm/workspace/workspace_layout_manager_unittest.cc
+++ b/ash/wm/workspace/workspace_layout_manager_unittest.cc
@@ -1080,7 +1080,7 @@
   window->Show();
 
   Shelf* shelf = GetPrimaryShelf();
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
 
   window->SetBounds(
       screen_util::GetMaximizedWindowBoundsInParent(window.get()));
@@ -1279,17 +1279,17 @@
 
   EXPECT_EQ(fullscreen_size,
             default_container()->children()[0]->bounds().size());
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_ALWAYS_HIDDEN);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlwaysHidden);
   shelf_layout_manager->UpdateVisibilityState();
 
   // When the shelf is re-shown WorkspaceLayoutManager shrinks all children but
   // the backdrop.
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kNever);
   shelf_layout_manager->UpdateVisibilityState();
   EXPECT_EQ(fullscreen_size,
             default_container()->children()[0]->bounds().size());
 
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_ALWAYS_HIDDEN);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlwaysHidden);
   shelf_layout_manager->UpdateVisibilityState();
   EXPECT_EQ(fullscreen_size,
             default_container()->children()[0]->bounds().size());
diff --git a/ash/wm/workspace/workspace_window_resizer_unittest.cc b/ash/wm/workspace/workspace_window_resizer_unittest.cc
index 29726f9..6b0bae08 100644
--- a/ash/wm/workspace/workspace_window_resizer_unittest.cc
+++ b/ash/wm/workspace/workspace_window_resizer_unittest.cc
@@ -1006,7 +1006,7 @@
 
 // Verifies snapping to edges works.
 TEST_F(WorkspaceWindowResizerTest, SnapToEdge) {
-  GetPrimaryShelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  GetPrimaryShelf()->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   window_->SetBounds(gfx::Rect(96, 112, 320, 160));
   // Click 50px to the right so that the mouse pointer does not leave the
   // workspace ensuring sticky behavior.
@@ -1764,7 +1764,7 @@
 // The following variants test that windows are resized correctly to the edges
 // of the screen using touch, when touch point is off of the window border.
 TEST_F(WorkspaceWindowResizerTest, TouchResizeToEdge_RIGHT) {
-  GetPrimaryShelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_ALWAYS_HIDDEN);
+  GetPrimaryShelf()->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlwaysHidden);
 
   InitTouchResizeWindow(gfx::Rect(100, 100, 600, kRootHeight - 200), HTRIGHT);
   EXPECT_EQ(gfx::Rect(100, 100, 600, kRootHeight - 200).ToString(),
@@ -1795,7 +1795,7 @@
 }
 
 TEST_F(WorkspaceWindowResizerTest, TouchResizeToEdge_LEFT) {
-  GetPrimaryShelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_ALWAYS_HIDDEN);
+  GetPrimaryShelf()->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlwaysHidden);
 
   InitTouchResizeWindow(gfx::Rect(100, 100, 600, kRootHeight - 200), HTLEFT);
   EXPECT_EQ(gfx::Rect(100, 100, 600, kRootHeight - 200).ToString(),
@@ -1826,7 +1826,7 @@
 }
 
 TEST_F(WorkspaceWindowResizerTest, TouchResizeToEdge_TOP) {
-  GetPrimaryShelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_ALWAYS_HIDDEN);
+  GetPrimaryShelf()->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlwaysHidden);
 
   InitTouchResizeWindow(gfx::Rect(100, 100, 600, kRootHeight - 200), HTTOP);
   EXPECT_EQ(gfx::Rect(100, 100, 600, kRootHeight - 200).ToString(),
@@ -1854,7 +1854,7 @@
 }
 
 TEST_F(WorkspaceWindowResizerTest, TouchResizeToEdge_BOTTOM) {
-  GetPrimaryShelf()->SetAutoHideBehavior(SHELF_AUTO_HIDE_ALWAYS_HIDDEN);
+  GetPrimaryShelf()->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlwaysHidden);
 
   InitTouchResizeWindow(gfx::Rect(100, 100, 600, kRootHeight - 200), HTBOTTOM);
   EXPECT_EQ(gfx::Rect(100, 100, 600, kRootHeight - 200).ToString(),
diff --git a/ash/wm/workspace_controller_unittest.cc b/ash/wm/workspace_controller_unittest.cc
index a36ed08..18ed6a8 100644
--- a/ash/wm/workspace_controller_unittest.cc
+++ b/ash/wm/workspace_controller_unittest.cc
@@ -348,7 +348,7 @@
   std::unique_ptr<Window> w1(CreateTestWindow());
   const gfx::Rect w1_bounds(0, 1, 101, 102);
   Shelf* shelf = GetPrimaryShelf();
-  shelf->SetAutoHideBehavior(ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ash::ShelfAutoHideBehavior::kAlways);
   const gfx::Rect touches_shelf_bounds(
       0, shelf_layout_manager()->GetIdealBounds().y() - 10, 101, 102);
   // Move |w1| to overlap the shelf.
@@ -612,7 +612,7 @@
 TEST_F(WorkspaceControllerTest, DontCrashOnChangeAndActivate) {
   // Force the shelf
   Shelf* shelf = GetPrimaryShelf();
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kNever);
 
   DontCrashOnChangeAndActivateDelegate delegate;
   std::unique_ptr<Window> w1(CreateTestWindowInShellWithDelegate(
@@ -628,7 +628,7 @@
 
   // Do this so that when we Show() the window a resize occurs and we make the
   // window active.
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
 
   ParentWindowInPrimaryRootWindow(w1.get());
   delegate.set_window(w1.get());
@@ -1319,7 +1319,7 @@
   ParentWindowInPrimaryRootWindow(w1.get());
 
   Shelf* shelf = GetPrimaryShelf();
-  shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
+  shelf->SetAutoHideBehavior(ShelfAutoHideBehavior::kAlways);
   EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState());
 
   // Drag very little.
diff --git a/base/android/bundle_utils.cc b/base/android/bundle_utils.cc
index d227b7c..e2ee545b 100644
--- a/base/android/bundle_utils.cc
+++ b/base/android/bundle_utils.cc
@@ -63,8 +63,7 @@
 
 // static
 bool BundleUtils::IsBundle() {
-  return Java_BundleUtils_isBundleForNative(
-      base::android::AttachCurrentThread());
+  return Java_BundleUtils_isBundle(base::android::AttachCurrentThread());
 }
 
 // static
diff --git a/base/android/java/src/org/chromium/base/ApplicationStatus.java b/base/android/java/src/org/chromium/base/ApplicationStatus.java
index 2d6c719..09a4ddb 100644
--- a/base/android/java/src/org/chromium/base/ApplicationStatus.java
+++ b/base/android/java/src/org/chromium/base/ApplicationStatus.java
@@ -9,7 +9,7 @@
 import android.app.Application;
 import android.app.Application.ActivityLifecycleCallbacks;
 import android.os.Bundle;
-import android.view.Window;
+import android.view.ViewTreeObserver;
 
 import androidx.annotation.AnyThread;
 import androidx.annotation.MainThread;
@@ -20,10 +20,6 @@
 import org.chromium.base.annotations.JNINamespace;
 import org.chromium.base.annotations.NativeMethods;
 
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Proxy;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -38,15 +34,6 @@
  */
 @JNINamespace("base::android")
 public class ApplicationStatus {
-    private static final String TOOLBAR_CALLBACK_INTERNAL_WRAPPER_CLASS =
-            "android.support.v7.internal.app.ToolbarActionBar$ToolbarCallbackWrapper";
-    // In builds using the --use_unpublished_apis flag, the ToolbarActionBar class name does not
-    // include the "internal" package.
-    private static final String TOOLBAR_CALLBACK_WRAPPER_CLASS =
-            "android.support.v7.app.ToolbarActionBar$ToolbarCallbackWrapper";
-    private static final String WINDOW_PROFILER_CALLBACK =
-            "com.android.tools.profiler.support.event.WindowProfilerCallback";
-
     private static class ActivityInfo {
         private int mStatus = ActivityState.DESTROYED;
         private ObserverList<ActivityStateListener> mListeners = new ObserverList<>();
@@ -171,48 +158,21 @@
     }
 
     /**
-     * Intercepts calls to an existing Window.Callback. Most invocations are passed on directly
-     * to the composed Window.Callback but enables intercepting/manipulating others.
+     * Monitors activity focus changes as a ViewTreeObserver.
      *
      * This is used to relay window focus changes throughout the app and remedy a bug in the
      * appcompat library.
      */
-    private static class WindowCallbackProxy implements InvocationHandler {
-        private final Window.Callback mCallback;
+    private static class WindowFocusObserver
+            implements ViewTreeObserver.OnWindowFocusChangeListener {
         private final Activity mActivity;
 
-        public WindowCallbackProxy(Activity activity, Window.Callback callback) {
-            mCallback = callback;
+        public WindowFocusObserver(Activity activity) {
             mActivity = activity;
         }
 
         @Override
-        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
-            if (method.getName().equals("onWindowFocusChanged") && args.length == 1
-                    && args[0] instanceof Boolean) {
-                onWindowFocusChanged((boolean) args[0]);
-                return null;
-            } else {
-                try {
-                    return method.invoke(mCallback, args);
-                } catch (InvocationTargetException e) {
-                    // Special-case for when a method is not defined on the underlying
-                    // Window.Callback object. Because we're using a Proxy to forward all method
-                    // calls, this breaks the Android framework's handling for apps built against
-                    // an older SDK. The framework expects an AbstractMethodError but due to
-                    // reflection it becomes wrapped inside an InvocationTargetException. Undo the
-                    // wrapping to signal the framework accordingly.
-                    if (e.getCause() instanceof AbstractMethodError) {
-                        throw e.getCause();
-                    }
-                    throw e;
-                }
-            }
-        }
-
         public void onWindowFocusChanged(boolean hasFocus) {
-            mCallback.onWindowFocusChanged(hasFocus);
-
             for (WindowFocusChangedListener listener : sWindowFocusListeners) {
                 listener.onWindowFocusChanged(mActivity, hasFocus);
             }
@@ -256,56 +216,39 @@
             @Override
             public void onActivityCreated(final Activity activity, Bundle savedInstanceState) {
                 onStateChange(activity, ActivityState.CREATED);
-                Window.Callback callback = activity.getWindow().getCallback();
-                activity.getWindow().setCallback((Window.Callback) Proxy.newProxyInstance(
-                        Window.Callback.class.getClassLoader(), new Class[] {Window.Callback.class},
-                        new ApplicationStatus.WindowCallbackProxy(activity, callback)));
+                activity.getWindow()
+                        .getDecorView()
+                        .getViewTreeObserver()
+                        .addOnWindowFocusChangeListener(new WindowFocusObserver(activity));
             }
 
             @Override
             public void onActivityDestroyed(Activity activity) {
                 onStateChange(activity, ActivityState.DESTROYED);
-                checkCallback(activity);
             }
 
             @Override
             public void onActivityPaused(Activity activity) {
                 onStateChange(activity, ActivityState.PAUSED);
-                checkCallback(activity);
             }
 
             @Override
             public void onActivityResumed(Activity activity) {
                 onStateChange(activity, ActivityState.RESUMED);
-                checkCallback(activity);
             }
 
             @Override
             public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
-                checkCallback(activity);
             }
 
             @Override
             public void onActivityStarted(Activity activity) {
                 onStateChange(activity, ActivityState.STARTED);
-                checkCallback(activity);
             }
 
             @Override
             public void onActivityStopped(Activity activity) {
                 onStateChange(activity, ActivityState.STOPPED);
-                checkCallback(activity);
-            }
-
-            private void checkCallback(Activity activity) {
-                if (BuildConfig.DCHECK_IS_ON) {
-                    Class<? extends Window.Callback> callback =
-                            activity.getWindow().getCallback().getClass();
-                    assert(Proxy.isProxyClass(callback)
-                            || callback.getName().equals(TOOLBAR_CALLBACK_WRAPPER_CLASS)
-                            || callback.getName().equals(TOOLBAR_CALLBACK_INTERNAL_WRAPPER_CLASS)
-                            || callback.getName().equals(WINDOW_PROFILER_CALLBACK));
-                }
             }
         });
     }
diff --git a/base/android/java/src/org/chromium/base/BundleUtils.java b/base/android/java/src/org/chromium/base/BundleUtils.java
index f777cfa..7e2b490 100644
--- a/base/android/java/src/org/chromium/base/BundleUtils.java
+++ b/base/android/java/src/org/chromium/base/BundleUtils.java
@@ -8,50 +8,12 @@
 
 import org.chromium.base.annotations.CalledByNative;
 
-/**
- * Utils for working with android app bundles.
- *
- * Important notes about bundle status as interpreted by this class:
- *
- * <ul>
- *   <li>If {@link BuildConfig#BUNDLES_SUPPORTED} is false, then we are definitely not in a bundle,
- *   and ProGuard is able to strip out the bundle support library.</li>
- *   <li>If {@link BuildConfig#BUNDLES_SUPPORTED} is true, then we MIGHT be in a bundle.
- *   {@link BundleUtils#sIsBundle} is the source of truth.</li>
- * </ul>
- *
- * We need two fields to store one bit of information here to ensure that ProGuard can optimize out
- * the bundle support library (since {@link BuildConfig#BUNDLES_SUPPORTED} is final) and so that
- * we can dynamically set whether or not we're in a bundle for targets that use static shared
- * library APKs.
- */
-public final class BundleUtils {
-    private static boolean sIsBundle;
-
-    /**
-     * {@link BundleUtils#isBundle()}  is not called directly by native because
-     * {@link CalledByNative} prevents inlining, causing the bundle support lib to not be
-     * removed non-bundle builds.
-     *
-     * @return true if the current build is a bundle.
-     */
+/** Utils to help working with android app bundles. */
+public class BundleUtils {
+    /* Returns true if the current build is a bundle. */
     @CalledByNative
-    public static boolean isBundleForNative() {
-        return isBundle();
-    }
-
-    /**
-     * @return true if the current build is a bundle.
-     */
     public static boolean isBundle() {
-        if (!BuildConfig.BUNDLES_SUPPORTED) {
-            return false;
-        }
-        return sIsBundle;
-    }
-
-    public static void setIsBundle(boolean isBundle) {
-        sIsBundle = isBundle;
+        return BuildConfig.IS_BUNDLE;
     }
 
     /* Returns absolute path to a native library in a feature module. */
diff --git a/base/android/java/src/org/chromium/base/CommandLine.java b/base/android/java/src/org/chromium/base/CommandLine.java
index a61ff03..7a8dfd6 100644
--- a/base/android/java/src/org/chromium/base/CommandLine.java
+++ b/base/android/java/src/org/chromium/base/CommandLine.java
@@ -235,6 +235,15 @@
     }
 
     /**
+     * Set {@link CommandLine} for testing.
+     * @param commandLine The {@link CommandLine} to use.
+     */
+    @VisibleForTesting
+    public static void setInstanceForTesting(CommandLine commandLine) {
+        setInstance(commandLine);
+    }
+
+    /**
      * @param fileName the file to read in.
      * @return Array of chars read from the file, or null if the file cannot be read.
      */
diff --git a/base/android/java/src/org/chromium/base/Promise.java b/base/android/java/src/org/chromium/base/Promise.java
index 615786d..c77576e 100644
--- a/base/android/java/src/org/chromium/base/Promise.java
+++ b/base/android/java/src/org/chromium/base/Promise.java
@@ -48,18 +48,14 @@
      * @param <A> The type of the function input.
      * @param <R> The type of the function output.
      */
-    public interface Function<A, R> {
-        R apply(A argument);
-    }
+    public interface Function<A, R> extends org.chromium.base.Function<A, R> {}
 
     /**
      * A function class for use when chaining Promises with {@link Promise#then(AsyncFunction)}.
      * @param <A> The type of the function input.
      * @param <R> The type of the function output.
      */
-    public interface AsyncFunction<A, R> {
-        Promise<R> apply(A argument);
-    }
+    public interface AsyncFunction<A, R> extends Function<A, Promise<R>> {}
 
     /**
      * An exception class for when a rejected Promise is not handled and cannot pass the rejection
@@ -144,10 +140,10 @@
     }
 
     /**
-     * Queues a {@link Promise.Function} to be run when the Promise is fulfilled. When this Promise
-     * is fulfilled, the function will be run and its result will be place in the returned Promise.
+     * Queues a {@link Function} to be run when the Promise is fulfilled. When this Promise is
+     * fulfilled, the function will be run and its result will be place in the returned Promise.
      */
-    public <R> Promise<R> then(final Function<T, R> function) {
+    public <R> Promise<R> then(final org.chromium.base.Function<T, R> function) {
         checkThread();
 
         // Create a new Promise to store the result of the function.
diff --git a/base/android/java/templates/BuildConfig.template b/base/android/java/templates/BuildConfig.template
index 4f80588..f09ebf07 100644
--- a/base/android/java/templates/BuildConfig.template
+++ b/base/android/java/templates/BuildConfig.template
@@ -69,10 +69,11 @@
     public static MAYBE_FINAL int MIN_SDK_VERSION = 1;
 #endif
 
-#if defined(_BUNDLES_SUPPORTED)
-    public static MAYBE_FINAL boolean BUNDLES_SUPPORTED = true;
+    // Not making this final for BundleTestRule to modify.
+#if defined(_IS_BUNDLE)
+    public static boolean IS_BUNDLE = true;
 #else
-    public static MAYBE_FINAL boolean BUNDLES_SUPPORTED MAYBE_FALSE;
+    public static boolean IS_BUNDLE;
 #endif
 
 #if defined(_IS_INCREMENTAL_INSTALL)
diff --git a/base/android/junit/src/org/chromium/base/ApplicationStatusTest.java b/base/android/junit/src/org/chromium/base/ApplicationStatusTest.java
index df2c13c9..4f0ed3e 100644
--- a/base/android/junit/src/org/chromium/base/ApplicationStatusTest.java
+++ b/base/android/junit/src/org/chromium/base/ApplicationStatusTest.java
@@ -58,7 +58,8 @@
                 Robolectric.buildActivity(Activity.class).create().start().visible();
         TrackingShadowActivity shadow = (TrackingShadowActivity) Shadows.shadowOf(controller.get());
 
-        controller.get().getWindow().getCallback().onWindowFocusChanged(true);
+        controller.windowFocusChanged(true);
+
         // Assert that listeners were notified.
         verify(mock).onWindowFocusChanged(controller.get(), true);
         // Also ensure that the original activity is forwarded the notification.
diff --git a/base/android/task_scheduler/task_runner_android.cc b/base/android/task_scheduler/task_runner_android.cc
index 7531028d..cbc2d90 100644
--- a/base/android/task_scheduler/task_runner_android.cc
+++ b/base/android/task_scheduler/task_runner_android.cc
@@ -38,11 +38,13 @@
       task_runner = CreateSingleThreadTaskRunner(task_traits);
       break;
   }
-  return reinterpret_cast<intptr_t>(new TaskRunnerAndroid(task_runner));
+  return reinterpret_cast<intptr_t>(new TaskRunnerAndroid(
+      task_runner, static_cast<TaskRunnerType>(task_runner_type)));
 }
 
-TaskRunnerAndroid::TaskRunnerAndroid(scoped_refptr<TaskRunner> task_runner)
-    : task_runner_(std::move(task_runner)) {}
+TaskRunnerAndroid::TaskRunnerAndroid(scoped_refptr<TaskRunner> task_runner,
+                                     TaskRunnerType type)
+    : task_runner_(std::move(task_runner)), type_(type) {}
 
 TaskRunnerAndroid::~TaskRunnerAndroid() = default;
 
@@ -63,7 +65,12 @@
 }
 
 bool TaskRunnerAndroid::BelongsToCurrentThread(JNIEnv* env) {
-  return task_runner_->RunsTasksInCurrentSequence();
+  // TODO(crbug.com/1026641): Move BelongsToCurrentThread from TaskRunnerImpl to
+  // SequencedTaskRunnerImpl on the Java side too.
+  if (type_ == TaskRunnerType::BASE)
+    return false;
+  return static_cast<SequencedTaskRunner*>(task_runner_.get())
+      ->RunsTasksInCurrentSequence();
 }
 
 }  // namespace base
diff --git a/base/android/task_scheduler/task_runner_android.h b/base/android/task_scheduler/task_runner_android.h
index 94f22c5..60985f4 100644
--- a/base/android/task_scheduler/task_runner_android.h
+++ b/base/android/task_scheduler/task_runner_android.h
@@ -17,7 +17,8 @@
 // a C++ TaskRunner.
 class TaskRunnerAndroid {
  public:
-  explicit TaskRunnerAndroid(scoped_refptr<TaskRunner> task_runner);
+  explicit TaskRunnerAndroid(scoped_refptr<TaskRunner> task_runner,
+                             TaskRunnerType type);
   ~TaskRunnerAndroid();
 
   void Destroy(JNIEnv* env);
@@ -30,6 +31,7 @@
 
  private:
   const scoped_refptr<TaskRunner> task_runner_;
+  const TaskRunnerType type_;
 
   DISALLOW_COPY_AND_ASSIGN(TaskRunnerAndroid);
 };
diff --git a/base/debug/activity_tracker.cc b/base/debug/activity_tracker.cc
index 35a24ca9..b1fe794 100644
--- a/base/debug/activity_tracker.cc
+++ b/base/debug/activity_tracker.cc
@@ -1396,9 +1396,9 @@
 }
 
 void GlobalActivityTracker::SetBackgroundTaskRunner(
-    const scoped_refptr<TaskRunner>& runner) {
+    const scoped_refptr<SequencedTaskRunner>& runner) {
   AutoLock lock(global_tracker_lock_);
-  background_task_runner_ = runner;
+  background_task_runner_ = std::move(runner);
 }
 
 void GlobalActivityTracker::SetProcessExitCallback(
@@ -1450,7 +1450,7 @@
   DCHECK_NE(GetProcessId(), pid);
   DCHECK_NE(0, pid);
 
-  scoped_refptr<TaskRunner> task_runner;
+  scoped_refptr<SequencedTaskRunner> task_runner;
   std::string command_line;
   {
     base::AutoLock lock(global_tracker_lock_);
diff --git a/base/debug/activity_tracker.h b/base/debug/activity_tracker.h
index 35460a66..0acdc8c 100644
--- a/base/debug/activity_tracker.h
+++ b/base/debug/activity_tracker.h
@@ -30,9 +30,9 @@
 #include "base/memory/shared_memory_mapping.h"
 #include "base/metrics/persistent_memory_allocator.h"
 #include "base/process/process_handle.h"
+#include "base/sequenced_task_runner.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/utf_string_conversions.h"
-#include "base/task_runner.h"
 #include "base/threading/platform_thread.h"
 #include "base/threading/thread_local.h"
 
@@ -965,7 +965,8 @@
   void ReleaseTrackerForCurrentThreadForTesting();
 
   // Sets a task-runner that can be used for background work.
-  void SetBackgroundTaskRunner(const scoped_refptr<TaskRunner>& runner);
+  void SetBackgroundTaskRunner(
+      const scoped_refptr<SequencedTaskRunner>& runner);
 
   // Sets an optional callback to be called when a process exits.
   void SetProcessExitCallback(ProcessExitCallback callback);
@@ -1222,7 +1223,7 @@
   std::map<int64_t, std::string> known_processes_;
 
   // A task-runner that can be used for doing background processing.
-  scoped_refptr<TaskRunner> background_task_runner_;
+  scoped_refptr<SequencedTaskRunner> background_task_runner_;
 
   // A callback performed when a subprocess exits, including its exit-code
   // and the phase it was in when that occurred. This will be called via
diff --git a/base/i18n/number_formatting.cc b/base/i18n/number_formatting.cc
index 0ab031ec..bb9c940c 100644
--- a/base/i18n/number_formatting.cc
+++ b/base/i18n/number_formatting.cc
@@ -85,13 +85,9 @@
       ASCIIToUTF16("{0,number,percent}"), static_cast<double>(number) / 100.0);
 }
 
-namespace testing {
-
-void ResetFormatters() {
+void ResetFormattersForTesting() {
   g_number_format_int.Get().Reset();
   g_number_format_float.Get().Reset();
 }
 
-}  // namespace testing
-
 }  // namespace base
diff --git a/base/i18n/number_formatting.h b/base/i18n/number_formatting.h
index 9636bf4..06f38abfc 100644
--- a/base/i18n/number_formatting.h
+++ b/base/i18n/number_formatting.h
@@ -25,13 +25,9 @@
 // Ex: FormatPercent(12) => "12%" in English, "12 %" in Romanian
 BASE_I18N_EXPORT string16 FormatPercent(int number);
 
-namespace testing {
-
 // Causes cached formatters to be discarded and recreated. Only useful for
 // testing.
-BASE_I18N_EXPORT void ResetFormatters();
-
-}  // namespace testing
+BASE_I18N_EXPORT void ResetFormattersForTesting();
 
 }  // namespace base
 
diff --git a/base/i18n/number_formatting_unittest.cc b/base/i18n/number_formatting_unittest.cc
index 11fdecc..2fc72a69 100644
--- a/base/i18n/number_formatting_unittest.cc
+++ b/base/i18n/number_formatting_unittest.cc
@@ -38,10 +38,10 @@
 
   for (const auto& i : cases) {
     i18n::SetICUDefaultLocale("en");
-    testing::ResetFormatters();
+    ResetFormattersForTesting();
     EXPECT_EQ(i.expected_english, UTF16ToUTF8(FormatNumber(i.number)));
     i18n::SetICUDefaultLocale("de");
-    testing::ResetFormatters();
+    ResetFormattersForTesting();
     EXPECT_EQ(i.expected_german, UTF16ToUTF8(FormatNumber(i.number)));
   }
 }
@@ -82,11 +82,11 @@
   test::ScopedRestoreICUDefaultLocale restore_locale;
   for (const auto& i : cases) {
     i18n::SetICUDefaultLocale("en");
-    testing::ResetFormatters();
+    ResetFormattersForTesting();
     EXPECT_EQ(i.expected_english,
               UTF16ToUTF8(FormatDouble(i.number, i.frac_digits)));
     i18n::SetICUDefaultLocale("de");
-    testing::ResetFormatters();
+    ResetFormattersForTesting();
     EXPECT_EQ(i.expected_german,
               UTF16ToUTF8(FormatDouble(i.number, i.frac_digits)));
   }
diff --git a/base/sampling_heap_profiler/poisson_allocation_sampler.cc b/base/sampling_heap_profiler/poisson_allocation_sampler.cc
index e3470a8..b205e7e 100644
--- a/base/sampling_heap_profiler/poisson_allocation_sampler.cc
+++ b/base/sampling_heap_profiler/poisson_allocation_sampler.cc
@@ -362,9 +362,10 @@
 #if BUILDFLAG(USE_ALLOCATOR_SHIM)
   allocator::InsertAllocatorDispatch(&g_allocator_dispatch);
 #else
+  // If the allocator shim isn't available, then we don't install any hooks.
+  // There's no point in printing an error message, since this can regularly
+  // happen for tests.
   ignore_result(g_allocator_dispatch);
-  DLOG(WARNING)
-      << "base::allocator shims are not available for memory sampling.";
 #endif  // BUILDFLAG(USE_ALLOCATOR_SHIM)
 
 #if BUILDFLAG(USE_PARTITION_ALLOC) && !defined(OS_NACL)
diff --git a/base/sequenced_task_runner.h b/base/sequenced_task_runner.h
index f03c63e0..976f87f 100644
--- a/base/sequenced_task_runner.h
+++ b/base/sequenced_task_runner.h
@@ -152,6 +152,19 @@
                                 object.release());
   }
 
+  // Returns true iff tasks posted to this TaskRunner are sequenced
+  // with this call.
+  //
+  // In particular:
+  // - Returns true if this is a SequencedTaskRunner to which the
+  //   current task was posted.
+  // - Returns true if this is a SequencedTaskRunner bound to the
+  //   same sequence as the SequencedTaskRunner to which the current
+  //   task was posted.
+  // - Returns true if this is a SingleThreadTaskRunner bound to
+  //   the current thread.
+  virtual bool RunsTasksInCurrentSequence() const = 0;
+
  protected:
   ~SequencedTaskRunner() override = default;
 
diff --git a/base/task/cancelable_task_tracker.cc b/base/task/cancelable_task_tracker.cc
index defcc997..8e97d06 100644
--- a/base/task/cancelable_task_tracker.cc
+++ b/base/task/cancelable_task_tracker.cc
@@ -14,6 +14,7 @@
 #include "base/feature_list.h"
 #include "base/location.h"
 #include "base/memory/ref_counted.h"
+#include "base/sequenced_task_runner.h"
 #include "base/task_runner.h"
 #include "base/threading/sequenced_task_runner_handle.h"
 
@@ -21,7 +22,7 @@
 
 namespace {
 
-void RunOrPostToTaskRunner(scoped_refptr<TaskRunner> task_runner,
+void RunOrPostToTaskRunner(scoped_refptr<SequencedTaskRunner> task_runner,
                            OnceClosure closure) {
   if (task_runner->RunsTasksInCurrentSequence())
     std::move(closure).Run();
@@ -163,13 +164,14 @@
 
 // static
 void CancelableTaskTracker::RunIfNotCanceled(
-    const scoped_refptr<TaskRunner>& task_runner,
+    const scoped_refptr<SequencedTaskRunner>& origin_task_runner,
     const scoped_refptr<TaskCancellationFlag>& flag,
     OnceClosure task) {
   // TODO(https://crbug.com/1009795): Ignore off-sequence cancellation, to
   // evaluate whether it is a worthwhile optimization.
-  if (flag->data.IsSet() && (AllowOffSequenceTaskCancelation() ||
-                             task_runner->RunsTasksInCurrentSequence())) {
+  if (flag->data.IsSet() &&
+      (AllowOffSequenceTaskCancelation() ||
+       origin_task_runner->RunsTasksInCurrentSequence())) {
     return;
   }
   std::move(task).Run();
@@ -177,21 +179,22 @@
 
 // static
 void CancelableTaskTracker::RunThenUntrackIfNotCanceled(
-    const scoped_refptr<TaskRunner>& task_runner,
+    const scoped_refptr<SequencedTaskRunner>& origin_task_runner,
     const scoped_refptr<TaskCancellationFlag>& flag,
     OnceClosure task,
     OnceClosure untrack) {
-  RunIfNotCanceled(task_runner, flag, std::move(task));
-  RunIfNotCanceled(task_runner, flag, std::move(untrack));
+  RunIfNotCanceled(origin_task_runner, flag, std::move(task));
+  RunIfNotCanceled(origin_task_runner, flag, std::move(untrack));
 }
 
 // static
 bool CancelableTaskTracker::IsCanceled(
-    const scoped_refptr<TaskRunner>& task_runner,
+    const scoped_refptr<SequencedTaskRunner>& origin_task_runner,
     const scoped_refptr<TaskCancellationFlag>& flag,
     const ScopedClosureRunner& cleanup_runner) {
-  return flag->data.IsSet() && (AllowOffSequenceTaskCancelation() ||
-                                task_runner->RunsTasksInCurrentSequence());
+  return flag->data.IsSet() &&
+         (AllowOffSequenceTaskCancelation() ||
+          origin_task_runner->RunsTasksInCurrentSequence());
 }
 
 void CancelableTaskTracker::Track(TaskId id,
diff --git a/base/task/cancelable_task_tracker.h b/base/task/cancelable_task_tracker.h
index 98132c9..92df28d8 100644
--- a/base/task/cancelable_task_tracker.h
+++ b/base/task/cancelable_task_tracker.h
@@ -138,17 +138,19 @@
   // See https://crbug.com/918948.
   using TaskCancellationFlag = RefCountedData<AtomicFlag>;
 
-  static void RunIfNotCanceled(const scoped_refptr<TaskRunner>& task_runner,
-                               const scoped_refptr<TaskCancellationFlag>& flag,
-                               OnceClosure task);
+  static void RunIfNotCanceled(
+      const scoped_refptr<SequencedTaskRunner>& origin_task_runner,
+      const scoped_refptr<TaskCancellationFlag>& flag,
+      OnceClosure task);
   static void RunThenUntrackIfNotCanceled(
-      const scoped_refptr<TaskRunner>& task_runner,
+      const scoped_refptr<SequencedTaskRunner>& origin_task_runner,
       const scoped_refptr<TaskCancellationFlag>& flag,
       OnceClosure task,
       OnceClosure untrack);
-  static bool IsCanceled(const scoped_refptr<TaskRunner>& task_runner,
-                         const scoped_refptr<TaskCancellationFlag>& flag,
-                         const ScopedClosureRunner& cleanup_runner);
+  static bool IsCanceled(
+      const scoped_refptr<SequencedTaskRunner>& origin_task_runner,
+      const scoped_refptr<TaskCancellationFlag>& flag,
+      const ScopedClosureRunner& cleanup_runner);
 
   void Track(TaskId id, scoped_refptr<TaskCancellationFlag> flag);
   void Untrack(TaskId id);
diff --git a/base/task/sequence_manager/sequence_manager_impl_unittest.cc b/base/task/sequence_manager/sequence_manager_impl_unittest.cc
index a273918..2755e94 100644
--- a/base/task/sequence_manager/sequence_manager_impl_unittest.cc
+++ b/base/task/sequence_manager/sequence_manager_impl_unittest.cc
@@ -17,7 +17,6 @@
 #include "base/location.h"
 #include "base/memory/ref_counted_memory.h"
 #include "base/memory/scoped_refptr.h"
-#include "base/message_loop/message_loop.h"
 #include "base/message_loop/message_loop_current.h"
 #include "base/message_loop/message_pump_default.h"
 #include "base/message_loop/message_pump_type.h"
@@ -30,6 +29,7 @@
 #include "base/synchronization/waitable_event.h"
 #include "base/task/sequence_manager/real_time_domain.h"
 #include "base/task/sequence_manager/sequence_manager.h"
+#include "base/task/sequence_manager/task_queue.h"
 #include "base/task/sequence_manager/task_queue_impl.h"
 #include "base/task/sequence_manager/task_queue_selector.h"
 #include "base/task/sequence_manager/tasks.h"
@@ -45,6 +45,7 @@
 #include "base/test/mock_callback.h"
 #include "base/test/null_task_runner.h"
 #include "base/test/simple_test_tick_clock.h"
+#include "base/test/task_environment.h"
 #include "base/test/test_mock_time_task_runner.h"
 #include "base/test/test_simple_task_runner.h"
 #include "base/test/trace_event_analyzer.h"
@@ -76,7 +77,6 @@
 
 enum class TestType {
   kMockTaskRunner,
-  kMessageLoop,
   kMessagePump,
 };
 
@@ -86,8 +86,6 @@
       return "kMockTaskRunner";
     case TestType::kMessagePump:
       return "kMessagePump";
-    case TestType::kMessageLoop:
-      return "kMessageLoop";
   }
 }
 
@@ -228,12 +226,11 @@
 
     auto pump = std::make_unique<MockTimeMessagePump>(&mock_clock_);
     pump_ = pump.get();
-    auto settings =
-        SequenceManager::Settings::Builder()
-            .SetMessagePumpType(MessagePumpType::DEFAULT)
-            .SetRandomisedSamplingEnabled(false)
-            .SetTickClock(mock_tick_clock())
-            .Build();
+    auto settings = SequenceManager::Settings::Builder()
+                        .SetMessagePumpType(MessagePumpType::DEFAULT)
+                        .SetRandomisedSamplingEnabled(false)
+                        .SetTickClock(mock_tick_clock())
+                        .Build();
     sequence_manager_ = SequenceManagerForTest::Create(
         std::make_unique<ThreadControllerWithMessagePumpImpl>(std::move(pump),
                                                               settings),
@@ -300,97 +297,6 @@
   std::unique_ptr<SequenceManagerForTest> sequence_manager_;
 };
 
-class FixtureWithMessageLoop : public Fixture {
- public:
-  explicit FixtureWithMessageLoop()
-      : call_counting_clock_(&mock_clock_),
-        auto_reset_global_clock_(&global_clock_, &call_counting_clock_) {
-    // A null clock triggers some assertions.
-    mock_clock_.Advance(TimeDelta::FromMilliseconds(1));
-    scoped_clock_override_ =
-        std::make_unique<base::subtle::ScopedTimeClockOverrides>(
-            nullptr, TicksNowOverride, nullptr);
-
-    auto pump = std::make_unique<MockTimeMessagePump>(&mock_clock_);
-    pump_ = pump.get();
-    message_loop_ = std::make_unique<MessageLoop>(std::move(pump));
-
-    sequence_manager_ = SequenceManagerForTest::CreateOnCurrentThread(
-        SequenceManager::Settings::Builder()
-            .SetMessagePumpType(MessagePumpType::DEFAULT)
-            .SetRandomisedSamplingEnabled(false)
-            .SetTickClock(mock_tick_clock())
-            .Build());
-
-    // The SequenceManager constructor calls Now() once for setting up
-    // housekeeping. The MessageLoop also contains a SequenceManager so two
-    // calls are expected.
-    EXPECT_EQ(2, GetNowTicksCallCount());
-    call_counting_clock_.Reset();
-  }
-
-  void AdvanceMockTickClock(TimeDelta delta) override {
-    mock_clock_.Advance(delta);
-  }
-
-  const TickClock* mock_tick_clock() const override {
-    return &call_counting_clock_;
-  }
-
-  TimeDelta NextPendingTaskDelay() const override {
-    return pump_->next_wake_up_time() - mock_tick_clock()->NowTicks();
-  }
-
-  void FastForwardBy(TimeDelta delta) override {
-    pump_->SetAllowTimeToAutoAdvanceUntil(mock_tick_clock()->NowTicks() +
-                                          delta);
-    pump_->SetStopWhenMessagePumpIsIdle(true);
-    RunLoop().Run();
-    pump_->SetStopWhenMessagePumpIsIdle(false);
-  }
-
-  void FastForwardUntilNoTasksRemain() override {
-    pump_->SetAllowTimeToAutoAdvanceUntil(TimeTicks::Max());
-    pump_->SetStopWhenMessagePumpIsIdle(true);
-    RunLoop().Run();
-    pump_->SetStopWhenMessagePumpIsIdle(false);
-    pump_->SetAllowTimeToAutoAdvanceUntil(mock_tick_clock()->NowTicks());
-  }
-
-  void RunDoWorkOnce() override {
-    pump_->SetQuitAfterDoSomeWork(true);
-    RunLoop().Run();
-    pump_->SetQuitAfterDoSomeWork(false);
-  }
-
-  SequenceManagerForTest* sequence_manager() const override {
-    return sequence_manager_.get();
-  }
-
-  void DestroySequenceManager() override {
-    pump_ = nullptr;
-    sequence_manager_.reset();
-  }
-
-  int GetNowTicksCallCount() override {
-    return call_counting_clock_.now_call_count();
-  }
-
- private:
-  static TickClock* global_clock_;
-  static TimeTicks TicksNowOverride() { return global_clock_->NowTicks(); }
-  SimpleTestTickClock mock_clock_;
-  CallCountingTickClock call_counting_clock_;
-  AutoReset<TickClock*> auto_reset_global_clock_;
-  std::unique_ptr<base::subtle::ScopedTimeClockOverrides>
-      scoped_clock_override_;
-  std::unique_ptr<MessageLoop> message_loop_;
-  MockTimeMessagePump* pump_ = nullptr;
-  std::unique_ptr<SequenceManagerForTest> sequence_manager_;
-};
-
-TickClock* FixtureWithMessageLoop::global_clock_;
-
 // Convenience wrapper around the fixtures so that we can use parametrized tests
 // instead of templated ones. The latter would be more verbose as all method
 // calls to the fixture would need to be like this->method()
@@ -405,9 +311,6 @@
       case TestType::kMessagePump:
         fixture_ = std::make_unique<FixtureWithMockMessagePump>();
         break;
-      case TestType::kMessageLoop:
-        fixture_ = std::make_unique<FixtureWithMessageLoop>();
-        break;
       default:
         NOTREACHED();
     }
@@ -486,7 +389,6 @@
 INSTANTIATE_TEST_SUITE_P(All,
                          SequenceManagerTest,
                          testing::Values(TestType::kMockTaskRunner,
-                                         TestType::kMessageLoop,
                                          TestType::kMessagePump),
                          GetTestNameSuffix);
 
@@ -3291,10 +3193,6 @@
       EXPECT_EQ(TimeDelta::FromDays(1), NextPendingTaskDelay());
       break;
 
-    case TestType::kMessageLoop:
-      EXPECT_EQ(TimeDelta::FromMilliseconds(1), NextPendingTaskDelay());
-      break;
-
     case TestType::kMockTaskRunner:
       EXPECT_EQ(TimeDelta::Max(), NextPendingTaskDelay());
       break;
@@ -3326,18 +3224,10 @@
   EXPECT_EQ(TimeDelta::FromMilliseconds(1), NextPendingTaskDelay());
 
   voter0->SetVoteToEnable(false);
-  if (GetUnderlyingRunnerType() == TestType::kMessageLoop) {
-    EXPECT_EQ(TimeDelta::FromMilliseconds(1), NextPendingTaskDelay());
-  } else {
-    EXPECT_EQ(TimeDelta::FromMilliseconds(10), NextPendingTaskDelay());
-  }
+  EXPECT_EQ(TimeDelta::FromMilliseconds(10), NextPendingTaskDelay());
 
   voter1->SetVoteToEnable(false);
-  if (GetUnderlyingRunnerType() == TestType::kMessageLoop) {
-    EXPECT_EQ(TimeDelta::FromMilliseconds(1), NextPendingTaskDelay());
-  } else {
-    EXPECT_EQ(TimeDelta::FromMilliseconds(100), NextPendingTaskDelay());
-  }
+  EXPECT_EQ(TimeDelta::FromMilliseconds(100), NextPendingTaskDelay());
 
   voter2->SetVoteToEnable(false);
   switch (GetUnderlyingRunnerType()) {
@@ -3345,10 +3235,6 @@
       EXPECT_EQ(TimeDelta::FromDays(1), NextPendingTaskDelay());
       break;
 
-    case TestType::kMessageLoop:
-      EXPECT_EQ(TimeDelta::FromMilliseconds(1), NextPendingTaskDelay());
-      break;
-
     case TestType::kMockTaskRunner:
       EXPECT_EQ(TimeDelta::Max(), NextPendingTaskDelay());
       break;
@@ -3675,8 +3561,7 @@
   // thread.
   DestroySequenceManager();
 
-  if (GetUnderlyingRunnerType() != TestType::kMessagePump &&
-      GetUnderlyingRunnerType() != TestType::kMessageLoop) {
+  if (GetUnderlyingRunnerType() != TestType::kMessagePump) {
     FastForwardUntilNoTasksRemain();
   }
 
@@ -3719,8 +3604,7 @@
   // Ensure that all queues-to-gracefully-shutdown are properly unregistered.
   DestroySequenceManager();
 
-  if (GetUnderlyingRunnerType() != TestType::kMessagePump &&
-      GetUnderlyingRunnerType() != TestType::kMessageLoop) {
+  if (GetUnderlyingRunnerType() != TestType::kMessagePump) {
     FastForwardUntilNoTasksRemain();
   }
 
@@ -3731,9 +3615,15 @@
 }
 
 TEST(SequenceManagerBasicTest, DefaultTaskRunnerSupport) {
-  MessageLoop message_loop;
+  auto base_sequence_manager =
+      sequence_manager::CreateSequenceManagerOnCurrentThreadWithPump(
+          MessagePump::Create(MessagePumpType::DEFAULT));
+  auto queue = base_sequence_manager->CreateTaskQueue(
+      sequence_manager::TaskQueue::Spec("default_tq"));
+  base_sequence_manager->SetDefaultTaskRunner(queue->task_runner());
+
   scoped_refptr<SingleThreadTaskRunner> original_task_runner =
-      message_loop.task_runner();
+      ThreadTaskRunnerHandle::Get();
   scoped_refptr<SingleThreadTaskRunner> custom_task_runner =
       MakeRefCounted<TestSimpleTaskRunner>();
   {
@@ -3741,9 +3631,9 @@
         CreateSequenceManagerOnCurrentThread(SequenceManager::Settings());
 
     manager->SetDefaultTaskRunner(custom_task_runner);
-    DCHECK_EQ(custom_task_runner, message_loop.task_runner());
+    DCHECK_EQ(custom_task_runner, ThreadTaskRunnerHandle::Get());
   }
-  DCHECK_EQ(original_task_runner, message_loop.task_runner());
+  DCHECK_EQ(original_task_runner, ThreadTaskRunnerHandle::Get());
 }
 
 TEST_P(SequenceManagerTest, CanceledTasksInQueueCantMakeOtherTasksSkipAhead) {
diff --git a/base/task/thread_pool/delayed_task_manager.cc b/base/task/thread_pool/delayed_task_manager.cc
index 502b18e..3b0d3d5 100644
--- a/base/task/thread_pool/delayed_task_manager.cc
+++ b/base/task/thread_pool/delayed_task_manager.cc
@@ -8,6 +8,7 @@
 
 #include "base/bind.h"
 #include "base/logging.h"
+#include "base/sequenced_task_runner.h"
 #include "base/task/post_task.h"
 #include "base/task/thread_pool/task.h"
 #include "base/task_runner.h"
@@ -60,7 +61,7 @@
 DelayedTaskManager::~DelayedTaskManager() = default;
 
 void DelayedTaskManager::Start(
-    scoped_refptr<TaskRunner> service_thread_task_runner) {
+    scoped_refptr<SequencedTaskRunner> service_thread_task_runner) {
   DCHECK(service_thread_task_runner);
 
   TimeTicks process_ripe_tasks_time;
diff --git a/base/task/thread_pool/delayed_task_manager.h b/base/task/thread_pool/delayed_task_manager.h
index 11f24fa..f7ac6f03 100644
--- a/base/task/thread_pool/delayed_task_manager.h
+++ b/base/task/thread_pool/delayed_task_manager.h
@@ -24,7 +24,7 @@
 
 namespace base {
 
-class TaskRunner;
+class SequencedTaskRunner;
 
 namespace internal {
 
@@ -45,7 +45,7 @@
   // forwarded to their callbacks as they become ripe for execution.
   // |service_thread_task_runner| posts tasks to the ThreadPool service
   // thread.
-  void Start(scoped_refptr<TaskRunner> service_thread_task_runner);
+  void Start(scoped_refptr<SequencedTaskRunner> service_thread_task_runner);
 
   // Schedules a call to |post_task_now_callback| with |task| as argument when
   // |task| is ripe for execution. |task_runner| is passed to retain a
@@ -123,7 +123,7 @@
   // that it is non-null.
   mutable CheckedLock queue_lock_;
 
-  scoped_refptr<TaskRunner> service_thread_task_runner_;
+  scoped_refptr<SequencedTaskRunner> service_thread_task_runner_;
 
   IntrusiveHeap<DelayedTask> delayed_task_queue_ GUARDED_BY(queue_lock_);
 
diff --git a/base/task/thread_pool/pooled_parallel_task_runner.cc b/base/task/thread_pool/pooled_parallel_task_runner.cc
index 8eed8660..3a8a9065 100644
--- a/base/task/thread_pool/pooled_parallel_task_runner.cc
+++ b/base/task/thread_pool/pooled_parallel_task_runner.cc
@@ -37,10 +37,6 @@
       Task(from_here, std::move(closure), delay), std::move(sequence));
 }
 
-bool PooledParallelTaskRunner::RunsTasksInCurrentSequence() const {
-  return pooled_task_runner_delegate_->IsRunningPoolWithTraits(traits_);
-}
-
 void PooledParallelTaskRunner::UnregisterSequence(Sequence* sequence) {
   DCHECK(sequence);
 
diff --git a/base/task/thread_pool/pooled_parallel_task_runner.h b/base/task/thread_pool/pooled_parallel_task_runner.h
index 672499a..3277bd3 100644
--- a/base/task/thread_pool/pooled_parallel_task_runner.h
+++ b/base/task/thread_pool/pooled_parallel_task_runner.h
@@ -34,8 +34,6 @@
                        OnceClosure closure,
                        TimeDelta delay) override;
 
-  bool RunsTasksInCurrentSequence() const override;
-
   // Removes |sequence| from |sequences_|.
   void UnregisterSequence(Sequence* sequence);
 
diff --git a/base/task/thread_pool/pooled_task_runner_delegate.h b/base/task/thread_pool/pooled_task_runner_delegate.h
index 0ec1b87..b4db5e33 100644
--- a/base/task/thread_pool/pooled_task_runner_delegate.h
+++ b/base/task/thread_pool/pooled_task_runner_delegate.h
@@ -50,11 +50,6 @@
   virtual void RemoveJobTaskSource(
       scoped_refptr<JobTaskSource> task_source) = 0;
 
-  // Invoked when RunsTasksInCurrentSequence() is called on a
-  // PooledParallelTaskRunner. Returns true if the current thread is part of the
-  // ThreadGroup associated with |traits|.
-  virtual bool IsRunningPoolWithTraits(const TaskTraits& traits) const = 0;
-
   // Invoked when the priority of |sequence|'s TaskRunner is updated. The
   // implementation must update |sequence|'s priority to |priority|, then place
   // |sequence| in the correct priority-queue position within the appropriate
diff --git a/base/task/thread_pool/test_task_factory.cc b/base/task/thread_pool/test_task_factory.cc
index 681014a..c1b84cc 100644
--- a/base/task/thread_pool/test_task_factory.cc
+++ b/base/task/thread_pool/test_task_factory.cc
@@ -53,7 +53,11 @@
   if (post_nested_task == PostNestedTask::YES)
     PostTask(PostNestedTask::NO, OnceClosure());
 
-  EXPECT_TRUE(task_runner_->RunsTasksInCurrentSequence());
+  if (execution_mode_ == TaskSourceExecutionMode::kSingleThread ||
+      execution_mode_ == TaskSourceExecutionMode::kSequenced) {
+    EXPECT_TRUE(static_cast<SequencedTaskRunner*>(task_runner_.get())
+                    ->RunsTasksInCurrentSequence());
+  }
 
   // Verify TaskRunnerHandles are set as expected in the task's scope.
   switch (execution_mode_) {
diff --git a/base/task/thread_pool/test_task_factory.h b/base/task/thread_pool/test_task_factory.h
index 042ae72..bc32a73 100644
--- a/base/task/thread_pool/test_task_factory.h
+++ b/base/task/thread_pool/test_task_factory.h
@@ -25,8 +25,9 @@
 
 // A TestTaskFactory posts tasks to a TaskRunner and verifies that they run as
 // expected. Generates a test failure when:
-// - The RunsTasksInCurrentSequence() method of the TaskRunner returns false on
-//   a thread on which a Task is run.
+// - The RunsTasksInCurrentSequence() method of the SequencedTaskRunner
+//   (kSequenced or kSingleThread modes) returns false on a thread on which a
+//   Task is run.
 // - The TaskRunnerHandles set in the context of the task don't match what's
 //   expected for the tested TaskSourceExecutionMode.
 // - The TaskSourceExecutionMode of the TaskRunner is kSequenced or
diff --git a/base/task/thread_pool/test_utils.cc b/base/task/thread_pool/test_utils.cc
index d623637..c947bbf 100644
--- a/base/task/thread_pool/test_utils.cc
+++ b/base/task/thread_pool/test_utils.cc
@@ -36,8 +36,6 @@
                        OnceClosure closure,
                        TimeDelta delay) override;
 
-  bool RunsTasksInCurrentSequence() const override;
-
  private:
   ~MockJobTaskRunner() override;
 
@@ -62,10 +60,6 @@
       std::move(task_source));
 }
 
-bool MockJobTaskRunner::RunsTasksInCurrentSequence() const {
-  return pooled_task_runner_delegate_->IsRunningPoolWithTraits(traits_);
-}
-
 MockJobTaskRunner::~MockJobTaskRunner() = default;
 
 scoped_refptr<TaskRunner> CreateJobTaskRunner(
@@ -244,15 +238,6 @@
   thread_group_->RemoveTaskSource(*task_source);
 }
 
-bool MockPooledTaskRunnerDelegate::IsRunningPoolWithTraits(
-    const TaskTraits& traits) const {
-  // |thread_group_| must be initialized with SetThreadGroup() before
-  // proceeding.
-  DCHECK(thread_group_);
-
-  return thread_group_->IsBoundToCurrentThread();
-}
-
 void MockPooledTaskRunnerDelegate::UpdatePriority(
     scoped_refptr<TaskSource> task_source,
     TaskPriority priority) {
diff --git a/base/task/thread_pool/test_utils.h b/base/task/thread_pool/test_utils.h
index ebdfbe2..443d2843 100644
--- a/base/task/thread_pool/test_utils.h
+++ b/base/task/thread_pool/test_utils.h
@@ -64,7 +64,6 @@
   bool EnqueueJobTaskSource(scoped_refptr<JobTaskSource> task_source) override;
   void RemoveJobTaskSource(scoped_refptr<JobTaskSource> task_source) override;
   bool ShouldYield(const TaskSource* task_source) const override;
-  bool IsRunningPoolWithTraits(const TaskTraits& traits) const override;
   void UpdatePriority(scoped_refptr<TaskSource> task_source,
                       TaskPriority priority) override;
 
diff --git a/base/task/thread_pool/thread_group_impl.cc b/base/task/thread_pool/thread_group_impl.cc
index c6865d6..361e22c7 100644
--- a/base/task/thread_pool/thread_group_impl.cc
+++ b/base/task/thread_pool/thread_group_impl.cc
@@ -409,7 +409,7 @@
     int max_tasks,
     int max_best_effort_tasks,
     TimeDelta suggested_reclaim_time,
-    scoped_refptr<TaskRunner> service_thread_task_runner,
+    scoped_refptr<SequencedTaskRunner> service_thread_task_runner,
     WorkerThreadObserver* worker_thread_observer,
     WorkerEnvironment worker_environment,
     Optional<TimeDelta> may_block_threshold) {
diff --git a/base/task/thread_pool/thread_group_impl.h b/base/task/thread_pool/thread_group_impl.h
index 8b6edef..a2957c1 100644
--- a/base/task/thread_pool/thread_group_impl.h
+++ b/base/task/thread_pool/thread_group_impl.h
@@ -19,6 +19,7 @@
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/optional.h"
+#include "base/sequenced_task_runner.h"
 #include "base/strings/string_piece.h"
 #include "base/synchronization/condition_variable.h"
 #include "base/synchronization/waitable_event.h"
@@ -28,7 +29,6 @@
 #include "base/task/thread_pool/tracked_ref.h"
 #include "base/task/thread_pool/worker_thread.h"
 #include "base/task/thread_pool/worker_thread_stack.h"
-#include "base/task_runner.h"
 #include "base/time/time.h"
 
 namespace base {
@@ -77,7 +77,7 @@
   void Start(int max_tasks,
              int max_best_effort_tasks,
              TimeDelta suggested_reclaim_time,
-             scoped_refptr<TaskRunner> service_thread_task_runner,
+             scoped_refptr<SequencedTaskRunner> service_thread_task_runner,
              WorkerThreadObserver* worker_thread_observer,
              WorkerEnvironment worker_environment,
              Optional<TimeDelta> may_block_threshold = Optional<TimeDelta>());
@@ -239,7 +239,7 @@
     // Environment to be initialized per worker.
     WorkerEnvironment worker_environment = WorkerEnvironment::NONE;
 
-    scoped_refptr<TaskRunner> service_thread_task_runner;
+    scoped_refptr<SequencedTaskRunner> service_thread_task_runner;
 
     // Optional observer notified when a worker enters and exits its main.
     WorkerThreadObserver* worker_thread_observer = nullptr;
diff --git a/base/task/thread_pool/thread_group_impl_unittest.cc b/base/task/thread_pool/thread_group_impl_unittest.cc
index 4b4efdb5..800a7d5e 100644
--- a/base/task/thread_pool/thread_group_impl_unittest.cc
+++ b/base/task/thread_pool/thread_group_impl_unittest.cc
@@ -186,8 +186,6 @@
 
  private:
   void Run() override {
-    EXPECT_FALSE(factory_.task_runner()->RunsTasksInCurrentSequence());
-
     for (size_t i = 0; i < kNumTasksPostedPerThread; ++i) {
       thread_group_->WaitForAllWorkersIdleForTesting();
       EXPECT_TRUE(factory_.PostTask(PostNestedTask::NO, OnceClosure()));
diff --git a/base/task/thread_pool/thread_group_unittest.cc b/base/task/thread_pool/thread_group_unittest.cc
index 3ed430a..2d6412a 100644
--- a/base/task/thread_pool/thread_group_unittest.cc
+++ b/base/task/thread_pool/thread_group_unittest.cc
@@ -83,8 +83,6 @@
 
  private:
   void Run() override {
-    EXPECT_FALSE(factory_.task_runner()->RunsTasksInCurrentSequence());
-
     for (size_t i = 0; i < kNumTasksPostedPerThread; ++i)
       EXPECT_TRUE(factory_.PostTask(post_nested_task_, OnceClosure()));
   }
@@ -328,7 +326,7 @@
   task_runner->PostTask(
       FROM_HERE,
       BindOnce(
-          [](scoped_refptr<TaskRunner> sequenced_task_runner,
+          [](scoped_refptr<SequencedTaskRunner> sequenced_task_runner,
              WaitableEvent* task_ran) {
             EXPECT_FALSE(sequenced_task_runner->RunsTasksInCurrentSequence());
             task_ran->Signal();
diff --git a/base/task/thread_pool/thread_pool_impl.cc b/base/task/thread_pool/thread_pool_impl.cc
index 57546e8..7e49ee8 100644
--- a/base/task/thread_pool/thread_pool_impl.cc
+++ b/base/task/thread_pool/thread_pool_impl.cc
@@ -171,8 +171,7 @@
   UpdateCanRunPolicy();
 
   // Needs to happen after starting the service thread to get its task_runner().
-  scoped_refptr<TaskRunner> service_thread_task_runner =
-      service_thread_->task_runner();
+  auto service_thread_task_runner = service_thread_->task_runner();
   delayed_task_manager_.Start(service_thread_task_runner);
 
   single_thread_task_runner_manager_.Start(worker_thread_observer);
@@ -467,10 +466,6 @@
   current_thread_group->RemoveTaskSource(*task_source);
 }
 
-bool ThreadPoolImpl::IsRunningPoolWithTraits(const TaskTraits& traits) const {
-  return GetThreadGroupForTraits(traits)->IsBoundToCurrentThread();
-}
-
 void ThreadPoolImpl::UpdatePriority(scoped_refptr<TaskSource> task_source,
                                     TaskPriority priority) {
   auto transaction = task_source->BeginTransaction();
diff --git a/base/task/thread_pool/thread_pool_impl.h b/base/task/thread_pool/thread_pool_impl.h
index 9e7c2d7..b4cfc49ac 100644
--- a/base/task/thread_pool/thread_pool_impl.h
+++ b/base/task/thread_pool/thread_pool_impl.h
@@ -145,7 +145,6 @@
   // PooledTaskRunnerDelegate:
   bool PostTaskWithSequence(Task task,
                             scoped_refptr<Sequence> sequence) override;
-  bool IsRunningPoolWithTraits(const TaskTraits& traits) const override;
   bool ShouldYield(const TaskSource* task_source) const override;
 
   const std::unique_ptr<TaskTrackerImpl> task_tracker_;
diff --git a/base/task/thread_pool/thread_pool_impl_unittest.cc b/base/task/thread_pool/thread_pool_impl_unittest.cc
index bd5da23..dfa1775 100644
--- a/base/task/thread_pool/thread_pool_impl_unittest.cc
+++ b/base/task/thread_pool/thread_pool_impl_unittest.cc
@@ -204,8 +204,6 @@
 
  private:
   void Run() override {
-    EXPECT_FALSE(factory_.task_runner()->RunsTasksInCurrentSequence());
-
     const size_t kNumTasksPerThread = 150;
     for (size_t i = 0; i < kNumTasksPerThread; ++i) {
       factory_.PostTask(test::TestTaskFactory::PostNestedTask::NO,
@@ -402,7 +400,6 @@
       CreateTaskRunnerAndExecutionMode(thread_pool_.get(), GetTraits(),
                                        GetExecutionMode()),
       GetExecutionMode());
-  EXPECT_FALSE(factory.task_runner()->RunsTasksInCurrentSequence());
 
   const size_t kNumTasksPerTest = 150;
   for (size_t i = 0; i < kNumTasksPerTest; ++i) {
@@ -826,7 +823,7 @@
   single_thread_task_runner->PostTask(
       FROM_HERE,
       BindOnce(
-          [](scoped_refptr<TaskRunner> sequenced_task_runner,
+          [](scoped_refptr<SequencedTaskRunner> sequenced_task_runner,
              WaitableEvent* task_ran) {
             EXPECT_FALSE(sequenced_task_runner->RunsTasksInCurrentSequence());
             task_ran->Signal();
@@ -849,7 +846,7 @@
   sequenced_task_runner->PostTask(
       FROM_HERE,
       BindOnce(
-          [](scoped_refptr<TaskRunner> single_thread_task_runner,
+          [](scoped_refptr<SingleThreadTaskRunner> single_thread_task_runner,
              WaitableEvent* task_ran) {
             EXPECT_FALSE(
                 single_thread_task_runner->RunsTasksInCurrentSequence());
diff --git a/base/task_runner.h b/base/task_runner.h
index 8c2e5d19..8abf5ef 100644
--- a/base/task_runner.h
+++ b/base/task_runner.h
@@ -70,24 +70,6 @@
                                OnceClosure task,
                                base::TimeDelta delay) = 0;
 
-  // Returns true iff tasks posted to this TaskRunner are sequenced
-  // with this call.
-  //
-  // In particular:
-  // - Returns true if this is a SequencedTaskRunner to which the
-  //   current task was posted.
-  // - Returns true if this is a SequencedTaskRunner bound to the
-  //   same sequence as the SequencedTaskRunner to which the current
-  //   task was posted.
-  // - Returns true if this is a SingleThreadTaskRunner bound to
-  //   the current thread.
-  // TODO(http://crbug.com/665062):
-  //   This API doesn't make sense for parallel TaskRunners.
-  //   Introduce alternate static APIs for documentation purposes of "this runs
-  //   in pool X", have RunsTasksInCurrentSequence() return false for parallel
-  //   TaskRunners, and ultimately move this method down to SequencedTaskRunner.
-  virtual bool RunsTasksInCurrentSequence() const = 0;
-
   // Posts |task| on the current TaskRunner.  On completion, |reply|
   // is posted to the thread that called PostTaskAndReply().  Both
   // |task| and |reply| are guaranteed to be deleted on the thread
diff --git a/base/test/android/javatests/src/org/chromium/base/test/BundleTestRule.java b/base/test/android/javatests/src/org/chromium/base/test/BundleTestRule.java
index 9ab0024..9e1db3e3 100644
--- a/base/test/android/javatests/src/org/chromium/base/test/BundleTestRule.java
+++ b/base/test/android/javatests/src/org/chromium/base/test/BundleTestRule.java
@@ -8,7 +8,7 @@
 import org.junit.runner.Description;
 import org.junit.runners.model.Statement;
 
-import org.chromium.base.BundleUtils;
+import org.chromium.base.BuildConfig;
 
 /**
  * Ensures that BundleUtils#isBundle returns true for the duration of the test.
@@ -19,12 +19,12 @@
         return new Statement() {
             @Override
             public void evaluate() throws Throwable {
-                boolean oldValue = BundleUtils.isBundle();
+                boolean oldValue = BuildConfig.IS_BUNDLE;
                 try {
-                    BundleUtils.setIsBundle(true);
+                    BuildConfig.IS_BUNDLE = true;
                     base.evaluate();
                 } finally {
-                    BundleUtils.setIsBundle(oldValue);
+                    BuildConfig.IS_BUNDLE = oldValue;
                 }
             }
         };
diff --git a/base/test/task_runner_test_template.cc b/base/test/task_runner_test_template.cc
index 2a22194..e92e8467 100644
--- a/base/test/task_runner_test_template.cc
+++ b/base/test/task_runner_test_template.cc
@@ -37,11 +37,6 @@
     task_runs_cv_.Wait();
 }
 
-void ExpectRunsTasksInCurrentSequence(bool expected_value,
-                                      TaskRunner* task_runner) {
-  EXPECT_EQ(expected_value, task_runner->RunsTasksInCurrentSequence());
-}
-
 }  // namespace test
 
 }  // namespace base
diff --git a/base/trace_event/builtin_categories.h b/base/trace_event/builtin_categories.h
index 095c6255..3a672366 100644
--- a/base/trace_event/builtin_categories.h
+++ b/base/trace_event/builtin_categories.h
@@ -106,6 +106,7 @@
   X("omnibox")                                                           \
   X("oobe")                                                              \
   X("ozone")                                                             \
+  X("passwords")                                                         \
   X("p2p")                                                               \
   X("page-serialization")                                                \
   X("pepper")                                                            \
diff --git a/base/trace_event/memory_dump_scheduler_unittest.cc b/base/trace_event/memory_dump_scheduler_unittest.cc
index 8fd4812..62db90d9 100644
--- a/base/trace_event/memory_dump_scheduler_unittest.cc
+++ b/base/trace_event/memory_dump_scheduler_unittest.cc
@@ -169,7 +169,7 @@
   config.callback =
       BindRepeating(&CallbackWrapper::OnTick, Unretained(&on_tick_));
 
-  scoped_refptr<TaskRunner> expected_task_runner = bg_thread_.task_runner();
+  auto expected_task_runner = bg_thread_.task_runner();
   testing::InSequence sequence;
   EXPECT_CALL(on_tick_, OnTick(_)).Times(kTicks - 1);
   EXPECT_CALL(on_tick_, OnTick(_))
diff --git a/build/android/gyp/compile_java.py b/build/android/gyp/compile_java.py
index 67e70ae..b75dbee8 100755
--- a/build/android/gyp/compile_java.py
+++ b/build/android/gyp/compile_java.py
@@ -293,7 +293,6 @@
   def _Collect(self):
     if self._pool is None:
       return {}
-    self._pool.close()
     ret = {}
     for result in self._results:
       for java_file, package_name, class_names in result:
@@ -302,8 +301,18 @@
                                                       class_names, source):
           if self._ShouldIncludeInJarInfo(fully_qualified_name):
             ret[fully_qualified_name] = java_file
+    self._pool.terminate()
     return ret
 
+  def __del__(self):
+    # Work around for Python 2.x bug with multiprocessing and daemon threads:
+    # https://bugs.python.org/issue4106
+    if self._pool is not None:
+      logging.info('Joining multiprocessing.Pool')
+      self._pool.terminate()
+      self._pool.join()
+      logging.info('Done.')
+
   def Commit(self, output_path):
     """Writes a .jar.info file.
 
diff --git a/build/android/gyp/compile_resources.py b/build/android/gyp/compile_resources.py
index 998a65bc..8c2f41c 100755
--- a/build/android/gyp/compile_resources.py
+++ b/build/android/gyp/compile_resources.py
@@ -259,14 +259,6 @@
   return options
 
 
-def _SortZip(original_path, sorted_path):
-  """Generate new zip archive by sorting all files in the original by name."""
-  with zipfile.ZipFile(sorted_path, 'w') as sorted_zip, \
-      zipfile.ZipFile(original_path, 'r') as original_zip:
-    for info in sorted(original_zip.infolist(), key=lambda i: i.filename):
-      sorted_zip.writestr(info, original_zip.read(info))
-
-
 def _IterFiles(root_dir):
   for root, _, files in os.walk(root_dir):
     for f in files:
@@ -587,14 +579,7 @@
         stderr_filter=lambda output:
             build_utils.FilterLines(
                 output, r'ignoring configuration .* for (styleable|attribute)'))
-
-    # Sorting the files in the partial ensures deterministic output from the
-    # aapt2 link step which uses order of files in the partial.
-    sorted_partial_path = os.path.join(partials_dir,
-                                       unique_name + '.sorted.zip')
-    _SortZip(partial_path, sorted_partial_path)
-
-    return sorted_partial_path
+    return partial_path
 
   partials = pool.map(compile_partial, enumerate(dep_subdirs))
   pool.close()
diff --git a/build/android/java/templates/ProductConfig.template b/build/android/java/templates/ProductConfig.template
index dee8f82..cf4ba125 100644
--- a/build/android/java/templates/ProductConfig.template
+++ b/build/android/java/templates/ProductConfig.template
@@ -8,12 +8,10 @@
 #define MAYBE_FINAL final
 #define MAYBE_USE_CHROMIUM_LINKER = USE_CHROMIUM_LINKER_VALUE
 #define MAYBE_USE_MODERN_LINKER = USE_MODERN_LINKER_VALUE
-#define MAYBE_IS_BUNDLE = IS_BUNDLE_VALUE
 #else
 #define MAYBE_FINAL
 #define MAYBE_USE_CHROMIUM_LINKER
 #define MAYBE_USE_MODERN_LINKER
-#define MAYBE_IS_BUNDLE
 #endif
 
 /**
@@ -39,5 +37,4 @@
 
    public static MAYBE_FINAL boolean USE_CHROMIUM_LINKER MAYBE_USE_CHROMIUM_LINKER;
    public static MAYBE_FINAL boolean USE_MODERN_LINKER MAYBE_USE_MODERN_LINKER;
-   public static MAYBE_FINAL boolean IS_BUNDLE MAYBE_IS_BUNDLE;
 }
diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni
index 3a87b995..927ab9fd 100644
--- a/build/config/android/rules.gni
+++ b/build/config/android/rules.gni
@@ -1438,8 +1438,8 @@
         srcjar_deps = []
       }
       srcjar_deps += [
-        ":$_jni_srcjar_target",
         ":$_compile_resources_target",
+        ":$_jni_srcjar_target",
 
         # This dep is required for any targets that depend on //base:base_java.
         "//base:base_build_config_gen",
@@ -1698,8 +1698,8 @@
   #   }
   template("proguarded_dist_dex") {
     _deps = [
-      "//third_party/android_sdk:android_sdk_java",
       "//build/android/buildhooks:build_hooks_android_impl_java",
+      "//third_party/android_sdk:android_sdk_java",
     ]
     if (defined(invoker.deps)) {
       _deps += invoker.deps
@@ -1960,9 +1960,7 @@
   #       variables must not be set.
   #   enable_multidex: Value for ENABLE_MULTIDEX.
   #   min_sdk_version: Value for MIN_SDK_VERSION.
-  #   bundles_supported: Whether or not this target can be treated as a bundle.
-  #   resources_version_variable:
-  #   is_incremental_install:
+  #
   template("generate_build_config_srcjar") {
     java_cpp_template(target_name) {
       package_path = "org/chromium/base"
@@ -1986,8 +1984,8 @@
         defines += [ "_IS_CHROME_BRANDED" ]
       }
 
-      if (defined(invoker.bundles_supported) && invoker.bundles_supported) {
-        defines += [ "_BUNDLES_SUPPORTED" ]
+      if (defined(invoker.is_bundle_module) && invoker.is_bundle_module) {
+        defines += [ "_IS_BUNDLE" ]
       }
 
       if (defined(invoker.is_incremental_install) &&
@@ -2024,17 +2022,15 @@
   #
   # Variables:
   #   build_config: Path to build_config used for locale lists.
-  #   is_bundle_module: Whether or not this target is part of a bundle build.
   #   java_package: Java package for the generated class.
   #   use_chromium_linker:
   #   use_modern_linker:
   template("generate_product_config_srcjar") {
     java_cpp_template(target_name) {
       defines = []
-      _use_final =
-          defined(invoker.build_config) ||
-          defined(invoker.use_chromium_linker) ||
-          defined(invoker.use_modern_linker) || defined(invoker.is_bundle)
+      _use_final = defined(invoker.build_config) ||
+                   defined(invoker.use_chromium_linker) ||
+                   defined(invoker.use_modern_linker)
       if (_use_final) {
         defines += [ "USE_FINAL" ]
       }
@@ -2049,11 +2045,9 @@
           defined(invoker.use_chromium_linker) && invoker.use_chromium_linker
       _use_modern_linker =
           defined(invoker.use_modern_linker) && invoker.use_modern_linker
-      _is_bundle = defined(invoker.is_bundle_module) && invoker.is_bundle_module
       defines += [
         "USE_CHROMIUM_LINKER_VALUE=$_use_chromium_linker",
         "USE_MODERN_LINKER_VALUE=$_use_modern_linker",
-        "IS_BUNDLE_VALUE=$_is_bundle",
       ]
       if (defined(invoker.build_config)) {
         forward_variables_from(invoker,
@@ -2751,9 +2745,11 @@
 
     if (_generate_buildconfig_java) {
       generate_build_config_srcjar("${_template_name}__build_config_srcjar") {
-        forward_variables_from(invoker, [ "min_sdk_version" ])
-        bundles_supported = _is_bundle_module || _is_static_library_provider ||
-                            (defined(testonly) && testonly)
+        forward_variables_from(invoker,
+                               [
+                                 "is_bundle_module",
+                                 "min_sdk_version",
+                               ])
         use_final_fields = true
         enable_multidex = _enable_multidex
         is_incremental_install = _incremental_apk
@@ -2773,7 +2769,6 @@
         _locale_target_name =
             "${_template_name}_${_package}__product_config_srcjar"
         generate_product_config_srcjar("$_locale_target_name") {
-          forward_variables_from(invoker, [ "is_bundle_module" ])
           build_config = _build_config
           java_package = _package
           use_chromium_linker = _use_chromium_linker
@@ -3340,8 +3335,8 @@
         }
       }
       _final_deps += [
-        ":$_write_installer_json_rule_name",
         ":$_java_target",
+        ":$_write_installer_json_rule_name",
       ]
     }
 
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
index 551522a..180113a2c3 100644
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
@@ -1529,12 +1529,6 @@
           "-Wno-deprecated-copy",
         ]
 
-        if (is_fuchsia) {
-          cflags += [
-            # TODO(https://crbug.com/999871): Clean up, enable.
-            "-Wno-c99-designator",
-          ]
-        }
         if (is_win) {
           cflags += [
             # TODO(https://crbug.com/1002945): Clean up, enable.
diff --git a/build/fuchsia/linux.sdk.sha1 b/build/fuchsia/linux.sdk.sha1
index 604c224..1d91115 100644
--- a/build/fuchsia/linux.sdk.sha1
+++ b/build/fuchsia/linux.sdk.sha1
@@ -1 +1 @@
-8894157458133945424
\ No newline at end of file
+8893885631337921504
\ No newline at end of file
diff --git a/cc/input/input_handler.h b/cc/input/input_handler.h
index 50896f5..043e09ac 100644
--- a/cc/input/input_handler.h
+++ b/cc/input/input_handler.h
@@ -250,8 +250,8 @@
   // scrolling layer.
   // |out_touch_action| is assigned the whitelisted touch action for the
   // |viewport_point|. In the case there are no touch handlers or touch action
-  // regions, |out_touch_action| is assigned kTouchActionAuto since the default
-  // touch action is auto.
+  // regions, |out_touch_action| is assigned TouchAction::kAuto since the
+  // default touch action is auto.
   virtual TouchStartOrMoveEventListenerType
   EventListenerTypeForTouchStartOrMoveAt(const gfx::Point& viewport_point,
                                          TouchAction* out_touch_action) = 0;
diff --git a/cc/input/touch_action.h b/cc/input/touch_action.h
index 83e1b16..f00d263a 100644
--- a/cc/input/touch_action.h
+++ b/cc/input/touch_action.h
@@ -18,28 +18,27 @@
 // This is intended to be the single canonical definition of the enum, it's used
 // elsewhere in both Blink and content since touch action logic spans those
 // subsystems.
-// TODO(crbug.com/720553): rework this enum to enum class.
 const size_t kTouchActionBits = 6;
 
-enum TouchAction {
+enum class TouchAction {
   // No scrolling or zooming allowed.
-  kTouchActionNone = 0x0,
-  kTouchActionPanLeft = 0x1,
-  kTouchActionPanRight = 0x2,
-  kTouchActionPanX = kTouchActionPanLeft | kTouchActionPanRight,
-  kTouchActionPanUp = 0x4,
-  kTouchActionPanDown = 0x8,
-  kTouchActionPanY = kTouchActionPanUp | kTouchActionPanDown,
-  kTouchActionPan = kTouchActionPanX | kTouchActionPanY,
-  kTouchActionPinchZoom = 0x10,
-  kTouchActionManipulation = kTouchActionPan | kTouchActionPinchZoom,
-  kTouchActionDoubleTapZoom = 0x20,
-  kTouchActionAuto = kTouchActionManipulation | kTouchActionDoubleTapZoom,
-  kTouchActionMax = (1 << 6) - 1
+  kNone = 0x0,
+  kPanLeft = 0x1,
+  kPanRight = 0x2,
+  kPanX = kPanLeft | kPanRight,
+  kPanUp = 0x4,
+  kPanDown = 0x8,
+  kPanY = kPanUp | kPanDown,
+  kPan = kPanX | kPanY,
+  kPinchZoom = 0x10,
+  kManipulation = kPan | kPinchZoom,
+  kDoubleTapZoom = 0x20,
+  kAuto = kManipulation | kDoubleTapZoom,
+  kMax = (1 << 6) - 1
 };
 
 inline TouchAction operator|(TouchAction a, TouchAction b) {
-  return static_cast<TouchAction>(int(a) | int(b));
+  return static_cast<TouchAction>(static_cast<int>(a) | static_cast<int>(b));
 }
 
 inline TouchAction& operator|=(TouchAction& a, TouchAction b) {
@@ -47,13 +46,17 @@
 }
 
 inline TouchAction operator&(TouchAction a, TouchAction b) {
-  return static_cast<TouchAction>(int(a) & int(b));
+  return static_cast<TouchAction>(static_cast<int>(a) & static_cast<int>(b));
 }
 
 inline TouchAction& operator&=(TouchAction& a, TouchAction b) {
   return a = a & b;
 }
 
+inline TouchAction operator~(TouchAction touch_action) {
+  return static_cast<TouchAction>(~static_cast<int>(touch_action));
+}
+
 inline const char* TouchActionToString(TouchAction touch_action) {
   switch (static_cast<int>(touch_action)) {
     case 0:
diff --git a/cc/ipc/cc_param_traits_macros.h b/cc/ipc/cc_param_traits_macros.h
index 2e76c28..eed946bd 100644
--- a/cc/ipc/cc_param_traits_macros.h
+++ b/cc/ipc/cc_param_traits_macros.h
@@ -12,6 +12,6 @@
 #undef IPC_MESSAGE_EXPORT
 #define IPC_MESSAGE_EXPORT COMPONENT_EXPORT(CC_IPC)
 
-IPC_ENUM_TRAITS_MAX_VALUE(cc::TouchAction, cc::TouchAction::kTouchActionMax)
+IPC_ENUM_TRAITS_MAX_VALUE(cc::TouchAction, cc::TouchAction::kMax)
 
 #endif  // CC_IPC_CC_PARAM_TRAITS_MACROS_H_
diff --git a/cc/layers/layer_impl_unittest.cc b/cc/layers/layer_impl_unittest.cc
index f26dc20..52de6f2 100644
--- a/cc/layers/layer_impl_unittest.cc
+++ b/cc/layers/layer_impl_unittest.cc
@@ -453,7 +453,7 @@
       LayerImpl::Create(host_impl()->pending_tree(), 2);
 
   TouchActionRegion region;
-  region.Union(kTouchActionNone, gfx::Rect(0, 0, 50, 50));
+  region.Union(TouchAction::kNone, gfx::Rect(0, 0, 50, 50));
   pending_layer->SetTouchActionRegion(region);
 
   // The values for GetAllTouchActionRegions should be correct on both layers.
diff --git a/cc/layers/layer_unittest.cc b/cc/layers/layer_unittest.cc
index f590a920..41627a6d 100644
--- a/cc/layers/layer_unittest.cc
+++ b/cc/layers/layer_unittest.cc
@@ -939,7 +939,7 @@
       gfx::Transform(0.0, 0.0, 0.0, 0.0, 0.0, 0.0)));
   EXPECT_SET_NEEDS_COMMIT(1, test_layer->SetDoubleSided(false));
   TouchActionRegion touch_action_region;
-  touch_action_region.Union(kTouchActionNone, gfx::Rect(10, 10));
+  touch_action_region.Union(TouchAction::kNone, gfx::Rect(10, 10));
   EXPECT_SET_NEEDS_COMMIT(
       1, test_layer->SetTouchActionRegion(std::move(touch_action_region)));
   EXPECT_SET_NEEDS_COMMIT(1, test_layer->SetForceRenderSurfaceForTesting(true));
diff --git a/cc/layers/touch_action_region.cc b/cc/layers/touch_action_region.cc
index a84bd0e..3c6ff10 100644
--- a/cc/layers/touch_action_region.cc
+++ b/cc/layers/touch_action_region.cc
@@ -38,7 +38,7 @@
 
 TouchAction TouchActionRegion::GetAllowedTouchAction(
     const gfx::Point& point) const {
-  TouchAction allowed_touch_action = kTouchActionAuto;
+  TouchAction allowed_touch_action = TouchAction::kAuto;
   for (const auto& pair : map_) {
     if (!pair.second.Contains(point))
       continue;
diff --git a/cc/layers/touch_action_region.h b/cc/layers/touch_action_region.h
index 6a8911a..f1a060d 100644
--- a/cc/layers/touch_action_region.h
+++ b/cc/layers/touch_action_region.h
@@ -30,7 +30,7 @@
 
   // Returns the touch actions that we are sure will be allowed at the point
   // by finding the intersection of all touch actions whose regions contain the
-  // given point. If the map is empty, |kTouchActionAuto| is returned since no
+  // given point. If the map is empty, |TouchAction::kAuto| is returned since no
   // touch actions have been explicitly defined and the default touch action
   // is auto.
   TouchAction GetAllowedTouchAction(const gfx::Point&) const;
diff --git a/cc/layers/touch_action_region_unittest.cc b/cc/layers/touch_action_region_unittest.cc
index e416319..8b172b65 100644
--- a/cc/layers/touch_action_region_unittest.cc
+++ b/cc/layers/touch_action_region_unittest.cc
@@ -11,35 +11,35 @@
 
 TEST(TouchActionRegionTest, GetAllowedTouchActionMapOverlapToZero) {
   TouchActionRegion touch_action_region;
-  touch_action_region.Union(kTouchActionPanLeft, gfx::Rect(0, 0, 50, 50));
-  touch_action_region.Union(kTouchActionPanRight, gfx::Rect(25, 25, 25, 25));
+  touch_action_region.Union(TouchAction::kPanLeft, gfx::Rect(0, 0, 50, 50));
+  touch_action_region.Union(TouchAction::kPanRight, gfx::Rect(25, 25, 25, 25));
   // The point is only in PanLeft, so the result is PanLeft.
-  EXPECT_EQ(kTouchActionPanLeft,
+  EXPECT_EQ(TouchAction::kPanLeft,
             touch_action_region.GetAllowedTouchAction(gfx::Point(10, 10)));
   // The point is in both PanLeft and PanRight, and those actions have no
   // common components, so the result is None.
-  EXPECT_EQ(kTouchActionNone,
+  EXPECT_EQ(TouchAction::kNone,
             touch_action_region.GetAllowedTouchAction(gfx::Point(30, 30)));
   // The point is in neither PanLeft nor PanRight, so the result is Auto since
   // the default touch action is auto.
-  EXPECT_EQ(kTouchActionAuto,
+  EXPECT_EQ(TouchAction::kAuto,
             touch_action_region.GetAllowedTouchAction(gfx::Point(60, 60)));
 }
 
 TEST(TouchActionRegionTest, GetAllowedTouchActionMapOverlapToNonZero) {
   TouchActionRegion touch_action_region;
-  touch_action_region.Union(kTouchActionPanX, gfx::Rect(0, 0, 50, 50));
-  touch_action_region.Union(kTouchActionPanRight, gfx::Rect(25, 25, 25, 25));
+  touch_action_region.Union(TouchAction::kPanX, gfx::Rect(0, 0, 50, 50));
+  touch_action_region.Union(TouchAction::kPanRight, gfx::Rect(25, 25, 25, 25));
   // The point is only in PanX, so the result is PanX.
-  EXPECT_EQ(kTouchActionPanX,
+  EXPECT_EQ(TouchAction::kPanX,
             touch_action_region.GetAllowedTouchAction(gfx::Point(10, 10)));
   // The point is in both PanX and PanRight, and PanRight is a common component,
   // so the result is PanRight.
-  EXPECT_EQ(kTouchActionPanRight,
+  EXPECT_EQ(TouchAction::kPanRight,
             touch_action_region.GetAllowedTouchAction(gfx::Point(30, 30)));
   // The point is neither PanX nor PanRight, so the result is Auto since the
   // default touch action is auto.
-  EXPECT_EQ(kTouchActionAuto,
+  EXPECT_EQ(TouchAction::kAuto,
             touch_action_region.GetAllowedTouchAction(gfx::Point(60, 60)));
 }
 
@@ -47,19 +47,19 @@
   TouchActionRegion touch_action_region;
   // The result is Auto since the map is empty and the default touch
   // action is auto.
-  EXPECT_EQ(kTouchActionAuto,
+  EXPECT_EQ(TouchAction::kAuto,
             touch_action_region.GetAllowedTouchAction(gfx::Point(10, 10)));
 }
 
 TEST(TouchActionRegionTest, GetAllowedTouchActionSingleMapEntry) {
   TouchActionRegion touch_action_region;
-  touch_action_region.Union(kTouchActionPanUp, gfx::Rect(0, 0, 50, 50));
+  touch_action_region.Union(TouchAction::kPanUp, gfx::Rect(0, 0, 50, 50));
   // The point is only in PanUp, so the result is PanUp.
-  EXPECT_EQ(kTouchActionPanUp,
+  EXPECT_EQ(TouchAction::kPanUp,
             touch_action_region.GetAllowedTouchAction(gfx::Point(10, 10)));
   // The point is not in PanUp, so the result is Auto since the default touch
   // action is auto.
-  EXPECT_EQ(kTouchActionAuto,
+  EXPECT_EQ(TouchAction::kAuto,
             touch_action_region.GetAllowedTouchAction(gfx::Point(60, 60)));
 }
 
diff --git a/cc/metrics/frame_sequence_tracker.cc b/cc/metrics/frame_sequence_tracker.cc
index 05a7e330..667545f 100644
--- a/cc/metrics/frame_sequence_tracker.cc
+++ b/cc/metrics/frame_sequence_tracker.cc
@@ -92,6 +92,32 @@
                            static_cast<int>(type))});
 }
 
+bool ShouldReportForAnimation(FrameSequenceTrackerType sequence_type,
+                              FrameSequenceMetrics::ThreadType thread_type) {
+  if (sequence_type == FrameSequenceTrackerType::kCompositorAnimation)
+    return thread_type == FrameSequenceMetrics::ThreadType::kCompositor;
+
+  if (sequence_type == FrameSequenceTrackerType::kMainThreadAnimation ||
+      sequence_type == FrameSequenceTrackerType::kRAF)
+    return thread_type == FrameSequenceMetrics::ThreadType::kMain;
+
+  return false;
+}
+
+bool ShouldReportForInteraction(FrameSequenceTrackerType sequence_type,
+                                FrameSequenceMetrics::ThreadType thread_type) {
+  // For touch/wheel scroll, the slower thread is the one we want to report. For
+  // pinch-zoom, it's the compositor-thread.
+  if (sequence_type == FrameSequenceTrackerType::kTouchScroll ||
+      sequence_type == FrameSequenceTrackerType::kWheelScroll)
+    return thread_type == FrameSequenceMetrics::ThreadType::kSlower;
+
+  if (sequence_type == FrameSequenceTrackerType::kPinchZoom)
+    return thread_type == FrameSequenceMetrics::ThreadType::kCompositor;
+
+  return false;
+}
+
 }  // namespace
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -402,15 +428,15 @@
 
   if (ShouldIgnoreBeginFrameSource(args.source_id))
     return;
+
 #if DCHECK_IS_ON()
   DCHECK(!is_inside_frame_) << TRACKER_DCHECK_MSG;
   is_inside_frame_ = true;
-#endif
 
-#if DCHECK_IS_ON()
   if (args.type == viz::BeginFrameArgs::NORMAL)
     impl_frames_.insert(std::make_pair(args.source_id, args.sequence_number));
 #endif
+
   TRACKER_TRACE_STREAM << "b(" << args.sequence_number << ")";
   UpdateTrackedFrameData(&begin_impl_frame_data_, args.source_id,
                          args.sequence_number);
@@ -444,6 +470,8 @@
                        << args.sequence_number << ")";
   UpdateTrackedFrameData(&begin_main_frame_data_, args.source_id,
                          args.sequence_number);
+  if (!first_received_main_sequence_)
+    first_received_main_sequence_ = args.sequence_number;
   main_throughput().frames_expected +=
       begin_main_frame_data_.previous_sequence_delta;
 }
@@ -468,18 +496,25 @@
   last_submitted_frame_ = frame_token;
 
   TRACKER_TRACE_STREAM << 's';
-  if (!ShouldIgnoreBeginFrameSource(origin_args.source_id) &&
-      begin_main_frame_data_.previous_sequence &&
-      origin_args.sequence_number >= begin_main_frame_data_.previous_sequence) {
-    if (last_submitted_main_sequence_ == 0 ||
-        origin_args.sequence_number > last_submitted_main_sequence_) {
-      TRACKER_TRACE_STREAM << 'S';
+  const bool main_changes_after_sequence_started =
+      first_received_main_sequence_ &&
+      origin_args.sequence_number >= first_received_main_sequence_;
+  const bool main_changes_include_new_changes =
+      last_submitted_main_sequence_ == 0 ||
+      origin_args.sequence_number > last_submitted_main_sequence_;
+  const bool main_change_had_no_damage =
+      last_no_main_damage_sequence_ != 0 &&
+      origin_args.sequence_number == last_no_main_damage_sequence_;
 
-      last_submitted_main_sequence_ = origin_args.sequence_number;
-      main_frames_.push_back(frame_token);
-      DCHECK_GE(main_throughput().frames_expected, main_frames_.size())
-          << TRACKER_DCHECK_MSG;
-    }
+  if (!ShouldIgnoreBeginFrameSource(origin_args.source_id) &&
+      main_changes_after_sequence_started && main_changes_include_new_changes &&
+      !main_change_had_no_damage) {
+    TRACKER_TRACE_STREAM << 'S';
+
+    last_submitted_main_sequence_ = origin_args.sequence_number;
+    main_frames_.push_back(frame_token);
+    DCHECK_GE(main_throughput().frames_expected, main_frames_.size())
+        << TRACKER_DCHECK_MSG;
   }
 
   if (has_missing_content) {
@@ -635,6 +670,7 @@
   DCHECK_GT(main_throughput().frames_expected,
             main_throughput().frames_produced)
       << TRACKER_DCHECK_MSG;
+  last_no_main_damage_sequence_ = args.sequence_number;
   --main_throughput().frames_expected;
   DCHECK_GE(main_throughput().frames_expected, main_frames_.size())
       << TRACKER_DCHECK_MSG;
@@ -723,6 +759,27 @@
 
   const int percent =
       static_cast<int>(100 * data.frames_produced / data.frames_expected);
+
+  const bool is_animation =
+      ShouldReportForAnimation(sequence_type, thread_type);
+  const bool is_interaction =
+      ShouldReportForInteraction(sequence_type, thread_type);
+
+  if (is_animation) {
+    UMA_HISTOGRAM_PERCENTAGE("Graphics.Smoothness.Throughput.AllAnimations",
+                             percent);
+  }
+
+  if (is_interaction) {
+    UMA_HISTOGRAM_PERCENTAGE("Graphics.Smoothness.Throughput.AllInteractions",
+                             percent);
+  }
+
+  if (is_animation || is_interaction) {
+    UMA_HISTOGRAM_PERCENTAGE("Graphics.Smoothness.Throughput.AllSequences",
+                             percent);
+  }
+
   const char* thread_name =
       thread_type == ThreadType::kCompositor
           ? "CompositorThread"
diff --git a/cc/metrics/frame_sequence_tracker.h b/cc/metrics/frame_sequence_tracker.h
index 6cabc2a..085fc6a8 100644
--- a/cc/metrics/frame_sequence_tracker.h
+++ b/cc/metrics/frame_sequence_tracker.h
@@ -345,6 +345,11 @@
   // corresponding frame-token is removed from this collection.
   base::circular_deque<uint32_t> main_frames_;
 
+  // Keeps track of the sequence-number of the first received begin-main-frame.
+  // This is used to ignore submitted frames that include updates from earlier
+  // begin-main-frames.
+  uint64_t first_received_main_sequence_ = 0;
+
   // Keeps track of the first submitted compositor-frame. This is used to ignore
   // reports from frames that were submitted before this tracker had been
   // created.
@@ -359,6 +364,10 @@
   // main-thread.
   uint64_t last_submitted_main_sequence_ = 0;
 
+  // Keeps track of the last sequence-number that produced a frame that did not
+  // have any damage from the main-thread.
+  uint64_t last_no_main_damage_sequence_ = 0;
+
   // The time when this tracker is created, or the time when it was previously
   // scheduled to report histogram.
   base::TimeTicks first_frame_timestamp_;
diff --git a/cc/metrics/frame_sequence_tracker_unittest.cc b/cc/metrics/frame_sequence_tracker_unittest.cc
index fca70a9..30b9234 100644
--- a/cc/metrics/frame_sequence_tracker_unittest.cc
+++ b/cc/metrics/frame_sequence_tracker_unittest.cc
@@ -10,6 +10,7 @@
 #include "base/test/metrics/histogram_tester.h"
 #include "cc/metrics/compositor_frame_reporting_controller.h"
 #include "components/viz/common/frame_sinks/begin_frame_args.h"
+#include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/gfx/presentation_feedback.h"
 
@@ -115,7 +116,7 @@
     EXPECT_TRUE(collection_.removal_trackers_.empty());
   }
 
-  void ReportMetrics() {
+  void ReportMetricsTest() {
     base::HistogramTester histogram_tester;
 
     // Test that there is no main thread frames expected.
@@ -169,6 +170,8 @@
         "Graphics.Smoothness.Throughput.SlowerThread.TouchScroll", 3u);
   }
 
+  void ReportMetrics() { tracker_->ReportMetrics(); }
+
   base::TimeDelta TimeDeltaToReort() const {
     return tracker_->time_delta_to_report_;
   }
@@ -362,7 +365,7 @@
 }
 
 TEST_F(FrameSequenceTrackerTest, ReportMetrics) {
-  ReportMetrics();
+  ReportMetricsTest();
 }
 
 TEST_F(FrameSequenceTrackerTest, ReportMetricsAtFixedInterval) {
@@ -427,4 +430,85 @@
   collection_.NotifyFramePresented(frame_2, feedback);
 }
 
+TEST_F(FrameSequenceTrackerTest, MainFrameNoDamageTracking) {
+  const uint64_t source = 1;
+  uint64_t sequence = 0;
+
+  const auto first_args = CreateBeginFrameArgs(source, ++sequence);
+  DispatchCompleteFrame(first_args, kImplDamage | kMainDamage);
+
+  // Now, start the next frame, but for main, respond with the previous args.
+  const auto second_args = CreateBeginFrameArgs(source, ++sequence);
+  StartImplAndMainFrames(second_args);
+
+  uint32_t frame_token = NextFrameToken();
+  collection_.NotifySubmitFrame(frame_token, /*has_missing_content=*/false,
+                                viz::BeginFrameAck(second_args, true),
+                                first_args);
+  collection_.NotifyFrameEnd(second_args);
+
+  // Start and submit the next frame, with no damage from main.
+  auto args = CreateBeginFrameArgs(source, ++sequence);
+  StartImplAndMainFrames(args);
+  frame_token = NextFrameToken();
+  collection_.NotifyMainFrameCausedNoDamage(args);
+  collection_.NotifySubmitFrame(frame_token, /*has_missing_content=*/false,
+                                viz::BeginFrameAck(args, true), first_args);
+  collection_.NotifyFrameEnd(args);
+
+  // Now, submit a frame with damage from main from |second_args|.
+  args = CreateBeginFrameArgs(source, ++sequence);
+  StartImplAndMainFrames(args);
+  frame_token = NextFrameToken();
+  collection_.NotifySubmitFrame(frame_token, /*has_missing_content=*/false,
+                                viz::BeginFrameAck(args, true), second_args);
+  collection_.NotifyFrameEnd(args);
+}
+
+TEST_F(FrameSequenceTrackerTest, BeginMainFrameSubmit) {
+  const uint64_t source = 1;
+  uint64_t sequence = 0;
+
+  // Start with a bunch of frames so that the metric does get reported at the
+  // end of the test.
+  ImplThroughput().frames_expected = 98u;
+  ImplThroughput().frames_produced = 98u;
+  MainThroughput().frames_expected = 98u;
+  MainThroughput().frames_produced = 98u;
+
+  // Start a frame, send to main, but end the frame with no-damage before main
+  // responds.
+  auto first_args = CreateBeginFrameArgs(source, ++sequence);
+  collection_.NotifyBeginImplFrame(first_args);
+  collection_.NotifyBeginMainFrame(first_args);
+  collection_.NotifyImplFrameCausedNoDamage(
+      viz::BeginFrameAck(first_args, false));
+  collection_.NotifyFrameEnd(first_args);
+
+  // Start another frame, send to begin, but submit with main-update from the
+  // first frame (main thread has finally responded by this time to the first
+  // frame).
+  auto second_args = CreateBeginFrameArgs(source, ++sequence);
+  collection_.NotifyBeginImplFrame(second_args);
+  collection_.NotifyBeginMainFrame(second_args);
+  uint32_t frame_token = NextFrameToken();
+  collection_.NotifySubmitFrame(frame_token, /*has_missing_content=*/false,
+                                viz::BeginFrameAck(second_args, true),
+                                first_args);
+  collection_.NotifyFrameEnd(second_args);
+
+  // When the frame is presented, the main-frame should count towards its
+  // throughput.
+  base::HistogramTester histogram_tester;
+  const auto interval = viz::BeginFrameArgs::DefaultInterval();
+  gfx::PresentationFeedback feedback(base::TimeTicks::Now(), interval, 0);
+  collection_.NotifyFramePresented(frame_token, feedback);
+  ReportMetrics();
+
+  const char metric[] = "Graphics.Smoothness.Throughput.MainThread.TouchScroll";
+  histogram_tester.ExpectTotalCount(metric, 1u);
+  EXPECT_THAT(histogram_tester.GetAllSamples(metric),
+              testing::ElementsAre(base::Bucket(99, 1)));
+}
+
 }  // namespace cc
diff --git a/cc/paint/display_item_list.h b/cc/paint/display_item_list.h
index 550225b3..3b3861bb 100644
--- a/cc/paint/display_item_list.h
+++ b/cc/paint/display_item_list.h
@@ -86,7 +86,8 @@
     size_t offset = paint_op_buffer_.next_op_offset();
     if (usage_hint_ == kTopLevelDisplayItemList)
       offsets_.push_back(offset);
-    paint_op_buffer_.push<T>(std::forward<Args>(args)...);
+    const T* op = paint_op_buffer_.push<T>(std::forward<Args>(args)...);
+    DCHECK(op->IsValid());
     return offset;
   }
 
diff --git a/cc/paint/paint_op_buffer.h b/cc/paint/paint_op_buffer.h
index cd3ac1c..7388e06f 100644
--- a/cc/paint/paint_op_buffer.h
+++ b/cc/paint/paint_op_buffer.h
@@ -979,7 +979,7 @@
   }
 
   template <typename T, typename... Args>
-  void push(Args&&... args) {
+  const T* push(Args&&... args) {
     static_assert(std::is_convertible<T, PaintOp>::value, "T not a PaintOp.");
     static_assert(alignof(T) <= PaintOpAlign, "");
     static_assert(sizeof(T) < std::numeric_limits<uint16_t>::max(),
@@ -991,6 +991,7 @@
     DCHECK_EQ(op->type, static_cast<uint32_t>(T::kType));
     op->skip = skip;
     AnalyzeAddedOp(op);
+    return op;
   }
 
   void UpdateSaveLayerBounds(size_t offset, const SkRect& bounds) {
diff --git a/cc/test/layer_tree_json_parser.cc b/cc/test/layer_tree_json_parser.cc
index 1c01ac0..5f7e41d2 100644
--- a/cc/test/layer_tree_json_parser.cc
+++ b/cc/test/layer_tree_json_parser.cc
@@ -112,7 +112,8 @@
       success &= list->GetInteger(i++, &rect_width);
       success &= list->GetInteger(i++, &rect_height);
       touch_action_region.Union(
-          kTouchActionNone, gfx::Rect(rect_x, rect_y, rect_width, rect_height));
+          TouchAction::kNone,
+          gfx::Rect(rect_x, rect_y, rect_width, rect_height));
     }
     new_layer->SetTouchActionRegion(std::move(touch_action_region));
   }
diff --git a/cc/test/pixel_test_utils.cc b/cc/test/pixel_test_utils.cc
index 7aad20d..bd4372b1 100644
--- a/cc/test/pixel_test_utils.cc
+++ b/cc/test/pixel_test_utils.cc
@@ -52,8 +52,6 @@
 bool MatchesBitmap(const SkBitmap& gen_bmp,
                    const SkBitmap& ref_bmp,
                    const PixelComparator& comparator) {
-  bool pixels_match = true;
-
   // Check if images size matches
   if (gen_bmp.width() != ref_bmp.width() ||
       gen_bmp.height() != ref_bmp.height()) {
@@ -62,25 +60,22 @@
         << "Actual: " << gen_bmp.width() << "x" << gen_bmp.height()
         << "; "
         << "Expected: " << ref_bmp.width() << "x" << ref_bmp.height();
-    pixels_match = false;
+    return false;
   }
 
   // Shortcut for empty images. They are always equal.
-  if (pixels_match && (gen_bmp.width() == 0 || gen_bmp.height() == 0))
+  if (gen_bmp.width() == 0 || gen_bmp.height() == 0)
     return true;
 
-  if (pixels_match && !comparator.Compare(gen_bmp, ref_bmp)) {
+  bool compare = comparator.Compare(gen_bmp, ref_bmp);
+  if (!compare) {
+    std::string gen_bmp_data_url = GetPNGDataUrl(gen_bmp);
+    std::string ref_bmp_data_url = GetPNGDataUrl(ref_bmp);
     LOG(ERROR) << "Pixels do not match!";
-    pixels_match = false;
+    LOG(ERROR) << "Actual pixels (open in browser):\n" << gen_bmp_data_url;
+    LOG(ERROR) << "Expected pixels (open in browser):\n" << ref_bmp_data_url;
   }
-
-  if (!pixels_match) {
-    LOG(ERROR) << "Actual pixels (open in browser):\n"
-               << GetPNGDataUrl(gen_bmp);
-    LOG(ERROR) << "Expected pixels (open in browser):\n"
-               << GetPNGDataUrl(ref_bmp);
-  }
-  return pixels_match;
+  return compare;
 }
 
 bool MatchesPNGFile(const SkBitmap& gen_bmp,
diff --git a/cc/trees/debug_rect_history.cc b/cc/trees/debug_rect_history.cc
index 2fee9221..8e4eb3a 100644
--- a/cc/trees/debug_rect_history.cc
+++ b/cc/trees/debug_rect_history.cc
@@ -146,8 +146,9 @@
 
 void DebugRectHistory::SaveTouchEventHandlerRectsCallback(LayerImpl* layer) {
   const TouchActionRegion& touch_action_region = layer->touch_action_region();
-  for (int touch_action_index = kTouchActionNone;
-       touch_action_index != kTouchActionMax; ++touch_action_index) {
+  for (int touch_action_index = static_cast<int>(TouchAction::kNone);
+       touch_action_index != static_cast<int>(TouchAction::kMax);
+       ++touch_action_index) {
     auto touch_action = static_cast<TouchAction>(touch_action_index);
     Region region = touch_action_region.GetRegionForTouchAction(touch_action);
     for (gfx::Rect rect : region) {
@@ -220,7 +221,7 @@
               MAIN_THREAD_SCROLLING_REASON_RECT_TYPE,
               MathUtil::MapEnclosingClippedRect(layer->ScreenSpaceTransform(),
                                                 gfx::Rect(layer->bounds())),
-              kTouchActionNone, reasons));
+              TouchAction::kNone, reasons));
         }
       }
     }
diff --git a/cc/trees/debug_rect_history.h b/cc/trees/debug_rect_history.h
index a24b5d8e..0321cb73 100644
--- a/cc/trees/debug_rect_history.h
+++ b/cc/trees/debug_rect_history.h
@@ -54,21 +54,21 @@
 struct DebugRect {
   DebugRect(DebugRectType new_type,
             const gfx::Rect& new_rect,
-            TouchAction new_touch_action = kTouchActionNone,
+            TouchAction new_touch_action = TouchAction::kNone,
             uint32_t main_thread_scrolling_reasons = 0)
       : type(new_type),
         rect(new_rect),
         touch_action(new_touch_action),
         main_thread_scrolling_reasons(main_thread_scrolling_reasons) {
     if (type != TOUCH_EVENT_HANDLER_RECT_TYPE)
-      DCHECK_EQ(touch_action, kTouchActionNone);
+      DCHECK_EQ(touch_action, TouchAction::kNone);
     if (type != MAIN_THREAD_SCROLLING_REASON_RECT_TYPE)
       DCHECK(!main_thread_scrolling_reasons);
   }
   DebugRectType type;
   gfx::Rect rect;
   // Valid when |type| is |TOUCH_EVENT_HANDLER_RECT_TYPE|, otherwise default to
-  // |kTouchActionNone|.
+  // |TouchAction::kNone|.
   TouchAction touch_action;
   // Valid when |type| is |MAIN_THREAD_SCROLLING_REASON_RECT_TYPE|, otherwise 0.
   uint32_t main_thread_scrolling_reasons;
diff --git a/cc/trees/draw_properties_unittest.cc b/cc/trees/draw_properties_unittest.cc
index 9640e060..adf8b5d5 100644
--- a/cc/trees/draw_properties_unittest.cc
+++ b/cc/trees/draw_properties_unittest.cc
@@ -7071,7 +7071,7 @@
   test_layer->SetDrawsContent(true);
 
   TouchActionRegion touch_action_region;
-  touch_action_region.Union(kTouchActionNone, gfx::Rect(0, 0, 20, 20));
+  touch_action_region.Union(TouchAction::kNone, gfx::Rect(0, 0, 20, 20));
   test_layer->SetTouchActionRegion(std::move(touch_action_region));
 
   CopyProperties(root, render_surface);
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
index aafbb10..76108b9 100644
--- a/cc/trees/layer_tree_host_impl.cc
+++ b/cc/trees/layer_tree_host_impl.cc
@@ -886,7 +886,7 @@
 
   if (layer_impl_with_touch_handler == nullptr) {
     if (out_touch_action)
-      *out_touch_action = kTouchActionAuto;
+      *out_touch_action = TouchAction::kAuto;
     return InputHandler::TouchStartOrMoveEventListenerType::NO_HANDLER;
   }
 
diff --git a/cc/trees/layer_tree_host_impl_unittest.cc b/cc/trees/layer_tree_host_impl_unittest.cc
index 387f95c..5c4dea1 100644
--- a/cc/trees/layer_tree_host_impl_unittest.cc
+++ b/cc/trees/layer_tree_host_impl_unittest.cc
@@ -665,33 +665,33 @@
     CopyProperties(InnerViewportScrollLayer(), child);
 
     TouchActionRegion root_touch_action_region;
-    root_touch_action_region.Union(kTouchActionPanX, gfx::Rect(0, 0, 50, 50));
+    root_touch_action_region.Union(TouchAction::kPanX, gfx::Rect(0, 0, 50, 50));
     root_layer()->SetTouchActionRegion(root_touch_action_region);
     TouchActionRegion child_touch_action_region;
-    child_touch_action_region.Union(kTouchActionPanLeft,
+    child_touch_action_region.Union(TouchAction::kPanLeft,
                                     gfx::Rect(0, 0, 25, 25));
     child->SetTouchActionRegion(child_touch_action_region);
 
-    TouchAction touch_action = kTouchActionAuto;
+    TouchAction touch_action = TouchAction::kAuto;
     host_impl_->EventListenerTypeForTouchStartOrMoveAt(gfx::Point(10, 10),
                                                        &touch_action);
-    EXPECT_EQ(kTouchActionPanLeft, touch_action);
-    touch_action = kTouchActionAuto;
+    EXPECT_EQ(TouchAction::kPanLeft, touch_action);
+    touch_action = TouchAction::kAuto;
     host_impl_->EventListenerTypeForTouchStartOrMoveAt(gfx::Point(30, 30),
                                                        &touch_action);
-    EXPECT_EQ(kTouchActionPanX, touch_action);
+    EXPECT_EQ(TouchAction::kPanX, touch_action);
 
     TouchActionRegion new_child_region;
-    new_child_region.Union(kTouchActionPanY, gfx::Rect(0, 0, 25, 25));
+    new_child_region.Union(TouchAction::kPanY, gfx::Rect(0, 0, 25, 25));
     child->SetTouchActionRegion(new_child_region);
-    touch_action = kTouchActionAuto;
+    touch_action = TouchAction::kAuto;
     host_impl_->EventListenerTypeForTouchStartOrMoveAt(gfx::Point(10, 10),
                                                        &touch_action);
-    EXPECT_EQ(kTouchActionPanY, touch_action);
-    touch_action = kTouchActionAuto;
+    EXPECT_EQ(TouchAction::kPanY, touch_action);
+    touch_action = TouchAction::kAuto;
     host_impl_->EventListenerTypeForTouchStartOrMoveAt(gfx::Point(30, 30),
                                                        &touch_action);
-    EXPECT_EQ(kTouchActionPanX, touch_action);
+    EXPECT_EQ(TouchAction::kPanX, touch_action);
   }
 
   LayerImpl* CreateLayerForSnapping() {
@@ -1234,13 +1234,14 @@
   // Touch handler regions determine whether touch events block scroll.
   TouchAction touch_action;
   TouchActionRegion touch_action_region;
-  touch_action_region.Union(kTouchActionPanLeft, gfx::Rect(0, 0, 100, 100));
-  touch_action_region.Union(kTouchActionPanRight, gfx::Rect(25, 25, 100, 100));
+  touch_action_region.Union(TouchAction::kPanLeft, gfx::Rect(0, 0, 100, 100));
+  touch_action_region.Union(TouchAction::kPanRight,
+                            gfx::Rect(25, 25, 100, 100));
   root->SetTouchActionRegion(std::move(touch_action_region));
   EXPECT_EQ(InputHandler::TouchStartOrMoveEventListenerType::HANDLER,
             host_impl_->EventListenerTypeForTouchStartOrMoveAt(
                 gfx::Point(10, 10), &touch_action));
-  EXPECT_EQ(kTouchActionPanLeft, touch_action);
+  EXPECT_EQ(TouchAction::kPanLeft, touch_action);
 
   // But they don't influence the actual handling of the scroll gestures.
   InputHandler::ScrollStatus status = host_impl_->ScrollBegin(
@@ -1258,14 +1259,14 @@
   EXPECT_EQ(InputHandler::TouchStartOrMoveEventListenerType::NO_HANDLER,
             host_impl_->EventListenerTypeForTouchStartOrMoveAt(
                 gfx::Point(10, 30), &touch_action));
-  EXPECT_EQ(kTouchActionAuto, touch_action);
+  EXPECT_EQ(TouchAction::kAuto, touch_action);
   touch_action_region = TouchActionRegion();
-  touch_action_region.Union(kTouchActionPanX, gfx::Rect(0, 0, 50, 50));
+  touch_action_region.Union(TouchAction::kPanX, gfx::Rect(0, 0, 50, 50));
   child->SetTouchActionRegion(std::move(touch_action_region));
   EXPECT_EQ(InputHandler::TouchStartOrMoveEventListenerType::HANDLER,
             host_impl_->EventListenerTypeForTouchStartOrMoveAt(
                 gfx::Point(10, 30), &touch_action));
-  EXPECT_EQ(kTouchActionPanX, touch_action);
+  EXPECT_EQ(TouchAction::kPanX, touch_action);
 }
 
 TEST_F(LayerTreeHostImplTest, ShouldScrollOnMainThread) {
@@ -3936,7 +3937,7 @@
     SetupScrollbarLayer(root_scroll, scrollbar_1_);
     scrollbar_1_->SetBounds(scrollbar_size_1);
     TouchActionRegion touch_action_region;
-    touch_action_region.Union(kTouchActionNone, gfx::Rect(scrollbar_size_1));
+    touch_action_region.Union(TouchAction::kNone, gfx::Rect(scrollbar_size_1));
     scrollbar_1_->SetTouchActionRegion(touch_action_region);
 
     // scrollbar_2 on child.
@@ -4058,7 +4059,7 @@
   SetupScrollbarLayer(root_scroll, scrollbar_1);
   scrollbar_1->SetBounds(scrollbar_size_1);
   TouchActionRegion touch_action_region;
-  touch_action_region.Union(kTouchActionNone, gfx::Rect(scrollbar_size_1));
+  touch_action_region.Union(TouchAction::kNone, gfx::Rect(scrollbar_size_1));
   scrollbar_1->SetTouchActionRegion(touch_action_region);
 
   LayerImpl* child =
@@ -4379,7 +4380,7 @@
   SetupScrollbarLayer(root_scroll, scrollbar);
   scrollbar->SetBounds(scrollbar_size);
   TouchActionRegion touch_action_region;
-  touch_action_region.Union(kTouchActionNone, gfx::Rect(scrollbar_size));
+  touch_action_region.Union(TouchAction::kNone, gfx::Rect(scrollbar_size));
   scrollbar->SetTouchActionRegion(touch_action_region);
   host_impl_->active_tree()->DidBecomeActive();
 
@@ -5332,7 +5333,7 @@
   SetupScrollbarLayer(OuterViewportScrollLayer(), scrollbar_layer);
   scrollbar_layer->SetBounds(scrollbar_size);
   TouchActionRegion touch_action_region;
-  touch_action_region.Union(kTouchActionNone, gfx::Rect(scrollbar_size));
+  touch_action_region.Union(TouchAction::kNone, gfx::Rect(scrollbar_size));
   scrollbar_layer->SetTouchActionRegion(touch_action_region);
   scrollbar_layer->SetOffsetToTransformParent(gfx::Vector2dF(0, 35));
   UpdateDrawProperties(host_impl_->active_tree());
@@ -12316,7 +12317,7 @@
   SetupScrollbarLayer(root_scroll, scrollbar_1);
   scrollbar_1->SetBounds(scrollbar_size_1);
   TouchActionRegion touch_action_region;
-  touch_action_region.Union(kTouchActionNone, gfx::Rect(scrollbar_size_1));
+  touch_action_region.Union(TouchAction::kNone, gfx::Rect(scrollbar_size_1));
   scrollbar_1->SetTouchActionRegion(touch_action_region);
 
   host_impl_->active_tree()->UpdateScrollbarGeometries();
diff --git a/cc/trees/layer_tree_impl_unittest.cc b/cc/trees/layer_tree_impl_unittest.cc
index af5f0ef..d04816b2 100644
--- a/cc/trees/layer_tree_impl_unittest.cc
+++ b/cc/trees/layer_tree_impl_unittest.cc
@@ -1115,7 +1115,7 @@
 
 TEST_F(LayerTreeImplTest, HitCheckingTouchHandlerRegionsForSingleLayer) {
   TouchActionRegion touch_action_region;
-  touch_action_region.Union(kTouchActionNone, gfx::Rect(10, 10, 50, 50));
+  touch_action_region.Union(TouchAction::kNone, gfx::Rect(10, 10, 50, 50));
 
   LayerImpl* root = root_layer();
   root->SetBounds(gfx::Size(100, 100));
@@ -1192,7 +1192,7 @@
   ASSERT_FALSE(uninvertible_transform.IsInvertible());
 
   TouchActionRegion touch_action_region;
-  touch_action_region.Union(kTouchActionNone, gfx::Rect(10, 10, 50, 50));
+  touch_action_region.Union(TouchAction::kNone, gfx::Rect(10, 10, 50, 50));
 
   LayerImpl* layer = AddLayer<LayerImpl>();
   layer->SetBounds(gfx::Size(100, 100));
@@ -1260,7 +1260,7 @@
 TEST_F(LayerTreeImplTest,
        HitCheckingTouchHandlerRegionsForSinglePositionedLayer) {
   TouchActionRegion touch_action_region;
-  touch_action_region.Union(kTouchActionNone, gfx::Rect(10, 10, 50, 50));
+  touch_action_region.Union(TouchAction::kNone, gfx::Rect(10, 10, 50, 50));
 
   // This layer is positioned, and hit testing should correctly know where the
   // layer is located.
@@ -1333,7 +1333,7 @@
   CreateTransformNode(page_scale_layer);
 
   TouchActionRegion touch_action_region;
-  touch_action_region.Union(kTouchActionNone, gfx::Rect(10, 10, 30, 30));
+  touch_action_region.Union(TouchAction::kNone, gfx::Rect(10, 10, 30, 30));
   LayerImpl* test_layer = AddLayer<LayerImpl>();
   test_layer->SetBounds(gfx::Size(50, 50));
   test_layer->SetDrawsContent(true);
@@ -1472,7 +1472,7 @@
   CreateClipNode(clipping_layer);
 
   TouchActionRegion touch_action_region;
-  touch_action_region.Union(kTouchActionNone, gfx::Rect(10, 10, 50, 50));
+  touch_action_region.Union(TouchAction::kNone, gfx::Rect(10, 10, 50, 50));
 
   LayerImpl* child = AddLayer<LayerImpl>();
   child->SetBounds(gfx::Size(300, 300));
@@ -1554,7 +1554,7 @@
   CreateClipNode(clipping_layer);
 
   TouchActionRegion touch_action_region;
-  touch_action_region.Union(kTouchActionNone, gfx::Rect(0, 0, 300, 300));
+  touch_action_region.Union(TouchAction::kNone, gfx::Rect(0, 0, 300, 300));
 
   LayerImpl* child = AddLayer<LayerImpl>();
   child->SetBounds(gfx::Size(300, 300));
@@ -1616,7 +1616,7 @@
   touch_layer->SetDrawsContent(true);
   touch_layer->SetHitTestable(true);
   TouchActionRegion touch_action_region;
-  touch_action_region.Union(kTouchActionNone, gfx::Rect(0, 0, 50, 50));
+  touch_action_region.Union(TouchAction::kNone, gfx::Rect(0, 0, 50, 50));
   touch_layer->SetTouchActionRegion(touch_action_region);
   CopyProperties(root, touch_layer);
 
@@ -1678,7 +1678,7 @@
   root->SetHitTestable(true);
 
   TouchActionRegion touch_action_region;
-  touch_action_region.Union(kTouchActionNone, gfx::Rect(10, 10, 30, 30));
+  touch_action_region.Union(TouchAction::kNone, gfx::Rect(10, 10, 30, 30));
   LayerImpl* test_layer = AddLayer<LayerImpl>();
   test_layer->SetBounds(gfx::Size(50, 50));
   test_layer->SetDrawsContent(false);
diff --git a/chrome/VERSION b/chrome/VERSION
index 34d788c..c33e0c0 100644
--- a/chrome/VERSION
+++ b/chrome/VERSION
@@ -1,4 +1,4 @@
 MAJOR=81
 MINOR=0
-BUILD=3998
+BUILD=4000
 PATCH=0
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
index 766415a..8e5d15e4 100644
--- a/chrome/android/chrome_java_sources.gni
+++ b/chrome/android/chrome_java_sources.gni
@@ -124,6 +124,7 @@
   "java/src/org/chromium/chrome/browser/browserservices/BrowserServicesActivityTabController.java",
   "java/src/org/chromium/chrome/browser/browserservices/BrowserServicesIntentDataProvider.java",
   "java/src/org/chromium/chrome/browser/browserservices/BrowserServicesMetrics.java",
+  "java/src/org/chromium/chrome/browser/browserservices/BrowserServicesStore.java",
   "java/src/org/chromium/chrome/browser/browserservices/ClearDataDialogActivity.java",
   "java/src/org/chromium/chrome/browser/browserservices/ClearDataDialogResultRecorder.java",
   "java/src/org/chromium/chrome/browser/browserservices/ClientAppBroadcastReceiver.java",
@@ -1606,7 +1607,6 @@
   "java/src/org/chromium/chrome/browser/tab/TabIdManager.java",
   "java/src/org/chromium/chrome/browser/tab/TabImpl.java",
   "java/src/org/chromium/chrome/browser/tab/TabImportanceManager.java",
-  "java/src/org/chromium/chrome/browser/tab/TabHelpers.java",
   "java/src/org/chromium/chrome/browser/tab/TabLifecycle.java",
   "java/src/org/chromium/chrome/browser/tab/TabObserver.java",
   "java/src/org/chromium/chrome/browser/tab/TabParentIntent.java",
diff --git a/chrome/android/chrome_junit_test_java_sources.gni b/chrome/android/chrome_junit_test_java_sources.gni
index 4550802..77103d62 100644
--- a/chrome/android/chrome_junit_test_java_sources.gni
+++ b/chrome/android/chrome_junit_test_java_sources.gni
@@ -79,6 +79,7 @@
   "junit/src/org/chromium/chrome/browser/firstrun/FirstRunFlowSequencerTest.java",
   "junit/src/org/chromium/chrome/browser/firstrun/FirstRunIntegrationUnitTest.java",
   "junit/src/org/chromium/chrome/browser/firstrun/ToSAckedReceiverTest.java",
+  "junit/src/org/chromium/chrome/browser/flags/FeatureUtilitiesUnitTest.java",
   "junit/src/org/chromium/chrome/browser/fullscreen/BrowserStateBrowserControlsVisibilityDelegateTest.java",
   "junit/src/org/chromium/chrome/browser/fullscreen/ComposedBrowserControlsVisibilityDelegateTest.java",
   "junit/src/org/chromium/chrome/browser/gcore/GoogleApiClientHelperTest.java",
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/overlay/AssistantOverlayDrawable.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/overlay/AssistantOverlayDrawable.java
index 23ab2d84..26db933 100644
--- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/overlay/AssistantOverlayDrawable.java
+++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/overlay/AssistantOverlayDrawable.java
@@ -9,8 +9,6 @@
 import android.animation.TimeInterpolator;
 import android.animation.ValueAnimator;
 import android.content.Context;
-import android.content.res.Resources;
-import android.content.res.TypedArray;
 import android.graphics.Canvas;
 import android.graphics.Color;
 import android.graphics.ColorFilter;
@@ -23,10 +21,10 @@
 import android.graphics.Region;
 import android.graphics.drawable.Drawable;
 import android.support.annotation.Nullable;
-import android.support.v4.content.res.ResourcesCompat;
 import android.text.TextUtils;
 import android.util.DisplayMetrics;
 import android.util.TypedValue;
+import android.widget.TextView;
 
 import androidx.annotation.IntDef;
 
@@ -142,20 +140,15 @@
 
         mFullscreenManager.addListener(this);
 
-        // Inherit font from AssistantBlackBody style.
+        // Inherit font from AssistantBlackBody style. This is done by letting a temporary text view
+        // resolve the target typeface, because resolving it manually with ResourcesCompat.getFont()
+        // yields a StrictMode violation due to disk access.
         mTextPaint = new Paint();
-        TypedArray styled_attributes = context.obtainStyledAttributes(
-                R.style.TextAppearance_AssistantBlackBody, R.styleable.TextAppearance);
-        if (styled_attributes.hasValue(R.styleable.TextAppearance_android_fontFamily)) {
-            int fontId = styled_attributes.getResourceId(
-                    R.styleable.TextAppearance_android_fontFamily, -1);
-            try {
-                mTextPaint.setTypeface(ResourcesCompat.getFont(context, fontId));
-            } catch (Resources.NotFoundException ignored) {
-                // Use default font
-            }
+        TextView temp = new TextView(context);
+        ApiCompatibilityUtils.setTextAppearance(temp, R.style.TextAppearance_AssistantBlackBody);
+        if (temp.getTypeface() != null) {
+            mTextPaint.setTypeface(temp.getTypeface());
         }
-        styled_attributes.recycle();
 
         // Sets colors to default.
         setBackgroundColor(null);
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ar.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ar.xtb
index 58cdf957..200b767 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ar.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ar.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">‏تم إغلاق "مساعد Google" في Chrome.</translation>
 <translation id="4517854969512651305">زيادة القيمة</translation>
 <translation id="4850886885716139402">عرض</translation>
+<translation id="4952448020231702394">‏يوفّر لك "مساعد Google" الوقت من خلال مساعدتك على إكمال الإجراءات على الويب، مثل البحث والدفع.</translation>
 <translation id="5267269112080050255">‏يتم فتح "مساعد Google" في Chrome بارتفاع كامل.</translation>
+<translation id="6235816755461937614">‏يُرسل "مساعد Google" طلبات (نصية أو صوتية) إلى Chrome. سيُرسل Chrome عنوان URL الخاص بالموقع الإلكتروني ومحتواه بالإضافة إلى المعلومات الشخصية ذات الصلة إلى Google. يمكن أن يتضمّن هذا عنوان البريد الإلكتروني ونوع بطاقة الإئتمان بناءً على الطلب. يمكنك إيقاف هذا في إعدادات Chrome. <ph name="BEGIN_LINK" />مزيد من المعلومات<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">‏تم فتح "مساعد Google" في Chrome بنصف ارتفاع.</translation>
 <translation id="6973932557599545801">عذرًا، لا يمكنني مساعدتك، يُرجى المتابعة بنفسك.</translation>
 <translation id="7658239707568436148">إلغاء</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_az.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_az.xtb
index b19cbe1..19b7054 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_az.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_az.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Google Assistent Chrome'da bağlıdır.</translation>
 <translation id="4517854969512651305">Dəyəri çoxaldın</translation>
 <translation id="4850886885716139402">Görünüş</translation>
+<translation id="4952448020231702394">Google Assistent vebdə axtarış və ödəniş kimi əməliyyatların icrasında yardım etməklə vaxta qənaət edir.</translation>
 <translation id="5267269112080050255">Google Assistent Chrome'da tam hündürlükdə açıqdır.</translation>
+<translation id="6235816755461937614">Google Assistent Chrome'a sorğular (mətn və səs) göndərir. Chrome saytın keçid və məzmununu, eləcə də müvafiq şəxsi məlumatları Google'a göndərəcək. Sorğudan asılı olaraq, e-poçt və kredit kartının növü daxil ola bilər. Bunu Chrome ayarlarından deaktiv edə bilərsiniz. <ph name="BEGIN_LINK" />Ətraflı məlumat<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Google Assistent Chrome'da yarı hündürlükdə açılıb.</translation>
 <translation id="6973932557599545801">Artıq kömək edə bilmirəm, özünüz davam edin.</translation>
 <translation id="7658239707568436148">Ləğv edin</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_be.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_be.xtb
index ac812e2d..5a91732c 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_be.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_be.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Памочнік Google у браўзеры Chrome закрыты.</translation>
 <translation id="4517854969512651305">Павялічыць значэнне</translation>
 <translation id="4850886885716139402">Праглядзець</translation>
+<translation id="4952448020231702394">Памочнік Google эканоміць ваш час, дапамагаючы выконваць дзеянні ў інтэрнэце, напрыклад пошук ці аплату.</translation>
 <translation id="5267269112080050255">Памочнік Google разгорнуты ў браўзеры Chrome поўнасцю.</translation>
+<translation id="6235816755461937614">Памочнік Google адпраўляе запыты (тэкставыя і галасавыя) у Chrome. Chrome адправіць у Google URL-адрас і змесціва гэтага сайта, а таксама адпаведную асабістую інфармацыю. У залежнасці ад запыту адпраўленыя даныя могуць змяшчаць адрас электроннай пошты і тып крэдытнай карткі. Гэты параметр можна адключыць у наладах Chrome. <ph name="BEGIN_LINK" />Даведацца больш<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Памочнік Google разгорнуты ў браўзеры Chrome напалову.</translation>
 <translation id="6973932557599545801">На жаль, дапамагчы не ўдалося. Працягвайце самастойна.</translation>
 <translation id="7658239707568436148">Адмяніць</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_bg.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_bg.xtb
index bc663fb7..2280bc1d 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_bg.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_bg.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Google Асистент в Chrome бе затворен.</translation>
 <translation id="4517854969512651305">Увеличаване на стойността</translation>
 <translation id="4850886885716139402">Изглед</translation>
+<translation id="4952448020231702394">Google Асистент ви спестява време, като ви помага да извършвате различни действия в мрежата, като например търсене и плащане.</translation>
 <translation id="5267269112080050255">Google Асистент в Chrome е отворен на цялата височина.</translation>
+<translation id="6235816755461937614">Google Асистент изпраща заявки (текстови и гласови) до Chrome. Chrome ще ни изпрати URL адреса и съдържанието на сайта, както и съответната лична информация. В зависимост от заявката това може да включва имейла и типа на кредитната карта. Можете да изключите тази функция от настройките на Chrome. <ph name="BEGIN_LINK" />Научете повече<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Google Асистент в Chrome е отворен на половината височина.</translation>
 <translation id="6973932557599545801">За съжаление, не мога да помогна. Моля, продължете ръчно.</translation>
 <translation id="7658239707568436148">Отказ</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_bn.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_bn.xtb
index 661b660..bcdab59a 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_bn.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_bn.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Chrome-এ Google অ্যাসিস্ট্যান্ট বন্ধ হয়ে গেছে।</translation>
 <translation id="4517854969512651305">বাড়ান</translation>
 <translation id="4850886885716139402">দেখুন</translation>
+<translation id="4952448020231702394">Google Assistant আপনাকে ওয়েবে সার্চ এবং চেক-আউটের মতো কাজগুলি চটপট করে নিতে সাহায্য করে।</translation>
 <translation id="5267269112080050255">Chrome-এ Google অ্যাসিস্ট্যান্ট পুরো স্ক্রিন জুড়ে খোলা আছে।</translation>
+<translation id="6235816755461937614">Chrome-এ Google Assistant (টেক্সট ও ভয়েসে) কোয়েরি পাঠায়। Chrome-এ সেভ করা সাইটের ইউআরএল এবং কন্টেন্ট সহ প্রাসঙ্গিক ব্যক্তিগত তথ্য Google-কে পাঠানো হবে। কী জানতে চাইছেন তার উপর ভিত্তি করে ইমেল আইডি ও কী ধরনের ক্রেডিট কার্ড আছে সেই সংক্রান্ত তথ্য অন্তর্ভুক্ত থাকবে। Chrome সেটিংসে গিয়ে আপনি এটি বন্ধ করতে পারবেন। <ph name="BEGIN_LINK" />আরও জানুন<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Chrome-এ Google অ্যাসিস্ট্যান্ট অর্ধেক স্ক্রিন জুড়ে খোলা আছে।</translation>
 <translation id="6973932557599545801">আমি সাহায্য করতে পারছি না, নিজের মতো করে এগিয়ে যান।</translation>
 <translation id="7658239707568436148">বাতিল</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_bs.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_bs.xtb
index c58ef679..0c9fe4e 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_bs.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_bs.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Google Asistent u Chromeu je zatvoren.</translation>
 <translation id="4517854969512651305">Povećavanje vrijednosti</translation>
 <translation id="4850886885716139402">Prikaz</translation>
+<translation id="4952448020231702394">Google Asistent vam štedi vrijeme pomažući vam da završavate radnje na webu, kao što su pretraživanje i plaćanje.</translation>
 <translation id="5267269112080050255">Google Asistent u Chromeu otvoren je na cijelom ekranu.</translation>
+<translation id="6235816755461937614">Google Asistent šalje upite (tekstualne i glasovne) Chromeu. Chrome će Googleu slati URL i sadržaj web lokacije te relevantne lične informacije. U zavisnosti od upita, to može uključivati adresu e-pošte i vrstu kreditne kartice. Ovu funkciju možete isključiti u postavkama Chromea. <ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Google Asistent je na pola otvoren.</translation>
 <translation id="6973932557599545801">Nažalost, ne mogu vam pomoći. Nastavite sami.</translation>
 <translation id="7658239707568436148">Otkaži</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_cs.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_cs.xtb
index cb8ddf0..96decbc5 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_cs.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_cs.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Asistent Google v Chromu byl zavřen.</translation>
 <translation id="4517854969512651305">Zvýšit hodnotu</translation>
 <translation id="4850886885716139402">Zobrazit</translation>
+<translation id="4952448020231702394">Asistent Google vám šetří čas tím, že vám pomáhá dokončovat akce na webu, jako jsou vyhledávání a platby.</translation>
 <translation id="5267269112080050255">Asistent Google v Chromu byl otevřen na celou výšku.</translation>
+<translation id="6235816755461937614">Asistent Google odesílá dotazy (textové a hlasové) do Chromu. Chrome adresu URL a obsah webu a relevantní osobní údaje odešle do Googlu. Tyto údaje mohou u některých typů dotazů zahrnovat e‑mailovou adresu a typ platební karty. Tuto funkci můžete v nastavení Chromu vypnout. <ph name="BEGIN_LINK" />Další informace<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Asistent Google v Chromu je otevřený na poloviční výšku.</translation>
 <translation id="6973932557599545801">Pardon, nedokážu vám pomoct. Je to na vás.</translation>
 <translation id="7658239707568436148">Zrušit</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_da.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_da.xtb
index 596dcfb..6854cc1 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_da.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_da.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Google Assistent i Chrome er lukket.</translation>
 <translation id="4517854969512651305">Hæv værdien</translation>
 <translation id="4850886885716139402">Vis</translation>
+<translation id="4952448020231702394">Med Google Assistent sparer du tid, da den hjælper dig med at udføre handlinger på nettet, f.eks. ved søgning og betaling.</translation>
 <translation id="5267269112080050255">Google Assistent i Chrome er åbnet i fuld højde.</translation>
+<translation id="6235816755461937614">Google Assistent sender forespørgsler (tekst og tale) til Chrome. Chrome sender websitets webadresse og indhold samt relevante personlige oplysninger til Google. Afhængigt af forespørgslen kan disse omfatte mail og typen af betalingskort. Du kan deaktivere dette i indstillingerne for Chrome. <ph name="BEGIN_LINK" />Få flere oplysninger<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Google Assistent i Chrome er åbnet i halv højde.</translation>
 <translation id="6973932557599545801">Jeg kan desværre ikke hjælpe. Fortsæt på egen hånd.</translation>
 <translation id="7658239707568436148">Annuller</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_de.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_de.xtb
index 2a68adf..1bb2a5df 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_de.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_de.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Google Assistant für Chrome geschlossen.</translation>
 <translation id="4517854969512651305">Wert erhöhen</translation>
 <translation id="4850886885716139402">Anzeigen</translation>
+<translation id="4952448020231702394">Mit Google Assistant sparen Sie Zeit bei Aktionen im Web, z. B. bei der Suche oder beim Bezahlen.</translation>
 <translation id="5267269112080050255">Google Assistant für Chrome in voller Höhe geöffnet.</translation>
+<translation id="6235816755461937614">Google Assistant sendet Anfragen (Text und Sprache) an Chrome. Chrome sendet die URL und den Inhalt der Website sowie relevante personenbezogene Daten an Google. Je nach Anfrage kann das die E-Mail-Adresse und den Kreditkartentyp beinhalten. Sie können dies in den Einstellungen von Chrome deaktivieren. <ph name="BEGIN_LINK" />Weitere Informationen<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Google Assistant für Chrome mit halber Höhe geöffnet.</translation>
 <translation id="6973932557599545801">Ich kann Ihnen leider nicht helfen. Bitte fahren Sie alleine fort.</translation>
 <translation id="7658239707568436148">Abbrechen</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_es-419.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_es-419.xtb
index 6fb619f..e6d5d4c 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_es-419.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_es-419.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Se cerró el Asistente de Google en Chrome.</translation>
 <translation id="4517854969512651305">Incrementar el valor</translation>
 <translation id="4850886885716139402">Ver</translation>
+<translation id="4952448020231702394">El Asistente de Google te ayuda a completar acciones en la Web, como búsquedas y confirmaciones de compras, para ahorrar tiempo.</translation>
 <translation id="5267269112080050255">El Asistente de Google en Chrome se abrió por completo.</translation>
+<translation id="6235816755461937614">El Asistente de Google envía consultas (texto y voz) a Chrome. Chrome enviará a Google la URL y el contenido del sitio, además de la información personal relevante. Según la consulta, estos datos pueden incluir el correo electrónico y el tipo de tarjeta de crédito. Puedes desactivar esta opción en la configuración de Chrome. <ph name="BEGIN_LINK" />Más información<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">El Asistente de Google en Chrome se abrió a media altura.</translation>
 <translation id="6973932557599545801">No puedo ayudarte. Continúa por tu cuenta.</translation>
 <translation id="7658239707568436148">Cancelar</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_es.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_es.xtb
index f2de1e170..de89201 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_es.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_es.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Se ha cerrado el Asistente de Google en Chrome.</translation>
 <translation id="4517854969512651305">Aumentar el valor</translation>
 <translation id="4850886885716139402">Ver</translation>
+<translation id="4952448020231702394">El Asistente de Google te permite ahorrar tiempo ayudándote a completar acciones en la Web, por ejemplo, al realizar búsquedas o pagos.</translation>
 <translation id="5267269112080050255">Se ha abierto el Asistente de Google en Chrome para que ocupe toda la pantalla.</translation>
+<translation id="6235816755461937614">El Asistente de Google envía consultas (de texto y de voz) a Chrome. Chrome enviará a Google la URL y el contenido del sitio web, así como información personal pertinente. Según la consulta, puede incluirse el correo electrónico y el tipo de tarjeta de crédito. Puedes desactivar esta opción en los ajustes de Chrome. <ph name="BEGIN_LINK" />Más información<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Se ha abierto el Asistente de Google en Chrome a media altura.</translation>
 <translation id="6973932557599545801">Lo siento, no puedo ayudarte. Puedes continuar por tu cuenta.</translation>
 <translation id="7658239707568436148">Cancelar</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_et.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_et.xtb
index de25b33..949aa071 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_et.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_et.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Chrome'ile mõeldud Google'i assistent on suletud.</translation>
 <translation id="4517854969512651305">Väärtuse suurendamine</translation>
 <translation id="4850886885716139402">Kuva</translation>
+<translation id="4952448020231702394">Google'i assistent säästab teie aega, võimaldades teil veebis toiminguid teha (nt otsida ja kassas maksta).</translation>
 <translation id="5267269112080050255">Chrome'i jaoks mõeldud Google'i assistent avanes täiskõrgusega.</translation>
+<translation id="6235816755461937614">Google'i assistent saadab päringud (teksti ja hääle) Chrome'ile. Chrome saadab Google'il saidi URL-i ja sisu ning asjakohased isiklikud andmed. Olenevalt päringust võib see hõlmata e-posti aadressi ja krediitkaardi tüüpi. Selle saab Chrome'i seadetes välja lülitada. <ph name="BEGIN_LINK" />Lisateave<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Chrome'i jaoks mõeldud Google'i assistent avanes poole kõrgusega.</translation>
 <translation id="6973932557599545801">Kahjuks ma ei saa aidata, jätkake iseseisvalt.</translation>
 <translation id="7658239707568436148">Tühista</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_fa.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_fa.xtb
index 75cda8f..28b34ff8 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_fa.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_fa.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">‏«دستیار Google» در Chrome بسته شد.</translation>
 <translation id="4517854969512651305">افزایش مقدار</translation>
 <translation id="4850886885716139402">نما</translation>
+<translation id="4952448020231702394">‏«دستیار Google» با کمک به شما برای تکمیل کنش‌ها در وب (مثلاً جستجو و تسویه‌حساب)، در زمانتان صرفه‌جویی می‌کند.</translation>
 <translation id="5267269112080050255">‏«دستیار Google» به‌صورت کامل در Chrome باز شد.</translation>
+<translation id="6235816755461937614">‏«دستیار Google» پُرسمان‌هایی (نوشتار و صدا) به Chrome ارسال می‌کند. Chrome نشانی وب و محتوای سایت را به‌همراه اطلاعات شخصی مرتبط، به Google ارسال می‌کند. بسته به پُرسمان موردنظر، این اطلاعات می‌تواند شامل نوع کارت اعتباری و ایمیل باشد. می‌توانید این گزینه را در تنظیمات Chrome خاموش کنید. <ph name="BEGIN_LINK" />بیشتر بدانید<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">‏«دستیار Google» به‌صورت نیمه در Chrome باز شد.</translation>
 <translation id="6973932557599545801">متأسفم، نمی‌توانم کمک کنم، لطفاً خودتان ادامه دهید.</translation>
 <translation id="7658239707568436148">لغو</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_fi.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_fi.xtb
index bce669d..aa4ffed9 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_fi.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_fi.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Chromen Google Assistant suljettu</translation>
 <translation id="4517854969512651305">Suurenna arvoa</translation>
 <translation id="4850886885716139402">Näytä</translation>
+<translation id="4952448020231702394">Google Assistant säästää aikaa nopeuttamalla verkkotoimia, kuten hakemista ja maksamista.</translation>
 <translation id="5267269112080050255">Chromen Google Assistant avattu koko näytön korkeudelle.</translation>
+<translation id="6235816755461937614">Google Assistant lähettää Chromelle kyselyitä (tekstiä ja ääntä). Chrome lähettää Googlelle sivuston URL-osoitteen ja sisällön sekä asiaan liittyvät henkilötiedot. Kyselystä riippuen tietoihin voi kuulua sähköpostiosoite ja credit-kortin tyyppi. Voit poistaa tämän käytöstä Chromen asetuksissa. <ph name="BEGIN_LINK" />Lue lisää<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Chromen Google Assistant avattu näytön puolivälin korkeudelle</translation>
 <translation id="6973932557599545801">En valitettavasti voi auttaa. Voit jatkaa omatoimisesti.</translation>
 <translation id="7658239707568436148">Peruuta</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_fil.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_fil.xtb
index fe108011..f7ee7ba 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_fil.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_fil.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Nakasara ang Google Assistant sa Chrome.</translation>
 <translation id="4517854969512651305">Dagdagan ang value</translation>
 <translation id="4850886885716139402">View</translation>
+<translation id="4952448020231702394">Nakakatipid ka ng oras sa Google Assistant sa pamamagitan ng pagtulong nito sa iyong gumawa ng mga pagkilos sa web, gaya ng paghahanap at pag-checkout.</translation>
 <translation id="5267269112080050255">Nakabukas ang Google Assistant sa Chrome nang buo ang taas.</translation>
+<translation id="6235816755461937614">Nagpapadala ang Google Assistant ng mga query (text at voice) sa Chrome. Ipapadala ng Chrome sa Google ang URL at content ng site pati na rin ang nauugnay na personal na impormasyon. Depende sa query, puwedeng kasama dito ang email at uri ng credit card. Puwede mo itong i-off sa mga setting ng Chrome. <ph name="BEGIN_LINK" />Matuto pa<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Nakabukas ang Google Assistant sa Chrome nang kalahati ang taas.</translation>
 <translation id="6973932557599545801">Paumanhin, hindi ako makatulong. Magpatuloy nang mag-isa.</translation>
 <translation id="7658239707568436148">Kanselahin</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_fr-CA.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_fr-CA.xtb
index 82cbfbf..ffc486a 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_fr-CA.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_fr-CA.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">L'Assistant Google dans Chrome est fermé.</translation>
 <translation id="4517854969512651305">Augmenter la valeur</translation>
 <translation id="4850886885716139402">Affichage</translation>
+<translation id="4952448020231702394">L'Assistant Google vous fait gagner du temps en vous aidant à effectuer des actions sur le Web, comme des recherches et des paiements.</translation>
 <translation id="5267269112080050255">L'Assistant Google dans Chrome est ouvert à la hauteur maximale.</translation>
+<translation id="6235816755461937614">L'Assistant Google envoie des requêtes (texte et vocales) à Chrome. Chrome enverra le contenu et l'URL du site, ainsi que des renseignements personnels pertinents à Google. Selon la requête, ces derniers peuvent inclure une adresse de courriel et un type de carte de crédit. Vous pouvez désactiver cette option dans les paramètres de Chrome. <ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">L'Assistant Google dans Chrome est ouvert à la mi-hauteur.</translation>
 <translation id="6973932557599545801">Désolée, je ne suis plus en mesure de vous aider, veuillez continuer par vous-même.</translation>
 <translation id="7658239707568436148">Annuler</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_fr.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_fr.xtb
index 50e44f6..a7bb409 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_fr.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_fr.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">L'Assistant Google dans Chrome est fermé.</translation>
 <translation id="4517854969512651305">Augmenter la valeur</translation>
 <translation id="4850886885716139402">Afficher</translation>
+<translation id="4952448020231702394">L'Assistant Google vous permet de finaliser des actions sur le Web (régler des achats ou effectuer une recherche, par exemple) et, ainsi, de gagner du temps.</translation>
 <translation id="5267269112080050255">L'Assistant Google dans Chrome est ouvert à hauteur maximale.</translation>
+<translation id="6235816755461937614">L'Assistant Google envoie les requêtes textuelles et vocales à Chrome. L'URL et le contenu du site sont envoyés à Google via Chrome, ainsi que les informations personnelles pertinentes. Selon la requête, il peut s'agir de l'adresse e-mail et du type de carte de crédit. Vous pouvez désactiver cette option dans les paramètres de Chrome. <ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">L'Assistant Google dans Chrome est ouvert à mi-hauteur.</translation>
 <translation id="6973932557599545801">Malheureusement, je ne peux pas vous aider. Veuillez continuer manuellement.</translation>
 <translation id="7658239707568436148">Annuler</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_gl.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_gl.xtb
index 836d660..c6e99b0 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_gl.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_gl.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">O Asistente de Google en Chrome está pechado.</translation>
 <translation id="4517854969512651305">Aumentar o valor</translation>
 <translation id="4850886885716139402">Vista</translation>
+<translation id="4952448020231702394">O Asistente de Google permíteche aforrar tempo, xa que che axuda a realizar accións na Web, como facer buscas e procesar compras.</translation>
 <translation id="5267269112080050255">O Asistente de Google en Chrome abriuse a altura completa.</translation>
+<translation id="6235816755461937614">O Asistente de Google envía consultas (de voz e de texto) a Chrome. Este navegador enviará a Google o URL do sitio e o contido, así como a información persoal relevante. Dependendo da consulta, os datos poden incluír o correo electrónico e o tipo de tarxeta de crédito. Podes desactivar esta función na configuración de Chrome. <ph name="BEGIN_LINK" />Máis información<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">O Asistente de Google en Chrome abriuse a media altura.</translation>
 <translation id="6973932557599545801">Síntoo, non podo axudar. Continúa sen asistencia.</translation>
 <translation id="7658239707568436148">Cancelar</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_gu.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_gu.xtb
index 55fdb86..2031e45 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_gu.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_gu.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Chromeમાં Google આસિસ્ટંટ બંધ કર્યું.</translation>
 <translation id="4517854969512651305">મૂલ્ય વધારો</translation>
 <translation id="4850886885716139402">જુઓ</translation>
+<translation id="4952448020231702394">Google આસિસ્ટંટ વેબ પર શોધ તેમજ ચેકઆઉટ જેવા કાર્યો પૂરાં કરવામાં તમારી સહાય કરીને તમારો સમય બચાવે છે.</translation>
 <translation id="5267269112080050255">Chromeમાં Google આસિસ્ટંટ સંપૂર્ણ ઊંચાઈએ ખુલ્યું.</translation>
+<translation id="6235816755461937614">Google આસિસ્ટંટ Chromeને (ટેક્સ્ટ અને વૉઇસ) ક્વેરી મેકલે છે. Chrome સાઇટના URL અને કન્ટેન્ટ તેમજ સંબંધિત વ્યક્તિગત માહિતી Googleને મોકલશે. ક્વેરીના આધારે, આમાં ઇમેઇલ અને ક્રેડિટ કાર્ડના પ્રકારનો સમાવેશ થઈ શકે છે. તમે આને Chromeના સેટિંગમાં બંધ કરી શકો છો. <ph name="BEGIN_LINK" />વધુ જાણો<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Chromeમાં Google આસિસ્ટંટ અડધી ઊંચાઈએ ખુલ્યું.</translation>
 <translation id="6973932557599545801">માફ કરશો, હું હવે વધુ સહાય કરી શકીશ નહીં, કૃપા કરીને તમારી રીતે આગળ વધો.</translation>
 <translation id="7658239707568436148">રદ કરો</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_hr.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_hr.xtb
index d43972ca..0eaa242 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_hr.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_hr.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Zatvoren je Google asistent u Chromeu.</translation>
 <translation id="4517854969512651305">Povećavanje vrijednosti</translation>
 <translation id="4850886885716139402">Prikaz</translation>
+<translation id="4952448020231702394">Google asistent štedi vaše vrijeme jer vam pomaže dovršiti radnje na webu, kao što su pretraživanje i naplata.</translation>
 <translation id="5267269112080050255">Google asistent u Chromeu otvoren je u punoj visini.</translation>
+<translation id="6235816755461937614">Google asistent šalje upite (tekstualne i glasovne) Chromeu. Chrome će Googleu poslati URL i sadržaj web-lokacije te relevantne osobne podatke. Ovisno o upitu to može uključivati e-poštu i vrstu kreditne kartice. To možete isključiti u Chromeovim postavkama. <ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Google asistent u Chromeu otvoren je na pola visine.</translation>
 <translation id="6973932557599545801">Nažalost, ne mogu vam pomoći, nastavite sami.</translation>
 <translation id="7658239707568436148">Odustani</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_hu.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_hu.xtb
index 3eb79a98..aa05e805 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_hu.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_hu.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">A Google Segéd be van zárva a Chrome-ban.</translation>
 <translation id="4517854969512651305">Érték növelése</translation>
 <translation id="4850886885716139402">Nézet</translation>
+<translation id="4952448020231702394">A Google Segéd időt takarít meg Önnek azáltal, hogy segít bizonyos műveletek (pl. keresés és fizetés) elvégzésében az interneten.</translation>
 <translation id="5267269112080050255">A Google Segéd teljes magasságban van megnyitva a Chrome-ban.</translation>
+<translation id="6235816755461937614">A Google Segéd (szöveg- és hangalapú) lekérdezéseket küld a Chrome-nak. A Chrome elküldi a Google-nak a webhely URL-címét és tartalmát, valamint a releváns személyes adatokat. A lekérdezéstől függően ez tartalmazhatja az e-mail és a hitelkártya típusát. Ezt a Chrome beállításai között kapcsolhatja ki. <ph name="BEGIN_LINK" />További információ<ph name="END_LINK" />.</translation>
 <translation id="6555233628095991027">A Google Segéd félmagasságban van megnyitva a Chrome-ban.</translation>
 <translation id="6973932557599545801">Sajnos nem tudok többet segíteni. Kérjük, folytassa egyedül.</translation>
 <translation id="7658239707568436148">Mégse</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_hy.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_hy.xtb
index 046d7ef..21ac14b 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_hy.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_hy.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Google Օգնականը Chrome-ում փակվեց:</translation>
 <translation id="4517854969512651305">Մեծացնել արժեքը</translation>
 <translation id="4850886885716139402">Տեսք</translation>
+<translation id="4952448020231702394">Google Օգնականը խնայում է ձեր ժամանակը և օգնում է ձեզ գործողություններ կատարել համացանցում (օրինակ՝ որոնում կամ վճարում)։</translation>
 <translation id="5267269112080050255">Google Օգնականը Chrome-ում բացված է ամբողջությամբ։</translation>
+<translation id="6235816755461937614">Google Օգնականը տեքստային և ձայնային հարցումներ է ուղարկում Chrome-ին։ Chrome-ը Google-ին կուղարկի կայքի URL հասցեն, բովանդակությունը և համապատասխան անձնական տեղեկություններ։ Կախված հարցումից՝ անձնական տվյալները կարող են ներառել էլ․ հասցեն և վարկային քարտի տեսակը։ Այս գործառույթը կարող եք անջատել Chrome-ի կարգավորումներում: <ph name="BEGIN_LINK" />Իմանալ ավելին<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Google Օգնականը Chrome-ում կիսով չափ է բացված։</translation>
 <translation id="6973932557599545801">Այլևս չեմ կարող օգնել ձեզ: Շարունակեք ինքնուրույն:</translation>
 <translation id="7658239707568436148">Չեղարկել</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_id.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_id.xtb
index 80ef61e..b330af2 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_id.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_id.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Asisten Google di Chrome ditutup.</translation>
 <translation id="4517854969512651305">Meningkatkan nilai</translation>
 <translation id="4850886885716139402">Lihat</translation>
+<translation id="4952448020231702394">Asisten Google menghemat waktu Anda dengan membantu menyelesaikan tindakan di web, seperti penelusuran dan pembayaran.</translation>
 <translation id="5267269112080050255">Asisten Google di Chrome terbuka dengan ketinggian penuh.</translation>
+<translation id="6235816755461937614">Asisten Google mengirimkan kueri (teks dan suara) ke Chrome. Chrome akan mengirimkan URL dan konten situs serta informasi pribadi yang relevan ke Google. Ini dapat termasuk email dan jenis kartu kredit, bergantung pada kuerinya. Anda dapat menonaktifkan opsi ini di setelan Chrome. <ph name="BEGIN_LINK" />Pelajari lebih lanjut<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Asisten Google di Chrome terbuka dengan ketinggian separuh.</translation>
 <translation id="6973932557599545801">Maaf, saya tidak bisa membantu lagi. Silakan lanjutkan sendiri.</translation>
 <translation id="7658239707568436148">Batal</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_is.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_is.xtb
index 03b15c8..cdb85bb 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_is.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_is.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Google hjálpara í Chrome lokað.</translation>
 <translation id="4517854969512651305">Auka gildi</translation>
 <translation id="4850886885716139402">Yfirlit</translation>
+<translation id="4952448020231702394">Google hjálparinn sparar þér tíma með því að aðstoða þig við að gera hluti á vefnum eins og að leita og ganga frá kaupum.</translation>
 <translation id="5267269112080050255">Google hjálpari opnaður í fullri hæð.</translation>
+<translation id="6235816755461937614">Google hjálparinn sendir fyrirspurnir (texta og tal) til Chrome. Chrome sendir vefslóð vefsvæðisins og innihald þess auk viðeigandi persónuupplýsinga til Google. Þar á meðal geta verið netfangið þitt og gerð kreditkorts, eftir því hvernig fyrirspurnin er. Þú getur slökkt á þessu í stillingum Chrome. <ph name="BEGIN_LINK" />Frekari upplýsingar<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Google hjálpari í Chrome opnaður í hálfri hæð.</translation>
 <translation id="6973932557599545801">Ég get ekki aðstoðað meira, haltu áfram upp á eigin spýtur.</translation>
 <translation id="7658239707568436148">Hætta við</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_iw.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_iw.xtb
index 3b1a3496..e902048 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_iw.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_iw.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">‏Google Assistant ב-Chrome נסגר.</translation>
 <translation id="4517854969512651305">הגדלת ערך</translation>
 <translation id="4850886885716139402">הצגה</translation>
+<translation id="4952448020231702394">‏כדי לחסוך לך זמן, Google Assistant עוזר לך להשלים פעולות באינטרנט כמו חיפוש ותשלום בקופה.</translation>
 <translation id="5267269112080050255">‏Google Assistant ב-Chrome נפתח בגובה מלא.</translation>
+<translation id="6235816755461937614">‏Google Assistant שולח שאילתות (שאילתות טקסט ושאילתות קוליות) אל Chrome. Chrome ישלח ל-Google את כתובת ה-URL והתוכן של האתר, וגם מידע אישי רלוונטי. בהתאם לשאילתה, המידע יכול לכלול כתובת אימייל וסוג כרטיס אשראי. ניתן להשבית את האפשרות הזו בהגדרות Chrome. <ph name="BEGIN_LINK" />מידע נוסף<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">‏Google Assistant ב-Chrome נפתח בחצי גובה.</translation>
 <translation id="6973932557599545801">לצערי אין לי אפשרות לעזור. עליך להמשיך בעצמך.</translation>
 <translation id="7658239707568436148">ביטול</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ja.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ja.xtb
index db522f3..1d5cd2d 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ja.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ja.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Chrome の Google アシスタントを終了しました。</translation>
 <translation id="4517854969512651305">値を大きくします</translation>
 <translation id="4850886885716139402">表示</translation>
+<translation id="4952448020231702394">Google アシスタントを利用すると、検索や購入手続きといったウェブでの操作を時間をかけず簡単に完了できます</translation>
 <translation id="5267269112080050255">Chrome の Google アシスタントが画面全体に開いています。</translation>
+<translation id="6235816755461937614">Google アシスタントに話しかけると、クエリ(テキストと音声)が Chrome に送信され、Chrome から Google に、サイトの URL とコンテンツ、および関連する個人情報が送信されます。クエリの内容に応じて、送信される情報にはメールとクレジット カードの種類が含まれることがあります。この機能は Chrome の設定で無効にできます。<ph name="BEGIN_LINK" />詳細<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Chrome の Google アシスタントが画面の下半分に開いています。</translation>
 <translation id="6973932557599545801">自動入力できません。残りの入力はご自身で行ってください。</translation>
 <translation id="7658239707568436148">キャンセル</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ka.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ka.xtb
index 13f3733c..2b98eb0c 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ka.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ka.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Google ასისტენტი Chrome-ში დახურულია.</translation>
 <translation id="4517854969512651305">მნიშვნელობის გაზრდა</translation>
 <translation id="4850886885716139402">გადახედვა</translation>
+<translation id="4952448020231702394">Google ასისტენტი გეხმარებათ დროის დაზოგვაში და ვებში ისეთი ქმედებების შესრულებაში, როგორიცაა ძიება თუ ანგარიშსწორება.</translation>
 <translation id="5267269112080050255">Google ასისტენტი Chrome-ში გახსნილია სრულ სიმაღლეზე.</translation>
+<translation id="6235816755461937614">Google ასისტენტი მოთხოვნებს (ტექსტურ და ხმოვან) უგზავნის Chrome-ს. Chrome გაუგზავნის Google-ს ამ საიტის URL-სა და კონტენტს, ასევე შესაბამის პერსონალურ ინფორმაციას. აღნიშნული შეიძლება მოიცავდეს ელფოსტის მისამართსა და საკრედიტო ბარათის ტიპს, რაც დამოკიდებულია მოთხოვნაზე. ამის გამორთვა შეგიძლიათ Chrome-ის პარამეტრებში. <ph name="BEGIN_LINK" />შეიტყვეთ მეტი<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Google ასისტენტი Chrome-ში გახსნილია ნახევარ სიმაღლეზე.</translation>
 <translation id="6973932557599545801">სამწუხაროდ, ვერ დაგეხმარებით. გთხოვთ, დამოუკიდებლად გააგრძელოთ.</translation>
 <translation id="7658239707568436148">გაუქმება</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_kk.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_kk.xtb
index eea280c..8372016b 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_kk.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_kk.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Chrome жүйесіндегі Google Assistant жабылды.</translation>
 <translation id="4517854969512651305">Мәнді арттыру</translation>
 <translation id="4850886885716139402">Көрініс</translation>
+<translation id="4952448020231702394">Google Assistant интернеттегі әрекетіңізді аяқтауға көмектесіп, уақытыңызды үнемдейді. Мысалы, қажетті ақпаратты іздеу немесе тапсырыстарды рәсімдеу.</translation>
 <translation id="5267269112080050255">Chrome браузерінде Google Assistant толық ашылды.</translation>
+<translation id="6235816755461937614">Google Assistant мәтіндік және дауыстық сұрауларды Chrome браузеріне жібереді. Ал Chrome браузері сайттың URL мекенжайы мен мазмұнын, сонымен қатар жеке мәліметтерін Google-ға жібереді. Сұрауға байланысты жеке мәліметтер электрондық пошта мен несиелік картаның түрі болуы мүмкін. Оны Chrome параметрлерінен өшіруге болады. <ph name="BEGIN_LINK" />Толығырақ<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Chrome браузерінде Google Assistant жартылай ашылды.</translation>
 <translation id="6973932557599545801">Өкінішке орай, енді көмектесе алмаймын, әрі қарай өзіңіз жалғастырыңыз.</translation>
 <translation id="7658239707568436148">Бас тарту</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_kn.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_kn.xtb
index 4bc06ec..25b3e89 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_kn.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_kn.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Chrome ನಲ್ಲಿ Google ಅಸಿಸ್ಟೆಂಟ್ ಅನ್ನು ಮುಚ್ಚಲಾಗಿದೆ.</translation>
 <translation id="4517854969512651305">ಮೌಲ್ಯವನ್ನು ಹೆಚ್ಚಿಸಿ</translation>
 <translation id="4850886885716139402">ವೀಕ್ಷಣೆ</translation>
+<translation id="4952448020231702394">ಹುಡುಕಾಟ ಮತ್ತು ಚೆಕ್‌ ಔಟ್‌ನಂತಹ ವೆಬ್‌ನಲ್ಲಿನ ಕ್ರಿಯೆಗಳನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ನಿಮಗೆ ಸಹಾಯ ಮಾಡುವ ಮೂಲಕ Google ಅಸಿಸ್ಟೆಂಟ್ ನಿಮ್ಮ ಸಮಯವನ್ನು ಉಳಿಸುತ್ತದೆ.</translation>
 <translation id="5267269112080050255">Chrome ನಲ್ಲಿ Google ಅಸಿಸ್ಟೆಂಟ್ ಅನ್ನು ಪೂರ್ಣ ಎತ್ತರದಲ್ಲಿ ತೆರೆಯಲಾಗಿದೆ.</translation>
+<translation id="6235816755461937614">Google ಅಸಿಸ್ಟೆಂಟ್ ಪ್ರಶ್ನೆಗಳನ್ನು (ಪಠ್ಯ ಮತ್ತು ಧ್ವನಿ) Chrome ಗೆ ಕಳುಹಿಸುತ್ತದೆ. ಸೈಟ್‌ನ URL, ವಿಷಯ ಹಾಗೂ ಸಂಬಂಧಿತ ವೈಯಕ್ತಿಕ ಮಾಹಿತಿಯನ್ನು Google ಗೆ Chrome ಕಳುಹಿಸುತ್ತದೆ. ಪ್ರಶ್ನೆಯನ್ನು ಆಧರಿಸಿ ಇದು ಇಮೇಲ್ ಮತ್ತು ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ಪ್ರಕಾರವನ್ನು ಒಳಗೊಂಡಿರಬಹುದು. ನೀವು Chrome ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಇದನ್ನು ಆಫ್ ಮಾಡಬಹುದು. <ph name="BEGIN_LINK" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Chrome ನಲ್ಲಿ Google ಅಸಿಸ್ಟೆಂಟ್ ಅನ್ನು ಅರ್ಧ ಎತ್ತರದಲ್ಲಿ ತೆರೆಯಲಾಗಿದೆ.</translation>
 <translation id="6973932557599545801">ಕ್ಷಮಿಸಿ, ನನ್ನಿಂದ ಸಹಾಯ ಮಾಡಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ, ನಿಮ್ಮ ವಿವೇಚನೆಗೆ ತಕ್ಕಂತೆ ಮುಂದುವರಿಸಿ.</translation>
 <translation id="7658239707568436148">ರದ್ದುಮಾಡಿ</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ko.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ko.xtb
index fd495129..53c65c2 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ko.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ko.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Chrome의 Google 어시스턴트가 종료되었습니다</translation>
 <translation id="4517854969512651305">값 늘리기</translation>
 <translation id="4850886885716139402">보기</translation>
+<translation id="4952448020231702394">Google 어시스턴트가 웹에서 검색, 체크아웃 등의 작업을 쉽게 완료하도록 지원하므로 시간을 절약할 수 있습니다.</translation>
 <translation id="5267269112080050255">Chrome의 Google 어시스턴트가 전체 높이로 열렸습니다</translation>
+<translation id="6235816755461937614">Google 어시스턴트에서 쿼리(문자 및 음성)를 Chrome에 전송합니다. Chrome에서 사이트 URL과 콘텐츠, 관련 개인정보를 Google에 전송합니다. 전송되는 정보에는 쿼리에 따라 이메일, 신용카드 유형이 포함될 수 있습니다. 이 기능은 Chrome 설정에서 사용 중지할 수 있습니다. <ph name="BEGIN_LINK" />자세히 알아보기<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Chrome의 Google 어시스턴트가 절반 높이로 열렸습니다</translation>
 <translation id="6973932557599545801">죄송합니다. 더 이상 도와드릴 수 없습니다. 직접 계속해 주세요.</translation>
 <translation id="7658239707568436148">취소</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ky.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ky.xtb
index 3ef4a27..6e841dd 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ky.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ky.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Chrome'догу Google Жардамчы жабылды.</translation>
 <translation id="4517854969512651305">Маанисин чоңойтуу</translation>
 <translation id="4850886885716139402">Көрүнүш</translation>
+<translation id="4952448020231702394">Google Жардамчы издөө жана төлөө сыяктуу аракеттерди тездетип, убакытыңызды үнөмдөйт.</translation>
 <translation id="5267269112080050255">Chrome'догу Google Жардамчы толук экранда ачылды.</translation>
+<translation id="6235816755461937614">Google Жардамчы сурамдарды (текст жана оозеки түрүндө) Chrome'го жөнөтөт. Chrome сайттардын URL шилтемелерин, мазмунду жана тийиштүү жеке маалыматты Google'га жөнөтөт. Сурамга жараша ал электрондук почта же насыя картасынын түрү болушу мүмкүн. Бул функцияны Chrome'дун жөндөөлөрүнөн өчүрсөңүз болот. <ph name="BEGIN_LINK" />Кеңири маалымат<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Chrome'догу Google Жардамчы экрандын жарымында ачылды.</translation>
 <translation id="6973932557599545801">Кечиресиз, мен жардам бере албайм, өзүңүз улантыңыз.</translation>
 <translation id="7658239707568436148">Жокко чыгаруу</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_lo.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_lo.xtb
index 6b469be..02bed06 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_lo.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_lo.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">ປິດຜູ້ຊ່ວຍ Google ໃນ Chrome ແລ້ວ.</translation>
 <translation id="4517854969512651305">ເພີ່ມຄ່າຂຶ້ນ</translation>
 <translation id="4850886885716139402">ເບິ່ງ</translation>
+<translation id="4952448020231702394">ຜູ້ຊ່ວຍ Google ປະຢັດເວລາໃຫ້ທ່ານໂດຍການຊ່ວຍທ່ານເຮັດສຳເລັດຄຳສັ່ງຕ່າງໆໃນເວັບ ເຊັ່ນ: ຊອກຫາ ແລະ ຈ່າຍຄ່າສິນຄ້າ.</translation>
 <translation id="5267269112080050255">ຜູ້ຊ່ວຍ Google ໃນ Chrome ເປີດຢູ່ໃນລະດັບຄວາມສູງເຕັມແລ້ວ.</translation>
+<translation id="6235816755461937614">ຜູ້ຊ່ວຍ Google ສົ່ງຄຳຊອກຫາ (ຂໍ້ຄວາມ ແລະ ສຽງ) ໃຫ້ Chrome. Chrome ຈະສົ່ງ URL ແລະ ເນື້ອຫາຂອງເວັບໄຊ ພ້ອມກັບຂໍ້ມູນສ່ວນຕົວທີ່ກ່ຽວຂ້ອງໃຫ້ Google. ໂດຍຂຶ້ນກັບຄຳຊອກຫາ ນີ້ສາມາດຮວມມີອີເມວ ແລະ ປະເພດບັດເຄຣດິດ. ທ່ານສາມາດປິດສິ່ງນີ້ໄດ້ໃນການຕັ້ງຄ່າ Chrome. <ph name="BEGIN_LINK" />ສຶກສາເພີ່ມເຕີມ<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">ຜູ້ຊ່ວຍ Google ໃນ Chrome ເປີດຢູ່ໃນລະດັບຄວາມສູງເຄິ່ງໜຶ່ງແລ້ວ.</translation>
 <translation id="6973932557599545801">ຂໍອະໄພ ເຮົາບໍ່ສາມາດຊ່ວຍໄດ້, ກະລຸນາສືບຕໍ່ດ້ວຍຕົວທ່ານເອງ.</translation>
 <translation id="7658239707568436148">ຍົກ​ເລີກ​</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_lt.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_lt.xtb
index d82ed1d..bf3a469c 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_lt.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_lt.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Programa „Google Assistant“ sistemoje „Chrome“ uždaryta.</translation>
 <translation id="4517854969512651305">Padidinti vertę</translation>
 <translation id="4850886885716139402">Žiūrėti</translation>
+<translation id="4952448020231702394">„Google“ padėjėjas padeda sutaupyti laiko atliekant veiksmus žiniatinklyje, pvz., ieškant ir atsiskaitant.</translation>
 <translation id="5267269112080050255">Programa „Google Assistant“ naršyklėje „Chrome“ atidaryta viso aukščio.</translation>
+<translation id="6235816755461937614">„Google“ padėjėjas siunčia užklausas (teksto ir balso) „Chrome“. „Chrome“ siųs svetainės URL ir turinį bei susijusią asmens informaciją „Google“. Atsižvelgiant į užklausą, gali būti nurodomas el. paštas ir kredito kortelės tipas. Šią funkciją galite išjungti „Chrome“ nustatymuose. <ph name="BEGIN_LINK" />Sužinokite daugiau<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Programa „Google Assistant“ naršyklėje „Chrome“ atidaryta pusės aukščio.</translation>
 <translation id="6973932557599545801">Deja, negaliu padėti, tolesnius veiksmus atlikite patys.</translation>
 <translation id="7658239707568436148">Atšaukti</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_lv.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_lv.xtb
index 8418d16..accf2e9 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_lv.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_lv.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Google asistents pārlūkprogrammā Chrome ir aizvērts.</translation>
 <translation id="4517854969512651305">Palielināt vērtību</translation>
 <translation id="4850886885716139402">Skatīt</translation>
+<translation id="4952448020231702394">Google asistents ietaupa jūsu laiku, palīdzot veikt darbības tīmeklī, piemēram, meklēšanu un izrakstīšanos.</translation>
 <translation id="5267269112080050255">Google asistents pārlūkprogrammā Chrome ir atvērts pilnā augstumā.</translation>
+<translation id="6235816755461937614">Google asistents nosūta vaicājumus (teksta un balss formātā) pārlūkam Chrome. Chrome nosūtīs vietnes URL un saturu, kā arī atbilstošu personas informāciju uz Google. Atkarībā no vaicājuma šī informācijas var ietvert e-pasta adresi un kredītkartes veidu. Šo iespēju varat izslēgt Chrome iestatījumos. <ph name="BEGIN_LINK" />Uzzināt vairāk<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Google asistents pārlūkprogrammā Chrome ir atvērts pusekrāna augstumā.</translation>
 <translation id="6973932557599545801">Diemžēl nevaru palīdzēt. Lūdzu, turpiniet patstāvīgi.</translation>
 <translation id="7658239707568436148">Atcelt</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_mk.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_mk.xtb
index c67656d..0f7d81e 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_mk.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_mk.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">„Помошникот на Google“ во Chrome е затворен.</translation>
 <translation id="4517854969512651305">Зголемете ја вредноста</translation>
 <translation id="4850886885716139402">Приказ</translation>
+<translation id="4952448020231702394">„Помошникот на Google“ ви заштедува време бидејќи ви помага да завршите дејства на интернет, како што се пребарување и наплата.</translation>
 <translation id="5267269112080050255">„Помошникот на Google“ во Chrome е отворен во цела висина.</translation>
+<translation id="6235816755461937614">„Помошникот на Google“ испраќа барања (текстуални и гласовни) во Chrome. Chrome ќе ги испрати URL-адресата и содржините од сајтот, како и сите важни лични податоци во Google. Во зависност од барањето, ова може да вклучува е-пошта или тип кредитна картичка. Ова може да го исклучите во поставките за Chrome. <ph name="BEGIN_LINK" />Дознајте повеќе<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">„Помошникот на Google“ во Chrome е отворен во половина висина.</translation>
 <translation id="6973932557599545801">Извинете што не можам да ви помогнам, продолжете сами.</translation>
 <translation id="7658239707568436148">Откажи</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_mn.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_mn.xtb
index 52c5e36..1d23cca5 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_mn.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_mn.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Chrome-н Google Туслахыг хаалаа.</translation>
 <translation id="4517854969512651305">Утгыг нэмэгдүүлэх</translation>
 <translation id="4850886885716139402">Харах</translation>
+<translation id="4952448020231702394">Google Туслах нь хайлт болон тооцоо хийх зэрэг вэб дээрх үйлдлүүдийг дуусгахад тусалж, таны цагийг хэмнэдэг.</translation>
 <translation id="5267269112080050255">Chrome-н Google Туслахыг бүрэн өндрөөр нээлээ.</translation>
+<translation id="6235816755461937614">Google Туслах нь асуулгыг (текст болон дуут) Chrome-д илгээдэг. Chrome нь сайтын URL, контент болон хамаарах хувийн мэдээллийг Google-д илгээнэ. Асуулгаас хамааран, энэ нь имэйл болон кредит картын төрлийг агуулж болно. Та үүнийг Chrome-н тохиргоонд унтрааж болно. <ph name="BEGIN_LINK" />Нэмэлт мэдээлэл авах<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Chrome-н Google Туслахыг хагас өндрөөр нээлээ.</translation>
 <translation id="6973932557599545801">Уучлаарай, би туслах боломжгүй байна. Та өөрөө үргэлжлүүлнэ үү.</translation>
 <translation id="7658239707568436148">Болих</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ms.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ms.xtb
index 70d25213..b4f2b1bd 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ms.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ms.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Google Assistant dalam Chrome ditutup.</translation>
 <translation id="4517854969512651305">Tingkatkan nilai</translation>
 <translation id="4850886885716139402">Lihat</translation>
+<translation id="4952448020231702394">Google Assistant menjimatkan masa dengan membantu anda menyelesaikan tindakan di web, seperti carian dan pembayaran.</translation>
 <translation id="5267269112080050255">Google Assistant dalam Chrome dibuka pada ketinggian penuh.</translation>
+<translation id="6235816755461937614">Google Assistant menghantar pertanyaan (teks dan suara) kepada Chrome. Chrome akan menghantar URL dan kandungan tapak serta maklumat peribadi yang berkaitan kepada Google. Bergantung pada pertanyaan, maklumat ini boleh termasuk e-mel dan jenis kad kredit. Anda boleh mematikan pilihan ini dalam tetapan Chrome. <ph name="BEGIN_LINK" />Ketahui lebih lanjut<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Google Assistant dalam Chrome dibuka pada ketinggian separuh.</translation>
 <translation id="6973932557599545801">Maaf, saya tidak dapat membantu. Sila teruskan sendiri.</translation>
 <translation id="7658239707568436148">Batal</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_my.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_my.xtb
index dc0622e..47c307420 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_my.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_my.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Chrome ရှိ Google Assistant ကို ပိတ်ထားသည်။</translation>
 <translation id="4517854969512651305">တန်ဖိုး တိုးသည်</translation>
 <translation id="4850886885716139402">မြင်ကွင်း</translation>
+<translation id="4952448020231702394">ရှာဖွေမှုနှင့် ငွေရှင်းခြင်းကဲ့သို့သော ဝဘ်ပေါ်ရှိ လုပ်ဆောင်ချက်များကို Google Assistant က ကူညီလုပ်ဆောင်ပေးခြင်းဖြင့် အချိန်ကုန်သက်သာစေပါသည်။</translation>
 <translation id="5267269112080050255">Chrome တွင် Google Assistant ကို မျက်နှာပြင်အပြည့်အထိ ဖွင့်ထားသည်။</translation>
+<translation id="6235816755461937614">Google Assistant သည် Chrome သို့ မေးမြန်းချက်များ (စာသားနှင့် အသံ) ကို ပို့သည်။ Chrome သည် ဝဘ်ဆိုက်၏ URL နှင့် အကြောင်းအရာအပြင် သက်ဆိုင်ရာ ကိုယ်ရေးကိုယ်တာ အချက်အလက်များကို Google သို့ ပို့သည်။ မေးမြန်းချက်အပေါ် မူတည်၍ ၎င်းတွင် အီးမေးလ်နှင့် ခရက်ဒစ်ကတ်အမျိုးအစား ပါဝင်နိုင်သည်။ ၎င်းကို Chrome ဆက်တင်များတွင် ပိတ်နိုင်သည်။ <ph name="BEGIN_LINK" />ပိုမိုလေ့လာရန်<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Chrome ရှိ Google Assistant ကို မျက်နှာပြင်တစ်ဝက်အထိ ဖွင့်ထားသည်။</translation>
 <translation id="6973932557599545801">ကျွန်ုပ် ကူညီ၍မရပါ၊ ကိုယ်တိုင် ဆက်လုပ်ပါ။</translation>
 <translation id="7658239707568436148">မလုပ်တော့</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ne.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ne.xtb
index a5d140d..5bc30a4 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ne.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ne.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Chrome को Google सहायक बन्द भयो।</translation>
 <translation id="4517854969512651305">मान बढाउनुहोस्</translation>
 <translation id="4850886885716139402">हेर्नुहोस्</translation>
+<translation id="4952448020231702394">Google सहायकले तपाईंलाई वेबमा खोज तथा चेकआउट जस्ता कारबाहीहरू सम्पन्न गर्न मद्दत गरेर तपाईंको समयको बचत गर्छ।</translation>
 <translation id="5267269112080050255">Chrome मा पूर्ण उचाइमा खोलिएको Google सहायक।</translation>
+<translation id="6235816755461937614">Google सहायकले Chrome मा क्वेरीहरू (पाठ र आवाज) पठाउँछ। Chrome ले Google मा साइटको URL तथा सामग्रीका साथै सान्दर्भिक निजी जानकारी पठाउँछ। क्वेरीका आधारमा यसमा इमेल तथा क्रेडिट कार्डको प्रकार समावेश हुन सक्छ। तपाईं Chrome का सेटिङहरूमा गई यसलाई निष्क्रिय पार्न सक्नुहुन्छ। <ph name="BEGIN_LINK" />थप जान्नुहोस्<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Chrome मा आधा उचाइमा खोलिएको Google सहायक।</translation>
 <translation id="6973932557599545801">माफ गर्नुहोस्, म मद्दत गर्न सक्दिन, कृपया अब आफैँ अघि बढ्नुहोस्।</translation>
 <translation id="7658239707568436148">रद्द गर्नुहोस्</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_no.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_no.xtb
index b4df66640..f167d766 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_no.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_no.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Google-assistenten i Chrome er lukket.</translation>
 <translation id="4517854969512651305">Øk verdien</translation>
 <translation id="4850886885716139402">Visning</translation>
+<translation id="4952448020231702394">Google-assistenten sparer tid ved å hjelpe deg med å gjennomføre handlinger på nettet, som å søke og handle.</translation>
 <translation id="5267269112080050255">Google-assistenten i Chrome er åpnet i full høyde.</translation>
+<translation id="6235816755461937614">Google-assistenten sender søk (tekst og tale) til Chrome. Chrome sender nettstedets nettadresse og innhold samt relevante personopplysninger til Google. Avhengig av søket kan dette inkludere e-postadresse og kredittkorttype. Du kan slå av dette i Chrome-innstillingene. <ph name="BEGIN_LINK" />Finn ut mer<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Google-assistenten i Chrome er åpnet i halv høyde.</translation>
 <translation id="6973932557599545801">Beklager, jeg kan ikke hjelpe deg. Fortsett på egen hånd.</translation>
 <translation id="7658239707568436148">Avbryt</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_or.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_or.xtb
index c3b0181..41e01bb 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_or.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_or.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Chromeରେ Google Assistant ବନ୍ଦ ହୋଇଗଲା।</translation>
 <translation id="4517854969512651305">ମୂଲ୍ୟ ବଢ଼ାନ୍ତୁ</translation>
 <translation id="4850886885716139402">ଦେଖନ୍ତୁ</translation>
+<translation id="4952448020231702394">Google Assistant ଆପଣଙ୍କୁ ୱେବ୍‍‍ରେ ସନ୍ଧାନ ଓ ଚେକ୍‍ଆଉଟ୍ ପରି, କାର୍ଯ୍ୟଗୁଡ଼ିକ ସମ୍ପୂର୍ଣ୍ଣ କରିବାରେ ଆପଣଙ୍କୁ ସାହାଯ୍ୟ କରି ଆପଣଙ୍କର ସମୟ ବଞ୍ଚାଏ।</translation>
 <translation id="5267269112080050255">Chromeରେ Google Assistant ସଂପୂର୍ଣ୍ଣ ରୂପେ ଖୋଲାଯାଇଛି।</translation>
+<translation id="6235816755461937614">Google Assistant Chromeକୁ କ୍ୱେରୀଗୁଡ଼ିକ (ଟେକ୍ସଟ୍ ଏବଂ ଭଏସ୍) ପଠାଏ। Chrome ସାଇଟ୍‍ର URL ଓ ବିଷୟବସ୍ତୁ ସହିତ ପ୍ରାସଙ୍ଗିକ ବ୍ୟକ୍ତିଗତ ସୂଚନା Googleକୁ ପଠାଇବ। କ୍ୱେରୀ ଉପରେ ନିର୍ଭର କରି ଏଥିରେ ଇମେଲ୍ ଓ କ୍ର୍ରେଡିଟ୍‍ କାର୍ଡର ପ୍ରକାର ସାମିଲ ହୋଇପାରେ। ଆପଣ ଏହାକୁ Chrome ସେଟିଂସ୍‌ରେ ବନ୍ଦ କରିପାରିବେ। <ph name="BEGIN_LINK" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Chromeରେ Google Assistant ଅର୍ଦ୍ଧେକ ଉଚ୍ଚରେ ଖୋଲାଯାଇଛି।</translation>
 <translation id="6973932557599545801">କ୍ଷମା କରନ୍ତୁ, ମୁଁ ସାହାଯ୍ୟ କରିବା ପାଇଁ ସକ୍ଷମ ନୁହେଁ, ଦୟାକରି ଆପଣ ଏହାକୁ ନିଜେ କରିବା ଜାରି ରଖନ୍ତୁ।</translation>
 <translation id="7658239707568436148">ବାତିଲ୍</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_pl.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_pl.xtb
index eb268ae..eefa9d0 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_pl.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_pl.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Zamknięto Asystenta Google w Chrome.</translation>
 <translation id="4517854969512651305">Zwiększ wartość</translation>
 <translation id="4850886885716139402">Widok</translation>
+<translation id="4952448020231702394">Asystent Google oszczędza Twój czas, pomagając Ci robić różne rzeczy (np. szukać i płacić) w internecie.</translation>
 <translation id="5267269112080050255">Asystent Google w Chrome otwarty na pełną wysokość.</translation>
+<translation id="6235816755461937614">Asystent Google wysyła zapytania (tekstowe i głosowe) do Chrome. Chrome wyśle do Google adres URL i zawartość strony oraz odpowiednie dane osobowe. W zależności od zapytania mogą one zawierać adres e-mail i typ karty kredytowej. Możesz wyłączyć tę opcję w ustawieniach Chrome. <ph name="BEGIN_LINK" />Więcej informacji<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Asystent Google w Chrome otwarty na pół wysokości.</translation>
 <translation id="6973932557599545801">Nie jestem w stanie Ci pomóc. Kontynuuj samodzielnie.</translation>
 <translation id="7658239707568436148">Anuluj</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_pt-BR.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_pt-BR.xtb
index 763cf70..3b4a53d97 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_pt-BR.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_pt-BR.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Google Assistente no Chrome fechado.</translation>
 <translation id="4517854969512651305">Aumentar valor</translation>
 <translation id="4850886885716139402">Visualizar</translation>
+<translation id="4952448020231702394">Com o Google Assistente, você economiza tempo ao ajudar a realizar ações na Web, como pesquisas e finalizações de compra.</translation>
 <translation id="5267269112080050255">Google Assistente no Chrome aberto no tamanho máximo.</translation>
+<translation id="6235816755461937614">O Google Assistente envia consultas (texto e voz) para o Chrome. O Chrome enviará ao Google o URL e o conteúdo do site, assim como informações pessoais relevantes. Dependendo da consulta, isso pode incluir o e-mail e o tipo de cartão de crédito. É possível desativar esse recurso nas configurações do Chrome. <ph name="BEGIN_LINK" />Saiba mais<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Google Assistente no Chrome aberto no tamanho médio.</translation>
 <translation id="6973932557599545801">Não posso ajudar. Você está por conta própria.</translation>
 <translation id="7658239707568436148">Cancelar</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_pt-PT.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_pt-PT.xtb
index 68adedd..1b1225b9 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_pt-PT.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_pt-PT.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Assistente Google no Chrome fechado.</translation>
 <translation id="4517854969512651305">Aumentar valor</translation>
 <translation id="4850886885716139402">Ver</translation>
+<translation id="4952448020231702394">O Assistente Google poupa o seu tempo ao ajudar a concluir ações na Web como pesquisas e pagamentos.</translation>
 <translation id="5267269112080050255">Assistente Google no Chrome aberto à altura total.</translation>
+<translation id="6235816755461937614">O Assistente Google envia consultas (texto e voz) para o Chrome. O Chrome envia o URL e o conteúdo do site, bem como informações pessoais relevantes para o Google. Consoante a consulta, isto pode incluir o email e o tipo de cartão de crédito. Pode desativar esta opção nas definições do Chrome. <ph name="BEGIN_LINK" />Saber mais<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Assistente Google no Chrome aberto a metade da altura.</translation>
 <translation id="6973932557599545801">Lamento, mas não posso ajudar. Continue por sua conta.</translation>
 <translation id="7658239707568436148">Cancelar</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ro.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ro.xtb
index dc89fe2..7cee60f 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ro.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ro.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Asistentul Google în Chrome este închis.</translation>
 <translation id="4517854969512651305">Mărește valoarea</translation>
 <translation id="4850886885716139402">Afișează</translation>
+<translation id="4952448020231702394">Cu Asistentul Google economisești timp la finalizarea acțiunilor pe web, cum ar fi căutarea și finalizarea achizițiilor.</translation>
 <translation id="5267269112080050255">Asistentul Google în Chrome este deschis la înălțimea completă.</translation>
+<translation id="6235816755461937614">Asistentul Google trimite interogările (text și vocale) la Chrome. Chrome va trimite la Google adresa URL a site-ului și conținutul său, precum și informațiile cu caracter personal relevante. În funcție de interogare, aceste informații pot include e-mailul și tipul cardului de credit. Poți să dezactivezi această opțiune din setările Chrome. <ph name="BEGIN_LINK" />Află mai multe<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Asistentul Google în Chrome a fost deschis la jumătate din înălțime.</translation>
 <translation id="6973932557599545801">Nu te mai pot ajuta. Continuă personal.</translation>
 <translation id="7658239707568436148">Anulează</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ru.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ru.xtb
index ba6a13a5..0e39808 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ru.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ru.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Окно Google Ассистента в Chrome закрыто.</translation>
 <translation id="4517854969512651305">Увеличить значение.</translation>
 <translation id="4850886885716139402">Посмотреть</translation>
+<translation id="4952448020231702394">Google Ассистент экономит ваше время, помогая вам выполнять действия в Интернете. Например, находить нужную информацию и оформлять заказы.</translation>
 <translation id="5267269112080050255">Окно Google Ассистента в Chrome открыто полностью.</translation>
+<translation id="6235816755461937614">Google Ассистент отправляет текстовые и голосовые запросы в Chrome, а Chrome перенаправляет URL сайта, его контент и необходимые персональные данные в Google. В зависимости от запроса персональные данные могут включать адрес электронной почты и тип кредитной карты. Вы можете отключить эти параметры в настройках Chrome. <ph name="BEGIN_LINK" />Подробнее…<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Окно Google Ассистента в Chrome открыто наполовину.</translation>
 <translation id="6973932557599545801">Извините, я ничем не могу помочь. Продолжите самостоятельно.</translation>
 <translation id="7658239707568436148">Отмена</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_sl.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_sl.xtb
index 7d83719..357acba4 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_sl.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_sl.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Pomočnik Google v Chromu je zaprt.</translation>
 <translation id="4517854969512651305">Povečanje vrednosti</translation>
 <translation id="4850886885716139402">Pogled</translation>
+<translation id="4952448020231702394">Pomočnik Google vam prihrani čas tako, da vam pomaga dokončati dejanja v spletu, denimo iskanje in zaključek nakupa.</translation>
 <translation id="5267269112080050255">Pomočnik Google v Chromu, odprt pri polni višini</translation>
+<translation id="6235816755461937614">Pomočnik Google pošlje poizvedbe (besedilne in glasovne) v Chrome. Chrome pošlje URL in vsebino spletnega mesta ter ustrezne osebne podatke Googlu. Glede na poizvedbo lahko to lahko vključuje tudi e-poštni naslov in vrsto kreditne kartice. To lahko izklopite v nastavitvah Chroma. <ph name="BEGIN_LINK" />Več o tem<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Pomočnik Google v Chromu, odprt pri polovični višini</translation>
 <translation id="6973932557599545801">Ne morem vam pomagati. Nadaljujte sami.</translation>
 <translation id="7658239707568436148">Prekliči</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_sq.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_sq.xtb
index 1ee3050f..ea59d87 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_sq.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_sq.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">"Asistenti i Google" në Chrome është i mbyllur.</translation>
 <translation id="4517854969512651305">Rrit vlerën</translation>
 <translation id="4850886885716139402">Pamja</translation>
+<translation id="4952448020231702394">"Asistenti i Google" të kursen kohë duke të ndihmuar të përfundon veprimet në ueb, si kërkimi dhe përfundimi i blerjes.</translation>
 <translation id="5267269112080050255">"Asistenti i Google" në Chrome është hapur në lartësi të plotë.</translation>
+<translation id="6235816755461937614">"Asistenti i Google" i dërgon Chrome kërkesa (me tekst dhe me zë). Chrome do të dërgojë te Google URL-në e sajtit, përmbajtjen e tij si edhe informacione të lidhura personale. Në varësi të kërkesës kjo mund të përfshijë email-in dhe llojin e kartës së kreditit. Këtë mund ta çaktivizosh te cilësimet e Chrome. <ph name="BEGIN_LINK" />Mëso më shumë<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">"Asistenti i Google" në Chrome është hapur në gjysmë lartësi.</translation>
 <translation id="6973932557599545801">Më vjen keq që nuk mund të të ndihmoj. Vazhdo vetë.</translation>
 <translation id="7658239707568436148">Anulo</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_sr.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_sr.xtb
index 2e19ed4..8a5c5cf 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_sr.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_sr.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Google помоћник у Chrome-у је затворен.</translation>
 <translation id="4517854969512651305">Повећава вредност</translation>
 <translation id="4850886885716139402">Приказ</translation>
+<translation id="4952448020231702394">Google помоћник вам штеди време јер вам помаже да довршите радње на вебу, попут претраге и плаћања.</translation>
 <translation id="5267269112080050255">Google помоћник у Chrome-у је отворен у пуној висини.</translation>
+<translation id="6235816755461937614">Google помоћник шаље упите (текстуалне и гласовне) Chrome-у. Chrome шаље Google-у URL и садржај сајта као релевантне личне податке. У зависности од упита, то може да обухвата имејл и тип кредитне картице. То можете да искључите у Chrome подешавањима. <ph name="BEGIN_LINK" />Сазнајте више<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Google помоћник у Chrome-у је отворен на пола висине.</translation>
 <translation id="6973932557599545801">Жао ми је, не могу да вам помогнем. Наставите сами.</translation>
 <translation id="7658239707568436148">Откажи</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_sv.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_sv.xtb
index b463bad..e346c73 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_sv.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_sv.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Google-assistenten i Chrome är stängd.</translation>
 <translation id="4517854969512651305">Öka värdet</translation>
 <translation id="4850886885716139402">Visa</translation>
+<translation id="4952448020231702394">Med Google Assistent kan du spara tid på webben, t.ex. när du söker eller går genom kassan.</translation>
 <translation id="5267269112080050255">Google-assistenten i Chrome öppnades och tar upp hela skärmen.</translation>
+<translation id="6235816755461937614">Google Assistent skickar frågor (skrivna och talade) till Chrome. Webbplatsens webbadress och innehåll skickas till Google från Chrome tillsammans med relevanta personliga uppgifter. Beroende på vad du frågar kan e-postadress och kreditkortstyp finnas med bland uppgifterna. Du kan inaktivera detta i inställningarna i Chrome. <ph name="BEGIN_LINK" />Läs mer<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Google-assistenten i Chrome öppnades och tar upp halva skärmen.</translation>
 <translation id="6973932557599545801">Jag kan tyvärr inte hjälpa till. Fortsätt på egen hand.</translation>
 <translation id="7658239707568436148">Avbryt</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_te.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_te.xtb
index f98a8b6..014d038 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_te.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_te.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Chromeలో Google అసిస్టెంట్ మూసివేయబడింది.</translation>
 <translation id="4517854969512651305">విలువను పెంచుతుంది</translation>
 <translation id="4850886885716139402">వీక్షణ</translation>
+<translation id="4952448020231702394">శోధన మరియు చెక్అవుట్ వంటి వెబ్‌లో చర్యలను పూర్తి చేయడంలో మీకు సహాయపడటం ద్వారా Google Assistant మీ సమయాన్ని ఆదా చేస్తుంది.</translation>
 <translation id="5267269112080050255">Chromeలో Google అసిస్టెంట్ పూర్తి ఎత్తులో తెరవబడింది.</translation>
+<translation id="6235816755461937614">Google Assistant Chromeకి ప్రశ్నలు (వచనం మరియు వాయిస్) పంపిస్తుంది. Chrome సైట్ యొక్క URL మరియు కంటెంట్‌తో పాటు సంబంధిత వ్యక్తిగత సమాచారాన్ని Googleకి పంపుతుంది. ప్రశ్నను బట్టి ఇది ఇమెయిల్ మరియు క్రెడిట్ కార్డ్ రకాన్ని కలిగి ఉంటుంది. మీరు Chrome సెట్టింగ్‌లలో దీన్ని ఆఫ్ చేయవచ్చు. <ph name="BEGIN_LINK" />మరింత తెలుసుకోండి<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Chromeలో Google అసిస్టెంట్ సగం ఎత్తులో తెరవబడింది.</translation>
 <translation id="6973932557599545801">క్షమించండి నేను సహాయం చేయలేకపోయాను, దయచేసి మీరే స్వంతంగా కొనసాగండి.</translation>
 <translation id="7658239707568436148">రద్దు చేయి</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_th.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_th.xtb
index 744c020..3f9fbbf2 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_th.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_th.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Google Assistant ใน Chrome ปิดอยู่</translation>
 <translation id="4517854969512651305">เพิ่มค่า</translation>
 <translation id="4850886885716139402">มุมมอง</translation>
+<translation id="4952448020231702394">Google Assistant ทำให้คุณประหยัดเวลาได้โดยการช่วยคุณทำสิ่งต่างๆ ในเว็บให้เสร็จสิ้น เช่น การค้นหาและการชำระเงิน</translation>
 <translation id="5267269112080050255">Google Assistant ใน Chrome เปิดอยู่ที่ระดับความสูงเต็มหน้าจอ</translation>
+<translation id="6235816755461937614">Google Assistant ส่งคำถาม (ข้อความและ Voice) ไปยัง Chrome Chrome จะส่ง URL และเนื้อหาของเว็บไซต์รวมถึงข้อมูลส่วนบุคคลที่เกี่ยวข้องไปยัง Google และอาจส่งอีเมลและประเภทของบัตรเครดิตด้วย ซึ่งขึ้นอยู่กับคำถามที่ได้รับ คุณปิดการดำเนินการนี้ได้ในการตั้งค่า Chrome <ph name="BEGIN_LINK" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Google Assistant ใน Chrome เปิดอยู่ที่ระดับความสูงครึ่งหนึ่งของหน้าจอ</translation>
 <translation id="6973932557599545801">ขออภัย ฉันช่วยคุณไม่ได้ โปรดดำเนินการต่อด้วยตนเอง</translation>
 <translation id="7658239707568436148">ยกเลิก</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_tr.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_tr.xtb
index a5089e2..543c07b9 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_tr.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_tr.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Chrome'da Google Asistan kapatıldı.</translation>
 <translation id="4517854969512651305">Değeri artırma</translation>
 <translation id="4850886885716139402">Görüntüle</translation>
+<translation id="4952448020231702394">Google Asistan, internette arama veya ödeme yapma gibi işlemleri tamamlamanıza yardımcı olarak size zaman kazandırır.</translation>
 <translation id="5267269112080050255">Chrome'da Google Assistant tam yükseklikte açıldı.</translation>
+<translation id="6235816755461937614">Google Asistan, sorguları (metin ve ses) Chrome'a gönderir. Chrome, alakalı kişisel bilgilerin yanı sıra sitenin URL'sini ve içeriğini Google'a gönderir. Bu bilgiler, sorguya bağlı olarak e-postayı ve kredi kartı türünü içerebilir. Bu işlevi Chrome ayarlarından kapatabilirsiniz. <ph name="BEGIN_LINK" />Daha fazla bilgi<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Chrome'da Google Asistan yarım yükseklikte açıldı.</translation>
 <translation id="6973932557599545801">Maalesef daha fazla yardımcı olamıyorum, lütfen kendiniz devam edin.</translation>
 <translation id="7658239707568436148">İptal</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_uk.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_uk.xtb
index cd7ba5cf..5436054 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_uk.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_uk.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Google Асистент у Chrome закрито.</translation>
 <translation id="4517854969512651305">Збільшити значення</translation>
 <translation id="4850886885716139402">Перегляд</translation>
+<translation id="4952448020231702394">Google Асистент заощаджує ваш час, допомагаючи виконувати дії в Інтернеті, такі як пошук і оплата.</translation>
 <translation id="5267269112080050255">Google Асистент відкрито в Chrome на повну висоту.</translation>
+<translation id="6235816755461937614">Google Асистент надсилає запити (текстові або голосові) у Chrome. Chrome надсилатиме в Google URL-адресу та вміст сайту, а також відповідну особисту інформацію. Залежно від запиту вона може включати електронну адресу й тип кредитної картки. Ви можете вимкнути цю функцію в налаштуваннях Chrome. <ph name="BEGIN_LINK" />Докладніше<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Google Асистент відкрито в Chrome на половину висоти.</translation>
 <translation id="6973932557599545801">На жаль, я не можу допомогти. Продовжуйте самостійно.</translation>
 <translation id="7658239707568436148">Скасувати</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ur.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ur.xtb
index a7b8fa2..7558144 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ur.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_ur.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">‏Chrome میں Google اسسٹنٹ بند ہو گئی ہے۔</translation>
 <translation id="4517854969512651305">قدر بڑھائیں</translation>
 <translation id="4850886885716139402">دیکھیں</translation>
+<translation id="4952448020231702394">‏تلاش اور چیک آؤٹ جیسے ویب پر کارروائیاں مکمل کرنے میں آپ کی مدد کر کے Google اسسٹنٹ آپ کا وقت بچاتی ہے۔</translation>
 <translation id="5267269112080050255">‏Chrome میں Google اسسٹنٹ مکمل اونچائی پر کھلی ہے۔</translation>
+<translation id="6235816755461937614">‏Google اسسٹنٹ کو Chrome کے لیے استفسارات (متن اور آواز) درکار ہیں۔ Chrome سائٹ کا URL اور مواد، نیز متعلقہ ذاتی معلومات Google کو بھیجے گا۔ اس استفسار کے لحاظ سے اس میں ای میل اور کریڈٹ کارڈ کی قسم شامل ہو سکتی ہیں۔ آپ اسے Chrome کی ترتیبات میں آف کر سکتے ہیں۔ <ph name="BEGIN_LINK" />مزید جانیں<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">‏Chrome میں Google اسسٹنٹ نصف اونچائی پر کھلی ہے۔</translation>
 <translation id="6973932557599545801">معذرت، میں مدد کرنے سے قاصر ہوں، براہ کرم اپنے طور پر جاری رکھیں۔</translation>
 <translation id="7658239707568436148">منسوخ کریں</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_uz.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_uz.xtb
index 4a33240e..84bed8f 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_uz.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_uz.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Chromedagi Google Assistent yopildi.</translation>
 <translation id="4517854969512651305">Qiymatni oshirish</translation>
 <translation id="4850886885716139402">Ko‘rish</translation>
+<translation id="4952448020231702394">Google Assistent internetdagi faoliyatingizda yordam beradi. Masalan, kerakli axborotlarni topadi va buyurtmalarni rasmiylashiradi.</translation>
 <translation id="5267269112080050255">Chromedagi Google Assistent toʻliq hajmda ochildi.</translation>
+<translation id="6235816755461937614">Google Assistent Google Chrome brauzeriga soʻrovlar (matn va tovush) yuboradi. Chrome bu sayt URL manzili va shaxsiy maʼlumotlarga aloqador kontent axborotlarini Google serverlariga yuboradi. Soʻrovga qarab shaxsiy maʼlumotlarga email va kredit karta turini kiritish mumkin. Buni Chrome sozlamalari orqali faolsizlantirish mumkin. <ph name="BEGIN_LINK" />Batafsil axborot<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Chromedagi Google Assistent yarim hajmda ochildi.</translation>
 <translation id="6973932557599545801">Uzr, men yordam bera olmayman. Oʻzingiz harakat qiling.</translation>
 <translation id="7658239707568436148">Bekor qilish</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_zh-CN.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_zh-CN.xtb
index 903fc9b..7866fa2 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_zh-CN.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_zh-CN.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Chrome 中的 Google 助理已关闭。</translation>
 <translation id="4517854969512651305">将值增大</translation>
 <translation id="4850886885716139402">视图</translation>
+<translation id="4952448020231702394">Google 助理可帮助您在网络上完成所需操作(例如搜索和结算),从而节省您的时间。</translation>
 <translation id="5267269112080050255">Chrome 中的 Google 助理已全屏打开。</translation>
+<translation id="6235816755461937614">Google 助理会向 Chrome 发送查询(文字和语音)。Chrome 会将相应网站的网址和内容以及相关个人信息发送给 Google。这可能包括电子邮件地址和信用卡类型,具体视查询而定。您可在 Chrome 的“设置”中关闭此功能。<ph name="BEGIN_LINK" />了解详情<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Chrome 中的 Google 助理已半屏打开。</translation>
 <translation id="6973932557599545801">抱歉,我已是爱莫能助,请您自行继续操作。</translation>
 <translation id="7658239707568436148">取消</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_zh-HK.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_zh-HK.xtb
index a3f03b8..b091eed 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_zh-HK.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_zh-HK.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">閂咗 Chrome 嘅「Google 助理」</translation>
 <translation id="4517854969512651305">提升值</translation>
 <translation id="4850886885716139402">檢視</translation>
+<translation id="4952448020231702394">Google 助理可幫助你完成網站上的搜尋及結帳等流程,為你省下寶貴時間。</translation>
 <translation id="5267269112080050255">Chrome 嘅「Google 助理」宜家顯示喺成個畫面。</translation>
+<translation id="6235816755461937614">Google 助理會將查詢內容 (文字和語音) 傳送給 Chrome。Chrome 會將網站的網址和內容,以及相關的個人資訊傳送給 Google。視查詢內容而定,傳送的資訊也可能包括電子郵件地址和信用卡類型。你可以在 Chrome 設定中關閉這項功能。<ph name="BEGIN_LINK" />瞭解詳情<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Chrome 嘅「Google 助理」宜家顯示喺畫面下半部。</translation>
 <translation id="6973932557599545801">很抱歉,我無法提供協助,請自行繼續。</translation>
 <translation id="7658239707568436148">取消</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_zh-TW.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_zh-TW.xtb
index adee9b1..a5a8064 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_zh-TW.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_zh-TW.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">已關閉 Chrome 版 Google 助理。</translation>
 <translation id="4517854969512651305">調升值</translation>
 <translation id="4850886885716139402">檢視</translation>
+<translation id="4952448020231702394">Google 助理可幫助你完成網站上的搜尋及結帳等流程,為你省下寶貴時間。</translation>
 <translation id="5267269112080050255">Chrome 版 Google 助理已開啟,顯示於整個畫面。</translation>
+<translation id="6235816755461937614">Google 助理會將查詢內容 (文字和語音) 傳送給 Chrome。Chrome 會將網站的網址和內容,以及相關的個人資訊傳送給 Google。視查詢內容而定,傳送的資訊也可能包括電子郵件地址和信用卡類型。你可以在 Chrome 設定中關閉這項功能。<ph name="BEGIN_LINK" />瞭解詳情<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Chrome 版 Google 助理已開啟,顯示在畫面下半部。</translation>
 <translation id="6973932557599545801">抱歉,目前無法提供協助,請自行填入資料。</translation>
 <translation id="7658239707568436148">取消</translation>
diff --git a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_zu.xtb b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_zu.xtb
index d83f69e4..8cbac255 100644
--- a/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_zu.xtb
+++ b/chrome/android/features/autofill_assistant/java/strings/translations/android_chrome_autofill_assistant_strings_zu.xtb
@@ -8,7 +8,9 @@
 <translation id="4437727785356380473">Umsizi we-Google ku-Chrome uvaliwe.</translation>
 <translation id="4517854969512651305">Khuphula inani</translation>
 <translation id="4850886885716139402">Buka</translation>
+<translation id="4952448020231702394">Umsizi we-Google ukulondolozela isikhathi ngokukusiza ukuthi uqedele izenzo kuwebhu, njengosesho kanye nokuphuma.</translation>
 <translation id="5267269112080050255">Umsizi we-Google ku-Chrome uvulwe ngobude obugcwele.</translation>
+<translation id="6235816755461937614">Umsizi we-Google uthumela imibuzo (umbhalo nezwi) ku-Chrome. I-Chrome izothumela i-URL yesayithi nokuqukethwe kanye nolwazi lomuntu siqu oluphathelene ku-Google. Kuye ngombuzo lokhu ongawubandakanya i-imeyili nohlobo lwekhadi lekhredithi. Ungavala lokhu kuzilungiselelo ze-Chrome. <ph name="BEGIN_LINK" />Funda kabanzi<ph name="END_LINK" /></translation>
 <translation id="6555233628095991027">Umsizi we-Google ku-Chrome uvulwe ngobude obuhhafu.</translation>
 <translation id="6973932557599545801">Uxolo angikwazi ukukusiza, ngicela uqhubeke ngokwakho.</translation>
 <translation id="7658239707568436148">Khansela</translation>
diff --git a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantGenericUiTest.java b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantGenericUiTest.java
index ed7d90b4..ba9e4c5 100644
--- a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantGenericUiTest.java
+++ b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantGenericUiTest.java
@@ -174,14 +174,14 @@
                                         .setStrokeWidth(ClientDimensionProto.newBuilder().setDp(1)))
                         .build();
 
-        ViewProto locationImage = createTestImage("ic_place_googblue_36dp", "locationImage");
+        ViewProto locationImage = createTestImage("ic_add_outline_white_24dp", "locationImage");
         ViewProto locationTextView =
                 createTextView("345 Spear Street, San Francisco", "locationText");
         ViewProto locationChevron = createTestImage("ic_expand_more_black_24dp", "locationChevron");
         ViewProto locationSection = createSectionView(
                 Arrays.asList(locationImage, locationTextView, locationChevron), "locationSection");
 
-        ViewProto cardImage = createTestImage("ic_folder_blue_24dp", "cardImage");
+        ViewProto cardImage = createTestImage("ic_remove_outline_white_24dp", "cardImage");
         ViewProto cardTextView = createTextView("Visa •••• 1111", "cardText");
         ViewProto cardChevron = createTestImage("ic_expand_more_black_24dp", "cardChevron");
         ViewProto cardSection = createSectionView(
diff --git a/chrome/android/features/autofill_assistant/public/java_sources.gni b/chrome/android/features/autofill_assistant/public/java_sources.gni
index 1e54c22..587b707 100644
--- a/chrome/android/features/autofill_assistant/public/java_sources.gni
+++ b/chrome/android/features/autofill_assistant/public/java_sources.gni
@@ -3,13 +3,13 @@
 # found in the LICENSE file.
 
 public_autofill_assistant_java_sources = [
+  "//chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantActionHandler.java",
+  "//chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantDirectAction.java",
+  "//chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantDirectActionHandler.java",
   "//chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantFacade.java",
   "//chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantMetrics.java",
   "//chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantModuleEntry.java",
   "//chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantModuleEntryProvider.java",
   "//chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPreferencesUtil.java",
-  "//chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantDirectActionHandler.java",
-  "//chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantDirectAction.java",
-  "//chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantActionHandler.java",
   "//chrome/android/features/autofill_assistant/public/java/src/org/chromium/chrome/browser/autofill_assistant/GetCurrentTab.java",
 ]
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 ed36d75..b654a782 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
@@ -175,13 +175,16 @@
                 mNormalTabModelObserver = new EmptyTabModelObserver() {
                     @Override
                     public void willCloseTab(Tab tab, boolean animate) {
-                        if (mNormalTabModel.getCount() <= 1) {
+                        if (mOverviewModeState == OverviewModeState.SHOWN_HOMEPAGE
+                                && mNormalTabModel.getCount() <= 1) {
                             setTabCarouselVisibility(false);
                         }
                     }
                     @Override
                     public void tabClosureUndone(Tab tab) {
-                        setTabCarouselVisibility(true);
+                        if (mOverviewModeState == OverviewModeState.SHOWN_HOMEPAGE) {
+                            setTabCarouselVisibility(true);
+                        }
                     }
                 };
             }
@@ -200,14 +203,13 @@
             mUrlFocusChangeListener = new UrlFocusChangeListener() {
                 @Override
                 public void onUrlFocusChange(boolean hasFocus) {
-                    // No fake search box on the explore pane in two panes mode.
-                    if (mSurfaceMode != SurfaceMode.TWO_PANES
-                            || !mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE)) {
-                        mPropertyModel.set(IS_FAKE_SEARCH_BOX_VISIBLE, !hasFocus);
-                    }
-                    if (mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE)) {
-                        mSecondaryTasksSurfacePropertyModel.set(
-                                IS_FAKE_SEARCH_BOX_VISIBLE, !hasFocus);
+                    if (hasFakeSearchBox()) {
+                        if (mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE)) {
+                            mSecondaryTasksSurfacePropertyModel.set(
+                                    IS_FAKE_SEARCH_BOX_VISIBLE, !hasFocus);
+                        } else {
+                            mPropertyModel.set(IS_FAKE_SEARCH_BOX_VISIBLE, !hasFocus);
+                        }
                     }
                     notifyStateChange();
                 }
@@ -242,12 +244,12 @@
         if (state == mOverviewModeState) return;
 
         mOverviewModeState = state;
-        setOverviewStateInternal(mOverviewModeState);
+        setOverviewStateInternal();
         notifyStateChange();
     }
 
-    private void setOverviewStateInternal(@OverviewModeState int newState) {
-        if (newState == OverviewModeState.SHOWN_HOMEPAGE) {
+    private void setOverviewStateInternal() {
+        if (mOverviewModeState == OverviewModeState.SHOWN_HOMEPAGE) {
             RecordUserAction.record("StartSurface.SinglePane");
             setExploreSurfaceVisibility(!mIsIncognito);
             setTabCarouselVisibility(
@@ -315,7 +317,6 @@
 
     @Override
     public void hideOverview(boolean animate) {
-        setOverviewState(OverviewModeState.NOT_SHOWN);
         mController.hideOverview(animate);
     }
 
@@ -473,7 +474,7 @@
         });
 
         mPropertyModel.set(IS_INCOGNITO, mIsIncognito);
-        setOverviewStateInternal(mOverviewModeState);
+        setOverviewStateInternal();
 
         // TODO(crbug.com/1021399): This looks not needed since there is no way to change incognito
         // mode when focusing on the omnibox and incognito mode change won't affect the visibility
@@ -505,6 +506,17 @@
         }
     }
 
+    private boolean hasFakeSearchBox() {
+        // No fake search box on the explore pane in two panes mode.
+        if (mOverviewModeState == OverviewModeState.SHOWN_HOMEPAGE
+                || mOverviewModeState == OverviewModeState.SHOWN_TASKS_ONLY
+                || (mOverviewModeState == OverviewModeState.SHOWN_TWO_PANES
+                        && !mPropertyModel.get(IS_EXPLORE_SURFACE_VISIBLE))) {
+            return true;
+        }
+        return false;
+    }
+
     private boolean shouldShowTabSwitcherToolbar() {
         // Do not show Tab switcher toolbar on explore pane.
         if (mOverviewModeState == OverviewModeState.SHOWN_TWO_PANES
@@ -519,13 +531,6 @@
     private void setTabCarouselVisibility(boolean isVisible) {
         if (isVisible == mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE)) return;
 
-        // Hide the more Tabs view when the last Tab is closed.
-        if (!isVisible && mSecondaryTasksSurfaceController != null
-                && mSecondaryTasksSurfaceController.overviewVisible()) {
-            setSecondaryTasksSurfaceVisibility(false);
-            setExploreSurfaceVisibility(true);
-        }
-
         mPropertyModel.set(IS_TAB_CAROUSEL_VISIBLE, isVisible);
     }
 
diff --git a/chrome/android/features/start_surface/internal/javatests/start_surface_test_java_sources.gni b/chrome/android/features/start_surface/internal/javatests/start_surface_test_java_sources.gni
index bfa9ebcd..7b32bb2 100644
--- a/chrome/android/features/start_surface/internal/javatests/start_surface_test_java_sources.gni
+++ b/chrome/android/features/start_surface/internal/javatests/start_surface_test_java_sources.gni
@@ -3,10 +3,10 @@
 # found in the LICENSE file.
 
 start_surface_test_java_sources = [
+  "//chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/BottomBarViewBinderTest.java",
+  "//chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/ExploreSurfaceViewBinderTest.java",
+  "//chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/SecondaryTasksSurfaceViewBinderTest.java",
   "//chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceLayoutPerfTest.java",
   "//chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/StartSurfaceLayoutTest.java",
   "//chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/TasksSurfaceViewBinderTest.java",
-  "//chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/SecondaryTasksSurfaceViewBinderTest.java",
-  "//chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/ExploreSurfaceViewBinderTest.java",
-  "//chrome/android/features/start_surface/internal/javatests/src/org/chromium/chrome/features/start_surface/BottomBarViewBinderTest.java",
 ]
diff --git a/chrome/android/features/start_surface/internal/junit/src/org/chromium/chrome/features/start_surface/StartSurfaceMediatorUnitTest.java b/chrome/android/features/start_surface/internal/junit/src/org/chromium/chrome/features/start_surface/StartSurfaceMediatorUnitTest.java
index b0d4df1..39993ea 100644
--- a/chrome/android/features/start_surface/internal/junit/src/org/chromium/chrome/features/start_surface/StartSurfaceMediatorUnitTest.java
+++ b/chrome/android/features/start_surface/internal/junit/src/org/chromium/chrome/features/start_surface/StartSurfaceMediatorUnitTest.java
@@ -340,6 +340,7 @@
 
         doReturn(0).when(mNormalTabModel).getCount();
         mediator.showOverview(false);
+        mediator.setOverviewState(OverviewModeState.SHOWN_HOMEPAGE);
         verify(mNormalTabModel).addObserver(mTabModelObserverCaptor.capture());
         assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
         assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(false));
@@ -357,6 +358,7 @@
 
         doReturn(2).when(mNormalTabModel).getCount();
         mediator.showOverview(false);
+        mediator.setOverviewState(OverviewModeState.SHOWN_HOMEPAGE);
         verify(mNormalTabModel).addObserver(mTabModelObserverCaptor.capture());
         assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
         assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(true));
@@ -382,8 +384,11 @@
         StartSurfaceMediator mediator = createStartSurfaceMediator(SurfaceMode.SINGLE_PANE);
 
         doReturn(1).when(mNormalTabModel).getCount();
+        mediator.setSecondaryTasksSurfacePropertyModel(mSecondaryTasksSurfacePropertyModel);
         mediator.showOverview(false);
         verify(mNormalTabModel).addObserver(mTabModelObserverCaptor.capture());
+
+        mediator.setOverviewState(OverviewModeState.SHOWN_HOMEPAGE);
         mTabModelObserverCaptor.getValue().willCloseTab(mock(Tab.class), false);
         assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
         assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(false));
@@ -391,6 +396,15 @@
         mTabModelObserverCaptor.getValue().tabClosureUndone(mock(Tab.class));
         assertThat(mPropertyModel.get(IS_SHOWING_OVERVIEW), equalTo(true));
         assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(true));
+
+        doReturn(2).when(mNormalTabModel).getCount();
+        mediator.setOverviewState(OverviewModeState.SHOWN_TABSWITCHER);
+        mTabModelObserverCaptor.getValue().willCloseTab(mock(Tab.class), false);
+        mTabModelObserverCaptor.getValue().tabClosureUndone(mock(Tab.class));
+        doReturn(0).when(mNormalTabModel).getCount();
+        mTabModelObserverCaptor.getValue().willCloseTab(mock(Tab.class), false);
+        assertThat(mPropertyModel.get(IS_TAB_CAROUSEL_VISIBLE), equalTo(false));
+        assertThat(mPropertyModel.get(IS_SECONDARY_SURFACE_VISIBLE), equalTo(true));
     }
 
     @Test
diff --git a/chrome/android/features/tab_ui/java/res/layout/tasks_view_layout.xml b/chrome/android/features/tab_ui/java/res/layout/tasks_view_layout.xml
index 67821188..d704ce8 100644
--- a/chrome/android/features/tab_ui/java/res/layout/tasks_view_layout.xml
+++ b/chrome/android/features/tab_ui/java/res/layout/tasks_view_layout.xml
@@ -20,7 +20,8 @@
             android:id="@+id/incognito_description_layout_stub"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:layout="@layout/incognito_description_layout"/>
+            android:layout="@layout/incognito_description_layout"
+            app:layout_scrollFlags="scroll" />
         <HorizontalScrollView android:id="@+id/mv_tiles_container"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogCoordinator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogCoordinator.java
index 03b79ef..39145a6 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogCoordinator.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogCoordinator.java
@@ -11,6 +11,7 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
+import org.chromium.base.SysUtils;
 import org.chromium.base.metrics.RecordUserAction;
 import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager;
 import org.chromium.chrome.browser.flags.FeatureUtilities;
@@ -62,9 +63,15 @@
                 tabModelSelector, tabCreatorManager, resetHandler, animationSourceViewProvider,
                 controller, tabGroupTitleEditor, mComponentName);
 
-        mTabListCoordinator = new TabListCoordinator(TabListCoordinator.TabListMode.GRID, context,
-                tabModelSelector, tabContentManager::getTabThumbnailWithCallback, null, false, null,
-                gridCardOnClickListenerProvider, mMediator.getTabGridDialogHandler(),
+        // TODO(crbug.com/1031349) : Remove the inline mode logic here, make the constructor to take
+        // in a mode parameter instead.
+        mTabListCoordinator = new TabListCoordinator(
+                FeatureUtilities.isTabGroupsAndroidContinuationEnabled()
+                                && SysUtils.isLowEndDevice()
+                        ? TabListCoordinator.TabListMode.LIST
+                        : TabListCoordinator.TabListMode.GRID,
+                context, tabModelSelector, tabContentManager::getTabThumbnailWithCallback, null,
+                false, null, gridCardOnClickListenerProvider, mMediator.getTabGridDialogHandler(),
                 TabProperties.UiType.CLOSABLE, null, containerView, null, false, mComponentName);
 
         TabListRecyclerView recyclerView = mTabListCoordinator.getContainerView();
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java
index 0f7f01f..14efc42 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java
@@ -54,7 +54,7 @@
      * NOTE: CAROUSEL mode currently uses a fixed height and card width set in dimens.xml with names
      *  tab_carousel_height and tab_carousel_card_width.
      *
-     *  STRIP and GRID modes will have height equal to that of the container view.
+     *  STRIP, LIST, and GRID modes will have height equal to that of the container view.
      * */
     @IntDef({TabListMode.GRID, TabListMode.STRIP, TabListMode.CAROUSEL, TabListMode.LIST})
     @Retention(RetentionPolicy.SOURCE)
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabManagementDelegateImpl.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabManagementDelegateImpl.java
index a4d480a..df2e532 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabManagementDelegateImpl.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabManagementDelegateImpl.java
@@ -11,6 +11,7 @@
 import android.view.ViewGroup;
 
 import org.chromium.base.ObservableSupplier;
+import org.chromium.base.SysUtils;
 import org.chromium.base.annotations.UsedByReflection;
 import org.chromium.chrome.browser.ChromeActivity;
 import org.chromium.chrome.browser.ChromeFeatureList;
@@ -18,6 +19,7 @@
 import org.chromium.chrome.browser.compositor.layouts.Layout;
 import org.chromium.chrome.browser.compositor.layouts.LayoutRenderHost;
 import org.chromium.chrome.browser.compositor.layouts.LayoutUpdateHost;
+import org.chromium.chrome.browser.flags.FeatureUtilities;
 import org.chromium.chrome.browser.metrics.UmaSessionStats;
 import org.chromium.chrome.browser.ntp.FakeboxDelegate;
 import org.chromium.chrome.browser.tabmodel.TabModel;
@@ -49,12 +51,16 @@
                     ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID + SYNTHETIC_TRIAL_POSTFIX,
                     "Downloaded_Enabled");
         }
+
         return new TabSwitcherCoordinator(activity, activity.getLifecycleDispatcher(),
                 activity.getTabModelSelector(), activity.getTabContentManager(),
                 activity.getCompositorViewHolder().getDynamicResourceLoader(),
                 activity.getFullscreenManager(), activity,
                 activity.getMenuOrKeyboardActionController(), activity, containerView,
-                TabListCoordinator.TabListMode.GRID);
+                FeatureUtilities.isTabGroupsAndroidContinuationEnabled()
+                                && SysUtils.isLowEndDevice()
+                        ? TabListCoordinator.TabListMode.LIST
+                        : TabListCoordinator.TabListMode.GRID);
     }
 
     @Override
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSelectionEditorCoordinator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSelectionEditorCoordinator.java
index 4ff9b7a..c910e131 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSelectionEditorCoordinator.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSelectionEditorCoordinator.java
@@ -114,6 +114,8 @@
         mParentView = parentView;
         mTabModelSelector = tabModelSelector;
 
+        // TODO(crbug.com/1007598): construct TabListCoordinator with List mode if it's a low end
+        // device, and TabGroupContinuation is turned on.
         mTabListCoordinator = new TabListCoordinator(TabListCoordinator.TabListMode.GRID, context,
                 mTabModelSelector, tabContentManager::getTabThumbnailWithCallback, null, false,
                 null, null, null, TabProperties.UiType.SELECTABLE, this::getSelectionDelegate, null,
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcher.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcher.java
index 3cbcd8e..6c72ff9 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcher.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcher.java
@@ -186,6 +186,12 @@
          *         tab switcher.
          */
         int getTabListTopOffset();
+
+        /**
+         * @return The mode of the list of Tabs.
+         */
+        @VisibleForTesting
+        int getListModeForTesting();
     }
 
     /**
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherCoordinator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherCoordinator.java
index 4788c51..9bdc3e2 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherCoordinator.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherCoordinator.java
@@ -61,6 +61,7 @@
     private final TabSelectionEditorCoordinator mTabSelectionEditorCoordinator;
     private final UndoGroupSnackbarController mUndoGroupSnackbarController;
     private final TabModelSelector mTabModelSelector;
+    private final @TabListCoordinator.TabListMode int mMode;
 
     private final MenuOrKeyboardActionController
             .MenuOrKeyboardActionHandler mTabSwitcherMenuActionHandler =
@@ -87,6 +88,7 @@
             MenuOrKeyboardActionController menuOrKeyboardActionController,
             SnackbarManager.SnackbarManageable snackbarManageable, ViewGroup container,
             @TabListCoordinator.TabListMode int mode) {
+        mMode = mode;
         mTabModelSelector = tabModelSelector;
 
         PropertyModel containerViewModel = new PropertyModel(TabListContainerProperties.ALL_KEYS);
@@ -204,6 +206,11 @@
     }
 
     @Override
+    public int getListModeForTesting() {
+        return mMode;
+    }
+
+    @Override
     public boolean prepareOverview() {
         boolean quick = mMediator.prepareOverview();
         mTabListCoordinator.prepareOverview();
diff --git a/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings.grd b/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings.grd
index f4599b8..84a55069 100644
--- a/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings.grd
+++ b/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings.grd
@@ -263,7 +263,7 @@
           Move tab right
       </message>
        <message name="IDS_ACCESSIBILITY_TAB_MOVEMENT_UP" desc="This text button shows in the accessibility mode action menu. When user selects a tab, triggers action menu and clicks on this button, the current tab will switch position with the tab above it in the grid to achieve reordering.">
-          Move tab top
+          Move tab up
       </message>
        <message name="IDS_ACCESSIBILITY_TAB_MOVEMENT_DOWN" desc="This text button shows in the accessibility mode action menu. When user selects a tab, triggers action menu and clicks on this button, the current tab will switch position with the tab below it in the grid to achieve reordering.">
           Move tab down
diff --git a/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings_grd/IDS_ACCESSIBILITY_TAB_MOVEMENT_RIGHT.png.sha1 b/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings_grd/IDS_ACCESSIBILITY_TAB_MOVEMENT_RIGHT.png.sha1
index 0f4ecf95..06bb250fc 100644
--- a/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings_grd/IDS_ACCESSIBILITY_TAB_MOVEMENT_RIGHT.png.sha1
+++ b/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings_grd/IDS_ACCESSIBILITY_TAB_MOVEMENT_RIGHT.png.sha1
@@ -1 +1 @@
-8b29e841e0e2bc5c1b85acd41e047ad9aa3f4bab
\ No newline at end of file
+981985054e10184a2bf20a75fa1391a753758e13
\ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings_grd/IDS_ACCESSIBILITY_TAB_MOVEMENT_UP.png.sha1 b/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings_grd/IDS_ACCESSIBILITY_TAB_MOVEMENT_UP.png.sha1
index b85b34e..dcea1ef 100644
--- a/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings_grd/IDS_ACCESSIBILITY_TAB_MOVEMENT_UP.png.sha1
+++ b/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings_grd/IDS_ACCESSIBILITY_TAB_MOVEMENT_UP.png.sha1
@@ -1 +1 @@
-978eaf74dc768c27b5229e4b684701d2832c6dfd
\ No newline at end of file
+d828b28aaa6e65f01e6d36f78bde07c3e82987a6
\ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ar.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ar.xtb
index 9345fa0..a53eb1e 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ar.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ar.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106">لم يتم استخدام <ph name="NUMBER_OF_TABS" /> من علامات التبويب مؤخرًا. هل تريد إغلاقها؟</translation>
 <translation id="1181037720776840403">إزالة</translation>
 <translation id="125153950246128346">يُرجى النقر للاطِّلاع على علامة تبويب أخرى</translation>
+<translation id="1657719826150349398">نقل علامة التبويب إلى أعلى الصفحة</translation>
+<translation id="1778290789805128794">نقل علامة التبويب إلى أعلى الصفحة</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{علامة تبويب واحدة (<ph name="TABS_COUNT_ONE" />)}zero{<ph name="TABS_COUNT_MANY" /> علامة تبويب}two{علامتا تبويب (<ph name="TABS_COUNT_MANY" />)}few{<ph name="TABS_COUNT_MANY" /> علامات تبويب}many{<ph name="TABS_COUNT_MANY" /> علامة تبويب}other{<ph name="TABS_COUNT_MANY" /> علامة تبويب}}</translation>
 <translation id="2569352796411618312">اقتراح: لم يتم استخدام <ph name="NUMBER_OF_TABS" /> من علامات التبويب مؤخرًا. هل تريد إغلاقها؟</translation>
 <translation id="257674075312929031">مجموعة</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">سحب علامات التبويب لتجميعها</translation>
 <translation id="6040143037577758943">إغلاق</translation>
 <translation id="6193448654517602979">اختيار علامات التبويب</translation>
+<translation id="6562820390860419811">نقل علامة التبويب إلى يسار الصفحة</translation>
 <translation id="6615455863669487791">عرضه</translation>
 <translation id="6840760312327750441">لتجميع علامات التبويب، المس علامة التبويب مع الاستمرار. ثم اسحبها إلى علامة تبويب أخرى.</translation>
 <translation id="7151209024774799310">إزالة علامات التبويب من المجموعة</translation>
 <translation id="7559245342362162951">عرض علامات تبويب المجموعة في شبكة ملء الشاشة</translation>
 <translation id="7792771145871471484">مراجعة الاقتراحات</translation>
+<translation id="7885132941432959125">نقل علامة التبويب إلى يمين الصفحة</translation>
 <translation id="7966321538264951561">رفض الاقتراحات</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{إغلاق علامة تبويب واحدة محدّدة (<ph name="TABS_COUNT_ONE" />)}zero{إغلاق <ph name="TABS_COUNT_MANY" /> علامة تبويب محدّدة}two{إغلاق علامتَي تبويب محدّدتَين (<ph name="TABS_COUNT_MANY" />)}few{إغلاق <ph name="TABS_COUNT_MANY" /> علامات تبويب محدّدة}many{إغلاق <ph name="TABS_COUNT_MANY" /> علامة تبويب محدّدة}other{إغلاق <ph name="TABS_COUNT_MANY" /> علامة تبويب محدّدة}}</translation>
 <translation id="9150694013019234766">يمكنك التبديل بين علامات التبويب ضمن المجموعة بالقرب من أسفل الشاشة.</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_az.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_az.xtb
index a69b38f..3946ad4 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_az.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_az.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106"><ph name="NUMBER_OF_TABS" /> tab son zamanlarda istifadə edilməyib. Onlar bağlansın?</translation>
 <translation id="1181037720776840403">Silin</translation>
 <translation id="125153950246128346">Başqa taba baxmaq üçün klikləyin</translation>
+<translation id="1657719826150349398">Tabı aşağıya daşıyın</translation>
+<translation id="1778290789805128794">Tabı yuxarıya daşıyın</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> tab}other{<ph name="TABS_COUNT_MANY" /> tab}}</translation>
 <translation id="2569352796411618312">Təklif: <ph name="NUMBER_OF_TABS" /> tabel bu yaxınlarda istifadə edilməyib. Bağlansınlar?</translation>
 <translation id="257674075312929031">Qrup</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Tabları qruplaşdırmaq üçün sürüşdürün</translation>
 <translation id="6040143037577758943">Qapat</translation>
 <translation id="6193448654517602979">Tablar seçin</translation>
+<translation id="6562820390860419811">Tabı sola daşıyın</translation>
 <translation id="6615455863669487791">Mənə göstərin</translation>
 <translation id="6840760312327750441">Panelləri qruplaşdırmaq üçün panelə toxunub saxlayın. Daha sonra digər panelin üzərinə çəkin.</translation>
 <translation id="7151209024774799310">Tabları qrupdan silin</translation>
 <translation id="7559245342362162951">Qrup tabını tam ekran cədvəlində göstərin</translation>
 <translation id="7792771145871471484">Təklifləri nəzərdən keçirin.</translation>
+<translation id="7885132941432959125">Tabı sağa daşıyın</translation>
 <translation id="7966321538264951561">Təkliflərdən imtina edin.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Seçilmiş <ph name="TABS_COUNT_ONE" /> tabeli bağlayın}other{Seçilmiş <ph name="TABS_COUNT_MANY" /> tabeli bağlayın}}</translation>
 <translation id="9150694013019234766">Ekranın aşağısındakı tab qrupunda tablar arasında keçid edin</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_be.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_be.xtb
index d352341e..b872228 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_be.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_be.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106">Некалькі (<ph name="NUMBER_OF_TABS" />) укладак пэўны час не выкарыстоўваліся. Закрыць іх?</translation>
 <translation id="1181037720776840403">Выдаліць</translation>
 <translation id="125153950246128346">Націсніце, каб паглядзець іншую ўкладку</translation>
+<translation id="1657719826150349398">Перамясціць укладку ніжэй</translation>
+<translation id="1778290789805128794">Перамясціць укладку ўверх</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> укладка}one{<ph name="TABS_COUNT_MANY" /> укладка}few{<ph name="TABS_COUNT_MANY" /> укладкі}many{<ph name="TABS_COUNT_MANY" /> укладак}other{<ph name="TABS_COUNT_MANY" /> укладкі}}</translation>
 <translation id="2569352796411618312">Прапанова: некалькі (<ph name="NUMBER_OF_TABS" />) укладак пэўны час не выкарыстоўваліся. Закрыць іх?</translation>
 <translation id="257674075312929031">Група</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Каб згрупаваць укладкі, перацягвайце іх</translation>
 <translation id="6040143037577758943">Закрыць</translation>
 <translation id="6193448654517602979">Выберыце ўкладкі</translation>
+<translation id="6562820390860419811">Перамясціць укладку ўлева</translation>
 <translation id="6615455863669487791">Паказаць</translation>
 <translation id="6840760312327750441">Каб згрупаваць укладкі, дакраніцеся да адной укладкі і ўтрымлівайце яе, затым перацягніце на іншую.</translation>
 <translation id="7151209024774799310">Выдаліць укладкі з групы</translation>
 <translation id="7559245342362162951">Паказваць укладкі групы ў поўнаэкраннай сетцы</translation>
 <translation id="7792771145871471484">Праглядзець прапановы.</translation>
+<translation id="7885132941432959125">Перамясціць укладку ўправа</translation>
 <translation id="7966321538264951561">Адхіліць прапановы.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Закрыць <ph name="TABS_COUNT_ONE" /> выбраную ўкладку}one{Закрыць <ph name="TABS_COUNT_MANY" /> выбраную ўкладку}few{Закрыць <ph name="TABS_COUNT_MANY" /> выбраныя ўкладкі}many{Закрыць <ph name="TABS_COUNT_MANY" /> выбраных укладак}other{Закрыць <ph name="TABS_COUNT_MANY" /> выбранай укладкі}}</translation>
 <translation id="9150694013019234766">Пераключайцеся паміж укладкамі групы ў ніжняй частцы экрана</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_bg.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_bg.xtb
index 588ca9b8..5f64707 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_bg.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_bg.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106"><ph name="NUMBER_OF_TABS" /> от разделите ви не са използвани наскоро. Искате ли да ги затворите?</translation>
 <translation id="1181037720776840403">Премахване</translation>
 <translation id="125153950246128346">Докоснете, за да видите друг раздел</translation>
+<translation id="1657719826150349398">Преместване на раздела надолу</translation>
+<translation id="1778290789805128794">Преместване на раздела най-горе</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> раздел}other{<ph name="TABS_COUNT_MANY" /> раздела}}</translation>
 <translation id="2569352796411618312">Предложение: <ph name="NUMBER_OF_TABS" /> от разделите ви не са използвани наскоро. Искате ли да ги затворите?</translation>
 <translation id="257674075312929031">Група</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Преместете с плъзгане разделите, за да ги групирате</translation>
 <translation id="6040143037577758943">Затваряне</translation>
 <translation id="6193448654517602979">Избиране на раздели</translation>
+<translation id="6562820390860419811">Преместване на раздела наляво</translation>
 <translation id="6615455863669487791">Покажете ми</translation>
 <translation id="6840760312327750441">За да групирате раздели, докоснете и задръжте някой от тях. След това го преместете с плъзгане върху друг.</translation>
 <translation id="7151209024774799310">Премахване на раздели</translation>
 <translation id="7559245342362162951">Показване на разделите от групата в решетка на цял екран</translation>
 <translation id="7792771145871471484">Преглед на предложенията.</translation>
+<translation id="7885132941432959125">Преместване на раздела надясно</translation>
 <translation id="7966321538264951561">Отхвърляне на предложенията.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Затваряне на избрания <ph name="TABS_COUNT_ONE" /> раздел}other{Затваряне на избраните <ph name="TABS_COUNT_MANY" /> раздела}}</translation>
 <translation id="9150694013019234766">Превключвайте между разделите в групата в долната част на екрана</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_bn.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_bn.xtb
index 04f1e62..33be919 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_bn.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_bn.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106">সব ট্যাবের মধ্যে থেকে <ph name="NUMBER_OF_TABS" />টি ট্যাব সম্প্রতি ব্যবহার করা হয়নি। সেগুলি বন্ধ করে দিতে চান?</translation>
 <translation id="1181037720776840403">সরান</translation>
 <translation id="125153950246128346">অন্য ট্যাব দেখতে ট্যাপ করুন</translation>
+<translation id="1657719826150349398">ট্যাব নিচে সরান</translation>
+<translation id="1778290789805128794">ট্যাবটি উপরে সরান</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" />টি ট্যাব}one{<ph name="TABS_COUNT_MANY" />টি ট্যাব}other{<ph name="TABS_COUNT_MANY" />টি ট্যাব}}</translation>
 <translation id="2569352796411618312">সাজেশন: সব ট্যাবের মধ্যে থেকে <ph name="NUMBER_OF_TABS" />টি ট্যাব সম্প্রতি ব্যবহার করা হয়নি। সেগুলি বন্ধ করে দিতে চান?</translation>
 <translation id="257674075312929031">গ্রুপ</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">ট্যাবগুলি গ্রুপ করতে ড্র্যাগ করুন</translation>
 <translation id="6040143037577758943">বন্ধ</translation>
 <translation id="6193448654517602979">ট্যাব বেছে নিন</translation>
+<translation id="6562820390860419811">বাঁদিকে ট্যাব সরান</translation>
 <translation id="6615455863669487791">আমাকে দেখান</translation>
 <translation id="6840760312327750441">ট্যাব গ্রুপ করতে সেটি টাচ করে ধরে থাকুন। তারপর, সেটি টেনে অন্য ট্যাবে নিয়ে আসুন।</translation>
 <translation id="7151209024774799310">গ্রুপ থেকে ট্যাব সরান</translation>
 <translation id="7559245342362162951">ফুলস্ক্রিন গ্রিডে গ্রুপের ট্যাব দেখুন</translation>
 <translation id="7792771145871471484">সাজেশন পর্যালোচনা করুন।</translation>
+<translation id="7885132941432959125">ডানদিকে ট্যাব সরান</translation>
 <translation id="7966321538264951561">সাজেশন বাতিল করুন।</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{বেছে নেওয়া ট্যাবের মধ্যে <ph name="TABS_COUNT_ONE" />টি ট্যাব বন্ধ আছে}one{বেছে নেওয়া ট্যাবের মধ্যে <ph name="TABS_COUNT_MANY" />টি ট্যাব বন্ধ আছে}other{বেছে নেওয়া ট্যাবের মধ্যে <ph name="TABS_COUNT_MANY" />টি ট্যাব বন্ধ আছে}}</translation>
 <translation id="9150694013019234766">স্ক্রিনের নিচে থাকা ট্যাব গ্রুপের মধ্যে একটি ট্যাব থেকে অন্য ট্যাবে যান</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_bs.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_bs.xtb
index bffb73220..16c76f5 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_bs.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_bs.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106">U zadnje vrijeme niste koristili sljedeći broj kartica: <ph name="NUMBER_OF_TABS" /> Zatvoriti ih?</translation>
 <translation id="1181037720776840403">Ukloni</translation>
 <translation id="125153950246128346">Dodirnite da vidite drugu karticu</translation>
+<translation id="1657719826150349398">Pomjeranje kartice nadolje</translation>
+<translation id="1778290789805128794">Pomjeranje kartice na vrh</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> kartica}one{<ph name="TABS_COUNT_MANY" /> kartica}few{<ph name="TABS_COUNT_MANY" /> kartice}other{<ph name="TABS_COUNT_MANY" /> kartica}}</translation>
 <translation id="2569352796411618312">Prijedlog: U zadnje vrijeme niste koristili sljedeći broj kartica: <ph name="NUMBER_OF_TABS" />. Zatvoriti ih?</translation>
 <translation id="257674075312929031">Grupa</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Prevucite kartice da ih grupirate</translation>
 <translation id="6040143037577758943">Zatvori</translation>
 <translation id="6193448654517602979">Odaberite kartice</translation>
+<translation id="6562820390860419811">Pomjeranje kartice ulijevo</translation>
 <translation id="6615455863669487791">Pokaži mi</translation>
 <translation id="6840760312327750441">Da grupirate kartice, dodirnite i zadržite jednu karticu. Nakon toga je prevucite na drugu karticu.</translation>
 <translation id="7151209024774799310">Ukloni kartice iz grupe</translation>
 <translation id="7559245342362162951">Prikaži kartice grupe na mreži cijelog ekrana</translation>
 <translation id="7792771145871471484">Pregled prijedloga.</translation>
+<translation id="7885132941432959125">Pomjeranje kartice udesno</translation>
 <translation id="7966321538264951561">Odbacivanje prijedloga.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Zatvaranje <ph name="TABS_COUNT_ONE" /> odabrane kartice}one{Zatvaranje <ph name="TABS_COUNT_MANY" /> odabrane kartice}few{Zatvaranje <ph name="TABS_COUNT_MANY" /> odabrane kartice}other{Zatvaranje <ph name="TABS_COUNT_MANY" /> odabranih kartica}}</translation>
 <translation id="9150694013019234766">Prebacivanje između kartica unutar grupe kartica pri dnu ekrana</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_cs.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_cs.xtb
index 7d3fcff6..32cebae6 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_cs.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_cs.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106">Tento počet vašich karet v poslední době nebyl použit: <ph name="NUMBER_OF_TABS" />. Chcete je zavřít?</translation>
 <translation id="1181037720776840403">Odebrat</translation>
 <translation id="125153950246128346">Další kartu zobrazíte klepnutím</translation>
+<translation id="1657719826150349398">Přesunout kartu dolů</translation>
+<translation id="1778290789805128794">Přesunout kartu nahoru</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> karta}few{<ph name="TABS_COUNT_MANY" /> karty}many{<ph name="TABS_COUNT_MANY" /> karty}other{<ph name="TABS_COUNT_MANY" /> karet}}</translation>
 <translation id="2569352796411618312">Tento počet vašich karet v poslední době nebyl použit: <ph name="NUMBER_OF_TABS" />. Chcete je zavřít?</translation>
 <translation id="257674075312929031">Skupina</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Přetažením můžete karty uspořádat do skupin</translation>
 <translation id="6040143037577758943">Zavřít</translation>
 <translation id="6193448654517602979">Vyberte karty</translation>
+<translation id="6562820390860419811">Přesunout kartu doleva</translation>
 <translation id="6615455863669487791">Ukázat</translation>
 <translation id="6840760312327750441">Chcete-li karty seskupit, podržte některou kartu. Potom ji přetáhněte na jinou kartu.</translation>
 <translation id="7151209024774799310">Odstranit karty ze skupiny</translation>
 <translation id="7559245342362162951">Zobrazit karty skupiny v mřížce na celou obrazovku</translation>
 <translation id="7792771145871471484">Zkontrolovat návrhy.</translation>
+<translation id="7885132941432959125">Přesunout kartu doprava</translation>
 <translation id="7966321538264951561">Zavřít návrhy.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Zavřít <ph name="TABS_COUNT_ONE" /> vybranou kartu}few{Zavřít <ph name="TABS_COUNT_MANY" /> vybrané karty}many{Zavřít <ph name="TABS_COUNT_MANY" /> vybrané karty}other{Zavřít <ph name="TABS_COUNT_MANY" /> vybraných karet}}</translation>
 <translation id="9150694013019234766">Ve skupině karet v dolní části obrazovky můžete přepínat mezi kartami</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_da.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_da.xtb
index 0748177..0b1160e 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_da.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_da.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106"><ph name="NUMBER_OF_TABS" /> af dine faner er ikke blevet brugt for nylig. Vil du lukke dem?</translation>
 <translation id="1181037720776840403">Fjern</translation>
 <translation id="125153950246128346">Tryk for at se en anden fane</translation>
+<translation id="1657719826150349398">Flyt fane ned</translation>
+<translation id="1778290789805128794">Flyt fane til toppen</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> fane}one{<ph name="TABS_COUNT_MANY" /> fane}other{<ph name="TABS_COUNT_MANY" /> faner}}</translation>
 <translation id="2569352796411618312">Forslag: <ph name="NUMBER_OF_TABS" /> af dine faner er ikke blevet brugt for nylig. Vil du lukke dem?</translation>
 <translation id="257674075312929031">Gruppe</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Træk og slip faner for at gruppere dem</translation>
 <translation id="6040143037577758943">Luk</translation>
 <translation id="6193448654517602979">Vælg faner</translation>
+<translation id="6562820390860419811">Flyt fane til venstre</translation>
 <translation id="6615455863669487791">Vis mig</translation>
 <translation id="6840760312327750441">Du kan gruppere faner ved at holde en fane nede. Træk den derefter oven på en anden fane.</translation>
 <translation id="7151209024774799310">Fjern faner fra gruppe</translation>
 <translation id="7559245342362162951">Vis gruppens faner i et fuldskærmsgitter</translation>
 <translation id="7792771145871471484">Gennemgå forslagene.</translation>
+<translation id="7885132941432959125">Flyt fane til højre</translation>
 <translation id="7966321538264951561">Afvis forslagene.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Luk <ph name="TABS_COUNT_ONE" /> valgt fane}one{Luk <ph name="TABS_COUNT_MANY" /> valgt fane}other{Luk de <ph name="TABS_COUNT_MANY" /> valgte faner}}</translation>
 <translation id="9150694013019234766">Skift mellem faner i din fanegruppe nederst på skærmen</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_de.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_de.xtb
index 3a2d966..fc3a52e 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_de.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_de.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106"><ph name="NUMBER_OF_TABS" /> von Ihren Tabs wurden längere Zeit nicht verwendet. Möchten Sie sie schließen?</translation>
 <translation id="1181037720776840403">Entfernen</translation>
 <translation id="125153950246128346">Tippen, um einen anderen Tab zu sehen</translation>
+<translation id="1657719826150349398">Tab nach unten verschieben</translation>
+<translation id="1778290789805128794">Tab nach oben verschieben</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> Tab}other{<ph name="TABS_COUNT_MANY" /> Tabs}}</translation>
 <translation id="2569352796411618312">Vorschlag: <ph name="NUMBER_OF_TABS" /> von Ihren Tabs wurden längere Zeit nicht verwendet. Möchten Sie sie schließen?</translation>
 <translation id="257674075312929031">Gruppe</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Tabs zum Gruppieren ziehen</translation>
 <translation id="6040143037577758943">Schließen</translation>
 <translation id="6193448654517602979">Tabs auswählen</translation>
+<translation id="6562820390860419811">Tab nach links bewegen</translation>
 <translation id="6615455863669487791">Zeigen</translation>
 <translation id="6840760312327750441">Wenn Sie Tabs gruppieren möchten, berühren und halten Sie einen Tab. Ziehen Sie ihn dann auf einen anderen Tab.</translation>
 <translation id="7151209024774799310">Tabs aus der Gruppe verschieben</translation>
 <translation id="7559245342362162951">Tabs der Gruppe in Vollbildraster anzeigen</translation>
 <translation id="7792771145871471484">Vorschläge ansehen.</translation>
+<translation id="7885132941432959125">Tab nach rechts verschieben</translation>
 <translation id="7966321538264951561">Vorschläge ablehnen.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> ausgewählten Tab schließen}other{<ph name="TABS_COUNT_MANY" /> ausgewählte Tabs schließen}}</translation>
 <translation id="9150694013019234766">Am unteren Bildschirmrand können Sie zwischen den Tabs in Ihrer Tabgruppe wechseln</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_es-419.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_es-419.xtb
index fbe0123..19c9e392 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_es-419.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_es-419.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106">Últimamente no usaste <ph name="NUMBER_OF_TABS" /> de tus pestañas. ¿Quieres cerrarlas?</translation>
 <translation id="1181037720776840403">Quitar</translation>
 <translation id="125153950246128346">Presiona para ver otra pestaña</translation>
+<translation id="1657719826150349398">Mover la pestaña hacia abajo</translation>
+<translation id="1778290789805128794">Mover la pestaña hacia arriba</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> pestaña}other{<ph name="TABS_COUNT_MANY" /> pestañas}}</translation>
 <translation id="2569352796411618312">Sugerencia: Últimamente no usaste <ph name="NUMBER_OF_TABS" /> de tus pestañas. ¿Quieres cerrarlas?</translation>
 <translation id="257674075312929031">Grupo</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Arrastra las pestañas para agruparlas</translation>
 <translation id="6040143037577758943">Cerrar</translation>
 <translation id="6193448654517602979">Seleccionar pestañas</translation>
+<translation id="6562820390860419811">Mover la pestaña a la izquierda</translation>
 <translation id="6615455863669487791">Mostrarme</translation>
 <translation id="6840760312327750441">Para agrupar pestañas, mantén presionada una y arrástrala hasta otra.</translation>
 <translation id="7151209024774799310">Quitar pestañas del grupo</translation>
 <translation id="7559245342362162951">Muestra las pestañas del grupo en la cuadrícula de pantalla completa</translation>
 <translation id="7792771145871471484">Revisa las sugerencias.</translation>
+<translation id="7885132941432959125">Mover la pestaña a la derecha</translation>
 <translation id="7966321538264951561">Descarta las sugerencias.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Cierra <ph name="TABS_COUNT_ONE" /> pestaña seleccionada}other{Cierra <ph name="TABS_COUNT_MANY" /> pestañas seleccionadas}}</translation>
 <translation id="9150694013019234766">Alterna entre las pestañas que aparecen en el grupo de pestañas cerca de la parte inferior de la pantalla</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_es.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_es.xtb
index c9ef2a9..3017ec4c 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_es.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_es.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106"><ph name="NUMBER_OF_TABS" /> de las pestañas no se han usado recientemente. ¿Quieres cerrarlas?</translation>
 <translation id="1181037720776840403">Quitar</translation>
 <translation id="125153950246128346">Pulsa para ver otra pestaña</translation>
+<translation id="1657719826150349398">Bajar pestaña</translation>
+<translation id="1778290789805128794">Subir pestaña</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> pestaña}other{<ph name="TABS_COUNT_MANY" /> pestañas}}</translation>
 <translation id="2569352796411618312">Sugerencia: <ph name="NUMBER_OF_TABS" /> de las pestañas no se han usado recientemente. ¿Quieres cerrarlas?</translation>
 <translation id="257674075312929031">Grupo</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Arrastra las pestañas para agruparlas</translation>
 <translation id="6040143037577758943">Cerrar</translation>
 <translation id="6193448654517602979">Selecciona pestañas</translation>
+<translation id="6562820390860419811">Mover pestaña a la izquierda</translation>
 <translation id="6615455863669487791">Ver</translation>
 <translation id="6840760312327750441">Para agrupar pestañas, mantén pulsada una pestaña. A continuación, arrástrala sobre otra pestaña.</translation>
 <translation id="7151209024774799310">Quitar pestañas del grupo</translation>
 <translation id="7559245342362162951">Mostrar las pestañas del grupo en una cuadrícula en pantalla completa</translation>
 <translation id="7792771145871471484">Revisar las sugerencias.</translation>
+<translation id="7885132941432959125">Mover pestaña a la derecha</translation>
 <translation id="7966321538264951561">Cerrar las sugerencias.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Cerrar <ph name="TABS_COUNT_ONE" /> pestaña seleccionada}other{Cerrar <ph name="TABS_COUNT_MANY" /> pestañas seleccionadas}}</translation>
 <translation id="9150694013019234766">Cambia de una pestaña a otra en tu grupo de pestañas de la parte inferior de la pantalla</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_et.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_et.xtb
index c5cdfc8..0ed8e38 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_et.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_et.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106"><ph name="NUMBER_OF_TABS" /> teie vahelehte pole hiljuti kasutatud. Kas sulgeda need?</translation>
 <translation id="1181037720776840403">Eemalda</translation>
 <translation id="125153950246128346">Puudutage muu vahelehe vaatamiseks</translation>
+<translation id="1657719826150349398">Teisalda vaheleht alla</translation>
+<translation id="1778290789805128794">Teisalda vaheleht üles</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> vaheleht}other{<ph name="TABS_COUNT_MANY" /> vahelehte}}</translation>
 <translation id="2569352796411618312">Soovitus: <ph name="NUMBER_OF_TABS" /> vahelehte pole hiljuti kasutatud. Kas sulgeda need?</translation>
 <translation id="257674075312929031">Rühm</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Lohistage vahelehti, et neid rühmitata</translation>
 <translation id="6040143037577758943">Sulge</translation>
 <translation id="6193448654517602979">Valige vahelehed</translation>
+<translation id="6562820390860419811">Teisalda vaheleht vasakule</translation>
 <translation id="6615455863669487791">Kuva mulle</translation>
 <translation id="6840760312327750441">Vahelehtede rühmitamiseks puudutage vahelehte pikalt. Seejärel lohistage see teise vahelehe peale.</translation>
 <translation id="7151209024774799310">Vahelehtede eemaldamine</translation>
 <translation id="7559245342362162951">Kuva grupi vahelehed täisekraani ruudustikus</translation>
 <translation id="7792771145871471484">Vaadake soovitused üle.</translation>
+<translation id="7885132941432959125">Teisalda vaheleht paremale</translation>
 <translation id="7966321538264951561">Loobuge soovitustest.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Sule <ph name="TABS_COUNT_ONE" /> valitud vaheleht}other{Sule <ph name="TABS_COUNT_MANY" /> valitud vahelehte}}</translation>
 <translation id="9150694013019234766">Ekraanikuva allosas olevas vahelehtede grupis vahelehtede vahel vahetamine</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fa.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fa.xtb
index 7648dd19..0efbe80 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fa.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fa.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106"><ph name="NUMBER_OF_TABS" /> مورد از برگه‌هایتان اخیراً استفاده نشده‌اند. آن‌ها را می‌بندید؟</translation>
 <translation id="1181037720776840403">حذف</translation>
 <translation id="125153950246128346">برای دیدن برگه دیگر ضربه بزنید</translation>
+<translation id="1657719826150349398">انتقال برگه به پایین</translation>
+<translation id="1778290789805128794">انتقال برگه به بالا</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> برگه}one{<ph name="TABS_COUNT_MANY" /> برگه}other{<ph name="TABS_COUNT_MANY" /> برگه}}</translation>
 <translation id="2569352796411618312">پیشنهاد: <ph name="NUMBER_OF_TABS" /> مورد از برگه‌هایتان اخیراً استفاده نشده‌اند. آن‌ها را می‌بندید؟</translation>
 <translation id="257674075312929031">گروه</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">برای گروه‌بندی برگه‌ها، آن‌ها را بکشید</translation>
 <translation id="6040143037577758943">بستن</translation>
 <translation id="6193448654517602979">انتخاب برگه‌ها</translation>
+<translation id="6562820390860419811">انتقال برگه به راست</translation>
 <translation id="6615455863669487791">به من نشان بده</translation>
 <translation id="6840760312327750441">برای ایجاد برگه‌های گروهی، برگه‌ای را لمس کنید و نگه‌دارید. سپس آن را به برگه‌ای دیگر بکشید.</translation>
 <translation id="7151209024774799310">برداشتن برگه‌ها از گروه</translation>
 <translation id="7559245342362162951">نمایش برگه‌های گروه در شبکه تمام‌صفحه</translation>
 <translation id="7792771145871471484">پیشنهاد‌ها مرور شود.</translation>
+<translation id="7885132941432959125">انتقال برگه به چپ</translation>
 <translation id="7966321538264951561">پیشنهادها رد شود.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{بستن <ph name="TABS_COUNT_ONE" /> برگه انتخابی}one{بستن <ph name="TABS_COUNT_MANY" /> برگه انتخابی}other{بستن <ph name="TABS_COUNT_MANY" /> برگه انتخابی}}</translation>
 <translation id="9150694013019234766">جابه‌جایی بین برگه‌ها در گروه برگه شما واقع در نزدیک پایین صفحه‌نمایش</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fi.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fi.xtb
index 91a0aee8..cd53d37 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fi.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fi.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106"><ph name="NUMBER_OF_TABS" /> välilehteä ei ole käytetty vähään aikaan. Suljetaanko ne?</translation>
 <translation id="1181037720776840403">Poista</translation>
 <translation id="125153950246128346">Näytä toinen välilehti napauttamalla</translation>
+<translation id="1657719826150349398">Siirrä välilehti alaspäin</translation>
+<translation id="1778290789805128794">Siirrä välilehti ylimmäksi</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> välilehti}other{<ph name="TABS_COUNT_MANY" /> välilehteä}}</translation>
 <translation id="2569352796411618312">Ehdotus: <ph name="NUMBER_OF_TABS" /> välilehteä ei ole käytetty vähään aikaan. Suljetaanko ne?</translation>
 <translation id="257674075312929031">Ryhmä</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Ryhmittele välilehtiä vetämällä niitä</translation>
 <translation id="6040143037577758943">Sulje</translation>
 <translation id="6193448654517602979">Valitse välilehdet</translation>
+<translation id="6562820390860419811">Siirrä välilehti vasemmalle</translation>
 <translation id="6615455863669487791">Näytä</translation>
 <translation id="6840760312327750441">Kun haluat ryhmitellä välilehtiä, kosketa yhtä pitkään. Vedä se sitten toisen välilehden päälle.</translation>
 <translation id="7151209024774799310">Poista välilehtiä ryhmästä</translation>
 <translation id="7559245342362162951">Näytä ryhmän välilehdet koko näytön ruudukossa</translation>
 <translation id="7792771145871471484">Tarkista ehdotukset.</translation>
+<translation id="7885132941432959125">Siirrä välilehti oikealle</translation>
 <translation id="7966321538264951561">Ohita ehdotukset.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Sulje <ph name="TABS_COUNT_ONE" /> valittu välilehti}other{Sulje <ph name="TABS_COUNT_MANY" /> valittua välilehteä}}</translation>
 <translation id="9150694013019234766">Vaihda välilehteä välilehtiryhmässä näytön alalaidassa</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fil.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fil.xtb
index 37f48fc8..42f97ea 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fil.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fil.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106"><ph name="NUMBER_OF_TABS" /> sa iyong mga tab ang hindi nagamit nitong nakaraan. Isara ang mga ito?</translation>
 <translation id="1181037720776840403">Alisin</translation>
 <translation id="125153950246128346">I-tap para tumingin ng iba pang tab</translation>
+<translation id="1657719826150349398">Ilipat ang tab sa ibaba</translation>
+<translation id="1778290789805128794">Ilipat ang tab sa itaas</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> tab}one{<ph name="TABS_COUNT_MANY" /> tab}other{<ph name="TABS_COUNT_MANY" /> na tab}}</translation>
 <translation id="2569352796411618312">Suhestyon: <ph name="NUMBER_OF_TABS" /> sa iyong mga tab ang hindi nagamit nitong nakaraan. Isara ang mga ito?</translation>
 <translation id="257674075312929031">Pangkat</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">I-drag ang mga tab para pagpangkatin ang mga ito</translation>
 <translation id="6040143037577758943">Isara</translation>
 <translation id="6193448654517602979">Pumili ng mga tab</translation>
+<translation id="6562820390860419811">Ilipat ang tab sa kaliwa</translation>
 <translation id="6615455863669487791">Ipakita sa akin</translation>
 <translation id="6840760312327750441">Sa mga tab ng grupo, pindutin nang matagal ang isang tab. Pagkatapos, i-drag ito sa isa pang tab.</translation>
 <translation id="7151209024774799310">Mag-alis ng mga tab sa grupo</translation>
 <translation id="7559245342362162951">Ipakita ang mga tab ng grupo sa fullscreen grid</translation>
 <translation id="7792771145871471484">Suriin ang mga suhestyon.</translation>
+<translation id="7885132941432959125">Ilipat ang tab sa kanan</translation>
 <translation id="7966321538264951561">I-dismiss ang mga suhestyon.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Isara ang <ph name="TABS_COUNT_ONE" /> napiling tab}one{Isara ang <ph name="TABS_COUNT_MANY" /> napiling tab}other{Isara ang <ph name="TABS_COUNT_MANY" /> na napiling tab}}</translation>
 <translation id="9150694013019234766">Magpalipat-lipat sa mga tab sa iyong grupo ng tab malapit sa ibaba ng screen</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fr-CA.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fr-CA.xtb
index faed5ba7..4458963d 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fr-CA.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fr-CA.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106"><ph name="NUMBER_OF_TABS" /> de vos onglets n'ont pas été utilisés récemment. Les fermer?</translation>
 <translation id="1181037720776840403">Supprimer</translation>
 <translation id="125153950246128346">Touchez pour afficher un autre onglet</translation>
+<translation id="1657719826150349398">Déplacer l'onglet vers le bas</translation>
+<translation id="1778290789805128794">Déplacer l'onglet vers le haut</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> onglet}one{<ph name="TABS_COUNT_MANY" /> onglet}other{<ph name="TABS_COUNT_MANY" /> onglets}}</translation>
 <translation id="2569352796411618312">Suggestion : <ph name="NUMBER_OF_TABS" /> de vos onglets n'ont pas été utilisés récemment. Les fermer?</translation>
 <translation id="257674075312929031">Groupe</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Faites glisser les onglets pour les grouper</translation>
 <translation id="6040143037577758943">Fermer</translation>
 <translation id="6193448654517602979">Sélectionnez des onglets</translation>
+<translation id="6562820390860419811">Déplacer l'onglet vers la gauche</translation>
 <translation id="6615455863669487791">Démonstration</translation>
 <translation id="6840760312327750441">Pour regrouper des onglets, maintenez le doigt sur un onglet, puis faites-le glisser vers un autre.</translation>
 <translation id="7151209024774799310">Supprimer les onglets du groupe</translation>
 <translation id="7559245342362162951">Afficher les onglets du groupe dans une grille plein écran</translation>
 <translation id="7792771145871471484">Examiner les suggestions.</translation>
+<translation id="7885132941432959125">Déplacer l'onglet vers la droite</translation>
 <translation id="7966321538264951561">Ignorer les suggestions.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Fermer <ph name="TABS_COUNT_ONE" /> onglet sélectionné}one{Fermer <ph name="TABS_COUNT_MANY" /> onglet sélectionné}other{Fermer <ph name="TABS_COUNT_MANY" /> onglets sélectionnés}}</translation>
 <translation id="9150694013019234766">Basculez entre les onglets dans votre groupe d'onglets, près du bas de l'écran</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fr.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fr.xtb
index baf7278..386357d 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fr.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fr.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106"><ph name="NUMBER_OF_TABS" /> des onglets ouverts n'ont pas été utilisés récemment. Voulez-vous les fermer ?</translation>
 <translation id="1181037720776840403">Supprimer</translation>
 <translation id="125153950246128346">Appuyer pour afficher un autre onglet</translation>
+<translation id="1657719826150349398">Déplacer l'onglet vers le bas</translation>
+<translation id="1778290789805128794">Déplacer l'onglet vers le haut</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> onglet}one{<ph name="TABS_COUNT_MANY" /> onglet}other{<ph name="TABS_COUNT_MANY" /> onglets}}</translation>
 <translation id="2569352796411618312">Suggestion : <ph name="NUMBER_OF_TABS" /> des onglets ouverts n'ont pas été utilisés récemment. Voulez-vous les fermer ?</translation>
 <translation id="257674075312929031">Groupe</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Faire glisser les onglets pour les regrouper</translation>
 <translation id="6040143037577758943">Fermer</translation>
 <translation id="6193448654517602979">Sélectionner des onglets</translation>
+<translation id="6562820390860419811">Déplacer l'onglet vers la gauche</translation>
 <translation id="6615455863669487791">Démonstration</translation>
 <translation id="6840760312327750441">Pour regrouper des onglets, appuyez de manière prolongée sur un onglet, puis faites-le glisser vers un autre.</translation>
 <translation id="7151209024774799310">Supprimer des onglets</translation>
 <translation id="7559245342362162951">Afficher les onglets du groupe dans une grille en plein écran</translation>
 <translation id="7792771145871471484">Afficher les suggestions.</translation>
+<translation id="7885132941432959125">Déplacer l'onglet vers la droite</translation>
 <translation id="7966321538264951561">Fermer les suggestions.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Fermer l'onglet sélectionné (<ph name="TABS_COUNT_ONE" />)}one{Fermer l'onglet sélectionné (<ph name="TABS_COUNT_MANY" />)}other{Fermer les onglets sélectionnés (<ph name="TABS_COUNT_MANY" />)}}</translation>
 <translation id="9150694013019234766">Passer d'un onglet à l'autre depuis votre groupe d'onglets dans la partie inférieure de l'écran</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_gl.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_gl.xtb
index 5351c62..aa69490f 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_gl.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_gl.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106">Ultimamente non se utilizaron <ph name="NUMBER_OF_TABS" /> das túas pestanas. Queres pechalas?</translation>
 <translation id="1181037720776840403">Eliminar</translation>
 <translation id="125153950246128346">Toca para ver outra pestana</translation>
+<translation id="1657719826150349398">Mover pestana cara abaixo</translation>
+<translation id="1778290789805128794">Mover pestana cara arriba</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> pestana}other{<ph name="TABS_COUNT_MANY" /> pestanas}}</translation>
 <translation id="2569352796411618312">Suxestión: <ph name="NUMBER_OF_TABS" /> das pestanas que tes abertas leva/n sen utilizarse un bo anaco. Queres pechala/s?</translation>
 <translation id="257674075312929031">Grupo</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Arrastra as pestanas para agrupalas</translation>
 <translation id="6040143037577758943">Pechar</translation>
 <translation id="6193448654517602979">Selecciona pestanas</translation>
+<translation id="6562820390860419811">Mover pestana cara á esquerda</translation>
 <translation id="6615455863669487791">Mostrar</translation>
 <translation id="6840760312327750441">Para agrupar varias pestanas, mantén premida unha delas e despois arrástraa ata outra.</translation>
 <translation id="7151209024774799310">Quitar pestanas do grupo</translation>
 <translation id="7559245342362162951">Mostrar as pestanas do grupo nunha grade en pantalla completa</translation>
 <translation id="7792771145871471484">Revisar as suxestións.</translation>
+<translation id="7885132941432959125">Mover pestana cara á dereita</translation>
 <translation id="7966321538264951561">Ignorar estas suxestións.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Pechar <ph name="TABS_COUNT_ONE" /> pestana seleccionada}other{Pechar <ph name="TABS_COUNT_MANY" /> pestanas seleccionadas}}</translation>
 <translation id="9150694013019234766">Cambia dunha pestana a outra no grupo de pestanas da parte inferior da pantalla</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_gu.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_gu.xtb
index d663cc89..2542f0b 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_gu.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_gu.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106">હજુ સુધી તમારા ટૅબમાંથી <ph name="NUMBER_OF_TABS" /> ટૅબનો ઉપયોગ કરવામાં આવ્યો નથી. તેને બંધ કરીએ?</translation>
 <translation id="1181037720776840403">કાઢી નાખો</translation>
 <translation id="125153950246128346">અન્ય ટૅબ જોવા માટે ટૅપ કરો</translation>
+<translation id="1657719826150349398">ટૅબને નીચે ખસેડો</translation>
+<translation id="1778290789805128794">ટૅબને ટોચે ખસેડો</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> ટૅબ}one{<ph name="TABS_COUNT_MANY" /> ટૅબ}other{<ph name="TABS_COUNT_MANY" /> ટૅબ}}</translation>
 <translation id="2569352796411618312">સૂચન: હજુ સુધી તમારા ટૅબમાંથી <ph name="NUMBER_OF_TABS" /> ટૅબનો ઉપયોગ કરવામાં આવ્યો નથી. તેને બંધ કરીએ?</translation>
 <translation id="257674075312929031">જૂથ</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">ટૅબનું ગ્રૂપ બનાવવા માટે તેને ખેંચો</translation>
 <translation id="6040143037577758943">બંધ કરો</translation>
 <translation id="6193448654517602979">ટૅબ પસંદ કરો</translation>
+<translation id="6562820390860419811">ટૅબને ડાબે ખસેડો</translation>
 <translation id="6615455863669487791">મને બતાવો</translation>
 <translation id="6840760312327750441">ટૅબનું ગ્રૂપ બનાવવા માટે, ટૅબને સ્પર્શ કરી રાખો. પછી, ટૅબને બીજા ટૅબ પર ખેંચો.</translation>
 <translation id="7151209024774799310">ગ્રૂપમાંથી ટૅબ કાઢી નાખો</translation>
 <translation id="7559245342362162951">ગ્રુપના ટૅબને પૂર્ણસ્ક્રીન ગ્રિડમાં બતાવો</translation>
 <translation id="7792771145871471484">સૂચનોનો રિવ્યૂ કરો.</translation>
+<translation id="7885132941432959125">ટૅબને જમણે ખસેડો</translation>
 <translation id="7966321538264951561">સૂચનોને છોડી દો.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{પસંદ કરેલા <ph name="TABS_COUNT_ONE" /> ટૅબને બંધ કરો}one{પસંદ કરેલા <ph name="TABS_COUNT_MANY" /> ટૅબને બંધ કરો}other{પસંદ કરેલા <ph name="TABS_COUNT_MANY" /> ટૅબને બંધ કરો}}</translation>
 <translation id="9150694013019234766">સ્ક્રીનના નીચેના ભાગમાં, તમારા ટૅબ ગ્રૂપમાં એકથી વધુ ટૅબની વચ્ચે સ્વિચ કરો</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_hr.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_hr.xtb
index a14e941..dda35f7a 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_hr.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_hr.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106">Broj vaših kartica koje niste koristili neko vrijeme: <ph name="NUMBER_OF_TABS" />. Želite li ih zatvoriti?</translation>
 <translation id="1181037720776840403">Ukloni</translation>
 <translation id="125153950246128346">Dodirnite za prikaz druge kartice</translation>
+<translation id="1657719826150349398">Pomakni karticu prema dolje</translation>
+<translation id="1778290789805128794">Premjesti vrh kartice</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> kartica}one{<ph name="TABS_COUNT_MANY" /> kartica}few{<ph name="TABS_COUNT_MANY" /> kartice}other{<ph name="TABS_COUNT_MANY" /> kartica}}</translation>
 <translation id="2569352796411618312">Prijedlog: broj vaših kartica koje niste koristili neko vrijeme: <ph name="NUMBER_OF_TABS" />. Želite li ih zatvoriti?</translation>
 <translation id="257674075312929031">Grupa</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Povucite kartice da biste ih grupirali</translation>
 <translation id="6040143037577758943">Zatvori</translation>
 <translation id="6193448654517602979">Odaberite kartice</translation>
+<translation id="6562820390860419811">Pomakni karticu ulijevo</translation>
 <translation id="6615455863669487791">Pokaži mi</translation>
 <translation id="6840760312327750441">Da biste grupirali kartice, dodirnite i držite karticu. Zatim je povucite na drugu karticu.</translation>
 <translation id="7151209024774799310">Ukloni kartice iz grupe</translation>
 <translation id="7559245342362162951">Prikaži kartice grupe u rešetki na cijelom zaslonu</translation>
 <translation id="7792771145871471484">Pregledajte prijedloge.</translation>
+<translation id="7885132941432959125">Pomakni karticu udesno</translation>
 <translation id="7966321538264951561">Odbacite prijedloge.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Zatvori <ph name="TABS_COUNT_ONE" /> odabranu karticu}one{Zatvori <ph name="TABS_COUNT_MANY" /> odabranu karticu}few{Zatvori <ph name="TABS_COUNT_MANY" /> odabrane kartice}other{Zatvori <ph name="TABS_COUNT_MANY" /> odabranih kartica}}</translation>
 <translation id="9150694013019234766">Prebacujte se između kartica u grupi kartica pri dnu zaslona</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_hu.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_hu.xtb
index 5dda49c..7c719e88 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_hu.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_hu.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106"><ph name="NUMBER_OF_TABS" /> lapot nem használt mostanában. Szeretné bezárni őket?</translation>
 <translation id="1181037720776840403">Eltávolítás</translation>
 <translation id="125153950246128346">Koppintson másik lap megtekintéséhez</translation>
+<translation id="1657719826150349398">Lap mozgatása lefelé</translation>
+<translation id="1778290789805128794">Lap mozgatása fel</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> lap}other{<ph name="TABS_COUNT_MANY" /> lap}}</translation>
 <translation id="2569352796411618312">Javaslat: <ph name="NUMBER_OF_TABS" /> lapot nem használt mostanában. Szeretné bezárni őket?</translation>
 <translation id="257674075312929031">Csoport</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">A lapokat húzással csoportosíthatja</translation>
 <translation id="6040143037577758943">Bezárás</translation>
 <translation id="6193448654517602979">Lapok kiválasztása</translation>
+<translation id="6562820390860419811">Lap mozgatása balra</translation>
 <translation id="6615455863669487791">Megjelenítés</translation>
 <translation id="6840760312327750441">Lapok csoportosításához tartsa nyomva az egyik lapot, majd húzza rá a másikra.</translation>
 <translation id="7151209024774799310">Lapok eltávolítása</translation>
 <translation id="7559245342362162951">A csoportban lévő lapok teljes képernyős rácsszerkezetben való megjelenítése</translation>
 <translation id="7792771145871471484">Javaslatok áttekintése.</translation>
+<translation id="7885132941432959125">Lap mozgatása jobbra</translation>
 <translation id="7966321538264951561">Javaslatok elvetése.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> kijelölt lap bezárása}other{<ph name="TABS_COUNT_MANY" /> kijelölt lap bezárása}}</translation>
 <translation id="9150694013019234766">Válthat a képernyő aljánál lévő lapcsoport lapjai között</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_hy.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_hy.xtb
index 78a1deb8..90b4a55 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_hy.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_hy.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106">Ձեր ներդիրներից <ph name="NUMBER_OF_TABS" />-ը վերջերս չեն օգտագործվել։ Փակե՞լ դրանք։</translation>
 <translation id="1181037720776840403">Ջնջել</translation>
 <translation id="125153950246128346">Հպեք՝ այլ ներդիրի անցնելու համար</translation>
+<translation id="1657719826150349398">Տեղափոխել ներդիրը ներքև</translation>
+<translation id="1778290789805128794">Տեղափոխել ներդիրը վերև</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> ներդիր}one{<ph name="TABS_COUNT_MANY" /> ներդիր}other{<ph name="TABS_COUNT_MANY" /> ներդիր}}</translation>
 <translation id="2569352796411618312">Ձեր ներդիրներից <ph name="NUMBER_OF_TABS" />-ը վաղուց չեք օգտագործել։ Փակե՞լ դրանք։</translation>
 <translation id="257674075312929031">Խումբ</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Քաշեք ներդիրները՝ դրանք խմբավորելու համար</translation>
 <translation id="6040143037577758943">Փակել</translation>
 <translation id="6193448654517602979">Ընտրեք ներդիրներ</translation>
+<translation id="6562820390860419811">Տեղափոխել ներդիրը ձախ</translation>
 <translation id="6615455863669487791">Ցույց տալ</translation>
 <translation id="6840760312327750441">Ներդիրները խմբավորելու համար հպեք ներդիրին և պահեք։ Ապա այն քաշեք մյուս ներդիրի վրա։</translation>
 <translation id="7151209024774799310">Հեռացնել ներդիները խմբից</translation>
 <translation id="7559245342362162951">Ցուցադրել խմբի ներդիրները լիաէկրան ցանցի ռեժիմում</translation>
 <translation id="7792771145871471484">Դիտել հուշումները։</translation>
+<translation id="7885132941432959125">Տեղափոխել ներդիրն աջ</translation>
 <translation id="7966321538264951561">Փակել հուշումները։</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Փակել ընտրված <ph name="TABS_COUNT_ONE" /> ներդիրը}one{Փակել ընտրված <ph name="TABS_COUNT_MANY" /> ներդիրը}other{Փակել ընտրված <ph name="TABS_COUNT_MANY" /> ներդիրները}}</translation>
 <translation id="9150694013019234766">Էկրանի ներքևի հատվածում գտնվող ներդիրների խմբում կարող եք անցնել մի ներդիրից մյուսը</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_id.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_id.xtb
index 9e28089..649e01e 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_id.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_id.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106"><ph name="NUMBER_OF_TABS" /> dari beberapa tab Anda belum digunakan akhir-akhir ini. Tutup?</translation>
 <translation id="1181037720776840403">Hapus</translation>
 <translation id="125153950246128346">Ketuk untuk melihat tab lainnya</translation>
+<translation id="1657719826150349398">Pindahkan tab ke bawah</translation>
+<translation id="1778290789805128794">Pindahkan tab ke atas</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> tab}other{<ph name="TABS_COUNT_MANY" /> tab}}</translation>
 <translation id="2569352796411618312">Saran: <ph name="NUMBER_OF_TABS" /> dari beberapa tab Anda belum digunakan akhir-akhir ini. Tutup?</translation>
 <translation id="257674075312929031">Grup</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Tarik tab untuk mengelompokkannya</translation>
 <translation id="6040143037577758943">Tutup</translation>
 <translation id="6193448654517602979">Pilih tab</translation>
+<translation id="6562820390860419811">Pindahkan tab ke kiri</translation>
 <translation id="6615455863669487791">Tunjukkan</translation>
 <translation id="6840760312327750441">Untuk mengelompokkan tab, sentuh lama sebuah tab. Lalu, tarik ke tab lainnya.</translation>
 <translation id="7151209024774799310">Keluarkan tab dari kelompok</translation>
 <translation id="7559245342362162951">Tampilkan tab grup dalam petak layar penuh</translation>
 <translation id="7792771145871471484">Tinjau saran.</translation>
+<translation id="7885132941432959125">Pindahkan tab ke kanan</translation>
 <translation id="7966321538264951561">Tutup saran.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Tutup <ph name="TABS_COUNT_ONE" /> tab yang dipilih}other{Tutup <ph name="TABS_COUNT_MANY" /> tab yang dipilih}}</translation>
 <translation id="9150694013019234766">Beralih ke tab lain pada grup tab Anda di dekat bagian bawah layar</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_is.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_is.xtb
index 196f29a..46752cb2 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_is.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_is.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106"><ph name="NUMBER_OF_TABS" /> af flipunum þínum hafa ekki verið notaðir nýlega. Viltu loka þeim?</translation>
 <translation id="1181037720776840403">Fjarlægja</translation>
 <translation id="125153950246128346">Ýttu til að sjá annan flipa</translation>
+<translation id="1657719826150349398">Færa flipa niður</translation>
+<translation id="1778290789805128794">Fela flipa efst</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> flipi}one{<ph name="TABS_COUNT_MANY" /> flipi}other{<ph name="TABS_COUNT_MANY" /> flipar}}</translation>
 <translation id="2569352796411618312">Tillaga: <ph name="NUMBER_OF_TABS" /> af flipunum þínum hafa ekki verið notaðir nýlega. Viltu loka þeim?</translation>
 <translation id="257674075312929031">Hópur</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Dragðu flipa til að sameina þá</translation>
 <translation id="6040143037577758943">Loka</translation>
 <translation id="6193448654517602979">Velja flipa</translation>
+<translation id="6562820390860419811">Færa flipa til vinstri</translation>
 <translation id="6615455863669487791">Sýnið mér</translation>
 <translation id="6840760312327750441">Haltu fingri á flipa til að flokka hann. Dragðu hann svo ofan á annan flipa.</translation>
 <translation id="7151209024774799310">Fjarlægja flipa úr hópi</translation>
 <translation id="7559245342362162951">Sýna flipa hóps á öllum skjánum</translation>
 <translation id="7792771145871471484">Skoða tillögurnar.</translation>
+<translation id="7885132941432959125">Færa flipa til hægri</translation>
 <translation id="7966321538264951561">Hunsa tillögurnar.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Loka <ph name="TABS_COUNT_ONE" /> völdum flipa}one{Loka <ph name="TABS_COUNT_MANY" /> völdum flipa}other{Loka <ph name="TABS_COUNT_MANY" /> völdum flipum}}</translation>
 <translation id="9150694013019234766">Flettu á milli flipa í flipahópnum neðarlega á skjánum</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_iw.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_iw.xtb
index 923fa70a..5514c2ff 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_iw.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_iw.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106"><ph name="NUMBER_OF_TABS" /> מהכרטיסיות לא היו בשימוש לאחרונה. לסגור אותן?</translation>
 <translation id="1181037720776840403">הסרה</translation>
 <translation id="125153950246128346">יש להקיש כדי לראות כרטיסייה אחרת</translation>
+<translation id="1657719826150349398">העברת הכרטיסיה למטה</translation>
+<translation id="1778290789805128794">העברת הכרטיסיה למעלה</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{כרטיסייה אחת (<ph name="TABS_COUNT_ONE" />)}two{<ph name="TABS_COUNT_MANY" /> כרטיסיות}many{<ph name="TABS_COUNT_MANY" /> כרטיסיות}other{<ph name="TABS_COUNT_MANY" /> כרטיסיות}}</translation>
 <translation id="2569352796411618312">הצעה: <ph name="NUMBER_OF_TABS" /> מהכרטיסיות לא היו בשימוש לאחרונה. לסגור אותן?</translation>
 <translation id="257674075312929031">קבוצה</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">ניתן לגרור כרטיסיות כדי לקבץ אותן</translation>
 <translation id="6040143037577758943">סגור</translation>
 <translation id="6193448654517602979">בחירת כרטיסיות</translation>
+<translation id="6562820390860419811">העברת הכרטיסיה ימינה</translation>
 <translation id="6615455863669487791">הראה לי</translation>
 <translation id="6840760312327750441">כדי לקבץ כרטיסיות, יש ללחוץ לחיצה ארוכה על כרטיסייה. בזמן הלחיצה, יש לגרור אותה אל כרטיסייה אחרת.</translation>
 <translation id="7151209024774799310">הסרת כרטיסיות מהקבוצה</translation>
 <translation id="7559245342362162951">הצגת כרטיסיות הקבוצה ברשת מסך מלא</translation>
 <translation id="7792771145871471484">עיון בהצעות.</translation>
+<translation id="7885132941432959125">העברת הכרטיסייה שמאלה</translation>
 <translation id="7966321538264951561">סגירת ההצעות.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{סגירה של כרטיסייה אחת (<ph name="TABS_COUNT_ONE" />) שנבחרה}two{סגירה של <ph name="TABS_COUNT_MANY" /> כרטיסיות שנבחרו}many{סגירה של <ph name="TABS_COUNT_MANY" /> כרטיסיות שנבחרו}other{סגירה של <ph name="TABS_COUNT_MANY" /> כרטיסיות שנבחרו}}</translation>
 <translation id="9150694013019234766">מעבר בין כרטיסיות בקבוצת הכרטיסיות שבחלק התחתון של המסך</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ja.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ja.xtb
index 103a34b..fd2f57b 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ja.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ja.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106">しばらく使用していないタブが <ph name="NUMBER_OF_TABS" /> 個あります。これらのタブを閉じますか?</translation>
 <translation id="1181037720776840403">削除</translation>
 <translation id="125153950246128346">タップすると他のタブが表示されます</translation>
+<translation id="1657719826150349398">タブを下に移動</translation>
+<translation id="1778290789805128794">タブを一番上に移動</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> 個のタブ}other{<ph name="TABS_COUNT_MANY" /> 個のタブ}}</translation>
 <translation id="2569352796411618312">提案: しばらく使用していないタブが <ph name="NUMBER_OF_TABS" /> 個あります。これらのタブを閉じますか?</translation>
 <translation id="257674075312929031">グループ</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">タブをグループ化するにはドラッグします</translation>
 <translation id="6040143037577758943">閉じる</translation>
 <translation id="6193448654517602979">タブを選択</translation>
+<translation id="6562820390860419811">タブを左に移動</translation>
 <translation id="6615455863669487791">表示</translation>
 <translation id="6840760312327750441">タブをグループ化するには、タブを押しながら別のタブにドラッグします。</translation>
 <translation id="7151209024774799310">グループからタブを削除</translation>
 <translation id="7559245342362162951">グループのタブを全画面グリッドで表示</translation>
 <translation id="7792771145871471484">提案を確認します。</translation>
+<translation id="7885132941432959125">タブを右に移動</translation>
 <translation id="7966321538264951561">提案を閉じます。</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{選択した <ph name="TABS_COUNT_ONE" /> 個のタブを閉じます}other{選択した <ph name="TABS_COUNT_MANY" /> 個のタブを閉じます}}</translation>
 <translation id="9150694013019234766">画面下部にあるタブグループのタブを切り替えます</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ka.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ka.xtb
index 3517609e..c569b3b 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ka.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ka.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106">თქვენი <ph name="NUMBER_OF_TABS" /> ჩანართი ბოლო დროს არ გამოგიყენებიათ. გსურთ მათი დახურვა?</translation>
 <translation id="1181037720776840403">ამოშლა</translation>
 <translation id="125153950246128346">შეეხეთ სხვა ჩანართის სანახავად</translation>
+<translation id="1657719826150349398">ჩანართის ქვემოთ გადატანა</translation>
+<translation id="1778290789805128794">ჩანართის თავში გადატანა</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> ჩანართი}other{<ph name="TABS_COUNT_MANY" /> ჩანართი}}</translation>
 <translation id="2569352796411618312">შემოთავაზება: თქვენი <ph name="NUMBER_OF_TABS" /> ჩანართი ბოლო დროს არ გამოგიყენებიათ. გსურთ მათი დახურვა?</translation>
 <translation id="257674075312929031">ჯგუფი</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">ჩანართების დასაჯგუფებლად ჩავლებით გადაიტანეთ ისინი</translation>
 <translation id="6040143037577758943">დახურვა</translation>
 <translation id="6193448654517602979">აირჩიეთ ჩანართები</translation>
+<translation id="6562820390860419811">ჩანართის მარცხნივ გადატანა</translation>
 <translation id="6615455863669487791">მაჩვენე</translation>
 <translation id="6840760312327750441">ჩანართების დასაჯგუფებლად ხანგრძლივად შეეხეთ ჩანართს. შემდეგ კი ჩავლებით გადაიტანეს ის სხვა ჩანართზე.</translation>
 <translation id="7151209024774799310">ჩანართების წაშლა ჯგუფიდან</translation>
 <translation id="7559245342362162951">ჯგუფის ჩანართების სრულეკრანიან ბადეში ჩვენება</translation>
 <translation id="7792771145871471484">შემოთავაზებების გადახედვა.</translation>
+<translation id="7885132941432959125">ჩანართის მარჯვნივ გადატანა</translation>
 <translation id="7966321538264951561">შემოთავაზებების დახურვა.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> არჩეული ჩანართის დახურვა}other{<ph name="TABS_COUNT_MANY" /> არჩეული ჩანართის დახურვა}}</translation>
 <translation id="9150694013019234766">გადაერთეთ ჩანართებს შორის თქვენს ჩანართების ჯგუფში, ეკრანის ქვედა ნაწილში</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_kk.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_kk.xtb
index e58ef30..b1573b7 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_kk.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_kk.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106"><ph name="NUMBER_OF_TABS" /> қойынды біраздан бері пайдаланылмады. Олар жабылсын ба?</translation>
 <translation id="1181037720776840403">Өшіру</translation>
 <translation id="125153950246128346">Басқа қойынды көру үшін түртіңіз.</translation>
+<translation id="1657719826150349398">Қойындыны төмен жылжыту</translation>
+<translation id="1778290789805128794">Қойындыны жоғары жылжыту</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> қойынды}other{<ph name="TABS_COUNT_MANY" /> қойынды}}</translation>
 <translation id="2569352796411618312">Ұсыныс: <ph name="NUMBER_OF_TABS" /> қойынды біраздан бері пайдаланылмады. Олар жабылсын ба?</translation>
 <translation id="257674075312929031">Топ</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Қойындыларды топтастыру үшін оларды сүйреңіз.</translation>
 <translation id="6040143037577758943">Жабу</translation>
 <translation id="6193448654517602979">Қойындыларды таңдау</translation>
+<translation id="6562820390860419811">Қойындыны солға жылжыту</translation>
 <translation id="6615455863669487791">Маған көрсету</translation>
 <translation id="6840760312327750441">Қойындыларды топтау үшін қойындыны түртіп, ұстап тұрыңыз. Одан кейін басқа қойындыға сүйреңіз.</translation>
 <translation id="7151209024774799310">Қойындыларды топтан өшіру</translation>
 <translation id="7559245342362162951">Топ қойындыларын толық экранда тор түрінде көрсету</translation>
 <translation id="7792771145871471484">Ұсыныстарды көріңіз.</translation>
+<translation id="7885132941432959125">Қойындыны оңға жылжыту</translation>
 <translation id="7966321538264951561">Ұсыныстарды қабылдамау.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Таңдалған <ph name="TABS_COUNT_ONE" /> қойындыны жабу}other{Таңдалған <ph name="TABS_COUNT_MANY" /> қойындыны жабу}}</translation>
 <translation id="9150694013019234766">Экранның төменгі жағындағы қойындылар тобында қойындылар арасында ауысуға болады.</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_kn.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_kn.xtb
index 1175497..647a0190 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_kn.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_kn.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106">ನೀವು ಈ ನಡುವೆ ಬಳಸದ <ph name="NUMBER_OF_TABS" /> ಟ್ಯಾಬ್‌ಗಳಿವೆ. ಅವುಗಳನ್ನು ಮುಚ್ಚುವುದೇ?</translation>
 <translation id="1181037720776840403">ತೆಗೆದುಹಾಕು</translation>
 <translation id="125153950246128346">ಇನ್ನೊಂದು ಟ್ಯಾಬ್ ನೋಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ</translation>
+<translation id="1657719826150349398">ಟ್ಯಾಬ್ ಅನ್ನು ಕೆಳಕ್ಕೆ ಸರಿಸಿ</translation>
+<translation id="1778290789805128794">ಟ್ಯಾಬ್ ಅನ್ನು ಮೇಲಕ್ಕೆ ಸರಿಸಿ</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> ಟ್ಯಾಬ್}one{<ph name="TABS_COUNT_MANY" /> ಟ್ಯಾಬ್‌ಗಳು}other{<ph name="TABS_COUNT_MANY" /> ಟ್ಯಾಬ್‌ಗಳು}}</translation>
 <translation id="2569352796411618312">ಸಲಹೆ: ನೀವು ಈ ನಡುವೆ ಬಳಸದ <ph name="NUMBER_OF_TABS" /> ಟ್ಯಾಬ್‌ಗಳಿವೆ. ಅವುಗಳನ್ನು ಮುಚ್ಚಬೇಕೆ?</translation>
 <translation id="257674075312929031">ಗುಂಪು</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">ಟ್ಯಾಬ್‍‍ಗಳನ್ನು ಗುಂಪು ಮಾಡಲು ಅವುಗಳನ್ನು ಡ್ರ್ಯಾಗ್ ಮಾಡಿ</translation>
 <translation id="6040143037577758943">ಮುಚ್ಚಿರಿ</translation>
 <translation id="6193448654517602979">ಟ್ಯಾಬ್‌ಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ</translation>
+<translation id="6562820390860419811">ಟ್ಯಾಬ್ ಅನ್ನು ಎಡಕ್ಕೆ ಸರಿಸಿ</translation>
 <translation id="6615455863669487791">ನನಗೆ ತೋರಿಸಿ</translation>
 <translation id="6840760312327750441">ಟ್ಯಾಬ್‌ಗಳನ್ನು ಗುಂಪು ಮಾಡಲು , ಟ್ಯಾಬ್ ಒಂದನ್ನು ಸ್ಪರ್ಶಿಸಿ ಮತ್ತು ಹೋಲ್ಡ್‌ ಮಾಡಿ. ನಂತರ, ಅದನ್ನು ಮತ್ತೊಂದು ಟ್ಯಾಬ್‌ನ ಮೇಲೆ ಡ್ರ್ಯಾಗ್ ಮಾಡಿ.</translation>
 <translation id="7151209024774799310">ಗುಂಪಿನಿಂದ ಟ್ಯಾಬ್‌ಗಳನ್ನು ತೆಗೆದುಹಾಕಿ</translation>
 <translation id="7559245342362162951">ಗುಂಪಿನ ಟ್ಯಾಬ್‌ಗಳನ್ನು ಪೂರ್ಣ ಸ್ಕ್ರೀನ್‌ ಗ್ರಿಡ್‌ನಲ್ಲಿ ತೋರಿಸಿ</translation>
 <translation id="7792771145871471484">ಸಲಹೆಗಳನ್ನು ಪರಿಶೀಲಿಸಿ.</translation>
+<translation id="7885132941432959125">ಟ್ಯಾಬ್ ಅನ್ನು ಬಲಕ್ಕೆ ಸರಿಸಿ</translation>
 <translation id="7966321538264951561">ಸಲಹೆಗಳನ್ನು ವಜಾಗೊಳಿಸಿ.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{ಆಯ್ಕೆಮಾಡಿದ <ph name="TABS_COUNT_ONE" /> ಟ್ಯಾಬ್ ಅನ್ನು ಮುಚ್ಚಿರಿ}one{ಆಯ್ಕೆಮಾಡಿದ <ph name="TABS_COUNT_MANY" /> ಟ್ಯಾಬ್‌ಗಳನ್ನು ಮುಚ್ಚಿರಿ}other{ಆಯ್ಕೆಮಾಡಿದ <ph name="TABS_COUNT_MANY" /> ಟ್ಯಾಬ್‌ಗಳನ್ನು ಮುಚ್ಚಿರಿ}}</translation>
 <translation id="9150694013019234766">ಸ್ಕ್ರೀನ್‌ನ ಕೆಳಭಾಗದಲ್ಲಿರುವ ನಿಮ್ಮ ಟ್ಯಾಬ್ ಗುಂಪಿನಲ್ಲಿರುವ ಟ್ಯಾಬ್‌ಗಳ ನಡುವೆ ಬದಲಾಯಿಸಿ</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ko.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ko.xtb
index a4e15ce..2d44e77 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ko.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ko.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106"><ph name="NUMBER_OF_TABS" />개의 탭을 최근 사용하지 않았습니다. 탭을 닫을까요?</translation>
 <translation id="1181037720776840403">삭제</translation>
 <translation id="125153950246128346">다른 탭을 보려면 탭하세요.</translation>
+<translation id="1657719826150349398">탭을 아래로 이동</translation>
+<translation id="1778290789805128794">탭을 상단으로 이동</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{탭 <ph name="TABS_COUNT_ONE" />개}other{탭 <ph name="TABS_COUNT_MANY" />개}}</translation>
 <translation id="2569352796411618312">추천: 최근 사용하지 않은 탭이 <ph name="NUMBER_OF_TABS" />개 있습니다. 탭을 닫으시겠습니까?</translation>
 <translation id="257674075312929031">그룹</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">탭을 드래그하여 그룹화하세요.</translation>
 <translation id="6040143037577758943">닫기</translation>
 <translation id="6193448654517602979">탭 선택</translation>
+<translation id="6562820390860419811">탭을 왼쪽으로 이동</translation>
 <translation id="6615455863669487791">표시</translation>
 <translation id="6840760312327750441">탭을 그룹화하려면 탭을 길게 터치한 다음 다른 탭으로 드래그하세요.</translation>
 <translation id="7151209024774799310">그룹에서 탭 삭제</translation>
 <translation id="7559245342362162951">그룹 탭을 전체화면 그리드로 표시</translation>
 <translation id="7792771145871471484">추천을 검토합니다.</translation>
+<translation id="7885132941432959125">탭을 오른쪽으로 이동</translation>
 <translation id="7966321538264951561">추천을 닫습니다.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{선택된 탭 <ph name="TABS_COUNT_ONE" />개 닫기}other{선택된 탭 <ph name="TABS_COUNT_MANY" />개 닫기}}</translation>
 <translation id="9150694013019234766">화면 하단의 탭 그룹에서 탭 간 전환</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ky.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ky.xtb
index d747ba5..55bb1e1 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ky.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ky.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106">Өтмөктөрүңүздүн <ph name="NUMBER_OF_TABS" /> акыркы убакта колдонулган жок. Алар жабылсынбы?</translation>
 <translation id="1181037720776840403">Алып салуу</translation>
 <translation id="125153950246128346">Башка өтмөктү көрүү үчүн, таптап коюңуз</translation>
+<translation id="1657719826150349398">Өтмөктү төмөн жылдыруу</translation>
+<translation id="1778290789805128794">Өтмөктү жогору жылдыруу</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> өтмөк}other{<ph name="TABS_COUNT_MANY" /> өтмөк}}</translation>
 <translation id="2569352796411618312">Сунуш: Өтмөктөрүңүздүн <ph name="NUMBER_OF_TABS" /> акыркы убакта колдонулган жок. Алар жабылсынбы?</translation>
 <translation id="257674075312929031">Топ</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Топтоо үчүн өтмөктөрдү сүйрөп келиңиз</translation>
 <translation id="6040143037577758943">Жабуу</translation>
 <translation id="6193448654517602979">Өтмөктөрдү тандоо</translation>
+<translation id="6562820390860419811">Өтмөктү солго жылдыруу</translation>
 <translation id="6615455863669487791">Көрсөтчү гана</translation>
 <translation id="6840760312327750441">Өтмөктөрдү топко кошуу үчүн алардын бирин басып кармап туруңуз. Андан кийин аны башка өтмөккө сүйрөңүз.</translation>
 <translation id="7151209024774799310">Топтогу өтмөктөрдү алып салуу</translation>
 <translation id="7559245342362162951">Топтун өтмөктөрүн толук экрандагы торчодо көрсөтүү</translation>
 <translation id="7792771145871471484">Сунуштарды карап чыгуу.</translation>
+<translation id="7885132941432959125">Өтмөктү оңго жылдыруу</translation>
 <translation id="7966321538264951561">Сунушту жабуу.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Тандалган <ph name="TABS_COUNT_ONE" /> өтмөктү жабуу}other{Тандалган <ph name="TABS_COUNT_MANY" /> өтмөктү жабуу}}</translation>
 <translation id="9150694013019234766">Экраныңыздын ылдый жагында жайгашкан өтмөктөрдүн тобунан өтмөктөрүңүздү которуштуруңуз</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_lo.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_lo.xtb
index 0b96f07..f7d6ce78 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_lo.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_lo.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106">ທ່ານບໍ່ໄດ້ໃຊ້ແຖບ <ph name="NUMBER_OF_TABS" /> ແຖບມາໄລຍະໜຶ່ງແລ້ວ. ປິດພວກມັນບໍ?</translation>
 <translation id="1181037720776840403">ລຶບອອກ</translation>
 <translation id="125153950246128346">ແຕະເພື່ອເບິ່ງແຖບອື່ນ</translation>
+<translation id="1657719826150349398">ຍ້າຍແຖບລົງ</translation>
+<translation id="1778290789805128794">ຍ້າຍແຖບໄປເທິງສຸດ</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> ແຖບ}other{<ph name="TABS_COUNT_MANY" /> ແຖບ}}</translation>
 <translation id="2569352796411618312">ການແນະນຳ: ທ່ານບໍ່ໄດ້ໃຊ້ແຖບຂອງທ່ານ <ph name="NUMBER_OF_TABS" /> ແຖບມາໄລຍະໜຶ່ງແລ້ວ. ປິດພວກມັນບໍ?</translation>
 <translation id="257674075312929031">ກຸ່ມ</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">ລາກແຖບເພື່ອຈັດກຸ່ມພວກມັນ</translation>
 <translation id="6040143037577758943">ປິດ</translation>
 <translation id="6193448654517602979">ເລືອກແຖບ</translation>
+<translation id="6562820390860419811">ຍ້າຍແຖບໄປຊ້າຍ</translation>
 <translation id="6615455863669487791">ສະ​ແດງຂ້ອຍ</translation>
 <translation id="6840760312327750441">ເພື່ອຈັດກຸ່ມແຖບ, ແຕະແຖບໃດໜຶ່ງຄ້າງໄວ້. ຈາກນັ້ນ, ລາກມັນໄປໃສ່ແຖບອື່ນ.</translation>
 <translation id="7151209024774799310">ລຶບແຖບອອກຈາກກຸ່ມ</translation>
 <translation id="7559245342362162951">ສະແດງແຖບຂອງກຸ່ມໃນຕາໜ່າງແບບເຕັມຈໍ</translation>
 <translation id="7792771145871471484">ກວດເບິ່ງການແນະນຳ.</translation>
+<translation id="7885132941432959125">ຍ້າຍແຖບໄປເບື້ອງຂວາ</translation>
 <translation id="7966321538264951561">ປິດການແນະນຳໄວ້.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{ປິດ <ph name="TABS_COUNT_ONE" /> ແຖບທີ່ເລືອກ}other{ປິດ <ph name="TABS_COUNT_MANY" /> ແຖບທີ່ເລືອກ}}</translation>
 <translation id="9150694013019234766">ປ່ຽນໄປມາລະຫວ່າງແຖບຕ່າງໆໃນກຸ່ມແຖບຂອງທ່ານຢູ່ໃກ້ລຸ່ມສຸດຂອງໜ້າຈໍ</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_lt.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_lt.xtb
index de33ea19..936c34ce 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_lt.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_lt.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106">Pastaruoju metu nebuvo naudojama tiek skirtukų: <ph name="NUMBER_OF_TABS" />. Uždaryti juos?</translation>
 <translation id="1181037720776840403">Pašalinti</translation>
 <translation id="125153950246128346">Palieskite, kad peržiūrėtumėte kitą skirtuką</translation>
+<translation id="1657719826150349398">Perkelti skirtuką į apačią</translation>
+<translation id="1778290789805128794">Perkelti skirtuką į viršų</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> skirtukas}one{<ph name="TABS_COUNT_MANY" /> skirtukas}few{<ph name="TABS_COUNT_MANY" /> skirtukai}many{<ph name="TABS_COUNT_MANY" /> skirtuko}other{<ph name="TABS_COUNT_MANY" /> skirtukų}}</translation>
 <translation id="2569352796411618312">Pasiūlymas: pastaruoju metu nebuvo naudojama <ph name="NUMBER_OF_TABS" /> skirtuk. Uždaryti juos?</translation>
 <translation id="257674075312929031">Grupė</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Vilkite skirtukus, kad juos sugrupuotumėte</translation>
 <translation id="6040143037577758943">Uždaryti</translation>
 <translation id="6193448654517602979">Pasirinkti skirtukus</translation>
+<translation id="6562820390860419811">Perkelti skirtuką į kairę</translation>
 <translation id="6615455863669487791">Rodyti</translation>
 <translation id="6840760312327750441">Norėdami grupuoti skirtukus, palieskite ir palaikykite skirtuką. Tada nuvilkite jį į kitą skirtuką.</translation>
 <translation id="7151209024774799310">Pašalinti skirtukus iš grupės</translation>
 <translation id="7559245342362162951">Rodyti grupės skirtukus viso ekrano tinklelyje</translation>
 <translation id="7792771145871471484">Peržiūrėkite pasiūlymus.</translation>
+<translation id="7885132941432959125">Perkelti skirtuką į dešinę</translation>
 <translation id="7966321538264951561">Atsisakyti pasiūlymo.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Uždaryti <ph name="TABS_COUNT_ONE" /> pasirinktą skirtuką}one{Uždaryti <ph name="TABS_COUNT_MANY" /> pasirinktą skirtuką}few{Uždaryti <ph name="TABS_COUNT_MANY" /> pasirinktus skirtukus}many{Uždaryti <ph name="TABS_COUNT_MANY" /> pasirinkto skirtuko}other{Uždaryti <ph name="TABS_COUNT_MANY" /> pasirinktų skirtukų}}</translation>
 <translation id="9150694013019234766">Skirtukus perjunkite skirtukų grupėje netoli ekrano apačios</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_lv.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_lv.xtb
index 4efcaaf..3b2778d 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_lv.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_lv.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106">Vairākas cilnes pēdējā laikā nav izmantotas (kopā <ph name="NUMBER_OF_TABS" />). Vai vēlaties tās aizvērt?</translation>
 <translation id="1181037720776840403">Noņemt</translation>
 <translation id="125153950246128346">Pieskarieties, lai skatītu citu cilni</translation>
+<translation id="1657719826150349398">Pārvietot cilni uz leju</translation>
+<translation id="1778290789805128794">Pārvietot cilni augšpusē</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> cilne}zero{<ph name="TABS_COUNT_MANY" /> cilnes}one{<ph name="TABS_COUNT_MANY" /> cilne}other{<ph name="TABS_COUNT_MANY" /> cilnes}}</translation>
 <translation id="2569352796411618312">Ieteikums: vairākas cilnes pēdējā laikā nav izmantotas (kopā <ph name="NUMBER_OF_TABS" />). Vai vēlaties tās aizvērt?</translation>
 <translation id="257674075312929031">Grupa</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Velciet cilnes, lai tās sagrupētu</translation>
 <translation id="6040143037577758943">Aizvērt</translation>
 <translation id="6193448654517602979">Atlasiet cilnes</translation>
+<translation id="6562820390860419811">Pārvietot cilni pa kreisi</translation>
 <translation id="6615455863669487791">Rādīt man</translation>
 <translation id="6840760312327750441">Lai sagrupētu cilnes, pieskarieties cilnei un turiet to. Pēc tam velciet to uz citas cilnes.</translation>
 <translation id="7151209024774799310">Noņemt cilnes no grupas</translation>
 <translation id="7559245342362162951">Rādīt grupas cilnes pilnekrāna režģī</translation>
 <translation id="7792771145871471484">Pārskatīt ieteikumus.</translation>
+<translation id="7885132941432959125">Pārvietot cilni pa labi</translation>
 <translation id="7966321538264951561">Nerādīt ieteikumus.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Aizvērt atlasīto cilni (skaits: <ph name="TABS_COUNT_ONE" />)}zero{Aizvērt atlasītās cilnes (skaits: <ph name="TABS_COUNT_MANY" />)}one{Aizvērt atlasītās cilnes (skaits: <ph name="TABS_COUNT_MANY" />)}other{Aizvērt atlasītās cilnes (skaits: <ph name="TABS_COUNT_MANY" />)}}</translation>
 <translation id="9150694013019234766">Pārslēdziet cilnes savā ciļņu grupā ekrāna apakšdaļā.</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_mk.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_mk.xtb
index fa688cab..3b35ff56 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_mk.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_mk.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106"><ph name="NUMBER_OF_TABS" /> ваши картички не се користени во последно време. Дали да се затворат?</translation>
 <translation id="1181037720776840403">Отстрани</translation>
 <translation id="125153950246128346">Допрете за да видите друга картичка</translation>
+<translation id="1657719826150349398">Премести ја картичката надолу</translation>
+<translation id="1778290789805128794">Премести ја картичката погоре</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> картичка}one{<ph name="TABS_COUNT_MANY" /> картичка}other{<ph name="TABS_COUNT_MANY" /> картички}}</translation>
 <translation id="2569352796411618312">Предлог: <ph name="NUMBER_OF_TABS" /> ваши картички не се користени во последно време. Дали да се затворат?</translation>
 <translation id="257674075312929031">Група</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Повлечете ги картичките за ги групирате</translation>
 <translation id="6040143037577758943">Затвори</translation>
 <translation id="6193448654517602979">Изберете картички</translation>
+<translation id="6562820390860419811">Премести ја картичката налево</translation>
 <translation id="6615455863669487791">Покажи ми</translation>
 <translation id="6840760312327750441">За групирање на картичките, допрете и задржете една картичка. Потоа, повлечете ја врз друга картичка.</translation>
 <translation id="7151209024774799310">Отстранете картички од групата</translation>
 <translation id="7559245342362162951">Прикажи ги картичките од групата во табела на цел екран</translation>
 <translation id="7792771145871471484">Прегледајте ги предлозите.</translation>
+<translation id="7885132941432959125">Премести ја картичката надесно</translation>
 <translation id="7966321538264951561">Отфрли ги предлозите.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Затвори <ph name="TABS_COUNT_ONE" /> избрана картичка}one{Затвори <ph name="TABS_COUNT_MANY" /> избрана картичка}other{Затвори <ph name="TABS_COUNT_MANY" /> избрани картички}}</translation>
 <translation id="9150694013019234766">Префрлајте се од една на друга картичка во групата со картички најдолу на екранот</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_mn.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_mn.xtb
index 95d36782..b99703b 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_mn.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_mn.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106">Таны табуудаас <ph name="NUMBER_OF_TABS" />-г нь сүүлийн үед ашиглаагүй байна. Тэдгээрийг хаах уу?</translation>
 <translation id="1181037720776840403">Хасах</translation>
 <translation id="125153950246128346">Өөр табыг харахын тулд товшино уу</translation>
+<translation id="1657719826150349398">Табыг доош зөөх</translation>
+<translation id="1778290789805128794">Табыг дээд хэсэг рүү зөөх</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> таб}other{<ph name="TABS_COUNT_MANY" /> таб}}</translation>
 <translation id="2569352796411618312">Зөвлөмж: Таны табуудаас <ph name="NUMBER_OF_TABS" />-г нь сүүлийн үед ашиглаагүй байна. Тэдгээрийг хаах уу?</translation>
 <translation id="257674075312929031">Бүлэг</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Бүлэглэхийн тулд табыг чирж зөөнө үү</translation>
 <translation id="6040143037577758943">Хаах</translation>
 <translation id="6193448654517602979">Таб сонгох</translation>
+<translation id="6562820390860419811">Табыг зүүн тийш зөөх</translation>
 <translation id="6615455863669487791">Надад үзүүлнэ үү</translation>
 <translation id="6840760312327750441">Табуудыг бүлэглэхийн тулд таб дээр хүрээд, удаан дарна уу. Тэгээд уг табыг нөгөө рүү нь чирж зөөнө үү.</translation>
 <translation id="7151209024774799310">Бүлгээс табыг хасах</translation>
 <translation id="7559245342362162951">Бүлгийн табуудыг бүтэн дэлгэцийн торонд харуулах</translation>
 <translation id="7792771145871471484">Зөвлөмжийг шалгах.</translation>
+<translation id="7885132941432959125">Табыг баруун тийш зөөх</translation>
 <translation id="7966321538264951561">Зөвлөмжийг үл хэрэгсэх.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Сонгосон <ph name="TABS_COUNT_ONE" /> табыг хаах}other{Сонгосон <ph name="TABS_COUNT_MANY" /> табыг хаах}}</translation>
 <translation id="9150694013019234766">Дэлгэцийн доод хэсгийн ойролцоо байгаа табын бүлгээсээ таб хооронд сэлгэнэ үү</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ms.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ms.xtb
index c31774a..1bad3dd 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ms.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ms.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106"><ph name="NUMBER_OF_TABS" /> daripada tab anda sudah lama tidak digunakan. Tutup tab?</translation>
 <translation id="1181037720776840403">Alih keluar</translation>
 <translation id="125153950246128346">Ketik untuk melihat tab lain</translation>
+<translation id="1657719826150349398">Alihkan tab ke bawah</translation>
+<translation id="1778290789805128794">Alihkan tab ke atas</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> tab}other{<ph name="TABS_COUNT_MANY" /> tab}}</translation>
 <translation id="2569352796411618312">Cadangan: <ph name="NUMBER_OF_TABS" /> daripada tab anda sudah lama tidak digunakan. Tutup tab?</translation>
 <translation id="257674075312929031">Kumpulan</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Seret tab untuk menghimpunkannya</translation>
 <translation id="6040143037577758943">Tutup</translation>
 <translation id="6193448654517602979">Pilih tab</translation>
+<translation id="6562820390860419811">Alihkan tab ke kiri</translation>
 <translation id="6615455863669487791">Tunjukkan kepada saya</translation>
 <translation id="6840760312327750441">Untuk menghimpunkan tab, sentuh &amp; tahan tab. Kemudian, seret tab itu ke tab lain.</translation>
 <translation id="7151209024774799310">Alih keluar tab daripada kumpulan</translation>
 <translation id="7559245342362162951">Tunjukkan tab kumpulan dalam grid skrin penuh</translation>
 <translation id="7792771145871471484">Semak cadangan.</translation>
+<translation id="7885132941432959125">Alihkan tab ke kanan</translation>
 <translation id="7966321538264951561">Tolak cadangan.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Tutup <ph name="TABS_COUNT_ONE" /> tab yang dipilih}other{Tutup <ph name="TABS_COUNT_MANY" /> tab yang dipilih}}</translation>
 <translation id="9150694013019234766">Beralih antara tab dalam kumpulan tab anda berhampiran bahagian bawah skrin</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_my.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_my.xtb
index c33a624..d7ebb9c 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_my.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_my.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106">သင်၏တဘ် <ph name="NUMBER_OF_TABS" /> ခုကို နောက်ပိုင်းတွင် အသုံးပြုမထားပါ။ ၎င်းတို့ကို ပိတ်မလား။</translation>
 <translation id="1181037720776840403">ဖယ်ရှားရန်</translation>
 <translation id="125153950246128346">နောက်တဘ်တစ်ခုကြည့်ရန် တို့ပါ</translation>
+<translation id="1657719826150349398">တဘ်ကို အောက်သို့ ရွှေ့ရန်</translation>
+<translation id="1778290789805128794">တဘ်ကို အပေါ်ဆုံးသို့ ရွှေ့ရန်</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{တဘ် <ph name="TABS_COUNT_ONE" /> ခု}other{တဘ် <ph name="TABS_COUNT_MANY" /> ခု}}</translation>
 <translation id="2569352796411618312">အကြံပြုချက်- သင်၏တဘ် <ph name="NUMBER_OF_TABS" /> ခုကို အခုတစ်လော အသုံးပြုမထားပါ။ ၎င်းတို့ကို ပိတ်မလား။</translation>
 <translation id="257674075312929031">အုပ်စု</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">တဘ်များကို အုပ်စုဖွဲ့ရန် ၎င်းတို့ကို ဖိဆွဲပါ</translation>
 <translation id="6040143037577758943">ပိတ်ရန်</translation>
 <translation id="6193448654517602979">တဘ်များ ရွေးချယ်ရန်</translation>
+<translation id="6562820390860419811">တဘ်ကို ဘယ်ဘက်သို့ ရွှေ့ရန်</translation>
 <translation id="6615455863669487791">ပြရန်</translation>
 <translation id="6840760312327750441">တဘ်များကို အုပ်စုဖွဲ့ရန် တဘ်တစ်ခုကို တို့ထိ၍ ဖိထားပါ။ ထို့နောက် ၎င်းကို နောက်တဘ်တစ်ခုပေါ်သို့ ဖိဆွဲပါ။</translation>
 <translation id="7151209024774799310">အုပ်စုမှ တဘ်များကို ဖယ်ရှားရန်</translation>
 <translation id="7559245342362162951">မျက်နှာပြင်ပြည့် ဇယားကွက်အတွင်း အုပ်စု၏ တဘ်များကို ပြရန်</translation>
 <translation id="7792771145871471484">အကြံပြုချက်များကို စစ်ဆေးရန်။</translation>
+<translation id="7885132941432959125">တဘ်ကို ညာဘက်သို့ ရွှေ့ရန်</translation>
 <translation id="7966321538264951561">အကြံပြုချက်များကို ပယ်ပါ။</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{ရွေးထားသည့် တဘ် <ph name="TABS_COUNT_ONE" /> ခုကို ပိတ်ရန်}other{ရွေးထားသည့် တဘ် <ph name="TABS_COUNT_MANY" /> ခုကို ပိတ်ရန်}}</translation>
 <translation id="9150694013019234766">မျက်နှာပြင်အောက်ခြေနားရှိ သင်၏ တဘ်အုပ်စုအတွင်း တဘ်တစ်ခုမှတစ်ခုသို့ ပြောင်းပါ</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ne.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ne.xtb
index b3789f55..fc205f5 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ne.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ne.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106">तपाईंले केही समय यता आफ्ना <ph name="NUMBER_OF_TABS" /> वटा ट्याबहरू प्रयोग गर्नुभएको छैन। तिनलाई बन्द गर्ने हो?</translation>
 <translation id="1181037720776840403">हटाउनुहोस्</translation>
 <translation id="125153950246128346">अर्को ट्याब हेर्न ट्याप गर्नुहोस्</translation>
+<translation id="1657719826150349398">ट्याब सारेर तल लैजानुहोस्</translation>
+<translation id="1778290789805128794">ट्याब सारेर सिरानमा लैजानुहोस्</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> ट्याब}other{<ph name="TABS_COUNT_MANY" /> ट्याबहरू}}</translation>
 <translation id="2569352796411618312">सुझाव: तपाईंले केही समय यता आफ्ना <ph name="NUMBER_OF_TABS" /> वटा ट्याबहरू प्रयोग गर्नुभएको छैन। तिनलाई बन्द गर्ने हो?</translation>
 <translation id="257674075312929031">समूह</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">ट्याबहरूलाई समूहबद्ध गर्न तिनीहरूलाई ड्र्याग गर्नुहोस्</translation>
 <translation id="6040143037577758943">बन्द गर्नुहोस्</translation>
 <translation id="6193448654517602979">ट्याबहरू चयन गर्नुहोस्</translation>
+<translation id="6562820390860419811">ट्याब सारेर बायाँतिर लैजानुहोस्</translation>
 <translation id="6615455863669487791">मलाई देखाउनुहोस्</translation>
 <translation id="6840760312327750441">ट्याबहरू समूहबद्ध गर्न कुनै ट्याबमा छोइराख्नुहोस्। त्यसपछि, त्यसलाई ड्र्याग गरी अर्को ट्याबमा लैजानुहोस्।</translation>
 <translation id="7151209024774799310">समूहबाट ट्याबहरू हटाउनुहोस्</translation>
 <translation id="7559245342362162951">समूहका ट्याबहरूलाई पूर्ण स्क्रिन ग्रिडमा देखाउनुहोस्</translation>
 <translation id="7792771145871471484">सुझावहरूको समीक्षा गर्नुहोस्।</translation>
+<translation id="7885132941432959125">ट्याब सारेर दायाँतिर लैजानुहोस्</translation>
 <translation id="7966321538264951561">सिफारिसहरू खारेज गर्नुहोस्।</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{चयन गरिएको <ph name="TABS_COUNT_ONE" /> ट्याब बन्द गर्नुहोस्}other{चयन गरिएका <ph name="TABS_COUNT_MANY" /> ट्याबहरू बन्द गर्नुहोस्}}</translation>
 <translation id="9150694013019234766">स्क्रिनको फेद नजिकैबाट आफ्नो ट्याब समूहका ट्याबहरूको अदलबदल गर्नुहोस्</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_no.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_no.xtb
index 5ed7483..e69a9ccb 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_no.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_no.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106"><ph name="NUMBER_OF_TABS" /> av fanene dine er ikke brukt i det siste. Vil du lukke dem?</translation>
 <translation id="1181037720776840403">Fjern</translation>
 <translation id="125153950246128346">Trykk for å se en annen fane</translation>
+<translation id="1657719826150349398">Flytt fanen nedover</translation>
+<translation id="1778290789805128794">Flytt fanen oppover</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> fane}other{<ph name="TABS_COUNT_MANY" /> faner}}</translation>
 <translation id="2569352796411618312">Forslag: <ph name="NUMBER_OF_TABS" /> av fanene dine er ikke brukt i det siste. Vil du lukke dem?</translation>
 <translation id="257674075312929031">Gruppe</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Dra faner for å gruppere dem</translation>
 <translation id="6040143037577758943">Lukk</translation>
 <translation id="6193448654517602979">Velg faner</translation>
+<translation id="6562820390860419811">Flytt fanen mot venstre</translation>
 <translation id="6615455863669487791">Vis meg</translation>
 <translation id="6840760312327750441">For å gruppere faner, trykk og hold på en fane. Dra den deretter oppå en annen fane.</translation>
 <translation id="7151209024774799310">Fjern faner fra gruppen</translation>
 <translation id="7559245342362162951">Vis gruppens faner i fullskjermrutenett</translation>
 <translation id="7792771145871471484">Gjennomgå forslagene.</translation>
+<translation id="7885132941432959125">Flytt fanen mot høyre</translation>
 <translation id="7966321538264951561">Avvis forslagene.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Lukk <ph name="TABS_COUNT_ONE" /> valgt fane}other{Lukk <ph name="TABS_COUNT_MANY" /> valgte faner}}</translation>
 <translation id="9150694013019234766">Bytt mellom faner i fanegruppen på nedre del av skjermen</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_or.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_or.xtb
index 3f1cc43..84ac15e8 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_or.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_or.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106">ଆପଣଙ୍କର <ph name="NUMBER_OF_TABS" />ଟି ଟାବ୍ ନିକଟରେ ବ୍ୟବହୃତ ହୋଇନାହିଁ। ସେଗୁଡ଼ିକୁ ବନ୍ଦ କରିବେ?</translation>
 <translation id="1181037720776840403">ଅପସାରଣ</translation>
 <translation id="125153950246128346">ଅନ୍ୟଏକ ଟାବ୍ ଦେଖିବା ପାଇଁ ଟାପ୍ କରନ୍ତୁ</translation>
+<translation id="1657719826150349398">ଟାବ୍‍କୁ ତଳକୁ ମୁଭ୍ କରନ୍ତୁ</translation>
+<translation id="1778290789805128794">ଟାବ୍‍ର ଶୀର୍ଷଭାଗକୁ ମୁଭ୍ କରନ୍ତୁ</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" />ଟି ଟାବ୍}other{<ph name="TABS_COUNT_MANY" />ଟି ଟାବ୍}}</translation>
 <translation id="2569352796411618312">ପ୍ରସ୍ତାବ: ଆପଣଙ୍କର <ph name="NUMBER_OF_TABS" />ଟି ଟାବ୍ ନିକଟରେ ବ୍ୟବହୃତ ହୋଇନାହିଁ। ସେଗୁଡ଼ିକୁ ବନ୍ଦ କରିବେ?</translation>
 <translation id="257674075312929031">ଗୋଷ୍ଠୀ</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">ସେଗୁଡ଼ିକର ଗୋଷ୍ଠୀ କରିବାକୁ ଟାବ୍‌ଗୁଡ଼ିକୁ ଟାଣନ୍ତୁ</translation>
 <translation id="6040143037577758943">ବନ୍ଦ</translation>
 <translation id="6193448654517602979">ଟାବ୍‌ଗୁଡ଼ିକ ବାଛନ୍ତୁ</translation>
+<translation id="6562820390860419811">ଟାବ୍‍କୁ ବାମକୁ ମୁଭ୍ କରନ୍ତୁ</translation>
 <translation id="6615455863669487791">ମୋତେ ଦେଖାନ୍ତୁ</translation>
 <translation id="6840760312327750441">ଟାବ୍‌ଗୁଡ଼ିକର ଗୋଷ୍ଠୀ କରିବାକୁ, ଗୋଟିଏ ଟାବ୍ ଦାବି ଧରନ୍ତୁ। ଏହା ପରେ, ଏହାକୁ ଅନ୍ୟ ଏକ ଟାବ୍‍କୁ ଟାଣନ୍ତୁ</translation>
 <translation id="7151209024774799310">ଗୋଷ୍ଠୀରୁ ଟାବ୍‍ଗୁଡ଼ିକୁ କାଢ଼ି ଦିଅନ୍ତୁ</translation>
 <translation id="7559245342362162951">ପୂର୍ଣ୍ଣ ସ୍କ୍ରିନ୍‌ ଗ୍ରୀଡ୍‌ରେ ଗୋଷ୍ଠୀର ଟାବ୍‌ଗୁଡ଼ିକ ଦେଖାନ୍ତୁ</translation>
 <translation id="7792771145871471484">ପ୍ରସ୍ତାବଗୁଡ଼ିକର ସମୀକ୍ଷା କରନ୍ତୁ।</translation>
+<translation id="7885132941432959125">ଟାବ୍‍କୁ ଡାହାଣକୁ ମୁଭ୍ କରନ୍ତୁ</translation>
 <translation id="7966321538264951561">ପ୍ରସ୍ତାବଗୁଡ଼ିକୁ ଖାରଜ କରନ୍ତୁ।</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" />ଟି ଚୟନିତ ଟାବ୍ ବନ୍ଦ କରନ୍ତୁ}other{<ph name="TABS_COUNT_MANY" />ଟି ଚୟନିତ ଟାବ୍ ବନ୍ଦ କରନ୍ତୁ}}</translation>
 <translation id="9150694013019234766">ସ୍କ୍ରିନ୍‌ର ତଳପାର୍ଶ୍ୱରେ ଥିବା ଗୋଷ୍ଠୀ ଟାବ୍‌ରେ ଟାବ୍‌ଗୁଡ଼ିକ ମଧ୍ୟରେ ସ୍ୱିଚ୍‌ କରନ୍ତୁ</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_pl.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_pl.xtb
index 560ab79b..68e31629 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_pl.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_pl.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106">Karty, które ostatnio nie były używane: <ph name="NUMBER_OF_TABS" />. Zamknąć je?</translation>
 <translation id="1181037720776840403">Usuń</translation>
 <translation id="125153950246128346">Kliknij, by zobaczyć inną kartę</translation>
+<translation id="1657719826150349398">Przesuń kartę w dół</translation>
+<translation id="1778290789805128794">Przenieś kartę wyżej</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> karta}few{<ph name="TABS_COUNT_MANY" /> karty}many{<ph name="TABS_COUNT_MANY" /> kart}other{<ph name="TABS_COUNT_MANY" /> karty}}</translation>
 <translation id="2569352796411618312">Sugestia: od jakiegoś czasu nie używasz <ph name="NUMBER_OF_TABS" /> kart. Zamknąć je?</translation>
 <translation id="257674075312929031">Grupa</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Przeciągaj karty, by je pogrupować</translation>
 <translation id="6040143037577758943">Zamknij</translation>
 <translation id="6193448654517602979">Wybierz karty</translation>
+<translation id="6562820390860419811">Przenieś kartę w lewo</translation>
 <translation id="6615455863669487791">Pokaż mi</translation>
 <translation id="6840760312327750441">Aby pogrupować karty, naciśnij i przytrzymaj jedną z nich. Następnie przeciągnij ją na inną kartę.</translation>
 <translation id="7151209024774799310">Usuń karty z grupy</translation>
 <translation id="7559245342362162951">Pokazuj karty grupy na siatce pełnego ekranu</translation>
 <translation id="7792771145871471484">Sprawdź sugestie.</translation>
+<translation id="7885132941432959125">Przenieś kartę w prawo</translation>
 <translation id="7966321538264951561">Zamknij sugestie.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Zamknij <ph name="TABS_COUNT_ONE" /> wybraną kartę}few{Zamknij <ph name="TABS_COUNT_MANY" /> wybrane karty}many{Zamknij <ph name="TABS_COUNT_MANY" /> wybranych kart}other{Zamknij <ph name="TABS_COUNT_MANY" /> wybranej karty}}</translation>
 <translation id="9150694013019234766">W grupie kart w dolnej części ekranu możesz przełączać się między kartami</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_pt-BR.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_pt-BR.xtb
index d924cee..142b77d 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_pt-BR.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_pt-BR.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106"><ph name="NUMBER_OF_TABS" /> das suas guias não foram usadas recentemente. Fechar todas elas?</translation>
 <translation id="1181037720776840403">Remover</translation>
 <translation id="125153950246128346">Toque para ver outra guia</translation>
+<translation id="1657719826150349398">Mover guia para baixo</translation>
+<translation id="1778290789805128794">Mover guia para cima</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> guia}one{<ph name="TABS_COUNT_MANY" /> guia}other{<ph name="TABS_COUNT_MANY" /> guias}}</translation>
 <translation id="2569352796411618312">Sugestão: <ph name="NUMBER_OF_TABS" /> das suas guias não foram usadas recentemente. Fechar todas elas?</translation>
 <translation id="257674075312929031">Grupo</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Arraste as guias para agrupá-las</translation>
 <translation id="6040143037577758943">Fechar</translation>
 <translation id="6193448654517602979">Selecione as guias</translation>
+<translation id="6562820390860419811">Mover guia para a esquerda</translation>
 <translation id="6615455863669487791">Exibir</translation>
 <translation id="6840760312327750441">Para agrupar guias, toque em uma delas e a mantenha pressionada. Depois disso, arraste-a para outra guia.</translation>
 <translation id="7151209024774799310">Remover guias do grupo</translation>
 <translation id="7559245342362162951">Mostrar guias do grupo em grade de tela cheia</translation>
 <translation id="7792771145871471484">Revisar as sugestões.</translation>
+<translation id="7885132941432959125">Mover guia para a direita</translation>
 <translation id="7966321538264951561">Dispensar as sugestões.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Fechar <ph name="TABS_COUNT_ONE" /> guia selecionada}one{Fechar <ph name="TABS_COUNT_MANY" /> guia selecionada}other{Fechar <ph name="TABS_COUNT_MANY" /> guias selecionadas}}</translation>
 <translation id="9150694013019234766">Alterne entre as guias do seu grupo de guias perto da parte inferior da tela</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_pt-PT.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_pt-PT.xtb
index 12a83bb..17e4c39 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_pt-PT.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_pt-PT.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106"><ph name="NUMBER_OF_TABS" /> dos seus separadores não foram utilizados recentemente. Pretende fechá-los?</translation>
 <translation id="1181037720776840403">Remover</translation>
 <translation id="125153950246128346">Toque para ver outro separador.</translation>
+<translation id="1657719826150349398">Mover o separador para baixo</translation>
+<translation id="1778290789805128794">Mover o separador para cima</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> separador}other{<ph name="TABS_COUNT_MANY" /> separadores}}</translation>
 <translation id="2569352796411618312">Sugestão: <ph name="NUMBER_OF_TABS" /> dos seus separadores não foram utilizados recentemente. Pretende fechá-los?</translation>
 <translation id="257674075312929031">Grupo</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Arraste os separadores para os agrupar.</translation>
 <translation id="6040143037577758943">Fechar</translation>
 <translation id="6193448654517602979">Selecione os separadores</translation>
+<translation id="6562820390860419811">Mover o separador para a esquerda</translation>
 <translation id="6615455863669487791">Mostrar</translation>
 <translation id="6840760312327750441">Para agrupar separadores, toque sem soltar num separador. Em seguida, arraste-o para cima de outro separador.</translation>
 <translation id="7151209024774799310">Remover separadores do grupo</translation>
 <translation id="7559245342362162951">Mostrar os separadores do grupo numa grelha em ecrã inteiro</translation>
 <translation id="7792771145871471484">Reveja as sugestões.</translation>
+<translation id="7885132941432959125">Mover separador para a direita</translation>
 <translation id="7966321538264951561">Ignore as sugestões.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Fechar <ph name="TABS_COUNT_ONE" /> separador selecionado}other{Fechar <ph name="TABS_COUNT_MANY" /> separadores selecionados}}</translation>
 <translation id="9150694013019234766">Alterne entre separadores no grupo de separadores junto à parte inferior do ecrã.</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ro.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ro.xtb
index aef2ed8..c844510 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ro.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ro.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106"><ph name="NUMBER_OF_TABS" /> dintre file nu au fost folosite în ultima vreme. Vrei să le închizi?</translation>
 <translation id="1181037720776840403">Elimină</translation>
 <translation id="125153950246128346">Atinge pentru a vedea altă filă</translation>
+<translation id="1657719826150349398">Mută fila mai jos</translation>
+<translation id="1778290789805128794">Mută fila mai sus</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> filă}few{<ph name="TABS_COUNT_MANY" /> file}other{<ph name="TABS_COUNT_MANY" /> de file}}</translation>
 <translation id="2569352796411618312">Sugestie: <ph name="NUMBER_OF_TABS" /> dintre file nu au fost folosite în ultima vreme. Vrei să le închizi?</translation>
 <translation id="257674075312929031">Grup</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Trage filele pentru a le grupa</translation>
 <translation id="6040143037577758943">Închide</translation>
 <translation id="6193448654517602979">Selectează file</translation>
+<translation id="6562820390860419811">Mută fila spre stânga</translation>
 <translation id="6615455863669487791">Afișați</translation>
 <translation id="6840760312327750441">Pentru a grupa filele, atinge lung o filă. Apoi trage-o peste o altă filă.</translation>
 <translation id="7151209024774799310">Elimină file din grup</translation>
 <translation id="7559245342362162951">Arată filele grupului în grilă pe ecran complet</translation>
 <translation id="7792771145871471484">Examinează sugestiile.</translation>
+<translation id="7885132941432959125">Mută fila spre dreapta</translation>
 <translation id="7966321538264951561">Închide sugestiile.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Închide <ph name="TABS_COUNT_ONE" /> filă selectată}few{Închide <ph name="TABS_COUNT_MANY" /> file selectate}other{Închide <ph name="TABS_COUNT_MANY" /> de file selectate}}</translation>
 <translation id="9150694013019234766">Comută între filele din grupul de file în partea de jos a ecranului</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ru.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ru.xtb
index 9a5fb7e..66f4773 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ru.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ru.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106">Вы давно не использовали некоторые вкладки (всего: <ph name="NUMBER_OF_TABS" />). Закрыть их?</translation>
 <translation id="1181037720776840403">Удалить</translation>
 <translation id="125153950246128346">Нажмите, чтобы перейти на другую вкладку</translation>
+<translation id="1657719826150349398">Переместить вкладку вниз</translation>
+<translation id="1778290789805128794">Переместить вкладку вверх</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> вкладка}one{<ph name="TABS_COUNT_MANY" /> вкладка}few{<ph name="TABS_COUNT_MANY" /> вкладки}many{<ph name="TABS_COUNT_MANY" /> вкладок}other{<ph name="TABS_COUNT_MANY" /> вкладки}}</translation>
 <translation id="2569352796411618312">Подсказка: вы давно не использовали некоторые вкладки (всего: <ph name="NUMBER_OF_TABS" />). Закрыть их?</translation>
 <translation id="257674075312929031">Группа.</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Перетаскивайте вкладки, чтобы группировать их</translation>
 <translation id="6040143037577758943">Закрыть</translation>
 <translation id="6193448654517602979">Выберите вкладки</translation>
+<translation id="6562820390860419811">Переместить вкладку влево</translation>
 <translation id="6615455863669487791">Показать</translation>
 <translation id="6840760312327750441">Чтобы сгруппировать вкладки: нажмите и удерживайте одну вкладку, затем перетащите ее на другую.</translation>
 <translation id="7151209024774799310">Удалить вкладки из группы</translation>
 <translation id="7559245342362162951">Показать сетку с вкладками группы на весь экран</translation>
 <translation id="7792771145871471484">Подробнее.</translation>
+<translation id="7885132941432959125">Переместить вкладку вправо</translation>
 <translation id="7966321538264951561">Скрыть подсказки.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Закрыть <ph name="TABS_COUNT_ONE" /> выбранную вкладку}one{Закрыть <ph name="TABS_COUNT_MANY" /> выбранную вкладку}few{Закрыть <ph name="TABS_COUNT_MANY" /> выбранные вкладки}many{Закрыть <ph name="TABS_COUNT_MANY" /> выбранных вкладок}other{Закрыть <ph name="TABS_COUNT_MANY" /> выбранной вкладки}}</translation>
 <translation id="9150694013019234766">В нижней части экрана можно переключаться между вкладками, объединенными в группы</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sl.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sl.xtb
index 3601dd1..29bd1278 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sl.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sl.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106">Toliko zavihkov nedavno niste uporabljali: <ph name="NUMBER_OF_TABS" />. Ali jih želite zapreti?</translation>
 <translation id="1181037720776840403">Odstrani</translation>
 <translation id="125153950246128346">Dotaknite se, če želite prikazati drug zavihek</translation>
+<translation id="1657719826150349398">Premakni zavihek navzdol</translation>
+<translation id="1778290789805128794">Premakni zavihek na vrh</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> zavihek}one{<ph name="TABS_COUNT_MANY" /> zavihek}two{<ph name="TABS_COUNT_MANY" /> zavihka}few{<ph name="TABS_COUNT_MANY" /> zavihki}other{<ph name="TABS_COUNT_MANY" /> zavihkov}}</translation>
 <translation id="2569352796411618312">Predlog: Toliko zavihkov nedavno niste uporabljali: <ph name="NUMBER_OF_TABS" />. Ali jih želite zapreti?</translation>
 <translation id="257674075312929031">Skupina</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Povlecite zavihke, če jih želite združiti v skupino</translation>
 <translation id="6040143037577758943">Zapri</translation>
 <translation id="6193448654517602979">Izberite zavihke</translation>
+<translation id="6562820390860419811">Premakni zavihek v levo</translation>
 <translation id="6615455863669487791">Pokaži mi</translation>
 <translation id="6840760312327750441">Če želite združiti zavihke v skupino, pridržite zavihek. Nato ga povlecite na drug zavihek.</translation>
 <translation id="7151209024774799310">Odstrani zavihke iz skupine</translation>
 <translation id="7559245342362162951">Zavihke skupine pokaži v celozaslonski mreži</translation>
 <translation id="7792771145871471484">Pregled predlogov.</translation>
+<translation id="7885132941432959125">Premakni zavihek v desno</translation>
 <translation id="7966321538264951561">Opustitev predlogov.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Zapiranje <ph name="TABS_COUNT_ONE" /> izbranega zavihka}one{Zapiranje <ph name="TABS_COUNT_MANY" /> izbranega zavihka}two{Zapiranje <ph name="TABS_COUNT_MANY" /> izbranih zavihkov}few{Zapiranje <ph name="TABS_COUNT_MANY" /> izbranih zavihkov}other{Zapiranje <ph name="TABS_COUNT_MANY" /> izbranih zavihkov}}</translation>
 <translation id="9150694013019234766">Preklapljanje med zavihki v skupini zavihkov pri dnu zaslona</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sq.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sq.xtb
index d871deb..d945c24 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sq.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sq.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106"><ph name="NUMBER_OF_TABS" /> nga skedat e tua nuk janë përdorur së fundi. Do t'i mbyllësh ato?</translation>
 <translation id="1181037720776840403">Hiq</translation>
 <translation id="125153950246128346">Trokit për të parë një skedë tjetër</translation>
+<translation id="1657719826150349398">Lëviz skedën poshtë</translation>
+<translation id="1778290789805128794">Lëviz skedën në krye</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> skedë}other{<ph name="TABS_COUNT_MANY" /> skeda}}</translation>
 <translation id="2569352796411618312">Sugjerim: <ph name="NUMBER_OF_TABS" /> nga skedat e tua nuk janë përdorur së fundi. Do t'i mbyllësh ato?</translation>
 <translation id="257674075312929031">Grup</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Zvarriti skedat për t'i grupuar</translation>
 <translation id="6040143037577758943">Mbyll</translation>
 <translation id="6193448654517602979">Zgjidh skedat</translation>
+<translation id="6562820390860419811">Lëviz skedën majtas</translation>
 <translation id="6615455863669487791">Ma trego</translation>
 <translation id="6840760312327750441">Për t'i grupuar skedat, prek dhe mbaje të shtypur një skedë. Më pas zvarrite atë te një skedë tjetër.</translation>
 <translation id="7151209024774799310">Hiq skedat nga grupi</translation>
 <translation id="7559245342362162951">Shfaq skedat e grupit në rrjetën me ekran të plotë</translation>
 <translation id="7792771145871471484">Rishiko sugjerimet.</translation>
+<translation id="7885132941432959125">Lëviz skedën djathtas</translation>
 <translation id="7966321538264951561">Largo sugjerimet.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Mbyll <ph name="TABS_COUNT_ONE" /> skedë të zgjedhur}other{Mbyll <ph name="TABS_COUNT_MANY" /> skeda të zgjedhura}}</translation>
 <translation id="9150694013019234766">Kalo mes skedave në grupin e skedave pranë fundit të ekranit</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sr.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sr.xtb
index c4cfce94..a443424 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sr.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sr.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106">Имате више картица (<ph name="NUMBER_OF_TABS" />) које нисте користили у скорије време. Желите ли да их затворите?</translation>
 <translation id="1181037720776840403">Уклони</translation>
 <translation id="125153950246128346">Додирните да бисте видели неку другу картицу</translation>
+<translation id="1657719826150349398">Преместите картицу надоле</translation>
+<translation id="1778290789805128794">Преместите картицу на врх</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> картица}one{<ph name="TABS_COUNT_MANY" /> картица}few{<ph name="TABS_COUNT_MANY" /> картице}other{<ph name="TABS_COUNT_MANY" /> картица}}</translation>
 <translation id="2569352796411618312">Предлог: Имате више картица (<ph name="NUMBER_OF_TABS" />) које нисте користили у скорије време. Желите ли да их затворите?</translation>
 <translation id="257674075312929031">Група</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Превуците картице да бисте их груписали</translation>
 <translation id="6040143037577758943">Затвори</translation>
 <translation id="6193448654517602979">Изаберите картице</translation>
+<translation id="6562820390860419811">Преместите картицу улево</translation>
 <translation id="6615455863669487791">Покажи ми</translation>
 <translation id="6840760312327750441">Да бисте груписали картице, додирните картицу и задржите је. Затим је превуците на другу картицу.</translation>
 <translation id="7151209024774799310">Уклоните картице из групе</translation>
 <translation id="7559245342362162951">Приказује картице групе у мрежи на целом екрану</translation>
 <translation id="7792771145871471484">Прегледајте предлоге.</translation>
+<translation id="7885132941432959125">Преместите картицу удесно</translation>
 <translation id="7966321538264951561">Одбаците предлоге.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Затворите <ph name="TABS_COUNT_ONE" /> изабрану картицу}one{Затворите <ph name="TABS_COUNT_MANY" /> изабрану картицу}few{Затворите <ph name="TABS_COUNT_MANY" /> изабране картице}other{Затворите <ph name="TABS_COUNT_MANY" /> изабраних картица}}</translation>
 <translation id="9150694013019234766">Прелазите са једне картице на другу у групи картица у дну екрана</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sv.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sv.xtb
index e42ee720..c4c76b9a 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sv.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sv.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106"><ph name="NUMBER_OF_TABS" /> av flikarna har inte använts på länge. Vill du stänga dem?</translation>
 <translation id="1181037720776840403">Ta bort</translation>
 <translation id="125153950246128346">Tryck för att visa en annan flik</translation>
+<translation id="1657719826150349398">Flytta fliken nedåt</translation>
+<translation id="1778290789805128794">Flytta fliken högst upp</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> flik}other{<ph name="TABS_COUNT_MANY" /> flikar}}</translation>
 <translation id="2569352796411618312">Förslag: <ph name="NUMBER_OF_TABS" /> av flikarna har inte använts på länge. Vill du stänga dem?</translation>
 <translation id="257674075312929031">Grupp</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Gruppera flikar genom att dra dem</translation>
 <translation id="6040143037577758943">Stäng</translation>
 <translation id="6193448654517602979">Välj flikar</translation>
+<translation id="6562820390860419811">Flytta fliken åt vänster</translation>
 <translation id="6615455863669487791">Visa mig</translation>
 <translation id="6840760312327750441">Gruppera flikar genom att trycka länge på en flik. Dra sedan fliken ovanpå en annan flik.</translation>
 <translation id="7151209024774799310">Ta bort flikar från gruppen</translation>
 <translation id="7559245342362162951">Visa gruppens flikar i helskärmsrutnät</translation>
 <translation id="7792771145871471484">Granska förslagen.</translation>
+<translation id="7885132941432959125">Flytta fliken åt höger</translation>
 <translation id="7966321538264951561">Ignorera förslagen.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Stäng <ph name="TABS_COUNT_ONE" /> vald flik}other{Stäng <ph name="TABS_COUNT_MANY" /> valda flikar}}</translation>
 <translation id="9150694013019234766">Byt mellan flikarna i flikgruppen nära sidans nederkant</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_te.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_te.xtb
index 07d9c93..40d09fbf 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_te.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_te.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106">మీ <ph name="NUMBER_OF_TABS" /> ట్యాబ్‌లు ఇటీవల ఉపయోగించబడలేదు. వాటిని మూసివేయాలా?</translation>
 <translation id="1181037720776840403">తీసివేయి</translation>
 <translation id="125153950246128346">మరొక ట్యాబ్‌ను చూడటానికి నొక్కండి</translation>
+<translation id="1657719826150349398">ట్యాబ్‌ని కిందికి తరలించు</translation>
+<translation id="1778290789805128794">ట్యాబ్‌ని పైకి తరలించు</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> ట్యాబ్}other{<ph name="TABS_COUNT_MANY" /> ట్యాబ్‌లు}}</translation>
 <translation id="2569352796411618312">సూచన: మీ <ph name="NUMBER_OF_TABS" /> ట్యాబ్‌లను ఇటీవల ఉపయోగించలేదు. వాటిని మూసివేయాలా?</translation>
 <translation id="257674075312929031">సమూహం</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">సమూహంగా చేయడానికి ట్యాబ్‌లను లాగండి</translation>
 <translation id="6040143037577758943">మూసివేయి</translation>
 <translation id="6193448654517602979">ట్యాబ్‌లను ఎంచుకోండి</translation>
+<translation id="6562820390860419811">ట్యాబ్‌ని ఎడమకు తరలించు</translation>
 <translation id="6615455863669487791">నాకు చూపించు</translation>
 <translation id="6840760312327750441">ట్యాబ్‌లను సమూహంగా చేయడానికి, ట్యాబ్‌ను తాకి &amp; అలాగే నొక్కి ఉంచండి. ట్యాబ్‌ను మరొక ట్యాబ్‌ మీదకు లాగండి.</translation>
 <translation id="7151209024774799310">గ్రూప్ నుండి ట్యాబ్‌లు తీసేయి</translation>
 <translation id="7559245342362162951">సమూహంలోని ట్యాబ్‌లను పూర్తి స్క్రీన్ గ్రిడ్‌లో చూపు</translation>
 <translation id="7792771145871471484">సూచనలను సమీక్షించండి.</translation>
+<translation id="7885132941432959125">ట్యాబ్‌ని కుడి వైపునకు తరలించు</translation>
 <translation id="7966321538264951561">సూచనలను తీసివేయండి.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{ఎంపిక చేసిన <ph name="TABS_COUNT_ONE" /> ట్యాబ్‌ను మూసివేయి}other{ఎంపిక చేసిన <ph name="TABS_COUNT_MANY" /> ట్యాబ్‌లను మూసివేయి}}</translation>
 <translation id="9150694013019234766">స్క్రీన్ దిగువ భాగం దగ్గరలో ఉండే మీ ట్యాబ్ సమూహంలో కోరుకునే ట్యాబ్‌లకు మారండి</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_th.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_th.xtb
index df5ac15..eaa5d5f3 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_th.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_th.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106">คุณไม่ได้ใช้แท็บ <ph name="NUMBER_OF_TABS" /> แท็บมาระยะหนึ่งแล้ว ปิดแท็บเหล่านั้นไหม</translation>
 <translation id="1181037720776840403">นำออก</translation>
 <translation id="125153950246128346">แตะเพื่อดูแท็บอื่น</translation>
+<translation id="1657719826150349398">ย้ายแท็บลงล่าง</translation>
+<translation id="1778290789805128794">ย้ายแท็บขึ้นบน</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> แท็บ}other{<ph name="TABS_COUNT_MANY" /> แท็บ}}</translation>
 <translation id="2569352796411618312">คำแนะนำ: คุณไม่ได้ใช้แท็บ <ph name="NUMBER_OF_TABS" /> แท็บมาระยะหนึ่งแล้ว ปิดแท็บเหล่านั้นไหม</translation>
 <translation id="257674075312929031">กลุ่ม</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">ลากแท็บเพื่อจัดกลุ่ม</translation>
 <translation id="6040143037577758943">ปิด</translation>
 <translation id="6193448654517602979">เลือกแท็บ</translation>
+<translation id="6562820390860419811">ย้ายแท็บไปทางซ้าย</translation>
 <translation id="6615455863669487791">แสดงให้ฉันเห็น</translation>
 <translation id="6840760312327750441">หากต้องการจัดกลุ่มแท็บ ให้แตะแท็บหนึ่งค้างไว้ แล้วลากไปที่อีกแท็บ</translation>
 <translation id="7151209024774799310">นำแท็บออกจากกลุ่ม</translation>
 <translation id="7559245342362162951">แสดงแท็บของกลุ่มในตารางกริดแบบเต็มหน้าจอ</translation>
 <translation id="7792771145871471484">ดูคำแนะนำ</translation>
+<translation id="7885132941432959125">ย้ายแท็บไปทางขวา</translation>
 <translation id="7966321538264951561">ปิดคำแนะนำ</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{ปิดแท็บที่เลือก <ph name="TABS_COUNT_ONE" /> แท็บ}other{ปิดแท็บที่เลือก <ph name="TABS_COUNT_MANY" /> แท็บ}}</translation>
 <translation id="9150694013019234766">สลับไปมาระหว่างแท็บในกลุ่มแท็บบริเวณด้านล่างของหน้าจอ</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_tr.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_tr.xtb
index 84ab97c..4cb35e73 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_tr.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_tr.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106"><ph name="NUMBER_OF_TABS" /> sekmeyi son zamanlarda hiç kullanmadınız. Bunlar kapatılsın mı?</translation>
 <translation id="1181037720776840403">Kaldır</translation>
 <translation id="125153950246128346">Başka bir sekmeyi görmek için dokunun</translation>
+<translation id="1657719826150349398">Sekmeyi aşağı taşı</translation>
+<translation id="1778290789805128794">Sekmeyi en üste taşı</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> sekme}other{<ph name="TABS_COUNT_MANY" /> sekme}}</translation>
 <translation id="2569352796411618312">Öneri: <ph name="NUMBER_OF_TABS" /> sekmeyi son zamanlarda hiç kullanmadınız. Bunlar kapatılsın mı?</translation>
 <translation id="257674075312929031">Grup</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Gruplandırmak için sekmeleri sürükleyin</translation>
 <translation id="6040143037577758943">Kapat</translation>
 <translation id="6193448654517602979">Sekmeleri seçin</translation>
+<translation id="6562820390860419811">Sekmeyi sola taşı</translation>
 <translation id="6615455863669487791">Göster</translation>
 <translation id="6840760312327750441">Sekmeleri gruplamak için bir sekmeye dokunup basılı tutun. Ardından başka bir sekmenin üzerine sürükleyin.</translation>
 <translation id="7151209024774799310">Sekmeleri gruptan kaldır</translation>
 <translation id="7559245342362162951">Grubun sekmelerini tam ekran ızgarada gösterir</translation>
 <translation id="7792771145871471484">Önerileri inceleyin.</translation>
+<translation id="7885132941432959125">Sekmeyi sağa taşı</translation>
 <translation id="7966321538264951561">Önerileri kapat.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Seçilen <ph name="TABS_COUNT_ONE" /> sekmeyi kapat}other{Seçilen <ph name="TABS_COUNT_MANY" /> sekmeyi kapat}}</translation>
 <translation id="9150694013019234766">Ekranın altına yakın bir yerde bulunan sekme grubunuzdaki sekmeler arasında geçiş yapın</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_uk.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_uk.xtb
index 7fe14bd..a5598e1 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_uk.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_uk.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106">Ви давно не переходили на кілька вкладок (<ph name="NUMBER_OF_TABS" />). Закрити їх?</translation>
 <translation id="1181037720776840403">Видалити</translation>
 <translation id="125153950246128346">Натисніть, щоб побачити іншу вкладку</translation>
+<translation id="1657719826150349398">Перемістити вкладку вниз</translation>
+<translation id="1778290789805128794">Перемістити вкладку вгору</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> вкладка}one{<ph name="TABS_COUNT_MANY" /> вкладка}few{<ph name="TABS_COUNT_MANY" /> вкладки}many{<ph name="TABS_COUNT_MANY" /> вкладок}other{<ph name="TABS_COUNT_MANY" /> вкладки}}</translation>
 <translation id="2569352796411618312">Пропозиція: ви давно не переходили на кілька вкладок (<ph name="NUMBER_OF_TABS" />). Закрити їх?</translation>
 <translation id="257674075312929031">Група</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Перетягуйте вкладки, щоб групувати їх</translation>
 <translation id="6040143037577758943">Закрити</translation>
 <translation id="6193448654517602979">Виберіть вкладки</translation>
+<translation id="6562820390860419811">Перемістити вкладку ліворуч</translation>
 <translation id="6615455863669487791">Показати</translation>
 <translation id="6840760312327750441">Щоб згрупувати вкладки, натисніть і утримуйте вкладку, а потім перетягніть її на іншу.</translation>
 <translation id="7151209024774799310">Видалити вкладки з групи</translation>
 <translation id="7559245342362162951">Показувати вкладки групи в повноекранній сітці</translation>
 <translation id="7792771145871471484">Переглянути ці вкладки.</translation>
+<translation id="7885132941432959125">Перемістити вкладку праворуч</translation>
 <translation id="7966321538264951561">Закрити пропозицію.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Закрити <ph name="TABS_COUNT_ONE" /> вибрану вкладку}one{Закрити <ph name="TABS_COUNT_MANY" /> вибрану вкладку}few{Закрити <ph name="TABS_COUNT_MANY" /> вибрані вкладки}many{Закрити <ph name="TABS_COUNT_MANY" /> вибраних вкладок}other{Закрити <ph name="TABS_COUNT_MANY" /> вибраної вкладки}}</translation>
 <translation id="9150694013019234766">Переходьте між вкладками в групі вкладок унизу екрана</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ur.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ur.xtb
index eb19a95b..7fb8ce9 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ur.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ur.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106">آپ کے ٹیبز میں سے <ph name="NUMBER_OF_TABS" /> کا استعمال حال میں نہیں ہوا ہے۔ انہیں بند کریں؟</translation>
 <translation id="1181037720776840403">ہٹائیں</translation>
 <translation id="125153950246128346">دوسرا ٹیب دیکھنے کیلئے تھپتھپائیں</translation>
+<translation id="1657719826150349398">ٹیب کو نیچے منتقل کریں</translation>
+<translation id="1778290789805128794">ٹیب کو اوپر منتقل کریں</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> ٹیب}other{<ph name="TABS_COUNT_MANY" /> ٹیبز}}</translation>
 <translation id="2569352796411618312">تجویز: آپ کے ٹیبز میں سے <ph name="NUMBER_OF_TABS" /> کا استعمال حال میں نہیں ہوا ہے۔ انہیں بند کریں؟</translation>
 <translation id="257674075312929031">گروپ</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">ان کی گروپ بندی کرنے کے لیے ٹیبز کو گھسیٹیں</translation>
 <translation id="6040143037577758943">بند کریں</translation>
 <translation id="6193448654517602979">ٹیبز منتخب کریں</translation>
+<translation id="6562820390860419811">ٹیب کو بائیں منتقل کریں</translation>
 <translation id="6615455863669487791">مجھے دکھائیں</translation>
 <translation id="6840760312327750441">ٹیبز کا گروپ بنانے کے لیے، کسی ٹیب کو ٹچ کریں اور دبائے رکھیں۔ پھر، اسے کسی دوسرے ٹیب پر گھسیٹیں۔</translation>
 <translation id="7151209024774799310">ٹیبز کو گروپ سے ہٹائیں</translation>
 <translation id="7559245342362162951">پوری اسکرین گرڈ میں گروپ کے ٹیبز دکھائیں</translation>
 <translation id="7792771145871471484">تجاویز کا جائزہ لیں۔</translation>
+<translation id="7885132941432959125">ٹیب کو دائیں منتقل کریں</translation>
 <translation id="7966321538264951561">تجاویز مسترد کریں۔</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> منتخب کردہ ٹیب بند کریں}other{<ph name="TABS_COUNT_MANY" /> منتخب کردہ ٹیبز بند کریں}}</translation>
 <translation id="9150694013019234766">اسکرین کے نچلے حصے کے قریب ٹیبز کے اپنے گروپ میں ٹیبز کے درمیان سوئچ کریں</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_uz.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_uz.xtb
index 3abe429b..fb1f8416 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_uz.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_uz.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106"><ph name="NUMBER_OF_TABS" /> ta varaq oxirgi vaqtlarda ishlatilmayapti. Ular yopilsinmi?</translation>
 <translation id="1181037720776840403">Olib tashlash</translation>
 <translation id="125153950246128346">Boshqa varaqni ochish uchun bosing</translation>
+<translation id="1657719826150349398">Varaqni pastga tushirish</translation>
+<translation id="1778290789805128794">Varaqni tepaga siljitish</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> ta varaq}other{<ph name="TABS_COUNT_MANY" /> ta varaq}}</translation>
 <translation id="2569352796411618312">Bildirgi: <ph name="NUMBER_OF_TABS" /> ta varaq oxirgi vaqtlarda ishlatilmayapti. Ular yopilsinmi?</translation>
 <translation id="257674075312929031">Guruh</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Guruhlash uchun varaqlarni tortib tashlang</translation>
 <translation id="6040143037577758943">Yopish</translation>
 <translation id="6193448654517602979">Varaqlarni belgilang</translation>
+<translation id="6562820390860419811">Varaqni chapga siljitish</translation>
 <translation id="6615455863669487791">Ko‘rsatish</translation>
 <translation id="6840760312327750441">Varaqlarni guruhlash uchun varaqni bosib turing. Keyin esa tortib, boshqa varaq ustiga tashlang.</translation>
 <translation id="7151209024774799310">Varaqlarni guruhdan olib tashlash</translation>
 <translation id="7559245342362162951">Guruh varaqlarini butun ekranga jadval shaklida chiqarish</translation>
 <translation id="7792771145871471484">Batafsil.</translation>
+<translation id="7885132941432959125">Varaqni oʻngga siljitish</translation>
 <translation id="7966321538264951561">Bildirgilarni yopish</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Tanlangan <ph name="TABS_COUNT_ONE" /> ta varaqni yopish}other{Tanlangan <ph name="TABS_COUNT_MANY" /> ta varaqni yopish}}</translation>
 <translation id="9150694013019234766">Ekranning quyi qismidagi varaqlar guruhidagi varaqlarni almashtirish</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-CN.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-CN.xtb
index 0ef8df6f..00f139c 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-CN.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-CN.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106">您有 <ph name="NUMBER_OF_TABS" /> 个标签页最近未被使用过。关闭它们?</translation>
 <translation id="1181037720776840403">删除</translation>
 <translation id="125153950246128346">点按即可查看另一标签页</translation>
+<translation id="1657719826150349398">下移标签页</translation>
+<translation id="1778290789805128794">上移标签页</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> 个标签页}other{<ph name="TABS_COUNT_MANY" /> 个标签页}}</translation>
 <translation id="2569352796411618312">建议:您有 <ph name="NUMBER_OF_TABS" /> 个标签页最近未被使用过。关闭它们?</translation>
 <translation id="257674075312929031">群组</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">拖动标签可进行分组</translation>
 <translation id="6040143037577758943">关闭</translation>
 <translation id="6193448654517602979">选择标签页</translation>
+<translation id="6562820390860419811">左移标签页</translation>
 <translation id="6615455863669487791">显示图标</translation>
 <translation id="6840760312327750441">要将标签页分组,请轻触并按住某个标签页,然后拖动到另一个标签页上。</translation>
 <translation id="7151209024774799310">从标签页组中移除标签页</translation>
 <translation id="7559245342362162951">以全屏网格状视图显示组中的标签页</translation>
 <translation id="7792771145871471484">查看建议。</translation>
+<translation id="7885132941432959125">右移标签页</translation>
 <translation id="7966321538264951561">忽略此建议。</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{关闭 <ph name="TABS_COUNT_ONE" /> 个所选标签页}other{关闭 <ph name="TABS_COUNT_MANY" /> 个所选标签页}}</translation>
 <translation id="9150694013019234766">在屏幕底部附近的标签页组中切换标签页</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-HK.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-HK.xtb
index a75f7f9..231c73d 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-HK.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-HK.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106">您有 <ph name="NUMBER_OF_TABS" /> 個分頁最近沒有使用過。要關閉這些分頁嗎?</translation>
 <translation id="1181037720776840403">移除</translation>
 <translation id="125153950246128346">輕按即可查看另一個分頁</translation>
+<translation id="1657719826150349398">將分頁向下移</translation>
+<translation id="1778290789805128794">將分頁移至頂端</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> 個分頁}other{<ph name="TABS_COUNT_MANY" /> 個分頁}}</translation>
 <translation id="2569352796411618312">我有建議:你有 <ph name="NUMBER_OF_TABS" /> 個分頁最近冇用過,係咪要閂咗佢?</translation>
 <translation id="257674075312929031">群組</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">拖曳分頁即可進行分組</translation>
 <translation id="6040143037577758943">關閉</translation>
 <translation id="6193448654517602979">選取分頁</translation>
+<translation id="6562820390860419811">將分頁向左移</translation>
 <translation id="6615455863669487791">顯示</translation>
 <translation id="6840760312327750441">如要將分頁加入群組,請輕觸並按住分頁,然後將它拖曳到其他分頁上。</translation>
 <translation id="7151209024774799310">從群組中移除標籤</translation>
 <translation id="7559245342362162951">用全螢幕網格顯示群組嘅分頁</translation>
 <translation id="7792771145871471484">睇下建議。</translation>
+<translation id="7885132941432959125">將分頁向右移</translation>
 <translation id="7966321538264951561">閂建議。</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{閂 <ph name="TABS_COUNT_ONE" /> 個揀咗嘅分頁}other{閂 <ph name="TABS_COUNT_MANY" /> 個揀咗嘅分頁}}</translation>
 <translation id="9150694013019234766">喺接近畫面底部附近嘅分頁群組入面切換分頁</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-TW.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-TW.xtb
index 8427641..01d21cc 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-TW.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-TW.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106">你有 <ph name="NUMBER_OF_TABS" /> 個分頁最近沒有使用過。要關閉這些分頁嗎?</translation>
 <translation id="1181037720776840403">移除</translation>
 <translation id="125153950246128346">輕觸即可查看另一個分頁</translation>
+<translation id="1657719826150349398">將分頁向下移</translation>
+<translation id="1778290789805128794">將分頁移至頂端</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> 個分頁}other{<ph name="TABS_COUNT_MANY" /> 個分頁}}</translation>
 <translation id="2569352796411618312">建議:你有 <ph name="NUMBER_OF_TABS" /> 個分頁最近沒有使用過。要關閉這些分頁嗎?</translation>
 <translation id="257674075312929031">群組</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">拖曳分頁即可進行分組</translation>
 <translation id="6040143037577758943">關閉</translation>
 <translation id="6193448654517602979">選取分頁</translation>
+<translation id="6562820390860419811">將分頁向左移</translation>
 <translation id="6615455863669487791">顯示</translation>
 <translation id="6840760312327750441">如要將分頁加入群組,請輕觸並按住分頁,然後將其拖曳到其他分頁上。</translation>
 <translation id="7151209024774799310">從群組中移除分頁</translation>
 <translation id="7559245342362162951">以全螢幕格狀檢視顯示群組的分頁</translation>
 <translation id="7792771145871471484">查看建議項目。</translation>
+<translation id="7885132941432959125">將分頁向右移</translation>
 <translation id="7966321538264951561">關閉建議項目。</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{關閉 <ph name="TABS_COUNT_ONE" /> 個所選分頁}other{關閉 <ph name="TABS_COUNT_MANY" /> 個所選分頁}}</translation>
 <translation id="9150694013019234766">在靠近畫面底部的分頁群組中切換分頁</translation>
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zu.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zu.xtb
index 996b794..4873bc6 100644
--- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zu.xtb
+++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zu.xtb
@@ -4,6 +4,8 @@
 <translation id="1075622780330595106"><ph name="NUMBER_OF_TABS" /> yamathebhu akho awakasetshenziswa kamuva nje. Wavale?</translation>
 <translation id="1181037720776840403">Susa</translation>
 <translation id="125153950246128346">Thepha ukuze ubone enye ithebhu</translation>
+<translation id="1657719826150349398">Yisa ithebhu phansi</translation>
+<translation id="1778290789805128794">Yisa ithebhu phezulu</translation>
 <translation id="1869137256605757565">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> ithebhu}one{<ph name="TABS_COUNT_MANY" /> amathebhu}other{<ph name="TABS_COUNT_MANY" /> amathebhu}}</translation>
 <translation id="2569352796411618312">Isiphakamiso: <ph name="NUMBER_OF_TABS" /> yamathebhu akho awakasetshenziswa kamuva nje. Wavale?</translation>
 <translation id="257674075312929031">Iqembu</translation>
@@ -20,11 +22,13 @@
 <translation id="58326064309361797">Hudula amathebhu ukuze uwafake eqenjini</translation>
 <translation id="6040143037577758943">Vala</translation>
 <translation id="6193448654517602979">Khetha amathebhu</translation>
+<translation id="6562820390860419811">Hambisa ithebhu ngakwesokunxele</translation>
 <translation id="6615455863669487791">Ngibonise</translation>
 <translation id="6840760312327750441">Ukuze uqoqe amathebhu, thinta futhi ubambe ithebhu. Bese, ihudulele kwenye ithebhu.</translation>
 <translation id="7151209024774799310">Susa amathebhu kusukela kuqembu</translation>
 <translation id="7559245342362162951">Bonisa amathebhu eqembu kugridi yesikrini esigcwele</translation>
 <translation id="7792771145871471484">Buyekeza iziphakamiso.</translation>
+<translation id="7885132941432959125">Yisa ithebhu kwesokudla</translation>
 <translation id="7966321538264951561">Cashisa iziphakamiso.</translation>
 <translation id="83556505225171773">{TABS_COUNT,plural, =1{Vala ithebhu ekhethiwe engu-<ph name="TABS_COUNT_ONE" />}one{Vala amathebhu akhethiwe angu-<ph name="TABS_COUNT_MANY" />}other{Vala amathebhu akhethiwe angu-<ph name="TABS_COUNT_MANY" />}}</translation>
 <translation id="9150694013019234766">Shintsha phakathi komaka kuqembu lethebhu lakho eduze kwangaphansi kwesikrini</translation>
diff --git a/chrome/android/features/tab_ui/tab_management_java_sources.gni b/chrome/android/features/tab_ui/tab_management_java_sources.gni
index 219c51e..cba389af 100644
--- a/chrome/android/features/tab_ui/tab_management_java_sources.gni
+++ b/chrome/android/features/tab_ui/tab_management_java_sources.gni
@@ -9,18 +9,18 @@
   "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/MostVisitedListProperties.java",
   "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksSurface.java",
   "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/TasksSurfaceProperties.java",
-  "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter.java",
   "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_groups/EmptyTabGroupModelFilterObserver.java",
-  "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUi.java",
+  "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter.java",
   "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupPopupUi.java",
+  "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUi.java",
   "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabManagementDelegate.java",
   "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabManagementModuleProvider.java",
   "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcher.java",
   "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabContext.java",
-  "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabSuggestions.java",
-  "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabSuggestionsObserver.java",
   "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabSuggestion.java",
   "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabSuggestionFeedback.java",
+  "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabSuggestions.java",
+  "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabSuggestionsObserver.java",
 ]
 
 public_tab_management_java_sources += start_surface_public_java_sources
@@ -28,11 +28,12 @@
 tab_management_test_java_sources = [
   "//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/TasksViewBinderTest.java",
   "//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/AssertsTest.java",
-  "//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/MessageCardViewBinderTest.java",
   "//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/MessageCardProviderTest.java",
+  "//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/MessageCardViewBinderTest.java",
+  "//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/RecyclerViewMatcherUtils.java",
   "//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridAccessibilityHelperTest.java",
-  "//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogTest.java",
   "//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogParentTest.java",
+  "//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogTest.java",
   "//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridIphItemTest.java",
   "//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridIphItemViewBinderTest.java",
   "//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridPanelViewBinderTest.java",
@@ -46,18 +47,17 @@
   "//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMultiWindowTest.java",
   "//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabUiTestHelper.java",
   "//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TestRecyclerViewSimpleViewBinder.java",
-  "//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/RecyclerViewMatcherUtils.java",
 ]
 
 tab_management_junit_java_sources = [
-  "//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/TasksSurfaceMediatorUnitTest.java",
   "//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/MostVisitedListViewBinderUnitTest.java",
+  "//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/TasksSurfaceMediatorUnitTest.java",
   "//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/pseudotab/PseudoTabUnitTest.java",
   "//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/pseudotab/TabAttributeCacheUnitTest.java",
   "//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilterUnitTest.java",
   "//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_groups/TabGroupUtilsUnitTest.java",
-  "//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediatorUnitTest.java",
   "//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/MessageCardProviderMediatorUnitTest.java",
+  "//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediatorUnitTest.java",
   "//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabGridIphItemMediatorUnitTest.java",
   "//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabGridItemTouchHelperCallbackUnitTest.java",
   "//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupPopupUiMediatorUnitTest.java",
@@ -68,9 +68,9 @@
   "//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabSuggestionMessageServiceUnitTest.java",
   "//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediatorUnitTest.java",
   "//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabUiUnitTestUtils.java",
-  "//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabContextTest.java",
-  "//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabContextObserverTest.java",
-  "//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabSuggestionsOrchestratorTest.java",
   "//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/StaleTabSuggestionProviderTest.java",
+  "//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabContextObserverTest.java",
+  "//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabContextTest.java",
   "//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabSuggestionsClientFetcherTest.java",
+  "//chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/suggestions/TabSuggestionsOrchestratorTest.java",
 ]
diff --git a/chrome/android/features/vr/public_vr_java_sources.gni b/chrome/android/features/vr/public_vr_java_sources.gni
index 5767701..603a6bf 100644
--- a/chrome/android/features/vr/public_vr_java_sources.gni
+++ b/chrome/android/features/vr/public_vr_java_sources.gni
@@ -8,11 +8,11 @@
   "//chrome/android/features/vr/java/src/org/chromium/chrome/browser/vr/OnExitVrRequestListener.java",
   "//chrome/android/features/vr/java/src/org/chromium/chrome/browser/vr/VrDelegate.java",
   "//chrome/android/features/vr/java/src/org/chromium/chrome/browser/vr/VrDelegateFallback.java",
-  "//chrome/android/features/vr/java/src/org/chromium/chrome/browser/vr/VrFallbackUtils.java",
-  "//chrome/android/features/vr/java/src/org/chromium/chrome/browser/vr/VrIntentDelegateFallback.java",
   "//chrome/android/features/vr/java/src/org/chromium/chrome/browser/vr/VrDelegateProvider.java",
   "//chrome/android/features/vr/java/src/org/chromium/chrome/browser/vr/VrDelegateProviderFallback.java",
+  "//chrome/android/features/vr/java/src/org/chromium/chrome/browser/vr/VrFallbackUtils.java",
   "//chrome/android/features/vr/java/src/org/chromium/chrome/browser/vr/VrIntentDelegate.java",
+  "//chrome/android/features/vr/java/src/org/chromium/chrome/browser/vr/VrIntentDelegateFallback.java",
   "//chrome/android/features/vr/java/src/org/chromium/chrome/browser/vr/VrModeObserver.java",
   "//chrome/android/features/vr/java/src/org/chromium/chrome/browser/vr/VrModuleProvider.java",
 ]
diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library/BUILD.gn b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library/BUILD.gn
index 602056249..d1b545f 100644
--- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library/BUILD.gn
+++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/library/BUILD.gn
@@ -380,8 +380,6 @@
   "testing/conformance/storage/ContentStorageDirectConformanceTest.java",
   "testing/conformance/storage/JournalStorageConformanceTest.java",
   "testing/conformance/storage/JournalStorageDirectConformanceTest.java",
-  "testing/requestmanager/FakeActionUploadRequestManager.java",
-  "testing/requestmanager/FakeFeedRequestManager.java",
   "testing/host/logging/FakeBasicLoggingApi.java",
   "testing/host/offlineindicator/FakeOfflineIndicatorApi.java",
   "testing/host/scheduler/FakeSchedulerApi.java",
@@ -396,6 +394,8 @@
   "testing/modelprovider/FakeModelToken.java",
   "testing/modelprovider/FakeViewDepthProvider.java",
   "testing/modelprovider/FeatureChangeBuilder.java",
+  "testing/requestmanager/FakeActionUploadRequestManager.java",
+  "testing/requestmanager/FakeFeedRequestManager.java",
 ]
 
 android_resources("sharedstream_ui_resources") {
diff --git a/chrome/android/java/res/layout/add_site_dialog.xml b/chrome/android/java/res/layout/add_site_dialog.xml
index 55302c4..f95cce3 100644
--- a/chrome/android/java/res/layout/add_site_dialog.xml
+++ b/chrome/android/java/res/layout/add_site_dialog.xml
@@ -17,4 +17,11 @@
         android:layout_height="wrap_content"
         android:hint="@string/example_url"
         android:inputType="textNoSuggestions" />
-</LinearLayout>
\ No newline at end of file
+
+    <!-- A checkbox to decide if this exception applies for third-party cookies. -->
+    <CheckBox android:id="@+id/third_parties_exception_checkbox"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/website_settings_third_party_cookies_exception_label" />
+
+</LinearLayout>
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 385849b..e03978c 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeActivity.java
@@ -57,7 +57,6 @@
 import org.chromium.chrome.browser.IntentHandler.IntentHandlerDelegate;
 import org.chromium.chrome.browser.IntentHandler.TabOpenType;
 import org.chromium.chrome.browser.appmenu.AppMenuPropertiesDelegateImpl;
-import org.chromium.chrome.browser.autofill_assistant.AutofillAssistantFacade;
 import org.chromium.chrome.browser.bookmarks.BookmarkBridge;
 import org.chromium.chrome.browser.bookmarks.BookmarkModel;
 import org.chromium.chrome.browser.bookmarks.BookmarkUtils;
@@ -78,7 +77,6 @@
 import org.chromium.chrome.browser.dependency_injection.ChromeActivityComponent;
 import org.chromium.chrome.browser.dependency_injection.ModuleFactoryOverrides;
 import org.chromium.chrome.browser.device.DeviceClassManager;
-import org.chromium.chrome.browser.directactions.DirectActionInitializer;
 import org.chromium.chrome.browser.dom_distiller.DomDistillerUIUtils;
 import org.chromium.chrome.browser.dom_distiller.ReaderModeManager;
 import org.chromium.chrome.browser.download.DownloadManagerService;
@@ -288,9 +286,6 @@
 
     private AssistStatusHandler mAssistStatusHandler;
 
-    @Nullable
-    protected DirectActionInitializer mDirectActionInitializer;
-
     // A set of views obscuring all tabs. When this set is nonempty,
     // all tab content will be hidden from the accessibility tree.
     private Set<View> mViewsObscuringAllTabs = new HashSet<>();
@@ -1170,10 +1165,7 @@
     @UsedByReflection("Called from Android Q")
     public void onPerformDirectAction(String actionId, Bundle arguments,
             CancellationSignal cancellationSignal, Consumer<Bundle> callback) {
-        if (mDirectActionInitializer == null) return;
-
-        mDirectActionInitializer.getCoordinator().onPerformDirectAction(
-                actionId, arguments, callback);
+        mRootUiCoordinator.onPerformDirectAction(actionId, arguments, cancellationSignal, callback);
     }
 
     // TODO(crbug.com/973781): Once Chromium is built against Android Q SDK:
@@ -1183,9 +1175,7 @@
     @TargetApi(29)
     @UsedByReflection("Called from Android Q")
     public void onGetDirectActions(CancellationSignal cancellationSignal, Consumer callback) {
-        if (mDirectActionInitializer == null) return;
-
-        mDirectActionInitializer.getCoordinator().onGetDirectActions(callback);
+        mRootUiCoordinator.onGetDirectActions(cancellationSignal, callback);
     }
 
     @Override
@@ -1363,30 +1353,6 @@
             mEphemeralTabCoordinator =
                     new EphemeralTabCoordinator(this, getBottomSheetController());
         }
-
-        // TODO(crbug.com/959841): Once crrev.com/c/1669360 is submitted, make the code below
-        // conditional on ChromeFeatureList.isEnabled(ChromeFeatureList.DIRECT_ACTIONS)
-        mDirectActionInitializer = DirectActionInitializer.create(mTabModelSelector);
-        if (mDirectActionInitializer != null) {
-            registerDirectActions();
-        }
-    }
-
-    /**
-     * Register direct actions to {@link #mDirectActionInitializer}, guaranteed to be non-null.
-     *
-     * <p>Subclasses should override this method and either extend the set of direct actions or
-     * suppress registration of default direct actions.
-     *
-     *  TODO(crrev.com/959841): Move the DirectActionInitializer in the UiRootCoordinator.
-     */
-    protected void registerDirectActions() {
-        mDirectActionInitializer.registerCommonChromeActions(this, getActivityType(), this,
-                this::onBackPressed, mTabModelSelector, mRootUiCoordinator.getFindToolbarManager(),
-                AutofillAssistantFacade.areDirectActionsAvailable(getActivityType())
-                        ? getBottomSheetController()
-                        : null,
-                getScrim());
     }
 
     /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java
index 58b94f8..ac9bb86b 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java
@@ -16,7 +16,6 @@
 import org.chromium.base.ApplicationStatus;
 import org.chromium.base.BuildConfig;
 import org.chromium.base.BuildInfo;
-import org.chromium.base.BundleUtils;
 import org.chromium.base.CommandLineInitUtil;
 import org.chromium.base.ContextUtils;
 import org.chromium.base.JNIUtils;
@@ -145,7 +144,6 @@
                 ProductConfig.COMPRESSED_LOCALES, ProductConfig.UNCOMPRESSED_LOCALES);
         LibraryLoader.getInstance().setLinkerImplementation(
                 ProductConfig.USE_CHROMIUM_LINKER, ProductConfig.USE_MODERN_LINKER);
-        BundleUtils.setIsBundle(ProductConfig.IS_BUNDLE);
 
         if (isBrowserProcess) {
             TraceEvent.end("ChromeApplication.attachBaseContext");
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
index 76b8a2b..08c2817 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeFeatureList.java
@@ -235,7 +235,6 @@
     public static final String DOWNLOAD_FILE_PROVIDER = "DownloadFileProvider";
     public static final String DOWNLOAD_NOTIFICATION_BADGE = "DownloadNotificationBadge";
     public static final String DOWNLOAD_PROGRESS_INFOBAR = "DownloadProgressInfoBar";
-    public static final String DOWNLOAD_RENAME = "DownloadRename";
     public static final String DOWNLOADS_FOREGROUND = "DownloadsForeground";
     public static final String DOWNLOADS_AUTO_RESUMPTION_NATIVE = "DownloadsAutoResumptionNative";
     public static final String DOWNLOAD_OFFLINE_CONTENT_PROVIDER =
@@ -255,6 +254,8 @@
     public static final String HOMEPAGE_LOCATION_POLICY = "HomepageLocationPolicy";
     public static final String HORIZONTAL_TAB_SWITCHER_ANDROID = "HorizontalTabSwitcherAndroid";
     public static final String IMMERSIVE_UI_MODE = "ImmersiveUiMode";
+    public static final String IMPROVED_COOKIE_CONTROLS_FOR_THIRD_PARTY_COOKIE_BLOCKING =
+            "ImprovedCookieControlsForThirdPartyCookieBlocking";
     public static final String INLINE_UPDATE_FLOW = "InlineUpdateFlow";
     public static final String INSTALLABLE_AMBIENT_BADGE_INFOBAR = "InstallableAmbientBadgeInfoBar";
     public static final String INTENT_BLOCK_EXTERNAL_FORM_REDIRECT_NO_GESTURE =
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
index 997e1b2..3c85f725 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -1771,13 +1771,6 @@
         return true;
     }
 
-    @Override
-    protected void registerDirectActions() {
-        super.registerDirectActions();
-
-        mDirectActionInitializer.registerTabManipulationActions(this, getTabModelSelector());
-    }
-
     private void onOmniboxFocusChanged(boolean hasFocus) {
         mMainIntentMetrics.onOmniboxFocused();
         mTabModalHandler.onOmniboxFocusChanged(hasFocus);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browserservices/BrowserServicesStore.java b/chrome/android/java/src/org/chromium/chrome/browser/browserservices/BrowserServicesStore.java
new file mode 100644
index 0000000..b30597b
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/browserservices/BrowserServicesStore.java
@@ -0,0 +1,55 @@
+// 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.chrome.browser.browserservices;
+
+import org.chromium.chrome.browser.dependency_injection.ActivityScope;
+import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
+import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
+
+import javax.inject.Inject;
+
+/**
+ * Records SharedPreferences related to the browserservices module.
+ */
+@ActivityScope
+public class BrowserServicesStore {
+    private final SharedPreferencesManager mManager;
+
+    @Inject
+    public BrowserServicesStore(SharedPreferencesManager manager) {
+        mManager = manager;
+    }
+
+    /**
+     * Sets that the user has accepted the Trusted Web Activity "Running in Chrome" disclosure for
+     * TWAs launched by the given package.
+     */
+    public void setUserAcceptedTwaDisclosureForPackage(String packageName) {
+        mManager.addToStringSet(
+                ChromePreferenceKeys.TRUSTED_WEB_ACTIVITY_DISCLOSURE_ACCEPTED_PACKAGES,
+                packageName);
+    }
+
+    /**
+     * Removes the record of accepting the Trusted Web Activity "Running in Chrome" disclosure for
+     * TWAs launched by the given package.
+     */
+    public void removeTwaDisclosureAcceptanceForPackage(String packageName) {
+        mManager.removeFromStringSet(
+                ChromePreferenceKeys.TRUSTED_WEB_ACTIVITY_DISCLOSURE_ACCEPTED_PACKAGES,
+                packageName);
+    }
+
+    /**
+     * Checks whether the given package was previously passed to
+     * {@link #setUserAcceptedTwaDisclosureForPackage(String)}.
+     */
+    public boolean hasUserAcceptedTwaDisclosureForPackage(String packageName) {
+        return mManager
+                .readStringSet(
+                        ChromePreferenceKeys.TRUSTED_WEB_ACTIVITY_DISCLOSURE_ACCEPTED_PACKAGES)
+                .contains(packageName);
+    }
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browserservices/ClientAppBroadcastReceiver.java b/chrome/android/java/src/org/chromium/chrome/browser/browserservices/ClientAppBroadcastReceiver.java
index 89cf1fa..53fd6a7 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/browserservices/ClientAppBroadcastReceiver.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/browserservices/ClientAppBroadcastReceiver.java
@@ -14,13 +14,14 @@
 import org.chromium.chrome.browser.ChromeVersionInfo;
 import org.chromium.chrome.browser.browserservices.permissiondelegation.NotificationPermissionUpdater;
 import org.chromium.chrome.browser.metrics.WebApkUma;
-import org.chromium.chrome.browser.preferences.ChromePreferenceManager;
 import org.chromium.webapk.lib.common.WebApkConstants;
 
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
 
+import javax.inject.Inject;
+
 /**
  * A {@link android.content.BroadcastReceiver} that detects when a Trusted Web Activity client app
  * has been uninstalled or has had its data cleared. When this happens we clear Chrome's data
@@ -68,22 +69,24 @@
 
     private final ClearDataStrategy mClearDataStrategy;
     private final ClientAppDataRegister mRegister;
-    private final ChromePreferenceManager mChromePreferenceManager;
+    private final BrowserServicesStore mStore;
     private final NotificationPermissionUpdater mNotificationPermissionUpdater;
 
     /** Constructor with default dependencies for Android. */
+    @Inject
     public ClientAppBroadcastReceiver() {
         this(new ClearDataStrategy(), new ClientAppDataRegister(),
-                ChromeApplication.getComponent().resolvePreferenceManager(),
+                new BrowserServicesStore(
+                        ChromeApplication.getComponent().resolveSharedPreferencesManager()),
                 ChromeApplication.getComponent().resolveTwaPermissionUpdater());
     }
 
     /** Constructor to allow dependency injection in tests. */
     public ClientAppBroadcastReceiver(ClearDataStrategy strategy, ClientAppDataRegister register,
-            ChromePreferenceManager manager, NotificationPermissionUpdater permissionUpdater) {
+            BrowserServicesStore store, NotificationPermissionUpdater permissionUpdater) {
         mClearDataStrategy = strategy;
         mRegister = register;
-        mChromePreferenceManager = manager;
+        mStore = store;
         mNotificationPermissionUpdater = permissionUpdater;
     }
 
@@ -129,7 +132,7 @@
 
     private void clearPreferences(int uid, boolean uninstalled) {
         String packageName = mRegister.getPackageNameForRegisteredUid(uid);
-        mChromePreferenceManager.removeTwaDisclosureAcceptanceForPackage(packageName);
+        mStore.removeTwaDisclosureAcceptanceForPackage(packageName);
         if (uninstalled) {
             mRegister.removePackage(uid);
         }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browserservices/trustedwebactivityui/controller/TrustedWebActivityDisclosureController.java b/chrome/android/java/src/org/chromium/chrome/browser/browserservices/trustedwebactivityui/controller/TrustedWebActivityDisclosureController.java
index 94018380..6471de9 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/browserservices/trustedwebactivityui/controller/TrustedWebActivityDisclosureController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/browserservices/trustedwebactivityui/controller/TrustedWebActivityDisclosureController.java
@@ -10,13 +10,13 @@
 import static org.chromium.chrome.browser.browserservices.trustedwebactivityui.TrustedWebActivityModel.DISCLOSURE_STATE_NOT_SHOWN;
 import static org.chromium.chrome.browser.browserservices.trustedwebactivityui.TrustedWebActivityModel.DISCLOSURE_STATE_SHOWN;
 
+import org.chromium.chrome.browser.browserservices.BrowserServicesStore;
 import org.chromium.chrome.browser.browserservices.TrustedWebActivityUmaRecorder;
 import org.chromium.chrome.browser.browserservices.trustedwebactivityui.TrustedWebActivityModel;
 import org.chromium.chrome.browser.browserservices.trustedwebactivityui.controller.CurrentPageVerifier.VerificationState;
 import org.chromium.chrome.browser.browserservices.trustedwebactivityui.controller.CurrentPageVerifier.VerificationStatus;
 import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
 import org.chromium.chrome.browser.lifecycle.NativeInitObserver;
-import org.chromium.chrome.browser.preferences.ChromePreferenceManager;
 
 import javax.inject.Inject;
 
@@ -26,23 +26,20 @@
  */
 public class TrustedWebActivityDisclosureController implements NativeInitObserver,
         TrustedWebActivityModel.DisclosureEventsCallback {
-    private final ChromePreferenceManager mPreferenceManager;
+    private final BrowserServicesStore mBrowserServicesStore;
     private final TrustedWebActivityModel mModel;
     private final CurrentPageVerifier mCurrentPageVerifier;
     private final TrustedWebActivityUmaRecorder mRecorder;
     private final ClientPackageNameProvider mClientPackageNameProvider;
 
     @Inject
-    TrustedWebActivityDisclosureController(
-            ChromePreferenceManager preferenceManager,
-            TrustedWebActivityModel model,
-            ActivityLifecycleDispatcher lifecycleDispatcher,
-            CurrentPageVerifier currentPageVerifier,
-            TrustedWebActivityUmaRecorder recorder,
+    TrustedWebActivityDisclosureController(BrowserServicesStore browserServicesStore,
+            TrustedWebActivityModel model, ActivityLifecycleDispatcher lifecycleDispatcher,
+            CurrentPageVerifier currentPageVerifier, TrustedWebActivityUmaRecorder recorder,
             ClientPackageNameProvider clientPackageNameProvider) {
-        mCurrentPageVerifier = currentPageVerifier;
-        mPreferenceManager = preferenceManager;
+        mBrowserServicesStore = browserServicesStore;
         mModel = model;
+        mCurrentPageVerifier = currentPageVerifier;
         mRecorder = recorder;
         mClientPackageNameProvider = clientPackageNameProvider;
         model.set(DISCLOSURE_EVENTS_CALLBACK, this);
@@ -61,7 +58,8 @@
     @Override
     public void onDisclosureAccepted() {
         mRecorder.recordDisclosureAccepted();
-        mPreferenceManager.setUserAcceptedTwaDisclosureForPackage(mClientPackageNameProvider.get());
+        mBrowserServicesStore.setUserAcceptedTwaDisclosureForPackage(
+                mClientPackageNameProvider.get());
         mModel.set(DISCLOSURE_STATE, DISCLOSURE_STATE_DISMISSED_BY_USER);
     }
 
@@ -82,7 +80,7 @@
 
     /** Has a disclosure been dismissed for this client package before? */
     private boolean wasDismissed() {
-        return mPreferenceManager.hasUserAcceptedTwaDisclosureForPackage(
+        return mBrowserServicesStore.hasUserAcceptedTwaDisclosureForPackage(
                 mClientPackageNameProvider.get());
     }
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
index 900fa7a..99a181a 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java
@@ -394,13 +394,6 @@
     }
 
     @Override
-    public void registerDirectActions() {
-        super.registerDirectActions();
-        mDirectActionInitializer.allowMenuActions(
-                this, getTabModelSelector(), R.id.bookmark_this_page_id, R.id.preferences_id);
-    }
-
-    @Override
     public void onUpdateStateChanged() {}
 
     @Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/device/DeviceClassManager.java b/chrome/android/java/src/org/chromium/chrome/browser/device/DeviceClassManager.java
index 6d212f08..c17c64b 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/device/DeviceClassManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/device/DeviceClassManager.java
@@ -6,7 +6,9 @@
 
 import org.chromium.base.CommandLine;
 import org.chromium.base.SysUtils;
+import org.chromium.chrome.browser.ChromeFeatureList;
 import org.chromium.chrome.browser.ChromeSwitches;
+import org.chromium.chrome.browser.flags.FeatureUtilities;
 import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
 import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
 import org.chromium.chrome.browser.util.AccessibilityUtil;
@@ -45,7 +47,9 @@
         if (SysUtils.isLowEndDevice()) {
             mEnableSnapshots = false;
             mEnableLayerDecorationCache = true;
-            mEnableAccessibilityLayout = true;
+            mEnableAccessibilityLayout =
+                    !FeatureUtilities.isTabGroupsAndroidContinuationChromeFlagEnabled()
+                    || !ChromeFeatureList.isEnabled(ChromeFeatureList.TAB_GROUPS_ANDROID);
             mEnableAnimations = false;
             mEnablePrerendering = false;
             mEnableToolbarSwipe = false;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/directactions/DirectActionInitializer.java b/chrome/android/java/src/org/chromium/chrome/browser/directactions/DirectActionInitializer.java
index 36d517b..a284413d 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/directactions/DirectActionInitializer.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/directactions/DirectActionInitializer.java
@@ -6,8 +6,9 @@
 
 import android.annotation.TargetApi;
 import android.content.Context;
+import android.os.Bundle;
+import android.os.CancellationSignal;
 
-import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
 import org.chromium.chrome.R;
@@ -16,46 +17,100 @@
 import org.chromium.chrome.browser.autofill_assistant.AutofillAssistantFacade;
 import org.chromium.chrome.browser.findinpage.FindToolbarManager;
 import org.chromium.chrome.browser.flags.ActivityType;
+import org.chromium.chrome.browser.lifecycle.Destroyable;
+import org.chromium.chrome.browser.lifecycle.NativeInitObserver;
 import org.chromium.chrome.browser.tabmodel.TabModelSelector;
 import org.chromium.chrome.browser.widget.ScrimView;
 import org.chromium.chrome.browser.widget.bottomsheet.BottomSheetController;
 
+import java.util.function.Consumer;
+
 /**
- * A helper for initializing {@link DirectActionCoordinator} with standard direct actions from
+ * A wrapper for initializing {@link DirectActionCoordinator} with standard direct actions from
  * Chrome activities.
  *
  * <p>To extend the set of direct actions beyond what's provided by this class, register handlers to
- * the coordinator returned by {@link #getCoordinator}.
+ * the coordinator {@code mCoordinator}.
  */
 @TargetApi(29)
-public class DirectActionInitializer {
-    @NonNull
-    private DirectActionCoordinator mCoordinator;
+public class DirectActionInitializer implements NativeInitObserver, Destroyable {
+    private Context mContext;
+    @ActivityType
+    private int mActivityType;
+    private MenuOrKeyboardActionController mMenuOrKeyboardActionController;
+    private Runnable mGoBackAction;
+    private TabModelSelector mTabModelSelector;
+    @Nullable
+    private FindToolbarManager mFindToolbarManager;
+    @Nullable
+    private BottomSheetController mBottomSheetController;
+    private ScrimView mScrim;
 
+    private boolean mDirectActionsRegistered;
+    @Nullable
+    private DirectActionCoordinator mCoordinator;
     @Nullable
     private MenuDirectActionHandler mMenuHandler;
 
     /**
-     * Creates and initializes a {@link DirectActionHandler}, if possible, for a specific activity.
-     *
-     * @param tabModelSelector The activity's {@link TabModelSelector}.
+     * @param context The current context, often the activity instance.
+     * @param activityType The type of the current activity
+     * @param actionController Controller to use to execute menu actions
+     * @param goBackAction Implementation of the "go_back" action, usually {@link
+     *         android.app.Activity#onBackPressed}.
+     * @param tabModelSelector The activity's {@link TabModelSelector}
+     * @param findToolbarManager Manager to use for the "find_in_page" action, if it exists
+     * @param bottomSheetController Controller for the activity's bottom sheet, if it exists
+     * @param scrim The activity's scrim view, if it exists
      */
-    @Nullable
-    public static DirectActionInitializer create(TabModelSelector tabModelSelector) {
-        DirectActionCoordinator coordinator = AppHooks.get().createDirectActionCoordinator();
-        if (coordinator == null) return null;
+    public DirectActionInitializer(Context context, @ActivityType int activityType,
+            MenuOrKeyboardActionController actionController, Runnable goBackAction,
+            TabModelSelector tabModelSelector, @Nullable FindToolbarManager findToolbarManager,
+            @Nullable BottomSheetController bottomSheetController, ScrimView scrim) {
+        mContext = context;
+        mActivityType = activityType;
+        mMenuOrKeyboardActionController = actionController;
+        mGoBackAction = goBackAction;
+        mTabModelSelector = tabModelSelector;
+        mFindToolbarManager = findToolbarManager;
+        mBottomSheetController = bottomSheetController;
+        mScrim = scrim;
 
-        coordinator.init(/* isEnabled= */ () -> !tabModelSelector.isIncognitoSelected());
-        return new DirectActionInitializer(coordinator);
+        mDirectActionsRegistered = false;
     }
 
-    /** Returns the coordinator. */
-    public DirectActionCoordinator getCoordinator() {
-        return mCoordinator;
+    /**
+     * Performs a direct action.
+     *
+     * @param actionId Name of the direct action to perform.
+     * @param arguments Arguments for this action.
+     * @param cancellationSignal Signal used to cancel a direct action from the caller.
+     * @param callback Callback to run when the action is done.
+     */
+    public void onPerformDirectAction(String actionId, Bundle arguments,
+            CancellationSignal cancellationSignal, Consumer<Bundle> callback) {
+        if (mCoordinator == null || !mDirectActionsRegistered) {
+            callback.accept(Bundle.EMPTY);
+            return;
+        }
+        mCoordinator.onPerformDirectAction(actionId, arguments, callback);
     }
 
-    private DirectActionInitializer(DirectActionCoordinator coordinator) {
-        mCoordinator = coordinator;
+    /**
+     * Lists direct actions supported.
+     *
+     * Returns a list of direct actions supported by the Activity associated with this
+     * RootUiCoordinator.
+     *
+     * @param cancellationSignal Signal used to cancel a direct action from the caller.
+     * @param callback Callback to run when the action is done.
+     */
+    public void onGetDirectActions(CancellationSignal cancellationSignal, Consumer callback) {
+        if (mCoordinator == null || !mDirectActionsRegistered) {
+            callback.accept(Bundle.EMPTY);
+            return;
+        }
+        mCoordinator.onGetDirectActions(callback);
     }
 
     /**
@@ -71,7 +126,7 @@
      * @param bottomSheetController Controller for the activity's bottom sheet, if it exists
      * @param scrim The activity's scrim view, if it exists
      */
-    public void registerCommonChromeActions(Context context, @ActivityType int activityType,
+    void registerCommonChromeActions(Context context, @ActivityType int activityType,
             MenuOrKeyboardActionController actionController, Runnable goBackAction,
             TabModelSelector tabModelSelector, @Nullable FindToolbarManager findToolbarManager,
             @Nullable BottomSheetController bottomSheetController, ScrimView scrim) {
@@ -95,7 +150,7 @@
      * @param actionController Controller to use to execute menu action
      * @param tabModelSelector The activity's {@link TabModelSelector}
      */
-    public void registerTabManipulationActions(
+    void registerTabManipulationActions(
             MenuOrKeyboardActionController actionController, TabModelSelector tabModelSelector) {
         registerMenuHandlerIfNecessary(actionController, tabModelSelector).allowAllActions();
         mCoordinator.register(new CloseTabDirectActionHandler(tabModelSelector));
@@ -107,12 +162,50 @@
      * @param actionController Controller to use to execute menu action
      * @param tabModelSelector The activity's {@link TabModelSelector}
      */
-    public void allowMenuActions(MenuOrKeyboardActionController actionController,
+    void allowMenuActions(MenuOrKeyboardActionController actionController,
             TabModelSelector tabModelSelector, Integer... itemIds) {
         registerMenuHandlerIfNecessary(actionController, tabModelSelector)
                 .whitelistActions(itemIds);
     }
 
+    // Implements Destroyable
+    @Override
+    public void destroy() {
+        mCoordinator = null;
+        mDirectActionsRegistered = false;
+    }
+
+    // Implements NativeInitObserver
+    @Override
+    public void onFinishNativeInitialization() {
+        mCoordinator = AppHooks.get().createDirectActionCoordinator();
+        if (mCoordinator != null) {
+            mCoordinator.init(/* isEnabled= */ () -> !mTabModelSelector.isIncognitoSelected());
+            registerDirectActions();
+        }
+    }
+
+    /**
+     * Registers the set of direct actions available to assist apps.
+     */
+    void registerDirectActions() {
+        registerCommonChromeActions(mContext, mActivityType, mMenuOrKeyboardActionController,
+                mGoBackAction, mTabModelSelector, mFindToolbarManager,
+                AutofillAssistantFacade.areDirectActionsAvailable(mActivityType)
+                        ? mBottomSheetController
+                        : null,
+                mScrim);
+
+        if (mActivityType == ActivityType.TABBED) {
+            registerTabManipulationActions(mMenuOrKeyboardActionController, mTabModelSelector);
+        } else if (mActivityType == ActivityType.CUSTOM_TAB) {
+            allowMenuActions(mMenuOrKeyboardActionController, mTabModelSelector,
+                    R.id.bookmark_this_page_id, R.id.preferences_id);
+        }
+
+        mDirectActionsRegistered = true;
+    }
+
     private MenuDirectActionHandler registerMenuHandlerIfNecessary(
             MenuOrKeyboardActionController actionController, TabModelSelector tabModelSelector) {
         if (mMenuHandler == null) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/home/DownloadManagerUiConfig.java b/chrome/android/java/src/org/chromium/chrome/browser/download/home/DownloadManagerUiConfig.java
index 28ae2e7..7b7fb17 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/download/home/DownloadManagerUiConfig.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/download/home/DownloadManagerUiConfig.java
@@ -51,8 +51,6 @@
      */
     public final long justNowThresholdSeconds;
 
-    /** Whether or not rename feature should be shown in UI. */
-    public final boolean isRenameEnabled;
 
     /** Whether or not grouping items into a single card is supported. */
     public final boolean supportsGrouping;
@@ -71,7 +69,6 @@
         inMemoryThumbnailCacheSizeBytes = builder.mInMemoryThumbnailCacheSizeBytes;
         maxThumbnailScaleFactor = builder.mMaxThumbnailScaleFactor;
         justNowThresholdSeconds = builder.mJustNowThresholdSeconds;
-        isRenameEnabled = builder.mIsRenameEnabled;
         supportsGrouping = builder.mSupportsGrouping;
         showPaginationHeaders = builder.mShowPaginationHeaders;
     }
@@ -92,7 +89,6 @@
         private int mInMemoryThumbnailCacheSizeBytes = IN_MEMORY_THUMBNAIL_CACHE_SIZE_BYTES;
         private float mMaxThumbnailScaleFactor = 1.5f; /* hdpi scale factor. */
         private long mJustNowThresholdSeconds;
-        private boolean mIsRenameEnabled;
         private boolean mSupportsGrouping;
         private boolean mShowPaginationHeaders;
 
@@ -156,7 +152,6 @@
 
         private void readParamsFromFinch() {
             mJustNowThresholdSeconds = JUST_NOW_THRESHOLD_SECONDS;
-            mIsRenameEnabled = ChromeFeatureList.isEnabled(ChromeFeatureList.DOWNLOAD_RENAME);
             mSupportsGrouping =
                     ChromeFeatureList.isEnabled(ChromeFeatureList.CONTENT_INDEXING_DOWNLOAD_HOME);
         }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/home/list/DateOrderedListMediator.java b/chrome/android/java/src/org/chromium/chrome/browser/download/home/list/DateOrderedListMediator.java
index 631c921..ebaa3bb 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/download/home/list/DateOrderedListMediator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/download/home/list/DateOrderedListMediator.java
@@ -212,8 +212,7 @@
         mModel.getProperties().set(ListProperties.PROVIDER_VISUALS, this ::getVisuals);
         mModel.getProperties().set(ListProperties.PROVIDER_FAVICON, this::getFavicon);
         mModel.getProperties().set(ListProperties.CALLBACK_SELECTION, this ::onSelection);
-        mModel.getProperties().set(ListProperties.CALLBACK_RENAME,
-                mUiConfig.isRenameEnabled ? this::onRenameItem : null);
+        mModel.getProperties().set(ListProperties.CALLBACK_RENAME, this::onRenameItem);
         mModel.getProperties().set(
                 ListProperties.CALLBACK_PAGINATION_CLICK, mListMutationController::loadMorePages);
         mModel.getProperties().set(ListProperties.CALLBACK_GROUP_PAGINATION_CLICK,
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/flags/FeatureUtilities.java b/chrome/android/java/src/org/chromium/chrome/browser/flags/FeatureUtilities.java
index 5f1853f2..0e2298e 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/flags/FeatureUtilities.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/flags/FeatureUtilities.java
@@ -127,12 +127,7 @@
         cacheSwapPixelFormatToFixConvertFromTranslucentEnabled();
         cacheReachedCodeProfilerTrialGroup();
         cacheStartSurfaceEnabled();
-
-        if (isHighEndPhone()) {
-            cacheGridTabSwitcherEnabled();
-            cacheTabGroupsAndroidEnabled();
-            cacheDuetTabStripIntegrationAndroidEnabled();
-        }
+        cacheNativeTabSwitcherUiFlags();
 
         // Propagate REACHED_CODE_PROFILER feature value to LibraryLoader. This can't be done in
         // LibraryLoader itself because it lives in //base and can't depend on ChromeFeatureList.
@@ -411,7 +406,17 @@
         return isFlagEnabled(ChromePreferenceKeys.START_SURFACE_ENABLED_KEY, false);
     }
 
-    private static void cacheGridTabSwitcherEnabled() {
+    @VisibleForTesting
+    static void cacheNativeTabSwitcherUiFlags() {
+        if (isEligibleForTabUiExperiments()) {
+            cacheGridTabSwitcherEnabled();
+            cacheTabGroupsAndroidEnabled();
+            cacheDuetTabStripIntegrationAndroidEnabled();
+        }
+    }
+
+    @VisibleForTesting
+    static void cacheGridTabSwitcherEnabled() {
         SharedPreferencesManager sharedPreferencesManager = SharedPreferencesManager.getInstance();
         String featureKey = ChromePreferenceKeys.GRID_TAB_SWITCHER_ENABLED_KEY;
         boolean shouldQueryFeatureFlag = !DeviceClassManager.enableAccessibilityLayout();
@@ -433,7 +438,8 @@
         // TODO(yusufo): AccessibilityLayout check should not be here and the flow should support
         // changing that setting while Chrome is alive.
         // Having Tab Groups or Start implies Grid Tab Switcher.
-        return isFlagEnabled(ChromePreferenceKeys.GRID_TAB_SWITCHER_ENABLED_KEY, false)
+        return !(isTabGroupsAndroidContinuationChromeFlagEnabled() && SysUtils.isLowEndDevice())
+                && isFlagEnabled(ChromePreferenceKeys.GRID_TAB_SWITCHER_ENABLED_KEY, false)
                 || isTabGroupsAndroidEnabled() || isStartSurfaceEnabled();
     }
 
@@ -446,7 +452,8 @@
         sFlags.put(ChromePreferenceKeys.GRID_TAB_SWITCHER_ENABLED_KEY, enabled);
     }
 
-    private static void cacheTabGroupsAndroidEnabled() {
+    @VisibleForTesting
+    static void cacheTabGroupsAndroidEnabled() {
         SharedPreferencesManager sharedPreferencesManager = SharedPreferencesManager.getInstance();
         String featureKey = ChromePreferenceKeys.TAB_GROUPS_ANDROID_ENABLED_KEY;
         boolean shouldQueryFeatureFlag = !DeviceClassManager.enableAccessibilityLayout();
@@ -518,6 +525,12 @@
                         ContextUtils.getApplicationContext());
     }
 
+    private static boolean isEligibleForTabUiExperiments() {
+        return (isTabGroupsAndroidContinuationChromeFlagEnabled() || !SysUtils.isLowEndDevice())
+                && !DeviceFormFactor.isNonMultiDisplayContextOnTablet(
+                        ContextUtils.getApplicationContext());
+    }
+
     /**
      * @return Whether the tab group ui improvement feature is enabled and available for use.
      */
@@ -531,8 +544,14 @@
      * @return Whether the tab group continuation feature is enabled and available for use.
      */
     public static boolean isTabGroupsAndroidContinuationEnabled() {
-        return isTabGroupsAndroidEnabled()
-                && ChromeFeatureList.isEnabled(ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID);
+        return isTabGroupsAndroidEnabled() && isTabGroupsAndroidContinuationChromeFlagEnabled();
+    }
+
+    /**
+     * @return Whether the tab group continuation Chrome flag is enabled.
+     */
+    public static boolean isTabGroupsAndroidContinuationChromeFlagEnabled() {
+        return ChromeFeatureList.isEnabled(ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID);
     }
 
     /**
@@ -654,6 +673,11 @@
         return flag;
     }
 
+    @VisibleForTesting
+    public static void resetFlagsForTesting() {
+        sFlags.clear();
+    }
+
     @NativeMethods
     interface Natives {
         void setCustomTabVisible(boolean visible);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusMediator.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusMediator.java
index 98ea506..ffef70dd 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusMediator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusMediator.java
@@ -4,8 +4,13 @@
 
 package org.chromium.chrome.browser.omnibox.status;
 
+import android.content.Context;
 import android.content.res.Resources;
 import android.graphics.Bitmap;
+import android.graphics.Bitmap.Config;
+import android.graphics.Canvas;
+import android.graphics.drawable.Drawable;
+import android.support.v7.content.res.AppCompatResources;
 import android.text.TextUtils;
 import android.view.View;
 
@@ -20,6 +25,7 @@
 import org.chromium.chrome.R;
 import org.chromium.chrome.browser.omnibox.SearchEngineLogoUtils;
 import org.chromium.chrome.browser.omnibox.UrlBarEditingTextStateProvider;
+import org.chromium.chrome.browser.omnibox.status.StatusProperties.StatusIconResource;
 import org.chromium.chrome.browser.omnibox.suggestions.AutocompleteCoordinatorFactory;
 import org.chromium.chrome.browser.profiles.Profile;
 import org.chromium.chrome.browser.toolbar.ToolbarColors;
@@ -89,11 +95,17 @@
 
     private StatusMediatorDelegate mDelegate;
     private Resources mResources;
+    private Context mContext;
+
     private ToolbarCommonPropertiesModel mToolbarCommonPropertiesModel;
     private UrlBarEditingTextStateProvider mUrlBarEditingTextStateProvider;
+
     private String mUrlBarTextWithAutocomplete = "";
     private boolean mUrlBarTextIsValidUrl;
+
     private float mUrlFocusPercent;
+    private String mSearchEngineLogoUrl;
+
     // Factors used to offset the animation of the status icon's alpha adjustment. The full formula
     // used: alpha = (focusAnimationProgress - mTextOffsetThreshold) / (1 - mTextOffsetThreshold)
     // mTextOffsetThreshold will be the % space that the icon takes up during the focus animation.
@@ -102,13 +114,16 @@
     // The denominator for the above formula, which will adjust the scale for the alpha.
     private final float mTextOffsetAdjustedScale;
 
-    StatusMediator(PropertyModel model, Resources resources,
+    private Bitmap mCachedSearchEngineLogoBitmap;
+
+    StatusMediator(PropertyModel model, Resources resources, Context context,
             UrlBarEditingTextStateProvider urlBarEditingTextStateProvider) {
         mModel = model;
         mDelegate = new StatusMediatorDelegate();
         updateColorTheme();
 
         mResources = resources;
+        mContext = context;
         mUrlBarEditingTextStateProvider = urlBarEditingTextStateProvider;
 
         int iconWidth = resources.getDimensionPixelSize(R.dimen.location_bar_status_icon_width);
@@ -290,9 +305,9 @@
                 focusAnimationProgress = MathUtils.clamp(
                         (percent - mTextOffsetThreshold) / mTextOffsetAdjustedScale, 0f, 1f);
             }
-            mModel.set(StatusProperties.STATUS_ALPHA, focusAnimationProgress);
+            mModel.set(StatusProperties.STATUS_ICON_ALPHA, focusAnimationProgress);
         } else {
-            mModel.set(StatusProperties.STATUS_ALPHA, 1f);
+            mModel.set(StatusProperties.STATUS_ICON_ALPHA, 1f);
         }
 
         updateLocationBarIcon();
@@ -416,8 +431,12 @@
      */
     public void updateSearchEngineStatusIcon(boolean shouldShowSearchEngineLogo,
             boolean isSearchEngineGoogle, String searchEngineUrl) {
+        if (!TextUtils.equals(searchEngineUrl, mSearchEngineLogoUrl)) {
+            mCachedSearchEngineLogoBitmap = null;
+        }
         mIsSearchEngineStateSetup = true;
         mIsSearchEngineGoogle = isSearchEngineGoogle;
+        mSearchEngineLogoUrl = searchEngineUrl;
         updateLocationBarIcon();
     }
 
@@ -462,8 +481,8 @@
                               : R.color.locationbar_status_preview_color_light;
         }
 
-        mModel.set(StatusProperties.STATUS_ICON_RES, icon);
-        mModel.set(StatusProperties.STATUS_ICON_TINT_RES, tint);
+        mModel.set(StatusProperties.STATUS_ICON_RESOURCE,
+                icon == 0 ? null : new StatusIconResource(icon, tint));
         mModel.set(StatusProperties.STATUS_ICON_ACCESSIBILITY_TOAST_RES, toast);
     }
 
@@ -489,9 +508,8 @@
                 && mToolbarCommonPropertiesModel.isIncognito();
         if (mDelegate.shouldShowSearchEngineLogo(isIncognito) && mIsSearchEngineStateSetup
                 && (showFocused || showUnfocusedSearchResultsPage)) {
-            setSecurityIconResourceForSearchEngineIcon(isIncognito, (icon) -> {
-                mModel.set(StatusProperties.STATUS_ICON_TINT_RES,
-                        getSecurityIconTintForSearchEngineIcon(icon));
+            getStatusIconResourceForSearchEngineIcon(isIncognito, (statusIconRes) -> {
+                mModel.set(StatusProperties.STATUS_ICON_RESOURCE, statusIconRes);
             });
             return true;
         } else {
@@ -505,35 +523,79 @@
      * the caller which resource has been set.
      *
      * @param isIncognito True if the user is incognito.
-     * @param callback Called when the final value is set for the security icon resource. Meant to
-     *                 give the caller a chance to set the tint for the given resource.
+     * @param resourceCallback Called when the final value is set for the security icon resource.
+     *                         Meant to give the caller a chance to set the tint for the given
+     *                         resource.
      */
-    private void setSecurityIconResourceForSearchEngineIcon(
-            boolean isIncognito, Callback<Integer> callback) {
+    private void getStatusIconResourceForSearchEngineIcon(
+            boolean isIncognito, Callback<StatusIconResource> resourceCallback) {
         mShouldCancelCustomFavicon = false;
         // If the current url text is a valid url, then swap the dse icon for a globe.
         if (mUrlBarTextIsValidUrl) {
-            mModel.set(StatusProperties.STATUS_ICON_RES, R.drawable.ic_globe_24dp);
-            callback.onResult(R.drawable.ic_globe_24dp);
+            resourceCallback.onResult(new StatusIconResource(R.drawable.ic_globe_24dp,
+                    getSecurityIconTintForSearchEngineIcon(R.drawable.ic_globe_24dp)));
         } else if (mIsSearchEngineGoogle) {
-            int icon = mDelegate.shouldShowSearchLoupeEverywhere(isIncognito)
-                    ? R.drawable.ic_search
-                    : R.drawable.ic_logo_googleg_20dp;
-            mModel.set(StatusProperties.STATUS_ICON_RES, icon);
-            callback.onResult(icon);
+            if (mDelegate.shouldShowSearchLoupeEverywhere(isIncognito)) {
+                resourceCallback.onResult(new StatusIconResource(R.drawable.ic_search,
+                        getSecurityIconTintForSearchEngineIcon(R.drawable.ic_search)));
+            } else {
+                resourceCallback.onResult(
+                        new StatusIconResource(mSearchEngineLogoUrl, getGoogleGBitmap(), 0));
+            }
         } else {
-            mModel.set(StatusProperties.STATUS_ICON_RES, R.drawable.ic_search);
-            callback.onResult(R.drawable.ic_search);
-            if (!mDelegate.shouldShowSearchLoupeEverywhere(isIncognito)) {
-                mDelegate.getSearchEngineLogoFavicon(mResources, (favicon) -> {
-                    if (favicon == null || mShouldCancelCustomFavicon) return;
-                    mModel.set(StatusProperties.STATUS_ICON, favicon);
-                    callback.onResult(0);
-                });
+            if (mDelegate.shouldShowSearchLoupeEverywhere(isIncognito)) {
+                resourceCallback.onResult(new StatusIconResource(R.drawable.ic_search,
+                        getSecurityIconTintForSearchEngineIcon(R.drawable.ic_search)));
+            } else {
+                getNonGoogleSearchEngineIconBitmap(
+                        statusIconResource -> { resourceCallback.onResult(statusIconResource); });
             }
         }
     }
 
+    /** @return The Google G {@link Bitmap}. */
+    private Bitmap getGoogleGBitmap() {
+        if (mDelegate != null && mToolbarCommonPropertiesModel != null
+                && mDelegate.shouldShowSearchEngineLogo(
+                        mToolbarCommonPropertiesModel.isIncognito())) {
+            if (mCachedSearchEngineLogoBitmap == null) {
+                int outlineSize =
+                        mResources.getDimensionPixelSize(R.dimen.location_bar_status_icon_width);
+                Drawable googleGDrawable =
+                        AppCompatResources.getDrawable(mContext, R.drawable.ic_logo_googleg_20dp);
+                mCachedSearchEngineLogoBitmap =
+                        Bitmap.createBitmap(outlineSize, outlineSize, Config.ARGB_8888);
+                Canvas canvas = new Canvas(mCachedSearchEngineLogoBitmap);
+                canvas.translate((outlineSize - googleGDrawable.getIntrinsicWidth()) / 2f,
+                        (outlineSize - googleGDrawable.getIntrinsicHeight()) / 2f);
+                googleGDrawable.setBounds(0, 0, googleGDrawable.getIntrinsicWidth(),
+                        googleGDrawable.getIntrinsicHeight());
+                googleGDrawable.draw(canvas);
+            }
+        }
+
+        return mCachedSearchEngineLogoBitmap;
+    }
+
+    /** @return The non-Google search engine icon {@link Bitmap}. */
+    private void getNonGoogleSearchEngineIconBitmap(final Callback<StatusIconResource> callback) {
+        if (mCachedSearchEngineLogoBitmap != null) {
+            callback.onResult(
+                    new StatusIconResource(mSearchEngineLogoUrl, mCachedSearchEngineLogoBitmap, 0));
+        }
+
+        mDelegate.getSearchEngineLogoFavicon(mResources, (favicon) -> {
+            if (favicon == null || mShouldCancelCustomFavicon) {
+                callback.onResult(new StatusIconResource(R.drawable.ic_search, 0));
+                return;
+            }
+
+            mCachedSearchEngineLogoBitmap = favicon;
+            callback.onResult(
+                    new StatusIconResource(mSearchEngineLogoUrl, mCachedSearchEngineLogoBitmap, 0));
+        });
+    }
+
     /**
      * Get the icon tint for the given search engine icon resource.
      * @param icon The icon resource for the search engine icon.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusProperties.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusProperties.java
index d6e10c7..4bae7c1 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusProperties.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusProperties.java
@@ -4,9 +4,21 @@
 
 package org.chromium.chrome.browser.omnibox.status;
 
+import android.content.Context;
+import android.content.res.Resources;
 import android.graphics.Bitmap;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
+import android.support.v4.graphics.drawable.DrawableCompat;
+import android.support.v4.util.ObjectsCompat;
+import android.support.v7.content.res.AppCompatResources;
 import android.view.View;
 
+import androidx.annotation.ColorRes;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.Nullable;
+
+import org.chromium.ui.UiUtils;
 import org.chromium.ui.modelutil.PropertyKey;
 import org.chromium.ui.modelutil.PropertyModel.WritableBooleanPropertyKey;
 import org.chromium.ui.modelutil.PropertyModel.WritableFloatPropertyKey;
@@ -17,21 +29,87 @@
  * Model for the Status view.
  */
 class StatusProperties {
+    // TODO(wylieb): Investigate the case where we only want to swap the tint (if any).
+    /** Encapsulates an icon and tint to allow atomic drawable updates for StatusView. */
+    static class StatusIconResource {
+        private @DrawableRes Integer mIconRes;
+        private @ColorRes int mTint;
+        private String mIconIdentifier;
+        private Bitmap mBitmap;
+
+        /** Constructor for a custom bitmap. */
+        StatusIconResource(String iconIdentifier, Bitmap bitmap, @ColorRes int tint) {
+            mIconIdentifier = iconIdentifier;
+            mBitmap = bitmap;
+            mTint = tint;
+        }
+
+        /** Constructor for an Android resource. */
+        StatusIconResource(@DrawableRes int iconRes, @ColorRes int tint) {
+            mIconRes = iconRes;
+            mTint = tint;
+        }
+
+        /** @return The tint associated with this resource. */
+        @ColorRes
+        int getTint() {
+            return mTint;
+        }
+
+        /** @return The icon res. */
+        @DrawableRes
+        int getIconResForTesting() {
+            if (mIconRes == null) return 0;
+            return mIconRes;
+        }
+
+        /** @return The {@link Drawable} for this StatusIconResource. */
+        Drawable getDrawable(Context context, Resources resources) {
+            if (mBitmap != null) {
+                Drawable drawable = new BitmapDrawable(resources, mBitmap);
+                if (mTint != 0) {
+                    DrawableCompat.setTintList(
+                            drawable, AppCompatResources.getColorStateList(context, mTint));
+                }
+                return drawable;
+            } else if (mIconRes != null) {
+                if (mTint == 0) {
+                    return AppCompatResources.getDrawable(context, mIconRes);
+                }
+                return UiUtils.getTintedDrawable(context, mIconRes, mTint);
+            } else {
+                return null;
+            }
+        }
+
+        /** @return The icon identifier, used for testing. */
+        @Nullable
+        String getIconIdentifierForTesting() {
+            return mIconIdentifier;
+        }
+
+        @Override
+        public boolean equals(@Nullable Object other) {
+            if (!(other instanceof StatusIconResource)) return false;
+
+            StatusIconResource otherResource = (StatusIconResource) other;
+            if (mTint != otherResource.mTint) return false;
+            if (!ObjectsCompat.equals(mIconRes, otherResource.mIconRes)) return false;
+            if (mBitmap != null) return mBitmap == otherResource.mBitmap;
+
+            return true;
+        }
+    }
+
     /** Enables / disables animations. */
     static final WritableBooleanPropertyKey ANIMATIONS_ENABLED = new WritableBooleanPropertyKey();
 
-    /** Specifies navigation icon resource type .*/
-    static final WritableIntPropertyKey STATUS_ICON_RES = new WritableIntPropertyKey();
-
-    /** Specifies color tint for navigation icon. */
-    static final WritableIntPropertyKey STATUS_ICON_TINT_RES = new WritableIntPropertyKey();
-
     /** Specifies the icon. */
-    static final WritableObjectPropertyKey<Bitmap> STATUS_ICON =
-            new WritableObjectPropertyKey<>(true);
+    static final WritableObjectPropertyKey<StatusIconResource> STATUS_ICON_RESOURCE =
+            new WritableObjectPropertyKey<>();
 
     /** Specifies the icon alpha. */
-    static final WritableFloatPropertyKey STATUS_ALPHA = new WritableFloatPropertyKey();
+    static final WritableFloatPropertyKey STATUS_ICON_ALPHA = new WritableFloatPropertyKey();
 
     /** Specifies if the icon should be shown or not. */
     static final WritableBooleanPropertyKey SHOW_STATUS_ICON = new WritableBooleanPropertyKey();
@@ -69,8 +147,8 @@
             new WritableBooleanPropertyKey();
 
     public static final PropertyKey[] ALL_KEYS = new PropertyKey[] {ANIMATIONS_ENABLED,
-            STATUS_ICON_ACCESSIBILITY_TOAST_RES, STATUS_ICON_RES, STATUS_ICON_TINT_RES, STATUS_ICON,
-            STATUS_ALPHA, SHOW_STATUS_ICON, STATUS_ICON_DESCRIPTION_RES, SEPARATOR_COLOR_RES,
+            STATUS_ICON_ACCESSIBILITY_TOAST_RES, STATUS_ICON_RESOURCE, STATUS_ICON_ALPHA,
+            SHOW_STATUS_ICON, STATUS_ICON_DESCRIPTION_RES, SEPARATOR_COLOR_RES,
             STATUS_CLICK_LISTENER, VERBOSE_STATUS_TEXT_COLOR_RES, VERBOSE_STATUS_TEXT_STRING_RES,
             VERBOSE_STATUS_TEXT_VISIBLE, VERBOSE_STATUS_TEXT_WIDTH, INCOGNITO_BADGE_VISIBLE};
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusView.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusView.java
index ea90ef8b..08be86b1 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusView.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusView.java
@@ -7,14 +7,9 @@
 import static org.chromium.chrome.browser.toolbar.top.ToolbarPhone.URL_FOCUS_CHANGE_ANIMATION_DURATION_MS;
 
 import android.content.Context;
-import android.graphics.Bitmap;
-import android.graphics.Bitmap.Config;
-import android.graphics.Canvas;
 import android.graphics.Rect;
-import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.TransitionDrawable;
-import android.support.v7.content.res.AppCompatResources;
 import android.util.AttributeSet;
 import android.view.TouchDelegate;
 import android.view.View;
@@ -24,7 +19,6 @@
 import android.widget.LinearLayout;
 import android.widget.TextView;
 import androidx.annotation.ColorRes;
-import androidx.annotation.DrawableRes;
 import androidx.annotation.Nullable;
 import androidx.annotation.StringRes;
 import androidx.annotation.VisibleForTesting;
@@ -33,7 +27,6 @@
 import org.chromium.chrome.browser.omnibox.SearchEngineLogoUtils;
 import org.chromium.chrome.browser.toolbar.ToolbarCommonPropertiesModel;
 import org.chromium.chrome.browser.ui.widget.CompositeTouchDelegate;
-import org.chromium.ui.UiUtils;
 import org.chromium.ui.widget.Toast;
 
 /**
@@ -68,12 +61,9 @@
     private boolean mAnimatingStatusIconShow;
     private boolean mAnimatingStatusIconHide;
 
-    private @DrawableRes int mIconRes;
-    private @ColorRes int mIconTintRes;
     private @StringRes int mAccessibilityToast;
 
-    private Bitmap mIconBitmap;
-    private Bitmap mCachedGoogleG;
+    private Drawable mStatusIconDrawable;
 
     private TouchDelegate mTouchDelegate;
     private CompositeTouchDelegate mCompositeTouchDelegate;
@@ -215,22 +205,8 @@
      * Start animating transition of status icon.
      */
     private void animateStatusIcon() {
-        Drawable targetIcon;
-        boolean wantIconHidden = false;
-
-        if (mIconRes != 0 && mIconTintRes != 0) {
-            targetIcon = UiUtils.getTintedDrawable(getContext(), mIconRes, mIconTintRes);
-        } else if (mIconRes != 0) {
-            targetIcon = AppCompatResources.getDrawable(getContext(), mIconRes);
-        } else if (mIconBitmap != null) {
-            targetIcon = new BitmapDrawable(getResources(), mIconBitmap);
-        } else {
-            // Do not specify any icon here and do not replace existing icon, either.
-            // TransitionDrawable uses different timing mechanism than Animations, and that may,
-            // depending on animation scale factor, produce a visible glitch.
-            targetIcon = null;
-            wantIconHidden = true;
-        }
+        Drawable targetIcon = mStatusIconDrawable;
+        boolean wantIconHidden = mStatusIconDrawable == null;
 
         // Ensure proper handling of animations.
         // Possible variants:
@@ -317,61 +293,8 @@
         mAnimationsEnabled = enabled;
     }
 
-    /**
-     * Specify navigation button image.
-     */
-    void setStatusIcon(@DrawableRes int imageRes) {
-        mIconRes = imageRes;
-        // mIconRes and mIconBitmap are mutually exclusive and therefore when one is set, the other
-        // should be unset.
-        mIconBitmap = null;
-
-        // Note: To workaround for TransitionDrawable resizing mismatching layers (see
-        // {@link StatusView#animateStatusIcon} when passed into LayerDrawable.LayerState), a 20dp
-        // google g is loaded and drawn on a R.dimen.location_bar_status_icon_width sized background
-        if (mDelegate != null && mToolbarCommonPropertiesModel != null
-                && mDelegate.shouldShowSearchEngineLogo(mToolbarCommonPropertiesModel.isIncognito())
-                && mIconRes == R.drawable.ic_logo_googleg_20dp) {
-            if (mCachedGoogleG == null) {
-                int outlineSize = getResources().getDimensionPixelSize(
-                        R.dimen.location_bar_status_icon_width);
-                Drawable googleGDrawable = AppCompatResources.getDrawable(
-                        getContext(), R.drawable.ic_logo_googleg_20dp);
-                mCachedGoogleG = Bitmap.createBitmap(outlineSize, outlineSize, Config.ARGB_8888);
-                Canvas canvas = new Canvas(mCachedGoogleG);
-                canvas.translate((outlineSize - googleGDrawable.getIntrinsicWidth()) / 2f,
-                        (outlineSize - googleGDrawable.getIntrinsicHeight()) / 2f);
-                googleGDrawable.setBounds(0, 0, googleGDrawable.getIntrinsicWidth(),
-                        googleGDrawable.getIntrinsicHeight());
-                googleGDrawable.draw(canvas);
-            }
-            mIconBitmap = mCachedGoogleG;
-            mIconRes = 0;
-        }
-        animateStatusIcon();
-    }
-
-    /**
-     * Specify navigation icon tint color.
-     */
-    void setStatusIconTint(@ColorRes int colorRes) {
-        // TODO(ender): combine icon and tint into a single class describing icon properties to
-        // avoid multi-step crossfade animation configuration.
-        // This is technically still invisible, since animations only begin after all operations in
-        // UI thread (including status icon configuration) are complete, but can be avoided
-        // entirely, making the code also more intuitive.
-        mIconTintRes = colorRes;
-        animateStatusIcon();
-    }
-
-    /**
-     * Specify the icon drawable.
-     */
-    void setStatusIcon(Bitmap icon) {
-        mIconBitmap = icon;
-        // mIconRes and mIconBitmap are mutually exclusive and therefore when one is set, the other
-        // should be unset.
-        mIconRes = 0;
+    void setStatusIconResources(Drawable statusIconDrawable) {
+        mStatusIconDrawable = statusIconDrawable;
         animateStatusIcon();
     }
 
@@ -490,8 +413,8 @@
         if (mDelegate.isSearchEngineLogoEnabled()) {
             endPadding = 0;
         } else {
-            endPadding = mIconRes != 0 ? mIncognitoBadgeEndPaddingWithIcon
-                                       : mIncognitoBadgeEndPaddingWithoutIcon;
+            endPadding = isIconVisible() ? mIncognitoBadgeEndPaddingWithIcon
+                                         : mIncognitoBadgeEndPaddingWithoutIcon;
         }
         mIncognitoBadge.setPaddingRelative(mIncognitoBadge.getPaddingStart(),
                 mIncognitoBadge.getPaddingTop(), endPadding, mIncognitoBadge.getPaddingBottom());
@@ -582,7 +505,7 @@
 
     /** @return True if the status icon is currently visible. */
     private boolean isIconVisible() {
-        return (mIconRes != 0 || mIconBitmap != null) && mIconView.getVisibility() != GONE
+        return mStatusIconDrawable != null && mIconView.getVisibility() != GONE
                 && mIconView.getAlpha() != 0;
     }
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusViewBinder.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusViewBinder.java
index 1e55218..0fc6839 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusViewBinder.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusViewBinder.java
@@ -4,6 +4,7 @@
 
 package org.chromium.chrome.browser.omnibox.status;
 
+import org.chromium.chrome.browser.omnibox.status.StatusProperties.StatusIconResource;
 import org.chromium.ui.modelutil.PropertyKey;
 import org.chromium.ui.modelutil.PropertyModel;
 import org.chromium.ui.modelutil.PropertyModelChangeProcessor.ViewBinder;
@@ -18,19 +19,20 @@
     public void bind(PropertyModel model, StatusView view, PropertyKey propertyKey) {
         if (StatusProperties.ANIMATIONS_ENABLED.equals(propertyKey)) {
             view.setAnimationsEnabled(model.get(StatusProperties.ANIMATIONS_ENABLED));
-        } else if (StatusProperties.STATUS_ICON_RES.equals(propertyKey)) {
-            view.setStatusIcon(model.get(StatusProperties.STATUS_ICON_RES));
-        } else if (StatusProperties.STATUS_ICON.equals(propertyKey)) {
-            view.setStatusIcon(model.get(StatusProperties.STATUS_ICON));
-        } else if (StatusProperties.STATUS_ALPHA.equals(propertyKey)) {
-            view.setStatusIconAlpha(model.get(StatusProperties.STATUS_ALPHA));
+        } else if (StatusProperties.STATUS_ICON_RESOURCE.equals(propertyKey)) {
+            StatusIconResource res = model.get(StatusProperties.STATUS_ICON_RESOURCE);
+            if (res == null) {
+                view.setStatusIconResources(null);
+                return;
+            }
+            view.setStatusIconResources(res.getDrawable(view.getContext(), view.getResources()));
+        } else if (StatusProperties.STATUS_ICON_ALPHA.equals(propertyKey)) {
+            view.setStatusIconAlpha(model.get(StatusProperties.STATUS_ICON_ALPHA));
         } else if (StatusProperties.SHOW_STATUS_ICON.equals(propertyKey)) {
             view.setStatusIconShown(model.get(StatusProperties.SHOW_STATUS_ICON));
         } else if (StatusProperties.STATUS_ICON_ACCESSIBILITY_TOAST_RES.equals(propertyKey)) {
             view.setStatusIconAccessibilityToast(
                     model.get(StatusProperties.STATUS_ICON_ACCESSIBILITY_TOAST_RES));
-        } else if (StatusProperties.STATUS_ICON_TINT_RES.equals(propertyKey)) {
-            view.setStatusIconTint(model.get(StatusProperties.STATUS_ICON_TINT_RES));
         } else if (StatusProperties.STATUS_ICON_DESCRIPTION_RES.equals(propertyKey)) {
             view.setStatusIconDescription(model.get(StatusProperties.STATUS_ICON_DESCRIPTION_RES));
         } else if (StatusProperties.SEPARATOR_COLOR_RES.equals(propertyKey)) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusViewCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusViewCoordinator.java
index 5ad1471..aabca5f1 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusViewCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/status/StatusViewCoordinator.java
@@ -45,13 +45,11 @@
         mIsTablet = isTablet;
         mStatusView = statusView;
 
-        mModel = new PropertyModel.Builder(StatusProperties.ALL_KEYS)
-                         .with(StatusProperties.STATUS_ICON_TINT_RES, R.color.divider_bg_color)
-                         .build();
+        mModel = new PropertyModel(StatusProperties.ALL_KEYS);
 
         PropertyModelChangeProcessor.create(mModel, mStatusView, new StatusViewBinder());
-        mMediator = new StatusMediator(
-                mModel, mStatusView.getResources(), urlBarEditingTextStateProvider);
+        mMediator = new StatusMediator(mModel, mStatusView.getResources(), mStatusView.getContext(),
+                urlBarEditingTextStateProvider);
 
         Resources res = mStatusView.getResources();
         mMediator.setUrlMinWidth(res.getDimensionPixelSize(R.dimen.location_bar_min_url_width)
@@ -163,10 +161,11 @@
     /**
      * @return The ID of the drawable currently shown in the security icon.
      */
-    @VisibleForTesting
     @DrawableRes
-    public int getSecurityIconResourceId() {
-        return mModel.get(StatusProperties.STATUS_ICON_RES);
+    public int getSecurityIconResourceIdForTesting() {
+        return mModel.get(StatusProperties.STATUS_ICON_RESOURCE) == null
+                ? 0
+                : mModel.get(StatusProperties.STATUS_ICON_RESOURCE).getIconResForTesting();
     }
 
     /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/basic/SuggestionView.java b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/basic/SuggestionView.java
index 33f4a4d8..7541344 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/basic/SuggestionView.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omnibox/suggestions/basic/SuggestionView.java
@@ -83,11 +83,12 @@
     @Override
     protected void onMeasure(int widthSpec, int heightSpec) {
         final int maxWidth = MeasureSpec.getSize(widthSpec);
+        final int minimumHeight = getMinimumHeight();
 
         mTextLine1.measure(MeasureSpec.makeMeasureSpec(maxWidth, MeasureSpec.AT_MOST),
-                MeasureSpec.makeMeasureSpec(getMinimumHeight(), MeasureSpec.AT_MOST));
+                MeasureSpec.makeMeasureSpec(minimumHeight, MeasureSpec.AT_MOST));
         mTextLine2.measure(MeasureSpec.makeMeasureSpec(maxWidth, MeasureSpec.AT_MOST),
-                MeasureSpec.makeMeasureSpec(getMinimumHeight(), MeasureSpec.AT_MOST));
+                MeasureSpec.makeMeasureSpec(minimumHeight, MeasureSpec.AT_MOST));
 
         if (MeasureSpec.getMode(heightSpec) == MeasureSpec.EXACTLY) {
             super.onMeasure(widthSpec, heightSpec);
@@ -96,7 +97,11 @@
             int additionalPadding = getResources().getDimensionPixelSize(
                     R.dimen.omnibox_suggestion_text_vertical_padding);
             desiredHeight += additionalPadding;
-            desiredHeight = Math.min(getMinimumHeight(), desiredHeight);
+            desiredHeight = Math.max(minimumHeight, desiredHeight);
+            if (MeasureSpec.getMode(heightSpec) == MeasureSpec.AT_MOST) {
+                desiredHeight = Math.min(desiredHeight, MeasureSpec.getSize(heightSpec));
+            }
+
             super.onMeasure(
                     widthSpec, MeasureSpec.makeMeasureSpec(desiredHeight, MeasureSpec.EXACTLY));
         }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceManager.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceManager.java
index 4ff864b..743fba06 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceManager.java
@@ -94,38 +94,4 @@
     public void clearNewTabPageSigninPromoSuppressionPeriodStart() {
         mManager.removeKey(ChromePreferenceKeys.NTP_SIGNIN_PROMO_SUPPRESSION_PERIOD_START);
     }
-
-    /** Do not modify the set returned by this method. */
-    private Set<String> getTrustedWebActivityDisclosureAcceptedPackages() {
-        return mManager.readStringSet(
-                ChromePreferenceKeys.TRUSTED_WEB_ACTIVITY_DISCLOSURE_ACCEPTED_PACKAGES);
-    }
-
-    /**
-     * Sets that the user has accepted the Trusted Web Activity "Running in Chrome" disclosure for
-     * TWAs launched by the given package.
-     */
-    public void setUserAcceptedTwaDisclosureForPackage(String packageName) {
-        mManager.addToStringSet(
-                ChromePreferenceKeys.TRUSTED_WEB_ACTIVITY_DISCLOSURE_ACCEPTED_PACKAGES,
-                packageName);
-    }
-
-    /**
-     * Removes the record of accepting the Trusted Web Activity "Running in Chrome" disclosure for
-     * TWAs launched by the given package.
-     */
-    public void removeTwaDisclosureAcceptanceForPackage(String packageName) {
-        mManager.removeFromStringSet(
-                ChromePreferenceKeys.TRUSTED_WEB_ACTIVITY_DISCLOSURE_ACCEPTED_PACKAGES,
-                packageName);
-    }
-
-    /**
-     * Checks whether the given package was previously passed to
-     * {@link #setUserAcceptedTwaDisclosureForPackage(String)}.
-     */
-    public boolean hasUserAcceptedTwaDisclosureForPackage(String packageName) {
-        return getTrustedWebActivityDisclosureAcceptedPackages().contains(packageName);
-    }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/website/AddExceptionPreference.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/website/AddExceptionPreference.java
index bea8fcda..5bcf7ce7 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/website/AddExceptionPreference.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/website/AddExceptionPreference.java
@@ -4,6 +4,8 @@
 
 package org.chromium.chrome.browser.settings.website;
 
+import static org.chromium.chrome.browser.settings.website.WebsitePreferenceBridge.SITE_WILDCARD;
+
 import android.content.Context;
 import android.content.DialogInterface;
 import android.content.res.Resources;
@@ -19,11 +21,13 @@
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.Button;
+import android.widget.CheckBox;
 import android.widget.EditText;
 import android.widget.TextView;
 
 import org.chromium.base.ApiCompatibilityUtils;
 import org.chromium.chrome.R;
+import org.chromium.chrome.browser.ChromeFeatureList;
 import org.chromium.ui.KeyboardVisibilityDelegate;
 
 /**
@@ -41,16 +45,26 @@
     // The custom message to show in the dialog.
     private String mDialogMessage;
 
+    // The Site Settings Category of the exception we are adding.
+    private final SiteSettingsCategory mCategory;
+
     // The colors for the site URL EditText
     private int mErrorColor;
     private int mDefaultColor;
 
     /**
-     * An interface to implement to get a callback when a site needs to be added.
-     * @param hostname The hostname to add.
+     * An interface to implement to get a callback when a site exception needs to be added.
      */
     public interface SiteAddedCallback {
-        public void onAddSite(String hostname);
+        /**
+         * The callback for the site exception that needs to be added.
+         * @param primaryPattern The primary pattern for the exception, usually the hostname to add,
+         * or the wildcard indicating all hosts
+         * @param secondaryPattern The secondary pattern for the exception, indicating on which
+         * sites the primary pattern is affected. Usually the wildcard or a specific host (for
+         * third-party cookies).
+         */
+        public void onAddSite(String primaryPattern, String secondaryPattern);
     }
 
     /**
@@ -60,10 +74,11 @@
      * @param message The custom message to show in the dialog.
      * @param callback A callback to receive notifications that an exception has been added.
      */
-    public AddExceptionPreference(
-            Context context, String key, String message, SiteAddedCallback callback) {
+    public AddExceptionPreference(Context context, String key, String message,
+            SiteSettingsCategory category, SiteAddedCallback callback) {
         super(context);
         mDialogMessage = message;
+        mCategory = category;
         mSiteAddedCallback = callback;
         setOnPreferenceClickListener(this);
 
@@ -103,12 +118,29 @@
                 Context.LAYOUT_INFLATER_SERVICE);
         View view = inflater.inflate(R.layout.add_site_dialog, null);
         final EditText input = (EditText) view.findViewById(R.id.site);
+        final CheckBox thirdPartyExceptionsBox =
+                (CheckBox) view.findViewById(R.id.third_parties_exception_checkbox);
+
+        if (!mCategory.showSites(SiteSettingsCategory.Type.COOKIES)
+                || !ChromeFeatureList.isEnabled(
+                        ChromeFeatureList
+                                .IMPROVED_COOKIE_CONTROLS_FOR_THIRD_PARTY_COOKIE_BLOCKING)) {
+            thirdPartyExceptionsBox.setVisibility(View.GONE);
+            thirdPartyExceptionsBox.setChecked(false);
+        }
 
         DialogInterface.OnClickListener onClickListener = new DialogInterface.OnClickListener() {
             @Override
             public void onClick(DialogInterface dialog, int button) {
                 if (button == AlertDialog.BUTTON_POSITIVE) {
-                    mSiteAddedCallback.onAddSite(input.getText().toString().trim());
+                    boolean isThirdPartyException = thirdPartyExceptionsBox.isChecked();
+                    String hostname = input.getText().toString().trim();
+
+                    // If a user chooses "all cookies, on this site only", set wildcard as primary
+                    String primary = isThirdPartyException ? SITE_WILDCARD : hostname;
+                    String secondary = !isThirdPartyException ? SITE_WILDCARD : hostname;
+
+                    mSiteAddedCallback.onAddSite(primary, secondary);
                 } else {
                     dialog.dismiss();
                 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/website/ContentSettingException.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/website/ContentSettingException.java
index af03b5f..ec7652df 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/website/ContentSettingException.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/website/ContentSettingException.java
@@ -4,6 +4,8 @@
 
 package org.chromium.chrome.browser.settings.website;
 
+import static org.chromium.chrome.browser.settings.website.WebsitePreferenceBridge.SITE_WILDCARD;
+
 import androidx.annotation.IntDef;
 import androidx.annotation.Nullable;
 
@@ -39,27 +41,43 @@
     }
 
     private final int mContentSettingType;
-    private final String mPattern;
+    private final String mPrimaryPattern;
+    private final String mSecondaryPattern;
     private final @ContentSettingValues @Nullable Integer mContentSetting;
     private final String mSource;
 
     /**
      * Construct a ContentSettingException.
      * @param type The content setting type this exception covers.
-     * @param pattern The host/domain pattern this exception covers.
+     * @param primaryPattern The primary host/domain pattern this exception covers.
+     * @param secondaryPattern The secondary host/domain pattern this exception covers.
      * @param setting The setting for this exception, e.g. ALLOW or BLOCK.
      * @param source The source for this exception, e.g. "policy".
      */
-    public ContentSettingException(int type, String pattern,
+    public ContentSettingException(int type, String primaryPattern, String secondaryPattern,
             @ContentSettingValues @Nullable Integer setting, String source) {
         mContentSettingType = type;
-        mPattern = pattern;
+        mPrimaryPattern = primaryPattern;
+        mSecondaryPattern = secondaryPattern;
         mContentSetting = setting;
         mSource = source;
     }
 
-    public String getPattern() {
-        return mPattern;
+    /**
+     * Construct a ContentSettingException.
+     * Same as above but defaults secondaryPattern to wildcard.
+     */
+    public ContentSettingException(int type, String primaryPattern,
+            @ContentSettingValues @Nullable Integer setting, String source) {
+        this(type, primaryPattern, SITE_WILDCARD, setting, source);
+    }
+
+    public String getPrimaryPattern() {
+        return mPrimaryPattern;
+    }
+
+    public String getSecondaryPattern() {
+        return mSecondaryPattern;
     }
 
     public String getSource() {
@@ -78,7 +96,8 @@
      * Sets the content setting value for this exception.
      */
     public void setContentSetting(@ContentSettingValues @Nullable Integer value) {
-        WebsitePreferenceBridge.setContentSettingForPattern(mContentSettingType, mPattern, value);
+        WebsitePreferenceBridge.setContentSettingForPattern(
+                mContentSettingType, mPrimaryPattern, mSecondaryPattern, value);
     }
 
     public static @ContentSettingsType int getContentSettingsType(@Type int type) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/website/SingleCategoryPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/website/SingleCategoryPreferences.java
index 0af515f..bf73f212 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/website/SingleCategoryPreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/website/SingleCategoryPreferences.java
@@ -5,6 +5,7 @@
 package org.chromium.chrome.browser.settings.website;
 
 import static org.chromium.chrome.browser.settings.SearchUtils.handleSearchNavigation;
+import static org.chromium.chrome.browser.settings.website.WebsitePreferenceBridge.SITE_WILDCARD;
 
 import android.content.Context;
 import android.content.DialogInterface;
@@ -502,7 +503,7 @@
                 } else {
                     getPreferenceScreen().addPreference(
                             new AddExceptionPreference(getStyledContext(), ADD_EXCEPTION_KEY,
-                                    getAddExceptionDialogMessage(), this));
+                                    getAddExceptionDialogMessage(), mCategory, this));
                 }
             }
 
@@ -580,19 +581,22 @@
 
     // AddExceptionPreference.SiteAddedCallback:
     @Override
-    public void onAddSite(String hostname) {
+    public void onAddSite(String primaryPattern, String secondaryPattern) {
         int setting =
                 (WebsitePreferenceBridge.isCategoryEnabled(mCategory.getContentSettingsType()))
                 ? ContentSettingValues.BLOCK
                 : ContentSettingValues.ALLOW;
 
         WebsitePreferenceBridge.setContentSettingForPattern(
-                mCategory.getContentSettingsType(), hostname, setting);
+                mCategory.getContentSettingsType(), primaryPattern, secondaryPattern, setting);
+
+        String hostname = primaryPattern.equals(SITE_WILDCARD) ? secondaryPattern : primaryPattern;
         Toast.makeText(getActivity(),
-                String.format(getActivity().getString(
-                        R.string.website_settings_add_site_toast),
-                        hostname),
-                Toast.LENGTH_SHORT).show();
+                     String.format(
+                             getActivity().getString(R.string.website_settings_add_site_toast),
+                             hostname),
+                     Toast.LENGTH_SHORT)
+                .show();
 
         getInfoForOrigins();
 
@@ -638,8 +642,8 @@
             exception = true;
         }
         if (exception) {
-            getPreferenceScreen().addPreference(new AddExceptionPreference(
-                    getStyledContext(), ADD_EXCEPTION_KEY, getAddExceptionDialogMessage(), this));
+            getPreferenceScreen().addPreference(new AddExceptionPreference(getStyledContext(),
+                    ADD_EXCEPTION_KEY, getAddExceptionDialogMessage(), mCategory, this));
         }
     }
 
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/website/SingleWebsitePreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/website/SingleWebsitePreferences.java
index 25537136..7093674 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/website/SingleWebsitePreferences.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/website/SingleWebsitePreferences.java
@@ -4,6 +4,8 @@
 
 package org.chromium.chrome.browser.settings.website;
 
+import static org.chromium.chrome.browser.settings.website.WebsitePreferenceBridge.SITE_WILDCARD;
+
 import android.app.Activity;
 import android.content.Context;
 import android.content.DialogInterface;
@@ -256,7 +258,7 @@
             for (ChosenObjectInfo objectInfo : other.getChosenObjectInfo()) {
                 if (origin.equals(objectInfo.getOrigin())
                         && (objectInfo.getEmbedder() == null
-                                   || objectInfo.getEmbedder().equals("*"))) {
+                                || objectInfo.getEmbedder().equals(SITE_WILDCARD))) {
                     merged.addChosenObjectInfo(objectInfo);
                 }
             }
@@ -285,7 +287,8 @@
     private static boolean permissionInfoIsForTopLevelOrigin(PermissionInfo info, String origin) {
         // TODO(mvanouwerkerk): Find a more generic place for this method.
         return origin.equals(info.getOrigin())
-                && (origin.equals(info.getEmbedderSafe()) || "*".equals(info.getEmbedderSafe()));
+                && (origin.equals(info.getEmbedderSafe())
+                        || SITE_WILDCARD.equals(info.getEmbedderSafe()));
     }
 
     /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/website/Website.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/website/Website.java
index 02a45d59..6df4c9bc 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/website/Website.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/website/Website.java
@@ -4,6 +4,8 @@
 
 package org.chromium.chrome.browser.settings.website;
 
+import static org.chromium.chrome.browser.settings.website.WebsitePreferenceBridge.SITE_WILDCARD;
+
 import androidx.annotation.Nullable;
 
 import org.chromium.base.MathUtils;
@@ -60,13 +62,34 @@
         return mOrigin;
     }
 
-    public String getTitle() {
-        return mOrigin.getTitle();
+    public WebsiteAddress getEmbedder() {
+        return mEmbedder;
     }
 
-    public String getSummary() {
-        if (mEmbedder == null) return null;
-        return mEmbedder.getTitle();
+    public String getTitle() {
+        return getMainAddress().getTitle();
+    }
+
+    public boolean representsThirdPartiesOnSite() {
+        return mOrigin.getTitle().equals(SITE_WILDCARD) && mEmbedder != null
+                && !mEmbedder.getTitle().equals(SITE_WILDCARD);
+    }
+
+    private WebsiteAddress getMainAddress() {
+        if (representsThirdPartiesOnSite()) {
+            return mEmbedder;
+        }
+        return mOrigin;
+    }
+
+    /**
+     * Returns whichever WebsiteAddress is used to provide additional information. This will
+     * either return null (representing the wildcard) if it a 3P exception, or the mEmbedder
+     * (which may not be null, such as in the "a.com, b.com" origin combination).
+     */
+    private WebsiteAddress getAdditionalInformationAddress() {
+        if (representsThirdPartiesOnSite()) return null;
+        return mEmbedder;
     }
 
     /**
@@ -75,11 +98,19 @@
      */
     public int compareByAddressTo(Website to) {
         if (this == to) return 0;
-        int originComparison = mOrigin.compareTo(to.mOrigin);
+
+        // We want Website instances that represent third parties to be ordered beside other
+        // Website instances with the same "main site".
+        int originComparison = getMainAddress().compareTo(to.getMainAddress());
+
         if (originComparison == 0) {
-            if (mEmbedder == null) return to.mEmbedder == null ? 0 : -1;
-            if (to.mEmbedder == null) return 1;
-            return mEmbedder.compareTo(to.mEmbedder);
+            if (getAdditionalInformationAddress() == null) {
+                return to.getAdditionalInformationAddress() == null ? 0 : -1;
+            } else if (to.getAdditionalInformationAddress() == null) {
+                return 1;
+            }
+            return getAdditionalInformationAddress().compareTo(
+                    to.getAdditionalInformationAddress());
         }
         return originComparison;
     }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/website/WebsitePermissionsFetcher.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/website/WebsitePermissionsFetcher.java
index d77629b..a4f0aa64 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/website/WebsitePermissionsFetcher.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/website/WebsitePermissionsFetcher.java
@@ -4,6 +4,8 @@
 
 package org.chromium.chrome.browser.settings.website;
 
+import static org.chromium.chrome.browser.settings.website.WebsitePreferenceBridge.SITE_WILDCARD;
+
 import android.util.Pair;
 
 import androidx.annotation.VisibleForTesting;
@@ -226,8 +228,11 @@
     }
 
     private Website findOrCreateSite(String origin, String embedder) {
-        // Avoid showing multiple entries in "All sites" for the same origin.
-        if (embedder != null && (embedder.equals(origin) || "*".equals(embedder))) {
+        // This allows us to show multiple entries in "All sites" for the same origin, based on
+        // the (origin, embedder) combination. For example, "cnn.com", "cnn.com all cookies on this
+        // site only", and "cnn.com embedded on example.com" are all possible. In the future, this
+        // should be collapsed into "cnn.com" and you can see the different options after clicking.
+        if (embedder != null && (embedder.equals(origin) || embedder.equals(SITE_WILDCARD))) {
             embedder = null;
         }
 
@@ -261,15 +266,22 @@
 
         for (ContentSettingException exception :
                 mWebsitePreferenceBridge.getContentSettingsExceptions(contentSettingsType)) {
-            // The pattern "*" represents the default setting, not a specific website.
-            if (exception.getPattern().equals("*")) continue;
-            String address = exception.getPattern();
-            if (address == null) continue;
-            Website site = findOrCreateSite(address, null);
+            String address = exception.getPrimaryPattern();
+            String embedder = exception.getSecondaryPattern();
+            // If both patterns are the wildcard, dont display this rule.
+            if (address == null || (address.equals(embedder) && address.equals(SITE_WILDCARD))) {
+                continue;
+            }
+            Website site = findOrCreateSite(address, embedder);
             site.setContentSettingException(exceptionType, exception);
         }
     }
 
+    @VisibleForTesting
+    public void resetContentSettingExceptions() {
+        mSites.clear();
+    }
+
     /**
      * A single task in the WebsitePermissionsFetcher task queue. We need fetching of features to be
      * serialized, as we need to have all the origins in place prior to populating the hosts.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/website/WebsitePreference.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/website/WebsitePreference.java
index ebc327e..06398f8 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/website/WebsitePreference.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/website/WebsitePreference.java
@@ -119,11 +119,20 @@
 
     private void refresh() {
         setTitle(mSite.getTitle());
-        String subtitleText = mSite.getSummary();
-        if (subtitleText != null) {
-            setSummary(String.format(getContext().getString(R.string.website_settings_embedded_in),
-                                     subtitleText));
+
+        if (mSite.getEmbedder() == null) return;
+
+        String subtitleText;
+        if (mSite.representsThirdPartiesOnSite()) {
+            subtitleText = getContext().getString(
+                    R.string.website_settings_third_party_cookies_exception_label);
+        } else {
+            subtitleText =
+                    String.format(getContext().getString(R.string.website_settings_embedded_on),
+                            mSite.getEmbedder().getTitle());
         }
+
+        setSummary(subtitleText);
     }
 
     @Override
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/website/WebsitePreferenceBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/website/WebsitePreferenceBridge.java
index b97af531..96ad6e74 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/website/WebsitePreferenceBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/website/WebsitePreferenceBridge.java
@@ -21,6 +21,8 @@
  * Utility class that interacts with native to retrieve and set website settings.
  */
 public class WebsitePreferenceBridge {
+    public static final String SITE_WILDCARD = "*";
+
     /** The android permissions associated with requesting location. */
     private static final String[] LOCATION_PERMISSIONS = {
             android.Manifest.permission.ACCESS_FINE_LOCATION,
@@ -259,9 +261,10 @@
 
     @CalledByNative
     private static void addContentSettingExceptionToList(ArrayList<ContentSettingException> list,
-            int contentSettingsType, String pattern, int contentSetting, String source) {
-        ContentSettingException exception =
-                new ContentSettingException(contentSettingsType, pattern, contentSetting, source);
+            int contentSettingsType, String primaryPattern, String secondaryPattern,
+            int contentSetting, String source) {
+        ContentSettingException exception = new ContentSettingException(
+                contentSettingsType, primaryPattern, secondaryPattern, contentSetting, source);
         list.add(exception);
     }
 
@@ -513,9 +516,18 @@
     }
 
     public static void setContentSettingForPattern(
-            int contentSettingType, String pattern, int setting) {
+            int contentSettingType, String primaryPattern, String secondaryPattern, int setting) {
+        // Currently only Cookie Settings support a non-empty, non-wildcard secondaryPattern.
+        // In addition, if a Cookie Setting uses secondaryPattern, the primaryPattern must be
+        // the wildcard.
+        if (contentSettingType != ContentSettingsType.COOKIES) {
+            assert secondaryPattern.equals(SITE_WILDCARD) || secondaryPattern.isEmpty();
+        } else if (!secondaryPattern.equals(SITE_WILDCARD) && !secondaryPattern.isEmpty()) {
+            assert primaryPattern.equals(SITE_WILDCARD);
+        }
+
         WebsitePreferenceBridgeJni.get().setContentSettingForPattern(
-                contentSettingType, pattern, setting);
+                contentSettingType, primaryPattern, secondaryPattern, setting);
     }
 
     public static boolean isQuietNotificationsUiEnabled() {
@@ -589,7 +601,8 @@
         void setContentSettingEnabled(int contentSettingType, boolean allow);
         void getContentSettingsExceptions(
                 int contentSettingsType, List<ContentSettingException> list);
-        void setContentSettingForPattern(int contentSettingType, String pattern, int setting);
+        void setContentSettingForPattern(int contentSettingType, String primaryPattern,
+                String secondaryPattern, int setting);
         int getContentSetting(int contentSettingType);
         void setContentSetting(int contentSettingType, int setting);
         boolean getAcceptCookiesEnabled();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ssl/SecurityStateModel.java b/chrome/android/java/src/org/chromium/chrome/browser/ssl/SecurityStateModel.java
index f944a27..29662f0 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ssl/SecurityStateModel.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ssl/SecurityStateModel.java
@@ -26,24 +26,14 @@
     }
 
     /**
-     * Returns true for a valid URL with a cryptographic scheme, e.g., HTTPS, WSS.
+     * Returns whether to use a danger icon instead of an info icon in the URL bar for the WARNING
+     * security level.
      *
-     * @param url The URL to check.
-     * @return Whether the scheme of the URL is cryptographic.
+     * @return Whether to downgrade the info icon to a danger triangle for the WARNING security
+     *         level.
      */
-    public static boolean isSchemeCryptographic(String url) {
-        return SecurityStateModelJni.get().isSchemeCryptographic(url);
-    }
-
-    /**
-     * Returns whether to use a danger icon instead of an info icon in the URL bar.
-     *
-     * @param securityLevel The ConnectionSecurityLevel of the page.
-     * @param url The URL to check.
-     * @return Whether to downgrade the info icon to a danger triangle.
-     */
-    public static boolean shouldDowngradeNeutralStyling(int securityLevel, String url) {
-        return SecurityStateModelJni.get().shouldDowngradeNeutralStyling(securityLevel, url);
+    public static boolean shouldShowDangerTriangleForWarningLevel() {
+        return SecurityStateModelJni.get().shouldShowDangerTriangleForWarningLevel();
     }
 
     private SecurityStateModel() {}
@@ -51,7 +41,6 @@
     @NativeMethods
     interface Natives {
         int getSecurityLevelForWebContents(WebContents webContents);
-        boolean isSchemeCryptographic(String url);
-        boolean shouldDowngradeNeutralStyling(int securityLevel, String url);
+        boolean shouldShowDangerTriangleForWarningLevel();
     }
 }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java
index 6d12b47..b5ed9ea 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java
@@ -404,18 +404,8 @@
             return R.drawable.ic_offline_pin_24dp;
         }
 
-        String url = getCurrentUrl();
-
         switch (securityLevel) {
             case ConnectionSecurityLevel.NONE:
-                // For HTTPS sites with passive mixed content, ConnectionSecurityLevel
-                // is NONE, but the security indicator should be shown on all devices.
-                if (mNativeLocationBarModelAndroid != 0
-                        && SecurityStateModel.isSchemeCryptographic(url)) {
-                    return SecurityStateModel.shouldDowngradeNeutralStyling(securityLevel, url)
-                            ? R.drawable.omnibox_not_secure_warning
-                            : R.drawable.omnibox_info;
-                }
                 return isSmallDevice
                                 && (!SearchEngineLogoUtils.shouldShowSearchEngineLogo(isIncognito())
                                         || getNewTabPageForCurrentTab() != null)
@@ -425,7 +415,7 @@
                 if (mNativeLocationBarModelAndroid == 0) {
                     return R.drawable.omnibox_info;
                 }
-                if (SecurityStateModel.shouldDowngradeNeutralStyling(securityLevel, url)) {
+                if (SecurityStateModel.shouldShowDangerTriangleForWarningLevel()) {
                     return R.drawable.omnibox_not_secure_warning;
                 }
                 return R.drawable.omnibox_info;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
index b410ca3..66806ae 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
@@ -4,6 +4,8 @@
 
 package org.chromium.chrome.browser.ui;
 
+import android.os.Bundle;
+import android.os.CancellationSignal;
 import android.view.View;
 import android.view.ViewGroup;
 
@@ -20,19 +22,23 @@
 import org.chromium.chrome.browser.ChromeActivity;
 import org.chromium.chrome.browser.MenuOrKeyboardActionController;
 import org.chromium.chrome.browser.TabThemeColorProvider;
+;
 import org.chromium.chrome.browser.compositor.bottombar.OverlayPanel;
 import org.chromium.chrome.browser.compositor.bottombar.OverlayPanelManager;
 import org.chromium.chrome.browser.compositor.layouts.EmptyOverviewModeObserver;
 import org.chromium.chrome.browser.compositor.layouts.LayoutManager;
 import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior;
+import org.chromium.chrome.browser.directactions.DirectActionInitializer;
 import org.chromium.chrome.browser.findinpage.FindToolbarManager;
 import org.chromium.chrome.browser.findinpage.FindToolbarObserver;
+import org.chromium.chrome.browser.flags.ActivityType;
 import org.chromium.chrome.browser.lifecycle.Destroyable;
 import org.chromium.chrome.browser.lifecycle.InflationObserver;
 import org.chromium.chrome.browser.metrics.UkmRecorder;
 import org.chromium.chrome.browser.share.ShareDelegate;
 import org.chromium.chrome.browser.snackbar.SnackbarManager;
 import org.chromium.chrome.browser.tab.Tab;
+import org.chromium.chrome.browser.tabmodel.TabModelSelector;
 import org.chromium.chrome.browser.toolbar.ToolbarManager;
 import org.chromium.chrome.browser.toolbar.top.ToolbarControlContainer;
 import org.chromium.chrome.browser.ui.appmenu.AppMenuBlocker;
@@ -46,6 +52,8 @@
 import org.chromium.ui.modaldialog.ModalDialogManager.ModalDialogManagerObserver;
 import org.chromium.ui.modelutil.PropertyModel;
 
+import java.util.function.Consumer;
+
 /**
  * The root UI coordinator. This class will eventually be responsible for inflating and managing
  * lifecycle of the main UI components.
@@ -87,6 +95,7 @@
     private SnackbarManager mBottomSheetSnackbarManager;
 
     private ScrimView mScrimView;
+    private DirectActionInitializer mDirectActionInitializer;
 
     /**
      * Create a new {@link RootUiCoordinator} for the given activity.
@@ -119,14 +128,6 @@
         return mToolbarManager;
     }
 
-    /**
-     * @return The find toolbar manager or {@code null} if UI inflation is not yet complete.
-     */
-    @Nullable
-    public FindToolbarManager getFindToolbarManager() {
-        return mFindToolbarManager;
-    }
-
     @Override
     public void destroy() {
         mMenuOrKeyboardActionController.unregisterMenuOrKeyboardActionHandler(this);
@@ -186,6 +187,7 @@
         initializeToolbar();
         initAppMenu();
         initFindToolbarManager();
+        initDirectActionInitializer();
         if (mAppMenuCoordinator != null) {
             mToolbarManager.onAppMenuInitialized(mAppMenuCoordinator);
             mModalDialogManagerObserver = new ModalDialogManagerObserver() {
@@ -281,6 +283,35 @@
         return true;
     }
 
+    /**
+     * Performs a direct action.
+     *
+     * @param actionId Name of the direct action to perform.
+     * @param arguments Arguments for this action.
+     * @param cancellationSignal Signal used to cancel a direct action from the caller.
+     * @param callback Callback to run when the action is done.
+     */
+    public void onPerformDirectAction(String actionId, Bundle arguments,
+            CancellationSignal cancellationSignal, Consumer<Bundle> callback) {
+        if (mDirectActionInitializer == null) return;
+        mDirectActionInitializer.onPerformDirectAction(
+                actionId, arguments, cancellationSignal, callback);
+    }
+
+    /**
+     * Lists direct actions supported.
+     *
+     * Returns a list of direct actions supported by the Activity associated with this
+     * RootUiCoordinator.
+     *
+     * @param cancellationSignal Signal used to cancel a direct action from the caller.
+     * @param callback Callback to run when the action is done.
+     */
+    public void onGetDirectActions(CancellationSignal cancellationSignal, Consumer callback) {
+        if (mDirectActionInitializer == null) return;
+        mDirectActionInitializer.onGetDirectActions(cancellationSignal, callback);
+    }
+
     // Protected class methods
 
     protected void onLayoutManagerAvailable(LayoutManager layoutManager) {
@@ -476,6 +507,16 @@
         return mBottomSheetSnackbarManager;
     }
 
+    private void initDirectActionInitializer() {
+        @ActivityType
+        int activityType = mActivity.getActivityType();
+        TabModelSelector tabModelSelector = mActivity.getTabModelSelector();
+        mDirectActionInitializer = new DirectActionInitializer(mActivity, activityType, mActivity,
+                mActivity::onBackPressed, tabModelSelector, mFindToolbarManager,
+                mActivity.getBottomSheetController(), mScrimView);
+        mActivity.getLifecycleDispatcher().register(mDirectActionInitializer);
+    }
+
     // Testing methods
 
     @VisibleForTesting
diff --git a/chrome/android/java/strings/android_chrome_strings_grd/IDS_WEBSITE_SETTINGS_THIRD_PARTY_COOKIES_EXCEPTION_LABEL.png.sha1 b/chrome/android/java/strings/android_chrome_strings_grd/IDS_WEBSITE_SETTINGS_THIRD_PARTY_COOKIES_EXCEPTION_LABEL.png.sha1
new file mode 100644
index 0000000..7e36da65
--- /dev/null
+++ b/chrome/android/java/strings/android_chrome_strings_grd/IDS_WEBSITE_SETTINGS_THIRD_PARTY_COOKIES_EXCEPTION_LABEL.png.sha1
@@ -0,0 +1 @@
+5d36736598e01f51e1896d108fdc33e326cff806
\ No newline at end of file
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerTest.java
index ed3c06cf..5b92f977 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerTest.java
@@ -4,14 +4,15 @@
 
 package org.chromium.chrome.browser.compositor.layouts;
 
+import static org.chromium.base.test.util.Restriction.RESTRICTION_TYPE_LOW_END_DEVICE;
 import static org.chromium.base.test.util.Restriction.RESTRICTION_TYPE_NON_LOW_END_DEVICE;
 
 import android.content.Context;
 import android.graphics.PointF;
 import android.support.test.InstrumentationRegistry;
 import android.support.test.annotation.UiThreadTest;
+import android.support.test.filters.MediumTest;
 import android.support.test.filters.SmallTest;
-import android.support.test.rule.UiThreadTestRule;
 import android.util.Log;
 import android.view.MotionEvent;
 import android.view.MotionEvent.PointerCoords;
@@ -22,12 +23,17 @@
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
+import org.junit.rules.TestRule;
 import org.junit.runner.RunWith;
 
 import org.chromium.base.MathUtils;
+import org.chromium.base.test.util.CommandLineFlags;
 import org.chromium.base.test.util.DisabledTest;
 import org.chromium.base.test.util.Feature;
 import org.chromium.base.test.util.Restriction;
+import org.chromium.chrome.browser.ChromeFeatureList;
+import org.chromium.chrome.browser.ChromeSwitches;
+import org.chromium.chrome.browser.accessibility_tab_switcher.OverviewListLayout;
 import org.chromium.chrome.browser.compositor.animation.CompositorAnimationHandler;
 import org.chromium.chrome.browser.compositor.layouts.components.LayoutTab;
 import org.chromium.chrome.browser.compositor.layouts.eventfilter.EdgeSwipeHandler;
@@ -35,15 +41,22 @@
 import org.chromium.chrome.browser.compositor.layouts.phone.StackLayout;
 import org.chromium.chrome.browser.compositor.layouts.phone.stack.Stack;
 import org.chromium.chrome.browser.compositor.layouts.phone.stack.StackTab;
+import org.chromium.chrome.browser.flags.FeatureUtilities;
 import org.chromium.chrome.browser.init.ChromeBrowserInitializer;
 import org.chromium.chrome.browser.tab.MockTab;
 import org.chromium.chrome.browser.tab.Tab;
 import org.chromium.chrome.browser.tabmodel.TabModel;
 import org.chromium.chrome.browser.tabmodel.TabModelSelector;
 import org.chromium.chrome.browser.tabmodel.TabModelUtils;
+import org.chromium.chrome.browser.tasks.tab_management.TabListCoordinator;
+import org.chromium.chrome.features.start_surface.StartSurfaceLayout;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
+import org.chromium.chrome.test.ChromeTabbedActivityTestRule;
+import org.chromium.chrome.test.util.browser.Features;
 import org.chromium.chrome.test.util.browser.tabmodel.MockTabModel.MockTabModelDelegate;
 import org.chromium.chrome.test.util.browser.tabmodel.MockTabModelSelector;
+import org.chromium.content_public.browser.test.util.Criteria;
+import org.chromium.content_public.browser.test.util.CriteriaHelper;
 import org.chromium.content_public.browser.test.util.TestThreadUtils;
 import org.chromium.ui.test.util.UiRestriction;
 
@@ -54,6 +67,12 @@
 public class LayoutManagerTest implements MockTabModelDelegate {
     private static final String TAG = "LayoutManagerTest";
 
+    @Rule
+    public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule();
+
+    @Rule
+    public TestRule mProcessor = new Features.InstrumentationProcessor();
+
     private long mLastDownTime;
 
     private TabModelSelector mTabModelSelector;
@@ -85,9 +104,6 @@
         mPointerCoords[1].size = 1;
     }
 
-    @Rule
-    public UiThreadTestRule mRule = new UiThreadTestRule();
-
     /**
      * Simulates time so the animation updates.
      * @param layoutManager The {@link LayoutManagerChrome} to update.
@@ -503,6 +519,76 @@
         runToolbarSideSwipeTestOnCurrentModel(ScrollDirection.RIGHT, 0);
     }
 
+    @Test
+    @MediumTest
+    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_LOW_END_DEVICE})
+    @Feature({"Android-TabSwitcher"})
+    // clang-format off
+    @CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE})
+    @Features.DisableFeatures({ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID})
+    public void testStartSurfaceLayoutDisabled() {
+        // clang-format on
+        FeatureUtilities.setGridTabSwitcherEnabledForTesting(false);
+        launchedChromeAndEnterTabSwitcher();
+
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            Layout activeLayout = getActiveLayout();
+            Assert.assertTrue(activeLayout instanceof OverviewListLayout);
+        });
+    }
+
+    @Test
+    @MediumTest
+    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_NON_LOW_END_DEVICE})
+    @Feature({"Android-TabSwitcher"})
+    // clang-format off
+    @CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE})
+    @Features.EnableFeatures({ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID})
+    public void testStartSurfaceLayoutEnabled_Grid() {
+        // clang-format on
+        FeatureUtilities.setGridTabSwitcherEnabledForTesting(true);
+        launchedChromeAndEnterTabSwitcher();
+
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            Layout activeLayout = getActiveLayout();
+            Assert.assertTrue(activeLayout instanceof StartSurfaceLayout);
+
+            StartSurfaceLayout startSurfaceLayout = (StartSurfaceLayout) activeLayout;
+
+            Assert.assertEquals(TabListCoordinator.TabListMode.GRID,
+                    startSurfaceLayout.getStartSurfaceForTesting()
+                            .getTabListDelegate()
+                            .getListModeForTesting());
+        });
+    }
+    @Test
+    @MediumTest
+    @Restriction({UiRestriction.RESTRICTION_TYPE_PHONE, RESTRICTION_TYPE_LOW_END_DEVICE})
+    @Feature({"Android-TabSwitcher"})
+    @CommandLineFlags
+            .Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE})
+            @Features
+            .EnableFeatures({ChromeFeatureList.TAB_GROUPS_ANDROID,
+                    ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID})
+            @Features.DisableFeatures(ChromeFeatureList.TAB_TO_GTS_ANIMATION)
+            public void
+            testStartSurfaceLayoutEnabled_List() {
+        FeatureUtilities.setTabGroupsAndroidEnabledForTesting(true);
+        launchedChromeAndEnterTabSwitcher();
+
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            Layout activeLayout = getActiveLayout();
+            Assert.assertTrue(activeLayout instanceof StartSurfaceLayout);
+
+            StartSurfaceLayout startSurfaceLayout = (StartSurfaceLayout) activeLayout;
+
+            Assert.assertEquals(TabListCoordinator.TabListMode.LIST,
+                    startSurfaceLayout.getStartSurfaceForTesting()
+                            .getTabListDelegate()
+                            .getListModeForTesting());
+        });
+    }
+
     @Before
     public void setUp() {
         // Load the browser process.
@@ -510,6 +596,27 @@
                 () -> { ChromeBrowserInitializer.getInstance().handleSynchronousStartup(); });
     }
 
+    private void launchedChromeAndEnterTabSwitcher() {
+        mActivityTestRule.startMainActivityOnBlankPage();
+        CriteriaHelper.pollUiThread(Criteria.equals(true,
+                mActivityTestRule.getActivity()
+                        .getTabModelSelector()
+                        .getTabModelFilterProvider()
+                        .getCurrentTabModelFilter()::isTabModelRestored));
+
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            LayoutManagerChrome layoutManager = mActivityTestRule.getActivity().getLayoutManager();
+            layoutManager.showOverview(false);
+
+            CriteriaHelper.pollUiThread(Criteria.equals(true, layoutManager::overviewVisible));
+        });
+    }
+
+    private Layout getActiveLayout() {
+        LayoutManagerChrome layoutManager = mActivityTestRule.getActivity().getLayoutManager();
+        return layoutManager.getActiveLayout();
+    }
+
     private void runToolbarSideSwipeTestOnCurrentModel(
             @ScrollDirection int direction, int finalIndex) {
         final TabModel model = mTabModelSelector.getCurrentModel();
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchManagerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchManagerTest.java
index 66807d0..8a5c9a1d 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchManagerTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchManagerTest.java
@@ -2332,7 +2332,7 @@
     @SmallTest
     @Feature({"ContextualSearch"})
     @Restriction(UiRestriction.RESTRICTION_TYPE_PHONE)
-    @DisableIf.Build(sdk_is_less_than = Build.VERSION_CODES.M, message = "crbug.com/965706")
+    @DisableIf.Build(sdk_is_less_than = Build.VERSION_CODES.P, message = "crbug.com/1032760")
     public void testLongPressMultipleSwipeOnlyLoadsContentOnce()
             throws InterruptedException, TimeoutException {
         // Simulate a long press and make sure no Content is created.
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/download/home/DownloadActivityV2Test.java b/chrome/android/javatests/src/org/chromium/chrome/browser/download/home/DownloadActivityV2Test.java
index d9997144..3649d23c 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/download/home/DownloadActivityV2Test.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/download/home/DownloadActivityV2Test.java
@@ -102,7 +102,6 @@
         features.put(ChromeFeatureList.OFFLINE_PAGES_PREFETCHING, true);
         features.put(ChromeFeatureList.OVERSCROLL_HISTORY_NAVIGATION, false);
         features.put(ChromeFeatureList.DOWNLOAD_OFFLINE_CONTENT_PROVIDER, false);
-        features.put(ChromeFeatureList.DOWNLOAD_RENAME, true);
         features.put(ChromeFeatureList.CONTENT_INDEXING_DOWNLOAD_HOME, false);
         ChromeFeatureList.setTestFeatures(features);
 
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/notifications/channels/ChannelsInitializerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/notifications/channels/ChannelsInitializerTest.java
index e77bbc4..46b47aa 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/notifications/channels/ChannelsInitializerTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/notifications/channels/ChannelsInitializerTest.java
@@ -327,43 +327,6 @@
         assertThat(getChannelsIgnoringDefault(), hasSize(2));
     }
 
-    @Test
-    @SmallTest
-    @MinAndroidSdkLevel(Build.VERSION_CODES.O)
-    @TargetApi(Build.VERSION_CODES.O)
-    @Feature({"Browser", "Notifications"})
-    public void testEnsureInitialized_permissionRequests() {
-        mChannelsInitializer.ensureInitialized(ChannelDefinitions.ChannelId.PERMISSION_REQUESTS);
-
-        assertThat(getChannelsIgnoringDefault(), hasSize(1));
-        NotificationChannel channel = getChannelsIgnoringDefault().get(0);
-        assertThat(channel.getId(), is(ChannelDefinitions.ChannelId.PERMISSION_REQUESTS));
-        assertThat(channel.getName().toString(),
-                is(mContext.getString(
-                        org.chromium.chrome.R.string.notification_category_permission_requests)));
-        assertThat(channel.getImportance(), is(NotificationManager.IMPORTANCE_LOW));
-        assertThat(channel.getGroup(), is(ChannelDefinitions.ChannelGroupId.GENERAL));
-    }
-
-    @Test
-    @SmallTest
-    @MinAndroidSdkLevel(Build.VERSION_CODES.O)
-    @TargetApi(Build.VERSION_CODES.O)
-    @Feature({"Browser", "Notifications"})
-    public void testEnsureInitialized_permissionRequestsHigh() {
-        mChannelsInitializer.ensureInitialized(
-                ChannelDefinitions.ChannelId.PERMISSION_REQUESTS_HIGH);
-
-        assertThat(getChannelsIgnoringDefault(), hasSize(1));
-        NotificationChannel channel = getChannelsIgnoringDefault().get(0);
-        assertThat(channel.getId(), is(ChannelDefinitions.ChannelId.PERMISSION_REQUESTS_HIGH));
-        assertThat(channel.getName().toString(),
-                is(mContext.getString(
-                        org.chromium.chrome.R.string.notification_category_permission_requests)));
-        assertThat(channel.getImportance(), is(NotificationManager.IMPORTANCE_HIGH));
-        assertThat(channel.getGroup(), is(ChannelDefinitions.ChannelGroupId.GENERAL));
-    }
-
     /**
      * Gets the current notification channels from the notification manager, except for any with
      * the default ID, which will be removed from the list before returning.
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/NewTabPageTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/NewTabPageTest.java
index 977cc6e..66c0d7f6 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/NewTabPageTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/ntp/NewTabPageTest.java
@@ -41,7 +41,6 @@
 import org.chromium.base.test.params.ParameterizedRunner;
 import org.chromium.base.test.util.CallbackHelper;
 import org.chromium.base.test.util.CommandLineFlags;
-import org.chromium.base.test.util.DisableIf;
 import org.chromium.base.test.util.DisabledTest;
 import org.chromium.base.test.util.Feature;
 import org.chromium.base.test.util.RetryOnFailure;
@@ -330,10 +329,9 @@
     @Test
     @SmallTest
     @Feature({"NewTabPage", "FeedNewTabPage"})
-    @DisableIf
-            .Build(sdk_is_greater_than = 22, message = "crbug.com/593007")
-            @ParameterAnnotations.UseMethodParameter(InterestFeedParams.class)
-            public void testSearchFromFakebox(boolean interestFeedEnabled) {
+    @DisabledTest(message = "Test is flaky. crbug.com/593007, crbug.com/1033654")
+    @ParameterAnnotations.UseMethodParameter(InterestFeedParams.class)
+    public void testSearchFromFakebox(boolean interestFeedEnabled) {
         TouchCommon.singleClickView(mFakebox);
         waitForFakeboxFocusAnimationComplete(mNtp);
         final UrlBar urlBar = (UrlBar) mActivityTestRule.getActivity().findViewById(R.id.url_bar);
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/OmniboxTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/OmniboxTest.java
index 7399ff5..6932154 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/OmniboxTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/OmniboxTest.java
@@ -620,8 +620,8 @@
             boolean securityIcon = statusViewCoordinator.isSecurityButtonShown();
             if (mActivityTestRule.getActivity().isTablet()) {
                 Assert.assertTrue("Omnibox should have a Security icon", securityIcon);
-                Assert.assertEquals(
-                        R.drawable.omnibox_info, statusViewCoordinator.getSecurityIconResourceId());
+                Assert.assertEquals(R.drawable.omnibox_info,
+                        statusViewCoordinator.getSecurityIconResourceIdForTesting());
             } else {
                 Assert.assertFalse("Omnibox should not have a Security icon", securityIcon);
             }
@@ -670,7 +670,7 @@
                     R.id.location_bar_status_icon, securityButton.getId());
             Assert.assertTrue(securityButton.isShown());
             Assert.assertEquals(R.drawable.omnibox_https_valid,
-                    statusViewCoordinator.getSecurityIconResourceId());
+                    statusViewCoordinator.getSecurityIconResourceIdForTesting());
         } finally {
             httpsTestServer.stopAndDestroyServer();
         }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/status/StatusViewRenderTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/status/StatusViewRenderTest.java
index 6416ba36..a937a91 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/status/StatusViewRenderTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/status/StatusViewRenderTest.java
@@ -18,6 +18,7 @@
 import org.mockito.MockitoAnnotations;
 
 import org.chromium.base.test.util.Feature;
+import org.chromium.chrome.browser.omnibox.status.StatusProperties.StatusIconResource;
 import org.chromium.chrome.browser.omnibox.status.StatusView.StatusViewDelegate;
 import org.chromium.chrome.browser.toolbar.LocationBarModel;
 import org.chromium.chrome.browser.ui.widget.CompositeTouchDelegate;
@@ -87,9 +88,8 @@
             mStatusView.setVerboseStatusTextWidth(mStatusView.getResources().getDimensionPixelSize(
                     org.chromium.chrome.R.dimen.location_bar_min_verbose_status_text_width));
             mStatusView.setVerboseStatusTextVisible(true);
-            mStatusModel.set(
-                    StatusProperties.STATUS_ICON_RES, org.chromium.chrome.R.drawable.ic_search);
-            mStatusModel.set(StatusProperties.STATUS_ICON_TINT_RES, 0);
+            mStatusModel.set(StatusProperties.STATUS_ICON_RESOURCE,
+                    new StatusIconResource(org.chromium.chrome.R.drawable.ic_search, 0));
         });
         mRenderTestRule.render(mStatusView, "status_view_verbose_padding");
     }
@@ -107,11 +107,10 @@
             mStatusView.setVerboseStatusTextWidth(mStatusView.getResources().getDimensionPixelSize(
                     org.chromium.chrome.R.dimen.location_bar_min_verbose_status_text_width));
             mStatusView.setVerboseStatusTextVisible(true);
-            mStatusModel.set(StatusProperties.STATUS_ALPHA, 1f);
+            mStatusModel.set(StatusProperties.STATUS_ICON_ALPHA, 1f);
             mStatusModel.set(StatusProperties.SHOW_STATUS_ICON, true);
-            mStatusModel.set(StatusProperties.STATUS_ICON_RES,
-                    org.chromium.chrome.R.drawable.ic_logo_googleg_20dp);
-            mStatusModel.set(StatusProperties.STATUS_ICON_TINT_RES, 0);
+            mStatusModel.set(StatusProperties.STATUS_ICON_RESOURCE,
+                    new StatusIconResource(org.chromium.chrome.R.drawable.ic_logo_googleg_24dp, 0));
         });
 
         mRenderTestRule.render(mStatusView, "status_view_verbose_padding_with_dse_icon");
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/status/StatusViewTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/status/StatusViewTest.java
index c5d5dfa..8a64d45e 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/status/StatusViewTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/omnibox/status/StatusViewTest.java
@@ -31,6 +31,7 @@
 import org.chromium.base.test.util.Feature;
 import org.chromium.base.test.util.Restriction;
 import org.chromium.chrome.R;
+import org.chromium.chrome.browser.omnibox.status.StatusProperties.StatusIconResource;
 import org.chromium.chrome.browser.toolbar.LocationBarModel;
 import org.chromium.chrome.browser.ui.widget.CompositeTouchDelegate;
 import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
@@ -113,7 +114,8 @@
                 () -> { mStatusModel.set(StatusProperties.INCOGNITO_BADGE_VISIBLE, true); });
         onView(withId(R.id.location_bar_incognito_badge)).check(matches(isCompletelyDisplayed()));
 
-        runOnUiThreadBlocking(() -> { mStatusModel.set(StatusProperties.STATUS_ICON_RES, 0); });
+        runOnUiThreadBlocking(
+                () -> { mStatusModel.set(StatusProperties.STATUS_ICON_RESOURCE, null); });
         onView(withId(R.id.location_bar_status_icon))
                 .check((view, e) -> Assert.assertNull(mStatusView.getTouchDelegateForTesting()));
     }
@@ -132,7 +134,8 @@
         onView(withId(R.id.location_bar_incognito_badge)).check(matches(isCompletelyDisplayed()));
 
         runOnUiThreadBlocking(() -> {
-            mStatusModel.set(StatusProperties.STATUS_ICON_RES, R.drawable.ic_logo_googleg_20dp);
+            mStatusModel.set(StatusProperties.STATUS_ICON_RESOURCE,
+                    new StatusIconResource(R.drawable.ic_search, 0));
         });
         onView(withId(R.id.location_bar_status_icon))
                 .check((view, e) -> assertNotNull(mStatusView.getTouchDelegateForTesting()));
@@ -150,7 +153,8 @@
         onView(withId(R.id.location_bar_incognito_badge)).check(matches(isCompletelyDisplayed()));
 
         runOnUiThreadBlocking(() -> {
-            mStatusModel.set(StatusProperties.STATUS_ICON_RES, R.drawable.ic_logo_googleg_20dp);
+            mStatusModel.set(StatusProperties.STATUS_ICON_RESOURCE,
+                    new StatusIconResource(R.drawable.ic_logo_googleg_24dp, 0));
         });
         onView(withId(R.id.location_bar_incognito_badge)).check((view, e) -> {
             ViewGroup.MarginLayoutParams params =
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/settings/website/SiteSettingsPreferencesTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/settings/website/SiteSettingsPreferencesTest.java
index a2ee4a4..66862f9 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/settings/website/SiteSettingsPreferencesTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/settings/website/SiteSettingsPreferencesTest.java
@@ -4,6 +4,8 @@
 
 package org.chromium.chrome.browser.settings.website;
 
+import static org.chromium.chrome.browser.settings.website.WebsitePreferenceBridge.SITE_WILDCARD;
+
 import android.os.Build;
 import android.support.test.InstrumentationRegistry;
 import android.support.test.filters.SmallTest;
@@ -24,6 +26,7 @@
 import org.chromium.base.test.util.Feature;
 import org.chromium.base.test.util.RetryOnFailure;
 import org.chromium.chrome.browser.ChromeActivity;
+import org.chromium.chrome.browser.ChromeFeatureList;
 import org.chromium.chrome.browser.ChromeSwitches;
 import org.chromium.chrome.browser.ContentSettingsType;
 import org.chromium.chrome.browser.infobar.InfoBarContainer;
@@ -176,6 +179,34 @@
         });
     }
 
+    private void setBlockCookiesSiteException(final SettingsActivity settingsActivity,
+            final String hostname, final boolean thirdPartiesOnly) {
+        TestThreadUtils.runOnUiThreadBlocking(new Runnable() {
+            @Override
+            public void run() {
+                final SingleCategoryPreferences websitePreferences =
+                        (SingleCategoryPreferences) settingsActivity.getMainFragment();
+
+                Assert.assertTrue(doesAcceptCookies());
+                if (thirdPartiesOnly) {
+                    Assert.assertTrue(improvedControlsEnabled());
+                    websitePreferences.onAddSite(SITE_WILDCARD, hostname);
+                } else {
+                    websitePreferences.onAddSite(hostname, SITE_WILDCARD);
+                }
+            }
+
+            private boolean doesAcceptCookies() {
+                return WebsitePreferenceBridge.isCategoryEnabled(ContentSettingsType.COOKIES);
+            }
+
+            private boolean improvedControlsEnabled() {
+                return ChromeFeatureList.isEnabled(
+                        ChromeFeatureList.IMPROVED_COOKIE_CONTROLS_FOR_THIRD_PARTY_COOKIE_BLOCKING);
+            }
+        });
+    }
+
     private void setThirdPartyCookiesEnabled(
             final SettingsActivity settingsActivity, final boolean enabled) {
         TestThreadUtils.runOnUiThreadBlocking(() -> {
@@ -344,6 +375,43 @@
     }
 
     /**
+     * Blocks specific sites from setting cookies and ensures that no cookies can be set.
+     */
+    @Test
+    @SmallTest
+    @Feature({"Preferences"})
+    // Todo(eokoyomon) figure out how to set and test third party cookie setting in this test
+    // @EnableFeatures(ChromeFeatureList.IMPROVED_COOKIE_CONTROLS_FOR_THIRD_PARTY_COOKIE_BLOCKING)
+    public void testSiteExceptionCookiesBlocked() throws Exception {
+        SettingsActivity settingsActivity =
+                SiteSettingsTestUtils.startSiteSettingsCategory(SiteSettingsCategory.Type.COOKIES);
+        setCookiesEnabled(settingsActivity, true);
+
+        final String url = mTestServer.getURL("/chrome/test/data/android/cookie.html");
+
+        // Load the page and clear any set cookies.
+        mActivityTestRule.loadUrl(url + "#clear");
+        Assert.assertEquals("\"\"", mActivityTestRule.runJavaScriptCodeInCurrentTab("getCookie()"));
+
+        // Check cookies can be set for this website when there is no rule.
+        mActivityTestRule.runJavaScriptCodeInCurrentTab("setCookie()");
+        Assert.assertEquals(
+                "\"Foo=Bar\"", mActivityTestRule.runJavaScriptCodeInCurrentTab("getCookie()"));
+
+        // Set specific rule to block site and ensure it cannot set cookies.
+        mActivityTestRule.loadUrl(url + "#clear");
+        setBlockCookiesSiteException(settingsActivity, url, false);
+        mActivityTestRule.runJavaScriptCodeInCurrentTab("setCookie()");
+        Assert.assertEquals("\"\"", mActivityTestRule.runJavaScriptCodeInCurrentTab("getCookie()"));
+
+        // Load the page again and ensure the cookie remains unset.
+        mActivityTestRule.loadUrl(url);
+        Assert.assertEquals("\"\"", mActivityTestRule.runJavaScriptCodeInCurrentTab("getCookie()"));
+
+        settingsActivity.finish();
+    }
+
+    /**
      * Set a cookie and check that it is removed when a site is cleared.
      */
     @Test
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/settings/website/WebsitePermissionsFetcherTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/settings/website/WebsitePermissionsFetcherTest.java
index 77e9266a..c193b2a4 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/settings/website/WebsitePermissionsFetcherTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/settings/website/WebsitePermissionsFetcherTest.java
@@ -5,7 +5,10 @@
 
 package org.chromium.chrome.browser.settings.website;
 
+import static org.chromium.chrome.browser.settings.website.WebsitePreferenceBridge.SITE_WILDCARD;
+
 import android.support.test.filters.SmallTest;
+import android.util.Pair;
 
 import org.junit.Assert;
 import org.junit.Rule;
@@ -242,6 +245,10 @@
             mContentSettingExceptions.add(exception);
         }
 
+        public void resetContentSettingExceptions() {
+            mContentSettingExceptions.clear();
+        }
+
         public void addLocalStorageInfoMapEntry(LocalStorageInfo info) {
             if (info.isDomainImportant()) {
                 mImportantLocalStorageInfoMap.put(info.getOrigin(), info);
@@ -269,24 +276,26 @@
         // Add permission info types.
         Assert.assertEquals(9, PermissionInfo.Type.NUM_ENTRIES);
         String googleOrigin = "https://google.com";
+
         websitePreferenceBridge.addPermissionInfo(new PermissionInfo(
-                PermissionInfo.Type.GEOLOCATION, googleOrigin, googleOrigin, false));
+                PermissionInfo.Type.GEOLOCATION, googleOrigin, SITE_WILDCARD, false));
         websitePreferenceBridge.addPermissionInfo(
-                new PermissionInfo(PermissionInfo.Type.MIDI, googleOrigin, googleOrigin, false));
-        websitePreferenceBridge.addPermissionInfo(new PermissionInfo(
-                PermissionInfo.Type.PROTECTED_MEDIA_IDENTIFIER, googleOrigin, googleOrigin, false));
+                new PermissionInfo(PermissionInfo.Type.MIDI, googleOrigin, SITE_WILDCARD, false));
         websitePreferenceBridge.addPermissionInfo(
-                new PermissionInfo(PermissionInfo.Type.NFC, googleOrigin, googleOrigin, false));
-        websitePreferenceBridge.addPermissionInfo(new PermissionInfo(
-                PermissionInfo.Type.NOTIFICATION, googleOrigin, googleOrigin, false));
+                new PermissionInfo(PermissionInfo.Type.PROTECTED_MEDIA_IDENTIFIER, googleOrigin,
+                        SITE_WILDCARD, false));
         websitePreferenceBridge.addPermissionInfo(
-                new PermissionInfo(PermissionInfo.Type.CAMERA, googleOrigin, googleOrigin, false));
+                new PermissionInfo(PermissionInfo.Type.NFC, googleOrigin, SITE_WILDCARD, false));
         websitePreferenceBridge.addPermissionInfo(new PermissionInfo(
-                PermissionInfo.Type.MICROPHONE, googleOrigin, googleOrigin, false));
-        websitePreferenceBridge.addPermissionInfo(new PermissionInfo(
-                PermissionInfo.Type.CLIPBOARD, googleOrigin, googleOrigin, false));
+                PermissionInfo.Type.NOTIFICATION, googleOrigin, SITE_WILDCARD, false));
         websitePreferenceBridge.addPermissionInfo(
-                new PermissionInfo(PermissionInfo.Type.SENSORS, googleOrigin, googleOrigin, false));
+                new PermissionInfo(PermissionInfo.Type.CAMERA, googleOrigin, SITE_WILDCARD, false));
+        websitePreferenceBridge.addPermissionInfo(new PermissionInfo(
+                PermissionInfo.Type.MICROPHONE, googleOrigin, SITE_WILDCARD, false));
+        websitePreferenceBridge.addPermissionInfo(new PermissionInfo(
+                PermissionInfo.Type.CLIPBOARD, googleOrigin, SITE_WILDCARD, false));
+        websitePreferenceBridge.addPermissionInfo(new PermissionInfo(
+                PermissionInfo.Type.SENSORS, googleOrigin, SITE_WILDCARD, false));
 
         // Add content setting exception types.
         String preferenceSource = "preference";
@@ -327,7 +336,7 @@
         // Add chooser info types.
         websitePreferenceBridge.addChosenObjectInfo(
                 new ChosenObjectInfo(ContentSettingsType.USB_CHOOSER_DATA, googleOrigin,
-                        googleOrigin, "Gadget", "Object", false));
+                        SITE_WILDCARD, "Gadget", "Object", false));
 
         fetcher.fetchAllPreferences((sites) -> {
             Assert.assertEquals(1, sites.size());
@@ -398,9 +407,9 @@
         String exampleOrigin = "https://example.com";
 
         websitePreferenceBridge.addPermissionInfo(new PermissionInfo(
-                PermissionInfo.Type.GEOLOCATION, googleOrigin, googleOrigin, false));
+                PermissionInfo.Type.GEOLOCATION, googleOrigin, SITE_WILDCARD, false));
         websitePreferenceBridge.addPermissionInfo(new PermissionInfo(
-                PermissionInfo.Type.GEOLOCATION, chromiumOrigin, chromiumOrigin, false));
+                PermissionInfo.Type.GEOLOCATION, chromiumOrigin, SITE_WILDCARD, false));
 
         Website expectedGoogleWebsite =
                 new Website(WebsiteAddress.create(googleOrigin), WebsiteAddress.create(null));
@@ -430,7 +439,7 @@
         });
 
         websitePreferenceBridge.addPermissionInfo(new PermissionInfo(
-                PermissionInfo.Type.GEOLOCATION, exampleOrigin, exampleOrigin, false));
+                PermissionInfo.Type.GEOLOCATION, exampleOrigin, SITE_WILDCARD, false));
 
         Website expectedExampleWebsite =
                 new Website(WebsiteAddress.create(exampleOrigin), WebsiteAddress.create(null));
@@ -463,7 +472,8 @@
     public void assertContentSettingExceptionEquals(
             ContentSettingException expected, ContentSettingException actual) {
         Assert.assertEquals(expected.getSource(), actual.getSource());
-        Assert.assertEquals(expected.getPattern(), actual.getPattern());
+        Assert.assertEquals(expected.getPrimaryPattern(), actual.getPrimaryPattern());
+        Assert.assertEquals(expected.getSecondaryPattern(), actual.getSecondaryPattern());
         Assert.assertEquals(expected.getContentSetting(), actual.getContentSetting());
     }
 
@@ -483,7 +493,7 @@
 
         for (@PermissionInfo.Type int type : permissionInfoTypes) {
             PermissionInfo fakePermissionInfo =
-                    new PermissionInfo(type, googleOrigin, googleOrigin, false);
+                    new PermissionInfo(type, googleOrigin, SITE_WILDCARD, false);
             websitePreferenceBridge.addPermissionInfo(fakePermissionInfo);
 
             fetcher.fetchPreferencesForCategory(
@@ -555,6 +565,70 @@
 
     @Test
     @SmallTest
+    public void testFetchPreferencesForAdvancedCookieSettings() {
+        WebsitePermissionsFetcher fetcher = new WebsitePermissionsFetcher();
+        FakeWebsitePreferenceBridge websitePreferenceBridge = new FakeWebsitePreferenceBridge();
+        fetcher.setWebsitePreferenceBridgeForTesting(websitePreferenceBridge);
+
+        String mainSite = "https://a.com";
+        String thirdPartySite = "https://b.com";
+        String preferenceSource = "preference";
+        @ContentSettingException.Type
+        int contentSettingExceptionType = ContentSettingException.Type.COOKIE;
+        @ContentSettingsType
+        int contentSettingsType =
+                ContentSettingException.getContentSettingsType(contentSettingExceptionType);
+
+        // Test the advanced exception combinations of:
+        // b.com on a.com
+        // a.com on a.com
+        // * on a.com
+        ArrayList<Pair<String, String>> exceptions =
+                new ArrayList<>(Arrays.asList(new Pair<>(thirdPartySite, mainSite),
+                        new Pair<>(mainSite, mainSite), new Pair<>(SITE_WILDCARD, mainSite)));
+
+        for (Pair<String, String> pair : exceptions) {
+            fetcher.resetContentSettingExceptions();
+            websitePreferenceBridge.resetContentSettingExceptions();
+            {
+                ContentSettingException fakeContentSettingException =
+                        new ContentSettingException(contentSettingsType, pair.first, pair.second,
+                                ContentSettingValues.DEFAULT, preferenceSource);
+                websitePreferenceBridge.addContentSettingException(fakeContentSettingException);
+
+                fetcher.fetchPreferencesForCategory(
+                        SiteSettingsCategory.createFromContentSettingsType(contentSettingsType),
+                        (sites) -> {
+                            Assert.assertEquals(1, sites.size());
+
+                            Website site = sites.iterator().next();
+                            assertContentSettingExceptionEquals(fakeContentSettingException,
+                                    site.getContentSettingException(contentSettingExceptionType));
+                        });
+            }
+
+            // Make sure that the content setting value is updated.
+            {
+                ContentSettingException fakeContentSettingException =
+                        new ContentSettingException(contentSettingsType, pair.first, pair.second,
+                                ContentSettingValues.BLOCK, preferenceSource);
+                websitePreferenceBridge.addContentSettingException(fakeContentSettingException);
+
+                fetcher.fetchPreferencesForCategory(
+                        SiteSettingsCategory.createFromContentSettingsType(contentSettingsType),
+                        (sites) -> {
+                            Assert.assertEquals(1, sites.size());
+
+                            Website site = sites.iterator().next();
+                            assertContentSettingExceptionEquals(fakeContentSettingException,
+                                    site.getContentSettingException(contentSettingExceptionType));
+                        });
+            }
+        }
+    }
+
+    @Test
+    @SmallTest
     public void testFetchPreferencesForCategoryStorageInfo() {
         WebsitePermissionsFetcher fetcher = new WebsitePermissionsFetcher();
         FakeWebsitePreferenceBridge websitePreferenceBridge = new FakeWebsitePreferenceBridge();
@@ -647,7 +721,7 @@
             Assert.assertNotEquals(-1, chooserDataType);
 
             ChosenObjectInfo fakeObjectInfo = new ChosenObjectInfo(chooserDataType, googleOrigin,
-                    googleOrigin, "Chosen Object", "SerializedObjectData", false);
+                    SITE_WILDCARD, "Chosen Object", "SerializedObjectData", false);
             websitePreferenceBridge.addChosenObjectInfo(fakeObjectInfo);
 
             fetcher.fetchPreferencesForCategory(
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/webshare/WebShareTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/webshare/WebShareTest.java
index 8d840e4..35223b0 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/webshare/WebShareTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/webshare/WebShareTest.java
@@ -122,7 +122,7 @@
     public void testWebShareNoUserGesture() throws Exception {
         mActivityTestRule.loadUrl(mTestServer.getURL(TEST_FILE));
         mActivityTestRule.runJavaScriptCodeInCurrentTab("initiate_share()");
-        Assert.assertEquals("Fail: NotAllowedError: "
+        Assert.assertEquals("Fail: NotAllowedError: Failed to execute 'share' on 'Navigator': "
                         + "Must be handling a user gesture to perform a share request.",
                 mUpdateWaiter.waitForUpdate());
     }
@@ -263,8 +263,9 @@
         mActivityTestRule.loadUrl(mTestServer.getURL(TEST_FILE_MANY));
         // Click (instead of directly calling the JavaScript function) to simulate a user gesture.
         TouchCommon.singleClickView(mTab.getView());
-        Assert.assertEquals(
-                "Fail: NotAllowedError: Permission denied", mUpdateWaiter.waitForUpdate());
+        Assert.assertEquals("Fail: NotAllowedError: "
+                        + "Failed to execute 'share' on 'Navigator': Permission denied",
+                mUpdateWaiter.waitForUpdate());
     }
 
     /**
@@ -278,8 +279,9 @@
         mActivityTestRule.loadUrl(mTestServer.getURL(TEST_FILE_LARGE));
         // Click (instead of directly calling the JavaScript function) to simulate a user gesture.
         TouchCommon.singleClickView(mTab.getView());
-        Assert.assertEquals(
-                "Fail: NotAllowedError: Permission denied", mUpdateWaiter.waitForUpdate());
+        Assert.assertEquals("Fail: NotAllowedError: "
+                        + "Failed to execute 'share' on 'Navigator': Permission denied",
+                mUpdateWaiter.waitForUpdate());
     }
 
     /**
diff --git a/chrome/android/junit/DEPS b/chrome/android/junit/DEPS
index f0de187..0fde1a96 100644
--- a/chrome/android/junit/DEPS
+++ b/chrome/android/junit/DEPS
@@ -4,6 +4,7 @@
   "+chrome/browser/image_fetcher",
   "+chrome/browser/preferences/android/java",
   "+chrome/browser/ui/android/widget",
+  "+chrome/browser/util",
   "+components/autofill/android/java/src/org/chromium/components/autofill",
   "+components/background_task_scheduler/android",
   "+components/bookmarks/common/android",
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/browserservices/ClientAppBroadcastReceiverTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/browserservices/ClientAppBroadcastReceiverTest.java
index e13324ba..458740e 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/browserservices/ClientAppBroadcastReceiverTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/browserservices/ClientAppBroadcastReceiverTest.java
@@ -30,7 +30,6 @@
 import org.chromium.base.test.BaseRobolectricTestRunner;
 import org.chromium.base.test.util.Feature;
 import org.chromium.chrome.browser.browserservices.permissiondelegation.NotificationPermissionUpdater;
-import org.chromium.chrome.browser.preferences.ChromePreferenceManager;
 
 import java.util.Arrays;
 import java.util.HashSet;
@@ -53,8 +52,8 @@
     public void setUp() {
         MockitoAnnotations.initMocks(this);
 
-        mReceiver = new ClientAppBroadcastReceiver(mMockStrategy, mDataRegister,
-                mock(ChromePreferenceManager.class), mPermissionUpdater);
+        mReceiver = new ClientAppBroadcastReceiver(
+                mMockStrategy, mDataRegister, mock(BrowserServicesStore.class), mPermissionUpdater);
         mContext = RuntimeEnvironment.application;
     }
 
@@ -112,9 +111,9 @@
     @Test
     @Feature("TrustedWebActivities")
     public void execute_ValidIntent() {
-        mReceiver = new ClientAppBroadcastReceiver(
-                new ClientAppBroadcastReceiver.ClearDataStrategy(), mDataRegister,
-                mock(ChromePreferenceManager.class), mPermissionUpdater);
+        mReceiver =
+                new ClientAppBroadcastReceiver(new ClientAppBroadcastReceiver.ClearDataStrategy(),
+                        mDataRegister, mock(BrowserServicesStore.class), mPermissionUpdater);
 
         int id = 67;
         String appName = "App Name 3";
@@ -140,9 +139,9 @@
     @Test
     @Feature("TrustedwebActivities")
     public void execute_UpdatePermissions() {
-        mReceiver = new ClientAppBroadcastReceiver(
-                new ClientAppBroadcastReceiver.ClearDataStrategy(), mDataRegister,
-                mock(ChromePreferenceManager.class), mPermissionUpdater);
+        mReceiver =
+                new ClientAppBroadcastReceiver(new ClientAppBroadcastReceiver.ClearDataStrategy(),
+                        mDataRegister, mock(BrowserServicesStore.class), mPermissionUpdater);
 
         int id = 67;
         String appName = "App Name 3";
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/browserservices/trustedwebactivityui/controller/TrustedWebActivityDisclosureControllerTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/browserservices/trustedwebactivityui/controller/TrustedWebActivityDisclosureControllerTest.java
index 05746bc..7d59192 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/browserservices/trustedwebactivityui/controller/TrustedWebActivityDisclosureControllerTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/browserservices/trustedwebactivityui/controller/TrustedWebActivityDisclosureControllerTest.java
@@ -26,12 +26,12 @@
 
 import org.chromium.base.test.BaseRobolectricTestRunner;
 import org.chromium.base.test.util.Feature;
+import org.chromium.chrome.browser.browserservices.BrowserServicesStore;
 import org.chromium.chrome.browser.browserservices.TrustedWebActivityUmaRecorder;
 import org.chromium.chrome.browser.browserservices.trustedwebactivityui.TrustedWebActivityModel;
 import org.chromium.chrome.browser.browserservices.trustedwebactivityui.controller.CurrentPageVerifier.VerificationState;
 import org.chromium.chrome.browser.browserservices.trustedwebactivityui.controller.CurrentPageVerifier.VerificationStatus;
 import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
-import org.chromium.chrome.browser.preferences.ChromePreferenceManager;
 
 /**
  * Tests for {@link TrustedWebActivityDisclosureController}.
@@ -42,7 +42,8 @@
     private static final String CLIENT_PACKAGE = "com.example.twaclient";
     private static final String SCOPE = "https://www.example.com";
 
-    @Mock public ChromePreferenceManager mPreferences;
+    @Mock
+    public BrowserServicesStore mStore;
     @Mock public ActivityLifecycleDispatcher mLifecycleDispatcher;
     @Mock public CurrentPageVerifier mCurrentPageVerifier;
     @Mock public TrustedWebActivityUmaRecorder mRecorder;
@@ -59,9 +60,9 @@
         doReturn(CLIENT_PACKAGE).when(mClientPackageNameProvider).get();
         doNothing().when(mCurrentPageVerifier)
                 .addVerificationObserver(mVerificationObserverCaptor.capture());
-        doReturn(false).when(mPreferences).hasUserAcceptedTwaDisclosureForPackage(anyString());
+        doReturn(false).when(mStore).hasUserAcceptedTwaDisclosureForPackage(anyString());
 
-        new TrustedWebActivityDisclosureController(mPreferences, mModel, mLifecycleDispatcher,
+        new TrustedWebActivityDisclosureController(mStore, mModel, mLifecycleDispatcher,
                 mCurrentPageVerifier, mRecorder, mClientPackageNameProvider);
     }
 
@@ -92,7 +93,7 @@
     @Test
     @Feature("TrustedWebActivities")
     public void noShowIfAlreadyAccepted() {
-        doReturn(true).when(mPreferences).hasUserAcceptedTwaDisclosureForPackage(anyString());
+        doReturn(true).when(mStore).hasUserAcceptedTwaDisclosureForPackage(anyString());
         enterVerifiedOrigin();
         assertSnackbarNotShown();
     }
@@ -102,7 +103,7 @@
     public void recordDismiss() {
         enterVerifiedOrigin();
         dismissSnackbar();
-        verify(mPreferences).setUserAcceptedTwaDisclosureForPackage(CLIENT_PACKAGE);
+        verify(mStore).setUserAcceptedTwaDisclosureForPackage(CLIENT_PACKAGE);
     }
 
     private void enterVerifiedOrigin() {
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/download/home/list/DateOrderedListMutatorTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/download/home/list/DateOrderedListMutatorTest.java
index d60e061..a9951ca 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/download/home/list/DateOrderedListMutatorTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/download/home/list/DateOrderedListMutatorTest.java
@@ -61,7 +61,6 @@
         mModel = new ListItemModel();
         Map<String, Boolean> testFeatures = new HashMap<>();
         testFeatures.put(ChromeFeatureList.DOWNLOAD_OFFLINE_CONTENT_PROVIDER, true);
-        testFeatures.put(ChromeFeatureList.DOWNLOAD_RENAME, false);
         testFeatures.put(ChromeFeatureList.CONTENT_INDEXING_DOWNLOAD_HOME, false);
         ChromeFeatureList.setTestFeatures(testFeatures);
     }
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/flags/FeatureUtilitiesUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/flags/FeatureUtilitiesUnitTest.java
new file mode 100644
index 0000000..a8f0b49
--- /dev/null
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/flags/FeatureUtilitiesUnitTest.java
@@ -0,0 +1,331 @@
+// 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.chrome.browser.flags;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.when;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TestRule;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import org.chromium.base.BaseSwitches;
+import org.chromium.base.CommandLine;
+import org.chromium.base.SysUtils;
+import org.chromium.base.test.BaseRobolectricTestRunner;
+import org.chromium.chrome.browser.ChromeFeatureList;
+import org.chromium.chrome.browser.util.AccessibilityUtil;
+import org.chromium.chrome.test.util.browser.Features;
+
+/**
+ * Unit Tests for {@link FeatureUtilities}.
+ */
+@RunWith(BaseRobolectricTestRunner.class)
+public class FeatureUtilitiesUnitTest {
+    @Rule
+    public TestRule mProcessor = new Features.JUnitProcessor();
+
+    @Mock
+    CommandLine mCommandLine;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        when(mCommandLine.isNativeImplementation()).thenReturn(true);
+        CommandLine.setInstanceForTesting(mCommandLine);
+
+        AccessibilityUtil.setAccessibilityEnabledForTesting(false);
+        FeatureUtilities.resetFlagsForTesting();
+    }
+
+    @After
+    public void tearDown() {
+        CommandLine.reset();
+        FeatureUtilities.resetFlagsForTesting();
+        AccessibilityUtil.setAccessibilityEnabledForTesting(null);
+        SysUtils.resetForTesting();
+    }
+
+    @Test
+    // clang-format off
+    @Features.DisableFeatures({ChromeFeatureList.DUET_TABSTRIP_INTEGRATION_ANDROID,
+                                ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID,
+                                ChromeFeatureList.TAB_GROUPS_ANDROID,
+                                ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID})
+    public void testCacheGridTabSwitcher_HighEnd_NoEnabledFlags_disabled() {
+        // clang-format on
+        when(mCommandLine.hasSwitch(BaseSwitches.DISABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
+        FeatureUtilities.cacheNativeTabSwitcherUiFlags();
+
+        FeatureUtilities.resetFlagsForTesting();
+        assertFalse(FeatureUtilities.isGridTabSwitcherEnabled());
+        assertFalse(FeatureUtilities.isTabGroupsAndroidEnabled());
+        assertFalse(FeatureUtilities.isTabGroupsAndroidContinuationEnabled());
+    }
+
+    @Test
+    // clang-format off
+    @Features.DisableFeatures({ChromeFeatureList.DUET_TABSTRIP_INTEGRATION_ANDROID,
+                                ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID,
+                                ChromeFeatureList.TAB_GROUPS_ANDROID,
+                                ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID})
+    public void testCacheGridTabSwitcher_LowEnd_NoEnabledFlags_disabled() {
+        // clang-format on
+        when(mCommandLine.hasSwitch(BaseSwitches.ENABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
+        FeatureUtilities.cacheNativeTabSwitcherUiFlags();
+
+        FeatureUtilities.resetFlagsForTesting();
+        assertFalse(FeatureUtilities.isGridTabSwitcherEnabled());
+        assertFalse(FeatureUtilities.isTabGroupsAndroidEnabled());
+        assertFalse(false);
+    }
+
+    @Test
+    // clang-format off
+    @Features.EnableFeatures({ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID})
+    @Features.DisableFeatures({ChromeFeatureList.DUET_TABSTRIP_INTEGRATION_ANDROID,
+                                ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID,
+                                ChromeFeatureList.TAB_GROUPS_ANDROID})
+    public void testCacheGridTabSwitcher_HighEnd_Layout_enabled() {
+        // clang-format on
+        when(mCommandLine.hasSwitch(BaseSwitches.DISABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
+        FeatureUtilities.cacheNativeTabSwitcherUiFlags();
+
+        FeatureUtilities.resetFlagsForTesting();
+        assertTrue(FeatureUtilities.isGridTabSwitcherEnabled());
+        assertFalse(FeatureUtilities.isTabGroupsAndroidEnabled());
+        assertFalse(FeatureUtilities.isTabGroupsAndroidContinuationEnabled());
+    }
+
+    @Test
+    // clang-format off
+    @Features.EnableFeatures({ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID})
+    @Features.DisableFeatures({ChromeFeatureList.DUET_TABSTRIP_INTEGRATION_ANDROID,
+                                ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID,
+                                ChromeFeatureList.TAB_GROUPS_ANDROID})
+    public void testCacheGridTabSwitcher_LowEnd_Layout_disabled() {
+        // clang-format on
+        when(mCommandLine.hasSwitch(BaseSwitches.ENABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
+        FeatureUtilities.cacheNativeTabSwitcherUiFlags();
+
+        FeatureUtilities.resetFlagsForTesting();
+
+        assertFalse(FeatureUtilities.isGridTabSwitcherEnabled());
+        assertFalse(FeatureUtilities.isTabGroupsAndroidEnabled());
+        assertFalse(FeatureUtilities.isTabGroupsAndroidContinuationEnabled());
+    }
+
+    @Test
+    // clang-format off
+    @Features.EnableFeatures({ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID,
+                                ChromeFeatureList.TAB_GROUPS_ANDROID})
+    @Features.DisableFeatures({ChromeFeatureList.DUET_TABSTRIP_INTEGRATION_ANDROID,
+                                ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID})
+    public void testCacheGridTabSwitcher_HighEnd_LayoutGroup_enabled() {
+        // clang-format on
+        when(mCommandLine.hasSwitch(BaseSwitches.DISABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
+        FeatureUtilities.cacheNativeTabSwitcherUiFlags();
+
+        FeatureUtilities.resetFlagsForTesting();
+        assertTrue(FeatureUtilities.isGridTabSwitcherEnabled());
+        assertTrue(FeatureUtilities.isTabGroupsAndroidEnabled());
+        assertFalse(FeatureUtilities.isTabGroupsAndroidContinuationEnabled());
+    }
+
+    @Test
+    // clang-format off
+    @Features.EnableFeatures({ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID,
+                                ChromeFeatureList.TAB_GROUPS_ANDROID})
+    @Features.DisableFeatures({ChromeFeatureList.DUET_TABSTRIP_INTEGRATION_ANDROID,
+                                ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID})
+    public void testCacheGridTabSwitcher_LowEnd_LayoutGroup_disabled() {
+        // clang-format on
+        when(mCommandLine.hasSwitch(BaseSwitches.ENABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
+        FeatureUtilities.cacheNativeTabSwitcherUiFlags();
+
+        FeatureUtilities.resetFlagsForTesting();
+        assertFalse(FeatureUtilities.isGridTabSwitcherEnabled());
+        assertFalse(FeatureUtilities.isTabGroupsAndroidEnabled());
+        assertFalse(FeatureUtilities.isTabGroupsAndroidContinuationEnabled());
+    }
+
+    @Test
+    // clang-format off
+    @Features.EnableFeatures({ChromeFeatureList.TAB_GROUPS_ANDROID})
+    @Features.DisableFeatures({ChromeFeatureList.DUET_TABSTRIP_INTEGRATION_ANDROID,
+                                ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID,
+                                ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID})
+    public void testCacheGridTabSwitcher_HighEnd_Group_enabled() {
+        // clang-format on
+        when(mCommandLine.hasSwitch(BaseSwitches.DISABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
+        FeatureUtilities.cacheNativeTabSwitcherUiFlags();
+
+        FeatureUtilities.resetFlagsForTesting();
+        assertTrue(FeatureUtilities.isGridTabSwitcherEnabled());
+        assertTrue(FeatureUtilities.isTabGroupsAndroidEnabled());
+        assertFalse(FeatureUtilities.isTabGroupsAndroidContinuationEnabled());
+    }
+
+    @Test
+    // clang-format off
+    @Features.EnableFeatures({ChromeFeatureList.TAB_GROUPS_ANDROID})
+    @Features.DisableFeatures({ChromeFeatureList.DUET_TABSTRIP_INTEGRATION_ANDROID,
+                                ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID,
+                                ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID})
+    public void testCacheGridTabSwitcher_LowEnd_Group_disabled() {
+        // clang-format on
+        when(mCommandLine.hasSwitch(BaseSwitches.ENABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
+        FeatureUtilities.cacheNativeTabSwitcherUiFlags();
+
+        FeatureUtilities.resetFlagsForTesting();
+        assertFalse(FeatureUtilities.isGridTabSwitcherEnabled());
+        assertFalse(FeatureUtilities.isTabGroupsAndroidEnabled());
+        assertFalse(FeatureUtilities.isTabGroupsAndroidContinuationEnabled());
+    }
+
+    @Test
+    // clang-format off
+    @Features.EnableFeatures({ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID})
+    @Features.DisableFeatures({ChromeFeatureList.DUET_TABSTRIP_INTEGRATION_ANDROID,
+                                ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID,
+                                ChromeFeatureList.TAB_GROUPS_ANDROID})
+    public void testCacheGridTabSwitcher_HighEnd_Continuation_disabled() {
+        // clang-format on
+        when(mCommandLine.hasSwitch(BaseSwitches.DISABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
+        FeatureUtilities.cacheNativeTabSwitcherUiFlags();
+
+        FeatureUtilities.resetFlagsForTesting();
+        assertFalse(FeatureUtilities.isGridTabSwitcherEnabled());
+        assertFalse(FeatureUtilities.isTabGroupsAndroidEnabled());
+        assertFalse(FeatureUtilities.isTabGroupsAndroidContinuationEnabled());
+    }
+
+    @Test
+    // clang-format off
+    @Features.EnableFeatures({ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID})
+    @Features.DisableFeatures({ChromeFeatureList.DUET_TABSTRIP_INTEGRATION_ANDROID,
+                                ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID,
+                                ChromeFeatureList.TAB_GROUPS_ANDROID})
+    public void testCacheGridTabSwitcher_LowEnd_Continuation_disabled() {
+        // clang-format on
+        when(mCommandLine.hasSwitch(BaseSwitches.ENABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
+        FeatureUtilities.cacheNativeTabSwitcherUiFlags();
+
+        FeatureUtilities.resetFlagsForTesting();
+        assertFalse(FeatureUtilities.isGridTabSwitcherEnabled());
+        assertFalse(FeatureUtilities.isTabGroupsAndroidEnabled());
+        assertFalse(FeatureUtilities.isTabGroupsAndroidContinuationEnabled());
+    }
+
+    @Test
+    // clang-format off
+    @Features.EnableFeatures({ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID,
+                                ChromeFeatureList.TAB_GROUPS_ANDROID,
+                                ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID})
+    @Features.DisableFeatures({ChromeFeatureList.DUET_TABSTRIP_INTEGRATION_ANDROID})
+    public void testCacheGridTabSwitcher_HighEnd_AllFlags_enabled() {
+        // clang-format on
+        when(mCommandLine.hasSwitch(BaseSwitches.DISABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
+        FeatureUtilities.cacheNativeTabSwitcherUiFlags();
+
+        FeatureUtilities.resetFlagsForTesting();
+        assertTrue(FeatureUtilities.isGridTabSwitcherEnabled());
+        assertTrue(FeatureUtilities.isTabGroupsAndroidEnabled());
+        assertTrue(FeatureUtilities.isTabGroupsAndroidContinuationEnabled());
+    }
+
+    @Test
+    // clang-format off
+    @Features.EnableFeatures({ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID,
+                                ChromeFeatureList.TAB_GROUPS_ANDROID,
+                                ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID})
+    @Features.DisableFeatures({ChromeFeatureList.DUET_TABSTRIP_INTEGRATION_ANDROID})
+    public void testCacheGridTabSwitcher_LowEnd_AllFlags_enabled() {
+        // clang-format on
+        when(mCommandLine.hasSwitch(BaseSwitches.ENABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
+
+        FeatureUtilities.cacheNativeTabSwitcherUiFlags();
+
+        FeatureUtilities.resetFlagsForTesting();
+        assertTrue(FeatureUtilities.isGridTabSwitcherEnabled());
+        assertTrue(FeatureUtilities.isTabGroupsAndroidEnabled());
+        assertTrue(FeatureUtilities.isTabGroupsAndroidContinuationEnabled());
+    }
+
+    @Test
+    // clang-format off
+    @Features.EnableFeatures({ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID,
+                                ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID})
+    @Features.DisableFeatures({ChromeFeatureList.DUET_TABSTRIP_INTEGRATION_ANDROID,
+                                ChromeFeatureList.TAB_GROUPS_ANDROID})
+    public void testCacheGridTabSwitcher_HighEnd_LayoutContinuation_enabled() {
+        // clang-format on
+        when(mCommandLine.hasSwitch(BaseSwitches.DISABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
+        FeatureUtilities.cacheNativeTabSwitcherUiFlags();
+
+        FeatureUtilities.resetFlagsForTesting();
+        assertTrue(FeatureUtilities.isGridTabSwitcherEnabled());
+        assertFalse(FeatureUtilities.isTabGroupsAndroidEnabled());
+        assertFalse(FeatureUtilities.isTabGroupsAndroidContinuationEnabled());
+    }
+
+    @Test
+    // clang-format off
+    @Features.EnableFeatures({ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID,
+                                ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID})
+    @Features.DisableFeatures({ChromeFeatureList.DUET_TABSTRIP_INTEGRATION_ANDROID,
+                                ChromeFeatureList.TAB_GROUPS_ANDROID})
+    public void testCacheGridTabSwitcher_LowEnd_LayoutContinuation_disabled() {
+        // clang-format on
+        when(mCommandLine.hasSwitch(BaseSwitches.ENABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
+        FeatureUtilities.cacheNativeTabSwitcherUiFlags();
+
+        FeatureUtilities.resetFlagsForTesting();
+        assertFalse(FeatureUtilities.isGridTabSwitcherEnabled());
+        assertFalse(FeatureUtilities.isTabGroupsAndroidEnabled());
+        assertFalse(FeatureUtilities.isTabGroupsAndroidContinuationEnabled());
+    }
+
+    @Test
+    // clang-format off
+    @Features.EnableFeatures({ChromeFeatureList.TAB_GROUPS_ANDROID,
+                                ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID})
+    @Features.DisableFeatures({ChromeFeatureList.DUET_TABSTRIP_INTEGRATION_ANDROID,
+                                ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID})
+    public void testCacheGridTabSwitcher_HighEnd_GroupContinuation_enabled() {
+        // clang-format on
+        when(mCommandLine.hasSwitch(BaseSwitches.DISABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
+        FeatureUtilities.cacheNativeTabSwitcherUiFlags();
+
+        FeatureUtilities.resetFlagsForTesting();
+        assertTrue(FeatureUtilities.isGridTabSwitcherEnabled());
+        assertTrue(FeatureUtilities.isTabGroupsAndroidEnabled());
+        assertTrue(FeatureUtilities.isTabGroupsAndroidContinuationEnabled());
+    }
+
+    @Test
+    // clang-format off
+    @Features.EnableFeatures({ChromeFeatureList.TAB_GROUPS_ANDROID,
+                                ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID})
+    @Features.DisableFeatures({ChromeFeatureList.DUET_TABSTRIP_INTEGRATION_ANDROID,
+                                ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID})
+    public void testCacheGridTabSwitcher_LowEnd_GroupContinuation_enabled() {
+        // clang-format on
+        when(mCommandLine.hasSwitch(BaseSwitches.ENABLE_LOW_END_DEVICE_MODE)).thenReturn(true);
+        FeatureUtilities.cacheNativeTabSwitcherUiFlags();
+
+        FeatureUtilities.resetFlagsForTesting();
+        assertTrue(FeatureUtilities.isGridTabSwitcherEnabled());
+        assertTrue(FeatureUtilities.isTabGroupsAndroidEnabled());
+        assertTrue(FeatureUtilities.isTabGroupsAndroidContinuationEnabled());
+    }
+}
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/omnibox/status/StatusMediatorUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/omnibox/status/StatusMediatorUnitTest.java
index 8baa22a..328f912 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/omnibox/status/StatusMediatorUnitTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/omnibox/status/StatusMediatorUnitTest.java
@@ -6,12 +6,16 @@
 
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import android.app.Activity;
+import android.content.Context;
 import android.content.res.Resources;
 import android.graphics.Bitmap;
+import android.graphics.drawable.BitmapDrawable;
 
 import org.junit.Assert;
 import org.junit.Before;
@@ -22,6 +26,7 @@
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
+import org.robolectric.Robolectric;
 import org.robolectric.annotation.Config;
 
 import org.chromium.base.Callback;
@@ -45,31 +50,37 @@
     @Mock
     NewTabPage mNewTabPage;
     @Mock
-    Resources mResources;
-    @Mock
     ToolbarCommonPropertiesModel mToolbarCommonPropertiesModel;
     @Mock
     UrlBarEditingTextStateProvider mUrlBarEditingTextStateProvider;
     @Mock
     StatusMediator.StatusMediatorDelegate mDelegate;
-    @Mock
-    Bitmap mBitmap;
     @Captor
     ArgumentCaptor<Callback<Bitmap>> mCallbackCaptor;
     @Captor
     ArgumentCaptor<String> mUrlCaptor;
 
+    Activity mActivity;
+    Context mContext;
+    Resources mResources;
+
     PropertyModel mModel;
     StatusMediator mMediator;
+    Bitmap mBitmap;
 
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
+        mActivity = Robolectric.buildActivity(Activity.class).setup().get();
+        mContext = mActivity.getApplicationContext();
+        mResources = mActivity.getResources();
 
         mModel = new PropertyModel(StatusProperties.ALL_KEYS);
-        mMediator = new StatusMediator(mModel, mResources, mUrlBarEditingTextStateProvider);
+        mMediator =
+                new StatusMediator(mModel, mResources, mActivity, mUrlBarEditingTextStateProvider);
         mMediator.setToolbarCommonPropertiesModel(mToolbarCommonPropertiesModel);
         mMediator.setDelegateForTesting(mDelegate);
+        mBitmap = Bitmap.createBitmap(10, 10, Bitmap.Config.ARGB_8888);
 
         when(mDelegate.isUrlValid(mUrlCaptor.capture()))
                 .thenAnswer(invocation -> mUrlCaptor.getValue().equals(TEST_SEARCH_URL));
@@ -83,8 +94,8 @@
         mMediator.setUrlHasFocus(true);
         mMediator.setShowIconsWhenUrlFocused(true);
         mMediator.updateSearchEngineStatusIcon(true, true, TEST_SEARCH_URL);
-        Assert.assertEquals(
-                R.drawable.ic_logo_googleg_20dp, mModel.get(StatusProperties.STATUS_ICON_RES));
+        Assert.assertEquals(TEST_SEARCH_URL,
+                mModel.get(StatusProperties.STATUS_ICON_RESOURCE).getIconIdentifierForTesting());
     }
 
     @Test
@@ -135,9 +146,8 @@
         mMediator.setShowIconsWhenUrlFocused(true);
         mMediator.setUrlFocusChangePercent(1f);
         mMediator.updateSearchEngineStatusIcon(true, true, TEST_SEARCH_URL);
-        Assert.assertEquals(
-                R.drawable.ic_logo_googleg_20dp, mModel.get(StatusProperties.STATUS_ICON_RES));
-        Assert.assertTrue(mModel.get(StatusProperties.SHOW_STATUS_ICON));
+        Assert.assertEquals(TEST_SEARCH_URL,
+                mModel.get(StatusProperties.STATUS_ICON_RESOURCE).getIconIdentifierForTesting());
     }
 
     @Test
@@ -148,24 +158,56 @@
         mMediator.setUrlHasFocus(true);
         mMediator.setShowIconsWhenUrlFocused(true);
         mMediator.updateSearchEngineStatusIcon(true, true, TEST_SEARCH_URL);
-        Assert.assertEquals(R.drawable.ic_search, mModel.get(StatusProperties.STATUS_ICON_RES));
+        Assert.assertEquals(R.drawable.ic_search,
+                mModel.get(StatusProperties.STATUS_ICON_RESOURCE).getIconResForTesting());
     }
 
     @Test
     @Features.EnableFeatures(ChromeFeatureList.OMNIBOX_SEARCH_ENGINE_LOGO)
     public void searchEngineLogo_showNonGoogleLogo() {
         setupSearchEngineLogoForTesting(true, false, false);
+        doAnswer(invocation -> {
+            mCallbackCaptor.getValue().onResult(mBitmap);
+            return null;
+        })
+                .when(mDelegate)
+                .getSearchEngineLogoFavicon(any(), mCallbackCaptor.capture());
 
         mMediator.setUrlHasFocus(true);
         mMediator.setShowIconsWhenUrlFocused(true);
 
         // Clear invocations since the setup methods call updateLocationBarIcon.
         Mockito.clearInvocations(mDelegate);
+
         mMediator.updateSearchEngineStatusIcon(true, false, TEST_SEARCH_URL);
-        Assert.assertEquals(R.drawable.ic_search, mModel.get(StatusProperties.STATUS_ICON_RES));
+        BitmapDrawable bitmapDrawable =
+                (BitmapDrawable) mModel.get(StatusProperties.STATUS_ICON_RESOURCE)
+                        .getDrawable(mContext, mResources);
+        Assert.assertEquals("", mBitmap, bitmapDrawable.getBitmap());
         Mockito.verify(mDelegate, Mockito.times(1)).getSearchEngineLogoFavicon(any(), any());
-        mCallbackCaptor.getValue().onResult(mBitmap);
-        Assert.assertEquals(mBitmap, mModel.get(StatusProperties.STATUS_ICON));
+    }
+
+    @Test
+    @Features.EnableFeatures(ChromeFeatureList.OMNIBOX_SEARCH_ENGINE_LOGO)
+    public void searchEngineLogo_showNonGoogleLogo_defaultsToLoupeWhenFaviconIsNull() {
+        setupSearchEngineLogoForTesting(true, false, false);
+        doAnswer(invocation -> {
+            mCallbackCaptor.getValue().onResult(null);
+            return null;
+        })
+                .when(mDelegate)
+                .getSearchEngineLogoFavicon(any(), mCallbackCaptor.capture());
+
+        mMediator.setUrlHasFocus(true);
+        mMediator.setShowIconsWhenUrlFocused(true);
+
+        // Clear invocations since the setup methods call updateLocationBarIcon.
+        Mockito.clearInvocations(mDelegate);
+
+        mMediator.updateSearchEngineStatusIcon(true, false, TEST_SEARCH_URL);
+        Assert.assertEquals(R.drawable.ic_search,
+                mModel.get(StatusProperties.STATUS_ICON_RESOURCE).getIconResForTesting());
+        Mockito.verify(mDelegate, Mockito.times(1)).getSearchEngineLogoFavicon(any(), any());
     }
 
     @Test
@@ -179,7 +221,8 @@
         // Clear invocations since the setup methods call updateLocationBarIcon.
         Mockito.clearInvocations(mDelegate);
         mMediator.updateSearchEngineStatusIcon(true, false, TEST_SEARCH_URL);
-        Assert.assertEquals(R.drawable.ic_search, mModel.get(StatusProperties.STATUS_ICON_RES));
+        Assert.assertEquals(R.drawable.ic_search,
+                mModel.get(StatusProperties.STATUS_ICON_RESOURCE).getIconResForTesting());
         Mockito.verify(mDelegate, Mockito.times(0)).getSearchEngineLogoFavicon(any(), any());
     }
 
@@ -193,7 +236,8 @@
         doReturn(TEST_SEARCH_URL).when(mUrlBarEditingTextStateProvider).getTextWithAutocomplete();
 
         mMediator.onTextChanged(TEST_SEARCH_URL);
-        Assert.assertEquals(R.drawable.ic_globe_24dp, mModel.get(StatusProperties.STATUS_ICON_RES));
+        Assert.assertEquals(R.drawable.ic_globe_24dp,
+                mModel.get(StatusProperties.STATUS_ICON_RESOURCE).getIconResForTesting());
     }
 
     @Test
@@ -206,7 +250,8 @@
         doReturn(TEST_SEARCH_URL).when(mUrlBarEditingTextStateProvider).getTextWithAutocomplete();
 
         mMediator.onTextChanged(TEST_SEARCH_URL.substring(0, TEST_SEARCH_URL.length() - 1));
-        Assert.assertEquals(R.drawable.ic_globe_24dp, mModel.get(StatusProperties.STATUS_ICON_RES));
+        Assert.assertEquals(R.drawable.ic_globe_24dp,
+                mModel.get(StatusProperties.STATUS_ICON_RESOURCE).getIconResForTesting());
     }
 
     @Test
@@ -220,8 +265,8 @@
 
         mMediator.onTextChanged("food near me");
         verify(mDelegate).isUrlValid("food near me");
-        Assert.assertNotEquals(
-                R.drawable.ic_globe_24dp, mModel.get(StatusProperties.STATUS_ICON_RES));
+        Assert.assertNotEquals(R.drawable.ic_globe_24dp,
+                mModel.get(StatusProperties.STATUS_ICON_RESOURCE).getIconResForTesting());
     }
 
     @Test
@@ -237,8 +282,8 @@
 
         mMediator.onTextChanged("");
         verify(mDelegate).isUrlValid("");
-        Assert.assertNotEquals(
-                R.drawable.ic_globe_24dp, mModel.get(StatusProperties.STATUS_ICON_RES));
+        Assert.assertNotEquals(R.drawable.ic_globe_24dp,
+                mModel.get(StatusProperties.STATUS_ICON_RESOURCE).getIconResForTesting());
     }
 
     @Test
@@ -252,7 +297,7 @@
         mMediator.setSecurityIconResource(0);
         mMediator.updateSearchEngineStatusIcon(true, false, TEST_SEARCH_URL);
 
-        Assert.assertEquals(0, mModel.get(StatusProperties.STATUS_ICON_RES));
+        Assert.assertEquals(null, mModel.get(StatusProperties.STATUS_ICON_RESOURCE));
     }
 
     @Test
@@ -266,8 +311,8 @@
         mMediator.updateSearchEngineStatusIcon(true, true, TEST_SEARCH_URL);
 
         Assert.assertTrue(mMediator.maybeUpdateStatusIconForSearchEngineIcon());
-        Assert.assertEquals(
-                R.drawable.ic_logo_googleg_20dp, mModel.get(StatusProperties.STATUS_ICON_RES));
+        Assert.assertEquals(TEST_SEARCH_URL,
+                mModel.get(StatusProperties.STATUS_ICON_RESOURCE).getIconIdentifierForTesting());
     }
 
     @Test
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/toolbar/ToolbarSecurityIconTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/toolbar/ToolbarSecurityIconTest.java
index 3a2f6f6b2..7979feb 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/toolbar/ToolbarSecurityIconTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/toolbar/ToolbarSecurityIconTest.java
@@ -61,31 +61,21 @@
 
     @Implements(SecurityStateModel.class)
     static class ShadowSecurityStateModel {
-        private static boolean sSchemeIsCryptographic;
-        private static boolean sShouldDowngrade;
+        private static boolean sShouldShowDangerTriangle;
 
         @Resetter
         public static void reset() {
-            sSchemeIsCryptographic = false;
-            sShouldDowngrade = false;
+            sShouldShowDangerTriangle = false;
         }
 
         @Implementation
-        public static boolean isSchemeCryptographic(String url) {
-            return sSchemeIsCryptographic;
+        public static boolean shouldShowDangerTriangleForWarningLevel() {
+            return sShouldShowDangerTriangle;
         }
 
-        @Implementation
-        public static boolean shouldDowngradeNeutralStyling(int securityLevel, String url) {
-            return sShouldDowngrade;
-        }
-
-        public static void setSchemeIsCryptographic(boolean schemeIsCryptographicValue) {
-            sSchemeIsCryptographic = schemeIsCryptographicValue;
-        }
-
-        public static void setShouldDowngradeNeutralStyling(boolean shouldDowngradeValue) {
-            sShouldDowngrade = shouldDowngradeValue;
+        public static void setShouldShowDangerTriangleForWarningLevel(
+                boolean shouldShowDangerTriangleValue) {
+            sShouldShowDangerTriangle = shouldShowDangerTriangleValue;
         }
     }
 
@@ -161,15 +151,6 @@
                 mLocationBarModel.getSecurityIconResource(ConnectionSecurityLevel.NONE,
                         !IS_SMALL_DEVICE, !IS_OFFLINE_PAGE, !IS_PREVIEW));
 
-        // Tests passive mixed content.
-        ShadowSecurityStateModel.setSchemeIsCryptographic(true);
-        assertEquals(R.drawable.omnibox_info,
-                mLocationBarModel.getSecurityIconResource(ConnectionSecurityLevel.NONE,
-                        IS_SMALL_DEVICE, !IS_OFFLINE_PAGE, !IS_PREVIEW));
-        assertEquals(R.drawable.omnibox_info,
-                mLocationBarModel.getSecurityIconResource(ConnectionSecurityLevel.NONE,
-                        !IS_SMALL_DEVICE, !IS_OFFLINE_PAGE, !IS_PREVIEW));
-
         assertEquals(R.drawable.omnibox_info,
                 mLocationBarModel.getSecurityIconResource(ConnectionSecurityLevel.WARNING,
                         IS_SMALL_DEVICE, !IS_OFFLINE_PAGE, !IS_PREVIEW));
@@ -217,33 +198,12 @@
                 mLocationBarModel.getSecurityIconResource(ConnectionSecurityLevel.NONE,
                         !IS_SMALL_DEVICE, !IS_OFFLINE_PAGE, !IS_PREVIEW));
 
-        // Tests passive mixed content, which should be downgraded.
-        ShadowSecurityStateModel.setSchemeIsCryptographic(true);
-        ShadowSecurityStateModel.setShouldDowngradeNeutralStyling(true);
-        assertEquals(R.drawable.omnibox_not_secure_warning,
-                mLocationBarModel.getSecurityIconResource(ConnectionSecurityLevel.NONE,
-                        IS_SMALL_DEVICE, !IS_OFFLINE_PAGE, !IS_PREVIEW));
-        assertEquals(R.drawable.omnibox_not_secure_warning,
-                mLocationBarModel.getSecurityIconResource(ConnectionSecurityLevel.NONE,
-                        !IS_SMALL_DEVICE, !IS_OFFLINE_PAGE, !IS_PREVIEW));
-
-        // Tests non-secure connection (e.g. HTTP), which should be downgraded.
-        ShadowSecurityStateModel.setSchemeIsCryptographic(false);
-        ShadowSecurityStateModel.setShouldDowngradeNeutralStyling(true);
+        ShadowSecurityStateModel.setShouldShowDangerTriangleForWarningLevel(true);
         assertEquals(R.drawable.omnibox_not_secure_warning,
                 mLocationBarModel.getSecurityIconResource(ConnectionSecurityLevel.WARNING,
                         IS_SMALL_DEVICE, !IS_OFFLINE_PAGE, !IS_PREVIEW));
         assertEquals(R.drawable.omnibox_not_secure_warning,
                 mLocationBarModel.getSecurityIconResource(ConnectionSecurityLevel.WARNING,
                         !IS_SMALL_DEVICE, !IS_OFFLINE_PAGE, !IS_PREVIEW));
-
-        // Tests non-cryptographic secure origins, which should not be downgraded.
-        ShadowSecurityStateModel.setShouldDowngradeNeutralStyling(false);
-        assertEquals(R.drawable.omnibox_info,
-                mLocationBarModel.getSecurityIconResource(ConnectionSecurityLevel.WARNING,
-                        IS_SMALL_DEVICE, !IS_OFFLINE_PAGE, !IS_PREVIEW));
-        assertEquals(R.drawable.omnibox_info,
-                mLocationBarModel.getSecurityIconResource(ConnectionSecurityLevel.WARNING,
-                        !IS_SMALL_DEVICE, !IS_OFFLINE_PAGE, !IS_PREVIEW));
     }
 }
diff --git a/chrome/android/modules/extra_icu/extra_icu_module.gni b/chrome/android/modules/extra_icu/extra_icu_module.gni
index ace0b82..65a0c94b 100644
--- a/chrome/android/modules/extra_icu/extra_icu_module.gni
+++ b/chrome/android/modules/extra_icu/extra_icu_module.gni
@@ -7,7 +7,7 @@
   android_manifest =
       "//chrome/android/modules/extra_icu/internal/java/AndroidManifest.xml"
   java_deps = [
-    "//third_party/icu:icu_extra_assets",
     "//chrome/android/modules/extra_icu/internal:java",
+    "//third_party/icu:icu_extra_assets",
   ]
 }
diff --git a/chrome/app/chrome_content_browser_overlay_manifest.cc b/chrome/app/chrome_content_browser_overlay_manifest.cc
index 5774c4ad..234ed23 100644
--- a/chrome/app/chrome_content_browser_overlay_manifest.cc
+++ b/chrome/app/chrome_content_browser_overlay_manifest.cc
@@ -7,12 +7,9 @@
 #include "base/command_line.h"
 #include "base/no_destructor.h"
 #include "build/build_config.h"
-#include "chrome/browser/engagement/site_engagement_details.mojom.h"
 #include "chrome/browser/media/media_engagement_score_details.mojom.h"
-#include "chrome/browser/ui/webui/bluetooth_internals/bluetooth_internals.mojom.h"
 #include "chrome/browser/ui/webui/downloads/downloads.mojom.h"
 #include "chrome/browser/ui/webui/feed_internals/feed_internals.mojom.h"
-#include "chrome/browser/ui/webui/interventions_internals/interventions_internals.mojom.h"
 #include "chrome/browser/ui/webui/new_tab_page/new_tab_page.mojom.h"
 #include "chrome/browser/ui/webui/omnibox/omnibox.mojom.h"
 #include "chrome/browser/ui/webui/reset_password/reset_password.mojom.h"
@@ -29,10 +26,8 @@
 #include "services/service_manager/public/cpp/manifest_builder.h"
 
 #if defined(OS_CHROMEOS)
-#include "chrome/browser/ui/webui/chromeos/add_supervision/add_supervision.mojom.h"
 #include "chrome/browser/ui/webui/chromeos/crostini_installer/crostini_installer.mojom.h"
 #include "chrome/browser/ui/webui/chromeos/crostini_upgrader/crostini_upgrader.mojom.h"
-#include "chrome/browser/ui/webui/chromeos/machine_learning/machine_learning_internals_page_handler.mojom.h"
 #include "chromeos/services/cellular_setup/public/mojom/cellular_setup.mojom.h"
 #include "chromeos/services/media_perception/public/mojom/media_perception.mojom.h"
 #include "chromeos/services/multidevice_setup/public/mojom/multidevice_setup.mojom.h"
@@ -44,17 +39,10 @@
 #include "chrome/common/conflicts/module_event_sink_win.mojom.h"
 #endif
 
-#if defined(OS_ANDROID)
-#include "chrome/browser/ui/webui/explore_sites_internals/explore_sites_internals.mojom.h"
-#else
+#if !defined(OS_ANDROID)
 #include "chrome/browser/ui/webui/app_management/app_management.mojom.h"
 #endif
 
-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
-    defined(OS_CHROMEOS)
-#include "chrome/browser/ui/webui/discards/discards.mojom.h"
-#endif
-
 const service_manager::Manifest& GetChromeContentBrowserOverlayManifest() {
   static base::NoDestructor<service_manager::Manifest> manifest {
     service_manager::ManifestBuilder()
@@ -110,34 +98,19 @@
                 chromeos::cellular_setup::mojom::CellularSetup,
                 chromeos::crostini_installer::mojom::PageHandlerFactory,
                 chromeos::crostini_upgrader::mojom::PageHandlerFactory,
-                chromeos::machine_learning::mojom::PageHandler,
                 chromeos::multidevice_setup::mojom::MultiDeviceSetup,
                 chromeos::multidevice_setup::mojom::PrivilegedHostDeviceSetter,
                 chromeos::network_config::mojom::CrosNetworkConfig,
 #endif
-                media::mojom::MediaEngagementScoreDetailsProvider,
                 // WebUI-only interfaces go below this line. These should be
                 // brokered through a dedicated interface, but they're here
                 // for for now.
-                downloads::mojom::PageHandlerFactory,
                 feed_internals::mojom::PageHandler,
                 new_tab_page::mojom::PageHandlerFactory,
-#if defined(OS_ANDROID)
-                explore_sites_internals::mojom::PageHandler,
-#else
+#if !defined(OS_ANDROID)
                 app_management::mojom::PageHandlerFactory,
 #endif
-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
-    defined(OS_CHROMEOS)
-                discards::mojom::DetailsProvider, discards::mojom::GraphDump,
-#endif
-#if defined(OS_CHROMEOS)
-                add_supervision::mojom::AddSupervisionHandler,
-#endif
-                mojom::BluetoothInternalsHandler,
-                mojom::InterventionsInternalsPageHandler,
                 mojom::OmniboxPageHandler, mojom::ResetPasswordHandler,
-                mojom::SiteEngagementDetailsProvider,
                 mojom::UsbInternalsPageHandler,
                 snippets_internals::mojom::PageHandlerFactory>())
         .Build()
diff --git a/chrome/app/chrome_exe_main_win.cc b/chrome/app/chrome_exe_main_win.cc
index c62f42d..18a7b932 100644
--- a/chrome/app/chrome_exe_main_win.cc
+++ b/chrome/app/chrome_exe_main_win.cc
@@ -236,5 +236,12 @@
   int rc = loader->Launch(instance, exe_entry_point_ticks);
   loader->RelaunchChromeBrowserWithNewCommandLineIfNeeded();
   delete loader;
+
+  // Process shutdown is hard and utility processes in particular have been
+  // crashing during shutdown. TerminateProcess is safer and faster. Other
+  // process types can be added as needed.
+  if (process_type == switches::kUtilityProcess) {
+    TerminateProcess(GetCurrentProcess(), rc);
+  }
   return rc;
 }
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index 6ebadc7c..522e9bb 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -2618,6 +2618,9 @@
       <message name="IDS_COOKIE_CONTROLS_TOOLTIP" desc="Tooltip shown on a page action icon that is shown when cookie blocking is enabled.">
         Third-party cookie blocking
       </message>
+      <message name="IDS_COOKIE_CONTROLS_HELP" desc="Tooltip shown in the dialog that is shown when cookie blocking is enabled.">
+        Cookies are files created by websites you visit. There are two types of cookies: First-party cookies are created by the site you visit. The site is shown on the address bar. Third-party cookies are created by other sites. These sites own some of the content, like ads or images, that you see on the website you visit.
+      </message>
 
       <!-- Win certificate selector dialog strings.  -->
       <if expr="toolkit_views">
diff --git a/chrome/app/generated_resources_grd/IDS_COOKIE_CONTROLS_HELP.png.sha1 b/chrome/app/generated_resources_grd/IDS_COOKIE_CONTROLS_HELP.png.sha1
new file mode 100644
index 0000000..ee5d269
--- /dev/null
+++ b/chrome/app/generated_resources_grd/IDS_COOKIE_CONTROLS_HELP.png.sha1
@@ -0,0 +1 @@
+4b4da830b7493c02c789933265dcf0340d21855c
\ No newline at end of file
diff --git a/chrome/app/resources/generated_resources_af.xtb b/chrome/app/resources/generated_resources_af.xtb
index c0d2ad1..64a05b2 100644
--- a/chrome/app/resources/generated_resources_af.xtb
+++ b/chrome/app/resources/generated_resources_af.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Gepasmaak</translation>
 <translation id="1178581264944972037">Laat wag</translation>
 <translation id="117916940443676133">Jou sekuriteitsleutel word nie met 'n PIN beskerm nie. Om aanmelddata te bestuur, skep eers 'n PIN.</translation>
-<translation id="118069123878619799">- jou fisieke kenmerke, soos lengte</translation>
 <translation id="1181037720776840403">Verwyder</translation>
 <translation id="1183237619868651138">Kan nie <ph name="EXTERNAL_CRX_FILE" /> in plaaslike kas installeer nie.</translation>
 <translation id="1185924365081634987">Jy kan ook probeer om <ph name="GUEST_SIGNIN_LINK_START" />as gas te blaai<ph name="GUEST_SIGNIN_LINK_END" /> om hierdie netwerkfout reg te stel.</translation>
@@ -1908,7 +1907,6 @@
 <translation id="3678156199662914018">Uitbreiding: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Dankie vir jou terugvoer. Jy is nou vanlyn en jou verslag sal later gestuur word.</translation>
 <translation id="3682824389861648626">Bewegingdrempel</translation>
-<translation id="3683023058278427253">Ons bespeur veelvuldige lisensietipes vir jou domein. Kies een om voort te gaan.</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> se skermdelingversoek</translation>
 <translation id="368789413795732264">Kon nie die lêer skryf nie: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Skryf na lêers en vouers wat jy in die program oopmaak</translation>
@@ -2173,7 +2171,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" ontfout tans hierdie blaaier</translation>
 <translation id="4014432863917027322">Herstel "<ph name="EXTENSION_NAME" />"?</translation>
 <translation id="4015163439792426608">Het jy uitbreidings? <ph name="BEGIN_LINK" />Bestuur jou uitbtreidings<ph name="END_LINK" /> in een maklike plek.</translation>
-<translation id="4020106588733303597">Oeps! Die stelsel kon nie beskikbare lisensies laai nie.</translation>
 <translation id="4020327272915390518">Opsies-kieslys</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">Voeg by Woordeboek</translation>
@@ -2680,7 +2677,6 @@
 <translation id="4823484602432206655">Lees en verander gebruiker- en toestelinstellings</translation>
 <translation id="4824958205181053313">Kanselleer sinkronisering?</translation>
 <translation id="4827675678516992122">Kon nie koppel nie</translation>
-<translation id="4828937774870308359">Natuurlik</translation>
 <translation id="4829768588131278040">Stel PIN op</translation>
 <translation id="4830502475412647084">Installeer tans bedryfstelselopdatering</translation>
 <translation id="4830573902900904548">Jou <ph name="DEVICE_TYPE" /> kan nie met <ph name="NETWORK_NAME" /> aan die internet koppel nie. Kies 'n ander netwerk. <ph name="LEARN_MORE_LINK_START" />Kom meer te wete<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2781,7 +2777,6 @@
 <translation id="4953689047182316270">Reageer op toeganklikheidgebeurtenisse</translation>
 <translation id="4953808748584563296">Verstek- oranje avatar</translation>
 <translation id="4955710816792587366">Kies jou PIN</translation>
-<translation id="4955814292505481804">Jaarliks</translation>
 <translation id="4959262764292427323">Wagwoorde word in jou Google-rekening gestoor sodat jy hulle op enige toestel kan gebruik</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Jou administrateur het hierdie program geïnstalleer.</translation>
@@ -3264,7 +3259,6 @@
 <translation id="5659593005791499971">E-pos</translation>
 <translation id="5659833766619490117">Hierdie bladsy kon nie vertaal word nie</translation>
 <translation id="5660204307954428567">Bind saam met <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Ewigdurend</translation>
 <translation id="5667546120811588575">Stel tans Google Play op …</translation>
 <translation id="5669267381087807207">Aktiveer tans</translation>
 <translation id="5669691691057771421">Voer nuwe PIN in</translation>
@@ -3367,7 +3361,6 @@
 <translation id="5815645614496570556">X.400-adres</translation>
 <translation id="5816434091619127343">Die drukkerveranderinge wat versoek is, sal die drukker onbruikbaar maak.</translation>
 <translation id="5817918615728894473">Bind saam</translation>
-<translation id="5819762621475381970">- die uitleg van jou vertrek</translation>
 <translation id="5821565227679781414">Skep kortpad</translation>
 <translation id="5825412242012995131">Aan (aanbeveel)</translation>
 <translation id="5826395379250998812">Koppel jou <ph name="DEVICE_TYPE" /> aan jou foon. <ph name="LINK_BEGIN" />Kom meer te wete<ph name="LINK_END" /></translation>
@@ -4005,7 +3998,6 @@
 <translation id="674632704103926902">Aktiveer tiksleep</translation>
 <translation id="6748217015615267851">Leweraar: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Jy mag voortgaan, maar net jou gesinkroniseerde data en instellings sal herwin word. Alle plaaslike data sal verloor word.</translation>
-<translation id="6748775883310276718">Enkelprogramkiosk</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Incognito)</translation>
 <translation id="6757101664402245801">URL is gekopieer</translation>
 <translation id="6758056191028427665">Sê vir ons hoe ons vaar.</translation>
@@ -4982,7 +4974,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Geen derdeparty-webkoekies nie}=1{1 derdeparty-webkoekie is geblokkeer}other{# derdeparty-webkoekies is geblokkeer}}</translation>
 <translation id="810875025413331850">Geen nabygeleë toestelle gevind nie.</translation>
 <translation id="8111155949205007504">Deel hierdie wagwoord met jou iPhone</translation>
-<translation id="8113043281354018522">Kies lisensietipe</translation>
 <translation id="8114875720387900039">Verdeel horisontaal</translation>
 <translation id="8116972784401310538">Boekmerkbestuurder</translation>
 <translation id="8117620576188476503">Bestuur verbindings, opdaterings en instellings met die statuslaai. Druk Alt + Shift + S om met die sleutelbord hierheen te kom.</translation>
@@ -5701,7 +5692,6 @@
 <translation id="9121814364785106365">Maak as 'n vasgespelde oortjie oop</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> is onderbreek</translation>
 <translation id="9124003689441359348">Gestoorde wagwoorde sal hier verskyn</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> oor)</translation>
 <translation id="9128317794749765148">Kon nie opstelling voltooi nie</translation>
 <translation id="9128870381267983090">Koppel aan netwerk</translation>
 <translation id="9130015405878219958">Ongeldige modus ingevoer.</translation>
diff --git a/chrome/app/resources/generated_resources_am.xtb b/chrome/app/resources/generated_resources_am.xtb
index ffbc980..1759566 100644
--- a/chrome/app/resources/generated_resources_am.xtb
+++ b/chrome/app/resources/generated_resources_am.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">ብጁ</translation>
 <translation id="1178581264944972037">ለአፍታ አቁም</translation>
 <translation id="117916940443676133">የእርስዎ ደህንነት ቁልፍ በፒን ጥበቃ እየተደረገለት አይደለም ያለው። በመለያ መግቢያ ውሂብን ለማስተዳደር፣ በመጀመሪያ ፒን ይፍጠሩ።</translation>
-<translation id="118069123878619799">- እንደ ቁመት ያሉ የእርስዎ አካላዊ ባህሪያት</translation>
 <translation id="1181037720776840403">አስወግድ</translation>
 <translation id="1183237619868651138"><ph name="EXTERNAL_CRX_FILE" />ን በአካባቢያዊ መሸጎጫ ላይ መጫን አልተቻለም።</translation>
 <translation id="1185924365081634987">እንዲሁም ይህን የአውታረ መረብ ስህተት ለማስተካከል <ph name="GUEST_SIGNIN_LINK_START" />እንደ እንግዳ ሆነው ለማሰስ<ph name="GUEST_SIGNIN_LINK_END" /> መሞከርም ይችላሉ።</translation>
@@ -1883,7 +1882,7 @@
 <translation id="3649505501900178324">ዝማኔ ጊዜው ደርሶ አልፏል</translation>
 <translation id="3650845953328929506">የምዝግብ ማስታወሻ ሰቀላ በመጠባበቅ ላይ።</translation>
 <translation id="3650952250015018111">«<ph name="APP_NAME" />» ይህን እንዲደርስ ይፍቀዱ፦</translation>
-<translation id="3651488188562686558">ከWi-Fi አላቅቅ</translation>
+<translation id="3651488188562686558">ከWi-Fi ግንኙነት አቋርጥ</translation>
 <translation id="3652817283076144888">በማስጀመር ላይ</translation>
 <translation id="3653160965917900914">የአውታረ መረብ ፋይል ማጋራቶች</translation>
 <translation id="3653842108912548333">የእርስዎን ረዳት በVoice Match ይድረሱበት</translation>
@@ -1907,7 +1906,6 @@
 <translation id="3678156199662914018">ቅጥያ፦ <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">ለሰጡን ግብረመልስ እናመሰግናለን። አሁን ከመስመር ውጭ ነዎት፣ እና የእርስዎ ሪፖርት በኋላ ላይ ይላካል።</translation>
 <translation id="3682824389861648626">የእንቅስቃሴ መባቻ</translation>
-<translation id="3683023058278427253">ለጎራዎ በርካታ የፈቃድ አይነቶችን አግኝተናል። ለመቀጠል እባክዎ አንድ ይምረጡ።</translation>
 <translation id="3683524264665795342">የ<ph name="APP_NAME" /> ማያ ገጽ ማጋራት ጥያቄ</translation>
 <translation id="368789413795732264">ይህን ፋይል ለመጻፍ በመሞከር ላይ ሳለ ስህተት ነበር፦ <ph name="ERROR_TEXT" />።</translation>
 <translation id="3688507211863392146">በመተግበሪያው ውስጥ በሚከፍቷቸው ፋይሎች እና አቃፊዎች ላይ ይጽፋል</translation>
@@ -1997,7 +1995,7 @@
 <translation id="3788401245189148511">ይህንን ሊያደርግ ይችላል፦</translation>
 <translation id="3789841737615482174">ጫን  </translation>
 <translation id="379082410132524484">የእርስዎ ካርድ የአገልግሎት ጊዜው አብቅቷል</translation>
-<translation id="3792890930871100565">አታሚዎችን ያላቅቁ</translation>
+<translation id="3792890930871100565">አታሚዎችን ግንኙነት አቋርጥ</translation>
 <translation id="3793395331556663376">ከልክ በላይ በርካታ የሥርዓት ፋይሎች ተከፍተዋል።</translation>
 <translation id="3796648294839530037">ተወዳጅ አውታረ መረቦች፦</translation>
 <translation id="3797739167230984533">የእርስዎ <ph name="BEGIN_LINK" /><ph name="DEVICE_TYPE" /> የሚተዳደረው<ph name="END_LINK" /> በእርስዎ ድርጅት ነው</translation>
@@ -2172,7 +2170,6 @@
 <translation id="4013132157686828973">«<ph name="CLIENT_NAME" />» ይህን አሳሽ እያረመ ነው</translation>
 <translation id="4014432863917027322">«<ph name="EXTENSION_NAME" />» ይጠገን?</translation>
 <translation id="4015163439792426608">ቅጥያዎች አለዎት? በአንዲት ቦታ ላይ ሆነው <ph name="BEGIN_LINK" />ቅጥያዎችዎን ማቀናበር<ph name="END_LINK" /> ይችላሉ።</translation>
-<translation id="4020106588733303597">ውይ! ሥርዓቱ የሚገኙ ፈቃዶችን መጫን አልተሳካለትም።</translation>
 <translation id="4020327272915390518">የአማራጮች ምናሌ</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;ወደ መዝገበ ቃላት አክል</translation>
@@ -2677,7 +2674,6 @@
 <translation id="4823484602432206655">የተጠቃሚ እና የመሣሪያ ቅንብሮችን ያንብቡ እና ይለውጡ</translation>
 <translation id="4824958205181053313">ስምረት ይሰረዝ?</translation>
 <translation id="4827675678516992122">መገናኘት አልተቻለም</translation>
-<translation id="4828937774870308359">የአውስትራሊያ</translation>
 <translation id="4829768588131278040">ፒን ያዋቅሩ</translation>
 <translation id="4830502475412647084">የስርዓተ ክወና ዝማኔን በመጫን ላይ</translation>
 <translation id="4830573902900904548">የእርስዎ <ph name="DEVICE_TYPE" /> <ph name="NETWORK_NAME" />ን ተጠቅሞ ከበይነመረብ ጋር መገናኘት አልቻልም። እባክዎ ሌላ አውታረ መረብ ይምረጡ። <ph name="LEARN_MORE_LINK_START" />ተጨማሪ ለመረዳት<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2778,7 +2774,6 @@
 <translation id="4953689047182316270">ለተደራሽነት ክስተቶች ምላሽ መስጠት</translation>
 <translation id="4953808748584563296">ነባሪ ብርቱካናማ አምሳያ</translation>
 <translation id="4955710816792587366">የእርስዎን ፒን ይምረጡ</translation>
-<translation id="4955814292505481804">ዓመታዊ</translation>
 <translation id="4959262764292427323">በማናቸውም መሣሪያ ላይ እርስዎ ሊጠቀሙባቸው እንዲችሉ የይለፍ ቃላት በእርስዎ Google መለያ ውስጥ ይቀመጣሉ</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">ይህ መተግበሪያ በእርስዎ አስተዳዳሪ ተጭኗል።</translation>
@@ -3260,7 +3255,6 @@
 <translation id="5659593005791499971">ኢሜይል</translation>
 <translation id="5659833766619490117">ይህ ገጽ ሊተረጎም አልቻለም</translation>
 <translation id="5660204307954428567">ከ<ph name="DEVICE_NAME" /> ጋር አጣምር</translation>
-<translation id="5662477687021125631">ዘላቂ</translation>
 <translation id="5667546120811588575">Google Playን በማዋቀር ላይ...</translation>
 <translation id="5669267381087807207">በማግበር ላይ</translation>
 <translation id="5669691691057771421">አዲስ ፒን ያስገቡ</translation>
@@ -3363,7 +3357,6 @@
 <translation id="5815645614496570556">X.400 አድራሻ</translation>
 <translation id="5816434091619127343">የተጠየቁት የአታሚ ለውጦች አታሚው ጥቅም እንዳይሰጥ ያደርጉታል።</translation>
 <translation id="5817918615728894473">አጣምር</translation>
-<translation id="5819762621475381970">- የክፍልዎ አቀማመጥ</translation>
 <translation id="5821565227679781414">አቋራጭ ፍጠር</translation>
 <translation id="5825412242012995131">በርቷል (የሚመከር)</translation>
 <translation id="5826395379250998812">የእርስዎን <ph name="DEVICE_TYPE" /> ከስልክዎ ጋር ያገናኙት። <ph name="LINK_BEGIN" />የበለጠ ለመረዳት<ph name="LINK_END" /></translation>
@@ -4001,7 +3994,6 @@
 <translation id="674632704103926902">መታ አድርጎ መጎተትን አንቃ</translation>
 <translation id="6748217015615267851">ምስል ሰሪ፦ <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">መቀጠል ይችላሉ፣ ነገር ግን የእርስዎ የተመሳሰለ ውሂብ እና ቅንብሮች ብቻ እንደነበሩ ይመለሳሉ። ሁሉም አካባቢያዊ ውሂብ ይጠፋል።</translation>
-<translation id="6748775883310276718">የነጠላ መተግበሪያ ኪዮስክ</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (ማንነትን የማያሳውቅ)</translation>
 <translation id="6757101664402245801">ዩአርኤል ተቀድቷል</translation>
 <translation id="6758056191028427665">እንዴት እኛ እያደርግን እንደሆነ እንድናውቅ ያድርጉን።</translation>
@@ -4984,7 +4976,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{የሶስተኛ ወገን ኩኪዎች የሉም}=1{1 የሶስተኛ ወገን ኩኪ ታግዷል}one{# የሶስተኛ ወገን ኩኪዎች ታግደዋል}other{# የሶስተኛ ወገን ኩኪዎች ታግደዋል}}</translation>
 <translation id="810875025413331850">በአቅራቢያ ያሉ ምንም መሣሪያዎች አልተገኙም።</translation>
 <translation id="8111155949205007504">ይህን የይለፍ ቃል ለእርስዎ iPhone ያጋሩ</translation>
-<translation id="8113043281354018522">የፈቃድ አይነት ይምረጡ</translation>
 <translation id="8114875720387900039">አግድም ክፈል</translation>
 <translation id="8116972784401310538">&amp;ዕልባት አቀናባሪ</translation>
 <translation id="8117620576188476503">ግንኙነቶችን፣ ዝማኔዎችን እና ቅንብሮችን በሁኔታ ትሪ ያቀናብሩ። በቁልፍ ሰሌዳ ወደዚህ ለመምጣት Alt + Shift + S ይጫኑ።</translation>
@@ -5702,7 +5693,6 @@
 <translation id="9121814364785106365">እንደተሰካ ትር ክፈት</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> ባለበት ቆሟል</translation>
 <translation id="9124003689441359348">የተቀመጡ የይለፍ ቃላትዎ እዚህ ይታያሉ</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> ይቀራሉ)</translation>
 <translation id="9128317794749765148">ቅንብርን ማጠናቀቅ አልተቻለም</translation>
 <translation id="9128870381267983090">ከአውታረ መረብ ጋር ይገናኙ</translation>
 <translation id="9130015405878219958">ልክ ያልሆነ ሁነታ ገብቷል።</translation>
diff --git a/chrome/app/resources/generated_resources_ar.xtb b/chrome/app/resources/generated_resources_ar.xtb
index 69e35b0..199f2c3 100644
--- a/chrome/app/resources/generated_resources_ar.xtb
+++ b/chrome/app/resources/generated_resources_ar.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">مخصص</translation>
 <translation id="1178581264944972037">الإيقاف مؤقتًا</translation>
 <translation id="117916940443676133">مفتاح الأمان غير محمي برقم تعريف شخصي. لإدارة بيانات تسجيل الدخول، عليك أولاً إنشاء رقم تعريف شخصي.</translation>
-<translation id="118069123878619799">- سماتك البدنية، مثل الطول</translation>
 <translation id="1181037720776840403">إزالة</translation>
 <translation id="1183237619868651138">تعذّر تثبيت <ph name="EXTERNAL_CRX_FILE" /> في ذاكرة التخزين المؤقت المحلية.</translation>
 <translation id="1185924365081634987">يمكنك أيضا أن تجرّب <ph name="GUEST_SIGNIN_LINK_START" />التصفح كضيف<ph name="GUEST_SIGNIN_LINK_END" /> لإصلاح هذا الخطأ في الشبكة.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">في انتظار <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> من الأجهزة الأخرى المتاحة.</translation>
 <translation id="1495677929897281669">الرجوع إلى علامة التبويب</translation>
+<translation id="1499271269825557605">في حال عدم التعرُّف على إحدى الإضافات أو في حال كان متصفّحك لا يعمل كما هو متوقع، يمكنك إيقاف الإضافات أو تخصيصها هنا.</translation>
 <translation id="1500297251995790841">جهاز غير معروف [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">يجب أن يكون حساب المالك هذا أول حساب يتم تسجيل الدخول إليه في جلسة تسجيل دخول متعدد.</translation>
 <translation id="150411034776756821">إزالة <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">تم حظر دخول هذه الصفحة إلى الكاميرا التابعة لك.</translation>
 <translation id="1507246803636407672">إل&amp;غاء</translation>
 <translation id="1508491105858779599">ضع إصبعك على جهاز جهاز استشعار بصمات الإصبع لإلغاء قفل الجهاز.</translation>
+<translation id="1508575541972276599">‏الإصدار الحالي هو Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">‏الوصول إلى أي <ph name="DEVICE_NAME_AND_VENDOR" /> عبر USB</translation>
 <translation id="150962533380566081">‏PUK غير صالح.</translation>
 <translation id="1510030919967934016">تم حظر تتبع هذه الصفحة لموقعك.</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">تطبيق</translation>
 <translation id="1603914832182249871">(التصفح المتخفي)</translation>
 <translation id="1604432177629086300">تعذّرت الطباعة. يُرجى التحقق من الطابعة وإعادة المحاولة.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: مزامنة كلمات المرور لا تعمل</translation>
 <translation id="1607139524282324606">محو الإدخال</translation>
 <translation id="1608626060424371292">إزالة هذا المستخدم</translation>
 <translation id="1608668830839595724">المزيد من الإجراءات للعناصر المختارة</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">بيانات التطبيق المستضافة</translation>
 <translation id="1776712937009046120">إضافة مستخدم</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">يخضع هذا الجهاز لإدارة <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    يُرجى النقر على "التالي" لمواصلة تسجيل الدخول إلى حسابك على <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation>
 <translation id="1779652936965200207">يُرجى إدخال مفتاح المرور هذا على "<ph name="DEVICE_NAME" />":</translation>
 <translation id="1780152987505130652">إغلاق المجموعة</translation>
 <translation id="1781291988450150470">رمز رقم التعريف الشخصي الحالي</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">الإجراء غير متاح</translation>
 <translation id="2050339315714019657">رأسي</translation>
 <translation id="2053312383184521053">بيانات حالة الخمول</translation>
+<translation id="2055585478631012616">سيتم تسجيل خروجك من هذه المواقع الإلكترونية، بما في ذلك علامات التبويب المفتوحة.</translation>
 <translation id="205560151218727633">‏شعار مساعد Google</translation>
 <translation id="2058456167109518507">تم رصد جهاز للاتصال</translation>
 <translation id="2059913712424898428">المنطقة الزمنية</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">تراجع</translation>
 <translation id="2080070583977670716">مزيد من الإعدادات</translation>
 <translation id="2087822576218954668">الطباعة: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">الشبكة الافتراضية الخاصة</translation>
 <translation id="2089566709556890888">‏التصفح بأمان باستخدام Google Chrome</translation>
 <translation id="2089795179672254991">طلب الإذن عند محاولة أحد المواقع الاطلاع على النصوص والصور التي تم نسخها إلى الحافظة (موصى به)</translation>
 <translation id="2090165459409185032">‏لاسترداد معلومات حسابك، انتقل إلى: google.com/accounts/recovery</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">يحاول موقع ويب الوصول إلى إدخال الفيديو والصوت</translation>
 <translation id="2379281330731083556">الطباعة باستخدام مربع حوار النظام... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">اسأل قبل الإرسال (موصى به)</translation>
+<translation id="2382818385048255866">التحقق من الإضافات</translation>
 <translation id="2384436799579181135">حدث خطأ ما. يُرجى التحقق من الطابعة وإعادة المحاولة.</translation>
 <translation id="2387458720915042159">نوع الاتصال بالخادم الوكيل</translation>
 <translation id="2391419135980381625">الخط القياسي</translation>
@@ -1036,6 +1043,7 @@
 <translation id="2462724976360937186">معرّف مفتاح المرجع المصدق</translation>
 <translation id="2462752602710430187">تمت إضافة <ph name="PRINTER_NAME" /></translation>
 <translation id="2464089476039395325">‏خادم وكيل HTTP</translation>
+<translation id="2467267713099745100">الشبكة <ph name="NETWORK_TYPE" />، متوقفة</translation>
 <translation id="2468205691404969808">يتم استخدام ملفات تعريف الارتباط لتذكّر اهتماماتك حتى لو لم تزُر تلك الصفحات.</translation>
 <translation id="2468402215065996499">تماغوتشي</translation>
 <translation id="2469259292033957819">لا تتوفّر لديك أي طابعات محفوظة.</translation>
@@ -1290,6 +1298,7 @@
 <translation id="2800760947029405028">تحميل صورة</translation>
 <translation id="2803375539583399270">أدخل رقم التعريف الشخصي</translation>
 <translation id="2804043232879091219">تعذَّر فتح المتصفّح البديل</translation>
+<translation id="2804667941345577550">سيتم تسجيل خروجك من هذا الموقع الإلكتروني، بما في ذلك علامات التبويب المفتوحة.</translation>
 <translation id="2804680522274557040">تم إيقاف الكاميرا</translation>
 <translation id="2805646850212350655">‏نظام تشفير الملفات لـ Microsoft</translation>
 <translation id="2805756323405976993">التطبيقات</translation>
@@ -1297,6 +1306,7 @@
 <translation id="2806891468525657116">الاختصار موجود من قَبل</translation>
 <translation id="2807517655263062534">هنا تظهر الملفات التي تم تنزيلها</translation>
 <translation id="2809586584051668049">و<ph name="NUMBER_ADDITIONAL_DISABLED" /> من الإضافات الأخرى</translation>
+<translation id="2810390687497823527">في حال عدم التعرُّف على إحدى الإضافات أو في حال كان متصفّحك لا يعمل كما هو متوقع، يمكنك إيقاف الإضافات أو تخصيصها هنا.</translation>
 <translation id="2812049959647166806">‏Thunderbolt غير متوافق.</translation>
 <translation id="2812944337881233323">تجربة الخروج وتسجيل الدخول مرة أخرى</translation>
 <translation id="2812989263793994277">عدم عرض أي صور</translation>
@@ -1336,6 +1346,7 @@
 <translation id="2861941300086904918">‏إدارة الأمان لـ Native Client</translation>
 <translation id="2864601841139725659">تعيين صورة الملف الشخصي</translation>
 <translation id="2865919525181940183">لقطة شاشة للبرامج التي تظهر على الشاشة حاليًا</translation>
+<translation id="286674810810214575">جارٍ التحقق من مصادر الطاقة...</translation>
 <translation id="2867768963760577682">فتح كعلامة تبويب مثبتة</translation>
 <translation id="2868746137289129307">تعتبر هذه الإضافة قديمة وغير مفعّلة بواسطة سياسة المؤسسة. وقد تصبح مفعّلة تلقائيًا عندما يتوفر إصدار أحدث.</translation>
 <translation id="2870560284913253234">الموقع</translation>
@@ -1413,6 +1424,7 @@
 <translation id="2972581237482394796">إعا&amp;دة</translation>
 <translation id="2973324205039581528">تجاهل الموقع</translation>
 <translation id="2977480621796371840">الإزالة من مجموعة</translation>
+<translation id="2979520980928493164">‏متصفّح Chrome أكثر أمانًا وأسرع</translation>
 <translation id="2979639724566107830">فتح الإشارة في نافذة جديدة</translation>
 <translation id="2981113813906970160">عرض مؤشر الماوس الكبير</translation>
 <translation id="2982970937345031">إرسال التقرير بدون الكشف عن هويتك</translation>
@@ -1519,6 +1531,7 @@
 <translation id="3143515551205905069">إلغاء المزامنة</translation>
 <translation id="3143754809889689516">التشغيل من البداية</translation>
 <translation id="3144647712221361880">فتح الرابط كـ</translation>
+<translation id="3145187901750964977">تعذّر تثبيت الآلة الافتراضية. يُرجى إعادة المحاولة أو التواصل مع مشرف أجهزة مؤسستك. رمز الخطأ: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">الإصدار:
     <ph name="LINUX_VERSION" />
 
@@ -1557,6 +1570,7 @@
 <translation id="3192947282887913208">ملفات صوتية</translation>
 <translation id="3194737229810486521">يريد <ph name="URL" /> تخزين البيانات بشكل دائم على جهازك.</translation>
 <translation id="3199127022143353223">الخوادم</translation>
+<translation id="3201306578844503970">تعذّر تثبيت الآلة الافتراضية لحدوث خطأ بالشبكة. يُرجى إعادة المحاولة أو التواصل مع مشرف أجهزة مؤسستك. رمز الخطأ: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">‏ستظهر أجهزة USB المتاحة هنا.</translation>
 <translation id="3202131003361292969">المسار</translation>
 <translation id="3202173864863109533">تم كتم صوت علامة التبويب.</translation>
@@ -1893,7 +1907,6 @@
 <translation id="3678156199662914018">الإضافة: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">شكرًا على تعليقاتك. أنت غير متصل الآن، وسيتم إرسال تقريرك لاحقًا.</translation>
 <translation id="3682824389861648626">الحد الأدنى للحركات</translation>
-<translation id="3683023058278427253">اكتشفنا عدة أنواع من التراخيص لنطاقك. يرجى اختيار واحد للمتابعة.</translation>
 <translation id="3683524264665795342">يطلب <ph name="APP_NAME" /> مشاركة الشاشة</translation>
 <translation id="368789413795732264">حدث خطأ أثناء محاولة كتابة الملف: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">تحرير الملفات التي تفتحها في التطبيق</translation>
@@ -2067,6 +2080,7 @@
 <translation id="389589731200570180">مشاركة مع الضيوف</translation>
 <translation id="389901847090970821">تحديد لوحة مفاتيح</translation>
 <translation id="3899879303189199559">بلا إنترنت لمدة تتجاوز عامًا</translation>
+<translation id="3900789207771372462">يمكن لبعض الإضافات الاطّلاع على نشاط تصفّحك، بما في ذلك المعلومات الشخصية.</translation>
 <translation id="3900966090527141178">تصدير كلمات المرور</translation>
 <translation id="3901991538546252627">جارٍ الاتصال بـ <ph name="NAME" /></translation>
 <translation id="3905761538810670789">إصلاح التطبيق</translation>
@@ -2154,7 +2168,6 @@
 <translation id="4013132157686828973">يُجري "<ph name="CLIENT_NAME" />" تصحيحًا لأخطاء هذا المتصفِّح.</translation>
 <translation id="4014432863917027322">هل ترغب في إصلاح "<ph name="EXTENSION_NAME" />"؟</translation>
 <translation id="4015163439792426608">ألديك إضافات مثبَّتة؟ يمكنك <ph name="BEGIN_LINK" />إدارة الإضافات<ph name="END_LINK" /> في مكان واحد يسهُل الوصول إليه.</translation>
-<translation id="4020106588733303597">عفوًا!  تعذّر النظام في تحميل التراخيص المتاحة.</translation>
 <translation id="4020327272915390518">قائمة الخيارات</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">إ&amp;ضافة إلى القاموس</translation>
@@ -2192,6 +2205,7 @@
 <translation id="407520071244661467">تغيير الحجم</translation>
 <translation id="4075639477629295004">يتعذَر إرسال <ph name="FILE_NAME" />.</translation>
 <translation id="4077917118009885966">حظر الإعلانات على هذا الموقع</translation>
+<translation id="4077919383365622693">سيتم محو جميع البيانات وملفات تعريف الارتباط المُخزّنة من خلال <ph name="SITE" />.</translation>
 <translation id="4079140982534148664">استخدام التدقيق الإملائي المُحسَّن</translation>
 <translation id="4081242589061676262">يتعذَّر إرسال الملف.</translation>
 <translation id="4084682180776658562">إشارة</translation>
@@ -2266,6 +2280,7 @@
 <translation id="4181841719683918333">اللغات</translation>
 <translation id="4184885522552335684">السحب لنقل شاشة</translation>
 <translation id="4194570336751258953">تفعيل الضغط للنقر</translation>
+<translation id="4194595472342532425">‏تعذّر إعداد Plugin VM بسبب وجود مشكلة في الضبط. يُرجى التواصل مع مشرف أجهزة مؤسستك. رمز الخطأ: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">الفتح في علامة تبويب جديدة</translation>
 <translation id="4195814663415092787">المتابعة من حيث توقفت</translation>
 <translation id="4198146608511578238">‏ما عليك سوى الضغط على رمز Launcher باستمرار للتحدث إلى مساعد Google.</translation>
@@ -2489,6 +2504,7 @@
 <translation id="4549791035683739768">لا يتضمّن مفتاح الأمان بصمات أصابع مخزّنة.</translation>
 <translation id="4551763574344810652">اضغط على <ph name="MODIFIER_KEY_DESCRIPTION" /> للتراجع</translation>
 <translation id="4552089082226364758">الفلاش</translation>
+<translation id="4552759165874948005">الشبكة <ph name="NETWORK_TYPE" />، قوة الإشارة <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">الإضافة الخارجية في نفس الإصدار أو إصدار أقل مقارنة بالموجودة حاليًا.</translation>
 <translation id="4555769855065597957">ظل</translation>
 <translation id="4555863373929230635">‏لحفظ كلمات المرور في حسابك على Google، عليك تسجيل الدخول وتفعيل المزامنة.</translation>
@@ -2566,6 +2582,7 @@
 <translation id="4665446389743427678">سيتم حذف جميع البيانات المُخزَّنة من خلال <ph name="SITE" />.</translation>
 <translation id="4668721319092543482">انقر لتمكين <ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">صفحة التنقية</translation>
+<translation id="46733273239502219">سيتم أيضًا محو البيانات المتوفرة بلا اتصال إنترنت في التطبيقات المثبّتة.</translation>
 <translation id="4673442866648850031">فتح أدوات قلم الشاشة عندما تتم إزالة قلم الشاشة</translation>
 <translation id="4677585247300749148">يريد <ph name="URL" /> الاستجابة لأحداث إمكانية الوصول.</translation>
 <translation id="4677772697204437347">ذاكرة وحدة معالج الرسومات</translation>
@@ -2657,7 +2674,6 @@
 <translation id="4823484602432206655">قراءة إعدادات المستخدم والجهاز وتغييرها</translation>
 <translation id="4824958205181053313">هل تريد إلغاء المزامنة؟</translation>
 <translation id="4827675678516992122">تعذّر الاتصال</translation>
-<translation id="4828937774870308359">أسترالي</translation>
 <translation id="4829768588131278040">إعداد رقم التعريف الشخصي</translation>
 <translation id="4830502475412647084">جارٍ تثبيت تحديث لنظام التشغيل</translation>
 <translation id="4830573902900904548"><ph name="DEVICE_TYPE" /> غير قادر على الاتصال بالإنترنت باستخدام <ph name="NETWORK_NAME" />. يُرجى اختيار شبكة أخرى. <ph name="LEARN_MORE_LINK_START" />مزيد من المعلومات<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2698,6 +2714,7 @@
 <translation id="4876273079589074638">ساعد مهندسينا في تحري هذا العطل وإصلاحه. واسرد الخطوات الدقيقة إذا كان ذلك ممكنًا. لا توجد تفاصيل صغيرة جدًا!</translation>
 <translation id="4876895919560854374">قفل الشاشة وإلغاء قفلها</translation>
 <translation id="4877276003880815204">فحص العناصر</translation>
+<translation id="4878653975845355462">أوقف المشرف الخلفيات المخصّصة.</translation>
 <translation id="4879491255372875719">الإعداد التلقائي (تلقائي)</translation>
 <translation id="4880328057631981605">اسم نقطة الدخول</translation>
 <translation id="4880827082731008257">سجلّ البحث</translation>
@@ -2753,10 +2770,10 @@
 <translation id="4943691134276646401">يجب ربط "<ph name="CHROME_EXTENSION_NAME" />" بمنفذ تسلسلي</translation>
 <translation id="4944310289250773232">تتم استضافة خدمة المصادقة هذه من قِبل <ph name="SAML_DOMAIN" />.</translation>
 <translation id="495170559598752135">إجراءات</translation>
+<translation id="4952981627953231344">‏لا يُسمح باستخدام Plugin VM على هذا الجهاز. يُرجى التواصل مع مشرف أجهزة مؤسستك.</translation>
 <translation id="4953689047182316270">الاستجابة لأحداث إمكانية الوصول</translation>
 <translation id="4953808748584563296">الصورة الرمزية التلقائية البرتقالية</translation>
 <translation id="4955710816792587366">اختيار رقم التعريف الشخصي</translation>
-<translation id="4955814292505481804">سنوي</translation>
 <translation id="4959262764292427323">‏يتم حفظ كلمات المرور في حسابك على Google حتى تتمكَّن من استخدامها على أي جهاز.</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">لقد ثبّت مشرفك هذا التطبيق.</translation>
@@ -3238,7 +3255,6 @@
 <translation id="5659593005791499971">البريد الإلكتروني</translation>
 <translation id="5659833766619490117">تعذَّرت ترجمة هذه الصفحة</translation>
 <translation id="5660204307954428567">الإقران مع <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">دائم</translation>
 <translation id="5667546120811588575">‏جارٍ إعداد Google Play...</translation>
 <translation id="5669267381087807207">تفعيل</translation>
 <translation id="5669691691057771421">إدخال رقم التعريف الشخصي الجديد</translation>
@@ -3254,6 +3270,7 @@
 <translation id="5687326903064479980">المنطقة الزمنية</translation>
 <translation id="5689516760719285838">الموقع الجغرافي</translation>
 <translation id="56907980372820799">ربط البيانات</translation>
+<translation id="5691180005790455277">سيتم محو جميع البيانات وملفات تعريف الارتباط المُخزّنة من خلال<ph name="SITE_GROUP_NAME" /> وأي مواقع إلكترونية ضمنها.</translation>
 <translation id="5691511426247308406">العائلة</translation>
 <translation id="5692183275898619210">اكتملت الطباعة</translation>
 <translation id="5696143504434933566">الإبلاغ عن إساءة الاستخدام من "<ph name="EXTENSION_NAME" />"</translation>
@@ -3340,7 +3357,6 @@
 <translation id="5815645614496570556">‏عنوان X.400</translation>
 <translation id="5816434091619127343">تغييرات الطابعة المطلوبة تجعل الطابعة غير قابلة للاستخدام.</translation>
 <translation id="5817918615728894473">إقران</translation>
-<translation id="5819762621475381970">- شكل غرفتك</translation>
 <translation id="5821565227679781414">إنشاء اختصار</translation>
 <translation id="5825412242012995131">تفعيل (مُقترح)</translation>
 <translation id="5826395379250998812">يمكنك ربط الجهاز <ph name="DEVICE_TYPE" /> بهاتفك. <ph name="LINK_BEGIN" />مزيد من المعلومات<ph name="LINK_END" /></translation>
@@ -3476,6 +3492,7 @@
 <translation id="6007240208646052708">البحث الصوتي غير متاح بلغتك.</translation>
 <translation id="6009781704028455063">جهاز استشعار مضمَّن</translation>
 <translation id="6010869025736512584">جارٍ الوصول إلى إدخال الفيديو</translation>
+<translation id="6011074160056912900">شبكة إيثرنت</translation>
 <translation id="6011193465932186973">بصمة الإصبع</translation>
 <translation id="6011449291337289699">محو بيانات الموقع</translation>
 <translation id="6015266928248016057">‏PUK غير صحيح. مرات إعادة المحاولة المتبقية: <ph name="RETRIES" /></translation>
@@ -3512,6 +3529,7 @@
 <translation id="6053401458108962351">&amp;محو بيانات التصفح...</translation>
 <translation id="6055171183283175969">كلمة المرور التي أدخلتها غير صحيحة.</translation>
 <translation id="6055392876709372977">‏PKCS #1 SHA-256 مع تشفير RSA</translation>
+<translation id="6055907707645252013">الشبكة <ph name="NETWORK_TYPE" />، غير متصلة</translation>
 <translation id="6056710589053485679">إعادة تحميل عادية</translation>
 <translation id="6057381398996433816">تم حظر هذا الموقع من استخدام أجهزة استشعار الإضاءة والحركة.</translation>
 <translation id="6058567592298841668">آلة افتراضية للمكوّن الإضافي: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3575,6 +3593,7 @@
 <translation id="6136114942382973861">إغلاق شريط التنزيلات</translation>
 <translation id="6137767437444130246">شهادة المستخدم</translation>
 <translation id="6138680304137685902">‏توقيع X9.62 ECDSA باستخدام SHA-384</translation>
+<translation id="6138894911715675297">الشبكة <ph name="NETWORK_TYPE" />، لا تتوفّر شبكة</translation>
 <translation id="6141988275892716286">تأكيد التنزيل</translation>
 <translation id="6143186082490678276">الحصول على مساعدة</translation>
 <translation id="6144938890088808325">‏ساعدنا في تحسين أجهزة Chromebook</translation>
@@ -3882,6 +3901,7 @@
 <translation id="6602956230557165253">استخدام مفتاحي السهمين لليمين واليسار للتنقل.</translation>
 <translation id="6605847144724004692">لم يتم التقييم بواسطة أي مستخدمين بعد.</translation>
 <translation id="6607831829715835317">المزيد من &amp;الأدوات</translation>
+<translation id="6611972847767394631">ستجد علامات التبويب هنا</translation>
 <translation id="6612358246767739896">المحتوى المحمي</translation>
 <translation id="6615455863669487791">عرضه</translation>
 <translation id="6618097958368085618">الاحتفاظ به على أيّ حال</translation>
@@ -3950,6 +3970,7 @@
 <translation id="6709133671862442373">الأخبار</translation>
 <translation id="6709357832553498500">الاتصال باستخدام <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">السابق</translation>
+<translation id="6715803357256707211">‏لقد حدث خطأ أثناء تثبيت تطبيق Linux. يُرجى النقر على الإشعار لمعرفة التفاصيل.</translation>
 <translation id="6721678857435001674">الاطّلاع على العلامة التجارية لمفتاح الأمان وطرازه.</translation>
 <translation id="6721972322305477112">&amp;ملف</translation>
 <translation id="672213144943476270">يُرجى إلغاء قفل ملفك الشخصي قبل التصفح كضيف.</translation>
@@ -3974,7 +3995,6 @@
 <translation id="674632704103926902">تفعيل السحب بعد النقر</translation>
 <translation id="6748217015615267851">العارض: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">يمكنك المتابعة، ولكن لن تتم استعادة إلا البيانات والإعدادات المتزامنة فقط. وسيتم فقد جميع البيانات المحلية.</translation>
-<translation id="6748775883310276718">كشك التطبيق الواحد</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (التصفح المتخفي)</translation>
 <translation id="6757101664402245801">‏تم نسخ عنوان URL</translation>
 <translation id="6758056191028427665">يُرجى تقييم أدائنا.</translation>
@@ -3984,6 +4004,7 @@
 <translation id="6769712124046837540">جارٍ إضافة طابعة...</translation>
 <translation id="6770664076092644100">‏التحقُّق عبر NFC</translation>
 <translation id="6771503742377376720">هو مرجع مصدق</translation>
+<translation id="6772339735733515807">إدارة الإضافات</translation>
 <translation id="6775163072363532304">الأجهزة المتاحة ستظهر هنا.</translation>
 <translation id="6777817260680419853">تم حظر إعادة التوجيه</translation>
 <translation id="6778737459546443941">لم يوافق عليه والداك حتى الآن</translation>
@@ -4122,6 +4143,7 @@
 <translation id="6972180789171089114">صوت/فيديو</translation>
 <translation id="6972553992270299730">يتعذّر على <ph name="ORIGIN" /> فتح الملفات في هذا المجلد لأنه يحتوي على ملفات النظام.</translation>
 <translation id="6972754398087986839">البدء</translation>
+<translation id="6973611239564315524">‏تتوفّر ترقية إلى Debian 10 (Buster).</translation>
 <translation id="6974609594866392343">وضع تجريبي بلا اتصال بالإنترنت</translation>
 <translation id="6977381486153291903">مراجعة البرامج الثابتة</translation>
 <translation id="6978121630131642226">محرّكات البحث</translation>
@@ -4581,6 +4603,7 @@
 <translation id="7644543211198159466">اللون والتصميم</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (المالك)</translation>
 <translation id="7645681574855902035">‏جارٍ إلغاء عملية الاحتفاظ بنسخة احتياطية من Linux</translation>
+<translation id="7646772052135772216">مزامنة كلمات المرور لا تعمل</translation>
 <translation id="7647403192093989392">ليست هناك أنشطة حديثة</translation>
 <translation id="7648992873808071793">تخزين الملفات على هذا الجهاز</translation>
 <translation id="7649070708921625228">مساعدة</translation>
@@ -4769,6 +4792,7 @@
 <translation id="7877451762676714207">خطأ غير معروف في الخادم. يُرجى إعادة المحاولة أو الاتصال بمشرف الخادم.</translation>
 <translation id="7877680364634660272">جولة</translation>
 <translation id="7878562273885520351">من المحتمل أنه تم اختراق كلمة مرورك</translation>
+<translation id="7879631849810108578">مجموعة الاختصار: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">سيتم حذف البيانات المحلية عند إعادة التشغيل.</translation>
 <translation id="7881483672146086348">عرض حساب</translation>
 <translation id="7882358943899516840">نوع مقدم الخدمة</translation>
@@ -4855,6 +4879,7 @@
 <translation id="7987814697832569482">‏الاتِّصال دائمًا من خلال الشبكة الظاهرية الخاصة (VPN) هذه</translation>
 <translation id="7988355189918024273">تفعيل ميزات إمكانية الدخول</translation>
 <translation id="7991296728590311172">إعدادات الوصول عبر مفتاح التحويل</translation>
+<translation id="7994350303002908848">‏تعذّر تثبيت Plugin VM. يُرجى إعادة المحاولة أو التواصل مع مشرف أجهزة مؤسستك. رمز الخطأ: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">‏طريقة EAP</translation>
 <translation id="7997826902155442747">أولوية المعالجة</translation>
 <translation id="7999229196265990314">تم إنشاء الملفات التالية:
@@ -4947,7 +4972,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{ليس هناك ملفات تعريف ارتباط تابعة لجهات خارجية}=1{تم حظر ملف تعريف ارتباط واحد تابع لجهات خارجية}two{تم حظر ملفَي تعريف ارتباط تابعَين لجهات خارجية}few{تم حظر # ملفات تعريف ارتباط تابعة لجهات خارجية}many{تم حظر # ملف تعريف ارتباط تابع لجهات خارجية}other{تم حظر # ملف تعريف ارتباط تابع لجهات خارجية}}</translation>
 <translation id="810875025413331850">لم يتم العثور على أجهزة مجاورة.</translation>
 <translation id="8111155949205007504">‏مشاركة كلمة المرور هذه مع جهاز iPhone</translation>
-<translation id="8113043281354018522">اختيار نوع الترخيص</translation>
 <translation id="8114875720387900039">تقسيم أفقي</translation>
 <translation id="8116972784401310538">م&amp;دير الإشارات</translation>
 <translation id="8117620576188476503">‏يمكنك إدارة الاتصالات والتحديثات والإعدادات من خلال شريط الحالة. وللوصول إلى هنا من خلال لوحة المفاتيح، اضغط على Alt + Shift + S.</translation>
@@ -5104,6 +5128,7 @@
 <translation id="8327039559959785305">‏حدث خطأ أثناء تثبيت ملفات نظام التشغيل Linux. يُرجى إعادة المحاولة.</translation>
 <translation id="8335587457941836791">إزالة التثبيت من الرف</translation>
 <translation id="8336407002559723354">إنهاء التحديثات في <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">إعادة تشغيل الجهاز لعرض نص النظام باللغة <ph name="LANGUAGE" /></translation>
 <translation id="8336739000755212683">تغيير صورة حساب الجهاز</translation>
 <translation id="8337047789441383384">لقد سجّلت مفتاح الأمان هذا من قبل. لا داعي لتسجيله مرة أخرى.</translation>
 <translation id="8338952601723052325">موقع الويب لمطوّر البرامج</translation>
@@ -5147,6 +5172,7 @@
 <translation id="8400146488506985033">إدارة الأشخاص</translation>
 <translation id="8401432541486058167">عليك تقديم رقم التعريف الشخصي المرتبط بالبطاقة الذكية التابعة لك.</translation>
 <translation id="8405046151008197676">الحصول على السمات المميزة من آخر تحديث</translation>
+<translation id="8408068190360279472">الشبكة <ph name="NETWORK_TYPE" />، جارٍ الاتصال</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">السؤال أولاً (موصى به)</translation>
 <translation id="8418445294933751433">&amp;العرض في علامة تبويب</translation>
@@ -5436,6 +5462,7 @@
 <translation id="8807632654848257479">ثابت</translation>
 <translation id="8808478386290700967">السوق الإلكتروني</translation>
 <translation id="8808686172382650546">قط</translation>
+<translation id="8808744862003883508">‏يمكنك الاطّلاع في هذه الصفحة على جميع الإضافات المثبّتة في Chrome.</translation>
 <translation id="8809147117840417135">أزرق مخضر فاتح</translation>
 <translation id="8813698869395535039">يتعذر تسجيل الدخول إلى <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">أوراق</translation>
@@ -5663,7 +5690,6 @@
 <translation id="9121814364785106365">فتح كعلامة تبويب مثبتة</translation>
 <translation id="9122176249172999202">تم إيقاف <ph name="IDS_SHORT_PRODUCT_NAME" /> مؤقتًا</translation>
 <translation id="9124003689441359348">ستظهر هنا كلمات المرور المحفوظة</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> من التراخيص متبقية.)</translation>
 <translation id="9128317794749765148">تعذّر إكمال الإعداد</translation>
 <translation id="9128870381267983090">الاتصال بالشبكة</translation>
 <translation id="9130015405878219958">تم إدخال وضع غير صحيح.</translation>
@@ -5702,6 +5728,7 @@
 <translation id="9188732951356337132">‏يمكنك إرسال بيانات الاستخدام والتشخيص. يرسل هذا الجهاز حاليًا بيانات استخدام التطبيق والجهاز والتشخيص تلقائيًا إلى Google. لن يتم استخدام هذا لتعريف حسابك الفرعي وسيساعد في استقرار عمل النظام والتطبيقات، بالإضافة إلى التحسينات الأخرى. كما ستساعد بعض البيانات المجمّعة تطبيقات Google وشركائها، مثل مطوّري برامج نظام التشغيل Android. في حال تفعيل إعداد "النشاط الإضافي على الويب وفي التطبيقات" لحسابك الفرعي، قد يتم حفظ هذه البيانات في حسابك على Google. <ph name="BEGIN_LINK2" />مزيد من المعلومات<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">‏L2TP/IPSec + المفتاح المشترك مسبقًا</translation>
 <translation id="920045321358709304">البحث في <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">سيتم محو أي بيانات متوفرة بلا اتصال إنترنت.</translation>
 <translation id="9201220332032049474">خيارات قفل الشاشة</translation>
 <translation id="9203398526606335860">&amp;التوصيف مفعّل</translation>
 <translation id="9203904171912129171">اختيار جهاز</translation>
@@ -5714,6 +5741,7 @@
 <translation id="9220525904950070496">إزالة الحساب</translation>
 <translation id="9220820413868316583">ارفع إصبعك ثم أعد المحاولة.</translation>
 <translation id="923467487918828349">إظهار الكل</translation>
+<translation id="929117907539171075">سيتم أيضًا محو البيانات المتوفرة بلا اتصال إنترنت في التطبيق المثبّت.</translation>
 <translation id="930268624053534560">الطوابع الزمنية المفصلة</translation>
 <translation id="932327136139879170">الصفحة الرئيسية</translation>
 <translation id="932508678520956232">تعذر بدء الطباعة.</translation>
@@ -5739,6 +5767,7 @@
 <translation id="960719561871045870">رمز مشغل شبكة الجوال</translation>
 <translation id="960987915827980018">تتبقى ساعة واحدة تقريبًا</translation>
 <translation id="962802172452141067">شجرة مجلد الإشارات المرجعية</translation>
+<translation id="964057662886721376">يمكن أن تُبطئ بعض الإضافات تصفّحك، خاصةً تلك الإضافات التي لم تكن تقصد تثبيتها.</translation>
 <translation id="964286338916298286">‏أوقف مشرف تقنية المعلومات ميزات Chrome الإضافية لجهازك.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{تطبيق}zero{تطبيقات}two{تطبيقان}few{تطبيقات}many{تطبيقات}other{تطبيقات}}</translation>
 <translation id="965211523698323809">إرسال رسائل نصية واستلامها من جهاز <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />مزيد من المعلومات<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_as.xtb b/chrome/app/resources/generated_resources_as.xtb
index 826bdccb..eeb598b 100644
--- a/chrome/app/resources/generated_resources_as.xtb
+++ b/chrome/app/resources/generated_resources_as.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">কাষ্টম</translation>
 <translation id="1178581264944972037">পজ কৰক</translation>
 <translation id="117916940443676133">আপোনাৰ সুৰক্ষাৰ চাবিটো এটা পিনৰ দ্বাৰা সুৰক্ষিত নহয়। ছাইন ইন ডেটা পৰিচালনা কৰিবলৈ, প্ৰথমে এটা পিন সৃষ্টি কৰক।</translation>
-<translation id="118069123878619799">- আপোনাৰ শাৰীৰিক বৈশিষ্ট্যসমূহ, যেনে উচ্চতা</translation>
 <translation id="1181037720776840403">আঁতৰাওক</translation>
 <translation id="1183237619868651138">ল’কেল কেশ্বত <ph name="EXTERNAL_CRX_FILE" /> ইনষ্টল কৰিব নোৱাৰি।</translation>
 <translation id="1185924365081634987">আপুনি নেটৱৰ্কৰ এই সমস্যাটো সমাধান কৰিবলৈ <ph name="GUEST_SIGNIN_LINK_START" />অতিথি হিচাপে ব্ৰাউজিং কৰি<ph name="GUEST_SIGNIN_LINK_END" /> চাব পাৰে।</translation>
@@ -1878,7 +1877,6 @@
 <translation id="3678156199662914018">এক্সটেনশ্বন: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">আপোনাৰ মতামতৰ বাবে ধন্যবাদ। আপুনি এতিয়া অফলাইন আছে, আপোনাৰ ৰিপ’ৰ্টৰ পাছত পঠিওৱা হ’ব।</translation>
 <translation id="3682824389861648626">গতিবিধিৰ সীমা</translation>
-<translation id="3683023058278427253">আমি আপোনাৰ ড’মেইনৰ বাবে একাধিক প্ৰমাণপত্ৰৰ প্ৰকাৰ চিনাক্ত কৰিছোঁ। অব্যাহত ৰাখিবলৈ এটা বাছনি কৰক।</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" />ৰ পঠিওৱা স্ক্ৰীণ শ্বেয়াৰ কৰাৰ অনুৰোধ</translation>
 <translation id="368789413795732264">ফাইলটো পঢ়িবলৈ চেষ্টা কৰোঁতে কিবা আসোঁৱাহ হৈছে: <ph name="ERROR_TEXT" />।</translation>
 <translation id="3688507211863392146">আপুনি এপ্লিকেশ্বনটোত খোলা ফাইল আৰু ফ'ল্ডাৰসমূহত লিখক</translation>
@@ -2139,7 +2137,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />"এ এই ব্ৰাউজাৰটো ডিবাগ কৰি আছে</translation>
 <translation id="4014432863917027322">"<ph name="EXTENSION_NAME" />" মেৰামতি কৰিবনে?</translation>
 <translation id="4015163439792426608">এক্সটেনশ্বনসমূহ আছেনে? এক সহজ ঠাইত <ph name="BEGIN_LINK" />আপোনাৰ এক্সটেনশ্বনসমূহ পৰিচালনা কৰক<ph name="END_LINK" />।</translation>
-<translation id="4020106588733303597">ছেহ্!  ছিষ্টেমটোৱে উপলব্ধ অনুজ্ঞাপত্ৰ লড কৰিব নোৱাৰিলে।</translation>
 <translation id="4020327272915390518">বিকল্পৰ মেনু</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;অভিধানত যোগ কৰক</translation>
@@ -2639,7 +2636,6 @@
 <translation id="4823484602432206655">ব্যৱহাৰকাৰী আৰু ডিভাইচৰ ছেটিংসমূহ পঢ়ক আৰু সলনি কৰক</translation>
 <translation id="4824958205181053313">ছিংক বাতিল কৰিবনে?</translation>
 <translation id="4827675678516992122">সংযোগ কৰিব পৰা নগ’ল</translation>
-<translation id="4828937774870308359">অষ্ট্ৰেলিয়ান</translation>
 <translation id="4829768588131278040">পিন ছেট আপ কৰক</translation>
 <translation id="4830502475412647084">OS আপডে'ট ইনষ্টল কৰি থকা হৈছে</translation>
 <translation id="4830573902900904548">আপোনাৰ <ph name="DEVICE_TYPE" /> <ph name="NETWORK_NAME" /> ব্যৱহাৰ কৰি ইণ্টাৰনেটৰ সৈতে সংযোগ হ’ব পৰা নাই। অনুগ্ৰহ কৰি অন্য এটা নেটৱৰ্ক বাছনি কৰক। <ph name="LEARN_MORE_LINK_START" />অধিক জানক<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2737,7 +2733,6 @@
 <translation id="4953689047182316270">সাধ্যসুবিধাৰ অনুষ্ঠানলৈ সঁহাৰি জনাওক</translation>
 <translation id="4953808748584563296">ডিফ’ল্ট কমলা অৱতাৰ</translation>
 <translation id="4955710816792587366">আপোনাৰ পিন বাছনি কৰক</translation>
-<translation id="4955814292505481804">বছৰেকীয়া</translation>
 <translation id="4959262764292427323">আপুনি সকলো ডিভাইচতে ব্যৱহাৰ কৰিব পৰাকৈ নিজৰ Google একাউণ্টত পাছৱর্ডসমূহ ছেভ কৰা হয়</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">এই এপ্‌টো আপোনাৰ প্ৰশাসকে ইনষ্টল কৰিছে।</translation>
@@ -3216,7 +3211,6 @@
 <translation id="5659593005791499971">ইমেইল</translation>
 <translation id="5659833766619490117">এই পৃষ্ঠাটো অনুবাদ কৰিব পৰা নগ’ল</translation>
 <translation id="5660204307954428567"><ph name="DEVICE_NAME" />ৰ সৈতে যোৰা লগাওক</translation>
-<translation id="5662477687021125631">চিৰস্থায়ী</translation>
 <translation id="5667546120811588575">Google Play ছেট আপ কৰি থকা হৈছে...</translation>
 <translation id="5669267381087807207">সক্ৰিয় কৰি থকা হৈছে</translation>
 <translation id="5669691691057771421">নতুন পিন দিয়ক</translation>
@@ -3317,7 +3311,6 @@
 <translation id="5815645614496570556">X.400 ঠিকনা</translation>
 <translation id="5816434091619127343">অনুৰোধ কৰা প্রিণ্টাৰৰ সালসলনিখিনিয়ে প্রিণ্টাৰটো অব্যৱহাৰযোগ্য কৰি পেলাব।</translation>
 <translation id="5817918615728894473">যোৰা লগাওক</translation>
-<translation id="5819762621475381970">- আপোনাৰ কোঠাৰ লে’আউটটো</translation>
 <translation id="5821565227679781414">শ্বৰ্টকাট সৃষ্টি কৰক</translation>
 <translation id="5825412242012995131">অন কৰক (আমি চুপাৰিছ কৰোঁ)</translation>
 <translation id="5826395379250998812">আপোনাৰ <ph name="DEVICE_TYPE" /> নিজৰ ফ’নৰ সৈতে সংযোগ কৰক। <ph name="LINK_BEGIN" />অধিক জানক<ph name="LINK_END" /></translation>
@@ -3945,7 +3938,6 @@
 <translation id="674632704103926902">টানি আনি এৰি দিয়া সুবিধাটো সক্ষম কৰক</translation>
 <translation id="6748217015615267851">ৰেণ্ডাৰাৰ: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">আপুনি আগবাঢ়িব পাৰে, কিন্তু কেৱল আপোনাৰ ছিংক কৰা ডেটা আৰু ছেটিংসমূহকহে পুনঃস্থাপন কৰা হ’ব৷ সকলো স্থানীয় ডেটা হেৰুৱাব৷</translation>
-<translation id="6748775883310276718">একক এপৰ কিঅ’স্ক</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (ইনক’গনিট’)</translation>
 <translation id="6757101664402245801">URL প্ৰতিলিপি কৰা হৈছে</translation>
 <translation id="6758056191028427665">আমি কেনে প্ৰদৰ্শন কৰিছোঁ আমাক জনাওক৷</translation>
@@ -4910,7 +4902,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{তৃতীয় পক্ষৰ কুকিসমূহ নাই}=1{১টা তৃতীয় পক্ষৰ কুকি অৱৰোধ কৰা হৈছে}one{#টা তৃতীয় পক্ষৰ কুকীসমূহ অৱৰোধ কৰা হৈছে}other{#টা তৃতীয় পক্ষৰ কুকীসমূহ অৱৰোধ কৰা হৈছে}}</translation>
 <translation id="810875025413331850">কোনো নিকটৱৰ্তী ডিভাইচ বিচাৰি পোৱা নগ’ল।</translation>
 <translation id="8111155949205007504">আপোনাৰ iPhoneৰ সৈতে এই পাছৱর্ডটো শ্বেয়াৰ কৰক</translation>
-<translation id="8113043281354018522">অনুজ্ঞাপত্ৰৰ ধৰণ বাছনি কৰক</translation>
 <translation id="8114875720387900039">আনুভূমিকভাৱে বিভাজন কৰক</translation>
 <translation id="8116972784401310538">&amp;বুকমাৰ্ক পৰিচালক</translation>
 <translation id="8117620576188476503">ষ্টেটাছ ট্ৰে’ৰ সহায়ত সংযোগ, আপডে’ট আৰু ছেটিংসমূহ পৰিচালনা কৰক। কীব’ৰ্ডৰ সহায়ত ইয়ালৈ আহিবলৈ Alt + Shift + S টিপক।</translation>
@@ -5622,7 +5613,6 @@
 <translation id="9121814364785106365">পিন কৰি থোৱা টেব হিচাপে খোলক</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> পজ কৰা হৈছে</translation>
 <translation id="9124003689441359348">ছেভ কৰি থোৱা পাছৱৰ্ডসমূহ ইয়াত দেখা যাব</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> rem.)</translation>
 <translation id="9128317794749765148">ছেট আপ সম্পূৰ্ণ কৰিব পৰা নগ’ল</translation>
 <translation id="9128870381267983090">নেটৱৰ্কত সংযোগ কৰক</translation>
 <translation id="9130015405878219958">অমান্য ম’ড দিয়া হৈছে।</translation>
diff --git a/chrome/app/resources/generated_resources_az.xtb b/chrome/app/resources/generated_resources_az.xtb
index 4f1b23d..0aa918bb 100644
--- a/chrome/app/resources/generated_resources_az.xtb
+++ b/chrome/app/resources/generated_resources_az.xtb
@@ -131,7 +131,6 @@
 <translation id="1177863135347784049">İxtiyari</translation>
 <translation id="1178581264944972037">Durdurun</translation>
 <translation id="117916940443676133">Təhlükəsizlik açarınız PIN ilə qorunmur. Giriş datasını idarə etmək üçün əvvəlcə PIN yaradın.</translation>
-<translation id="118069123878619799">- boy kimi fiziki göstəriciləriniz</translation>
 <translation id="1181037720776840403">Silin</translation>
 <translation id="1183237619868651138"><ph name="EXTERNAL_CRX_FILE" /> yerli keşdə quraşdırıla bilməz..</translation>
 <translation id="1185924365081634987">Bu şəbəkə xətasını həll etmək üçün <ph name="GUEST_SIGNIN_LINK_START" />qonaq kimi istifadə etməyə<ph name="GUEST_SIGNIN_LINK_END" /> cıhd edə bilərsiniz.</translation>
@@ -350,6 +349,7 @@
 <translation id="1493892686965953381"><ph name="LOAD_STATE_PARAMETER" /> üçün gözləyir...</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> başqa əlçatan cihazlar.</translation>
 <translation id="1495677929897281669">Taba geri qayıdın</translation>
+<translation id="1499271269825557605">Artırmanı tanımırsınızsa və ya brauzeriniz qaydasında işləmirsə, artırmaları burada deaktiv edə və ya fərdiləşdirə bilərsiniz.</translation>
 <translation id="1500297251995790841">Naməlum cihaz [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Bu sahib hesabı çoxsaylı giriş sessiyasında ilk girilmiş hesab olmalıdır.</translation>
 <translation id="150411034776756821"><ph name="SITE" /> saytını silin</translation>
@@ -357,6 +357,7 @@
 <translation id="1507170440449692343">Bu səhifə ilə kameranıza daxil olma bloklandı.</translation>
 <translation id="1507246803636407672">Ləğv edin</translation>
 <translation id="1508491105858779599">Cihazı kiliddən çıxarmaq üçün barmağınızı barmaq izi sensoruna yerləşdirin</translation>
+<translation id="1508575541972276599">Cari versiya: Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">Hər hansı <ph name="DEVICE_NAME_AND_VENDOR" /> adlı cihaza USB vasitəsilə daxil olun</translation>
 <translation id="150962533380566081">Yanlış PUK.</translation>
 <translation id="1510030919967934016">Bu sayta məkanınızı izləmək qadağan edilib.</translation>
@@ -430,6 +431,7 @@
 <translation id="1601560923496285236">Tətbiq edin</translation>
 <translation id="1603914832182249871">(İnkoqnito)</translation>
 <translation id="1604432177629086300">Çap edilmədi. Printeri yoxlayıb yenidən sınayın.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: Parol sinxronizasiyası işləmir</translation>
 <translation id="1607139524282324606">Girişi silin</translation>
 <translation id="1608626060424371292">Bu istifadəçini silin</translation>
 <translation id="1608668830839595724">Seçilmiş elementlər üçün daha çox əməliyyat</translation>
@@ -556,6 +558,8 @@
 <translation id="177336675152937177">Aparıcı Tətbiq datası</translation>
 <translation id="1776712937009046120">İstifadəçi əlavə edin</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Bu cihaz <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> tərəfindən idarə olunur.
+    <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> hesabınıza daxil olmaq üçün "Növbəti" düyməsinə toxunun.</translation>
 <translation id="1779652936965200207">Bu parolu "<ph name="DEVICE_NAME" />" üzərinə daxil edin:</translation>
 <translation id="1780152987505130652">Qrupu bağlayın</translation>
 <translation id="1781291988450150470">Cari PIN</translation>
@@ -743,6 +747,7 @@
 <translation id="2048653237708779538">Əməliyyat əlçatan deyil</translation>
 <translation id="2050339315714019657">Portret</translation>
 <translation id="2053312383184521053">Fəaliyyətsizlik Vəziyyəti Məlumatı</translation>
+<translation id="2055585478631012616">Açıq tablar da daxil olmaqla, bu saytlardan çıxmış olacaqsınız</translation>
 <translation id="205560151218727633">Google assistent loqosu</translation>
 <translation id="2058456167109518507">Cihaz aşkarlandı</translation>
 <translation id="2059913712424898428">Saat qurşağı</translation>
@@ -758,6 +763,7 @@
 <translation id="2079545284768500474">Geri qaytarın</translation>
 <translation id="2080070583977670716">Digər ayarlar</translation>
 <translation id="2087822576218954668">Çap edin: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN şəbəkəsi</translation>
 <translation id="2089566709556890888">Google Chrome ilə təhlükəsiz axtarış edin</translation>
 <translation id="2089795179672254991">Sayt buferə kopyalanan mətn və şəkillərə baxmaq istədikdə icazə tələb edilsin (məsləhətlidir)</translation>
 <translation id="2090165459409185032">Hesab məlumatlarını bərpa üçün getmək üçün: Google.com/accounts/recovery</translation>
@@ -981,6 +987,7 @@
 <translation id="2379232090534544565">Sayt audio və video girişinə daxil olur</translation>
 <translation id="2379281330731083556">İstifadəçi sistemi dialoqu çap edin... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Göndərməmişdən öncə soruşun (tövsiyə olunur)</translation>
+<translation id="2382818385048255866">Artırmaları yoxlayın</translation>
 <translation id="2384436799579181135">Xəta baş verdi. Printerinizi yoxlayın və yenidən cəhd edin.</translation>
 <translation id="2387458720915042159">Proksi bağlantı növü</translation>
 <translation id="2391419135980381625">Standart şrift</translation>
@@ -1031,6 +1038,7 @@
 <translation id="2462724976360937186">Sertifikatlaşdırma İcazəsi Açar ID</translation>
 <translation id="2462752602710430187"><ph name="PRINTER_NAME" /> əlavə edildi</translation>
 <translation id="2464089476039395325">HTTP Proksi</translation>
+<translation id="2467267713099745100"><ph name="NETWORK_TYPE" /> şəbəkəsi, deaktivdir</translation>
 <translation id="2468205691404969808">Həmin səhifələrə daxil olmasanız belə, tərcihlərinizi xatırlamaq üçün kukilərdən istifadə edir</translation>
 <translation id="2468402215065996499">Tamaqoçi</translation>
 <translation id="2469259292033957819">Yadda saxlanmış printeriniz yoxdur.</translation>
@@ -1285,6 +1293,7 @@
 <translation id="2800760947029405028">Təsvir yükləyin</translation>
 <translation id="2803375539583399270">PİN daxil edin</translation>
 <translation id="2804043232879091219">Alternativ brauzeri açmaq mümkün olmadı</translation>
+<translation id="2804667941345577550">Açıq tablar da daxil olmaqla, bu saytdan çıxmış olacaqsınız</translation>
 <translation id="2804680522274557040">Kamera deaktivdir</translation>
 <translation id="2805646850212350655">Microsoft Şifrələmə Fayl Sistemi</translation>
 <translation id="2805756323405976993">Tətbiq</translation>
@@ -1292,6 +1301,7 @@
 <translation id="2806891468525657116">Qısayol artıq mövcuddur</translation>
 <translation id="2807517655263062534">Endirilən fayllar burada görünür</translation>
 <translation id="2809586584051668049">və <ph name="NUMBER_ADDITIONAL_DISABLED" /> daha</translation>
+<translation id="2810390687497823527">Artırmanı tanımırsınızsa və ya brauzeriniz qaydasında işləmirsə, artırmaları burada deaktiv edə və ya fərdiləşdirə bilərsiniz.</translation>
 <translation id="2812049959647166806">Thunderbolt dəstəklənmir</translation>
 <translation id="2812944337881233323">Çıxın və yenidən daxil olun</translation>
 <translation id="2812989263793994277">Heç bir təsvir göstərməyin</translation>
@@ -1331,6 +1341,7 @@
 <translation id="2861941300086904918">Doğma Klient təhlükəsizlik meneceri</translation>
 <translation id="2864601841139725659">Profil şəkli ayarlayın</translation>
 <translation id="2865919525181940183">Hazırda ekranda olan proqramların ekran şəkli</translation>
+<translation id="286674810810214575">Enerji mənbələri yoxlanılır...</translation>
 <translation id="2867768963760577682">VACİB Tab Açıq</translation>
 <translation id="2868746137289129307">Bu artırma köhnədir və müəssisə siyasəti tərəfindən deaktiv edildi. Yeni versiya əlçatan olanda avtomatik aktiv edilə bilər.</translation>
 <translation id="2870560284913253234">Sayt</translation>
@@ -1408,6 +1419,7 @@
 <translation id="2972581237482394796">&amp;Yenidən edin</translation>
 <translation id="2973324205039581528">Saytı səssiz edin</translation>
 <translation id="2977480621796371840">Qrupdan çıxarın</translation>
+<translation id="2979520980928493164">Təhlükəsiz, məhsuldar Chrome</translation>
 <translation id="2979639724566107830">Yeni pəncərədə açın</translation>
 <translation id="2981113813906970160">Geniş siçan kursorunu göstərin</translation>
 <translation id="2982970937345031">Anonim olaraq bildirin</translation>
@@ -1514,6 +1526,7 @@
 <translation id="3143515551205905069">Sinxronizasiyanı ləğv edin</translation>
 <translation id="3143754809889689516">Başdan oxudun</translation>
 <translation id="3144647712221361880">Linki bu formada açın:</translation>
+<translation id="3145187901750964977">Virtual cihazı quraşdırmaq mümkün olmadı. Yenidən cəhd edin və ya təşkilatınızın cihaz administratoru ilə əlaqə saxlayın. Xəta kodu: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Versiya:
     <ph name="LINUX_VERSION" />
 
@@ -1552,6 +1565,7 @@
 <translation id="3192947282887913208">Audio Fayllar</translation>
 <translation id="3194737229810486521"><ph name="URL" /> datanı həmişəlik cihazınızda saxlamaq istəyir</translation>
 <translation id="3199127022143353223">Serverlər</translation>
+<translation id="3201306578844503970">Şəbəkə xətasına görə virtual cihazı quraşdırmaq mümkün olmadı. Yenidən cəhd edin və ya təşkilatınızın cihaz administratoru ilə əlaqə saxlayın. Xəta kodu: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Əlçatan USB cihazları burada görünəcək.</translation>
 <translation id="3202131003361292969">Yol</translation>
 <translation id="3202173864863109533">Bu vərəqənin audiosu susdurulur.</translation>
@@ -1888,7 +1902,6 @@
 <translation id="3678156199662914018">Artırma: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Əks əlaqə üçün təşəkkür edirik. Hazırda oflaynsınız, hesabınız sonra göndəriləcək.</translation>
 <translation id="3682824389861648626">Hərəkət limiti</translation>
-<translation id="3683023058278427253">Domeniniz üçün çoxsaylı lisenziya növləri aşkar etmişik. Davam etmək üçün birini seçin.</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> Ekran Paylaşımı Sorğusu</translation>
 <translation id="368789413795732264">Faylı yazan zaman xəta baş verdi: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Tətbiqdə açdığınız fayl və qovluqlara yazın</translation>
@@ -2062,6 +2075,7 @@
 <translation id="389589731200570180">Qonaqlarla paylaşın</translation>
 <translation id="389901847090970821">Klaviatura seçin</translation>
 <translation id="3899879303189199559">Bir ildən artıqdır ki, oflayndır</translation>
+<translation id="3900789207771372462">Bəzi artırmalar şəxsi məlumatlar daxil olmaqla, axtarış fəaliyyətinizi görə bilər.</translation>
 <translation id="3900966090527141178">Parolları eskport edin</translation>
 <translation id="3901991538546252627"><ph name="NAME" /> qoşulur</translation>
 <translation id="3905761538810670789">Tətbiqi bərpa edin</translation>
@@ -2152,7 +2166,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" bu brauzeri sazlayır</translation>
 <translation id="4014432863917027322">"<ph name="EXTENSION_NAME" />" təmir olunsun?</translation>
 <translation id="4015163439792426608">Artırmalar əldə etmisiniz? <ph name="BEGIN_LINK" />Artırmaları<ph name="END_LINK" /> bir asan yerdə idarə edin.</translation>
-<translation id="4020106588733303597">Ups! Sistem əlçatan lisenziyaları yükləmədi.</translation>
 <translation id="4020327272915390518">Seçimlər menyusu</translation>
 <translation id="4021279097213088397">-</translation>
 <translation id="4022426551683927403">&amp;Lüğətə əlavə edin</translation>
@@ -2190,6 +2203,7 @@
 <translation id="407520071244661467">Miqyas</translation>
 <translation id="4075639477629295004"><ph name="FILE_NAME" /> faylını yayımlamaq alınmadı.</translation>
 <translation id="4077917118009885966">Bu saytdakı reklamlar blok edildi</translation>
+<translation id="4077919383365622693"><ph name="SITE" /> tərəfindən saxlanılan bütün data və kukilər silinəcək.</translation>
 <translation id="4079140982534148664">Təkmilləşdirilmiş Orfoqrafik Yoxlanışdan İstifadə Edin</translation>
 <translation id="4081242589061676262">Faylı yayımlamaq mümkün deyil.</translation>
 <translation id="4084682180776658562">Əlfəcin</translation>
@@ -2262,6 +2276,7 @@
 <translation id="4181841719683918333">Dillər</translation>
 <translation id="4184885522552335684">Ekranı hərəkət etdirmək üçün çəkin</translation>
 <translation id="4194570336751258953">Toxunaraq klikləməni aktiv edin</translation>
+<translation id="4194595472342532425">Konfiqurasiya xətasına görə Plugin VM'i quraşdırmaq mümkün olmadı. Təşkilatın cihaz admini ilə əlaqə saxlayın. Xəta kodu: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Yeni tabda açın</translation>
 <translation id="4195814663415092787">Qaldığınız yerdən davam edin</translation>
 <translation id="4198146608511578238">Google Assistentlə danışmaq üçün sadəcə Başladıcı ikonasını basıb saxlayın.</translation>
@@ -2485,6 +2500,7 @@
 <translation id="4549791035683739768">Təhlükəsizlik açarında saxlanılan barmaq izi yoxdur</translation>
 <translation id="4551763574344810652">Geri qaytarmaq üçün <ph name="MODIFIER_KEY_DESCRIPTION" /> qısayoluna klikləyin</translation>
 <translation id="4552089082226364758">İşartı</translation>
+<translation id="4552759165874948005"><ph name="NETWORK_TYPE" /> şəbəkəsi, siqnal gücü <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">Xarici artırma eyni və ya köhnə versiyadadır.</translation>
 <translation id="4555769855065597957">Kölgə</translation>
 <translation id="4555863373929230635">Parolları Google Hesabınızda saxlamaq üçün giriş edin və sinxronlaşdırmanı aktiv edin.</translation>
@@ -2562,6 +2578,7 @@
 <translation id="4665446389743427678"><ph name="SITE" /> tərəfindən saxlanılan bütün data silinəcək.</translation>
 <translation id="4668721319092543482"><ph name="PLUGIN_NAME" /> aktiv etmək üçün klikləyin</translation>
 <translation id="4672657274720418656">Səhifəni çeşidləyin</translation>
+<translation id="46733273239502219">Quraşdırılmış tətbiqlərdəki oflayn data da silinəcək</translation>
 <translation id="4673442866648850031">Fırça silinərkən fırça alətlərini açın</translation>
 <translation id="4677585247300749148"><ph name="URL" /> əlçatımlılıq tədbirlərinə cavab vermək istəyir</translation>
 <translation id="4677772697204437347">GPU yaddaş</translation>
@@ -2653,7 +2670,6 @@
 <translation id="4823484602432206655">İstifadəçi və cihaz ayarlarını oxuyun və dəyişin</translation>
 <translation id="4824958205181053313">Sinxronizasiya ləğv edilsin?</translation>
 <translation id="4827675678516992122">Qoşulmaq mümkün deyil</translation>
-<translation id="4828937774870308359">Avstraliya</translation>
 <translation id="4829768588131278040">PIN kodu ayarlayın</translation>
 <translation id="4830502475412647084">OS güncəlləməsi quraşdırılır</translation>
 <translation id="4830573902900904548">Sənin <ph name="DEVICE_TYPE" /> istifadə edərək İnternet qoşulmaq iqtidarında deyil <ph name="NETWORK_NAME" /> . Başqa şəbəkə seçin. <ph name="LEARN_MORE_LINK_START" /> Daha çox məlumat <ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2694,6 +2710,7 @@
 <translation id="4876273079589074638">Bu xətanın araşdırılması və aradan qaldırılması üçün mühəndislərimizə yardım edin. Bunu edə bilərsinizsə, dəqiq mərhələləri qeyd edin. Heç bir xırdalığı gözdən qaçırmayın!</translation>
 <translation id="4876895919560854374">Ekranı kiliddəyin və kiliddən çıxarın</translation>
 <translation id="4877276003880815204">Elementləri Yoxlayın</translation>
+<translation id="4878653975845355462">Fərdi arxa fonlar administratorunuz tərəfindən deaktiv edilib</translation>
 <translation id="4879491255372875719">Avtomatik (defolt)</translation>
 <translation id="4880328057631981605">Giriş nöqtəsi adı</translation>
 <translation id="4880827082731008257">Axtarış tarixçəsi</translation>
@@ -2749,10 +2766,10 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" silsilə porta qoşulmaq istəyir</translation>
 <translation id="4944310289250773232">Bu doğrulama xidməti <ph name="SAML_DOMAIN" /> tərəfindən təmin edilir</translation>
 <translation id="495170559598752135">Fəaliyyətlər</translation>
+<translation id="4952981627953231344">Plugin VM'ə bu cihazda icazə verilmir. Təşkilatın cihaz admini ilə əlaqə saxlayın.</translation>
 <translation id="4953689047182316270">Əlçatımlılıq Tədbirlərinə cavab vermək</translation>
 <translation id="4953808748584563296">Defolt narıncı avatar</translation>
 <translation id="4955710816792587366">PIN seçin</translation>
-<translation id="4955814292505481804">İllik</translation>
 <translation id="4959262764292427323">Parollar Google Hesabınızda yadda saxlanılıb, beləliklə, onları istənilən cihazda istifadə edə bilərsiniz</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Bu tətbiqi administratorunuz quraşdırıb.</translation>
@@ -3234,7 +3251,6 @@
 <translation id="5659593005791499971">E-poçt</translation>
 <translation id="5659833766619490117">Bu səhifə tərcümə edilə bilməz</translation>
 <translation id="5660204307954428567"><ph name="DEVICE_NAME" /> ilə qoşalaşdırın</translation>
-<translation id="5662477687021125631">Müddətsiz</translation>
 <translation id="5667546120811588575">Google Play quraşdırılır...</translation>
 <translation id="5669267381087807207">Aktivləşdirilir</translation>
 <translation id="5669691691057771421">Yeni PIN kodu daxil edin</translation>
@@ -3250,6 +3266,7 @@
 <translation id="5687326903064479980">Saat qurşağı</translation>
 <translation id="5689516760719285838">Məkan</translation>
 <translation id="56907980372820799">Link datası</translation>
+<translation id="5691180005790455277"><ph name="SITE_GROUP_NAME" /> tərəfindən saxlanan bütün data və kukilər və onunla əlaqədar saytlar silinəcək.</translation>
 <translation id="5691511426247308406">Ailə</translation>
 <translation id="5692183275898619210">Çap hazırdır</translation>
 <translation id="5696143504434933566">"<ph name="EXTENSION_NAME" />" ilə bağlı sui-istifadəni bildirin</translation>
@@ -3336,7 +3353,6 @@
 <translation id="5815645614496570556">X.400 Ünvanı</translation>
 <translation id="5816434091619127343">Təklif edilən printer dəyişiklikləri printeri yarasız hala sala bilər.</translation>
 <translation id="5817918615728894473">Cütləndirin</translation>
-<translation id="5819762621475381970">- otağınızın tərtibatı</translation>
 <translation id="5821565227679781414">Qısayol Yaradın</translation>
 <translation id="5825412242012995131">Aktiv (Tövsiyə edilir)</translation>
 <translation id="5826395379250998812"><ph name="DEVICE_TYPE" /> cihazını telefona qoşun. <ph name="LINK_BEGIN" />Ətraflı məlumat<ph name="LINK_END" /></translation>
@@ -3470,6 +3486,7 @@
 <translation id="6007240208646052708">Dilinizdə səsli axtarış etmək əlçatan deyil.</translation>
 <translation id="6009781704028455063">Daxili sensor</translation>
 <translation id="6010869025736512584">Video daxiletmə əldə olunur</translation>
+<translation id="6011074160056912900">Ethernet şəbəkəsi</translation>
 <translation id="6011193465932186973">Barmaq izi</translation>
 <translation id="6011449291337289699">Sayt datasını təmizləyin</translation>
 <translation id="6015266928248016057">Yanlış PUK. <ph name="RETRIES" /> cəhdiniz qaldı.</translation>
@@ -3506,6 +3523,7 @@
 <translation id="6053401458108962351">Baxış datasını silin...</translation>
 <translation id="6055171183283175969">Daxil etdiyiniz parol yanlışdır.</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 With RSA Şifrələnmə</translation>
+<translation id="6055907707645252013"><ph name="NETWORK_TYPE" /> şəbəkəsi, qoşulu deyil</translation>
 <translation id="6056710589053485679">Normal yenidən yükləmə</translation>
 <translation id="6057381398996433816">Bu saytın hərəkət və zəif sensorlardan istifadə etməsi blok edilib.</translation>
 <translation id="6058567592298841668">Qoşma Virtual Cihazı: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3569,6 +3587,7 @@
 <translation id="6136114942382973861">Endirilənlər panelini bağlayın</translation>
 <translation id="6137767437444130246">İstifadəçi sertifikatı</translation>
 <translation id="6138680304137685902">X9.62 ECDSA SHA-384 ilə imza</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, şəbəkə yoxdur</translation>
 <translation id="6141988275892716286">Endirməni təsdiq edin</translation>
 <translation id="6143186082490678276">Yardım</translation>
 <translation id="6144938890088808325">Chromebook'ları təkmilləşdirməyə yardım edin</translation>
@@ -3875,6 +3894,7 @@
 <translation id="6602956230557165253">Naviqasiya üçün sol və sağ ox düymələrini istifadə edin.</translation>
 <translation id="6605847144724004692">Hələ qiymətləndirilməyib.</translation>
 <translation id="6607831829715835317">Daha çox alətlər</translation>
+<translation id="6611972847767394631">Tablarınızı burada tapın</translation>
 <translation id="6612358246767739896">Qorunan kontent</translation>
 <translation id="6615455863669487791">Mənə göstərin</translation>
 <translation id="6618097958368085618">Hər Bir Halda Saxlayın</translation>
@@ -3943,6 +3963,7 @@
 <translation id="6709133671862442373">Xəbərlər</translation>
 <translation id="6709357832553498500"><ph name="EXTENSIONNAME" /> istifadə edərək qoşulun</translation>
 <translation id="6710213216561001401">Əvvəlki</translation>
+<translation id="6715803357256707211">Linux tətbiqi quraşdırılan zaman xəta baş verdi. Detallar üçün bildirişə toxunun.</translation>
 <translation id="6721678857435001674">Təhülkəsizlik Açarının marka və modelinə baxın</translation>
 <translation id="6721972322305477112">Fayl</translation>
 <translation id="672213144943476270">Qonaq olaraq axtarış etməmişdən əvvəl, profilinizin kilidini açın.</translation>
@@ -3967,7 +3988,6 @@
 <translation id="674632704103926902">Tıklama sürükləməsinə icazə verin</translation>
 <translation id="6748217015615267851">Renderer: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Davam edə bilərsiniz, amma yalnız sinxronlaşmış datanız və ayarlarınız bərpa olunacaq. Bütün lokal data silinəcək.</translation>
-<translation id="6748775883310276718">Tək Tətbiq Köşk lisenziyası</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Inkoqnito)</translation>
 <translation id="6757101664402245801">URL kopyalandı</translation>
 <translation id="6758056191028427665">Necə işlədiyimizi bizə bildirin.</translation>
@@ -3977,6 +3997,7 @@
 <translation id="6769712124046837540">Printer əlavə olunur...</translation>
 <translation id="6770664076092644100">NFC ilə doğrulayın</translation>
 <translation id="6771503742377376720">Sertifikatlaşdırma Təşkilatıdır</translation>
+<translation id="6772339735733515807">Artırmalarınızı idarə edin</translation>
 <translation id="6775163072363532304">Əlçatan cihazlar burada görünəcək.</translation>
 <translation id="6777817260680419853">Yönləndirmə blok edildi</translation>
 <translation id="6778737459546443941">Valideyniniz hələ ki təsdiq etməyib</translation>
@@ -4115,6 +4136,7 @@
 <translation id="6972180789171089114">Audio/Video</translation>
 <translation id="6972553992270299730">Sistem fayllarından ibarət olduğu üçün <ph name="ORIGIN" /> bu qovluqdakı faylları aça bilmir</translation>
 <translation id="6972754398087986839">Başlayın</translation>
+<translation id="6973611239564315524">Debian 10 (Buster) üçün güncəlləmə əlçatandır</translation>
 <translation id="6974609594866392343">Oflayn demo rejimi</translation>
 <translation id="6977381486153291903">Mikro proqram versiyası</translation>
 <translation id="6978121630131642226">Axtarış Sistemləri</translation>
@@ -4574,6 +4596,7 @@
 <translation id="7644543211198159466">Rəng və tema</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (sahib)</translation>
 <translation id="7645681574855902035">Linux yedəkləməsi ləğv edilir</translation>
+<translation id="7646772052135772216">Parol sinxronizasiyası işləmir</translation>
 <translation id="7647403192093989392">Ən son fəaliyyət yoxdur</translation>
 <translation id="7648992873808071793">Faylları bu cihazda saxlayın</translation>
 <translation id="7649070708921625228">Yardım</translation>
@@ -4762,6 +4785,7 @@
 <translation id="7877451762676714207">Naməlum server xətası. Lütfən, yenidən cəhd edin vəya server administratoru ilə əlaqə saxlayın.</translation>
 <translation id="7877680364634660272">Tur</translation>
 <translation id="7878562273885520351">Parolunuz təhlükədə ola bilər</translation>
+<translation id="7879631849810108578">Qısayol ayarlanıb: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Yenidən başlatma zamanı lokal data silinəcək</translation>
 <translation id="7881483672146086348">Hesaba Baxın</translation>
 <translation id="7882358943899516840">Provayder növü</translation>
@@ -4848,6 +4872,7 @@
 <translation id="7987814697832569482">Həmişə bu VPN ilə qoşulun</translation>
 <translation id="7988355189918024273">Əlçatımlılıq funksiyalarını aktiv edin</translation>
 <translation id="7991296728590311172">Keçid Düyməsi ayarları</translation>
+<translation id="7994350303002908848">Plugin VM'i quraşdırmaq mümkün olmadı. Yenidən cəhd edin və ya təşkilatınızın cihaz administratoru ilə əlaqə saxlayın. Xəta kodu: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">EAP üsulu</translation>
 <translation id="7997826902155442747">Proses Prioriteti</translation>
 <translation id="7999229196265990314">Aşağıdakı fayllar yaradıldı:
@@ -4939,7 +4964,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Üçüncü tərəf kuki yoxdur}=1{1 üçüncü tərəf kuki bloklanıb}other{# üçüncü tərəf kuki bloklanıb}}</translation>
 <translation id="810875025413331850">Yaxınlıqda heç bir cihaz tapılmadı.</translation>
 <translation id="8111155949205007504">Bu parolu iPhone ilə paylaşın</translation>
-<translation id="8113043281354018522">Lisenziya növünü seçin</translation>
 <translation id="8114875720387900039">Horizontal bölün</translation>
 <translation id="8116972784401310538">&amp;Əlfəcin meneceri</translation>
 <translation id="8117620576188476503">Status paneli ilə bağlantılar, yeniliklər və ayarları idarə edin. Klaviatura ilə daxil olmaq üçün Alt + Shift + S düymələrinə basın.</translation>
@@ -5095,6 +5119,7 @@
 <translation id="8327039559959785305">Linux faylları əlavə edilərkən xəta baş verdi. Yenidən cəhd edin.</translation>
 <translation id="8335587457941836791">Buferdən çıxarın</translation>
 <translation id="8336407002559723354">Güncəlləmələr <ph name="MONTH_AND_YEAR" /> tarixində bitir</translation>
+<translation id="8336721153892716270">Sistem mətnini <ph name="LANGUAGE" /> dilində göstərmək üçün cihazı yenidən başladın</translation>
 <translation id="8336739000755212683">Cihazın hesab şəklini dəyişin</translation>
 <translation id="8337047789441383384">Artıq bu təhlükəsizlik açarını qeydiyyatdan keçirmisiniz. Onu yenidən qeydiyyatdan keçirməyə ehtiyac yoxdur.</translation>
 <translation id="8338952601723052325">Developer veb saytı</translation>
@@ -5138,6 +5163,7 @@
 <translation id="8400146488506985033">İnsanları idarə edin</translation>
 <translation id="8401432541486058167">Smart kartınızla əlaqəli PIN daxil edin.</translation>
 <translation id="8405046151008197676">Ən yeni güncəlləmə ilə bağlı yenilikləri əldə edin</translation>
+<translation id="8408068190360279472"><ph name="NETWORK_TYPE" /> şəbəkəsi, qoşulur</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Öncə soruşun (tövsiyə olunur)</translation>
 <translation id="8418445294933751433">Panel kimi göstərin</translation>
@@ -5425,6 +5451,7 @@
 <translation id="8807632654848257479">Stabil</translation>
 <translation id="8808478386290700967">Veb Dükanı</translation>
 <translation id="8808686172382650546">Pişik</translation>
+<translation id="8808744862003883508">Bu səhifədə Chrome'da quraşdırılmış bütün artırmaları görə bilərsiniz.</translation>
 <translation id="8809147117840417135">Açıq-firuzəyi</translation>
 <translation id="8813698869395535039"><ph name="USERNAME" /> istifadəçi adına daxil ola bilməz</translation>
 <translation id="8813811964357448561">kağız vərəq</translation>
@@ -5652,7 +5679,6 @@
 <translation id="9121814364785106365">Sancılmış tab olaraq açın</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> fasilədədir</translation>
 <translation id="9124003689441359348">Yadda saxlanmış parollar burada görünəcək</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> qalır.)</translation>
 <translation id="9128317794749765148">Quraşdırma tamamlanmadı</translation>
 <translation id="9128870381267983090">Şəbəkəyə qoşulun</translation>
 <translation id="9130015405878219958">Yanlış rejimə daxil olmusunuz.</translation>
@@ -5691,6 +5717,7 @@
 <translation id="9188732951356337132">İstifadə və diaqnostika datasını göndərin. Bu cihaz hazırda Google'a diaqnostika, cihaz və tətbiq istifadə datasını avtomatik göndərir. Bu, övladınızı müəyyən etmək üçün istifadə edilməyəcək, eyni zamanda, sistem və tətbiq sabitliyi və digər təkmilləşdirmələrə kömək edəcək. Ümumi data, həmçinin, Google tətbiqləri və Android developerləri kimi partnyorlara kömək edəcək. Övladınız üçün əlavə Veb və Tətbiq Fəaliyyəti ayarı aktiv edilərsə, bu data Google Hesabında yadda saxlana bilər. <ph name="BEGIN_LINK2" />Ətraflı Məlumat<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + öncədən paylaşılmış açar</translation>
 <translation id="920045321358709304"><ph name="SEARCH_ENGINE" /> provayderində axtarın</translation>
+<translation id="9201023452444595544">Oflayn data silinəcək</translation>
 <translation id="9201220332032049474">Ekran kilidi seçimləri</translation>
 <translation id="9203398526606335860">&amp;Profilləşdirmə aktivdir</translation>
 <translation id="9203904171912129171">Cihaz seçin</translation>
@@ -5703,6 +5730,7 @@
 <translation id="9220525904950070496">Hesabı silin</translation>
 <translation id="9220820413868316583">Barmağınızı çəkin və bir daha yoxlayın.</translation>
 <translation id="923467487918828349">Hamısını göstərin</translation>
+<translation id="929117907539171075">Quraşdırılmış tətbiqdəki oflayn data da silinəcək</translation>
 <translation id="930268624053534560">Detallı Zaman Damğaları</translation>
 <translation id="932327136139879170">Ev</translation>
 <translation id="932508678520956232">Çapa başlamaq alınmadı.</translation>
@@ -5728,6 +5756,7 @@
 <translation id="960719561871045870">Operator kodu</translation>
 <translation id="960987915827980018">Təxminən 1 saat qalıb</translation>
 <translation id="962802172452141067">Əlfəcin qovluğu ağacı</translation>
+<translation id="964057662886721376">Bəzi artırmalar, xüsusən də bilərəkdən quraşdırmadıqlarınız cihazı yavaşlada bilər.</translation>
 <translation id="964286338916298286">IT administratorunuz cihazda Chrome Goodie'ləri deaktiv etdi.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Tətbiq}other{Tətbiqlər}}</translation>
 <translation id="965211523698323809"><ph name="DEVICE_TYPE" /> cihazından mətn mesajları göndərin və alın. <ph name="LINK_BEGIN" />Ətraflı məlumat<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_be.xtb b/chrome/app/resources/generated_resources_be.xtb
index b96e1714..eebda027 100644
--- a/chrome/app/resources/generated_resources_be.xtb
+++ b/chrome/app/resources/generated_resources_be.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Карыстальніцкая</translation>
 <translation id="1178581264944972037">Прыпыніць</translation>
 <translation id="117916940443676133">Ключ бяспекі не абаронены PIN-кодам. Каб кіраваць данымі для ўваходу, спачатку стварыце PIN-код.</translation>
-<translation id="118069123878619799">– вашы фізічныя характарыстыкі, такія як рост</translation>
 <translation id="1181037720776840403">Выдаліць</translation>
 <translation id="1183237619868651138">Не ўдаецца ўсталяваць <ph name="EXTERNAL_CRX_FILE" /> у лакальны кэш.</translation>
 <translation id="1185924365081634987">Каб выправіць памылку сеткі, таксама можна паспрабаваць праглядаць вэб-старонкі <ph name="GUEST_SIGNIN_LINK_START" />ў рэжыме госця<ph name="GUEST_SIGNIN_LINK_END" />.</translation>
@@ -351,6 +350,7 @@
 <translation id="1493892686965953381">Чакаецца <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033">Іншых даступных прылад: <ph name="NUM_PRINTERS" />.</translation>
 <translation id="1495677929897281669">Вярнуцца на ўкладку</translation>
+<translation id="1499271269825557605">Тут вы можаце наладжваць пашырэнні або выключаць іх – у тым выпадку, калі вы не пазнаяце нейкае пашырэнне або калі браўзер перастае працаваць належным чынам.</translation>
 <translation id="1500297251995790841">Невядомая прылада [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">У сеансе з уваходам у некалькі ўліковых запісаў гэты ўліковы запіс уладальніка павінен быць першым.</translation>
 <translation id="150411034776756821">Выдаліць <ph name="SITE" /></translation>
@@ -358,6 +358,7 @@
 <translation id="1507170440449692343">Гэтай старонцы быў заблакіраваны доступ да вашай камеры.</translation>
 <translation id="1507246803636407672">&amp;Адхіліць</translation>
 <translation id="1508491105858779599">Каб разблакіраваць прыладу, пакладзіце палец на сканер адбіткаў пальцаў.</translation>
+<translation id="1508575541972276599">Бягучая версія: Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">Доступ да <ph name="DEVICE_NAME_AND_VENDOR" /> праз USB</translation>
 <translation id="150962533380566081">Няправільны PUK-код.</translation>
 <translation id="1510030919967934016">Адсочванне гэтай старонкай вашага месцазнаходжання заблакіравана.</translation>
@@ -433,6 +434,7 @@
 <translation id="1601560923496285236">Ужыць</translation>
 <translation id="1603914832182249871">(інкогніта)</translation>
 <translation id="1604432177629086300">Не ўдалося надрукаваць. Праверце прынтар і паўтарыце спробу.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: сінхранізацыя пароляў не працуе</translation>
 <translation id="1607139524282324606">Выдаліць запіс</translation>
 <translation id="1608626060424371292">Выдаліць карыстальніка</translation>
 <translation id="1608668830839595724">Іншыя дзеянні для выбраных элементаў</translation>
@@ -559,6 +561,8 @@
 <translation id="177336675152937177">Даныя размешчанай праграмы</translation>
 <translation id="1776712937009046120">Дадаванне карыстальніка</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Гэта прылада знаходзіцца пад кіраваннем дамена <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    Каб працягнуць уваход ва ўліковы запіс <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />, націсніце "Далей".</translation>
 <translation id="1779652936965200207">Увядзіце гэты ключ доступу на прыладзе "<ph name="DEVICE_NAME" />":</translation>
 <translation id="1780152987505130652">Закрыць групу</translation>
 <translation id="1781291988450150470">Бягучы PIN-код</translation>
@@ -746,6 +750,7 @@
 <translation id="2048653237708779538">Дзеянне недаступнае</translation>
 <translation id="2050339315714019657">Кніжная</translation>
 <translation id="2053312383184521053">Даныя пра стан бяздзейнасці</translation>
+<translation id="2055585478631012616">Будзе выкананы выхад з гэтых сайтаў, у тым ліку на адкрытых укладках</translation>
 <translation id="205560151218727633">Лагатып памочніка Google</translation>
 <translation id="2058456167109518507">Выяўлена прылада</translation>
 <translation id="2059913712424898428">Часавы пояс</translation>
@@ -761,6 +766,7 @@
 <translation id="2079545284768500474">Адмяніць</translation>
 <translation id="2080070583977670716">Іншыя налады</translation>
 <translation id="2087822576218954668">Друк: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">Сетка VPN</translation>
 <translation id="2089566709556890888">Бяспечны прагляд старонак у браўзеры Google Chrome</translation>
 <translation id="2089795179672254991">Пытацца, калі сайт запытвае доступ на прагляд тэксту і відарысаў, скапіраваных у буфер абмену (рэкамендуецца)</translation>
 <translation id="2090165459409185032">Каб аднавіць даныя ўліковага запісу, перайдзіце па спасылцы: google.com/accounts/recovery</translation>
@@ -984,6 +990,7 @@
 <translation id="2379232090534544565">Сайт ажыццяўляе доступ да аўдыя- і відэаўваходу</translation>
 <translation id="2379281330731083556">Друк з выкарыстаннем сістэмнага дыялогавага акна... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Пытаць перад адпраўкай (рэкамендуецца)</translation>
+<translation id="2382818385048255866">Праверце свае пашырэнні</translation>
 <translation id="2384436799579181135">Адбылася памылка. Праверце прынтар і паўтарыце спробу.</translation>
 <translation id="2387458720915042159">Тып падключэння проксі-сервера</translation>
 <translation id="2391419135980381625">Стандартны шрыфт</translation>
@@ -1035,6 +1042,7 @@
 <translation id="2462724976360937186">Ідэнтыфікатар ключа цэнтра сертыфікацыі</translation>
 <translation id="2462752602710430187">Дададзены прынтар <ph name="PRINTER_NAME" /></translation>
 <translation id="2464089476039395325">Проксі-сервер HTTP</translation>
+<translation id="2467267713099745100">Тып сеткі – <ph name="NETWORK_TYPE" />, выключана</translation>
 <translation id="2468205691404969808">Выкарыстоўвае файлы cookie для захоўвання параметраў, нават калі вы не наведваеце гэтыя старонкі</translation>
 <translation id="2468402215065996499">Тамагочы</translation>
 <translation id="2469259292033957819">У вас няма захаваных прынтараў.</translation>
@@ -1289,6 +1297,7 @@
 <translation id="2800760947029405028">Запампаваць відарыс</translation>
 <translation id="2803375539583399270">Увядзіце PIN-код</translation>
 <translation id="2804043232879091219">Не ўдалося адкрыць альтэрнатыўны браўзер</translation>
+<translation id="2804667941345577550">Будзе выкананы выхад з гэтага сайта, у тым ліку на адкрытых укладках</translation>
 <translation id="2804680522274557040">Камера выключана</translation>
 <translation id="2805646850212350655">Шыфраваная файлавая сістэма Microsoft</translation>
 <translation id="2805756323405976993">Праграмы</translation>
@@ -1296,6 +1305,7 @@
 <translation id="2806891468525657116">Ярлык ужо існуе</translation>
 <translation id="2807517655263062534">Файлы, якія вы спампоўваеце, з'яўляюцца тут</translation>
 <translation id="2809586584051668049">і яшчэ <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2810390687497823527">Тут вы можаце наладжваць пашырэнні або выключаць іх – у тым выпадку, калі вы не пазнаяце нейкае пашырэнне або калі браўзер перастае працаваць належным чынам.</translation>
 <translation id="2812049959647166806">Thunderbolt не падтрымліваецца</translation>
 <translation id="2812944337881233323">Паспрабуйце выйсці і ўвайсці зноў</translation>
 <translation id="2812989263793994277">Не паказваць відарысы</translation>
@@ -1335,6 +1345,7 @@
 <translation id="2861941300086904918">Менеджар бяспекі Native Client</translation>
 <translation id="2864601841139725659">Задайце сваё фота профілю</translation>
 <translation id="2865919525181940183">Здымак экрана з праграмамі</translation>
+<translation id="286674810810214575">Ідзе праверка крыніц сілкавання...</translation>
 <translation id="2867768963760577682">Адкрыць у замацаванай укладцы</translation>
 <translation id="2868746137289129307">Гэта пашырэнне састарэлае, яно выключана ў адпаведнасці з карпаратыўнай палітыкай. Пры даступнасці новай версіі пашырэнне можа быць уключана аўтаматычна.</translation>
 <translation id="2870560284913253234">Сайт</translation>
@@ -1412,6 +1423,7 @@
 <translation id="2972581237482394796">&amp;Узнавіць</translation>
 <translation id="2973324205039581528">Выключыць гук на сайце</translation>
 <translation id="2977480621796371840">Выдаліць з групы</translation>
+<translation id="2979520980928493164">Хутчэйшы і больш надзейны браўзер Chrome</translation>
 <translation id="2979639724566107830">Адкрыць у новым акне</translation>
 <translation id="2981113813906970160">Паказваць вялікі курсор мышы</translation>
 <translation id="2982970937345031">Адправіць справаздачу ананімна</translation>
@@ -1518,6 +1530,7 @@
 <translation id="3143515551205905069">Скасаваць сінхранізацыю</translation>
 <translation id="3143754809889689516">Прайграць з пачатку</translation>
 <translation id="3144647712221361880">Адкрыць спасылку як</translation>
+<translation id="3145187901750964977">Не ўдалося ўсталяваць віртуальную машыну. Паўтарыце спробу або звярніцеся да адміністратара прылад сваёй арганізацыі. Код памылкі: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Версія:
     <ph name="LINUX_VERSION" />
 
@@ -1556,6 +1569,7 @@
 <translation id="3192947282887913208">Аўдыяфайлы</translation>
 <translation id="3194737229810486521">Сайт <ph name="URL" /> запытвае дазволу захоўваць даныя на вашай прыладзе</translation>
 <translation id="3199127022143353223">Серверы</translation>
+<translation id="3201306578844503970">Не ўдалося ўсталяваць віртуальную машыну з-за памылкі сеткі. Паўтарыце спробу або звярніцеся да адміністратара прылад сваёй арганізацыі. Код памылкі: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Тут з'явяцца даступныя прылады USB.</translation>
 <translation id="3202131003361292969">Шлях</translation>
 <translation id="3202173864863109533">Гук на гэтай укладцы выключаны.</translation>
@@ -1892,7 +1906,6 @@
 <translation id="3678156199662914018">Пашырэнне: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Дзякуй за водгук. Вы па-за сеткай, таму справаздача будзе адпраўлена пазней.</translation>
 <translation id="3682824389861648626">Парог перамяшчэння</translation>
-<translation id="3683023058278427253">Мы знайшлі некалькі тыпаў ліцэнзій для вашага дамена. Каб працягнуць, выберыце адзін тып.</translation>
 <translation id="3683524264665795342">Запыт абагульвання экрана ад праграмы "<ph name="APP_NAME" />"</translation>
 <translation id="368789413795732264">Пры спробе запісаць файл адбылася памылка: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Запісваць у файлы і папкі, адкрытыя ў праграме</translation>
@@ -2066,6 +2079,7 @@
 <translation id="389589731200570180">Абагульванне з гасцямі</translation>
 <translation id="389901847090970821">Выбар клавіятуры</translation>
 <translation id="3899879303189199559">Па-за сеткай больш за год</translation>
+<translation id="3900789207771372462">Некаторыя пашырэнні маюць доступ да вашых дзеянняў у браўзеры, у тым ліку да асабістай інфармацыі.</translation>
 <translation id="3900966090527141178">Экспарт пароляў</translation>
 <translation id="3901991538546252627">Ідзе падключэнне да сеткі <ph name="NAME" /></translation>
 <translation id="3905761538810670789">Выправіць праграму</translation>
@@ -2156,7 +2170,6 @@
 <translation id="4013132157686828973">Кліент "<ph name="CLIENT_NAME" />" выконвае адладку гэтага браўзера</translation>
 <translation id="4014432863917027322">Выправіць "<ph name="EXTENSION_NAME" />"?</translation>
 <translation id="4015163439792426608">У вас ёсць пашырэнні? <ph name="BEGIN_LINK" />Кіруйце пашырэннямі<ph name="END_LINK" /> з лёгкасцю з аднаго месца.</translation>
-<translation id="4020106588733303597">Памылка!  Сістэме не ўдалося загрузіць даступныя ліцэнзіі.</translation>
 <translation id="4020327272915390518">Меню параметраў</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Дадаць у слоўнік</translation>
@@ -2194,6 +2207,7 @@
 <translation id="407520071244661467">Маштаб</translation>
 <translation id="4075639477629295004">Не ўдаецца трансліраваць файл "<ph name="FILE_NAME" />".</translation>
 <translation id="4077917118009885966">Рэклама заблакіравана на гэтым сайце</translation>
+<translation id="4077919383365622693">Усе даныя і файлы cookie, захаваныя сайтам <ph name="SITE" />, будуць выдалены.</translation>
 <translation id="4079140982534148664">Выкарыстоўваць палепшаную праверку правапісу</translation>
 <translation id="4081242589061676262">Не ўдалося трансліраваць файл.</translation>
 <translation id="4084682180776658562">Дадаць у закладкі</translation>
@@ -2268,6 +2282,7 @@
 <translation id="4181841719683918333">Мовы</translation>
 <translation id="4184885522552335684">Перацягніце, каб перамясціць дысплэй</translation>
 <translation id="4194570336751258953">Уключыць націсканне дотыкам</translation>
+<translation id="4194595472342532425">Не ўдалося наладзіць Plugin VM з-за праблемы канфігурацыі. Звярніцеся да адміністратара прылад вашай арганізацыі. Код памылкі: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Адкрыць у новай укладцы</translation>
 <translation id="4195814663415092787">Працягнуць з месца, дзе вы спыніліся</translation>
 <translation id="4198146608511578238">Каб пагаварыць з Памочнікам Google, проста націсніце і трымайце значок праграмы запуску.</translation>
@@ -2491,6 +2506,7 @@
 <translation id="4549791035683739768">На вашым ключы бяспекі няма захаваных адбіткаў пальцаў</translation>
 <translation id="4551763574344810652">Каб адрабіць, націсніце <ph name="MODIFIER_KEY_DESCRIPTION" /></translation>
 <translation id="4552089082226364758">Флэш-даныя</translation>
+<translation id="4552759165874948005">Тып сеткі – <ph name="NETWORK_TYPE" />, магутнасць сігналу – <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">Знешняе пашырэнне мае тую ж версію, што існуючае пашырэнне, або ніжэйшую.</translation>
 <translation id="4555769855065597957">Цень</translation>
 <translation id="4555863373929230635">Каб захоўваць паролі ва Уліковым запісе Google, увайдзіце ў яго і ўключыце сінхранізацыю.</translation>
@@ -2568,6 +2584,7 @@
 <translation id="4665446389743427678">Усе даныя, захаваныя сайтам <ph name="SITE" />, будуць выдалены.</translation>
 <translation id="4668721319092543482">Націсніце, каб уключыць <ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">Ачысціць старонку ад лішніх элементаў</translation>
+<translation id="46733273239502219">Пазасеткавыя даныя ва ўсталяваных праграмах таксама будуць выдалены</translation>
 <translation id="4673442866648850031">Адкрываць інструменты стыла, калі яно вымаецца</translation>
 <translation id="4677585247300749148"><ph name="URL" /> запытвае дазвол адказваць на падзеі функцый спецыяльных магчымасцей</translation>
 <translation id="4677772697204437347">Памяць GPU</translation>
@@ -2659,7 +2676,6 @@
 <translation id="4823484602432206655">Прагляд і змяненне налад прылады і карыстальніка</translation>
 <translation id="4824958205181053313">Скасаваць сінхранізацыю?</translation>
 <translation id="4827675678516992122">Не ўдалося падключыцца</translation>
-<translation id="4828937774870308359">Па-аўстралійску</translation>
 <translation id="4829768588131278040">Наладзіць PIN-код</translation>
 <translation id="4830502475412647084">Ідзе ўсталяванне абнаўлення АС</translation>
 <translation id="4830573902900904548">Прыладзе <ph name="DEVICE_TYPE" /> не ўдалося падключыцца да інтэрнэту праз сетку <ph name="NETWORK_NAME" />. Выберыце іншую сетку. <ph name="LEARN_MORE_LINK_START" />Даведацца больш<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2700,6 +2716,7 @@
 <translation id="4876273079589074638">Дапамажыце нашым інжынерам вывучыць і выправіць гэты збой. Калі можаце, пералічыце дакладныя крокі. Любыя дэталі – карысныя!</translation>
 <translation id="4876895919560854374">Блакіроўка і разблакіроўка экрана</translation>
 <translation id="4877276003880815204">Праверыць элементы</translation>
+<translation id="4878653975845355462">Адміністратар забараніў наладжванне ўласных фонаў</translation>
 <translation id="4879491255372875719">Аўтаматычна (стандартна)</translation>
 <translation id="4880328057631981605">Назва пункта доступу</translation>
 <translation id="4880827082731008257">Гісторыя пошуку</translation>
@@ -2755,10 +2772,10 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" запытвае дазвол на падключэнне да серыйнага порта</translation>
 <translation id="4944310289250773232">Гэты сэрвіс аўтэнтыфікацыі размешчаны на дамене <ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">Дзеянні</translation>
+<translation id="4952981627953231344">На жаль, на гэтай прыладзе нельга выкарыстоўваць Plugin VM. Звярніцеся да адміністратара прылад вашай арганізацыі.</translation>
 <translation id="4953689047182316270">Адказваць на падзеі функцый спецыяльных магчымасцей</translation>
 <translation id="4953808748584563296">Стандартны аранжавы аватар</translation>
 <translation id="4955710816792587366">Набярыце PIN-код</translation>
-<translation id="4955814292505481804">Штогод</translation>
 <translation id="4959262764292427323">Паролі захоўваюцца ў вашым Уліковым запісе Google, і вы зможаце карыстацца імі з любой прылады</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Праграма ўсталявана адміністратарам.</translation>
@@ -3240,7 +3257,6 @@
 <translation id="5659593005791499971">Адрас электроннай пошты</translation>
 <translation id="5659833766619490117">Не ўдалося перакласці старонку</translation>
 <translation id="5660204307954428567">Спалучэнне з прыладай "<ph name="DEVICE_NAME" />"</translation>
-<translation id="5662477687021125631">Бестэрміновая</translation>
 <translation id="5667546120811588575">Наладжваецца Google Play...</translation>
 <translation id="5669267381087807207">Ідзе актывацыя</translation>
 <translation id="5669691691057771421">Увядзіце новы PIN-код</translation>
@@ -3256,6 +3272,7 @@
 <translation id="5687326903064479980">Часавы пояс</translation>
 <translation id="5689516760719285838">Месцазнаходжанне</translation>
 <translation id="56907980372820799">Звязаць даныя</translation>
+<translation id="5691180005790455277">Усе даныя і файлы cookie, захаваныя групай сайтаў "<ph name="SITE_GROUP_NAME" />", будуць выдалены.</translation>
 <translation id="5691511426247308406">Сям'я</translation>
 <translation id="5692183275898619210">Друкаванне завершана</translation>
 <translation id="5696143504434933566">Паскардзіцца на пашырэнне "<ph name="EXTENSION_NAME" />"</translation>
@@ -3342,7 +3359,6 @@
 <translation id="5815645614496570556">Адрас X.400</translation>
 <translation id="5816434091619127343">Запытаныя змены прынтара зробяць немагчымым яго выкарыстанне.</translation>
 <translation id="5817918615728894473">Спалучыць</translation>
-<translation id="5819762621475381970">– планіроўку вашага пакоя</translation>
 <translation id="5821565227679781414">Стварыць ярлык</translation>
 <translation id="5825412242012995131">Уключана (рэкамендуецца)</translation>
 <translation id="5826395379250998812">Падключыце прыладу "<ph name="DEVICE_TYPE" />" да тэлефона. <ph name="LINK_BEGIN" />Даведацца больш<ph name="LINK_END" /></translation>
@@ -3478,6 +3494,7 @@
 <translation id="6007240208646052708">Галасавы пошук на вашай мове недаступны.</translation>
 <translation id="6009781704028455063">Убудаваны датчык</translation>
 <translation id="6010869025736512584">Выкарыстоўваецца доступ да відэаўваходу</translation>
+<translation id="6011074160056912900">Сетка Ethernet</translation>
 <translation id="6011193465932186973">Лічбавы адбітак</translation>
 <translation id="6011449291337289699">Выдаленне даных сайта</translation>
 <translation id="6015266928248016057">Няправільны PUK-код. Засталося спроб: <ph name="RETRIES" />.</translation>
@@ -3514,6 +3531,7 @@
 <translation id="6053401458108962351">&amp;Выдаліць гісторыю праглядаў...</translation>
 <translation id="6055171183283175969">Уведзены няправільны пароль.</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 з шыфраваннем RSA</translation>
+<translation id="6055907707645252013">Тып сеткі – <ph name="NETWORK_TYPE" />, не падключана</translation>
 <translation id="6056710589053485679">Звычайная перазагрузка</translation>
 <translation id="6057381398996433816">Для гэтага сайта заблакіравана выкарыстанне датчыкаў руху і святла.</translation>
 <translation id="6058567592298841668">Віртуальная машына ўбудовы: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3577,6 +3595,7 @@
 <translation id="6136114942382973861">Закрыць панэль спамповак</translation>
 <translation id="6137767437444130246">Сертыфікат карыстальніка</translation>
 <translation id="6138680304137685902">Подпіс X9.62 ECDSA з SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, няма сеткі</translation>
 <translation id="6141988275892716286">Пацвярджэнне спампоўвання</translation>
 <translation id="6143186082490678276">Даведка</translation>
 <translation id="6144938890088808325">Дапамажыце нам палепшыць прылады Chromebook</translation>
@@ -3883,6 +3902,7 @@
 <translation id="6602956230557165253">Для пераходу выкарыстоўвайце клавішы са стрэлкамі ўлева і ўправа.</translation>
 <translation id="6605847144724004692">Ацэнак ад карыстальнікаў яшчэ няма.</translation>
 <translation id="6607831829715835317">Больш &amp;інструментаў</translation>
+<translation id="6611972847767394631">Вашы ўкладкі можна знайсці тут</translation>
 <translation id="6612358246767739896">Абароненае змесціва</translation>
 <translation id="6615455863669487791">Паказаць</translation>
 <translation id="6618097958368085618">Захаваць усё роўна</translation>
@@ -3951,6 +3971,7 @@
 <translation id="6709133671862442373">Навіны</translation>
 <translation id="6709357832553498500">Падключыцца праз: <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Назад</translation>
+<translation id="6715803357256707211">Адбылася памылка падчас усталявання Linux-праграмы. Каб даведацца больш, націсніце на апавяшчэнне.</translation>
 <translation id="6721678857435001674">Даведацца пра марку і мадэль ключа бяспекі</translation>
 <translation id="6721972322305477112">&amp;Файл</translation>
 <translation id="672213144943476270">Перш чым пачынаць прагляд як госць, разблакіруйце свой профіль.</translation>
@@ -3975,7 +3996,6 @@
 <translation id="674632704103926902">Уключыць перацягванне дотыкам</translation>
 <translation id="6748217015615267851">Сродак візуалізацыі: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Вы можаце працягнуць, але будуць адноўлены толькі сінхранізаваныя даныя і налады. Усе лакальныя даныя будуць страчаны.</translation>
-<translation id="6748775883310276718">Кіёск з адной праграмай</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (інкогніта)</translation>
 <translation id="6757101664402245801">URL-адрас скапіраваны</translation>
 <translation id="6758056191028427665">Паведаміце нам, што вы думаеце пра наш прадукт.</translation>
@@ -3985,6 +4005,7 @@
 <translation id="6769712124046837540">Дадаецца прынтар...</translation>
 <translation id="6770664076092644100">Спраўдзіць праз NFC</translation>
 <translation id="6771503742377376720">З'яўляецца цэнтрам сертыфікацыі</translation>
+<translation id="6772339735733515807">Кіраванне пашырэннямі</translation>
 <translation id="6775163072363532304">Тут будуць з'яўляцца даступныя прылады.</translation>
 <translation id="6777817260680419853">Перанакіраванне заблакіравана</translation>
 <translation id="6778737459546443941">Вашы бацькі яшчэ не ўхвалілі гэты сайт</translation>
@@ -4123,6 +4144,7 @@
 <translation id="6972180789171089114">Аўдыя/Відэа</translation>
 <translation id="6972553992270299730">Сайт <ph name="ORIGIN" /> не можа адкрываць файлы ў гэтай папцы, бо ў ёй знаходзяцца сістэмныя файлы</translation>
 <translation id="6972754398087986839">Пачатак працы</translation>
+<translation id="6973611239564315524">Даступна абнаўленне да Debian 10 (Buster)</translation>
 <translation id="6974609594866392343">Пазасеткавы дэма-рэжым</translation>
 <translation id="6977381486153291903">Версія ўбудаванага ПЗ</translation>
 <translation id="6978121630131642226">Пошукавыя сістэмы</translation>
@@ -4582,6 +4604,7 @@
 <translation id="7644543211198159466">Колер і тэма</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (уладальнік)</translation>
 <translation id="7645681574855902035">Скасоўваецца стварэнне рэзервовай копіі кантэйнера Linux</translation>
+<translation id="7646772052135772216">Сінхранізацыя пароляў не працуе</translation>
 <translation id="7647403192093989392">Няма нядаўніх дзеянняў</translation>
 <translation id="7648992873808071793">Захоўваць файлы на гэтай прыладзе</translation>
 <translation id="7649070708921625228">Даведка</translation>
@@ -4770,6 +4793,7 @@
 <translation id="7877451762676714207">Невядомая памылка сервера. Паўтарыце спробу або звярніцеся да адміністратара сервера.</translation>
 <translation id="7877680364634660272">Знаёмства</translation>
 <translation id="7878562273885520351">Ваш пароль можа быць раскрыты</translation>
+<translation id="7879631849810108578">Спалучэнне клавіш зададзена: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Пры перазапуску лакальныя даныя будуць выдалены</translation>
 <translation id="7881483672146086348">Праглядзець уліковы запіс</translation>
 <translation id="7882358943899516840">Тып пастаўшчыка</translation>
@@ -4856,6 +4880,7 @@
 <translation id="7987814697832569482">Заўсёды падключацца праз гэты VPN</translation>
 <translation id="7988355189918024273">Уключыць спецыяльныя магчымасці</translation>
 <translation id="7991296728590311172">Налады доступу праз пераключальнікі</translation>
+<translation id="7994350303002908848">Не ўдалося ўсталяваць Plugin VM. Паўтарыце спробу або звярніцеся да адміністратара прылад сваёй арганізацыі. Код памылкі: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">Метад EAP</translation>
 <translation id="7997826902155442747">Прыярытэт працэсу</translation>
 <translation id="7999229196265990314">Створаны наступныя файлы:
@@ -4947,7 +4972,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Няма старонніх файлаў cookie}=1{1 старонні файл cookie заблакіраваны}one{# старонні файл cookie заблакіраваны}few{# староннія файлы cookie заблакіраваны}many{# старонніх файлаў cookie заблакіраваны}other{# старонняга файла cookie заблакіраваны}}</translation>
 <translation id="810875025413331850">Прылад паблізу не знойдзена.</translation>
 <translation id="8111155949205007504">Абагуліць гэты пароль з вашым iPhone</translation>
-<translation id="8113043281354018522">Выберыце тып ліцэнзіі</translation>
 <translation id="8114875720387900039">Падзяліць гарызантальна</translation>
 <translation id="8116972784401310538">&amp;Менеджар закладак</translation>
 <translation id="8117620576188476503">Кіруйце падключэннямі, абнаўленнямі і наладамі ў панэлі стану. Каб адкрыць яе з клавіятуры, націсніце Alt + Shift + S.</translation>
@@ -5104,6 +5128,7 @@
 <translation id="8327039559959785305">Памылка падключэння файлаў Linux. Паўтарыце спробу.</translation>
 <translation id="8335587457941836791">Адмацаваць з паліцы</translation>
 <translation id="8336407002559723354">Дата спынення абнаўленняў — <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Перазапусціце прыладу, каб тэксты інтэрфейсу сістэмы пачалі паказвацца на наступнай мове: <ph name="LANGUAGE" /></translation>
 <translation id="8336739000755212683">Змяніць відарыс уліковага запісу на прыладзе</translation>
 <translation id="8337047789441383384">Вы ўжо рэгістравалі гэты ключ бяспекі. Яго не трэба рэгістраваць зноў.</translation>
 <translation id="8338952601723052325">Вэб-сайт распрацоўшчыка</translation>
@@ -5147,6 +5172,7 @@
 <translation id="8400146488506985033">Кіраваць данымі карыстальнікаў</translation>
 <translation id="8401432541486058167">Укажыце PIN-код, звязаны з разумнай карткай.</translation>
 <translation id="8405046151008197676">Атрымайце асноўную інфармацыю пра апошняе абнаўленне</translation>
+<translation id="8408068190360279472">Тып сеткі – <ph name="NETWORK_TYPE" />, ідзе падключэнне</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Спачатку запытваць (рэкамендуецца)</translation>
 <translation id="8418445294933751433">&amp;Паказаць як укладку</translation>
@@ -5436,6 +5462,7 @@
 <translation id="8807632654848257479">Стабільная</translation>
 <translation id="8808478386290700967">Вэб-крама</translation>
 <translation id="8808686172382650546">Кот</translation>
+<translation id="8808744862003883508">На гэтай старонцы можна бачыць усе ўсталяваныя ў Chrome пашырэнні.</translation>
 <translation id="8809147117840417135">Светла-бірузовы</translation>
 <translation id="8813698869395535039">Не ўдаецца ўвайсці ва ўліковы запіс <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">аркуш паперы</translation>
@@ -5663,7 +5690,6 @@
 <translation id="9121814364785106365">Адкрыць у замацаванай укладцы</translation>
 <translation id="9122176249172999202">Работа праграмы "<ph name="IDS_SHORT_PRODUCT_NAME" />" прыпынена</translation>
 <translation id="9124003689441359348">Захаваныя паролі з'явяцца тут</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (засталося <ph name="LICENSE_COUNT" />)</translation>
 <translation id="9128317794749765148">Не ўдалося завяршыць наладку</translation>
 <translation id="9128870381267983090">Падключыцеся да сеткі</translation>
 <translation id="9130015405878219958">Уведзены няправільны рэжым.</translation>
@@ -5702,6 +5728,7 @@
 <translation id="9188732951356337132">Адпраўляць даныя пра выкарыстанне і дыягностыку. Зараз прылада аўтаматычна адпраўляе ў Google даныя дыягностыкі і звесткі аб выкарыстанні прылады і праграм. Яны не будуць выкарыстоўвацца, каб устанавіць асобу вашага дзіцяці, але дапамогуць павялічыць стабільнасць сістэмы і праграм і ўнесці іншыя паляпшэнні. Некаторыя сукупныя даныя таксама будуць карыснымі для праграм Google і партнёраў Google, напрыклад распрацоўшчыкаў Android. Калі для вашага дзіцяці ўключана налада дадатковай гісторыі дзеянняў у інтэрнэце і праграмах, то адпаведныя даныя могуць захоўвацца ў яго Уліковым запісе Google. <ph name="BEGIN_LINK2" />Даведацца больш<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec з папярэдне абагуленым ключом</translation>
 <translation id="920045321358709304">Пошук у сэрвісе <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">Усе пазасеткавыя даныя будуць выдалены</translation>
 <translation id="9201220332032049474">Параметры блакіроўкі экрана</translation>
 <translation id="9203398526606335860">&amp;Прафіліраванне ўключана</translation>
 <translation id="9203904171912129171">Выберыце прыладу</translation>
@@ -5714,6 +5741,7 @@
 <translation id="9220525904950070496">Выдаліць уліковы запіс</translation>
 <translation id="9220820413868316583">Адніміце палец і паўтарыце спробу.</translation>
 <translation id="923467487918828349">Паказаць усё</translation>
+<translation id="929117907539171075">Пазасеткавыя даныя ва ўсталяванай праграме будуць таксама выдалены</translation>
 <translation id="930268624053534560">Падрабязныя меткі часу</translation>
 <translation id="932327136139879170">Галоўная старонка</translation>
 <translation id="932508678520956232">Не ўдалося запусціць друк.</translation>
@@ -5739,6 +5767,7 @@
 <translation id="960719561871045870">Код аператара</translation>
 <translation id="960987915827980018">Засталася прыкладна гадзіна</translation>
 <translation id="962802172452141067">Дрэва папак з закладкамі</translation>
+<translation id="964057662886721376">Некаторыя пашырэнні могуць запавольваць працу браўзера, асабліва ўсталяваныя не па вашай волі.</translation>
 <translation id="964286338916298286">Адміністратар выключыў перавагі Chrome для вашай прылады.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Праграма}one{Праграмы}few{Праграмы}many{Праграмы}other{Праграмы}}</translation>
 <translation id="965211523698323809">Адпраўляйце і атрымлівайце тэкставыя паведамленні з прылады "<ph name="DEVICE_TYPE" />". <ph name="LINK_BEGIN" />Даведацца больш<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb
index 0c89d9a..59a56164 100644
--- a/chrome/app/resources/generated_resources_bg.xtb
+++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">По избор</translation>
 <translation id="1178581264944972037">Пауза</translation>
 <translation id="117916940443676133">Ключът ви за сигурност не е защитен с ПИН. За да управлявате данни за вход, първо създайте ПИН.</translation>
-<translation id="118069123878619799">– физическите ви черти, като ръст;</translation>
 <translation id="1181037720776840403">Премахване</translation>
 <translation id="1183237619868651138">„<ph name="EXTERNAL_CRX_FILE" />“ не може да се инсталира в локалния кеш.</translation>
 <translation id="1185924365081634987">Може също да опитате <ph name="GUEST_SIGNIN_LINK_START" />да сърфирате като гост<ph name="GUEST_SIGNIN_LINK_END" />, за да се отстрани тази грешка в мрежата.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">Изчаква се <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033">Още <ph name="NUM_PRINTERS" /> налични устройства.</translation>
 <translation id="1495677929897281669">Назад към раздела</translation>
+<translation id="1499271269825557605">Ако не разпознавате дадено разширение или браузърът ви не работи правилно, оттук можете да изключите или да персонализирате разширенията.</translation>
 <translation id="1500297251995790841">Неизвестно устройство [<ph name="VENDOR_ID" />: <ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Този профил на собственик трябва да е първият, в който да се влезе, при сесия с централизиран вход.</translation>
 <translation id="150411034776756821">Премахване на <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Достъпът на тази страница до камерата ви е блокиран.</translation>
 <translation id="1507246803636407672">&amp;Отхвърляне</translation>
 <translation id="1508491105858779599">Поставете и задръжте пръста си върху сензора за отпечатъци, за да отключите устройството.</translation>
+<translation id="1508575541972276599">Текущата версия е Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">Достъп до всяко устройство <ph name="DEVICE_NAME_AND_VENDOR" /> чрез USB</translation>
 <translation id="150962533380566081">Невалиден PUK код.</translation>
 <translation id="1510030919967934016">Тази страница бе блокирана от проследяване на местоположението ви.</translation>
@@ -431,6 +432,7 @@
 <translation id="1601560923496285236">Прилагане</translation>
 <translation id="1603914832182249871">(„Инкогнито“)</translation>
 <translation id="1604432177629086300">Отпечатването не бе успешно. Проверете принтера и опитайте отново.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: Синхронизирането на паролите не работи</translation>
 <translation id="1607139524282324606">Изчистване на записа</translation>
 <translation id="1608626060424371292">Премахване на този потребител</translation>
 <translation id="1608668830839595724">Още действия за избраните елементи</translation>
@@ -557,6 +559,8 @@
 <translation id="177336675152937177">Данни на хостваните приложения</translation>
 <translation id="1776712937009046120">Добавяне на потребител</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Това устройство се управлява от <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    Моля, кликнете върху „Напред“, за да продължите с влизането в профила си в(ъв) <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation>
 <translation id="1779652936965200207">Моля, въведете този ключ за достъп на „<ph name="DEVICE_NAME" />“:</translation>
 <translation id="1780152987505130652">Затваряне на групата</translation>
 <translation id="1781291988450150470">Текущ ПИН код</translation>
@@ -744,6 +748,7 @@
 <translation id="2048653237708779538">Действието не може да се извърши</translation>
 <translation id="2050339315714019657">Вертикално</translation>
 <translation id="2053312383184521053">Данни за състоянието на неактивност</translation>
+<translation id="2055585478631012616">Ще излезете от профила си в тези сайтове, включително в отворените раздели</translation>
 <translation id="205560151218727633">Лого на Google Асистент</translation>
 <translation id="2058456167109518507">Открито е устройство</translation>
 <translation id="2059913712424898428">Часова зона</translation>
@@ -759,6 +764,7 @@
 <translation id="2079545284768500474">Отмяна</translation>
 <translation id="2080070583977670716">Още настройки</translation>
 <translation id="2087822576218954668">Отпечатване: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN мрежа</translation>
 <translation id="2089566709556890888">Сърфирайте безопасно с Google Chrome</translation>
 <translation id="2089795179672254991">Извеждане на запитване, когато сайт иска да преглежда текста и изображенията, копирани в буферната памет (препоръчително)</translation>
 <translation id="2090165459409185032">За да възстановите информацията за профила си, отворете google.bg/accounts/recovery</translation>
@@ -982,6 +988,7 @@
 <translation id="2379232090534544565">Сайт осъществява достъп до аудио- и видеовхода</translation>
 <translation id="2379281330731083556">Печат чрез системния диалогов прозорец... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Извеждане на запитване преди изпращане (препоръчително)</translation>
+<translation id="2382818385048255866">Проверете разширенията</translation>
 <translation id="2384436799579181135">Възникна грешка. Моля, проверете принтера си и опитайте отново.</translation>
 <translation id="2387458720915042159">Тип на връзката през прокси сървър</translation>
 <translation id="2391419135980381625">Стандартен шрифт</translation>
@@ -1033,6 +1040,7 @@
 <translation id="2462724976360937186">Идентификатор (ИД) на ключ на сертифициращия орган</translation>
 <translation id="2462752602710430187">Добавихте <ph name="PRINTER_NAME" /></translation>
 <translation id="2464089476039395325">HTTP прокси сървър</translation>
+<translation id="2467267713099745100"><ph name="NETWORK_TYPE" /> мрежа – изключена</translation>
 <translation id="2468205691404969808">Използва „бисквитки“ за запомняне на предпочитанията ви дори ако не посещавате тези страници</translation>
 <translation id="2468402215065996499">Тамагочи</translation>
 <translation id="2469259292033957819">Нямате запазени принтери.</translation>
@@ -1287,6 +1295,7 @@
 <translation id="2800760947029405028">Качване на изображение</translation>
 <translation id="2803375539583399270">Въведете ПИН кодa</translation>
 <translation id="2804043232879091219">Алтернативният браузър не можа да се отвори</translation>
+<translation id="2804667941345577550">Ще излезете от профила си в този сайт, включително в отворените раздели</translation>
 <translation id="2804680522274557040">Камерата е изключена</translation>
 <translation id="2805646850212350655">Шифроване на файлова система от Microsoft</translation>
 <translation id="2805756323405976993">Приложения</translation>
@@ -1294,6 +1303,7 @@
 <translation id="2806891468525657116">Прекият път вече съществува</translation>
 <translation id="2807517655263062534">Тук се показват изтеглените от вас файлове</translation>
 <translation id="2809586584051668049">и още <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2810390687497823527">Ако не разпознавате дадено разширение или браузърът ви не работи правилно, оттук можете да изключите или да персонализирате разширенията.</translation>
 <translation id="2812049959647166806">Thunderbolt не се поддържа</translation>
 <translation id="2812944337881233323">Опитайте да излезете от профила си и отново да влезете в него</translation>
 <translation id="2812989263793994277">Без показване на изображения</translation>
@@ -1333,6 +1343,7 @@
 <translation id="2861941300086904918">Диспечер на сигурността за клиенти с директно изпълнение</translation>
 <translation id="2864601841139725659">Задаване на снимката на потребителския ви профил</translation>
 <translation id="2865919525181940183">Екранна снимка на програмите на екрана</translation>
+<translation id="286674810810214575">Източниците на захранване се проверяват...</translation>
 <translation id="2867768963760577682">Отваряне като фиксиран раздел</translation>
 <translation id="2868746137289129307">Това разширение не е актуално и е деактивирано от корпоративно правило. Може да бъде активирано автоматично, когато бъде налице по-нова версия.</translation>
 <translation id="2870560284913253234">Сайт</translation>
@@ -1410,6 +1421,7 @@
 <translation id="2972581237482394796">&amp;Възстановяване</translation>
 <translation id="2973324205039581528">Заглушаване на сайта</translation>
 <translation id="2977480621796371840">Премахване от групата</translation>
+<translation id="2979520980928493164">По-добре работещ Chrome</translation>
 <translation id="2979639724566107830">Отваряне в нов прозорец</translation>
 <translation id="2981113813906970160">Показване на голям курсор на мишката</translation>
 <translation id="2982970937345031">Подаване на анонимен сигнал</translation>
@@ -1516,6 +1528,7 @@
 <translation id="3143515551205905069">Анулиране на синхронизирането</translation>
 <translation id="3143754809889689516">Възпроизвеждане от началото</translation>
 <translation id="3144647712221361880">Отваряне на връзката като</translation>
+<translation id="3145187901750964977">Виртуалната машина не бе инсталирана. Моля, опитайте отново или се свържете с администратора на устройства за организацията си. Код на грешката: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Версия:
     <ph name="LINUX_VERSION" />
 
@@ -1554,6 +1567,7 @@
 <translation id="3192947282887913208">Аудиофайлове</translation>
 <translation id="3194737229810486521"><ph name="URL" /> иска да съхранява за постоянно данни на устройството ви</translation>
 <translation id="3199127022143353223">Сървъри</translation>
+<translation id="3201306578844503970">Виртуалната машина не бе инсталирана поради грешка в мрежата. Моля, опитайте отново или се свържете с администратора на устройства за организацията си. Код на грешката: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Наличните USB устройства ще се показват тук.</translation>
 <translation id="3202131003361292969">Път</translation>
 <translation id="3202173864863109533">Звукът на този раздел е спрян.</translation>
@@ -1891,7 +1905,6 @@
 <translation id="3678156199662914018">Разширение: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Благодарим ви за отзива. В момента сте офлайн, така че сигналът ви ще бъде изпратен по-късно.</translation>
 <translation id="3682824389861648626">Праг на движение</translation>
-<translation id="3683023058278427253">Открихме няколко типа лицензи за домейна ви. Моля, изберете един от тях, за да продължите.</translation>
 <translation id="3683524264665795342">Заявка за споделяне на екрана от <ph name="APP_NAME" /></translation>
 <translation id="368789413795732264">Възникна грешка при опита за запис във файла: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Запис във файлове и папки, които сте отворили в приложението</translation>
@@ -2066,6 +2079,7 @@
 <translation id="389589731200570180">Споделяне с гости</translation>
 <translation id="389901847090970821">Изберете клавиатура</translation>
 <translation id="3899879303189199559">Офлайн за повече от една година</translation>
+<translation id="3900789207771372462">Някои разширения могат да виждат активността ви при сърфиране, включително личната информация.</translation>
 <translation id="3900966090527141178">Експортиране на паролите</translation>
 <translation id="3901991538546252627">Установява се връзка със: <ph name="NAME" /></translation>
 <translation id="3905761538810670789">Поправяне на приложението</translation>
@@ -2156,7 +2170,6 @@
 <translation id="4013132157686828973"><ph name="CLIENT_NAME" /> отстранява грешките в този браузър</translation>
 <translation id="4014432863917027322">Да се поправи ли <ph name="EXTENSION_NAME" />?</translation>
 <translation id="4015163439792426608">Използвате разширения? <ph name="BEGIN_LINK" />Управлявайте ги<ph name="END_LINK" /> от едно лесно място.</translation>
-<translation id="4020106588733303597">Ами сега! Системата не успя да зареди наличните лицензи.</translation>
 <translation id="4020327272915390518">Меню с опции</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Добавяне в речника</translation>
@@ -2194,6 +2207,7 @@
 <translation id="407520071244661467">Мащаб</translation>
 <translation id="4075639477629295004">Предаването на „<ph name="FILE_NAME" />“ не е възможно.</translation>
 <translation id="4077917118009885966">Рекламите са блокирани за този сайт</translation>
+<translation id="4077919383365622693">Всички данни и „бисквитки“, съхранявани от <ph name="SITE" />, ще бъдат изтрити.</translation>
 <translation id="4079140982534148664">Използване на подобрената проверка на правописа</translation>
 <translation id="4081242589061676262">Предаването на файла не е възможно.</translation>
 <translation id="4084682180776658562">Отметка</translation>
@@ -2268,6 +2282,7 @@
 <translation id="4181841719683918333">Езици</translation>
 <translation id="4184885522552335684">Преместете екраните с плъзгане, за да ги пренаредите</translation>
 <translation id="4194570336751258953">Активиране на кликване с докосване</translation>
+<translation id="4194595472342532425">Plugin VM не се настрои поради проблем с конфигурирането. Моля, свържете се с администратора на устройства за организацията си. Код на грешката: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Отваряне в нов раздел</translation>
 <translation id="4195814663415092787">Продължаване оттам, откъдето сте прекъснали</translation>
 <translation id="4198146608511578238">За да разговаряте с Google Асистент, трябва само да натиснете и задържите иконата на стартовия панел.</translation>
@@ -2491,6 +2506,7 @@
 <translation id="4549791035683739768">В ключа ви за сигурност няма съхранени отпечатъци</translation>
 <translation id="4551763574344810652">Натиснете <ph name="MODIFIER_KEY_DESCRIPTION" /> за отмяна</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005"><ph name="NETWORK_TYPE" /> мрежа, сила на сигнала <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">Версията на външното разширение е същата или по-стара в сравнение със съществуващата.</translation>
 <translation id="4555769855065597957">Сянка</translation>
 <translation id="4555863373929230635">За да запазвате пароли в профила си в Google, влезте в него и включете синхронизирането.</translation>
@@ -2568,6 +2584,7 @@
 <translation id="4665446389743427678">Всички данни, съхранявани от <ph name="SITE" />, ще бъдат изтрити.</translation>
 <translation id="4668721319092543482">Кликнете, за да активирате <ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">Създаване на сбит вариант на страницата</translation>
+<translation id="46733273239502219">Офлайн данните в инсталираните приложения също ще бъдат изчистени</translation>
 <translation id="4673442866648850031">Отваряне на инструментите за писане при изваждане на писалката</translation>
 <translation id="4677585247300749148"><ph name="URL" /> иска да реагира на събития за достъпност</translation>
 <translation id="4677772697204437347">Памет на графичния процесор</translation>
@@ -2659,7 +2676,6 @@
 <translation id="4823484602432206655">Четене и промяна на настройките на потребителите и устройството</translation>
 <translation id="4824958205181053313">Да се анулира ли синхронизирането?</translation>
 <translation id="4827675678516992122">Не можа да се установи връзка</translation>
-<translation id="4828937774870308359">Обратно</translation>
 <translation id="4829768588131278040">Настройване на ПИН</translation>
 <translation id="4830502475412647084">Актуализацията на операционната система се инсталира</translation>
 <translation id="4830573902900904548">Устройството ви <ph name="DEVICE_TYPE" /> не може да се свърже с интернет през „<ph name="NETWORK_NAME" />“. Моля, изберете друга мрежа. <ph name="LEARN_MORE_LINK_START" />Научете повече<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2700,6 +2716,7 @@
 <translation id="4876273079589074638">Помогнете на инженерите ни да открият и отстранят причината за този срив. Ако е възможно, посочете точните стъпки. Всяка подробност е важна!</translation>
 <translation id="4876895919560854374">Заключване и отключване на екрана</translation>
 <translation id="4877276003880815204">Инспектиране на елементите</translation>
+<translation id="4878653975845355462">Персонализираните фонове са изключени от администратора ви</translation>
 <translation id="4879491255372875719">Автоматично (стандартно)</translation>
 <translation id="4880328057631981605">Име на точката за достъп</translation>
 <translation id="4880827082731008257">Търсене в историята</translation>
@@ -2755,10 +2772,10 @@
 <translation id="4943691134276646401">„<ph name="CHROME_EXTENSION_NAME" />“ иска да се свърже със сериен порт</translation>
 <translation id="4944310289250773232">Тази услуга за удостоверяване се хоства от <ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">Действия</translation>
+<translation id="4952981627953231344">Приставката Plugin VM не е разрешена на това устройство. Свържете се с администратора на устройства за организацията си.</translation>
 <translation id="4953689047182316270">Реагиране на събития за достъпност</translation>
 <translation id="4953808748584563296">Стандартен оранжев аватар</translation>
 <translation id="4955710816792587366">Изберете ПИН код</translation>
-<translation id="4955814292505481804">Годишен</translation>
 <translation id="4959262764292427323">Паролите се запазват в профила ви в Google, за да можете да ги използвате на всяко устройство</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Това приложение е инсталирано от администратора ви.</translation>
@@ -3241,7 +3258,6 @@
 <translation id="5659593005791499971">Имейл</translation>
 <translation id="5659833766619490117">Тази страница не можа да бъде преведена</translation>
 <translation id="5660204307954428567">Сдвояване с(ъс) <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Постоянен</translation>
 <translation id="5667546120811588575">Google Play се настройва...</translation>
 <translation id="5669267381087807207">Активира се</translation>
 <translation id="5669691691057771421">Въведете новия ПИН</translation>
@@ -3257,6 +3273,7 @@
 <translation id="5687326903064479980">Часова зона</translation>
 <translation id="5689516760719285838">Местоположение</translation>
 <translation id="56907980372820799">Свързване на данните</translation>
+<translation id="5691180005790455277">Всички данни и „бисквитки“, съхранявани от домейна <ph name="SITE_GROUP_NAME" />, и сайтовете в него ще бъдат изтрити.</translation>
 <translation id="5691511426247308406">Семейство</translation>
 <translation id="5692183275898619210">Отпечатването завърши</translation>
 <translation id="5696143504434933566">Подаване на сигнал за злоупотреба за <ph name="EXTENSION_NAME" /></translation>
@@ -3343,7 +3360,6 @@
 <translation id="5815645614496570556">Адрес на X.400</translation>
 <translation id="5816434091619127343">Заявените промени в принтера ще го направят неизползваем.</translation>
 <translation id="5817918615728894473">Сдвояване</translation>
-<translation id="5819762621475381970">– плана на стаята ви.</translation>
 <translation id="5821565227679781414">Създаване на пряк път</translation>
 <translation id="5825412242012995131">Включено (препоръчително)</translation>
 <translation id="5826395379250998812">Свържете своя <ph name="DEVICE_TYPE" /> с телефона си. <ph name="LINK_BEGIN" />Научете повече<ph name="LINK_END" /></translation>
@@ -3479,6 +3495,7 @@
 <translation id="6007240208646052708">Функцията за гласово търсене не е налице за езика ви.</translation>
 <translation id="6009781704028455063">Вграден сензор</translation>
 <translation id="6010869025736512584">Осъществява се достъп до видеовхода</translation>
+<translation id="6011074160056912900">Ethernet мрежа</translation>
 <translation id="6011193465932186973">Отпечатък</translation>
 <translation id="6011449291337289699">Изчистване на данните за сайтовете</translation>
 <translation id="6015266928248016057">Невалиден PUK код. Оставащи опити: <ph name="RETRIES" />.</translation>
@@ -3515,6 +3532,7 @@
 <translation id="6053401458108962351">Из&amp;чистване на данните за сърфирането...</translation>
 <translation id="6055171183283175969">Въведената от вас парола е неправилна.</translation>
 <translation id="6055392876709372977">PKCS 1 SHA-256 с RSA шифроване</translation>
+<translation id="6055907707645252013"><ph name="NETWORK_TYPE" /> мрежа – не е установена връзка</translation>
 <translation id="6056710589053485679">Нормално презареждане</translation>
 <translation id="6057381398996433816">Сайтът бе блокиран, така че да не използва сензорите за движение и светлина.</translation>
 <translation id="6058567592298841668">Приставка за виртуална машина: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3578,6 +3596,7 @@
 <translation id="6136114942382973861">Затваряне на лентата на изтеглянето</translation>
 <translation id="6137767437444130246">Потребителски сертификат</translation>
 <translation id="6138680304137685902">Подпис по X9.62 ECDSA с SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" /> – няма мрежа</translation>
 <translation id="6141988275892716286">Потвърждаване на изтеглянето</translation>
 <translation id="6143186082490678276">Получаване на помощ</translation>
 <translation id="6144938890088808325">Помогнете ни да подобрим Chromebook</translation>
@@ -3884,6 +3903,7 @@
 <translation id="6602956230557165253">Използвайте клавишите със стрелки за наляво и за надясно, за да се придвижвате.</translation>
 <translation id="6605847144724004692">Още няма оценка от потребители.</translation>
 <translation id="6607831829715835317">Още инструме&amp;нти</translation>
+<translation id="6611972847767394631">Намирайте разделите си тук</translation>
 <translation id="6612358246767739896">Защитено съдържание</translation>
 <translation id="6615455863669487791">Покажете ми</translation>
 <translation id="6618097958368085618">Запазване въпреки това</translation>
@@ -3952,6 +3972,7 @@
 <translation id="6709133671862442373">Новини</translation>
 <translation id="6709357832553498500">Свързване посредством <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Предишна</translation>
+<translation id="6715803357256707211">Възникна грешка при инсталирането на приложението за Linux. За подробности кликнете върху известието.</translation>
 <translation id="6721678857435001674">Преглед на марката и модела на ключа ви за сигурност</translation>
 <translation id="6721972322305477112">&amp;Файл</translation>
 <translation id="672213144943476270">Моля, отключете потребителския си профил, преди да сърфирате като гост.</translation>
@@ -3976,7 +3997,6 @@
 <translation id="674632704103926902">Да се активира преместването чрез докосване</translation>
 <translation id="6748217015615267851">Програма за визуализация: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Може да продължите, но само синхронизираните ви данни и настройки ще бъдат възстановени. Цялата локална информация ще бъде заличена.</translation>
-<translation id="6748775883310276718">Терминал за едно приложение</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Инкогнито)</translation>
 <translation id="6757101664402245801">URL адресът е копиран</translation>
 <translation id="6758056191028427665">Уведомете ни как се справяме.</translation>
@@ -3986,6 +4006,7 @@
 <translation id="6769712124046837540">Добавяне на принтер...</translation>
 <translation id="6770664076092644100">Потвърждаване чрез КБП</translation>
 <translation id="6771503742377376720">Е сертифициращ орган</translation>
+<translation id="6772339735733515807">Управление на разширенията</translation>
 <translation id="6775163072363532304">Наличните устройства ще се показват тук.</translation>
 <translation id="6777817260680419853">Блокирано бе пренасочване</translation>
 <translation id="6778737459546443941">Родителят ви все още не е одобрил заявката</translation>
@@ -4124,6 +4145,7 @@
 <translation id="6972180789171089114">Аудио/видео</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> не може да отваря файловете в тази папка, защото тя съдържа системни файлове</translation>
 <translation id="6972754398087986839">Първи стъпки</translation>
+<translation id="6973611239564315524">Налице е надстройка до Debian 10 (Buster)</translation>
 <translation id="6974609594866392343">Офлайн демонстрационен режим</translation>
 <translation id="6977381486153291903">Версия на фърмуера</translation>
 <translation id="6978121630131642226">Търсещи машини</translation>
@@ -4583,6 +4605,7 @@
 <translation id="7644543211198159466">Цвят и тема</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (собственик)</translation>
 <translation id="7645681574855902035">Създаването на резервно копие на Linux се анулира</translation>
+<translation id="7646772052135772216">Синхронизирането на паролите не работи.</translation>
 <translation id="7647403192093989392">Няма скорошна активност</translation>
 <translation id="7648992873808071793">Да съхранява файлове на това устройство.</translation>
 <translation id="7649070708921625228">Помощ</translation>
@@ -4771,6 +4794,7 @@
 <translation id="7877451762676714207">Неизвестна грешка в сървъра. Моля, опитайте отново или се свържете с администратора му.</translation>
 <translation id="7877680364634660272">Обиколка</translation>
 <translation id="7878562273885520351">Възможно е паролата ви да е компрометирана</translation>
+<translation id="7879631849810108578">Прекият път е зададен: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Локалните данни ще бъдат изтрити, когато рестартирате</translation>
 <translation id="7881483672146086348">Преглед на профила</translation>
 <translation id="7882358943899516840">Тип на доставчика</translation>
@@ -4857,6 +4881,7 @@
 <translation id="7987814697832569482">Винаги да се установява връзка през тази VPN</translation>
 <translation id="7988355189918024273">Активиране на функциите за достъпност</translation>
 <translation id="7991296728590311172">Настройки на „Достъп с превключване“</translation>
+<translation id="7994350303002908848">Plugin VM не се инсталира. Моля, опитайте отново или се свържете с администратора на устройства за организацията си. Код на грешката: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">Метод с EAP</translation>
 <translation id="7997826902155442747">Приоритет на процесите</translation>
 <translation id="7999229196265990314">Създадени бяха следните файлове:
@@ -4949,7 +4974,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Няма „бисквитки“ на трети страни}=1{Блокирана е 1 „бисквитка“ на трета страна}other{Блокирани са # „бисквитки“ на трети страни}}</translation>
 <translation id="810875025413331850">Няма намерени устройства в близост.</translation>
 <translation id="8111155949205007504">Споделяне на тази парола с вашия iPhone</translation>
-<translation id="8113043281354018522">Изберете тип лиценз</translation>
 <translation id="8114875720387900039">Хоризонтално разделяне</translation>
 <translation id="8116972784401310538">&amp;Диспечер на отметките</translation>
 <translation id="8117620576188476503">Управлявайте връзките, актуализациите и настройките от лентата на състоянието. За да я отворите от клавиатурата, натиснете Alt + Shift + S.</translation>
@@ -5106,6 +5130,7 @@
 <translation id="8327039559959785305">При свързването на файловете за Linux възникна грешка. Моля, опитайте отново.</translation>
 <translation id="8335587457941836791">Освобождаване от лавицата</translation>
 <translation id="8336407002559723354">Актуализациите приключват през <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Рестартирайте устройството с цел показване на системния текст на <ph name="LANGUAGE" /></translation>
 <translation id="8336739000755212683">Промяна на изображението за профила на устройството</translation>
 <translation id="8337047789441383384">Вече сте регистрирали този ключ за сигурност. Няма нужда да го правите отново.</translation>
 <translation id="8338952601723052325">Уебсайт за програмисти</translation>
@@ -5149,6 +5174,7 @@
 <translation id="8400146488506985033">Управление на хората</translation>
 <translation id="8401432541486058167">Въведете ПИН, свързан със смарткартата ви</translation>
 <translation id="8405046151008197676">Вижте най-важното от най-новата актуализация</translation>
+<translation id="8408068190360279472"><ph name="NETWORK_TYPE" /> мрежа – установява се връзка</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Първо ще се извежда запитване (препоръчително)</translation>
 <translation id="8418445294933751433">&amp;Показване като раздел</translation>
@@ -5438,6 +5464,7 @@
 <translation id="8807632654848257479">Стабилно</translation>
 <translation id="8808478386290700967">Уеб магазин</translation>
 <translation id="8808686172382650546">Котка</translation>
+<translation id="8808744862003883508">На тази страница можете да видите всички разширения, инсталирани в Chrome.</translation>
 <translation id="8809147117840417135">Светло синьо-зелено</translation>
 <translation id="8813698869395535039">Не мога да вляза в профила <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">лист хартия</translation>
@@ -5665,7 +5692,6 @@
 <translation id="9121814364785106365">Отваряне като фиксиран раздел</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> е на пауза</translation>
 <translation id="9124003689441359348">Тук ще се покажат запазените пароли</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (ост. <ph name="LICENSE_COUNT" />)</translation>
 <translation id="9128317794749765148">Настройването не можа да бъде завършено</translation>
 <translation id="9128870381267983090">Свързване към мрежа</translation>
 <translation id="9130015405878219958">Въведен е невалиден режим.</translation>
@@ -5704,6 +5730,7 @@
 <translation id="9188732951356337132">Изпращане на данни за употребата и диагностиката. Понастоящем това устройство автоматично изпраща до Google диагностична информация и данни за употребата на устройството и приложенията. Тази информация няма да се използва за идентифициране на детето ви, а ще послужи за подобряване на стабилността на системата и приложенията и др. Някои обобщени данни също така ще подпомогнат приложенията и партньорите на Google, напр. програмистите за Android. Ако настройката „Допълнителна активност в мрежата и приложенията“ е включена за детето ви, тези данни може да се запазват в профила му в Google. <ph name="BEGIN_LINK2" />Научете повече<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPSec с предварително споделен ключ</translation>
 <translation id="920045321358709304">Търсене с/ъс <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">Всички офлайн данни ще бъдат изчистени</translation>
 <translation id="9201220332032049474">Опции за заключване на екрана</translation>
 <translation id="9203398526606335860">&amp;Профилирането е активирано</translation>
 <translation id="9203904171912129171">Избор на устройство</translation>
@@ -5716,6 +5743,7 @@
 <translation id="9220525904950070496">Премахване на профила</translation>
 <translation id="9220820413868316583">Вдигнете пръст и след това опитайте отново.</translation>
 <translation id="923467487918828349">Показване на всички</translation>
+<translation id="929117907539171075">Офлайн данните в инсталираното приложение също ще бъдат изчистени</translation>
 <translation id="930268624053534560">Подробни клейма за време</translation>
 <translation id="932327136139879170">Начална страница</translation>
 <translation id="932508678520956232">Отпечатването не можа да стартира.</translation>
@@ -5741,6 +5769,7 @@
 <translation id="960719561871045870">Код на оператора</translation>
 <translation id="960987915827980018">Остава около 1 час</translation>
 <translation id="962802172452141067">Дърво на папките с отметки</translation>
+<translation id="964057662886721376">Някои разширения могат да забавят работата ви, особено тези, които сте инсталирали непреднамерено.</translation>
 <translation id="964286338916298286">Системният ви администратор е деактивирал екстрите за Chrome за устройството ви.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Приложение}other{Приложения}}</translation>
 <translation id="965211523698323809">Изпращайте и получавайте SMS съобщения от своя <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Научете повече<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb
index 0d9236e..dae57ece 100644
--- a/chrome/app/resources/generated_resources_bn.xtb
+++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">কাস্টম</translation>
 <translation id="1178581264944972037">বিরতি</translation>
 <translation id="117916940443676133">আপনার নিরাপত্তা কী কোনও পিন দ্বারা সুরক্ষিত নেই। সাইন-ইন ডেটা ম্যানেজ করতে, প্রথমে পিন তৈরি করুন।</translation>
-<translation id="118069123878619799">- আপনার শারীরিক বৈশিষ্ট্য, যেমন উচ্চতা</translation>
 <translation id="1181037720776840403">সরান</translation>
 <translation id="1183237619868651138">স্থানীয় ক্যাশের মধ্যে <ph name="EXTERNAL_CRX_FILE" /> ইনস্টল করা যায়নি৷</translation>
 <translation id="1185924365081634987">এছাড়াও, এই নেটওয়ার্ক ত্রুটি সমাধান করতে আপনি <ph name="GUEST_SIGNIN_LINK_START" />অতিথি হিসেবে ব্রাউজ করতে পারেন<ph name="GUEST_SIGNIN_LINK_END" />।</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381"><ph name="LOAD_STATE_PARAMETER" />এর জন্য প্রতীক্ষারত...</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" />টি অন্যান্য উপলব্ধ ডিভাইস৷</translation>
 <translation id="1495677929897281669">ট্যাবে ফিরে যান</translation>
+<translation id="1499271269825557605">আপনি যদি এক্সটেনশন শনাক্ত করতে না পারেন অথবা আপনার ব্রাউজার প্রত্যাশা অনুয়ায়ী কাজ না করলে, এখান থেকে এক্সটেনশন বন্ধ বা কাস্টমাইজ করতে পারেন।</translation>
 <translation id="1500297251995790841">অজানা ডিভাইস [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">একাধিক সাইন-ইন সেশনে এই মালিক অ্যাকাউন্টটি প্রথম সাইন-ইন অ্যাকাউন্ট হতে হবে৷</translation>
 <translation id="150411034776756821"><ph name="SITE" /> সরান</translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">এই পৃষ্ঠাটিকে আপনার ক্যামেরা অ্যাক্সেস করা থেকে অবরুদ্ধ করা হয়েছে৷</translation>
 <translation id="1507246803636407672">এবং পরিত্যাগ</translation>
 <translation id="1508491105858779599">ডিভাইসটি আনলক করতে আঙ্গুলের ছাপ নেওয়ার সেন্সরে আপনার আঙ্গুল রাখুন।</translation>
+<translation id="1508575541972276599">বর্তমান ভার্সন হল Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">USB এর মাধ্যমে যেকোনো <ph name="DEVICE_NAME_AND_VENDOR" /> অ্যাক্সেস করুন</translation>
 <translation id="150962533380566081">ভুল PUK।</translation>
 <translation id="1510030919967934016">এই পৃষ্ঠাটি আপনার লোকেশন নির্ণয় করা থেকে অবরুদ্ধ করা আছে৷</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">প্রয়োগ করুন</translation>
 <translation id="1603914832182249871">(ছদ্মবেশী)</translation>
 <translation id="1604432177629086300">প্রিন্ট করা যায়নি। প্রিন্টার চেক করে নিয়ে আবার চেষ্টা করুন।</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: পাসওয়ার্ড সিঙ্ক ফিচার কাজ করছে না</translation>
 <translation id="1607139524282324606">এন্ট্রি মুছে দিন</translation>
 <translation id="1608626060424371292">এই ব্যবহারকারীকে সরান</translation>
 <translation id="1608668830839595724">বেছে নেওয়া আইটেমগুলির সাথে আরও কাজ করতে হবে</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">হোস্ট করা অ্যাপ্লিকেশান ডেটা</translation>
 <translation id="1776712937009046120">ব্যবহারকারী যুক্ত করুন</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ডোমেন এই ডিভাইসটি ম্যানেজ করে।
+    আপনার <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> অ্যাকাউন্টে সাইন-ইন চালিয়ে যেতে "পরবর্তী" বোতামে ক্লিক করুন।</translation>
 <translation id="1779652936965200207">দয়া করে "<ph name="DEVICE_NAME" />"-এ পাসকীটি লিখুন:</translation>
 <translation id="1780152987505130652">গ্রুপ বন্ধ করুন</translation>
 <translation id="1781291988450150470">বর্তমান পিন</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">অ্যাকশন উপলভ্য নেই</translation>
 <translation id="2050339315714019657">প্রতিকৃতি</translation>
 <translation id="2053312383184521053">নিষ্ক্রিয় অবস্থার ডেটা</translation>
+<translation id="2055585478631012616">যেকোনও খোলা ট্যাব ছাড়াও এই সব সাইটগুলি থেকে আপনি সাইন-আউট হয়ে যাবেন</translation>
 <translation id="205560151218727633">Google অ্যাসিস্ট্যান্ট লোগো</translation>
 <translation id="2058456167109518507">ডিভাইস শনাক্ত করা হয়েছে</translation>
 <translation id="2059913712424898428">টাইম জোন</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">আগের অবস্থায় ফিরুন</translation>
 <translation id="2080070583977670716">আরও সেটিংস</translation>
 <translation id="2087822576218954668">প্রিন্ট করুন: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">ভিপিএন নেটওয়ার্ক</translation>
 <translation id="2089566709556890888">Google Chrome দিয়ে নিরাপদে ব্রাউজ করুন</translation>
 <translation id="2089795179672254991">ক্লিপবোর্ডে কপি করা টেক্সট এবং ছবি কোনও সাইট দেখতে চাইলে আপনাকে জিজ্ঞেস করা হবে (আমরা এটি সুপারিশ করছি)</translation>
 <translation id="2090165459409185032">আপনার অ্যাকাউন্ট তথ্য পুনরুদ্ধার করতে, google.com/accounts/recovery-তে যান</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">একটি সাইট অডিও ও ভিডিও ইনপুট অ্যাক্সেস করছে</translation>
 <translation id="2379281330731083556">সিস্টেম ডায়ালগ ব্যবহার করে প্রিন্ট করুন...<ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">পাঠানোর আগে জিজ্ঞাসা করুন (প্রস্তাবিত)</translation>
+<translation id="2382818385048255866">আপনার এক্সটেনশনগুলি চেক করুন</translation>
 <translation id="2384436799579181135">একটি ত্রুটি ঘটেছে৷ অনুগ্রহ করে আপনার প্রিন্টারটি পরীক্ষা করে আবার চেষ্টা করুন।</translation>
 <translation id="2387458720915042159">প্রক্সি কানেকশনের ধরণ</translation>
 <translation id="2391419135980381625">মানক হরফ</translation>
@@ -1035,6 +1042,7 @@
 <translation id="2462724976360937186">শংসাপত্র কর্তৃত্ব কী ID</translation>
 <translation id="2462752602710430187"><ph name="PRINTER_NAME" /> যোগ করা হয়েছে</translation>
 <translation id="2464089476039395325">HTTP প্রক্সী</translation>
+<translation id="2467267713099745100"><ph name="NETWORK_TYPE" /> নেটওয়ার্ক, বন্ধ আছে</translation>
 <translation id="2468205691404969808">আপনার পছন্দ মনে রাখার জন্য কুকি ব্যবহার করুন, সেই সমস্ত পৃষ্ঠায় যদি না যান, তাহলেও</translation>
 <translation id="2468402215065996499">তামাগচি</translation>
 <translation id="2469259292033957819">আপনার কাছে আগে থেকে কোনও প্রিন্টার সেভ করা নেই।</translation>
@@ -1289,6 +1297,7 @@
 <translation id="2800760947029405028">একটি ইমেজ আপলোড করুন</translation>
 <translation id="2803375539583399270">পিন নম্বর দিন</translation>
 <translation id="2804043232879091219">অন্য ব্রাউজারটি খোলা যায়নি</translation>
+<translation id="2804667941345577550">খোলা ট্যাবগুলি ছাড়াও এই সাইট থেকে সাইন-আউট হয়ে যাবেন</translation>
 <translation id="2804680522274557040">ক্যামেরা বন্ধ করা আছে</translation>
 <translation id="2805646850212350655">Microsoft Encrypting File System</translation>
 <translation id="2805756323405976993">অ্যাপ্স</translation>
@@ -1296,6 +1305,7 @@
 <translation id="2806891468525657116">শর্টকাটটি আগে থেকেই আছে</translation>
 <translation id="2807517655263062534">ডাউনলোড করা ফাইল এখানে দেখা যাবে</translation>
 <translation id="2809586584051668049">এবং আরও <ph name="NUMBER_ADDITIONAL_DISABLED" />টি</translation>
+<translation id="2810390687497823527">আপনি যদি এক্সটেনশন শনাক্ত করতে না পারেন অথবা আপনার ব্রাউজার প্রত্যাশা অনুয়ায়ী কাজ না করলে, এখান থেকে এক্সটেনশন বন্ধ বা কাস্টমাইজ করতে পারেন।</translation>
 <translation id="2812049959647166806">Thunderbolt কাজ করে না</translation>
 <translation id="2812944337881233323">সাইন আউট করে আবার ফিরে এসে দেখুন</translation>
 <translation id="2812989263793994277">কোনও ছবি দেখাবেন না</translation>
@@ -1335,6 +1345,7 @@
 <translation id="2861941300086904918">নেটিভ ক্লায়েন্ট সুরক্ষা পরিচালক</translation>
 <translation id="2864601841139725659">আপনার প্রোফাইল ফটো সেট করুন</translation>
 <translation id="2865919525181940183">স্ক্রিনে এখন যেসকল প্রোগ্রাম দেখা যাচ্ছে সেগুলির স্ক্রিনশট</translation>
+<translation id="286674810810214575">পাওয়ার সোর্স পরীক্ষা করা হচ্ছে...</translation>
 <translation id="2867768963760577682">পিন করা ট্যাব হিসেবে খুলুন</translation>
 <translation id="2868746137289129307">এই এক্সটেনশানটির পুরনো ভার্সনের এবং এন্টারপ্রাইজ নীতি বন্ধ করা রয়েছে৷ যখনই নতুন ভার্সন উপলভ্য থাকবে তখন এটি স্বয়ংক্রিয়ভারে চালু হবে৷</translation>
 <translation id="2870560284913253234">সাইট</translation>
@@ -1412,6 +1423,7 @@
 <translation id="2972581237482394796">&amp;পুনরায় করুন</translation>
 <translation id="2973324205039581528">সাইটটি মিউট করুন</translation>
 <translation id="2977480621796371840">গ্রুপ থেকে সরান</translation>
+<translation id="2979520980928493164">উন্নত এবং সুরক্ষিত Chrome</translation>
 <translation id="2979639724566107830">নতুন উইন্ডোতে খুলুন</translation>
 <translation id="2981113813906970160">বড় মাউস কার্সার দেখান</translation>
 <translation id="2982970937345031">নাম ছাড়া প্রতিবেদন করুন</translation>
@@ -1518,6 +1530,7 @@
 <translation id="3143515551205905069">সিঙ্ক বাতিল করুন</translation>
 <translation id="3143754809889689516">শুরু থেকে চালান</translation>
 <translation id="3144647712221361880">এই হিসেবে লিঙ্ক খুলুন</translation>
+<translation id="3145187901750964977">ভার্চুয়াল মেশিন ইনস্টল করা যাচ্ছে না। প্রতিষ্ঠানের ডিভাইস অ্যাডমিনিস্ট্রেটরের সাথে যোগাযোগ করুন বা আবার চেষ্টা করুন। সমস্যার কোড: <ph name="ERROR_CODE" /></translation>
 <translation id="3149477159749171726">ভার্সন:
     <ph name="LINUX_VERSION" />
 
@@ -1556,6 +1569,7 @@
 <translation id="3192947282887913208">অডিও ফাইল</translation>
 <translation id="3194737229810486521"><ph name="URL" /> স্থায়ীভাবে আপনার ডিভাইসে ডেটা স্টোর করতে চায়</translation>
 <translation id="3199127022143353223">সার্ভারসমূহ</translation>
+<translation id="3201306578844503970">নেটওয়ার্কের সমস্যার কারণে ভার্চুয়াল মেশিন ইনস্টল করা যাচ্ছে না। প্রতিষ্ঠানের ডিভাইস অ্যাডমিনিস্ট্রেটরের সাথে যোগাযোগ করুন বা আবার চেষ্টা করুন। সমস্যার কোড: <ph name="ERROR_CODE" /></translation>
 <translation id="3201422919974259695">উপলভ্য ইউএসবি ডিভাইসগুলি এখানে দেখা যাবে।</translation>
 <translation id="3202131003361292969">পাথ</translation>
 <translation id="3202173864863109533">এই ট্যাবের অডিও মিউট করা হচ্ছে৷</translation>
@@ -1892,7 +1906,6 @@
 <translation id="3678156199662914018">এক্সটেনশন: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">আপনার প্রতিক্রিয়ার জন্য ধন্যবাদ। আপনি এখন অফলাইনে আছেন, এবং আপনার প্রতিবেদনটি পরে পাঠানো হবে।</translation>
 <translation id="3682824389861648626">মুভমেন্ট থ্রেশহোল্ড</translation>
-<translation id="3683023058278427253">আমরা আপনার ডোমেনের জন্য একাধিক লাইসেন্সের প্রকার শনাক্ত করেছি। চালিয়ে যেতে একটি বেছে নিন।</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> এর থেকে স্ক্রিন শেয়ার করার অনুরোধ</translation>
 <translation id="368789413795732264">ফাইলটি লিখতে চেষ্টা করার সময় একটি ত্রুটি হয়েছিল: <ph name="ERROR_TEXT" />৷</translation>
 <translation id="3688507211863392146">আপনি অ্যাপটিতে খোলেন এমন ফাইল এবং ফোল্ডারে লিখুন</translation>
@@ -2066,6 +2079,7 @@
 <translation id="389589731200570180">অতিথিদের সাথে শেয়ার করুন</translation>
 <translation id="389901847090970821">কীবোর্ড বেছে নিন</translation>
 <translation id="3899879303189199559">এক বছরের বেশি  অফ লাইন</translation>
+<translation id="3900789207771372462">কিছু এক্সটেনশন আপনার ব্রাউজিং অ্যাক্টিভিটি দেখতে পাবে - তার মধ্যে ব্যক্তিগত তথ্যও আছে।</translation>
 <translation id="3900966090527141178">পাসওয়ার্ড এক্সপোর্ট করুন</translation>
 <translation id="3901991538546252627"><ph name="NAME" />-এ সংযোগ করা হচ্ছে</translation>
 <translation id="3905761538810670789">অ্যাপ্লিকেশান মেরামত করুন</translation>
@@ -2155,7 +2169,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" এই ব্রাউজারটি ডিবাগ করছে</translation>
 <translation id="4014432863917027322">"<ph name="EXTENSION_NAME" />" মেরামত করবেন?</translation>
 <translation id="4015163439792426608">ব্রাউজারে এক্সটেনশন ব্যবহার করছেন? একটি জায়গা থেকে সহজেই <ph name="BEGIN_LINK" />আপনার এক্সটেনশন ম্যানেজ করুন<ph name="END_LINK" />।</translation>
-<translation id="4020106588733303597">সিস্টেম আপনার উপলভ্য লাইসেন্সগুলি লোড করতে পারেনি।</translation>
 <translation id="4020327272915390518">বিকল্পগুলির মেনু</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;অভিধানে যুক্ত করুন</translation>
@@ -2193,6 +2206,7 @@
 <translation id="407520071244661467">স্কেল</translation>
 <translation id="4075639477629295004"><ph name="FILE_NAME" /> কে কাস্ট করা যায়নি।</translation>
 <translation id="4077917118009885966">এই সাইটে বিজ্ঞাপন ব্লক করা হয়েছে</translation>
+<translation id="4077919383365622693"><ph name="SITE" /> ওয়েবসাইটের মাধ্যমে স্টোর করা সব ডেটা এবং কুকি মুছে ফেলা হবে।</translation>
 <translation id="4079140982534148664">উন্নত বানান পরীক্ষা ব্যবহার করুন</translation>
 <translation id="4081242589061676262">ফাইলটি কাস্ট করতে অক্ষম।</translation>
 <translation id="4084682180776658562">বুকমার্ক</translation>
@@ -2267,6 +2281,7 @@
 <translation id="4181841719683918333">ভাষাসমূহ</translation>
 <translation id="4184885522552335684">কোনো প্রদর্শন সরাতে টেনে আনুন</translation>
 <translation id="4194570336751258953">ট্যাপ-টু-ক্লিক চালু করুন</translation>
+<translation id="4194595472342532425">কনফিগারেশনে সমস্যা থাকায় Plugin VM সেট-আপ করা যাচ্ছে না। আপনার প্রতিষ্ঠানের ডিভাইস অ্যাডমিনিস্ট্রেটরের সাথে যোগাযোগ করুন। সমস্যার কোড: <ph name="ERROR_CODE" /></translation>
 <translation id="4195643157523330669">নতুন ট্যাবে খুলুন</translation>
 <translation id="4195814663415092787">আপনি যেখানে ছেডেছেন সেখান থেকে চালিয়ে যান</translation>
 <translation id="4198146608511578238">আপনার Google সহায়কের সাথে কথা বলতে লঞ্চার আইকনটি টিপে ধরে রাখুন।</translation>
@@ -2490,6 +2505,7 @@
 <translation id="4549791035683739768">আপনার 'নিরাপত্তা কী'-তে কোনও ফিঙ্গারপ্রিন্ট সেভ করা নেই</translation>
 <translation id="4551763574344810652">আগের অবস্থায় ফিরে যেতে <ph name="MODIFIER_KEY_DESCRIPTION" /> টিপুন</translation>
 <translation id="4552089082226364758">ফ্ল্যাশ</translation>
+<translation id="4552759165874948005"><ph name="NETWORK_TYPE" /> নেটওয়ার্ক, সিগন্যাল:<ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">বিদ্যমানটির তুলনায় বাহ্যিক এক্সটেনশনটি একই বা আরও পুরনো ভার্সনের৷</translation>
 <translation id="4555769855065597957">ছায়া</translation>
 <translation id="4555863373929230635">আপনার Google অ্যাকাউন্টে পাসওয়ার্ড সেভ করতে, সাইন-ইন করে সিঙ্ক চালু করুন।</translation>
@@ -2567,6 +2583,7 @@
 <translation id="4665446389743427678"><ph name="SITE" /> সাইটে স্টোর করা সমস্ত ডেটা মুছে ফেলা হবে।</translation>
 <translation id="4668721319092543482"><ph name="PLUGIN_NAME" /> সক্ষম করার জন্য ক্লিক করুন</translation>
 <translation id="4672657274720418656">পৃষ্ঠা পাতন করুন</translation>
+<translation id="46733273239502219">ইনস্টল করা অ্যাপে অফলাইন ডেটাও মুছে ফেলা হবে</translation>
 <translation id="4673442866648850031">স্টাইলাস সরানো হলে স্টাইলাস টুল খুলুন</translation>
 <translation id="4677585247300749148"><ph name="URL" /> অ্যাক্সেসযোগ্যতা ইভেন্টে প্রতিক্রিয়া দিয়ে চায়</translation>
 <translation id="4677772697204437347">GPU মেমোরি</translation>
@@ -2658,7 +2675,6 @@
 <translation id="4823484602432206655">ব্যবহারকারী এবং ডিভাইস সেটিংস পড়ুন ও পরিবর্তন করুন</translation>
 <translation id="4824958205181053313">সিঙ্ক বাতিল করতে চান?</translation>
 <translation id="4827675678516992122">কানেক্ট করা যায়নি</translation>
-<translation id="4828937774870308359">অস্ট্রেলীয়</translation>
 <translation id="4829768588131278040">পিন সেট-আপ করুন</translation>
 <translation id="4830502475412647084">OS আপডেট ইনস্টল করা হচ্ছে</translation>
 <translation id="4830573902900904548">আপনার <ph name="DEVICE_TYPE" /> <ph name="NETWORK_NAME" /> ব্যবহার করে ইন্টারনেটে সংযুক্ত হতে অক্ষম। দয়া করে অন্য নেটওয়ার্ক বেছে নিন। <ph name="LEARN_MORE_LINK_START" />আরও জানুন<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2699,6 +2715,7 @@
 <translation id="4876273079589074638">এই ক্র্যাশ বা সমস্যাটির বিষয়ে সার্চ করে সেটি ঠিক করতে আমাদের ইঞ্জিনিয়ারদের সাহায্য করুন। কোনও বিবরণ যত ছোটই হোক না কেন সেটি গুরুত্বপূর্ণ!</translation>
 <translation id="4876895919560854374">স্ক্রীণ লক ও আনলক করুন</translation>
 <translation id="4877276003880815204">এলিমেন্টগুলি দেখুন</translation>
+<translation id="4878653975845355462">আপনার অ্যাডমিনিস্ট্রেটর কাস্টম ব্যাকগ্রাউন্ড বন্ধ করে দিয়েছেন</translation>
 <translation id="4879491255372875719">অটোমেটিক (ডিফল্ট)</translation>
 <translation id="4880328057631981605">অ্যাক্সেস পয়েন্ট নাম</translation>
 <translation id="4880827082731008257">সার্চের ইতিহাস</translation>
@@ -2754,10 +2771,10 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" সিরিয়াল পোর্টে কানেক্ট করতে চাইছে</translation>
 <translation id="4944310289250773232"><ph name="SAML_DOMAIN" />-এর মাধ্যমে যাচাইকরণ পরিষেবা হোস্ট করা হয়েছে</translation>
 <translation id="495170559598752135">ক্রিয়াসমূহ</translation>
+<translation id="4952981627953231344">Plugin VM এই ডিভাইসে ব্যবহার করা যাবে না। আপনার প্রতিষ্ঠানের ডিভাইস অ্যাডমিনিস্ট্রেটরের সাথে যোগাযোগ করুন।</translation>
 <translation id="4953689047182316270">ব্যবহারযোগ্যতা সংক্রান্ত ইভেন্টে প্রতিবার্তা দিতে চায়</translation>
 <translation id="4953808748584563296">ডিফল্ট কমলা রঙের অবতার</translation>
 <translation id="4955710816792587366">আপনার পিন বেছে নিন</translation>
-<translation id="4955814292505481804">বার্ষিক</translation>
 <translation id="4959262764292427323">পাসওয়ার্ডগুলি আপনার Google অ্যাকাউন্টে সেভ করা হয়েছে যাতে আপনি আপনার যেকোনও ডিভাইসে সেগুলি ব্যবহার করতে পারেন</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">এই অ্যাপটি আপনার অ্যাডমিনিস্ট্রেটর ইনস্টল করে দিয়েছেন।</translation>
@@ -3240,7 +3257,6 @@
 <translation id="5659593005791499971">ইমেল আইডি</translation>
 <translation id="5659833766619490117">এই পৃষ্ঠাটির অনুবাদ করা যায়নি</translation>
 <translation id="5660204307954428567"><ph name="DEVICE_NAME" />-এর সাথে পেয়ার করুন</translation>
-<translation id="5662477687021125631">চিরস্থায়ী</translation>
 <translation id="5667546120811588575">Google Play সেট-আপ করা হচ্ছে...</translation>
 <translation id="5669267381087807207">সক্রিয় করা হচ্ছে</translation>
 <translation id="5669691691057771421">নতুন পিন লিখুন</translation>
@@ -3256,6 +3272,7 @@
 <translation id="5687326903064479980">সময় অঞ্চল</translation>
 <translation id="5689516760719285838">লোকেশন</translation>
 <translation id="56907980372820799">ডেটা লিঙ্ক করুন</translation>
+<translation id="5691180005790455277"><ph name="SITE_GROUP_NAME" />-এর মাধ্যমে স্টোর করা সব ডেটা এবং কুকি ও এই ডোমেনের অধীনে যেকোনও সাইটের ডেটা মুছে ফেলা হবে।</translation>
 <translation id="5691511426247308406">পরিবারিক</translation>
 <translation id="5692183275898619210">প্রিন্ট করা হয়ে গেছে</translation>
 <translation id="5696143504434933566">"<ph name="EXTENSION_NAME" />" অপব্যবহারের বিষয়ে অভিযোগ করুন</translation>
@@ -3342,7 +3359,6 @@
 <translation id="5815645614496570556">X.400 ঠিকানা</translation>
 <translation id="5816434091619127343">অনুরোধ করা প্রিন্টার পরিবর্তন করলে তা প্রিন্টার ব্যবহারের সুবিধা অব্যবহারযোগ্য করে তুলবে।</translation>
 <translation id="5817918615728894473">যুক্ত করুন</translation>
-<translation id="5819762621475381970">- আপনার রুমের লেআউট</translation>
 <translation id="5821565227679781414">শর্টকাট তৈরি করুন</translation>
 <translation id="5825412242012995131">চালু আছে (সাজেস্ট করা)</translation>
 <translation id="5826395379250998812"><ph name="DEVICE_TYPE" />-কে আপনার ফোনের সাথে কানেক্ট করুন। <ph name="LINK_BEGIN" />আরও জানুন<ph name="LINK_END" /></translation>
@@ -3478,6 +3494,7 @@
 <translation id="6007240208646052708">আপনার ভাষায় ভয়েস সার্চ করা যাবে না।</translation>
 <translation id="6009781704028455063">বিল্ট-ইন সেন্সর</translation>
 <translation id="6010869025736512584">ভিডিও ইনপুট অ্যাক্সেস করা হচ্ছে</translation>
+<translation id="6011074160056912900">ইথারনেট নেটওয়ার্ক</translation>
 <translation id="6011193465932186973">আঙ্গুলের ছাপ</translation>
 <translation id="6011449291337289699">সাইট ডেটা সাফ করুন</translation>
 <translation id="6015266928248016057">ভুল PUK লেখা হয়েছে। আপনি আর <ph name="RETRIES" /> বার চেষ্টা করতে পারবেন।</translation>
@@ -3514,6 +3531,7 @@
 <translation id="6053401458108962351">ব্রাউজিং ডেটা সাফ করুন...</translation>
 <translation id="6055171183283175969">আপনার লেখা পাসওয়ার্ডটি ভুল৷</translation>
 <translation id="6055392876709372977">RSA এনক্রিপশানের সাথে PKCS #1 SHA-256</translation>
+<translation id="6055907707645252013"><ph name="NETWORK_TYPE" /> নেটওয়ার্ক, কানেক্ট করা নেই</translation>
 <translation id="6056710589053485679">সাধারণ রিলোড</translation>
 <translation id="6057381398996433816">মোশন এবং লাইট সেন্সর ব্যবহার করা থেকে এই সাইটটি ব্লক করা হয়েছে।</translation>
 <translation id="6058567592298841668">ভার্চুয়াল মেশিন প্লাগ-ইন করুন: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3577,6 +3595,7 @@
 <translation id="6136114942382973861">ডাউনলোড বার বন্ধ করুন</translation>
 <translation id="6137767437444130246">ব্যবহারকারীর সার্টিফিকেট</translation>
 <translation id="6138680304137685902">SHA-384 সহ X9.62 ECDSA স্বাক্ষর</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, কোনও নেটওয়ার্ক নেই</translation>
 <translation id="6141988275892716286">ডাউনলোড নিশ্চিত করুন</translation>
 <translation id="6143186082490678276">সাহায্য পান</translation>
 <translation id="6144938890088808325">আমাদের Chromebooks উন্নত করতে সাহায্য করুন</translation>
@@ -3884,6 +3903,7 @@
 <translation id="6602956230557165253">নেভিগেট করার জন্য বাঁ ও ডান তীরগুলি ব্যবহার করুন৷</translation>
 <translation id="6605847144724004692">এখনও কোনও ব্যবহারকারী রেট করেনি</translation>
 <translation id="6607831829715835317">আরও সরঞ্জা&amp;ম</translation>
+<translation id="6611972847767394631">এখানে আপনার ট্যাবগুলি দেখুন</translation>
 <translation id="6612358246767739896">সুরক্ষিত কন্টেন্ট</translation>
 <translation id="6615455863669487791">আমাকে দেখান</translation>
 <translation id="6618097958368085618">তবুও রাখতে চাই</translation>
@@ -3952,6 +3972,7 @@
 <translation id="6709133671862442373">সংবাদ</translation>
 <translation id="6709357832553498500"><ph name="EXTENSIONNAME" /> ব্যবহার করে সংযোগ করুন</translation>
 <translation id="6710213216561001401">পূর্ববর্তী</translation>
+<translation id="6715803357256707211">আপনার Linux অ্যাপ ইনস্টল করার সময় কোনও একটি সমস্যা হয়েছে। বিস্তারিত জানতে বিজ্ঞপ্তিতে ক্লিক করুন।</translation>
 <translation id="6721678857435001674">আপনার নিরাপত্তা কী-এর কোম্পানির নাম এবং মডেলটি দেখুন</translation>
 <translation id="6721972322305477112">&amp;File</translation>
 <translation id="672213144943476270">দয়া করে অতিথি হিসাবে ব্রাউজ করার আগে আপনার প্রোফাইলটি আনলক করুন।</translation>
@@ -3976,7 +3997,6 @@
 <translation id="674632704103926902">আলতো চেপে টেনে আনা সক্ষম করুন</translation>
 <translation id="6748217015615267851">রেন্ডার করছে: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">আপনি এগিয়ে যেতে পারেন, কিন্তু শুধুমাত্র আপনার সিঙ্ক হওয়া ডেটা এবং সেটিংস পুনরুদ্ধার করা হবে৷ সমস্ত স্থানীয় ডেটা হারিয়ে যাবে৷</translation>
-<translation id="6748775883310276718">একক অ্যাপ কিয়স্ক</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" />(ছদ্মবেশী)</translation>
 <translation id="6757101664402245801">URL কপি করা হয়েছে</translation>
 <translation id="6758056191028427665">আমাদের পরিষেবা কেমন লাগছে তা জানান।</translation>
@@ -3986,6 +4006,7 @@
 <translation id="6769712124046837540">প্রিন্টার যোগ করা হচ্ছে...</translation>
 <translation id="6770664076092644100">NFC এর মাধ্যমে যাচাই করুন</translation>
 <translation id="6771503742377376720">একটি শংসাপত্রের কর্তৃপক্ষ</translation>
+<translation id="6772339735733515807">আপনার এক্সটেনশন ম্যানেজ করুন</translation>
 <translation id="6775163072363532304">উপলভ্য ডিভাইসগুলি এখানে দেখা যাবে।</translation>
 <translation id="6777817260680419853">রিডাইরেক্ট ব্লক করা হয়েছে</translation>
 <translation id="6778737459546443941">আপনার পিতামাতা এখনও এটি অনুমোদন করেন নি</translation>
@@ -4124,6 +4145,7 @@
 <translation id="6972180789171089114">অডিও/ভিডিও</translation>
 <translation id="6972553992270299730">এই ফোল্ডারে সিস্টেম ফাইল আছে তাই <ph name="ORIGIN" /> ফাইলগুলি খুলতে পারছে না</translation>
 <translation id="6972754398087986839">শুরু করুন</translation>
+<translation id="6973611239564315524">Debian 10 (Buster) ভার্সনে আপগ্রেড করার সুবিধা পাওয়া যাচ্ছে</translation>
 <translation id="6974609594866392343">অফলাইন ডেমো মোড</translation>
 <translation id="6977381486153291903">ফার্মওয়ের পুনর্বিবেচনাগুলি</translation>
 <translation id="6978121630131642226">সার্চ ইঞ্জিনসমূহ</translation>
@@ -4583,6 +4605,7 @@
 <translation id="7644543211198159466">রঙ ও থিম</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (মালিক)</translation>
 <translation id="7645681574855902035">Linux ব্যাক-আপ বাতিল করা হচ্ছে</translation>
+<translation id="7646772052135772216">পাসওয়ার্ড সিঙ্ক ফিচার কাজ করছে না</translation>
 <translation id="7647403192093989392">সাম্প্রতিক কোনও অ্যাক্টিভিটি নেই</translation>
 <translation id="7648992873808071793">এই ডিভাইসে ফাইলগুলি জমা করুন</translation>
 <translation id="7649070708921625228">সহায়তা</translation>
@@ -4770,6 +4793,7 @@
 <translation id="7877451762676714207">অজানা সার্ভার ত্রুটি৷ দয়া করে আবার চেষ্টা করুন, অথবা সার্ভার প্রশাসকের সাথে যোগাযোগ করুন৷</translation>
 <translation id="7877680364634660272">ভ্রমণ</translation>
 <translation id="7878562273885520351">আপনার পাসওয়ার্ড অন্য কেউ পরিবর্তন করার চেষ্টা করেছে</translation>
+<translation id="7879631849810108578">শর্টকাট সেট: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">আবার চালু করার পরে স্থানীয় ডেটা মুছে যাবে</translation>
 <translation id="7881483672146086348">আ্যাকাউন্ট দেখুন</translation>
 <translation id="7882358943899516840">পরিষেবা প্রদানকারীর ধরন</translation>
@@ -4856,6 +4880,7 @@
 <translation id="7987814697832569482">সবসময় এই ভিপিএনের মাধ্যমে কানেক্ট করুন</translation>
 <translation id="7988355189918024273">ব্যবহারযোগ্যতার বৈশিষ্ট্যগুলি চালু করুন</translation>
 <translation id="7991296728590311172">সুইচ অ্যাক্সেস সেটিংস</translation>
+<translation id="7994350303002908848">Plugin VM ইনস্টল করা যাচ্ছে না। প্রতিষ্ঠানের ডিভাইস অ্যাডমিনিস্ট্রেটরের সাথে যোগাযোগ করুন বা আবার চেষ্টা করুন। সমস্যার কোড: <ph name="ERROR_CODE" /></translation>
 <translation id="7994702968232966508">EAP পদ্ধতি</translation>
 <translation id="7997826902155442747">প্রক্রিয়ার অগ্রাধিকার</translation>
 <translation id="7999229196265990314">নিম্নোক্ত ফাইলগুলি তৈরি হয়েছে:
@@ -4948,7 +4973,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{কোনও থার্ড-পার্টি কুকি নেই}=1{১টি থার্ড-পার্টি কুকি ব্লক করা হয়েছে}one{#টি থার্ড-পার্টি কুকি ব্লক করা হয়েছে}other{#টি থার্ড-পার্টি কুকি ব্লক করা হয়েছে}}</translation>
 <translation id="810875025413331850">কাছাকাছি কোনও ডিভাইস পাওয়া যায়নি।</translation>
 <translation id="8111155949205007504">আপনার iPhone এর সাথে এই পাসওয়ার্ড শেয়ার করুন</translation>
-<translation id="8113043281354018522">লাইসেন্সের প্রকার বেছে নিন</translation>
 <translation id="8114875720387900039">হরিজন্টাল স্প্লিট করুন</translation>
 <translation id="8116972784401310538">&amp;বুকমার্ক পরিচালক</translation>
 <translation id="8117620576188476503">স্টেটাস ট্রে থেকে সংযোগ, আপডেট এবং সেটিংস পরিচালনা করুন। কীবোর্ডের সাহায্যে এখানে পেতে Alt + Shift + S বোতামটি টিপুন।</translation>
@@ -5104,6 +5128,7 @@
 <translation id="8327039559959785305">Linux ফাইল মাউন্ট করার সময় সমস্যা। আবার চেষ্টা করুন।</translation>
 <translation id="8335587457941836791">তাক থেকে আনপিন করুন</translation>
 <translation id="8336407002559723354"><ph name="MONTH_AND_YEAR" />-এর পর আপডেট আসা বন্ধ হয়ে যাবে</translation>
+<translation id="8336721153892716270"><ph name="LANGUAGE" /> ভাষাতে সিস্টেম টেক্সট দেখাতে ডিভাইস রিস্টার্ট করুন</translation>
 <translation id="8336739000755212683">ডিভাইস অ্যাকাউন্টের ছবিটি পরিবর্তন করুন</translation>
 <translation id="8337047789441383384">আপনি এই নিরাপত্তা কী আগেই রেজিস্টার করেছেন। আপনাকে আর এটি রেজিস্টার করতে হবে না।</translation>
 <translation id="8338952601723052325">ডেভেলপার ওয়েবসাইট</translation>
@@ -5147,6 +5172,7 @@
 <translation id="8400146488506985033">ব্যক্তিগণকে পরিচালনা করুন</translation>
 <translation id="8401432541486058167">আপনার স্মার্ট কার্ডের পিন নম্বরটি দিন।</translation>
 <translation id="8405046151008197676">লেটেস্ট আপডেটের হাইলাইটগুলি দেখুন</translation>
+<translation id="8408068190360279472"><ph name="NETWORK_TYPE" /> নেটওয়ার্ক, কানেক্ট করা হচ্ছে</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">প্রথমে জিজ্ঞাসা করুন (প্রস্তাবিত)</translation>
 <translation id="8418445294933751433">ট্যাব রূপে &amp;দেখান</translation>
@@ -5436,6 +5462,7 @@
 <translation id="8807632654848257479">স্থায়ী</translation>
 <translation id="8808478386290700967">ওয়েব স্টোর</translation>
 <translation id="8808686172382650546">বিড়াল</translation>
+<translation id="8808744862003883508">Chrome-এ ইনস্টল করা সব এক্সটেনশন আপনি এই পৃষ্ঠাতে দেখতে পাবেন।</translation>
 <translation id="8809147117840417135">হালকা নীলাভ সবুজ</translation>
 <translation id="8813698869395535039"><ph name="USERNAME" />এ সাইন-ইন করা যাচ্ছে না</translation>
 <translation id="8813811964357448561">কাগজের পত্রক</translation>
@@ -5663,7 +5690,6 @@
 <translation id="9121814364785106365">পিন করা ট্যাব হিসেবে খুলুন</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> পজ করা আছে</translation>
 <translation id="9124003689441359348">সংরক্ষিত পাসওয়ার্ডগুলি এখানে দেখা যাবে</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" />টি বাকি)</translation>
 <translation id="9128317794749765148">সেট-আপ করা যায়নি</translation>
 <translation id="9128870381267983090">নেটওয়ার্কে সংযোগ করুন</translation>
 <translation id="9130015405878219958">ভুল মোড দেওয়া হয়েছে৷</translation>
@@ -5702,6 +5728,7 @@
 <translation id="9188732951356337132">ব্যবহার এবং ডায়াগনস্টিক ডেটা পাঠান। এখন এই ডিভাইসটি নিজে থেকেই Google-এ ডায়াগনিস্টিক, ডিভাইস এবং অ্যাপ ব্যবহারের ডেটা পাঠাচ্ছে। এটি আপনার সন্তানকে শনাক্ত করতে ব্যবহার করা হবে না এবং সিস্টেম ও অ্যাপের স্থিতিশীলতা এবং অন্যান্য উন্নতিতে সাহায্য করবে। ব্যবহারকারীদের কিছু সম্মিলিত ডেটা Google অ্যাপ এবং Android ডেভেলপারদের মতো পার্টনারদের কাজে লাগবে। অতিরিক্ত ওয়েব ও অ্যাপ অ্যাক্টিভিটি সেটিংটি আপনার সন্তানের ডিভাইসের জন্য চালু করা থাকলে, এই ডেটা তাদের Google অ্যাকাউন্টে সেভ করা হতে পারে। <ph name="BEGIN_LINK2" />আরও জানুন<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPসেকে + পূর্বে-শেয়ার করা কী</translation>
 <translation id="920045321358709304"><ph name="SEARCH_ENGINE" /> এ খুঁজুন</translation>
+<translation id="9201023452444595544">যেকোনও অফলাইন ডেটা মুছে ফেলা যাবে</translation>
 <translation id="9201220332032049474">স্ক্রিন লক-এর বিকল্পগুলি</translation>
 <translation id="9203398526606335860">&amp;প্রোফাইলিং সক্ষমিত</translation>
 <translation id="9203904171912129171">একটি ডিভাইস বেছে নিন</translation>
@@ -5714,6 +5741,7 @@
 <translation id="9220525904950070496">অ্যাকাউন্ট সরান</translation>
 <translation id="9220820413868316583">তুলে নিন এবং আবার চেষ্টা করুন।</translation>
 <translation id="923467487918828349">সকল দেখান</translation>
+<translation id="929117907539171075">ইনস্টল করা অ্যাপের অফলাইন ডেটা মুছে ফেলা হবে</translation>
 <translation id="930268624053534560">বিস্তারিত টাইমস্ট্যাম্প</translation>
 <translation id="932327136139879170">হোম</translation>
 <translation id="932508678520956232">প্রিন্ট সূচনা করা যায়নি</translation>
@@ -5739,6 +5767,7 @@
 <translation id="960719561871045870">অপারেটরের কোড</translation>
 <translation id="960987915827980018">প্রায় 1 ঘণ্টা বাকি</translation>
 <translation id="962802172452141067">বুকমার্ক ফোল্ডার ট্রি</translation>
+<translation id="964057662886721376">কিছু এক্সটেনশন ব্রাউজ করার সময় সমস্যা তৈরি করতে পারে - বিশেষ করে যে এক্সটেনশনটি আপনি ইনস্টল করতে চাননি।</translation>
 <translation id="964286338916298286">আপনার আইটি অ্যাডমিনিস্ট্রেটর আপনার ডিভাইসের জন্য Chrome গুডিজগুলিকে বন্ধ করেছেন৷</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{অ্যাপ্লিকেশন}one{অ্যাপ্লিকেশনগুলি}other{অ্যাপ্লিকেশনগুলি}}</translation>
 <translation id="965211523698323809"><ph name="DEVICE_TYPE" /> থেকে টেক্সট মেসেজ পাঠান ও পান। <ph name="LINK_BEGIN" />আরও জানুন<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_bs.xtb b/chrome/app/resources/generated_resources_bs.xtb
index b79bb9f..fa30f5e3 100644
--- a/chrome/app/resources/generated_resources_bs.xtb
+++ b/chrome/app/resources/generated_resources_bs.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Prilagođeno</translation>
 <translation id="1178581264944972037">Pauziraj</translation>
 <translation id="117916940443676133">Vaš sigurnosni ključ nije zaštićen PIN-om. Za upravljanje podacima za prijavu, najprije kreirajte PIN.</translation>
-<translation id="118069123878619799">– vaše fizičke osobine, kao što je visina</translation>
 <translation id="1181037720776840403">Ukloni</translation>
 <translation id="1183237619868651138">Nije moguće instalirati fajl <ph name="EXTERNAL_CRX_FILE" /> u lokalnu keš memoriju.</translation>
 <translation id="1185924365081634987">Da popravite grešku mreže, također možete pokušati <ph name="GUEST_SIGNIN_LINK_START" />pregledati kao gost<ph name="GUEST_SIGNIN_LINK_END" />.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">Čeka se <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033">Broj drugih dostupnih uređaja: <ph name="NUM_PRINTERS" /></translation>
 <translation id="1495677929897281669">Natrag na karticu</translation>
+<translation id="1499271269825557605">Ako ne prepoznajete ekstenziju ili ako vaš preglednik ne funkcionira kako bi trebalo, ovdje možete isključiti ili prilagoditi ekstenzije.</translation>
 <translation id="1500297251995790841">Nepoznat uređaj [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Ovaj vlasnik računa mora biti prvi prijavljeni račun u sesiji višestruke prijave.</translation>
 <translation id="150411034776756821">Ukloni <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Ovoj stranici je blokiran pristup vašoj kameri.</translation>
 <translation id="1507246803636407672">&amp;Odbaci</translation>
 <translation id="1508491105858779599">Postavite prst na senzor za otisak prsta da otključate uređaj.</translation>
+<translation id="1508575541972276599">Trenutna verzija je Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">Pristupiti bilo kojem uređaju <ph name="DEVICE_NAME_AND_VENDOR" /> putem USB-a</translation>
 <translation id="150962533380566081">Nevažeći PUK.</translation>
 <translation id="1510030919967934016">Ovoj web lokaciji je blokirano praćenje vaše lokacije.</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">Primijeni</translation>
 <translation id="1603914832182249871">(Anonimno)</translation>
 <translation id="1604432177629086300">Štampanje nije uspjelo. Provjerite štampač i pokušajte ponovo.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: Sinhronizacija lozinki ne funkcionira</translation>
 <translation id="1607139524282324606">Brisanje unosa</translation>
 <translation id="1608626060424371292">Ukloni tog korisnika</translation>
 <translation id="1608668830839595724">Više radnji za odabrane stavke</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">Podaci hostirane aplikacije</translation>
 <translation id="1776712937009046120">Dodaj korisnika</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Ovim uređajem upravlja <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    Kliknite "Naprijed" da nastavite s prijavom na <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> račun.</translation>
 <translation id="1779652936965200207">Unesite ključ za pristup na uređaju "<ph name="DEVICE_NAME" />":</translation>
 <translation id="1780152987505130652">Zatvori grupu</translation>
 <translation id="1781291988450150470">Trenutni PIN</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">Radnja nije dostupna</translation>
 <translation id="2050339315714019657">Uspravno</translation>
 <translation id="2053312383184521053">Podaci o stanju neaktivnosti</translation>
+<translation id="2055585478631012616">Odjavit ćete se s ovih web lokacija, uključujući otvorene kartice</translation>
 <translation id="205560151218727633">Logotip Google asistenta</translation>
 <translation id="2058456167109518507">Otkriven je uređaj</translation>
 <translation id="2059913712424898428">Vremenska zona</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">Vrati</translation>
 <translation id="2080070583977670716">Više postavki</translation>
 <translation id="2087822576218954668">Štampaj: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN mreža</translation>
 <translation id="2089566709556890888">Pregledajte internet sigurno koristeći Google Chrome</translation>
 <translation id="2089795179672254991">PItaj kada web lokacija želi vidjeti tekst i slike koji su kopirani u međumemoriju (preporučeno)</translation>
 <translation id="2090165459409185032">Za oporavak podataka o računu otvorite: google.com/accounts/recovery</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">Web-lokacija pristupa audio i videoulazu</translation>
 <translation id="2379281330731083556">Ispis pomoću dijaloškog okvira sustava... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Pitaj prije slanja (preporučeno)</translation>
+<translation id="2382818385048255866">Provjerite svoje ekstenzije</translation>
 <translation id="2384436799579181135">Došlo je do greške. Provjerite svoj štampač i pokušajte ponovo.</translation>
 <translation id="2387458720915042159">Vrsta veze s proksi serverom</translation>
 <translation id="2391419135980381625">Standardni font</translation>
@@ -1036,6 +1043,7 @@
 <translation id="2462724976360937186">ID ključa tijela za izdavanje potvrda</translation>
 <translation id="2462752602710430187">Dodano <ph name="PRINTER_NAME" /></translation>
 <translation id="2464089476039395325">HTTP proksi server</translation>
+<translation id="2467267713099745100">Mreža <ph name="NETWORK_TYPE" />, isključena</translation>
 <translation id="2468205691404969808">Kolačići se koriste kako bi se zapamtile vaše postavke čak iako ne posjećujete ove stranice</translation>
 <translation id="2468402215065996499">Tamagoči</translation>
 <translation id="2469259292033957819">Nemate sačuvanih štampača.</translation>
@@ -1290,6 +1298,7 @@
 <translation id="2800760947029405028">Otpremite sliku</translation>
 <translation id="2803375539583399270">Unesite PIN</translation>
 <translation id="2804043232879091219">Otvaranje alternativnog preglednika nije uspjelo</translation>
+<translation id="2804667941345577550">Odjavit ćete se s ove web lokacije, uključujući otvorene kartice</translation>
 <translation id="2804680522274557040">Kamera je isključena</translation>
 <translation id="2805646850212350655">Microsoft sistem za šifriranje fajlova</translation>
 <translation id="2805756323405976993">Aplikacije</translation>
@@ -1297,6 +1306,7 @@
 <translation id="2806891468525657116">Prečica već postoji</translation>
 <translation id="2807517655263062534">Fajlovi koje preuzmete će se pojaviti ovdje</translation>
 <translation id="2809586584051668049">i još <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2810390687497823527">Ako ne prepoznajete ekstenziju ili ako vaš preglednik ne funkcionira kako bi trebalo, ovdje možete isključiti ili prilagoditi ekstenzije.</translation>
 <translation id="2812049959647166806">Thunderbolt nije podržan</translation>
 <translation id="2812944337881233323">Pokušajte se odjaviti i ponovo prijaviti</translation>
 <translation id="2812989263793994277">Ne prikazuj nikakve slike</translation>
@@ -1336,6 +1346,7 @@
 <translation id="2861941300086904918">Upravitelj sigurnosti izvornog klijenta</translation>
 <translation id="2864601841139725659">Postavite sliku profila</translation>
 <translation id="2865919525181940183">Snimak ekrana programa koji su trenutno na ekranu.</translation>
+<translation id="286674810810214575">Provjeravanje izvora napajanja...</translation>
 <translation id="2867768963760577682">Otvori kao zakačenu karticu</translation>
 <translation id="2868746137289129307">Ova ekstenzija je zastarjela i onemogućena je pravilom preduzeća. Može se omogućiti automatski kada nova verzija postane dostupna.</translation>
 <translation id="2870560284913253234">Web lokacija</translation>
@@ -1413,6 +1424,7 @@
 <translation id="2972581237482394796">&amp;Ponovi</translation>
 <translation id="2973324205039581528">Isključi zvuk web lokacije</translation>
 <translation id="2977480621796371840">Ukloni iz grupe</translation>
+<translation id="2979520980928493164">Stabilniji i funkcionalniji Chrome</translation>
 <translation id="2979639724566107830">Otvori u novom prozoru</translation>
 <translation id="2981113813906970160">Prikaži veliki kursor miša</translation>
 <translation id="2982970937345031">Prijavi anonimno</translation>
@@ -1519,6 +1531,7 @@
 <translation id="3143515551205905069">Otkaži sinhronizaciju</translation>
 <translation id="3143754809889689516">Reproduciraj od početka</translation>
 <translation id="3144647712221361880">Otvori link kao</translation>
+<translation id="3145187901750964977">Instaliranje virtuelne mašine nije uspjelo. Pokušajte ponovo ili kontaktirajte administratora uređaja vaše organizacije. Kȏd greške: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Verzija:
     <ph name="LINUX_VERSION" />
 
@@ -1557,6 +1570,7 @@
 <translation id="3192947282887913208">Audio fajlovi</translation>
 <translation id="3194737229810486521"><ph name="URL" /> želi trajno pohraniti podatke na vaš uređaj</translation>
 <translation id="3199127022143353223">Serveri</translation>
+<translation id="3201306578844503970">Instaliranje virtuelne mašine nije uspjelo zbog greške na mreži. Pokušajte ponovo ili kontaktirajte administratora uređaja vaše organizacije. Kȏd greške: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Dostupni USB uređaji pojavit će se ovdje.</translation>
 <translation id="3202131003361292969">Putanja</translation>
 <translation id="3202173864863109533">Zvuk kartice je isključen.</translation>
@@ -1893,7 +1907,6 @@
 <translation id="3678156199662914018">Ekstenzija: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Hvala na povratnim informacijama. Trenutno ste van mreže i vaš će se izvještaj poslati kasnije.</translation>
 <translation id="3682824389861648626">Prag pomjeranja</translation>
-<translation id="3683023058278427253">Otkrili smo više vrsta licence za vašu domenu. Odaberite jednu da nastavite.</translation>
 <translation id="3683524264665795342">Zahtjev aplikacije <ph name="APP_NAME" /> za dijeljenje ekrana</translation>
 <translation id="368789413795732264">Došlo je do greške pri ispisivanju fajla: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">pisati u datoteke i mape koje otvorite u aplikaciji</translation>
@@ -2067,6 +2080,7 @@
 <translation id="389589731200570180">Dijelite s gostima</translation>
 <translation id="389901847090970821">Odaberite tastaturu</translation>
 <translation id="3899879303189199559">Van mreže duže od godinu dana</translation>
+<translation id="3900789207771372462">Neke ekstenzije mogu vidjeti vašu aktivnost pregledanja, uključujući lične informacije.</translation>
 <translation id="3900966090527141178">Izvezite lozinke</translation>
 <translation id="3901991538546252627">Povezivanje na mrežu <ph name="NAME" /></translation>
 <translation id="3905761538810670789">Popravi aplikaciju</translation>
@@ -2157,7 +2171,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" otklanja greške na ovom pregledniku</translation>
 <translation id="4014432863917027322">Popraviti "<ph name="EXTENSION_NAME" />"?</translation>
 <translation id="4015163439792426608">Imate ekstenzije? <ph name="BEGIN_LINK" />Upravljajte ekstenzijama<ph name="END_LINK" /> s lakoćom na jednom mjestu.</translation>
-<translation id="4020106588733303597">Ups!  Učitavanje dostupnih licenci u sistemu nije uspjelo.</translation>
 <translation id="4020327272915390518">Meni za opcije</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Dodaj u rječnik</translation>
@@ -2195,6 +2208,7 @@
 <translation id="407520071244661467">Razmjer</translation>
 <translation id="4075639477629295004">Nije moguće emitirati <ph name="FILE_NAME" />.</translation>
 <translation id="4077917118009885966">Oglasi koji su blokirani na ovoj web lokaciji</translation>
+<translation id="4077919383365622693">Obrisat će se svi podaci i kolačići koje je pohranila web lokacija <ph name="SITE" />.</translation>
 <translation id="4079140982534148664">Koristi naprednu provjeru pravopisa</translation>
 <translation id="4081242589061676262">Nije moguće emitirati datoteku.</translation>
 <translation id="4084682180776658562">Oznaka</translation>
@@ -2269,6 +2283,7 @@
 <translation id="4181841719683918333">Jezici</translation>
 <translation id="4184885522552335684">Prevucite da pomjerite ekran</translation>
 <translation id="4194570336751258953">Omogući funkciju Dodirni za klik</translation>
+<translation id="4194595472342532425">Postavljanje Plugin VM-a nije uspjelo zbog problema s konfiguracijom. Kontaktirajte administratora uređaja vaše organizacije. Kȏd greške: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Otvori na novoj kartici</translation>
 <translation id="4195814663415092787">Nastavite gdje ste stali</translation>
 <translation id="4198146608511578238">Da pričate Google Asistentu, samo držite ikonu na pokretaču.</translation>
@@ -2492,6 +2507,7 @@
 <translation id="4549791035683739768">Na vašem sigurnosnom ključu nisu pohranjeni otisci prstiju</translation>
 <translation id="4551763574344810652">Pritisnite tipku <ph name="MODIFIER_KEY_DESCRIPTION" /> da opozovete radnju</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005">Mreža <ph name="NETWORK_TYPE" />, jačina signala <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">Vanjska ekstenzija je iste ili niže verzije u poređenju sa postojećom.</translation>
 <translation id="4555769855065597957">Sjena</translation>
 <translation id="4555863373929230635">Da sačuvate lozinke na svoj Google račun, prijavite se i uključite sinhroniziranje.</translation>
@@ -2569,6 +2585,7 @@
 <translation id="4665446389743427678">Svi podaci koje pohrani web lokacija <ph name="SITE" /> će biti izbrisani.</translation>
 <translation id="4668721319092543482">Kliknite da omogućite dodatak <ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">Sažmi stranicu</translation>
+<translation id="46733273239502219">Obrisat će se i offline podaci u instaliranim aplikacijama</translation>
 <translation id="4673442866648850031">Otvorite alate za stilos kada je stilos uklonjen</translation>
 <translation id="4677585247300749148"><ph name="URL" /> želi odgovoriti na događaje pristupačnosti</translation>
 <translation id="4677772697204437347">GPU memorija</translation>
@@ -2660,7 +2677,6 @@
 <translation id="4823484602432206655">Pročitajte i promijenite postavke korisnika i uređaja</translation>
 <translation id="4824958205181053313">Otkazati sinhroniziranje?</translation>
 <translation id="4827675678516992122">Povezivanje nije uspjelo</translation>
-<translation id="4828937774870308359">Australijski</translation>
 <translation id="4829768588131278040">Postavi PIN</translation>
 <translation id="4830502475412647084">Instaliranje ažuriranja operativnog sistema</translation>
 <translation id="4830573902900904548">Vaš uređaj <ph name="DEVICE_TYPE" /> se ne može povezati na internet putem mreže <ph name="NETWORK_NAME" />. Odaberite drugu mrežu. <ph name="LEARN_MORE_LINK_START" />Saznajte više<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2701,6 +2717,7 @@
 <translation id="4876273079589074638">Pomozite našim inženjerima da istraže i poprave pad aplikacije. Navedite tačne korake, ako možete. Nijedan detalj nije nebitan!</translation>
 <translation id="4876895919560854374">Zaključati i otključati ekran</translation>
 <translation id="4877276003880815204">Provjeri elemente</translation>
+<translation id="4878653975845355462">Vaš administrator je isključio prilagođene pozadine</translation>
 <translation id="4879491255372875719">Automatski (zadano)</translation>
 <translation id="4880328057631981605">Naziv pristupne tačke</translation>
 <translation id="4880827082731008257">Pretraži povijest</translation>
@@ -2756,10 +2773,10 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" želi se povezati sa serijskim priključkom</translation>
 <translation id="4944310289250773232">Ovu uslugu autentifikacije hostira <ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">Radnje</translation>
+<translation id="4952981627953231344">Plugin VM nije dozvoljen na ovom uređaju. Kontaktirajte administratora uređaja vaše organizacije.</translation>
 <translation id="4953689047182316270">Odgovori na događaje vezane za pristupačnost</translation>
 <translation id="4953808748584563296">Zadani narandžasti avatar</translation>
 <translation id="4955710816792587366">Odaberite PIN</translation>
-<translation id="4955814292505481804">Godišnja</translation>
 <translation id="4959262764292427323">Lozinke se pohranjuju na vašem Google računu tako da ih možete koristiti na bilo kojem uređaju</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Ovu aplikaciju je instalirao vaš administrator.</translation>
@@ -3241,7 +3258,6 @@
 <translation id="5659593005791499971">E-pošta</translation>
 <translation id="5659833766619490117">Ova stranica nije prevedena</translation>
 <translation id="5660204307954428567">Uparite s uređajem <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Trajna</translation>
 <translation id="5667546120811588575">Postavljanje Google Playa...</translation>
 <translation id="5669267381087807207">Aktivacija</translation>
 <translation id="5669691691057771421">Unesite novi PIN</translation>
@@ -3257,6 +3273,7 @@
 <translation id="5687326903064479980">Vremenska zona</translation>
 <translation id="5689516760719285838">Lokacija</translation>
 <translation id="56907980372820799">Poveži podatke</translation>
+<translation id="5691180005790455277">Obrisat će se svi podaci i kolačići koje je pohranila grupa web lokacija <ph name="SITE_GROUP_NAME" /> te sve web lokacije povezane s njom.</translation>
 <translation id="5691511426247308406">Porodica</translation>
 <translation id="5692183275898619210">Štampanje je završeno</translation>
 <translation id="5696143504434933566">Prijavi zloupotrebu s ekstenzije "<ph name="EXTENSION_NAME" />"</translation>
@@ -3343,7 +3360,6 @@
 <translation id="5815645614496570556">X.400 adresa</translation>
 <translation id="5816434091619127343">Zbog zatraženih promjena štampač bi mogao postati neupotrebljiv.</translation>
 <translation id="5817918615728894473">Upari</translation>
-<translation id="5819762621475381970">– raspored stvari u vašoj sobi</translation>
 <translation id="5821565227679781414">Kreiraj prečicu</translation>
 <translation id="5825412242012995131">Uključeno (preporučeno)</translation>
 <translation id="5826395379250998812">Povežite uređaj <ph name="DEVICE_TYPE" /> sa svojim telefonom. <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation>
@@ -3479,6 +3495,7 @@
 <translation id="6007240208646052708">Glasovno pretraživanje nije dostupno na vašem jeziku.</translation>
 <translation id="6009781704028455063">Ugrađeni senzor</translation>
 <translation id="6010869025736512584">Pristupanje video ulazu</translation>
+<translation id="6011074160056912900">Ethernet mreža</translation>
 <translation id="6011193465932186973">Otisak prsta</translation>
 <translation id="6011449291337289699">Brisanje podataka web lokacije</translation>
 <translation id="6015266928248016057">Nevažeći PUK. Preostali broj pokušaja: <ph name="RETRIES" />.</translation>
@@ -3515,6 +3532,7 @@
 <translation id="6053401458108962351">&amp;Obriši podatke pregledanja…</translation>
 <translation id="6055171183283175969">Lozinka koju ste upisali je netačna.</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 s RSA šifriranjem</translation>
+<translation id="6055907707645252013">Mreža <ph name="NETWORK_TYPE" />, nije povezana</translation>
 <translation id="6056710589053485679">Normalno ponovno učitavanje</translation>
 <translation id="6057381398996433816">Ovoj stranici je blokirano korištenje senzora pokreta i svjetla.</translation>
 <translation id="6058567592298841668">Dodatni virtuelni uređaj: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3578,6 +3596,7 @@
 <translation id="6136114942382973861">Zatvori traku preuzetih fajlova</translation>
 <translation id="6137767437444130246">Potvrda korisnika</translation>
 <translation id="6138680304137685902">X9.62 ECDSA potpis uz SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, nema mreže</translation>
 <translation id="6141988275892716286">Potvrdite lozinku</translation>
 <translation id="6143186082490678276">Zatražite pomoć</translation>
 <translation id="6144938890088808325">Pomozite nam da poboljšamo Chromebook računare</translation>
@@ -3884,6 +3903,7 @@
 <translation id="6602956230557165253">Za navigiranje koristite strelice nalijevo i nadesno.</translation>
 <translation id="6605847144724004692">Nijedan korisnik još nije ocijenio.</translation>
 <translation id="6607831829715835317">Više ala&amp;ta</translation>
+<translation id="6611972847767394631">Ovdje pronađite svoje kartice</translation>
 <translation id="6612358246767739896">Zaštićeni sadržaj</translation>
 <translation id="6615455863669487791">Pokaži mi</translation>
 <translation id="6618097958368085618">Ipak zadrži</translation>
@@ -3952,6 +3972,7 @@
 <translation id="6709133671862442373">Vijesti</translation>
 <translation id="6709357832553498500">Poveži se na mrežu pomoću dodatka <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Nazad</translation>
+<translation id="6715803357256707211">Došlo je do greške prilikom instalacije Linux aplikacije. Kliknite na obavještenje za detalje.</translation>
 <translation id="6721678857435001674">Vidjeti proizvođača i model vašeg sigurnosnog ključa</translation>
 <translation id="6721972322305477112">&amp;Fajl</translation>
 <translation id="672213144943476270">Otključajte profil prije nego što počnete pretraživati kao gost.</translation>
@@ -3976,7 +3997,6 @@
 <translation id="674632704103926902">Omogući prevlačenje dodirom</translation>
 <translation id="6748217015615267851">Ispunjivač: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Možete nastaviti, ali samo vaši sinhronizirani podaci i postavke će se vratiti. Svi lokalni podaci će se izgubiti.</translation>
-<translation id="6748775883310276718">Kiosk pojedinačnih aplikacija</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (anonimno)</translation>
 <translation id="6757101664402245801">URL je kopiran</translation>
 <translation id="6758056191028427665">Recite nam koliko ste zadovoljni nama.</translation>
@@ -3986,6 +4006,7 @@
 <translation id="6769712124046837540">Dodavanje štampača...</translation>
 <translation id="6770664076092644100">Potvrdi putem NFC-a</translation>
 <translation id="6771503742377376720">Izdavač je potvrde</translation>
+<translation id="6772339735733515807">Upravljajte ekstenzijama</translation>
 <translation id="6775163072363532304">Ovdje će se prikazati dostupni uređaji.</translation>
 <translation id="6777817260680419853">Preusmjeravanje je blokirano</translation>
 <translation id="6778737459546443941">Roditelj ga još uvijek nije odobrio</translation>
@@ -4124,6 +4145,7 @@
 <translation id="6972180789171089114">Zvuk/video</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> ne može otvoriti fajlove u ovom folderu jer on sadrži sistemske fajlove</translation>
 <translation id="6972754398087986839">Započnite</translation>
+<translation id="6973611239564315524">Dostupna je nadogradnja na Debian 10 (Buster)</translation>
 <translation id="6974609594866392343">Demo način rada van mreže</translation>
 <translation id="6977381486153291903">Revizija firmvera</translation>
 <translation id="6978121630131642226">Pretraživači</translation>
@@ -4583,6 +4605,7 @@
 <translation id="7644543211198159466">Boja i tema</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (vlasnik)</translation>
 <translation id="7645681574855902035">Otkazivanje izrade sigurnosne kopije za Linux</translation>
+<translation id="7646772052135772216">Sinhronizacija lozinki ne funkcionira</translation>
 <translation id="7647403192093989392">Nema nedavnih aktivnosti</translation>
 <translation id="7648992873808071793">pohraniti fajlove na ovom uređaju</translation>
 <translation id="7649070708921625228">Pomoć</translation>
@@ -4771,6 +4794,7 @@
 <translation id="7877451762676714207">Nepoznata greška servera. Pokušajte ponovo ili kontaktirajte administratora servera.</translation>
 <translation id="7877680364634660272">Obilazak</translation>
 <translation id="7878562273885520351">Moguće je da je vaša lozinka ugrožena</translation>
+<translation id="7879631849810108578">Prečica je postavljena: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Lokalni podaci će se izbrisati nakon ponovnog pokretanja</translation>
 <translation id="7881483672146086348">Prikaži račun</translation>
 <translation id="7882358943899516840">Vrsta davatelja usluge</translation>
@@ -4857,6 +4881,7 @@
 <translation id="7987814697832569482">Uvijek se povezuj preko ovog VPN-a</translation>
 <translation id="7988355189918024273">Omogućavanje funkcija pristupačnosti</translation>
 <translation id="7991296728590311172">Postavke prekidača za pristup</translation>
+<translation id="7994350303002908848">Instaliranje Plugin VM-a nije uspjelo. Pokušajte ponovo ili kontaktirajte administratora uređaja vaše organizacije. Kȏd greške: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">EAP metoda</translation>
 <translation id="7997826902155442747">Prioritet procesa</translation>
 <translation id="7999229196265990314">Kreirani su sljedeći fajlovi:
@@ -4949,7 +4974,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Nema kolačića treće strane}=1{Blokiran je 1 kolačić treće strane}one{Blokiran je # kolačić treće strane}few{Blokirana su # kolačića treće strane}other{Blokirano je # kolačića treće strane}}</translation>
 <translation id="810875025413331850">Nije pronađen nijedan uređaj u blizini.</translation>
 <translation id="8111155949205007504">Dijelite ovu zaporku sa svojim iPhoneom</translation>
-<translation id="8113043281354018522">Odaberite vrstu licence</translation>
 <translation id="8114875720387900039">Podjela po horizontali</translation>
 <translation id="8116972784401310538">&amp;Upravitelj oznaka</translation>
 <translation id="8117620576188476503">Upravljajte vezama, ažuriranjima i postavkama iz statusne trake. Da dođete ovdje koristeći tastaturu, pritisnite Alt + Shift + S.</translation>
@@ -5106,6 +5130,7 @@
 <translation id="8327039559959785305">Greška prilikom aktiviranja Linux fajlova. Pokušajte ponovo.</translation>
 <translation id="8335587457941836791">Otkači s police</translation>
 <translation id="8336407002559723354">Datum završetka ažuriranja: <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Ponovno pokretanje uređaja radi prikazivanja teksta sistema na jeziku: <ph name="LANGUAGE" /></translation>
 <translation id="8336739000755212683">Promijenite sliku računa uređaja</translation>
 <translation id="8337047789441383384">Već ste registrirali ovaj sigurnosni ključ. Ne morate se ponovo prijavljivati</translation>
 <translation id="8338952601723052325">Web lokacija programera</translation>
@@ -5149,6 +5174,7 @@
 <translation id="8400146488506985033">Upravljaj osobama</translation>
 <translation id="8401432541486058167">Unesite PIN koji je povezan s vašom pametnom karticom.</translation>
 <translation id="8405046151008197676">Otkrijte istaknute novosti o najnovijem ažuriranju</translation>
+<translation id="8408068190360279472">Mreža <ph name="NETWORK_TYPE" />, povezivanje</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Prvo pitaj (preporučeno)</translation>
 <translation id="8418445294933751433">&amp;Prikaži kao karticu</translation>
@@ -5438,6 +5464,7 @@
 <translation id="8807632654848257479">Stabilno</translation>
 <translation id="8808478386290700967">Web trgovina</translation>
 <translation id="8808686172382650546">Mačka</translation>
+<translation id="8808744862003883508">Na ovoj stranici možete vidjeti sve ekstenzije koje su instalirane na Chromeu.</translation>
 <translation id="8809147117840417135">Svijetlotirkizna</translation>
 <translation id="8813698869395535039">Nije se moguće prijaviti na <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">list papira</translation>
@@ -5665,7 +5692,6 @@
 <translation id="9121814364785106365">Otvori kao zakačenu karticu</translation>
 <translation id="9122176249172999202">Aplikacija <ph name="IDS_SHORT_PRODUCT_NAME" /> je pauzirana</translation>
 <translation id="9124003689441359348">Sačuvane lozinke će se prikazati ovdje</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> rem.)</translation>
 <translation id="9128317794749765148">Postavljanje nije dovršeno</translation>
 <translation id="9128870381267983090">Spoji se na mrežu</translation>
 <translation id="9130015405878219958">Ušli ste u nevažeći način rada.</translation>
@@ -5704,6 +5730,7 @@
 <translation id="9188732951356337132">Šaljite podatke o upotrebi i dijagnostici. Ovaj uređaj trenutno automatski šalje Googleu podatke o dijagnostici, uređaju i korištenju aplikacija. Ovo se neće koristiti za identifikaciju vašeg djeteta, a pomoći će stabilnosti sistema i aplikacija, kao i drugim poboljšanjima. Neki zbirni podaci će također pomoći Googleovim aplikacijama i partnerima, kao što su programeri za Android. Ako je za vaše dijete uključena postavka za dodatnu Aktivnost na webu i u aplikacijama, ovi podaci mogu biti sačuvani na Google računu djeteta. <ph name="BEGIN_LINK2" />Saznajte više<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + unaprijed dijeljeni ključ</translation>
 <translation id="920045321358709304">Pretraži <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">Obrisat će se svi offline podaci</translation>
 <translation id="9201220332032049474">Opcije zaključavanja ekrana</translation>
 <translation id="9203398526606335860">&amp;Profiliranje je omogućeno</translation>
 <translation id="9203904171912129171">Odaberite uređaj</translation>
@@ -5716,6 +5743,7 @@
 <translation id="9220525904950070496">Ukloni račun</translation>
 <translation id="9220820413868316583">Podignite prst, a zatim pokušajte ponovo.</translation>
 <translation id="923467487918828349">Prikaži sve</translation>
+<translation id="929117907539171075">Obrisat će se i offline podaci u instaliranoj aplikaciji</translation>
 <translation id="930268624053534560">Detaljne vremenske oznake</translation>
 <translation id="932327136139879170">Početna stranica</translation>
 <translation id="932508678520956232">Pokretanje štampanja nije uspjelo.</translation>
@@ -5741,6 +5769,7 @@
 <translation id="960719561871045870">Kôd operatera</translation>
 <translation id="960987915827980018">Još otprilike 1 sat</translation>
 <translation id="962802172452141067">Stablo foldera za oznake</translation>
+<translation id="964057662886721376">Neke ekstenzije mogu usporavati vaš rad, a naročito one koje niste namjeravali instalirati.</translation>
 <translation id="964286338916298286">Vaš IT administrator je onemogućio Chrome Goodies za vaš uređaj.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Aplikacija}one{Aplikacija}few{Aplikacije}other{Aplikacija}}</translation>
 <translation id="965211523698323809">Šaljite i primajte SMS-ove s uređaja <ph name="DEVICE_TYPE" /> <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_ca.xtb b/chrome/app/resources/generated_resources_ca.xtb
index 6297bdf..10afdca 100644
--- a/chrome/app/resources/generated_resources_ca.xtb
+++ b/chrome/app/resources/generated_resources_ca.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Personalitzat</translation>
 <translation id="1178581264944972037">Posa en pausa</translation>
 <translation id="117916940443676133">La clau de seguretat no està protegida amb un PIN. Per gestionar les dades d'inici de sessió, primer crea un PIN.</translation>
-<translation id="118069123878619799">- els teus trets físics, com ara l'alçada</translation>
 <translation id="1181037720776840403">Suprimeix</translation>
 <translation id="1183237619868651138">No es pot instal·lar <ph name="EXTERNAL_CRX_FILE" /> a la memòria cau local.</translation>
 <translation id="1185924365081634987">També podeu provar de <ph name="GUEST_SIGNIN_LINK_START" />navegar com a convidat<ph name="GUEST_SIGNIN_LINK_END" /> per corregir aquest error de la xarxa.</translation>
@@ -1906,7 +1905,6 @@
 <translation id="3678156199662914018">Extensió: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Gràcies pels teus suggeriments. Ara mateix no tens connexió, de manera que el teu informe s'enviarà més tard.</translation>
 <translation id="3682824389861648626">Llindar de moviment</translation>
-<translation id="3683023058278427253">Hem detectat diversos tipus de llicències per al teu domini. Tria'n un per continuar.</translation>
 <translation id="3683524264665795342">Sol·licitud de compartició de pantalla de <ph name="APP_NAME" /></translation>
 <translation id="368789413795732264">S'ha produït un error quan s'intentava escriure el fitxer: <ph name="ERROR_TEXT" /></translation>
 <translation id="3688507211863392146">Escriure en fitxers i carpetes que s'obrin a l'aplicació</translation>
@@ -2170,7 +2168,6 @@
 <translation id="4013132157686828973"><ph name="CLIENT_NAME" /> està depurant aquest navegador</translation>
 <translation id="4014432863917027322">Voleu reparar <ph name="EXTENSION_NAME" />?</translation>
 <translation id="4015163439792426608">Tens extensions? <ph name="BEGIN_LINK" />Gestiona-les<ph name="END_LINK" /> fàcilment des d'un sol lloc.</translation>
-<translation id="4020106588733303597">El sistema no ha pogut carregar les llicències disponibles.</translation>
 <translation id="4020327272915390518">Menú d'opcions</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Afegeix al diccionari</translation>
@@ -2677,7 +2674,6 @@
 <translation id="4823484602432206655">Llegir i canviar la configuració d'usuari i del dispositiu</translation>
 <translation id="4824958205181053313">Vols cancel·lar la sincronització?</translation>
 <translation id="4827675678516992122">No s'ha pogut connectar</translation>
-<translation id="4828937774870308359">Australià</translation>
 <translation id="4829768588131278040">Configura un PIN</translation>
 <translation id="4830502475412647084">S'està instal·lant l'actualització del sistema operatiu</translation>
 <translation id="4830573902900904548">El vostre dispositiu <ph name="DEVICE_TYPE" /> no es pot connectar a Internet mitjançant <ph name="NETWORK_NAME" />. Trieu una altra xarxa. <ph name="LEARN_MORE_LINK_START" />Més informació<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2778,7 +2774,6 @@
 <translation id="4953689047182316270">Respondre als esdeveniments d'accessibilitat</translation>
 <translation id="4953808748584563296">Avatar taronja predeterminat</translation>
 <translation id="4955710816792587366">Tria un PIN</translation>
-<translation id="4955814292505481804">Anual</translation>
 <translation id="4959262764292427323">Les contrasenyes es desen al Compte de Google perquè les puguis utilitzar en tots els dispositius</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" />: <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">L'administrador ha instal·lat aquesta aplicació.</translation>
@@ -3262,7 +3257,6 @@
 <translation id="5659593005791499971">Correu electrònic</translation>
 <translation id="5659833766619490117">Aquesta pàgina no s'ha pogut traduir</translation>
 <translation id="5660204307954428567">Vincula la clau amb <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Permanent</translation>
 <translation id="5667546120811588575">S'està configurant Google Play...</translation>
 <translation id="5669267381087807207">S'està activant</translation>
 <translation id="5669691691057771421">Introdueix el PIN nou</translation>
@@ -3365,7 +3359,6 @@
 <translation id="5815645614496570556">Adreça X.400</translation>
 <translation id="5816434091619127343">Els canvis que s'han sol·licitat per a la impressora faran que no es pugui utilitzar.</translation>
 <translation id="5817918615728894473">Vincula</translation>
-<translation id="5819762621475381970">- la distribució de la teva habitació</translation>
 <translation id="5821565227679781414">Crea una drecera</translation>
 <translation id="5825412242012995131">Activat (opció recomanada)</translation>
 <translation id="5826395379250998812">Connecta el dispositiu <ph name="DEVICE_TYPE" /> al telèfon. <ph name="LINK_BEGIN" />Més informació<ph name="LINK_END" /></translation>
@@ -4003,7 +3996,6 @@
 <translation id="674632704103926902">Activa la funció de tocar i arrossegar</translation>
 <translation id="6748217015615267851">Renderitzador: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Podeu continuar, però només es restauraran les dades i la configuració sincronitzades. Es perdran totes les dades locals.</translation>
-<translation id="6748775883310276718">Quiosc d'una sola aplicació</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Incògnit)</translation>
 <translation id="6757101664402245801">S'ha copiat l'URL</translation>
 <translation id="6758056191028427665">Digue'ns si ho estem fent bé.</translation>
@@ -4981,7 +4973,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{No hi ha cap galeta de tercers}=1{Hi ha 1 galeta de tercers bloquejada}other{Hi ha # galetes de tercers bloquejades}}</translation>
 <translation id="810875025413331850">No s'ha trobat cap dispositiu a prop.</translation>
 <translation id="8111155949205007504">Comparteix aquesta contrasenya amb el dispositiu iPhone</translation>
-<translation id="8113043281354018522">Tria el tipus de llicència</translation>
 <translation id="8114875720387900039">Divisió horitzontal</translation>
 <translation id="8116972784401310538">&amp;Gestor d'adreces d'interès</translation>
 <translation id="8117620576188476503">Gestiona les connexions, actualitzacions i configuracions des de la safata d'estat. Per accedir-hi amb el teclat, prem Alt+Maj+S.</translation>
@@ -5700,7 +5691,6 @@
 <translation id="9121814364785106365">Obre-ho com a pestanya reduïda</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> està en pausa</translation>
 <translation id="9124003689441359348">Les contrasenyes desades es mostraran aquí</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (restants: <ph name="LICENSE_COUNT" />)</translation>
 <translation id="9128317794749765148">No s'ha pogut completar la configuració</translation>
 <translation id="9128870381267983090">Connecta't a la xarxa</translation>
 <translation id="9130015405878219958">S'ha introduït un mode no vàlid.</translation>
diff --git a/chrome/app/resources/generated_resources_cs.xtb b/chrome/app/resources/generated_resources_cs.xtb
index 169c548..8b7d055 100644
--- a/chrome/app/resources/generated_resources_cs.xtb
+++ b/chrome/app/resources/generated_resources_cs.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Vlastní</translation>
 <translation id="1178581264944972037">Pozastavit</translation>
 <translation id="117916940443676133">Váš bezpečnostní klíč není chráněn kódem PIN. Chcete-li spravovat přihlašovací údaje, nejdříve nastavte PIN.</translation>
-<translation id="118069123878619799">– vaše fyzické vlastnosti, například výšku,</translation>
 <translation id="1181037720776840403">Odebrat</translation>
 <translation id="1183237619868651138">Soubor <ph name="EXTERNAL_CRX_FILE" /> nelze nainstalovat do místní mezipaměti.</translation>
 <translation id="1185924365081634987">Chcete-li tuto chybu odstranit, můžete také zkusit <ph name="GUEST_SIGNIN_LINK_START" />procházení v roli hosta<ph name="GUEST_SIGNIN_LINK_END" />.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">Čekání na <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033">Další dostupná zařízení: <ph name="NUM_PRINTERS" /></translation>
 <translation id="1495677929897281669">Zpět na kartu</translation>
+<translation id="1499271269825557605">Pokud nějaké rozšíření nepoznáváte nebo prohlížeč nefunguje podle očekávání, můžete zde rozšíření vypnout nebo si je přizpůsobit.</translation>
 <translation id="1500297251995790841">Neznámé zařízení [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Účet tohoto vlastníka musí být v relaci multiprofilu přihlášen jako první.</translation>
 <translation id="150411034776756821">Odebrat web <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Přístup této stránky k vaší kameře je zablokován.</translation>
 <translation id="1507246803636407672">&amp;Smazat</translation>
 <translation id="1508491105858779599">Odemkněte zařízení tím, že položíte prst na snímač otisků prstů.</translation>
+<translation id="1508575541972276599">Aktuální verze je Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">Přístup k jakémukoliv zařízení <ph name="DEVICE_NAME_AND_VENDOR" /> prostřednictvím USB</translation>
 <translation id="150962533380566081">Neplatný kód PUK.</translation>
 <translation id="1510030919967934016">Této stránce bylo zakázáno sledovat vaši polohu.</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">Použít</translation>
 <translation id="1603914832182249871">(Anonymní režim)</translation>
 <translation id="1604432177629086300">Tisk se nezdařil. Zkontrolujte tiskárnu a zkuste to znovu.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: synchronizace hesel nefunguje</translation>
 <translation id="1607139524282324606">Vymazat položku</translation>
 <translation id="1608626060424371292">Odebrat tohoto uživatele</translation>
 <translation id="1608668830839595724">Další akce s vybranými položkami</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">Údaje hostovaných aplikací</translation>
 <translation id="1776712937009046120">Přidat uživatele</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Toto zařízení spravuje organizace <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    Chcete-li pokračovat s přihlášením k účtu <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />, klikněte na Další.</translation>
 <translation id="1779652936965200207">Zadejte prosím přístupové heslo v zařízení <ph name="DEVICE_NAME" />:</translation>
 <translation id="1780152987505130652">Zavřít skupinu</translation>
 <translation id="1781291988450150470">Aktuální PIN</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">Akce není k dispozici</translation>
 <translation id="2050339315714019657">Na výšku</translation>
 <translation id="2053312383184521053">Údaje o stavu nečinnosti</translation>
+<translation id="2055585478631012616">Z těchto webů budete odhlášeni (i v otevřených kartách)</translation>
 <translation id="205560151218727633">Logo Asistenta Google</translation>
 <translation id="2058456167109518507">Bylo zjištěno zařízení</translation>
 <translation id="2059913712424898428">Časové pásmo</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">Vrátit zpět</translation>
 <translation id="2080070583977670716">Další nastavení</translation>
 <translation id="2087822576218954668">Tisk: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">Síť VPN</translation>
 <translation id="2089566709556890888">Pohybujte se na internetu bezpečně pomocí prohlížeče Google Chrome</translation>
 <translation id="2089795179672254991">Zeptat se, když chce web získat přístup k textu a obrázkům zkopírovaným do schránky (doporučeno)</translation>
 <translation id="2090165459409185032">Chcete-li obnovit informace o svém účtu, přejděte na web google.com/accounts/recovery.</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">Web používá zvukový a obrazový vstup</translation>
 <translation id="2379281330731083556">Tisk pomocí dialogového okna systému... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Před odesláním se zeptat (doporučeno)</translation>
+<translation id="2382818385048255866">Zkontrolujte rozšíření</translation>
 <translation id="2384436799579181135">Došlo k chybě. Zkontrolujte tiskárnu a zkuste to znovu.</translation>
 <translation id="2387458720915042159">Typ připojení k proxy serveru</translation>
 <translation id="2391419135980381625">Standardní písmo</translation>
@@ -1035,6 +1042,7 @@
 <translation id="2462724976360937186">ID klíče certifikační autority</translation>
 <translation id="2462752602710430187">Byla přidána tiskárna <ph name="PRINTER_NAME" /></translation>
 <translation id="2464089476039395325">Proxy server protokolu HTTP</translation>
+<translation id="2467267713099745100">Síť: <ph name="NETWORK_TYPE" />, vypnuto</translation>
 <translation id="2468205691404969808">Používá soubory cookie k uložení vašeho nastavení i v případě, že stránky nenavštívíte</translation>
 <translation id="2468402215065996499">Tamagoči</translation>
 <translation id="2469259292033957819">Nemáte žádné uložené tiskárny.</translation>
@@ -1289,6 +1297,7 @@
 <translation id="2800760947029405028">Nahrát obrázek</translation>
 <translation id="2803375539583399270">Zadejte kód PIN</translation>
 <translation id="2804043232879091219">Alternativní prohlížeč se nepodařilo otevřít</translation>
+<translation id="2804667941345577550">Z tohoto webu budete odhlášení (i v otevřených kartách)</translation>
 <translation id="2804680522274557040">Kamera je vypnutá</translation>
 <translation id="2805646850212350655">Systém souborů Microsoft EFS</translation>
 <translation id="2805756323405976993">Aplikace</translation>
@@ -1296,6 +1305,7 @@
 <translation id="2806891468525657116">Zkratka už existuje</translation>
 <translation id="2807517655263062534">Zde se zobrazují stažené soubory</translation>
 <translation id="2809586584051668049">a další (<ph name="NUMBER_ADDITIONAL_DISABLED" />)</translation>
+<translation id="2810390687497823527">Pokud nějaké rozšíření nepoznáváte nebo prohlížeč nefunguje podle očekávání, můžete zde rozšíření vypnout nebo si je přizpůsobit.</translation>
 <translation id="2812049959647166806">Rozhraní Thunderbolt není podporováno</translation>
 <translation id="2812944337881233323">Zkuste se odhlásit a opět přihlásit.</translation>
 <translation id="2812989263793994277">Nezobrazovat žádné obrázky</translation>
@@ -1335,6 +1345,7 @@
 <translation id="2861941300086904918">Správce zabezpečení nativního klienta</translation>
 <translation id="2864601841139725659">Nastavení profilové fotky</translation>
 <translation id="2865919525181940183">Snímek obrazovky programů, které jsou aktuálně na obrazovce.</translation>
+<translation id="286674810810214575">Probíhá kontrola zdrojů napájení...</translation>
 <translation id="2867768963760577682">Otevřít jako připnutou kartu</translation>
 <translation id="2868746137289129307">Toto rozšíření je zastaralé a je zakázáno podnikovou zásadou. Možná bude opět automaticky povoleno, až bude k dispozici novější verze.</translation>
 <translation id="2870560284913253234">Stránky</translation>
@@ -1412,6 +1423,7 @@
 <translation id="2972581237482394796">&amp;Opakovat</translation>
 <translation id="2973324205039581528">Ztlumit web</translation>
 <translation id="2977480621796371840">Odebrat ze skupiny</translation>
+<translation id="2979520980928493164">Zdravější a šťastnější Chrome</translation>
 <translation id="2979639724566107830">Otevřít v novém okně</translation>
 <translation id="2981113813906970160">Zobrazit velký kurzor myši</translation>
 <translation id="2982970937345031">Nahlásit anonymně</translation>
@@ -1518,6 +1530,7 @@
 <translation id="3143515551205905069">Zrušit synchronizaci</translation>
 <translation id="3143754809889689516">Přehrát od začátku</translation>
 <translation id="3144647712221361880">Otevřít odkaz jako</translation>
+<translation id="3145187901750964977">Instalace virtuálního počítače se nezdařila. Zkuste to znovu, nebo kontaktujte administrátora zařízení ve své organizaci. Kód chyby: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Verze:
     <ph name="LINUX_VERSION" />
 
@@ -1556,6 +1569,7 @@
 <translation id="3192947282887913208">Zvukové soubory</translation>
 <translation id="3194737229810486521">Stránka <ph name="URL" /> chce trvale ukládat data v zařízení</translation>
 <translation id="3199127022143353223">Servery</translation>
+<translation id="3201306578844503970">Instalace virtuálního počítače se kvůli chybě sítě nezdařila. Zkuste to znovu, nebo kontaktujte administrátora zařízení ve své organizaci. Kód chyby: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Zde se budou zobrazovat dostupná zařízení USB.</translation>
 <translation id="3202131003361292969">Cesta</translation>
 <translation id="3202173864863109533">Zvuk této karty je vypnut.</translation>
@@ -1892,7 +1906,6 @@
 <translation id="3678156199662914018">Rozšíření: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Děkujeme vám za zpětnou vazbu. Nyní jste offline, zpráva bude odeslána později.</translation>
 <translation id="3682824389861648626">Limit pohybu</translation>
-<translation id="3683023058278427253">U vaší domény jsme zjistili několik typů licencí. Chcete-li pokračovat, vyberte jeden typ.</translation>
 <translation id="3683524264665795342">Požadavek na sdílení obrazovky s aplikací <ph name="APP_NAME" /></translation>
 <translation id="368789413795732264">Došlo k chybě při pokusu o zápis souboru: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Zapisovat do souborů a složek, které v aplikaci otevřete</translation>
@@ -2066,6 +2079,7 @@
 <translation id="389589731200570180">Sdílet s hosty</translation>
 <translation id="389901847090970821">Vybrat klávesnici</translation>
 <translation id="3899879303189199559">Offline déle než rok</translation>
+<translation id="3900789207771372462">Některá rozšíření mají přístup k vaší aktivitě prohlížení, včetně osobních údajů.</translation>
 <translation id="3900966090527141178">Export hesel</translation>
 <translation id="3901991538546252627">Připojování k síti <ph name="NAME" /></translation>
 <translation id="3905761538810670789">Opravit aplikaci</translation>
@@ -2155,7 +2169,6 @@
 <translation id="4013132157686828973">Probíhá ladění tohoto prohlížeče nástrojem <ph name="CLIENT_NAME" /></translation>
 <translation id="4014432863917027322">Opravit rozšíření <ph name="EXTENSION_NAME" />?</translation>
 <translation id="4015163439792426608">Používáte rozšíření? <ph name="BEGIN_LINK" />Spravujte rozšíření<ph name="END_LINK" /> snadno na jednom místě.</translation>
-<translation id="4020106588733303597">Jejda, dostupné licence se nepodařilo načíst.</translation>
 <translation id="4020327272915390518">Nabídka možností</translation>
 <translation id="4021279097213088397">−</translation>
 <translation id="4022426551683927403">Přid&amp;at do slovníku</translation>
@@ -2193,6 +2206,7 @@
 <translation id="407520071244661467">Měřítko</translation>
 <translation id="4075639477629295004">Soubor <ph name="FILE_NAME" /> nelze odeslat.</translation>
 <translation id="4077917118009885966">Na tomto webu jsou blokovány reklamy</translation>
+<translation id="4077919383365622693">Veškerá data a soubory cookie uložené webem <ph name="SITE" /> budou vymazány.</translation>
 <translation id="4079140982534148664">Použít vylepšenou kontrolu pravopisu</translation>
 <translation id="4081242589061676262">Soubor nelze odeslat.</translation>
 <translation id="4084682180776658562">Záložka</translation>
@@ -2267,6 +2281,7 @@
 <translation id="4181841719683918333">Jazyky</translation>
 <translation id="4184885522552335684">Obrazovku přesunete přetažením</translation>
 <translation id="4194570336751258953">Aktivovat kliknutí klepnutím</translation>
+<translation id="4194595472342532425">Nastavení Pluginu VM se kvůli problému s konfigurací nezdařilo. Kontaktujte administrátora zařízení ve své organizaci. Kód chyby: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Otevřít na nové kartě</translation>
 <translation id="4195814663415092787">Pokračovat tam, kde jste přestali</translation>
 <translation id="4198146608511578238">Chcete-li hovořit s Asistentem Google, stačí podržet ikonu Spouštěče.</translation>
@@ -2490,6 +2505,7 @@
 <translation id="4549791035683739768">V bezpečnostním klíči nejsou uloženy žádné otisky</translation>
 <translation id="4551763574344810652">Stisknutím <ph name="MODIFIER_KEY_DESCRIPTION" /> vrátíte provedenou akci zpět</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005">Síť: <ph name="NETWORK_TYPE" />, síla signálu: <ph name="SIGNAL_STRENGTH" /> %</translation>
 <translation id="4554591392113183336">Externí rozšíření má stejnou nebo nižší verzi než stávající.</translation>
 <translation id="4555769855065597957">Stín</translation>
 <translation id="4555863373929230635">Chcete-li hesla ukládat do účtu Google, přihlaste se a zapněte synchronizaci.</translation>
@@ -2567,6 +2583,7 @@
 <translation id="4665446389743427678">Veškerá data uložená webem <ph name="SITE" /> budou smazána.</translation>
 <translation id="4668721319092543482">Plugin <ph name="PLUGIN_NAME" /> aktivujete kliknutím</translation>
 <translation id="4672657274720418656">Zpracovat stránku</translation>
+<translation id="46733273239502219">Budou vymazána i offline data v nainstalovaných aplikacích</translation>
 <translation id="4673442866648850031">Při vyjmutí dotykového pera automaticky otevřít nástroje pro dotykové pero</translation>
 <translation id="4677585247300749148"><ph name="URL" /> chce reagovat na události přístupnosti</translation>
 <translation id="4677772697204437347">Paměť GPU</translation>
@@ -2658,7 +2675,6 @@
 <translation id="4823484602432206655">Čtení a změna nastavení zařízení a uživatele</translation>
 <translation id="4824958205181053313">Zrušit synchronizaci?</translation>
 <translation id="4827675678516992122">Nelze se připojit</translation>
-<translation id="4828937774870308359">Opačné</translation>
 <translation id="4829768588131278040">Nastavit PIN</translation>
 <translation id="4830502475412647084">Instalace aktualizace operačního systému</translation>
 <translation id="4830573902900904548">Váš <ph name="DEVICE_TYPE" /> se pomocí sítě <ph name="NETWORK_NAME" /> nemůže připojit k internetu. Zkuste prosím jinou síť. <ph name="LEARN_MORE_LINK_START" />Další informace<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2699,6 +2715,7 @@
 <translation id="4876273079589074638">Pomozte našim technikům prozkoumat toto selhání a odstranit jeho příčiny. Je-li to možné, přesně popište jednotlivé kroky. Důležité mohou být i nejmenší podrobnosti.</translation>
 <translation id="4876895919560854374">Uzamknutí a odemknutí obrazovky</translation>
 <translation id="4877276003880815204">Prozkoumat prvky</translation>
+<translation id="4878653975845355462">Administrátor vlastní pozadí vypnul</translation>
 <translation id="4879491255372875719">Automatické (výchozí)</translation>
 <translation id="4880328057631981605">Název přístupového bodu</translation>
 <translation id="4880827082731008257">Hledat v historii</translation>
@@ -2754,10 +2771,10 @@
 <translation id="4943691134276646401">Rozšíření <ph name="CHROME_EXTENSION_NAME" /> se chce připojit k sériovému portu</translation>
 <translation id="4944310289250773232">Tato ověřovací služba je hostována v doméně <ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">Akce</translation>
+<translation id="4952981627953231344">Plugin VM na tomto zařízení není povolen. Kontaktujte administrátora zařízení ve své organizaci.</translation>
 <translation id="4953689047182316270">Reagovat na události přístupnosti</translation>
 <translation id="4953808748584563296">Výchozí oranžový avatar</translation>
 <translation id="4955710816792587366">Zvolte kód PIN</translation>
-<translation id="4955814292505481804">Roční</translation>
 <translation id="4959262764292427323">Hesla se ukládají do vašeho účtu Google, abyste je mohli používat na všech zařízeních</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Tuto aplikaci nainstaloval administrátor.</translation>
@@ -3239,7 +3256,6 @@
 <translation id="5659593005791499971">E-mail</translation>
 <translation id="5659833766619490117">Tuto stránku se nepodařilo přeložit</translation>
 <translation id="5660204307954428567">Spárovat se zařízením <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Trvalá</translation>
 <translation id="5667546120811588575">Nastavování Google Play...</translation>
 <translation id="5669267381087807207">Probíhá aktivace</translation>
 <translation id="5669691691057771421">Zadejte nový PIN</translation>
@@ -3255,6 +3271,7 @@
 <translation id="5687326903064479980">Časové pásmo</translation>
 <translation id="5689516760719285838">Poloha</translation>
 <translation id="56907980372820799">Propojit data</translation>
+<translation id="5691180005790455277">Všechna data a soubory cookie uložené skupinou <ph name="SITE_GROUP_NAME" /> a pod ní spadajícími weby budou vymazány.</translation>
 <translation id="5691511426247308406">Rodina</translation>
 <translation id="5692183275898619210">Tisk dokončen</translation>
 <translation id="5696143504434933566">Nahlásit zneužití ze strany rozšíření <ph name="EXTENSION_NAME" /></translation>
@@ -3341,7 +3358,6 @@
 <translation id="5815645614496570556">Adresa X.400</translation>
 <translation id="5816434091619127343">Po provedení požadovaných změn by tiskárna nebyla použitelná.</translation>
 <translation id="5817918615728894473">Spárovat</translation>
-<translation id="5819762621475381970">– rozvržení vaší místnosti.</translation>
 <translation id="5821565227679781414">Vytvořit zástupce</translation>
 <translation id="5825412242012995131">Zapnout (doporučeno)</translation>
 <translation id="5826395379250998812">Propojte své zařízení <ph name="DEVICE_TYPE" /> s telefonem. <ph name="LINK_BEGIN" />Další informace<ph name="LINK_END" /></translation>
@@ -3477,6 +3493,7 @@
 <translation id="6007240208646052708">Hlasové vyhledávání ve vašem jazyce není k dispozici.</translation>
 <translation id="6009781704028455063">Integrovaný senzor</translation>
 <translation id="6010869025736512584">Přístup k vstupu videa</translation>
+<translation id="6011074160056912900">Síť Ethernet</translation>
 <translation id="6011193465932186973">Otisk prstu</translation>
 <translation id="6011449291337289699">Vymazání dat webu</translation>
 <translation id="6015266928248016057">Neplatný kód PUK. Zbývající pokusy: <ph name="RETRIES" />.</translation>
@@ -3513,6 +3530,7 @@
 <translation id="6053401458108962351">&amp;Vymazat údaje o prohlížení...</translation>
 <translation id="6055171183283175969">Zadané heslo je nesprávné.</translation>
 <translation id="6055392876709372977">Šifrování PKCS #1 SHA-256 s RSA</translation>
+<translation id="6055907707645252013">Síť: <ph name="NETWORK_TYPE" />, nepřipojeno</translation>
 <translation id="6056710589053485679">Běžné opětovné načtení</translation>
 <translation id="6057381398996433816">Tomuto webu bylo zablokováno používání senzorů pohybu a osvětlení.</translation>
 <translation id="6058567592298841668">Pluginový virtuální počítač: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3576,6 +3594,7 @@
 <translation id="6136114942382973861">Zavřít lištu se staženými soubory</translation>
 <translation id="6137767437444130246">Certifikát uživatele</translation>
 <translation id="6138680304137685902">Podpis X9.62 ECDSA s SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, žádná síť</translation>
 <translation id="6141988275892716286">Potvrzení stahování</translation>
 <translation id="6143186082490678276">Zobrazit nápovědu</translation>
 <translation id="6144938890088808325">Pomozte nám Chromebooky zlepšit</translation>
@@ -3882,6 +3901,7 @@
 <translation id="6602956230557165253">K navigaci použijte šipky vlevo a vpravo.</translation>
 <translation id="6605847144724004692">Zatím neohodnoceno žádnými uživateli.</translation>
 <translation id="6607831829715835317">Další nástro&amp;je</translation>
+<translation id="6611972847767394631">Zde naleznete své karty</translation>
 <translation id="6612358246767739896">Chráněný obsah</translation>
 <translation id="6615455863669487791">Ukázat</translation>
 <translation id="6618097958368085618">Přesto ponechat</translation>
@@ -3950,6 +3970,7 @@
 <translation id="6709133671862442373">Zprávy</translation>
 <translation id="6709357832553498500">Připojit pomocí rozšíření <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Předchozí</translation>
+<translation id="6715803357256707211">Při instalaci aplikace pro Linux došlo k chybě. Podrobnosti zobrazíte kliknutím na oznámení.</translation>
 <translation id="6721678857435001674">Zobrazení modelu a značky vašeho bezpečnostního klíče</translation>
 <translation id="6721972322305477112">&amp;Soubor</translation>
 <translation id="672213144943476270">Před zahájením procházení v režimu hosta prosím odemkněte svůj profil.</translation>
@@ -3974,7 +3995,6 @@
 <translation id="674632704103926902">Aktivovat přetažení klepnutím</translation>
 <translation id="6748217015615267851">Modul vykreslení: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Můžete pokračovat. Obnoví se však pouze synchronizovaná data a nastavení. Veškerá místní data budou ztracena.</translation>
-<translation id="6748775883310276718">Terminál – jedna aplikace</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Anonymní režim)</translation>
 <translation id="6757101664402245801">Adresa URL byla zkopírována</translation>
 <translation id="6758056191028427665">Sdělte nám, jak si vedeme.</translation>
@@ -3984,6 +4004,7 @@
 <translation id="6769712124046837540">Přidávání tiskárny...</translation>
 <translation id="6770664076092644100">Ověřit přes NFC</translation>
 <translation id="6771503742377376720">Je certifikační autorita</translation>
+<translation id="6772339735733515807">Správa rozšíření</translation>
 <translation id="6775163072363532304">Zde se budou zobrazovat dostupná zařízení.</translation>
 <translation id="6777817260680419853">Bylo zablokováno přesměrování</translation>
 <translation id="6778737459546443941">Rodič ti přístup na web dosud neschválil.</translation>
@@ -4122,6 +4143,7 @@
 <translation id="6972180789171089114">Zvuk/video</translation>
 <translation id="6972553992270299730">Web <ph name="ORIGIN" /> soubory v této složce nemůže otevřít, protože tato složka obsahuje systémové soubory</translation>
 <translation id="6972754398087986839">Začínáme</translation>
+<translation id="6973611239564315524">Je k dispozici upgrade na Debian 10 (Buster)</translation>
 <translation id="6974609594866392343">Ukázkový režim offline</translation>
 <translation id="6977381486153291903">Revize firmwaru</translation>
 <translation id="6978121630131642226">Vyhledávače</translation>
@@ -4581,6 +4603,7 @@
 <translation id="7644543211198159466">Barva a motiv</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (vlastník)</translation>
 <translation id="7645681574855902035">Zálohování kontejneru systému Linux se ruší</translation>
+<translation id="7646772052135772216">Synchronizace hesel nefunguje</translation>
 <translation id="7647403192093989392">Žádné nedávné aktivity</translation>
 <translation id="7648992873808071793">Ukládat soubory v tomto zařízení</translation>
 <translation id="7649070708921625228">Nápověda</translation>
@@ -4769,6 +4792,7 @@
 <translation id="7877451762676714207">Neznámá chyba serveru. Zkuste to prosím znovu, nebo kontaktujte správce serveru.</translation>
 <translation id="7877680364634660272">Prohlídka</translation>
 <translation id="7878562273885520351">Heslo může být prolomeno</translation>
+<translation id="7879631849810108578">Byla nastavena zkratka: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Při restartu se vymažou místní data</translation>
 <translation id="7881483672146086348">Zobrazit účet</translation>
 <translation id="7882358943899516840">Typ poskytovatele</translation>
@@ -4855,6 +4879,7 @@
 <translation id="7987814697832569482">Vždy se připojovat prostřednictvím této sítě VPN</translation>
 <translation id="7988355189918024273">Aktivovat funkce usnadnění přístupu</translation>
 <translation id="7991296728590311172">Nastavení přístupu pomocí přepínačů</translation>
+<translation id="7994350303002908848">Plugin VM nebylo možné nainstalovat. Zkuste to znovu, nebo kontaktujte administrátora zařízení ve své organizaci. Kód chyby: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">Metoda EAP</translation>
 <translation id="7997826902155442747">Priorita procesu</translation>
 <translation id="7999229196265990314">Byly vytvořeny následující soubory:
@@ -4947,7 +4972,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Žádné soubory cookie třetích stran}=1{1 soubor cookie třetí strany je blokován}few{# soubory cookie třetích stran jsou blokovány}many{# souboru cookie třetích stran je blokováno}other{# souborů cookie třetích stran je blokováno}}</translation>
 <translation id="810875025413331850">V okolí nebyla nalezena žádná zařízení.</translation>
 <translation id="8111155949205007504">Sdílejte toto heslo se svým iPhonem</translation>
-<translation id="8113043281354018522">Vyberte typ licence</translation>
 <translation id="8114875720387900039">Vodorovně rozdělit</translation>
 <translation id="8116972784401310538">&amp;Správce záložek</translation>
 <translation id="8117620576188476503">Na stavovém panelu můžete spravovat připojení, aktualizace a nastavení. Chcete-li se sem dostat pomocí klávesnice, stiskněte Alt + Shift + S.</translation>
@@ -5103,6 +5127,7 @@
 <translation id="8327039559959785305">Při připojování souborů systému Linux došlo k chybě. Zkuste to znovu.</translation>
 <translation id="8335587457941836791">Uvolnit z poličky</translation>
 <translation id="8336407002559723354">Konec aktualizací: <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Chcete-li text systému zobrazovat v jazyce <ph name="LANGUAGE" />, restartujte zařízení</translation>
 <translation id="8336739000755212683">Změnit obrázek účtu zařízení</translation>
 <translation id="8337047789441383384">Tento bezpečnostní klíč jste už zaregistrovali. Není potřeba ho registrovat znovu.</translation>
 <translation id="8338952601723052325">Webové stránky pro vývojáře</translation>
@@ -5146,6 +5171,7 @@
 <translation id="8400146488506985033">Správa uživatelů</translation>
 <translation id="8401432541486058167">Zadejte kód PIN přidružený k vaší chytré kartě.</translation>
 <translation id="8405046151008197676">Zobrazit hlavní změny v poslední aktualizaci</translation>
+<translation id="8408068190360279472">Síť: <ph name="NETWORK_TYPE" />, připojování</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Nejprve se dotázat (doporučeno)</translation>
 <translation id="8418445294933751433">Zobrazit jako kartu</translation>
@@ -5435,6 +5461,7 @@
 <translation id="8807632654848257479">Stabilní</translation>
 <translation id="8808478386290700967">Obchod Chrome</translation>
 <translation id="8808686172382650546">Kočka</translation>
+<translation id="8808744862003883508">Na této stránce naleznete všechna rozšíření nainstalovaná v Chromu.</translation>
 <translation id="8809147117840417135">Světle tyrkysová</translation>
 <translation id="8813698869395535039">Přihlášení k účtu <ph name="USERNAME" /> se nezdařilo</translation>
 <translation id="8813811964357448561">list papíru</translation>
@@ -5662,7 +5689,6 @@
 <translation id="9121814364785106365">Otevřít jako připnutou kartu</translation>
 <translation id="9122176249172999202">Prohlížeč <ph name="IDS_SHORT_PRODUCT_NAME" /> je pozastaven</translation>
 <translation id="9124003689441359348">Zde se zobrazí uložená hesla</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (zbývá <ph name="LICENSE_COUNT" />)</translation>
 <translation id="9128317794749765148">Instalaci nebylo možné dokončit</translation>
 <translation id="9128870381267983090">Připojit k síti</translation>
 <translation id="9130015405878219958">Byl zadán neplatný režim.</translation>
@@ -5701,6 +5727,7 @@
 <translation id="9188732951356337132">Odesílat údaje o využití a diagnostice. Toto zařízení aktuálně automaticky odesílá do Googlu diagnostické údaje a údaje o zařízení a využití. Tyto údaje nebudou používány ke zjištění totožnosti dítěte a pomohou nám se zvyšováním stability systému a aplikací a dalšími vylepšeními. Některá souhrnná data budou moci využít také naši partneři, např. vývojáři aplikací pro Android. Pokud má dítě zapnuté dodatečné nastavení Aktivita na webu a v aplikacích, mohou se tato data ukládat do jeho účtu Google. <ph name="BEGIN_LINK2" />Další informace<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + předsdílený klíč</translation>
 <translation id="920045321358709304">Hledat pomocí vyhledávače <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">Veškerá data offline budou vymazána</translation>
 <translation id="9201220332032049474">Možnosti zámku obrazovky</translation>
 <translation id="9203398526606335860">&amp;Profilování povoleno</translation>
 <translation id="9203904171912129171">Vyberte zařízení</translation>
@@ -5713,6 +5740,7 @@
 <translation id="9220525904950070496">Odebrat účet</translation>
 <translation id="9220820413868316583">Zdvihněte prst a zkuste to znovu.</translation>
 <translation id="923467487918828349">Zobrazit vše</translation>
+<translation id="929117907539171075">Budou vymazána i offline data v nainstalované aplikaci</translation>
 <translation id="930268624053534560">Podrobná časová razítka</translation>
 <translation id="932327136139879170">Domovská stránka</translation>
 <translation id="932508678520956232">Tisk nelze zahájit.</translation>
@@ -5738,6 +5766,7 @@
 <translation id="960719561871045870">Kód operátora</translation>
 <translation id="960987915827980018">Zbývá přibližně hodina</translation>
 <translation id="962802172452141067">Strom seznamu záložek</translation>
+<translation id="964057662886721376">Některá rozšíření mohou prohlížeč zpomalovat – zejména ta, která jste nainstalovat nechtěli.</translation>
 <translation id="964286338916298286">Váš správce IT pro toto zařízení využití promoakcí Chrome Goodies zakázal.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Aplikace}few{Aplikace}many{Aplikace}other{Aplikace}}</translation>
 <translation id="965211523698323809">Odesílejte a přijímejte na zařízení <ph name="DEVICE_TYPE" /> textové zprávy. <ph name="LINK_BEGIN" />Další informace<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb
index 643dd31..e6053e2 100644
--- a/chrome/app/resources/generated_resources_da.xtb
+++ b/chrome/app/resources/generated_resources_da.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Tilpasset</translation>
 <translation id="1178581264944972037">Pause</translation>
 <translation id="117916940443676133">Din sikkerhedsnøgle er ikke beskyttet med en pinkode. Opret en pinkode for at administrere logindata.</translation>
-<translation id="118069123878619799">– dine fysiske træk som f.eks. højde</translation>
 <translation id="1181037720776840403">Fjern</translation>
 <translation id="1183237619868651138"><ph name="EXTERNAL_CRX_FILE" /> kan ikek indstalleres i den lokale cache.</translation>
 <translation id="1185924365081634987">Du kan også prøve at <ph name="GUEST_SIGNIN_LINK_START" />anvende som gæst<ph name="GUEST_SIGNIN_LINK_END" /> for at udbedre denne netværksfejl.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">Venter på <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> andre tilgængelige enheder.</translation>
 <translation id="1495677929897281669">Tilbage til fanen</translation>
+<translation id="1499271269825557605">Hvis du ikke kan genkende en udvidelse, eller hvis din browser ikke fungerer som forventet, kan du deaktivere eller tilpasse udvidelser her.</translation>
 <translation id="1500297251995790841">Ukendt enhed [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Denne ejerkonto skal være den første konto, der logges ind på i en loginsession med flere brugere.</translation>
 <translation id="150411034776756821">Fjern <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Denne side er blokeret fra at få adgang til dit kamera.</translation>
 <translation id="1507246803636407672">&amp;Kasser</translation>
 <translation id="1508491105858779599">Placer fingeren på fingeraftrykslæseren for at låse enheden op.</translation>
+<translation id="1508575541972276599">Den aktuelle version er Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">Få adgang til enhver <ph name="DEVICE_NAME_AND_VENDOR" /> via USB</translation>
 <translation id="150962533380566081">Ugyldig PUK-kode.</translation>
 <translation id="1510030919967934016">Dette website kan ikke spore din placering.</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">Anvend</translation>
 <translation id="1603914832182249871">(Inkognito)</translation>
 <translation id="1604432177629086300">Kunne ikke udskrive. Tjek printeren, og prøv igen.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: Synkronisering af adgangskoder fungerer ikke</translation>
 <translation id="1607139524282324606">Ryd indtastning</translation>
 <translation id="1608626060424371292">Fjern denne bruger</translation>
 <translation id="1608668830839595724">Flere handlinger for de valgte elementer</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">Hostede appdata</translation>
 <translation id="1776712937009046120">Tilføj bruger</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Denne enhed administreres af <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    Klik på "Næste" for at fortsætte med at logge ind på din konto på din <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />-konto.</translation>
 <translation id="1779652936965200207">Angiv denne adgangsnøgle på "<ph name="DEVICE_NAME" />":</translation>
 <translation id="1780152987505130652">Luk gruppe</translation>
 <translation id="1781291988450150470">Aktuel pinkode</translation>
@@ -721,7 +725,7 @@
 <translation id="2016430552235416146">Traditionelt</translation>
 <translation id="2017334798163366053">Deaktiver registrering af data om ydeevne</translation>
 <translation id="2017836877785168846">Nulstiller historikken og autofuldførelser i adresselinjen.</translation>
-<translation id="2018352199541442911">Vi beklager, men din eksterne lagringsenhed understøttes ikke på nuværende tidspunkt.</translation>
+<translation id="2018352199541442911">Vi beklager, men din eksterne lagerenhed understøttes ikke på nuværende tidspunkt.</translation>
 <translation id="2019718679933488176">&amp;Åbn lyd på ny fane</translation>
 <translation id="2020183425253392403">Vis indstillinger for netværksadresser</translation>
 <translation id="2022953316617983419">QR-kode</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">Handlingen er ikke tilgængelig</translation>
 <translation id="2050339315714019657">Stående</translation>
 <translation id="2053312383184521053">Data for inaktiv tilstand</translation>
+<translation id="2055585478631012616">Du logges ud af disse websites, også i åbne faner</translation>
 <translation id="205560151218727633">Google Assistent-logo</translation>
 <translation id="2058456167109518507">Der blev registreret en enhed</translation>
 <translation id="2059913712424898428">Tidszone</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">Fortryd</translation>
 <translation id="2080070583977670716">Flere indstillinger</translation>
 <translation id="2087822576218954668">Udskrift: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN-netværk</translation>
 <translation id="2089566709556890888">Brug internettet sikkert med Google Chrome</translation>
 <translation id="2089795179672254991">Spørg, når et website vil se tekst og billeder, der er kopieret til udklipsholderen (anbefales)</translation>
 <translation id="2090165459409185032">Du gendanner dine kontooplysninger ved at gå til: google.com/accounts/recovery</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">Et website har adgang til lyd- og videoinput</translation>
 <translation id="2379281330731083556">Dialogboks til Udskriv via system... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Spørg inden afsendelse (anbefales)</translation>
+<translation id="2382818385048255866">Tjek dine udvidelser</translation>
 <translation id="2384436799579181135">Der opstod en fejl. Tjek din printer, og prøv igen.</translation>
 <translation id="2387458720915042159">Proxy-forbindelsestype</translation>
 <translation id="2391419135980381625">Standardskriftstørrelse</translation>
@@ -1036,6 +1043,7 @@
 <translation id="2462724976360937186">Nøgle-id for certifikatautoritet</translation>
 <translation id="2462752602710430187"><ph name="PRINTER_NAME" /> blev tilføjet</translation>
 <translation id="2464089476039395325">HTTP-proxy</translation>
+<translation id="2467267713099745100"><ph name="NETWORK_TYPE" />-netværk, deaktiveret</translation>
 <translation id="2468205691404969808">Bruger cookies til at huske dine indstillinger, også selvom du ikke besøger siderne</translation>
 <translation id="2468402215065996499">Tamagotchi</translation>
 <translation id="2469259292033957819">Du har ingen gemte printere.</translation>
@@ -1290,6 +1298,7 @@
 <translation id="2800760947029405028">Upload et billede</translation>
 <translation id="2803375539583399270">Angiv pinkode</translation>
 <translation id="2804043232879091219">Den alternative browser kunne ikke åbnes</translation>
+<translation id="2804667941345577550">Du logges ud af dette website, også i åbne faner.</translation>
 <translation id="2804680522274557040">Kameraet er deaktiveret</translation>
 <translation id="2805646850212350655">Filsystem til Microsoft-kryptering</translation>
 <translation id="2805756323405976993">Apps</translation>
@@ -1297,6 +1306,7 @@
 <translation id="2806891468525657116">Genvejen findes allerede</translation>
 <translation id="2807517655263062534">Dine downloadede filer vises her</translation>
 <translation id="2809586584051668049">og <ph name="NUMBER_ADDITIONAL_DISABLED" /> mere</translation>
+<translation id="2810390687497823527">Hvis du ikke kan genkende en udvidelse, eller hvis din browser ikke fungerer som forventet, kan du deaktivere eller tilpasse udvidelser her.</translation>
 <translation id="2812049959647166806">Thunderbolt understøttes ikke</translation>
 <translation id="2812944337881233323">Prøv at logge ud og ind igen.</translation>
 <translation id="2812989263793994277">Vis ikke billeder</translation>
@@ -1336,6 +1346,7 @@
 <translation id="2861941300086904918">Sikkerhedsadministrator for Native Client</translation>
 <translation id="2864601841139725659">Vælg profilbillede</translation>
 <translation id="2865919525181940183">Screenshot af de programmer, der lige nu er på skærmen</translation>
+<translation id="286674810810214575">Tjekker strømkilder...</translation>
 <translation id="2867768963760577682">Åbn som fastgjort fane</translation>
 <translation id="2868746137289129307">Denne udvidelse er forældet og deaktiveret af virksomhedspolitikken. Den kan aktiveres automatisk, når en nyere version er tilgængelig.</translation>
 <translation id="2870560284913253234">Website</translation>
@@ -1413,6 +1424,7 @@
 <translation id="2972581237482394796">&amp;Annuller fortryd</translation>
 <translation id="2973324205039581528">Slå lyden fra på dette website</translation>
 <translation id="2977480621796371840">Fjern fra gruppe</translation>
+<translation id="2979520980928493164">Et sundere og bedre Chrome</translation>
 <translation id="2979639724566107830">Åbn i nyt vindue</translation>
 <translation id="2981113813906970160">Vis stor musemarkør</translation>
 <translation id="2982970937345031">Rapportér anonymt</translation>
@@ -1519,6 +1531,7 @@
 <translation id="3143515551205905069">Annuller synkronisering</translation>
 <translation id="3143754809889689516">Afspil fra begyndelsen</translation>
 <translation id="3144647712221361880">Åbn linket som</translation>
+<translation id="3145187901750964977">Den virtuelle maskine kunne ikke installeres. Prøv igen, eller kontakt din organisations enhedsadministrator. Fejlkode: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Version:
     <ph name="LINUX_VERSION" />
 
@@ -1557,6 +1570,7 @@
 <translation id="3192947282887913208">Lydfiler</translation>
 <translation id="3194737229810486521"><ph name="URL" /> anmoder om at gemme data permanent på din enhed</translation>
 <translation id="3199127022143353223">Servere</translation>
+<translation id="3201306578844503970">Den virtuelle maskine kunne ikke installeres på grund af en netværksfejl. Prøv igen, eller kontakt din organisations enhedsadministrator. Fejlkode: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Tilgængelige USB-enheder vises her.</translation>
 <translation id="3202131003361292969">Sti</translation>
 <translation id="3202173864863109533">Denne fanes lyd er slået fra.</translation>
@@ -1893,7 +1907,6 @@
 <translation id="3678156199662914018">Udvidelse: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Tak for din feedback. Du er offline nu, og din rapport sendes senere.</translation>
 <translation id="3682824389861648626">Grænse for bevægelse</translation>
-<translation id="3683023058278427253">Vi har registreret flere licenstyper for dit domæne. Vælg én for at fortsætte.</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> anmoder om at dele din skærm</translation>
 <translation id="368789413795732264">Der opstod en fejl under forsøg på at skrive filen: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Skrive til filer og mapper, som du åbner i applikationen</translation>
@@ -2067,6 +2080,7 @@
 <translation id="389589731200570180">Del med gæster</translation>
 <translation id="389901847090970821">Vælg tastatur</translation>
 <translation id="3899879303189199559">Offline i mere end et år</translation>
+<translation id="3900789207771372462">Nogle udvidelser har adgang til din browseraktivitet, bl.a. personlige oplysninger.</translation>
 <translation id="3900966090527141178">Eksportér adgangskoder</translation>
 <translation id="3901991538546252627">Opretter forbindelse til <ph name="NAME" /></translation>
 <translation id="3905761538810670789">Reparer appen</translation>
@@ -2157,7 +2171,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" er ved at rette fejl i denne browser</translation>
 <translation id="4014432863917027322">Vil du reparere "<ph name="EXTENSION_NAME" />"?</translation>
 <translation id="4015163439792426608">Har du nogen udvidelser? <ph name="BEGIN_LINK" />Administrer nemt dine udvidelser<ph name="END_LINK" /> fra ét sted.</translation>
-<translation id="4020106588733303597">Ups! Systemet kunne ikke indlæse tilgængelige licenser.</translation>
 <translation id="4020327272915390518">Menuen Valgmuligheder</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Føj til ordbog</translation>
@@ -2195,6 +2208,7 @@
 <translation id="407520071244661467">Skaler</translation>
 <translation id="4075639477629295004"><ph name="FILE_NAME" /> kunne ikke castes.</translation>
 <translation id="4077917118009885966">Annoncer er blokeret på dette website</translation>
+<translation id="4077919383365622693">Alle data og cookies, der gemmes af <ph name="SITE" />, ryddes.</translation>
 <translation id="4079140982534148664">Brug forbedret stavekontrol</translation>
 <translation id="4081242589061676262">Filen kunne ikke castes.</translation>
 <translation id="4084682180776658562">Bogmærke</translation>
@@ -2269,6 +2283,7 @@
 <translation id="4181841719683918333">Sprog</translation>
 <translation id="4184885522552335684">Træk for at flytte en skærm</translation>
 <translation id="4194570336751258953">Aktivér berøringsklik</translation>
+<translation id="4194595472342532425">Plugin VM kunne ikke konfigureres på grund af et konfigurationsproblem. Kontakt din organisations enhedsadministrator. Fejlkode: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Åbn på ny fane</translation>
 <translation id="4195814663415092787">Fortsæt, hvor du slap</translation>
 <translation id="4198146608511578238">Du skal bare holde Starter-ikonet nede for at tale til Google-assistenten.</translation>
@@ -2492,6 +2507,7 @@
 <translation id="4549791035683739768">Der er ikke gemt nogen fingeraftryk i din sikkerhedsnøgle</translation>
 <translation id="4551763574344810652">Tryk på <ph name="MODIFIER_KEY_DESCRIPTION" /> for at fortryde</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005"><ph name="NETWORK_TYPE" />-netværk, signalstyrke <ph name="SIGNAL_STRENGTH" /> %</translation>
 <translation id="4554591392113183336">Ekstern udvidelse er den samme version eller en ældre version end den eksisterende.</translation>
 <translation id="4555769855065597957">Skygge</translation>
 <translation id="4555863373929230635">Du skal logge på og aktivere synkronisering for at gemme adgangskoder på din Google-konto.</translation>
@@ -2569,6 +2585,7 @@
 <translation id="4665446389743427678">Alle data, der gemmes af <ph name="SITE" />, slettes.</translation>
 <translation id="4668721319092543482">Klik for at aktivere <ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">Destiller side</translation>
+<translation id="46733273239502219">Offlinedata i installerede apps ryddes også</translation>
 <translation id="4673442866648850031">Åbn styluspenværktøjer, når styluspennen fjernes</translation>
 <translation id="4677585247300749148"><ph name="URL" /> anmoder om at reagere på handlinger foretaget i hjælpetilstand</translation>
 <translation id="4677772697204437347">GPU-hukommelse</translation>
@@ -2660,7 +2677,6 @@
 <translation id="4823484602432206655">Læs og rediger bruger- og enhedsindstillinger</translation>
 <translation id="4824958205181053313">Vil du annullere synkroniseringen?</translation>
 <translation id="4827675678516992122">Der kunne ikke oprettes forbindelse</translation>
-<translation id="4828937774870308359">Australsk</translation>
 <translation id="4829768588131278040">Konfiguration af pinkode</translation>
 <translation id="4830502475412647084">Installerer OS-opdateringen</translation>
 <translation id="4830573902900904548">Din <ph name="DEVICE_TYPE" /> kan ikke oprette forbindelse til internettet via <ph name="NETWORK_NAME" />. Vælg et andet netværk. <ph name="LEARN_MORE_LINK_START" />Få flere oplysninger<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2701,6 +2717,7 @@
 <translation id="4876273079589074638">Hjælp vores softwareudviklere med at undersøge og løse dette nedbrud. Angiv så vidt muligt præcist, hvad du gjorde. Alle detaljer er vigtige.</translation>
 <translation id="4876895919560854374">Låse skærmen/låse skærmen op</translation>
 <translation id="4877276003880815204">Inspect Elements (Undersøg elementer)</translation>
+<translation id="4878653975845355462">Tilpassede baggrunde er blevet deaktiveret af din administrator</translation>
 <translation id="4879491255372875719">Automatisk (standard)</translation>
 <translation id="4880328057631981605">Navn på adgangspunkt</translation>
 <translation id="4880827082731008257">Søg i historikken</translation>
@@ -2756,10 +2773,10 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" anmoder om at oprette forbindelse til en seriel port</translation>
 <translation id="4944310289250773232">Denne godkendelsestjeneste hostes af <ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">Handlinger</translation>
+<translation id="4952981627953231344">Plugin VM er ikke tilladt på denne enhed. Kontakt din organisations enhedsadministrator.</translation>
 <translation id="4953689047182316270">Reagere på hændelser med hjælpefunktioner</translation>
 <translation id="4953808748584563296">Orange standardavatar</translation>
 <translation id="4955710816792587366">Vælg din pinkode</translation>
-<translation id="4955814292505481804">Årligt</translation>
 <translation id="4959262764292427323">Adgangskoder gemmes på din Google-konto, så du kan bruge dem på enhver enhed</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Denne app blev installeret af din administrator.</translation>
@@ -3055,7 +3072,7 @@
 <translation id="5419405654816502573">Voice Match</translation>
 <translation id="5420438158931847627">Bestemmer skarpheden af tekst og billeder</translation>
 <translation id="5422221874247253874">Adgangspunkt</translation>
-<translation id="5422781158178868512">Vi beklager, men din eksterne lagringsenhed kunne ikke genkendes.</translation>
+<translation id="5422781158178868512">Vi beklager, men din eksterne lagerenhed kunne ikke genkendes.</translation>
 <translation id="5423829801105537712">Grundlæggende stavekontrol</translation>
 <translation id="5423849171846380976">Aktiveret</translation>
 <translation id="5425042808445046667">Fortsæt download</translation>
@@ -3241,7 +3258,6 @@
 <translation id="5659593005791499971">Mail</translation>
 <translation id="5659833766619490117">Denne side kunne ikke oversættes</translation>
 <translation id="5660204307954428567">Par med <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Bestandig</translation>
 <translation id="5667546120811588575">Konfigurerer Google Play...</translation>
 <translation id="5669267381087807207">Aktiverer</translation>
 <translation id="5669691691057771421">Angiv ny pinkode</translation>
@@ -3257,6 +3273,7 @@
 <translation id="5687326903064479980">Tidszone</translation>
 <translation id="5689516760719285838">Placering</translation>
 <translation id="56907980372820799">Link data</translation>
+<translation id="5691180005790455277">Alle data og cookies, der gemmes af <ph name="SITE_GROUP_NAME" />, og eventuelle sider under denne gruppe af websites ryddes.</translation>
 <translation id="5691511426247308406">Familie</translation>
 <translation id="5692183275898619210">Udskrivning er gennemført</translation>
 <translation id="5696143504434933566">Rapportér misbrug fra "<ph name="EXTENSION_NAME" />"</translation>
@@ -3343,7 +3360,6 @@
 <translation id="5815645614496570556">X.400-adresse</translation>
 <translation id="5816434091619127343">De printerændringer, du har anmodet om, vil gøre printeren ubrugelig.</translation>
 <translation id="5817918615728894473">Start parring</translation>
-<translation id="5819762621475381970">– layoutet af dit rum</translation>
 <translation id="5821565227679781414">Opret genvej</translation>
 <translation id="5825412242012995131">Til (anbefales)</translation>
 <translation id="5826395379250998812">Opret forbindelse til <ph name="DEVICE_TYPE" /> med din telefon. <ph name="LINK_BEGIN" />Få flere oplysninger<ph name="LINK_END" /></translation>
@@ -3479,6 +3495,7 @@
 <translation id="6007240208646052708">Talesøgning er ikke tilgængelig på dit sprog.</translation>
 <translation id="6009781704028455063">Indbygget sensor</translation>
 <translation id="6010869025736512584">Åbner videoinput</translation>
+<translation id="6011074160056912900">Ethernet-netværk</translation>
 <translation id="6011193465932186973">Fingeraftryk</translation>
 <translation id="6011449291337289699">Ryd websitedata</translation>
 <translation id="6015266928248016057">PUK-koden er ugyldig. Antal resterende forsøg: <ph name="RETRIES" />.</translation>
@@ -3515,6 +3532,7 @@
 <translation id="6053401458108962351">&amp;Slet browserdata...</translation>
 <translation id="6055171183283175969">Den indtastede adgangskode er forkert.</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 med RSA-kryptering</translation>
+<translation id="6055907707645252013"><ph name="NETWORK_TYPE" />-netværk, der er ikke oprettet forbindelse</translation>
 <translation id="6056710589053485679">Genindlæs som normalt</translation>
 <translation id="6057381398996433816">Dette website er blevet blokeret fra at anvende bevægelses- og lyssensorer.</translation>
 <translation id="6058567592298841668">Plugin for virtuel maskine: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3578,6 +3596,7 @@
 <translation id="6136114942382973861">Luk downloadlinje</translation>
 <translation id="6137767437444130246">Brugercertifikat</translation>
 <translation id="6138680304137685902">X9.62 ECDSA-signatur med SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, intet netværk</translation>
 <translation id="6141988275892716286">Bekræft download</translation>
 <translation id="6143186082490678276">Få hjælp</translation>
 <translation id="6144938890088808325">Hjælp os med at forbedre Chromebooks</translation>
@@ -3885,6 +3904,7 @@
 <translation id="6602956230557165253">Brug venstre og højre piletast til at navigere.</translation>
 <translation id="6605847144724004692">Endnu ikke bedømt af nogen brugere.</translation>
 <translation id="6607831829715835317">F&amp;lere værktøjer</translation>
+<translation id="6611972847767394631">Find dine faner her</translation>
 <translation id="6612358246767739896">Beskyttet indhold</translation>
 <translation id="6615455863669487791">Vis mig</translation>
 <translation id="6618097958368085618">Behold alligevel</translation>
@@ -3953,6 +3973,7 @@
 <translation id="6709133671862442373">Nyheder</translation>
 <translation id="6709357832553498500">Opret forbindelse ved hjælp af <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Forrige</translation>
+<translation id="6715803357256707211">Der opstod en fejl ved installationen af Linux-appen. Klik på notifikationen for at få flere oplysninger.</translation>
 <translation id="6721678857435001674">Se din sikkerhedsnøgles fabrikat og model</translation>
 <translation id="6721972322305477112">&amp;Fil</translation>
 <translation id="672213144943476270">Lås din profil op, før du kan bruge internettet som gæst.</translation>
@@ -3977,7 +3998,6 @@
 <translation id="674632704103926902">Aktivér tryk og træk</translation>
 <translation id="6748217015615267851">Gengivelse: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Du kan fortsætte, men kun dine synkroniserede data og indstillinger gendannes. Alle lokale data går tabt.</translation>
-<translation id="6748775883310276718">Terminal med enkelt app</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Inkognito)</translation>
 <translation id="6757101664402245801">Webadressen er kopieret</translation>
 <translation id="6758056191028427665">Fortæl os, hvad du synes.</translation>
@@ -3987,6 +4007,7 @@
 <translation id="6769712124046837540">Tilføjer printer...</translation>
 <translation id="6770664076092644100">Bekræft via NFC</translation>
 <translation id="6771503742377376720">Er en certificeringsautoritet</translation>
+<translation id="6772339735733515807">Styr dine udvidelser</translation>
 <translation id="6775163072363532304">Tilgængelige enheder vises her.</translation>
 <translation id="6777817260680419853">Omdirigeringen blev blokeret</translation>
 <translation id="6778737459546443941">Din forælder har ikke godkendt det endnu</translation>
@@ -4125,6 +4146,7 @@
 <translation id="6972180789171089114">Lyd/video</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> kan ikke åbne filer i denne mappe, da den indeholder systemfiler</translation>
 <translation id="6972754398087986839">Kom godt i gang</translation>
+<translation id="6973611239564315524">Der er en tilgængelig opdatering til Debian 10 (Buster)</translation>
 <translation id="6974609594866392343">Offline demotilstand</translation>
 <translation id="6977381486153291903">Firmwarerevision</translation>
 <translation id="6978121630131642226">Søgemaskiner</translation>
@@ -4584,6 +4606,7 @@
 <translation id="7644543211198159466">Farve og tema</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (ejer)</translation>
 <translation id="7645681574855902035">Annullerer Linux-sikkerhedskopiering</translation>
+<translation id="7646772052135772216">Synkronisering af adgangskoder fungerer ikke</translation>
 <translation id="7647403192093989392">Ingen nye aktiviteter</translation>
 <translation id="7648992873808071793">Gemme filer på denne enhed</translation>
 <translation id="7649070708921625228">Hjælp</translation>
@@ -4771,6 +4794,7 @@
 <translation id="7877451762676714207">Ukendt serverfejl. Prøv igen, eller kontakt serveradministratoren.</translation>
 <translation id="7877680364634660272">Rundvisning</translation>
 <translation id="7878562273885520351">Din adgangskode kan være kompromitteret</translation>
+<translation id="7879631849810108578">Genvejen blev indstillet: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Lokale data slettes, når du genstarter</translation>
 <translation id="7881483672146086348">Vis konto</translation>
 <translation id="7882358943899516840">Udbydertype</translation>
@@ -4857,6 +4881,7 @@
 <translation id="7987814697832569482">Opret altid forbindelse via dette VPN-netværk</translation>
 <translation id="7988355189918024273">Aktiver tilgængelighedsfunktioner</translation>
 <translation id="7991296728590311172">Indstillinger for kontaktadgang</translation>
+<translation id="7994350303002908848">Plugin VM kunne ikke installeres. Prøv igen, eller kontakt din organisations enhedsadministrator. Fejlkode: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">EAP-metode</translation>
 <translation id="7997826902155442747">Procesprioritet</translation>
 <translation id="7999229196265990314">Oprettede følgende filer:
@@ -4949,7 +4974,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Ingen tredjepartscookies}=1{1 tredjepartscookie er blokeret}one{# tredjepartscookie er blokeret}other{# tredjepartscookies er blokeret}}</translation>
 <translation id="810875025413331850">Der blev ikke fundet nogen enheder i nærheden.</translation>
 <translation id="8111155949205007504">Del denne adgangskode med din iPhone</translation>
-<translation id="8113043281354018522">Vælg licenstype</translation>
 <translation id="8114875720387900039">Opdel vandret</translation>
 <translation id="8116972784401310538">&amp;Bogmærkeadministrator</translation>
 <translation id="8117620576188476503">Administrer forbindelser, opdateringer og indstillinger med statusbakken. Du kan også bruge tastaturet ved at trykke på Alt+Shift+S.</translation>
@@ -5106,6 +5130,7 @@
 <translation id="8327039559959785305">Der opstod en fejl ved anvendelse af Linux-filer. Prøv igen.</translation>
 <translation id="8335587457941836791">Frigør fra hylden</translation>
 <translation id="8336407002559723354">Opdateringerne stopper <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Genstart enheden for at se systemtekst på <ph name="LANGUAGE" /></translation>
 <translation id="8336739000755212683">Skift kontobillede på enheden</translation>
 <translation id="8337047789441383384">Du har allerede registreret denne sikkerhedsnøgle. Du behøver ikke at registrere den igen.</translation>
 <translation id="8338952601723052325">Udviklerens website</translation>
@@ -5149,6 +5174,7 @@
 <translation id="8400146488506985033">Administrer personer</translation>
 <translation id="8401432541486058167">Brug den pinkode, der hører til dit chipkort.</translation>
 <translation id="8405046151008197676">Få højdepunkter fra den seneste opdatering</translation>
+<translation id="8408068190360279472"><ph name="NETWORK_TYPE" />-netværk, opretter forbindelse</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Spørg først (anbefales)</translation>
 <translation id="8418445294933751433">&amp;Vis som fane</translation>
@@ -5439,6 +5465,7 @@
 <translation id="8807632654848257479">Stabil</translation>
 <translation id="8808478386290700967">Webshop</translation>
 <translation id="8808686172382650546">Kat</translation>
+<translation id="8808744862003883508">På denne side kan du se alle de udvidelser, der er installeret i Chrome.</translation>
 <translation id="8809147117840417135">Lys turkis</translation>
 <translation id="8813698869395535039">Det var ikke muligt at logge ind på <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">papirark</translation>
@@ -5666,7 +5693,6 @@
 <translation id="9121814364785106365">Åbn som fastgjort fane</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> er sat på pause</translation>
 <translation id="9124003689441359348">Dine gemte adgangskoder vises her</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> tilbage)</translation>
 <translation id="9128317794749765148">Konfigurationen kunne ikke gennemføres</translation>
 <translation id="9128870381267983090">Opret forbindelse til netværk</translation>
 <translation id="9130015405878219958">Den angivne tilstand er ugyldig.</translation>
@@ -5705,6 +5731,7 @@
 <translation id="9188732951356337132">Send brugs- og diagnosticeringsdata. Denne enhed sender i øjeblikket automatisk diagnosticerings- og enhedsdata samt data om brug af apps til Google. Disse data bruges ikke til at identificere dit barn. De bruges kun til forbedring af bl.a. systemets og appens stabilitet. Visse samlede data hjælper også Google-apps og -partnere, f.eks. Android-udviklere. Hvis indstillingen til yderligere web- og appaktivitet er aktiveret for dit barn, gemmes disse data muligvis på barnets Google-konto. <ph name="BEGIN_LINK2" />Få flere oplysninger<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + forhåndsdelt nøgle</translation>
 <translation id="920045321358709304">Søg via <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">Alle offlinedata ryddes</translation>
 <translation id="9201220332032049474">Valgmuligheder for skærmlås</translation>
 <translation id="9203398526606335860">&amp;Profilering aktiveret</translation>
 <translation id="9203904171912129171">Vælg en enhed</translation>
@@ -5717,6 +5744,7 @@
 <translation id="9220525904950070496">Fjern konto</translation>
 <translation id="9220820413868316583">Løft fingeren, og prøv igen.</translation>
 <translation id="923467487918828349">Vis alle</translation>
+<translation id="929117907539171075">Offlinedata i den installerede app ryddes også</translation>
 <translation id="930268624053534560">Detaljerede tidsstempler</translation>
 <translation id="932327136139879170">Start</translation>
 <translation id="932508678520956232">Udskrivningen blev ikke startet.</translation>
@@ -5742,6 +5770,7 @@
 <translation id="960719561871045870">Operatørkode</translation>
 <translation id="960987915827980018">Omkring én time tilbage</translation>
 <translation id="962802172452141067">Bogmærkemappe i trævisning</translation>
+<translation id="964057662886721376">Nogle udvidelser kan nedsætte din hastighed. Dette er især tilfældet for dem, du ikke bevidst installerede.</translation>
 <translation id="964286338916298286">Din it-administrator har deaktiveret Chrome Goodies for din enhed.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{App}one{App}other{Apps}}</translation>
 <translation id="965211523698323809">Send og modtag sms-beskeder fra din <ph name="DEVICE_TYPE" /> <ph name="LINK_BEGIN" />Få flere oplysninger<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_de.xtb b/chrome/app/resources/generated_resources_de.xtb
index 5b05b7a3..3e312b1 100644
--- a/chrome/app/resources/generated_resources_de.xtb
+++ b/chrome/app/resources/generated_resources_de.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Benutzerdefiniert</translation>
 <translation id="1178581264944972037">Anhalten</translation>
 <translation id="117916940443676133">Ihr Sicherheitsschlüssel ist nicht durch eine PIN geschützt. Erstellen Sie zuerst eine PIN, um die Anmeldedaten zu verwalten.</translation>
-<translation id="118069123878619799">– physische Merkmale wie Ihre Größe</translation>
 <translation id="1181037720776840403">Entfernen</translation>
 <translation id="1183237619868651138"><ph name="EXTERNAL_CRX_FILE" /> kann nicht im lokalen Cache installiert werden.</translation>
 <translation id="1185924365081634987">Sie können auch <ph name="GUEST_SIGNIN_LINK_START" />als Gast surfen<ph name="GUEST_SIGNIN_LINK_END" />, um den Netzwerkfehler zu beheben.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">Warten auf <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> weitere Geräte verfügbar</translation>
 <translation id="1495677929897281669">Zurück zum Tab</translation>
+<translation id="1499271269825557605">Wenn Sie eine Erweiterung nicht wiedererkennen oder Ihr Browser nicht wie erwartet funktioniert, können Sie die Erweiterungen hier deaktivieren oder anpassen.</translation>
 <translation id="1500297251995790841">Unbekanntes Gerät [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Dieses Inhaberkonto muss in einer Sitzung mit Mehrfachanmeldung das erste angemeldete Konto sein.</translation>
 <translation id="150411034776756821"><ph name="SITE" /> entfernen</translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Diese Seite darf nicht auf Ihre Kamera zugreifen.</translation>
 <translation id="1507246803636407672">&amp;Verwerfen</translation>
 <translation id="1508491105858779599">Legen Sie den Finger auf den Fingerabdrucksensor, um das Gerät zu entsperren.</translation>
+<translation id="1508575541972276599">Aktuell verwenden Sie Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">Auf <ph name="DEVICE_NAME_AND_VENDOR" /> per USB zugreifen</translation>
 <translation id="150962533380566081">Ungültiger PUK.</translation>
 <translation id="1510030919967934016">Diese Seite darf Ihren Standort nicht verfolgen.</translation>
@@ -431,6 +432,7 @@
 <translation id="1601560923496285236">Übernehmen</translation>
 <translation id="1603914832182249871">(Anonym)</translation>
 <translation id="1604432177629086300">Drucken nicht möglich. Überprüfen Sie den Drucker und versuchen Sie es noch einmal.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: Passwortsynchronisierung funktioniert nicht</translation>
 <translation id="1607139524282324606">Eintrag löschen</translation>
 <translation id="1608626060424371292">Diesen Nutzer entfernen</translation>
 <translation id="1608668830839595724">Weitere Aktionen für ausgewählte Elemente</translation>
@@ -557,6 +559,8 @@
 <translation id="177336675152937177">Gehostete App-Daten</translation>
 <translation id="1776712937009046120">Nutzer hinzufügen</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Dieses Gerät wird von <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> verwaltet.
+    Klicken Sie auf "Weiter", um sich in Ihrem <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />-Konto anzumelden.</translation>
 <translation id="1779652936965200207">Bitte geben Sie diesen Zugangscode auf "<ph name="DEVICE_NAME" />" ein:</translation>
 <translation id="1780152987505130652">Gruppe schließen</translation>
 <translation id="1781291988450150470">Aktuelle PIN</translation>
@@ -744,6 +748,7 @@
 <translation id="2048653237708779538">Aktion nicht verfügbar</translation>
 <translation id="2050339315714019657">Hochformat</translation>
 <translation id="2053312383184521053">Daten für inaktiven Zustand</translation>
+<translation id="2055585478631012616">Sie werden von diesen Websites abgemeldet, auch in offenen Tabs</translation>
 <translation id="205560151218727633">Google Assistant-Logo</translation>
 <translation id="2058456167109518507">Gerät erkannt</translation>
 <translation id="2059913712424898428">Zeitzone</translation>
@@ -759,6 +764,7 @@
 <translation id="2079545284768500474">Rückgängig machen</translation>
 <translation id="2080070583977670716">Weitere Einstellungen</translation>
 <translation id="2087822576218954668">Drucken: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN-Netzwerk</translation>
 <translation id="2089566709556890888">Sicher surfen mit Google Chrome</translation>
 <translation id="2089795179672254991">Nachfragen, wenn eine Website Texte und Bilder aus der Zwischenablage abrufen möchte (empfohlen)</translation>
 <translation id="2090165459409185032">Besuchen Sie die folgende Seite, um Ihre Kontoinformationen wiederzuherstellen: google.com/accounts/recovery</translation>
@@ -982,6 +988,7 @@
 <translation id="2379232090534544565">Eine Website greift auf Ihre Audio- und Videoeingaben zu</translation>
 <translation id="2379281330731083556">Über das Systemdialogfeld drucken... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Vor dem Senden nachfragen (empfohlen)</translation>
+<translation id="2382818385048255866">Erweiterungen überprüfen</translation>
 <translation id="2384436799579181135">Ein Fehler ist aufgetreten. Bitte überprüfen Sie Ihren Drucker und versuchen Sie es noch einmal.</translation>
 <translation id="2387458720915042159">Proxy-Verbindungstyp</translation>
 <translation id="2391419135980381625">Standardschrift</translation>
@@ -1032,6 +1039,7 @@
 <translation id="2462724976360937186">Schlüssel-ID der Zertifizierungsstelle</translation>
 <translation id="2462752602710430187"><ph name="PRINTER_NAME" /> hinzugefügt</translation>
 <translation id="2464089476039395325">HTTP-Proxy</translation>
+<translation id="2467267713099745100">Netzwerk: <ph name="NETWORK_TYPE" />, deaktiviert</translation>
 <translation id="2468205691404969808">Zum Speichern Ihrer Einstellungen werden Cookies verwendet, auch wenn Sie diese Seiten nicht besuchen</translation>
 <translation id="2468402215065996499">Tamagotchi</translation>
 <translation id="2469259292033957819">Sie haben keine gespeicherten Drucker.</translation>
@@ -1286,6 +1294,7 @@
 <translation id="2800760947029405028">Bild hochladen</translation>
 <translation id="2803375539583399270">PIN eingeben</translation>
 <translation id="2804043232879091219">Der alternative Browser konnte nicht geöffnet werden</translation>
+<translation id="2804667941345577550">Sie werden von dieser Website abgemeldet, auch in offenen Tabs</translation>
 <translation id="2804680522274557040">Kamera ausgeschaltet</translation>
 <translation id="2805646850212350655">Verschlüsselndes Microsoft-Dateisystem</translation>
 <translation id="2805756323405976993">Apps</translation>
@@ -1293,6 +1302,7 @@
 <translation id="2806891468525657116">Verknüpfung ist bereits vorhanden</translation>
 <translation id="2807517655263062534">Hier werden heruntergeladene Dateien angezeigt</translation>
 <translation id="2809586584051668049">und <ph name="NUMBER_ADDITIONAL_DISABLED" /> weitere</translation>
+<translation id="2810390687497823527">Wenn Sie eine Erweiterung nicht wiedererkennen oder Ihr Browser nicht wie erwartet funktioniert, können Sie die Erweiterungen hier deaktivieren oder anpassen.</translation>
 <translation id="2812049959647166806">Thunderbolt wird nicht unterstützt</translation>
 <translation id="2812944337881233323">Melden Sie sich ab und dann wieder an</translation>
 <translation id="2812989263793994277">Keine Bilder anzeigen</translation>
@@ -1332,6 +1342,7 @@
 <translation id="2861941300086904918">Sicherheitsmanager für native Clients</translation>
 <translation id="2864601841139725659">Profilbild festlegen</translation>
 <translation id="2865919525181940183">Screenshot der Programme, die sich momentan auf dem Bildschirm befinden</translation>
+<translation id="286674810810214575">Stromquellen werden überprüft…</translation>
 <translation id="2867768963760577682">In angepinntem Tab öffnen</translation>
 <translation id="2868746137289129307">Diese Erweiterung ist veraltet und wurde aufgrund der Unternehmensrichtlinie deaktiviert. Die Erweiterung kann automatisch aktiviert werden, wenn eine neuere Version verfügbar ist.</translation>
 <translation id="2870560284913253234">Website</translation>
@@ -1409,6 +1420,7 @@
 <translation id="2972581237482394796">&amp;Wiederholen</translation>
 <translation id="2973324205039581528">Website stummschalten</translation>
 <translation id="2977480621796371840">Aus Gruppe entfernen</translation>
+<translation id="2979520980928493164">Ein sichereres, schnelleres Chrome</translation>
 <translation id="2979639724566107830">In neuem Fenster öffnen</translation>
 <translation id="2981113813906970160">Großen Cursor verwenden</translation>
 <translation id="2982970937345031">Anonym melden</translation>
@@ -1515,6 +1527,7 @@
 <translation id="3143515551205905069">Synchronisierung abbrechen</translation>
 <translation id="3143754809889689516">Von vorne abspielen</translation>
 <translation id="3144647712221361880">Link öffnen als</translation>
+<translation id="3145187901750964977">Die virtuelle Maschine konnte nicht installiert werden. Bitte versuchen Sie es noch einmal oder wenden Sie sich an den Geräteadministrator Ihrer Organisation. Fehlercode: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Version:
     <ph name="LINUX_VERSION" />
 
@@ -1553,6 +1566,7 @@
 <translation id="3192947282887913208">Audiodateien</translation>
 <translation id="3194737229810486521"><ph name="URL" /> möchte Daten dauerhaft auf Ihrem Gerät speichern</translation>
 <translation id="3199127022143353223">Server</translation>
+<translation id="3201306578844503970">Die virtuelle Maschine konnte wegen eines Netzwerkfehlers nicht installiert werden. Bitte versuchen Sie es noch einmal oder wenden Sie sich an den Geräteadministrator Ihrer Organisation. Fehlercode: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Verfügbare USB-Geräte werden hier angezeigt.</translation>
 <translation id="3202131003361292969">Pfad</translation>
 <translation id="3202173864863109533">Der Ton dieses Tabs wird stummgeschaltet.</translation>
@@ -1889,7 +1903,6 @@
 <translation id="3678156199662914018">Erweiterung: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Vielen Dank für Ihr Feedback. Sie sind jetzt offline und Ihr Bericht wird später versendet.</translation>
 <translation id="3682824389861648626">Grenzwert für Mausbewegungen</translation>
-<translation id="3683023058278427253">Wir haben mehrere Lizenztypen für Ihre Domain erkannt. Bitte wählen Sie einen aus, um fortzufahren.</translation>
 <translation id="3683524264665795342">Anfrage zur Bildschirmfreigabe durch <ph name="APP_NAME" /></translation>
 <translation id="368789413795732264">Beim Versuch, in die Datei <ph name="ERROR_TEXT" /> zu schreiben, ist ein Fehler aufgetreten.</translation>
 <translation id="3688507211863392146">In Dateien und Ordner schreiben, die Sie in der Anwendung öffnen</translation>
@@ -2063,6 +2076,7 @@
 <translation id="389589731200570180">Mit Gastnutzern teilen</translation>
 <translation id="389901847090970821">Tastatur auswählen</translation>
 <translation id="3899879303189199559">Seit über einem Jahr offline</translation>
+<translation id="3900789207771372462">Einige Erweiterungen haben Zugriff auf Ihre Browseraktivitäten – einschließlich personenbezogener Daten.</translation>
 <translation id="3900966090527141178">Passwörter exportieren</translation>
 <translation id="3901991538546252627">Verbindung mit <ph name="NAME" /> wird hergestellt.</translation>
 <translation id="3905761538810670789">App reparieren</translation>
@@ -2153,7 +2167,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" führt ein Debugging für diesen Browser durch</translation>
 <translation id="4014432863917027322">"<ph name="EXTENSION_NAME" />" reparieren?</translation>
 <translation id="4015163439792426608">Sie nutzen Erweiterungen? Diese können Sie jetzt <ph name="BEGIN_LINK" />ganz einfach an einem Ort verwalten<ph name="END_LINK" />.</translation>
-<translation id="4020106588733303597">Hoppla! Das System konnte keine verfügbaren Lizenzen laden.</translation>
 <translation id="4020327272915390518">Menü für Optionen</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Zum Wörterbuch hinzufügen</translation>
@@ -2191,6 +2204,7 @@
 <translation id="407520071244661467">Skalieren</translation>
 <translation id="4075639477629295004"><ph name="FILE_NAME" /> kann nicht gestreamt werden.</translation>
 <translation id="4077917118009885966">Werbung auf dieser Website blockiert</translation>
+<translation id="4077919383365622693">Alle von <ph name="SITE" /> gespeicherten Daten und Cookies werden gelöscht.</translation>
 <translation id="4079140982534148664">Erweiterte Rechtschreibprüfung verwenden</translation>
 <translation id="4081242589061676262">Datei kann nicht gestreamt werden.</translation>
 <translation id="4084682180776658562">Lesezeichen</translation>
@@ -2265,6 +2279,7 @@
 <translation id="4181841719683918333">Sprachen</translation>
 <translation id="4184885522552335684">Zum Verschieben des Bildschirms ziehen</translation>
 <translation id="4194570336751258953">Touchpad-Klick aktivieren</translation>
+<translation id="4194595472342532425">Plugin VM konnte aufgrund eines Konfigurationsproblems nicht eingerichtet werden. Bitte wenden Sie sich an den Geräteadministrator Ihrer Organisation. Fehlercode: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">In neuem Tab öffnen</translation>
 <translation id="4195814663415092787">Zuletzt angesehene Seiten öffnen</translation>
 <translation id="4198146608511578238">Halten Sie einfach das Launcher-Symbol gedrückt, um mit Ihrem Google Assistant zu sprechen.</translation>
@@ -2488,6 +2503,7 @@
 <translation id="4549791035683739768">Auf Ihrem Sicherheitsschlüssel sind keine Fingerabdrücke gespeichert</translation>
 <translation id="4551763574344810652">"<ph name="MODIFIER_KEY_DESCRIPTION" />" drücken, um Aktion rückgängig zu machen</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005">Netzwerk: <ph name="NETWORK_TYPE" />, Signalstärke: <ph name="SIGNAL_STRENGTH" /> %</translation>
 <translation id="4554591392113183336">Die Version der externen Erweiterung ist identisch mit der vorhandenen Version oder niedriger als diese.</translation>
 <translation id="4555769855065597957">Schatten</translation>
 <translation id="4555863373929230635">Melden Sie sich an und aktivieren Sie die Synchronisierung, um Passwörter in Ihrem Google-Konto zu speichern.</translation>
@@ -2565,6 +2581,7 @@
 <translation id="4665446389743427678">Alle von <ph name="SITE" /> gespeicherten Daten werden gelöscht.</translation>
 <translation id="4668721319092543482">Zum Aktivieren von <ph name="PLUGIN_NAME" /> klicken</translation>
 <translation id="4672657274720418656">Seite konvertieren</translation>
+<translation id="46733273239502219">Offlinedaten in installierten Apps werden auch gelöscht</translation>
 <translation id="4673442866648850031">Eingabestift-Tools werden automatisch geöffnet, sobald der Eingabestift entfernt wird</translation>
 <translation id="4677585247300749148"><ph name="URL" /> möchte auf Bedienungshilfen reagieren</translation>
 <translation id="4677772697204437347">GPU-Speicher</translation>
@@ -2656,7 +2673,6 @@
 <translation id="4823484602432206655">Nutzer- und Geräteeinstellungen lesen und ändern</translation>
 <translation id="4824958205181053313">Synchronisierung abbrechen?</translation>
 <translation id="4827675678516992122">Verbindung nicht möglich</translation>
-<translation id="4828937774870308359">Australisch</translation>
 <translation id="4829768588131278040">PIN erstellen</translation>
 <translation id="4830502475412647084">Betriebssystem-Update wird installiert</translation>
 <translation id="4830573902900904548">Ihr Gerät (<ph name="DEVICE_TYPE" />) kann über <ph name="NETWORK_NAME" /> keine Internetverbindung herstellen. Bitte wählen Sie ein anderes Netzwerk aus. <ph name="LEARN_MORE_LINK_START" />Weitere Informationen<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2697,6 +2713,7 @@
 <translation id="4876273079589074638">Unterstützen Sie unsere Entwickler beim Untersuchen und Beheben dieses Absturzes. Beschreiben Sie möglichst genau alle Schritte. Kein noch so kleines Detail ist überflüssig!</translation>
 <translation id="4876895919560854374">Bildschirm sperren und entsperren</translation>
 <translation id="4877276003880815204">Elemente untersuchen</translation>
+<translation id="4878653975845355462">Benutzerdefinierte Hintergründe wurden von Ihrem Administrator deaktiviert</translation>
 <translation id="4879491255372875719">Automatisch (Standard)</translation>
 <translation id="4880328057631981605">Name des Zugangspunkts</translation>
 <translation id="4880827082731008257">Im Verlauf suchen</translation>
@@ -2752,10 +2769,10 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" möchte eine Verbindung mit einem seriellen Port herstellen</translation>
 <translation id="4944310289250773232">Dieser Authentifizierungsdienst wird von <ph name="SAML_DOMAIN" /> gehostet</translation>
 <translation id="495170559598752135">Aktionen</translation>
+<translation id="4952981627953231344">Plugin VM ist auf diesem Gerät nicht erlaubt. Wenden Sie sich an den Geräteadministrator Ihrer Organisation.</translation>
 <translation id="4953689047182316270">Auf Bedienungshilfen reagieren</translation>
 <translation id="4953808748584563296">Orangefarbener Standardavatar</translation>
 <translation id="4955710816792587366">PIN wählen</translation>
-<translation id="4955814292505481804">Jährlich</translation>
 <translation id="4959262764292427323">Passwörter werden in Ihrem Google-Konto gespeichert, sodass Sie sie auf jedem Gerät verwenden können</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Diese App wurde von Ihrem Administrator installiert.</translation>
@@ -3237,7 +3254,6 @@
 <translation id="5659593005791499971">E-Mail-Adresse</translation>
 <translation id="5659833766619490117">Diese Seite konnte nicht übersetzt werden</translation>
 <translation id="5660204307954428567">Mit <ph name="DEVICE_NAME" /> koppeln</translation>
-<translation id="5662477687021125631">Unbefristet</translation>
 <translation id="5667546120811588575">Google Play wird eingerichtet...</translation>
 <translation id="5669267381087807207">Wird aktiviert...</translation>
 <translation id="5669691691057771421">Neue PIN eingeben</translation>
@@ -3253,6 +3269,7 @@
 <translation id="5687326903064479980">Zeitzone</translation>
 <translation id="5689516760719285838">Ort</translation>
 <translation id="56907980372820799">Daten verknüpfen</translation>
+<translation id="5691180005790455277">Alle von <ph name="SITE_GROUP_NAME" /> und ihren untergeordneten Websites gespeicherten Daten und Cookies werden gelöscht.</translation>
 <translation id="5691511426247308406">Familie</translation>
 <translation id="5692183275898619210">Drucken abgeschlossen</translation>
 <translation id="5696143504434933566">Missbrauch von "<ph name="EXTENSION_NAME" />" melden</translation>
@@ -3339,7 +3356,6 @@
 <translation id="5815645614496570556">X.400-Adresse</translation>
 <translation id="5816434091619127343">Die angeforderten Änderungen würden den Drucker unbrauchbar machen.</translation>
 <translation id="5817918615728894473">Koppeln</translation>
-<translation id="5819762621475381970">– der Grundriss Ihres Zimmers</translation>
 <translation id="5821565227679781414">Verknüpfung erstellen</translation>
 <translation id="5825412242012995131">An (empfohlen)</translation>
 <translation id="5826395379250998812">Bitte <ph name="DEVICE_TYPE" /> mit Smartphone verbinden. <ph name="LINK_BEGIN" />Weitere Informationen<ph name="LINK_END" /></translation>
@@ -3475,6 +3491,7 @@
 <translation id="6007240208646052708">Die Sprachsuche ist nicht in Ihrer Sprache verfügbar.</translation>
 <translation id="6009781704028455063">Integrierter Sensor</translation>
 <translation id="6010869025736512584">Zugriff auf Video-Eingang</translation>
+<translation id="6011074160056912900">Ethernet-Netzwerk</translation>
 <translation id="6011193465932186973">Fingerabdruck</translation>
 <translation id="6011449291337289699">Websitedaten löschen</translation>
 <translation id="6015266928248016057">Ungültiger PUK. Noch <ph name="RETRIES" /> Versuche.</translation>
@@ -3511,6 +3528,7 @@
 <translation id="6053401458108962351">&amp;Browserdaten löschen...</translation>
 <translation id="6055171183283175969">Sie haben ein ungültiges Passwort eingegeben.</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 mit RSA-Verschlüsselung</translation>
+<translation id="6055907707645252013">Netzwerk: <ph name="NETWORK_TYPE" />, nicht verbunden</translation>
 <translation id="6056710589053485679">Normales Aktualisieren</translation>
 <translation id="6057381398996433816">Diese Website darf keine Bewegungs- und Lichtsensoren verwenden.</translation>
 <translation id="6058567592298841668">Virtuelle Maschine (Plug-in): <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3574,6 +3592,7 @@
 <translation id="6136114942382973861">Downloadleiste schließen</translation>
 <translation id="6137767437444130246">Nutzerzertifikat</translation>
 <translation id="6138680304137685902">X9.62-ECDSA-Signatur mit SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, nicht verbunden</translation>
 <translation id="6141988275892716286">Download bestätigen</translation>
 <translation id="6143186082490678276">Hilfe</translation>
 <translation id="6144938890088808325">Bei der Verbesserung von Chromebooks helfen</translation>
@@ -3880,6 +3899,7 @@
 <translation id="6602956230557165253">Verwenden Sie zum Navigieren den Rechts- und Linkspfeil.</translation>
 <translation id="6605847144724004692">Noch nicht von Nutzern bewertet.</translation>
 <translation id="6607831829715835317">Weitere Too&amp;ls</translation>
+<translation id="6611972847767394631">Hier finden Sie Ihre Tabs</translation>
 <translation id="6612358246767739896">Geschützte Inhalte</translation>
 <translation id="6615455863669487791">Zeigen</translation>
 <translation id="6618097958368085618">Trotzdem beibehalten</translation>
@@ -3948,6 +3968,7 @@
 <translation id="6709133671862442373">Nachrichten</translation>
 <translation id="6709357832553498500">Über <ph name="EXTENSIONNAME" /> verbinden</translation>
 <translation id="6710213216561001401">Zurück</translation>
+<translation id="6715803357256707211">Bei der Installation Ihrer Linux-Anwendung ist ein Fehler aufgetreten. Klicken Sie auf die Benachrichtigung, um Details zu sehen.</translation>
 <translation id="6721678857435001674">Den Hersteller und das Modell Ihres Sicherheitsschlüssels anzeigen</translation>
 <translation id="6721972322305477112">&amp;Ablage</translation>
 <translation id="672213144943476270">Bitte entsperren Sie Ihr Profil, bevor Sie als Gast surfen.</translation>
@@ -3972,7 +3993,6 @@
 <translation id="674632704103926902">Antippen und Ziehen aktivieren</translation>
 <translation id="6748217015615267851">Renderer: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Sie können den Vorgang fortsetzen, allerdings werden nur Ihre synchronisierten Daten und Einstellungen wiederhergestellt. Alle lokalen Daten gehen verloren.</translation>
-<translation id="6748775883310276718">Einzel-App-Kiosk</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (anonym)</translation>
 <translation id="6757101664402245801">URL kopiert</translation>
 <translation id="6758056191028427665">Teilen Sie uns mit, wie zufrieden Sie mit uns sind.</translation>
@@ -3982,6 +4002,7 @@
 <translation id="6769712124046837540">Drucker wird hinzugefügt...</translation>
 <translation id="6770664076092644100">Über NFC bestätigen</translation>
 <translation id="6771503742377376720">Ist eine Zertifizierungsstelle</translation>
+<translation id="6772339735733515807">Erweiterungen verwalten</translation>
 <translation id="6775163072363532304">Verfügbare Geräte werden hier angezeigt.</translation>
 <translation id="6777817260680419853">Weiterleitung blockiert</translation>
 <translation id="6778737459546443941">Dein Elternteil hat die Berechtigung noch nicht erteilt</translation>
@@ -4120,6 +4141,7 @@
 <translation id="6972180789171089114">Audio/Video</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> kann Dateien in diesem Ordner nicht öffnen, weil er Systemdateien enthält</translation>
 <translation id="6972754398087986839">Erste Schritte</translation>
+<translation id="6973611239564315524">Ein Upgrade auf Debian 10 (Buster) ist verfügbar</translation>
 <translation id="6974609594866392343">Offline-Demomodus</translation>
 <translation id="6977381486153291903">Firmware-Version</translation>
 <translation id="6978121630131642226">Suchmaschinen</translation>
@@ -4579,6 +4601,7 @@
 <translation id="7644543211198159466">Farbe und Design</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (Eigentümer)</translation>
 <translation id="7645681574855902035">Linux-Sicherung wird abgebrochen</translation>
+<translation id="7646772052135772216">Passwortsynchronisierung funktioniert nicht</translation>
 <translation id="7647403192093989392">Keine neuen Aktivitäten</translation>
 <translation id="7648992873808071793">Dateien auf diesem Gerät speichern</translation>
 <translation id="7649070708921625228">Hilfe</translation>
@@ -4767,6 +4790,7 @@
 <translation id="7877451762676714207">Unbekannter Serverfehler. Bitte versuchen Sie es erneut oder wenden Sie sich an den Serveradministrator.</translation>
 <translation id="7877680364634660272">Tour</translation>
 <translation id="7878562273885520351">Ihr Passwort könnte gefährdet sein</translation>
+<translation id="7879631849810108578">Tastenkombination festgelegt: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Lokale Daten werden beim nächsten Neustart gelöscht</translation>
 <translation id="7881483672146086348">Konto anzeigen</translation>
 <translation id="7882358943899516840">Providertyp</translation>
@@ -4853,6 +4877,7 @@
 <translation id="7987814697832569482">Immer über dieses VPN verbinden</translation>
 <translation id="7988355189918024273">Bedienungshilfen aktivieren</translation>
 <translation id="7991296728590311172">Einstellungen für Schalterzugriff</translation>
+<translation id="7994350303002908848">Plugin VM konnte nicht installiert werden. Bitte versuchen Sie es noch einmal oder wenden Sie sich an den Geräteadministrator Ihrer Organisation. Fehlercode: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">EAP-Methode</translation>
 <translation id="7997826902155442747">Prozesspriorität</translation>
 <translation id="7999229196265990314">Folgende Dateien wurden erstellt:
@@ -4945,7 +4970,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Keine Drittanbieter-Cookies}=1{1 Cookie von Drittanbietern wird blockiert}other{# Cookies von Drittanbietern werden blockiert}}</translation>
 <translation id="810875025413331850">Keine Geräte in der Nähe gefunden.</translation>
 <translation id="8111155949205007504">Dieses Passwort für Ihr iPhone freigeben</translation>
-<translation id="8113043281354018522">Lizenztyp auswählen</translation>
 <translation id="8114875720387900039">Horizontal teilen</translation>
 <translation id="8116972784401310538">&amp;Lesezeichen-Manager</translation>
 <translation id="8117620576188476503">Verwalten Sie Verbindungen, Updates und Einstellungen über die Statusleiste. Zum Öffnen über die Tastatur drücken Sie Alt + Umschalttaste + S.</translation>
@@ -5101,6 +5125,7 @@
 <translation id="8327039559959785305">Fehler beim Bereitstellen von Linux-Dateien. Bitte versuchen Sie es noch einmal.</translation>
 <translation id="8335587457941836791">Von Ablage loslösen</translation>
 <translation id="8336407002559723354">Updates bis <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Gerät neu starten, um Systemtext in <ph name="LANGUAGE" /> anzuzeigen</translation>
 <translation id="8336739000755212683">Bild des Gerätekontos ändern</translation>
 <translation id="8337047789441383384">Sie haben diesen Sicherheitsschlüssel bereits registriert. Er muss nicht noch einmal registriert werden.</translation>
 <translation id="8338952601723052325">Website des Entwicklers</translation>
@@ -5144,6 +5169,7 @@
 <translation id="8400146488506985033">Nutzer verwalten</translation>
 <translation id="8401432541486058167">Geben Sie die PIN für Ihre Smartcard an.</translation>
 <translation id="8405046151008197676">Wichtiges zum letzten Update ansehen</translation>
+<translation id="8408068190360279472">Netzwerk: <ph name="NETWORK_TYPE" />, Verbindung wird hergestellt</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Zuerst fragen (empfohlen)</translation>
 <translation id="8418445294933751433">Al&amp;s Tab anzeigen</translation>
@@ -5433,6 +5459,7 @@
 <translation id="8807632654848257479">Stabil</translation>
 <translation id="8808478386290700967">Web Store</translation>
 <translation id="8808686172382650546">Katze</translation>
+<translation id="8808744862003883508">Auf dieser Seite sehen Sie alle in Chrome installierten Erweiterungen.</translation>
 <translation id="8809147117840417135">Helles Blaugrün</translation>
 <translation id="8813698869395535039">Anmeldung unter <ph name="USERNAME" /> nicht möglich</translation>
 <translation id="8813811964357448561">Blatt Papier</translation>
@@ -5660,7 +5687,6 @@
 <translation id="9121814364785106365">In angepinntem Tab öffnen</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> pausiert</translation>
 <translation id="9124003689441359348">Hier werden gespeicherte Passwörter angezeigt</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> verbleibend)</translation>
 <translation id="9128317794749765148">Einrichtung nicht abgeschlossen</translation>
 <translation id="9128870381267983090">Mit Netzwerk verbinden</translation>
 <translation id="9130015405878219958">Eingegebener Modus ist ungültig.</translation>
@@ -5699,6 +5725,7 @@
 <translation id="9188732951356337132">Sie haben die Möglichkeit, Nutzungs- und Diagnosedaten zu senden. Dieses Gerät sendet momentan automatisch Diagnose- sowie Geräte- und App-Nutzungsdaten an Google. Ihr Kind wird mithilfe dieser Daten nicht identifiziert, sie helfen jedoch beispielsweise dabei, die Stabilität des Systems und der Apps zu verbessern. Einige aggregierte Daten sind auch für Apps und Partner von Google, beispielsweise Android-Entwickler, nützlich. Wenn zusätzlich die Einstellung "Web- &amp; App-Aktivitäten" für Ihr Kind aktiviert ist, werden diese Daten in seinem Google-Konto gespeichert. <ph name="BEGIN_LINK2" />Weitere Informationen<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPSec + vorinstallierter Schlüssel</translation>
 <translation id="920045321358709304"><ph name="SEARCH_ENGINE" />-Suche</translation>
+<translation id="9201023452444595544">Alle Offlinedaten werden gelöscht</translation>
 <translation id="9201220332032049474">Optionen für die Displaysperre</translation>
 <translation id="9203398526606335860">&amp;Profilerstellung aktiviert</translation>
 <translation id="9203904171912129171">Gerät auswählen</translation>
@@ -5711,6 +5738,7 @@
 <translation id="9220525904950070496">Konto entfernen</translation>
 <translation id="9220820413868316583">Finger hochheben und dann Versuch wiederholen.</translation>
 <translation id="923467487918828349">Alle einblenden</translation>
+<translation id="929117907539171075">Offlinedaten in der installierten App werden auch gelöscht</translation>
 <translation id="930268624053534560">Detaillierter Zeitstempel</translation>
 <translation id="932327136139879170">Privat</translation>
 <translation id="932508678520956232">Druckvorgang konnte nicht gestartet werden.</translation>
@@ -5736,6 +5764,7 @@
 <translation id="960719561871045870">Betreibercode</translation>
 <translation id="960987915827980018">Noch etwa 1 Stunde</translation>
 <translation id="962802172452141067">Lesezeichenordnerstruktur</translation>
+<translation id="964057662886721376">Einige Erweiterungen können Sie ausbremsen – vor allem solche, die Sie nicht installieren wollten.</translation>
 <translation id="964286338916298286">Ihr IT-Administrator hat Chrome-Extras für Ihr Gerät deaktiviert.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Anwendung}other{Anwendungen}}</translation>
 <translation id="965211523698323809">SMS auf dem <ph name="DEVICE_TYPE" /> senden und empfangen. <ph name="LINK_BEGIN" />Weitere Informationen<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb
index eb2c39d3..b5e4021 100644
--- a/chrome/app/resources/generated_resources_el.xtb
+++ b/chrome/app/resources/generated_resources_el.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Προσαρμοσμένη</translation>
 <translation id="1178581264944972037">Παύση</translation>
 <translation id="117916940443676133">Το κλειδί ασφαλείας σας δεν προστατεύεται από PIN. Για να διαχειριστείτε τα δεδομένα σύνδεσης, δημιουργήστε ένα PIN.</translation>
-<translation id="118069123878619799">- τα φυσικά χαρακτηριστικά σας, όπως το ύψος σας</translation>
 <translation id="1181037720776840403">Κατάργηση</translation>
 <translation id="1183237619868651138">Δεν είναι δυνατή η εγκατάσταση του <ph name="EXTERNAL_CRX_FILE" /> σε τοπική κρυφή μνήμη.</translation>
 <translation id="1185924365081634987">Μπορείτε επίσης να δοκιμάσετε να <ph name="GUEST_SIGNIN_LINK_START" />περιηγηθείτε ως επισκέπτης<ph name="GUEST_SIGNIN_LINK_END" /> για να διορθώσετε αυτό το σφάλμα δικτύου.</translation>
@@ -1908,7 +1907,6 @@
 <translation id="3678156199662914018">Επέκταση: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Σας ευχαριστούμε για τα σχόλιά σας. Βρίσκεστε εκτός σύνδεσης αυτήν τη στιγμή. Η αναφορά σας θα σταλεί αργότερα.</translation>
 <translation id="3682824389861648626">Ελάχιστο όριο κίνησης</translation>
-<translation id="3683023058278427253">Εντοπίσαμε πολλούς τύπους αδειών για τον τομέα σας. Επιλέξτε έναν, για να συνεχίσετε.</translation>
 <translation id="3683524264665795342">Αίτημα κοινής χρήσης οθόνης από την εφαρμογή <ph name="APP_NAME" /></translation>
 <translation id="368789413795732264">Παρουσιάστηκε σφάλμα κατά την απόπειρα εγγραφής στο αρχείο <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Εγγραφή σε αρχεία και φακέλους που ανοίγετε στην εφαρμογή</translation>
@@ -2173,7 +2171,6 @@
 <translation id="4013132157686828973">Το "<ph name="CLIENT_NAME" />" εντοπίζει τα σφάλματα σε αυτό το πρόγραμμα περιήγησης</translation>
 <translation id="4014432863917027322">Να γίνει επιδιόρθωση του "<ph name="EXTENSION_NAME" />";</translation>
 <translation id="4015163439792426608">Έχετε επεκτάσεις; <ph name="BEGIN_LINK" />Διαχειριστείτε τις επεκτάσεις σας<ph name="END_LINK" /> σε ένα βολικό μέρος.</translation>
-<translation id="4020106588733303597">Δυστυχώς, το σύστημα δεν κατάφερε να φορτώσει τις διαθέσιμες άδειες.</translation>
 <translation id="4020327272915390518">Μενού επιλογών</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Προσθήκη στο λεξικό</translation>
@@ -2680,7 +2677,6 @@
 <translation id="4823484602432206655">Ανάγνωση και αλλαγή των ρυθμίσεων χρήστη και συσκευής</translation>
 <translation id="4824958205181053313">Ακύρωση συγχρονισμού;</translation>
 <translation id="4827675678516992122">Αδυναμία σύνδεσης</translation>
-<translation id="4828937774870308359">Αυστραλός</translation>
 <translation id="4829768588131278040">Ρύθμιση PIN</translation>
 <translation id="4830502475412647084">Εγκατάσταση ενημέρωσης λειτουργικού συστήματος</translation>
 <translation id="4830573902900904548">Η συσκευή σας <ph name="DEVICE_TYPE" /> δεν μπορεί να συνδεθεί στο διαδίκτυο χρησιμοποιώντας το δίκτυο <ph name="NETWORK_NAME" />. Επιλέξτε κάποιο άλλο δίκτυο. <ph name="LEARN_MORE_LINK_START" />Μάθετε περισσότερα<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2781,7 +2777,6 @@
 <translation id="4953689047182316270">Απάντηση σε συμβάντα προσβασιμότητας</translation>
 <translation id="4953808748584563296">Προεπιλεγμένο πορτοκαλί avatar</translation>
 <translation id="4955710816792587366">Επιλογή PIN</translation>
-<translation id="4955814292505481804">Ετήσια</translation>
 <translation id="4959262764292427323">Οι κωδικοί πρόσβασης αποθηκεύονται στον Λογαριασμό σας Google, ώστε να μπορείτε να τους χρησιμοποιήσετε σε οποιαδήποτε συσκευή</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Αυτή η εφαρμογή έχει εγκατασταθεί από τον διαχειριστή σας.</translation>
@@ -3264,7 +3259,6 @@
 <translation id="5659593005791499971">Διεύθυνση ηλεκτρονικού ταχυδρομείου</translation>
 <translation id="5659833766619490117">Δεν ήταν δυνατή η μετάφραση αυτής της σελίδας</translation>
 <translation id="5660204307954428567">Σύζευξη με τη συσκευή <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Οριστική</translation>
 <translation id="5667546120811588575">Ρύθμιση του Google Play…</translation>
 <translation id="5669267381087807207">Ενεργοποίηση</translation>
 <translation id="5669691691057771421">Εισαγωγή νέου κωδικού PIN</translation>
@@ -3367,7 +3361,6 @@
 <translation id="5815645614496570556">Διεύθυνση X.400</translation>
 <translation id="5816434091619127343">Οι ζητούμενες αλλαγές στον εκτυπωτή θα τον καθιστούσαν ακατάλληλο για χρήση.</translation>
 <translation id="5817918615728894473">Σύζευξη</translation>
-<translation id="5819762621475381970">- τη διάταξη του δωματίου σας</translation>
 <translation id="5821565227679781414">Δημιουργία συντόμευσης</translation>
 <translation id="5825412242012995131">Ενεργοποίηση (Συνιστάται)</translation>
 <translation id="5826395379250998812">Συνδέστε τη συσκευή <ph name="DEVICE_TYPE" /> με το τηλέφωνό σας. <ph name="LINK_BEGIN" />Μάθετε περισσότερα<ph name="LINK_END" /></translation>
@@ -4005,7 +3998,6 @@
 <translation id="674632704103926902">Ενεργοποίηση μεταφοράς με πάτημα</translation>
 <translation id="6748217015615267851">Λειτουργία απόδοσης: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Μπορείτε να συνεχίσετε, αλλά μόνο τα συγχρονισμένα δεδομένα και οι ρυθμίσεις σας θα αποκατασταθούν. Όλα τα τοπικά δεδομένα θα χαθούν.</translation>
-<translation id="6748775883310276718">Kiosk μεμονωμένης εφαρμογής</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Ανώνυμη περιήγηση)</translation>
 <translation id="6757101664402245801">Το URL αντιγράφηκε</translation>
 <translation id="6758056191028427665">Πείτε μας πώς τα πηγαίνουμε</translation>
@@ -4983,7 +4975,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Δεν υπάρχουν cookie τρίτου μέρους}=1{Αποκλείστηκε 1 cookie τρίτου μέρους}other{Αποκλείστηκαν # cookie τρίτου μέρους}}</translation>
 <translation id="810875025413331850">Δεν βρέθηκαν κοντινές συσκευές.</translation>
 <translation id="8111155949205007504">Κοινοποίηση αυτού του κωδικού πρόσβασης στο iPhone σας</translation>
-<translation id="8113043281354018522">Επιλογή τύπου άδειας</translation>
 <translation id="8114875720387900039">Οριζόντιος διαχωρισμός</translation>
 <translation id="8116972784401310538">&amp;Διαχείριση σελιδοδεικτών</translation>
 <translation id="8117620576188476503">Διαχειριστείτε συνδέσεις, ενημερώσεις και ρυθμίσεις από την περιοχή κατάστασης. Για να μεταβείτε εδώ από το πληκτρολόγιο, πατήστε Alt + Shift + S.</translation>
@@ -5700,7 +5691,6 @@
 <translation id="9121814364785106365">Άνοιγμα ως καρφιτσωμένης καρτέλας</translation>
 <translation id="9122176249172999202">Η εφαρμογή <ph name="IDS_SHORT_PRODUCT_NAME" /> τέθηκε σε παύση</translation>
 <translation id="9124003689441359348">Οι αποθηκευμένοι κωδικοί πρόσβασής σας θα εμφανίζονται εδώ</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (απομένουν <ph name="LICENSE_COUNT" />)</translation>
 <translation id="9128317794749765148">Δεν ήταν δυνατή η ολοκλήρωση της ρύθμισης</translation>
 <translation id="9128870381267983090">Σύνδεση σε δίκτυο</translation>
 <translation id="9130015405878219958">Έγινε ενεργοποίηση μη έγκυρης λειτουργίας.</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb
index 3c12fac..fede051 100644
--- a/chrome/app/resources/generated_resources_en-GB.xtb
+++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Customised</translation>
 <translation id="1178581264944972037">Pause</translation>
 <translation id="117916940443676133">Your security key is not protected with a PIN. To manage sign-in data, first create a PIN.</translation>
-<translation id="118069123878619799">- your physical features, such as height</translation>
 <translation id="1181037720776840403">Remove</translation>
 <translation id="1183237619868651138">Can't install <ph name="EXTERNAL_CRX_FILE" /> in local cache.</translation>
 <translation id="1185924365081634987">You may also try to <ph name="GUEST_SIGNIN_LINK_START" />browse as guest<ph name="GUEST_SIGNIN_LINK_END" /> to fix this network error.</translation>
@@ -1908,7 +1907,6 @@
 <translation id="3678156199662914018">Extension: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Thank you for your feedback. You are offline now, and your report will be sent later.</translation>
 <translation id="3682824389861648626">Movement threshold</translation>
-<translation id="3683023058278427253">We have detected multiple license types for your domain. Please chose one to continue.</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> Screen Sharing Request</translation>
 <translation id="368789413795732264">There was an error while trying to write the file: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Write to files and folders that you open in the application</translation>
@@ -2173,7 +2171,6 @@
 <translation id="4013132157686828973">'<ph name="CLIENT_NAME" />' is debugging this browser</translation>
 <translation id="4014432863917027322">Repair "<ph name="EXTENSION_NAME" />"?</translation>
 <translation id="4015163439792426608">Got extensions? <ph name="BEGIN_LINK" />Manage your extensions<ph name="END_LINK" /> in one easy place.</translation>
-<translation id="4020106588733303597">Oops!  The system failed to load available licenses.</translation>
 <translation id="4020327272915390518">Options menu</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Add to Dictionary</translation>
@@ -2680,7 +2677,6 @@
 <translation id="4823484602432206655">Read and change user and device settings</translation>
 <translation id="4824958205181053313">Cancel sync?</translation>
 <translation id="4827675678516992122">Couldn't connect</translation>
-<translation id="4828937774870308359">Australian</translation>
 <translation id="4829768588131278040">Set up PIN</translation>
 <translation id="4830502475412647084">Installing OS update</translation>
 <translation id="4830573902900904548">Your <ph name="DEVICE_TYPE" /> is unable to connect to the Internet using <ph name="NETWORK_NAME" />. Please choose another network. <ph name="LEARN_MORE_LINK_START" />Find out more<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2781,7 +2777,6 @@
 <translation id="4953689047182316270">Respond to Accessibility Events</translation>
 <translation id="4953808748584563296">Default orange avatar</translation>
 <translation id="4955710816792587366">Choose your PIN</translation>
-<translation id="4955814292505481804">Annual</translation>
 <translation id="4959262764292427323">Passwords are saved in your Google Account so that you can use them on any device</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">This app has been installed by your administrator.</translation>
@@ -3263,7 +3258,6 @@
 <translation id="5659593005791499971">Email</translation>
 <translation id="5659833766619490117">This page could not be translated</translation>
 <translation id="5660204307954428567">Pair with <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Perpetual</translation>
 <translation id="5667546120811588575">Setting up Google Play…</translation>
 <translation id="5669267381087807207">Activating</translation>
 <translation id="5669691691057771421">Enter new PIN</translation>
@@ -3366,7 +3360,6 @@
 <translation id="5815645614496570556">X.400 Address</translation>
 <translation id="5816434091619127343">Requested printer changes would make the printer unusable.</translation>
 <translation id="5817918615728894473">Pair</translation>
-<translation id="5819762621475381970">- the layout of your room</translation>
 <translation id="5821565227679781414">Create Shortcut</translation>
 <translation id="5825412242012995131">On (recommended)</translation>
 <translation id="5826395379250998812">Connect your <ph name="DEVICE_TYPE" /> with your phone. <ph name="LINK_BEGIN" />Learn more<ph name="LINK_END" /></translation>
@@ -4004,7 +3997,6 @@
 <translation id="674632704103926902">Enable tap dragging</translation>
 <translation id="6748217015615267851">Renderer: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">You may proceed, but only your synced data and settings will be restored. All local data will be lost.</translation>
-<translation id="6748775883310276718">Single App Kiosk</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Incognito)</translation>
 <translation id="6757101664402245801">URL copied</translation>
 <translation id="6758056191028427665">Let us know how we’re doing.</translation>
@@ -4982,7 +4974,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{No third-party cookies}=1{1 third-party cookie is blocked}other{# third-party cookies are blocked}}</translation>
 <translation id="810875025413331850">No nearby devices found.</translation>
 <translation id="8111155949205007504">Share this password with your iPhone</translation>
-<translation id="8113043281354018522">Choose license type</translation>
 <translation id="8114875720387900039">Split horizontal</translation>
 <translation id="8116972784401310538">&amp;Bookmark manager</translation>
 <translation id="8117620576188476503">Manage connections, updates and settings with the status tray. To get here by keyboard, press Alt + Shift + S.</translation>
@@ -5701,7 +5692,6 @@
 <translation id="9121814364785106365">Open as pinned tab</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> is paused</translation>
 <translation id="9124003689441359348">Saved passwords will appear here</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> rem.)</translation>
 <translation id="9128317794749765148">Setup couldn't complete</translation>
 <translation id="9128870381267983090">Connect to network</translation>
 <translation id="9130015405878219958">Invalid mode entered.</translation>
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb
index 73d3233d..e1d15ad 100644
--- a/chrome/app/resources/generated_resources_es-419.xtb
+++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Personalizado</translation>
 <translation id="1178581264944972037">Detener</translation>
 <translation id="117916940443676133">Tu llave de seguridad no está protegida con un PIN. Para administrar los datos de acceso, crea uno.</translation>
-<translation id="118069123878619799">- tus rasgos físicos, como la estatura</translation>
 <translation id="1181037720776840403">Quitar</translation>
 <translation id="1183237619868651138">No se puede instalar <ph name="EXTERNAL_CRX_FILE" /> en la memoria caché local.</translation>
 <translation id="1185924365081634987">También puedes intentar <ph name="GUEST_SIGNIN_LINK_START" />navegar como invitado<ph name="GUEST_SIGNIN_LINK_END" /> para solucionar este error de red.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">Esperando <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033">Hay otros <ph name="NUM_PRINTERS" /> dispositivos disponibles.</translation>
 <translation id="1495677929897281669">Volver a la pestaña</translation>
+<translation id="1499271269825557605">Si no reconoces una extensión o si el navegador no funciona correctamente, puedes desactivar o personalizar extensiones aquí.</translation>
 <translation id="1500297251995790841">Dispositivo desconocido [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">El propietario de esta cuenta requiere que sea la primera a la que se acceda al crear una sesión de acceso múltiple.</translation>
 <translation id="150411034776756821">Quitar <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Esta página no tiene permiso para acceder a la cámara.</translation>
 <translation id="1507246803636407672">&amp;Descartar</translation>
 <translation id="1508491105858779599">Coloca tu dedo en el sensor de huella digital para desbloquear el dispositivo.</translation>
+<translation id="1508575541972276599">La versión actual es Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">Accede a cualquier <ph name="DEVICE_NAME_AND_VENDOR" /> a través de USB</translation>
 <translation id="150962533380566081">PUK no válida.</translation>
 <translation id="1510030919967934016">Se bloqueó esta página para que no pueda rastrear tu ubicación.</translation>
@@ -431,6 +432,7 @@
 <translation id="1601560923496285236">Aplicar</translation>
 <translation id="1603914832182249871">(Incógnito)</translation>
 <translation id="1604432177629086300">No se pudo completar la impresión. Revisa la impresora y vuelve a intentarlo.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: No funciona la sincronización de contraseñas</translation>
 <translation id="1607139524282324606">Borrar entrada</translation>
 <translation id="1608626060424371292">Eliminar este usuario</translation>
 <translation id="1608668830839595724">Más acciones para los elementos seleccionados</translation>
@@ -557,6 +559,8 @@
 <translation id="177336675152937177">Datos de aplicaciones alojadas</translation>
 <translation id="1776712937009046120">Agregar usuario</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> administra este dispositivo.
+    Haz clic en "Siguiente" para continuar con el acceso a tu cuenta de <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation>
 <translation id="1779652936965200207">Ingresa esta clave de acceso en "<ph name="DEVICE_NAME" />":</translation>
 <translation id="1780152987505130652">Cerrar grupo</translation>
 <translation id="1781291988450150470">PIN actual</translation>
@@ -744,6 +748,7 @@
 <translation id="2048653237708779538">La acción no está disponible</translation>
 <translation id="2050339315714019657">Vertical</translation>
 <translation id="2053312383184521053">Datos de estado de inactividad</translation>
+<translation id="2055585478631012616">Saldrás de estos sitios, incluidas las pestañas abiertas</translation>
 <translation id="205560151218727633">Logotipo del Asistente de Google</translation>
 <translation id="2058456167109518507">Se detectó un dispositivo</translation>
 <translation id="2059913712424898428">Zona horaria</translation>
@@ -759,6 +764,7 @@
 <translation id="2079545284768500474">Deshacer</translation>
 <translation id="2080070583977670716">Más opciones de configuración</translation>
 <translation id="2087822576218954668">Imprimir: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">Red VPN</translation>
 <translation id="2089566709556890888">Navega de forma segura con Google Chrome</translation>
 <translation id="2089795179672254991">Preguntarme cuando un sitio desee ver el texto y las imágenes copiados en el portapapeles (recomendado)</translation>
 <translation id="2090165459409185032">Para recuperar la información de la cuenta, accede a google.com/accounts/recovery.</translation>
@@ -982,6 +988,7 @@
 <translation id="2379232090534544565">Un sitio está accediendo a la entrada de audio y video</translation>
 <translation id="2379281330731083556">Imprimir mediante el sistema de diálogo... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Preguntar antes de enviar (recomendado)</translation>
+<translation id="2382818385048255866">Comprueba las extensiones</translation>
 <translation id="2384436799579181135">Se produjo un error. Revisa la impresora y vuelve a intentarlo.</translation>
 <translation id="2387458720915042159">Tipo de conexión proxy</translation>
 <translation id="2391419135980381625">Fuente estándar</translation>
@@ -1033,6 +1040,7 @@
 <translation id="2462724976360937186">ID de clave de la Entidad de certificación</translation>
 <translation id="2462752602710430187">Se agregó <ph name="PRINTER_NAME" /></translation>
 <translation id="2464089476039395325">Proxy HTTP</translation>
+<translation id="2467267713099745100">Red <ph name="NETWORK_TYPE" />, desactivada</translation>
 <translation id="2468205691404969808">Usa cookies para recordar tus preferencias, incluso si no visitas esas páginas</translation>
 <translation id="2468402215065996499">Tamagotchi</translation>
 <translation id="2469259292033957819">No tienes impresoras guardadas.</translation>
@@ -1287,6 +1295,7 @@
 <translation id="2800760947029405028">Cargar una imagen</translation>
 <translation id="2803375539583399270">Ingresar PIN</translation>
 <translation id="2804043232879091219">No se pudo abrir el otro navegador</translation>
+<translation id="2804667941345577550">Saldrás de este sitio, incluidas las pestañas abiertas</translation>
 <translation id="2804680522274557040">Se desactivó la cámara</translation>
 <translation id="2805646850212350655">Sistema de encriptación de archivos de Microsoft</translation>
 <translation id="2805756323405976993">Aplicaciones</translation>
@@ -1294,6 +1303,7 @@
 <translation id="2806891468525657116">El acceso directo ya existe</translation>
 <translation id="2807517655263062534">Los archivos que descargas aparecen aquí</translation>
 <translation id="2809586584051668049">y <ph name="NUMBER_ADDITIONAL_DISABLED" /> más</translation>
+<translation id="2810390687497823527">Si no reconoces una extensión o si el navegador no funciona correctamente, puedes desactivar o personalizar extensiones aquí.</translation>
 <translation id="2812049959647166806">No se admite Thunderbolt</translation>
 <translation id="2812944337881233323">Intenta salir y volver a acceder</translation>
 <translation id="2812989263793994277">No mostrar imágenes</translation>
@@ -1333,6 +1343,7 @@
 <translation id="2861941300086904918">Administrador de seguridad NATIVE_CLIENT</translation>
 <translation id="2864601841139725659">Establecer tu foto de perfil</translation>
 <translation id="2865919525181940183">Captura de pantalla de los programas que aparecen</translation>
+<translation id="286674810810214575">Buscando fuentes de energía…</translation>
 <translation id="2867768963760577682">Abrir como pestaña fija</translation>
 <translation id="2868746137289129307">Esta extensión está desactualizada e inhabilitada por política de la empresa. Podría habilitarse automáticamente cuando haya una versión nueva disponible.</translation>
 <translation id="2870560284913253234">Sitio</translation>
@@ -1410,6 +1421,7 @@
 <translation id="2972581237482394796">&amp;Rehacer</translation>
 <translation id="2973324205039581528">Silenciar el sitio</translation>
 <translation id="2977480621796371840">Quitar del grupo</translation>
+<translation id="2979520980928493164">Una versión de Chrome más segura y potente</translation>
 <translation id="2979639724566107830">Abrir en una ventana nueva</translation>
 <translation id="2981113813906970160">Mostrar cursor del mouse grande</translation>
 <translation id="2982970937345031">Informar de forma anónima</translation>
@@ -1516,6 +1528,7 @@
 <translation id="3143515551205905069">Cancelar sincronización</translation>
 <translation id="3143754809889689516">Reproducir desde el principio</translation>
 <translation id="3144647712221361880">Abrir vínculo como</translation>
+<translation id="3145187901750964977">No se pudo instalar la máquina virtual. Vuelve a intentarlo o comunícate con el administrador de dispositivos de tu organización. Código de error: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Versión:
     <ph name="LINUX_VERSION" />
 
@@ -1554,6 +1567,7 @@
 <translation id="3192947282887913208">Archivos de audio</translation>
 <translation id="3194737229810486521"><ph name="URL" /> desea almacenar datos de forma permanente en el dispositivo</translation>
 <translation id="3199127022143353223">Servidores</translation>
+<translation id="3201306578844503970">No se pudo instalar la máquina virtual debido a un error de red. Vuelve a intentarlo o comunícate con el administrador de dispositivos de tu organización. Código de error: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Los dispositivos USB disponibles aparecerán aquí.</translation>
 <translation id="3202131003361292969">Ruta</translation>
 <translation id="3202173864863109533">El audio de esta pestaña está silenciado.</translation>
@@ -1890,7 +1904,6 @@
 <translation id="3678156199662914018">Extensión: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Gracias por tus comentarios. Tu informe se enviará cuando tengas conexión.</translation>
 <translation id="3682824389861648626">Umbral de movimiento</translation>
-<translation id="3683023058278427253">Detectamos varios tipos de licencia para tu dominio. Selecciona uno para continuar.</translation>
 <translation id="3683524264665795342">Solicitud para compartir la pantalla de parte de <ph name="APP_NAME" /></translation>
 <translation id="368789413795732264">Se produjo un error al intentar escribir el archivo: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Escribir en archivos y carpetas que abras en la aplicación</translation>
@@ -2064,6 +2077,7 @@
 <translation id="389589731200570180">Compartir con usuarios invitados</translation>
 <translation id="389901847090970821">Seleccionar teclado</translation>
 <translation id="3899879303189199559">Sin conexión durante más de un año</translation>
+<translation id="3900789207771372462">Algunas extensiones pueden ver tu actividad de navegación, incluida la información personal.</translation>
 <translation id="3900966090527141178">Exportar contraseñas</translation>
 <translation id="3901991538546252627">Conectando con: <ph name="NAME" /></translation>
 <translation id="3905761538810670789">Reparar aplicación</translation>
@@ -2154,7 +2168,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" está depurando este navegador</translation>
 <translation id="4014432863917027322">¿Reparar "<ph name="EXTENSION_NAME" />"?</translation>
 <translation id="4015163439792426608">¿Tienes extensiones? <ph name="BEGIN_LINK" />Administra tus extensiones<ph name="END_LINK" /> en un solo lugar.</translation>
-<translation id="4020106588733303597">El sistema no puede cargar las licencias disponibles.</translation>
 <translation id="4020327272915390518">Menú de opciones</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Agregar a diccionario</translation>
@@ -2192,6 +2205,7 @@
 <translation id="407520071244661467">Escala</translation>
 <translation id="4075639477629295004">No se puede transmitir <ph name="FILE_NAME" />.</translation>
 <translation id="4077917118009885966">Anuncios bloqueados en este sitio</translation>
+<translation id="4077919383365622693">Se borrarán todos los datos y las cookies de <ph name="SITE" />.</translation>
 <translation id="4079140982534148664">Usar el corrector ortográfico mejorado</translation>
 <translation id="4081242589061676262">No se puede transmitir el archivo</translation>
 <translation id="4084682180776658562">Marcador</translation>
@@ -2266,6 +2280,7 @@
 <translation id="4181841719683918333">Idiomas</translation>
 <translation id="4184885522552335684">Arrastrar para mover una pantalla</translation>
 <translation id="4194570336751258953">Habilitar el punteo para hacer clic</translation>
+<translation id="4194595472342532425">No se pudo configurar Plugin VM debido a un problema de configuración. Comunícate con el administrador de dispositivos de tu organización. Código de error: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Abrir en una pestaña nueva</translation>
 <translation id="4195814663415092787">Continuar la sesión desde donde la dejaste</translation>
 <translation id="4198146608511578238">Mantén presionado el ícono de Launcher para hablar con el Asistente de Google.</translation>
@@ -2489,6 +2504,7 @@
 <translation id="4549791035683739768">Tu llave de seguridad no tiene huellas digitales almacenadas</translation>
 <translation id="4551763574344810652">Presiona <ph name="MODIFIER_KEY_DESCRIPTION" /> para deshacer</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005">Red <ph name="NETWORK_TYPE" />, intensidad de la señal: <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">La versión de la extensión externa es igual o anterior a la actual.</translation>
 <translation id="4555769855065597957">Sombra</translation>
 <translation id="4555863373929230635">Para guardar contraseñas en tu Cuenta de Google, accede a ella y activa la sincronización.</translation>
@@ -2566,6 +2582,7 @@
 <translation id="4665446389743427678">Se borrarán todos los datos que almacene <ph name="SITE" />.</translation>
 <translation id="4668721319092543482">Hacer clic para habilitar <ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">Filtrar página</translation>
+<translation id="46733273239502219">También se borrarán los datos sin conexión de las apps instaladas</translation>
 <translation id="4673442866648850031">Abrir las herramientas de pluma stylus al quitarla</translation>
 <translation id="4677585247300749148"><ph name="URL" /> desea responder a los eventos de accesibilidad</translation>
 <translation id="4677772697204437347">Memoria de la GPU</translation>
@@ -2657,7 +2674,6 @@
 <translation id="4823484602432206655">Leer y cambiar la configuración del dispositivo y del usuario</translation>
 <translation id="4824958205181053313">¿Quieres cancelar la sincronización?</translation>
 <translation id="4827675678516992122">No se pudo establecer conexión</translation>
-<translation id="4828937774870308359">Australiano</translation>
 <translation id="4829768588131278040">Configurar PIN</translation>
 <translation id="4830502475412647084">Instalando la actualización del SO</translation>
 <translation id="4830573902900904548">Tu <ph name="DEVICE_TYPE" /> no puede conectarse a Internet a través de <ph name="NETWORK_NAME" />. Debes elegir otra red. <ph name="LEARN_MORE_LINK_START" />Más información<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2698,6 +2714,7 @@
 <translation id="4876273079589074638">¡Ayuda a que nuestros ingenieros investiguen y solucionen este fallo! Enumera los pasos exactos si es posible. No omitas ningún detalle.</translation>
 <translation id="4876895919560854374">Bloquear y desbloquear la pantalla</translation>
 <translation id="4877276003880815204">Analizar elementos</translation>
+<translation id="4878653975845355462">El administrador desactivó los fondos personalizados</translation>
 <translation id="4879491255372875719">Automático (predeterminado)</translation>
 <translation id="4880328057631981605">Nombre de punto de acceso</translation>
 <translation id="4880827082731008257">Buscar historial</translation>
@@ -2753,10 +2770,10 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" quiere conectarse a un puerto en serie</translation>
 <translation id="4944310289250773232"><ph name="SAML_DOMAIN" /> aloja este servicio de autenticación</translation>
 <translation id="495170559598752135">Acciones</translation>
+<translation id="4952981627953231344">No se permite usar Plugin VM en este dispositivo. Comunícate con el administrador de dispositivos de tu organización.</translation>
 <translation id="4953689047182316270">Responder a los eventos de accesibilidad</translation>
 <translation id="4953808748584563296">Avatar naranja predeterminado</translation>
 <translation id="4955710816792587366">Elige un PIN</translation>
-<translation id="4955814292505481804">Anual</translation>
 <translation id="4959262764292427323">Las contraseñas se guardan en tu cuenta de Google para que puedas usarlas en cualquier dispositivo</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Tu administrador instaló esta app.</translation>
@@ -3238,7 +3255,6 @@
 <translation id="5659593005791499971">Correo electrónico</translation>
 <translation id="5659833766619490117">No se pudo traducir esta página</translation>
 <translation id="5660204307954428567">Sincronizar con <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Perpetua</translation>
 <translation id="5667546120811588575">Configurando Google Play…</translation>
 <translation id="5669267381087807207">Activando</translation>
 <translation id="5669691691057771421">Ingresa el PIN nuevo</translation>
@@ -3254,6 +3270,7 @@
 <translation id="5687326903064479980">Zona horaria</translation>
 <translation id="5689516760719285838">Ubicación</translation>
 <translation id="56907980372820799">Vincular datos</translation>
+<translation id="5691180005790455277">Se borrarán todos los datos y cookies que almacenó <ph name="SITE_GROUP_NAME" /> y los sitios secundarios.</translation>
 <translation id="5691511426247308406">Familia</translation>
 <translation id="5692183275898619210">Se completó la impresión</translation>
 <translation id="5696143504434933566">Informar abuso de "<ph name="EXTENSION_NAME" />"</translation>
@@ -3340,7 +3357,6 @@
 <translation id="5815645614496570556">Dirección X 400</translation>
 <translation id="5816434091619127343">Los cambios solicitados harán que la impresora no se pueda utilizar.</translation>
 <translation id="5817918615728894473">Sincronizar</translation>
-<translation id="5819762621475381970">- la disposición de tu habitación</translation>
 <translation id="5821565227679781414">Crear acceso directo</translation>
 <translation id="5825412242012995131">Activado (recomendado)</translation>
 <translation id="5826395379250998812">Conecta tu <ph name="DEVICE_TYPE" /> con el teléfono. <ph name="LINK_BEGIN" />Más información<ph name="LINK_END" /></translation>
@@ -3476,6 +3492,7 @@
 <translation id="6007240208646052708">La búsqueda por voz no está disponible en tu idioma.</translation>
 <translation id="6009781704028455063">Sensor incorporado</translation>
 <translation id="6010869025736512584">Accediendo a la entrada de video</translation>
+<translation id="6011074160056912900">Red de Ethernet</translation>
 <translation id="6011193465932186973">Huella digital</translation>
 <translation id="6011449291337289699">Borrar los datos del sitio</translation>
 <translation id="6015266928248016057">PUK no válida. Intentos restantes: <ph name="RETRIES" />.</translation>
@@ -3512,6 +3529,7 @@
 <translation id="6053401458108962351">&amp;Borrar datos de navegación...</translation>
 <translation id="6055171183283175969">La contraseña que ingresaste es incorrecta.</translation>
 <translation id="6055392876709372977">PKCS N. º 1 SHA-256 con encriptación RSA</translation>
+<translation id="6055907707645252013">Red <ph name="NETWORK_TYPE" />, no conectada</translation>
 <translation id="6056710589053485679">Volver a cargar normalmente</translation>
 <translation id="6057381398996433816">Este sitio no tiene permiso para usar los sensores de movimiento y luz.</translation>
 <translation id="6058567592298841668">Máquina virtual de complementos: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3575,6 +3593,7 @@
 <translation id="6136114942382973861">Cerrar la barra de descargas</translation>
 <translation id="6137767437444130246">Certificado del usuario</translation>
 <translation id="6138680304137685902">Firma X9.62 ECDSA con SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, sin red</translation>
 <translation id="6141988275892716286">Confirmar la descarga</translation>
 <translation id="6143186082490678276">Obtener ayuda</translation>
 <translation id="6144938890088808325">Ayúdanos a mejorar las Chromebook</translation>
@@ -3881,6 +3900,7 @@
 <translation id="6602956230557165253">Utiliza las teclas de flecha hacia la izquierda y derecha para navegar.</translation>
 <translation id="6605847144724004692">Todavía no tiene una calificación de los usuarios.</translation>
 <translation id="6607831829715835317">Más herramientas</translation>
+<translation id="6611972847767394631">Encuentra tus pestañas aquí</translation>
 <translation id="6612358246767739896">Contenido protegido</translation>
 <translation id="6615455863669487791">Mostrarme</translation>
 <translation id="6618097958368085618">Conservar de todos modos</translation>
@@ -3949,6 +3969,7 @@
 <translation id="6709133671862442373">Noticias</translation>
 <translation id="6709357832553498500">Conectar a través de <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Anterior</translation>
+<translation id="6715803357256707211">Se produjo un error durante la instalación de la app de Linux. Haz clic en la notificación para obtener más detalles.</translation>
 <translation id="6721678857435001674">Ver la marca y el modelo de tu llave de seguridad</translation>
 <translation id="6721972322305477112">&amp;Archivo</translation>
 <translation id="672213144943476270">Desbloquea tu perfil antes de navegar como invitado.</translation>
@@ -3973,7 +3994,6 @@
 <translation id="674632704103926902">Habilitar la función tocar y arrastrar</translation>
 <translation id="6748217015615267851">Procesador: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Puedes continuar, pero se restaurarán únicamente la configuración y los datos sincronizados. Se perderán todos los datos locales.</translation>
-<translation id="6748775883310276718">Kiosco de una sola app</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Incógnito)</translation>
 <translation id="6757101664402245801">URL copiada</translation>
 <translation id="6758056191028427665">Danos tu opinión sobre nuestro trabajo.</translation>
@@ -3983,6 +4003,7 @@
 <translation id="6769712124046837540">Agregando impresora…</translation>
 <translation id="6770664076092644100">Verificar mediante NFC</translation>
 <translation id="6771503742377376720">Es una Entidad de certificación</translation>
+<translation id="6772339735733515807">Administra tus extensiones</translation>
 <translation id="6775163072363532304">Aquí aparecerán los dispositivos disponibles.</translation>
 <translation id="6777817260680419853">Se bloqueó el redireccionamiento</translation>
 <translation id="6778737459546443941">Uno de tus padres aún no lo aprobó</translation>
@@ -4121,6 +4142,7 @@
 <translation id="6972180789171089114">Audio/video</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> no puede abrir los archivos en esta carpeta porque contiene archivos del sistema</translation>
 <translation id="6972754398087986839">Comenzar</translation>
+<translation id="6973611239564315524">Hay disponible una actualización a Debian 10 (Buster)</translation>
 <translation id="6974609594866392343">Modo de demostración sin conexión</translation>
 <translation id="6977381486153291903">Revisión de firmware</translation>
 <translation id="6978121630131642226">Motores de búsqueda</translation>
@@ -4580,6 +4602,7 @@
 <translation id="7644543211198159466">Color y tema</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (propietario/a)</translation>
 <translation id="7645681574855902035">Cancelando la copia de seguridad de Linux</translation>
+<translation id="7646772052135772216">No funciona la sincronización de contraseñas</translation>
 <translation id="7647403192093989392">No hay actividades recientes</translation>
 <translation id="7648992873808071793">Almacenar archivos en el dispositivo</translation>
 <translation id="7649070708921625228">Ayuda</translation>
@@ -4768,6 +4791,7 @@
 <translation id="7877451762676714207">Error de servidor desconocido. Inténtalo nuevamente o comunícate con el administrador del servidor.</translation>
 <translation id="7877680364634660272">Recorrido</translation>
 <translation id="7878562273885520351">Es posible que tu contraseña esté en peligro</translation>
+<translation id="7879631849810108578">Conjunto de combinaciones de teclas: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Se borrarán los datos locales en el reinicio</translation>
 <translation id="7881483672146086348">Ver cuenta</translation>
 <translation id="7882358943899516840">Tipo de proveedor</translation>
@@ -4854,6 +4878,7 @@
 <translation id="7987814697832569482">Conectarse siempre a través de esta VPN</translation>
 <translation id="7988355189918024273">Habilitar funciones de accesibilidad</translation>
 <translation id="7991296728590311172">Configuración de accesibilidad mejorada</translation>
+<translation id="7994350303002908848">No se pudo instalar Plugin VM. Vuelve a intentarlo o comunícate con el administrador de dispositivos de tu organización. Código de error: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">Método EAP</translation>
 <translation id="7997826902155442747">Prioridad de proceso</translation>
 <translation id="7999229196265990314">Los siguientes archivos fueron creados:
@@ -4946,7 +4971,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{No hay cookies de terceros}=1{Se bloqueó 1 cookie de terceros}other{Se bloquearon # cookies de terceros}}</translation>
 <translation id="810875025413331850">No se encontraron dispositivos cercanos.</translation>
 <translation id="8111155949205007504">Compartir esta contraseña con tu iPhone</translation>
-<translation id="8113043281354018522">Elige un tipo de licencia</translation>
 <translation id="8114875720387900039">División horizontal</translation>
 <translation id="8116972784401310538">&amp;Administrador de favoritos</translation>
 <translation id="8117620576188476503">Administra las conexiones, actualizaciones y configuración con la bandeja de estado. Presiona Alt + mayúscula + S para acceder.</translation>
@@ -5103,6 +5127,7 @@
 <translation id="8327039559959785305">Se produjo un error al montar archivos de Linux. Vuelve a intentarlo.</translation>
 <translation id="8335587457941836791">No fijar en la biblioteca</translation>
 <translation id="8336407002559723354">Las actualizaciones finalizan en <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Reinicia el dispositivo para mostrar el texto del sistema en <ph name="LANGUAGE" /></translation>
 <translation id="8336739000755212683">Cambiar la imagen de cuenta del dispositivo</translation>
 <translation id="8337047789441383384">Ya registraste esta llave de seguridad. No es necesario que vuelvas a hacerlo.</translation>
 <translation id="8338952601723052325">Sitio web del programador</translation>
@@ -5146,6 +5171,7 @@
 <translation id="8400146488506985033">Administrar personas</translation>
 <translation id="8401432541486058167">Proporciona el PIN asociado a tu tarjeta inteligente.</translation>
 <translation id="8405046151008197676">Conoce las novedades de la última actualización</translation>
+<translation id="8408068190360279472">Red <ph name="NETWORK_TYPE" />, conectando</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Preguntar primero (recomendado)</translation>
 <translation id="8418445294933751433">Mo&amp;strar como pestaña</translation>
@@ -5435,6 +5461,7 @@
 <translation id="8807632654848257479">Estable</translation>
 <translation id="8808478386290700967">Tienda virtual</translation>
 <translation id="8808686172382650546">Gato</translation>
+<translation id="8808744862003883508">En esta página, podrás ver todas las extensiones instaladas en Chrome.</translation>
 <translation id="8809147117840417135">Verde azulado claro</translation>
 <translation id="8813698869395535039">No se puede acceder a <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">hoja de papel</translation>
@@ -5662,7 +5689,6 @@
 <translation id="9121814364785106365">Abrir como pestaña anclada</translation>
 <translation id="9122176249172999202">Se pausó <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
 <translation id="9124003689441359348">Las contraseñas guardadas aparecerán aquí</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (quedan <ph name="LICENSE_COUNT" />)</translation>
 <translation id="9128317794749765148">No se completó la configuración</translation>
 <translation id="9128870381267983090">Conectarse a una red</translation>
 <translation id="9130015405878219958">Se ingresó un modo no válido.</translation>
@@ -5701,6 +5727,7 @@
 <translation id="9188732951356337132">Envía datos de uso y diagnóstico. De forma automática, este dispositivo está enviando a Google datos de diagnóstico y sobre el uso del dispositivo y las apps. Esta información no se usará para identificar a tu hijo y ayudará a lograr la estabilidad de las apps y el sistema, entre otras mejoras. Algunos datos agregados también ayudarán a las apps y los socios de Google, como los desarrolladores de Android. Si habilitaste la "Actividad de web y de aplicaciones adicional" en la Cuenta de Google de tu hijo, es posible que se almacenen estos datos en esa cuenta. <ph name="BEGIN_LINK2" />Más información<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + clave previamente compartida</translation>
 <translation id="920045321358709304">Buscar en <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">Se borrarán los datos sin conexión</translation>
 <translation id="9201220332032049474">Opciones de bloqueo de pantalla</translation>
 <translation id="9203398526606335860">&amp;Perfiles activados</translation>
 <translation id="9203904171912129171">Seleccionar un dispositivo</translation>
@@ -5713,6 +5740,7 @@
 <translation id="9220525904950070496">Eliminar cuenta</translation>
 <translation id="9220820413868316583">Levanta el dedo y vuelve a intentarlo.</translation>
 <translation id="923467487918828349">Mostrar todo</translation>
+<translation id="929117907539171075">También se borrarán los datos sin conexión de la app instalada</translation>
 <translation id="930268624053534560">Marcas de tiempo detalladas</translation>
 <translation id="932327136139879170">Página principal</translation>
 <translation id="932508678520956232">No se pudo iniciar la impresión.</translation>
@@ -5738,6 +5766,7 @@
 <translation id="960719561871045870">Código del operador</translation>
 <translation id="960987915827980018">Falta aproximadamente una hora.</translation>
 <translation id="962802172452141067">Árbol de carpetas de favoritos</translation>
+<translation id="964057662886721376">Algunas extensiones pueden disminuir el rendimiento, en especial aquellas que no quisiste instalar.</translation>
 <translation id="964286338916298286">El administrador de TI inhabilitó los accesorios de Chrome para tu dispositivo.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Aplicación}other{Aplicaciones}}</translation>
 <translation id="965211523698323809">Usa tu <ph name="DEVICE_TYPE" /> para enviar o recibir mensajes de texto. <ph name="LINK_BEGIN" />Más información<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb
index 2644ff4..fd4b4e1 100644
--- a/chrome/app/resources/generated_resources_es.xtb
+++ b/chrome/app/resources/generated_resources_es.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Personalizado</translation>
 <translation id="1178581264944972037">Pausar</translation>
 <translation id="117916940443676133">Tu llave de seguridad no está protegida mediante un PIN. Para gestionar los datos de inicio de sesión, primero debes crear un PIN.</translation>
-<translation id="118069123878619799">- tus rasgos físicos, como tu altura</translation>
 <translation id="1181037720776840403">Quitar</translation>
 <translation id="1183237619868651138">No se puede instalar <ph name="EXTERNAL_CRX_FILE" /> en la memoria caché local.</translation>
 <translation id="1185924365081634987">También puedes intentar <ph name="GUEST_SIGNIN_LINK_START" />navegar como invitado<ph name="GUEST_SIGNIN_LINK_END" /> para solucionar el problema de red.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">Esperando <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033">Otros <ph name="NUM_PRINTERS" /> dispositivos disponibles.</translation>
 <translation id="1495677929897281669">Volver a la pestaña</translation>
+<translation id="1499271269825557605">Si no reconoces una extensión o el navegador no funciona correctamente, aquí puedes desactivar o personalizar las extensiones.</translation>
 <translation id="1500297251995790841">Dispositivo desconocido [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">La cuenta de este propietario debe ser la primera cuenta que ha iniciado sesión en un inicio de sesión múltiple.</translation>
 <translation id="150411034776756821">Quitar <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Esta página no tiene permiso para acceder a la cámara</translation>
 <translation id="1507246803636407672">&amp;Rechazar</translation>
 <translation id="1508491105858779599">Coloca el dedo sobre el sensor de huellas digitales para desbloquear el dispositivo.</translation>
+<translation id="1508575541972276599">La versión actual es Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">Acceder a cualquier <ph name="DEVICE_NAME_AND_VENDOR" /> a través de USB</translation>
 <translation id="150962533380566081">El PUK no es válido.</translation>
 <translation id="1510030919967934016">Se ha bloqueado esta página para que no pueda hacer un seguimiento de tu ubicación</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">Aplicar</translation>
 <translation id="1603914832182249871">(Incógnito)</translation>
 <translation id="1604432177629086300">No se ha podido imprimir. Comprueba la impresora y vuelve a intentarlo.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: la sincronización de contraseñas no funciona</translation>
 <translation id="1607139524282324606">Borrar entrada</translation>
 <translation id="1608626060424371292">Eliminar este usuario</translation>
 <translation id="1608668830839595724">Más acciones para los elementos seleccionados</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">Datos de aplicaciones alojadas</translation>
 <translation id="1776712937009046120">Añadir usuario</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Este dispositivo está administrado por <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    Haz clic en Siguiente para iniciar sesión con tu cuenta de <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation>
 <translation id="1779652936965200207">Introduce esta clave de acceso en "<ph name="DEVICE_NAME" />":</translation>
 <translation id="1780152987505130652">Cerrar grupo</translation>
 <translation id="1781291988450150470">PIN actual</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">Acción no disponible</translation>
 <translation id="2050339315714019657">Vertical</translation>
 <translation id="2053312383184521053">Datos de estado de inactividad</translation>
+<translation id="2055585478631012616">Se cerrarán tus sesiones en esos sitios web (también en las pestañas abiertas)</translation>
 <translation id="205560151218727633">Logotipo del Asistente de Google</translation>
 <translation id="2058456167109518507">Dispositivo detectado</translation>
 <translation id="2059913712424898428">Zona horaria</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">Deshacer</translation>
 <translation id="2080070583977670716">Más ajustes</translation>
 <translation id="2087822576218954668">Imprimir: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">Red VPN</translation>
 <translation id="2089566709556890888">Navega de forma segura con Google Chrome</translation>
 <translation id="2089795179672254991">Preguntar cuando un sitio web quiera ver el texto y las imágenes que se hayan copiado en el portapapeles (recomendado)</translation>
 <translation id="2090165459409185032">Para recuperar la información de tu cuenta, accede a la página google.com/accounts/recovery</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">Un sitio web está accediendo a la entrada de vídeo y audio</translation>
 <translation id="2379281330731083556">Imprimir utilizando el cuadro de diálogo del sistema <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Preguntar antes de enviar (recomendado)</translation>
+<translation id="2382818385048255866">Comprueba las extensiones</translation>
 <translation id="2384436799579181135">Se ha producido un error. Comprueba tu impresora y vuelve a intentarlo.</translation>
 <translation id="2387458720915042159">Tipo de conexión con proxy</translation>
 <translation id="2391419135980381625">Fuente estándar</translation>
@@ -1036,6 +1043,7 @@
 <translation id="2462724976360937186">ID de clave de la entidad emisora de certificados</translation>
 <translation id="2462752602710430187">Se ha añadido la impresora <ph name="PRINTER_NAME" /></translation>
 <translation id="2464089476039395325">Proxy HTTP</translation>
+<translation id="2467267713099745100"><ph name="NETWORK_TYPE" /> (desactivada)</translation>
 <translation id="2468205691404969808">Usa cookies para recordar tus preferencias aunque no visites esas páginas</translation>
 <translation id="2468402215065996499">Tamagotchi</translation>
 <translation id="2469259292033957819">No tienes ninguna impresora guardada.</translation>
@@ -1290,6 +1298,7 @@
 <translation id="2800760947029405028">Subir una imagen</translation>
 <translation id="2803375539583399270">Introducir PIN</translation>
 <translation id="2804043232879091219">No se ha podido abrir el navegador alternativo</translation>
+<translation id="2804667941345577550">Se cerrará tu sesión en este sitio web (también en las pestañas abiertas)</translation>
 <translation id="2804680522274557040">Cámara desactivada</translation>
 <translation id="2805646850212350655">Sistema de archivos de cifrado de Microsoft</translation>
 <translation id="2805756323405976993">Aplicaciones</translation>
@@ -1297,6 +1306,7 @@
 <translation id="2806891468525657116">El acceso directo ya existe</translation>
 <translation id="2807517655263062534">Los archivos que descargues aparecen aquí</translation>
 <translation id="2809586584051668049">y <ph name="NUMBER_ADDITIONAL_DISABLED" /> más</translation>
+<translation id="2810390687497823527">Si no reconoces una extensión o el navegador no funciona correctamente, aquí puedes desactivar o personalizar las extensiones.</translation>
 <translation id="2812049959647166806">No se admite Thunderbolt</translation>
 <translation id="2812944337881233323">Prueba a cerrar sesión y volver a iniciarla</translation>
 <translation id="2812989263793994277">No mostrar ninguna imagen</translation>
@@ -1336,6 +1346,7 @@
 <translation id="2861941300086904918">Administrador de seguridad de cliente nativo</translation>
 <translation id="2864601841139725659">Selecciona tu foto de perfil</translation>
 <translation id="2865919525181940183">Captura de pantalla de los programas que hay en la pantalla ahora mismo</translation>
+<translation id="286674810810214575">Comprobando fuentes de alimentación...</translation>
 <translation id="2867768963760577682">Abrir como pestaña fija</translation>
 <translation id="2868746137289129307">Esta extensión está obsoleta e inhabilitada por la política de empresas. Es posible que se habilite automáticamente cuando haya una nueva versión disponible.</translation>
 <translation id="2870560284913253234">Sitio</translation>
@@ -1413,6 +1424,7 @@
 <translation id="2972581237482394796">&amp;Rehacer</translation>
 <translation id="2973324205039581528">Silenciar sitio web</translation>
 <translation id="2977480621796371840">Quitar del grupo</translation>
+<translation id="2979520980928493164">Un Chrome mejorado</translation>
 <translation id="2979639724566107830">Abrir en una ventana nueva</translation>
 <translation id="2981113813906970160">Mostrar cursor del ratón grande</translation>
 <translation id="2982970937345031">Enviar de forma anónima</translation>
@@ -1519,6 +1531,7 @@
 <translation id="3143515551205905069">Cancelar sincronización</translation>
 <translation id="3143754809889689516">Reproducir desde el principio</translation>
 <translation id="3144647712221361880">Abrir enlace como</translation>
+<translation id="3145187901750964977">No se ha podido instalar la máquina virtual. Vuelve a intentarlo o ponte en contacto con el administrador de dispositivos de tu organización. Código de error: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Versión:
     <ph name="LINUX_VERSION" />
 
@@ -1557,6 +1570,7 @@
 <translation id="3192947282887913208">Archivos de audio</translation>
 <translation id="3194737229810486521"><ph name="URL" /> quiere almacenar datos de forma permanente en tu dispositivo</translation>
 <translation id="3199127022143353223">Servidores</translation>
+<translation id="3201306578844503970">No se ha podido instalar la máquina virtual debido a un error de red. Vuelve a intentarlo o ponte en contacto con el administrador de dispositivos de tu organización. Código de error: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Los dispositivos USB disponibles se mostrarán aquí.</translation>
 <translation id="3202131003361292969">Ruta</translation>
 <translation id="3202173864863109533">El audio de esta pestaña se está silenciando.</translation>
@@ -1893,7 +1907,6 @@
 <translation id="3678156199662914018">Extensión: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Gracias por tus comentarios. Ahora no tienes conexión, por lo que el informe se enviará más tarde.</translation>
 <translation id="3682824389861648626">Umbral de movimiento</translation>
-<translation id="3683023058278427253">Hemos detectado varios tipos de licencia para tu dominio. Selecciona uno para continuar.</translation>
 <translation id="3683524264665795342">Solicitud de <ph name="APP_NAME" /> para compartir pantalla</translation>
 <translation id="368789413795732264">Se ha producido un error al intentar escribir el archivo: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Escribe en archivos y carpetas que abras en la aplicación</translation>
@@ -2067,6 +2080,7 @@
 <translation id="389589731200570180">Compartir con invitados</translation>
 <translation id="389901847090970821">Seleccionar teclado</translation>
 <translation id="3899879303189199559">Sin conexión durante más de un año</translation>
+<translation id="3900789207771372462">Algunas extensiones pueden ver tu actividad de navegación, incluida la información personal.</translation>
 <translation id="3900966090527141178">Exportar contraseñas</translation>
 <translation id="3901991538546252627">Conectando con: <ph name="NAME" /></translation>
 <translation id="3905761538810670789">Reparar aplicación</translation>
@@ -2156,7 +2170,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" está depurando este navegador</translation>
 <translation id="4014432863917027322">¿Reparar "<ph name="EXTENSION_NAME" />"?</translation>
 <translation id="4015163439792426608">¿Tienes extensiones? <ph name="BEGIN_LINK" />Gestiona tus extensiones<ph name="END_LINK" /> en un solo sitio sin complicaciones.</translation>
-<translation id="4020106588733303597">¡Vaya! El sistema no ha podido cargar las licencias disponibles.</translation>
 <translation id="4020327272915390518">Menú de opciones</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Añadir al diccionario</translation>
@@ -2194,6 +2207,7 @@
 <translation id="407520071244661467">Escala</translation>
 <translation id="4075639477629295004">No se puede enviar <ph name="FILE_NAME" />.</translation>
 <translation id="4077917118009885966">Los anuncios están bloqueados en este sitio web</translation>
+<translation id="4077919383365622693">Se borrarán todos los datos y las cookies guardados por <ph name="SITE" />.</translation>
 <translation id="4079140982534148664">Usar la revisión ortográfica mejorada</translation>
 <translation id="4081242589061676262">No se ha podido enviar el archivo.</translation>
 <translation id="4084682180776658562">Añadir a marcadores</translation>
@@ -2268,6 +2282,7 @@
 <translation id="4181841719683918333">Idiomas</translation>
 <translation id="4184885522552335684">Arrastra una pantalla para moverla</translation>
 <translation id="4194570336751258953">Habilitar la función Tocar para hacer clic</translation>
+<translation id="4194595472342532425">No se ha podido configurar Plugin VM por un problema de configuración. Ponte en contacto con el administrador de dispositivos de tu organización. Código de error: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Abrir en una pestaña nueva</translation>
 <translation id="4195814663415092787">Abrir todo como estaba antes de cerrar</translation>
 <translation id="4198146608511578238">Solo tienes que mantener pulsado el icono del menú de aplicaciones para hablar con el Asistente de Google.</translation>
@@ -2491,6 +2506,7 @@
 <translation id="4549791035683739768">No hay ninguna huella digital almacenada en tu llave de seguridad</translation>
 <translation id="4551763574344810652">Pulsa <ph name="MODIFIER_KEY_DESCRIPTION" /> para deshacer</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005"><ph name="NETWORK_TYPE" /> (intensidad de la señal: <ph name="SIGNAL_STRENGTH" /> %)</translation>
 <translation id="4554591392113183336">La versión de la extensión externa es igual o anterior a la actual.</translation>
 <translation id="4555769855065597957">Sombra</translation>
 <translation id="4555863373929230635">Para guardar contraseñas en tu cuenta de Google, inicia sesión y activa la sincronización.</translation>
@@ -2568,6 +2584,7 @@
 <translation id="4665446389743427678">Se eliminarán todos los datos guardados por <ph name="SITE" />.</translation>
 <translation id="4668721319092543482">Haz clic para habilitar <ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">Convertir página</translation>
+<translation id="46733273239502219">También se borrarán los datos offline de las aplicaciones instaladas</translation>
 <translation id="4673442866648850031">Abrir las herramientas del lápiz óptico al quitarlo</translation>
 <translation id="4677585247300749148"><ph name="URL" /> quiere responder a eventos de accesibilidad</translation>
 <translation id="4677772697204437347">Memoria de la GPU</translation>
@@ -2659,7 +2676,6 @@
 <translation id="4823484602432206655">Leer y cambiar la configuración del dispositivo y del usuario</translation>
 <translation id="4824958205181053313">¿Quieres cancelar la sincronización?</translation>
 <translation id="4827675678516992122">No se ha podido conectar</translation>
-<translation id="4828937774870308359">Australiano</translation>
 <translation id="4829768588131278040">Configurar PIN</translation>
 <translation id="4830502475412647084">Instalando actualización del SO</translation>
 <translation id="4830573902900904548">Tu <ph name="DEVICE_TYPE" /> no puede conectarse a Internet con <ph name="NETWORK_NAME" />. Selecciona otra red. <ph name="LEARN_MORE_LINK_START" />Más información<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2700,6 +2716,7 @@
 <translation id="4876273079589074638">Cuéntanos lo que ocurrió paso a paso para que nuestros ingenieros puedan investigar y solucionar el error. Cualquier detalle es importante.</translation>
 <translation id="4876895919560854374">Bloquear y desbloquear la pantalla</translation>
 <translation id="4877276003880815204">Inspeccionar elementos</translation>
+<translation id="4878653975845355462">El administrador ha desactivado los fondos personalizados</translation>
 <translation id="4879491255372875719">Automático (predeterminado)</translation>
 <translation id="4880328057631981605">Nombre de punto de acceso</translation>
 <translation id="4880827082731008257">Buscar en el historial</translation>
@@ -2755,10 +2772,10 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" solicita conectarse a un puerto serie</translation>
 <translation id="4944310289250773232">Este servicio de autenticación está alojado por <ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">Acciones</translation>
+<translation id="4952981627953231344">Plugin VM no está permitido en este dispositivo. Ponte en contacto con el administrador de dispositivos de tu organización.</translation>
 <translation id="4953689047182316270">Responder a eventos de accesibilidad</translation>
 <translation id="4953808748584563296">Avatar naranja predeterminado</translation>
 <translation id="4955710816792587366">Elige un PIN</translation>
-<translation id="4955814292505481804">Anual</translation>
 <translation id="4959262764292427323">Las contraseñas se guardan en tu cuenta de Google para que puedas utilizarlas en cualquier dispositivo</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Tu administrador ha instalado esta aplicación.</translation>
@@ -3240,7 +3257,6 @@
 <translation id="5659593005791499971">Correo electrónico</translation>
 <translation id="5659833766619490117">No se ha podido traducir la página</translation>
 <translation id="5660204307954428567">Vincular con <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Permanente</translation>
 <translation id="5667546120811588575">Configurando Google Play...</translation>
 <translation id="5669267381087807207">Activando</translation>
 <translation id="5669691691057771421">Introducir el nuevo PIN</translation>
@@ -3256,6 +3272,7 @@
 <translation id="5687326903064479980">Zona horaria</translation>
 <translation id="5689516760719285838">Ubicación</translation>
 <translation id="56907980372820799">Vincular datos</translation>
+<translation id="5691180005790455277">Se borrarán todos los datos y las cookies guardados por <ph name="SITE_GROUP_NAME" />, así como los sitios web que contenga.</translation>
 <translation id="5691511426247308406">Familia</translation>
 <translation id="5692183275898619210">Impresión terminada</translation>
 <translation id="5696143504434933566">Denunciar uso inadecuado de <ph name="EXTENSION_NAME" /></translation>
@@ -3342,7 +3359,6 @@
 <translation id="5815645614496570556">Dirección X.400</translation>
 <translation id="5816434091619127343">Los cambios solicitados en la impresora harían que no se pudiera usar.</translation>
 <translation id="5817918615728894473">Vincular</translation>
-<translation id="5819762621475381970">- la distribución de tu habitación</translation>
 <translation id="5821565227679781414">Crear acceso directo</translation>
 <translation id="5825412242012995131">Activado (recomendado)</translation>
 <translation id="5826395379250998812">Conecta tu <ph name="DEVICE_TYPE" /> al teléfono. <ph name="LINK_BEGIN" />Más información<ph name="LINK_END" /></translation>
@@ -3478,6 +3494,7 @@
 <translation id="6007240208646052708">La búsqueda por voz no está disponible en tu idioma.</translation>
 <translation id="6009781704028455063">Sensor integrado</translation>
 <translation id="6010869025736512584">Accediendo a la entrada de vídeo</translation>
+<translation id="6011074160056912900">Red Ethernet</translation>
 <translation id="6011193465932186973">Huella digital</translation>
 <translation id="6011449291337289699">Borrar datos de sitios web</translation>
 <translation id="6015266928248016057">El PUK no es válido. Intentos restantes: <ph name="RETRIES" />.</translation>
@@ -3514,6 +3531,7 @@
 <translation id="6053401458108962351">&amp;Borrar datos de navegación...</translation>
 <translation id="6055171183283175969">La contraseña que has escrito es incorrecta.</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 con cifrado RSA</translation>
+<translation id="6055907707645252013">Red <ph name="NETWORK_TYPE" /> (sin conexión)</translation>
 <translation id="6056710589053485679">Volver a cargar normalmente</translation>
 <translation id="6057381398996433816">Este sitio web no tiene permiso para usar los sensores de luz y movimiento.</translation>
 <translation id="6058567592298841668">Complemento de máquina virtual: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3577,6 +3595,7 @@
 <translation id="6136114942382973861">Cerrar barra de descargas</translation>
 <translation id="6137767437444130246">Certificado de usuario</translation>
 <translation id="6138680304137685902">Firma X9.62 ECDSA con SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" /> (ninguna red)</translation>
 <translation id="6141988275892716286">Confirmar descarga</translation>
 <translation id="6143186082490678276">Obtener ayuda</translation>
 <translation id="6144938890088808325">Ayúdanos a mejorar los Chromebooks</translation>
@@ -3883,6 +3902,7 @@
 <translation id="6602956230557165253">Utiliza las teclas de flecha hacia la izquierda y hacia la derecha para desplazarte.</translation>
 <translation id="6605847144724004692">Los usuarios aún no han valorado esta extensión.</translation>
 <translation id="6607831829715835317">Más herramientas</translation>
+<translation id="6611972847767394631">Aquí están tus pestañas</translation>
 <translation id="6612358246767739896">Contenido protegido</translation>
 <translation id="6615455863669487791">Ver</translation>
 <translation id="6618097958368085618">Conservar de todos modos</translation>
@@ -3951,6 +3971,7 @@
 <translation id="6709133671862442373">Noticias</translation>
 <translation id="6709357832553498500">Conectar con <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Anterior</translation>
+<translation id="6715803357256707211">No se ha podido instalar la aplicación de Linux. Haz clic en la notificación para consultar más información.</translation>
 <translation id="6721678857435001674">Ver la marca y el modelo de tu llave de seguridad</translation>
 <translation id="6721972322305477112">&amp;Archivo</translation>
 <translation id="672213144943476270">Desbloquea tu perfil antes de navegar como invitado.</translation>
@@ -3975,7 +3996,6 @@
 <translation id="674632704103926902">Habilitar la función tocar y arrastrar</translation>
 <translation id="6748217015615267851">Procesador: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Puedes continuar, pero solo se restaurarán tu configuración y tus datos sincronizados. Se perderán todos los datos locales.</translation>
-<translation id="6748775883310276718">Kiosco de una sola aplicación</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (incógnito)</translation>
 <translation id="6757101664402245801">URL copiada</translation>
 <translation id="6758056191028427665">Envíanos tu opinión sobre nuestro servicio.</translation>
@@ -3985,6 +4005,7 @@
 <translation id="6769712124046837540">Añadiendo impresora...</translation>
 <translation id="6770664076092644100">Verificar mediante NFC</translation>
 <translation id="6771503742377376720">Es una entidad emisora de certificados.</translation>
+<translation id="6772339735733515807">Cómo gestionar las extensiones</translation>
 <translation id="6775163072363532304">Aquí aparecerán los dispositivos disponibles.</translation>
 <translation id="6777817260680419853">Redirección bloqueada</translation>
 <translation id="6778737459546443941">Uno de tus padres aún no lo ha aprobado</translation>
@@ -4123,6 +4144,7 @@
 <translation id="6972180789171089114">Audio/Vídeo</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> no puede abrir los archivos de esta carpeta porque son archivos del sistema</translation>
 <translation id="6972754398087986839">Empezar</translation>
+<translation id="6973611239564315524">Actualización de Debian 10 (Buster) disponible</translation>
 <translation id="6974609594866392343">Modo de demostración sin conexión</translation>
 <translation id="6977381486153291903">Revisión del firmware</translation>
 <translation id="6978121630131642226">Buscadores</translation>
@@ -4582,6 +4604,7 @@
 <translation id="7644543211198159466">Color y tema</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (propietario)</translation>
 <translation id="7645681574855902035">Cancelando copia de seguridad de Linux</translation>
+<translation id="7646772052135772216">La sincronización de contraseñas no funciona</translation>
 <translation id="7647403192093989392">Ninguna actividad reciente</translation>
 <translation id="7648992873808071793">Almacenar archivos en este dispositivo</translation>
 <translation id="7649070708921625228">Ayuda</translation>
@@ -4770,6 +4793,7 @@
 <translation id="7877451762676714207">Se ha producido un error desconocido en el servidor. Vuelve a intentarlo o ponte en contacto con el administrador del servidor.</translation>
 <translation id="7877680364634660272">Recorrido</translation>
 <translation id="7878562273885520351">Es posible que tu contraseña se haya vulnerado</translation>
+<translation id="7879631849810108578">Combinación de teclas establecida: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Los datos locales se eliminarán cuando reinicies</translation>
 <translation id="7881483672146086348">Ver cuenta</translation>
 <translation id="7882358943899516840">Tipo de proveedor</translation>
@@ -4856,6 +4880,7 @@
 <translation id="7987814697832569482">Conectar siempre a través de esta VPN</translation>
 <translation id="7988355189918024273">Habilita las funciones de accesibilidad</translation>
 <translation id="7991296728590311172">Ajustes de accesibilidad mediante interruptores</translation>
+<translation id="7994350303002908848">No se ha podido instalar Plugin VM. Vuelve a intentarlo o ponte en contacto con el administrador de dispositivos de tu organización. Código de error: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">Método EAP</translation>
 <translation id="7997826902155442747">Prioridad del proceso</translation>
 <translation id="7999229196265990314">Se han creado los siguientes archivos:
@@ -4948,7 +4973,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{No hay cookies de terceros}=1{Se ha bloqueado 1 cookie de terceros}other{Se han bloqueado # cookies de terceros}}</translation>
 <translation id="810875025413331850">No se ha encontrado ningún dispositivo cerca.</translation>
 <translation id="8111155949205007504">Comparte esta contraseña con tu iPhone</translation>
-<translation id="8113043281354018522">Elige un tipo de licencia</translation>
 <translation id="8114875720387900039">División horizontal</translation>
 <translation id="8116972784401310538">Administrador de &amp;marcadores</translation>
 <translation id="8117620576188476503">Administra los ajustes, conexiones y actualizaciones con la bandeja de estado. Para acceder a ella con el teclado, pulsa Alt + Mayús + S.</translation>
@@ -5105,6 +5129,7 @@
 <translation id="8327039559959785305">No se han podido activar los archivos de Linux. Inténtalo de nuevo.</translation>
 <translation id="8335587457941836791">No fijar en la estantería</translation>
 <translation id="8336407002559723354">Fin de las actualizaciones: <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Reiniciar el dispositivo para mostrar el idioma de la interfaz en <ph name="LANGUAGE" /></translation>
 <translation id="8336739000755212683">Cambiar imagen de cuenta de dispositivo</translation>
 <translation id="8337047789441383384">Ya has registrado esta llave de seguridad. No es necesario que la registres de nuevo.</translation>
 <translation id="8338952601723052325">Sitio web para desarrolladores</translation>
@@ -5148,6 +5173,7 @@
 <translation id="8400146488506985033">Administrar usuarios</translation>
 <translation id="8401432541486058167">Introduce el PIN asociado a tu tarjeta inteligente.</translation>
 <translation id="8405046151008197676">Consulta los aspectos destacados de la última actualización</translation>
+<translation id="8408068190360279472">Red <ph name="NETWORK_TYPE" /> (conectando)</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Preguntar antes (recomendado)</translation>
 <translation id="8418445294933751433">Mo&amp;strar como pestaña</translation>
@@ -5437,6 +5463,7 @@
 <translation id="8807632654848257479">Estable</translation>
 <translation id="8808478386290700967">Chrome Web Store</translation>
 <translation id="8808686172382650546">Gato</translation>
+<translation id="8808744862003883508">En esta página aparecen todas las extensiones instaladas en Chrome.</translation>
 <translation id="8809147117840417135">Turquesa claro</translation>
 <translation id="8813698869395535039">No se puede iniciar sesión como <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">hoja de papel</translation>
@@ -5474,7 +5501,7 @@
 <translation id="885246833287407341">Argumentos de función de API</translation>
 <translation id="8853586775156634952">Esta tarjeta solo se guardará en este dispositivo</translation>
 <translation id="8855501062415172277"><ph name="FILE_NAME" /> incluye contenido sensible.</translation>
-<translation id="8855977033756560989">Este dispositivo Chromebook Enterprise incluye la Licencia de Chrome Enterprise. Para aprovechar las funciones empresariales, registra este dispositivo con una cuenta de administrador de Google.</translation>
+<translation id="8855977033756560989">Este dispositivo Chromebook Enterprise incluye Chrome Enterprise Upgrade. Para aprovechar las funciones empresariales, registra este dispositivo con una cuenta de administrador de Google.</translation>
 <translation id="885701979325669005">Almacenamiento</translation>
 <translation id="8859057652521303089">Selecciona tu idioma:</translation>
 <translation id="8859174528519900719">Submarco: <ph name="SUBFRAME_SITE" /></translation>
@@ -5664,7 +5691,6 @@
 <translation id="9121814364785106365">Abrir como pestaña fija</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> está en pausa</translation>
 <translation id="9124003689441359348">Las contraseñas guardadas aparecerán aquí</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (restantes: <ph name="LICENSE_COUNT" />)</translation>
 <translation id="9128317794749765148">No se ha podido completar la configuración</translation>
 <translation id="9128870381267983090">Conectarse a la red</translation>
 <translation id="9130015405878219958">Modo no válido introducido</translation>
@@ -5703,6 +5729,7 @@
 <translation id="9188732951356337132">Enviar datos de uso y diagnóstico. Este dispositivo envía automáticamente a Google datos de diagnóstico, del dispositivo y del uso de las aplicaciones. Los datos no se usarán para identificar a tu hijo, sino para aumentar la estabilidad de las aplicaciones y del sistema y realizar otras mejoras. Parte de los datos recogidos también ayudarán a las aplicaciones y los colaboradores de Google, como los desarrolladores de Android. Si la opción Actividad en la Web y en Aplicaciones Adicional está activada, es posible que estos datos se guarden en la cuenta de Google de tu hijo. <ph name="BEGIN_LINK2" />Más información<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + Clave precompartida</translation>
 <translation id="920045321358709304">Buscar con <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">Se borrarán todos los datos offline</translation>
 <translation id="9201220332032049474">Opciones de bloqueo de pantalla</translation>
 <translation id="9203398526606335860">&amp;Perfiles habilitados</translation>
 <translation id="9203904171912129171">Selecciona un dispositivo</translation>
@@ -5715,6 +5742,7 @@
 <translation id="9220525904950070496">Quitar cuenta</translation>
 <translation id="9220820413868316583">Levanta el dedo y vuelve a intentarlo.</translation>
 <translation id="923467487918828349">Mostrar todas</translation>
+<translation id="929117907539171075">También se borrarán los datos offline de la aplicación instalada</translation>
 <translation id="930268624053534560">Marcas de tiempo detalladas</translation>
 <translation id="932327136139879170">Página principal</translation>
 <translation id="932508678520956232">No se ha podido iniciar la impresión.</translation>
@@ -5740,6 +5768,7 @@
 <translation id="960719561871045870">Código del operador</translation>
 <translation id="960987915827980018">Aproximadamente 1 hora</translation>
 <translation id="962802172452141067">Árbol de la carpeta de marcadores</translation>
+<translation id="964057662886721376">Algunas extensiones pueden ralentizar la navegación, sobre todo las que hayas instalado por error.</translation>
 <translation id="964286338916298286">Tu administrador de TI ha inhabilitado el contenido adicional de Chrome para tu dispositivo.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Aplicación}other{Aplicaciones}}</translation>
 <translation id="965211523698323809">Envía y recibe mensajes de texto con tu <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Más información<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb
index 45d4b94e..9bf16edc 100644
--- a/chrome/app/resources/generated_resources_et.xtb
+++ b/chrome/app/resources/generated_resources_et.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Kohandatud</translation>
 <translation id="1178581264944972037">Peata</translation>
 <translation id="117916940443676133">Teie turvavõti pole PIN-koodiga kaitstud. Sisselogimisandmete haldamiseks looge esmalt PIN-kood.</translation>
-<translation id="118069123878619799">– teie füüsilised omadused, nt pikkus</translation>
 <translation id="1181037720776840403">Eemalda</translation>
 <translation id="1183237619868651138">Faili <ph name="EXTERNAL_CRX_FILE" /> ei saa kohalikku vahemällu installida.</translation>
 <translation id="1185924365081634987">Võrguvea parandamiseks võite proovida ka <ph name="GUEST_SIGNIN_LINK_START" />külalisena sirvimist<ph name="GUEST_SIGNIN_LINK_END" />.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">Laienduse <ph name="LOAD_STATE_PARAMETER" /> ootamine ...</translation>
 <translation id="1495486559005647033">Saadaval on veel <ph name="NUM_PRINTERS" /> seadet.</translation>
 <translation id="1495677929897281669">Tagasi vahelehele</translation>
+<translation id="1499271269825557605">Kui laiendus on teile võõras või brauser ei tööta ootuspäraselt, saate siin laiendusi kohandada või need välja lülitada.</translation>
 <translation id="1500297251995790841">Tundmatu seade [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">See omaniku konto peab olema esimene sisselogitud konto mitmele kontole sisselogimise seansil.</translation>
 <translation id="150411034776756821">Eemalda sait <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Sellel lehel on juurdepääs teie kaamerale blokeeritud.</translation>
 <translation id="1507246803636407672">&amp;Loobu</translation>
 <translation id="1508491105858779599">Seadme avamiseks asetage sõrm sõrmejäljeandurile.</translation>
+<translation id="1508575541972276599">Praegune versioon on Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">Juurdepääs seadmele <ph name="DEVICE_NAME_AND_VENDOR" /> USB kaudu</translation>
 <translation id="150962533380566081">Vale PUK-kood.</translation>
 <translation id="1510030919967934016">Seda lehte on blokeeritud nii, et see ei saa teie asukohta jälgida.</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">Rakenda</translation>
 <translation id="1603914832182249871">(Inkognito)</translation>
 <translation id="1604432177629086300">Ei õnnestunud printida. Kontrollige printerit ja proovige uuesti.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: paroolide sünkroonimine ei tööta</translation>
 <translation id="1607139524282324606">Kustuta sisestus</translation>
 <translation id="1608626060424371292">Eemalda see kasutaja</translation>
 <translation id="1608668830839595724">Rohkem toiminguid valitud üksuste jaoks</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">Hostitud rakenduste andmed</translation>
 <translation id="1776712937009046120">Lisa kasutaja</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Seda seadet haldab <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    Domeeni <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> kontole sisselogimise jätkamiseks klõpsake valikul „Järgmine”.</translation>
 <translation id="1779652936965200207">Sisestage seadmesse „<ph name="DEVICE_NAME" />” pääsukood:</translation>
 <translation id="1780152987505130652">Grupi sulgemine</translation>
 <translation id="1781291988450150470">Praegune PIN-kood</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">Toiming pole saadaval</translation>
 <translation id="2050339315714019657">Vertikaalpaigutus</translation>
 <translation id="2053312383184521053">Jõudeoleku andmed</translation>
+<translation id="2055585478631012616">Teid logitakse nendelt saitidelt (sh avatud vahelehtedel) välja</translation>
 <translation id="205560151218727633">Google'i assistendi logo</translation>
 <translation id="2058456167109518507">Tuvastati seade</translation>
 <translation id="2059913712424898428">Ajavöönd</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">Võta tagasi</translation>
 <translation id="2080070583977670716">Rohkem seadeid</translation>
 <translation id="2087822576218954668">Printimine: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN-võrk</translation>
 <translation id="2089566709556890888">Sirvige Google Chrome'iga ohutult</translation>
 <translation id="2089795179672254991">Küsi, kui sait soovib näha lõikelauale kopeeritud teksti ja kujutisi (soovitatud)</translation>
 <translation id="2090165459409185032">Konto teabe taastamiseks minge aadressile: google.com/accounts/recovery</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">Saidil on juurdepääs heli- ja videosisendile</translation>
 <translation id="2379281330731083556">Prindi süsteemidialoogi abil ... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Küsib enne saatmist (soovitatav)</translation>
+<translation id="2382818385048255866">Laienduste kontrollimine</translation>
 <translation id="2384436799579181135">Ilmnes viga. Kontrollige printerit ja proovige uuesti.</translation>
 <translation id="2387458720915042159">Puhverserveri ühenduse tüüp</translation>
 <translation id="2391419135980381625">Standardne font</translation>
@@ -1036,6 +1043,7 @@
 <translation id="2462724976360937186">Sertifitseerimisorgani võtme ID</translation>
 <translation id="2462752602710430187"><ph name="PRINTER_NAME" /> on lisatud</translation>
 <translation id="2464089476039395325">HTTP-puhverserver</translation>
+<translation id="2467267713099745100"><ph name="NETWORK_TYPE" />-võrk, väljas</translation>
 <translation id="2468205691404969808">Kasutage küpsisefaile, et oma eelistusi meeles pidada, isegi kui te neid lehti ei külasta</translation>
 <translation id="2468402215065996499">Tamagotchi</translation>
 <translation id="2469259292033957819">Teil pole salvestatud printereid.</translation>
@@ -1290,6 +1298,7 @@
 <translation id="2800760947029405028">Laadige üles pilt</translation>
 <translation id="2803375539583399270">Sisestage PIN-kood</translation>
 <translation id="2804043232879091219">Alternatiivset brauserit ei õnnestunud avada</translation>
+<translation id="2804667941345577550">Teid logitakse sellelt saidilt (sh avatud vahelehtedel) välja</translation>
 <translation id="2804680522274557040">Kaamera on välja lülitatud</translation>
 <translation id="2805646850212350655">Microsofti failisüsteemi krüptimine</translation>
 <translation id="2805756323405976993">Rakendused</translation>
@@ -1297,6 +1306,7 @@
 <translation id="2806891468525657116">Otsetee on juba olemas</translation>
 <translation id="2807517655263062534">Siin kuvatakse teie allalaaditud failid</translation>
 <translation id="2809586584051668049">ja veel <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2810390687497823527">Kui laiendus on teile võõras või brauser ei tööta ootuspäraselt, saate siin laiendusi kohandada või need välja lülitada.</translation>
 <translation id="2812049959647166806">Thunderbolti ei toetata</translation>
 <translation id="2812944337881233323">Proovige välja ja seejärel uuesti sisse logida</translation>
 <translation id="2812989263793994277">Ära kuva ühtki pilti</translation>
@@ -1336,6 +1346,7 @@
 <translation id="2861941300086904918">Native Clienti turvalisuse haldur</translation>
 <translation id="2864601841139725659">Profiilipildi määramine</translation>
 <translation id="2865919525181940183">Ekraanipilt programmidest, mis on praegu ekraanil kuvatud</translation>
+<translation id="286674810810214575">Toiteallikate kontrollimine …</translation>
 <translation id="2867768963760577682">Ava kinnitatud vahelehel</translation>
 <translation id="2868746137289129307">See laiendus on aegunud ja ettevõtte reeglitega keelatud. Kui uuem versioon muutub kättesaadavaks, siis võidakse see automaatselt lubada.</translation>
 <translation id="2870560284913253234">Sait</translation>
@@ -1413,6 +1424,7 @@
 <translation id="2972581237482394796">&amp;Tee uuesti</translation>
 <translation id="2973324205039581528">Vaigista sait</translation>
 <translation id="2977480621796371840">Grupist eemaldamine</translation>
+<translation id="2979520980928493164">Tervem ja rõõmsam Chrome</translation>
 <translation id="2979639724566107830">Ava uues aknas</translation>
 <translation id="2981113813906970160">Kuva suur hiirekursor</translation>
 <translation id="2982970937345031">Anonüümselt teavitamine</translation>
@@ -1519,6 +1531,7 @@
 <translation id="3143515551205905069">Tühista sünkroonimine</translation>
 <translation id="3143754809889689516">Esita algusest</translation>
 <translation id="3144647712221361880">Ava link kasutajana</translation>
+<translation id="3145187901750964977">Virtuaalmasinat ei õnnestunud installida. Proovige uuesti või võtke ühendust organisatsiooni seadmeadministraatoriga. Veakood: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Versioon:
     <ph name="LINUX_VERSION" />
 
@@ -1557,6 +1570,7 @@
 <translation id="3192947282887913208">Helifailid</translation>
 <translation id="3194737229810486521"><ph name="URL" /> soovib andmed alaliselt teie seadmesse salvestada.</translation>
 <translation id="3199127022143353223">Serverid</translation>
+<translation id="3201306578844503970">Virtuaalmasinat ei saanud võrgu vea tõttu installida. Proovige uuesti või võtke ühendust organisatsiooni seadmeadministraatoriga. Veakood: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Siin kuvatakse saadaolevad USB-seadmed.</translation>
 <translation id="3202131003361292969">Tee</translation>
 <translation id="3202173864863109533">Selle vahekaardi heli summutatakse.</translation>
@@ -1893,7 +1907,6 @@
 <translation id="3678156199662914018">Laiend: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Täname teid tagasiside eest. Te pole praegu võrguga ühendatud ja aruanne saadetakse hiljem.</translation>
 <translation id="3682824389861648626">Liikumislävi</translation>
-<translation id="3683023058278427253">Tuvastasime teie domeeni puhul mitu litsentsitüüpi. Jätkamiseks valige üks.</translation>
 <translation id="3683524264665795342">Rakenduse <ph name="APP_NAME" /> ekraani jagamise taotlus</translation>
 <translation id="368789413795732264">Ilmnes viga, kui proovisite kirjutada faili: <ph name="ERROR_TEXT" /></translation>
 <translation id="3688507211863392146">Failidesse ja kaustadesse kirjutamine, mille rakenduses avate</translation>
@@ -2067,6 +2080,7 @@
 <translation id="389589731200570180">Külalistega jagamine</translation>
 <translation id="389901847090970821">Klaviatuuri valimine</translation>
 <translation id="3899879303189199559">Üle ühe aasta võrguühenduseta</translation>
+<translation id="3900789207771372462">Mõni laiendus näeb teie sirvimistegevusi, sh isiklikke andmeid.</translation>
 <translation id="3900966090527141178">Paroolide eksportimine</translation>
 <translation id="3901991538546252627">Võrguga <ph name="NAME" /> ühenduse loomine</translation>
 <translation id="3905761538810670789">Paranda rakendust</translation>
@@ -2157,7 +2171,6 @@
 <translation id="4013132157686828973">„<ph name="CLIENT_NAME" />” silub seda brauserit</translation>
 <translation id="4014432863917027322">Kas parandada laiendust <ph name="EXTENSION_NAME" />?</translation>
 <translation id="4015163439792426608">Kas teil on laiendusi? <ph name="BEGIN_LINK" />Hallake oma laiendusi<ph name="END_LINK" /> hõlpsalt ühes kohas.</translation>
-<translation id="4020106588733303597">Vabandust! Süsteemil ei õnnestunud saadaolevaid litsentse laadida.</translation>
 <translation id="4020327272915390518">Valikute menüü</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Lisa sõnaraamatule</translation>
@@ -2195,6 +2208,7 @@
 <translation id="407520071244661467">Skaleeri</translation>
 <translation id="4075639477629295004">Faili <ph name="FILE_NAME" /> ei saa üle kanda.</translation>
 <translation id="4077917118009885966">Reklaamid on sellel saidil blokeeritud</translation>
+<translation id="4077919383365622693">Kõik saidi <ph name="SITE" /> salvestatud andmed ja küpsisefailid kustutatakse.</translation>
 <translation id="4079140982534148664">Kasuta täiustatud õigekirjakontrolli</translation>
 <translation id="4081242589061676262">Faili ei saa üle kanda.</translation>
 <translation id="4084682180776658562">Järjehoidja</translation>
@@ -2269,6 +2283,7 @@
 <translation id="4181841719683918333">Keeled</translation>
 <translation id="4184885522552335684">Lohistage ekraani liigutamiseks</translation>
 <translation id="4194570336751258953">Luba klõpsamine</translation>
+<translation id="4194595472342532425">Plugin VM-i ei õnnestunud konfiguratsiooniprobleemi tõttu seadistada. Võtke ühendust oma organisatsiooni seadmete administraatoriga. Veakood: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Ava uuel vahelehel</translation>
 <translation id="4195814663415092787">Jätka sealt, kus pooleli jäin</translation>
 <translation id="4198146608511578238">Google'i assistendiga rääkimiseks hoidke all käivitaja ikooni.</translation>
@@ -2492,6 +2507,7 @@
 <translation id="4549791035683739768">Teie turvavõtmele ei ole sõrmejälgi salvestatud</translation>
 <translation id="4551763574344810652">Tagasivõtmiseks vajutage klahvi <ph name="MODIFIER_KEY_DESCRIPTION" /></translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005"><ph name="NETWORK_TYPE" />-võrk, signaalitugevus: <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">Välise laienduse versioon on sama või vanem mis olemasoleval.</translation>
 <translation id="4555769855065597957">Vari</translation>
 <translation id="4555863373929230635">Paroolide salvestamiseks oma Google'i kontole logige sisse ja lülitage sünkroonimine sisse.</translation>
@@ -2569,6 +2585,7 @@
 <translation id="4665446389743427678">Kõik saidi <ph name="SITE" /> salvestatud andmed kustutatakse.</translation>
 <translation id="4668721319092543482">Pistikprogrammi <ph name="PLUGIN_NAME" /> lubamiseks klõpsake</translation>
 <translation id="4672657274720418656">Lehe teisendamine</translation>
+<translation id="46733273239502219">Kustutatakse ka installitud rakenduste võrguühenduseta andmed</translation>
 <translation id="4673442866648850031">Ava elektronpliiatsi tööriistad, kui elektronpliiats eemaldatakse</translation>
 <translation id="4677585247300749148"><ph name="URL" /> soovib vastata juurdepääsetavuse sündmustele</translation>
 <translation id="4677772697204437347">GPU-mälu</translation>
@@ -2660,7 +2677,6 @@
 <translation id="4823484602432206655">Loe ja muuda kasutaja ja seadme seadeid</translation>
 <translation id="4824958205181053313">Kas tühistada sünkroonimine?</translation>
 <translation id="4827675678516992122">Ühendamine ebaõnnestus</translation>
-<translation id="4828937774870308359">Austraalia</translation>
 <translation id="4829768588131278040">Seadista PIN-kood</translation>
 <translation id="4830502475412647084">OS-i värskenduse installimine</translation>
 <translation id="4830573902900904548">Seade <ph name="DEVICE_TYPE" /> ei saa võrgu <ph name="NETWORK_NAME" /> kaudu Internetiga ühendust. Valige mõni teine võrk. <ph name="LEARN_MORE_LINK_START" />Lisateave<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2701,6 +2717,7 @@
 <translation id="4876273079589074638">Aidake meie inseneridel seda kokkujooksmist uurida ja see parandada. Võimaluse korral loetlege täpselt tehtud toimingud. Ükski pisiasi pole liiga väike!</translation>
 <translation id="4876895919560854374">Ekraani lukustamine ja avamine</translation>
 <translation id="4877276003880815204">Elementide uurimine</translation>
+<translation id="4878653975845355462">Administraator lülitas kohandatud taustad välja</translation>
 <translation id="4879491255372875719">Automaatne (vaikimisi)</translation>
 <translation id="4880328057631981605">Pääsupunkti nimi</translation>
 <translation id="4880827082731008257">Otsi ajaloost</translation>
@@ -2756,10 +2773,10 @@
 <translation id="4943691134276646401">„<ph name="CHROME_EXTENSION_NAME" />” soovib järjestikpordiga ühendust luua</translation>
 <translation id="4944310289250773232">Autentimisteenust hostib <ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">Toimingud</translation>
+<translation id="4952981627953231344">Plugin VM pole selles seadmes lubatud. Võtke ühendust oma organisatsiooni seadmete administraatoriga.</translation>
 <translation id="4953689047182316270">Juurdepääsetavuse sündmustele vastamine</translation>
 <translation id="4953808748584563296">Oranž vaikeavatar</translation>
 <translation id="4955710816792587366">Valige PIN-kood</translation>
-<translation id="4955814292505481804">Aastane</translation>
 <translation id="4959262764292427323">Paroolid salvestatakse teie Google'i kontole, et saaksite neid kasutada mis tahes seadmes</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Selle rakenduse installis administraator.</translation>
@@ -3241,7 +3258,6 @@
 <translation id="5659593005791499971">Meil</translation>
 <translation id="5659833766619490117">Seda lehte ei õnnestunud tõlkida.</translation>
 <translation id="5660204307954428567">Seadmega <ph name="DEVICE_NAME" /> sidumine</translation>
-<translation id="5662477687021125631">Jätkuv</translation>
 <translation id="5667546120811588575">Google Play seadistamine …</translation>
 <translation id="5669267381087807207">Aktiveerimine</translation>
 <translation id="5669691691057771421">Sisestage uus PIN-kood</translation>
@@ -3257,6 +3273,7 @@
 <translation id="5687326903064479980">Ajavöönd</translation>
 <translation id="5689516760719285838">Asukoht</translation>
 <translation id="56907980372820799">Lingi andmed</translation>
+<translation id="5691180005790455277">Kõik grupi <ph name="SITE_GROUP_NAME" /> ning selle alla kuuluvate saitide salvestatud andmed ja küpsisefailid kustutatakse.</translation>
 <translation id="5691511426247308406">Perekond</translation>
 <translation id="5692183275898619210">Printimine on lõpetatud</translation>
 <translation id="5696143504434933566">Teata laienduse „<ph name="EXTENSION_NAME" />” väärkasutusest</translation>
@@ -3343,7 +3360,6 @@
 <translation id="5815645614496570556">X.400 aadress</translation>
 <translation id="5816434091619127343">Nõutud printeri muudatuste korral ei saaks printerit kasutada.</translation>
 <translation id="5817918615728894473">Seo</translation>
-<translation id="5819762621475381970">– teie ruumi paigutus</translation>
 <translation id="5821565227679781414">Loo otsetee</translation>
 <translation id="5825412242012995131">Sees (soovitatav)</translation>
 <translation id="5826395379250998812">Ühendage seade <ph name="DEVICE_TYPE" /> oma telefoniga. <ph name="LINK_BEGIN" />Lisateave<ph name="LINK_END" /></translation>
@@ -3479,6 +3495,7 @@
 <translation id="6007240208646052708">Häälotsing pole teie keeles saadaval.</translation>
 <translation id="6009781704028455063">Sisseehitatud andur</translation>
 <translation id="6010869025736512584">Juurdepääs videosisendile</translation>
+<translation id="6011074160056912900">Etherneti-võrk</translation>
 <translation id="6011193465932186973">Sõrmejälg</translation>
 <translation id="6011449291337289699">Saidi andmete kustutamine</translation>
 <translation id="6015266928248016057">Vale PUK-kood. Katseid jäänud: <ph name="RETRIES" />.</translation>
@@ -3515,6 +3532,7 @@
 <translation id="6053401458108962351">Kustuta &amp;sirvimise andmed...</translation>
 <translation id="6055171183283175969">Sisestatud parool on vale.</translation>
 <translation id="6055392876709372977">PKCS 1 SHA-256 koos RSA krüpteerimisega</translation>
+<translation id="6055907707645252013"><ph name="NETWORK_TYPE" />-võrk, pole ühendatud</translation>
 <translation id="6056710589053485679">Tavaline uuestilaadimine</translation>
 <translation id="6057381398996433816">Saidil pole lubatud liikumis- ja valgusandureid kasutada.</translation>
 <translation id="6058567592298841668">Pistikprogrammi virtuaalmasin: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3578,6 +3596,7 @@
 <translation id="6136114942382973861">Sule allalaadimiste riba</translation>
 <translation id="6137767437444130246">Kasutaja sertifikaat</translation>
 <translation id="6138680304137685902">X9.62 ECDSA allkiri SHA-384-ga</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, võrku pole</translation>
 <translation id="6141988275892716286">Allalaadimise kinnitamine</translation>
 <translation id="6143186082490678276">Abi hankimine</translation>
 <translation id="6144938890088808325">Aidake meil Chromebooke täiustada</translation>
@@ -3884,6 +3903,7 @@
 <translation id="6602956230557165253">Kasutage navigeerimiseks vasak- ja paremnooleklahve.</translation>
 <translation id="6605847144724004692">Kasutajate hinnanguid veel pole.</translation>
 <translation id="6607831829715835317">Rohkem töö&amp;riistu</translation>
+<translation id="6611972847767394631">Oma vahekaardid leiate siit</translation>
 <translation id="6612358246767739896">Kaitstud sisu</translation>
 <translation id="6615455863669487791">Kuva mulle</translation>
 <translation id="6618097958368085618">Säilita ikkagi</translation>
@@ -3952,6 +3972,7 @@
 <translation id="6709133671862442373">Uudised</translation>
 <translation id="6709357832553498500">Ühenda, kasutades laiendust <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Eelmine</translation>
+<translation id="6715803357256707211">Linuxi rakenduse installimisel ilmnes viga. Lisateabe saamiseks klõpsake märguandel.</translation>
 <translation id="6721678857435001674">Vaadata teie turvavõtme tootjat ja mudelit</translation>
 <translation id="6721972322305477112">&amp;Fail</translation>
 <translation id="672213144943476270">Enne külalisena sirvimist avage oma profiil.</translation>
@@ -3976,7 +3997,6 @@
 <translation id="674632704103926902">Luba puutega lohistamine</translation>
 <translation id="6748217015615267851">Renderdaja: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Võite jätkata, kuid taastatakse ainult teie sünkroonitud andmed ja seaded. Kõik kohalikud andmed lähevad kaotsi.</translation>
-<translation id="6748775883310276718">Ühe rakenduse kiosk</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Inkognito)</translation>
 <translation id="6757101664402245801">URL on kopeeritud</translation>
 <translation id="6758056191028427665">Andke teada, kuidas meil läheb.</translation>
@@ -3986,6 +4006,7 @@
 <translation id="6769712124046837540">Printeri lisamine ...</translation>
 <translation id="6770664076092644100">Kinnitamine NFC kaudu</translation>
 <translation id="6771503742377376720">On sertifitseerimisorgan</translation>
+<translation id="6772339735733515807">Laienduste haldamine</translation>
 <translation id="6775163072363532304">Saadaolevad seadmed kuvatakse siin.</translation>
 <translation id="6777817260680419853">Ümbersuunamine blokeeriti</translation>
 <translation id="6778737459546443941">Vanem ei ole seda veel kinnitanud</translation>
@@ -4124,6 +4145,7 @@
 <translation id="6972180789171089114">Heli/video</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> ei saa selles kaustas olevaid faile avada, kuna see sisaldab süsteemifaile</translation>
 <translation id="6972754398087986839">Alustamine</translation>
+<translation id="6973611239564315524">Uuendamine versioonile Debian 10 (Buster) on saadaval</translation>
 <translation id="6974609594866392343">Võrguühenduseta demorežiim</translation>
 <translation id="6977381486153291903">Püsivara redaktsioon</translation>
 <translation id="6978121630131642226">Otsingumootorid</translation>
@@ -4583,6 +4605,7 @@
 <translation id="7644543211198159466">Värv ja teema</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (omanik)</translation>
 <translation id="7645681574855902035">Linuxi varundamise tühistamine</translation>
+<translation id="7646772052135772216">Paroolide sünkroonimine ei tööta</translation>
 <translation id="7647403192093989392">Hiljutised tegevused puuduvad</translation>
 <translation id="7648992873808071793">Salvestada failid sellesse seadmesse</translation>
 <translation id="7649070708921625228">Abi</translation>
@@ -4771,6 +4794,7 @@
 <translation id="7877451762676714207">Tundmatu serveriviga. Proovige uuesti või võtke ühendust serveri administraatoriga.</translation>
 <translation id="7877680364634660272">Tutvustus</translation>
 <translation id="7878562273885520351">Teie parool võib olla ohus</translation>
+<translation id="7879631849810108578">Otsetee on määratud: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Kohalikud andmed kustutatakse taaskäivitamisel</translation>
 <translation id="7881483672146086348">Kuva konto</translation>
 <translation id="7882358943899516840">Teenusepakkuja tüüp</translation>
@@ -4857,6 +4881,7 @@
 <translation id="7987814697832569482">Loo alati ühendus selle VPN-i kaudu</translation>
 <translation id="7988355189918024273">Luba juurdepääsetavuse funktsioonid</translation>
 <translation id="7991296728590311172">Lülitiga juurdepääsu seaded</translation>
+<translation id="7994350303002908848">Plugin VM-i ei õnnestunud installida. Proovige uuesti või võtke ühendust organisatsiooni seadmeadministraatoriga. Veakood: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">EAP meetod</translation>
 <translation id="7997826902155442747">Protsessi prioriteet</translation>
 <translation id="7999229196265990314">Loodi järgmised failid:
@@ -4949,7 +4974,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Kolmanda osapoole küpsisefailid puuduvad}=1{1 kolmanda osapoole küpsisefail blokeeriti}other{# kolmanda osapoole küpsisefaili blokeeriti}}</translation>
 <translation id="810875025413331850">Läheduses olevaid seadmeid ei leitud.</translation>
 <translation id="8111155949205007504">Jagage seda parooli oma iPhone'iga</translation>
-<translation id="8113043281354018522">Valige litsentsi tüüp</translation>
 <translation id="8114875720387900039">Horisontaalne poolitamine</translation>
 <translation id="8116972784401310538">&amp;Järjehoidjate haldur</translation>
 <translation id="8117620576188476503">Olekusalves on võimalik hallata ühendusi, värskendusi ja seadeid. Klaviatuuri abil siia liikumiseks vajutage klahvikombinatsiooni Alt + Tõstuklahv + S.</translation>
@@ -5106,6 +5130,7 @@
 <translation id="8327039559959785305">Linuxi failide ühendamisel ilmnes viga. Proovige uuesti.</translation>
 <translation id="8335587457941836791">Riiulilt vabastamine</translation>
 <translation id="8336407002559723354">Värskendamine lõpetatakse <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Taaskäivitage seade, et kuvada süsteemi tekst <ph name="LANGUAGE" /> keeles</translation>
 <translation id="8336739000755212683">Seadme kontopildi muutmine</translation>
 <translation id="8337047789441383384">See turvavõti on juba registreeritud. Teil ei ole vaja seda uuesti registreerida.</translation>
 <translation id="8338952601723052325">Arendaja veebisait</translation>
@@ -5149,6 +5174,7 @@
 <translation id="8400146488506985033">Halda inimesi</translation>
 <translation id="8401432541486058167">Sisestage oma kiipkaardi PIN-kood.</translation>
 <translation id="8405046151008197676">Vaadake viimase värskenduse esiletõstetud teavet</translation>
+<translation id="8408068190360279472"><ph name="NETWORK_TYPE" />-võrk, ühendamine</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Esmalt küsi (soovitatav)</translation>
 <translation id="8418445294933751433">&amp;Kuva vahelehena</translation>
@@ -5438,6 +5464,7 @@
 <translation id="8807632654848257479">Stabiilne</translation>
 <translation id="8808478386290700967">Veebipood</translation>
 <translation id="8808686172382650546">Kass</translation>
+<translation id="8808744862003883508">Sellel lehel näete kõiki Chrome'i installitud laiendusi.</translation>
 <translation id="8809147117840417135">Helesinakasroheline</translation>
 <translation id="8813698869395535039">Kasutaja <ph name="USERNAME" /> kontole ei saa sisse logida</translation>
 <translation id="8813811964357448561">paberileht</translation>
@@ -5665,7 +5692,6 @@
 <translation id="9121814364785106365">Ava kinnitatud vahelehel</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> on peatatud</translation>
 <translation id="9124003689441359348">Salvestatud paroolid kuvatakse siin</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> on alles)</translation>
 <translation id="9128317794749765148">Seadistust ei õnnestunud lõpule viia</translation>
 <translation id="9128870381267983090">Ühendumine Internetiga</translation>
 <translation id="9130015405878219958">Sisestati vale režiim.</translation>
@@ -5704,6 +5730,7 @@
 <translation id="9188732951356337132">Saada kasutus- ja diagnostikaandmeid. See seade saadab Google'ile praegu automaatselt seadme teavet ning rakenduse kasutus- ja  diagnostikaandmeid. Neid andmeid ei kasutata teie lapse isiku tuvastamiseks ning need aitavad parandada süsteemi ja rakenduse stabiilsust ning muud. Teatud koondandmed on abiks ka Google'i rakendustele ja partneritele, näiteks Androidi arendajatele. Kui täiendavad veebi- ja rakendustegevused on teie lapse jaoks sisse lülitatud, võidakse need andmed salvestada tema Google'i kontole. <ph name="BEGIN_LINK2" />Lisateave<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPSec + eeljagatud võti</translation>
 <translation id="920045321358709304">Otsi teenusest <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">Kõik võrguühenduseta andmed kustutatakse</translation>
 <translation id="9201220332032049474">Ekraaniluku valikud</translation>
 <translation id="9203398526606335860">&amp;Profileerimine lubatud</translation>
 <translation id="9203904171912129171">Valige seade</translation>
@@ -5716,6 +5743,7 @@
 <translation id="9220525904950070496">Konto eemaldamine</translation>
 <translation id="9220820413868316583">Tõstke sõrm andurilt ja proovige uuesti.</translation>
 <translation id="923467487918828349">Kuva kõik</translation>
+<translation id="929117907539171075">Kustutatakse ka installitud rakenduse võrguühenduseta andmed</translation>
 <translation id="930268624053534560">Üksikasjalikud ajatemplid</translation>
 <translation id="932327136139879170">Kodu</translation>
 <translation id="932508678520956232">Printimist ei saanud alustada.</translation>
@@ -5741,6 +5769,7 @@
 <translation id="960719561871045870">Operaatori kood</translation>
 <translation id="960987915827980018">Jäänud on umbes 1 tund</translation>
 <translation id="962802172452141067">Järjehoidjate kausta puu</translation>
+<translation id="964057662886721376">Mõned laiendused (eriti need, mida te ei installinud tahtlikult) võivad seadet aeglustada.</translation>
 <translation id="964286338916298286">IT-administraator on keelanud teie seadmes Chrome'i lisad.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Rakendus}other{Rakendused}}</translation>
 <translation id="965211523698323809">Saatke ja võtke seadmes <ph name="DEVICE_TYPE" /> vastu tekstsõnumeid. <ph name="LINK_BEGIN" />Lisateave<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_eu.xtb b/chrome/app/resources/generated_resources_eu.xtb
index 8d106b8..3b536da 100644
--- a/chrome/app/resources/generated_resources_eu.xtb
+++ b/chrome/app/resources/generated_resources_eu.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Pertsonalizatua</translation>
 <translation id="1178581264944972037">Pausatu</translation>
 <translation id="117916940443676133">Segurtasun-giltza ez daukazu PIN kodearekin babestuta. Saioa hasteko datuak kudeatzeko, sortu PIN bat.</translation>
-<translation id="118069123878619799">- Zure ezaugarri fisikoak (esaterako, altuera).</translation>
 <translation id="1181037720776840403">Kendu</translation>
 <translation id="1183237619868651138">Ezin da instalatu <ph name="EXTERNAL_CRX_FILE" /> gailuko cachean.</translation>
 <translation id="1185924365081634987">Sareko errorea konpontzeko, <ph name="GUEST_SIGNIN_LINK_START" />gonbidatu gisa nabigatzen<ph name="GUEST_SIGNIN_LINK_END" /> saia zaitezke.</translation>
@@ -1893,7 +1892,6 @@
 <translation id="3678156199662914018">Luzapena: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Eskerrik asko iritzia bidaltzeagatik. Konektatuta ez zaudenez, geroago bidaliko da txostena.</translation>
 <translation id="3682824389861648626">Mugimenduen atalasea</translation>
-<translation id="3683023058278427253">Lizentzia mota bat baino gehiago hauteman ditugu domeinuan. Aukeratu bat aurrera egiteko.</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> aplikazioaren eskaera pantaila partekatzeko</translation>
 <translation id="368789413795732264">Errore bat gertatu da fitxategia idazten saiatzean: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Idatzi aplikazioan irekitzen dituzun fitxategi eta karpetetan</translation>
@@ -2157,7 +2155,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" arakatzaile hau arazten ari da</translation>
 <translation id="4014432863917027322">"<ph name="EXTENSION_NAME" />" konpondu nahi duzu?</translation>
 <translation id="4015163439792426608">Luzapenak dituzu? <ph name="BEGIN_LINK" />Kudeatu luzapen guztiak<ph name="END_LINK" /> toki berean.</translation>
-<translation id="4020106588733303597">Sistemak ezin izan ditu kargatu erabilgarri dauden lizentziak.</translation>
 <translation id="4020327272915390518">Aukeren menua</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Gehitu hiztegian</translation>
@@ -2660,7 +2657,6 @@
 <translation id="4823484602432206655">Irakurri eta aldatu erabiltzailearen eta gailuaren ezarpenak</translation>
 <translation id="4824958205181053313">Sinkronizazioa bertan behera utzi nahi duzu?</translation>
 <translation id="4827675678516992122">Ezin izan da konektatu</translation>
-<translation id="4828937774870308359">Naturala</translation>
 <translation id="4829768588131278040">Konfiguratu PIN kodea</translation>
 <translation id="4830502475412647084">Sistema eragilearen eguneratzea instalatzen</translation>
 <translation id="4830573902900904548"><ph name="DEVICE_TYPE" /> gailuak ezin du konektatu Internetera <ph name="NETWORK_NAME" /> erabilita. Aukeratu beste sare bat. <ph name="LEARN_MORE_LINK_START" />Lortu informazio gehiago<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2759,7 +2755,6 @@
 <translation id="4953689047182316270">Erantzun erabilerraztasun-gertaerei</translation>
 <translation id="4953808748584563296">Abatar laranja lehenetsia</translation>
 <translation id="4955710816792587366">Aukeratu PIN kodea</translation>
-<translation id="4955814292505481804">Urtekoa</translation>
 <translation id="4959262764292427323">Pasahitzak Google-ko kontuan gordetzen dira, edozein gailutan eskura izan ditzazun</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Administratzaileak instalatu du aplikazio hau.</translation>
@@ -3241,7 +3236,6 @@
 <translation id="5659593005791499971">Helbide elektronikoa</translation>
 <translation id="5659833766619490117">Ezin izan da itzuli orria</translation>
 <translation id="5660204307954428567">Parekatu <ph name="DEVICE_NAME" /> gailuarekin</translation>
-<translation id="5662477687021125631">Betikoa</translation>
 <translation id="5667546120811588575">Google Play konfiguratzen…</translation>
 <translation id="5669267381087807207">Aktibatzen</translation>
 <translation id="5669691691057771421">Idatzi PIN kode berria</translation>
@@ -3343,7 +3337,6 @@
 <translation id="5815645614496570556">X.400 helbidea</translation>
 <translation id="5816434091619127343">Eskatutako inprimagailuaren aldaketen ondorioz erabilezin gera liteke inprimagailua.</translation>
 <translation id="5817918615728894473">Parekatu</translation>
-<translation id="5819762621475381970">- Gelaren diseinua.</translation>
 <translation id="5821565227679781414">Sortu lasterbidea</translation>
 <translation id="5825412242012995131">Aktibatuta (gomendatua)</translation>
 <translation id="5826395379250998812">Konektatu <ph name="DEVICE_TYPE" /> telefonoarekin. <ph name="LINK_BEGIN" />Lortu informazio gehiago<ph name="LINK_END" /></translation>
@@ -3976,7 +3969,6 @@
 <translation id="674632704103926902">Gaitu sakatze bidezko arrastatzea</translation>
 <translation id="6748217015615267851">Errendatzailea: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Aurrera egin dezakezu, baina sinkronizatutako datuak eta ezarpenak soilik leheneratuko dira. Galdu egingo dira gailuko datu guztiak.</translation>
-<translation id="6748775883310276718">Single App Kiosk</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (ezkutuko moduan)</translation>
 <translation id="6757101664402245801">Kopiatu da URLa</translation>
 <translation id="6758056191028427665">Eman iritzia.</translation>
@@ -4948,7 +4940,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Ez dago hirugarrenen cookierik}=1{Hirugarrenen 1 cookie blokeatu da}other{Hirugarrenen # cookie blokeatu dira}}</translation>
 <translation id="810875025413331850">Ez da aurkitu gailurik inguruan.</translation>
 <translation id="8111155949205007504">Partekatu pasahitza iPhone-arekin</translation>
-<translation id="8113043281354018522">Aukeratu lizentzia mota</translation>
 <translation id="8114875720387900039">Zatitu horizontalki</translation>
 <translation id="8116972784401310538">&amp;Laster-marken kudeatzailea</translation>
 <translation id="8117620576188476503">Kudeatu konexioak, eguneratzeak eta ezarpenak egoera-erretiluan. Hona teklatuaren bidez etortzeko, sakatu Alt + Maius + S.</translation>
@@ -5664,7 +5655,6 @@
 <translation id="9121814364785106365">Ireki fitxa ainguratu gisa</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> pausatuta dago</translation>
 <translation id="9124003689441359348">Hemen agertuko dira gordetako pasahitzak</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> erabilgarri)</translation>
 <translation id="9128317794749765148">Ezin izan da osatu konfigurazioa</translation>
 <translation id="9128870381267983090">Konektatu sarera</translation>
 <translation id="9130015405878219958">Sartutako moduak ez du balio.</translation>
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb
index 0a99855..a7a23df 100644
--- a/chrome/app/resources/generated_resources_fa.xtb
+++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">سفارشی</translation>
 <translation id="1178581264944972037">مکث</translation>
 <translation id="117916940443676133">کلید امنیتی‌تان پین ندارد و محافظت‌شده نیست. برای مدیریت داده‌های ورود به سیستم، ابتدا پین ایجاد کنید.</translation>
-<translation id="118069123878619799">ویژگی‌های ظاهری شما، مانند قد</translation>
 <translation id="1181037720776840403">حذف</translation>
 <translation id="1183237619868651138"><ph name="EXTERNAL_CRX_FILE" /> در حافظه پنهان محلی نصب نمی‌شود.</translation>
 <translation id="1185924365081634987">همچنین می‌توانید برای برطرف کردن این خطای شبکه، <ph name="GUEST_SIGNIN_LINK_START" />به عنوان مهمان مرور کنید<ph name="GUEST_SIGNIN_LINK_END" />.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">انتظار برای <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> دستگاه دیگر در دسترس است.</translation>
 <translation id="1495677929897281669">برگشتن به برگه</translation>
+<translation id="1499271269825557605">اگر افزونه‌ای برایتان آشنا نیست یا اگر مرورگری طبق انتظار کار نمی‌کند، می‌توانید افزونه‌ها را در اینجا خاموش یا سفارشی کنید.</translation>
 <translation id="1500297251995790841">دستگاه نامشخص [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">این حساب مالک باید اولین حسابی باشد که در یک جلسه ورود به سیستم چندگانه به سیستم وارد می‌شود.</translation>
 <translation id="150411034776756821">حذف <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">این صفحه از دسترسی به دوربین شما بازداشته شده است.</translation>
 <translation id="1507246803636407672">&amp;انصراف</translation>
 <translation id="1508491105858779599">برای باز کردن قفل دستگاه، انگشتتان را روی حسگر اثر انگشت قرار دهید.</translation>
+<translation id="1508575541972276599">‏نسخه کنونی Debian 9 ‏(Stretch) است</translation>
 <translation id="1509281256533087115">‏دسترسی به هر <ph name="DEVICE_NAME_AND_VENDOR" /> از طریق USB</translation>
 <translation id="150962533380566081">‏PUK نامعتبر.</translation>
 <translation id="1510030919967934016">این صفحه برای ردیابی مکان شما مسدود شده است.</translation>
@@ -431,6 +432,7 @@
 <translation id="1601560923496285236">اعمال</translation>
 <translation id="1603914832182249871">(ناشناس)</translation>
 <translation id="1604432177629086300">چاپ نشد چاپگر را بررسی کنید و دوباره امتحان کنید.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: همگام‌سازی گذرواژه کار نمی‌کند</translation>
 <translation id="1607139524282324606">پاک کردن ورودی</translation>
 <translation id="1608626060424371292">حذف این کاربر</translation>
 <translation id="1608668830839595724">کنش‌های بیشتر برای مورد انتخابی</translation>
@@ -557,6 +559,8 @@
 <translation id="177336675152937177">داده های برنامه میزبانی شده</translation>
 <translation id="1776712937009046120">افزودن کاربر</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">این دستگاه را <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> مدیریت می‌کند.
+    برای ادامه ورود به سیستم در حساب <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> خود، لطفاً روی «بعدی» کلیک کنید.</translation>
 <translation id="1779652936965200207">لطفاً این کلیدواژه را در "<ph name="DEVICE_NAME" />" وارد کنید:</translation>
 <translation id="1780152987505130652">بستن گروه</translation>
 <translation id="1781291988450150470">پین کنونی</translation>
@@ -744,6 +748,7 @@
 <translation id="2048653237708779538">کنش دردسترس نیست</translation>
 <translation id="2050339315714019657">عمودی</translation>
 <translation id="2053312383184521053">داده‌های حالت بیکار</translation>
+<translation id="2055585478631012616">از سیستم این سایت‌ها (ازجمله در برگه‌های باز) خارج خواهید شد</translation>
 <translation id="205560151218727633">‏نشان‌واره «دستیار Google»</translation>
 <translation id="2058456167109518507">دستگاه شناسایی شد</translation>
 <translation id="2059913712424898428">منطقه زمانی</translation>
@@ -759,6 +764,7 @@
 <translation id="2079545284768500474">لغو</translation>
 <translation id="2080070583977670716">تنظیمات بیشتر</translation>
 <translation id="2087822576218954668">چاپ: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">‏شبکه VPN</translation>
 <translation id="2089566709556890888">‏با Google Chrome ایمن مرور کنید</translation>
 <translation id="2089795179672254991">وقتی سایتی می‌خواهد به نوشتار و تصاویر کپی‌شده در بریده‌دان دسترسی پیدا کند، سؤال شود (توصیه می‌شود)</translation>
 <translation id="2090165459409185032">‏برای بازیابی اطلاعات حساب‌تان به اینجا بروید: google.com/accounts/recovery</translation>
@@ -982,6 +988,7 @@
 <translation id="2379232090534544565">سایتی درحال دسترسی به ورودی‌های صوتی و ویدیویی است</translation>
 <translation id="2379281330731083556">چاپ با استفاده از گفتگوی سیستم... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">قبل از ارسال سؤال شود (توصیه می‌شود)</translation>
+<translation id="2382818385048255866">بررسی افزونه‌ها</translation>
 <translation id="2384436799579181135">خطایی روی داده است. لطفاً چاپگرتان را بررسی و دوباره امتحان کنید.</translation>
 <translation id="2387458720915042159">نوع اتصال پراکسی</translation>
 <translation id="2391419135980381625">قلم استاندارد</translation>
@@ -1033,6 +1040,7 @@
 <translation id="2462724976360937186">شناسه کلید ارائه دهنده مجوز</translation>
 <translation id="2462752602710430187"><ph name="PRINTER_NAME" /> اضافه شد</translation>
 <translation id="2464089476039395325">‏پروکسی HTTP</translation>
+<translation id="2467267713099745100">شبکه <ph name="NETWORK_TYPE" />، خاموش</translation>
 <translation id="2468205691404969808">از کوکی‌ها برای به خاطر سپردن اولویت‌های شما استفاده می‌کند؛ حتی اگر از آن صفحه‌ها بازدید نکنید</translation>
 <translation id="2468402215065996499">تاماگوچی</translation>
 <translation id="2469259292033957819">هیچ چاپگر ذخیره‌شده‌ای وجود ندارد.</translation>
@@ -1287,6 +1295,7 @@
 <translation id="2800760947029405028">بارگذاری تصویر</translation>
 <translation id="2803375539583399270">پین را وارد کنید</translation>
 <translation id="2804043232879091219">مرورگر جایگزین باز نشد</translation>
+<translation id="2804667941345577550">از سیستم این سایت (ازجمله در برگه‌های باز) خارج خواهید شد</translation>
 <translation id="2804680522274557040">دوربین خاموش است</translation>
 <translation id="2805646850212350655">‏سیستم فایل رمزگذاری Microsoft</translation>
 <translation id="2805756323405976993">برنامه‌ها</translation>
@@ -1294,6 +1303,7 @@
 <translation id="2806891468525657116">میان‌بر از قبل وجود دارد</translation>
 <translation id="2807517655263062534">فایل‌هایی که بارگیری می‌کنید اینجا نشان داده می‌شود</translation>
 <translation id="2809586584051668049">و <ph name="NUMBER_ADDITIONAL_DISABLED" /> مورد دیگر</translation>
+<translation id="2810390687497823527">اگر افزونه‌ای برایتان آشنا نیست یا اگر مرورگری طبق انتظار کار نمی‌کند، می‌توانید افزونه‌ها را در اینجا خاموش یا سفارشی کنید.</translation>
 <translation id="2812049959647166806">‏از Thunderbolt پشتیبانی نمی‌شود</translation>
 <translation id="2812944337881233323">تلاش کنید از سیستم خارج و دوباره وارد شوید</translation>
 <translation id="2812989263793994277">تصویری نشان داده نشود</translation>
@@ -1333,6 +1343,7 @@
 <translation id="2861941300086904918">‏مدیر امنیت Native Client</translation>
 <translation id="2864601841139725659">تصویر نمایه اضافه کنید</translation>
 <translation id="2865919525181940183">عکس صفحه‌نمایش برنامه‌هایی که درحال‌حاضر روی صفحه هستند</translation>
+<translation id="286674810810214575">درحال بررسی منابع برق...</translation>
 <translation id="2867768963760577682">بازکردن به‌عنوان برگه پین شده</translation>
 <translation id="2868746137289129307">این افزونه قدیمی است و خط‌مشی شرکت آن را غیرفعال کرده است. شاید وقتی یک نسخه جدیدتر در دسترس قرار گیرد به صورت خودکار فعال شود.</translation>
 <translation id="2870560284913253234">سایت</translation>
@@ -1410,6 +1421,7 @@
 <translation id="2972581237482394796">انجام مجدد</translation>
 <translation id="2973324205039581528">بی‌صدا کردن سایت</translation>
 <translation id="2977480621796371840">برداشتن از گروه</translation>
+<translation id="2979520980928493164">‏Chrome سالم‌تر و شادتر</translation>
 <translation id="2979639724566107830">باز کردن در پنجرهٔ جدید</translation>
 <translation id="2981113813906970160">نمایش نشانگر موشواره بزرگ</translation>
 <translation id="2982970937345031">گزارش به‌صورت ناشناس</translation>
@@ -1516,6 +1528,7 @@
 <translation id="3143515551205905069">لغو همگام‌سازی</translation>
 <translation id="3143754809889689516">پخش از ابتدا</translation>
 <translation id="3144647712221361880">بازکردن پیوند به‌عنوان</translation>
+<translation id="3145187901750964977">دستگاه مجازی نصب نشد. لطفاً دوباره امتحان کنید یا با سرپرست دستگاه سازمانتان تماس بگیرید. کد خطا: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">نسخه:
     <ph name="LINUX_VERSION" />
 
@@ -1554,6 +1567,7 @@
 <translation id="3192947282887913208">فایل‌های صوتی</translation>
 <translation id="3194737229810486521"><ph name="URL" /> می‌خواهد داده‌ها را برای همیشه در دستگاهتان ذخیره کند</translation>
 <translation id="3199127022143353223">سرورها</translation>
+<translation id="3201306578844503970">به‌دلیل خطای شبکه، دستگاه مجازی نصب نشد. لطفاً دوباره امتحان کنید یا با سرپرست دستگاه سازمانتان تماس بگیرید. کد خطا: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">‏دستگاه‌های USB دردسترس در اینجا نشان داده می‌شود.</translation>
 <translation id="3202131003361292969">مسیر</translation>
 <translation id="3202173864863109533">صدای این برگه قطع شده است.</translation>
@@ -1890,7 +1904,6 @@
 <translation id="3678156199662914018">برنامهٔ افزودنی: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">از بازخوردتان سپاسگزاریم. درحال‌حاضر آفلاین هستید و گزارشتان بعداً ارسال می‌شود.</translation>
 <translation id="3682824389861648626">آستانه حرکت</translation>
-<translation id="3683023058278427253">ما چند نمونه مجوز برای دامنه شما شناسایی کرده‌ایم. برای ادامه، یکی را انتخاب کنید.</translation>
 <translation id="3683524264665795342">درخواست اشتراک‌گذاری صفحه <ph name="APP_NAME" /></translation>
 <translation id="368789413795732264">خطایی در حین نوشتن در این فایل وجود داشت: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">نوشتن بر روی فایل‌ها و پوشه‌هایی که در برنامه باز می‌کنید</translation>
@@ -2064,6 +2077,7 @@
 <translation id="389589731200570180">اشتراک‌گذاری با مهمان</translation>
 <translation id="389901847090970821">انتخاب صفحه‌کلید</translation>
 <translation id="3899879303189199559">آفلاین برای مدت بیش از یک سال</translation>
+<translation id="3900789207771372462">برخی از افزونه‌ها می‌توانند فعالیت مرورتان را (ازجمله اطلاعات شخصی) ببینند.</translation>
 <translation id="3900966090527141178">صادر کردن گذرواژه‌ها</translation>
 <translation id="3901991538546252627">در حال اتصال به <ph name="NAME" /></translation>
 <translation id="3905761538810670789">تعمیر برنامه</translation>
@@ -2154,7 +2168,6 @@
 <translation id="4013132157686828973">«<ph name="CLIENT_NAME" />» در حال اشکال‌زدایی این مرورگر است</translation>
 <translation id="4014432863917027322">«<ph name="EXTENSION_NAME" />» را اصلاح می‌کنید؟</translation>
 <translation id="4015163439792426608">افزونه‌ها را دریافت کردید؟ به‌راحتی در یک جا <ph name="BEGIN_LINK" />افزونه‌هایتان را مدیریت کنید<ph name="END_LINK" />.</translation>
-<translation id="4020106588733303597">وای! سیستم نتوانست مجوزهای دردسترس را بارگیری کند.</translation>
 <translation id="4020327272915390518">منوی گزینه‌ها</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;افزودن به واژه‌نامه</translation>
@@ -2192,6 +2205,7 @@
 <translation id="407520071244661467">مقیاس</translation>
 <translation id="4075639477629295004">ارسال محتوای <ph name="FILE_NAME" /> امکان‌پذیر نیست.</translation>
 <translation id="4077917118009885966">آگهی‌های این سایت مسدود شدند</translation>
+<translation id="4077919383365622693">همه داده‌ها و کوکی‌هایی را که <ph name="SITE" /> ذخیره کرده است حذف خواهد شد.</translation>
 <translation id="4079140982534148664">استفاده از غلط‌گیر املای بهبودیافته</translation>
 <translation id="4081242589061676262">نمی‌توان محتوای فایل را ارسال کرد.</translation>
 <translation id="4084682180776658562">نشانک</translation>
@@ -2266,6 +2280,7 @@
 <translation id="4181841719683918333">زبان‌ها</translation>
 <translation id="4184885522552335684">کشیدن برای انتقال نمایشگر</translation>
 <translation id="4194570336751258953">فعال کردن ضربه بجای کلیک</translation>
+<translation id="4194595472342532425">‏به‌دلیل مشکل پیکربندی، Plugin VM راه‌اندازی نشد. لطفاً با سرپرست دستگاه سازمانتان تماس بگیرید. کد خطا: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">باز کردن در برگهٔ جدید</translation>
 <translation id="4195814663415092787">ادامه از جایی که ترک کردید</translation>
 <translation id="4198146608511578238">‏برای صحبت کردن با «دستیار Google»، کافیست نماد «راه‌انداز» را نگه‌دارید.</translation>
@@ -2489,6 +2504,7 @@
 <translation id="4549791035683739768">هیچ اثر انگشتی برای کلید امنیتی‌تان ذخیره نشده است</translation>
 <translation id="4551763574344810652">برای واگرد، <ph name="MODIFIER_KEY_DESCRIPTION" /> را فشار دهید</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005">شبکه <ph name="NETWORK_TYPE" />، قدرت سیگنال <ph name="SIGNAL_STRENGTH" /> درصد</translation>
 <translation id="4554591392113183336">برنامه افزودنی خارجی در مقایسه با برنامه کنونی، دارای همان نسخه یا نسخه پایین‌تر است.</translation>
 <translation id="4555769855065597957">سایه</translation>
 <translation id="4555863373929230635">‏برای ذخیره گذرواژه در «حساب Google»، به سیستم وارد شوید و همگام‌سازی را روشن کنید.</translation>
@@ -2566,6 +2582,7 @@
 <translation id="4665446389743427678">همه داده‌های ذخیره‌شده توسط <ph name="SITE" /> حذف خواهد شد.</translation>
 <translation id="4668721319092543482">برای فعال کردن <ph name="PLUGIN_NAME" /> کلیک کنید</translation>
 <translation id="4672657274720418656">صفحه فشرده</translation>
+<translation id="46733273239502219">داده‌های آفلاین برنامه‌های نصب‌شده هم حذف خواهد شد</translation>
 <translation id="4673442866648850031">وقتی قلم برداشته می‌شود، ابزار قلم باز می‌شود</translation>
 <translation id="4677585247300749148"><ph name="URL" /> می‌خواهد به رویدادهای مربوط به دسترس‌پذیری پاسخ دهد</translation>
 <translation id="4677772697204437347">‏حافظه GPU</translation>
@@ -2657,7 +2674,6 @@
 <translation id="4823484602432206655">تغییر و خواندن تنظیمات کاربر و دستگاه</translation>
 <translation id="4824958205181053313">همگام‌سازی لغو شود؟</translation>
 <translation id="4827675678516992122">متصل نشد</translation>
-<translation id="4828937774870308359">استرالیایی</translation>
 <translation id="4829768588131278040">تنظیم پین</translation>
 <translation id="4830502475412647084">درحال نصب به‌روزرسانی سیستم‌عامل</translation>
 <translation id="4830573902900904548">دستگاه <ph name="DEVICE_TYPE" /> شما نمی‌تواند با استفاده از <ph name="NETWORK_NAME" /> به اینترنت متصل شود. لطفاً شبکه دیگری انتخاب کنید. <ph name="LEARN_MORE_LINK_START" />بیشتر بدانید<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2698,6 +2714,7 @@
 <translation id="4876273079589074638">به مهندسان ما کمک کنید این خرابی را بررسی و برطرف کنند. در صورت امکان مراحل را دقیق فهرست کنید. هیچ جزئیاتی بی‌اهمیت نیست!</translation>
 <translation id="4876895919560854374">قفل و باز کردن قفل صفحه</translation>
 <translation id="4877276003880815204">بازرسی عناصر</translation>
+<translation id="4878653975845355462">سرپرستتان پس‌زمینه سفارشی را خاموش کرده است</translation>
 <translation id="4879491255372875719">خودکار (پیش‌فرض)</translation>
 <translation id="4880328057631981605">نام نقطه دسترسی</translation>
 <translation id="4880827082731008257">سابقه جستجو</translation>
@@ -2753,10 +2770,10 @@
 <translation id="4943691134276646401">«<ph name="CHROME_EXTENSION_NAME" />» می‌خواهد به یک درگاه سریالی متصل شود</translation>
 <translation id="4944310289250773232">این خدمات احراز هویت توسط <ph name="SAML_DOMAIN" /> میزبانی می‌شود</translation>
 <translation id="495170559598752135">کنش‌ها</translation>
+<translation id="4952981627953231344">‏Plugin VM در این دستگاه مجاز نیست. با سرپرست دستگاه سازمانتان تماس بگیرید.</translation>
 <translation id="4953689047182316270">پاسخ دادن به رویدادهای مربوط به دسترس‌پذیری</translation>
 <translation id="4953808748584563296">چهره‌نمای پیش‌فرض نارنجی</translation>
 <translation id="4955710816792587366">پین خودتان را انتخاب کنید</translation>
-<translation id="4955814292505481804">سالانه</translation>
 <translation id="4959262764292427323">‏گذرواژه‌ها در حساب Google شما ذخیره می‌شود تا بتوانید در همه دستگاه‌هایتان از آن‌ها استفاده کنید</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">این برنامه را سرپرست نصب کرده است.</translation>
@@ -3238,7 +3255,6 @@
 <translation id="5659593005791499971">ایمیل</translation>
 <translation id="5659833766619490117">ترجمه این صفحه امکان‌پذیر نیست</translation>
 <translation id="5660204307954428567">مرتبط‌سازی با <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">دائمی</translation>
 <translation id="5667546120811588575">‏درحال راه‌اندازی Google Play...</translation>
 <translation id="5669267381087807207">فعالسازی</translation>
 <translation id="5669691691057771421">پین جدید را وارد کنید</translation>
@@ -3254,6 +3270,7 @@
 <translation id="5687326903064479980">منطقه زمانی</translation>
 <translation id="5689516760719285838">مکان</translation>
 <translation id="56907980372820799">داده‌های پیوند</translation>
+<translation id="5691180005790455277">همه داده‌ها و کوکی‌هایی را که <ph name="SITE_GROUP_NAME" /> ذخیره کرده است و سایت‌های زیرمجموعه آن حذف خواهند شد.</translation>
 <translation id="5691511426247308406">خانواده</translation>
 <translation id="5692183275898619210">چاپ کامل شد</translation>
 <translation id="5696143504434933566">گزارش سوء‌استفاده از «<ph name="EXTENSION_NAME" />»</translation>
@@ -3340,7 +3357,6 @@
 <translation id="5815645614496570556">‏آدرس X.400</translation>
 <translation id="5816434091619127343">تغییرات درخواستی باعث می‌شود چاپگر غیرقابل استفاده شود.</translation>
 <translation id="5817918615728894473">مرتبط‌سازی</translation>
-<translation id="5819762621475381970">- چیدمان اتاق شما</translation>
 <translation id="5821565227679781414">ایجاد میان‌بر</translation>
 <translation id="5825412242012995131">روشن (توصیه می‌شود)</translation>
 <translation id="5826395379250998812"><ph name="DEVICE_TYPE" /> را به تلفنتان متصل کنید. <ph name="LINK_BEGIN" />بیشتر بدانید<ph name="LINK_END" /></translation>
@@ -3476,6 +3492,7 @@
 <translation id="6007240208646052708">جستجوی گفتاری به زبان شما در دسترس نیست.</translation>
 <translation id="6009781704028455063">حسگر داخلی</translation>
 <translation id="6010869025736512584">در حال دسترسی به ورودی ویدئویی</translation>
+<translation id="6011074160056912900">شبکه اترنت</translation>
 <translation id="6011193465932186973">اثر انگشت</translation>
 <translation id="6011449291337289699">پاک کردن داده‌های سایت</translation>
 <translation id="6015266928248016057">‏PUK نامعتبر است. تلاش‌های باقی‌مانده: <ph name="RETRIES" />.</translation>
@@ -3512,6 +3529,7 @@
 <translation id="6053401458108962351">&amp;حذف داده‌های مرور...</translation>
 <translation id="6055171183283175969">گذرواژه‌ای که وارد کردید اشتباه است.</translation>
 <translation id="6055392876709372977">‏PKCS #1 SHA-256 با رمزگذاری RSA</translation>
+<translation id="6055907707645252013">شبکه <ph name="NETWORK_TYPE" />، متصل نیست</translation>
 <translation id="6056710589053485679">تازه‌سازی عادی</translation>
 <translation id="6057381398996433816">استفاده این سایت از حسگرهای نور و حرکت مسدود شده است.</translation>
 <translation id="6058567592298841668">دستگاه مجاز افزایه: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3575,6 +3593,7 @@
 <translation id="6136114942382973861">بستن نوار بارگیری</translation>
 <translation id="6137767437444130246">گواهی کاربر</translation>
 <translation id="6138680304137685902">‏امضای X9.62 ECDSA با SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />، بدون شبکه</translation>
 <translation id="6141988275892716286">تأیید بارگیری</translation>
 <translation id="6143186082490678276">دریافت راهنمایی</translation>
 <translation id="6144938890088808325">‏در بهبود بخشیدن دستگاه‌های Chromebook به ما کمک کنید</translation>
@@ -3881,6 +3900,7 @@
 <translation id="6602956230557165253">از کلیدهای پیکان سمت راست و چپ برای پیمایش استفاده کنید.</translation>
 <translation id="6605847144724004692">قبلاً هیچ کاربری رتبه‌بندی نکرده است.</translation>
 <translation id="6607831829715835317">ا&amp;بزارهای بیشتر</translation>
+<translation id="6611972847767394631">برگه‌هایتان را در اینجا پیدا کنید</translation>
 <translation id="6612358246767739896">محتوای محافظت‌شده</translation>
 <translation id="6615455863669487791">به من نشان بده</translation>
 <translation id="6618097958368085618">درهرصورت حفظ شود</translation>
@@ -3949,6 +3969,7 @@
 <translation id="6709133671862442373">اخبار</translation>
 <translation id="6709357832553498500">اتصال با استفاده از <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">قبلی</translation>
+<translation id="6715803357256707211">‏هنگام نصب برنامه Linux خطایی روی داد. برای جزئیات بیشتر، روی اعلان کلیک کنید.</translation>
 <translation id="6721678857435001674">ساخت و مدل «کلید امنیتی» خود را ببینید</translation>
 <translation id="6721972322305477112">&amp;فایل</translation>
 <translation id="672213144943476270">لطفاً قبل از مرور به‌عنوان مهمان، قفل نمایه‌تان را باز کنید.</translation>
@@ -3973,7 +3994,6 @@
 <translation id="674632704103926902">فعال کردن کشیدن برگه</translation>
 <translation id="6748217015615267851">تولید‌کننده تصویر: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">می‌توانید ادامه دهید، اما تنها تنظیمات و داده‌های همگام‌سازی شده شما بازیابی می‌شوند. همه داده‌های محلی از دست می‌روند.</translation>
-<translation id="6748775883310276718">کیوسک برنامه تکی</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (ناشناس)</translation>
 <translation id="6757101664402245801">نشانی اینترنتی کپی شد</translation>
 <translation id="6758056191028427665">عملکردمان را به ما نشان دهید.</translation>
@@ -3983,6 +4003,7 @@
 <translation id="6769712124046837540">در حال افزودن چاپگر...</translation>
 <translation id="6770664076092644100">‏به‌تأیید رساندن ازطریق NFC</translation>
 <translation id="6771503742377376720">یک ارائه دهنده مجوز است</translation>
+<translation id="6772339735733515807">مدیریت افزونه‌های شما</translation>
 <translation id="6775163072363532304">دستگاه‌های دردسترس اینجا نمایش داده می‌شوند.</translation>
 <translation id="6777817260680419853">هدایت کردن مسدود شده است</translation>
 <translation id="6778737459546443941">والدینتان هنوز این سایت را تأیید نکرده‌اند</translation>
@@ -4121,6 +4142,7 @@
 <translation id="6972180789171089114">صوتی/تصویری</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> نمی‌تواند فایل‌های این پوشه را باز کند، زیرا حاوی فایل‌های سیستمی است</translation>
 <translation id="6972754398087986839">شروع به کار</translation>
+<translation id="6973611239564315524">‏ارتقا به Debian 10‏ (Buster) در دسترس است</translation>
 <translation id="6974609594866392343">حالت نمایشی آفلاین</translation>
 <translation id="6977381486153291903">بازبینی سفت‌افزار</translation>
 <translation id="6978121630131642226">موتورهای جستجو</translation>
@@ -4580,6 +4602,7 @@
 <translation id="7644543211198159466">رنگ و طرح زمینه</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (مالک)</translation>
 <translation id="7645681574855902035">‏درحال لغو پشتیبان‌گیری Linux</translation>
+<translation id="7646772052135772216">همگام‌سازی گذرواژه کار نمی‌کند</translation>
 <translation id="7647403192093989392">فعالیت اخیری وجود ندارد</translation>
 <translation id="7648992873808071793">ذخیره کردن فایل در این دستگاه</translation>
 <translation id="7649070708921625228">راهنما</translation>
@@ -4768,6 +4791,7 @@
 <translation id="7877451762676714207">خطای سرور ناشناس. لطفاً دوباره سعی کنید یا با سرپرست سرور تماس بگیرید.</translation>
 <translation id="7877680364634660272">گشت</translation>
 <translation id="7878562273885520351">ممکن است گذرواژه‌تان درمعرض خطر باشد</translation>
+<translation id="7879631849810108578">میان‌بر تنظیم شد: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">وقتی بازراه‌اندازی کنید، داده‌های محلی حذف می‌شود</translation>
 <translation id="7881483672146086348">مشاهده حساب</translation>
 <translation id="7882358943899516840">نوع ارائه‌دهنده</translation>
@@ -4854,6 +4878,7 @@
 <translation id="7987814697832569482">‏همیشه ازطریق این VPN اتصال برقرار شود</translation>
 <translation id="7988355189918024273">فعالسازی ویژگی‌های دسترسی</translation>
 <translation id="7991296728590311172">تنظیمات دسترسی سوئیچ</translation>
+<translation id="7994350303002908848">‏Plugin VM نصب نشد. لطفاً دوباره امتحان کنید یا با سرپرست دستگاه سازمانتان تماس بگیرید. کد خطا: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">‏روش EAP</translation>
 <translation id="7997826902155442747">پردازش اولویت‌دار</translation>
 <translation id="7999229196265990314">فایل‌های زیر ایجاد شده است:
@@ -4946,7 +4971,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{فاقد کوکی شخص ثالث}=1{۱ کوکی شخص ثالث مسدود شده است}one{# کوکی شخص ثالث مسدود شده است}other{# کوکی شخص ثالث مسدود شده است}}</translation>
 <translation id="810875025413331850">هیچ دستگاه نزدیکی پیدا نشد.</translation>
 <translation id="8111155949205007504">‏اشتراک‌گذاری این گذرواژه با iPhone</translation>
-<translation id="8113043281354018522">انتخاب نوع مجوز</translation>
 <translation id="8114875720387900039">تقسیم افقی</translation>
 <translation id="8116972784401310538">مدیر &amp;نشانک</translation>
 <translation id="8117620576188476503">‏اتصال‌ها، به‌روزرسانی‌ها و تنظیمات را ازطریق سینی وضعیت مدیریت کنید. برای اینکه ازطریق صفحه‌کلید به اینجا بیایید Alt + Shift + S را فشار دهید.</translation>
@@ -5103,6 +5127,7 @@
 <translation id="8327039559959785305">‏هنگام نشاندن فایل‌های Linux خطایی روی داد. لطفاً دوباره امتحان کنید.</translation>
 <translation id="8335587457941836791">جدا کردن از راه‌انداز</translation>
 <translation id="8336407002559723354">به‌روزرسانی‌ها در <ph name="MONTH_AND_YEAR" /> تمام می‌شود</translation>
+<translation id="8336721153892716270">برای نمایش دادن نوشتار سیستم به زبان <ph name="LANGUAGE" />، دستگاه بازراه‌اندازی شود</translation>
 <translation id="8336739000755212683">تغییر تصویر حساب دستگاه</translation>
 <translation id="8337047789441383384">قبلاً این کلید امنیتی را ثبت کرده‌اید. لازم نیست آن را دوباره ثبت کنید.</translation>
 <translation id="8338952601723052325">وب‌سایت برنامه‌نویس</translation>
@@ -5146,6 +5171,7 @@
 <translation id="8400146488506985033">مدیریت افراد</translation>
 <translation id="8401432541486058167">پین مرتبط با کارت هوشمندتان را ارائه کنید.</translation>
 <translation id="8405046151008197676">دریافت موارد مهم آخرین به‌روزرسانی</translation>
+<translation id="8408068190360279472">شبکه <ph name="NETWORK_TYPE" />، درحال اتصال</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">ابتدا سؤال شود (توصیه می‌شود)</translation>
 <translation id="8418445294933751433">&amp;نمایش به‌صورت برگه</translation>
@@ -5435,6 +5461,7 @@
 <translation id="8807632654848257479">پایدار</translation>
 <translation id="8808478386290700967">Web Store</translation>
 <translation id="8808686172382650546">گربه</translation>
+<translation id="8808744862003883508">‏در این صفحه می‌توانید همه افزونه‌های نصب‌شده در Chrome را ببینید.</translation>
 <translation id="8809147117840417135">سبز دودی روشن</translation>
 <translation id="8813698869395535039">ورود به سیستم <ph name="USERNAME" /> امکان‌پذیر نیست</translation>
 <translation id="8813811964357448561">صفحه کاغذ</translation>
@@ -5662,7 +5689,6 @@
 <translation id="9121814364785106365">باز کردن به‌عنوان برگه الصاق شده</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> متوقف شده است</translation>
 <translation id="9124003689441359348">گذرواژه‌های ذخیره‌شده در اینجا ظاهر خواهند شد</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> باقی‌مانده.)</translation>
 <translation id="9128317794749765148">راه‌اندازی تکمیل نشد</translation>
 <translation id="9128870381267983090">اتصال به شبکه</translation>
 <translation id="9130015405878219958">حالت نامعتبر وارد شده است.</translation>
@@ -5701,6 +5727,7 @@
 <translation id="9188732951356337132">‏داده‌های استفاده و عیب‌یابی را ارسال کنید. این دستگاه درحال‌حاضر به‌صورت‌ خودکار داده‌های عیب‌یابی و داده‌های استفاده از دستگاه و برنامه را برای Google ارسال می‌کند. این داده‌ها برای شناسایی فرزندتان استفاده نخواهند شد و به بهبود پایداری سیستم و برنامه و موارد دیگر کمک خواهد کرد. بعضی داده‌های انبوه نیز به برنامه‌ها و شرکای Google (مانند برنامه‌نویس‌های Android) کمک می‌کند. اگر تنظیم «فعالیت وب و برنامه» تکمیلی برای فرزندتان روشن باشد، ممکن است این داده‌ها در حساب Google او ذخیره شود. <ph name="BEGIN_LINK2" />بیشتر بدانید<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">‏L2TP/IPSec + کلید از قبل مشترک شده</translation>
 <translation id="920045321358709304">جستجوی <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">هرنوع داده آفلاینی حذف خواهد شد</translation>
 <translation id="9201220332032049474">گزینه‌های قفل صفحه</translation>
 <translation id="9203398526606335860">&amp;نمایه سازی فعال شد</translation>
 <translation id="9203904171912129171">انتخاب دستگاه</translation>
@@ -5713,6 +5740,7 @@
 <translation id="9220525904950070496">حذف حساب</translation>
 <translation id="9220820413868316583">انگشتتان را بردارید سپس دوباره امتحان کنید.</translation>
 <translation id="923467487918828349">نمایش همه</translation>
+<translation id="929117907539171075">داده‌های آفلاین برنامه‌های نصب‌شده هم حذف خواهد شد</translation>
 <translation id="930268624053534560">مهرهای زمان با جزئیات</translation>
 <translation id="932327136139879170">منزل</translation>
 <translation id="932508678520956232">نمی‌توان چاپ کردن را آغاز کرد.</translation>
@@ -5738,6 +5766,7 @@
 <translation id="960719561871045870">کد اپراتور</translation>
 <translation id="960987915827980018">حدود ۱ ساعت باقی مانده است</translation>
 <translation id="962802172452141067">درخت پوشه نشانک</translation>
+<translation id="964057662886721376">برخی افزونه‌ها می‌توانند سرعت را کاهش دهند، به‌خصوص افزونه‌هایی که ناخواسته نصب شده‌اند.</translation>
 <translation id="964286338916298286">‏سرپرست IT شما Chrome Goodies را برای دستگاهتان غیرفعال کرده است.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{برنامه}one{برنامه}other{برنامه}}</translation>
 <translation id="965211523698323809">ارسال و دریافت پیامک از <ph name="DEVICE_TYPE" /> شما. <ph name="LINK_BEGIN" />بیشتر بدانید<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb
index 0e7f924..3099c39 100644
--- a/chrome/app/resources/generated_resources_fi.xtb
+++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Muokattu</translation>
 <translation id="1178581264944972037">Tauko</translation>
 <translation id="117916940443676133">Suojausavaintasi ei ole suojattu PIN-koodilla. Luo PIN-koodi, jotta voit ylläpitää kirjautumisdataa.</translation>
-<translation id="118069123878619799">– fyysisiä piirteitäsi, kuten pituutesi</translation>
 <translation id="1181037720776840403">Poista</translation>
 <translation id="1183237619868651138">Kohdetta <ph name="EXTERNAL_CRX_FILE" /> ei voi asentaa paikalliseen välimuistiin.</translation>
 <translation id="1185924365081634987">Voit myös kokeilla korjata verkkovirheen <ph name="GUEST_SIGNIN_LINK_START" />vierasselauksen<ph name="GUEST_SIGNIN_LINK_END" /> avulla.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">Odotetaan parametria <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> muuta laitetta käytettävissä.</translation>
 <translation id="1495677929897281669">Takaisin välilehdelle</translation>
+<translation id="1499271269825557605">Jos et tunnista laajennusta tai selain ei toimi odotetusti, voit asettaa laajennuksia pois päältä tai muokata niitä täällä.</translation>
 <translation id="1500297251995790841">Tuntematon laite [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Tämän omistajatilin täytyy olla ensimmäinen sisään kirjautuva tili useiden tilien istunnossa.</translation>
 <translation id="150411034776756821">Poista <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Tältä sivulta on estetty kameran käyttö.</translation>
 <translation id="1507246803636407672">&amp;Hylkää</translation>
 <translation id="1508491105858779599">Avaa laitteen lukitus pitämällä sormea sormenjälkitunnistimella.</translation>
+<translation id="1508575541972276599">Nykyinen versio on Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">Jokainen <ph name="DEVICE_NAME_AND_VENDOR" /> on käytettävissä USB:n kautta</translation>
 <translation id="150962533380566081">Virheellinen PUK-koodi</translation>
 <translation id="1510030919967934016">Tätä sivua on estetty käyttämästä sijaintiasi.</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">Käytä</translation>
 <translation id="1603914832182249871">(Incognito)</translation>
 <translation id="1604432177629086300">Tulostus epäonnistui. Tarkista tulostin ja yritä uudelleen.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: Salasanojen synkronointi ei toimi</translation>
 <translation id="1607139524282324606">Tyhjennä merkintä</translation>
 <translation id="1608626060424371292">Poista tämä käyttäjä</translation>
 <translation id="1608668830839595724">Lisää toimintoja valituille kohteille</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">Isännöidyn sovelluksen tiedot</translation>
 <translation id="1776712937009046120">Lisää käyttäjä</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Tätä laitetta hallinnoi <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    Jatka tilillesi (<ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />) kirjautumista valitsemalla Seuraava.</translation>
 <translation id="1779652936965200207">Kirjoita tämä salasana laitteelle <ph name="DEVICE_NAME" />:</translation>
 <translation id="1780152987505130652">Sulje ryhmä</translation>
 <translation id="1781291988450150470">Nykyinen PIN-koodi</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">Toiminto ei ole käytettävissä</translation>
 <translation id="2050339315714019657">Pystysuunta</translation>
 <translation id="2053312383184521053">Tiedot käyttämätön-tilassa</translation>
+<translation id="2055585478631012616">Sinut kirjataan ulos näiltä sivustoilta, myös avoimilta välilehdiltä.</translation>
 <translation id="205560151218727633">Google Assistantin logo</translation>
 <translation id="2058456167109518507">Laite havaittu</translation>
 <translation id="2059913712424898428">Aikavyöhyke</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">Kumoa</translation>
 <translation id="2080070583977670716">Lisää asetuksia</translation>
 <translation id="2087822576218954668">Tulosta: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN-verkko</translation>
 <translation id="2089566709556890888">Selaa turvallisesti Google Chromella.</translation>
 <translation id="2089795179672254991">Kysy, kun sivusto haluaa nähdä leikepöydälle kopioidun tekstin ja kuvat (suositus)</translation>
 <translation id="2090165459409185032">Saat tilisi tiedot takaisin käyttöön osoitteessa google.com/accounts/recovery</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">Sivusto käyttää ääni- ja videotuloa</translation>
 <translation id="2379281330731083556">Tulosta järjestelmän tulostusikkunalla... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Kysy ennen lähettämistä (suositus)</translation>
+<translation id="2382818385048255866">Tarkista laajennuksesi</translation>
 <translation id="2384436799579181135">Tapahtui virhe. Tarkista tulostimesi ja yritä uudelleen.</translation>
 <translation id="2387458720915042159">Välityspalvelinyhteyden tyyppi</translation>
 <translation id="2391419135980381625">Peruskirjasin</translation>
@@ -1036,6 +1043,7 @@
 <translation id="2462724976360937186">Varmenteen myöntäjän avaimen tunnus</translation>
 <translation id="2462752602710430187">Lisättiin <ph name="PRINTER_NAME" /></translation>
 <translation id="2464089476039395325">HTTP-välityspalvelin</translation>
+<translation id="2467267713099745100"><ph name="NETWORK_TYPE" /> verkko, pois käytöstä</translation>
 <translation id="2468205691404969808">Käyttää evästeitä asetustesi muistamiseen, vaikka et kävisi kyseisillä sivuilla</translation>
 <translation id="2468402215065996499">Tamagotchi</translation>
 <translation id="2469259292033957819">Sinulla ei ole tallennettuja tulostimia.</translation>
@@ -1290,6 +1298,7 @@
 <translation id="2800760947029405028">Lähetä kuva</translation>
 <translation id="2803375539583399270">Anna PIN-koodi.</translation>
 <translation id="2804043232879091219">Toisen selaimen avaaminen epäonnistui</translation>
+<translation id="2804667941345577550">Sinut kirjataan ulos tältä sivustolta, myös avoimilta välilehdiltä.</translation>
 <translation id="2804680522274557040">Kamera poistettiin käytöstä</translation>
 <translation id="2805646850212350655">Microsoftin tietojärjestelmän salaus</translation>
 <translation id="2805756323405976993">Sovellukset</translation>
@@ -1297,6 +1306,7 @@
 <translation id="2806891468525657116">Pikakuvake on jo olemassa</translation>
 <translation id="2807517655263062534">Lataamasi tiedostot näytetään tässä.</translation>
 <translation id="2809586584051668049">ja <ph name="NUMBER_ADDITIONAL_DISABLED" /> muuta</translation>
+<translation id="2810390687497823527">Jos et tunnista laajennusta tai selain ei toimi odotetusti, voit asettaa laajennuksia pois päältä tai muokata niitä täällä.</translation>
 <translation id="2812049959647166806">Thunderboltia ei tueta</translation>
 <translation id="2812944337881233323">Kokeile kirjautua ensin ulos ja sitten takaisin sisään.</translation>
 <translation id="2812989263793994277">Älä näytä kuvia</translation>
@@ -1336,6 +1346,7 @@
 <translation id="2861941300086904918">Asiakkaan tietosuojahallinnoija</translation>
 <translation id="2864601841139725659">Määritä profiilikuvasi</translation>
 <translation id="2865919525181940183">Kuvakaappaus ohjelmista, jotka ovat näytöllä tällä hetkellä</translation>
+<translation id="286674810810214575">Tarkistetaan virtalähteitä…</translation>
 <translation id="2867768963760577682">Avaa kiinnitetyllä välilehdellä</translation>
 <translation id="2868746137289129307">Tämä laajennus on vanhentunut ja poistettu käytöstä yrityksen käytännön mukaisesti. Se voidaan ottaa käyttöön uudelleen automaattisesti, kun uusi versio on saatavilla.</translation>
 <translation id="2870560284913253234">Sivusto</translation>
@@ -1413,6 +1424,7 @@
 <translation id="2972581237482394796">&amp;Tee uudelleen</translation>
 <translation id="2973324205039581528">Mykistä sivusto</translation>
 <translation id="2977480621796371840">Poista ryhmästä</translation>
+<translation id="2979520980928493164">Paremmin toimiva Chrome</translation>
 <translation id="2979639724566107830">Avaa uudessa ikkunassa</translation>
 <translation id="2981113813906970160">Näytä suuri hiiren osoitin</translation>
 <translation id="2982970937345031">Tee nimetön ilmoitus</translation>
@@ -1519,6 +1531,7 @@
 <translation id="3143515551205905069">Peruuta synkronointi</translation>
 <translation id="3143754809889689516">Toista alusta</translation>
 <translation id="3144647712221361880">Avaa linkki käyttäjänä</translation>
+<translation id="3145187901750964977">Virtuaalikoneen asentaminen ei onnistunut. Yritä uudelleen tai ota yhteyttä organisaatiosi laitevalvojaan. Virhekoodi: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Versio:
     <ph name="LINUX_VERSION" />
 
@@ -1557,6 +1570,7 @@
 <translation id="3192947282887913208">Äänitiedostot</translation>
 <translation id="3194737229810486521"><ph name="URL" /> haluaa tallentaa tietoja pysyvästi laitteellesi.</translation>
 <translation id="3199127022143353223">Palvelimet</translation>
+<translation id="3201306578844503970">Virtuaalikoneen asennus ei onnistunut verkkovirheen vuoksi. Yritä uudelleen tai ota yhteyttä organisaatiosi laitevalvojaan. Virhekoodi: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Käytettävissä olevat USB-laitteet näkyvät täällä.</translation>
 <translation id="3202131003361292969">Reitti</translation>
 <translation id="3202173864863109533">Tämän välilehden äänet on mykistetty.</translation>
@@ -1893,7 +1907,6 @@
 <translation id="3678156199662914018">Laajennus: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Kiitos palautteestasi. Olet nyt offline-tilassa, joten ilmoituksesi lähetetään myöhemmin.</translation>
 <translation id="3682824389861648626">Liikkeen raja-arvo</translation>
-<translation id="3683023058278427253">Verkkotunnuksessasi on havaittu useita lisenssityyppejä. Valitse yksi, niin voit jatkaa.</translation>
 <translation id="3683524264665795342">Ruudunjakopyyntö sovellukselta <ph name="APP_NAME" /></translation>
 <translation id="368789413795732264">Tiedostoa kirjoitettaessa tapahtui virhe: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Kirjoittaa sovelluksessa avaamiisi tiedostoihin ja kansioihin.</translation>
@@ -2067,6 +2080,7 @@
 <translation id="389589731200570180">Jaa vierailijoiden kanssa</translation>
 <translation id="389901847090970821">Valitse näppäimistö</translation>
 <translation id="3899879303189199559">Offline-tilassa yli vuoden</translation>
+<translation id="3900789207771372462">Osa laajennuksista näkee selaustapahtumasi, mukaan lukien henkilötiedot.</translation>
 <translation id="3900966090527141178">Vie salasanat</translation>
 <translation id="3901991538546252627">Yhdistetään verkkoon <ph name="NAME" /></translation>
 <translation id="3905761538810670789">Korjaa sovellus</translation>
@@ -2154,7 +2168,6 @@
 <translation id="4013132157686828973"><ph name="CLIENT_NAME" /> suorittaa selaimen virheenkorjausta.</translation>
 <translation id="4014432863917027322">Korjataanko <ph name="EXTENSION_NAME" />?</translation>
 <translation id="4015163439792426608">Onko sinulla laajennuksia? <ph name="BEGIN_LINK" />Ylläpidä laajennuksiasi<ph name="END_LINK" /> helposti yhdestä paikasta.</translation>
-<translation id="4020106588733303597">Hups – käytettävien lisenssien lataaminen epäonnistui.</translation>
 <translation id="4020327272915390518">Asetukset-valikko</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">Lisää s&amp;anakirjaan</translation>
@@ -2192,6 +2205,7 @@
 <translation id="407520071244661467">Asteikko</translation>
 <translation id="4075639477629295004"><ph name="FILE_NAME" /> ei ole suoratoistettavissa.</translation>
 <translation id="4077917118009885966">Tämän sivuston mainokset estetty</translation>
+<translation id="4077919383365622693">Kaikki data ja evästeet, jotka <ph name="SITE" /> on tallentanut, poistetaan.</translation>
 <translation id="4079140982534148664">Käytä parannettua oikeinkirjoituksen tarkistusta</translation>
 <translation id="4081242589061676262">Tiedoston suoratoisto epäonnistui</translation>
 <translation id="4084682180776658562">Kirjanmerkki</translation>
@@ -2266,6 +2280,7 @@
 <translation id="4181841719683918333">Kielet</translation>
 <translation id="4184885522552335684">Siirrä näyttöä vetämällä</translation>
 <translation id="4194570336751258953">Ota koskettamalla klikkaus käyttöön</translation>
+<translation id="4194595472342532425">Plugin VM:n asennus ei onnistunut konfiguraatio-ongelman vuoksi. Ota yhteyttä organisaatiosi laitevalvojaan. Virhekoodi: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Avaa uudelle välilehdelle</translation>
 <translation id="4195814663415092787">Jatka siitä, mihin jäit</translation>
 <translation id="4198146608511578238">Paina käynnistysohjelman kuvaketta pitkään, niin voit puhua Google Assistantille.</translation>
@@ -2489,6 +2504,7 @@
 <translation id="4549791035683739768">Suojausavaimeesi ei ole tallennettu sormenjälkiä.</translation>
 <translation id="4551763574344810652">Kumoa painamalla <ph name="MODIFIER_KEY_DESCRIPTION" /></translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005"><ph name="NETWORK_TYPE" /> verkko, signaalin vahvuus <ph name="SIGNAL_STRENGTH" /> %</translation>
 <translation id="4554591392113183336">Ulkoinen laajennus on sama tai aiempi versio kuin nykyinen.</translation>
 <translation id="4555769855065597957">Varjo</translation>
 <translation id="4555863373929230635">Jos haluat tallentaa salasanoja Google-tilillesi, kirjaudu sisään ja ota synkronointi käyttöön.</translation>
@@ -2566,6 +2582,7 @@
 <translation id="4665446389743427678">Kaikki data, jonka <ph name="SITE" /> tallentaa, poistetaan.</translation>
 <translation id="4668721319092543482">Ota <ph name="PLUGIN_NAME" /> käyttöön klikkaamalla.</translation>
 <translation id="4672657274720418656">Koontisivu</translation>
+<translation id="46733273239502219">Myös asennetuissa sovelluksissa oleva offline-data poistetaan</translation>
 <translation id="4673442866648850031">Avaa näyttökynätyökalut, kun näyttökynä otetaan esille</translation>
 <translation id="4677585247300749148"><ph name="URL" /> haluaa vastata esteettömyystapahtumiin.</translation>
 <translation id="4677772697204437347">GPU-muisti</translation>
@@ -2657,7 +2674,6 @@
 <translation id="4823484602432206655">Lukea ja muokata käyttäjän ja laitteen asetuksia.</translation>
 <translation id="4824958205181053313">Peruutetaanko synkronointi?</translation>
 <translation id="4827675678516992122">Ei yhteyttä</translation>
-<translation id="4828937774870308359">Australialainen</translation>
 <translation id="4829768588131278040">Määritä PIN-koodi</translation>
 <translation id="4830502475412647084">Asennetaan käyttöjärjestelmäpäivitystä</translation>
 <translation id="4830573902900904548"><ph name="DEVICE_TYPE" /> ei voi muodostaa internetyhteyttä verkon <ph name="NETWORK_NAME" /> kautta. Valitse toinen verkko. <ph name="LEARN_MORE_LINK_START" />Lisätietoja<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2698,6 +2714,7 @@
 <translation id="4876273079589074638">Auta tiimiämme tutkimaan kaatumista ja korjaamaan virheet. Kerro toimista niin tarkasti kuin mahdollista. Kaikista yksityiskohdista on hyötyä.</translation>
 <translation id="4876895919560854374">Lukitse näyttö ja poista sen lukitus</translation>
 <translation id="4877276003880815204">Tutki elementtejä</translation>
+<translation id="4878653975845355462">Järjestelmänvalvoja on poistanut yksilölliset taustakuvat käytöstä</translation>
 <translation id="4879491255372875719">Automaattinen (oletus)</translation>
 <translation id="4880328057631981605">Tukiaseman nimi</translation>
 <translation id="4880827082731008257">Haku historiasta</translation>
@@ -2753,10 +2770,10 @@
 <translation id="4943691134276646401"><ph name="CHROME_EXTENSION_NAME" /> haluaa yhdistää sarjaporttiin</translation>
 <translation id="4944310289250773232">Todennuspalvelun tarjoaa <ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">Toiminnot</translation>
+<translation id="4952981627953231344">Plugin VM ei ole sallittu tällä laitteella. Ota yhteyttä organisaatiosi laitevalvojaan.</translation>
 <translation id="4953689047182316270">Vastata esteettömyystapahtumiin</translation>
 <translation id="4953808748584563296">Oranssi oletusavatar</translation>
 <translation id="4955710816792587366">Valitse PIN-koodi</translation>
-<translation id="4955814292505481804">Vuosittainen</translation>
 <translation id="4959262764292427323">Salasanat tallennetaan Google-tilillesi, jotta voit käyttää niitä kaikilla laitteilla</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Järjestelmänvalvoja on asentanut tämän sovelluksen.</translation>
@@ -3238,7 +3255,6 @@
 <translation id="5659593005791499971">Sähköposti</translation>
 <translation id="5659833766619490117">Sivua ei voi kääntää</translation>
 <translation id="5660204307954428567">Muodosta laitepari: <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Ikuinen</translation>
 <translation id="5667546120811588575">Määritetään Google Playta…</translation>
 <translation id="5669267381087807207">Aktivoidaan</translation>
 <translation id="5669691691057771421">Anna uusi PIN-koodi</translation>
@@ -3254,6 +3270,7 @@
 <translation id="5687326903064479980">Aikavyöhyke</translation>
 <translation id="5689516760719285838">Sijainti</translation>
 <translation id="56907980372820799">Yhdistä tiedot</translation>
+<translation id="5691180005790455277">Tämä poistaa kaiken datan ja evästeet, jotka <ph name="SITE_GROUP_NAME" /> ja siihen kuuluvat sivustot tallensivat.</translation>
 <translation id="5691511426247308406">Perhe</translation>
 <translation id="5692183275898619210">Tulostus valmis</translation>
 <translation id="5696143504434933566">Ilmoita väärinkäytöstä: <ph name="EXTENSION_NAME" /></translation>
@@ -3340,7 +3357,6 @@
 <translation id="5815645614496570556">X.400-osoite</translation>
 <translation id="5816434091619127343">Tulostimeen pyydetyt muutokset estäisivät sen käytön.</translation>
 <translation id="5817918615728894473">Muodosta laitepari</translation>
-<translation id="5819762621475381970">– huoneesi asettelun.</translation>
 <translation id="5821565227679781414">Luo pikakuvake</translation>
 <translation id="5825412242012995131">Käytössä (suositus)</translation>
 <translation id="5826395379250998812">Yhdistä <ph name="DEVICE_TYPE" /> puhelimeesi. <ph name="LINK_BEGIN" />Lue lisää<ph name="LINK_END" /></translation>
@@ -3476,6 +3492,7 @@
 <translation id="6007240208646052708">Puhehaku ei ole käytettävissä kielelläsi.</translation>
 <translation id="6009781704028455063">Sisäänrakennettu anturi</translation>
 <translation id="6010869025736512584">Videotuloa käytetään</translation>
+<translation id="6011074160056912900">Ethernet-verkko</translation>
 <translation id="6011193465932186973">Sormenjälki</translation>
 <translation id="6011449291337289699">Tyhjennä sivustotiedot</translation>
 <translation id="6015266928248016057">Väärä PUK-koodi. Yrityksiä jäljellä: <ph name="RETRIES" />.</translation>
@@ -3512,6 +3529,7 @@
 <translation id="6053401458108962351">&amp;Poista selaustiedot...</translation>
 <translation id="6055171183283175969">Antamasi salasana on virheellinen.</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 ja RSA-salaus</translation>
+<translation id="6055907707645252013"><ph name="NETWORK_TYPE" /> verkko, ei yhteyttä</translation>
 <translation id="6056710589053485679">Normaali päivitys</translation>
 <translation id="6057381398996433816">Tältä sivustolta on estetty liikkeen- tai valontunnistimien käyttö.</translation>
 <translation id="6058567592298841668">Liitettävä virtuaalikone: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3575,6 +3593,7 @@
 <translation id="6136114942382973861">Sulje latauspalkki</translation>
 <translation id="6137767437444130246">Käyttäjävarmenne</translation>
 <translation id="6138680304137685902">X9.62 ECDSA ‑allekirjoitus, jossa on SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, ei verkkoa</translation>
 <translation id="6141988275892716286">Vahvista lataus</translation>
 <translation id="6143186082490678276">Ohje</translation>
 <translation id="6144938890088808325">Auta meitä parantamaan Chromebookeja</translation>
@@ -3883,6 +3902,7 @@
 <translation id="6602956230557165253">Siirry vasemmalla ja oikealla nuolinäppäimellä.</translation>
 <translation id="6605847144724004692">Ei vielä käyttäjien arvioita</translation>
 <translation id="6607831829715835317">&amp;Lisää työkaluja</translation>
+<translation id="6611972847767394631">Löydät välilehdet täältä</translation>
 <translation id="6612358246767739896">Suojattu sisältö</translation>
 <translation id="6615455863669487791">Näytä</translation>
 <translation id="6618097958368085618">Säilytä silti</translation>
@@ -3951,6 +3971,7 @@
 <translation id="6709133671862442373">Uutiset</translation>
 <translation id="6709357832553498500">Yhdistä laajennuksella <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Edellinen</translation>
+<translation id="6715803357256707211">Linux-sovelluksen asennuksessa tapahtui virhe. Katso lisätietoja klikkaamalla ilmoitusta.</translation>
 <translation id="6721678857435001674">nähdä suojausavaimesi merkin ja mallin</translation>
 <translation id="6721972322305477112">&amp;Tiedosto</translation>
 <translation id="672213144943476270">Avaa profiilisi lukitus ennen vierailijakäytön aloittamista.</translation>
@@ -3975,7 +3996,6 @@
 <translation id="674632704103926902">Ota käyttöön napauttamalla vetäminen</translation>
 <translation id="6748217015615267851">Renderöijä: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Voit jatkaa, mutta vain synkronoidut tietosi ja asetuksesi palautetaan. Kaikki paikalliset tiedot menetetään.</translation>
-<translation id="6748775883310276718">Yksittäisen sovelluksen kioskitila</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Incognito)</translation>
 <translation id="6757101664402245801">URL-osoite kopioitu</translation>
 <translation id="6758056191028427665">Kerro mielipiteesi</translation>
@@ -3985,6 +4005,7 @@
 <translation id="6769712124046837540">Tulostinta lisätään…</translation>
 <translation id="6770664076092644100">Vahvista NFC:n kautta</translation>
 <translation id="6771503742377376720">On varmenteen myöntäjä</translation>
+<translation id="6772339735733515807">Laajennusvalinnat</translation>
 <translation id="6775163072363532304">Käytettävissä olevat laitteet tulevat näkyviin tähän.</translation>
 <translation id="6777817260680419853">Uudelleenohjaus estetty</translation>
 <translation id="6778737459546443941">Vanhempasi ei ole hyväksynyt sitä vielä.</translation>
@@ -4123,6 +4144,7 @@
 <translation id="6972180789171089114">Ääni- ja videotiedostot</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> ei saa avata tämän kansion tiedostoja, koska se sisältää järjestelmätiedostoja</translation>
 <translation id="6972754398087986839">Aloitusopas</translation>
+<translation id="6973611239564315524">Päivitys Debian 10:een (Buster) saatavilla</translation>
 <translation id="6974609594866392343">Offline-esittelytila</translation>
 <translation id="6977381486153291903">Laiteohjelmiston versio</translation>
 <translation id="6978121630131642226">Hakukoneet</translation>
@@ -4582,6 +4604,7 @@
 <translation id="7644543211198159466">Väri ja teema</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (omistaja)</translation>
 <translation id="7645681574855902035">Peruutetaan Linux-varmuuskopiota</translation>
+<translation id="7646772052135772216">Salasanojen synkronointi ei toimi</translation>
 <translation id="7647403192093989392">Ei viimeaikaisia tapahtumia</translation>
 <translation id="7648992873808071793">Tallentaa tiedostoja tälle laitteelle.</translation>
 <translation id="7649070708921625228">Ohje</translation>
@@ -4769,6 +4792,7 @@
 <translation id="7877451762676714207">Tuntematon palvelinvirhe. Yritä uudelleen tai ota yhteyttä palvelimen järjestelmänvalvojaan.</translation>
 <translation id="7877680364634660272">Esittely</translation>
 <translation id="7878562273885520351">Salasanasi on saattanut vaarantua.</translation>
+<translation id="7879631849810108578">Pikanäppäin luotu: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Paikallinen data poistetaan uudelleenkäynnistyksen yhteydessä</translation>
 <translation id="7881483672146086348">Näytä tili</translation>
 <translation id="7882358943899516840">Palveluntarjoajan tyyppi</translation>
@@ -4855,6 +4879,7 @@
 <translation id="7987814697832569482">Muodosta tähän aina VPN-yhteys</translation>
 <translation id="7988355189918024273">Ota käyttöön esteettömyystoimintoja</translation>
 <translation id="7991296728590311172">Kytkimen käytön asetukset</translation>
+<translation id="7994350303002908848">Plugin VM:n asentaminen ei onnistunut. Yritä uudelleen tai ota yhteyttä organisaatiosi laitevalvojaan. Virhekoodi: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">EAP-tapa</translation>
 <translation id="7997826902155442747">Prosessien tärkeysjärjestys</translation>
 <translation id="7999229196265990314">Luotiin seuraavat tiedostot:
@@ -4947,7 +4972,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Ei kolmannen osapuolen evästeitä}=1{1 kolmannen osapuolen eväste on estetty}other{# kolmannen osapuolen evästettä on estetty}}</translation>
 <translation id="810875025413331850">Lähistöllä olevia laitteita ei löydy.</translation>
 <translation id="8111155949205007504">Jaa tämä salasana iPhonellesi</translation>
-<translation id="8113043281354018522">Valitse lisenssityyppi</translation>
 <translation id="8114875720387900039">Vaakasuuntainen jako</translation>
 <translation id="8116972784401310538">&amp;Kirjanmerkkien hallinta</translation>
 <translation id="8117620576188476503">Tila-alueella voit hallita yhteyksiä, päivityksiä ja asetuksia. Avaa se näppäimistöllä painamalla Alt + vaihto + S.</translation>
@@ -5104,6 +5128,7 @@
 <translation id="8327039559959785305">Virhe Linux-tiedostojen käyttöönotossa. Yritä uudelleen.</translation>
 <translation id="8335587457941836791">Poista kiinnitys hyllystä</translation>
 <translation id="8336407002559723354">Päivitykset päättyvät <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Käynnistä laite uudelleen, jotta järjestelmän kieleksi tulee <ph name="LANGUAGE" /></translation>
 <translation id="8336739000755212683">Vaihda laitteen tilikuva</translation>
 <translation id="8337047789441383384">Olet jo rekisteröinyt tämän suojausavaimen. Sitä ei tarvitse rekisteröidä uudelleen.</translation>
 <translation id="8338952601723052325">Kehittäjän verkkosivusto</translation>
@@ -5147,6 +5172,7 @@
 <translation id="8400146488506985033">Hallinnoi käyttäjiä</translation>
 <translation id="8401432541486058167">Ilmoita älykorttiisi liittyvä PIN-koodi.</translation>
 <translation id="8405046151008197676">Katso uusimman päivityksen parhaat palat</translation>
+<translation id="8408068190360279472"><ph name="NETWORK_TYPE" /> verkko, yhdistetään</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Kysy ensin (suositus)</translation>
 <translation id="8418445294933751433">&amp;Näytä välilehtenä</translation>
@@ -5436,6 +5462,7 @@
 <translation id="8807632654848257479">Vakaa</translation>
 <translation id="8808478386290700967">Web Store</translation>
 <translation id="8808686172382650546">Kissa</translation>
+<translation id="8808744862003883508">Tällä sivulla näet kaikki Chromeen asennetut laajennukset.</translation>
 <translation id="8809147117840417135">Vaalea turkoosi</translation>
 <translation id="8813698869395535039">Sisäänkirjautuminen ei onnistu: <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">paperiarkki</translation>
@@ -5663,7 +5690,6 @@
 <translation id="9121814364785106365">Avaa kiinnitetyllä välilehdellä</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> on keskeytetty</translation>
 <translation id="9124003689441359348">Tässä näytetään tallennetut salasanasi.</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> jäljellä)</translation>
 <translation id="9128317794749765148">Määritystä ei voitu suorittaa loppuun</translation>
 <translation id="9128870381267983090">Yhdistä verkkoon</translation>
 <translation id="9130015405878219958">Annoit virheellisen tilan.</translation>
@@ -5702,6 +5728,7 @@
 <translation id="9188732951356337132">Lähetä käyttö- ja diagnostiikkadataa. Laite lähettää tällä hetkellä diagnostiikkadataa sekä laitteen ja sovellusten käyttödataa automaattisesti Googlelle. Dataa ei käytetä lapsesi henkilöllisyyden selvittämiseen – sen avulla parannetaan esimerkiksi järjestelmän ja sovellusten vakautta. Kootusta datasta on hyötyä myös Googlen sovelluksille ja kumppaneille, kuten Android-kehittäjille. Jos muun verkko- ja sovellustoiminnan asetus on lapsella käytössä, tätä dataa voidaan tallentaa hänen Google-tililleen. <ph name="BEGIN_LINK2" />Lue lisää<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + esijaettu avain</translation>
 <translation id="920045321358709304">Hae hakukoneella <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">Kaikki offline-data poistetaan</translation>
 <translation id="9201220332032049474">Näytön lukitusvaihtoehdot</translation>
 <translation id="9203398526606335860">&amp;Profilointi on käytössä</translation>
 <translation id="9203904171912129171">Valitse laite</translation>
@@ -5714,6 +5741,7 @@
 <translation id="9220525904950070496">Poista tili</translation>
 <translation id="9220820413868316583">Nosta sormi ja yritä uudelleen.</translation>
 <translation id="923467487918828349">Näytä kaikki</translation>
+<translation id="929117907539171075">Myös asennetussa sovelluksessa oleva offline-data poistetaan</translation>
 <translation id="930268624053534560">Tarkat aikaleimat</translation>
 <translation id="932327136139879170">Etusivu</translation>
 <translation id="932508678520956232">Tulostuksen käynnistäminen ei onnistunut.</translation>
@@ -5739,6 +5767,7 @@
 <translation id="960719561871045870">Operaattorikoodi</translation>
 <translation id="960987915827980018">Noin tunti jäljellä</translation>
 <translation id="962802172452141067">Kirjanmerkkien kansiopuu</translation>
+<translation id="964057662886721376">Tietyt laajennukset voivat hidastaa käyttöä, erityisesti ne joita et halunnut asentaa.</translation>
 <translation id="964286338916298286">IT-järjestelmänvalvojasi on poistanut Chrome Goodies ‑tarjoukset käytöstä laitteellasi.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Sovellus}other{Sovellukset}}</translation>
 <translation id="965211523698323809"><ph name="DEVICE_TYPE" /> voi lähettää ja vastaanottaa tekstiviestejä. <ph name="LINK_BEGIN" />Lue lisää<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb
index 2f7c460bc..23526c4 100644
--- a/chrome/app/resources/generated_resources_fil.xtb
+++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Custom</translation>
 <translation id="1178581264944972037">I-pause</translation>
 <translation id="117916940443676133">Hindi pinoprotektahan ng PIN ang iyong security key. Para pamahalaan ang data sa pag-sign in, gumawa muna ng PIN.</translation>
-<translation id="118069123878619799">- iyong mga pisikal na katangian, gaya ng tangkad</translation>
 <translation id="1181037720776840403">Alisin</translation>
 <translation id="1183237619868651138">Hindi ma-install ang <ph name="EXTERNAL_CRX_FILE" /> sa lokal na cache.</translation>
 <translation id="1185924365081634987">Maaari mo ring subukang <ph name="GUEST_SIGNIN_LINK_START" />mag-browse bilang bisita<ph name="GUEST_SIGNIN_LINK_END" /> upang ayusin ang error sa network na ito.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">Hinihintay ang <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> (na) iba pang available na device.</translation>
 <translation id="1495677929897281669">Bumalik sa tab</translation>
+<translation id="1499271269825557605">Kung hindi mo nakikilala ang isang extension, o kung hindi gumagana ang iyong browser gaya nang inaasahan, puwede mong i-off o i-customize ang mga extension dito.</translation>
 <translation id="1500297251995790841">Hindi kilalang device [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Ang account ng may-ari na ito ay dapat ang unang naka-sign in na account sa isang session ng multiple na pag-sign in.</translation>
 <translation id="150411034776756821">Alisin ang <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Na-block ang pahinang ito sa pag-a-access sa iyong camera.</translation>
 <translation id="1507246803636407672">&amp;Itapon</translation>
 <translation id="1508491105858779599">Itapat ang iyong daliri sa sensor para sa fingerprint upang i-unlock ang device.</translation>
+<translation id="1508575541972276599">Debian 9 (Stretch) ang kasalukuyang bersyon</translation>
 <translation id="1509281256533087115">I-access ang anumang <ph name="DEVICE_NAME_AND_VENDOR" /> sa pamamagitan ng USB</translation>
 <translation id="150962533380566081">Di-wasto ang PUK.</translation>
 <translation id="1510030919967934016">Naka-block ang pahinang ito mula sa pagsubaybay ng iyong lokasyon.</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">Ilapat</translation>
 <translation id="1603914832182249871">(Incognito)</translation>
 <translation id="1604432177629086300">Hindi ma-print. Suriin ang printer at subukan ulit.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: Hindi gumagana ang pag-sync ng password</translation>
 <translation id="1607139524282324606">I-clear ang entry</translation>
 <translation id="1608626060424371292">Alisin ang user na ito</translation>
 <translation id="1608668830839595724">Higit pang pagkilos para sa mga napiling item</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">Naka-host na data ng app</translation>
 <translation id="1776712937009046120">Magdagdag ng user</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Pinapamahalaan ng <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ang device na ito.
+    Paki-click ang "Susunod" para magpatuloy sa pag-sign in sa iyong <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> account.</translation>
 <translation id="1779652936965200207">Pakilagay ang passkey na ito sa "<ph name="DEVICE_NAME" />":</translation>
 <translation id="1780152987505130652">Isara ang Grupo</translation>
 <translation id="1781291988450150470">Kasalukuyang PIN</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">Hindi available ang pagkilos</translation>
 <translation id="2050339315714019657">Portrait</translation>
 <translation id="2053312383184521053">Data sa Idle na Estado</translation>
+<translation id="2055585478631012616">Masa-sign out ka sa mga site na ito, pati na rin sa mga nakabukas na tab</translation>
 <translation id="205560151218727633">Logo ng Google Assistant</translation>
 <translation id="2058456167109518507">Na-detect ang device</translation>
 <translation id="2059913712424898428">Time zone</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">I-undo</translation>
 <translation id="2080070583977670716">Higit pang mga setting</translation>
 <translation id="2087822576218954668">Print: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN network</translation>
 <translation id="2089566709556890888">Mag-browse nang ligtas gamit ang Google Chrome</translation>
 <translation id="2089795179672254991">Magtanong kapag gusto ng site na makita ang text at mga larawang kinopya sa clipboard (inirerekomenda)</translation>
 <translation id="2090165459409185032">Upang i-recover ang impormasyon ng iyong account, pumunta sa: google.com/accounts/recovery</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">Ina-access ng isang site ang input ng audio at video</translation>
 <translation id="2379281330731083556">I-print gamit ang dialog ng system... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Magtanong bago magpadala (inirerekomenda)</translation>
+<translation id="2382818385048255866">Suriin ang iyong mga extension</translation>
 <translation id="2384436799579181135">Nagka-error. Pakisuri ang iyong printer at subukang muli.</translation>
 <translation id="2387458720915042159">Uri ng koneksyon sa proxy</translation>
 <translation id="2391419135980381625">Karaniwang font</translation>
@@ -1036,6 +1043,7 @@
 <translation id="2462724976360937186">Certification Authority Key ID</translation>
 <translation id="2462752602710430187">Idinagdag ang <ph name="PRINTER_NAME" /></translation>
 <translation id="2464089476039395325">HTTP Proxy</translation>
+<translation id="2467267713099745100"><ph name="NETWORK_TYPE" /> network, naka-off</translation>
 <translation id="2468205691404969808">Gumamit ng mga cookie para matandaan ang iyong mga kagustuhan kahit na hindi mo binibisita ang mga page na iyon</translation>
 <translation id="2468402215065996499">Tamagotchi</translation>
 <translation id="2469259292033957819">Wala kang naka-save na printer.</translation>
@@ -1290,6 +1298,7 @@
 <translation id="2800760947029405028">Mag-upload ng larawan</translation>
 <translation id="2803375539583399270">Ilagay ang PIN</translation>
 <translation id="2804043232879091219">Hindi mabuksan ang alternatibong browser</translation>
+<translation id="2804667941345577550">Masa-sign out ka sa site na ito, pati na rin sa mga nakabukas na tab</translation>
 <translation id="2804680522274557040">Naka-off ang camera</translation>
 <translation id="2805646850212350655">Microsoft Encrypting File System</translation>
 <translation id="2805756323405976993">Mga App</translation>
@@ -1297,6 +1306,7 @@
 <translation id="2806891468525657116">Mayroon nang ganitong shortcut</translation>
 <translation id="2807517655263062534">Dito lalabas ang mga file na iyong ida-download</translation>
 <translation id="2809586584051668049">at <ph name="NUMBER_ADDITIONAL_DISABLED" /> pa</translation>
+<translation id="2810390687497823527">Kung hindi mo nakikilala ang isang extension, o kung hindi gumagana ang iyong browser gaya nang inaasahan, puwede mong i-off o i-customize ang mga extension dito.</translation>
 <translation id="2812049959647166806">Hindi sinusuportahan ang thunderbolt</translation>
 <translation id="2812944337881233323">Subukang mag-sign out at muling mag-sign in</translation>
 <translation id="2812989263793994277">Huwag magpakita ng anumang mga larawan</translation>
@@ -1336,6 +1346,7 @@
 <translation id="2861941300086904918">Tagapamahala ng seguridad ng Native Client</translation>
 <translation id="2864601841139725659">Itakda ang iyong larawan sa profile</translation>
 <translation id="2865919525181940183">Screenshot ng mga programang kasalukuyang nasa screen</translation>
+<translation id="286674810810214575">Sinusuri ang mga power source...</translation>
 <translation id="2867768963760577682">Buksan bilang Naka-pin na Tab</translation>
 <translation id="2868746137289129307">Ang extension na ito ay luma na at na-disable ayon sa patakaran ng enterprise. Maaaring awtomatiko itong ma-enable kapag may available na bagong bersyon.</translation>
 <translation id="2870560284913253234">Site</translation>
@@ -1413,6 +1424,7 @@
 <translation id="2972581237482394796">&amp;I-redo</translation>
 <translation id="2973324205039581528">I-mute ang Site</translation>
 <translation id="2977480621796371840">Alisin sa grupo</translation>
+<translation id="2979520980928493164">Mas maayos, mas nakakatuwang Chrome</translation>
 <translation id="2979639724566107830">Buksan ng bagong window</translation>
 <translation id="2981113813906970160">Ipakita ang malaking mouse cursor</translation>
 <translation id="2982970937345031">Mag-ulat nang anonymous</translation>
@@ -1519,6 +1531,7 @@
 <translation id="3143515551205905069">Kanselahin ang pag-sync</translation>
 <translation id="3143754809889689516">I-play mula sa simula</translation>
 <translation id="3144647712221361880">Buksan ang link bilang</translation>
+<translation id="3145187901750964977">Hindi ma-install ang virtual machine. Pakisubukan ulit, o makipag-ugnayan sa administrator ng device ng iyong organisasyon. Code ng error: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Bersyon:
     <ph name="LINUX_VERSION" />
 
@@ -1557,6 +1570,7 @@
 <translation id="3192947282887913208">Mga Audio File</translation>
 <translation id="3194737229810486521">Gusto ng <ph name="URL" /> na permanenteng mag-store ng data sa iyong device</translation>
 <translation id="3199127022143353223">Mga Server</translation>
+<translation id="3201306578844503970">Hindi ma-install ang virtual machine dahil sa isang error sa network. Pakisubukan ulit, o makipag-ugnayan sa administrator ng device ng iyong organisasyon. Code ng error: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Lalabas dito ang mga available na USB device.</translation>
 <translation id="3202131003361292969">Path</translation>
 <translation id="3202173864863109533">Iminu-mute ang audio ng tab na ito.</translation>
@@ -1893,7 +1907,6 @@
 <translation id="3678156199662914018">Extension: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Salamat sa iyong feedback. Offline ka na ngayon, at ipapadala ang iyong ulat sa ibang pagkakataon.</translation>
 <translation id="3682824389861648626">Limitasyon sa paggalaw</translation>
-<translation id="3683023058278427253">May natukoy kaming maraming uri ng lisensya para sa iyong domain. Pumili ng isa upang magpatuloy.</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> Kahilingan sa Pagbabahagi ng Screen</translation>
 <translation id="368789413795732264">Nagkaroon ng error habang sinusubukang isulat ang file: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Mag-write sa mga file at folder na iyong bubuksan sa application</translation>
@@ -2067,6 +2080,7 @@
 <translation id="389589731200570180">Ibahagi sa mga bisita</translation>
 <translation id="389901847090970821">Pumili ng keyboard</translation>
 <translation id="3899879303189199559">Offline nang mahigit sa isang taon</translation>
+<translation id="3900789207771372462">Puwedeng makita ng ilang extension ang iyong aktibidad sa pag-browse - kabilang ang personal na impormasyon.</translation>
 <translation id="3900966090527141178">I-export ang mga password</translation>
 <translation id="3901991538546252627">Kumokonekta sa <ph name="NAME" /></translation>
 <translation id="3905761538810670789">Ayusin ang app</translation>
@@ -2157,7 +2171,6 @@
 <translation id="4013132157686828973">Dine-debug ng "<ph name="CLIENT_NAME" />" ang browser na ito</translation>
 <translation id="4014432863917027322">Ayusin ang "<ph name="EXTENSION_NAME" />"?</translation>
 <translation id="4015163439792426608">May mga extension? <ph name="BEGIN_LINK" />Pamahalaan ang iyong mga extension<ph name="END_LINK" /> sa isang madaling puntahang lugar.</translation>
-<translation id="4020106588733303597">Oops!  Hindi na-load ng system ang mga available na lisensya.</translation>
 <translation id="4020327272915390518">Menu ng mga opsyon</translation>
 <translation id="4021279097213088397">-</translation>
 <translation id="4022426551683927403">&amp;Idagdag sa Diksyunaryo</translation>
@@ -2195,6 +2208,7 @@
 <translation id="407520071244661467">Scale</translation>
 <translation id="4075639477629295004">Hindi ma-cast ang <ph name="FILE_NAME" />.</translation>
 <translation id="4077917118009885966">Naka-block ang mga ad sa site na ito</translation>
+<translation id="4077919383365622693">Maki-clear ang lahat ng data at cookies na na-store ng <ph name="SITE" />.</translation>
 <translation id="4079140982534148664">Gumamit ng Pinahusay na Pang-check ng Pagbabaybay</translation>
 <translation id="4081242589061676262">Hindi ma-cast ang file.</translation>
 <translation id="4084682180776658562">Bookmark</translation>
@@ -2269,6 +2283,7 @@
 <translation id="4181841719683918333">Mga Wika</translation>
 <translation id="4184885522552335684">I-drag upang ilipat ang isang display</translation>
 <translation id="4194570336751258953">Paganahin ang tap-to-click</translation>
+<translation id="4194595472342532425">Hindi ma-set up ang Plugin VM dahil sa isang problema sa configuration. Makipag-ugnayan sa administrator ng device ng iyong organisasyon. Code ng error: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Buksan sa bagong tab</translation>
 <translation id="4195814663415092787">Magpatuloy kung saan ka tumigil</translation>
 <translation id="4198146608511578238">I-hold lang ang icon ng Launcher upang kausapin ang iyong Google Assistant.</translation>
@@ -2492,6 +2507,7 @@
 <translation id="4549791035683739768">Walang naka-store na fingerprint sa iyong security key</translation>
 <translation id="4551763574344810652">Pindutin ang <ph name="MODIFIER_KEY_DESCRIPTION" /> para i-undo</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005"><ph name="NETWORK_TYPE" /> network, lakas ng signal na <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">Pareho o mas mababa ang bersyon ng external na extension kumpara sa umiiral nang extension.</translation>
 <translation id="4555769855065597957">Shadow</translation>
 <translation id="4555863373929230635">Para mag-save ng mga password sa iyong Google Account, mag-sign in at i-on ang pag-sync.</translation>
@@ -2569,6 +2585,7 @@
 <translation id="4665446389743427678">Ide-delete ang lahat ng data na naka-store sa <ph name="SITE" />.</translation>
 <translation id="4668721319092543482">I-click upang i-enable ang <ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">Distill Page</translation>
+<translation id="46733273239502219">Maki-clear din ang offline na data sa mga naka-install na app</translation>
 <translation id="4673442866648850031">Buksan ang mga stylus tool kapag inalis ang stylus</translation>
 <translation id="4677585247300749148">Gustong tumugon ng <ph name="URL" /> sa mga kaganapan ng pagiging accessible</translation>
 <translation id="4677772697204437347">GPU memory</translation>
@@ -2660,7 +2677,6 @@
 <translation id="4823484602432206655">Basahin at baguhin ang mga setting ng user at device</translation>
 <translation id="4824958205181053313">Kanselahin ang pag-sync?</translation>
 <translation id="4827675678516992122">Hindi makakonekta</translation>
-<translation id="4828937774870308359">Australian</translation>
 <translation id="4829768588131278040">Mag-set up ng PIN</translation>
 <translation id="4830502475412647084">Ini-install ang update sa OS</translation>
 <translation id="4830573902900904548">Hindi makakonekta sa Internet ang iyong <ph name="DEVICE_TYPE" /> gamit ang <ph name="NETWORK_NAME" />. Mangyaring pumili ng ibang network. <ph name="LEARN_MORE_LINK_START" />Matuto pa<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2701,6 +2717,7 @@
 <translation id="4876273079589074638">Tulungan ang aming mga engineer na siyasatin at ayusin ang pag-crash na ito. Maglista ng mga eksaktong hakbang kung maaari. Walang detalye ang masasayang!</translation>
 <translation id="4876895919560854374">I-lock at i-unlock ang screen</translation>
 <translation id="4877276003880815204">Siyasatin ang Mga Element</translation>
+<translation id="4878653975845355462">Na-off ng iyong administrator ang mga custom na background</translation>
 <translation id="4879491255372875719">Awtomatiko (default)</translation>
 <translation id="4880328057631981605">Access point name</translation>
 <translation id="4880827082731008257">History ng paghahanap</translation>
@@ -2756,10 +2773,10 @@
 <translation id="4943691134276646401">Gustong kumonekta ng "<ph name="CHROME_EXTENSION_NAME" />" sa isang serial port</translation>
 <translation id="4944310289250773232">Hino-host ng <ph name="SAML_DOMAIN" /> ang serbisyo sa pag-authenticate na ito</translation>
 <translation id="495170559598752135">Mga Pagkilos</translation>
+<translation id="4952981627953231344">Hindi pinapayagan ang Plugin VM sa device na ito. Makipag-ugnayan sa administrator ng device ng iyong organisasyon.</translation>
 <translation id="4953689047182316270">Tumugon sa Mga Kaganapan ng Pagiging Accessible</translation>
 <translation id="4953808748584563296">Default na orange na avatar</translation>
 <translation id="4955710816792587366">Piliin ang iyong PIN</translation>
-<translation id="4955814292505481804">Taunan</translation>
 <translation id="4959262764292427323">Sine-save ang mga password sa iyong Google Account para magamit mo ang mga ito sa anumang device</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Na-install ang app na ito ng iyong administrator.</translation>
@@ -3241,7 +3258,6 @@
 <translation id="5659593005791499971">Email</translation>
 <translation id="5659833766619490117">Hindi maisalin ang page na ito</translation>
 <translation id="5660204307954428567">Ipares sa <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Perpetual</translation>
 <translation id="5667546120811588575">Sine-set up ang Google Play...</translation>
 <translation id="5669267381087807207">Ina-activate</translation>
 <translation id="5669691691057771421">Ilagay ang bagong PIN</translation>
@@ -3257,6 +3273,7 @@
 <translation id="5687326903064479980">Timezone</translation>
 <translation id="5689516760719285838">Lokasyon</translation>
 <translation id="56907980372820799">I-link ang data</translation>
+<translation id="5691180005790455277">Maki-clear ang lahat ng data at cookies na na-store ng <ph name="SITE_GROUP_NAME" /> at anumang site na nasa ilalim nito.</translation>
 <translation id="5691511426247308406">Pamilya</translation>
 <translation id="5692183275898619210">Tapos nang i-print</translation>
 <translation id="5696143504434933566">Mag-ulat ng pang-aabuso mula sa "<ph name="EXTENSION_NAME" />"</translation>
@@ -3343,7 +3360,6 @@
 <translation id="5815645614496570556">Address na X.400</translation>
 <translation id="5816434091619127343">Magiging hindi magagamit ang printer dahil sa mga hiniling na pagbabago sa printer.</translation>
 <translation id="5817918615728894473">Ipares</translation>
-<translation id="5819762621475381970">- layout ng iyong kuwarto</translation>
 <translation id="5821565227679781414">Lumikha ng Shortcut</translation>
 <translation id="5825412242012995131">Naka-on (inirerekomenda)</translation>
 <translation id="5826395379250998812">Ikonekta ang iyong <ph name="DEVICE_TYPE" /> sa telepono mo. <ph name="LINK_BEGIN" />Matuto pa<ph name="LINK_END" /></translation>
@@ -3479,6 +3495,7 @@
 <translation id="6007240208646052708">Hindi available sa iyong wika ang paghahanap gamit ang boses.</translation>
 <translation id="6009781704028455063">Built-in na sensor</translation>
 <translation id="6010869025736512584">Ina-access ang input ng video</translation>
+<translation id="6011074160056912900">Ethernet network</translation>
 <translation id="6011193465932186973">Fingerprint</translation>
 <translation id="6011449291337289699">I-clear ang data ng site</translation>
 <translation id="6015266928248016057">Di-wasto ang PUK. Natitirang pag-retry: <ph name="RETRIES" />.</translation>
@@ -3515,6 +3532,7 @@
 <translation id="6053401458108962351">&amp;I-clear ang data sa pag-browse...</translation>
 <translation id="6055171183283175969">Hindi wasto ang password na iyong inilagay.</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 na May RSA Encryption</translation>
+<translation id="6055907707645252013"><ph name="NETWORK_TYPE" /> network, hindi nakakonekta</translation>
 <translation id="6056710589053485679">I-reload Nang Normal</translation>
 <translation id="6057381398996433816">Na-block ang site na ito sa paggamit ng sensor ng paggalaw at liwanag.</translation>
 <translation id="6058567592298841668">Plugin na Virtual Machine: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3578,6 +3596,7 @@
 <translation id="6136114942382973861">Isara ang bar ng mga download</translation>
 <translation id="6137767437444130246">Certificate ng user</translation>
 <translation id="6138680304137685902">X9.62 ECDSA Signature na may SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, walang network</translation>
 <translation id="6141988275892716286">Kumpirmahin ang pag-download</translation>
 <translation id="6143186082490678276">Humingi ng Tulong</translation>
 <translation id="6144938890088808325">Tulungan kaming pahusayin ang Mga Chromebook</translation>
@@ -3884,6 +3903,7 @@
 <translation id="6602956230557165253">Gamitin ang kaliwa at kanang mga arrow key upang mag-navigate.</translation>
 <translation id="6605847144724004692">Hindi pa na-rate ng sinumang user.</translation>
 <translation id="6607831829715835317">Higit pang mga too&amp;l</translation>
+<translation id="6611972847767394631">Hanapin ang iyong mga tab dito</translation>
 <translation id="6612358246767739896">Pinoprotektahang content</translation>
 <translation id="6615455863669487791">Ipakita sa akin</translation>
 <translation id="6618097958368085618">Panatilihin pa rin</translation>
@@ -3952,6 +3972,7 @@
 <translation id="6709133671862442373">Balita</translation>
 <translation id="6709357832553498500">Kumonekta sa pamamagitan ng <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Nakaraan</translation>
+<translation id="6715803357256707211">Nagkaroon ng error habang ini-install ang iyong Linux application. Mag-click sa notification para sa mga detalye.</translation>
 <translation id="6721678857435001674">Tingnan ang manufacturer at modelo ng iyong Security Key</translation>
 <translation id="6721972322305477112">&amp;File</translation>
 <translation id="672213144943476270">Paki-unlock ang iyong profile bago mag-browse bilang bisita.</translation>
@@ -3976,7 +3997,6 @@
 <translation id="674632704103926902">Paganahin ang pag-tap upang mag-drag</translation>
 <translation id="6748217015615267851">Tagapag-render: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Maaari kang magpatuloy ngunit ang iyong naka-sync na data at mga setting lang ang maibabalik. Mawawala ang lahat ng iyong lokal na data.</translation>
-<translation id="6748775883310276718">Kiosk na Pang-isang App</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Incognito)</translation>
 <translation id="6757101664402245801">Nakopya ang URL</translation>
 <translation id="6758056191028427665">Ipaalam sa amin kung ano ang iyong palagay sa ginagawa namin.</translation>
@@ -3986,6 +4006,7 @@
 <translation id="6769712124046837540">Idinaragdag ang printer...</translation>
 <translation id="6770664076092644100">I-verify sa pamamagitan ng NFC</translation>
 <translation id="6771503742377376720">Ay isang Certificate Authority</translation>
+<translation id="6772339735733515807">Pamahalaan ang iyong mga extension</translation>
 <translation id="6775163072363532304">Lalabas dito ang mga available na device.</translation>
 <translation id="6777817260680419853">Na-block ang pag-redirect</translation>
 <translation id="6778737459546443941">Hindi pa ito inaaprubahan ng iyong magulang</translation>
@@ -4124,6 +4145,7 @@
 <translation id="6972180789171089114">Audio/Video</translation>
 <translation id="6972553992270299730">Hindi mabuksan ng <ph name="ORIGIN" /> ang mga file sa folder na ito dahil naglalaman ito ng mga file ng system</translation>
 <translation id="6972754398087986839">Magsimula</translation>
+<translation id="6973611239564315524">May available na pag-upgrade sa Debian 10 (Buster)</translation>
 <translation id="6974609594866392343">Offline na demo mode</translation>
 <translation id="6977381486153291903">Rebisyon ng firmware</translation>
 <translation id="6978121630131642226">Mga Search Engine</translation>
@@ -4583,6 +4605,7 @@
 <translation id="7644543211198159466">Kulay at tema</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (may-ari)</translation>
 <translation id="7645681574855902035">Kinakansela ang pag-back up ng Linux</translation>
+<translation id="7646772052135772216">Hindi gumagana ang pag-sync ng password</translation>
 <translation id="7647403192093989392">Walang kamakailang aktibidad</translation>
 <translation id="7648992873808071793">Mag-store ng mga file sa device na ito</translation>
 <translation id="7649070708921625228">Tulong</translation>
@@ -4771,6 +4794,7 @@
 <translation id="7877451762676714207">Hindi alam na error sa server. Pakisubukang muli, o makipag-ugnay sa administrator ng server.</translation>
 <translation id="7877680364634660272">Paglilibot</translation>
 <translation id="7878562273885520351">Maaaring makompromismo ang iyong password</translation>
+<translation id="7879631849810108578">Naitakda na ang shortcut: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Ide-delete ang lokal na data kapag nag-restart ka</translation>
 <translation id="7881483672146086348">Tingnan ang Account</translation>
 <translation id="7882358943899516840">Uri ng provider</translation>
@@ -4857,6 +4881,7 @@
 <translation id="7987814697832569482">Palaging kumonekta sa pamamagitan ng VPN na ito</translation>
 <translation id="7988355189918024273">Paganahin ang mga feature sa pagiging accessible</translation>
 <translation id="7991296728590311172">Mga setting ng Switch Access</translation>
+<translation id="7994350303002908848">Hindi ma-install ang Plugin VM. Pakisubukan ulit, o makipag-ugnayan sa administrator ng device ng iyong organisasyon. Code ng error: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">Pamamaraang EAP</translation>
 <translation id="7997826902155442747">Priority ng Proseso</translation>
 <translation id="7999229196265990314">Nilkha ang mga sumusunod na file:
@@ -4949,7 +4974,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Walang third-party na cookies}=1{1 third-party na cookie ang na-block}one{# third-party na cookies ang na-block}other{# na third-party na cookies ang na-block}}</translation>
 <translation id="810875025413331850">Walang nakitang device na nasa malapit.</translation>
 <translation id="8111155949205007504">Ibahagi ang password na ito sa iyong iPhone</translation>
-<translation id="8113043281354018522">Pumili ng uri ng lisensya</translation>
 <translation id="8114875720387900039">I-split nang pahalang</translation>
 <translation id="8116972784401310538">&amp;Tagapangasiwa ng bookmark</translation>
 <translation id="8117620576188476503">Pamahalaan ang mga koneksyon, update, at setting gamit ang status tray. Upang makapunta rito sa pamamagitan ng keyboard, pindutin ang Alt + Shift + S.</translation>
@@ -5106,6 +5130,7 @@
 <translation id="8327039559959785305">Nagkaroon ng error sa pag-mount ng mga Linux file. Pakisubukang muli.</translation>
 <translation id="8335587457941836791">I-unpin mula sa shelf</translation>
 <translation id="8336407002559723354">Matatapos ang mga pag-update sa <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">I-restart ang device para ipakita ang system text sa <ph name="LANGUAGE" /></translation>
 <translation id="8336739000755212683">Baguhin ang larawan ng account ng device</translation>
 <translation id="8337047789441383384">Naiparehistro mo na ang security key na ito. Hindi mo na ito kailangang muling iparehistro.</translation>
 <translation id="8338952601723052325">Website ng developer</translation>
@@ -5149,6 +5174,7 @@
 <translation id="8400146488506985033">Pamahalaan ang mga tao</translation>
 <translation id="8401432541486058167">Ibigay ang PIN na nauugnay sa iyong smart card.</translation>
 <translation id="8405046151008197676">Kunin ang mga highlight mula sa pinakabagong update</translation>
+<translation id="8408068190360279472"><ph name="NETWORK_TYPE" /> network, kumokonekta</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Magtanong muna (inirerekomenda)</translation>
 <translation id="8418445294933751433">&amp;Ipakita bilang tab</translation>
@@ -5439,6 +5465,7 @@
 <translation id="8807632654848257479">Matatag</translation>
 <translation id="8808478386290700967">Web Store</translation>
 <translation id="8808686172382650546">Pusa</translation>
+<translation id="8808744862003883508">Makikita mo sa page na ito ang lahat ng extension na naka-install sa Chrome.</translation>
 <translation id="8809147117840417135">Light teal</translation>
 <translation id="8813698869395535039">Hindi makapag-sign in sa <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">piraso ng papel</translation>
@@ -5667,7 +5694,6 @@
 <translation id="9121814364785106365">Binuksan bilang na-pin na tab</translation>
 <translation id="9122176249172999202">Naka-pause ang <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
 <translation id="9124003689441359348">Lalabas dito ang mga na-save na password</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> ang natitira)</translation>
 <translation id="9128317794749765148">Hindi makumpleto ang pag-set up</translation>
 <translation id="9128870381267983090">Kumonekta sa network</translation>
 <translation id="9130015405878219958">Di-wastong mode ang ipinasok.</translation>
@@ -5706,6 +5732,7 @@
 <translation id="9188732951356337132">Magpadala ng data ng paggamit at diagnostic na data. Sa kasalukuyan, ang device na ito ay awtomatikong nagpapadala ng diagnostic na data, data ng device, at data ng paggamit sa app sa Google. Hindi ito gagamitin para tukuyin ang pagkakakilanlan ng iyong anak, at makakatulong ito sa stability ng system at ng app, at sa iba pang pagpapahusay. Makakatulong din ang ilang pinagsama-samang data sa mga app at partner ng Google, gaya ng mga developer ng Android. Kung naka-on ang karagdagang setting ng Aktibidad sa Web at App para sa iyong anak, maaaring ma-save ang data na ito sa kanyang Google Account. <ph name="BEGIN_LINK2" />Matuto Pa<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + paunang nakabahaging key</translation>
 <translation id="920045321358709304">Maghanap sa <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">Maki-clear ang anumang offline na data</translation>
 <translation id="9201220332032049474">Mga opsyon sa lock ng screen</translation>
 <translation id="9203398526606335860">&amp;Pinagana ang pag-profile</translation>
 <translation id="9203904171912129171">Pumili ng device</translation>
@@ -5718,6 +5745,7 @@
 <translation id="9220525904950070496">Alisin ang account</translation>
 <translation id="9220820413868316583">Iangat at pagkatapos ay subukang muli.</translation>
 <translation id="923467487918828349">Show All</translation>
+<translation id="929117907539171075">Maki-clear din ang offline na data sa mga naka-install na app</translation>
 <translation id="930268624053534560">Mga Detalyadong Timestamp</translation>
 <translation id="932327136139879170">Home</translation>
 <translation id="932508678520956232">Hindi masimulan ang pag-print.</translation>
@@ -5743,6 +5771,7 @@
 <translation id="960719561871045870">Operator code</translation>
 <translation id="960987915827980018">Mga 1 oras ang natitira</translation>
 <translation id="962802172452141067">Folder tree ng bookmark</translation>
+<translation id="964057662886721376">Puwede kang mapabagal ng ilang extension - lalo na ang mga extension na hindi mo naman ginustong i-install.</translation>
 <translation id="964286338916298286">Na-disable ng iyong IT administrator ang Chrome Goodies para sa device mo.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Application}one{Application}other{na Application}}</translation>
 <translation id="965211523698323809">Magpadala at makatanggap ng mga text message mula sa iyong <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Matuto pa<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_fr-CA.xtb b/chrome/app/resources/generated_resources_fr-CA.xtb
index 0b985655..a346398 100644
--- a/chrome/app/resources/generated_resources_fr-CA.xtb
+++ b/chrome/app/resources/generated_resources_fr-CA.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Personnalisé</translation>
 <translation id="1178581264944972037">Interrompre</translation>
 <translation id="117916940443676133">Votre clé de sécurité n'est pas protégée par un NIP. Pour gérer les données de connexion, commencez par créer un NIP.</translation>
-<translation id="118069123878619799">- Vos caractéristiques physiques, comme votre taille</translation>
 <translation id="1181037720776840403">Supprimer</translation>
 <translation id="1183237619868651138">Impossible d'installer <ph name="EXTERNAL_CRX_FILE" /> dans le cache local.</translation>
 <translation id="1185924365081634987">Vous pouvez également essayer de <ph name="GUEST_SIGNIN_LINK_START" />naviguer en tant qu'invité<ph name="GUEST_SIGNIN_LINK_END" /> pour corriger cette erreur réseau.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">En attente de <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> autres appareils accessibles.</translation>
 <translation id="1495677929897281669">Retour à l'onglet</translation>
+<translation id="1499271269825557605">Si vous ne reconnaissez pas une extension, ou si votre navigateur ne fonctionne pas comme prévu, vous pouvez ici désactiver ou personnaliser les extensions.</translation>
 <translation id="1500297251995790841">Appareil inconnu [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Ce compte de propriétaire doit être le premier compte à être connecté lors de sessions de connexion multicompte.</translation>
 <translation id="150411034776756821">Supprimer <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">L'accès à votre caméra est bloqué pour cette page.</translation>
 <translation id="1507246803636407672">Supprim&amp;er</translation>
 <translation id="1508491105858779599">Placez votre doigt sur le capteur d'empreinte digitale pour déverrouiller l'appareil.</translation>
+<translation id="1508575541972276599">La version actuelle est Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">Accéder à n'importe quel appareil <ph name="DEVICE_NAME_AND_VENDOR" /> par USB</translation>
 <translation id="150962533380566081">Clé PUK non valide.</translation>
 <translation id="1510030919967934016">Le suivi de votre position géographique a été bloqué pour cette page.</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">Appliquer</translation>
 <translation id="1603914832182249871">(Mode privé)</translation>
 <translation id="1604432177629086300">Impossible d'imprimer le fichier. Vérifiez l'imprimante, puis réessayez.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" /> : la synchronisation des mots de passe ne fonctionne pas</translation>
 <translation id="1607139524282324606">Effacer l'entrée</translation>
 <translation id="1608626060424371292">Supprimer cet utilisateur</translation>
 <translation id="1608668830839595724">Plus d'actions pour les éléments sélectionnés</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">Données d'application hébergée</translation>
 <translation id="1776712937009046120">Ajouter un utilisateur</translation>
 <translation id="1776883657531386793"><ph name="OID" /> : <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Cet appareil est géré par <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    Veuillez cliquer sur « Suivant » pour continuer à vous connecter à votre compte <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation>
 <translation id="1779652936965200207">Veuillez entrer cette clé d'accès sur « <ph name="DEVICE_NAME" /> » :</translation>
 <translation id="1780152987505130652">Fermer le groupe</translation>
 <translation id="1781291988450150470">NIP actuel</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">Action non disponible</translation>
 <translation id="2050339315714019657">Portrait</translation>
 <translation id="2053312383184521053">Données sur l'état de veille</translation>
+<translation id="2055585478631012616">Vous serez déconnecté de ces sites, y compris dans les onglets ouverts</translation>
 <translation id="205560151218727633">Logo de l'Assistant Google</translation>
 <translation id="2058456167109518507">Appareil détecté</translation>
 <translation id="2059913712424898428">Fuseau horaire</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">Annuler</translation>
 <translation id="2080070583977670716">Plus de paramètres</translation>
 <translation id="2087822576218954668">Imprimer : <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">Réseau privé virtuel</translation>
 <translation id="2089566709556890888">Naviguez en toute sécurité avec Google Chrome</translation>
 <translation id="2089795179672254991">Demander lorsqu'un site veut voir le texte et les images copiés dans le presse-papiers (recommandé)</translation>
 <translation id="2090165459409185032">Pour récupérer les données de votre compte, accédez à l'adresse google.com/accounts/recovery</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">Un site accède aux entrées audio et vidéo de votre appareil</translation>
 <translation id="2379281330731083556">Imprimer à l'aide de la boîte de dialogue du système… <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Demander avant d'envoyer (recommandé)</translation>
+<translation id="2382818385048255866">Vérifier vos extensions</translation>
 <translation id="2384436799579181135">Une erreur s'est produite. Veuillez vérifier votre imprimante, puis réessayer.</translation>
 <translation id="2387458720915042159">Type de connexion de mandataire</translation>
 <translation id="2391419135980381625">Police standard</translation>
@@ -1036,6 +1043,7 @@
 <translation id="2462724976360937186">Identifiant de clé d'autorité de certification</translation>
 <translation id="2462752602710430187">Imprimante <ph name="PRINTER_NAME" /> ajoutée</translation>
 <translation id="2464089476039395325">Mandataire HTTP</translation>
+<translation id="2467267713099745100">Réseau <ph name="NETWORK_TYPE" /> : désactivé</translation>
 <translation id="2468205691404969808">Utilise des témoins pour mémoriser vos préférences, même si vous ne visitez pas ces pages</translation>
 <translation id="2468402215065996499">Tamagotchi</translation>
 <translation id="2469259292033957819">Vous n'avez aucune imprimante enregistrée.</translation>
@@ -1291,6 +1299,7 @@
 <translation id="2800760947029405028">Téléverser une image</translation>
 <translation id="2803375539583399270">Entrer le NIP</translation>
 <translation id="2804043232879091219">Impossible d'ouvrir le navigateur secondaire</translation>
+<translation id="2804667941345577550">Vous serez déconnecté de ce site, y compris dans les onglets ouverts</translation>
 <translation id="2804680522274557040">Appareil photo désactivé</translation>
 <translation id="2805646850212350655">Système de fichiers de chiffrement Microsoft</translation>
 <translation id="2805756323405976993">Applications</translation>
@@ -1298,6 +1307,7 @@
 <translation id="2806891468525657116">Le raccourci existe déjà</translation>
 <translation id="2807517655263062534">Les fichiers que vous téléchargez apparaissent ici</translation>
 <translation id="2809586584051668049">et <ph name="NUMBER_ADDITIONAL_DISABLED" /> autres</translation>
+<translation id="2810390687497823527">Si vous ne reconnaissez pas une extension, ou si votre navigateur ne fonctionne pas comme prévu, vous pouvez ici désactiver ou personnaliser les extensions.</translation>
 <translation id="2812049959647166806">Les connexions Thunderbolt ne sont pas prises en charge</translation>
 <translation id="2812944337881233323">Essayez de vous déconnecter et de vous reconnecter</translation>
 <translation id="2812989263793994277">Ne pas afficher les images</translation>
@@ -1337,6 +1347,7 @@
 <translation id="2861941300086904918">Gestionnaire de sécurité de Native Client</translation>
 <translation id="2864601841139725659">Définir votre photo de profil</translation>
 <translation id="2865919525181940183">Capture d'écran des programmes qui sont présentement à l'écran</translation>
+<translation id="286674810810214575">Vérification des sources d'alimentation en cours…</translation>
 <translation id="2867768963760577682">Ouvrir dans un onglet épinglé</translation>
 <translation id="2868746137289129307">Cette extension est obsolète et désactivée par la politique de l'entreprise. Il est possible qu’elle s’active automatiquement lorsqu’une nouvelle version sera disponible.</translation>
 <translation id="2870560284913253234">Site</translation>
@@ -1414,6 +1425,7 @@
 <translation id="2972581237482394796">&amp;Rétablir</translation>
 <translation id="2973324205039581528">Désactiver le son sur le site</translation>
 <translation id="2977480621796371840">Supprimer du groupe</translation>
+<translation id="2979520980928493164">Un Chrome plus sain et plus performant</translation>
 <translation id="2979639724566107830">Ouvrir dans une nouvelle fenêtre</translation>
 <translation id="2981113813906970160">Afficher le grand curseur</translation>
 <translation id="2982970937345031">Signaler de manière anonyme</translation>
@@ -1520,6 +1532,7 @@
 <translation id="3143515551205905069">Annuler la synchronisation</translation>
 <translation id="3143754809889689516">Faire jouer depuis le début</translation>
 <translation id="3144647712221361880">Ouvrir le lien en tant que</translation>
+<translation id="3145187901750964977">Impossible d'installer la machine virtuelle. Veuillez essayer de nouveau, ou communiquer avec l'administrateur des appareils de votre organisation. Code d'erreur : <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Version :
     <ph name="LINUX_VERSION" />
 
@@ -1558,6 +1571,7 @@
 <translation id="3192947282887913208">Fichiers audio</translation>
 <translation id="3194737229810486521">L'URL <ph name="URL" /> veut stocker de façon permanente des données sur votre appareil</translation>
 <translation id="3199127022143353223">Serveurs</translation>
+<translation id="3201306578844503970">Impossible d'installer la machine virtuelle en raison d'une erreur réseau. Veuillez essayer de nouveau, ou communiquer avec l'administrateur des appareils de votre organisation. Code d'erreur : <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Les appareils USB disponibles s'afficheront ici.</translation>
 <translation id="3202131003361292969">Chemin d'accès</translation>
 <translation id="3202173864863109533">L'audio de cet onglet est désactivé.</translation>
@@ -1894,7 +1908,6 @@
 <translation id="3678156199662914018">Extension : <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Nous vous remercions de vos commentaires. Vous êtes actuellement hors connexion, et votre rapport sera envoyé plus tard.</translation>
 <translation id="3682824389861648626">Seuil de mouvement</translation>
-<translation id="3683023058278427253">Nous avons détecté plusieurs types de licences pour votre domaine. Veuillez en choisir un pour continuer.</translation>
 <translation id="3683524264665795342">Demande de partage d'écran de <ph name="APP_NAME" /></translation>
 <translation id="368789413795732264">Il s'est produit une erreur lors de la tentative d'écriture du fichier : <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Accéder en écriture aux fichiers et aux dossiers ouverts dans l'application</translation>
@@ -2068,6 +2081,7 @@
 <translation id="389589731200570180">Partager avec des invités</translation>
 <translation id="389901847090970821">Sélectionner un clavier</translation>
 <translation id="3899879303189199559">Hors ligne depuis plus d'un an</translation>
+<translation id="3900789207771372462">Certaines extensions peuvent accéder à votre activité de navigation, ce qui peut inclure vos renseignements personnels.</translation>
 <translation id="3900966090527141178">Exporter les mots de passe</translation>
 <translation id="3901991538546252627">Connexion à <ph name="NAME" /> en cours...</translation>
 <translation id="3905761538810670789">Réparer l'application</translation>
@@ -2158,7 +2172,6 @@
 <translation id="4013132157686828973">« <ph name="CLIENT_NAME" /> » débogue actuellement ce navigateur</translation>
 <translation id="4014432863917027322">Réparer « <ph name="EXTENSION_NAME" /> »?</translation>
 <translation id="4015163439792426608">Vous avez des extensions? <ph name="BEGIN_LINK" />Gérez vos extensions<ph name="END_LINK" /> à un seul et même endroit.</translation>
-<translation id="4020106588733303597">Oups! Le système n'a pas pu charger les licences disponibles.</translation>
 <translation id="4020327272915390518">Menu Options</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Ajouter au dictionnaire</translation>
@@ -2196,6 +2209,7 @@
 <translation id="407520071244661467">Redimensionner</translation>
 <translation id="4075639477629295004">Impossible de diffuser <ph name="FILE_NAME" />.</translation>
 <translation id="4077917118009885966">Annonces bloquées sur ce site</translation>
+<translation id="4077919383365622693">Toutes les données et tous les témoins stockés par <ph name="SITE" /> seront supprimés.</translation>
 <translation id="4079140982534148664">Utiliser le correcteur orthographique amélioré</translation>
 <translation id="4081242589061676262">Impossible de diffuser le fichier.</translation>
 <translation id="4084682180776658562">Favoris</translation>
@@ -2270,6 +2284,7 @@
 <translation id="4181841719683918333">Langues</translation>
 <translation id="4184885522552335684">Faites glisser pour déplacer un affichage</translation>
 <translation id="4194570336751258953">Activer la fonction « Toucher l'écran pour cliquer »</translation>
+<translation id="4194595472342532425">Impossible de configurer Plugin VM en raison d'une erreur de configuration. Veuillez communiquer avec l'administrateur des appareils de votre organisation. Code d'erreur : <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Ouvrir dans un nouvel onglet</translation>
 <translation id="4195814663415092787">Reprendre vos activités en ligne là où vous vous étiez arrêté</translation>
 <translation id="4198146608511578238">Il vous suffit de maintenir le doigt sur l'icône du Lanceur d'applications pour parler à votre Assistant Google.</translation>
@@ -2493,6 +2508,7 @@
 <translation id="4549791035683739768">Votre clé de sécurité ne contient aucune empreinte digitale enregistrée</translation>
 <translation id="4551763574344810652">Appuyez sur <ph name="MODIFIER_KEY_DESCRIPTION" /> pour annuler l'action</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005">Réseau : <ph name="NETWORK_TYPE" />; intensité du signal : <ph name="SIGNAL_STRENGTH" /> %</translation>
 <translation id="4554591392113183336">La version d'extension externe est égale ou inférieure à celle existante.</translation>
 <translation id="4555769855065597957">Ombre</translation>
 <translation id="4555863373929230635">Pour enregistrer des mots de passe dans votre compte Google, connectez-vous et activez la synchronisation.</translation>
@@ -2570,6 +2586,7 @@
 <translation id="4665446389743427678">Toutes les données stockées par <ph name="SITE" /> seront supprimées.</translation>
 <translation id="4668721319092543482">Cliquez pour activer le plugiciel <ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">Convertir la page</translation>
+<translation id="46733273239502219">Les données hors ligne dans les applications installées seront également effacées</translation>
 <translation id="4673442866648850031">Ouvrir les outils de stylet lorsque le stylet est retiré</translation>
 <translation id="4677585247300749148">L'URL <ph name="URL" /> veut répondre aux événements d'accessibilité</translation>
 <translation id="4677772697204437347">Mémoire du processeur graphique</translation>
@@ -2661,7 +2678,6 @@
 <translation id="4823484602432206655">Lire et modifier les paramètres de l’utilisateur et de l'appareil</translation>
 <translation id="4824958205181053313">Annuler la synchronisation?</translation>
 <translation id="4827675678516992122">Impossible de se connecter</translation>
-<translation id="4828937774870308359">Australien</translation>
 <translation id="4829768588131278040">Configurer un NIP</translation>
 <translation id="4830502475412647084">Installation d'une mise à jour du système d'exploitation en cours…</translation>
 <translation id="4830573902900904548">Votre <ph name="DEVICE_TYPE" /> ne parvient pas à se connecter à Internet en utilisant <ph name="NETWORK_NAME" />. Veuillez choisir un autre réseau. <ph name="LEARN_MORE_LINK_START" />En savoir plus<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2702,6 +2718,7 @@
 <translation id="4876273079589074638">Aidez nos ingénieurs à enquêter sur ce plantage et à le corriger. Indiquez les étapes exactes, si vous le pouvez. Tous les détails comptent!</translation>
 <translation id="4876895919560854374">Verrouiller et déverrouiller l'écran</translation>
 <translation id="4877276003880815204">Inspecter des éléments</translation>
+<translation id="4878653975845355462">Les arrière-plans personnalisés ont été désactivés par votre administrateur</translation>
 <translation id="4879491255372875719">Automatique (par défaut)</translation>
 <translation id="4880328057631981605">Nom du point d'accès</translation>
 <translation id="4880827082731008257">Rechercher dans l'historique</translation>
@@ -2757,10 +2774,10 @@
 <translation id="4943691134276646401">« <ph name="CHROME_EXTENSION_NAME" /> » veut se connecter à un port de série</translation>
 <translation id="4944310289250773232">Ce service d'authentification est hébergé par <ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">Actions</translation>
+<translation id="4952981627953231344">L'utilisation de Plugin VM n'est pas permise sur cet appareil. Communiquez avec l'administrateur des appareils de votre organisation</translation>
 <translation id="4953689047182316270">Répondre aux événements d'accessibilité</translation>
 <translation id="4953808748584563296">Avatar orange par défaut</translation>
 <translation id="4955710816792587366">Choisir votre NIP</translation>
-<translation id="4955814292505481804">Annuelle</translation>
 <translation id="4959262764292427323">Les mots de passe sont enregistrés dans votre compte Google afin que vous puissiez les utiliser sur n'importe quel appareil</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Cette application a été installée par votre administrateur.</translation>
@@ -3242,7 +3259,6 @@
 <translation id="5659593005791499971">Courriel</translation>
 <translation id="5659833766619490117">Impossible de traduire cette page</translation>
 <translation id="5660204307954428567">Associer avec <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Perpétuelle</translation>
 <translation id="5667546120811588575">Configuration de Google Play en cours…</translation>
 <translation id="5669267381087807207">Activation en cours…</translation>
 <translation id="5669691691057771421">Entrez le nouveau NIP</translation>
@@ -3258,6 +3274,7 @@
 <translation id="5687326903064479980">Fuseau horaire</translation>
 <translation id="5689516760719285838">Lieu</translation>
 <translation id="56907980372820799">Associer les données</translation>
+<translation id="5691180005790455277">Toutes les données et tous les témoins stockés par <ph name="SITE_GROUP_NAME" /> et les sites qui lui sont subordonnés seront supprimés.</translation>
 <translation id="5691511426247308406">Famille</translation>
 <translation id="5692183275898619210">Impression terminée</translation>
 <translation id="5696143504434933566">Signaler un abus de « <ph name="EXTENSION_NAME" /> »</translation>
@@ -3344,7 +3361,6 @@
 <translation id="5815645614496570556">Adresse X.400</translation>
 <translation id="5816434091619127343">Les modifications d'imprimante demandées risquent de rendre l'imprimante inutilisable.</translation>
 <translation id="5817918615728894473">Associer</translation>
-<translation id="5819762621475381970">- La disposition de votre pièce</translation>
 <translation id="5821565227679781414">Créer un raccourci</translation>
 <translation id="5825412242012995131">Activé (recommandé)</translation>
 <translation id="5826395379250998812">Connectez votre <ph name="DEVICE_TYPE" /> à votre téléphone. <ph name="LINK_BEGIN" />En savoir plus<ph name="LINK_END" /></translation>
@@ -3480,6 +3496,7 @@
 <translation id="6007240208646052708">La recherche vocale n'est pas offerte dans votre langue.</translation>
 <translation id="6009781704028455063">Capteur intégré</translation>
 <translation id="6010869025736512584">Accès à l'entrée vidéo en cours</translation>
+<translation id="6011074160056912900">Réseau Ethernet</translation>
 <translation id="6011193465932186973">Empreinte digitale</translation>
 <translation id="6011449291337289699">Effacer les données du site</translation>
 <translation id="6015266928248016057">Clé PUK incorrecte. Tentatives restantes : <ph name="RETRIES" />.</translation>
@@ -3516,6 +3533,7 @@
 <translation id="6053401458108962351">&amp;Effacer les données de navigation…</translation>
 <translation id="6055171183283175969">Le mot de passe saisi est non valide.</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 avec chiffrement RSA</translation>
+<translation id="6055907707645252013">Réseau <ph name="NETWORK_TYPE" /> : non connecté</translation>
 <translation id="6056710589053485679">Actualisation normale</translation>
 <translation id="6057381398996433816">L'utilisation de capteurs de mouvement et de luminosité a été bloquée pour ce site.</translation>
 <translation id="6058567592298841668">Plugiciel de machine virtuelle : <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3579,6 +3597,7 @@
 <translation id="6136114942382973861">Fermer la barre des téléchargements</translation>
 <translation id="6137767437444130246">Certificat utilisateur</translation>
 <translation id="6138680304137685902">Signature X9.62 ECDSA avec SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, aucun réseau</translation>
 <translation id="6141988275892716286">Confirmer le téléchargement</translation>
 <translation id="6143186082490678276">Obtenir de l'aide</translation>
 <translation id="6144938890088808325">Aidez-nous à améliorer les Chromebook</translation>
@@ -3885,6 +3904,7 @@
 <translation id="6602956230557165253">Utilisez les touches fléchées gauche et droite pour naviguer.</translation>
 <translation id="6605847144724004692">Pas encore évaluée par les utilisateurs.</translation>
 <translation id="6607831829715835317">Autres outi&amp;ls</translation>
+<translation id="6611972847767394631">Retrouvez vos onglets ici</translation>
 <translation id="6612358246767739896">Contenu protégé</translation>
 <translation id="6615455863669487791">Démonstration</translation>
 <translation id="6618097958368085618">Conserver quand même</translation>
@@ -3953,6 +3973,7 @@
 <translation id="6709133671862442373">Actualités</translation>
 <translation id="6709357832553498500">Se connecter à l'aide de <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Précédent</translation>
+<translation id="6715803357256707211">Une erreur s'est produite lors de l'installation de votre application Linux. Cliquez sur la notification pour en savoir plus.</translation>
 <translation id="6721678857435001674">Voir la marque et le modèle de votre clé de sécurité</translation>
 <translation id="6721972322305477112">&amp;Fichier</translation>
 <translation id="672213144943476270">Veuillez déverrouiller votre profil avant de naviguer en tant qu'invité.</translation>
@@ -3977,7 +3998,6 @@
 <translation id="674632704103926902">Activer le déplacement tactile</translation>
 <translation id="6748217015615267851">Moteur de rendu : <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Vous pouvez continuer, mais seuls vos données et paramètres synchronisés seront restaurés. Toutes les données locales seront perdues.</translation>
-<translation id="6748775883310276718">Kiosque à application unique</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Navigation privée)</translation>
 <translation id="6757101664402245801">URL copiée</translation>
 <translation id="6758056191028427665">Donnez-nous votre avis sur nos services.</translation>
@@ -3987,6 +4007,7 @@
 <translation id="6769712124046837540">Ajout d'une imprimante en cours…</translation>
 <translation id="6770664076092644100">Vérifier par l'intermédiaire de la technologie NFC</translation>
 <translation id="6771503742377376720">Est une autorité de certification</translation>
+<translation id="6772339735733515807">Gérer vos extensions</translation>
 <translation id="6775163072363532304">Les appareils accessibles s'afficheront ici.</translation>
 <translation id="6777817260680419853">Redirection bloquée</translation>
 <translation id="6778737459546443941">L'un de tes parents n'a pas encore donné son autorisation</translation>
@@ -4125,6 +4146,7 @@
 <translation id="6972180789171089114">Audio/Vidéo</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> ne peut pas ouvrir les fichiers dans ce dossier, parce qu'il contient des fichiers système</translation>
 <translation id="6972754398087986839">Démarrer</translation>
+<translation id="6973611239564315524">Une mise à jour de Debian 10 (Buster) est offerte</translation>
 <translation id="6974609594866392343">Mode de démonstration hors connexion</translation>
 <translation id="6977381486153291903">Version du micrologiciel</translation>
 <translation id="6978121630131642226">Moteurs de recherche</translation>
@@ -4584,6 +4606,7 @@
 <translation id="7644543211198159466">Couleur et thème</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (propriétaire)</translation>
 <translation id="7645681574855902035">Annulation de la sauvegarde Linux en cours…</translation>
+<translation id="7646772052135772216">La synchronisation des mots de passe ne fonctionne pas</translation>
 <translation id="7647403192093989392">Aucune activité récente</translation>
 <translation id="7648992873808071793">Enregistrer des fichiers sur cet appareil</translation>
 <translation id="7649070708921625228">Aide</translation>
@@ -4772,6 +4795,7 @@
 <translation id="7877451762676714207">Erreur inconnue du serveur. Veuillez essayer de nouveau ou communiquer avec l'administrateur du serveur.</translation>
 <translation id="7877680364634660272">Visite guidée</translation>
 <translation id="7878562273885520351">Votre mot de passe a peut-être été compromis</translation>
+<translation id="7879631849810108578">Raccourci clavier configuré : <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Les données locales seront supprimées lorsque vous redémarrez l'appareil</translation>
 <translation id="7881483672146086348">Afficher le compte</translation>
 <translation id="7882358943899516840">Type de fournisseur</translation>
@@ -4858,6 +4882,7 @@
 <translation id="7987814697832569482">Toujours se connecter au moyen de ce RPV</translation>
 <translation id="7988355189918024273">Activer les fonctionnalités d'accessibilité</translation>
 <translation id="7991296728590311172">Paramètres de Switch Access</translation>
+<translation id="7994350303002908848">Impossible d'installer Plugin VM. Veuillez essayer de nouveau, ou communiquer avec l'administrateur des appareils de votre organisation. Code d'erreur : <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">Méthode EAP</translation>
 <translation id="7997826902155442747">Priorité de processus</translation>
 <translation id="7999229196265990314">Les fichiers suivants ont été créés :
@@ -4949,7 +4974,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Aucun témoin tiers}=1{1 témoin tiers est bloqué}one{# témoin tiers est bloqué}other{# témoins tiers sont bloqués}}</translation>
 <translation id="810875025413331850">Aucun appareil à proximité n'a été détecté.</translation>
 <translation id="8111155949205007504">Partagez ce mot de passe avec votre iPhone</translation>
-<translation id="8113043281354018522">Sélectionnez le type de licence</translation>
 <translation id="8114875720387900039">Séparation horizontale</translation>
 <translation id="8116972784401310538">&amp;Gestionnaire de favoris</translation>
 <translation id="8117620576188476503">Gérez les connexions, les mises à jour et les paramètres avec la barre d'état. Pour y accéder à l'aide du clavier, appuyez sur Alt + Maj + S.</translation>
@@ -5106,6 +5130,7 @@
 <translation id="8327039559959785305">Erreur lors du montage des fichiers Linux. Veuillez réessayer.</translation>
 <translation id="8335587457941836791">Retirer de l'étagère</translation>
 <translation id="8336407002559723354">Les mises à jour cesseront en <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Redémarrer l'appareil pour que le texte du système soit en <ph name="LANGUAGE" /></translation>
 <translation id="8336739000755212683">Changer l'image du compte sur l'appareil</translation>
 <translation id="8337047789441383384">Vous avez déjà enregistré cette clé de sécurité. Vous n'avez pas à l'enregistrer de nouveau.</translation>
 <translation id="8338952601723052325">Site Web du développeur</translation>
@@ -5149,6 +5174,7 @@
 <translation id="8400146488506985033">Gérer les personnes</translation>
 <translation id="8401432541486058167">Entrez le NIP associé à votre carte à puce.</translation>
 <translation id="8405046151008197676">Consultez les faits saillants de la dernière mise à jour</translation>
+<translation id="8408068190360279472">Réseau : <ph name="NETWORK_TYPE" />. Connexion en cours…</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Demander d'abord (recommandé)</translation>
 <translation id="8418445294933751433">Afficher dan&amp;s un onglet</translation>
@@ -5438,6 +5464,7 @@
 <translation id="8807632654848257479">Stable</translation>
 <translation id="8808478386290700967">Boutique en ligne Chrome</translation>
 <translation id="8808686172382650546">Chat</translation>
+<translation id="8808744862003883508">Vous pouvez voir dans cette page toutes les extensions installées dans Chrome.</translation>
 <translation id="8809147117840417135">Turquoise clair</translation>
 <translation id="8813698869395535039">Impossible de connecter <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">feuille de papier</translation>
@@ -5665,7 +5692,6 @@
 <translation id="9121814364785106365">Ouvrir dans un onglet épinglé</translation>
 <translation id="9122176249172999202">L'application <ph name="IDS_SHORT_PRODUCT_NAME" /> est interrompue</translation>
 <translation id="9124003689441359348">Les mots de passe enregistrés s'afficheront ici</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> restantes)</translation>
 <translation id="9128317794749765148">Impossible de terminer la configuration</translation>
 <translation id="9128870381267983090">Connexion au réseau</translation>
 <translation id="9130015405878219958">Le mode indiqué est incorrect.</translation>
@@ -5704,6 +5730,7 @@
 <translation id="9188732951356337132">Envoyer les données d'utilisation et de diagnostic. Actuellement, cet appareil envoie automatiquement à Google des données de diagnostic, de l'appareil et d'utilisation des applications. L'envoi de ces données ne sera pas utilisé pour identifier votre enfant, mais pour assurer la stabilité du système et des applications, et pour apporter d'autres améliorations. Certaines données collectées contribueront également à améliorer les applications Google et aideront nos partenaires, comme les concepteurs Android. Si le paramètre relatif aux autres activités sur le Web et dans les applications est activé pour votre enfant, ces données peuvent être enregistrées dans son compte Google. <ph name="BEGIN_LINK2" />En savoir plus<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPSec + clé prépartagée</translation>
 <translation id="920045321358709304">Rechercher <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">Toutes les données hors ligne seront effacées</translation>
 <translation id="9201220332032049474">Options de verrouillage de l'écran</translation>
 <translation id="9203398526606335860">&amp;Profilage activé</translation>
 <translation id="9203904171912129171">Sélectionner un appareil</translation>
@@ -5716,6 +5743,7 @@
 <translation id="9220525904950070496">Supprimer le compte</translation>
 <translation id="9220820413868316583">Levez le doigt, puis réessayez.</translation>
 <translation id="923467487918828349">Tout afficher</translation>
+<translation id="929117907539171075">Les données hors ligne dans l'application installée seront également effacées</translation>
 <translation id="930268624053534560">Horodatage détaillé</translation>
 <translation id="932327136139879170">Accueil</translation>
 <translation id="932508678520956232">Impossible de lancer l'impression.</translation>
@@ -5741,6 +5769,7 @@
 <translation id="960719561871045870">Code de l'opérateur</translation>
 <translation id="960987915827980018">Il reste environ 1 heure</translation>
 <translation id="962802172452141067">Arborescence des dossiers de favoris</translation>
+<translation id="964057662886721376">Certaines extensions peuvent ralentir Chrome, surtout celles que vous n'aviez pas l'intention d'installer.</translation>
 <translation id="964286338916298286">Votre administrateur informatique a désactivé les bonus Chrome pour votre appareil.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Application}one{Application}other{Applications}}</translation>
 <translation id="965211523698323809">Envoyez et recevez des messages texte à partir de votre <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />En savoir plus<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_fr.xtb b/chrome/app/resources/generated_resources_fr.xtb
index 88788f2..7a006a4 100644
--- a/chrome/app/resources/generated_resources_fr.xtb
+++ b/chrome/app/resources/generated_resources_fr.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Personnalisé</translation>
 <translation id="1178581264944972037">Suspendre</translation>
 <translation id="117916940443676133">Votre clé de sécurité n'est pas protégée par un code. Pour gérer vos données de connexion, commencez par créer un code.</translation>
-<translation id="118069123878619799">- vos caractéristiques physiques, telles que votre taille ;</translation>
 <translation id="1181037720776840403">Supprimer</translation>
 <translation id="1183237619868651138">Impossible d'installer le fichier <ph name="EXTERNAL_CRX_FILE" /> dans le cache local.</translation>
 <translation id="1185924365081634987">Vous pouvez également essayer de <ph name="GUEST_SIGNIN_LINK_START" />naviguer en tant qu'invité<ph name="GUEST_SIGNIN_LINK_END" /> pour corriger cette erreur réseau.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">En attente de <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> autres périphériques disponibles</translation>
 <translation id="1495677929897281669">Retour à l'onglet</translation>
+<translation id="1499271269825557605">Si vous ne reconnaissez pas une extension ou si votre navigateur ne fonctionne pas comme prévu, vous pouvez désactiver ou personnaliser les extensions sur cette page.</translation>
 <translation id="1500297251995790841">Appareil inconnu [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Ce compte de propriétaire doit être le premier compte à être connecté lors de sessions de connexion multicompte.</translation>
 <translation id="150411034776756821">Supprimer <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">L'accès à votre caméra est bloqué pour cette page</translation>
 <translation id="1507246803636407672">&amp;Supprimer</translation>
 <translation id="1508491105858779599">Placez votre doigt sur le lecteur d'empreinte digitale pour déverrouiller l'appareil.</translation>
+<translation id="1508575541972276599">Version actuelle : Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">Accéder à n'importe quel appareil <ph name="DEVICE_NAME_AND_VENDOR" /> via USB</translation>
 <translation id="150962533380566081">Clé PUK incorrecte.</translation>
 <translation id="1510030919967934016">Le suivi de votre position géographique a été bloqué pour cette page.</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">Appliquer</translation>
 <translation id="1603914832182249871">(Navigation privée)</translation>
 <translation id="1604432177629086300">Impression impossible. Veuillez vérifier l'imprimante et réessayer.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" /> : la synchronisation du mot de passe ne fonctionne pas</translation>
 <translation id="1607139524282324606">Effacer l'entrée</translation>
 <translation id="1608626060424371292">Supprimer cet utilisateur</translation>
 <translation id="1608668830839595724">Autres actions pour les éléments sélectionnés</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">Données d'application hébergée</translation>
 <translation id="1776712937009046120">Ajouter un utilisateur</translation>
 <translation id="1776883657531386793"><ph name="OID" /> : <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Cet appareil est géré par <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    Veuillez cliquer sur "Suivant" pour poursuivre la connexion à votre compte <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation>
 <translation id="1779652936965200207">Saisissez cette clé d'accès sur "<ph name="DEVICE_NAME" />" :</translation>
 <translation id="1780152987505130652">Fermer le groupe</translation>
 <translation id="1781291988450150470">Code actuel</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">Action non disponible</translation>
 <translation id="2050339315714019657">Portrait</translation>
 <translation id="2053312383184521053">Données sur l'état de veille</translation>
+<translation id="2055585478631012616">Vous allez être déconnecté de ces sites, onglets ouverts inclus</translation>
 <translation id="205560151218727633">Logo de l'Assistant Google</translation>
 <translation id="2058456167109518507">Appareil détecté</translation>
 <translation id="2059913712424898428">Fuseau horaire</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">Annuler</translation>
 <translation id="2080070583977670716">Plus de paramètres</translation>
 <translation id="2087822576218954668">Imprimer : <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">Réseau VPN</translation>
 <translation id="2089566709556890888">Naviguez en toute sécurité avec Google Chrome</translation>
 <translation id="2089795179672254991">Me demander lorsqu'un site souhaite voir le texte et les images copiés dans le presse-papiers (recommandé)</translation>
 <translation id="2090165459409185032">Pour récupérer les informations de votre compte, consultez la page google.com/accounts/recovery.</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">Un site accède à vos entrées audio et vidéo</translation>
 <translation id="2379281330731083556">Imprimer via la boîte de dialogue du système... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Demander l'autorisation avant d'envoyer (recommandé)</translation>
+<translation id="2382818385048255866">Vérifiez vos extensions</translation>
 <translation id="2384436799579181135">Une erreur s'est produite. Veuillez vérifier l'imprimante, puis réessayer.</translation>
 <translation id="2387458720915042159">Type de connexion proxy</translation>
 <translation id="2391419135980381625">Police standard</translation>
@@ -1036,6 +1043,7 @@
 <translation id="2462724976360937186">ID de clé de l'autorité de certification</translation>
 <translation id="2462752602710430187">L'imprimante <ph name="PRINTER_NAME" /> a bien été ajoutée.</translation>
 <translation id="2464089476039395325">Proxy HTTP</translation>
+<translation id="2467267713099745100">Réseau <ph name="NETWORK_TYPE" /> désactivé</translation>
 <translation id="2468205691404969808">Utilise des cookies pour mémoriser vos préférences, même si vous n'accédez pas à ces pages</translation>
 <translation id="2468402215065996499">Tamagotchi</translation>
 <translation id="2469259292033957819">Vous n'avez aucune imprimante enregistrée.</translation>
@@ -1290,6 +1298,7 @@
 <translation id="2800760947029405028">Importer une image</translation>
 <translation id="2803375539583399270">Saisir le code</translation>
 <translation id="2804043232879091219">Impossible d'ouvrir le navigateur secondaire</translation>
+<translation id="2804667941345577550">Vous allez être déconnecté de ce site, onglets ouverts inclus</translation>
 <translation id="2804680522274557040">Caméra désactivée</translation>
 <translation id="2805646850212350655">Système de fichiers de chiffrement Microsoft </translation>
 <translation id="2805756323405976993">Applications</translation>
@@ -1297,6 +1306,7 @@
 <translation id="2806891468525657116">Le raccourci existe déjà</translation>
 <translation id="2807517655263062534">Les fichiers téléchargés s'affichent ici</translation>
 <translation id="2809586584051668049">ainsi que <ph name="NUMBER_ADDITIONAL_DISABLED" /> autre(s) extension(s)</translation>
+<translation id="2810390687497823527">Si vous ne reconnaissez pas une extension ou si votre navigateur ne fonctionne pas comme prévu, vous pouvez désactiver ou personnaliser les extensions ici.</translation>
 <translation id="2812049959647166806">Le format Thunderbolt n'est pas compatible</translation>
 <translation id="2812944337881233323">Essayez de vous déconnecter, puis de vous reconnecter</translation>
 <translation id="2812989263793994277">Ne pas afficher les images</translation>
@@ -1336,6 +1346,7 @@
 <translation id="2861941300086904918">Gestionnaire de sécurité Native Client</translation>
 <translation id="2864601841139725659">Définir votre photo de profil</translation>
 <translation id="2865919525181940183">Captures d'écran des programmes actuellement à l'écran</translation>
+<translation id="286674810810214575">Vérification des sources d'alimentation…</translation>
 <translation id="2867768963760577682">Ouvrir dans un onglet épinglé</translation>
 <translation id="2868746137289129307">Cette extension est obsolète et désactivée par une stratégie d'entreprise. Il se peut qu'elle soit activée automatiquement lors de la publication d'une version plus récente.</translation>
 <translation id="2870560284913253234">Site</translation>
@@ -1413,6 +1424,7 @@
 <translation id="2972581237482394796">&amp;Rétablir</translation>
 <translation id="2973324205039581528">Couper le son du site</translation>
 <translation id="2977480621796371840">Retirer du groupe</translation>
+<translation id="2979520980928493164">Améliorez les performances de Chrome</translation>
 <translation id="2979639724566107830">Ouvrir dans une nouvelle fenêtre</translation>
 <translation id="2981113813906970160">Afficher le grand curseur</translation>
 <translation id="2982970937345031">Signaler de manière anonyme</translation>
@@ -1519,6 +1531,7 @@
 <translation id="3143515551205905069">Annuler la synchronisation</translation>
 <translation id="3143754809889689516">Lire depuis le début</translation>
 <translation id="3144647712221361880">Ouvrir le lien avec le compte</translation>
+<translation id="3145187901750964977">Impossible d'installer la machine virtuelle. Veuillez réessayer ou contacter l'administrateur des appareils de votre organisation. Code d'erreur : <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Version :
     <ph name="LINUX_VERSION" />
 
@@ -1557,6 +1570,7 @@
 <translation id="3192947282887913208">Fichiers audio</translation>
 <translation id="3194737229810486521"><ph name="URL" /> souhaite stocker des données de façon permanente sur votre appareil</translation>
 <translation id="3199127022143353223">Serveurs</translation>
+<translation id="3201306578844503970">Impossible d'installer la machine virtuelle en raison d'une erreur réseau. Veuillez réessayer ou contacter l'administrateur des appareils de votre organisation. Code d'erreur : <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Les périphériques USB disponibles s'afficheront ici.</translation>
 <translation id="3202131003361292969">Chemin d'accès</translation>
 <translation id="3202173864863109533">Le son de cet onglet est désactivé</translation>
@@ -1893,7 +1907,6 @@
 <translation id="3678156199662914018">Extension : <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Merci de vos commentaires. Vous êtes hors connexion pour le moment, et votre rapport sera envoyé plus tard.</translation>
 <translation id="3682824389861648626">Seuil de mouvement</translation>
-<translation id="3683023058278427253">Nous avons détecté plusieurs types de licences pour votre domaine. Veuillez en sélectionner un pour continuer.</translation>
 <translation id="3683524264665795342">Partage de l'écran demandé par <ph name="APP_NAME" /></translation>
 <translation id="368789413795732264">Une erreur s'est produite lors de la tentative d'écriture du fichier : <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Accéder en écriture aux fichiers et aux dossiers ouverts dans l'application</translation>
@@ -2067,6 +2080,7 @@
 <translation id="389589731200570180">Partager avec des invités</translation>
 <translation id="389901847090970821">Sélectionner un clavier</translation>
 <translation id="3899879303189199559">Hors connexion pendant plus d'un an</translation>
+<translation id="3900789207771372462">Certaines extensions peuvent consulter votre activité de navigation, y compris les informations personnelles.</translation>
 <translation id="3900966090527141178">Exporter des mots de passe</translation>
 <translation id="3901991538546252627">Connexion à <ph name="NAME" /> en cours…</translation>
 <translation id="3905761538810670789">Réparer l'application</translation>
@@ -2157,7 +2171,6 @@
 <translation id="4013132157686828973">Le débogage de ce navigateur est actuellement effectué par <ph name="CLIENT_NAME" /></translation>
 <translation id="4014432863917027322">Réparer "<ph name="EXTENSION_NAME" />" ?</translation>
 <translation id="4015163439792426608">Vous avez des extensions ? <ph name="BEGIN_LINK" />Gérez-les<ph name="END_LINK" /> facilement depuis une seule et même interface.</translation>
-<translation id="4020106588733303597">Petit problème… Échec du chargement des licences disponibles par le système.</translation>
 <translation id="4020327272915390518">Menu Options</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Ajouter au dictionnaire</translation>
@@ -2195,6 +2208,7 @@
 <translation id="407520071244661467">Mise à l'échelle</translation>
 <translation id="4075639477629295004">Impossible de caster "<ph name="FILE_NAME" />"</translation>
 <translation id="4077917118009885966">Annonces bloquées sur ce site</translation>
+<translation id="4077919383365622693">Tous les cookies et données stockés par <ph name="SITE" /> seront effacés.</translation>
 <translation id="4079140982534148664">Utiliser le correcteur orthographique amélioré</translation>
 <translation id="4081242589061676262">Impossible de caster le fichier.</translation>
 <translation id="4084682180776658562">Favori</translation>
@@ -2269,6 +2283,7 @@
 <translation id="4181841719683918333">Langues</translation>
 <translation id="4184885522552335684">Faites glisser un affichage pour le déplacer</translation>
 <translation id="4194570336751258953">Activer la fonction "Taper pour cliquer"</translation>
+<translation id="4194595472342532425">Impossible d'installer Plugin VM en raison d'un problème de configuration. Veuillez contacter l'administrateur des appareils de votre organisation. Code d'erreur : <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Ouvrir dans un nouvel onglet</translation>
 <translation id="4195814663415092787">Reprendre où vous avez arrêté</translation>
 <translation id="4198146608511578238">Appuyez de manière prolongée sur l'icône du lanceur d'applications pour parler à l'Assistant Google.</translation>
@@ -2492,6 +2507,7 @@
 <translation id="4549791035683739768">Aucune empreinte digitale n'est stockée dans votre clé de sécurité</translation>
 <translation id="4551763574344810652">Appuyez sur <ph name="MODIFIER_KEY_DESCRIPTION" /> pour annuler</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005">Réseau <ph name="NETWORK_TYPE" />, force du signal : <ph name="SIGNAL_STRENGTH" /> %</translation>
 <translation id="4554591392113183336">La version d'extension externe est identique ou antérieure à la version existante.</translation>
 <translation id="4555769855065597957">Duplicata</translation>
 <translation id="4555863373929230635">Pour enregistrer vos mots de passe dans votre compte Google, connectez-vous et activez la synchronisation.</translation>
@@ -2569,6 +2585,7 @@
 <translation id="4665446389743427678">Toutes les données stockées par <ph name="SITE" /> seront supprimées.</translation>
 <translation id="4668721319092543482">Cliquez pour activer <ph name="PLUGIN_NAME" />.</translation>
 <translation id="4672657274720418656">Convertir la page</translation>
+<translation id="46733273239502219">Les données hors connexion des applications installées seront également effacées</translation>
 <translation id="4673442866648850031">Ouvrir les outils de stylet lors du retrait du stylet</translation>
 <translation id="4677585247300749148"><ph name="URL" /> souhaite répondre aux événements d'accessibilité</translation>
 <translation id="4677772697204437347">Mémoire du processeur graphique</translation>
@@ -2660,7 +2677,6 @@
 <translation id="4823484602432206655">Consulter et modifier les paramètres d'utilisateur et d'appareil</translation>
 <translation id="4824958205181053313">Annuler la synchronisation ?</translation>
 <translation id="4827675678516992122">Impossible de se connecter</translation>
-<translation id="4828937774870308359">Australien</translation>
 <translation id="4829768588131278040">Configurer un code</translation>
 <translation id="4830502475412647084">Installation de la mise à jour du système d'exploitation</translation>
 <translation id="4830573902900904548">Votre <ph name="DEVICE_TYPE" /> ne parvient pas à se connecter à Internet via le réseau <ph name="NETWORK_NAME" />. Veuillez sélectionner un autre réseau. <ph name="LEARN_MORE_LINK_START" />En savoir plus<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2701,6 +2717,7 @@
 <translation id="4876273079589074638">Aidez nos ingénieurs à trouver l'origine de ce plantage pour y apporter une solution. Dans la mesure du possible, indiquez précisément les étapes suivies. Chaque détail compte.</translation>
 <translation id="4876895919560854374">Verrouiller et déverrouiller l'écran</translation>
 <translation id="4877276003880815204">Examiner les éléments</translation>
+<translation id="4878653975845355462">Votre administrateur a désactivé les arrière-plans personnalisés</translation>
 <translation id="4879491255372875719">Automatique (par défaut)</translation>
 <translation id="4880328057631981605">Nom du point d'accès</translation>
 <translation id="4880827082731008257">Rechercher dans l'historique</translation>
@@ -2756,10 +2773,10 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" tente de se connecter à un port de série</translation>
 <translation id="4944310289250773232">Ce service d'authentification est hébergé par <ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">Actions</translation>
+<translation id="4952981627953231344">Plugin VM n'est pas autorisé sur cet appareil. Veuillez contacter l'administrateur des appareils de votre organisation.</translation>
 <translation id="4953689047182316270">Répondre aux événements d'accessibilité</translation>
 <translation id="4953808748584563296">Avatar orange par défaut</translation>
 <translation id="4955710816792587366">Sélectionner un code</translation>
-<translation id="4955814292505481804">Annuelle</translation>
 <translation id="4959262764292427323">Les mots de passe sont enregistrés dans votre compte Google, afin que vous puissiez les utiliser sur tous vos appareils</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Cette application a été installée par votre administrateur.</translation>
@@ -3242,7 +3259,6 @@
 <translation id="5659593005791499971">E-mail</translation>
 <translation id="5659833766619490117">Impossible de traduire cette page</translation>
 <translation id="5660204307954428567">Associer à <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Perpétuelle</translation>
 <translation id="5667546120811588575">Configuration de Google Play…</translation>
 <translation id="5669267381087807207">Activation</translation>
 <translation id="5669691691057771421">Saisir le nouveau code</translation>
@@ -3258,6 +3274,7 @@
 <translation id="5687326903064479980">Fuseau horaire</translation>
 <translation id="5689516760719285838">Position</translation>
 <translation id="56907980372820799">Associer les données</translation>
+<translation id="5691180005790455277">Tous les cookies et données stockés par <ph name="SITE_GROUP_NAME" /> et les sites lui appartenant seront effacés.</translation>
 <translation id="5691511426247308406">Famille</translation>
 <translation id="5692183275898619210">Impression terminée</translation>
 <translation id="5696143504434933566">Signaler un abus lié à l'extension <ph name="EXTENSION_NAME" /></translation>
@@ -3344,7 +3361,6 @@
 <translation id="5815645614496570556">Adresse X.400</translation>
 <translation id="5816434091619127343">Les modifications demandées concernant l'imprimante risquent de rendre celle-ci inutilisable.</translation>
 <translation id="5817918615728894473">Associer</translation>
-<translation id="5819762621475381970">- la disposition de la pièce.</translation>
 <translation id="5821565227679781414">Créer un raccourci</translation>
 <translation id="5825412242012995131">Activé (recommandé)</translation>
 <translation id="5826395379250998812">Connectez votre <ph name="DEVICE_TYPE" /> à votre téléphone. <ph name="LINK_BEGIN" />En savoir plus<ph name="LINK_END" /></translation>
@@ -3480,6 +3496,7 @@
 <translation id="6007240208646052708">La recherche vocale n'est pas disponible dans votre langue.</translation>
 <translation id="6009781704028455063">Capteur intégré</translation>
 <translation id="6010869025736512584">Accès à l'entrée vidéo en cours…</translation>
+<translation id="6011074160056912900">Réseau Ethernet</translation>
 <translation id="6011193465932186973">Empreinte digitale</translation>
 <translation id="6011449291337289699">Effacer les données de sites</translation>
 <translation id="6015266928248016057">Clé PUK incorrecte. Il vous reste <ph name="RETRIES" /> tentative(s).</translation>
@@ -3516,6 +3533,7 @@
 <translation id="6053401458108962351">&amp;Effacer les données de navigation…</translation>
 <translation id="6055171183283175969">Le mot de passe saisi est incorrect.</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 avec chiffrement RSA</translation>
+<translation id="6055907707645252013">Réseau <ph name="NETWORK_TYPE" />, non connecté</translation>
 <translation id="6056710589053485679">Actualisation normale</translation>
 <translation id="6057381398996433816">L'utilisation des capteurs de mouvement ou de lumière a été bloquée pour ce site.</translation>
 <translation id="6058567592298841668">Plug-in de machine virtuelle : <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3579,6 +3597,7 @@
 <translation id="6136114942382973861">Fermer la barre de téléchargements</translation>
 <translation id="6137767437444130246">Certificat utilisateur</translation>
 <translation id="6138680304137685902">Signature X9.62 ECDSA avec SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, aucun réseau détecté</translation>
 <translation id="6141988275892716286">Confirmer le téléchargement</translation>
 <translation id="6143186082490678276">Aide</translation>
 <translation id="6144938890088808325">Aidez-nous à améliorer les Chromebooks</translation>
@@ -3885,6 +3904,7 @@
 <translation id="6602956230557165253">Utilisez les touches fléchées gauche et droite pour naviguer.</translation>
 <translation id="6605847144724004692">Aucune note d'utilisateurs reçue.</translation>
 <translation id="6607831829715835317">Plus d'outi&amp;ls</translation>
+<translation id="6611972847767394631">Retrouvez vos onglets ici</translation>
 <translation id="6612358246767739896">Contenu protégé</translation>
 <translation id="6615455863669487791">Démonstration</translation>
 <translation id="6618097958368085618">Conserver quand même</translation>
@@ -3953,6 +3973,7 @@
 <translation id="6709133671862442373">Actualités</translation>
 <translation id="6709357832553498500">Se connecter avec "<ph name="EXTENSIONNAME" />"</translation>
 <translation id="6710213216561001401">Précédent</translation>
+<translation id="6715803357256707211">Une erreur s'est produite pendant l'installation de votre application Linux. Cliquez sur la notification pour obtenir des informations détaillées.</translation>
 <translation id="6721678857435001674">Voir la marque et le modèle de votre clé de sécurité</translation>
 <translation id="6721972322305477112">&amp;Fichier</translation>
 <translation id="672213144943476270">Veuillez déverrouiller votre profil avant de naviguer en tant qu'invité.</translation>
@@ -3977,7 +3998,6 @@
 <translation id="674632704103926902">Activer le déplacement tactile</translation>
 <translation id="6748217015615267851">Moteur de rendu : <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Vous pouvez continuer, mais seules les données que vous avez synchronisées seront restaurées (de même que vos paramètres). Toutes les données stockées en local seront perdues.</translation>
-<translation id="6748775883310276718">Application kiosque unique</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Navigation privée)</translation>
 <translation id="6757101664402245801">URL copiée</translation>
 <translation id="6758056191028427665">Faites-nous part de vos commentaires.</translation>
@@ -3987,6 +4007,7 @@
 <translation id="6769712124046837540">Ajout d'une imprimante en cours…</translation>
 <translation id="6770664076092644100">Valider via NFC</translation>
 <translation id="6771503742377376720">Est une autorité de certification</translation>
+<translation id="6772339735733515807">Gérez vos extensions</translation>
 <translation id="6775163072363532304">Les périphériques disponibles s'afficheront ici.</translation>
 <translation id="6777817260680419853">Redirection bloquée</translation>
 <translation id="6778737459546443941">Tes parents ne l'ont pas encore autorisé</translation>
@@ -4125,6 +4146,7 @@
 <translation id="6972180789171089114">Audio/Vidéo</translation>
 <translation id="6972553992270299730">Le site <ph name="ORIGIN" /> ne peut pas ouvrir les fichiers de ce dossier, car il contient des fichiers système</translation>
 <translation id="6972754398087986839">Démarrer</translation>
+<translation id="6973611239564315524">Une mise à niveau vers Debian 10 (Buster) est disponible</translation>
 <translation id="6974609594866392343">Mode de démonstration hors connexion</translation>
 <translation id="6977381486153291903">Version du micrologiciel</translation>
 <translation id="6978121630131642226">Moteurs de recherche</translation>
@@ -4584,6 +4606,7 @@
 <translation id="7644543211198159466">Couleur et thème</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (propriétaire)</translation>
 <translation id="7645681574855902035">Annulation de la sauvegarde Linux…</translation>
+<translation id="7646772052135772216">La synchronisation du mot de passe ne fonctionne pas</translation>
 <translation id="7647403192093989392">Aucune activité récente.</translation>
 <translation id="7648992873808071793">Stocker les fichiers sur cet appareil</translation>
 <translation id="7649070708921625228">Aide</translation>
@@ -4772,6 +4795,7 @@
 <translation id="7877451762676714207">Erreur serveur inconnue. Veuillez réessayer ou contacter l'administrateur du serveur.</translation>
 <translation id="7877680364634660272">Visite</translation>
 <translation id="7878562273885520351">Votre mot de passe a peut-être été piraté</translation>
+<translation id="7879631849810108578">Raccourci activé : <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Les données locales seront supprimées lorsque vous redémarrerez l'appareil</translation>
 <translation id="7881483672146086348">Afficher le compte</translation>
 <translation id="7882358943899516840">Type de fournisseur</translation>
@@ -4858,6 +4882,7 @@
 <translation id="7987814697832569482">Toujours se connecter via ce VPN</translation>
 <translation id="7988355189918024273">Activer les fonctionnalités d'accessibilité</translation>
 <translation id="7991296728590311172">Paramètres de Switch Access</translation>
+<translation id="7994350303002908848">Impossible d'installer Plugin VM. Veuillez réessayer ou contacter l'administrateur des appareils de votre organisation. Code d'erreur : <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">Méthode EAP</translation>
 <translation id="7997826902155442747">Priorité de traitement</translation>
 <translation id="7999229196265990314">Les fichiers suivants ont été créés :
@@ -4950,7 +4975,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Aucun cookie tiers}=1{1 cookie tiers bloqué}one{# cookie tiers bloqué}other{# cookies tiers bloqués}}</translation>
 <translation id="810875025413331850">Aucun appareil à proximité n'a été trouvé.</translation>
 <translation id="8111155949205007504">Partagez ce mot de passe avec votre iPhone</translation>
-<translation id="8113043281354018522">Sélectionner un type de licence</translation>
 <translation id="8114875720387900039">Séparation horizontale</translation>
 <translation id="8116972784401310538">&amp;Gestionnaire de favoris</translation>
 <translation id="8117620576188476503">Gérez les connexions, les mises à jour et les paramètres depuis la barre d'état. Pour y accéder depuis le clavier, appuyez sur Alt+Maj+S.</translation>
@@ -5107,6 +5131,7 @@
 <translation id="8327039559959785305">Erreur lors de l'installation des fichiers Linux. Veuillez réessayer.</translation>
 <translation id="8335587457941836791">Retirer de l'étagère</translation>
 <translation id="8336407002559723354">Fin des mises à jour en <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Redémarrer l'appareil pour afficher le texte du système en <ph name="LANGUAGE" /></translation>
 <translation id="8336739000755212683">Modifier l'image du compte sur l'appareil</translation>
 <translation id="8337047789441383384">Cette clé de sécurité est déjà enregistrée. Il n'est pas nécessaire de l'enregistrer à nouveau.</translation>
 <translation id="8338952601723052325">Site Web du développeur</translation>
@@ -5150,6 +5175,7 @@
 <translation id="8400146488506985033">Gérer les utilisateurs</translation>
 <translation id="8401432541486058167">Utilisez le code associé à votre carte à puce.</translation>
 <translation id="8405046151008197676">Découvrez les nouveautés de la dernière mise à jour</translation>
+<translation id="8408068190360279472"><ph name="NETWORK_TYPE" /> : connexion…</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Demander d'abord (recommandé)</translation>
 <translation id="8418445294933751433">Afficher dan&amp;s un onglet</translation>
@@ -5439,6 +5465,7 @@
 <translation id="8807632654848257479">Stable</translation>
 <translation id="8808478386290700967">Web Store</translation>
 <translation id="8808686172382650546">Chat</translation>
+<translation id="8808744862003883508">Sur cette page, vous pouvez consulter toutes les extensions installées sur Chrome.</translation>
 <translation id="8809147117840417135">Turquoise clair</translation>
 <translation id="8813698869395535039">Impossible de se connecter au compte <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">feuille de papier</translation>
@@ -5666,7 +5693,6 @@
 <translation id="9121814364785106365">Ouvrir dans un onglet épinglé</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> mis en pause</translation>
 <translation id="9124003689441359348">Les mots de passe enregistrés s'afficheront ici</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> restante(s))</translation>
 <translation id="9128317794749765148">Impossible de terminer la configuration</translation>
 <translation id="9128870381267983090">Se connecter au réseau</translation>
 <translation id="9130015405878219958">Le mode indiqué est incorrect.</translation>
@@ -5705,6 +5731,7 @@
 <translation id="9188732951356337132">Envoyer des données d'utilisation et de diagnostic. À l'heure actuelle, cet appareil envoie automatiquement à Google des données relatives aux diagnostics et à l'utilisation de l'appareil et des applications. Ces informations ne seront pas utilisées pour identifier votre enfant, mais elles nous aideront à améliorer, entre autres, la stabilité du système et des applications. Certaines données globales seront également utiles aux développeurs des applications Google et à nos partenaires, tels que les développeurs Android. Si vous activez le paramètre relatif à l'activité supplémentaire sur le Web et les applications pour votre enfant, ces données peuvent être enregistrées dans son compte Google. <ph name="BEGIN_LINK2" />En savoir plus<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPSec + Clé pré-partagée</translation>
 <translation id="920045321358709304">Rechercher avec <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">Toutes les données hors connexion vont être effacées</translation>
 <translation id="9201220332032049474">Options de verrouillage de l'écran</translation>
 <translation id="9203398526606335860">&amp;Profilage activé</translation>
 <translation id="9203904171912129171">Sélectionner un appareil</translation>
@@ -5717,6 +5744,7 @@
 <translation id="9220525904950070496">Supprimer le compte</translation>
 <translation id="9220820413868316583">Soulevez votre doigt, puis reposez-le.</translation>
 <translation id="923467487918828349">Tout afficher</translation>
+<translation id="929117907539171075">Les donnés hors connexion de l'application installée seront également effacées</translation>
 <translation id="930268624053534560">Horodatage détaillé</translation>
 <translation id="932327136139879170">Accueil</translation>
 <translation id="932508678520956232">Impossible de lancer l'impression.</translation>
@@ -5742,6 +5770,7 @@
 <translation id="960719561871045870">Code de l'opérateur</translation>
 <translation id="960987915827980018">Environ 1 heure restante</translation>
 <translation id="962802172452141067">Arborescence de dossiers des favoris</translation>
+<translation id="964057662886721376">Certaines extensions peuvent ralentir votre navigation, en particulier celles que vous n'avez pas installées volontairement.</translation>
 <translation id="964286338916298286">Votre administrateur informatique a désactivé les bonus Chrome pour votre appareil.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Application}one{Application}other{Applications}}</translation>
 <translation id="965211523698323809">Envoyez et recevez des SMS depuis votre <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />En savoir plus<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_gl.xtb b/chrome/app/resources/generated_resources_gl.xtb
index 965b5b89..01a2b93f 100644
--- a/chrome/app/resources/generated_resources_gl.xtb
+++ b/chrome/app/resources/generated_resources_gl.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Personalizada</translation>
 <translation id="1178581264944972037">Pausar</translation>
 <translation id="117916940443676133">A túa chave de seguranza non está protexida cun PIN. Para xestionar os datos de inicio de sesión, primeiro crea un PIN.</translation>
-<translation id="118069123878619799">- as túas características físicas, como a altura</translation>
 <translation id="1181037720776840403">Eliminar</translation>
 <translation id="1183237619868651138">Non se pode instalar <ph name="EXTERNAL_CRX_FILE" /> na caché local.</translation>
 <translation id="1185924365081634987">Tamén podes intentar <ph name="GUEST_SIGNIN_LINK_START" />navegar como invitado<ph name="GUEST_SIGNIN_LINK_END" /> para corrixir este erro de rede.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">Agardando por <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> dispositivos máis dispoñibles.</translation>
 <translation id="1495677929897281669">Volver á pestana</translation>
+<translation id="1499271269825557605">Se non recoñeces unha extensión ou se o navegador non funciona como debería, podes desactivar ou personalizar as extensións aquí.</translation>
 <translation id="1500297251995790841">Dispositivo descoñecido [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Esta conta de propietario debe ser a primeira en que se inicie sesión cando se realice un inicio de sesión múltiple.</translation>
 <translation id="150411034776756821">Eliminar <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Bloqueouse o acceso desta páxina á túa cámara.</translation>
 <translation id="1507246803636407672">&amp;Descartar</translation>
 <translation id="1508491105858779599">Coloca o dedo no sensor de impresión dixital para desbloquear o dispositivo.</translation>
+<translation id="1508575541972276599">A versión actual é Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">Acceda a calquera <ph name="DEVICE_NAME_AND_VENDOR" /> por USB</translation>
 <translation id="150962533380566081">O PUK non é válido.</translation>
 <translation id="1510030919967934016">Bloqueouse esta páxina para que non poida facer un seguimento da túa localización.</translation>
@@ -433,6 +434,7 @@
 <translation id="1601560923496285236">Aplicar</translation>
 <translation id="1603914832182249871">(Incógnito)</translation>
 <translation id="1604432177629086300">Non se puido imprimir. Comproba a impresora e téntao de novo.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: a sincronización de contrasinais non funciona</translation>
 <translation id="1607139524282324606">Borrar entrada</translation>
 <translation id="1608626060424371292">Eliminar este usuario</translation>
 <translation id="1608668830839595724">Máis accións para os elementos seleccionados</translation>
@@ -559,6 +561,8 @@
 <translation id="177336675152937177">Datos da aplicación aloxada</translation>
 <translation id="1776712937009046120">Engadir usuario</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> xestiona este dispositivo.
+    Para seguir iniciando sesión na túa conta de <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />, fai clic en Seguinte.</translation>
 <translation id="1779652936965200207">Introduce esta clave de acceso en "<ph name="DEVICE_NAME" />":</translation>
 <translation id="1780152987505130652">Pechar grupo</translation>
 <translation id="1781291988450150470">PIN actual</translation>
@@ -746,6 +750,7 @@
 <translation id="2048653237708779538">Acción non dispoñible</translation>
 <translation id="2050339315714019657">Vertical</translation>
 <translation id="2053312383184521053">Datos do estado inactivo</translation>
+<translation id="2055585478631012616">Ademais, pecharase sesión nestes sitios aínda que os teñas abertos en pestanas</translation>
 <translation id="205560151218727633">Logotipo do Asistente de Google</translation>
 <translation id="2058456167109518507">Detectouse un dispositivo</translation>
 <translation id="2059913712424898428">Fuso horario</translation>
@@ -761,6 +766,7 @@
 <translation id="2079545284768500474">Desfacer</translation>
 <translation id="2080070583977670716">Máis configuracións</translation>
 <translation id="2087822576218954668">Imprimir: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">Rede VPN</translation>
 <translation id="2089566709556890888">Navega de forma segura con Google Chrome</translation>
 <translation id="2089795179672254991">Preguntar se un sitio quere ver o texto e as imaxes que se copian no portapapeis (recomendado)</translation>
 <translation id="2090165459409185032">Para recuperar a información da túa conta, accede  a: google.com/accounts/recovery</translation>
@@ -984,6 +990,7 @@
 <translation id="2379232090534544565">Un sitio está accedendo á entrada de audio e vídeo</translation>
 <translation id="2379281330731083556">Imprimir usando a caixa de diálogo do sistema... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Preguntar antes de enviar (recomendado)</translation>
+<translation id="2382818385048255866">Comproba as extensións instaladas</translation>
 <translation id="2384436799579181135">Produciuse un erro. Comproba a túa impresora e téntao de novo.</translation>
 <translation id="2387458720915042159">Tipo de conexión mediante proxy</translation>
 <translation id="2391419135980381625">Fonte estándar</translation>
@@ -1035,6 +1042,7 @@
 <translation id="2462724976360937186">ID de clave de autoridade de certificación</translation>
 <translation id="2462752602710430187">Engadiuse <ph name="PRINTER_NAME" /></translation>
 <translation id="2464089476039395325">Proxy HTTP</translation>
+<translation id="2467267713099745100">Rede <ph name="NETWORK_TYPE" />, desactivada</translation>
 <translation id="2468205691404969808">Utiliza cookies para lembrar as túas preferencias, mesmo se non visitas esas páxinas</translation>
 <translation id="2468402215065996499">Tamagotchi</translation>
 <translation id="2469259292033957819">Non tes impresoras gardadas.</translation>
@@ -1289,6 +1297,7 @@
 <translation id="2800760947029405028">Subir unha imaxe</translation>
 <translation id="2803375539583399270">Introduce o PIN</translation>
 <translation id="2804043232879091219">Non se puido abrir o navegador alternativo</translation>
+<translation id="2804667941345577550">Pecharase sesión neste sitio, aínda que o teñas aberto en pestanas</translation>
 <translation id="2804680522274557040">Desactivouse a cámara</translation>
 <translation id="2805646850212350655">Sistema de ficheiros de cifrado de Microsoft</translation>
 <translation id="2805756323405976993">Aplicacións</translation>
@@ -1296,6 +1305,7 @@
 <translation id="2806891468525657116">O atallo xa existe</translation>
 <translation id="2807517655263062534">Os ficheiros que descargas aparecen aquí</translation>
 <translation id="2809586584051668049">e <ph name="NUMBER_ADDITIONAL_DISABLED" /> máis</translation>
+<translation id="2810390687497823527">Se non recoñeces unha extensión ou se o navegador non funciona como debería, podes desactivar ou personalizar as extensións aquí.</translation>
 <translation id="2812049959647166806">A tecnoloxía Thunderbolt non é compatible</translation>
 <translation id="2812944337881233323">Tenta pechar sesión e volver iniciala</translation>
 <translation id="2812989263793994277">Non mostrar ningunha imaxe</translation>
@@ -1335,6 +1345,7 @@
 <translation id="2861941300086904918">Xestor de seguranza de cliente nativo</translation>
 <translation id="2864601841139725659">Definir a túa foto do perfil</translation>
 <translation id="2865919525181940183">Captura de pantalla dos programas que se atopan actualmente na pantalla</translation>
+<translation id="286674810810214575">Comprobando fontes de alimentación…</translation>
 <translation id="2867768963760577682">Abrir como pestana fixada</translation>
 <translation id="2868746137289129307">Esta extensión é obsoleta e está desactivada pola política da empresa. Quizais se active automaticamente cando estea dispoñible unha nova versión.</translation>
 <translation id="2870560284913253234">Sitio</translation>
@@ -1412,6 +1423,7 @@
 <translation id="2972581237482394796">&amp;Refacer</translation>
 <translation id="2973324205039581528">Silenciar sitio</translation>
 <translation id="2977480621796371840">Quitar do grupo</translation>
+<translation id="2979520980928493164">Unha aplicación Chrome máis rápida e en mellor estado</translation>
 <translation id="2979639724566107830">Abre o marcador nunha ventá nova</translation>
 <translation id="2981113813906970160">Mostrar cursor do rato grande</translation>
 <translation id="2982970937345031">Enviar informe de maneira anónima</translation>
@@ -1518,6 +1530,7 @@
 <translation id="3143515551205905069">Cancelar sincronización</translation>
 <translation id="3143754809889689516">Reproducir desde o principio</translation>
 <translation id="3144647712221361880">Abrir ligazón como</translation>
+<translation id="3145187901750964977">Non se puido instalar a máquina virtual. Téntao outra vez ou contacta co administrador de dispositivos da túa organización. Código de erro: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Versión:
     <ph name="LINUX_VERSION" />
 
@@ -1556,6 +1569,7 @@
 <translation id="3192947282887913208">Ficheiros de audio</translation>
 <translation id="3194737229810486521">O URL <ph name="URL" /> quere almacenar datos de forma permanente no teu dispositivo</translation>
 <translation id="3199127022143353223">Servidores</translation>
+<translation id="3201306578844503970">Non se puido instalar a máquina virtual debido a un erro da rede. Téntao outra vez ou contacta co administrador de dispositivos da túa organización. Código de erro: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Os dispositivos USB dispoñibles aparecerán aquí.</translation>
 <translation id="3202131003361292969">Ruta</translation>
 <translation id="3202173864863109533">Estase silenciando o audio desta pestana.</translation>
@@ -1892,7 +1906,6 @@
 <translation id="3678156199662914018">Extensión: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Grazas polo teu comentario. Agora estás sen conexión, polo que o informe se enviará máis tarde.</translation>
 <translation id="3682824389861648626">Límite de movemento</translation>
-<translation id="3683023058278427253">Detectamos varios tipos de licenza para o teu dominio. Escolle un para continuar.</translation>
 <translation id="3683524264665795342">Solicitude para compartir a pantalla de <ph name="APP_NAME" /></translation>
 <translation id="368789413795732264">Produciuse un erro ao tentar escribir o ficheiro: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Escribir nos ficheiros e cartafoles que abres na aplicación</translation>
@@ -2066,6 +2079,7 @@
 <translation id="389589731200570180">Compartir cos invitados</translation>
 <translation id="389901847090970821">Selecciona un teclado</translation>
 <translation id="3899879303189199559">Sen conexión durante máis dun ano</translation>
+<translation id="3900789207771372462">Algunhas extensións poden ver a túa actividade de navegación, incluída a información persoal.</translation>
 <translation id="3900966090527141178">Exportar contrasinais</translation>
 <translation id="3901991538546252627">Conectando con <ph name="NAME" /></translation>
 <translation id="3905761538810670789">Reparar aplicación</translation>
@@ -2156,7 +2170,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" está depurando este navegador</translation>
 <translation id="4014432863917027322">Queres reparar "<ph name="EXTENSION_NAME" />"?</translation>
 <translation id="4015163439792426608">Tes extensións? <ph name="BEGIN_LINK" />Xestiónaas<ph name="END_LINK" /> facilmente desde un único lugar.</translation>
-<translation id="4020106588733303597">Produciuse un erro no sistema ao cargar as licenzas dispoñibles.</translation>
 <translation id="4020327272915390518">Menú de opcións</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Engadir ao dicionario</translation>
@@ -2194,6 +2207,7 @@
 <translation id="407520071244661467">Escala</translation>
 <translation id="4075639477629295004">Non se puido emitir <ph name="FILE_NAME" />.</translation>
 <translation id="4077917118009885966">Os anuncios están bloqueados neste sitio</translation>
+<translation id="4077919383365622693">Borraranse todos os datos e as cookies almacenados por <ph name="SITE" />.</translation>
 <translation id="4079140982534148664">Utilizar corrector ortográfico mellorado</translation>
 <translation id="4081242589061676262">Non se pode emitir o ficheiro.</translation>
 <translation id="4084682180776658562">Marcador</translation>
@@ -2268,6 +2282,7 @@
 <translation id="4181841719683918333">Idiomas</translation>
 <translation id="4184885522552335684">Para mover unha pantalla, arrástraa</translation>
 <translation id="4194570336751258953">Activar a función Tocar para facer clic</translation>
+<translation id="4194595472342532425">Non se puido instalar Plugin VM debido a un problema de configuración. Ponte en contacto co administrador de dispositivos da túa administración. Código de erro: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Abrir en pestana nova</translation>
 <translation id="4195814663415092787">Continuar onde o deixaches</translation>
 <translation id="4198146608511578238">Mantén premida a icona do menú de aplicacións para falar co teu Asistente de Google.</translation>
@@ -2491,6 +2506,7 @@
 <translation id="4549791035683739768">A túa chave de seguranza non ten impresións dixitais almacenadas</translation>
 <translation id="4551763574344810652">Preme <ph name="MODIFIER_KEY_DESCRIPTION" /> para desfacer a acción</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005">Rede de tipo <ph name="NETWORK_TYPE" />, intensidade do sinal do <ph name="SIGNAL_STRENGTH" /> %</translation>
 <translation id="4554591392113183336">A extensión externa ten a mesma versión ou unha inferior en comparación coa existente.</translation>
 <translation id="4555769855065597957">Sombra</translation>
 <translation id="4555863373929230635">Para gardar os contrasinais na túa Conta de Google, inicia sesión e activa a sincronización.</translation>
@@ -2568,6 +2584,7 @@
 <translation id="4665446389743427678">Eliminaranse todos os datos almacenados por <ph name="SITE" />.</translation>
 <translation id="4668721319092543482">Fai clic para activar <ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">Converter páxina</translation>
+<translation id="46733273239502219">Tamén se borrarán os datos gardados sen conexión das aplicacións instaladas</translation>
 <translation id="4673442866648850031">Abre as ferramentas do lapis óptico ao extraelo</translation>
 <translation id="4677585247300749148">O URL <ph name="URL" /> quere responder a eventos de accesibilidade</translation>
 <translation id="4677772697204437347">Memoria da GPU</translation>
@@ -2659,7 +2676,6 @@
 <translation id="4823484602432206655">Ler e cambiar a configuración do usuario e o dispositivo</translation>
 <translation id="4824958205181053313">Queres cancelar a sincronización?</translation>
 <translation id="4827675678516992122">Non se puido establecer conexión</translation>
-<translation id="4828937774870308359">Australiano</translation>
 <translation id="4829768588131278040">Configurar PIN</translation>
 <translation id="4830502475412647084">Instalando actualización do SO</translation>
 <translation id="4830573902900904548">O teu dispositivo <ph name="DEVICE_TYPE" /> non pode conectarse a Internet a través de <ph name="NETWORK_NAME" />. Selecciona outra rede. <ph name="LEARN_MORE_LINK_START" />Máis información<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2700,6 +2716,7 @@
 <translation id="4876273079589074638">Indica exactamente o que aconteceu paso a paso para axudar aos nosos enxeñeiros a investigar e solucionar este fallo. Calquera detalle é importante.</translation>
 <translation id="4876895919560854374">Bloquear e desbloquear a pantalla</translation>
 <translation id="4877276003880815204">Inspeccionar elementos</translation>
+<translation id="4878653975845355462">O teu administrador desactivou os fondos personalizados</translation>
 <translation id="4879491255372875719">Automático (opción predeterminada)</translation>
 <translation id="4880328057631981605">Nome do punto de acceso</translation>
 <translation id="4880827082731008257">Historial de busca</translation>
@@ -2755,10 +2772,10 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" quere conectarse a un porto en serie</translation>
 <translation id="4944310289250773232">Este servizo de autenticación está aloxado por <ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">Accións</translation>
+<translation id="4952981627953231344">Non se admite Plugin VM neste dispositivo. Ponte en contacto co administrador de dispositivos da túa administración.</translation>
 <translation id="4953689047182316270">Responder a eventos de accesibilidade</translation>
 <translation id="4953808748584563296">Avatar laranxa predeterminado</translation>
 <translation id="4955710816792587366">Escolle o PIN</translation>
-<translation id="4955814292505481804">Anual</translation>
 <translation id="4959262764292427323">Os contrasinais gárdanse na túa Conta de Google para que poidas usalos en calquera dispositivo</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" />, <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">O teu administrador instalou esta aplicación.</translation>
@@ -3240,7 +3257,6 @@
 <translation id="5659593005791499971">Correo electrónico</translation>
 <translation id="5659833766619490117">Non se puido traducir esta páxina</translation>
 <translation id="5660204307954428567">Sincroniza con <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Perpetua</translation>
 <translation id="5667546120811588575">Configurando Google Play...</translation>
 <translation id="5669267381087807207">Activando</translation>
 <translation id="5669691691057771421">Introducir novo PIN</translation>
@@ -3256,6 +3272,7 @@
 <translation id="5687326903064479980">Fuso horario</translation>
 <translation id="5689516760719285838">Localización</translation>
 <translation id="56907980372820799">Ligar datos</translation>
+<translation id="5691180005790455277">Borraranse todos os datos e as cookies que almacenase<ph name="SITE_GROUP_NAME" /> e todos os sitios que formen parte dese grupo.</translation>
 <translation id="5691511426247308406">Familia</translation>
 <translation id="5692183275898619210">Finalizou a impresión</translation>
 <translation id="5696143504434933566">Informar dun uso inadecuado de <ph name="EXTENSION_NAME" /></translation>
@@ -3342,7 +3359,6 @@
 <translation id="5815645614496570556">Enderezo X.400</translation>
 <translation id="5816434091619127343">Se se aplicasen os cambios solicitados na impresora, esta non se podería usar.</translation>
 <translation id="5817918615728894473">Sincronizar</translation>
-<translation id="5819762621475381970">- a distribución do teu cuarto</translation>
 <translation id="5821565227679781414">Crear atallo</translation>
 <translation id="5825412242012995131">Activado (recomendado)</translation>
 <translation id="5826395379250998812">Conecta o <ph name="DEVICE_TYPE" /> co teu teléfono. <ph name="LINK_BEGIN" />Máis información<ph name="LINK_END" /></translation>
@@ -3478,6 +3494,7 @@
 <translation id="6007240208646052708">A busca por voz no teu idioma non está dispoñible.</translation>
 <translation id="6009781704028455063">Sensor integrado</translation>
 <translation id="6010869025736512584">Accedendo á entrada de vídeo</translation>
+<translation id="6011074160056912900">Rede Ethernet</translation>
 <translation id="6011193465932186973">Impresión dixital</translation>
 <translation id="6011449291337289699">Borrar datos do sitio</translation>
 <translation id="6015266928248016057">O PUK non é válido. Intentos restantes: <ph name="RETRIES" />.</translation>
@@ -3514,6 +3531,7 @@
 <translation id="6053401458108962351">&amp;Borrar datos de navegación...</translation>
 <translation id="6055171183283175969">O contrasinal que introduciches é incorrecto.</translation>
 <translation id="6055392876709372977">PKCS n.º 1 SHA-256 con cifrado RSA</translation>
+<translation id="6055907707645252013">Rede de tipo <ph name="NETWORK_TYPE" />, non conectada</translation>
 <translation id="6056710589053485679">Recarga normal</translation>
 <translation id="6057381398996433816">Bloqueouse a posibilidade de que este sitio utilice os sensores de movemento e luz.</translation>
 <translation id="6058567592298841668">Máquina virtual do complemento: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3577,6 +3595,7 @@
 <translation id="6136114942382973861">Pechar barra de descargas</translation>
 <translation id="6137767437444130246">Certificado de usuario</translation>
 <translation id="6138680304137685902">Sinatura X9.62 ECDSA con SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, sen rede dispoñible</translation>
 <translation id="6141988275892716286">Confirma a descarga</translation>
 <translation id="6143186082490678276">Obter axuda</translation>
 <translation id="6144938890088808325">Axúdanos a mellorar os Chromebooks</translation>
@@ -3883,6 +3902,7 @@
 <translation id="6602956230557165253">Utiliza as teclas de frecha cara á esquerda e cara á dereita para desprazarte.</translation>
 <translation id="6605847144724004692">Ningún usuario valorou a extensión.</translation>
 <translation id="6607831829715835317">Máis &amp;ferramentas</translation>
+<translation id="6611972847767394631">Atopa aquí as túas pestanas</translation>
 <translation id="6612358246767739896">Contido protexido</translation>
 <translation id="6615455863669487791">Mostrar</translation>
 <translation id="6618097958368085618">Conservar igualmente</translation>
@@ -3951,6 +3971,7 @@
 <translation id="6709133671862442373">Noticias</translation>
 <translation id="6709357832553498500">Conectar a través de <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Anterior</translation>
+<translation id="6715803357256707211">Produciuse un erro durante a instalación da aplicación Linux. Fai clic na notificación para ver os detalles.</translation>
 <translation id="6721678857435001674">Ver a marca e o modelo da túa chave de seguranza</translation>
 <translation id="6721972322305477112">&amp;Ficheiro</translation>
 <translation id="672213144943476270">Desbloquea o teu perfil antes de navegar como convidado.</translation>
@@ -3975,7 +3996,6 @@
 <translation id="674632704103926902">Activar a acción de tocar e arrastrar</translation>
 <translation id="6748217015615267851">Renderizador: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Podes continuar, pero só se restablecerán a configuración e os datos sincronizados. Perderanse todos os datos locais.</translation>
-<translation id="6748775883310276718">Quiosco de aplicación única</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (incógnito)</translation>
 <translation id="6757101664402245801">Copiouse o URL</translation>
 <translation id="6758056191028427665">Indícanos o teu grao de satisfacción.</translation>
@@ -3985,6 +4005,7 @@
 <translation id="6769712124046837540">Engadindo impresora...</translation>
 <translation id="6770664076092644100">Verificación mediante NFC</translation>
 <translation id="6771503742377376720">É unha autoridade de certificación</translation>
+<translation id="6772339735733515807">Xestiona as túas extensións</translation>
 <translation id="6775163072363532304">Os dispositivos dispoñibles aparecerán aquí.</translation>
 <translation id="6777817260680419853">Bloqueouse a redirección</translation>
 <translation id="6778737459546443941">O teu pai ou nai aínda non o aprobou</translation>
@@ -4123,6 +4144,7 @@
 <translation id="6972180789171089114">Audio/Vídeo</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> non pode abrir os ficheiros deste cartafol porque contén ficheiros do sistema</translation>
 <translation id="6972754398087986839">Introdución</translation>
+<translation id="6973611239564315524">Está dispoñible unha actualización a Debian 10 (Buster)</translation>
 <translation id="6974609594866392343">Modo de demostración sen conexión</translation>
 <translation id="6977381486153291903">Revisión do firmware</translation>
 <translation id="6978121630131642226">Motores de busca</translation>
@@ -4582,6 +4604,7 @@
 <translation id="7644543211198159466">Cor e tema</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (propietario)</translation>
 <translation id="7645681574855902035">Cancelando copia de seguranza de Linux</translation>
+<translation id="7646772052135772216">A sincronización de contrasinais non funciona</translation>
 <translation id="7647403192093989392">Non hai actividades recentes</translation>
 <translation id="7648992873808071793">Almacenar ficheiros neste dispositivo</translation>
 <translation id="7649070708921625228">Axuda</translation>
@@ -4770,6 +4793,7 @@
 <translation id="7877451762676714207">Erro do servidor descoñecido. Téntao de novo ou ponte en contacto co administrador do servidor.</translation>
 <translation id="7877680364634660272">Visita guiada</translation>
 <translation id="7878562273885520351">Pode que o teu contrasinal estea en perigo</translation>
+<translation id="7879631849810108578">Definiuse o atallo: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Os datos locais eliminaranse co reinicio</translation>
 <translation id="7881483672146086348">Ver conta</translation>
 <translation id="7882358943899516840">Tipo de fornecedor</translation>
@@ -4856,6 +4880,7 @@
 <translation id="7987814697832569482">Conectarse sempre a través desta VPN</translation>
 <translation id="7988355189918024273">Activa funcións de accesibilidade</translation>
 <translation id="7991296728590311172">Acceso con interruptores</translation>
+<translation id="7994350303002908848">Non se puido instalar Plugin VM. Téntao outra vez ou contacta co administrador de dispositivos da túa organización. Código de erro: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">Método EAP</translation>
 <translation id="7997826902155442747">Prioridade do proceso</translation>
 <translation id="7999229196265990314">Creáronse os ficheiros seguintes:
@@ -4947,7 +4972,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Non hai ningunha cookie de terceiros}=1{Bloqueouse 1 cookie de terceiros}other{Bloqueáronse # cookies de terceiros}}</translation>
 <translation id="810875025413331850">Non se encontraron dispositivos cerca.</translation>
 <translation id="8111155949205007504">Comparte este contrasinal co iPhone</translation>
-<translation id="8113043281354018522">Escolle o tipo de licenza</translation>
 <translation id="8114875720387900039">Dividir horizontalmente</translation>
 <translation id="8116972784401310538">Xestor de &amp;marcadores</translation>
 <translation id="8117620576188476503">Xestiona as conexións, as actualizacións e a configuración coa bandexa de estado. Para acceder a ela a través do teclado, preme Alt + Maiús + S.</translation>
@@ -5104,6 +5128,7 @@
 <translation id="8327039559959785305">Produciuse un erro ao montar ficheiros Linux. Téntao de novo.</translation>
 <translation id="8335587457941836791">Deixar de fixar no estante</translation>
 <translation id="8336407002559723354">Deixarán de ofrecerse actualizacións en <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Reiniciar o dispositivo para mostrar o texto do sistema en <ph name="LANGUAGE" /></translation>
 <translation id="8336739000755212683">Cambiar imaxe da conta do dispositivo</translation>
 <translation id="8337047789441383384">Xa rexistraches esta chave de seguranza. Non é necesario que a rexistres de novo.</translation>
 <translation id="8338952601723052325">Sitio web do programador</translation>
@@ -5147,6 +5172,7 @@
 <translation id="8400146488506985033">Xestionar persoas</translation>
 <translation id="8401432541486058167">Introduce o PIN asociado á túa tarxeta intelixente.</translation>
 <translation id="8405046151008197676">Descubre o máis destacado da última actualización</translation>
+<translation id="8408068190360279472">Rede de tipo <ph name="NETWORK_TYPE" />, conectando</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Preguntar primeiro (recomendado)</translation>
 <translation id="8418445294933751433">&amp;Mostrar como pestana</translation>
@@ -5436,6 +5462,7 @@
 <translation id="8807632654848257479">Estable</translation>
 <translation id="8808478386290700967">Web Store</translation>
 <translation id="8808686172382650546">Gato</translation>
+<translation id="8808744862003883508">Nesta páxina podes ver todas as extensións instaladas en Chrome.</translation>
 <translation id="8809147117840417135">Verde azulado claro</translation>
 <translation id="8813698869395535039">Non se pode iniciar a sesión de <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">folla de papel</translation>
@@ -5663,7 +5690,6 @@
 <translation id="9121814364785106365">Abrir como pestana fixada</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> púxose en pausa</translation>
 <translation id="9124003689441359348">Os contrasinais gardados aparecerán aquí</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (restantes: <ph name="LICENSE_COUNT" />)</translation>
 <translation id="9128317794749765148">Non se puido completar a configuración</translation>
 <translation id="9128870381267983090">Conectarse á rede</translation>
 <translation id="9130015405878219958">Modo non válido introducido.</translation>
@@ -5702,6 +5728,7 @@
 <translation id="9188732951356337132">Enviar datos de uso e de diagnóstico. Este dispositivo envía automaticamente datos de diagnóstico e de uso do dispositivo e das aplicacións a Google. Esta información non se utilizará para identificar o teu fillo, senón co obxectivo de aumentar a estabilidade do sistema e das aplicacións, e de realizar outras melloras. Algúns datos agregados tamén serán útiles para as aplicacións e os socios de Google, como os programadores de Android. Se está activada a opción de configuración Actividade web e das aplicacións adicional para o teu fillo, estes datos pódense gardar na súa Conta de Google <ph name="BEGIN_LINK2" />Máis información<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + clave precompartida</translation>
 <translation id="920045321358709304">Realizar a busca en <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">Borraranse os datos que se gardaron sen conexión</translation>
 <translation id="9201220332032049474">Opcións de bloqueo da pantalla</translation>
 <translation id="9203398526606335860">Creación de &amp;perfís activada</translation>
 <translation id="9203904171912129171">Seleccionar un dispositivo</translation>
@@ -5714,6 +5741,7 @@
 <translation id="9220525904950070496">Quitar conta</translation>
 <translation id="9220820413868316583">Levanta o dedo e téntao de novo.</translation>
 <translation id="923467487918828349">Mostrar todo</translation>
+<translation id="929117907539171075">Tamén se borrarán os datos gardados sen conexión da aplicación instalada</translation>
 <translation id="930268624053534560">Marcas de tempo detalladas</translation>
 <translation id="932327136139879170">Inicio</translation>
 <translation id="932508678520956232">Non se puido empezar a imprimir.</translation>
@@ -5739,6 +5767,7 @@
 <translation id="960719561871045870">Código do operador</translation>
 <translation id="960987915827980018">Queda aproximadamente 1 hora</translation>
 <translation id="962802172452141067">Estrutura en árbore dos cartafoles de marcadores</translation>
+<translation id="964057662886721376">Algunhas extensións poden facer que a conexión vaia máis lenta, especialmente as que non pretendías instalar.</translation>
 <translation id="964286338916298286">O teu administrador de TI desactivou os extras de Chrome para o teu dispositivo.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Aplicación}other{Aplicacións}}</translation>
 <translation id="965211523698323809">Envía e recibe mensaxes de texto desde o <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Máis información<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb
index dfbb9190..6d50690d 100644
--- a/chrome/app/resources/generated_resources_gu.xtb
+++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">કસ્ટમ</translation>
 <translation id="1178581264944972037">થોભો</translation>
 <translation id="117916940443676133">તમારી સુરક્ષા કી પિન વડે સુરક્ષિત નથી. સાઇન-ઇન ડેટા મેનેજ કરવા માટે, પહેલાં પિન બનાવો.</translation>
-<translation id="118069123878619799">- તમારા શારીરિક લક્ષણો, જેમ કે ઊંચાઈ</translation>
 <translation id="1181037720776840403">કાઢી નાખો</translation>
 <translation id="1183237619868651138">સ્થાનિક કૅશ મેમરીમાં <ph name="EXTERNAL_CRX_FILE" />ને ઇન્સ્ટૉલ કરી શકતાં નથી.</translation>
 <translation id="1185924365081634987">આ નેટવર્ક ભૂલને સુધારવા માટે તમે <ph name="GUEST_SIGNIN_LINK_START" />અતિથિ તરીકે બ્રાઉઝ કરો<ph name="GUEST_SIGNIN_LINK_END" /> ને પણ અજમાવી શકો છો.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381"><ph name="LOAD_STATE_PARAMETER" /> માટે પ્રતીક્ષારત...</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> અન્ય ઉપલબ્ધ ઉપકરણો.</translation>
 <translation id="1495677929897281669">ટૅબ પર પાછા જાઓ</translation>
+<translation id="1499271269825557605">જો તમે એક્સ્ટેંશનને ઓળખતા ન હો અથવા તમારું બ્રાઉઝર અપેક્ષા પ્રમાણે કામ ન કરતું હોય, તો તમે અહીં એક્સ્ટેંશનને કસ્ટમાઇઝ કરી શકો છો અથવા બંધ કરી શકો છો.</translation>
 <translation id="1500297251995790841">અજાણ્યું ઉપકરણ [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">આ માલિક એકાઉન્ટ દ્વારા એકથી વધુ સાઇન ઇન સત્રમાં પહેલા સાઇન ઇન કરનાર એકાઉન્ટ હોવું જોઈએ.</translation>
 <translation id="150411034776756821"><ph name="SITE" /> ને દૂર કરો</translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">આ પૃષ્ઠને તમારા કૅમેરાને ઍક્સેસ કરવાથી અવરોધિત કરવામાં આવ્યું છે.</translation>
 <translation id="1507246803636407672">&amp;છોડી દો</translation>
 <translation id="1508491105858779599">ઉપકરણને અનલૉક કરવા માટે તમારી આંગળીને ફિંગરપ્રિન્ટ સેન્સર પર મૂકો.</translation>
+<translation id="1508575541972276599">હાલનું વર્ઝન Debian 9 (Stretch) છે</translation>
 <translation id="1509281256533087115">USB મારફત કોઇપણ <ph name="DEVICE_NAME_AND_VENDOR" /> ઍક્સેસ કરો</translation>
 <translation id="150962533380566081">અમાન્ય PUK.</translation>
 <translation id="1510030919967934016">આ પૃષ્ઠને તમારા સ્થાનને ટ્રૅક કરવાથી અવરોધિત કરવામાં આવ્યું છે.</translation>
@@ -430,6 +431,7 @@
 <translation id="1601560923496285236">લાગુ કરો</translation>
 <translation id="1603914832182249871">(છૂપી)</translation>
 <translation id="1604432177629086300">પ્રિન્ટ કરી શક્યાં નથી. પ્રિન્ટર ચેક કરો અને ફરી પ્રયાસ કરો.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: પાસવર્ડ સિંક કાર્ય કરતું નથી</translation>
 <translation id="1607139524282324606">એન્ટ્રી સાફ કરો</translation>
 <translation id="1608626060424371292">આ વપરાશકર્તાને દૂર કરો</translation>
 <translation id="1608668830839595724">પસંદ કરેલી આઇટમ માટે વધુ ક્રિયાઓ</translation>
@@ -556,6 +558,8 @@
 <translation id="177336675152937177">હોસ્ટ કરેલ ઍપ્લિકેશન ડેટા</translation>
 <translation id="1776712937009046120">વપરાશકર્તા ઉમેરો</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">આ ડિવાઇસ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> દ્વારા સંચાલિત છે.
+    તમારા <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> એકાઉન્ટમાં સાઇન ઇન કરવાનું ચાલુ રાખવા માટે કૃપા કરીને "આગલું" પર ક્લિક કરો.</translation>
 <translation id="1779652936965200207">કૃપા કરીને "<ph name="DEVICE_NAME" />" પર આ પાસકી દાખલ કરો:</translation>
 <translation id="1780152987505130652">ગ્રૂપ બંધ કરો</translation>
 <translation id="1781291988450150470">વર્તમાન પિન</translation>
@@ -743,6 +747,7 @@
 <translation id="2048653237708779538">ક્રિયા ઉપલબ્ધ નથી</translation>
 <translation id="2050339315714019657">પોર્ટ્રેટ</translation>
 <translation id="2053312383184521053">નિષ્ક્રિય સ્થિતિ ડેટા</translation>
+<translation id="2055585478631012616">ખુલ્લા ટૅબ સહિત, આ સાઇટમાંથી તમને સાઇન આઉટ કરવામાં આવશે</translation>
 <translation id="205560151218727633">Google સહાયકનો લોગો</translation>
 <translation id="2058456167109518507">ઉપકરણ મળ્યું</translation>
 <translation id="2059913712424898428">સમય ઝોન</translation>
@@ -758,6 +763,7 @@
 <translation id="2079545284768500474">છેલ્લો ફેરફાર રદ કરો</translation>
 <translation id="2080070583977670716">વધુ સેટિંગ્સ</translation>
 <translation id="2087822576218954668">પ્રિન્ટ: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN નેટવર્ક</translation>
 <translation id="2089566709556890888">Google Chrome સાથે સુરક્ષિત રીતે બ્રાઉઝ કરો</translation>
 <translation id="2089795179672254991">જ્યારે ક્લિપબોર્ડ પર કૉપિ કરેલ ટેક્સ્ટ અને છબીઓને સાઇટ જોવા માંગે ત્યારે પૂછો (સુઝાવ આપેલ)</translation>
 <translation id="2090165459409185032">તમારી એકાઉન્ટ માહિતી ફરીથી મેળવવા માટે, આના પર જાઓ: google.com/accounts/recovery</translation>
@@ -981,6 +987,7 @@
 <translation id="2379232090534544565">સાઇટ ઑડિયો અને વીડિયો ઇનપુટને ઍક્સેસ કરી રહી છે</translation>
 <translation id="2379281330731083556">સિસ્ટમ સંવાદનો ઉપયોગ કરીને પ્રિન્ટ કરો...<ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">મોકલતાં પહેલાં પૂછો (ભલામણ કરેલ)</translation>
+<translation id="2382818385048255866">તમારા એક્સ્ટેંશન તપાસો</translation>
 <translation id="2384436799579181135">એક ભૂલ આવી છે. કૃપા કરીને તમારું પ્રિન્ટર તપાસો અને ફરી પ્રયાસ કરો.</translation>
 <translation id="2387458720915042159">પ્રૉક્સી કનેક્શનનો પ્રકાર</translation>
 <translation id="2391419135980381625">માનક ફૉન્ટ</translation>
@@ -1032,6 +1039,7 @@
 <translation id="2462724976360937186">પ્રમાણન અધિકારી કી ID</translation>
 <translation id="2462752602710430187"><ph name="PRINTER_NAME" /> ઉમેર્યું</translation>
 <translation id="2464089476039395325">HTTP પ્રૉક્સી</translation>
+<translation id="2467267713099745100"><ph name="NETWORK_TYPE" /> નેટવર્ક, બંધ</translation>
 <translation id="2468205691404969808">તમારી પસંદગીઓ યાદ રાખવા માટે કુકીનો ઉપયોગ કરે છે, પછી ભલે તમે તે પેજની મુલાકાત ન પણ લો</translation>
 <translation id="2468402215065996499">ટેમાગોચી</translation>
 <translation id="2469259292033957819">તમારી પાસે કોઈ સાચવેલું પ્રિન્ટર નથી.</translation>
@@ -1286,6 +1294,7 @@
 <translation id="2800760947029405028">છબી અપલોડ કરો</translation>
 <translation id="2803375539583399270">PIN દાખલ કરો</translation>
 <translation id="2804043232879091219">વૈકલ્પિક બ્રાઉઝર ખોલી શકાયું નથી</translation>
+<translation id="2804667941345577550">ખુલ્લા ટૅબ સહિત, આ સાઇટમાંથી તમને સાઇન આઉટ કરવામાં આવશે</translation>
 <translation id="2804680522274557040">કૅમેરા બંધ કર્યો</translation>
 <translation id="2805646850212350655">Microsoft Encrypting File System</translation>
 <translation id="2805756323405976993">એપ્સ</translation>
@@ -1293,6 +1302,7 @@
 <translation id="2806891468525657116">શૉર્ટકટ પહેલેથી અસ્તિત્વમાં છે</translation>
 <translation id="2807517655263062534">તમે ડાઉનલોડ કરેલી ફાઇલો અહીં દેખાશે</translation>
 <translation id="2809586584051668049">અને <ph name="NUMBER_ADDITIONAL_DISABLED" /> વધુ</translation>
+<translation id="2810390687497823527">જો તમે એક્સ્ટેંશનને ઓળખતા ન હો અથવા તમારું બ્રાઉઝર અપેક્ષા પ્રમાણે કામ ન કરતું હોય, તો તમે અહીં એક્સ્ટેંશનને કસ્ટમાઇઝ કરી શકો છો અથવા બંધ કરી શકો છો.</translation>
 <translation id="2812049959647166806">Thunderboltની સુવિધા ઉપલબ્ધ નથી</translation>
 <translation id="2812944337881233323">સાઇન આઉટ કરીને ફરી પાછા સાઇન ઇન કરવાનો પ્રયાસ કરો</translation>
 <translation id="2812989263793994277">કોઈ પણ છબીઓ બતાવશો નહીં</translation>
@@ -1332,6 +1342,7 @@
 <translation id="2861941300086904918">નેટિવ ક્લાયન્ટ સિક્યુરિટી મેનેજર</translation>
 <translation id="2864601841139725659">તમારું પ્રોફાઇલ ચિત્ર સેટ કરો</translation>
 <translation id="2865919525181940183">હાલમાં સ્ક્રીન પર છે તે પ્રોગ્રામનો સ્ક્રીનશૉટ</translation>
+<translation id="286674810810214575">પાવરના સ્રોતો શોધી રહ્યાં છીએ...</translation>
 <translation id="2867768963760577682">પિન કરેલા ટૅબ તરીકે ખોલો</translation>
 <translation id="2868746137289129307">આ એક્સ્ટેંશન જૂનું થઈ ગયું છે અને એન્ટરપ્રાઇસ પોલિસી દ્વારા બંધ થયું છે. જ્યારે એક નવું વર્ઝન ઉપલબ્ધ થાય ત્યારે તે ઑટોમૅટિક રીતે ચાલુ થઈ શકે છે.</translation>
 <translation id="2870560284913253234">સાઇટ</translation>
@@ -1409,6 +1420,7 @@
 <translation id="2972581237482394796">&amp;ફરી કરો</translation>
 <translation id="2973324205039581528">સાઇટને મ્યૂટ કરો</translation>
 <translation id="2977480621796371840">ગ્રૂપમાંથી દૂર કરો</translation>
+<translation id="2979520980928493164">વધુ સુવ્યવસ્થિત, કાર્યક્ષમ Chrome</translation>
 <translation id="2979639724566107830">નવી વિંડોમાં ખોલો</translation>
 <translation id="2981113813906970160">મોટું માઉસ કર્સર બતાવો</translation>
 <translation id="2982970937345031">અનામ રીતે જાણ કરો</translation>
@@ -1515,6 +1527,7 @@
 <translation id="3143515551205905069">સિંક કરવાનું રદ કરો</translation>
 <translation id="3143754809889689516">શરૂઆતથી ચલાવો</translation>
 <translation id="3144647712221361880">આ રીતે લિંક ખોલો</translation>
+<translation id="3145187901750964977">વર્ચ્યુઅલ મશીન ઇન્સ્ટૉલ કરી શકાયું નથી. કૃપા કરીને ફરી પ્રયાસ કરો અથવા તમારી સંસ્થાના ડિવાઇસ વ્યવસ્થાપકનો સંપર્ક કરો. ભૂલનો કોડ: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">વર્ઝન:
     <ph name="LINUX_VERSION" />
 
@@ -1553,6 +1566,7 @@
 <translation id="3192947282887913208">ઑડિઓ ફાઇલો </translation>
 <translation id="3194737229810486521"><ph name="URL" /> તમારા ઉપકરણ પર કાયમી ધોરણે ડેટા સ્ટોર કરવા માગે છે</translation>
 <translation id="3199127022143353223">સર્વર્સ</translation>
+<translation id="3201306578844503970">નેટવર્ક ભૂલના કારણે વર્ચ્યુઅલ મશીન ઇન્સ્ટૉલ ન કરી શકાયું. કૃપા કરીને ફરી પ્રયાસ કરો અથવા તમારી સંસ્થાના ડિવાઇસ વ્યવસ્થાપકનો સંપર્ક કરો. ભૂલનો કોડ: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">ઉપલબ્ધ USB ડિવાઇસ અહીં દેખાશે.</translation>
 <translation id="3202131003361292969">પથ</translation>
 <translation id="3202173864863109533">આ ટૅબનો ઑડિઓ મ્યૂટ કરવામાં આવી રહ્યો છે.</translation>
@@ -1889,7 +1903,6 @@
 <translation id="3678156199662914018">એક્સ્ટેંશન: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">તમારા પ્રતિસાદ બદલ આભાર. તમે હમણાં ઑફલાઇન છો અને તમારી રિપોર્ટ પછીથી મોકલવામાં આવશે.</translation>
 <translation id="3682824389861648626">ગતિવિધિનો થ્રેશોલ્ડ</translation>
-<translation id="3683023058278427253">અમને તમારા ડોમેન માટે બહુવિધ લાઇસન્સ પ્રકારો જોવા મળ્યાં છે. ચાલુ રાખવા માટે કૃપા કરીને એકને પસંદ કરો.</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> સ્ક્રીન શેરિંગ વિનંતી</translation>
 <translation id="368789413795732264">ફાઇલ લખવાનો પ્રયાસ કરતી વખતે ભૂલ આવી હતી: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">તમે એપ્લિકેશનમાં ખોલી છે તે ફાઇલો અને ફોલ્ડર્સમાં લખો</translation>
@@ -2063,6 +2076,7 @@
 <translation id="389589731200570180">અતિથિઓ સાથે શેર કરો</translation>
 <translation id="389901847090970821">કીબોર્ડ પસંદ કરો</translation>
 <translation id="3899879303189199559">એક વર્ષ કરતાં વધુ સમય માટે ઑફલાઇન</translation>
+<translation id="3900789207771372462">કેટલાક એક્સ્ટેંશન - વ્યક્તિગત માહિતી સહિત તમારી બ્રાઉઝિંગ પ્રવૃત્તિ જોઈ શકે છે.</translation>
 <translation id="3900966090527141178">પાસવર્ડની નિકાસ કરો</translation>
 <translation id="3901991538546252627"><ph name="NAME" /> થી કનેક્ટ કરી રહ્યું છે</translation>
 <translation id="3905761538810670789">ઍપ્લિકેશન સુધારો</translation>
@@ -2153,7 +2167,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" આ બ્રાઉઝરને ડિબગ કરી રહ્યું છે</translation>
 <translation id="4014432863917027322">"<ph name="EXTENSION_NAME" />" ને સુધારીએ?</translation>
 <translation id="4015163439792426608">શું તમારી પાસે એક્સ્ટેંશન છે? એક અનુકૂળ જગ્યાએથી <ph name="BEGIN_LINK" />તમારા એક્સ્ટેંશનને મેનેજ કરો<ph name="END_LINK" />.</translation>
-<translation id="4020106588733303597">અરેરે! સિસ્ટમ ઉપલબ્ધ લાઇસન્સ લોડ કરવામાં નિષ્ફળ થયું.</translation>
 <translation id="4020327272915390518">વિકલ્પો મેનૂ</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">શબ્દકોષમાં &amp;ઉમેરો</translation>
@@ -2191,6 +2204,7 @@
 <translation id="407520071244661467">સ્કેલ</translation>
 <translation id="4075639477629295004"><ph name="FILE_NAME" />ને કાસ્ટ કરવામાં અસમર્થ.</translation>
 <translation id="4077917118009885966">આ સાઇટ પર જાહેરાતો અવરોધિત કરી</translation>
+<translation id="4077919383365622693"><ph name="SITE" /> દ્વારા સ્ટોર થયેલો બધો ડેટા અને કુકી સાફ કરવામાં આવશે.</translation>
 <translation id="4079140982534148664">વધુ સારી બનાવાયેલી જોડણીની તપાસનો ઉપયોગ કરો</translation>
 <translation id="4081242589061676262">ફાઇલ કાસ્ટ કરવામાં અસમર્થ.</translation>
 <translation id="4084682180776658562">બુકમાર્ક</translation>
@@ -2265,6 +2279,7 @@
 <translation id="4181841719683918333">ભાષાઓ</translation>
 <translation id="4184885522552335684">ડિસ્પ્લેને ખસેડવા માટે ખેંચો</translation>
 <translation id="4194570336751258953">ક્લિક કરવા હલકું દબાવોને ચાલુ કરો</translation>
+<translation id="4194595472342532425">ગોઠવણની સમસ્યાને કારણે Plugin VM સેટ અપ કરી શકાયું નથી. કૃપા કરીને તમારી સંસ્થાના ડિવાઇસ વ્યવસ્થાપકનો સંપર્ક કરો. ભૂલનો કોડ: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">નવા ટૅબમાં ખોલો</translation>
 <translation id="4195814663415092787">તમે જ્યાંથી છોડેલું ત્યાંથી ચાલુ કરો</translation>
 <translation id="4198146608511578238">તમારા Google સહાયક સાથે વાત કરવા માટે લૉન્ચર આઇકનને પકડી રાખો.</translation>
@@ -2488,6 +2503,7 @@
 <translation id="4549791035683739768">તમારી સિક્યુરિટી કીમાં કોઈ ફિંગરપ્રિન્ટ સંગ્રહિત નથી</translation>
 <translation id="4551763574344810652">છેલ્લો ફેરફાર રદ કરવા માટે <ph name="MODIFIER_KEY_DESCRIPTION" /> દબાવો</translation>
 <translation id="4552089082226364758">ફ્લેશ</translation>
+<translation id="4552759165874948005"><ph name="NETWORK_TYPE" /> નેટવર્ક, સિગ્નલની પ્રબળતા <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">બાહ્ય એક્સ્ટેંશન હાલના એક્સ્ટેંશનની સરખામણીએ સમાન અથવા નીચલા વર્ઝન પર છે.</translation>
 <translation id="4555769855065597957">શેડો</translation>
 <translation id="4555863373929230635">તમારા Google એકાઉન્ટમાં પાસવર્ડ સાચવવા માટે, સાઇન ઇન કરો અને સિંક કરવાનું ચાલુ કરો.</translation>
@@ -2565,6 +2581,7 @@
 <translation id="4665446389743427678"><ph name="SITE" />નો સ્ટોર કરેલો બધો ડેટા ડિલીટ કરવામાં આવશે.</translation>
 <translation id="4668721319092543482"><ph name="PLUGIN_NAME" />ને ચાલુ કરવા માટે ક્લિક કરો</translation>
 <translation id="4672657274720418656">Distill પૃષ્ઠ</translation>
+<translation id="46733273239502219">ઇન્સ્ટૉલ કરેલી ઍપમાંનો ઑફલાઇન ડેટા પણ સાફ થઈ જશે</translation>
 <translation id="4673442866648850031">જ્યારે સ્ટાઇલસ દૂર કરવામાં આવ્યું હોય ત્યારે સ્ટાઇલસનાં સાધનો ખોલો</translation>
 <translation id="4677585247300749148"><ph name="URL" /> ઍક્સેસિબિલિટી ઇવેન્ટનો જવાબ આપવા માગે છે</translation>
 <translation id="4677772697204437347">GPU મેમરી</translation>
@@ -2656,7 +2673,6 @@
 <translation id="4823484602432206655">વપરાશકર્તા અને ઉપકરણ સેટિંગ્સ વાંચો અને બદલો</translation>
 <translation id="4824958205181053313">સિંક કરવાનું રદ કરીએ?</translation>
 <translation id="4827675678516992122">કનેક્ટ કરી શકાયું નથી</translation>
-<translation id="4828937774870308359">ઓસ્ટ્રેલિયન</translation>
 <translation id="4829768588131278040">PIN સેટ કરો</translation>
 <translation id="4830502475412647084">OS અપડેટ ઇન્સ્ટૉલ કરી રહ્યા છીએ</translation>
 <translation id="4830573902900904548"><ph name="NETWORK_NAME" /> નો ઉપયોગ કરીને ઇન્ટરનેટથી કનેક્ટ થવામાં તમારી <ph name="DEVICE_TYPE" /> અસમર્થ છે. કૃપા કરીને બીજું નેટવર્ક પસંદ કરો. <ph name="LEARN_MORE_LINK_START" />વધુ જાણો<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2697,6 +2713,7 @@
 <translation id="4876273079589074638">આ ક્રૅશની તપાસ કરવામાં અને એને ઠીક કરવામાં અમારાં એન્જિનિયરોની મદદ કરો. જો તમે કરી શકો તેમ હોય તો ચોક્કસ પગલાંની સૂચિ બનાવો. કોઈ પણ વિગત નાની નથી હોતી!</translation>
 <translation id="4876895919560854374">સ્ક્રીન લૉક કરો અને અનલૉક કરો</translation>
 <translation id="4877276003880815204">ઘટકો તપાસો</translation>
+<translation id="4878653975845355462">તમારા વ્યવસ્થાપક દ્વારા કસ્ટમ બૅકગ્રાઉન્ડ બંધ કરવામાં આવ્યાં છે</translation>
 <translation id="4879491255372875719">ઑટોમૅટિક (ડિફૉલ્ટ)</translation>
 <translation id="4880328057631981605">ઍક્સેસ પૉઇન્ટનું નામ</translation>
 <translation id="4880827082731008257">ઇતિહાસ શોધ</translation>
@@ -2752,10 +2769,10 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" સિરીઅલ પોર્ટ સાથે કનેક્ટ કરવા માગે છે</translation>
 <translation id="4944310289250773232">આ પ્રમાણીકરણ સેવા <ph name="SAML_DOMAIN" /> દ્વારા હોસ્ટ કરવામાં આવે છે</translation>
 <translation id="495170559598752135">ક્રિયાઓ</translation>
+<translation id="4952981627953231344">આ ડિવાઇસ પર Plugin VMને મંજૂરી નથી. તમારી સંસ્થાના ડિવાઇસ વ્યવસ્થાપકનો સંપર્ક કરો.</translation>
 <translation id="4953689047182316270">ઍક્સેસિબિલિટી ઇવેન્ટનો જવાબ આપો</translation>
 <translation id="4953808748584563296">ડિફોલ્ટ નારંગી અવતાર</translation>
 <translation id="4955710816792587366">તમારો પિન પસંદ કરો</translation>
-<translation id="4955814292505481804">વાર્ષિક</translation>
 <translation id="4959262764292427323">પાસવર્ડ તમારા Google એકાઉન્ટમાં સાચવવામાં આવે છે, જેથી તમે કોઈપણ ઉપકરણ પર તેનો ઉપયોગ કરી શકો</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">આ ઍપ તમારા વ્યવસ્થાપક દ્વારા બનાવવામાં આવી હતી.</translation>
@@ -3238,7 +3255,6 @@
 <translation id="5659593005791499971">ઇમેઇલ</translation>
 <translation id="5659833766619490117">આ પેજનો અનુવાદ કરી શકાયો નથી</translation>
 <translation id="5660204307954428567"><ph name="DEVICE_NAME" /> સાથે જોડાણ કરો</translation>
-<translation id="5662477687021125631">શાશ્વત</translation>
 <translation id="5667546120811588575">Google Play સેટ કરી રહ્યાં છીએ...</translation>
 <translation id="5669267381087807207">સક્રિય કરી રહ્યું છે</translation>
 <translation id="5669691691057771421">નવો PIN દાખલ કરો</translation>
@@ -3254,6 +3270,7 @@
 <translation id="5687326903064479980">સમયઝોન</translation>
 <translation id="5689516760719285838">સ્થાન</translation>
 <translation id="56907980372820799">ડેટાને લિંક કરો</translation>
+<translation id="5691180005790455277"><ph name="SITE_GROUP_NAME" /> અને તેની હેઠળ આવતી કોઈપણ સાઇટ દ્વારા સ્ટોર થયેલો બધો ડેટા અને કુકી સાફ કરવામાં આવશે.</translation>
 <translation id="5691511426247308406">કુટુંબ</translation>
 <translation id="5692183275898619210">પ્રિન્ટ કરવાનું કાર્ય પૂર્ણ</translation>
 <translation id="5696143504434933566">"<ph name="EXTENSION_NAME" />" તરફથી દુરુપયોગની જાણ કરો</translation>
@@ -3340,7 +3357,6 @@
 <translation id="5815645614496570556">X.400 સરનામું</translation>
 <translation id="5816434091619127343">પ્રિન્ટર માટે વિનંતી કરેલ ફેરફારોને લીધે પ્રિન્ટર વાપરી શકાશે નહીં.</translation>
 <translation id="5817918615728894473">જોડી કરો</translation>
-<translation id="5819762621475381970">- તમારા રૂમનો લેઆઉટ</translation>
 <translation id="5821565227679781414">શૉર્ટકટ બનાવો</translation>
 <translation id="5825412242012995131">ચાલુ કરો (સુઝાવ આપેલ)</translation>
 <translation id="5826395379250998812">તમારા <ph name="DEVICE_TYPE" />ને તમારા ફોન સાથે કનેક્ટ કરો. <ph name="LINK_BEGIN" />વધુ જાણો<ph name="LINK_END" /></translation>
@@ -3477,6 +3493,7 @@
 <translation id="6007240208646052708">વૉઇસ શોધ સેવા તમારી ભાષામાં ઉપલબ્ધ નથી.</translation>
 <translation id="6009781704028455063">બિલ્ટ-ઇન સેન્સર</translation>
 <translation id="6010869025736512584">વીડિયો ઇનપુટને ઍક્સેસ કરી રહ્યાં છીએ</translation>
+<translation id="6011074160056912900">ઇથરનેટ નેટવર્ક</translation>
 <translation id="6011193465932186973">ફિંગરપ્રિન્ટ</translation>
 <translation id="6011449291337289699">સાઇટનો ડેટા સાફ કરો</translation>
 <translation id="6015266928248016057">અમાન્ય PUK. બાકીના ફરી પ્રયાસો: <ph name="RETRIES" />.</translation>
@@ -3513,6 +3530,7 @@
 <translation id="6053401458108962351">&amp;બ્રાઉઝિંગ ડેટા સાફ કરો...</translation>
 <translation id="6055171183283175969">તમે દાખલ કરેલો પાસવર્ડ ખોટો છે.</translation>
 <translation id="6055392876709372977">RSA એન્ક્રિપ્શનવાળા PKCS #1 SHA-256</translation>
+<translation id="6055907707645252013"><ph name="NETWORK_TYPE" /> નેટવર્ક, કનેક્ટ કરેલું નથી</translation>
 <translation id="6056710589053485679">સામાન્ય રીતે ફરીથી લોડ કરો</translation>
 <translation id="6057381398996433816">આ સાઇટને મોશન અને લાઇટ સેન્સરનો ઉપયોગ કરવાથી બ્લૉક કરવામાં આવી છે.</translation>
 <translation id="6058567592298841668">પ્લગ-ઇન વર્ચ્યુઅલ મશીન: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3576,6 +3594,7 @@
 <translation id="6136114942382973861">ડાઉનલોડ બાર બંધ કરો</translation>
 <translation id="6137767437444130246">વપરાશકર્તા પ્રમાણપત્ર</translation>
 <translation id="6138680304137685902">SHA-384 સાથે X9.62 ECDSA સહી</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, નેટવર્ક નથી</translation>
 <translation id="6141988275892716286">ડાઉનલોડની પુષ્ટિ કરો</translation>
 <translation id="6143186082490678276">સહાય મેળવો</translation>
 <translation id="6144938890088808325">Chromebooks બહેતર બનાવવામાં અમારી સહાય કરો</translation>
@@ -3882,6 +3901,7 @@
 <translation id="6602956230557165253">નૅવિગેટ કરવા માટે ડાબી અને જમણી Arrow કીનો ઉપયોગ કરો.</translation>
 <translation id="6605847144724004692">કોઈ વપરાશકર્તાએ હજુ રેટ કરેલ નથી.</translation>
 <translation id="6607831829715835317">વધુ સા&amp;ધનો</translation>
+<translation id="6611972847767394631">તમારા ટૅબ અહીં મેળવો</translation>
 <translation id="6612358246767739896">સુરક્ષિત કન્ટેન્ટ</translation>
 <translation id="6615455863669487791">મને બતાવો</translation>
 <translation id="6618097958368085618">તો પણ રાખો</translation>
@@ -3950,6 +3970,7 @@
 <translation id="6709133671862442373">News</translation>
 <translation id="6709357832553498500"><ph name="EXTENSIONNAME" /> નો ઉપયોગ કરીને કનેક્ટ કરો</translation>
 <translation id="6710213216561001401">પાછલી</translation>
+<translation id="6715803357256707211">તમારી Linux ઍપ્લિકેશનના ઇન્સ્ટૉલેશન દરમિયાન ભૂલ આવી. વિગતો માટે નોટિફિકેશન પર ક્લિક કરો.</translation>
 <translation id="6721678857435001674">તમારી સુરક્ષા કીની બનાવટ અને મૉડલ જુઓ</translation>
 <translation id="6721972322305477112">&amp;File</translation>
 <translation id="672213144943476270">અતિથિ તરીકે બ્રાઉઝ કરતાં પહેલાં કૃપા કરીને તમારી પ્રોફાઇલ અનલૉક કરો.</translation>
@@ -3974,7 +3995,6 @@
 <translation id="674632704103926902">ટૅપ કરીને ખેંચવાનું ચાલુ કરો</translation>
 <translation id="6748217015615267851">પ્રદર્શિત કરવું: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">તમે આગળ વધી શકો છો, પરંતુ માત્ર તમારો સમન્વયિત ડેટા અને સેટિંગ્સ પુનઃસ્થાપિત કરવામાં આવશે. બધો સ્થાનિક ડેટા ગુમ થઈ જશે.</translation>
-<translation id="6748775883310276718">સિંગલ ઍપ કિઓસ્ક</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (છૂપી)</translation>
 <translation id="6757101664402245801">URL કૉપિ કર્યું</translation>
 <translation id="6758056191028427665">અમને જણાવો કે અમે કેવું કાર્ય કરી રહ્યાં છીએ.</translation>
@@ -3984,6 +4004,7 @@
 <translation id="6769712124046837540">પ્રિન્ટર ઉમેરી રહ્યું છે...</translation>
 <translation id="6770664076092644100">NFC મારફતે ચકાસો</translation>
 <translation id="6771503742377376720">એ એક પ્રમાણન અધિકારી છે</translation>
+<translation id="6772339735733515807">તમારાં એક્સ્ટેંશન મેનેજ કરો</translation>
 <translation id="6775163072363532304">ઉપલબ્ધ ડિવાઇસ અહીં દેખાશે.</translation>
 <translation id="6777817260680419853">રીડાયરેક્ટ કરવાનું બ્લૉક કર્યું</translation>
 <translation id="6778737459546443941">તમારા માતાપિતાએ હજી સુધી તેને મંજૂર કરેલ નથી</translation>
@@ -4122,6 +4143,7 @@
 <translation id="6972180789171089114">ઑડિયો/વીડિયો</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> આ ફોલ્ડરમાં સાચવેલી ફાઇલો ખોલી શકતું નથી કારણ કે તેમાં સિસ્ટમ ફાઇલો શામેલ છે</translation>
 <translation id="6972754398087986839">પ્રારંભ કરો</translation>
+<translation id="6973611239564315524">Debian 10 માટેનું અપગ્રેડ (Buster) ઉપલબ્ધ છે</translation>
 <translation id="6974609594866392343">ઑફલાઇન ડેમો મોડ</translation>
 <translation id="6977381486153291903">ફર્મવેયર પુનરાવર્તન</translation>
 <translation id="6978121630131642226">શોધ એંજીન્સ</translation>
@@ -4581,6 +4603,7 @@
 <translation id="7644543211198159466">રંગ અને થીમ</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (માલિક)</translation>
 <translation id="7645681574855902035">Linuxનું બૅકઅપ રદ કરી રહ્યાં છીએ</translation>
+<translation id="7646772052135772216">પાસવર્ડ સિંક કાર્ય કરતું નથી</translation>
 <translation id="7647403192093989392">તાજેતરની કોઈ પ્રવૃત્તિ નથી</translation>
 <translation id="7648992873808071793">આ ઉપકરણ પર ફાઇલો સાચવો</translation>
 <translation id="7649070708921625228">સહાય</translation>
@@ -4768,6 +4791,7 @@
 <translation id="7877451762676714207">અજ્ઞાત સર્વર ભૂલ. કૃપા કરી ફરીથી પ્રયત્ન કરો અથવા સર્વર વ્યવસ્થાપકનો સંપર્ક કરો.</translation>
 <translation id="7877680364634660272">પ્રવાસ</translation>
 <translation id="7878562273885520351">તમારા પાસવર્ડ સાથે ચેડાં થઈ શકે છે</translation>
+<translation id="7879631849810108578">શૉર્ટકટ સેટ થયો: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">તમે ફરી શરૂ કરશો ત્યારે સ્થાનિક ડેટા ડિલીટ કરવામાં આવશે</translation>
 <translation id="7881483672146086348">એકાઉન્ટ જુઓ</translation>
 <translation id="7882358943899516840">પ્રદાતાનો પ્રકાર</translation>
@@ -4854,6 +4878,7 @@
 <translation id="7987814697832569482">હંમેશાં આ VPN મારફત કનેક્ટ કરો</translation>
 <translation id="7988355189918024273">ઍક્સેસિબિલિટી સુવિધાઓ ચાલુ કરો</translation>
 <translation id="7991296728590311172">સ્વિચ ઍક્સેસ સેટિંગ</translation>
+<translation id="7994350303002908848">Plugin VM ઇન્સ્ટૉલ કરી શકાયું નથી. કૃપા કરીને ફરી પ્રયાસ કરો અથવા તમારી સંસ્થાના ડિવાઇસ વ્યવસ્થાપકનો સંપર્ક કરો. ભૂલનો કોડ: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">EAP પદ્ધતિ</translation>
 <translation id="7997826902155442747">પ્રાધાન્યતા પર પ્રક્રિયા કરો</translation>
 <translation id="7999229196265990314">નીચેની ફાઇલો બનાવાઈ: એક્સટેન્શન: <ph name="EXTENSION_FILE" />કી ફાઇલ: <ph name="KEY_FILE" />તમારી કી ફાઇલને સુરક્ષિત સ્થાન પર મૂકો. તમને તેની જરૂરિયાત તમારા એક્સટેન્શનના નવા સંસ્કરણ બનાવવા માટે પડશે.</translation>
@@ -4941,7 +4966,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{ત્રીજા પક્ષની કોઈ કુકી નથી}=1{ત્રીજા પક્ષની 1 કુકી બ્લૉક કરવામાં આવી છે}one{ત્રીજા પક્ષની # કુકી બ્લૉક કરવામાં આવી છે}other{ત્રીજા પક્ષની # કુકી બ્લૉક કરવામાં આવી છે}}</translation>
 <translation id="810875025413331850">નજીકમાં કોઈ ડિવાઇસ ન મળ્યું.</translation>
 <translation id="8111155949205007504">તમાર iPhone સાથે આ પાસવર્ડ શેર કરો</translation>
-<translation id="8113043281354018522">લાઇસન્સનો પ્રકાર પસંદ કરો</translation>
 <translation id="8114875720387900039">સ્ક્રીનને આડી વિભાજિત કરો</translation>
 <translation id="8116972784401310538">&amp;બુકમાર્ક વ્યવસ્થાપક</translation>
 <translation id="8117620576188476503">સ્ટેટસ ટ્રે વડે કનેક્શન, અપડેટ અને સેટિંગ મેનેજ કરો. અહીં કીબોર્ડ વડે પહોંચવા માટે, Alt + Shift + S દબાવો.</translation>
@@ -5098,6 +5122,7 @@
 <translation id="8327039559959785305">Linux ફાઇલોને માઉન્ટ કરવામાં ભૂલ આવી છે. કૃપા કરીને ફરી પ્રયાસ કરો.</translation>
 <translation id="8335587457941836791">શેલ્ફમાંથી અનપિન કરો</translation>
 <translation id="8336407002559723354">અપડેટનો સમાપ્તિ સમય <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270"><ph name="LANGUAGE" />માં સિસ્ટમ ટેક્સ્ટ બતાવવા માટે ડિવાઇસને ફરી શરૂ કરો</translation>
 <translation id="8336739000755212683">ડિવાઇસના એકાઉન્ટની છબી બદલો</translation>
 <translation id="8337047789441383384">તમે પહેલેથી જ આ સુરક્ષા કોડ રજિસ્ટર કર્યો છે. તમારે ફરીથી રજિસ્ટર કરવાની જરૂર નથી.</translation>
 <translation id="8338952601723052325">વિકાસકર્તા વેબસાઇટ</translation>
@@ -5141,6 +5166,7 @@
 <translation id="8400146488506985033">લોકોને સંચાલિત કરો</translation>
 <translation id="8401432541486058167">તમારા સ્માર્ટ કાર્ડ સાથે સંકળાયેલો હોય તે પિન પ્રદાન કરો.</translation>
 <translation id="8405046151008197676">એકદમ નવી અપડેટની હાઇલાઇટ મેળવો</translation>
+<translation id="8408068190360279472"><ph name="NETWORK_TYPE" /> નેટવર્ક, કનેક્ટ કરી રહ્યું છે</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">પહેલા પૂછો (ભલામણ કરેલ)</translation>
 <translation id="8418445294933751433">ટૅબ તરીકે &amp;બતાવો</translation>
@@ -5430,6 +5456,7 @@
 <translation id="8807632654848257479">ઘોડાર</translation>
 <translation id="8808478386290700967">વેબ બજાર</translation>
 <translation id="8808686172382650546">બિલાડી</translation>
+<translation id="8808744862003883508">આ પેજ પર તમે Chromeમાં ઇન્સ્ટૉલ થયેલા બધા એક્સ્ટેંશન જોઈ શકો છો.</translation>
 <translation id="8809147117840417135">આછો મોરપીંછ</translation>
 <translation id="8813698869395535039"><ph name="USERNAME" /> પર સાઇન ઇન કરી શકતાં નથી</translation>
 <translation id="8813811964357448561">કાગળનું પત્રક</translation>
@@ -5657,7 +5684,6 @@
 <translation id="9121814364785106365">પિન કરેલા ટૅબ તરીકે ખોલો</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> થોભાવ્યું છે</translation>
 <translation id="9124003689441359348">સાચવેલા પાસવર્ડ અહીં દેખાશે</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> બાકી)</translation>
 <translation id="9128317794749765148">સેટઅપ પૂર્ણ ન થઈ શક્યું</translation>
 <translation id="9128870381267983090">નેટવર્કથી કનેક્ટ કરો</translation>
 <translation id="9130015405878219958">અમાન્ય મોડ દાખલ થયો.</translation>
@@ -5696,6 +5722,7 @@
 <translation id="9188732951356337132">વપરાશ અને નિદાનનો ડેટા મોકલો. આ ડિવાઇસ હાલમાં Googleને નિદાન, ડિવાઇસ અને ઍપ વપરાશનો ડેટા ઑટોમૅટિક રીતે મોકલી રહ્યું છે. આનો ઉપયોગ તમારા બાળકને ઓળખવા માટે થશે નહીં અને સિસ્ટમ અને ઍપની સ્થિરતા અને અન્ય સુધારણાઓમાં સહાય કરશે. એકત્રીકરણ કરેલો કેટલોક ડેટા Google ઍપ અને ભાગીદારોને પણ મદદ કરશે, જેમ કે Android ડેવલપર. જો તમારા બાળક માટે વધારાની વેબ અને ઍપ પ્રવૃત્તિ સેટિંગ ચાલુ હોય, તો આ ડેટા તેમના Google એકાઉન્ટમાં સાચવવામાં આવી શકે છે. <ph name="BEGIN_LINK2" />વધુ જાણો<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + પૂર્વ-શેર કરેલી કી</translation>
 <translation id="920045321358709304"><ph name="SEARCH_ENGINE" />માં શોધો</translation>
+<translation id="9201023452444595544">બધો ઑફલાઇન ડેટા સાફ કરવામાં આવશે</translation>
 <translation id="9201220332032049474">સ્ક્રીન લૉકના વિકલ્પો</translation>
 <translation id="9203398526606335860">&amp;પ્રોફાઇલિંગ સક્ષમ</translation>
 <translation id="9203904171912129171">ઉપકરણ પસંદ કરો</translation>
@@ -5708,6 +5735,7 @@
 <translation id="9220525904950070496">એકાઉન્ટ દૂર કરો</translation>
 <translation id="9220820413868316583">આંગળી ઉપાડી લો પછી ફરી પ્રયાસ કરો.</translation>
 <translation id="923467487918828349">બધું બતાવો</translation>
+<translation id="929117907539171075">ઇન્સ્ટૉલ કરેલી ઍપમાંનો ઑફલાઇન ડેટા પણ સાફ થઈ જશે</translation>
 <translation id="930268624053534560">વિગતવાર ટાઇમસ્ટેમ્પસ</translation>
 <translation id="932327136139879170">હોમ</translation>
 <translation id="932508678520956232">છાપકામ શરૂ કરી શકાયું નથી.</translation>
@@ -5733,6 +5761,7 @@
 <translation id="960719561871045870">ઑપરેટર કોડ</translation>
 <translation id="960987915827980018">લગભગ 1 કલાક બાકી</translation>
 <translation id="962802172452141067">બુકમાર્ક ફોલ્ડર વૃક્ષ</translation>
+<translation id="964057662886721376">કેટલાક એક્સ્ટેંશન ઝડપ ઘટાડી શકે છે - ખાસ કરીને એ જે તમારે ઇન્સ્ટૉલ નહોતાં કરવાં.</translation>
 <translation id="964286338916298286">તમારા IT વ્યવસ્થાપકે તમારા ઉપકરણ માટે Chrome ઑફરો બંધ કરેલી છે.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{ઍપ્લિકેશન}one{ઍપ્લિકેશનો}other{ઍપ્લિકેશનો}}</translation>
 <translation id="965211523698323809">તમારી <ph name="DEVICE_TYPE" />માંથી ટેક્સ્ટ સંદેશા મોકલો અને મેળવો. <ph name="LINK_BEGIN" />વધુ જાણો<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb
index 6b8fb60..bd6ddc82 100644
--- a/chrome/app/resources/generated_resources_hi.xtb
+++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">कस्टम</translation>
 <translation id="1178581264944972037">रोकें</translation>
 <translation id="117916940443676133">आपकी सुरक्षा कुंजी को पिन से सुरक्षित नहीं किया गया है. साइन इन करने के लिए डेटा प्रबंधित करने के लिए, पहले पिन बनाएं.</translation>
-<translation id="118069123878619799">- आपकी शारीरिक विशेषता, जैसे कि आपकी लंबाई</translation>
 <translation id="1181037720776840403">हटाएं</translation>
 <translation id="1183237619868651138">स्‍थानीय कैश में <ph name="EXTERNAL_CRX_FILE" /> को इंस्‍टॉल नहीं किया जा सका.</translation>
 <translation id="1185924365081634987">इस नेटवर्क गड़बड़ी को ठीक करने के लिए आप <ph name="GUEST_SIGNIN_LINK_START" />अतिथि के रूप में ब्राउज़ करें<ph name="GUEST_SIGNIN_LINK_END" /> को भी आज़मा सकते हैं.</translation>
@@ -1893,7 +1892,6 @@
 <translation id="3678156199662914018">एक्‍सटेंशन: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">आपके फ़ीडबैक के लिए धन्यवाद. आप अब ऑफ़लाइन हैं और आपकी रिपोर्ट बाद में भेज दी जाएगी.</translation>
 <translation id="3682824389861648626">माउस की गति की सीमा</translation>
-<translation id="3683023058278427253">हमें आपके डोमेन के लिए एक से ज़्यादा प्रकार के लाइसेंस मिले हैं. कृपया जारी रखने के लिए एक को चुनें.</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> स्क्रीन शेयर करने का अनुरोध</translation>
 <translation id="368789413795732264">फ़ाइल में लिखने का प्रयास करते समय कोई गड़बड़ी आई: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">  ऐप्लिकेशन में खोली गईं फ़ाइलों और फ़ोल्डर में लिखें</translation>
@@ -2156,7 +2154,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" इस ब्राउज़र को डीबग कर रहा है</translation>
 <translation id="4014432863917027322">"<ph name="EXTENSION_NAME" />" को ठीक करें?</translation>
 <translation id="4015163439792426608">एक्सटेंशन मिल गए? एक ही जगह पर आसानी से अपने <ph name="BEGIN_LINK" />एक्सटेंशन प्रबंधित करें<ph name="END_LINK" />.</translation>
-<translation id="4020106588733303597">ओह!  सिस्टम उपलब्ध लाइसेंस लोड नहीं कर सका.</translation>
 <translation id="4020327272915390518">विकल्प मेन्यू</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">शब्दकोश में &amp;जोड़ें</translation>
@@ -2659,7 +2656,6 @@
 <translation id="4823484602432206655">उपयोगकर्ता और डिवाइस सेटिंग पढ़ें और उसमें बदलाव करें</translation>
 <translation id="4824958205181053313">सिंक करना रद्द करें?</translation>
 <translation id="4827675678516992122">जोड़ा नहीं जा सका</translation>
-<translation id="4828937774870308359">आस्ट्रेलियाई</translation>
 <translation id="4829768588131278040">पिन सेट करें</translation>
 <translation id="4830502475412647084">OS अपडेट इंस्टॉल किया जा रहा है</translation>
 <translation id="4830573902900904548">आपका <ph name="DEVICE_TYPE" /> <ph name="NETWORK_NAME" /> का उपयोग करके इंटरनेट से कनेक्ट करने में असमर्थ है. कृपया कोई अन्य नेटवर्क चुनें. <ph name="LEARN_MORE_LINK_START" />और जानें<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2758,7 +2754,6 @@
 <translation id="4953689047182316270">सुलभता इवेंट का जवाब दें</translation>
 <translation id="4953808748584563296">डिफ़ॉल्ट नारंगी अवतार</translation>
 <translation id="4955710816792587366">अनलॉक करने के लिए अपना पिन चुनें</translation>
-<translation id="4955814292505481804">वार्षिक</translation>
 <translation id="4959262764292427323">पासवर्ड आपके Google खाते में सेव किए जाते हैं ताकि आप किसी भी डिवाइस पर उनका इस्तेमाल कर सकें</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">इस ऐप्लिकेशन को आपके एडमिन ने इंस्टॉल किया है.</translation>
@@ -3240,7 +3235,6 @@
 <translation id="5659593005791499971">ईमेल</translation>
 <translation id="5659833766619490117">इस पेज का अनुवाद नहीं किया जा सका</translation>
 <translation id="5660204307954428567"><ph name="DEVICE_NAME" /> से जोड़ें</translation>
-<translation id="5662477687021125631">लगातार</translation>
 <translation id="5667546120811588575">Google Play सेट अप किया जा रहा है...</translation>
 <translation id="5669267381087807207">सक्रिय कर रहा है</translation>
 <translation id="5669691691057771421">नया पिन डालें</translation>
@@ -3342,7 +3336,6 @@
 <translation id="5815645614496570556">X.400 पता</translation>
 <translation id="5816434091619127343">प्रिंटर में जिन बदलावों का अनुरोध किया गया है, उनकी वजह से प्रिंटर का इस्तेमाल नहीं किया जा सकेगा.</translation>
 <translation id="5817918615728894473">युग्‍मित करें</translation>
-<translation id="5819762621475381970">- आपके कमरे का लेआउट</translation>
 <translation id="5821565227679781414">शॉर्टकट बनाएं</translation>
 <translation id="5825412242012995131">चालू (सुुझाया गया)</translation>
 <translation id="5826395379250998812">अपने <ph name="DEVICE_TYPE" /> को फ़ोन से कनेक्ट करें. <ph name="LINK_BEGIN" />ज़्यादा जानें<ph name="LINK_END" /></translation>
@@ -3975,7 +3968,6 @@
 <translation id="674632704103926902">टैप करके खींचना चालू करें</translation>
 <translation id="6748217015615267851">रेंडरर: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">आप आगे बढ़ सकते हैं, लेकिन केवल आपके समन्वयित डेटा और सेटिंग को पुनर्स्थापित किया जाएगा. सभी स्थानीय डेटा खो जाएगा.</translation>
-<translation id="6748775883310276718">सिंगल ऐप्लिकेशन किओस्क</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (गुप्त)</translation>
 <translation id="6757101664402245801">URL कॉपी किया गया</translation>
 <translation id="6758056191028427665">हमें बताएं कि हम कैसा प्रदर्शन कर रहे हैं.</translation>
@@ -4947,7 +4939,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{तीसरे पक्ष की कोई कुकी नहीं है}=1{तीसरे पक्ष की 1 कुकी ब्लॉक की गई है}one{तीसरे पक्ष की # कुकी ब्लॉक की गई हैं}other{तीसरे पक्ष की # कुकी ब्लॉक की गई हैं}}</translation>
 <translation id="810875025413331850">आस-पास का कोई ब्लूटूथ डिवाइस नहीं मिला.</translation>
 <translation id="8111155949205007504">इस पासवर्ड को अपने iPhone से शेयर करें</translation>
-<translation id="8113043281354018522">लाइसेंस का प्रकार चुनें</translation>
 <translation id="8114875720387900039">हाॅरिज़ॉन्टल (बाईं से दाईं ओर) रूप से छोटे-छोटे हिस्सों में बांटें यानी स्प्लिट करें</translation>
 <translation id="8116972784401310538">&amp;बुकमार्क प्रबंधक</translation>
 <translation id="8117620576188476503">स्टेटस ट्रे के ज़रिए कनेक्शन, अपडेट और सेटिंग प्रबंधित करें. कीबोर्ड से यहां पहुंचने के लिए, Alt + Shift + S दबाएं.</translation>
@@ -5663,7 +5654,6 @@
 <translation id="9121814364785106365">छोटे टैब के रूप में खोलें</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> को रोका गया</translation>
 <translation id="9124003689441359348">सहेजे गए पासवर्ड यहां दिखाई देंगे</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> rem.)</translation>
 <translation id="9128317794749765148">सेटअप पूरा नहीं हो सका</translation>
 <translation id="9128870381267983090">नेटवर्क से कनेक्ट करें</translation>
 <translation id="9130015405878219958">गलत मोड डाला गया.</translation>
diff --git a/chrome/app/resources/generated_resources_hr.xtb b/chrome/app/resources/generated_resources_hr.xtb
index 7265a008..e202a8b2 100644
--- a/chrome/app/resources/generated_resources_hr.xtb
+++ b/chrome/app/resources/generated_resources_hr.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Prilagođeno</translation>
 <translation id="1178581264944972037">Pauziraj</translation>
 <translation id="117916940443676133">Vaš sigurnosni ključ nije zaštićen PIN-om. Za upravljanje podacima za prijavu prvo izradite PIN.</translation>
-<translation id="118069123878619799">– vaše fizičke značajke, primjerice visinu</translation>
 <translation id="1181037720776840403">Ukloni</translation>
 <translation id="1183237619868651138">Nije moguća instalacija datoteke <ph name="EXTERNAL_CRX_FILE" /> u lokalnu predmemoriju.</translation>
 <translation id="1185924365081634987">Možete pokušati <ph name="GUEST_SIGNIN_LINK_START" />pregledavati kao gost<ph name="GUEST_SIGNIN_LINK_END" /> da biste riješili tu mrežnu pogrešku.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">Čeka se <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033">Broj ostalih dostupnih uređaja: <ph name="NUM_PRINTERS" />.</translation>
 <translation id="1495677929897281669">Natrag na karticu</translation>
+<translation id="1499271269825557605">Ako ne prepoznajete proširenje ili ako vaš preglednik ne radi kako treba, ovdje možete isključiti proširenja ili ih prilagoditi.</translation>
 <translation id="1500297251995790841">Nepoznati uređaj [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Vlasnik ovog računa mora biti prvi prijavljeni račun u sesiji s višestrukom prijavom.</translation>
 <translation id="150411034776756821">Ukloni <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Stranici je zabranjen pristup vašoj kameri.</translation>
 <translation id="1507246803636407672">&amp;Odbaci</translation>
 <translation id="1508491105858779599">Postavite prst na senzor otiska prsta kako biste otključali uređaj.</translation>
+<translation id="1508575541972276599">Trenutačna verzija jest Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">pristupiti bilo kojem uređaju <ph name="DEVICE_NAME_AND_VENDOR" /> putem USB-a</translation>
 <translation id="150962533380566081">PUK nije važeći.</translation>
 <translation id="1510030919967934016">Ova je stranica blokirana u praćenju vaše lokacije.</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">Primijeni</translation>
 <translation id="1603914832182249871">(Anonimno)</translation>
 <translation id="1604432177629086300">Ispis nije uspio. Provjerite pisač i pokušajte ponovo.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: sinkronizacija zaporki ne radi</translation>
 <translation id="1607139524282324606">Brisanje unosa</translation>
 <translation id="1608626060424371292">Ukloni tog korisnika</translation>
 <translation id="1608668830839595724">Više radnji za odabrane stavke</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">Podaci hostiranih aplikacija</translation>
 <translation id="1776712937009046120">Dodaj korisnika</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Uređajem upravlja <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    Kliknite "Dalje" da biste se nastavili prijavljivati na <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> račun.</translation>
 <translation id="1779652936965200207">Unesite ovu zaporku na uređaju "<ph name="DEVICE_NAME" />":</translation>
 <translation id="1780152987505130652">Zatvori grupu</translation>
 <translation id="1781291988450150470">Trenutačni PIN</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">Radnja nije dostupna</translation>
 <translation id="2050339315714019657">Portret</translation>
 <translation id="2053312383184521053">Podaci o stanju mirovanja</translation>
+<translation id="2055585478631012616">Odjavit ćete se s tih web-lokacija, uključujući i prijave na otvorenim karticama</translation>
 <translation id="205560151218727633">Logotip Google asistenta</translation>
 <translation id="2058456167109518507">Otkriven je uređaj</translation>
 <translation id="2059913712424898428">Vremenska zona</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">Poništi</translation>
 <translation id="2080070583977670716">Više postavki</translation>
 <translation id="2087822576218954668">Ispis: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN mreža</translation>
 <translation id="2089566709556890888">Sigurno pregledavajte uz Google Chrome</translation>
 <translation id="2089795179672254991">Traži dopuštenje kada web-lokacija želi vidjeti tekst i slike kopirane u međuspremnik (preporučeno)</translation>
 <translation id="2090165459409185032">Za oporavak podataka o računu otvorite: google.com/accounts/recovery</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">Web-lokacija pristupa audio i videoulazu</translation>
 <translation id="2379281330731083556">Ispis pomoću dijaloškog okvira sustava... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Pitanje prije slanja (preporučeno)</translation>
+<translation id="2382818385048255866">Provjerite proširenja</translation>
 <translation id="2384436799579181135">Došlo je do pogreške. Provjerite pisač i pokušajte opet.</translation>
 <translation id="2387458720915042159">Vrsta proxy veze</translation>
 <translation id="2391419135980381625">Standardni font</translation>
@@ -1036,6 +1043,7 @@
 <translation id="2462724976360937186">ID ključa tijela za izdavanje certifikata</translation>
 <translation id="2462752602710430187">Dodano: <ph name="PRINTER_NAME" /></translation>
 <translation id="2464089476039395325">HTTP proxy</translation>
+<translation id="2467267713099745100"><ph name="NETWORK_TYPE" /> mreža, isključena</translation>
 <translation id="2468205691404969808">Upotrebljava kolačiće za pamćenje vaših postavki, čak i ako ne posjetite te stranice</translation>
 <translation id="2468402215065996499">Tamagotchi</translation>
 <translation id="2469259292033957819">Nemate nijedan spremljeni pisač.</translation>
@@ -1290,6 +1298,7 @@
 <translation id="2800760947029405028">Prenesite sliku</translation>
 <translation id="2803375539583399270">Unesite PIN</translation>
 <translation id="2804043232879091219">Nije bilo moguće otvoriti zamjenski preglednik</translation>
+<translation id="2804667941345577550">Odjavit ćete se s ove stranice, uključujući i prijave na otvorenim karticama</translation>
 <translation id="2804680522274557040">Kamera je isključena</translation>
 <translation id="2805646850212350655">Microsoftov sustav šifriranja datoteke</translation>
 <translation id="2805756323405976993">Aplikacije</translation>
@@ -1297,6 +1306,7 @@
 <translation id="2806891468525657116">Prečac već postoji</translation>
 <translation id="2807517655263062534">Ovdje se prikazuju datoteke koje ste preuzeli</translation>
 <translation id="2809586584051668049">i još <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2810390687497823527">Ako ne prepoznajete proširenje ili ako vaš preglednik ne radi kako treba, ovdje možete isključiti proširenja ili ih prilagoditi.</translation>
 <translation id="2812049959647166806">Thunderbolt nije podržan</translation>
 <translation id="2812944337881233323">Odjavite se, pa se ponovo prijavite</translation>
 <translation id="2812989263793994277">Ne prikazuj nikakve slike</translation>
@@ -1336,6 +1346,7 @@
 <translation id="2861941300086904918">Sigurnosni upravitelj izvornog klijenta</translation>
 <translation id="2864601841139725659">Postavite profilnu sliku</translation>
 <translation id="2865919525181940183">Snimka zaslona programa koji su trenutačno na zaslonu</translation>
+<translation id="286674810810214575">Provjera izvora napajanja...</translation>
 <translation id="2867768963760577682">Otvori kao prikvačenu karticu</translation>
 <translation id="2868746137289129307">Proširenje je zastarjelo, pa su ga pravila tvrtke onemogućila. Možda će se automatski omogućiti kada postane dostupna novija verzija.</translation>
 <translation id="2870560284913253234">Web lokacija</translation>
@@ -1413,6 +1424,7 @@
 <translation id="2972581237482394796">&amp;Vrati poništeno</translation>
 <translation id="2973324205039581528">Zanemari web-lokaciju</translation>
 <translation id="2977480621796371840">Ukloni iz grupe</translation>
+<translation id="2979520980928493164">Zdraviji i sretniji Chrome</translation>
 <translation id="2979639724566107830">Otvori u novom prozoru</translation>
 <translation id="2981113813906970160">Prikaži veliki pokazivač miša</translation>
 <translation id="2982970937345031">Prijavi anonimno</translation>
@@ -1519,6 +1531,7 @@
 <translation id="3143515551205905069">Otkaži sinkronizaciju</translation>
 <translation id="3143754809889689516">Reproduciraj od početka</translation>
 <translation id="3144647712221361880">Otvori vezu kao</translation>
+<translation id="3145187901750964977">Nije bila moguća instalacija virtualnog računala. Pokušajte ponovno kasnije ili se obratite administratoru uređaja u svojoj organizaciji. Kôd pogreške: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Verzija:
     <ph name="LINUX_VERSION" />
 
@@ -1557,6 +1570,7 @@
 <translation id="3192947282887913208">Audio datoteke</translation>
 <translation id="3194737229810486521"><ph name="URL" /> želi trajno pohraniti podatke na vaš uređaj</translation>
 <translation id="3199127022143353223">Poslužitelji</translation>
+<translation id="3201306578844503970">Nije bila moguća instalacija virtualnog računala zbog mrežne pogreške. Pokušajte ponovno kasnije ili se obratite administratoru uređaja u svojoj organizaciji. Kôd pogreške: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Dostupni USB uređaji prikazat će se ovdje.</translation>
 <translation id="3202131003361292969">Put</translation>
 <translation id="3202173864863109533">Zvuk ove kartice isključen je.</translation>
@@ -1893,7 +1907,6 @@
 <translation id="3678156199662914018">Proširenje: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Zahvaljujemo vam na povratnim informacijama. Trenutačno ste offline, pa će se izvješće poslati kasnije.</translation>
 <translation id="3682824389861648626">Prag pokreta</translation>
-<translation id="3683023058278427253">Otkrili smo više vrsta licenci za vašu domenu. Odaberite jednu za nastavak.</translation>
 <translation id="3683524264665795342">Zahtjev aplikacije <ph name="APP_NAME" /> za dijeljenje zaslona</translation>
 <translation id="368789413795732264">Došlo je do pogreške pri pokušaju pisanja datoteke: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">pisati u datoteke i mape koje otvorite u aplikaciji</translation>
@@ -2067,6 +2080,7 @@
 <translation id="389589731200570180">Dijeljenje s gostima</translation>
 <translation id="389901847090970821">Odaberite tipkovnicu</translation>
 <translation id="3899879303189199559">Izvan mreže više od godinu dana</translation>
+<translation id="3900789207771372462">Neka proširenja mogu vidjeti vašu aktivnost pregledavanja, uključujući osobne podatke.</translation>
 <translation id="3900966090527141178">Izvoz zaporki</translation>
 <translation id="3901991538546252627">Povezivanje s mrežom <ph name="NAME" /></translation>
 <translation id="3905761538810670789">Popravi aplikaciju</translation>
@@ -2157,7 +2171,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" ispravlja programske pogreške u ovom pregledniku</translation>
 <translation id="4014432863917027322">Popraviti "<ph name="EXTENSION_NAME" />"?</translation>
 <translation id="4015163439792426608">Imate li proširenja? <ph name="BEGIN_LINK" />Upravljajte svojim proširenjima<ph name="END_LINK" /> na jednom mjestu.</translation>
-<translation id="4020106588733303597">Ajoj! Sustav nije uspio učitati dostupne licence.</translation>
 <translation id="4020327272915390518">Izbornik s opcijama</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Dodaj u rječnik</translation>
@@ -2195,6 +2208,7 @@
 <translation id="407520071244661467">Skaliranje</translation>
 <translation id="4075639477629295004">Nije moguće emitirati <ph name="FILE_NAME" />.</translation>
 <translation id="4077917118009885966">Oglasi su blokirani na ovoj web-lokaciji</translation>
+<translation id="4077919383365622693">Izbrisat će se svi podaci i kolačići koji su pohranjeni na web-lokaciji <ph name="SITE" />.</translation>
 <translation id="4079140982534148664">Koristi poboljšanu provjeru pravopisa</translation>
 <translation id="4081242589061676262">Nije moguće emitirati datoteku.</translation>
 <translation id="4084682180776658562">Oznaka</translation>
@@ -2269,6 +2283,7 @@
 <translation id="4181841719683918333">Jezici</translation>
 <translation id="4184885522552335684">Povucite da biste premjestili zaslon</translation>
 <translation id="4194570336751258953">Omogući dodir umjesto klika</translation>
+<translation id="4194595472342532425">Nije bilo moguće postaviti dodatak VM zbog problema s konfiguracijom. Obratite se administratoru uređaja organizacije. Kôd pogreške: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Otvori na novoj kartici</translation>
 <translation id="4195814663415092787">Nastavite tamo gdje ste stali</translation>
 <translation id="4198146608511578238">Samo držite ikonu Pokretača da biste razgovarali s Google asistentom.</translation>
@@ -2492,6 +2507,7 @@
 <translation id="4549791035683739768">Na vašem sigurnosnom ključu nema pohranjenih otisaka prstiju</translation>
 <translation id="4551763574344810652">Pritisnite <ph name="MODIFIER_KEY_DESCRIPTION" /> za poništavanje</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005"><ph name="NETWORK_TYPE" /> mreža, jačina signala <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">Vanjsko proširenje iste je ili starije verzije u odnosu na postojeću.</translation>
 <translation id="4555769855065597957">Sjena</translation>
 <translation id="4555863373929230635">Da biste spremili zaporke na svoj Google račun, prijavite se i uključite sinkronizaciju.</translation>
@@ -2569,6 +2585,7 @@
 <translation id="4665446389743427678">Izbrisat će se svi podaci koje je pohranila web-lokacija <ph name="SITE" />.</translation>
 <translation id="4668721319092543482">Kliknite da biste omogućili <ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">Sažmi stranicu</translation>
+<translation id="46733273239502219">Izbrisat će se i offline podaci u instaliranim aplikacijama</translation>
 <translation id="4673442866648850031">Alati pisaljke otvaraju se i zatvaraju kad se umetne ili izbaci pisaljka</translation>
 <translation id="4677585247300749148"><ph name="URL" /> želi odgovoriti na događaje pristupačnosti</translation>
 <translation id="4677772697204437347">Memorija grafičkog procesora</translation>
@@ -2660,7 +2677,6 @@
 <translation id="4823484602432206655">čitati i mijenjati korisničke postavke i postavke uređaja</translation>
 <translation id="4824958205181053313">Otkazati sinkronizaciju?</translation>
 <translation id="4827675678516992122">Povezivanje nije uspjelo</translation>
-<translation id="4828937774870308359">Australsko (obrnuto)</translation>
 <translation id="4829768588131278040">Postavi PIN</translation>
 <translation id="4830502475412647084">Instaliranje ažuriranja OS-a</translation>
 <translation id="4830573902900904548">Vaš uređaj <ph name="DEVICE_TYPE" /> ne može se povezati s internetom putem mreže <ph name="NETWORK_NAME" />. Odaberite drugu mrežu. <ph name="LEARN_MORE_LINK_START" />Saznajte više<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2701,6 +2717,7 @@
 <translation id="4876273079589074638">Pomognite našim inženjerima da istraže i isprave rušenje. Navedite točne korake ako možete. Svaka je pojedinost važna!</translation>
 <translation id="4876895919560854374">zaključati i otključati zaslon</translation>
 <translation id="4877276003880815204">Pregledajte elemente</translation>
+<translation id="4878653975845355462">Vaš administrator isključio je prilagođene pozadine</translation>
 <translation id="4879491255372875719">Automatski (zadano)</translation>
 <translation id="4880328057631981605">Naziv pristupne točke</translation>
 <translation id="4880827082731008257">Pretraži povijest</translation>
@@ -2756,10 +2773,10 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" želi se povezati sa serijskim priključkom</translation>
 <translation id="4944310289250773232">Tu uslugu provjere autentičnosti hostira <ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">Radnje</translation>
+<translation id="4952981627953231344">Dodatak VM nije dopušten na ovom uređaju. Obratite se administratoru uređaja organizacije.</translation>
 <translation id="4953689047182316270">Odgovori na događaje pristupačnosti</translation>
 <translation id="4953808748584563296">Zadani narančasti avatar</translation>
 <translation id="4955710816792587366">Odaberite PIN</translation>
-<translation id="4955814292505481804">Godišnji</translation>
 <translation id="4959262764292427323">Zaporke se spremaju na vaš Google račun kako biste ih mogli upotrebljavati na bilo kojem uređaju</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Aplikaciju je instalirao vaš administrator.</translation>
@@ -3241,7 +3258,6 @@
 <translation id="5659593005791499971">E-pošta</translation>
 <translation id="5659833766619490117">Stranicu nije moguće prevesti</translation>
 <translation id="5660204307954428567">Upariti s uređajem <ph name="DEVICE_NAME" />?</translation>
-<translation id="5662477687021125631">Trajni</translation>
 <translation id="5667546120811588575">Postavljanje Google Playa...</translation>
 <translation id="5669267381087807207">Aktivacija</translation>
 <translation id="5669691691057771421">Unesite novi PIN</translation>
@@ -3257,6 +3273,7 @@
 <translation id="5687326903064479980">Vremenska zona</translation>
 <translation id="5689516760719285838">Lokacija</translation>
 <translation id="56907980372820799">Povežite podatke</translation>
+<translation id="5691180005790455277">Izbrisat će se svi podaci i kolačići koje je spremila web-lokacija <ph name="SITE_GROUP_NAME" /> i sve pripadajuće web-lokacije.</translation>
 <translation id="5691511426247308406">Obitelj</translation>
 <translation id="5692183275898619210">Ispis je dovršen</translation>
 <translation id="5696143504434933566">Prijavi zloupotrebu za proširenje "<ph name="EXTENSION_NAME" />"</translation>
@@ -3343,7 +3360,6 @@
 <translation id="5815645614496570556">X.400 adresa</translation>
 <translation id="5816434091619127343">Tražene izmjene pisača učinile bi pisač neupotrebljivim.</translation>
 <translation id="5817918615728894473">Upari</translation>
-<translation id="5819762621475381970">– izgled vaše sobe</translation>
 <translation id="5821565227679781414">Stvori prečac</translation>
 <translation id="5825412242012995131">Uključeno (preporučeno)</translation>
 <translation id="5826395379250998812">Povežite <ph name="DEVICE_TYPE" /> s telefonom <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation>
@@ -3479,6 +3495,7 @@
 <translation id="6007240208646052708">Glasovno pretraživanje na vašem jeziku nije dostupno.</translation>
 <translation id="6009781704028455063">Ugrađeni senzor</translation>
 <translation id="6010869025736512584">Pristupanje videoulazu</translation>
+<translation id="6011074160056912900">Ethernet mreža</translation>
 <translation id="6011193465932186973">Otisak prsta</translation>
 <translation id="6011449291337289699">Brisanje podataka web-lokacija</translation>
 <translation id="6015266928248016057">PUK nije važeći. Preostalih pokušaja: <ph name="RETRIES" />.</translation>
@@ -3515,6 +3532,7 @@
 <translation id="6053401458108962351">&amp;Obriši podatke pregledavanja...</translation>
 <translation id="6055171183283175969">Zaporka koju ste unijeli nije točna.</translation>
 <translation id="6055392876709372977">PKCS br. 1 SHA-256 s RSA enkripcijom</translation>
+<translation id="6055907707645252013"><ph name="NETWORK_TYPE" /> mreža, nije povezana</translation>
 <translation id="6056710589053485679">Normalno ponovno učitavanje</translation>
 <translation id="6057381398996433816">Toj je web-lokaciji blokirana upotreba senzora pokreta i svjetla.</translation>
 <translation id="6058567592298841668">Plugin Virtual Machine: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3578,6 +3596,7 @@
 <translation id="6136114942382973861">Zatvori traku preuzimanja</translation>
 <translation id="6137767437444130246">Korisnički certifikat</translation>
 <translation id="6138680304137685902">X9.62 ECDSA potpis uz SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, nema mreže</translation>
 <translation id="6141988275892716286">Potvrda preuzimanja</translation>
 <translation id="6143186082490678276">Traženje pomoći</translation>
 <translation id="6144938890088808325">Pomozite nam poboljšati Chromebook</translation>
@@ -3884,6 +3903,7 @@
 <translation id="6602956230557165253">Krećite se pomoću lijeve i desne strelice.</translation>
 <translation id="6605847144724004692">Još nije ocijenio nijedan korisnik.</translation>
 <translation id="6607831829715835317">Više a&amp;lata</translation>
+<translation id="6611972847767394631">Ovdje možete pronaći svoje kartice</translation>
 <translation id="6612358246767739896">Zaštićeni sadržaj</translation>
 <translation id="6615455863669487791">Pokaži mi</translation>
 <translation id="6618097958368085618">Svejedno zadrži</translation>
@@ -3952,6 +3972,7 @@
 <translation id="6709133671862442373">Vijesti</translation>
 <translation id="6709357832553498500">Poveži pomoću proširenja <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Prethodno</translation>
+<translation id="6715803357256707211">Došlo je do pogreške tijekom instalacije Linux aplikacije. Za pojedinosti kliknite obavijest.</translation>
 <translation id="6721678857435001674">Pogledajte izradu i model sigurnosnog ključa</translation>
 <translation id="6721972322305477112">&amp;File (Datoteka)</translation>
 <translation id="672213144943476270">Otključajte profil da biste mogli pregledavati kao gost.</translation>
@@ -3976,7 +3997,6 @@
 <translation id="674632704103926902">Omogući povlačenje dodirom</translation>
 <translation id="6748217015615267851">Ispunjivač: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Možete nastaviti, no vratit će se samo sinkronizirani podaci i postavke. Izgubit će se svi lokalni podaci.</translation>
-<translation id="6748775883310276718">Kiosk jedne aplikacije</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Anonimno)</translation>
 <translation id="6757101664402245801">URL kopiran</translation>
 <translation id="6758056191028427665">Recite nam koliko ste zadovoljni nama.</translation>
@@ -3986,6 +4006,7 @@
 <translation id="6769712124046837540">Dodavanje pisača...</translation>
 <translation id="6770664076092644100">Potvrda putem NFC-a</translation>
 <translation id="6771503742377376720">jest tijelo za izdavanje certifikata</translation>
+<translation id="6772339735733515807">Upravljanje proširenjima</translation>
 <translation id="6775163072363532304">Ovdje će se pojaviti dostupni uređaji.</translation>
 <translation id="6777817260680419853">Preusmjeravanje je blokirano</translation>
 <translation id="6778737459546443941">Roditelj je još nije odobrio</translation>
@@ -4124,6 +4145,7 @@
 <translation id="6972180789171089114">Audiozapisi/videozapisi</translation>
 <translation id="6972553992270299730">Web-lokacija <ph name="ORIGIN" /> ne može otvoriti datoteke u ovoj mapi jer sadrži datoteke sustava</translation>
 <translation id="6972754398087986839">Početak upotrebe</translation>
+<translation id="6973611239564315524">Dostupna je nadogradnja na Debian 10 (Buster)</translation>
 <translation id="6974609594866392343">Izvanmrežni demo način</translation>
 <translation id="6977381486153291903">Revizija opreme</translation>
 <translation id="6978121630131642226">Tražilice</translation>
@@ -4583,6 +4605,7 @@
 <translation id="7644543211198159466">Boja i tema</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (vlasnik)</translation>
 <translation id="7645681574855902035">Otkazivanje sigurnosnog kopiranja Linuxa</translation>
+<translation id="7646772052135772216">Sinkronizacija zaporki ne radi</translation>
 <translation id="7647403192093989392">Nema nedavne aktivnosti</translation>
 <translation id="7648992873808071793">spremati datoteke na uređaj</translation>
 <translation id="7649070708921625228">Pomoć</translation>
@@ -4771,6 +4794,7 @@
 <translation id="7877451762676714207">Nepoznata pogreška poslužitelja. Pokušajte ponovo ili se obratite administratoru poslužitelja.</translation>
 <translation id="7877680364634660272">Obilazak</translation>
 <translation id="7878562273885520351">Vaša je zaporka možda ugrožena</translation>
+<translation id="7879631849810108578">Skup prečaca: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Lokalni podaci izbrisat će se prilikom ponovnog pokretanja</translation>
 <translation id="7881483672146086348">Prikaz računa</translation>
 <translation id="7882358943899516840">Vrsta davatelja usluge</translation>
@@ -4857,6 +4881,7 @@
 <translation id="7987814697832569482">Uvijek se povezuj putem ovog VPN-a</translation>
 <translation id="7988355189918024273">Omogući značajke dostupnosti</translation>
 <translation id="7991296728590311172">Postavke prekidača za pristup</translation>
+<translation id="7994350303002908848">Nije bila moguća instalacija dodatka VM. Pokušajte ponovno kasnije ili se obratite administratoru uređaja u svojoj organizaciji. Kôd pogreške: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">EAP metoda</translation>
 <translation id="7997826902155442747">Prioritet obrade</translation>
 <translation id="7999229196265990314">Stvorene su sljedeće datoteke:
@@ -4949,7 +4974,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Bez kolačića treće strane}=1{Blokiran je jedan kolačić treće strane}one{Blokiran je # kolačić treće strane}few{Blokirana su # kolačića treće strane}other{Blokirano je # kolačića treće strane}}</translation>
 <translation id="810875025413331850">Nije pronađen nijedan uređaj u blizini.</translation>
 <translation id="8111155949205007504">Dijelite ovu zaporku sa svojim iPhoneom</translation>
-<translation id="8113043281354018522">Odaberite vrstu licence</translation>
 <translation id="8114875720387900039">Podijeli vodoravno</translation>
 <translation id="8116972784401310538">&amp;Upravitelj oznaka</translation>
 <translation id="8117620576188476503">Upravljajte vezama, ažuriranjima i postavkama pomoću ladice statusa. Da biste je otvorili pomoću tipkovnice, pritisnite Alt + Shift + S.</translation>
@@ -5106,6 +5130,7 @@
 <translation id="8327039559959785305">Pogreška tijekom učitavanja Linux datoteka. Pokušajte ponovo.</translation>
 <translation id="8335587457941836791">Otkvači s police</translation>
 <translation id="8336407002559723354">Ažuriranja završavaju <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Ponovno pokrenite uređaj za prikaz teksta sustava na jeziku: <ph name="LANGUAGE" /></translation>
 <translation id="8336739000755212683">Promijenite sliku računa uređaja</translation>
 <translation id="8337047789441383384">Već ste registrirali taj sigurnosni ključ. Ne morate ga ponovo registrirati.</translation>
 <translation id="8338952601723052325">Web-lokacija razvojnog programera</translation>
@@ -5149,6 +5174,7 @@
 <translation id="8400146488506985033">Upravljaj korisnicima</translation>
 <translation id="8401432541486058167">Unesite PIN za pametnu karticu.</translation>
 <translation id="8405046151008197676">Primite najzanimljivije dijelove najnovijeg ažuriranja</translation>
+<translation id="8408068190360279472"><ph name="NETWORK_TYPE" /> mreža, povezivanje</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Prvo pitaj (preporučeno)</translation>
 <translation id="8418445294933751433">&amp;Prikaži kao karticu</translation>
@@ -5438,6 +5464,7 @@
 <translation id="8807632654848257479">Stabilno</translation>
 <translation id="8808478386290700967">Web Store</translation>
 <translation id="8808686172382650546">Mačka</translation>
+<translation id="8808744862003883508">Na ovoj stranici možete vidjeti sva proširenja instalirana u Chromeu.</translation>
 <translation id="8809147117840417135">Svijetlotirkiznoplava</translation>
 <translation id="8813698869395535039">Prijava na <ph name="USERNAME" /> nije uspjela</translation>
 <translation id="8813811964357448561">list papira</translation>
@@ -5665,7 +5692,6 @@
 <translation id="9121814364785106365">Otvori kao pričvršćenu karticu</translation>
 <translation id="9122176249172999202">Preglednik <ph name="IDS_SHORT_PRODUCT_NAME" /> je pauziran</translation>
 <translation id="9124003689441359348">Ovdje će se pojaviti spremljene zaporke</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> rem.)</translation>
 <translation id="9128317794749765148">Postavljanje nije dovršeno</translation>
 <translation id="9128870381267983090">Povezivanje s mrežom</translation>
 <translation id="9130015405878219958">Unesen je nevažeći način.</translation>
@@ -5704,6 +5730,7 @@
 <translation id="9188732951356337132">Slanje podataka o upotrebi i dijagnostici. Ovaj uređaj trenutačno Googleu automatski šalje dijagnostičke podatke te podatke o upotrebi uređaja i aplikacija. Ti se podaci neće upotrebljavati za identifikaciju vašeg djeteta, a pomoći će poboljšati sustav, stabilnost aplikacija i drugo. Neki skupni podaci pomoći će i Googleovim aplikacijama i partnerima, na primjer razvojnim programerima za Android. Ako je za vaše dijete uključena dodatna postavka Aktivnost na webu i u aplikacijama, ti se podaci mogu spremati na djetetov Google račun. <ph name="BEGIN_LINK2" />Saznajte više<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + unaprijed dijeljeni ključ</translation>
 <translation id="920045321358709304">Pretraži <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">Izbrisat će se svi offline podaci</translation>
 <translation id="9201220332032049474">Opcije zaključavanja zaslona</translation>
 <translation id="9203398526606335860">&amp;Profiliranje omogućeno</translation>
 <translation id="9203904171912129171">Odaberite uređaj</translation>
@@ -5716,6 +5743,7 @@
 <translation id="9220525904950070496">Uklanjanje računa</translation>
 <translation id="9220820413868316583">Podignite, a zatim pokušajte ponovo.</translation>
 <translation id="923467487918828349">Prikaži sve</translation>
+<translation id="929117907539171075">Izbrisat će se i offline podaci u instaliranoj aplikaciji</translation>
 <translation id="930268624053534560">Detaljne vremenske oznake</translation>
 <translation id="932327136139879170">Početna stranica</translation>
 <translation id="932508678520956232">Nije bilo moguće pokrenuti ispis.</translation>
@@ -5741,6 +5769,7 @@
 <translation id="960719561871045870">Kôd operatera</translation>
 <translation id="960987915827980018">Još otprilike 1 sat</translation>
 <translation id="962802172452141067">Stablo mape oznaka</translation>
+<translation id="964057662886721376">Neka vas proširenja mogu usporiti, pogotovo ona koja niste namjeravali instalirati.</translation>
 <translation id="964286338916298286">Vaš IT administrator onemogućio je Chrome pogodnosti za vaš uređaj.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Aplikacija}one{Aplikacije}few{Aplikacije}other{Aplikacija}}</translation>
 <translation id="965211523698323809">Šaljite i primajte tekstne poruke na uređaju <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Saznajte više<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_hu.xtb b/chrome/app/resources/generated_resources_hu.xtb
index d2cee79..f0b47d3 100644
--- a/chrome/app/resources/generated_resources_hu.xtb
+++ b/chrome/app/resources/generated_resources_hu.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Egyéni</translation>
 <translation id="1178581264944972037">Szünet</translation>
 <translation id="117916940443676133">Biztonsági hardverkulcsát nem védi PIN-kód. A bejelentkezési adatok kezeléséhez előbb hozzon létre PIN-kódot.</translation>
-<translation id="118069123878619799">– az Ön fizikai jellemzőiről, például a magasságáról;</translation>
 <translation id="1181037720776840403">Eltávolítás</translation>
 <translation id="1183237619868651138">A(z) <ph name="EXTERNAL_CRX_FILE" /> nem telepíthető a helyi gyorsítótárban.</translation>
 <translation id="1185924365081634987">A hiba javításához kipróbálhatja a <ph name="GUEST_SIGNIN_LINK_START" />vendégként történő böngészést is<ph name="GUEST_SIGNIN_LINK_END" />.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">Várakozás a következőre: <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> további elérhető eszköz.</translation>
 <translation id="1495677929897281669">Vissza a lapra</translation>
+<translation id="1499271269825557605">Ha nem ismeri fel valamelyik bővítményt, vagy ha a böngésző nem a vártnak megfelelően működik, itt kikapcsolhatja és személyre szabhatja a bővítményeket.</translation>
 <translation id="1500297251995790841">Ismeretlen eszköz [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Ennek a tulajdonosi fióknak kell lennie az első bejelentkezett fióknak a többfiókos bejelentkezés munkamenete során.</translation>
 <translation id="150411034776756821"><ph name="SITE" /> eltávolítása</translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Az oldal nem férhet hozzá az Ön kamerájához.</translation>
 <translation id="1507246803636407672">&amp;Elvetés</translation>
 <translation id="1508491105858779599">Az eszköz zárolásának feloldásához helyezze ujját az ujjlenyomat-érzékelőre.</translation>
+<translation id="1508575541972276599">Jelenlegi verzió: Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">Bármely <ph name="DEVICE_NAME_AND_VENDOR" /> elérése USB-n keresztül</translation>
 <translation id="150962533380566081">Érvénytelen PUK-kód.</translation>
 <translation id="1510030919967934016">Ez az oldal nem figyelheti a tartózkodási helyét.</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">Alkalmaz</translation>
 <translation id="1603914832182249871">(Inkognitómód)</translation>
 <translation id="1604432177629086300">Nem sikerült nyomtatni. Ellenőrizze a nyomtatót, és próbálja újra.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: Nem működik a jelszavak szinkronizálása</translation>
 <translation id="1607139524282324606">Bejegyzés törlése</translation>
 <translation id="1608626060424371292">Felhasználó eltávolítása</translation>
 <translation id="1608668830839595724">További műveletek a kiválasztott elemeknél</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">Tárolt alkalmazás adatai</translation>
 <translation id="1776712937009046120">Felhasználó hozzáadása</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Ezt az eszközt a következő kezeli: <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    Kattintson a „Tovább” lehetőségre a(z) <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> fiókba való bejelentkezés folytatásához.</translation>
 <translation id="1779652936965200207">Kérjük, írja be ezt az azonosítókulcsot a(z) " <ph name="DEVICE_NAME" /> " eszközön:</translation>
 <translation id="1780152987505130652">Csoport bezárása</translation>
 <translation id="1781291988450150470">Jelenlegi PIN-kód</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">A művelet nem végezhető el</translation>
 <translation id="2050339315714019657">Álló</translation>
 <translation id="2053312383184521053">Tétlen állapot adatai</translation>
+<translation id="2055585478631012616">A rendszer kijelentkezteti ezekről a webhelyekről (a megnyitott lapok esetében is)</translation>
 <translation id="205560151218727633">A Google Segéd logója</translation>
 <translation id="2058456167109518507">Eszköz észlelve</translation>
 <translation id="2059913712424898428">Időzóna</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">Visszavonás</translation>
 <translation id="2080070583977670716">További beállítások</translation>
 <translation id="2087822576218954668">Nyomtatás: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN-hálózat</translation>
 <translation id="2089566709556890888">Biztonságos böngészés a Google Chrome-mal</translation>
 <translation id="2089795179672254991">Kérdezzen meg, amikor az adott webhely szeretné megtekinteni a vágólapra másolt szövegeket és képeket (ajánlott)</translation>
 <translation id="2090165459409185032">Fiókadatainak helyreállításához lépjen a következő oldalra: google.com/accounts/recovery</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">Az egyik webhely jelenleg használja a hang- és videobemenetet</translation>
 <translation id="2379281330731083556">Nyomtatás a rendszer párbeszédablakán keresztül... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Kérdezzen rá küldés előtt (ajánlott)</translation>
+<translation id="2382818385048255866">Bővítmények ellenőrzése</translation>
 <translation id="2384436799579181135">Hiba történt. Ellenőrizze a nyomtatót, majd próbálja újra.</translation>
 <translation id="2387458720915042159">Proxykapcsolat típusa</translation>
 <translation id="2391419135980381625">Alapértelmezett betűtípus</translation>
@@ -1036,6 +1043,7 @@
 <translation id="2462724976360937186">Tanúsítványkibocsátó kulcsazonosítója</translation>
 <translation id="2462752602710430187"><ph name="PRINTER_NAME" /> hozzáadva</translation>
 <translation id="2464089476039395325">HTTP-proxy</translation>
+<translation id="2467267713099745100">Hálózat: <ph name="NETWORK_TYPE" />, kikapcsolva</translation>
 <translation id="2468205691404969808">Cookie-kat használ a preferenciák megjegyzésére még akkor is, ha Ön nem keresi fel azokat az oldalakat</translation>
 <translation id="2468402215065996499">Tamagocsi</translation>
 <translation id="2469259292033957819">Nincsenek mentett nyomtatók.</translation>
@@ -1290,6 +1298,7 @@
 <translation id="2800760947029405028">Kép feltöltése</translation>
 <translation id="2803375539583399270">PIN-kód megadása</translation>
 <translation id="2804043232879091219">Nem sikerült megnyitni a másik böngészőt</translation>
+<translation id="2804667941345577550">A rendszer kijelentkezteti erről a webhelyről (a megnyitott lapok esetében is)</translation>
 <translation id="2804680522274557040">Kamera kikapcsolva</translation>
 <translation id="2805646850212350655">Microsoft - fájlrendszer titkosítása</translation>
 <translation id="2805756323405976993">Alkalmazások</translation>
@@ -1297,6 +1306,7 @@
 <translation id="2806891468525657116">Ez a billentyűparancs már létezik</translation>
 <translation id="2807517655263062534">A letöltött fájlok itt jelennek meg</translation>
 <translation id="2809586584051668049">és <ph name="NUMBER_ADDITIONAL_DISABLED" /> további</translation>
+<translation id="2810390687497823527">Ha nem ismeri fel valamelyik bővítményt, vagy ha a böngésző nem a vártnak megfelelően működik, itt kikapcsolhatja és személyre szabhatja a bővítményeket.</translation>
 <translation id="2812049959647166806">A Thunderbolt nem támogatott</translation>
 <translation id="2812944337881233323">Próbáljon meg kijelentkezni, majd újra bejelentkezni</translation>
 <translation id="2812989263793994277">Ne mutassa a képeket</translation>
@@ -1336,6 +1346,7 @@
 <translation id="2861941300086904918">Natív kliens biztonságkezelő</translation>
 <translation id="2864601841139725659">Profilkép beállítása</translation>
 <translation id="2865919525181940183">A jelenleg a képernyőn lévő programok képernyőképe</translation>
+<translation id="286674810810214575">Erőforrások ellenőrzése…</translation>
 <translation id="2867768963760577682">Megnyitás rögzített lapként</translation>
 <translation id="2868746137289129307">Ez a bővítmény elavult, így a vállalati házirend letiltotta. A bővítményt automatikusan ismét engedélyezheti a rendszer akkor, amikor egy újabb verzió elérhetővé válik.</translation>
 <translation id="2870560284913253234">Webhely</translation>
@@ -1413,6 +1424,7 @@
 <translation id="2972581237482394796">&amp;Újra</translation>
 <translation id="2973324205039581528">Webhely némítása</translation>
 <translation id="2977480621796371840">Eltávolítás a csoportból</translation>
+<translation id="2979520980928493164">Egy egészségesebb és boldogabb Chrome</translation>
 <translation id="2979639724566107830">Megnyitás új ablakban</translation>
 <translation id="2981113813906970160">Nagy egérmutató megjelenítése</translation>
 <translation id="2982970937345031">Jelentés névtelenül</translation>
@@ -1519,6 +1531,7 @@
 <translation id="3143515551205905069">Szinkronizálás megszakítása</translation>
 <translation id="3143754809889689516">Lejátszás az elejétől</translation>
 <translation id="3144647712221361880">Link megnyitása mint</translation>
+<translation id="3145187901750964977">Nem sikerült a virtuális gép telepítése. Próbálja újra, vagy forduljon a szervezet eszközadminisztrátorához. Hibakód: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Verzió:
     <ph name="LINUX_VERSION" />
 
@@ -1557,6 +1570,7 @@
 <translation id="3192947282887913208">Audiofájlok</translation>
 <translation id="3194737229810486521">A(z) <ph name="URL" /> webhely állandó jelleggel adatokat szeretne tárolni az eszközön</translation>
 <translation id="3199127022143353223">Szerverek</translation>
+<translation id="3201306578844503970">Hálózati hiba miatt nem sikerült a virtuális gép telepítése. Próbálja újra, vagy forduljon a szervezet eszközadminisztrátorához. Hibakód: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">A rendelkezésre álló USB-eszközök itt jelennek meg.</translation>
 <translation id="3202131003361292969">Útvonal</translation>
 <translation id="3202173864863109533">A lap hangja némítva van.</translation>
@@ -1893,7 +1907,6 @@
 <translation id="3678156199662914018">Bővítmény: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Köszönjük visszajelzését. Most nincs internetkapcsolata, ezért a jelentést később küldi el a böngésző.</translation>
 <translation id="3682824389861648626">Mozgási küszöbérték</translation>
-<translation id="3683023058278427253">Több licenctípust is találtunk a domainhez. Válasszon egyet a folytatáshoz.</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> – Képernyő-megosztási kérés</translation>
 <translation id="368789413795732264">A fájl írásakor hiba történt: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Az alkalmazásban megnyitott fájlok és mappák írása</translation>
@@ -2067,6 +2080,7 @@
 <translation id="389589731200570180">Megosztás vendégekkel</translation>
 <translation id="389901847090970821">Billentyűzet kiválasztása</translation>
 <translation id="3899879303189199559">Több mint egy éve offline</translation>
+<translation id="3900789207771372462">Egyes bővítmények láthatják az Ön böngészési tevékenységeit – beleértve a személyes adatokat is.</translation>
 <translation id="3900966090527141178">Jelszavak exportálása</translation>
 <translation id="3901991538546252627">Csatlakozás a következőhöz: <ph name="NAME" /></translation>
 <translation id="3905761538810670789">Alkalmazás javítása</translation>
@@ -2156,7 +2170,6 @@
 <translation id="4013132157686828973">A(z) „<ph name="CLIENT_NAME" />” hibakeresést hajt végre a böngészőnél</translation>
 <translation id="4014432863917027322">Javítja a következőt: „<ph name="EXTENSION_NAME" />”?</translation>
 <translation id="4015163439792426608">Használ bővítményeket? Egyetlen helyen, egyszerűen <ph name="BEGIN_LINK" />kezelheti őket<ph name="END_LINK" />.</translation>
-<translation id="4020106588733303597">Hoppá! A rendszer nem tudta betölteni a rendelkezésre álló licenceket.</translation>
 <translation id="4020327272915390518">Beállítások menü</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Hozzáadás a szótárhoz</translation>
@@ -2194,6 +2207,7 @@
 <translation id="407520071244661467">Átméretezés</translation>
 <translation id="4075639477629295004">Nem lehet átküldeni a következőt: <ph name="FILE_NAME" />.</translation>
 <translation id="4077917118009885966">A webhelyen letiltott hirdetések találhatók</translation>
+<translation id="4077919383365622693">A(z) <ph name="SITE" /> által tárolt összes adat és cookie törlődik.</translation>
 <translation id="4079140982534148664">Továbbfejlesztett helyesírás-ellenőrzés használata</translation>
 <translation id="4081242589061676262">Nem sikerült a fájl átküldése.</translation>
 <translation id="4084682180776658562">Könyvjelző</translation>
@@ -2268,6 +2282,7 @@
 <translation id="4181841719683918333">Nyelvek</translation>
 <translation id="4184885522552335684">Húzza a kijelzők áthelyezéséhez</translation>
 <translation id="4194570336751258953">A kattintás érintéssel engedélyezése</translation>
+<translation id="4194595472342532425">Konfigurációs probléma miatt nem sikerült a Plugin VM beállítása. Forduljon a szervezet eszközadminisztrátorához. Hibakód: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Megnyitás új lapon</translation>
 <translation id="4195814663415092787">Folytatás ott, ahol abbahagyta</translation>
 <translation id="4198146608511578238">Ha Google Segédjével szeretne beszélni, tartsa egyszerűen lenyomva az Indító ikont.</translation>
@@ -2491,6 +2506,7 @@
 <translation id="4549791035683739768">A biztonsági kulcs nem tárol ujjlenyomatokat</translation>
 <translation id="4551763574344810652">Nyomja meg a <ph name="MODIFIER_KEY_DESCRIPTION" /> billentyűparancsot a visszavonáshoz</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005">Hálózat: <ph name="NETWORK_TYPE" />, jelerősség: <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">A külső bővítmény a meglévő bővítmény verziószintjén vagy az alatt van.</translation>
 <translation id="4555769855065597957">Árnyék</translation>
 <translation id="4555863373929230635">A jelszavak Google-fiókba való mentéséhez jelentkezzen be, és kapcsolja be a szinkronizálást.</translation>
@@ -2568,6 +2584,7 @@
 <translation id="4665446389743427678">A(z) <ph name="SITE" /> által tárolt összes adat törlődik.</translation>
 <translation id="4668721319092543482">Kattintson a(z) <ph name="PLUGIN_NAME" /> engedélyezéséhez</translation>
 <translation id="4672657274720418656">Oldal előállítása</translation>
+<translation id="46733273239502219">A telepített alkalmazásokban található offline adatok is törlődnek</translation>
 <translation id="4673442866648850031">Érintőceruza-eszközök megnyitása az érintőceruza eltávolításakor</translation>
 <translation id="4677585247300749148">A(z) <ph name="URL" /> kisegítő lehetőségekkel kapcsolatos eseményekre szeretne válaszolni</translation>
 <translation id="4677772697204437347">GPU memóriája</translation>
@@ -2659,7 +2676,6 @@
 <translation id="4823484602432206655">A felhasználó és az eszköz beállításainak olvasása és módosítása</translation>
 <translation id="4824958205181053313">Megszakítja a szinkronizálást?</translation>
 <translation id="4827675678516992122">Nem sikerült csatlakozni</translation>
-<translation id="4828937774870308359">Ausztrál</translation>
 <translation id="4829768588131278040">PIN-kód beállítása</translation>
 <translation id="4830502475412647084">Az operációs rendszer frissítésének telepítése folyamatban</translation>
 <translation id="4830573902900904548">A(z) <ph name="DEVICE_TYPE" /> nem tud csatlakozni az internethez a következő hálózaton: <ph name="NETWORK_NAME" />. Kérjük, válasszon másik hálózatot. <ph name="LEARN_MORE_LINK_START" />További információ<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2700,6 +2716,7 @@
 <translation id="4876273079589074638">Segítse mérnökeinket az összeomlás kivizsgálásában és kijavításában. Ha lehet, adja meg a pontos lépéseket. Nem létezik túl apró részlet!</translation>
 <translation id="4876895919560854374">A képernyő feloldása és zárolása</translation>
 <translation id="4877276003880815204">Elemek vizsgálata</translation>
+<translation id="4878653975845355462">Az adminisztrátor letiltotta az egyéni háttérképeket</translation>
 <translation id="4879491255372875719">Automatikus (alapértelmezett)</translation>
 <translation id="4880328057631981605">Hozzáférési pont neve</translation>
 <translation id="4880827082731008257">Keresés az előzmények között</translation>
@@ -2755,10 +2772,10 @@
 <translation id="4943691134276646401">A(z) „<ph name="CHROME_EXTENSION_NAME" />” soros porthoz szeretne csatlakozni</translation>
 <translation id="4944310289250773232">Ezt a hitelesítési szolgáltatást a(z) <ph name="SAML_DOMAIN" /> biztosítja</translation>
 <translation id="495170559598752135">Műveletek</translation>
+<translation id="4952981627953231344">A Plugin VM nem engedélyezett ezen az eszközön. Forduljon a szervezet eszközadminisztrátorához.</translation>
 <translation id="4953689047182316270">Válasz kisegítő lehetőségekkel kapcsolatos eseményekre</translation>
 <translation id="4953808748584563296">Alapértelmezett narancssárga avatar</translation>
 <translation id="4955710816792587366">PIN-kód kiválasztása</translation>
-<translation id="4955814292505481804">Éves</translation>
 <translation id="4959262764292427323">A jelszavakat Google-fiókjába mentjük, hogy bármelyik eszközén használhassa őket</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Ezt az alkalmazást az Ön adminisztrátora telepítette.</translation>
@@ -3242,7 +3259,6 @@
 <translation id="5659593005791499971">E-mail</translation>
 <translation id="5659833766619490117">Nem sikerült lefordítani az oldalt</translation>
 <translation id="5660204307954428567">Párosítás a következővel: <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Örökös</translation>
 <translation id="5667546120811588575">A Google Play beállítása…</translation>
 <translation id="5669267381087807207">Aktiválás</translation>
 <translation id="5669691691057771421">Új PIN-kód megadása</translation>
@@ -3258,6 +3274,7 @@
 <translation id="5687326903064479980">Időzóna</translation>
 <translation id="5689516760719285838">Tartózkodási hely</translation>
 <translation id="56907980372820799">Adatok összekapcsolása</translation>
+<translation id="5691180005790455277">A(z) <ph name="SITE_GROUP_NAME" /> és a hozzá tartozó webhelyek által tárolt összes adat és cookie törlődik.</translation>
 <translation id="5691511426247308406">Család</translation>
 <translation id="5692183275898619210">Nyomtatás kész</translation>
 <translation id="5696143504434933566">Visszaélés bejelentése a következővel kapcsolatban: <ph name="EXTENSION_NAME" /></translation>
@@ -3344,7 +3361,6 @@
 <translation id="5815645614496570556">X.400 cím</translation>
 <translation id="5816434091619127343">A kívánt nyomtatómódosítások használhatatlanná tehetik a nyomtatót.</translation>
 <translation id="5817918615728894473">Párosítás</translation>
-<translation id="5819762621475381970">– a szoba elrendezéséről.</translation>
 <translation id="5821565227679781414">Parancsikon létrehozása</translation>
 <translation id="5825412242012995131">Be (javasolt)</translation>
 <translation id="5826395379250998812">Csatlakoztassa <ph name="DEVICE_TYPE" /> eszközét telefonjához. <ph name="LINK_BEGIN" />További információ.<ph name="LINK_END" /></translation>
@@ -3480,6 +3496,7 @@
 <translation id="6007240208646052708">A hangalapú keresés nem áll rendelkezésre az Ön nyelvén.</translation>
 <translation id="6009781704028455063">Beépített érzékelő</translation>
 <translation id="6010869025736512584">Hozzáférés videobemenethez</translation>
+<translation id="6011074160056912900">Ethernet-hálózat</translation>
 <translation id="6011193465932186973">Ujjlenyomat</translation>
 <translation id="6011449291337289699">Webhelyadatok törlése</translation>
 <translation id="6015266928248016057">Érvénytelen PUK-kód. Próbálkozási lehetőségek száma: <ph name="RETRIES" />.</translation>
@@ -3516,6 +3533,7 @@
 <translation id="6053401458108962351">&amp;Böngészési adatok törlése...</translation>
 <translation id="6055171183283175969">A megadott jelszó helytelen.</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 RSA titkosítással</translation>
+<translation id="6055907707645252013">Hálózat: <ph name="NETWORK_TYPE" />, nincs csatlakoztatva</translation>
 <translation id="6056710589053485679">Normál újratöltés</translation>
 <translation id="6057381398996433816">Ennél a webhelynél le van tiltva a mozgás- és fényérzékelők használata.</translation>
 <translation id="6058567592298841668">Virtuális gép beépülő modul: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3579,6 +3597,7 @@
 <translation id="6136114942382973861">A letöltéssáv bezárása</translation>
 <translation id="6137767437444130246">Felhasználói tanúsítvány</translation>
 <translation id="6138680304137685902">X9.62 ECDSA aláírás a következővel: SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, nincs hálózat</translation>
 <translation id="6141988275892716286">Letöltés megerősítése</translation>
 <translation id="6143186082490678276">Súgó</translation>
 <translation id="6144938890088808325">Segítsen nekünk a Chromebookok továbbfejlesztésében</translation>
@@ -3885,6 +3904,7 @@
 <translation id="6602956230557165253">Használja a bal és jobb nyílgombokat a navigáláshoz.</translation>
 <translation id="6605847144724004692">Még egyetlen felhasználó sem értékelte.</translation>
 <translation id="6607831829715835317">További eszközök</translation>
+<translation id="6611972847767394631">Itt találhatja lapjait</translation>
 <translation id="6612358246767739896">Védett tartalom</translation>
 <translation id="6615455863669487791">Megjelenítés</translation>
 <translation id="6618097958368085618">Megtartás</translation>
@@ -3953,6 +3973,7 @@
 <translation id="6709133671862442373">Hírek</translation>
 <translation id="6709357832553498500">Csatlakozás a következővel: <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Előző</translation>
+<translation id="6715803357256707211">Hiba történt a Linux-alkalmazás telepítése során. Részletekért kattintson az értesítésre.</translation>
 <translation id="6721678857435001674">Biztonsági hardverkulcsa gyártmányának és típusának megtekintése</translation>
 <translation id="6721972322305477112">&amp;Fájl</translation>
 <translation id="672213144943476270">Kérjük, oldja fel profilját, mielőtt vendégként kezdene böngészni.</translation>
@@ -3977,7 +3998,6 @@
 <translation id="674632704103926902">Érintéssel húzás engedélyezése</translation>
 <translation id="6748217015615267851">Megjelenítő: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Továbbléphet, de csak szinkronizált adatait és beállításait állítjuk helyre. Összes helyi adata elvész.</translation>
-<translation id="6748775883310276718">Egyalkalmazásos kioszk</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Inkognitómód)</translation>
 <translation id="6757101664402245801">Az URL kimásolva</translation>
 <translation id="6758056191028427665">Ossza meg velünk, mennyire van megelégedve munkánkkal.</translation>
@@ -3987,6 +4007,7 @@
 <translation id="6769712124046837540">Nyomtató hozzáadása...</translation>
 <translation id="6770664076092644100">Igazolás NFC-n keresztül</translation>
 <translation id="6771503742377376720">Tanúsítványkibocsátó</translation>
+<translation id="6772339735733515807">A bővítmények kezelése</translation>
 <translation id="6775163072363532304">A hozzáférhető eszközök itt jelennek meg.</translation>
 <translation id="6777817260680419853">Átirányítás letiltva</translation>
 <translation id="6778737459546443941">A szülő még nem hagyta jóvá</translation>
@@ -4125,6 +4146,7 @@
 <translation id="6972180789171089114">Hanganyag/videó</translation>
 <translation id="6972553992270299730">A(z) <ph name="ORIGIN" /> nem nyithatja meg az ebben a mappában lévő fájlokat, mert rendszerfájlok találhatók benne</translation>
 <translation id="6972754398087986839">Első lépések</translation>
+<translation id="6973611239564315524">Frissíthet a következőre: Debian 10 (Buster)</translation>
 <translation id="6974609594866392343">Offline demó mód</translation>
 <translation id="6977381486153291903">Firmware ellenőrzése</translation>
 <translation id="6978121630131642226">Keresők</translation>
@@ -4584,6 +4606,7 @@
 <translation id="7644543211198159466">Szín és téma</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (tulajdonos)</translation>
 <translation id="7645681574855902035">A Linux biztonsági mentésének megszakítása…</translation>
+<translation id="7646772052135772216">Nem működik a jelszavak szinkronizálása</translation>
 <translation id="7647403192093989392">Nem volt tevékenység mostanában</translation>
 <translation id="7648992873808071793">Fájlok tárolása ezen az eszközön</translation>
 <translation id="7649070708921625228">Súgó</translation>
@@ -4772,6 +4795,7 @@
 <translation id="7877451762676714207">Ismeretlen szerverhiba. Kérjük, próbálja újra, vagy lépjen kapcsolatba a szerver rendszergazdájával.</translation>
 <translation id="7877680364634660272">Bemutató</translation>
 <translation id="7878562273885520351">Előfordultat, hogy jelszava már nem biztonságos</translation>
+<translation id="7879631849810108578">Billentyűparancs beállítva: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Újraindításkor törlődnek a helyi adatok</translation>
 <translation id="7881483672146086348">Fiók megtekintése</translation>
 <translation id="7882358943899516840">Szolgáltató típusa</translation>
@@ -4858,6 +4882,7 @@
 <translation id="7987814697832569482">Mindig ezen a VPN-en keresztül csatlakozzon</translation>
 <translation id="7988355189918024273">Kisegítő lehetőségek bekapcsolása</translation>
 <translation id="7991296728590311172">A kapcsolóalapú hozzáférés beállításai</translation>
+<translation id="7994350303002908848">Nem sikerült a Plugin VM telepítése. Próbálja újra, vagy forduljon a szervezet eszközadminisztrátorához. Hibakód: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">EAP módszer</translation>
 <translation id="7997826902155442747">Folyamatprioritás</translation>
 <translation id="7999229196265990314">A rendszer a következő fájlokat hozta létre:
@@ -4950,7 +4975,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Nem találhatók harmadik féltől származó cookie-k}=1{1 harmadik féltől származó cookie letiltva}other{# harmadik féltől származó cookie letiltva}}</translation>
 <translation id="810875025413331850">Nem található közeli eszköz.</translation>
 <translation id="8111155949205007504">Ossza meg ezt a jelszót iPhone eszközével</translation>
-<translation id="8113043281354018522">Válasszon licenctípust</translation>
 <translation id="8114875720387900039">Felosztás vízszintesen</translation>
 <translation id="8116972784401310538">&amp;Könyvjelzőkezelő</translation>
 <translation id="8117620576188476503">Kapcsolatok, frissítések és beállítások kezelése az állapottálca segítségével. Ha a billentyűzet segítségével szeretne ide eljutni, használja az Alt+Shift+s billentyűparancsot.</translation>
@@ -5107,6 +5131,7 @@
 <translation id="8327039559959785305">Hiba történt a Linux-fájlok csatlakoztatásakor. Próbálja újra.</translation>
 <translation id="8335587457941836791">Rögzítés feloldása a polcon</translation>
 <translation id="8336407002559723354">A frissítések érkezésének végső dátuma: <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Indítsa újra az eszközt, hogy a rendszer <ph name="LANGUAGE" /> nyelven jelenhessen meg</translation>
 <translation id="8336739000755212683">Eszközfiókhoz tartozó kép módosítása</translation>
 <translation id="8337047789441383384">Már regisztrálta ezt a biztonsági hardverkulcsot. Nem szükséges ismét regisztrálnia.</translation>
 <translation id="8338952601723052325">Fejlesztő webhelye</translation>
@@ -5150,6 +5175,7 @@
 <translation id="8400146488506985033">Személyek kezelése</translation>
 <translation id="8401432541486058167">Adja meg az intelligens kártyájához tartozó PIN-kódot.</translation>
 <translation id="8405046151008197676">Tekintse át a legutóbbi frissítés összefoglalóját</translation>
+<translation id="8408068190360279472">Hálózat: <ph name="NETWORK_TYPE" />. Csatlakozás…</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Kérdezzen rá (ajánlott)</translation>
 <translation id="8418445294933751433">&amp;Megjelenítés lapként</translation>
@@ -5439,6 +5465,7 @@
 <translation id="8807632654848257479">Stabil</translation>
 <translation id="8808478386290700967">Chrome internetes áruház</translation>
 <translation id="8808686172382650546">Macska</translation>
+<translation id="8808744862003883508">Ezen az oldalon található a Chrome böngészőbe telepített összes bővítmény.</translation>
 <translation id="8809147117840417135">Világos pávakék</translation>
 <translation id="8813698869395535039">Nem lehet bejelentkezni a következő fiókba: <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">papírlap</translation>
@@ -5666,7 +5693,6 @@
 <translation id="9121814364785106365">Megnyitás rögzített lapként</translation>
 <translation id="9122176249172999202">A(z) <ph name="IDS_SHORT_PRODUCT_NAME" /> szünetel</translation>
 <translation id="9124003689441359348">A mentett jelszavak itt jelennek meg</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> maradt)</translation>
 <translation id="9128317794749765148">Nem sikerült a beállítás befejezése</translation>
 <translation id="9128870381267983090">Csatlakozás hálózathoz</translation>
 <translation id="9130015405878219958">Érvénytelen módot adott meg.</translation>
@@ -5705,6 +5731,7 @@
 <translation id="9188732951356337132">Használati és diagnosztikai adatok küldése. Ez az eszköz jelenleg automatikusan küld diagnosztikai, eszköz- és alkalmazáshasználati adatokat a Google-nak. Az adatok a rendszer- és alkalmazásstabilitás javításában, valamint más fejlesztésekben segítenek, nem használjuk fel őket az Ön gyermekének azonosítására. Bizonyos összesített adatok a Google-alkalmazásoknak és -partnereknek, például az Android-fejlesztőknek is segítenek. Ha az Internetes és alkalmazástevékenységek beállítás is be van kapcsolva a gyermekénél, akkor a rendszer ezeket az adatokat mentheti a gyermek Google-fiókjába. <ph name="BEGIN_LINK2" />További információ.<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPSec + előre megosztott kulcs</translation>
 <translation id="920045321358709304">Keresés a következővel: <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">Az offline adatok törlődnek</translation>
 <translation id="9201220332032049474">A képernyőzár beállításai</translation>
 <translation id="9203398526606335860">&amp;Profilozás bekapcsolva</translation>
 <translation id="9203904171912129171">Válassza ki a kívánt eszközt</translation>
@@ -5717,6 +5744,7 @@
 <translation id="9220525904950070496">Fiók eltávolítása</translation>
 <translation id="9220820413868316583">Emelje fel ujját, majd próbálja újra.</translation>
 <translation id="923467487918828349">Összes megjelenítése</translation>
+<translation id="929117907539171075">A telepített alkalmazásban található offline adatok is törlődnek</translation>
 <translation id="930268624053534560">Részletes időbélyegek</translation>
 <translation id="932327136139879170">Főoldal</translation>
 <translation id="932508678520956232">Nem sikerült előkészíteni a nyomtatást.</translation>
@@ -5742,6 +5770,7 @@
 <translation id="960719561871045870">Operátorkód</translation>
 <translation id="960987915827980018">Körülbelül 1 óra van hátra</translation>
 <translation id="962802172452141067">Könyvjelzők mapparendszere</translation>
+<translation id="964057662886721376">Bizonyos bővítmények lassíthatják a rendszert – főleg azok, amelyeket nem akart telepíteni.</translation>
 <translation id="964286338916298286">Rendszergazdája letiltotta a Chrome-ajánlatokat az Ön eszközén.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Alkalmazás}other{Alkalmazások}}</translation>
 <translation id="965211523698323809">SMS-t küldhet és fogadhat <ph name="DEVICE_TYPE" /> eszközével. <ph name="LINK_BEGIN" />További információ.<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_hy.xtb b/chrome/app/resources/generated_resources_hy.xtb
index cf6ec84..6c6f102 100644
--- a/chrome/app/resources/generated_resources_hy.xtb
+++ b/chrome/app/resources/generated_resources_hy.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Անհատականացված</translation>
 <translation id="1178581264944972037">Դադար</translation>
 <translation id="117916940443676133">Անվտանգության բանալին պաշտպանված չէ PIN-ով: Մուտքի տվյալները կառավարելու համար նախ ստեղծեք PIN կոդ:</translation>
-<translation id="118069123878619799">– ձեր ֆիզիկական բնութագրերը, օրինակ՝ հասակը,</translation>
 <translation id="1181037720776840403">Ջնջել</translation>
 <translation id="1183237619868651138">Չհաջողվեց տեղադրել <ph name="EXTERNAL_CRX_FILE" />-ը տեղային քեշում:</translation>
 <translation id="1185924365081634987">Ցանցի այս սխալն ուղղելու համար փորձեք <ph name="GUEST_SIGNIN_LINK_START" />մտնել հյուրի ռեժիմ<ph name="GUEST_SIGNIN_LINK_END" />:</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381"><ph name="LOAD_STATE_PARAMETER" />-ի սպասում…</translation>
 <translation id="1495486559005647033">Եվս <ph name="NUM_PRINTERS" /> մատչելի սարք:</translation>
 <translation id="1495677929897281669">Վերադառնալ ներդիր</translation>
+<translation id="1499271269825557605">Եթե ընդլայնումը ձեզ անհայտ է կամ եթե ձեր դիտարկիչը սխալներով է աշխատում, կարող եք անջատել կամ կարգավորել ընդլայնումներն այստեղ։</translation>
 <translation id="1500297251995790841">Անհայտ սարք [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Բազմակի մուտքի աշխատաշրջանում տիրոջ հաշիվը պետք է առաջին մուտք գործած հաշիվը լինի:</translation>
 <translation id="150411034776756821">Հեռացնել <ph name="SITE" /> կայքը</translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Այս էջին արգելված է օգտագործել ձեր տեսախցիկը:</translation>
 <translation id="1507246803636407672">&amp;Հրաժարվել</translation>
 <translation id="1508491105858779599">Սարքն ապակողպելու համար մատը դրեք մատնահետքի սենսորի վրա։</translation>
+<translation id="1508575541972276599">Ընթացիկ տարբերակ՝ Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">Մուտք գործեք ցանկացած <ph name="DEVICE_NAME_AND_VENDOR" /> սարք USB-ի միջոցով</translation>
 <translation id="150962533380566081">Անվավեր PUK:</translation>
 <translation id="1510030919967934016">Այս էջը չի կարող հետագծել ձեր տեղադրությունը:</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">Կիրառել</translation>
 <translation id="1603914832182249871">(Ինկոգնիտո)</translation>
 <translation id="1604432177629086300">Չհաջողվեց տպել: Ստուգեք տպիչը և նորից փորձեք:</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />՝ գաղտնաբառերի համաժամացումը չի աշխատում</translation>
 <translation id="1607139524282324606">Մաքրել հաղորդագրությունը</translation>
 <translation id="1608626060424371292">Հեռացնել այս պրոֆիլը</translation>
 <translation id="1608668830839595724">Այլ գործողություններ ընտրված տարրերի համար</translation>
@@ -560,6 +562,9 @@
 <translation id="177336675152937177">Խնամվող հավելվածների տվյալները</translation>
 <translation id="1776712937009046120">Ավելացնել օգտատեր</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Այս սարքը կառավարվում է <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> տիրույթի կողմից:
+    
+    Սեղմեք «Հաջորդը» կոճակը՝ ձեր <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> հաշիվ մտնելու համար:</translation>
 <translation id="1779652936965200207">Մուտքագրեք այս մուտքի բանալին «<ph name="DEVICE_NAME" />» սարքում`</translation>
 <translation id="1780152987505130652">Փակել խումբը</translation>
 <translation id="1781291988450150470">Ընթացիկ PIN կոդը</translation>
@@ -747,6 +752,7 @@
 <translation id="2048653237708779538">Գործողությունը հասանելի չէ</translation>
 <translation id="2050339315714019657">Ուղղաձիգ</translation>
 <translation id="2053312383184521053">Անգործուն վիճակի տվյալներ</translation>
+<translation id="2055585478631012616">Դուք դուրս կգրվեք հաշվից այս կայքերում և բաց ներդիրներում</translation>
 <translation id="205560151218727633">Google Օգնականի լոգո</translation>
 <translation id="2058456167109518507">Հայտնաբերվել է սարք</translation>
 <translation id="2059913712424898428">Ժամային գոտի</translation>
@@ -762,6 +768,7 @@
 <translation id="2079545284768500474">Հետարկել</translation>
 <translation id="2080070583977670716">Այլ կարգավորումներ</translation>
 <translation id="2087822576218954668">Տպում՝ <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN ցանց</translation>
 <translation id="2089566709556890888">Համացանցում ավելի անվտանգ շրջեք Google Chrome-ի օգնությամբ</translation>
 <translation id="2089795179672254991">Հարցնել, երբ կայքն ուզում է տեսնել սեղմատախտակին պատճենված տեքստն ու պատկերները (խորհուրդ է տրվում)</translation>
 <translation id="2090165459409185032">Հաշվի տեղեկությունները վերականգնելու համար այցելեք՝ google.com/accounts/recovery</translation>
@@ -985,6 +992,7 @@
 <translation id="2379232090534544565">Կայքին հասանելի են աուդիո և վիդեո մուտքերը</translation>
 <translation id="2379281330731083556">Տպում համակարգի երկխոսության պատուհանի միջոցով… <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Հարցնել՝ մինչ ուղարկելը (խորհուրդ է տրվում)</translation>
+<translation id="2382818385048255866">Ստուգեք ձեր ընդլայնումները</translation>
 <translation id="2384436799579181135">Սխալ առաջացավ: Ստուգեք ձեր տպիչը և նորից փորձեք:</translation>
 <translation id="2387458720915042159">Միջնորդ սերվերի միացման տեսակը</translation>
 <translation id="2391419135980381625">Ստանդարտ տառատեսակ</translation>
@@ -1036,6 +1044,7 @@
 <translation id="2462724976360937186">Հավաստագրման կենտրոնի բանալու ID</translation>
 <translation id="2462752602710430187">Ավելացվեց <ph name="PRINTER_NAME" /></translation>
 <translation id="2464089476039395325">HTTP միջնորդ սերվեր</translation>
+<translation id="2467267713099745100"><ph name="NETWORK_TYPE" /> network, off</translation>
 <translation id="2468205691404969808">Օգտագործում է քուքիները՝ ձեր նախընտրանքները հիշելու համար, նույնիսկ եթե չեք այցելում այդ կայքեր</translation>
 <translation id="2468402215065996499">Տամագոչի</translation>
 <translation id="2469259292033957819">Դուք պահված տպիչներ չունեք։</translation>
@@ -1290,6 +1299,7 @@
 <translation id="2800760947029405028">Վերբեռնել պատկեր</translation>
 <translation id="2803375539583399270">Մուտքագրեք PIN կոդը</translation>
 <translation id="2804043232879091219">Չհաջողվեց բացել այլընտրանքային դիտարկիչը</translation>
+<translation id="2804667941345577550">Դուք դուրս կգրվեք հաշվից այս կայքում և բաց ներդիրներում</translation>
 <translation id="2804680522274557040">Տեսախցիկն անջատած է</translation>
 <translation id="2805646850212350655">Microsoft-ի գաղտնագրված ֆայլային համակարգ</translation>
 <translation id="2805756323405976993">Հավելվածներ</translation>
@@ -1297,6 +1307,7 @@
 <translation id="2806891468525657116">Դյուրանցումն արդեն գոյություն ունի</translation>
 <translation id="2807517655263062534">Ձեր ներբեռնած ֆայլերը կցուցադրվեն այստեղ</translation>
 <translation id="2809586584051668049">ու ևս <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2810390687497823527">Եթե ընդլայնումը ձեզ անհայտ է կամ եթե ձեր դիտարկիչը սխալներով է աշխատում, կարող եք անջատել կարգավորել ընդլայնումներն այստեղ։</translation>
 <translation id="2812049959647166806">Thunderbolt-ը չի աջակցվում</translation>
 <translation id="2812944337881233323">Դուրս եկեք հաշվից և նորից մուտք գործեք</translation>
 <translation id="2812989263793994277">Ցույց չտալ պատկերներ</translation>
@@ -1336,6 +1347,7 @@
 <translation id="2861941300086904918">Անվտանգության կառավարիչ - Native Client</translation>
 <translation id="2864601841139725659">Ընտրեք պրոֆիլի լուսանկար</translation>
 <translation id="2865919525181940183">Ծրագրերի սքրինշոթ, որոնք այժմ էկրանին են։</translation>
+<translation id="286674810810214575">Սնուցման աղբյուրների ստուգում…</translation>
 <translation id="2867768963760577682">Բացել որպես ամրացված ներդիր</translation>
 <translation id="2868746137289129307">Այս ընդլայնումը հնացած է, ուստի կասեցվել է ձեռնարկության քաղաքականության կողմից: Երբ նոր տարբերակը մատչելի լինի, այն կարող է ավտոմատ միացվել:</translation>
 <translation id="2870560284913253234">Կայք</translation>
@@ -1413,6 +1425,7 @@
 <translation id="2972581237482394796">&amp;Վերարկել</translation>
 <translation id="2973324205039581528">Անջատել կայքի ձայնը</translation>
 <translation id="2977480621796371840">Հեռացնել խմբից</translation>
+<translation id="2979520980928493164">Ավելի անվտանգ և արդյունավետ Chrome</translation>
 <translation id="2979639724566107830">Բացել նոր պատուհանում</translation>
 <translation id="2981113813906970160">Ցույց տալ մկնիկի մեծ նշորդը</translation>
 <translation id="2982970937345031">Հաղորդել անանուն կերպով</translation>
@@ -1519,6 +1532,7 @@
 <translation id="3143515551205905069">Չեղարկել համաժամացումը</translation>
 <translation id="3143754809889689516">Նվագարկել սկզբից</translation>
 <translation id="3144647712221361880">Բացել հղումը որպես</translation>
+<translation id="3145187901750964977">Չհաջողվեց տեղադրել վիրտուալ մեքենան։ Նորից փորձեք կամ կապվեք կազմակերպության սարքի ադմինիստրատորի հետ։ Սխալի կոդը՝ <ph name="ERROR_CODE" />։</translation>
 <translation id="3149477159749171726">Տարբերակ՝
     <ph name="LINUX_VERSION" />
 
@@ -1557,6 +1571,7 @@
 <translation id="3192947282887913208">Աուդիո ֆայլեր</translation>
 <translation id="3194737229810486521"><ph name="URL" /> կայքն ուզում է ձեր սարքում մեծ ծավալով տվյալներ մշտապես պահել</translation>
 <translation id="3199127022143353223">Սերվերներ</translation>
+<translation id="3201306578844503970">Ցանցային սխալի պատճառով չհաջողվեց տեղադրել վիրտուալ մեքենան։ Նորից փորձեք կամ կապվեք կազմակերպության սարքի ադմինիստրատորի հետ։ Սխալի կոդը՝ <ph name="ERROR_CODE" />։</translation>
 <translation id="3201422919974259695">Հասանելի USB սարքերը կցուցադրվեն այստեղ:</translation>
 <translation id="3202131003361292969">Ուղի</translation>
 <translation id="3202173864863109533">Այս ներդիրի ձայնն անջատված է:</translation>
@@ -1893,7 +1908,6 @@
 <translation id="3678156199662914018">Ընդլայնում` <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Շնորհակալություն կարծիք հայտնելու համար: Դուք ներկայումս միացած չեք ցանցին, և ձեր հաղորդումը կուղարկվի ավելի ուշ:</translation>
 <translation id="3682824389861648626">Տեղաշարժի սահմանափակում</translation>
-<translation id="3683023058278427253">Ձեր տիրույթի համար գտնվել է արտոնագրերի մի քանի տեսակ։ Շարունակելու համար ընտրեք դրանցից մեկը։</translation>
 <translation id="3683524264665795342">Էկրանի համօգտագործման հարցում <ph name="APP_NAME" />-ից</translation>
 <translation id="368789413795732264">Ֆայլը գրելիս սխալ տեղի ունեցավ՝ <ph name="ERROR_TEXT" />:</translation>
 <translation id="3688507211863392146">Գրել հավելվածում բացված ֆայլերի ու պանակների մեջ</translation>
@@ -2067,6 +2081,7 @@
 <translation id="389589731200570180">Կիսեք հյուրերի հետ</translation>
 <translation id="389901847090970821">Ընտրեք ստեղնաշարը</translation>
 <translation id="3899879303189199559">Ավելի քան մեկ տարի անցանց է</translation>
+<translation id="3900789207771372462">Որոշ ընդլայնումներ կարող են տեսնել ձեր գործողությունները դիտարկիչում, այդ թվում՝ անձնական տեղեկությունները։</translation>
 <translation id="3900966090527141178">Գաղտնաբառերի արտահանում</translation>
 <translation id="3901991538546252627">Կապակցում <ph name="NAME" />-ին</translation>
 <translation id="3905761538810670789">Հավելվածի վերանորոգում</translation>
@@ -2157,7 +2172,6 @@
 <translation id="4013132157686828973">«<ph name="CLIENT_NAME" />» ծառայությունը վրիպազերծում է այս դիտարկիչը</translation>
 <translation id="4014432863917027322">Վերանորոգե՞լ «<ph name="EXTENSION_NAME" />»-ը:</translation>
 <translation id="4015163439792426608">Օգտվո՞ւմ եք ընդլայնումներից: <ph name="BEGIN_LINK" />Կառավարեք ձեր ընդլայնումները<ph name="END_LINK" /> մեկ վայրում:</translation>
-<translation id="4020106588733303597">Չհաջողվեց բեռնել հասանելի արտոնագրերը։</translation>
 <translation id="4020327272915390518">Ընտրանքների ցանկ</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Ավելացնել բառացանկին</translation>
@@ -2195,6 +2209,7 @@
 <translation id="407520071244661467">Մասշտաբ</translation>
 <translation id="4075639477629295004">Չհաջողվեց հեռարձակել <ph name="FILE_NAME" /> ֆայլը</translation>
 <translation id="4077917118009885966">Գովազդն արգելափակված է այս կայքում</translation>
+<translation id="4077919383365622693"><ph name="SITE" /> կայքի պահած բոլոր տվյալներն ու քուքիները կջնջվեն։</translation>
 <translation id="4079140982534148664">Օգտագործել ուղղագրության ընդլայնված ստուգումը</translation>
 <translation id="4081242589061676262">Չհաջողվեց հեռարձակել ֆայլը։</translation>
 <translation id="4084682180776658562">Էջանիշ</translation>
@@ -2269,6 +2284,7 @@
 <translation id="4181841719683918333">Լեզուներ</translation>
 <translation id="4184885522552335684">Քաշեք՝ էկրանը տեղաշարժելու համար</translation>
 <translation id="4194570336751258953">Միացնել tap-to-click գործառույթը</translation>
+<translation id="4194595472342532425">Կազմաձևման խնդրի պատճառով չհաջողվեց կարգավորել Plugin VM-ը։ Կապվեք կազմակերպության սարքի ադմինիստրատորի հետ։ Սխալի կոդը՝ <ph name="ERROR_CODE" />։</translation>
 <translation id="4195643157523330669">Բացել նոր ներդիրով</translation>
 <translation id="4195814663415092787">Շարունակել աշխատանքը նույն տեղից</translation>
 <translation id="4198146608511578238">Սեղմած պահեք գործարկիչի պատկերակը՝ ձեր Google Օգնականի հետ խոսելու համար:</translation>
@@ -2492,6 +2508,7 @@
 <translation id="4549791035683739768">Անվտանգության բանալու վրա պահված մատնահետքեր չկան</translation>
 <translation id="4551763574344810652">Հետարկելու համար սեղմեք <ph name="MODIFIER_KEY_DESCRIPTION" /></translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005">Ցանց՝ <ph name="NETWORK_TYPE" />, ազդանշանի ուժշգություն՝ <ph name="SIGNAL_STRENGTH" /></translation>
 <translation id="4554591392113183336">Արտաքին ընդլայնումը ընթացիկի համեմատ ունի նույն կամ ավելի հին տարբերակ:</translation>
 <translation id="4555769855065597957">Ստվեր</translation>
 <translation id="4555863373929230635">Գաղտնաբառերը ձեր Google հաշվում պահելու համար մտեք հաշիվ և միացրեք համաժամացումը։</translation>
@@ -2569,6 +2586,7 @@
 <translation id="4665446389743427678"><ph name="SITE" /> կայքում պահված բոլոր տվյալները կջնջվեն։</translation>
 <translation id="4668721319092543482">Սեղմեք՝ <ph name="PLUGIN_NAME" /> փլագինը միացնելու համար</translation>
 <translation id="4672657274720418656">Զտել էջը</translation>
+<translation id="46733273239502219">Տեղադրված հավելվածներից պահված տվյալները նույնպես կջնջվեն</translation>
 <translation id="4673442866648850031">Ստիլուսը հեռացնելու դեպքում բացել ստիլուսի գործիքները</translation>
 <translation id="4677585247300749148"><ph name="URL" /> կայքն ուզում է օգտագործել հատուկ գործողությունները</translation>
 <translation id="4677772697204437347">GPU հիշողություն</translation>
@@ -2660,7 +2678,6 @@
 <translation id="4823484602432206655">Կարդալ և փոփոխել օգտատիրոջ և սարքի կարգավորումները</translation>
 <translation id="4824958205181053313">Չեղարկե՞լ համաժամացումը</translation>
 <translation id="4827675678516992122">Չհաջողվեց միանալ</translation>
-<translation id="4828937774870308359">Ավստրալական</translation>
 <translation id="4829768588131278040">Ստեղծել PIN կոդ</translation>
 <translation id="4830502475412647084">Օպերացիոն համակարգի թարմացման տեղադրում</translation>
 <translation id="4830573902900904548">Ձեր <ph name="DEVICE_TYPE" /> սարքը չի կարողանում կապակցվել համացանցին <ph name="NETWORK_NAME" />-ի միջոցով: Ընտրեք այլ ցանց: <ph name="LEARN_MORE_LINK_START" />Մանրամասն<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2702,6 +2719,7 @@
 Նկարագրեք ձեր գործողությունները: Յուրաքանչյուր դետալ կարևոր է:</translation>
 <translation id="4876895919560854374">Կողպել և ապակողպել էկրանը</translation>
 <translation id="4877276003880815204">Ստուգել տարրերը</translation>
+<translation id="4878653975845355462">Ձեր ադմինիստրատորն անջատել է անհատականացված ֆոները։</translation>
 <translation id="4879491255372875719">Ավտոմատ (կանխադրված)</translation>
 <translation id="4880328057631981605">Մուտքի կետի անունը</translation>
 <translation id="4880827082731008257">Որոնել պատմությունում</translation>
@@ -2757,10 +2775,10 @@
 <translation id="4943691134276646401">«<ph name="CHROME_EXTENSION_NAME" />» ընդլայնումն ուզում է միանալ հերթական միացքին</translation>
 <translation id="4944310289250773232">Նույնականացման ծառայությունը տրամադրվում է <ph name="SAML_DOMAIN" />-ի կողմից</translation>
 <translation id="495170559598752135">Գործողություններ</translation>
+<translation id="4952981627953231344">Plugin VM-ը թույլատրված չէ այս սարքում: Կապվեք կազմակերպության սարքի ադմինիստրատորի հետ։</translation>
 <translation id="4953689047182316270">Արձագանքել մատչելիության գործողություններին</translation>
 <translation id="4953808748584563296">Կանխադրված նարնջագույն ավատար</translation>
 <translation id="4955710816792587366">Ընտրեք ձեր PIN-ը</translation>
-<translation id="4955814292505481804">Տարեկան</translation>
 <translation id="4959262764292427323">Գաղտնաբառերը պահվում են ձեր Google հաշվում, որպեսզի կարողանաք օգտագործել դրանք ցանկացած սարքում</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Այս հավելվածը տեղադրել է ձեր ադմինիստրատորը։</translation>
@@ -3244,7 +3262,6 @@
 <translation id="5659593005791499971">Էլփոստ</translation>
 <translation id="5659833766619490117">Չհաջողվեց թարգմանել այս էջը</translation>
 <translation id="5660204307954428567">Զուգակցե՞լ <ph name="DEVICE_NAME" /> սարքի հետ</translation>
-<translation id="5662477687021125631">Անժամկետ</translation>
 <translation id="5667546120811588575">Google Play-ի կարգավորում...</translation>
 <translation id="5669267381087807207">Ակտիվացում</translation>
 <translation id="5669691691057771421">Մուտքագրեք նոր PIN կոդը</translation>
@@ -3260,6 +3277,7 @@
 <translation id="5687326903064479980">Ժամային գոտի</translation>
 <translation id="5689516760719285838">Տեղորոշում</translation>
 <translation id="56907980372820799">Հղման տվյալներ</translation>
+<translation id="5691180005790455277"><ph name="SITE_GROUP_NAME" /> խմբի բոլոր կայքերը և դրանցում պահված բոլոր տվյալներն ու քուքիները կջնջվեն։</translation>
 <translation id="5691511426247308406">Ընտանիք</translation>
 <translation id="5692183275898619210">Տպումն ավարտվեց</translation>
 <translation id="5696143504434933566">Հաղորդել չարաշահման մասին («<ph name="EXTENSION_NAME" />»)</translation>
@@ -3346,7 +3364,6 @@
 <translation id="5815645614496570556">X.400 հասցե</translation>
 <translation id="5816434091619127343">Հրահանգված փոփոխությունների կիրառման դեպքում տպիչը հնարավոր չի լինի օգտագործել։</translation>
 <translation id="5817918615728894473">Զուգակցել</translation>
-<translation id="5819762621475381970">– ձեր սենյակի դասավորությունը:</translation>
 <translation id="5821565227679781414">Ստեղծել դյուրանցում</translation>
 <translation id="5825412242012995131">Միաց. (խորհուրդ է տրվում)</translation>
 <translation id="5826395379250998812">Միացրեք <ph name="DEVICE_TYPE" /> սարքը ձեր հեռախոսին։ <ph name="LINK_BEGIN" />Իմանալ ավելին<ph name="LINK_END" /></translation>
@@ -3482,6 +3499,7 @@
 <translation id="6007240208646052708">Ձայնային որոնումը ձեր լեզվով հասանելի չէ:</translation>
 <translation id="6009781704028455063">Ներկառուցված տվիչ</translation>
 <translation id="6010869025736512584">Վիդեո մուտքի մատչում</translation>
+<translation id="6011074160056912900">Ethernet ցանց</translation>
 <translation id="6011193465932186973">Մատնահետք</translation>
 <translation id="6011449291337289699">Մաքրել կայքի տվյալները</translation>
 <translation id="6015266928248016057">Անվավեր PUK: Մնաց <ph name="RETRIES" /> փորձ:</translation>
@@ -3518,6 +3536,7 @@
 <translation id="6053401458108962351">&amp;Մաքրել դիտարկումների տվյալները…</translation>
 <translation id="6055171183283175969">Ձեր մուտքագրած գաղտնաբառը սխալ է:</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256՝ RSA գաղտնագրումով</translation>
+<translation id="6055907707645252013">Կապը <ph name="NETWORK_TYPE" /> ցանցի հետ հաստատված չէ</translation>
 <translation id="6056710589053485679">Սովորական վերաբեռնում</translation>
 <translation id="6057381398996433816">Այս կայքին արգելվել է օգտագործել շարժման և լուսավորության տվիչները:</translation>
 <translation id="6058567592298841668">Փլագինի վիրտուալ մեքենա՝ <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3581,6 +3600,7 @@
 <translation id="6136114942382973861">Փակել ներբեռնումների գոտին</translation>
 <translation id="6137767437444130246">Օգտատիրոջ հավաստագիր</translation>
 <translation id="6138680304137685902">X9.62 ECDSA ստորագրություն SHA-384-ով</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, ցանց չկա</translation>
 <translation id="6141988275892716286">Հաստատեք ներբեռնումը</translation>
 <translation id="6143186082490678276">Օգնություն</translation>
 <translation id="6144938890088808325">Օգնեք բարձրացնել Chromebook-ի որակը</translation>
@@ -3887,6 +3907,7 @@
 <translation id="6602956230557165253">Նավարկման համար օգտագործեք ձախ և աջ սլաքաստեղները:</translation>
 <translation id="6605847144724004692">Գնահատականներ չկան։</translation>
 <translation id="6607831829715835317">Լրացուցիչ գոր&amp;ծիքներ</translation>
+<translation id="6611972847767394631">Ձեր ներդիրներն այստեղ են</translation>
 <translation id="6612358246767739896">Պաշտպանված բովանդակություն</translation>
 <translation id="6615455863669487791">Ցույց տալ</translation>
 <translation id="6618097958368085618">Տեղադրել</translation>
@@ -3955,6 +3976,7 @@
 <translation id="6709133671862442373">Նորություններ</translation>
 <translation id="6709357832553498500">Միանալ՝ օգտագործելով <ph name="EXTENSIONNAME" />-ը</translation>
 <translation id="6710213216561001401">Նախորդը</translation>
+<translation id="6715803357256707211">Լինուքսի հավելվածը տեղադրելիս սխալ առաջացավ։ Մանրամասների համար սեղմեք ծանուցման վրա։</translation>
 <translation id="6721678857435001674">Տեսնել անվտանգության բանալու արտադրողի և մոդելի անունը</translation>
 <translation id="6721972322305477112">&amp;Ֆայլ</translation>
 <translation id="672213144943476270">Ապակողպեք ձեր պրոֆիլը նախքան հյուրի ռեժիմում համացանցում կայքեր դիտելը:</translation>
@@ -3979,7 +4001,6 @@
 <translation id="674632704103926902">Թույլ տալ հպումով քաշումը</translation>
 <translation id="6748217015615267851">Արտապատկերիչ՝ <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Դուք կարող եք շարունակել, սակայն կվերականգնվեն միայն ձեր համաժամացված տվյալները և կարգավորումները: Տեղական բոլոր տվյալները կկորչեն:</translation>
-<translation id="6748775883310276718">Մեկ հավելվածի կրպակ</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (ինկոգնիտո)</translation>
 <translation id="6757101664402245801">URL-ը պատճենվեց</translation>
 <translation id="6758056191028427665">Կիսվեք մեզ հետ ձեր տպավորություններով:</translation>
@@ -3989,6 +4010,7 @@
 <translation id="6769712124046837540">Տպիչի ավելացում…</translation>
 <translation id="6770664076092644100">Հաստատել NFC-ի միջոցով</translation>
 <translation id="6771503742377376720">Հավաստագրման կենտրոն է</translation>
+<translation id="6772339735733515807">Կառավարեք ձեր ընդլայնումները</translation>
 <translation id="6775163072363532304">Այստեղ կցուցադրվեն հասանելի սարքերը</translation>
 <translation id="6777817260680419853">Վերահասցեավորումն արգելափակված է</translation>
 <translation id="6778737459546443941">Ձեր ծնողը դեռ չի հաստատել</translation>
@@ -4127,6 +4149,7 @@
 <translation id="6972180789171089114">Աուդիո/տեսանյութեր</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> կայքը չի բացել այս պանակի ֆայլերը, քանի որ այն պարունակում է համակարգի ֆայլեր:</translation>
 <translation id="6972754398087986839">Սկսել աշխատանքը</translation>
+<translation id="6973611239564315524">Հասանելի է Debian 10-ի (Buster) նորացում</translation>
 <translation id="6974609594866392343">Անցանց ցուցադրական ռեժիմ</translation>
 <translation id="6977381486153291903">Ներկառուցված ծրագրակազմի տարբերակը</translation>
 <translation id="6978121630131642226">Որոնման համակարգեր</translation>
@@ -4586,6 +4609,7 @@
 <translation id="7644543211198159466">Գույն և թեմա</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (սեփականատեր)</translation>
 <translation id="7645681574855902035">Լինուքսի պահուստավորումը չեղարկվում է</translation>
+<translation id="7646772052135772216">Գաղտնաբառերի համաժամացումը չի աշխատում</translation>
 <translation id="7647403192093989392">Վերջին գործողություններ չկան</translation>
 <translation id="7648992873808071793">Պահել ֆայլերն այս սարքում</translation>
 <translation id="7649070708921625228">Օգնություն</translation>
@@ -4773,6 +4797,7 @@
 <translation id="7877451762676714207">Սերվերի անհայտ սխալ: Կրկին փորձեք կամ դիմեք սերվերի ադմինիստրատորին:</translation>
 <translation id="7877680364634660272">Շրջայց</translation>
 <translation id="7878562273885520351">Ձեր գաղտնաբառը կարող են գողանալ</translation>
+<translation id="7879631849810108578">Դյուրանցումը կարգավորված է՝ <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Սարքը վերագործարկելիս լոկալ տվյալները կհեռացվեն</translation>
 <translation id="7881483672146086348">Դիտել հաշիվը</translation>
 <translation id="7882358943899516840">Մատակարարի տեսակը</translation>
@@ -4859,6 +4884,7 @@
 <translation id="7987814697832569482">Միշտ միանալ այս VPN-ի միջոցով</translation>
 <translation id="7988355189918024273">Միացնել մատչելիության գործառույթները</translation>
 <translation id="7991296728590311172">Switch Access-ի կարգավորումներ</translation>
+<translation id="7994350303002908848">Չհաջողվեց տեղադրել Plugin VM-ը։ Նորից փորձեք կամ կապվեք կազմակերպության սարքի ադմինիստրատորի հետ։ Սխալի կոդը՝ <ph name="ERROR_CODE" />։</translation>
 <translation id="7994702968232966508">EAP եղանակ</translation>
 <translation id="7997826902155442747">Գործընթացների առաջնահերթություն</translation>
 <translation id="7999229196265990314">Ստեղծվել են հետևյալ ֆայլերը՝
@@ -4950,7 +4976,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Երրորդ կողմի քուքիներ չկան}=1{Երրորդ կողմի 1 քուքի արգելափակված է}one{Երրորդ կողմի # քուքի արգելափակված է}other{Երրորդ կողմի # քուքի արգելափակված է}}</translation>
 <translation id="810875025413331850">Մոտակա սարքեր չեն գտնվել:</translation>
 <translation id="8111155949205007504">Կիսվեք գաղտնաբառով ձեր iPhone-ի հետ</translation>
-<translation id="8113043281354018522">Ընտրեք արտոնագրի տեսակը</translation>
 <translation id="8114875720387900039">Հորիզոնական տրոհում</translation>
 <translation id="8116972784401310538">&amp;Էջանիշերի կառավարիչ</translation>
 <translation id="8117620576188476503">Կառավարեք միացումները, թարմացումներն ու կարգավորումները՝ օգտագործելով կարգավիճակի տողը: Ստեղնաշարի միջոցով անցնելու համար սեղմեք Alt + Shift + S:</translation>
@@ -5107,6 +5132,7 @@
 <translation id="8327039559959785305">Չհաջողվեց տեղադրել Լինուքսի ֆայլերը: Նորից փորձեք:</translation>
 <translation id="8335587457941836791">Ապամրացնել դարակից</translation>
 <translation id="8336407002559723354">Սարքը կստանա թարմացումներ մինչև՝ <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Վերագործարկեք սարքը, որպեսզի համակարգի լեզուն դառնա <ph name="LANGUAGE" /></translation>
 <translation id="8336739000755212683">Փոխել հաշվի պատկերը սարքում</translation>
 <translation id="8337047789441383384">Դուք արդեն գրանցել եք այս անվտանգության բանալին: Այն նորից գրանցելու կարիք չկա:</translation>
 <translation id="8338952601723052325">Մշակողի վեբկայքը</translation>
@@ -5150,6 +5176,7 @@
 <translation id="8400146488506985033">Օգտատերերի կառավարում</translation>
 <translation id="8401432541486058167">Մուտքագրեք PIN կոդը, որը կապված է ձեր խելացի քարտի հետ։</translation>
 <translation id="8405046151008197676">Ծանոթացեք վերջին թարմացման մասին հիմնական տեղեկություններին</translation>
+<translation id="8408068190360279472"><ph name="NETWORK_TYPE" /> ցանց, միացում…</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Նախ հարցնել (հանձնարարելի)</translation>
 <translation id="8418445294933751433">&amp;Ցույց տալ որպես ներդիր</translation>
@@ -5439,6 +5466,7 @@
 <translation id="8807632654848257479">Կայուն</translation>
 <translation id="8808478386290700967">Web Store</translation>
 <translation id="8808686172382650546">Կատու</translation>
+<translation id="8808744862003883508">Այս էջում դուք կարող եք տեսնել Chrome-ում տեղադրված բոլոր ընդլայնումները։</translation>
 <translation id="8809147117840417135">Բաց փիրուզագույն</translation>
 <translation id="8813698869395535039">Հնարավոր չէ մուտք գործել <ph name="USERNAME" /> հաշիվ</translation>
 <translation id="8813811964357448561">թղթի թերթ</translation>
@@ -5666,7 +5694,6 @@
 <translation id="9121814364785106365">Բացել որպես ամրացված ներդիր</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> հավելվածի աշխատանքը դադարեցված է</translation>
 <translation id="9124003689441359348">Պահված գաղտնաբառերը կցուցադրվեն այստեղ</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (մնացել է <ph name="LICENSE_COUNT" />)</translation>
 <translation id="9128317794749765148">Կարգավորումը չհաջողվեց ավարտել</translation>
 <translation id="9128870381267983090">Կապակցեք ցանցին</translation>
 <translation id="9130015405878219958">Սխալ ռեժիմ է նշված:</translation>
@@ -5705,6 +5732,7 @@
 <translation id="9188732951356337132">Օգտագործման և ախտորոշման տվյալների ուղարկում Ներկայումս այս սարքը ախտորոշման, սարքի և հավելվածի օգտագործման տվյալներն ավտոմատ ուղարկում է Google-ին: Այս տեղեկությունները չեն օգտագործվի ձեր երեխային նույնականացնելու համար և կօգնեն բարելավել համակարգի ու հավելվածի աշխատանքի կայունությունը: Հավաքված տեղեկությունների մի մասը օգտակար կլինի Android մշակողների և այլ գործընկերների համար։ Եթե Վեբ որոնման և հավելվածների պատմությունը միացված է, այս տվյալները կպահվեն երեխայի Google հաշվում։ <ph name="BEGIN_LINK2" />Մանրամասն<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + հանրային բանալի</translation>
 <translation id="920045321358709304">Որոնել <ph name="SEARCH_ENGINE" />-ում</translation>
+<translation id="9201023452444595544">Անցանց ռեժիմում պահված բոլոր տվյալները կջնջվեն</translation>
 <translation id="9201220332032049474">Էկրանի կողպման տարբերակներ</translation>
 <translation id="9203398526606335860">&amp;Տվյալների հավաքումը միացված է</translation>
 <translation id="9203904171912129171">Ընտրեք սարքը</translation>
@@ -5717,6 +5745,7 @@
 <translation id="9220525904950070496">Հեռացնել հաշիվը</translation>
 <translation id="9220820413868316583">Բարձրացրեք մատը և նորից փորձեք։</translation>
 <translation id="923467487918828349">Ցույց տալ բոլորը</translation>
+<translation id="929117907539171075">Տեղադրված հավելվածից պահված տվյալները նույնպես կջնջվեն</translation>
 <translation id="930268624053534560">Մանրամասն ժամադրոշմներ</translation>
 <translation id="932327136139879170">Գլխավոր էջ</translation>
 <translation id="932508678520956232">Չհաջողվեց սկսել տպումը:</translation>
@@ -5742,6 +5771,7 @@
 <translation id="960719561871045870">Օպերատորի կոդը</translation>
 <translation id="960987915827980018">Մնացել է մոտ 1 ժամ</translation>
 <translation id="962802172452141067">Էջանիշների պանակների ծառ</translation>
+<translation id="964057662886721376">Որոշ ընդլայնումներ կարող են դանդաղեցնել դիտարկիչի աշխատանքը, հատկապես այն ընդլայնումները, որոնք մտադրված չեք եղել տեղադրել։</translation>
 <translation id="964286338916298286">Ադմինիստրատորն անջատել է Chrome-ի բոնուսները ձեր սարքի համար:</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Հավելված}one{Հավելված}other{Հավելվածներ}}</translation>
 <translation id="965211523698323809">Ուղարկել և ստանալ SMS-ներ <ph name="DEVICE_TYPE" />սարքում <ph name="LINK_BEGIN" />Իմանալ ավելին<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb
index 96236d6..0b786880 100644
--- a/chrome/app/resources/generated_resources_id.xtb
+++ b/chrome/app/resources/generated_resources_id.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Sesuaikan</translation>
 <translation id="1178581264944972037">Jeda</translation>
 <translation id="117916940443676133">Kunci keamanan Anda tidak dilindungi PIN. Untuk mengelola data login, buat PIN terlebih dahulu.</translation>
-<translation id="118069123878619799">- fitur fisik Anda, seperti tinggi badan</translation>
 <translation id="1181037720776840403">Hapus</translation>
 <translation id="1183237619868651138">Tidak dapat memasang <ph name="EXTERNAL_CRX_FILE" /> di cache lokal.</translation>
 <translation id="1185924365081634987">Anda juga dapat mencoba untuk <ph name="GUEST_SIGNIN_LINK_START" />menjelajahi sebagai tamu<ph name="GUEST_SIGNIN_LINK_END" /> untuk memperbaiki kesalahan jaringan ini.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">Menunggu <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> perangkat lain tersedia.</translation>
 <translation id="1495677929897281669">Kembali ke tab</translation>
+<translation id="1499271269825557605">Jika Anda tidak mengenali ekstensi, atau jika browser tidak berfungsi sesuai harapan, Anda dapat menonaktifkan atau menyesuaikan ekstensi di sini.</translation>
 <translation id="1500297251995790841">Perangkat tidak dikenal [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Akun pemilik ini harus akun yang masuk pertama dalam sesi fitur masuk banyak akun.</translation>
 <translation id="150411034776756821">Hapus <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Halaman ini telah diblokir agar tidak dapat mengakses kamera Anda.</translation>
 <translation id="1507246803636407672">&amp;Singkirkan</translation>
 <translation id="1508491105858779599">Letakkan jari Anda pada sensor sidik jari untuk membuka kunci perangkat.</translation>
+<translation id="1508575541972276599">Versi saat ini adalah Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">Akses <ph name="DEVICE_NAME_AND_VENDOR" /> apa pun via USB</translation>
 <translation id="150962533380566081">PUK tidak valid.</translation>
 <translation id="1510030919967934016">Halaman ini telah dicekal agar tidak melacak lokasi Anda.</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">Terapkan</translation>
 <translation id="1603914832182249871">(Samaran)</translation>
 <translation id="1604432177629086300">Tidak dapat mencetak. Periksa printer dan coba lagi.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: Sinkronisasi sandi tidak berfungsi</translation>
 <translation id="1607139524282324606">Hapus entri</translation>
 <translation id="1608626060424371292">Hapus pengguna ini</translation>
 <translation id="1608668830839595724">Tindakan lainnya untuk item terpilih</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">Data aplikasi yang dihosting</translation>
 <translation id="1776712937009046120">Tambahkan pengguna</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Perangkat ini dikelola oleh <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    Klik "Berikutnya" untuk melanjutkan login ke akun <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> Anda.</translation>
 <translation id="1779652936965200207">Masukkan kunci sandi ini di "<ph name="DEVICE_NAME" />":</translation>
 <translation id="1780152987505130652">Tutup Grup</translation>
 <translation id="1781291988450150470">PIN Saat Ini</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">Tindakan tidak tersedia</translation>
 <translation id="2050339315714019657">Potret</translation>
 <translation id="2053312383184521053">Data Status Menganggur</translation>
+<translation id="2055585478631012616">Anda akan logout dari semua situs tersebut, termasuk di tab yang terbuka</translation>
 <translation id="205560151218727633">Logo Asisten Google</translation>
 <translation id="2058456167109518507">Perangkat terdeteksi</translation>
 <translation id="2059913712424898428">Zona waktu</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">Urungkan</translation>
 <translation id="2080070583977670716">Setelan lain</translation>
 <translation id="2087822576218954668">Pencetakan: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">Jaringan VPN</translation>
 <translation id="2089566709556890888">Akses dengan aman menggunakan Google Chrome</translation>
 <translation id="2089795179672254991">Tanyakan saat situs ingin melihat teks dan gambar yang disalin ke papan klip (direkomendasikan)</translation>
 <translation id="2090165459409185032">Untuk memulihkan informasi akun Anda, buka: google.com/accounts/recovery</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">Satu situs sedang mengakses masukan video dan audio</translation>
 <translation id="2379281330731083556">Cetak menggunakan dialog sistem... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Tanyakan sebelum mengirim (disarankan)</translation>
+<translation id="2382818385048255866">Periksa ekstensi</translation>
 <translation id="2384436799579181135">Terjadi error. Harap periksa printer Anda dan coba lagi.</translation>
 <translation id="2387458720915042159">Jenis sambungan proxy</translation>
 <translation id="2391419135980381625">Font standar</translation>
@@ -1036,6 +1043,7 @@
 <translation id="2462724976360937186">ID Kunci Otoritas Sertifikasi</translation>
 <translation id="2462752602710430187"><ph name="PRINTER_NAME" /> ditambahkan</translation>
 <translation id="2464089476039395325">Proxy HTTP</translation>
+<translation id="2467267713099745100">Jaringan <ph name="NETWORK_TYPE" />, nonaktif</translation>
 <translation id="2468205691404969808">Menggunakan cookie untuk mengingat preferensi, meski Anda tidak membuka halaman tersebut</translation>
 <translation id="2468402215065996499">Tamagotchi</translation>
 <translation id="2469259292033957819">Anda tidak memiliki printer tersimpan.</translation>
@@ -1290,6 +1298,7 @@
 <translation id="2800760947029405028">Upload gambar</translation>
 <translation id="2803375539583399270">Masukkan PIN</translation>
 <translation id="2804043232879091219">Browser alternatif tidak dapat dibuka</translation>
+<translation id="2804667941345577550">Anda akan logout dari situs ini, termasuk di tab yang terbuka</translation>
 <translation id="2804680522274557040">Kamera dinonaktifkan</translation>
 <translation id="2805646850212350655">Microsoft Encrypting File System</translation>
 <translation id="2805756323405976993">Apl</translation>
@@ -1297,6 +1306,7 @@
 <translation id="2806891468525657116">Pintasan sudah ada</translation>
 <translation id="2807517655263062534">File yang Anda download muncul di sini</translation>
 <translation id="2809586584051668049">dan <ph name="NUMBER_ADDITIONAL_DISABLED" /> lainnya</translation>
+<translation id="2810390687497823527">Jika Anda tidak mengenali ekstensi, atau jika browser tidak berfungsi sesuai harapan, Anda dapat menonaktifkan atau menyesuaikan ekstensi di sini.</translation>
 <translation id="2812049959647166806">Thunderbolt tidak didukung</translation>
 <translation id="2812944337881233323">Coba keluar dan masuk lagi</translation>
 <translation id="2812989263793994277">Jangan tampilkan gambar apa pun</translation>
@@ -1336,6 +1346,7 @@
 <translation id="2861941300086904918">Pengelola keamanan Program Asli</translation>
 <translation id="2864601841139725659">Setel gambar profil</translation>
 <translation id="2865919525181940183">Screenshot program yang sedang ditampilkan di layar</translation>
+<translation id="286674810810214575">Memeriksa sumber listrik...</translation>
 <translation id="2867768963760577682">Buka sebagai Tab Terpasang</translation>
 <translation id="2868746137289129307">Ekstensi ini sudah usang dan telah dinonaktifkan berdasarkan kebijakan perusahaan. Ekstensi mungkin akan diaktifkan secara otomatis saat versi yang lebih baru sudah tersedia.</translation>
 <translation id="2870560284913253234">Situs</translation>
@@ -1413,6 +1424,7 @@
 <translation id="2972581237482394796">&amp;Ulang</translation>
 <translation id="2973324205039581528">Matikan Notifikasi Situs</translation>
 <translation id="2977480621796371840">Hapus dari grup</translation>
+<translation id="2979520980928493164">Chrome dengan performa yang lebih baik dan lebih cepat</translation>
 <translation id="2979639724566107830">Buka di jendela baru</translation>
 <translation id="2981113813906970160">Tampilkan kursor mouse besar</translation>
 <translation id="2982970937345031">Laporkan secara anonim</translation>
@@ -1519,6 +1531,7 @@
 <translation id="3143515551205905069">Batalkan sinkronisasi</translation>
 <translation id="3143754809889689516">Putar dari awal</translation>
 <translation id="3144647712221361880">Buka link sebagai</translation>
+<translation id="3145187901750964977">Tidak dapat menginstal mesin virtual. Coba lagi, atau hubungi administrator perangkat organisasi Anda. Kode error: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Versi:
     Deskripsi <ph name="LINUX_VERSION" />:
     <ph name="LINUX_DESCRIPTION" /></translation>
@@ -1555,6 +1568,7 @@
 <translation id="3192947282887913208">File Audio</translation>
 <translation id="3194737229810486521"><ph name="URL" /> ingin menyimpan data di perangkat Anda secara permanen</translation>
 <translation id="3199127022143353223">Server</translation>
+<translation id="3201306578844503970">Tidak dapat menginstal mesin virtual karena ada error jaringan. Coba lagi, atau hubungi administrator perangkat organisasi Anda. Kode error: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Perangkat USB yang tersedia akan ditampilkan di sini.</translation>
 <translation id="3202131003361292969">Jalur</translation>
 <translation id="3202173864863109533">Audio tab ini dinonaktifkan.</translation>
@@ -1891,7 +1905,6 @@
 <translation id="3678156199662914018">Ekstensi: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Terima kasih atas masukannya. Anda sedang offline, laporan akan dikirim nanti.</translation>
 <translation id="3682824389861648626">Ambang batas gerakan</translation>
-<translation id="3683023058278427253">Kami mendeteksi beberapa jenis lisensi untuk domain Anda. Harap pilih 1 untuk melanjutkan.</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> Permintaan Berbagi Layar</translation>
 <translation id="368789413795732264">Terdapat kesalahan saat mencoba menulis file: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Menulis ke file dan folder yang Anda buka di aplikasi</translation>
@@ -2065,6 +2078,7 @@
 <translation id="389589731200570180">Berbagi dengan tamu</translation>
 <translation id="389901847090970821">Pilih keyboard</translation>
 <translation id="3899879303189199559">Offline selama lebih dari satu tahun</translation>
+<translation id="3900789207771372462">Beberapa ekstensi dapat melihat aktivitas penjelajahan Anda - termasuk informasi pribadi.</translation>
 <translation id="3900966090527141178">Ekspor sandi</translation>
 <translation id="3901991538546252627">Menyambung ke <ph name="NAME" /></translation>
 <translation id="3905761538810670789">Perbaiki aplikasi</translation>
@@ -2155,7 +2169,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" melakukan debug di browser ini</translation>
 <translation id="4014432863917027322">Perbaiki "<ph name="EXTENSION_NAME" />"?</translation>
 <translation id="4015163439792426608">Punya ekstensi? <ph name="BEGIN_LINK" />Kelola ekstensi Anda<ph name="END_LINK" /> dalam satu tempat praktis.</translation>
-<translation id="4020106588733303597">Maaf. Sistem gagal memuat lisensi yang tersedia.</translation>
 <translation id="4020327272915390518">Menu opsi</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">T&amp;ambahkan ke Kamus</translation>
@@ -2193,6 +2206,7 @@
 <translation id="407520071244661467">Skala</translation>
 <translation id="4075639477629295004">Tidak dapat mentransmisikan <ph name="FILE_NAME" />.</translation>
 <translation id="4077917118009885966">Iklan diblokir di situs ini</translation>
+<translation id="4077919383365622693">Semua data dan cookie yang disimpan oleh <ph name="SITE" /> akan dihapus.</translation>
 <translation id="4079140982534148664">Gunakan fitur Periksa Ejaan yang Disempurnakan</translation>
 <translation id="4081242589061676262">Tidak dapat mentransmisikan file.</translation>
 <translation id="4084682180776658562">Bookmark</translation>
@@ -2267,6 +2281,7 @@
 <translation id="4181841719683918333">Bahasa</translation>
 <translation id="4184885522552335684">Tarik untuk memindahkan tampilan</translation>
 <translation id="4194570336751258953">Aktifkan ketuk untuk mengklik</translation>
+<translation id="4194595472342532425">Tidak dapat menyiapkan Plugin VM karena ada masalah konfigurasi. Hubungi administrator perangkat organisasi Anda. Kode error: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Buka di tab baru</translation>
 <translation id="4195814663415092787">Lanjutkan dari halaman terakhir yang dibuka</translation>
 <translation id="4198146608511578238">Cukup tahan ikon Peluncur untuk berbicara dengan Asisten Google</translation>
@@ -2490,6 +2505,7 @@
 <translation id="4549791035683739768">Tidak ada sidik jari yang tersimpan di kunci keamanan Anda</translation>
 <translation id="4551763574344810652">Tekan <ph name="MODIFIER_KEY_DESCRIPTION" /> untuk mengurungkan</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005">Jaringan <ph name="NETWORK_TYPE" /> kekuatan sinyal <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">Versi ekstensi eksternal sama atau lebih rendah dibandingkan yang sudah ada.</translation>
 <translation id="4555769855065597957">Bayangan</translation>
 <translation id="4555863373929230635">Untuk menyimpan sandi ke Akun Google Anda, login dan aktifkan sinkronisasi.</translation>
@@ -2567,6 +2583,7 @@
 <translation id="4665446389743427678">Semua data yang disimpan oleh <ph name="SITE" /> akan dihapus.</translation>
 <translation id="4668721319092543482">Klik untuk mengaktifkan <ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">Halaman Saring</translation>
+<translation id="46733273239502219">Data offline di aplikasi terinstal juga akan dihapus</translation>
 <translation id="4673442866648850031">Buka alat stilus saat stilus dihapus</translation>
 <translation id="4677585247300749148"><ph name="URL" /> ingin merespons peristiwa aksesibilitas</translation>
 <translation id="4677772697204437347">Memori GPU</translation>
@@ -2658,7 +2675,6 @@
 <translation id="4823484602432206655">Membaca dan mengubah setelan perangkat dan pengguna</translation>
 <translation id="4824958205181053313">Batalkan sinkronisasi?</translation>
 <translation id="4827675678516992122">Tidak dapat tersambung</translation>
-<translation id="4828937774870308359">Australia</translation>
 <translation id="4829768588131278040">Siapkan PIN</translation>
 <translation id="4830502475412647084">Menginstal update OS</translation>
 <translation id="4830573902900904548"><ph name="DEVICE_TYPE" /> Anda tidak dapat menyambung ke internet menggunakan <ph name="NETWORK_NAME" />. Pilih jaringan lainnya. <ph name="LEARN_MORE_LINK_START" />Pelajari lebih lanjut<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2699,6 +2715,7 @@
 <translation id="4876273079589074638">Bantu engineer kami menyelidiki dan memperbaiki error ini. Cantumkan langkah-langkah yang tepat jika Anda bisa. Tidak ada detail yang sepele.</translation>
 <translation id="4876895919560854374">Kunci dan buka kunci layar</translation>
 <translation id="4877276003880815204">Periksa Elemen</translation>
+<translation id="4878653975845355462">Latar belakang kustom telah dinonaktifkan oleh administrator Anda</translation>
 <translation id="4879491255372875719">Otomatis (default)</translation>
 <translation id="4880328057631981605">Nama titik akses</translation>
 <translation id="4880827082731008257">Telusuri histori</translation>
@@ -2754,10 +2771,10 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" ingin terhubung ke port serial</translation>
 <translation id="4944310289250773232">Layanan autentikasi ini dihosting oleh <ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">Tindakan</translation>
+<translation id="4952981627953231344">Plugin VM tidak diizinkan di perangkat ini. Hubungi administrator perangkat organisasi Anda.</translation>
 <translation id="4953689047182316270">Merespons Acara Aksesibilitas</translation>
 <translation id="4953808748584563296">Avatar oranye default</translation>
 <translation id="4955710816792587366">Pilih PIN Anda</translation>
-<translation id="4955814292505481804">Tahunan</translation>
 <translation id="4959262764292427323">Sandi disimpan di Akun Google agar Anda dapat menggunakannya di perangkat mana pun</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Aplikasi ini telah diinstal oleh administrator Anda.</translation>
@@ -3239,7 +3256,6 @@
 <translation id="5659593005791499971">Email</translation>
 <translation id="5659833766619490117">Halaman ini tidak dapat diterjemahkan</translation>
 <translation id="5660204307954428567">Sambungkan dengan <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Seterusnya</translation>
 <translation id="5667546120811588575">Menyiapkan Google Play...</translation>
 <translation id="5669267381087807207">Mengaktifkan</translation>
 <translation id="5669691691057771421">Masukkan PIN baru</translation>
@@ -3255,6 +3271,7 @@
 <translation id="5687326903064479980">Zona waktu</translation>
 <translation id="5689516760719285838">Lokasi</translation>
 <translation id="56907980372820799">Tautkan data</translation>
+<translation id="5691180005790455277">Semua data cookie yang disimpan oleh <ph name="SITE_GROUP_NAME" /> dan semua situs pada grup tersebut akan dihapus.</translation>
 <translation id="5691511426247308406">Keluarga</translation>
 <translation id="5692183275898619210">Pencetakan selesai</translation>
 <translation id="5696143504434933566">Laporkan penyalahgunaan dari "<ph name="EXTENSION_NAME" />"</translation>
@@ -3341,7 +3358,6 @@
 <translation id="5815645614496570556">X.400 Address</translation>
 <translation id="5816434091619127343">Perubahan printer yang diminta akan membuat printer tidak dapat digunakan.</translation>
 <translation id="5817918615728894473">Sandingkan</translation>
-<translation id="5819762621475381970">- tata letak ruangan Anda</translation>
 <translation id="5821565227679781414">Buat Pintasan</translation>
 <translation id="5825412242012995131">Aktif (Direkomendasikan)</translation>
 <translation id="5826395379250998812">Hubungkan <ph name="DEVICE_TYPE" /> Anda dengan ponsel. <ph name="LINK_BEGIN" />Pelajari lebih lanjut<ph name="LINK_END" /></translation>
@@ -3477,6 +3493,7 @@
 <translation id="6007240208646052708">Penelusuran suara dalam bahasa Anda tidak tersedia.</translation>
 <translation id="6009781704028455063">Sensor yang ada di perangkat</translation>
 <translation id="6010869025736512584">Mengakses masukan video</translation>
+<translation id="6011074160056912900">Jaringan ethernet</translation>
 <translation id="6011193465932186973">Sidik jari</translation>
 <translation id="6011449291337289699">Hapus data situs</translation>
 <translation id="6015266928248016057">PUK tidak valid. Percobaan ulang tersisa: <ph name="RETRIES" />.</translation>
@@ -3513,6 +3530,7 @@
 <translation id="6053401458108962351">Hapus data penjelajahan...</translation>
 <translation id="6055171183283175969">Sandi yang Anda masukkan salah.</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 Dengan Enkripsi RSA</translation>
+<translation id="6055907707645252013">Jaringan <ph name="NETWORK_TYPE" />, tidak tersambung</translation>
 <translation id="6056710589053485679">Muat Ulang Normal</translation>
 <translation id="6057381398996433816">Situs ini diblokir agar tidak menggunakan sensor gerakan dan sensor cahaya.</translation>
 <translation id="6058567592298841668">Mesin Virtual Plugin: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3576,6 +3594,7 @@
 <translation id="6136114942382973861">Tutup kotak download</translation>
 <translation id="6137767437444130246">Sertifikat pengguna</translation>
 <translation id="6138680304137685902">Tanda tangan X9.62 ECDSA dengan SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, tidak ada jaringan</translation>
 <translation id="6141988275892716286">Konfirmasi download</translation>
 <translation id="6143186082490678276">Dapatkan Bantuan</translation>
 <translation id="6144938890088808325">Bantu kami meningkatkan Chromebook</translation>
@@ -3882,6 +3901,7 @@
 <translation id="6602956230557165253">Gunakan tombol panah kiri dan kanan untuk bernavigasi.</translation>
 <translation id="6605847144724004692">Belum diberi rating oleh pengguna.</translation>
 <translation id="6607831829715835317">Fitur &amp;lainnya</translation>
+<translation id="6611972847767394631">Temukan tab Anda di sini</translation>
 <translation id="6612358246767739896">Konten dilindungi</translation>
 <translation id="6615455863669487791">Tunjukkan</translation>
 <translation id="6618097958368085618">Tetap Lanjutkan</translation>
@@ -3950,6 +3970,7 @@
 <translation id="6709133671862442373">Berita</translation>
 <translation id="6709357832553498500">Sambungkan menggunakan <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Sebelumnya</translation>
+<translation id="6715803357256707211">Terjadi error saat menginstal aplikasi Linux. Klik notifikasi untuk mengetahui detailnya.</translation>
 <translation id="6721678857435001674">Lihat merek dan model Kunci Keamanan Anda</translation>
 <translation id="6721972322305477112">&amp;Berkas</translation>
 <translation id="672213144943476270">Buka kunci profil sebelum menjelajah sebagai tamu.</translation>
@@ -3974,7 +3995,6 @@
 <translation id="674632704103926902">Aktifkan ketuk tarik</translation>
 <translation id="6748217015615267851">Perender: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Anda dapat melanjutkan, namun hanya setelan dan data yang disinkronkan yang akan dipulihkan. Semua data lokal akan hilang.</translation>
-<translation id="6748775883310276718">Kios Aplikasi Tunggal</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Samaran)</translation>
 <translation id="6757101664402245801">URL disalin</translation>
 <translation id="6758056191028427665">Berikan masukan Anda tentang kinerja kami.</translation>
@@ -3984,6 +4004,7 @@
 <translation id="6769712124046837540">Menambahkan printer...</translation>
 <translation id="6770664076092644100">Verifikasi melalui NFC</translation>
 <translation id="6771503742377376720">Adalah Otoritas Sertifikasi</translation>
+<translation id="6772339735733515807">Mengelola ekstensi</translation>
 <translation id="6775163072363532304">Perangkat yang tersedia akan muncul di sini.</translation>
 <translation id="6777817260680419853">Pengalihan diblokir</translation>
 <translation id="6778737459546443941">Orang tuamu belum menyetujuinya</translation>
@@ -4122,6 +4143,7 @@
 <translation id="6972180789171089114">Audio/Video</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> tidak dapat membuka file dalam folder ini karena berisi file sistem</translation>
 <translation id="6972754398087986839">Mulai</translation>
+<translation id="6973611239564315524">Upgrade ke versi Debian 10 (Buster) sudah tersedia</translation>
 <translation id="6974609594866392343">Mode demo offline</translation>
 <translation id="6977381486153291903">Revisi firmware</translation>
 <translation id="6978121630131642226">Mesin Telusur</translation>
@@ -4581,6 +4603,7 @@
 <translation id="7644543211198159466">Warna dan tema</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (pemilik)</translation>
 <translation id="7645681574855902035">Membatalkan pencadangan Linux</translation>
+<translation id="7646772052135772216">Sinkronisasi sandi tidak berfungsi</translation>
 <translation id="7647403192093989392">Tidak ada aktivitas terbaru</translation>
 <translation id="7648992873808071793">Menyimpan file pada perangkat ini</translation>
 <translation id="7649070708921625228">Bantuan</translation>
@@ -4769,6 +4792,7 @@
 <translation id="7877451762676714207">Kesalahan server tidak diketahui. Coba lagi, atau hubungi administrator server.</translation>
 <translation id="7877680364634660272">Tur</translation>
 <translation id="7878562273885520351">Sandi Anda mungkin disusupi</translation>
+<translation id="7879631849810108578">Pintasan yang disetel: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Data lokal akan dihapus saat Anda memulai ulang</translation>
 <translation id="7881483672146086348">Lihat Akun</translation>
 <translation id="7882358943899516840">Jenis penyedia</translation>
@@ -4855,6 +4879,7 @@
 <translation id="7987814697832569482">Selalu terhubung melalui VPN ini</translation>
 <translation id="7988355189918024273">Aktifkan fitur aksesibilitas</translation>
 <translation id="7991296728590311172">Setelan Tombol Akses</translation>
+<translation id="7994350303002908848">Tidak dapat menginstal Plugin VM. Coba lagi, atau hubungi administrator perangkat organisasi Anda. Kode error: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">Metode EAP</translation>
 <translation id="7997826902155442747">Prioritas Proses</translation>
 <translation id="7999229196265990314">Membuat file berikut:
@@ -4947,7 +4972,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Tidak ada cookie pihak ketiga}=1{1 cookie pihak ketiga diblokir}other{# cookie pihak ketiga diblokir}}</translation>
 <translation id="810875025413331850">Tidak ditemukan perangkat di sekitar.</translation>
 <translation id="8111155949205007504">Bagikan sandi ini dengan iPhone</translation>
-<translation id="8113043281354018522">Pilih jenis lisensi</translation>
 <translation id="8114875720387900039">Pisahkan horizontal</translation>
 <translation id="8116972784401310538">&amp;Pengelola bookmark</translation>
 <translation id="8117620576188476503">Kelola sambungan, update, dan setelan dengan menu status. Untuk membukanya dengan keyboard, tekan Alt + Shift + S.</translation>
@@ -5104,6 +5128,7 @@
 <translation id="8327039559959785305">Terjadi error saat memasang file Linux. Harap coba lagi.</translation>
 <translation id="8335587457941836791">Lepaskan pin dari rak</translation>
 <translation id="8336407002559723354">Update berakhir pada <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Mulai ulang perangkat untuk menampilkan teks sistem dalam bahasa <ph name="LANGUAGE" /></translation>
 <translation id="8336739000755212683">Ubah gambar akun perangkat</translation>
 <translation id="8337047789441383384">Anda telah mendaftarkan kunci keamanan ini. Anda tidak perlu mendaftarkannya lagi.</translation>
 <translation id="8338952601723052325">Situs web pengembang</translation>
@@ -5147,6 +5172,7 @@
 <translation id="8400146488506985033">Kelola orang</translation>
 <translation id="8401432541486058167">Masukkan PIN yang terkait dengan kartu smart Anda.</translation>
 <translation id="8405046151008197676">Dapatkan sorotan dari update terakhir</translation>
+<translation id="8408068190360279472">Jaringan <ph name="NETWORK_TYPE" />, menyambungkan</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Tanya dulu (disarankan)</translation>
 <translation id="8418445294933751433">Tampilkan &amp;sebagai tab</translation>
@@ -5436,6 +5462,7 @@
 <translation id="8807632654848257479">Stabil</translation>
 <translation id="8808478386290700967">Toko Web</translation>
 <translation id="8808686172382650546">Kucing</translation>
+<translation id="8808744862003883508">Pada halaman ini, Anda dapat melihat semua ekstensi yang diinstal di Chrome.</translation>
 <translation id="8809147117840417135">Hijau kebiruan terang</translation>
 <translation id="8813698869395535039">Tidak dapat masuk ke <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">lembaran kertas</translation>
@@ -5663,7 +5690,6 @@
 <translation id="9121814364785106365">Buka sebagai tab terpasang</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> dijeda</translation>
 <translation id="9124003689441359348">Sandi yang disimpan akan muncul di sini</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> tersisa)</translation>
 <translation id="9128317794749765148">Tidak dapat menyelesaikan penyiapan</translation>
 <translation id="9128870381267983090">Sambungkan ke jaringan</translation>
 <translation id="9130015405878219958">Mode yang dimasukkan tidak valid.</translation>
@@ -5702,6 +5728,7 @@
 <translation id="9188732951356337132">Kirim data penggunaan dan diagnostik. Perangkat ini saat ini otomatis mengirim data diagnostik, perangkat, dan penggunaan aplikasi ke Google. Data ini tidak akan digunakan untuk mengidentifikasi anak Anda serta akan membantu sistem dan stabilitas aplikasi serta peningkatan lainnya. Beberapa data gabungan juga akan membantu aplikasi dan partner Google, seperti developer Android. Jika setelan Aktivitas Web &amp; Aplikasi tambahan diaktifkan untuk anak Anda, data ini mungkin akan disimpan ke Akun Google miliknya. <ph name="BEGIN_LINK2" />Pelajari Lebih Lanjut<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPSec + kunci yang dibagikan sebelumnya</translation>
 <translation id="920045321358709304">Penelusuran <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">Semua data offline akan dihapus</translation>
 <translation id="9201220332032049474">Opsi kunci layar</translation>
 <translation id="9203398526606335860">&amp;Penyidikan diaktifkan</translation>
 <translation id="9203904171912129171">Pilih perangkat</translation>
@@ -5714,6 +5741,7 @@
 <translation id="9220525904950070496">Hapus akun</translation>
 <translation id="9220820413868316583">Angkat, lalu coba lagi.</translation>
 <translation id="923467487918828349">Tampilkan Semua</translation>
+<translation id="929117907539171075">Data offline di aplikasi terinstal juga akan dihapus</translation>
 <translation id="930268624053534560">Stempel Waktu Mendetail</translation>
 <translation id="932327136139879170">Beranda</translation>
 <translation id="932508678520956232">Tidak dapat memulai pencetakan.</translation>
@@ -5739,6 +5767,7 @@
 <translation id="960719561871045870">Kode operator</translation>
 <translation id="960987915827980018">Sekitar 1 jam lagi</translation>
 <translation id="962802172452141067">Cabang folder bookmark</translation>
+<translation id="964057662886721376">Beberapa ekstensi dapat memperlambat Anda - terutama ekstensi yang tidak sengaja diinstal.</translation>
 <translation id="964286338916298286">Administrator IT telah menonaktifkan Chrome Goodies untuk perangkat Anda.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Aplikasi}other{Aplikasi}}</translation>
 <translation id="965211523698323809">Kirim dan terima SMS dari <ph name="DEVICE_TYPE" /> Anda. <ph name="LINK_BEGIN" />Pelajari lebih lanjut<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_is.xtb b/chrome/app/resources/generated_resources_is.xtb
index 3aae367..3a4bf4c34 100644
--- a/chrome/app/resources/generated_resources_is.xtb
+++ b/chrome/app/resources/generated_resources_is.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Sérsniðið</translation>
 <translation id="1178581264944972037">Gera hlé</translation>
 <translation id="117916940443676133">Öryggislykillinn þinn er ekki varinn með PIN-númeri. Til að stjórna innskráningargögnum þarftu fyrst að búa til PIN-númer.</translation>
-<translation id="118069123878619799">- líkamleg einkenni þín, eins og hæð</translation>
 <translation id="1181037720776840403">Fjarlægja</translation>
 <translation id="1183237619868651138">Ekki er hægt að setja <ph name="EXTERNAL_CRX_FILE" /> upp í staðbundnu skyndiminni.</translation>
 <translation id="1185924365081634987">Þú getur líka prófað að <ph name="GUEST_SIGNIN_LINK_START" />vafra sem gestur<ph name="GUEST_SIGNIN_LINK_END" /> til að laga þessa netvillu.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">Beðið eftir <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> önnur tiltæk tæki</translation>
 <translation id="1495677929897281669">Aftur á flipa</translation>
+<translation id="1499271269825557605">Ef þú þekkir ekki viðbót eða ef vafrinn virkar ekki eins og hann á að gera geturðu slökkt á viðbótum eða sérsniðið þær hér.</translation>
 <translation id="1500297251995790841">Óþekkt tæki [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Þessi eigandareikningur verður að vera fyrsti innskráði reikningurinn í lotu fyrir margar innskráningar.</translation>
 <translation id="150411034776756821">Fjarlægja <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Þessari síðu var bannað að fá aðgang að myndavélinni þinni.</translation>
 <translation id="1507246803636407672">Fleygja</translation>
 <translation id="1508491105858779599">Settu fingurinn á fingrafaraskynjarann til að taka tækið úr lás.</translation>
+<translation id="1508575541972276599">Núverandi útgáfa er Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">Fá aðgang að öllum <ph name="DEVICE_NAME_AND_VENDOR" /> um USB</translation>
 <translation id="150962533380566081">Ógilt PUK-númer.</translation>
 <translation id="1510030919967934016">Lokað er á að þessi síða geti fylgst með staðsetningu þinni.</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">Nota</translation>
 <translation id="1603914832182249871">(Huliðsstilling)</translation>
 <translation id="1604432177629086300">Ekki var hægt að prenta. Athugaðu prentarann og reyndu aftur.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: Samstilling aðgangsorða virkar ekki</translation>
 <translation id="1607139524282324606">Hreinsa færslu</translation>
 <translation id="1608626060424371292">Fjarlægja þennan notanda</translation>
 <translation id="1608668830839595724">Fleiri aðgerðir fyrir valin atriði</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">Gögn hýstra forrita</translation>
 <translation id="1776712937009046120">Bæta notanda við</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Þessu tæki er stjórnað af <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    Smelltu á „Áfram“ til að halda áfram og skrá þig inn á reikninginn hjá <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation>
 <translation id="1779652936965200207">Sláðu þennan aðgangslykil inn í „<ph name="DEVICE_NAME" />“:</translation>
 <translation id="1780152987505130652">Loka hópi</translation>
 <translation id="1781291988450150470">Núverandi PIN-númer</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">Aðgerð ekki tiltæk</translation>
 <translation id="2050339315714019657">Skammsnið</translation>
 <translation id="2053312383184521053">Gögn aðgerðaleysis</translation>
+<translation id="2055585478631012616">Þú verður skráð(ur) út af þessum vefsvæðum, þar á meðal í opnum flipum</translation>
 <translation id="205560151218727633">Merki Google hjálparans</translation>
 <translation id="2058456167109518507">Tæki fannst</translation>
 <translation id="2059913712424898428">Tímabelti</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">Afturkalla</translation>
 <translation id="2080070583977670716">Fleiri stillingar</translation>
 <translation id="2087822576218954668">Prenta: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN-net</translation>
 <translation id="2089566709556890888">Örugg vefskoðun með Google Chrome</translation>
 <translation id="2089795179672254991">Spyrja þegar vefsvæði vill sjá texta og myndir sem þú afritar á klippiborðið (ráðlagt)</translation>
 <translation id="2090165459409185032">Til að endurheimta reikningsupplýsingarnar þínar skaltu fara á: google.com/accounts/recovery</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">Síða hefur aðgang að hljóð- og myndinntaki</translation>
 <translation id="2379281330731083556">Prenta í gegnum kerfisglugga... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Spyrja fyrir sendingu (ráðlagt)</translation>
+<translation id="2382818385048255866">Athugaðu viðbæturnar þínar</translation>
 <translation id="2384436799579181135">Villa kom upp. Athugaðu prentarann og reyndu aftur.</translation>
 <translation id="2387458720915042159">Gerð tengingar staðgengilsþjóns</translation>
 <translation id="2391419135980381625">Venjulegt letur</translation>
@@ -1036,6 +1043,7 @@
 <translation id="2462724976360937186">Lykilsauðkenni vottunarstöðvar</translation>
 <translation id="2462752602710430187"><ph name="PRINTER_NAME" /> var bætt við</translation>
 <translation id="2464089476039395325">HTTP-staðgengilsþjónn</translation>
+<translation id="2467267713099745100"><ph name="NETWORK_TYPE" />-net, slökkt</translation>
 <translation id="2468205691404969808">Notar fótspor til að muna kjörstillingar þínar, jafnvel þótt þú heimsækir ekki þessar síður</translation>
 <translation id="2468402215065996499">Tamagotchi</translation>
 <translation id="2469259292033957819">Þú ert ekki með neina vistaða prentara.</translation>
@@ -1290,6 +1298,7 @@
 <translation id="2800760947029405028">Hlaða inn mynd</translation>
 <translation id="2803375539583399270">Sláðu inn PIN-númer</translation>
 <translation id="2804043232879091219">Ekki var hægt að opna hinn vafrann</translation>
+<translation id="2804667941345577550">Þú verður skráð(ur) út af þessu vefsvæði, þar á meðal opnum flipum</translation>
 <translation id="2804680522274557040">Slökkt á myndavél</translation>
 <translation id="2805646850212350655">Dulkóðunarskráakerfi Microsoft</translation>
 <translation id="2805756323405976993">Forrit</translation>
@@ -1297,6 +1306,7 @@
 <translation id="2806891468525657116">Flýtileið er þegar til</translation>
 <translation id="2807517655263062534">Skrár sem þú hleður niður birtast hér</translation>
 <translation id="2809586584051668049">og <ph name="NUMBER_ADDITIONAL_DISABLED" /> í viðbót</translation>
+<translation id="2810390687497823527">Ef þú þekkir ekki viðbót eða vafrinn virkar ekki eins og hann á að gera geturðu slökkt á viðbótum eða sérstillt þær hér.</translation>
 <translation id="2812049959647166806">Ekki er stuðningur við Thunderbolt-tengi</translation>
 <translation id="2812944337881233323">Prófaðu að skrá þig út og inn aftur</translation>
 <translation id="2812989263793994277">Sýna engar myndir</translation>
@@ -1336,6 +1346,7 @@
 <translation id="2861941300086904918">Öryggisstjórnun sérhannaðs biðlara</translation>
 <translation id="2864601841139725659">Veldu prófílmynd</translation>
 <translation id="2865919525181940183">Skjámynd af forritum sem eru á skjánum núna</translation>
+<translation id="286674810810214575">Athugar aflgjafa...</translation>
 <translation id="2867768963760577682">Opna sem fastan flipa</translation>
 <translation id="2868746137289129307">Þessi viðbót er úrelt og regla frá fyrirtækinu hefur gert hana óvirka. Hún gæti sjálfkrafa orðið virk þegar ný útgáfa verður aðgengileg.</translation>
 <translation id="2870560284913253234">Vefsvæði</translation>
@@ -1413,6 +1424,7 @@
 <translation id="2972581237482394796">Endurge&amp;ra</translation>
 <translation id="2973324205039581528">Slökkva á hljóði svæðis</translation>
 <translation id="2977480621796371840">Fjarlægja úr hópi</translation>
+<translation id="2979520980928493164">Heilbrigðara og hraustara Chrome</translation>
 <translation id="2979639724566107830">Opna í nýjum glugga</translation>
 <translation id="2981113813906970160">Sýna stóran músarbendil</translation>
 <translation id="2982970937345031">Tilkynna nafnlaust</translation>
@@ -1519,6 +1531,7 @@
 <translation id="3143515551205905069">Hætta við samstillingu</translation>
 <translation id="3143754809889689516">Spila frá byrjun</translation>
 <translation id="3144647712221361880">Opna tengil sem</translation>
+<translation id="3145187901750964977">Ekki tókst að setja upp sýndarvélina. Reyndu aftur eða hafðu samband við tækjastjóra fyrirtækisins. Villukóði: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Útgáfa:
     <ph name="LINUX_VERSION" />
 
@@ -1557,6 +1570,7 @@
 <translation id="3192947282887913208">Hljóðskrár</translation>
 <translation id="3194737229810486521"><ph name="URL" /> vill fá að geyma gögn varanlega í tækinu þínu</translation>
 <translation id="3199127022143353223">Netþjónar</translation>
+<translation id="3201306578844503970">Uppsetning á sýndarvél mistókst vegna netvillu. Reyndu aftur eða hafðu samband við tækjastjóra fyrirtækisins. Villukóði: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">USB-tæki í boði birtast hér.</translation>
 <translation id="3202131003361292969">Slóð</translation>
 <translation id="3202173864863109533">Slökkt er á hljóði þessa flipa.</translation>
@@ -1893,7 +1907,6 @@
 <translation id="3678156199662914018">Viðbót: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Takk fyrir ábendinguna. Þú ert án nettengingar sem stendur og tilkynningin verður send síðar.</translation>
 <translation id="3682824389861648626">Hreyfingarmörk</translation>
-<translation id="3683023058278427253">Margar leyfisgerðir fundust fyrir lénið þitt. Veldu eina til að halda áfram.</translation>
 <translation id="3683524264665795342">Beiðni frá <ph name="APP_NAME" /> um að deila skjánum</translation>
 <translation id="368789413795732264">Villa kom upp við að reyna að skrifa skrána: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Skrifa í skrár og möppur sem þú opnar í forritinu</translation>
@@ -2067,6 +2080,7 @@
 <translation id="389589731200570180">Deila með gestum</translation>
 <translation id="389901847090970821">Velja lyklaborð</translation>
 <translation id="3899879303189199559">Ónettengdur í meira en ár</translation>
+<translation id="3900789207771372462">Sumar viðbætur sjá vafranotkun þína – þar á meðal persónuupplýsingar.</translation>
 <translation id="3900966090527141178">Flytja út aðgangsorð</translation>
 <translation id="3901991538546252627">Tengist <ph name="NAME" /></translation>
 <translation id="3905761538810670789">Gera við forrit</translation>
@@ -2157,7 +2171,6 @@
 <translation id="4013132157686828973">„<ph name="CLIENT_NAME" />“ er að villuleita þennan vafra</translation>
 <translation id="4014432863917027322">Gera við „<ph name="EXTENSION_NAME" />“?</translation>
 <translation id="4015163439792426608">Ertu með viðbætur? <ph name="BEGIN_LINK" />Stjórnaðu viðbótunum<ph name="END_LINK" /> á einum og sama staðnum.</translation>
-<translation id="4020106588733303597">Úbbs! Kerfið gat ekki hlaðið tiltæk leyfi.</translation>
 <translation id="4020327272915390518">Valmynd</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">Bæt&amp;a við orðabók</translation>
@@ -2195,6 +2208,7 @@
 <translation id="407520071244661467">Breyta stærð</translation>
 <translation id="4075639477629295004">Ekki er hægt að senda <ph name="FILE_NAME" /> út.</translation>
 <translation id="4077917118009885966">Lokað á auglýsingar á þessu vefsvæði</translation>
+<translation id="4077919383365622693">Öllum gögnum og fótsporum sem <ph name="SITE" /> geymir verður eytt.</translation>
 <translation id="4079140982534148664">Nota endurbætta ritvilluleit</translation>
 <translation id="4081242589061676262">Ekki hægt að senda út skrá.</translation>
 <translation id="4084682180776658562">Bókamerki</translation>
@@ -2269,6 +2283,7 @@
 <translation id="4181841719683918333">Tungumál</translation>
 <translation id="4184885522552335684">Dragðu til að færa skjá</translation>
 <translation id="4194570336751258953">Gera „ýta til að smella“ virkt</translation>
+<translation id="4194595472342532425">Grunnstillingarvandamál kom í veg fyrir uppsetningu Plugin VM. Hafðu samband við tækjastjóra fyrirtækisins þíns. Villukóði: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Opna í nýjum flipa</translation>
 <translation id="4195814663415092787">Halda áfram þaðan sem frá var horfið</translation>
 <translation id="4198146608511578238">Haltu ræsiforritstákninu inni til að tala við Google hjálparann.</translation>
@@ -2492,6 +2507,7 @@
 <translation id="4549791035683739768">Engin fingraför eru vistuð í öryggislyklinum þínum</translation>
 <translation id="4551763574344810652">Ýttu á <ph name="MODIFIER_KEY_DESCRIPTION" /> til að afturkalla</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005"><ph name="NETWORK_TYPE" /> net, <ph name="SIGNAL_STRENGTH" />% sendistyrkur</translation>
 <translation id="4554591392113183336">Útgáfa ytri viðbótar er hin sama og eða eldri en útgáfa fyrirliggjandi viðbótar.</translation>
 <translation id="4555769855065597957">Móri</translation>
 <translation id="4555863373929230635">Skráðu þig inn og kveiktu á samstillingu til að vista aðgangsorð á Google reikningnum þínum.</translation>
@@ -2569,6 +2585,7 @@
 <translation id="4665446389743427678">Öllum gögnum sem <ph name="SITE" /> geymir verður eytt.</translation>
 <translation id="4668721319092543482">Smelltu til að kveikja á <ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">Taka saman síðu</translation>
+<translation id="46733273239502219">Ónettengdum gögnum í uppsettum forritum verður einnig eytt</translation>
 <translation id="4673442866648850031">Opna pennaverkfæri þegar penni er fjarlægður</translation>
 <translation id="4677585247300749148"><ph name="URL" /> vill svara aðgengisatburðum</translation>
 <translation id="4677772697204437347">Minni skjástýringar</translation>
@@ -2660,7 +2677,6 @@
 <translation id="4823484602432206655">Lesa og breyta stillingum notanda og tækis</translation>
 <translation id="4824958205181053313">Hætta við samstillingu?</translation>
 <translation id="4827675678516992122">Tenging mistókst</translation>
-<translation id="4828937774870308359">Öfug</translation>
 <translation id="4829768588131278040">Setja upp PIN-númer</translation>
 <translation id="4830502475412647084">Setur upp stýrikerfisuppfærslu</translation>
 <translation id="4830573902900904548"><ph name="DEVICE_TYPE" /> getur ekki tengst netinu gegnum <ph name="NETWORK_NAME" />. Notaðu annað net. <ph name="LEARN_MORE_LINK_START" />Frekari upplýsingar<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2701,6 +2717,7 @@
 <translation id="4876273079589074638">Hjálpaðu hugbúnaðarverkfræðingum okkar að rannsaka og lagfæra ástæðu þess að þetta hrun átti sér stað. Lýstu nákvæmum skrefum eins vel og þú getur. Lýsingin getur ekki verið of ítarleg!</translation>
 <translation id="4876895919560854374">Læsa skjánum og taka hann úr lás</translation>
 <translation id="4877276003880815204">Kanna einingar</translation>
+<translation id="4878653975845355462">Kerfisstjórinn þinn hefur slökkt á sérsniðnum bakgrunni</translation>
 <translation id="4879491255372875719">Sjálfvirkt (sjálfgildi)</translation>
 <translation id="4880328057631981605">Heiti aðgangsstaðar</translation>
 <translation id="4880827082731008257">Leitarferill</translation>
@@ -2756,10 +2773,10 @@
 <translation id="4943691134276646401">„<ph name="CHROME_EXTENSION_NAME" />“ vill tengjast við raðtengi</translation>
 <translation id="4944310289250773232">Þessi auðkenningarþjónusta er hýst af <ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">Aðgerðir</translation>
+<translation id="4952981627953231344">Plugin VM er ekki leyfilegt í þessu tæki. Hafðu samband við tækjastjóra fyrirtækisins.</translation>
 <translation id="4953689047182316270">Svara aðgengisatburði</translation>
 <translation id="4953808748584563296">Sjálfgefin appelsínugul notandamynd</translation>
 <translation id="4955710816792587366">Veldu þér PIN-númer</translation>
-<translation id="4955814292505481804">Árlegt</translation>
 <translation id="4959262764292427323">Aðgangsorð eru vistuð á Google reikningnum þínum til að þú getir notað þau í hvaða tæki sem er</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Kerfisstjórinn þinn setti þetta forrit upp.</translation>
@@ -3241,7 +3258,6 @@
 <translation id="5659593005791499971">Netfang</translation>
 <translation id="5659833766619490117">Ekki var hægt að þýða þessa síðu</translation>
 <translation id="5660204307954428567">Para við <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Varanlegt</translation>
 <translation id="5667546120811588575">Setur Google Play upp...</translation>
 <translation id="5669267381087807207">Virkjar</translation>
 <translation id="5669691691057771421">Sláðu inn nýtt PIN-númer</translation>
@@ -3257,6 +3273,7 @@
 <translation id="5687326903064479980">Tímabelti</translation>
 <translation id="5689516760719285838">Staðsetning</translation>
 <translation id="56907980372820799">Tenglagögn</translation>
+<translation id="5691180005790455277">Öllum gögnum sem <ph name="SITE_GROUP_NAME" /> geymir verður eytt, sem og undirsíðum.</translation>
 <translation id="5691511426247308406">Fjölskylda</translation>
 <translation id="5692183275898619210">Prentun lokið</translation>
 <translation id="5696143504434933566">Tilkynna misnotkun frá „<ph name="EXTENSION_NAME" />“</translation>
@@ -3343,7 +3360,6 @@
 <translation id="5815645614496570556">X.400-vistfang</translation>
 <translation id="5816434091619127343">Umbeðnar breytingar á prentara myndu valda því að ekki væri hægt að nota prentarann.</translation>
 <translation id="5817918615728894473">Para</translation>
-<translation id="5819762621475381970">- útlit herbergisins sem þú ert í</translation>
 <translation id="5821565227679781414">Búa til flýtileið</translation>
 <translation id="5825412242012995131">Kveikt (mælt með)</translation>
 <translation id="5826395379250998812">Tengdu <ph name="DEVICE_TYPE" /> við símann þinn. <ph name="LINK_BEGIN" />Frekari upplýsingar<ph name="LINK_END" /></translation>
@@ -3479,6 +3495,7 @@
 <translation id="6007240208646052708">Raddleit er ekki í boði á þínu tungumáli.</translation>
 <translation id="6009781704028455063">Innbyggður skynjari</translation>
 <translation id="6010869025736512584">Fær aðgang að myndinntaki</translation>
+<translation id="6011074160056912900">Ethernet-net</translation>
 <translation id="6011193465932186973">Fingrafar</translation>
 <translation id="6011449291337289699">Hreinsa vefsvæðagögn</translation>
 <translation id="6015266928248016057">Ógilt PUK-númer. Tilraunir eftir: <ph name="RETRIES" />.</translation>
@@ -3515,6 +3532,7 @@
 <translation id="6053401458108962351">Hreinsa vafragögn...</translation>
 <translation id="6055171183283175969">Aðgangsorðið sem þú slóst inn er ekki rétt.</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 með RSA-dulkóðun</translation>
+<translation id="6055907707645252013"><ph name="NETWORK_TYPE" /> net, ekki tengt</translation>
 <translation id="6056710589053485679">Endurhlaða venjulega</translation>
 <translation id="6057381398996433816">Lokað hefur verið á aðgang þessa vefsvæðis að hreyfi- og birtuskynjurum.</translation>
 <translation id="6058567592298841668">Viðbót, sýndarvél: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3578,6 +3596,7 @@
 <translation id="6136114942382973861">Loka niðurhalsstiku</translation>
 <translation id="6137767437444130246">Notandavottorð</translation>
 <translation id="6138680304137685902">X9.62 ECDSA undirskrift með SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, ekkert net</translation>
 <translation id="6141988275892716286">Staðfesta niðurhal</translation>
 <translation id="6143186082490678276">Fá hjálp</translation>
 <translation id="6144938890088808325">Hjálpaðu okkur að bæta Chromebook</translation>
@@ -3884,6 +3903,7 @@
 <translation id="6602956230557165253">Notaðu vinstri og hægri örvatakkana til að fletta.</translation>
 <translation id="6605847144724004692">Enginn notandi hefur gefið einkunn.</translation>
 <translation id="6607831829715835317">F&amp;leiri verkfæri</translation>
+<translation id="6611972847767394631">Finndu flipana þína hér</translation>
 <translation id="6612358246767739896">Varið efni</translation>
 <translation id="6615455863669487791">Sýnið mér</translation>
 <translation id="6618097958368085618">Halda samt</translation>
@@ -3952,6 +3972,7 @@
 <translation id="6709133671862442373">Fréttir</translation>
 <translation id="6709357832553498500">Tengjast með <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Til baka</translation>
+<translation id="6715803357256707211">Villa kom upp við uppsetningu Linux-forritsins. Smelltu á tilkynninguna til að fá nánari upplýsingar.</translation>
 <translation id="6721678857435001674">Sjá gerð og útgáfu öryggislykilsins þíns</translation>
 <translation id="6721972322305477112">Skrá</translation>
 <translation id="672213144943476270">Opnaðu prófílinn þinn áður en þú vafrar sem gestur.</translation>
@@ -3976,7 +3997,6 @@
 <translation id="674632704103926902">Draga með snertingu</translation>
 <translation id="6748217015615267851">Teiknun: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Þú getur haldið áfram en aðeins samstillt gögn og stillingar verða endurheimt. Öll staðbundin gögn tapast.</translation>
-<translation id="6748775883310276718">Sjálfsali með einu forriti</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (huliðsgluggi)</translation>
 <translation id="6757101664402245801">Vefslóð afrituð</translation>
 <translation id="6758056191028427665">Láttu okkur vita hvernig við stöndum okkur.</translation>
@@ -3986,6 +4006,7 @@
 <translation id="6769712124046837540">Bætir prentara við...</translation>
 <translation id="6770664076092644100">Staðfesta með NFC</translation>
 <translation id="6771503742377376720">Er vottunarstöð</translation>
+<translation id="6772339735733515807">Stjórna viðbótum</translation>
 <translation id="6775163072363532304">Tiltæk tæki birtast hér.</translation>
 <translation id="6777817260680419853">Lokað á framsendingu</translation>
 <translation id="6778737459546443941">Foreldri þitt hefur enn ekki samþykkt þetta</translation>
@@ -4124,6 +4145,7 @@
 <translation id="6972180789171089114">Hljóð/myndskeið</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> getur ekki opnað skrár í þessari möppu vegna þess að hún inniheldur kerfisskrár</translation>
 <translation id="6972754398087986839">Byrja</translation>
+<translation id="6973611239564315524">Uppfærsla í Debian 10 (Buster) er í boði</translation>
 <translation id="6974609594866392343">Ónettengd prufustilling</translation>
 <translation id="6977381486153291903">Útgáfa fastbúnaðar</translation>
 <translation id="6978121630131642226">Leitarvélar</translation>
@@ -4583,6 +4605,7 @@
 <translation id="7644543211198159466">Litur og þema</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (eigandi)</translation>
 <translation id="7645681574855902035">Hættir við Linux-afritun</translation>
+<translation id="7646772052135772216">Samstilling aðgangsorða virkar ekki</translation>
 <translation id="7647403192093989392">Engar nýlegar aðgerðir</translation>
 <translation id="7648992873808071793">Geyma skrár í þessu tæki</translation>
 <translation id="7649070708921625228">Hjálp</translation>
@@ -4771,6 +4794,7 @@
 <translation id="7877451762676714207">Óþekkt villa á þjóni. Reyndu aftur eða hafðu samband við stjórnanda netþjónsins.</translation>
 <translation id="7877680364634660272">Kynning</translation>
 <translation id="7878562273885520351">Aðgangsorðinu þínu kann að hafa verið stolið</translation>
+<translation id="7879631849810108578">Flýtilykill stilltur: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Staðbundnum gögnum verður eytt þegar þú endurræsir</translation>
 <translation id="7881483672146086348">Skoða reikning</translation>
 <translation id="7882358943899516840">Gerð veitu</translation>
@@ -4857,6 +4881,7 @@
 <translation id="7987814697832569482">Tengjast alltaf í gegnum þetta VPN-net</translation>
 <translation id="7988355189918024273">Virkja aðgengiseiginleika</translation>
 <translation id="7991296728590311172">Stillingar rofaaðgangs</translation>
+<translation id="7994350303002908848">Ekki tókst að setja upp Plugin VM. Reyndu aftur eða hafðu samband við tækjastjóra fyrirtækisins. Villukóði: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">EAP-aðferð</translation>
 <translation id="7997826902155442747">Forgangur ferla</translation>
 <translation id="7999229196265990314">Bjó til eftirfarandi skrár:
@@ -4948,7 +4973,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Engin fótspor frá þriðju aðilum}=1{Lokað á eitt fótspor frá þriðja aðila}one{Lokað er á # fótspor frá þriðju aðilum}other{Lokað er á # fótspor frá þriðju aðilum}}</translation>
 <translation id="810875025413331850">Engin nálæg tæki fundust.</translation>
 <translation id="8111155949205007504">Deildu þessu aðgangsorði með iPhone-símanum þínum</translation>
-<translation id="8113043281354018522">Veldu tegund leyfis</translation>
 <translation id="8114875720387900039">Lárétt skipting</translation>
 <translation id="8116972784401310538">&amp;Bókamerkjastjórnun</translation>
 <translation id="8117620576188476503">Stjórnaðu tengingum, uppfærslum og stillingum með stöðusvæðinu. Ýttu á Alt + Shift + S til að gera þetta með lyklaborðinu.</translation>
@@ -5105,6 +5129,7 @@
 <translation id="8327039559959785305">Villa við að tengja Linux-skrár. Reyndu aftur.</translation>
 <translation id="8335587457941836791">Losa úr hillu</translation>
 <translation id="8336407002559723354">Uppfærslum lýkur <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Endurræstu tækið til að sýna kerfistexta á þessu tungumáli: <ph name="LANGUAGE" /></translation>
 <translation id="8336739000755212683">Breyta reikningsmynd í tækinu</translation>
 <translation id="8337047789441383384">Þú hefur þegar skráð þennan öryggislykil. Þú þarft ekki að skrá hann aftur.</translation>
 <translation id="8338952601723052325">Vefsvæði þróunaraðila</translation>
@@ -5148,6 +5173,7 @@
 <translation id="8400146488506985033">Vinna með einstaklinga</translation>
 <translation id="8401432541486058167">Sláðu inn PIN-númerið fyrir snjallkortið þitt.</translation>
 <translation id="8405046151008197676">Fá það helsta úr nýjustu uppfærslunni</translation>
+<translation id="8408068190360279472"><ph name="NETWORK_TYPE" />-net, tengist</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Spyrja fyrst (ráðlagt)</translation>
 <translation id="8418445294933751433">&amp;Sýna sem flipa</translation>
@@ -5437,6 +5463,7 @@
 <translation id="8807632654848257479">Stöðug</translation>
 <translation id="8808478386290700967">Vefverslun</translation>
 <translation id="8808686172382650546">Köttur</translation>
+<translation id="8808744862003883508">Þessi síða sýnir allar uppsettar viðbætur í Chrome.</translation>
 <translation id="8809147117840417135">Ljósgrænblár</translation>
 <translation id="8813698869395535039">Ekki hægt að skrá inn á <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">blaðsíða</translation>
@@ -5664,7 +5691,6 @@
 <translation id="9121814364785106365">Opna sem fastan flipa</translation>
 <translation id="9122176249172999202">Hlé hefur verið gert á <ph name="IDS_SHORT_PRODUCT_NAME" /></translation>
 <translation id="9124003689441359348">Vistuð aðgangsorð birtast hér</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> eftir)</translation>
 <translation id="9128317794749765148">Ekki tókst að ljúka við uppsetningu</translation>
 <translation id="9128870381267983090">Tengjast neti</translation>
 <translation id="9130015405878219958">Ógild stilling slegin inn.</translation>
@@ -5703,6 +5729,7 @@
 <translation id="9188732951356337132">Senda notkunar- og greiningargögn. Þetta tæki sendir núna sjálfkrafa greiningargögn, tækisgögn og upplýsingar um forritanotkun til Google. Þetta verður ekki notað til að bera kennsl á barnið þitt og mun stuðla að því að bæta stöðugleika kerfa og forrita auk annarra endurbóta. Sum uppsöfnuð gögn munu einnig gagnast forritum og samstarfsaðilum Google, til dæmis þróunaraðilum Android. Ef kveikt er á ítarlegri vef- og forritavirkni fyrir barnið geta þessi gögn verið vistuð á Google reikningi barnsins. <ph name="BEGIN_LINK2" />Frekari upplýsingar<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + PSK-lykill</translation>
 <translation id="920045321358709304">Leita á <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">Öllum ónettengdum gögnum verður eytt</translation>
 <translation id="9201220332032049474">Valkostir skjálæsingar</translation>
 <translation id="9203398526606335860">Kveikt á hegðunarskráningu</translation>
 <translation id="9203904171912129171">Velja tæki</translation>
@@ -5715,6 +5742,7 @@
 <translation id="9220525904950070496">Fjarlægja reikning</translation>
 <translation id="9220820413868316583">Lyftu og reyndu aftur.</translation>
 <translation id="923467487918828349">Sýna allt</translation>
+<translation id="929117907539171075">Ónettengdum gögnum í uppsettu forriti verður einnig eytt</translation>
 <translation id="930268624053534560">Nákvæmir tímastimplar</translation>
 <translation id="932327136139879170">Heim</translation>
 <translation id="932508678520956232">Ekki var hægt að hefja prentun.</translation>
@@ -5740,6 +5768,7 @@
 <translation id="960719561871045870">Kóði símafyrirtækis</translation>
 <translation id="960987915827980018">Um 1 klukkustund eftir</translation>
 <translation id="962802172452141067">Möpputré bókamerkja</translation>
+<translation id="964057662886721376">Sumar viðbætur geta hægt á virkni – sérstaklega þær sem þú ætlaðir ekki að setja upp.</translation>
 <translation id="964286338916298286">Kerfisstjórinn þinn hefur gert Chrome Goodies glaðning óvirkan fyrir tækið þitt.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Forrit}one{Forrit}other{Forrit}}</translation>
 <translation id="965211523698323809">Sendu og taktu á móti SMS-skilaboðum úr <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Frekari upplýsingar<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb
index 645cbc9..86af019 100644
--- a/chrome/app/resources/generated_resources_it.xtb
+++ b/chrome/app/resources/generated_resources_it.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Personalizzati</translation>
 <translation id="1178581264944972037">Pausa</translation>
 <translation id="117916940443676133">Il token di sicurezza non è protetto tramite PIN. Per poter gestire i dati di accesso devi creare un PIN.</translation>
-<translation id="118069123878619799">- dati sulle tue caratteristiche fisiche, come l'altezza</translation>
 <translation id="1181037720776840403">Rimuovi</translation>
 <translation id="1183237619868651138">Impossibile installare <ph name="EXTERNAL_CRX_FILE" /> nella cache locale.</translation>
 <translation id="1185924365081634987">Puoi anche provare a <ph name="GUEST_SIGNIN_LINK_START" />navigare come ospite<ph name="GUEST_SIGNIN_LINK_END" /> per correggere questo errore di rete.</translation>
@@ -1907,7 +1906,6 @@
 <translation id="3678156199662914018">Estensione: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Grazie per il tuo feedback. Adesso sei offline; il tuo rapporto verrà inviato in un secondo momento.</translation>
 <translation id="3682824389861648626">Soglia del movimento</translation>
-<translation id="3683023058278427253">Abbiamo rilevato diversi tipi di licenza per il tuo dominio. Scegline uno per continuare.</translation>
 <translation id="3683524264665795342">Richiesta di condivisione dello schermo da parte di <ph name="APP_NAME" /></translation>
 <translation id="368789413795732264">Si è verificato un errore durante la scrittura del file: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Accedere in modalità di scrittura a file e cartelle aperte nell'applicazione</translation>
@@ -2172,7 +2170,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" sta eseguendo il debug del browser</translation>
 <translation id="4014432863917027322">Riparare "<ph name="EXTENSION_NAME" />"?</translation>
 <translation id="4015163439792426608">Usi delle estensioni? <ph name="BEGIN_LINK" />Gestiscile<ph name="END_LINK" /> da un unico punto di facile accesso.</translation>
-<translation id="4020106588733303597">Impossibile caricare le licenze disponibili.</translation>
 <translation id="4020327272915390518">Menu Opzioni</translation>
 <translation id="4021279097213088397">-</translation>
 <translation id="4022426551683927403">&amp;Aggiungi al dizionario</translation>
@@ -2679,7 +2676,6 @@
 <translation id="4823484602432206655">Lettura e modifica delle impostazioni utente e dispositivo</translation>
 <translation id="4824958205181053313">Vuoi annullare la sincronizzazione?</translation>
 <translation id="4827675678516992122">Impossibile collegarsi</translation>
-<translation id="4828937774870308359">Australiano</translation>
 <translation id="4829768588131278040">Imposta il codice PIN</translation>
 <translation id="4830502475412647084">Installazione dell'aggiornamento del sistema operativo in corso</translation>
 <translation id="4830573902900904548">Il <ph name="DEVICE_TYPE" /> non è in grado di connettersi a Internet utilizzando <ph name="NETWORK_NAME" />. Scegli un'altra rete. <ph name="LEARN_MORE_LINK_START" />Ulteriori informazioni<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2780,7 +2776,6 @@
 <translation id="4953689047182316270">Rispondi agli eventi di accessibilità</translation>
 <translation id="4953808748584563296">Avatar arancione predefinito</translation>
 <translation id="4955710816792587366">Scegli il PIN</translation>
-<translation id="4955814292505481804">Annuale</translation>
 <translation id="4959262764292427323">Le password vengono salvate nel tuo Account Google affinché tu possa usarle su qualsiasi dispositivo</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Questa app è stata installata dall'amministratore.</translation>
@@ -3262,7 +3257,6 @@
 <translation id="5659593005791499971">Email</translation>
 <translation id="5659833766619490117">Impossibile tradurre questa pagina</translation>
 <translation id="5660204307954428567">Accoppia con <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Perpetua</translation>
 <translation id="5667546120811588575">Configurazione di Google Play...</translation>
 <translation id="5669267381087807207">In fase di attivazione</translation>
 <translation id="5669691691057771421">Inserisci il nuovo PIN</translation>
@@ -3365,7 +3359,6 @@
 <translation id="5815645614496570556">Indirizzo X.400</translation>
 <translation id="5816434091619127343">Le modifiche richieste renderebbero la stampante inutilizzabile.</translation>
 <translation id="5817918615728894473">Accoppia</translation>
-<translation id="5819762621475381970">- dati sulla struttura della tua stanza</translation>
 <translation id="5821565227679781414">Crea scorciatoia</translation>
 <translation id="5825412242012995131">On (opzione consigliata)</translation>
 <translation id="5826395379250998812">Connetti <ph name="DEVICE_TYPE" /> con il tuo telefono. <ph name="LINK_BEGIN" />Ulteriori informazioni<ph name="LINK_END" /></translation>
@@ -4003,7 +3996,6 @@
 <translation id="674632704103926902">Attiva trascinamento al tocco</translation>
 <translation id="6748217015615267851">Renderer: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Puoi continuare, tuttavia verranno ripristinati soltanto le impostazioni e i dati sincronizzati. Tutti i dati locali andranno persi.</translation>
-<translation id="6748775883310276718">Chiosco app singola</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (In incognito)</translation>
 <translation id="6757101664402245801">URL copiato</translation>
 <translation id="6758056191028427665">Comunicaci la tua opinione sul nostro lavoro.</translation>
@@ -4981,7 +4973,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Nessun cookie di terze parti}=1{È stato bloccato 1 cookie di terze parti}other{Sono stati bloccati # cookie di terze parti}}</translation>
 <translation id="810875025413331850">Nessun dispositivo trovato nelle vicinanze.</translation>
 <translation id="8111155949205007504">Condividi la password con l'iPhone</translation>
-<translation id="8113043281354018522">Scegli il tipo di licenza</translation>
 <translation id="8114875720387900039">Divisione in orizzontale</translation>
 <translation id="8116972784401310538">Gestione &amp;Preferiti</translation>
 <translation id="8117620576188476503">Gestisci connessioni, aggiornamenti e impostazioni dalla barra di stato. Per accedere usando la tastiera, premi ALT + MAIUSC + S.</translation>
@@ -5699,7 +5690,6 @@
 <translation id="9121814364785106365">Apri in una scheda bloccata</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> in sospeso</translation>
 <translation id="9124003689441359348">Le password salvate verranno visualizzate qui</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> rimanenti)</translation>
 <translation id="9128317794749765148">Impossibile completare la configurazione</translation>
 <translation id="9128870381267983090">Collegati alla rete</translation>
 <translation id="9130015405878219958">La modalità inserita non è valida.</translation>
diff --git a/chrome/app/resources/generated_resources_iw.xtb b/chrome/app/resources/generated_resources_iw.xtb
index d86150c..36961955 100644
--- a/chrome/app/resources/generated_resources_iw.xtb
+++ b/chrome/app/resources/generated_resources_iw.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">מותאם אישית</translation>
 <translation id="1178581264944972037">השהה</translation>
 <translation id="117916940443676133">מפתח האבטחה שלך אינו מוגן באמצעות קוד אימות. כדי לנהל את פרטי הכניסה, צריך תחילה ליצור קוד אימות.</translation>
-<translation id="118069123878619799">- התכונות הפיזיות שלך, כמו גובה.</translation>
 <translation id="1181037720776840403">הסרה</translation>
 <translation id="1183237619868651138">לא ניתן להתקין את <ph name="EXTERNAL_CRX_FILE" /> במטמון המקומי.</translation>
 <translation id="1185924365081634987">כדאי גם לנסות <ph name="GUEST_SIGNIN_LINK_START" />לגלוש כאורח<ph name="GUEST_SIGNIN_LINK_END" /> כדי לתקן את שגיאת הרשת הזו.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">ממתין ל-<ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> מכשירים זמינים נוספים.</translation>
 <translation id="1495677929897281669">חזרה לכרטיסייה</translation>
+<translation id="1499271269825557605">אם לא מזהים תוסף כלשהו או אם הדפדפן לא פועל בצורה תקינה, אפשר להשבית את התוספים או להתאים אותם אישית מכאן.</translation>
 <translation id="1500297251995790841">מכשיר לא ידוע [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">החשבון של בעלים זה צריך להיות החשבון הראשון שאליו נכנסים בעת כניסה לפעילות באתר מחשבונות מרובים.</translation>
 <translation id="150411034776756821">הסרה של <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">דף זה נחסם לגישה למצלמה שלך.</translation>
 <translation id="1507246803636407672">&amp;התעלם</translation>
 <translation id="1508491105858779599">הנח את האצבע על חיישן טביעות האצבע כדי לבטל את נעילת המכשיר.</translation>
+<translation id="1508575541972276599">‏הגרסה הנוכחית היא Debian 9 ‏(Stretch)</translation>
 <translation id="1509281256533087115">‏גישה לכל מכשיר של <ph name="DEVICE_NAME_AND_VENDOR" /> באמצעות USB</translation>
 <translation id="150962533380566081">‏PUK לא חוקי.</translation>
 <translation id="1510030919967934016">דף זה נחסם ממעקב אחר מיקומך.</translation>
@@ -431,6 +432,7 @@
 <translation id="1601560923496285236">החל</translation>
 <translation id="1603914832182249871">(גלישה בסתר)</translation>
 <translation id="1604432177629086300">לא ניתן היה להדפיס. יש לבדוק את המדפסת ולנסות שוב.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: סנכרון הסיסמאות לא פועל</translation>
 <translation id="1607139524282324606">ניקוי רשומה</translation>
 <translation id="1608626060424371292">הסר את המשתמש הזה</translation>
 <translation id="1608668830839595724">פעולות נוספות שאפשר לבצע בפריטים שנבחרו</translation>
@@ -557,6 +559,8 @@
 <translation id="177336675152937177">נתוני יישומים מתארחים</translation>
 <translation id="1776712937009046120">הוסף משתמש</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">המכשיר הזה מנוהל על ידי <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    כדי להמשיך בכניסה לחשבון <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />, יש ללחוץ על "הבא".</translation>
 <translation id="1779652936965200207">הזן את סיסמה זו ב-"<ph name="DEVICE_NAME" />":</translation>
 <translation id="1780152987505130652">סגירת הקבוצה</translation>
 <translation id="1781291988450150470">קוד אימות נוכחי</translation>
@@ -744,6 +748,7 @@
 <translation id="2048653237708779538">הפעולה לא זמינה</translation>
 <translation id="2050339315714019657">לאורך</translation>
 <translation id="2053312383184521053">נתוני מצב של חוסר פעילות</translation>
+<translation id="2055585478631012616">המערכת תוציא אותך מהאתרים האלה, כולל בכרטיסיות הפתוחות</translation>
 <translation id="205560151218727633">‏הלוגו של Google Assistant</translation>
 <translation id="2058456167109518507">אותר מכשיר</translation>
 <translation id="2059913712424898428">אזור זמן</translation>
@@ -759,6 +764,7 @@
 <translation id="2079545284768500474">ביטול הפעולה</translation>
 <translation id="2080070583977670716">הגדרות נוספות</translation>
 <translation id="2087822576218954668">הדפסה: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">‏רשת VPN</translation>
 <translation id="2089566709556890888">‏גלישה בטוחה עם Google Chrome</translation>
 <translation id="2089795179672254991">יש לשאול כשאתר רוצה גישה אל טקסט ותמונות שהועתקו אל הלוח (מומלץ)</translation>
 <translation id="2090165459409185032">‏כדי לשחזר את המידע מהחשבון, עבור אל: google.com/accounts/recovery</translation>
@@ -982,6 +988,7 @@
 <translation id="2379232090534544565">אתר ניגש אל קלט וידאו ואודיו</translation>
 <translation id="2379281330731083556">הדפס באמצעות תיבת דו-שיח של המערכת... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">שאל לפני שליחה (מומלץ)</translation>
+<translation id="2382818385048255866">בדיקת התוספים</translation>
 <translation id="2384436799579181135">אירעה שגיאה. יש לבדוק את המדפסת ולנסות שוב.</translation>
 <translation id="2387458720915042159">‏סוג חיבור לשרת proxy</translation>
 <translation id="2391419135980381625">גופן רגיל</translation>
@@ -1033,6 +1040,7 @@
 <translation id="2462724976360937186">מזהה מפתח של רשות אישורים</translation>
 <translation id="2462752602710430187">המדפסת <ph name="PRINTER_NAME" /> נוספה</translation>
 <translation id="2464089476039395325">‏שרת proxy של HTTP</translation>
+<translation id="2467267713099745100">רשת <ph name="NETWORK_TYPE" />, מושבתת</translation>
 <translation id="2468205691404969808">‏שימוש בקובצי cookie כדי לשמור את ההעדפות שלך, גם אם לא נכנסת אל הדפים האלה</translation>
 <translation id="2468402215065996499">טמגוצ'י</translation>
 <translation id="2469259292033957819">אין לך מדפסות שמורות.</translation>
@@ -1287,6 +1295,7 @@
 <translation id="2800760947029405028">העלאת תמונה</translation>
 <translation id="2803375539583399270">‏הזן PIN</translation>
 <translation id="2804043232879091219">לא ניתן לפתוח את הדפדפן החלופי</translation>
+<translation id="2804667941345577550">המערכת תוציא אותך מהאתר הזה, כולל בכרטיסיות הפתוחות</translation>
 <translation id="2804680522274557040">המצלמה מושבתת</translation>
 <translation id="2805646850212350655">‏מערכת קבצים מצפינה של Microsoft</translation>
 <translation id="2805756323405976993">אפליקציות</translation>
@@ -1294,6 +1303,7 @@
 <translation id="2806891468525657116">קיצור הדרך כבר קיים</translation>
 <translation id="2807517655263062534">קבצים שתוריד יופיעו כאן</translation>
 <translation id="2809586584051668049">ועוד <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2810390687497823527">אם לא מזהים תוסף כלשהו או אם הדפדפן לא פועל בצורה תקינה, אפשר להשבית את התוספים או להתאים אותם אישית מכאן.</translation>
 <translation id="2812049959647166806">‏Thunderbolt אינו נתמך</translation>
 <translation id="2812944337881233323">נסה לצאת ולהיכנס שוב</translation>
 <translation id="2812989263793994277">אל תציג אף תמונה</translation>
@@ -1333,6 +1343,7 @@
 <translation id="2861941300086904918">‏מנהל האבטחה של Native Client</translation>
 <translation id="2864601841139725659">הגדר את תמונת הפרופיל</translation>
 <translation id="2865919525181940183">צילום מסך של התוכנות שמוצגות כרגע במסך</translation>
+<translation id="286674810810214575">מקורות החשמל בבדיקה…</translation>
 <translation id="2867768963760577682">פתח ככרטיסייה מוצמדת</translation>
 <translation id="2868746137289129307">תוסף זה הוא מיושן והושבת בהתאם למדיניות הארגון. ייתכן שהוא יופעל באופן אוטומטי כשתצא גרסה חדשה יותר.</translation>
 <translation id="2870560284913253234">אתר</translation>
@@ -1410,6 +1421,7 @@
 <translation id="2972581237482394796">&amp;בצע שנית</translation>
 <translation id="2973324205039581528">השתקת האתר</translation>
 <translation id="2977480621796371840">הסרה מהקבוצה</translation>
+<translation id="2979520980928493164">‏Chrome בריא ושמח יותר</translation>
 <translation id="2979639724566107830">פתח בחלון חדש</translation>
 <translation id="2981113813906970160">הצג סמן עכבר גדול</translation>
 <translation id="2982970937345031">דיווח באופן אנונימי</translation>
@@ -1516,6 +1528,7 @@
 <translation id="3143515551205905069">ביטול סנכרון</translation>
 <translation id="3143754809889689516">הפעלה מההתחלה</translation>
 <translation id="3144647712221361880">פתח קישור בתור</translation>
+<translation id="3145187901750964977">לא ניתן להתקין את המכונה הווירטואלית. יש לנסות שוב או לפנות למנהל המכשיר בארגון. קוד שגיאה: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">גרסה:
     <ph name="LINUX_VERSION" />
 
@@ -1554,6 +1567,7 @@
 <translation id="3192947282887913208">קובצי אודיו</translation>
 <translation id="3194737229810486521"><ph name="URL" /> רוצה לאחסן נתונים במכשיר שלך באופן קבוע</translation>
 <translation id="3199127022143353223">שרתים</translation>
+<translation id="3201306578844503970">לא ניתן להתקין את המכונה הווירטואלית כתוצאה משגיאת רשת. יש לנסות שוב או לפנות למנהל המכשיר בארגון. קוד שגיאה: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">‏התקני USB זמינים יופיעו כאן.</translation>
 <translation id="3202131003361292969">נתיב</translation>
 <translation id="3202173864863109533">האודיו בכרטיסייה זו מושתק.</translation>
@@ -1890,7 +1904,6 @@
 <translation id="3678156199662914018">תוסף: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">תודה על המשוב. כרגע אינך מחובר לאינטרנט, כך שהדוח שלך יישלח מאוחר יותר.</translation>
 <translation id="3682824389861648626">סף תנועה</translation>
-<translation id="3683023058278427253">מצאנו כמה סוגי רישיונות בשביל הדומיין שלך. בחר סוג אחד כדי להמשיך.</translation>
 <translation id="3683524264665795342">בקשה לשיתוף מסך של <ph name="APP_NAME" /></translation>
 <translation id="368789413795732264">אירעה שגיאה בעת ניסיון לכתוב את הקובץ: <ph name="ERROR_TEXT" /></translation>
 <translation id="3688507211863392146">כתיבה לקבצים ותיקיות שאתה פותח ביישום</translation>
@@ -2064,6 +2077,7 @@
 <translation id="389589731200570180">שיתוף עם אורחים</translation>
 <translation id="389901847090970821">בחירת מקלדת</translation>
 <translation id="3899879303189199559">לא מקוונת במשך יותר משנה</translation>
+<translation id="3900789207771372462">לחלק מהתוספים יש גישה לפעילות הגלישה שלך, כולל מידע אישי.</translation>
 <translation id="3900966090527141178">ייצוא סיסמאות</translation>
 <translation id="3901991538546252627">מתחבר אל: <ph name="NAME" /></translation>
 <translation id="3905761538810670789">תקן את היישום</translation>
@@ -2154,7 +2168,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" מנפה באגים בדפדפן זה</translation>
 <translation id="4014432863917027322">לתקן את '<ph name="EXTENSION_NAME" />'?</translation>
 <translation id="4015163439792426608">מותקנים אצלך תוספים? אפשר <ph name="BEGIN_LINK" />לנהל את התוספים<ph name="END_LINK" /> בקלות במקום אחד.</translation>
-<translation id="4020106588733303597">אופס! המערכת לא הצליחה לטעון את הרישיונות הזמינים.</translation>
 <translation id="4020327272915390518">תפריט אפשרויות</translation>
 <translation id="4021279097213088397">‏–</translation>
 <translation id="4022426551683927403">&amp;הוסף למילון</translation>
@@ -2192,6 +2205,7 @@
 <translation id="407520071244661467">שנה קנה מידה</translation>
 <translation id="4075639477629295004">לא ניתן להעביר את <ph name="FILE_NAME" />.</translation>
 <translation id="4077917118009885966">מודעות חסומות באתר הזה</translation>
+<translation id="4077919383365622693">‏המערכת תמחק את כל הנתונים וקובצי ה-cookie שנשמרו על ידי <ph name="SITE" />.</translation>
 <translation id="4079140982534148664">שימוש בבדיקת איות משופרת</translation>
 <translation id="4081242589061676262">לא ניתן להעביר את הקובץ.</translation>
 <translation id="4084682180776658562">סימניה</translation>
@@ -2266,6 +2280,7 @@
 <translation id="4181841719683918333">שפות</translation>
 <translation id="4184885522552335684">גרור כדי להזיז צג</translation>
 <translation id="4194570336751258953">הפעלת האפשרות 'נגיעה קלה'</translation>
+<translation id="4194595472342532425">‏לא ניתן להתקין את Plugin VM כתוצאה מבעיית הגדרה. יש לפנות למנהל המכשיר בארגון. קוד שגיאה: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">פתיחה בכרטיסייה חדשה</translation>
 <translation id="4195814663415092787">המשך מהמקום שבו הפסקת</translation>
 <translation id="4198146608511578238">‏כדי לדבר אל Google Assistant, לחץ לחיצה ארוכה על הסמל של מרכז האפליקציות.</translation>
@@ -2489,6 +2504,7 @@
 <translation id="4549791035683739768">לא נשמרו טביעות אצבעות במפתח האבטחה</translation>
 <translation id="4551763574344810652">אפשר לבטל את הפעולה בהקשה על <ph name="MODIFIER_KEY_DESCRIPTION" /></translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005">‏רשת <ph name="NETWORK_TYPE" />, עוצמת אות ‎<ph name="SIGNAL_STRENGTH" />%‎</translation>
 <translation id="4554591392113183336">התוסף החיצוני הוא מגרסה זהה או קודמת לזו של התוסף הקיים.</translation>
 <translation id="4555769855065597957">צל</translation>
 <translation id="4555863373929230635">‏כדי לשמור סיסמאות בחשבון Google, יש להיכנס ולהפעיל את הסנכרון.</translation>
@@ -2566,6 +2582,7 @@
 <translation id="4665446389743427678">כל הנתונים שמאוחסנים על ידי <ph name="SITE" /> יימחקו.</translation>
 <translation id="4668721319092543482">לחץ כדי להפעיל את <ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">זקק דף</translation>
+<translation id="46733273239502219">המערכת תמחק גם נתונים שנשמרו במצב אופליין באפליקציות מותקנות</translation>
 <translation id="4673442866648850031">פתח את כלי הסטיילוס לאחר שליפת הסטיילוס</translation>
 <translation id="4677585247300749148"><ph name="URL" /> רוצה להגיב לאירועי נגישות</translation>
 <translation id="4677772697204437347">‏זיכרון GPU</translation>
@@ -2657,7 +2674,6 @@
 <translation id="4823484602432206655">קריאה ושינוי של הגדרות המשתמש והמכשיר</translation>
 <translation id="4824958205181053313">לבטל את הסנכרון?</translation>
 <translation id="4827675678516992122">לא ניתן להתחבר</translation>
-<translation id="4828937774870308359">אוסטרלית</translation>
 <translation id="4829768588131278040">‏הגדר PIN</translation>
 <translation id="4830502475412647084">‏מתקין עדכון OS</translation>
 <translation id="4830573902900904548">ה-<ph name="DEVICE_TYPE" /> לא מצליח להתחבר אל האינטרנט באמצעות <ph name="NETWORK_NAME" />. בחר רשת אחרת. <ph name="LEARN_MORE_LINK_START" />למידע נוסף<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2698,6 +2714,7 @@
 <translation id="4876273079589074638">עזור למהנדסים שלנו לחקור את הקריסה הזו ולתקן אותה. מומלץ לרשום את השלבים בצורה כמה שיותר מדויקת, גם הפרטים הקטנים ביותר יכולים לעזור.</translation>
 <translation id="4876895919560854374">נעילה ושחרור של המסך</translation>
 <translation id="4877276003880815204">בדיקת רכיבים</translation>
+<translation id="4878653975845355462">מנהל המערכת השבית את הרקעים המותאמים אישית</translation>
 <translation id="4879491255372875719">אוטומטי (ברירת מחדל)</translation>
 <translation id="4880328057631981605">‏שם נקודת גישה (APN)</translation>
 <translation id="4880827082731008257">חיפוש בהיסטוריה</translation>
@@ -2753,10 +2770,10 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" רוצה להתחבר אל יציאה טורית</translation>
 <translation id="4944310289250773232">שירות האימות הזה מתארח בדומיין <ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">פעולות</translation>
+<translation id="4952981627953231344">‏השימוש ב-Plugin VM אסור במכשיר הזה. יש לפנות למנהל המכשיר בארגון.</translation>
 <translation id="4953689047182316270">להגיב לאירועי נגישות</translation>
 <translation id="4953808748584563296">דמות ברירת מחדל כתומה</translation>
 <translation id="4955710816792587366">בחירת קוד</translation>
-<translation id="4955814292505481804">שנתי</translation>
 <translation id="4959262764292427323">‏סיסמאות נשמרות בחשבון Google כדי לאפשר לך להשתמש בהן בכל המכשירים</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">האפליקציה הזו הותקנה על ידי מנהל המערכת.</translation>
@@ -3238,7 +3255,6 @@
 <translation id="5659593005791499971">אימייל</translation>
 <translation id="5659833766619490117">לא ניתן היה לתרגם את הדף הזה</translation>
 <translation id="5660204307954428567">התאמה עם <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">קבוע</translation>
 <translation id="5667546120811588575">‏הגדרת Google Play מתבצעת...</translation>
 <translation id="5669267381087807207">מפעיל</translation>
 <translation id="5669691691057771421">‏הזן את מספר ה-PIN החדש</translation>
@@ -3254,6 +3270,7 @@
 <translation id="5687326903064479980">אזור זמן</translation>
 <translation id="5689516760719285838">מיקום</translation>
 <translation id="56907980372820799">קשר נתונים</translation>
+<translation id="5691180005790455277">‏המערכת תמחק את כל הנתונים וקובצי ה-cookie שנשמרו על ידי האתר <ph name="SITE_GROUP_NAME" /> והאתרים שכלולים בו.</translation>
 <translation id="5691511426247308406">משפחה</translation>
 <translation id="5692183275898619210">ההדפסה הושלמה</translation>
 <translation id="5696143504434933566">דיווח על ניצול לרעה על-ידי "<ph name="EXTENSION_NAME" />"</translation>
@@ -3340,7 +3357,6 @@
 <translation id="5815645614496570556">‏כתובת X.400</translation>
 <translation id="5816434091619127343">אם יבוצעו שינויי המדפסת שהתבקשו, לא ניתן יהיה להשתמש בה.</translation>
 <translation id="5817918615728894473">התאם</translation>
-<translation id="5819762621475381970">- מבנה החדר שלך.</translation>
 <translation id="5821565227679781414">צור קיצור דרך</translation>
 <translation id="5825412242012995131">מופעל (מומלץ)</translation>
 <translation id="5826395379250998812">יש לחבר את ה-<ph name="DEVICE_TYPE" /> לטלפון. <ph name="LINK_BEGIN" />מידע נוסף<ph name="LINK_END" /></translation>
@@ -3476,6 +3492,7 @@
 <translation id="6007240208646052708">לא ניתן לבצע חיפוש קולי בשפה שלך.</translation>
 <translation id="6009781704028455063">חיישן מובנה</translation>
 <translation id="6010869025736512584">גישה לפלט אודיו</translation>
+<translation id="6011074160056912900">‏רשת Ethernet</translation>
 <translation id="6011193465932186973">טביעת אצבע</translation>
 <translation id="6011449291337289699">מחיקה של נתוני אתר</translation>
 <translation id="6015266928248016057">‏PUK לא חוקי. מספר הניסיונות החוזרים שנותרו: <ph name="RETRIES" />.</translation>
@@ -3512,6 +3529,7 @@
 <translation id="6053401458108962351">&amp;נקה נתוני גלישה...</translation>
 <translation id="6055171183283175969">הזנת סיסמה שגויה.</translation>
 <translation id="6055392876709372977">‏PKCS #1 SHA-256 עם הצפנת RSA</translation>
+<translation id="6055907707645252013">רשת <ph name="NETWORK_TYPE" />, לא מחוברת</translation>
 <translation id="6056710589053485679">טעינה מחדש רגילה</translation>
 <translation id="6057381398996433816">נחסמה היכולת של האתר הזה להשתמש בחיישני התנועה והתאורה.</translation>
 <translation id="6058567592298841668">חיבור מכונה וירטואלית: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3575,6 +3593,7 @@
 <translation id="6136114942382973861">סגירת סרגל ההורדות</translation>
 <translation id="6137767437444130246">אישור משתמש</translation>
 <translation id="6138680304137685902">‏חתימת X9.62 ECDSA עם SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, אין רשת</translation>
 <translation id="6141988275892716286">אישור הורדה</translation>
 <translation id="6143186082490678276">קבל עזרה</translation>
 <translation id="6144938890088808325">‏עזור לנו לשפר את מחשבי Chromebook</translation>
@@ -3881,6 +3900,7 @@
 <translation id="6602956230557165253">השתמש במקש החצים השמאלי והימני כדי לנווט.</translation>
 <translation id="6605847144724004692">עדיין לא דורג על-ידי משתמשים.</translation>
 <translation id="6607831829715835317">כלים &amp;נוספים</translation>
+<translation id="6611972847767394631">הכרטיסיות שלך נמצאות כאן</translation>
 <translation id="6612358246767739896">תוכן מוגן</translation>
 <translation id="6615455863669487791">הראה לי</translation>
 <translation id="6618097958368085618">השארה בכל מקרה</translation>
@@ -3949,6 +3969,7 @@
 <translation id="6709133671862442373">חדשות</translation>
 <translation id="6709357832553498500">התחבר באמצעות <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">הקודם</translation>
+<translation id="6715803357256707211">‏התרחשה שגיאה במהלך ההתקנה של אפליקציית Linux. ניתן ללחוץ על ההתראה כדי לקבל פרטים נוספים.</translation>
 <translation id="6721678857435001674">לראות את היצרן והדגם של מפתח האבטחה</translation>
 <translation id="6721972322305477112">&amp;קובץ</translation>
 <translation id="672213144943476270">בטל את נעילת הפרופיל שלך לפני גלישה כאורח.</translation>
@@ -3973,7 +3994,6 @@
 <translation id="674632704103926902">הפעל גרירה והקשה</translation>
 <translation id="6748217015615267851">כלי עיבוד: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">אתה יכול להמשיך, אולם רק הנתונים וההגדרות המסונכרנים שלך ישוחזרו. כל הנתונים המקומיים יאבדו.</translation>
-<translation id="6748775883310276718">קיוסק לאפליקציה יחידה</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (גלישה בסתר)</translation>
 <translation id="6757101664402245801">כתובת האתר הועתקה</translation>
 <translation id="6758056191028427665">נשמח לקבל ממך משוב.</translation>
@@ -3983,6 +4003,7 @@
 <translation id="6769712124046837540">הוספת מדפסת...</translation>
 <translation id="6770664076092644100">‏אימות באמצעות NFC</translation>
 <translation id="6771503742377376720">הוא רשות אישורים</translation>
+<translation id="6772339735733515807">ניהול התוספים שלך</translation>
 <translation id="6775163072363532304">כאן יופיעו מכשירים זמינים.</translation>
 <translation id="6777817260680419853">הפניה לכתובת אתר אחרת נחסמה</translation>
 <translation id="6778737459546443941">ההורה ששאלת עדיין לא אישר זאת</translation>
@@ -4121,6 +4142,7 @@
 <translation id="6972180789171089114">אודיו/וידאו</translation>
 <translation id="6972553992270299730">ל-<ph name="ORIGIN" /> אין הרשאה לפתוח קבצים בתיקייה הזו כי היא מכילה קובצי מערכת</translation>
 <translation id="6972754398087986839">תחילת העבודה</translation>
+<translation id="6973611239564315524">‏קיים עדכון זמין ל-Debian 10 ‏(Buster)</translation>
 <translation id="6974609594866392343">מצב הדגמה לא מקוון</translation>
 <translation id="6977381486153291903">שכתוב קושחה</translation>
 <translation id="6978121630131642226">מנועי חיפוש</translation>
@@ -4580,6 +4602,7 @@
 <translation id="7644543211198159466">צבע ועיצוב</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (בעלים)</translation>
 <translation id="7645681574855902035">‏המערכת מבטלת את הגיבוי ב-Linux</translation>
+<translation id="7646772052135772216">סנכרון הסיסמאות לא פועל</translation>
 <translation id="7647403192093989392">אין פעילויות אחרונות</translation>
 <translation id="7648992873808071793">לאחסן קבצים במכשיר הזה</translation>
 <translation id="7649070708921625228">עזרה</translation>
@@ -4767,6 +4790,7 @@
 <translation id="7877451762676714207">שגיאת שרת לא ידועה. נסה שוב או פנה למנהל השרת.</translation>
 <translation id="7877680364634660272">סיור</translation>
 <translation id="7878562273885520351">ייתכן שאבטחת הסיסמה שלך נפגעה</translation>
+<translation id="7879631849810108578">קיצור הדרך הוגדר: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">הנתונים המקומיים יימחקו אחרי הפעלה מחדש</translation>
 <translation id="7881483672146086348">הצג חשבון</translation>
 <translation id="7882358943899516840">סוג ספק</translation>
@@ -4853,6 +4877,7 @@
 <translation id="7987814697832569482">‏החיבור יתבצע תמיד דרך ה-VPN הזה</translation>
 <translation id="7988355189918024273">הפוך תכונות נגישות לפעילות</translation>
 <translation id="7991296728590311172">הגדרות גישה באמצעות מתג</translation>
+<translation id="7994350303002908848">‏לא ניתן להתקין את Plugin VM. יש לנסות שוב או לפנות למנהל המכשיר בארגון. קוד שגיאה: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">‏שיטת EAP</translation>
 <translation id="7997826902155442747">עדיפות תהליך</translation>
 <translation id="7999229196265990314">יצר את הקבצים הבאים:
@@ -4947,7 +4972,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{‏אין קובצי cookie של צד שלישי}=1{‏קובץ cookie אחד של צד שלישי נחסם}two{‏# קובצי cookie של צד שלישי נחסמו}many{‏# קובצי cookie של צד שלישי נחסמו}other{‏# קובצי cookie של צד שלישי נחסמו}}</translation>
 <translation id="810875025413331850">לא נמצאו מכשירים קרובים.</translation>
 <translation id="8111155949205007504">‏שיתוף הסיסמה הזו עם מכשיר ה-iPhone</translation>
-<translation id="8113043281354018522">בחר סוג רישיון</translation>
 <translation id="8114875720387900039">פיצול אופקי</translation>
 <translation id="8116972784401310538">&amp;מנהל הסימניות</translation>
 <translation id="8117620576188476503">‏מגש הסטטוס מאפשר לך לנהל חיבורים, עדכונים והגדרות. כדי להגיע לכאן בעזרת המקלדת יש להקיש Alt + Shift + S.</translation>
@@ -5104,6 +5128,7 @@
 <translation id="8327039559959785305">‏קרתה שגיאה בטעינת קובצי ה-Linux. יש לנסות שוב.</translation>
 <translation id="8335587457941836791">ביטול הצמדה למדף</translation>
 <translation id="8336407002559723354">העדכונים יסתיימו בחודש <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">יש להפעיל מחדש את המכשיר כדי להציג את הטקסט של המערכת ב<ph name="LANGUAGE" /></translation>
 <translation id="8336739000755212683">שינוי תמונת החשבון במכשיר</translation>
 <translation id="8337047789441383384">כבר רשמת את מפתח האבטחה הזה. אין צורך לרשום אותו שוב.</translation>
 <translation id="8338952601723052325">אתר האינטרנט של המפתח</translation>
@@ -5147,6 +5172,7 @@
 <translation id="8400146488506985033">נהל אנשים</translation>
 <translation id="8401432541486058167">עליך לציין את קוד האימות המשויך לכרטיס החכם שלך.</translation>
 <translation id="8405046151008197676">ריכזנו עבורך את הפרטים החשובים לגבי העדכון האחרון</translation>
+<translation id="8408068190360279472">רשת <ph name="NETWORK_TYPE" />, מתבצעת התחברות</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">שאל תחילה (מומלץ)</translation>
 <translation id="8418445294933751433">&amp;הצג ככרטיסייה</translation>
@@ -5436,6 +5462,7 @@
 <translation id="8807632654848257479">יציב</translation>
 <translation id="8808478386290700967">חנות אינטרנט</translation>
 <translation id="8808686172382650546">חתול</translation>
+<translation id="8808744862003883508">‏בדף הזה מוצגים כל התוספים שהותקנו ב-Chrome.</translation>
 <translation id="8809147117840417135">כחול-ירקרק בהיר</translation>
 <translation id="8813698869395535039">לא ניתן להיכנס עם שם המשתמש <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">גליון נייר</translation>
@@ -5663,7 +5690,6 @@
 <translation id="9121814364785106365">פתח ככרטיסייה מוצמדת</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> הושהה</translation>
 <translation id="9124003689441359348">כאן יופיעו הסיסמאות ששמרת</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (נותרו <ph name="LICENSE_COUNT" />)</translation>
 <translation id="9128317794749765148">לא ניתן היה להשלים את ההגדרה</translation>
 <translation id="9128870381267983090">התחבר לרשת</translation>
 <translation id="9130015405878219958">הוזן מצב לא חוקי.</translation>
@@ -5702,6 +5728,7 @@
 <translation id="9188732951356337132">‏שליחה של נתוני אבחון ונתונים על השימוש. המכשיר הזה שולח עכשיו אל Google באופן אוטומטי נתוני אבחון ונתונים לגבי השימוש במכשיר ובאפליקציות. נתונים אלה לא ישמשו כדי לזהות את הילד/ה שלך, והם יעזרו לשמור על יציבות המערכת והאפליקציות, כמו גם לביצוע שיפורים אחרים. חלק מהנתונים הנצברים יעזרו גם לאפליקציות ולשותפים של Google, כמו מפתחי Android. אם הופעלה בשביל הילד/ה שלך האפשרות 'פעילות באתרי אינטרנט ובאפליקציות נוספים', ייתכן שהנתונים יישמרו בחשבון Google שלו/ה. <ph name="BEGIN_LINK2" />מידע נוסף<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">‏L2TP/‏IPSec + מפתח משותף מראש</translation>
 <translation id="920045321358709304">חפש ב-<ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">המערכת תמחק את כל הנתונים שנשמרו במצב אופליין</translation>
 <translation id="9201220332032049474">אפשרויות נעילת מסך</translation>
 <translation id="9203398526606335860">&amp;יצירת פרופילים מופעלת</translation>
 <translation id="9203904171912129171">בחירת מכשיר</translation>
@@ -5714,6 +5741,7 @@
 <translation id="9220525904950070496">הסר חשבון</translation>
 <translation id="9220820413868316583">צריך להרים את האצבע ולנסות שוב.</translation>
 <translation id="923467487918828349">הצג הכל</translation>
+<translation id="929117907539171075">המערכת תמחק גם נתונים שנשמרו במצב אופליין באפליקציה מותקנת</translation>
 <translation id="930268624053534560">חותמות זמן מפורטות</translation>
 <translation id="932327136139879170">בית</translation>
 <translation id="932508678520956232">לא ניתן להתחיל הדפסה.</translation>
@@ -5739,6 +5767,7 @@
 <translation id="960719561871045870">קוד ספק</translation>
 <translation id="960987915827980018">נותרה בערך שעה אחת</translation>
 <translation id="962802172452141067">עץ תיקיות של סימניות</translation>
+<translation id="964057662886721376">חלק מהתוספים מאיטים אותך – במיוחד תוספים שלא רצית להתקין.</translation>
 <translation id="964286338916298286">‏מנהל המערכת שלך השבית את ההטבות של Chrome בשביל המכשיר שלך.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{אפליקציה}two{אפליקציות}many{אפליקציות}other{אפליקציות}}</translation>
 <translation id="965211523698323809">אפשר לשלוח ולקבל הודעות טקסט דרך ה-<ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />מידע נוסף<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb
index d57c7db..e9476f0 100644
--- a/chrome/app/resources/generated_resources_ja.xtb
+++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">カスタム</translation>
 <translation id="1178581264944972037">一時停止</translation>
 <translation id="117916940443676133">セキュリティ キーは PIN で保護されていません。ログインデータを管理するには、まず PIN を作成してください。</translation>
-<translation id="118069123878619799">- あなたの身体的特徴(身長など)</translation>
 <translation id="1181037720776840403">削除</translation>
 <translation id="1183237619868651138">ローカル キャッシュの <ph name="EXTERNAL_CRX_FILE" /> はインストールできません。</translation>
 <translation id="1185924365081634987">このネットワーク エラーを解決するには、<ph name="GUEST_SIGNIN_LINK_START" />ゲストとしてブラウジング<ph name="GUEST_SIGNIN_LINK_END" />もお試しください。</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381"><ph name="LOAD_STATE_PARAMETER" /> を待機しています...</translation>
 <translation id="1495486559005647033">利用可能なデバイスが <ph name="NUM_PRINTERS" /> 個あります。</translation>
 <translation id="1495677929897281669">タブに戻る</translation>
+<translation id="1499271269825557605">拡張機能が認識されないかブラウザが想定どおり動作しない場合は、ここで拡張機能を無効にするかカスタマイズできます。</translation>
 <translation id="1500297251995790841">不明なデバイス [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">この所有者アカウントは、マルチログイン セッションで最初にログインするアカウントである必要があります。</translation>
 <translation id="150411034776756821"><ph name="SITE" /> を削除</translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">このページはカメラへのアクセスを禁止されています。</translation>
 <translation id="1507246803636407672">破棄(&amp;D)</translation>
 <translation id="1508491105858779599">デバイスのロックを解除するには、指紋認証センサーに指を置いてください。</translation>
+<translation id="1508575541972276599">現在のバージョンは Debian 9(Stretch)です</translation>
 <translation id="1509281256533087115">あらゆる <ph name="DEVICE_NAME_AND_VENDOR" /> からの USB 経由のアクセス</translation>
 <translation id="150962533380566081">無効な PUK です。</translation>
 <translation id="1510030919967934016">このページは、あなたの現在地を追跡できないようブロックされています。</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">適用</translation>
 <translation id="1603914832182249871">(シークレット モード)</translation>
 <translation id="1604432177629086300">印刷できませんでした。プリンタを確認してもう一度お試しください。</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: パスワード同期が機能していません</translation>
 <translation id="1607139524282324606">エラー項目を消去</translation>
 <translation id="1608626060424371292">このユーザーを削除</translation>
 <translation id="1608668830839595724">選択した項目のその他の操作</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">ホストされているアプリ データ</translation>
 <translation id="1776712937009046120">ユーザーを追加</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">このデバイスは <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> によって管理されています。
+    このまま <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> アカウントにログインするには [次へ] をクリックしてください。</translation>
 <translation id="1779652936965200207">「<ph name="DEVICE_NAME" />」でこのパスキーを入力してください:</translation>
 <translation id="1780152987505130652">グループを閉じる</translation>
 <translation id="1781291988450150470">現在の PIN</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">操作できません</translation>
 <translation id="2050339315714019657">縦</translation>
 <translation id="2053312383184521053">アイドル状態のデータ</translation>
+<translation id="2055585478631012616">開いているすべてのタブで、これらのサイトからログアウトします</translation>
 <translation id="205560151218727633">Google アシスタントのロゴ</translation>
 <translation id="2058456167109518507">デバイスが検出されました</translation>
 <translation id="2059913712424898428">タイムゾーン</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">元に戻す</translation>
 <translation id="2080070583977670716">詳細設定</translation>
 <translation id="2087822576218954668">印刷: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN ネットワーク</translation>
 <translation id="2089566709556890888">Google Chrome で安全にブラウジング</translation>
 <translation id="2089795179672254991">クリップボードにコピーされているテキストや画像にサイトがアクセスする際に確認する(推奨)</translation>
 <translation id="2090165459409185032">アカウント情報を復旧するには google.com/accounts/recovery に移動します。</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">サイトが音声入力とビデオ入力にアクセスしています</translation>
 <translation id="2379281330731083556">システム ダイアログを使用して印刷... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">送信する前に確認する(推奨)</translation>
+<translation id="2382818385048255866">拡張機能の確認</translation>
 <translation id="2384436799579181135">エラーが発生しました。プリンタを確認してもう一度お試しください。</translation>
 <translation id="2387458720915042159">プロキシ接続タイプ</translation>
 <translation id="2391419135980381625">標準フォント</translation>
@@ -1036,6 +1043,7 @@
 <translation id="2462724976360937186">認証局キー ID</translation>
 <translation id="2462752602710430187"><ph name="PRINTER_NAME" /> を追加しました</translation>
 <translation id="2464089476039395325">HTTP プロキシ</translation>
+<translation id="2467267713099745100"><ph name="NETWORK_TYPE" /> ネットワーク、無効</translation>
 <translation id="2468205691404969808">Cookie を使って設定を保存する(これらのページにアクセスしない場合も Cookie が保持されます)</translation>
 <translation id="2468402215065996499">たまごっち</translation>
 <translation id="2469259292033957819">保存済みのプリンタはありません。</translation>
@@ -1290,6 +1298,7 @@
 <translation id="2800760947029405028">画像をアップロード</translation>
 <translation id="2803375539583399270">PIN を入力</translation>
 <translation id="2804043232879091219">代替ブラウザを開けませんでした</translation>
+<translation id="2804667941345577550">開いているすべてのタブで、このサイトからログアウトします</translation>
 <translation id="2804680522274557040">カメラがオフになっています</translation>
 <translation id="2805646850212350655">Microsoft 暗号化ファイル システム</translation>
 <translation id="2805756323405976993">アプリ</translation>
@@ -1297,6 +1306,7 @@
 <translation id="2806891468525657116">ショートカットがすでに存在します</translation>
 <translation id="2807517655263062534">ダウンロードしたファイルがここに表示されます</translation>
 <translation id="2809586584051668049">、他 <ph name="NUMBER_ADDITIONAL_DISABLED" /> 件</translation>
+<translation id="2810390687497823527">拡張機能が認識されないかブラウザが想定どおり動作しない場合は、ここで拡張機能を無効にするかカスタマイズできます。</translation>
 <translation id="2812049959647166806">Thunderbolt はサポートされていません</translation>
 <translation id="2812944337881233323">ログアウトして再度ログインしてみてください</translation>
 <translation id="2812989263793994277">すべての画像を表示しない</translation>
@@ -1336,6 +1346,7 @@
 <translation id="2861941300086904918">ネイティブ クライアント セキュリティ マネージャ</translation>
 <translation id="2864601841139725659">プロフィール画像の設定</translation>
 <translation id="2865919525181940183">現在画面に表示されているプログラムのスクリーンショット</translation>
+<translation id="286674810810214575">電源を確認しています...</translation>
 <translation id="2867768963760577682">固定されたタブとして開く</translation>
 <translation id="2868746137289129307">この拡張機能は古く、企業のポリシーによって無効にされました。新しいバージョンが利用可能になったときに自動的に有効になる可能性があります。</translation>
 <translation id="2870560284913253234">サイト</translation>
@@ -1413,6 +1424,7 @@
 <translation id="2972581237482394796">やり直し(&amp;R)</translation>
 <translation id="2973324205039581528">サイトをミュート</translation>
 <translation id="2977480621796371840">グループから削除</translation>
+<translation id="2979520980928493164">より快適な Chrome</translation>
 <translation id="2979639724566107830">新しいウィンドウで開く</translation>
 <translation id="2981113813906970160">大きいマウス カーソルを表示する</translation>
 <translation id="2982970937345031">匿名で報告</translation>
@@ -1519,6 +1531,7 @@
 <translation id="3143515551205905069">同期をキャンセル</translation>
 <translation id="3143754809889689516">最初から再生</translation>
 <translation id="3144647712221361880">別のユーザーとしてリンクを開く</translation>
+<translation id="3145187901750964977">仮想マシンをインストールできませんでした。もう一度お試しいただくか、組織のデバイス管理者にお問い合わせください。エラーコード: <ph name="ERROR_CODE" />。</translation>
 <translation id="3149477159749171726">バージョン:
     <ph name="LINUX_VERSION" />
 
@@ -1557,6 +1570,7 @@
 <translation id="3192947282887913208">音声ファイル</translation>
 <translation id="3194737229810486521"><ph name="URL" /> から、デバイスにデータを永続的に保存する許可を求められています</translation>
 <translation id="3199127022143353223">サーバー</translation>
+<translation id="3201306578844503970">ネットワーク エラーが発生したため、仮想マシンをインストールできませんでした。もう一度お試しいただくか、組織のデバイス管理者にお問い合わせください。エラーコード: <ph name="ERROR_CODE" />。</translation>
 <translation id="3201422919974259695">使用可能な USB デバイスがここに表示されます。</translation>
 <translation id="3202131003361292969">パス</translation>
 <translation id="3202173864863109533">このタブの音声はミュートされています。</translation>
@@ -1893,7 +1907,6 @@
 <translation id="3678156199662914018">拡張機能: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">ご意見をお寄せいただきありがとうございます。現在オフラインのため、ご報告の内容は後で送信されます。</translation>
 <translation id="3682824389861648626">移動のしきい値</translation>
-<translation id="3683023058278427253">ドメインでライセンスの種類が複数検出されました。続行するには 1 つを選択してください。</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> 画面共有リクエスト</translation>
 <translation id="368789413795732264">ファイルの書き出し中にエラーが発生しました: <ph name="ERROR_TEXT" /></translation>
 <translation id="3688507211863392146">アプリケーションで開いたファイルとフォルダに書き込む</translation>
@@ -2067,6 +2080,7 @@
 <translation id="389589731200570180">ゲストと共有</translation>
 <translation id="389901847090970821">キーボードを選択</translation>
 <translation id="3899879303189199559">1 年以上オフライン</translation>
+<translation id="3900789207771372462">一部の拡張機能によって、閲覧アクティビティ(個人情報を含む)にアクセスされる可能性があります。</translation>
 <translation id="3900966090527141178">パスワードのエクスポート</translation>
 <translation id="3901991538546252627"><ph name="NAME" /> に接続しています</translation>
 <translation id="3905761538810670789">アプリを修復</translation>
@@ -2157,7 +2171,6 @@
 <translation id="4013132157686828973">このブラウザは「<ph name="CLIENT_NAME" />」によりデバッグされています</translation>
 <translation id="4014432863917027322">「<ph name="EXTENSION_NAME" />」を修復しますか?</translation>
 <translation id="4015163439792426608">拡張機能はご利用ですか?<ph name="BEGIN_LINK" />拡張機能の管理<ph name="END_LINK" />は 1 か所で簡単に行うことができます。</translation>
-<translation id="4020106588733303597">利用可能なライセンスを読み込めませんでした。</translation>
 <translation id="4020327272915390518">オプション メニュー</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">辞書に追加(&amp;A)</translation>
@@ -2195,6 +2208,7 @@
 <translation id="407520071244661467">倍率</translation>
 <translation id="4075639477629295004"><ph name="FILE_NAME" /> をキャストできません。</translation>
 <translation id="4077917118009885966">このサイトで広告がブロックされました</translation>
+<translation id="4077919383365622693"><ph name="SITE" /> により保存されたすべてのデータと Cookie が削除されます。</translation>
 <translation id="4079140982534148664">拡張スペルチェックを使用</translation>
 <translation id="4081242589061676262">ファイルをキャストできません。</translation>
 <translation id="4084682180776658562">ブックマーク</translation>
@@ -2269,6 +2283,7 @@
 <translation id="4181841719683918333">言語</translation>
 <translation id="4184885522552335684">ディスプレイをドラッグして移動</translation>
 <translation id="4194570336751258953">タップによるクリックを有効にする</translation>
+<translation id="4194595472342532425">設定に問題があったため、Plugin VM をセットアップできませんでした。組織のデバイス管理者にお問い合わせください。エラーコード: <ph name="ERROR_CODE" />。</translation>
 <translation id="4195643157523330669">新しいタブで開く</translation>
 <translation id="4195814663415092787">前回開いていたページを開く</translation>
 <translation id="4198146608511578238">Google アシスタントと話すにはランチャー アイコンを押したままにします。</translation>
@@ -2492,6 +2507,7 @@
 <translation id="4549791035683739768">セキュリティ キーにフィンガープリントは保存されていません</translation>
 <translation id="4551763574344810652">元に戻すには <ph name="MODIFIER_KEY_DESCRIPTION" /> を押します</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005"><ph name="NETWORK_TYPE" /> ネットワーク、信号強度 <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">外部の拡張機能のバージョンが既存のバージョン以下です。</translation>
 <translation id="4555769855065597957">シャドウ</translation>
 <translation id="4555863373929230635">パスワードを Google アカウントに保存するには、ログインして同期を有効にします。</translation>
@@ -2569,6 +2585,7 @@
 <translation id="4665446389743427678"><ph name="SITE" /> で保存されたすべてのデータが削除されます。</translation>
 <translation id="4668721319092543482">クリックして <ph name="PLUGIN_NAME" /> を有効にします</translation>
 <translation id="4672657274720418656">ページを抽出</translation>
+<translation id="46733273239502219">インストール済みアプリのオフライン データも削除されます</translation>
 <translation id="4673442866648850031">タッチペンを取り外したらタッチペン ツールを開く</translation>
 <translation id="4677585247300749148"><ph name="URL" /> から、ユーザー補助機能のイベントに応答する許可を求められています</translation>
 <translation id="4677772697204437347">GPU メモリ</translation>
@@ -2660,7 +2677,6 @@
 <translation id="4823484602432206655">ユーザー設定とデバイス設定の読み取りと変更</translation>
 <translation id="4824958205181053313">同期をキャンセルしますか?</translation>
 <translation id="4827675678516992122">接続エラー</translation>
-<translation id="4828937774870308359">逆方向</translation>
 <translation id="4829768588131278040">PIN を設定</translation>
 <translation id="4830502475412647084">OS アップデートのインストール中</translation>
 <translation id="4830573902900904548">お使いの <ph name="DEVICE_TYPE" /> から <ph name="NETWORK_NAME" /> を使用してインターネットに接続できません。別のネットワークを選択してください。<ph name="LEARN_MORE_LINK_START" />詳細<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2701,6 +2717,7 @@
 <translation id="4876273079589074638">このクラッシュについて迅速に調査、解決できるよう、具体的な操作についてできるだけ詳しくご説明ください。</translation>
 <translation id="4876895919560854374">画面のロックとロック解除</translation>
 <translation id="4877276003880815204">要素の検証</translation>
+<translation id="4878653975845355462">カスタムの背景は、管理者によって無効化されています</translation>
 <translation id="4879491255372875719">自動(デフォルト)</translation>
 <translation id="4880328057631981605">アクセス ポイント名</translation>
 <translation id="4880827082731008257">履歴を検索</translation>
@@ -2756,10 +2773,10 @@
 <translation id="4943691134276646401">「<ph name="CHROME_EXTENSION_NAME" />」がシリアルポートへの接続を要求しています</translation>
 <translation id="4944310289250773232">この認証サービスは <ph name="SAML_DOMAIN" /> でホストされています</translation>
 <translation id="495170559598752135">操作</translation>
+<translation id="4952981627953231344">Plugin VM はこのデバイスで許可されていません。組織のデバイス管理者にお問い合わせください。</translation>
 <translation id="4953689047182316270">ユーザー補助機能のイベントへの応答</translation>
 <translation id="4953808748584563296">デフォルトのオレンジのアバター</translation>
 <translation id="4955710816792587366">PIN の選択</translation>
-<translation id="4955814292505481804">年間</translation>
 <translation id="4959262764292427323">パスワードは Google アカウントに保存されるため、どのデバイスからでも使用できます</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">このアプリは管理者によってインストールされています。</translation>
@@ -3241,7 +3258,6 @@
 <translation id="5659593005791499971">メール</translation>
 <translation id="5659833766619490117">このページを翻訳できませんでした</translation>
 <translation id="5660204307954428567"><ph name="DEVICE_NAME" /> とのペア設定</translation>
-<translation id="5662477687021125631">永久</translation>
 <translation id="5667546120811588575">Google Play を設定しています...</translation>
 <translation id="5669267381087807207">有効にしています</translation>
 <translation id="5669691691057771421">新しい PIN を入力</translation>
@@ -3257,6 +3273,7 @@
 <translation id="5687326903064479980">タイムゾーン</translation>
 <translation id="5689516760719285838">位置情報</translation>
 <translation id="56907980372820799">データをリンク</translation>
+<translation id="5691180005790455277"><ph name="SITE_GROUP_NAME" /> とその下位のサイトにより保存されたすべてのデータと Cookie が削除されます。</translation>
 <translation id="5691511426247308406">ファミリー</translation>
 <translation id="5692183275898619210">印刷完了</translation>
 <translation id="5696143504434933566">「<ph name="EXTENSION_NAME" />」の不正行為を報告する</translation>
@@ -3343,7 +3360,6 @@
 <translation id="5815645614496570556">X.400 アドレス</translation>
 <translation id="5816434091619127343">リクエストされた変更を行うと、プリンタを使用できなくります。</translation>
 <translation id="5817918615728894473">ペア設定</translation>
-<translation id="5819762621475381970">- あなたの部屋のレイアウト</translation>
 <translation id="5821565227679781414">ショートカットを作成</translation>
 <translation id="5825412242012995131">オン(推奨)</translation>
 <translation id="5826395379250998812"><ph name="DEVICE_TYPE" /> をスマートフォンと接続します。<ph name="LINK_BEGIN" />詳細<ph name="LINK_END" /></translation>
@@ -3479,6 +3495,7 @@
 <translation id="6007240208646052708">お使いの言語では音声検索はご利用いただけません。</translation>
 <translation id="6009781704028455063">内蔵センサー</translation>
 <translation id="6010869025736512584">ビデオ入力にアクセスしています</translation>
+<translation id="6011074160056912900">イーサネット ネットワーク</translation>
 <translation id="6011193465932186973">指紋</translation>
 <translation id="6011449291337289699">サイトデータの削除</translation>
 <translation id="6015266928248016057">無効な PUK です。入力できるのはあと <ph name="RETRIES" /> 回です。</translation>
@@ -3515,6 +3532,7 @@
 <translation id="6053401458108962351">閲覧履歴を消去(&amp;C)...</translation>
 <translation id="6055171183283175969">入力したパスワードが正しくありません。</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 with RSA 暗号化</translation>
+<translation id="6055907707645252013"><ph name="NETWORK_TYPE" /> ネットワーク、未接続</translation>
 <translation id="6056710589053485679">通常の再読み込み</translation>
 <translation id="6057381398996433816">このサイトではモーション センサーと光センサーの使用がブロックされています。</translation>
 <translation id="6058567592298841668">プラグイン仮想マシン: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3578,6 +3596,7 @@
 <translation id="6136114942382973861">ダウンロード バーを閉じる</translation>
 <translation id="6137767437444130246">ユーザー証明書</translation>
 <translation id="6138680304137685902">X9.62 ECDSA 署名(SHA-384)</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />、ネットワークなし</translation>
 <translation id="6141988275892716286">ダウンロードの確認</translation>
 <translation id="6143186082490678276">ヘルプ</translation>
 <translation id="6144938890088808325">Chromebooks の改善にご協力ください</translation>
@@ -3884,6 +3903,7 @@
 <translation id="6602956230557165253">ナビゲートするには左右の矢印キーを使用します。</translation>
 <translation id="6605847144724004692">まだ評価されていません。</translation>
 <translation id="6607831829715835317">その他のツール(&amp;L)</translation>
+<translation id="6611972847767394631">ここからタブを確認できます</translation>
 <translation id="6612358246767739896">保護されたコンテンツ</translation>
 <translation id="6615455863669487791">表示</translation>
 <translation id="6618097958368085618">続行する</translation>
@@ -3952,6 +3972,7 @@
 <translation id="6709133671862442373">ニュース</translation>
 <translation id="6709357832553498500">「<ph name="EXTENSIONNAME" />」を使用して接続</translation>
 <translation id="6710213216561001401">前へ</translation>
+<translation id="6715803357256707211">Linux アプリケーションのインストール中にエラーが発生しました。詳細を確認するには通知をクリックしてください。</translation>
 <translation id="6721678857435001674">セキュリティ キーのメーカーとモデルの読み取り</translation>
 <translation id="6721972322305477112">ファイル(&amp;F)</translation>
 <translation id="672213144943476270">ゲストとしてブラウジングするにはまずプロフィールのロックを解除してください。</translation>
@@ -3976,7 +3997,6 @@
 <translation id="674632704103926902">タップによるドラッグを有効にする</translation>
 <translation id="6748217015615267851">レンダラ: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">続行した場合、同期済みのデータと設定のみが復元され、ローカルデータはすべて失われます。</translation>
-<translation id="6748775883310276718">シングルアプリ キオスク</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" />(シークレット モード)</translation>
 <translation id="6757101664402245801">URL がコピーされました</translation>
 <translation id="6758056191028427665">アンケートにご協力ください。</translation>
@@ -3986,6 +4006,7 @@
 <translation id="6769712124046837540">プリンタの追加...</translation>
 <translation id="6770664076092644100">NFC を使って確認</translation>
 <translation id="6771503742377376720">認証局である</translation>
+<translation id="6772339735733515807">拡張機能の管理</translation>
 <translation id="6775163072363532304">利用可能なデバイスはここに表示されます。</translation>
 <translation id="6777817260680419853">リダイレクトがブロックされました</translation>
 <translation id="6778737459546443941">保護者がまだサイトを開くことを許可していません</translation>
@@ -4124,6 +4145,7 @@
 <translation id="6972180789171089114">音声または動画</translation>
 <translation id="6972553992270299730">システム ファイルが含まれているため、<ph name="ORIGIN" /> はこのフォルダのファイルを開くことができません</translation>
 <translation id="6972754398087986839">開始する</translation>
+<translation id="6973611239564315524">Debian 10(Buster)にアップグレードできます</translation>
 <translation id="6974609594866392343">オフライン デモモード</translation>
 <translation id="6977381486153291903">ファームウェア リビジョン</translation>
 <translation id="6978121630131642226">検索エンジン</translation>
@@ -4583,6 +4605,7 @@
 <translation id="7644543211198159466">色とテーマ</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" />(所有者)</translation>
 <translation id="7645681574855902035">Linux のバックアップをキャンセルしています</translation>
+<translation id="7646772052135772216">パスワード同期が機能していません</translation>
 <translation id="7647403192093989392">最近のアクティビティはありません</translation>
 <translation id="7648992873808071793">このデバイスのファイルの保存</translation>
 <translation id="7649070708921625228">ヘルプ</translation>
@@ -4771,6 +4794,7 @@
 <translation id="7877451762676714207">不明なサーバー エラーが発生しました。もう一度お試しになるか、サーバー管理者にご連絡ください。</translation>
 <translation id="7877680364634660272">使い方ガイド</translation>
 <translation id="7878562273885520351">パスワードが不正使用される可能性があります</translation>
+<translation id="7879631849810108578">ショートカットが設定されました: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">再起動すると、ローカルデータが削除されます</translation>
 <translation id="7881483672146086348">アカウントを表示</translation>
 <translation id="7882358943899516840">プロバイダの種類</translation>
@@ -4857,6 +4881,7 @@
 <translation id="7987814697832569482">この VPN で常に接続する</translation>
 <translation id="7988355189918024273">ユーザー補助機能を有効にします</translation>
 <translation id="7991296728590311172">スイッチ アクセスの設定</translation>
+<translation id="7994350303002908848">Plugin VM をインストールできませんでした。もう一度お試しいただくか、組織のデバイス管理者にお問い合わせください。エラーコード: <ph name="ERROR_CODE" />。</translation>
 <translation id="7994702968232966508">EAP 方式</translation>
 <translation id="7997826902155442747">プロセスの優先値</translation>
 <translation id="7999229196265990314">次のファイルを作成しました:
@@ -4949,7 +4974,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{サードパーティの Cookie はありません}=1{1 個のサードパーティ Cookie がブロックされています}other{# 個のサードパーティ Cookie がブロックされています}}</translation>
 <translation id="810875025413331850">近くにデバイスは見つかりませんでした。</translation>
 <translation id="8111155949205007504">このパスワードを iPhone と共有</translation>
-<translation id="8113043281354018522">ライセンスの種類を選択してください</translation>
 <translation id="8114875720387900039">横に分割</translation>
 <translation id="8116972784401310538">ブックマーク マネージャ(&amp;B)</translation>
 <translation id="8117620576188476503">ステータス トレイで接続、アップデート、設定を管理できます。キーボードからステータス トレイを表示するには、Alt+Shift+S キーを押します。</translation>
@@ -5106,6 +5130,7 @@
 <translation id="8327039559959785305">[Linux ファイル] のマウント中にエラーが発生しました。もう一度お試しください。</translation>
 <translation id="8335587457941836791">シェルフの固定解除</translation>
 <translation id="8336407002559723354">更新は <ph name="MONTH_AND_YEAR" />に終了します</translation>
+<translation id="8336721153892716270">システムのテキストを<ph name="LANGUAGE" />で表示するため、デバイスを再起動します</translation>
 <translation id="8336739000755212683">デバイスのアカウント画像を変更</translation>
 <translation id="8337047789441383384">このセキュリティ キーは登録済みです。再度登録する必要はありません。</translation>
 <translation id="8338952601723052325">デベロッパーのウェブサイト</translation>
@@ -5149,6 +5174,7 @@
 <translation id="8400146488506985033">ユーザーを管理</translation>
 <translation id="8401432541486058167">スマートカードに関連付けられている PIN を入力してください。</translation>
 <translation id="8405046151008197676">最新のアップデートの概要をご確認ください</translation>
+<translation id="8408068190360279472"><ph name="NETWORK_TYPE" /> ネットワーク、接続中</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">最初に確認する(推奨)</translation>
 <translation id="8418445294933751433">タブで表示(&amp;S)</translation>
@@ -5438,6 +5464,7 @@
 <translation id="8807632654848257479">Stable</translation>
 <translation id="8808478386290700967">ウェブストア</translation>
 <translation id="8808686172382650546">ネコ</translation>
+<translation id="8808744862003883508">このページには、Chrome にインストールされているすべての拡張機能が表示されます。</translation>
 <translation id="8809147117840417135">明るい青緑</translation>
 <translation id="8813698869395535039"><ph name="USERNAME" /> にログインできません</translation>
 <translation id="8813811964357448561">枚</translation>
@@ -5665,7 +5692,6 @@
 <translation id="9121814364785106365">固定されたタブとして開く</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> は一時停止中</translation>
 <translation id="9124003689441359348">保存したパスワードがここに表示されます</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" />(残り <ph name="LICENSE_COUNT" /> ライセンス)</translation>
 <translation id="9128317794749765148">セットアップを完了できませんでした</translation>
 <translation id="9128870381267983090">ネットワークに接続する</translation>
 <translation id="9130015405878219958">入力されたモードが無効です。</translation>
@@ -5704,6 +5730,7 @@
 <translation id="9188732951356337132">使用状況データや診断データを送信します。このデバイスは現在、診断データやデバイスとアプリの使用状況データを Google に自動送信するように設定されています。この情報を使ってお子様個人が特定されることはありません。この情報は、システムとアプリの安定性の向上やその他の機能の改善に役立てられます。また、Google のアプリやパートナー(Android デベロッパーなど)も、集計データとしてこの情報を活用します。お子様の [その他のウェブとアプリのアクティビティ] の設定がオンになっている場合、このデータはお子様の Google アカウントに保存されます。<ph name="BEGIN_LINK2" />詳細<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPSec + 事前共有鍵</translation>
 <translation id="920045321358709304"><ph name="SEARCH_ENGINE" /> で検索</translation>
+<translation id="9201023452444595544">オフライン データも削除されます</translation>
 <translation id="9201220332032049474">画面ロックの種類</translation>
 <translation id="9203398526606335860">プロファイル記録の開始(&amp;P)</translation>
 <translation id="9203904171912129171">デバイスを選択</translation>
@@ -5716,6 +5743,7 @@
 <translation id="9220525904950070496">アカウントを削除</translation>
 <translation id="9220820413868316583">いったん指を放してもう一度お試しください。</translation>
 <translation id="923467487918828349">すべてを表示</translation>
+<translation id="929117907539171075">インストール済みアプリのオフライン データも削除されます</translation>
 <translation id="930268624053534560">詳細なタイムスタンプ</translation>
 <translation id="932327136139879170">ホーム</translation>
 <translation id="932508678520956232">印刷を開始できませんでした。</translation>
@@ -5741,6 +5769,7 @@
 <translation id="960719561871045870">事業者コード</translation>
 <translation id="960987915827980018">あと約 1 時間</translation>
 <translation id="962802172452141067">ブックマーク フォルダ ツリー</translation>
+<translation id="964057662886721376">一部の拡張機能によって動作が遅くなることがあります。特に、意図せずインストールされた拡張機能には注意が必要です。</translation>
 <translation id="964286338916298286">お使いのデバイスの Chrome 特典は IT 管理者によって無効にされています。</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{アプリケーション}other{アプリケーション}}</translation>
 <translation id="965211523698323809"><ph name="DEVICE_TYPE" /> でテキスト メッセージを送受信します。<ph name="LINK_BEGIN" />詳細<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_ka.xtb b/chrome/app/resources/generated_resources_ka.xtb
index 108d64c..ae823c6 100644
--- a/chrome/app/resources/generated_resources_ka.xtb
+++ b/chrome/app/resources/generated_resources_ka.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">მორგებული</translation>
 <translation id="1178581264944972037">პაუზა</translation>
 <translation id="117916940443676133">თქვენი უსაფრთხოების გასაღები არ არის დაცული PIN-კოდით. სისტემაში შესვლის მონაცემების სამართავად, პირველ რიგში, შექმენით PIN-კოდი.</translation>
-<translation id="118069123878619799">— თქვენი ფიზიკური მონაცემები, როგორიცაა სიმაღლე</translation>
 <translation id="1181037720776840403">ამოშლა</translation>
 <translation id="1183237619868651138"><ph name="EXTERNAL_CRX_FILE" />-ის ინსტალაცია ლოკალურ ქეშში შეუძლებელია.</translation>
 <translation id="1185924365081634987">თქვენ აგრეთვე შეგიძლიათ სცადოთ <ph name="GUEST_SIGNIN_LINK_START" />დათვალიერება სტუმრის სახით<ph name="GUEST_SIGNIN_LINK_END" />, რომ გამოასწოროთ ქსელის შცდომა.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">ელოდება <ph name="LOAD_STATE_PARAMETER" />-ს…</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> სხვა ხელმისაწვდომი მოწყობილობა.</translation>
 <translation id="1495677929897281669">ჩანართზე დაბრუნება</translation>
+<translation id="1499271269825557605">თუ გაფართოებას ვერ ცნობთ ან ბრაუზერი მოლოდინისამებრ არ მუშაობს, აქ შეგიძლიათ გამორთოთ ან მოირგოთ გაფართოებები.</translation>
 <translation id="1500297251995790841">უცნობი მოწყობილობა [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">მფლობელის ეს ანგარიში გახდეს პირველი შესული ანგარიში მრავალპროფილიან სესიაში.</translation>
 <translation id="150411034776756821"><ph name="SITE" />-ის ამოშლა</translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">ამ გვერდზე უკვე დაბლოკილია თქვენს კამერაზე წვდომა.</translation>
 <translation id="1507246803636407672">&amp;გაუქმება</translation>
 <translation id="1508491105858779599">მოწყობილობის განსაბლოკად მოათავსეთ თითი თითის ანაბეჭდის სენსორზე.</translation>
+<translation id="1508575541972276599">ამჟამინდელი ვერსიაა Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">USB-ს მეშვეობით ნებისმიერ <ph name="DEVICE_NAME_AND_VENDOR" />-ზე წვდომა</translation>
 <translation id="150962533380566081">PUK კოდი არასწორია.</translation>
 <translation id="1510030919967934016">ამ გვერდზე დაბლოკა თქვენი მდებარეობის თვალთვალი.</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">გამოყენება</translation>
 <translation id="1603914832182249871">(ინკოგნიტო)</translation>
 <translation id="1604432177629086300">ბეჭდვა ვერ მოხერხდა. შეამოწმეთ პრინტერი და ცადეთ ხელახლა.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: პაროლების სინქრონიზაცია არ მუშაობს</translation>
 <translation id="1607139524282324606">ჩანაწერის გასუფთავება</translation>
 <translation id="1608626060424371292">ამ მომხმარებლის წაშლა</translation>
 <translation id="1608668830839595724">სხვა ქმედებები არჩეული ერთეულებისთვის</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">ჰოსტის პროგრამის მონაცემები</translation>
 <translation id="1776712937009046120">მომხმარებლის დამატება</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">ამ მოწყობილობას მართავს <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    თქვენს <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ანგარიშში შესვლის გასაგრძელებლად დაწკაპუნებით აირჩიეთ „შემდეგი“.</translation>
 <translation id="1779652936965200207">შეიყვანეთ ეს კოდი „<ph name="DEVICE_NAME" />“-ში:</translation>
 <translation id="1780152987505130652">ჯგუფის დახურვა</translation>
 <translation id="1781291988450150470">ამჟამინდელი PIN-კოდი</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">ქმედება მიუწვდომელია</translation>
 <translation id="2050339315714019657">პორტრეტი</translation>
 <translation id="2053312383184521053">უმოქმედო მდგომარეობის მონაცემები</translation>
+<translation id="2055585478631012616">თქვენ გამოხვალთ ამ საიტებიდან, მათ შორის, გახსნილ ჩანართებზე</translation>
 <translation id="205560151218727633">Google ასისტენტის ლოგო</translation>
 <translation id="2058456167109518507">აღმოჩენილია მოწყობილობა</translation>
 <translation id="2059913712424898428">სასაათო სარტყელი</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">მოქმედების გაუქმება</translation>
 <translation id="2080070583977670716">დამატებითი პარამეტრები</translation>
 <translation id="2087822576218954668">დაბეჭდეთ: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN ქსელი</translation>
 <translation id="2089566709556890888">დაათვალიერეთ ვები უსაფრთხოდ Google Chrome-ის მეშვეობით</translation>
 <translation id="2089795179672254991">შეკითხვა, როცა საიტს სურს გაცვლის ბუფერში კოპირებული ტექსტისა და სურათების ნახვა (რეკომენდებული)</translation>
 <translation id="2090165459409185032">თქვენი ანგარიშის ინფორმაციის აღსადგენად, ეწვიეთ: google.com/accounts/recovery</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">საიტი სარგებლობს შემავალი აუდიო და ვიდეოსიგნალით</translation>
 <translation id="2379281330731083556">ბეჭდვა სისტემის დიალოგით… <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">შეკითხვა გაგზავნამდე (რეკომენდირებულია)</translation>
+<translation id="2382818385048255866">შეამოწმეთ თქვენი გაფართოებები</translation>
 <translation id="2384436799579181135">მოხდა შეცდომა. გთხოვთ, შეამოწმოთ პრინტერი და ცადოთ ხელახლა.</translation>
 <translation id="2387458720915042159">პროქსი-სერვერის კავშირის ტიპი</translation>
 <translation id="2391419135980381625">სტანდარტული შრიფტი</translation>
@@ -1035,6 +1042,7 @@
 <translation id="2462724976360937186">სერტიფიკაციის ცენტრის გასაღების ID</translation>
 <translation id="2462752602710430187"><ph name="PRINTER_NAME" /> დამატებულია</translation>
 <translation id="2464089476039395325">HTTP პროქსი-სერვერი</translation>
+<translation id="2467267713099745100"><ph name="NETWORK_TYPE" /> ქსელი, გამორთული</translation>
 <translation id="2468205691404969808">იყენებს ქუქი-ჩანაწერებს თქვენთვის სასურველი პარამეტრების დასამახსოვრებლად, მაშინაც კი, როცა ამ გვერდებს არ სტუმრობთ</translation>
 <translation id="2468402215065996499">ტამაგოჩი</translation>
 <translation id="2469259292033957819">შენახული პრინტერები არ გაქვთ.</translation>
@@ -1289,6 +1297,7 @@
 <translation id="2800760947029405028">სურათის ატვირთვა</translation>
 <translation id="2803375539583399270">შეიყვანეთ PIN-კოდი</translation>
 <translation id="2804043232879091219">ალტერნატიული ბრაუზერის გახსნა ვერ მოხერხდა</translation>
+<translation id="2804667941345577550">თქვენ გამოხვალთ ამ საიტიდან, მათ შორის, გახსნილ ჩანართებზე</translation>
 <translation id="2804680522274557040">კამერა გამორთულია</translation>
 <translation id="2805646850212350655">Microsoft დაშიფვრის ფაილის სისტემა</translation>
 <translation id="2805756323405976993">პროგრამები</translation>
@@ -1296,6 +1305,7 @@
 <translation id="2806891468525657116">მალსახმობი უკვე არსებობს</translation>
 <translation id="2807517655263062534">თქვენ მიერ ჩამოტვირთული ფაილები აქ გამოჩნდება</translation>
 <translation id="2809586584051668049">და <ph name="NUMBER_ADDITIONAL_DISABLED" /> მეტი</translation>
+<translation id="2810390687497823527">თუ გაფართოებას ვერ ცნობთ ან ბრაუზერი მოლოდინისამებრ არ მუშაობს, აქ შეგიძლიათ გამორთოთ ან მოირგოთ გაფართოებები.</translation>
 <translation id="2812049959647166806">Thunderbolt მხარდაუჭერელია</translation>
 <translation id="2812944337881233323">ცადეთ სისტემიდან გასვლა და ხელახლა შესვლა</translation>
 <translation id="2812989263793994277">არ გამოჩნდეს გამოსახულებები</translation>
@@ -1335,6 +1345,7 @@
 <translation id="2861941300086904918">ადგილობრივი კლიენტის უსაფრთხოების მენეჯერი</translation>
 <translation id="2864601841139725659">თქვენი პროფილის სურათის დაყენება</translation>
 <translation id="2865919525181940183">ეკრანზე ამჟამად გაშვებული პროგრამების ანაბეჭდი</translation>
+<translation id="286674810810214575">მიმდინარეობს ელკვების წყაროების შემოწმება…</translation>
 <translation id="2867768963760577682">ჩამაგრებული ჩანართის სახით გახსნა</translation>
 <translation id="2868746137289129307">ეს არის გაფართოება მოძველებულია და გამორთულია საწარმოს პოლიტიკის შესაბამისად. ეს შეიძლება ჩაირთოს ავტომატურად, როდესაც ხელმისაწვდომი იქნება ახალი ვერსია.</translation>
 <translation id="2870560284913253234">საიტი</translation>
@@ -1412,6 +1423,7 @@
 <translation id="2972581237482394796">&amp;გამეორება</translation>
 <translation id="2973324205039581528">საიტის დადუმება</translation>
 <translation id="2977480621796371840">ჯგუფიდან ამოშლა</translation>
+<translation id="2979520980928493164">უფრო დაცული და ეფექტური Chrome</translation>
 <translation id="2979639724566107830">ახალ ფანჯარაში გახსნა</translation>
 <translation id="2981113813906970160">აჩვენეთ მაუსის დიდი კურსორი</translation>
 <translation id="2982970937345031">ანონიმურად შეტყობინება</translation>
@@ -1518,6 +1530,7 @@
 <translation id="3143515551205905069">სინქრონიზაციის გაუქმება</translation>
 <translation id="3143754809889689516">დასაწყისიდან დაკვრა</translation>
 <translation id="3144647712221361880">ბმულის გახსნა, როგორც</translation>
+<translation id="3145187901750964977">ვირტუალური მოწყობილობის ინსტალაცია ვერ მოხერხდა. ცადეთ ხელახლა, ან დაუკავშირდით თქვენი ორგანიზაციის მოწყობილობის ადმინისტრატორს. შეცდომის კოდი: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">ვერსია:
     <ph name="LINUX_VERSION" />
 
@@ -1556,6 +1569,7 @@
 <translation id="3192947282887913208">აუდიო ფაილები</translation>
 <translation id="3194737229810486521"><ph name="URL" /> ითხოვს თქვენს მოწყობილობაზე მონაცემების სამუდამოდ შენახვის ნებართვას</translation>
 <translation id="3199127022143353223">სერვერები</translation>
+<translation id="3201306578844503970">ვირტუალური მოწყობილობის ინსტალაცია ვერ მოხერხდა ქსელის შეცდომის გამო. ცადეთ ხელახლა, ან დაუკავშირდით თქვენი ორგანიზაციის მოწყობილობის ადმინისტრატორს. შეცდომის კოდი: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">აქ გამოჩნდება ხელმისაწვდომი USB-მოწყობილობები.</translation>
 <translation id="3202131003361292969">მდებარეობა</translation>
 <translation id="3202173864863109533">ამ ჩანართის აუდიო გამორთულია.</translation>
@@ -1892,7 +1906,6 @@
 <translation id="3678156199662914018">გაფართოება: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">გმადლობთ გამოხმაურებისთვის. ახლა ხაზგარეშე რეჟიმში ხართ და თქვენი ანგარიში მოგვიანებით გაიგზავნება.</translation>
 <translation id="3682824389861648626">გადაადგილების ზღვარი</translation>
-<translation id="3683023058278427253">თქვენი დომენისთვის აღმოჩენილია ლიცენზიის რამდენიმე ტიპი. გასაგრძელებლად აირჩიეთ ერთ-ერთი.</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> ეკრანის გაზიარების მოთხოვნა</translation>
 <translation id="368789413795732264">ფაილის ჩაწერისას შეცდომა მოხდა: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">პროგრამაში გახსნილ ფაილებში და საქაღალდეებში ჩაწერა</translation>
@@ -2066,6 +2079,7 @@
 <translation id="389589731200570180">სტუმრებთან გაზიარება</translation>
 <translation id="389901847090970821">აირჩიეთ კლავიატურა</translation>
 <translation id="3899879303189199559">ოფლაინში ერთ წელიწადზე მეტი</translation>
+<translation id="3900789207771372462">ზოგიერთ გაფართოებას შეუძლია თქვენი დათვალიერების აქტივობის (მათ შორის, პერსონალური ინფორმაციის) ნახვა.</translation>
 <translation id="3900966090527141178">პაროლების ექსპორტი</translation>
 <translation id="3901991538546252627"><ph name="NAME" />-თან დაკავშირება</translation>
 <translation id="3905761538810670789">აპის აღდგენა</translation>
@@ -2156,7 +2170,6 @@
 <translation id="4013132157686828973">„<ph name="CLIENT_NAME" />“ ახორციელებს ამ ბრაუზერის გამართვას</translation>
 <translation id="4014432863917027322">აღვადგინოთ „<ph name="EXTENSION_NAME" />“?</translation>
 <translation id="4015163439792426608">სარგებლობთ გაფართოებებით? მარტივად <ph name="BEGIN_LINK" />მართეთ ყველა გაფართოება<ph name="END_LINK" /> ერთი სივრციდან.</translation>
-<translation id="4020106588733303597">სამწუხაროდ, სისტემამ ვერ ჩატვირთა ხელმისაწვდომი ლიცენზიები.</translation>
 <translation id="4020327272915390518">ვარიანტების მენიუ</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">ლექსიკონში &amp;დამატება</translation>
@@ -2194,6 +2207,7 @@
 <translation id="407520071244661467">მასშტაბირება</translation>
 <translation id="4075639477629295004"><ph name="FILE_NAME" /> ვერ ტრანსლირდება.</translation>
 <translation id="4077917118009885966">რეკლამა დაბლოკილია ამ საიტზე</translation>
+<translation id="4077919383365622693">გასუფთავდება <ph name="SITE" />-ის მიერ შენახული ყველა მონაცემი და ქუქი-ჩანაწერი.</translation>
 <translation id="4079140982534148664">მართლწერის გაძლიერებული შემოწმების გამოყენება</translation>
 <translation id="4081242589061676262">ფაილის ტრანსლირება ვერ ხერხდება.</translation>
 <translation id="4084682180776658562">სანიშნე</translation>
@@ -2268,6 +2282,7 @@
 <translation id="4181841719683918333">ენები</translation>
 <translation id="4184885522552335684">ეკრანის გადაადგილება ჩავლებით შეგიძლიათ</translation>
 <translation id="4194570336751258953">ჩართე დაჭერა, რათა დააწკაპუნო</translation>
+<translation id="4194595472342532425">Plugin VM-ის დაყენება ვერ მოხერხდა კონფიგურაციის პრობლემის გამო. დაუკავშირდით თქვენი ორგანიზაციის მოწყობილობის ადმინისტრატორს. შეცდომის კოდი: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">ახალ ჩანართში გახსნა</translation>
 <translation id="4195814663415092787">გააგრძელეთ იქიდან, სადაც შეჩერდით</translation>
 <translation id="4198146608511578238">თქვენს Google ასისტენტთან საუბრისთვის ხანგრძლივად შეეხეთ გამშვების ხატულას.</translation>
@@ -2491,6 +2506,7 @@
 <translation id="4549791035683739768">თქვენს უსაფრთხოების გასაღებზე თითის ანაბეჭდები შენახული არ არის</translation>
 <translation id="4551763574344810652">მოქმედების გასაუქმებლად დაჭერით აირჩიეთ „<ph name="MODIFIER_KEY_DESCRIPTION" />“</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005"><ph name="NETWORK_TYPE" /> ქსელი, სიგნალის სიძლიერე: <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">გარე გაფართოების ვერსია იგივე ან უფრო დაბალი ვერსიაა, არსებულთან შედარებით.</translation>
 <translation id="4555769855065597957">ჩრდილი</translation>
 <translation id="4555863373929230635">პაროლების თქვენს Google ანგარიშში შესანახად შედით სისტემაში და ჩართეთ სინქრონიზაცია.</translation>
@@ -2568,6 +2584,7 @@
 <translation id="4665446389743427678"><ph name="SITE" />-ის მიერ შენახული ყველა მონაცემი ამოიშლება.</translation>
 <translation id="4668721319092543482">დააწკაპუნეთ, რათა ჩართოთ <ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">გვერდის გასუფთავება</translation>
+<translation id="46733273239502219">გასუფთავდება დაინსტალირებულ აპებში არსებული ხაზგარეშე მონაცემებიც</translation>
 <translation id="4673442866648850031">სტილუსის ამოღებისას სტილუსის ხელსაწყოების გახსნა</translation>
 <translation id="4677585247300749148"><ph name="URL" /> ითხოვს მარტივ წვდომასთან დაკავშირებულ მოვლენებზე რეაგირების ნებართვა</translation>
 <translation id="4677772697204437347">GPU მეხსიერება</translation>
@@ -2659,7 +2676,6 @@
 <translation id="4823484602432206655">მომხმარებელთა და მოწყობილობათა პარამეტრების წაკითხვა და შეცვლა</translation>
 <translation id="4824958205181053313">გსურთ სინქრონიზაციის გაუქმება?</translation>
 <translation id="4827675678516992122">დაკავშირება ვერ მოხერხდა</translation>
-<translation id="4828937774870308359">ავსტრალიური</translation>
 <translation id="4829768588131278040">PIN-კოდის დაყენება</translation>
 <translation id="4830502475412647084">მიმდინარეობს ოპერაციული სისტემის განახლების ინსტალაცია</translation>
 <translation id="4830573902900904548">თქვენი <ph name="DEVICE_TYPE" /> ვერ უკავშირდება ინტერნეტს <ph name="NETWORK_NAME" />-ის მეშვეობით. გთხოვთ, აირჩიოთ სხვა ქსელი. <ph name="LEARN_MORE_LINK_START" />შეიტყვეთ მეტი<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2700,6 +2716,7 @@
 <translation id="4876273079589074638">ხელი შეუწყვეთ ჩვენს ინჟინრებს, შეისწავლონ და გამოასწორონ ავარიულად გათიშვის მიზეზი. შეძლებისდაგვარად, ზუსტად ჩამოთვალეთ ყველა ეტაპი. ყოველი დეტალი მნიშვნელოვანია!</translation>
 <translation id="4876895919560854374">ეკრანის ჩაკეტვა და გახსნა</translation>
 <translation id="4877276003880815204">ელემენტების შემოწმება</translation>
+<translation id="4878653975845355462">მორგებული ფონები გამორთულია თქვენი ადმინისტრატორის მიერ</translation>
 <translation id="4879491255372875719">ავტომატური (ნაგულისხმევი)</translation>
 <translation id="4880328057631981605">წვდომის წერტილის სახელი</translation>
 <translation id="4880827082731008257">ძიების ისტორია</translation>
@@ -2755,10 +2772,10 @@
 <translation id="4943691134276646401">„<ph name="CHROME_EXTENSION_NAME" />“ ითხოვს დაკავშირებას თანმიმდევრულ პორტთან</translation>
 <translation id="4944310289250773232">ავტორიზაციის ამ სერვისის ჰოსტინგს უზრუნველყოფს <ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">ქმედებები</translation>
+<translation id="4952981627953231344">Plugin VM-ის ამ მოწყობილობაზე გამოყენება დაუშვებელია. დაუკავშირდით თქვენი ორგანიზაციის მოწყობილობის ადმინისტრატორს.</translation>
 <translation id="4953689047182316270">მარტივ წვდომასთან დაკავშირებულ მოვლენებზე რეაგირება</translation>
 <translation id="4953808748584563296">ნაგულისხმევი სტაფილოსფერი ავატარი</translation>
 <translation id="4955710816792587366">აირჩიეთ PIN-კოდი</translation>
-<translation id="4955814292505481804">ყოველწლიური</translation>
 <translation id="4959262764292427323">პაროლები ინახება თქვენს Google ანგარიშში, რაც ნიშნავს, რომ მათი გამოყენება ნებისმიერ მოწყობილობაზე შეგიძლიათ</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> — <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">ეს აპი დაინსტალირებულია თქვენი ადმინისტრატორის მიერ.</translation>
@@ -3240,7 +3257,6 @@
 <translation id="5659593005791499971">ელფოსტა</translation>
 <translation id="5659833766619490117">ეს გვერდი ვერ ითარგმნა</translation>
 <translation id="5660204307954428567"><ph name="DEVICE_NAME" />-თან დაწყვილება</translation>
-<translation id="5662477687021125631">უვადო</translation>
 <translation id="5667546120811588575">მიმდინარეობს Google Play-ს დაყენება...</translation>
 <translation id="5669267381087807207">გააქტიურება</translation>
 <translation id="5669691691057771421">შეიყვანეთ ახალი PIN-კოდი</translation>
@@ -3256,6 +3272,7 @@
 <translation id="5687326903064479980">დროის სარტყელი</translation>
 <translation id="5689516760719285838">მდებარეობა</translation>
 <translation id="56907980372820799">მონაცემების მიბმა</translation>
+<translation id="5691180005790455277">გასუფთავდება <ph name="SITE_GROUP_NAME" />-ისა და მისი ქვესაიტების მიერ შენახული ყველა მონაცემი და ქუქი-ჩანაწერი.</translation>
 <translation id="5691511426247308406">ოჯახი</translation>
 <translation id="5692183275898619210">ბეჭდვა დასრულდა</translation>
 <translation id="5696143504434933566">„<ph name="EXTENSION_NAME" />“-ის მხრიდან დარღვევის შესახებ შეტყობინება</translation>
@@ -3342,7 +3359,6 @@
 <translation id="5815645614496570556">X.400 მისამართი</translation>
 <translation id="5816434091619127343">პრინტერთან დაკავშირებული მოთხოვნილი ცვლილებები მის მუშაობას არასტაბილურს გახდის.</translation>
 <translation id="5817918615728894473">დაწყვილება</translation>
-<translation id="5819762621475381970">— თქვენი ოთახის განლაგება</translation>
 <translation id="5821565227679781414">მალსახმობის შექმნა</translation>
 <translation id="5825412242012995131">ჩართული (რეკომენდებულია)</translation>
 <translation id="5826395379250998812">დაუკავშირეთ <ph name="DEVICE_TYPE" /> თქვენს ტელეფონს. <ph name="LINK_BEGIN" />შეიტყვეთ მეტი<ph name="LINK_END" /></translation>
@@ -3478,6 +3494,7 @@
 <translation id="6007240208646052708">ხმოვანი ძიება თქვენს ენაზე მიუწვდომელია.</translation>
 <translation id="6009781704028455063">ჩაშენებული სენსორი</translation>
 <translation id="6010869025736512584">შემომავალ ვიდეოზე წვდომა</translation>
+<translation id="6011074160056912900">Ethernet ქსელი</translation>
 <translation id="6011193465932186973">თითის ანაბეჭდი</translation>
 <translation id="6011449291337289699">საიტის მონაცემების გასუფთავება</translation>
 <translation id="6015266928248016057">PUK-კოდი არასწორია. გამეორებების დარჩენილი რაოდენობა: <ph name="RETRIES" />.</translation>
@@ -3514,6 +3531,7 @@
 <translation id="6053401458108962351">დათვალიერების მონაცემების &amp;გასუფთავება…</translation>
 <translation id="6055171183283175969">თქვენ მიერ შეყვანილი პაროლი არასწორია.</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 თან ერთად RSA დაშიფვრა</translation>
+<translation id="6055907707645252013"><ph name="NETWORK_TYPE" /> ქსელი, არ არის დაკავშირებული</translation>
 <translation id="6056710589053485679">ნორმალური გადატვირთვა</translation>
 <translation id="6057381398996433816">ამ საიტს აეკრძალა მოძრაობისა და განათების სენსორების გამოყენება.</translation>
 <translation id="6058567592298841668">დანამატების ვირტუალური მანქანა: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3577,6 +3595,7 @@
 <translation id="6136114942382973861">ჩამოტვირთვების ზოლის დახურვა</translation>
 <translation id="6137767437444130246">მომხმარებლის სერტიფიკატი</translation>
 <translation id="6138680304137685902">X9.62 ECDSA ხელმოწერა SHA-384-ით</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, ქსელი არ არის</translation>
 <translation id="6141988275892716286">დაადასტურეთ ჩამოტვირთვა</translation>
 <translation id="6143186082490678276">დახმარების მიღება</translation>
 <translation id="6144938890088808325">დაგვეხმარეთ Chromebook-ების გაუმჯობესებაში</translation>
@@ -3883,6 +3902,7 @@
 <translation id="6602956230557165253">ნავიგაციისთვის გამოიყენეთ მარცხენა და მარჯვენა ღილაკები.</translation>
 <translation id="6605847144724004692">მომხმარებლებს ჯერ არ შეუფასებიათ.</translation>
 <translation id="6607831829715835317">დამატებითი ხე&amp;ლსაწყოები</translation>
+<translation id="6611972847767394631">იპოვეთ თქვენი ჩანართი აქ</translation>
 <translation id="6612358246767739896">დაცული შიგთავსი</translation>
 <translation id="6615455863669487791">მაჩვენე</translation>
 <translation id="6618097958368085618">მაინც შენარჩუნება</translation>
@@ -3951,6 +3971,7 @@
 <translation id="6709133671862442373">ახალი ამბები</translation>
 <translation id="6709357832553498500"><ph name="EXTENSIONNAME" />-ით დაკავშირება</translation>
 <translation id="6710213216561001401">წინა</translation>
+<translation id="6715803357256707211">თქვენი Linux აპლიკაციის ინსტალაციისას მოხდა შეცდომა. დეტალური ინფორმაციისთვის დააწკაპუნეთ შეტყობინებაზე.</translation>
 <translation id="6721678857435001674">თქვენი უსაფრთხოების გასაღების ბრენდისა და მოდელის ნახვა</translation>
 <translation id="6721972322305477112">&amp;ფაილი</translation>
 <translation id="672213144943476270">სტუმრის სტატუსით დათვალიერებამდე, გთხოვთ, განბლოკოთ თქვენი პროფილი.</translation>
@@ -3975,7 +3996,6 @@
 <translation id="674632704103926902">შეხებით გადატანის ჩართვა</translation>
 <translation id="6748217015615267851">რენდერერი: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">შეგიძლიათ გააგრძელოთ, მაგრამ მოხდება მხოლოდ თქვენი სინქრონიზებული მონაცემებისა და პარამეტრების აღდგენა. მთელი ლოკალური მონაცემები დაიკარგება.</translation>
-<translation id="6748775883310276718">კიოსკი ერთი აპისთვის</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (ინკოგნიტო)</translation>
 <translation id="6757101664402245801">URL დაკოპირდა</translation>
 <translation id="6758056191028427665">შეგვატყობინეთ, როგორ ვმუშაობთ.</translation>
@@ -3985,6 +4005,7 @@
 <translation id="6769712124046837540">პრინტერის დამატება…</translation>
 <translation id="6770664076092644100">NFC-ის მეშვეობით დადასტურება</translation>
 <translation id="6771503742377376720">არის სერტიფიცირების ორგანიზაცია</translation>
+<translation id="6772339735733515807">თქვენი გაფართოებების მართვა</translation>
 <translation id="6775163072363532304">აქ გამოჩნდება ხელმისაწვდომი მოწყობილობები.</translation>
 <translation id="6777817260680419853">გადამისამართება დაიბლოკა</translation>
 <translation id="6778737459546443941">თქვენს მშობელს ის ჯერ არ დაუდასტურებია</translation>
@@ -4123,6 +4144,7 @@
 <translation id="6972180789171089114">აუდიო/ვიდეო</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> ვერ გახსნის ფაილებს ამ საქაღალდეში, რადგან ის შეიცავს სისტემის ფაილებს</translation>
 <translation id="6972754398087986839">დაწყება</translation>
+<translation id="6973611239564315524">ხელმისაწვდომია Debian 10-ზე (Buster) განახლება</translation>
 <translation id="6974609594866392343">ხაზგარეშე დემო-რეჟიმი</translation>
 <translation id="6977381486153291903">მიკროპროგრამის ვერსია</translation>
 <translation id="6978121630131642226">საძიებო სისტემები</translation>
@@ -4582,6 +4604,7 @@
 <translation id="7644543211198159466">ფერი და თემა</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (მფლობელი)</translation>
 <translation id="7645681574855902035">მიმდინარეობს Linux-ის სარეზერვო კოპირების გაუქმება</translation>
+<translation id="7646772052135772216">პაროლების სინქრონიზაცია არ მუშაობს</translation>
 <translation id="7647403192093989392">ბოლოდროინდელი აქტივობები არ არის</translation>
 <translation id="7648992873808071793">ამ მოწყობილობაში ფაილების შენახვა</translation>
 <translation id="7649070708921625228">დახმარება</translation>
@@ -4770,6 +4793,7 @@
 <translation id="7877451762676714207">სერვერის უცნობი შეცდომა. გთხოვთ სცადოთ ისევ ან დაუკავშირდით სერვერის ადმინისტრატორს.</translation>
 <translation id="7877680364634660272">ტური</translation>
 <translation id="7878562273885520351">შესაძლოა თქვენს პაროლს საფრთხე ემუქრებოდეს</translation>
+<translation id="7879631849810108578">მალსახმობი დაყენებულია: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">ადგილობრივი მონაცემები წაიშლება გადატვირთვის შემდეგ</translation>
 <translation id="7881483672146086348">ანგარიშის ნახვა</translation>
 <translation id="7882358943899516840">პროვაიდერის ტიპი</translation>
@@ -4856,6 +4880,7 @@
 <translation id="7987814697832569482">ყოველთვის ამ VPN-ით დაკავშირება</translation>
 <translation id="7988355189918024273">მარტივი წვდომის ფუნქციების ჩართვა</translation>
 <translation id="7991296728590311172">გადამრთველით წვდომის პარამეტრები</translation>
+<translation id="7994350303002908848">Plugin VM-ის ინსტალაცია ვერ მოხერხდა. ცადეთ ხელახლა, ან დაუკავშირდით თქვენი ორგანიზაციის მოწყობილობის ადმინისტრატორს. შეცდომის კოდი: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">EAP მეთოდი</translation>
 <translation id="7997826902155442747">პროცესის პრიორიტეტი</translation>
 <translation id="7999229196265990314">შექმნილია შემდეგი ფაილები:
@@ -4947,7 +4972,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{მესამე მხარის ქუქი-ჩანაწერები არ არის}=1{მესამე მხარის 1 ქუქი-ჩანაწერი დაბლოკილია}other{მესამე მხარის # ქუქი-ჩანაწერი დაბლოკილია}}</translation>
 <translation id="810875025413331850">ახლომდებარე მოწყობილობები ვერ მოიძებნა.</translation>
 <translation id="8111155949205007504">გააზიარეთ ეს პაროლი თქვენს iPhone-თან</translation>
-<translation id="8113043281354018522">აირჩიეთ ლიცენზიის ტიპი</translation>
 <translation id="8114875720387900039">ჰორიზონტალური გაყოფა</translation>
 <translation id="8116972784401310538">&amp;სანიშნეების მმართველი</translation>
 <translation id="8117620576188476503">სტატუსის უჯრიდან შეგიძლიათ მართოთ კავშირები, განახლებები და პარამეტრები. კლავიატურის მეშვეობით აქ გადმოსასვლელად გამოიყენეთ კლავიშთა კომბინაცია: Alt + Shift + S.</translation>
@@ -5103,6 +5127,7 @@
 <translation id="8327039559959785305">Linux ფაილების მიერთება ვერ მოხერხდა. გთხოვთ, ცადოთ ხელახლა.</translation>
 <translation id="8335587457941836791">მოხსენით თაროდან</translation>
 <translation id="8336407002559723354">განახლებების დასასრული: <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">სისტემის <ph name="LANGUAGE" /> ტექსტის საჩვენებლად გადატვირთეთ მოწყობილობა</translation>
 <translation id="8336739000755212683">მოწყობილობის ანგარიშის სურათის შეცვლა</translation>
 <translation id="8337047789441383384">უსაფრთხოების ეს გასაღები უკვე რეგისტრირებული გაქვთ. მისი ხელახლა რეგისტრაცია არ არის აუცილებელი.</translation>
 <translation id="8338952601723052325">შემმუშავებლის ვებსაიტი</translation>
@@ -5146,6 +5171,7 @@
 <translation id="8400146488506985033">ადამიანების მართვა</translation>
 <translation id="8401432541486058167">მიუთითეთ PIN-კოდი, რომელიც დაკავშირებულია თქვენს სმარტ-ბარათთან.</translation>
 <translation id="8405046151008197676">გაეცანით ძირითად სიახლეებს ბოლო განახლებაში</translation>
+<translation id="8408068190360279472"><ph name="NETWORK_TYPE" /> ქსელი, მიმდინარეობს დაკავშირება</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">ჯერ მკითხეთ (რეკომენდებულია)</translation>
 <translation id="8418445294933751433">ჩ&amp;ვენება ჩანართის სახით</translation>
@@ -5435,6 +5461,7 @@
 <translation id="8807632654848257479">სტაბილური</translation>
 <translation id="8808478386290700967">ვებ მაღაზია</translation>
 <translation id="8808686172382650546">კატა</translation>
+<translation id="8808744862003883508">ამ გვერდზე შეგიძლიათ იხილოთ Chrome-ში დაინსტალირებული ყველა გაფართოება.</translation>
 <translation id="8809147117840417135">ღია ფირუზისფერი</translation>
 <translation id="8813698869395535039"><ph name="USERNAME" />-ში შესვლა ვერ მოხერხდა</translation>
 <translation id="8813811964357448561">ფურცელი</translation>
@@ -5662,7 +5689,6 @@
 <translation id="9121814364785106365">გახსნა ჩამაგრებული ჩანართის სახით</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> დაპაუზებულია</translation>
 <translation id="9124003689441359348">შენახული პაროლები აქ გამოჩნდება</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (დარჩ. <ph name="LICENSE_COUNT" />)</translation>
 <translation id="9128317794749765148">დაყენება ვერ შესრულდა</translation>
 <translation id="9128870381267983090">ქსელთან დაკავშირება</translation>
 <translation id="9130015405878219958">შეყვანილია არასწორი რეჟიმი.</translation>
@@ -5701,6 +5727,7 @@
 <translation id="9188732951356337132">გამოყენებისა და დიაგნოსტიკის მონაცემების გაგზავნა. ეს მოწყობილობა ამჟამად ავტომატურად უგზავნის Google-ს დიაგნოსტიკისა და მოწყობილობის/აპების გამოყენების მონაცემებს. აღნიშნული მონაცემები არ იქნება გამოყენებული თქვენი შვილის ვინაობის დასადგენად, არამედ დაგვეხმარება სისტემის/აპების სტაბილურობისა და სხვა ფუნქციების გაუმჯობესებაში. გარდა ამისა, გაერთიანებული მონაცემების ნაწილი ხელს შეუწყობს Google აპებსა და პარტნიორებს, მაგალითად, Android-ის დეველოპერებს. თუ თქვენი შვილისთვის ჩართულია ვებსა და აპებში დამატებითი აქტივობის პარამეტრი, აღნიშნული მონაცემები შესაძლოა შეინახოს მის Google ანგარიშში. <ph name="BEGIN_LINK2" />შეიტყვეთ მეტი<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + წინასწარ გაზიარებული გასაღები</translation>
 <translation id="920045321358709304"><ph name="SEARCH_ENGINE" />-ში ძიება</translation>
+<translation id="9201023452444595544">გასუფთავდება ხაზგარეშე მონაცემები</translation>
 <translation id="9201220332032049474">ეკრანის დაბლოკვის ვარიანტები</translation>
 <translation id="9203398526606335860">&amp;პროფილირება ჩართულია</translation>
 <translation id="9203904171912129171">აირჩიეთ მოწყობილობა</translation>
@@ -5713,6 +5740,7 @@
 <translation id="9220525904950070496">ანგარიშის წაშლა</translation>
 <translation id="9220820413868316583">ასწიეთ და ცადეთ ხელახლა.</translation>
 <translation id="923467487918828349">ყველას ჩვენება</translation>
+<translation id="929117907539171075">გასუფთავდება დაინსტალირებულ აპში არსებული ხაზგარეშე მონაცემებიც</translation>
 <translation id="930268624053534560">დეტალური დროის ანაბეჭდი</translation>
 <translation id="932327136139879170">საწყისი გვერდი</translation>
 <translation id="932508678520956232">ბეჭდვის ინიციალიზაცია ვერ მოხერხდა.</translation>
@@ -5738,6 +5766,7 @@
 <translation id="960719561871045870">ოპერატორის კოდი</translation>
 <translation id="960987915827980018">დარჩა დაახლოებით 1 საათი</translation>
 <translation id="962802172452141067">სანიშნეების საქაღალდეების ხე</translation>
+<translation id="964057662886721376">ზოგიერთმა გაფართოებამ (განსაკუთრებით, რომელთა ინსტალაციასაც არ გეგმავდით) შეიძლება შეანელოს მოწყობილობა.</translation>
 <translation id="964286338916298286">თქვენმა საინფორმაციო ტექნოლოგიების ადმინისტრატორმა გათიშა Chrome-ის ბონუსები თქვენი მოწყობილობისთვის.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{აპლიკაცია}other{აპლიკაციები}}</translation>
 <translation id="965211523698323809">გაგზავნეთ და მიიღეთ ტექსტური შეტყობინებები თქვენს <ph name="DEVICE_TYPE" />-ზე. <ph name="LINK_BEGIN" />შეიტყვეთ მეტი<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_kk.xtb b/chrome/app/resources/generated_resources_kk.xtb
index 20282b67..7b93946 100644
--- a/chrome/app/resources/generated_resources_kk.xtb
+++ b/chrome/app/resources/generated_resources_kk.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Реттелетін</translation>
 <translation id="1178581264944972037">Кідірту</translation>
 <translation id="117916940443676133">Сіздің қауіпсіздік кілтіңіз PIN кодымен қорғалмаған. Кіру деректерін басқару үшін алдымен PIN кодын жасаңыз.</translation>
-<translation id="118069123878619799">– бойыңыз сияқты физикалық сипаттар;</translation>
 <translation id="1181037720776840403">Өшіру</translation>
 <translation id="1183237619868651138">Жергілікті кэште <ph name="EXTERNAL_CRX_FILE" /> орнату мүмкін емес.</translation>
 <translation id="1185924365081634987">Сонымен қатар бұл желі қатесін түзету үшін <ph name="GUEST_SIGNIN_LINK_START" />қонақ ретінде шарлап<ph name="GUEST_SIGNIN_LINK_END" /> көруңізге болады.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381"><ph name="LOAD_STATE_PARAMETER" /> күту…</translation>
 <translation id="1495486559005647033">Басқа <ph name="NUM_PRINTERS" /> қолжетімді құрылғы бар.</translation>
 <translation id="1495677929897281669">Қойындыға оралу</translation>
+<translation id="1499271269825557605">Егер кеңейтімді анықтай алмасаңыз немесе браузер дұрыс жұмыс істемей тұрса, кеңейтімдерді осы жерден өшіруіңізге немесе реттеуіңізге болады.</translation>
 <translation id="1500297251995790841">Белгісіз құрылғы [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Бұл иеленуші есептік жазбасы көп кіру сеансында алғашқы жүйеге кірген есептік жазба болуы керек.</translation>
 <translation id="150411034776756821"><ph name="SITE" /> сайтын өшіру</translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Бұл бетке камераны пайдалануға тыйым салынған.</translation>
 <translation id="1507246803636407672">&amp;Алып тастау</translation>
 <translation id="1508491105858779599">Құрылғы құлпын ашу үшін саусақ ізін оқу сканеріне саусағыңызды қойыңыз.</translation>
+<translation id="1508575541972276599">Қазіргі нұсқасы: Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">USB арқылы <ph name="DEVICE_NAME_AND_VENDOR" /> кез келгеніне өту</translation>
 <translation id="150962533380566081">PUK коды жарамсыз.</translation>
 <translation id="1510030919967934016">Бұл бетке орналасқан жеріңізді бақылауға тыйым салынған.</translation>
@@ -431,6 +432,7 @@
 <translation id="1601560923496285236">Қолдану</translation>
 <translation id="1603914832182249871">(Инкогнито)</translation>
 <translation id="1604432177629086300">Басып шығарылмады. Принтерді тексеріп, қайталап көріңіз.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: Құпия сөзді синхрондау жұмыс істеп тұрған жоқ.</translation>
 <translation id="1607139524282324606">Жазбаны өшіру</translation>
 <translation id="1608626060424371292">Бұл пайдаланушыны алып тастау</translation>
 <translation id="1608668830839595724">Таңдалған бетбелгілерге арналған басқа әрекеттер</translation>
@@ -557,6 +559,8 @@
 <translation id="177336675152937177">Орналастырылатын қолданба деректері</translation>
 <translation id="1776712937009046120">Пайдаланушыны енгізу</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Бұл құрылғыны <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> басқарады.
+    <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> есептік жазбасына кіру үшін "Келесі" түймесін басыңыз.</translation>
 <translation id="1779652936965200207">"<ph name="DEVICE_NAME" />" құрылғысында осы негізгі кілтті енгізіңіз:</translation>
 <translation id="1780152987505130652">Топты жабу</translation>
 <translation id="1781291988450150470">Қолданыстағы PIN коды</translation>
@@ -744,6 +748,7 @@
 <translation id="2048653237708779538">Әрекет қолжетімді емес</translation>
 <translation id="2050339315714019657">Портреттік</translation>
 <translation id="2053312383184521053">Әрекетсіз күй деректері</translation>
+<translation id="2055585478631012616">Осы сайттардан, оның ішінде ашық қойындылардан шығып кетесіз.</translation>
 <translation id="205560151218727633">Google Assistant логотипі</translation>
 <translation id="2058456167109518507">Құрылғы анықталды</translation>
 <translation id="2059913712424898428">Уақыт белдеуі</translation>
@@ -759,6 +764,7 @@
 <translation id="2079545284768500474">Қайтару</translation>
 <translation id="2080070583977670716">Қосымша параметрлер</translation>
 <translation id="2087822576218954668">Басып шығару: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN желісі</translation>
 <translation id="2089566709556890888">Google Chrome арқылы қауіпсіз күйде шолыңыз</translation>
 <translation id="2089795179672254991">Сайт буферге көшірілген мәтін мен кескіндерді көргісі келген кезде, рұқсат сұралсын (ұсынылады)</translation>
 <translation id="2090165459409185032">Есептік жазба ақпаратын қалпына келтіру үшін мына сілтемеге өтіңіз: google.com/accounts/recovery</translation>
@@ -982,6 +988,7 @@
 <translation id="2379232090534544565">Сайт дыбыс және бейне кірісін пайдалануда</translation>
 <translation id="2379281330731083556">Жүйелік диалогтік терезені пайдаланып басып шығару… <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Жіберуден бұрын сұрау (ұсынылған)</translation>
+<translation id="2382818385048255866">Кеңейтімдерді тексеріңіз</translation>
 <translation id="2384436799579181135">Қате пайда болды. Принтерді тексеріп, әрекетті қайталаңыз.</translation>
 <translation id="2387458720915042159">Прокси-сервер байланысының түрі</translation>
 <translation id="2391419135980381625">Стандартты қаріп</translation>
@@ -1033,6 +1040,7 @@
 <translation id="2462724976360937186">Сертификат беру ұйымының негізгі идентификаторы</translation>
 <translation id="2462752602710430187"><ph name="PRINTER_NAME" /> енгізілді</translation>
 <translation id="2464089476039395325">HTTP прокси-сервері</translation>
+<translation id="2467267713099745100"><ph name="NETWORK_TYPE" /> желісі, өшірулі</translation>
 <translation id="2468205691404969808">Бұл беттерді ашпасаңыз да, cookie файлдарын пайдаланып, параметрлерді сақтап қалады</translation>
 <translation id="2468402215065996499">Тамагочи</translation>
 <translation id="2469259292033957819">Ешқандай принтер сақталмаған.</translation>
@@ -1287,6 +1295,7 @@
 <translation id="2800760947029405028">Кескін жүктеп салу</translation>
 <translation id="2803375539583399270">PIN кодын енгізіңіз</translation>
 <translation id="2804043232879091219">Балама браузер ашылмады.</translation>
+<translation id="2804667941345577550">Осы сайттан, оның ішінде ашық қойындылардан шығып кетесіз.</translation>
 <translation id="2804680522274557040">Камера өшірулі</translation>
 <translation id="2805646850212350655">Microsoft Encrypting File System</translation>
 <translation id="2805756323405976993">Қолданбалар</translation>
@@ -1294,6 +1303,7 @@
 <translation id="2806891468525657116">Таңбаша бұрыннан бар</translation>
 <translation id="2807517655263062534">Сіз жүктеп алатын файлдар осында шығады</translation>
 <translation id="2809586584051668049">және тағы <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2810390687497823527">Егер кеңейтімді анықтай алмасаңыз немесе браузер дұрыс жұмыс істемей тұрса, кеңейтімдерді осы жерден өшіруіңізге немесе реттеуіңізге болады.</translation>
 <translation id="2812049959647166806">Thunderbolt қолданылмайды</translation>
 <translation id="2812944337881233323">Жүйеден шығып, қайта кіріп көріңіз</translation>
 <translation id="2812989263793994277">Ешбір кескінді көрсетпеу</translation>
@@ -1333,6 +1343,7 @@
 <translation id="2861941300086904918">Native Client қауіпсіздік басқарушысы</translation>
 <translation id="2864601841139725659">Профиль суретін реттеу</translation>
 <translation id="2865919525181940183">Экрандағы ашық бағдарламалардың скриншоты</translation>
+<translation id="286674810810214575">Қуат көздері тексерілуде...</translation>
 <translation id="2867768963760577682">Бекітілген қойынды ретінде ашу</translation>
 <translation id="2868746137289129307">Бұл кеңейтім ескіргендіктен, кәсіпорын саясатына сәйкес өшірілді. Жаңа нұсқасы қолжетімді болғанда, ол автоматты түрде қосылуы мүмкін.</translation>
 <translation id="2870560284913253234">Сайт</translation>
@@ -1410,6 +1421,7 @@
 <translation id="2972581237482394796">&amp;Қайта орындау</translation>
 <translation id="2973324205039581528">Сайттың дыбысын өшіру</translation>
 <translation id="2977480621796371840">Топтан өшіру</translation>
+<translation id="2979520980928493164">Жылдам әрі қорғалған Chrome браузері</translation>
 <translation id="2979639724566107830">Жаңа терезеде ашу</translation>
 <translation id="2981113813906970160">Үлкен тінтуір курсорын көрсету</translation>
 <translation id="2982970937345031">Анонимді есеп беру</translation>
@@ -1516,6 +1528,7 @@
 <translation id="3143515551205905069">Синхрондаудан бас тарту</translation>
 <translation id="3143754809889689516">Басынан бастап ойнату</translation>
 <translation id="3144647712221361880">Сілтемені басқа атпен ашу</translation>
+<translation id="3145187901750964977">Виртуалды құрылғы орнатылмады. Әрекетті қайталаңыз немесе ұйымыңыздың құрылғы әкімшісіне хабарласыңыз. Қате коды: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Нұсқасы:
     <ph name="LINUX_VERSION" />
 
@@ -1554,6 +1567,7 @@
 <translation id="3192947282887913208">Аудио файлдары</translation>
 <translation id="3194737229810486521"><ph name="URL" /> деректерді құрылғыңызда біржола сақтағысы келеді</translation>
 <translation id="3199127022143353223">Серверлер</translation>
+<translation id="3201306578844503970">Желідегі қатеге байланысты виртуалды құрылғы орнатылмады. Әрекетті қайталаңыз немесе ұйымыңыздың құрылғы әкімшісіне хабарласыңыз. Қате коды: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Қолжетімді USB құрылғылары осы жерге шығады.</translation>
 <translation id="3202131003361292969">Жолы</translation>
 <translation id="3202173864863109533">Бұл қойынды аудиосының дыбысы өшірілуде.</translation>
@@ -1890,7 +1904,6 @@
 <translation id="3678156199662914018">Кеңейтім: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Пікіріңіз үшін рақмет. Қазір желіге қосылмағансыз, есебіңіз кейінірек жіберіледі.</translation>
 <translation id="3682824389861648626">Қозғалыс шегі</translation>
-<translation id="3683023058278427253">Домен үшін көптеген лицензия түрлерін анықтадық. Жалғастыру үшін біреуін таңдаңыз.</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> экран бөлісу сұрауы</translation>
 <translation id="368789413795732264">Файлды жазуға әрекет ету кезінде қате орын алды: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Қолданбада ашатын файлдарға және қалталарға жазу</translation>
@@ -2064,6 +2077,7 @@
 <translation id="389589731200570180">Қонақтармен бөлісу</translation>
 <translation id="389901847090970821">Пернетақтаны таңдау</translation>
 <translation id="3899879303189199559">Бір жылдан астам желіден тыс</translation>
+<translation id="3900789207771372462">Кейбір кеңейтімдер браузердегі әрекетіңізді, сонымен қатар жеке ақпаратыңызды пайдалана алады.</translation>
 <translation id="3900966090527141178">Құпия сөздерді экспорттау</translation>
 <translation id="3901991538546252627"><ph name="NAME" /> желісіне қосылу</translation>
 <translation id="3905761538810670789">Қолданбаны жөндеу</translation>
@@ -2154,7 +2168,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" бұл браузерді түзетуде</translation>
 <translation id="4014432863917027322">"<ph name="EXTENSION_NAME" />" жөндейсіз бе?</translation>
 <translation id="4015163439792426608">Кеңейтімдер пайдаланасыз ба? <ph name="BEGIN_LINK" />Кеңейтімдерді бір орыннан<ph name="END_LINK" /> басқарыңыз.</translation>
-<translation id="4020106588733303597">Қап! Жүйе қолжетімді лицензияларды жүктей алмады.</translation>
 <translation id="4020327272915390518">Опциялар мәзірі</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Сөздікке қосу</translation>
@@ -2192,6 +2205,7 @@
 <translation id="407520071244661467">Масштаб</translation>
 <translation id="4075639477629295004"><ph name="FILE_NAME" /> мазмұнын трансляциялау мүмкін емес.</translation>
 <translation id="4077917118009885966">Осы сайтта бөгелген жарнамалар</translation>
+<translation id="4077919383365622693"><ph name="SITE" /> арқылы сақталған барлық деректер мен cookie файлдары өшіріледі.</translation>
 <translation id="4079140982534148664">Жетілдірілген емле тексеру құралын пайдалану</translation>
 <translation id="4081242589061676262">Файлды трансляциялау мүмкін емес.</translation>
 <translation id="4084682180776658562">Бетбелгі</translation>
@@ -2266,6 +2280,7 @@
 <translation id="4181841719683918333">Тілдер</translation>
 <translation id="4184885522552335684">Дисплейді жылжыту үшін сүйреу</translation>
 <translation id="4194570336751258953">Tap-to-click мүмкіндігін қосу</translation>
+<translation id="4194595472342532425">Конфигурациядағы қатеге байланысты Plugin VM реттелмеді. Ұйымыңыздың құрылғы әкімшісіне хабарласыңыз. Қате коды: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Жаңа қойындыда ашу</translation>
 <translation id="4195814663415092787">Тоқтаған жерден жалғастыру</translation>
 <translation id="4198146608511578238">Google Assistant қолданбасына команда беру үшін жай ғана "Launcher" белгішесін басып ұстап тұрыңыз.</translation>
@@ -2489,6 +2504,7 @@
 <translation id="4549791035683739768">Қауіпсіздік кілтіңізде саусақ іздері сақталмаған.</translation>
 <translation id="4551763574344810652">Қайтару үшін <ph name="MODIFIER_KEY_DESCRIPTION" /> пернелерін басыңыз.</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005"><ph name="NETWORK_TYPE" /> желісі, сигнал деңгейі: <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">Сыртқы кеңейтім бар нұсқамен бірдей немесе онымен салыстырғанда төменірек нұсқа болып табылады.</translation>
 <translation id="4555769855065597957">Көлеңке</translation>
 <translation id="4555863373929230635">Құпия сөздерді Google есептік жазбаңызға сақтау үшін оған кіріп, синхрондауды қосыңыз.</translation>
@@ -2566,6 +2582,7 @@
 <translation id="4665446389743427678"><ph name="SITE" /> сайты сақтаған барлық деректер жойылады.</translation>
 <translation id="4668721319092543482"><ph name="PLUGIN_NAME" /> плагинін қосу үшін оны басыңыз</translation>
 <translation id="4672657274720418656">Бетті тазалау</translation>
+<translation id="46733273239502219">Орнатылған қолданбалардағы офлайн деректер де өшіріледі.</translation>
 <translation id="4673442866648850031">Стилус өшірілгеннен кейін, стилус құралдарын ашу</translation>
 <translation id="4677585247300749148"><ph name="URL" /> арнайы мүмкіндіктер оқиғаларына жауап бергісі келеді</translation>
 <translation id="4677772697204437347">GPU жады</translation>
@@ -2657,7 +2674,6 @@
 <translation id="4823484602432206655">Пайдаланушы және құрылғы параметрлерін оқу және өзгерту</translation>
 <translation id="4824958205181053313">Синхрондауды тоқтату қажет пе?</translation>
 <translation id="4827675678516992122">Жалғанбады</translation>
-<translation id="4828937774870308359">Австралиялық</translation>
 <translation id="4829768588131278040">PIN кодын орнату</translation>
 <translation id="4830502475412647084">ОЖ жаңартылған нұсқасы орнатылуда</translation>
 <translation id="4830573902900904548"><ph name="DEVICE_TYPE" /> <ph name="NETWORK_NAME" /> көмегімен интернетке қосыла алмайды. Басқа желіні іздеңіз. <ph name="LEARN_MORE_LINK_START" />Толығырақ<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2698,6 +2714,7 @@
 <translation id="4876273079589074638">Инженерлерге бұзылу мәселелерін зерттеуге және жөндеуге көмектесіңіз. Мүмкін болса, әрекеттеріңізді ретімен сипаттаңыз. Ұсақ-түйектің өзі маңызды!</translation>
 <translation id="4876895919560854374">Экранды құлыптау және құлпын ашу</translation>
 <translation id="4877276003880815204">Элементтерді тексеру</translation>
+<translation id="4878653975845355462">Арнаулы фондарды әкімші өшірген.</translation>
 <translation id="4879491255372875719">Автоматты (әдепкі)</translation>
 <translation id="4880328057631981605">Кіру нүктесінің атауы</translation>
 <translation id="4880827082731008257">Іздеу тарихы</translation>
@@ -2753,10 +2770,10 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" сериялық портқа қосылғысы келеді</translation>
 <translation id="4944310289250773232">Бұл аутентификация қызметі <ph name="SAML_DOMAIN" /> кеңейтімінде орналасқан.</translation>
 <translation id="495170559598752135">Әрекеттер</translation>
+<translation id="4952981627953231344">Бұл құрылғыда Plugin VM пайдалануға тыйым салынған. Ұйымыңыздың құрылғы әкімшісіне хабарласыңыз.</translation>
 <translation id="4953689047182316270">Арнайы мүмкіндіктер оқиғаларына жауап беру</translation>
 <translation id="4953808748584563296">Әдепкі сарғыш түсті аватар</translation>
 <translation id="4955710816792587366">PIN кодын таңдаңыз</translation>
-<translation id="4955814292505481804">Бір жылдық</translation>
 <translation id="4959262764292427323">Құпия сөздер Google есептік жазбаңызда сақталады және оларды кез келген құрылғыда пайдалана аласыз</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Бұл қолданбаны әкімшіңіз орнатты.</translation>
@@ -3238,7 +3255,6 @@
 <translation id="5659593005791499971">Электрондық пошта</translation>
 <translation id="5659833766619490117">Бет аударылмады</translation>
 <translation id="5660204307954428567"><ph name="DEVICE_NAME" /> құрылғысымен жұптау</translation>
-<translation id="5662477687021125631">Шексіз мерзімді</translation>
 <translation id="5667546120811588575">Google Play орнатылуда...</translation>
 <translation id="5669267381087807207">Белсендіру</translation>
 <translation id="5669691691057771421">Жаңа PIN кодын енгізіңіз</translation>
@@ -3254,6 +3270,7 @@
 <translation id="5687326903064479980">Уақыт белдеуі</translation>
 <translation id="5689516760719285838">Орналасу</translation>
 <translation id="56907980372820799">Деректерді байланыстыру</translation>
+<translation id="5691180005790455277"><ph name="SITE_GROUP_NAME" /> сақтаған барлық деректер мен cookie файлдары және қатысты сайттар өшіріледі.</translation>
 <translation id="5691511426247308406">Отбасы</translation>
 <translation id="5692183275898619210">Басып шығару аяқталды</translation>
 <translation id="5696143504434933566">"<ph name="EXTENSION_NAME" />" қызметіне қатысты шағым жазу</translation>
@@ -3340,7 +3357,6 @@
 <translation id="5815645614496570556">X.400 мекенжайы</translation>
 <translation id="5816434091619127343">Сұралған принтер өзгерістері енгізілсе, принтер жарамсыз болып қалуы мүмкін.</translation>
 <translation id="5817918615728894473">Жұптау</translation>
-<translation id="5819762621475381970">– бөлменің жобасы.</translation>
 <translation id="5821565227679781414">Таңбаша жасау</translation>
 <translation id="5825412242012995131">Қосу (ұсынылады)</translation>
 <translation id="5826395379250998812"><ph name="DEVICE_TYPE" /> құрылғысын телефонға жалғаңыз. <ph name="LINK_BEGIN" />Толығырақ<ph name="LINK_END" /></translation>
@@ -3476,6 +3492,7 @@
 <translation id="6007240208646052708">Сіздің тілде дауыспен іздеу жоқ.</translation>
 <translation id="6009781704028455063">Ендірілген сенсор</translation>
 <translation id="6010869025736512584">Бейне кіріс қолжетімді</translation>
+<translation id="6011074160056912900">Ethernet желісі</translation>
 <translation id="6011193465932186973">Саусақ ізі</translation>
 <translation id="6011449291337289699">Сайт деректерін тазалау</translation>
 <translation id="6015266928248016057">PUK коды жарамсыз. Қалған мүмкіндіктер саны: <ph name="RETRIES" />.</translation>
@@ -3512,6 +3529,7 @@
 <translation id="6053401458108962351">&amp;Шолу деректерін өшіру…</translation>
 <translation id="6055171183283175969">Енгізілген құпия сөз дұрыс емес.</translation>
 <translation id="6055392876709372977">RSA шифрлауы бар PKCS #1 SHA-256</translation>
+<translation id="6055907707645252013"><ph name="NETWORK_TYPE" /> желісі, жалғанбаған</translation>
 <translation id="6056710589053485679">Қалыпты қайта жүктеу</translation>
 <translation id="6057381398996433816">Бұл сайттың қозғалыс не жарық датчиктерін пайдалануына тыйым салынды.</translation>
 <translation id="6058567592298841668">Виртуалды құрылғыға арналған плагин: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3575,6 +3593,7 @@
 <translation id="6136114942382973861">Жүктеп алынғандар жолағын жабу</translation>
 <translation id="6137767437444130246">Пайдаланушы сертификаты</translation>
 <translation id="6138680304137685902">X9.62 ECDSA, SHA-384 алгоритмімен қол қою</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, желі жоқ</translation>
 <translation id="6141988275892716286">Жүктеп алуды растау</translation>
 <translation id="6143186082490678276">Анықтама алу</translation>
 <translation id="6144938890088808325">Chromebooks құрылғыларын жақсартуға көмектесіңіз</translation>
@@ -3881,6 +3900,7 @@
 <translation id="6602956230557165253">Шарлау үшін сол жақ және оң жақ көрсеткі пернелерін пайдаланыңыз.</translation>
 <translation id="6605847144724004692">Бірде-бір пайдаланушы баға бермеген.</translation>
 <translation id="6607831829715835317">Қосымша құралд&amp;ар</translation>
+<translation id="6611972847767394631">Қойындыларыңыз осы жерде</translation>
 <translation id="6612358246767739896">Қорғалған мазмұн</translation>
 <translation id="6615455863669487791">Маған көрсету</translation>
 <translation id="6618097958368085618">Сақтала берсін</translation>
@@ -3949,6 +3969,7 @@
 <translation id="6709133671862442373">Жаңалықтар</translation>
 <translation id="6709357832553498500"><ph name="EXTENSIONNAME" /> арқылы қосылу</translation>
 <translation id="6710213216561001401">Алдыңғы</translation>
+<translation id="6715803357256707211">Linux қолданбасын орнату кезінде қате кетті. Толық ақпарат алу үшін хабарландыруды басыңыз.</translation>
 <translation id="6721678857435001674">Security Key құрылғысының маркасы мен үлгісін көру</translation>
 <translation id="6721972322305477112">&amp;Файл</translation>
 <translation id="672213144943476270">Қонақ ретінде шарлау үшін профиліңіздің құлпын ашыңыз.</translation>
@@ -3973,7 +3994,6 @@
 <translation id="674632704103926902">Түртіп сүйреуді қосу</translation>
 <translation id="6748217015615267851">Рендеринг: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Жалғастыруыңызға болады, бірақ тек синхрондалған деректер мен параметрлер қалпына келтіріледі. Барлық жергілікті деректер жойылады.</translation>
-<translation id="6748775883310276718">Бір қолданбаға арналған киоск</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Инкогнито)</translation>
 <translation id="6757101664402245801">URL мекенжайы көшірілді</translation>
 <translation id="6758056191028427665">Қал-жағдайыңызды айтып беріңіз.</translation>
@@ -3983,6 +4003,7 @@
 <translation id="6769712124046837540">Принтер қосылуда…</translation>
 <translation id="6770664076092644100">NFC арқылы растау</translation>
 <translation id="6771503742377376720">Сертификат беретін орган</translation>
+<translation id="6772339735733515807">Кеңейтімдерді басқару</translation>
 <translation id="6775163072363532304">Қолжетімді құрылғылар осы жерде пайда болады.</translation>
 <translation id="6777817260680419853">Бағыттауға тыйым салынған</translation>
 <translation id="6778737459546443941">Ата-анаңыз әлі мақұлдаған жоқ</translation>
@@ -4121,6 +4142,7 @@
 <translation id="6972180789171089114">Аудиомазмұн/Бейне</translation>
 <translation id="6972553992270299730">Ішінде жүйелік файлдар болғандықтан, <ph name="ORIGIN" /> осы қалтадағы файлдарды аша алмайды.</translation>
 <translation id="6972754398087986839">Іске кірісу</translation>
+<translation id="6973611239564315524">Debian 10 (Buster) нұсқасы қолжетімді</translation>
 <translation id="6974609594866392343">Офлайн демо режимі</translation>
 <translation id="6977381486153291903">Микробағдарлама нұсқасы</translation>
 <translation id="6978121630131642226">Іздеу жүйелері</translation>
@@ -4580,6 +4602,7 @@
 <translation id="7644543211198159466">Түс және тақырып</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (иесі)</translation>
 <translation id="7645681574855902035">Linux контейнерінің сақтық көшірмесін жасаудан бас тартылуда</translation>
+<translation id="7646772052135772216">Құпия сөз синхрондау жұмыс істеп тұрған жоқ</translation>
 <translation id="7647403192093989392">Соңғы әрекет жоқ</translation>
 <translation id="7648992873808071793">Файлдарды осы құрылғыда сақтау</translation>
 <translation id="7649070708921625228">Анықтама</translation>
@@ -4768,6 +4791,7 @@
 <translation id="7877451762676714207">Белгісіз сервер қатесі. Әрекетті қайталап көріңіз немесе сервер әкімшісіне хабарласыңыз.</translation>
 <translation id="7877680364634660272">Саяхат</translation>
 <translation id="7878562273885520351">Құпия сөзіңіз ұрланған болуы мүмкін</translation>
+<translation id="7879631849810108578">Пернелер тіркесімі орнатылды: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Іске қосылған кезде, жергілікті деректер жойылады</translation>
 <translation id="7881483672146086348">Есептік жазбаны көру</translation>
 <translation id="7882358943899516840">Провайдер түрі</translation>
@@ -4854,6 +4878,7 @@
 <translation id="7987814697832569482">Үнемі осы VPN арқылы қосылу</translation>
 <translation id="7988355189918024273">Арнайы мүмкіндіктерді қосу</translation>
 <translation id="7991296728590311172">Switch Access параметрлері</translation>
+<translation id="7994350303002908848">Plugin VM орнатылмады. Әрекетті қайталаңыз немесе ұйымыңыздың құрылғы әкімшісіне хабарласыңыз. Қате коды: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">EAP (кеңейтілген растау протоколы) әдісі</translation>
 <translation id="7997826902155442747">Өңдеу басымдығы</translation>
 <translation id="7999229196265990314">Келесі файлдар жасалды:
@@ -4945,7 +4970,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Үшінші тараптың cookie файлдары жоқ}=1{Үшінші тараптың 1 cookie файлы бөгелді}other{Үшінші тараптың # cookie файлы бөгелді}}</translation>
 <translation id="810875025413331850">Маңайдан құрылғы табылған жоқ.</translation>
 <translation id="8111155949205007504">Құпия сөзді iPhone телефонымен бөлісу</translation>
-<translation id="8113043281354018522">Лицензия түрін таңдаңыз</translation>
 <translation id="8114875720387900039">Көлденеңінен бөлу</translation>
 <translation id="8116972784401310538">&amp;Бетбелгілер реттегіші</translation>
 <translation id="8117620576188476503">Байланыстарды, жаңартуларды және параметрлерді күй жолағының көмегімен басқарыңыз. Пернетақта арқылы кіру үшін Alt + Shift + S пернелер тіркесімін басыңыз.</translation>
@@ -5102,6 +5126,7 @@
 <translation id="8327039559959785305">Linux файлдарын орнату кезінде қате кетті. Қайталап көріңіз.</translation>
 <translation id="8335587457941836791">Сөреден босату</translation>
 <translation id="8336407002559723354">Жаңартулар аяқталатын мерзім: <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Жүйе мәтіні <ph name="LANGUAGE" /> тілінде көрсетілуі үшін құрылғыны қайта қосыңыз.</translation>
 <translation id="8336739000755212683">Құрылғыда есептік жазба суретін өзгерту</translation>
 <translation id="8337047789441383384">Қауіпсіздік кілтін бұрын тіркегенсіз. Қайта тіркеудің қажеті жоқ.</translation>
 <translation id="8338952601723052325">Әзірлеуші веб-сайты</translation>
@@ -5145,6 +5170,7 @@
 <translation id="8400146488506985033">Адамдарды басқару</translation>
 <translation id="8401432541486058167">Смарт картаңызбен байланыстырылған PIN кодын көрсетіңіз.</translation>
 <translation id="8405046151008197676">Ең соңғы нұсқаға қатысты негізгі ақпарат алыңыз.</translation>
+<translation id="8408068190360279472"><ph name="NETWORK_TYPE" /> желісі, жалғануда</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Алдымен сұрау (ең дұрысы)</translation>
 <translation id="8418445294933751433">&amp;Қойынды ретінде көрсету</translation>
@@ -5434,6 +5460,7 @@
 <translation id="8807632654848257479">Тұрақты</translation>
 <translation id="8808478386290700967">Web Store</translation>
 <translation id="8808686172382650546">Мысық</translation>
+<translation id="8808744862003883508">Осы бетте Chrome браузеріне орнатылған барлық кеңейтімдерді көресіз.</translation>
 <translation id="8809147117840417135">Ашық көкшіл жасыл</translation>
 <translation id="8813698869395535039"><ph name="USERNAME" /> есептік жазбасына кіру мүмкін емес</translation>
 <translation id="8813811964357448561">қағаз парақ</translation>
@@ -5661,7 +5688,6 @@
 <translation id="9121814364785106365">Бекітілген қойынды ретінде ашу</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> кідіртілді</translation>
 <translation id="9124003689441359348">Сақталған құпия сөздер мына жерге шығады</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> қалды)</translation>
 <translation id="9128317794749765148">Реттеу аяқталмады</translation>
 <translation id="9128870381267983090">Желіге қосылу</translation>
 <translation id="9130015405878219958">Жарамсыз режим енгізілген.</translation>
@@ -5700,6 +5726,7 @@
 <translation id="9188732951356337132">Пайдаланылуы және диагностикасы туралы деректерді жіберу. Бұл құрылғыдан Google-ға диагностика, құрылғы мен қолданбаны пайдалану деректері автоматты түрде жіберіліп тұрады. Бұл деректер баланың жеке басын анықтауға пайдаланылмайды. Олар жүйе мен қолданбаның тұрақты жұмыс істеуіне және басқа да жақсартулар енгізуге көмектеседі. Кейбір жиынтық деректер Google қолданбаларын жетілдіруге және Android әзірлеушілері сияқты серіктестердің жұмысына көмектеседі. Егер "Интернет пен қолданбаларды пайдаланудың қосымша тарихы" параметрі қосулы болса, бұл деректер балаңыздың Google есептік жазбасына сақталуы мүмкін. <ph name="BEGIN_LINK2" />Толығырақ<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + алдын ала бөлісілген кілт</translation>
 <translation id="920045321358709304"><ph name="SEARCH_ENGINE" /> арқылы іздеу</translation>
+<translation id="9201023452444595544">Барлық офлайн деректер өшіріледі.</translation>
 <translation id="9201220332032049474">Экран құлпы опциялары</translation>
 <translation id="9203398526606335860">&amp;Профильдеу қосылған</translation>
 <translation id="9203904171912129171">Құрылғыны таңдау</translation>
@@ -5712,6 +5739,7 @@
 <translation id="9220525904950070496">Есептік жазбаны жою</translation>
 <translation id="9220820413868316583">Саусағыңызды көтеріп, қайта басып көріңіз.</translation>
 <translation id="923467487918828349">Барлығын көрсету</translation>
+<translation id="929117907539171075">Орнатылған қолданбадағы офлайн деректер де өшіріледі.</translation>
 <translation id="930268624053534560">Толық уақыт белгілері</translation>
 <translation id="932327136139879170">Негізгі бет</translation>
 <translation id="932508678520956232">Басып шығаруды іске қосу мүмкін болмады.</translation>
@@ -5737,6 +5765,7 @@
 <translation id="960719561871045870">Оператор коды</translation>
 <translation id="960987915827980018">Шамамен 1 сағат қалды</translation>
 <translation id="962802172452141067">Бетбелгі қалтасының құрылымы</translation>
+<translation id="964057662886721376">Кейбір кеңейтімдер, әсіресе сіздің келісімінсіз орнатылғандар браузердің жұмысын баяулатады.</translation>
 <translation id="964286338916298286">Әкімшіңіз құрылғыңызда Chrome Goodies мүмкіндігін өшірді.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Қолданба}other{Қолданбалар}}</translation>
 <translation id="965211523698323809"><ph name="DEVICE_TYPE" /> құрылғысына мәтіндік хабарлар жіберіңіз және одан мәтіндік хабарлар алыңыз. <ph name="LINK_BEGIN" />Толығырақ<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_km.xtb b/chrome/app/resources/generated_resources_km.xtb
index 45f2d92..db8f189 100644
--- a/chrome/app/resources/generated_resources_km.xtb
+++ b/chrome/app/resources/generated_resources_km.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">ផ្ទាល់ខ្លួន</translation>
 <translation id="1178581264944972037">ផ្អាក</translation>
 <translation id="117916940443676133">សោសុវត្ថិភាពរបស់អ្នក​មិនបាន​ប្រើកូដ PIN សម្រាប់​ការពារទេ។ ដើម្បីគ្រប់គ្រង​ទិន្នន័យសម្រាប់ចូលគណនី សូមបង្កើតកូដ PIN ជាមុនសិន។</translation>
-<translation id="118069123878619799">- លក្ខណៈ​ពិសេស​ផ្នែករាងកាយ​របស់អ្នក ដូចជា​កម្ពស់​ជាដើម</translation>
 <translation id="1181037720776840403">ដកចេញ</translation>
 <translation id="1183237619868651138">មិនអាចតំឡើង <ph name="EXTERNAL_CRX_FILE" /> នៅក្នុងឃ្លាំងសម្ងាត់មូលដ្ឋានទេ។</translation>
 <translation id="1185924365081634987">អ្នកក៏អាចសាកល្បង <ph name="GUEST_SIGNIN_LINK_START" />រុករកជារបៀបភ្ញៀវ<ph name="GUEST_SIGNIN_LINK_END" /> ផងដែរដើម្បីដោះស្រាយកំហុសឆ្គងបណ្តាញនេះ។</translation>
@@ -1893,7 +1892,6 @@
 <translation id="3678156199662914018">កម្មវិធីបន្ថែម៖ <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">សូមអរគុណសម្រាប់មតិរបស់អ្នក។ ដោយសារបច្ចុប្បន្ននេះអ្នកស្ថិតនៅក្រៅបណ្តាញ របាយការណ៍របស់អ្នកនឹងត្រូវបានផ្ញើនៅពេលក្រោយ។</translation>
 <translation id="3682824389861648626">កម្រិត​នៃ​ចលនា</translation>
-<translation id="3683023058278427253">យើងបាន​រកឃើញ​អាជ្ញាបណ្ណ​ជាច្រើន​ប្រភេទសម្រាប់ដែនរបស់អ្នក។ សូមជ្រើសរើស​ប្រភេទអាជ្ញាបណ្ណមួយ​ដើម្បីបន្ត។</translation>
 <translation id="3683524264665795342">សំណើរចែករំលែកអេក្រង់ <ph name="APP_NAME" /></translation>
 <translation id="368789413795732264">មានកំហុងឆ្គងមួយខណៈពេលព្យាយាមសរសេរឯកសារនេះ៖ <ph name="ERROR_TEXT" />។</translation>
 <translation id="3688507211863392146">សរសេរទៅឯកសារ និងថតឯកសារនៅក្នុងកម្មវិធីដែលអ្នកបើក</translation>
@@ -2157,7 +2155,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" កំពុង​ជួសជុល​កម្មវិធី​រុករក​តាម​អ៊ីនធឺណិតនេះ</translation>
 <translation id="4014432863917027322">ជួសជុល "<ph name="EXTENSION_NAME" />"?</translation>
 <translation id="4015163439792426608">មាន​កម្មវិធី​បន្ថែម​ដែរទេ? <ph name="BEGIN_LINK" />គ្រប់គ្រង​កម្មវិធីបន្ថែម​របស់អ្នក<ph name="END_LINK" />នៅក្នុង​កន្លែងតែមួយ​យ៉ាងងាយស្រួល​។</translation>
-<translation id="4020106588733303597">អូ៎!  ប្រព័ន្ធនេះមិនអាច​ផ្ទុកអាជ្ញាបណ្ណដែល​ផ្ដល់ជូនបានទេ។</translation>
 <translation id="4020327272915390518">ម៉ឺនុយជម្រើស</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">បន្ថែមទៅក្នុងថតឯកសារ</translation>
@@ -2660,7 +2657,6 @@
 <translation id="4823484602432206655">អាន និងប្តូរអ្នកប្រើប្រាស់ និងការកំណត់ឧបករណ៍</translation>
 <translation id="4824958205181053313">បោះបង់​ការ​ធ្វើ​សម​កាលកម្ម?</translation>
 <translation id="4827675678516992122">មិន​អាចភ្ជាប់​បានទេ</translation>
-<translation id="4828937774870308359">អូស្រ្តាលី</translation>
 <translation id="4829768588131278040">កំណត់កូដ PIN</translation>
 <translation id="4830502475412647084">កំពុងដំឡើងកំណែថ្មីប្រព័ន្ធ OS</translation>
 <translation id="4830573902900904548"><ph name="DEVICE_TYPE" /> របស់អ្នកមិនអាចភ្ជាប់អ៊ីនធឺណិតដោយប្រើ <ph name="NETWORK_NAME" /> បានទេ។ សូមជ្រើសរើសបណ្តាញផ្សេងទៀត។ <ph name="LEARN_MORE_LINK_START" />ស្វែងយល់បន្ថែម<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2759,7 +2755,6 @@
 <translation id="4953689047182316270">ឆ្លើយតប​នឹងព្រឹត្តិការណ៍​ភាពងាយស្រួល</translation>
 <translation id="4953808748584563296">រូបតំណាងពណ៌ទឹកក្រូចលំនាំដើម</translation>
 <translation id="4955710816792587366">ជ្រើសរើសកូដ PIN របស់អ្នក</translation>
-<translation id="4955814292505481804">ប្រចាំឆ្នាំ</translation>
 <translation id="4959262764292427323">ពាក្យសម្ងាត់​ត្រូវបាន​រក្សាទុក​នៅក្នុង​គណនី Google របស់អ្នក ដើម្បី​អាចឱ្យអ្នក​ប្រើវានៅ​លើឧបករណ៍​ទាំងឡាយ</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">អ្នកគ្រប់គ្រង​របស់អ្នក​បានដំឡើង​កម្មវិធីនេះ។</translation>
@@ -3242,7 +3237,6 @@
 <translation id="5659593005791499971">អ៊ីម៉េល</translation>
 <translation id="5659833766619490117">មិនអាច​បកប្រែ​ទំព័រនេះ​បានទេ</translation>
 <translation id="5660204307954428567">ផ្គូផ្គងជាមួយ <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">អចិន្ត្រៃយ៍</translation>
 <translation id="5667546120811588575">កំពុង​រៀបចំ Google Play...</translation>
 <translation id="5669267381087807207">កំពុងធ្វើសកម្មភាព</translation>
 <translation id="5669691691057771421">បញ្ចូលកូដ PIN ថ្មី</translation>
@@ -3344,7 +3338,6 @@
 <translation id="5815645614496570556">អាសយដ្ឋាន X.400</translation>
 <translation id="5816434091619127343">ការផ្លាស់ប្ដូរ​ម៉ាស៊ីន​បោះពុម្ព​ដែលបានស្នើ​នឹងធ្វើ​ឱ្យម៉ាស៊ីន​បោះពុម្ព​មិនអាច​ប្រើបាន។</translation>
 <translation id="5817918615728894473">ផ្គូផ្គង</translation>
-<translation id="5819762621475381970">- ប្លង់​បន្ទប់​របស់អ្នក</translation>
 <translation id="5821565227679781414">បង្កើតផ្លូវកាត់</translation>
 <translation id="5825412242012995131">បើក (បានណែនាំ)</translation>
 <translation id="5826395379250998812">ភ្ជាប់ <ph name="DEVICE_TYPE" /> ជាមួយ​ទូរសព្ទរបស់អ្នក។ <ph name="LINK_BEGIN" />ស្វែងយល់​បន្ថែម<ph name="LINK_END" /></translation>
@@ -3977,7 +3970,6 @@
 <translation id="674632704103926902">បើកដំណើរការការអូសប៉ះ</translation>
 <translation id="6748217015615267851">កម្មវិធី​បំប្លែង៖ <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">អ្នកអាចបន្តបាន ប៉ុន្តែមានតែទិន្នន័យ និងការកំណត់ដែលអ្នកបានធ្វើសមកាលកម្មប៉ុណ្ណោះនឹងត្រូវស្តារឡើងវិញ។ រាល់ទិន្នន័យមូលដ្ឋានទាំងអស់នឹងបាត់បង់។</translation>
-<translation id="6748775883310276718">ម៉ាស៊ីនកម្មវិធីដែលមានមុខងារតែមួយមុខ</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (អនាមិក)</translation>
 <translation id="6757101664402245801">បានចម្លង URL</translation>
 <translation id="6758056191028427665">អនុញ្ញាតឱ្យយើងដឹងថា ការបំពេញការងាររបស់យើងដូចម្ដេចដែរ។</translation>
@@ -4949,7 +4941,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{មិនមាន​ខូគី​ភាគី​ទីបីទេ}=1{បាន​ទប់ស្កាត់ខូគី​ភាគី​ទីបី 1}other{បាន​ទប់ស្កាត់ខូគី​ភាគី​ទីបី #}}</translation>
 <translation id="810875025413331850">រក​មិនឃើញ​ឧបករណ៍​ដែលនៅជិត​ទេ។</translation>
 <translation id="8111155949205007504">ចែករំលែកពាក្យសម្ងាត់នេះជាមួយ iPhone របស់អ្នក</translation>
-<translation id="8113043281354018522">ជ្រើសរើសប្រភេទ​អាជ្ញាបណ្ណ</translation>
 <translation id="8114875720387900039">បំបែកផ្តេក</translation>
 <translation id="8116972784401310538">កម្មវិធីគ្រប់គ្រងចំណាំ</translation>
 <translation id="8117620576188476503">គ្រប់គ្រង​ការភ្ជាប់ កំណែថ្មី និង​ការកំណត់​ដោយប្រើ​ផ្ទាំង​ស្ថានភាព។ ដើម្បីចូល​មកកាន់ទីនេះ​ដោយប្រើ​ក្ដារចុច សូមចុច Alt + Shift + S ។</translation>
@@ -5665,7 +5656,6 @@
 <translation id="9121814364785106365">បើកជាផ្ទាំងដែលបានដៅ</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> ត្រូវបានផ្អាក</translation>
 <translation id="9124003689441359348">ពាក្យសម្ងាត់​ដែល​បានរក្សាទុក​នឹង​បង្ហាញ​នៅទីនេះ</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (នៅសល់ <ph name="LICENSE_COUNT" />។)</translation>
 <translation id="9128317794749765148">មិនអាចបញ្ចប់ការរៀបចំ​​បានទេ</translation>
 <translation id="9128870381267983090">ភ្ជាប់ទៅបណ្តាញ</translation>
 <translation id="9130015405878219958">របៀបគ្មានសុពលភាពត្រូវបានបញ្ចូល។</translation>
diff --git a/chrome/app/resources/generated_resources_kn.xtb b/chrome/app/resources/generated_resources_kn.xtb
index 0267dc6..2e28fa6 100644
--- a/chrome/app/resources/generated_resources_kn.xtb
+++ b/chrome/app/resources/generated_resources_kn.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">ಕಸ್ಟಮ್</translation>
 <translation id="1178581264944972037">ವಿರಾಮ</translation>
 <translation id="117916940443676133">ನಿಮ್ಮ ಸುರಕ್ಷತಾ ಕೀಯನ್ನು ಪಿನ್‌ ಮೂಲಕ ಸಂರಕ್ಷಿಸಿಲ್ಲ. ಸೈನ್-ಇನ್ ಡೇಟಾವನ್ನು ನಿರ್ವಹಿಸಲು, ಮೊದಲು ಪಿನ್ ರಚಿಸಿ.</translation>
-<translation id="118069123878619799">- ನಿಮ್ಮ ಭೌತಿಕ ಗುಣಲಕ್ಷಣಗಳು, ಉದಾ. ಎತ್ತರ ಇತ್ಯಾದಿ</translation>
 <translation id="1181037720776840403">ತೆಗೆದುಹಾಕು</translation>
 <translation id="1183237619868651138"><ph name="EXTERNAL_CRX_FILE" /> ಅನ್ನು ಸ್ಥಳೀಯ ಕ್ಯಾಷ್‌ನಲ್ಲಿ ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲಾಗುವುದಿಲ್ಲ.</translation>
 <translation id="1185924365081634987">ಈ ನೆಟ್‌ವರ್ಕ್‌ ದೋಷವನ್ನು ಬಗೆಹರಿಸಲು <ph name="GUEST_SIGNIN_LINK_START" />ಅತಿಥಿಯಾಗಿ ಬ್ರೌಸ್ ಮಾಡುವುದನ್ನು<ph name="GUEST_SIGNIN_LINK_END" /> ಕೂಡಾ ನೀವು ಪ್ರಯತ್ನಿಸಬಹುದು.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381"><ph name="LOAD_STATE_PARAMETER" /> ಗಾಗಿ ನಿರೀಕ್ಷಿಸಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> ಇತರ ಲಭ್ಯವಿರುವ ಸಾಧನಗಳು.</translation>
 <translation id="1495677929897281669">ಟ್ಯಾಬ್‌ಗೆ ಮರಳಿ</translation>
+<translation id="1499271269825557605">ನಿಮಗೆ ವಿಸ್ತರಣೆಯೊಂದನ್ನು ಗುರುತಿಸಲು ಸಾಧ್ಯವಾಗದಿದ್ದರೆ, ಅಥವಾ ನಿಮ್ಮ ಬ್ರೌಸರ್ ನಿರೀಕ್ಷೆಯಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸದಿದ್ದರೆ, ನೀವು ವಿಸ್ತರಣೆಗಳನ್ನು ಇಲ್ಲಿ ಆಫ್ ಮಾಡಬಹುದು ಅಥವಾ ಕಸ್ಟಮೈಸ್ ಮಾಡಬಹುದು.</translation>
 <translation id="1500297251995790841">ಅಪರಿಚಿತ ಸಾಧನ [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">ಬಹು ಸೈನ್-ಇನ್ ಸೆಷನ್‌ನಲ್ಲಿ ಈ ಮಾಲೀಕರ ಖಾತೆಯೇ ಮೊದಲ ಸೈನ್-ಇನ್ ಮಾಡಿದ ಖಾತೆ ಆಗಿರಬೇಕು.</translation>
 <translation id="150411034776756821"><ph name="SITE" /> ತೆಗೆದುಹಾಕಿ</translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">ನಿಮ್ಮ ಕ್ಯಾಮೆರಾವನ್ನು ಪ್ರವೇಶಿಸುವುದರಿಂದ ಈ ಪುಟವನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ.</translation>
 <translation id="1507246803636407672">&amp;ತ್ಯಜಿಸು</translation>
 <translation id="1508491105858779599">ಸಾಧನವನ್ನು ಅನ್‌ಲಾಕ್ ಮಾಡಲು ನಿಮ್ಮ ಬೆರಳನ್ನು ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಸೆನ್ಸರ್‌‌ ಮೇಲೆ ಇರಿಸಿ.</translation>
+<translation id="1508575541972276599">ಪ್ರಸ್ತುತ ಆವೃತ್ತಿ Debian 9 (Stretch) ಆಗಿದೆ</translation>
 <translation id="1509281256533087115">USB ಮೂಲಕ ಯಾವುದೇ <ph name="DEVICE_NAME_AND_VENDOR" /> ಪ್ರವೇಶಿಸಿ</translation>
 <translation id="150962533380566081">ಅಮಾನ್ಯ PUK.</translation>
 <translation id="1510030919967934016">ನಿಮ್ಮ ಸ್ಥಳವನ್ನು ಗಮನವಿರಿಸದಂತೆ ಈ ಪುಟವನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ.</translation>
@@ -435,6 +436,7 @@
 <translation id="1601560923496285236">ಅನ್ವಯಿಸು</translation>
 <translation id="1603914832182249871">(ಅದೃಶ್ಯ)</translation>
 <translation id="1604432177629086300">ಪ್ರಿಂಟ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ಪ್ರಿಂಟರ್ ಅನ್ನು ಪರಿಶೀಲಿಸಿ ಮತ್ತು ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: ಪಾಸ್‌ವರ್ಡ್ ಸಿಂಕ್ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿಲ್ಲ</translation>
 <translation id="1607139524282324606">ಪ್ರವೇಶವನ್ನು ತೆರವುಗೊಳಿಸಿ</translation>
 <translation id="1608626060424371292">ಈ ಬಳಕೆದಾರರನ್ನು ತೆಗೆದುಹಾಕಿ</translation>
 <translation id="1608668830839595724">ಆಯ್ದ ಐಟಂಗಳಿಗಾಗಿ ಹೆಚ್ಚಿನ ಕ್ರಿಯೆಗಳು</translation>
@@ -561,6 +563,8 @@
 <translation id="177336675152937177">ಹೋಸ್ಟ್ ಮಾಡಿರುವ ಅಪ್ಲಿಕೇಶನ್ ಡೇಟಾ</translation>
 <translation id="1776712937009046120">ಬಳಕೆದಾರರನ್ನು ಸೇರಿಸಿ</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">ಈ ಸಾಧನವು <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ಮೂಲಕ ನಿರ್ವಹಿಸಲ್ಪಡುತ್ತಿದೆ.
+    ನಿಮ್ಮ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ಖಾತೆಗೆ ಸೈನ್ ಇನ್ ಮಾಡುವುದನ್ನು ಮುಂದುವರಿಸಲು "ಮುಂದಿನದು" ಕ್ಲಿಕ್ ಮಾಡಿ.</translation>
 <translation id="1779652936965200207">ದಯವಿಟ್ಟು "<ph name="DEVICE_NAME" />" ರಲ್ಲಿ ಈ ಪಾಸ್‌ಕೀಯನ್ನು ನಮೂದಿಸಿ:</translation>
 <translation id="1780152987505130652">ಗುಂಪನ್ನು ಮುಚ್ಚಿರಿ</translation>
 <translation id="1781291988450150470">ಸದ್ಯದ ಪಿನ್‌</translation>
@@ -748,6 +752,7 @@
 <translation id="2048653237708779538">ಯಾವುದೇ ಕ್ರಿಯೆ ಲಭ್ಯವಿಲ್ಲ</translation>
 <translation id="2050339315714019657">ಪೋರ್ಟ್ರೇಟ್</translation>
 <translation id="2053312383184521053">ತಟಸ್ಥ ಸ್ಥಿತಿಯ ಡೇಟಾ</translation>
+<translation id="2055585478631012616">ತೆರೆದ ಟ್ಯಾಬ್‌ಗಳಲ್ಲೂ ಸೇರಿದಂತೆ, ಈ ಸೈಟ್‌ಗಳಿಂದ ನಿಮ್ಮನ್ನು ಸೈನ್ ಔಟ್ ಮಾಡಲಾಗುತ್ತದೆ</translation>
 <translation id="205560151218727633">Google ಸಹಾಯಕದ ಲೋಗೋ</translation>
 <translation id="2058456167109518507">ಸಾಧನ ಪತ್ತೆಯಾಗಿದೆ</translation>
 <translation id="2059913712424898428">ಸಮಯ ವಲಯ</translation>
@@ -763,6 +768,7 @@
 <translation id="2079545284768500474">ರದ್ದುಮಾಡಿ</translation>
 <translation id="2080070583977670716">ಇನ್ನಷ್ಟು ಸೆಟ್ಟಿಂಗ್‌ಗಳು</translation>
 <translation id="2087822576218954668">ಮುದ್ರಿಸು: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN ನೆಟ್‌ವರ್ಕ್</translation>
 <translation id="2089566709556890888">Google Chrome ಮೂಲಕ ಸುರಕ್ಷಿತವಾಗಿ ಬ್ರೌಸ್ ಮಾಡಿ</translation>
 <translation id="2089795179672254991">ಕ್ಲಿಪ್‌ಬೋರ್ಡ್‌ಗೆ ನಕಲಿಸಿರುವ ಪಠ್ಯ ಮತ್ತು ಚಿತ್ರಗಳನ್ನು ನೋಡಲು ಸೈಟ್ ಬಯಸಿದರೆ, ಅನುಮತಿ ಕೇಳಿ (ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ)</translation>
 <translation id="2090165459409185032">ನಿಮ್ಮ ಖಾತೆಯ ಮಾಹಿತಿಯನ್ನು ಮರುಪಡೆಯಲು, ಇಲ್ಲಿಗೆ ಹೋಗಿ: google.com/accounts/recovery</translation>
@@ -986,6 +992,7 @@
 <translation id="2379232090534544565">ಆಡಿಯೋ ಮತ್ತು ವೀಡಿಯೊ ಇನ್‌ಪುಟ್ ಅನ್ನು ಒಂದು ಸೈಟ್ ಪ್ರವೇಶಿಸುತ್ತಿದೆ</translation>
 <translation id="2379281330731083556">ಸಿಸ್ಟಂ ಸಂವಾದವನ್ನು ಬಳಸಿ ಮುದ್ರಿಸಿ... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">ಕಳುಹಿಸುವ ಮೊದಲು ಕೇಳಿ (ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ)</translation>
+<translation id="2382818385048255866">ನಿಮ್ಮ ವಿಸ್ತರಣೆಗಳನ್ನು ಪರಿಶೀಲಿಸಿ</translation>
 <translation id="2384436799579181135">ದೋಷ ಸಂಭವಿಸಿದೆ. ನಿಮ್ಮ ಪ್ರಿಂಟರ್ ಪರಿಶೀಲಿಸಿ ಮತ್ತು ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="2387458720915042159">ಪ್ರಾಕ್ಸಿ ಪ್ರಕಾರ ಸಂಪರ್ಕ</translation>
 <translation id="2391419135980381625">ರೂಢಿಯಲ್ಲಿರುವ ಫಾಂಟ್</translation>
@@ -1036,6 +1043,7 @@
 <translation id="2462724976360937186">ಪ್ರಮಾಣದಪತ್ರದ ಪ್ರಾಧಿಕಾರ ಕೀ ID</translation>
 <translation id="2462752602710430187"><ph name="PRINTER_NAME" /> ಸೇರಿಸಲಾಗಿದೆ</translation>
 <translation id="2464089476039395325">HTTP ಪ್ರಾಕ್ಸಿ</translation>
+<translation id="2467267713099745100"><ph name="NETWORK_TYPE" /> ನೆಟ್‌ವರ್ಕ್, ಆಫ್</translation>
 <translation id="2468205691404969808">ನೀವು ಆ ಪುಟಗಳಿಗೆ ಭೇಟಿ ನೀಡದಿದ್ದರೂ, ನಿಮ್ಮ ಆದ್ಯತೆಗಳನ್ನು ನೆನಪಿಟ್ಟುಕೊಳ್ಳಲು ಕುಕೀಗಳನ್ನು ಬಳಸುತ್ತದೆ</translation>
 <translation id="2468402215065996499">ತಮಗೋಟ್ಚಿ</translation>
 <translation id="2469259292033957819">ನೀವು ಯಾವುದೇ ಪ್ರಿಂಟರ್‌ಗಳನ್ನು ಉಳಿಸಿಲ್ಲ.</translation>
@@ -1290,6 +1298,7 @@
 <translation id="2800760947029405028">ಒಂದು ಚಿತ್ರವನ್ನು ಅಪ್‌ಲೋಡ್ ಮಾಡಿ</translation>
 <translation id="2803375539583399270">ಪಿನ್ ನಮೂದಿಸಿ</translation>
 <translation id="2804043232879091219">ಪರ್ಯಾಯ ಬ್ರೌಸರ್‌‌ ಅನ್ನು ತೆರೆಯಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ</translation>
+<translation id="2804667941345577550">ತೆರೆದ ಟ್ಯಾಬ್‌ಗಳಲ್ಲೂ ಸೇರಿದಂತೆ, ಈ ಸೈಟ್‌ನಿಂದ ನಿಮ್ಮನ್ನು ಸೈನ್ ಔಟ್ ಮಾಡಲಾಗುತ್ತದೆ</translation>
 <translation id="2804680522274557040">ಕ್ಯಾಮರಾವನ್ನು ಆಫ್‌ ಮಾಡಲಾಗಿದೆ</translation>
 <translation id="2805646850212350655">Microsoft Encrypting File System</translation>
 <translation id="2805756323405976993">ಆಪ್ಸ್‌‌</translation>
@@ -1297,6 +1306,7 @@
 <translation id="2806891468525657116">ಶಾರ್ಟ್‌ಕಟ್ ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ</translation>
 <translation id="2807517655263062534">ನೀವು ಡೌನ್‌ಲೋಡ್ ಮಾಡಿದ ಫೈಲ್‌ಗಳು ಇಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತವೆ</translation>
 <translation id="2809586584051668049">ಮತ್ತು <ph name="NUMBER_ADDITIONAL_DISABLED" /> ಇನ್ನಷ್ಟು</translation>
+<translation id="2810390687497823527">ನಿಮಗೆ ವಿಸ್ತರಣೆಯೊಂದನ್ನು ಗುರುತಿಸಲು ಸಾಧ್ಯವಾಗದಿದ್ದರೆ, ಅಥವಾ ನಿಮ್ಮ ಬ್ರೌಸರ್ ನಿರೀಕ್ಷೆಯಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸದಿದ್ದರೆ, ನೀವು ವಿಸ್ತರಣೆಗಳನ್ನು ಇಲ್ಲಿ ಆಫ್ ಮಾಡಬಹುದು ಅಥವಾ ಕಸ್ಟಮೈಸ್ ಮಾಡಬಹುದು.</translation>
 <translation id="2812049959647166806">ಥಂಡರ್‌ಬೋಲ್ಟ್‌ಗೆ ಬೆಂಬಲವಿಲ್ಲ</translation>
 <translation id="2812944337881233323">ಸೈನ್ ಔಟ್ ಮಾಡಲು ಹಾಗೂ ಮರಳಿ ಸೈನ್ ಇನ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿ</translation>
 <translation id="2812989263793994277">ಯಾವುದೇ ಚಿತ್ರಗಳನ್ನು ತೋರಿಸದಿರಿ</translation>
@@ -1336,6 +1346,7 @@
 <translation id="2861941300086904918">ಮೂಲ ಕ್ಲೈಂಟ್ ಭದ್ರತೆ ನಿರ್ವಾಹಕ</translation>
 <translation id="2864601841139725659">ನಿಮ್ಮ ಪ್ರೊಫೈಲ್ ಚಿತ್ರವನ್ನು ಹೊಂದಿಸಿ</translation>
 <translation id="2865919525181940183">ಪ್ರೋಗ್ರಾಂಗಳ ಸ್ಕ್ರೀನ್‌ಶಾಟ್ ಅನ್ನು ಪ್ರಸ್ತುತ ಸ್ಕ್ರೀನ್‌ ಮೇಲೆ ತೋರಿಸಲಾಗಿದೆ</translation>
+<translation id="286674810810214575">ಪವರ್ ಸೋರ್ಸ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="2867768963760577682">ಪಿನ್ ಮಾಡಿದ ಟ್ಯಾಬ್ ಅಂತೆ ತೆರೆಯಿರಿ</translation>
 <translation id="2868746137289129307">ಈ ವಿಸ್ತರಣೆಯ ಅವಧಿಯು ಮುಕ್ತಾಯಗೊಂಡಿದೆ ಮತ್ತು ಎಂಟರ್‌ಪ್ರೈಸ್ ನೀತಿಯಿಂದ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ. ಹೊಸ ಆವೃತ್ತಿಯು ಲಭ್ಯವಿರುವಾಗ ಇದನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಲಭ್ಯವಾಗುವಂತೆ ಮಾಡಲಾಗುತ್ತದೆ.</translation>
 <translation id="2870560284913253234">ಸೈಟ್</translation>
@@ -1413,6 +1424,7 @@
 <translation id="2972581237482394796">&amp;ಮತ್ತೆಮಾಡು</translation>
 <translation id="2973324205039581528">ಸೈಟ್‌ ಅನ್ನು ಮ್ಯೂಟ್‌ ಮಾಡಿ</translation>
 <translation id="2977480621796371840">ಗುಂಪಿನಿಂದ ತೆಗೆದುಹಾಕಿ</translation>
+<translation id="2979520980928493164">ಸದೃಢ, ಸಂತೃಪ್ತ Chrome</translation>
 <translation id="2979639724566107830">ಹೊಸ ವಿಂಡೋದಲ್ಲಿ ತೆರೆಯಿರಿ</translation>
 <translation id="2981113813906970160">ದೊಡ್ಡ ಮೌಸ್ ಕರ್ಸರ್ ತೋರಿಸು</translation>
 <translation id="2982970937345031">ಅನಾಮಧೇಯವಾಗಿ ವರದಿ ಮಾಡಿ</translation>
@@ -1519,6 +1531,7 @@
 <translation id="3143515551205905069">ಸಿಂಕ್ ಮಾಡುವಿಕೆಯನ್ನು ರದ್ದುಪಡಿಸಿ</translation>
 <translation id="3143754809889689516">ಆರಂಭದಿಂದ ಪ್ಲೇ ಮಾಡಿ</translation>
 <translation id="3144647712221361880">ಲಿಂಕ್ ಅನ್ನು ಹೀಗೆ ತೆರೆಯಿರಿ</translation>
+<translation id="3145187901750964977">ವರ್ಚುವಲ್ ಯಂತ್ರವನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ಪುನಃ ಪ್ರಯತ್ನಿಸಿ, ಅಥವಾ ನಿಮ್ಮ ಸಂಸ್ಥೆಯ ಸಾಧನ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ. ದೋಷ ಕೋಡ್: <ph name="ERROR_CODE" /></translation>
 <translation id="3149477159749171726">ಆವೃತ್ತಿ:
     <ph name="LINUX_VERSION" />
 
@@ -1557,6 +1570,7 @@
 <translation id="3192947282887913208">ಆಡಿಯೋ ಫೈಲ್‌ಗಳು</translation>
 <translation id="3194737229810486521">ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಡೇಟಾವನ್ನು ಶಾಶ್ವತವಾಗಿ ಸಂಗ್ರಹಣೆ ಮಾಡಲು <ph name="URL" /> ಬಯಸುತ್ತದೆ</translation>
 <translation id="3199127022143353223">ಸರ್ವರ್‌ಗಳು</translation>
+<translation id="3201306578844503970">ನೆಟ್‌ವರ್ಕ್ ದೋಷ ಒಂದರಿಂದಾಗಿ, ವರ್ಚುವಲ್ ಯಂತ್ರವನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ಪುನಃ ಪ್ರಯತ್ನಿಸಿ, ಅಥವಾ ನಿಮ್ಮ ಸಂಸ್ಥೆಯ ಸಾಧನ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ. ದೋಷ ಕೋಡ್: <ph name="ERROR_CODE" /></translation>
 <translation id="3201422919974259695">ಲಭ್ಯವಿರುವ USB ಸಾಧನಗಳು ಇಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತವೆ.</translation>
 <translation id="3202131003361292969">ಪಾಥ್</translation>
 <translation id="3202173864863109533">ಈ ಟ್ಯಾಬ್‌ನ ಆಡಿಯೋವನ್ನು ಮ್ಯೂಟ್ ಮಾಡಲಾಗುತ್ತಿದೆ.</translation>
@@ -1893,7 +1907,6 @@
 <translation id="3678156199662914018">ವಿಸ್ತರಣೆ: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">ನಿಮ್ಮ ಪ್ರತಿಕ್ರಿಯೆಗೆ ಧನ್ಯವಾದಗಳು. ನೀವು ಇದೀಗ ಆಫ್‌ಲೈನ್‌ನಲ್ಲಿರುವಿರಿ ಮತ್ತು ನಿಮ್ಮ ವರದಿಯನ್ನು ನಂತರ ಕಳುಹಿಸಲಾಗುತ್ತದೆ.</translation>
 <translation id="3682824389861648626">ಚಲನೆಯ ಮಿತಿ</translation>
-<translation id="3683023058278427253">ನಿಮ್ಮ ಡೊಮೇನ್‌ಗಾಗಿ ನಾವು ಬಹು ಪರವಾನಗಿ ಪ್ರಕಾರಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಿದ್ದೇವೆ. ಮುಂದುವರಿಸಲು ಒಂದನ್ನು ಆರಿಸಿ.</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> ಪರದೆ ಹಂಚಿಕೆ ವಿನಂತಿ</translation>
 <translation id="368789413795732264">ಫೈಲ್ ಅನ್ನು ರೈಟ್‌ ಮಾಡಲು ಪ್ರಯತ್ನಿಸುತ್ತಿರುವಾಗ ಒಂದು ದೋಷ ಕಂಡುಬಂದಿತ್ತು. <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">ಅಪ್ಲಿಕೇಶನ್‌ನಲ್ಲಿ ನೀವು ತೆರೆಯುವಂತಹ ಫೈಲ್‌ಗಳು ಮತ್ತು ಫೋಲ್ಡರ್‌ಗಳಲ್ಲಿ ಬರೆಯಿರಿ</translation>
@@ -2067,6 +2080,7 @@
 <translation id="389589731200570180">ಅತಿಥಿಗಳೊಂದಿಗೆ ಹಂಚಿಕೊಳ್ಳಿ</translation>
 <translation id="389901847090970821">ಕೀಬೋರ್ಡ್ ಆಯ್ಕೆ ಮಾಡಿ</translation>
 <translation id="3899879303189199559">ಒಂದು ವರ್ಷ‌ಕ್ಕಿಂತಲೂ ಹೆಚ್ಚು ಕಾಲ ಆಫ್‌ಲೈನ್</translation>
+<translation id="3900789207771372462">ಕೆಲವು ವಿಸ್ತರಣೆಗಳು ವೈಯಕ್ತಿಕ ಮಾಹಿತಿಯೂ ಸೇರಿದಂತೆ, ನಿಮ್ಮ ಬ್ರೌಸಿಂಗ್ ಚಟುವಟಿಕೆಯನ್ನು ನೋಡಬಹುದು.</translation>
 <translation id="3900966090527141178">ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಎಕ್ಸ್‌ಪೋರ್ಟ್ ಮಾಡಿ</translation>
 <translation id="3901991538546252627"><ph name="NAME" /> ಗೆ ಸಂಪರ್ಕಿಸಲಾಗುತ್ತಿದೆ</translation>
 <translation id="3905761538810670789">ಅಪ್ಲಿಕೇಶನ್ ಸರಿಪಡಿಸು</translation>
@@ -2157,7 +2171,6 @@
 <translation id="4013132157686828973">ಈ ಬ್ರೌಸರ್‌ ಅನ್ನು "<ph name="CLIENT_NAME" />" ಡೀಬಗ್ ಮಾಡುತ್ತಿದೆ</translation>
 <translation id="4014432863917027322">"<ph name="EXTENSION_NAME" />" ಸರಿಪಡಿಸಬೇಕೆ?</translation>
 <translation id="4015163439792426608">ನೀವು ವಿಸ್ತರಣೆಗಳನ್ನು ಬಳಸುತ್ತಿರುವಿರಾ? ಒಂದೇ ಸ್ಥಳದಲ್ಲಿ ಸುಲಭವಾಗಿ <ph name="BEGIN_LINK" />ನಿಮ್ಮ ವಿಸ್ತರಣೆಗಳನ್ನು ನಿರ್ವಹಿಸಿ<ph name="END_LINK" />.</translation>
-<translation id="4020106588733303597">ಓಹ್! ಲಭ್ಯವಿರುವ ಪರವಾನಗಿಗಳನ್ನು ಲೋಡ್ ಮಾಡಲು ಸಿಸ್ಟಮ್ ವಿಫಲಗೊಂಡಿದೆ.</translation>
 <translation id="4020327272915390518">ಆಯ್ಕೆಗಳ ಮೆನು</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">ನಿಘಂಟಿಗೆ &amp;ಸೇರಿಸಿ</translation>
@@ -2195,6 +2208,7 @@
 <translation id="407520071244661467">ಮಾಪಕ</translation>
 <translation id="4075639477629295004"><ph name="FILE_NAME" /> ಬಿತ್ತರಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ.</translation>
 <translation id="4077917118009885966">ಈ ಸೈಟ್‌ನಲ್ಲಿ ಜಾಹೀರಾತುಗಳನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ</translation>
+<translation id="4077919383365622693"><ph name="SITE" /> ವೆಬ್‌ಸೈಟ್‌ ಮೂಲಕ ಸಂಗ್ರಹಿಸಲಾದ ಎಲ್ಲಾ ಡೇಟಾ ಮತ್ತು ಕುಕೀಗಳನ್ನು ತೆರವುಗೊಳಿಸಲಾಗುತ್ತದೆ.</translation>
 <translation id="4079140982534148664">ವರ್ಧಿತ ಕಾಗುಣಿತ ಪರೀಕ್ಷೆಯನ್ನು ಬಳಸಿ</translation>
 <translation id="4081242589061676262">ಫೈಲ್‌ ಬಿತ್ತರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.</translation>
 <translation id="4084682180776658562">ಬುಕ್‌ಮಾರ್ಕ್</translation>
@@ -2269,6 +2283,7 @@
 <translation id="4181841719683918333">ಭಾಷೆಗಳು</translation>
 <translation id="4184885522552335684">ಡಿಸ್‌ಪ್ಲೇಯನ್ನು ಸರಿಸಲು ಡ್ರ್ಯಾಗ್ ಮಾಡಿ</translation>
 <translation id="4194570336751258953">ಕ್ಲಿಕ್ ಮಾಡಲು ಟ್ಯಾಪ್ ಸಕ್ರಿಯಗೊಳಿಸಿ</translation>
+<translation id="4194595472342532425">ಕಾನ್ಫಿಗರೇಶನ್ ಸಮಸ್ಯೆ ಒಂದರಿಂದಾಗಿ, Plugin VM ಅನ್ನು ಸೆಟಪ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ನಿಮ್ಮ ಸಂಸ್ಥೆಯ ಸಾಧನ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ. ದೋಷ ಕೋಡ್: <ph name="ERROR_CODE" /></translation>
 <translation id="4195643157523330669">ಹೊಸ ಟ್ಯಾಬ್‌ನಲ್ಲಿ ತೆರೆಯಿರಿ</translation>
 <translation id="4195814663415092787">ಎಲ್ಲಿ ಬಿಡಲಾಗಿದೆಯೋ ಅಲ್ಲಿಂದಲೇ ಮುಂದುವರೆ</translation>
 <translation id="4198146608511578238">ನಿಮ್ಮ Google ಸಹಾಯಕದೊಂದಿಗೆ ಮಾತನಾಡಲು ಲಾಂಚರ್‌ ಐಕಾನ್‌ ಅನ್ನು ಇರಿಸಿಕೊಳ್ಳಿ</translation>
@@ -2492,6 +2507,7 @@
 <translation id="4549791035683739768">ನಿಮ್ಮ ಭದ್ರತಾ ಕೀಯಲ್ಲಿ ಯಾವುದೇ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್‌‍ಗಳನ್ನು ಸಂಗ್ರಹಣೆ ಮಾಡಿಲ್ಲ</translation>
 <translation id="4551763574344810652">ರದ್ದುಮಾಡಲು <ph name="MODIFIER_KEY_DESCRIPTION" /> ಅನ್ನು ಒತ್ತಿರಿ</translation>
 <translation id="4552089082226364758">ಫ್ಲ್ಯಾಶ್‌</translation>
+<translation id="4552759165874948005"><ph name="NETWORK_TYPE" /> ನೆಟ್‌ವರ್ಕ್, ಸಿಗ್ನಲ್ ಸಾಮರ್ಥ್ಯ <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">ಬಾಹ್ಯ ವಿಸ್ತರಣೆಯು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವುದಕ್ಕೆ ಹೋಲಿಸಿದರೆ ಅದೇ ಅಥವಾ ಕಡಿಮೆ ಆವೃತ್ತಿಯಲ್ಲಿದೆ</translation>
 <translation id="4555769855065597957">ನೆರಳು</translation>
 <translation id="4555863373929230635">ನಿಮ್ಮ Google ಖಾತೆಯಲ್ಲಿ ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಉಳಿಸಲು, ಸೈನ್ ಇನ್ ಮಾಡಿ ಮತ್ತು ಸಿಂಕ್ ಆನ್ ಮಾಡಿ.</translation>
@@ -2569,6 +2585,7 @@
 <translation id="4665446389743427678"><ph name="SITE" /> ವೆಬ್‌ಸೈಟ್‌ ಮೂಲಕ ಸಂಗ್ರಹಣೆ ಮಾಡಲಾದ ಎಲ್ಲಾ ಡೇಟಾವನ್ನು ಅಳಿಸಲಾಗುವುದು.</translation>
 <translation id="4668721319092543482"><ph name="PLUGIN_NAME" /> ಸಕ್ರಿಯಗೊಳಿಸಲು ಕ್ಲಿಕ್ ಮಾಡಿ</translation>
 <translation id="4672657274720418656">ಪುಟವನ್ನು ಶೋಧಿಸು</translation>
+<translation id="46733273239502219">ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲಾದ ಆ್ಯಪ್‌ಗಳಲ್ಲಿನ ಆಫ್‌ಲೈನ್ ಡೇಟಾವನ್ನು ಸಹ ತೆರವುಗೊಳಿಸಲಾಗುತ್ತದೆ</translation>
 <translation id="4673442866648850031">ಸ್ಟೈಲಸ್ ಅನ್ನು ತೆಗೆದುಹಾಕಿದಾಗ ಸ್ಟೈಲಸ್ ಪರಿಕರಗಳನ್ನು ತೆರೆಯಿರಿ</translation>
 <translation id="4677585247300749148">ಪ್ರವೇಶಿಸುವಿಕೆ ಈವೆಂಟ್‌ಗಳಿಗೆ <ph name="URL" /> ಪ್ರತಿಕ್ರಿಯಿಸಲು ಬಯಸುತ್ತದೆ</translation>
 <translation id="4677772697204437347">GPU ಮೆಮೊರಿ</translation>
@@ -2661,7 +2678,6 @@
 <translation id="4823484602432206655">ಬಳಕೆದಾರ ಮತ್ತು ಸಾಧನ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಓದಿ ಹಾಗೂ ಬದಲಾಯಿಸಿ</translation>
 <translation id="4824958205181053313">ಸಿಂಕ್ ರದ್ದುಗೊಳಿಸುವುದೇ?</translation>
 <translation id="4827675678516992122">ಸಂಪರ್ಕಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ</translation>
-<translation id="4828937774870308359">ಆಸ್ಟ್ರೇಲಿಯನ್</translation>
 <translation id="4829768588131278040">ಪಿನ್ ಹೊಂದಿಸು</translation>
 <translation id="4830502475412647084">OS ಅಪ್‌ಡೇಟ್‌ ಅನ್ನು ಇನ್‌ಸ್ಟಾಲ್‌ ಮಾಡಲಾಗುತ್ತಿದೆ</translation>
 <translation id="4830573902900904548"><ph name="NETWORK_NAME" /> ಬಳಸಿಕೊಂಡು ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ಇಂಟರ್ನೆಟ್‌ಗೆ ಸಂಪರ್ಕ ಹೊಂದಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ದಯವಿಟ್ಟು ಬೇರೊಂದು ನೆಟ್‌ವರ್ಕ್ ಆಯ್ಕೆಮಾಡಿ. <ph name="LEARN_MORE_LINK_START" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2702,6 +2718,7 @@
 <translation id="4876273079589074638">ಈ ಕ್ರ್ಯಾಶ್ ಕುರಿತು ತನಿಖೆ ನಡೆಸಿ, ಅದನ್ನು ಸರಿಪಡಿಸಲು ನಮ್ಮ ಎಂಜಿನಿಯರ್‌ಗಳಿಗೆ ಸಹಾಯ ಮಾಡಿ. ಸಾಧ್ಯವಿದ್ದರೆ, ನಿಖರವಾದ ಹೆಜ್ಜೆಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಿ. ಯಾವುದೇ ವಿವರವನ್ನು ತೀರಾ ಗೌಣವೆಂದು ನಿರ್ಲಕ್ಷಿಸಬೇಡಿ!</translation>
 <translation id="4876895919560854374">ಪರದೆಯನ್ನು ಲಾಕ್ ಮತ್ತು ಅನ್‌ಲಾಕ್ ಮಾಡಿ</translation>
 <translation id="4877276003880815204">ಅಂಶಗಳನ್ನು ಪರಿಶೀಲಿಸಿ</translation>
+<translation id="4878653975845355462">ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ಕಸ್ಟಮ್ ಹಿನ್ನೆಲೆಗಳನ್ನು ಆಫ್ ಮಾಡಿದ್ದಾರೆ</translation>
 <translation id="4879491255372875719">ಸ್ವಯಂಚಾಲಿತ (ಡಿಫಾಲ್ಟ್)</translation>
 <translation id="4880328057631981605">ಪ್ರವೇಶ ಬಿಂದುವಿನ ಹೆಸರು</translation>
 <translation id="4880827082731008257">ಹುಡುಕಾಟ ಇತಿಹಾಸ</translation>
@@ -2757,10 +2774,10 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" ಒಂದು ಸೀರಿಯಲ್ ಪೋರ್ಟ್‌ಗೆ ಸಂಪರ್ಕಿಸಲು ಬಯಸುತ್ತದೆ</translation>
 <translation id="4944310289250773232">ಈ ದೃಢೀಕರಣ ಸೇವೆಯನ್ನು <ph name="SAML_DOMAIN" /> ಮೂಲಕ ಹೋಸ್ಟ್ ಮಾಡಲಾಗಿದೆ</translation>
 <translation id="495170559598752135">ಕ್ರಿಯೆಗಳು</translation>
+<translation id="4952981627953231344">Plugin VM ಅನ್ನು ಈ ಸಾಧನದಲ್ಲಿ ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ. ನಿಮ್ಮ ಸಂಸ್ಥೆಯ ಸಾಧನ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ.</translation>
 <translation id="4953689047182316270">ಪ್ರವೇಶಿಸುವಿಕೆ ಈವೆಂಟ್‌ಗಳಿಗೆ ಪ್ರತಿಕ್ರಿಯಿಸಿ</translation>
 <translation id="4953808748584563296">ಡಿಫಾಲ್ಟ್ ಕೇಸರಿ ಅವತಾರ್</translation>
 <translation id="4955710816792587366">ನಿಮ್ಮ ಪಿನ್‌ ಆಯ್ಕೆಮಾಡಿ</translation>
-<translation id="4955814292505481804">ವಾರ್ಷಿಕ</translation>
 <translation id="4959262764292427323">ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ನಿಮ್ಮ Google ಖಾತೆಯಲ್ಲಿ ಉಳಿಸಲಾಗಿದೆ. ಇದರಿಂದ ನೀವು ಅವುಗಳನ್ನು ಯಾವುದೇ ಸಾಧನದಲ್ಲಿ ಬಳಸಬಹುದು.</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">ಈ ಆ್ಯಪ್ ಅನ್ನು ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿದ್ದಾರೆ.</translation>
@@ -3243,7 +3260,6 @@
 <translation id="5659593005791499971">ಇಮೇಲ್</translation>
 <translation id="5659833766619490117">ಈ ಪುಟವನ್ನು ಅನುವಾದಿಸಲಾಗುವುದಿಲ್ಲ</translation>
 <translation id="5660204307954428567"><ph name="DEVICE_NAME" /> ಸಾಧನದೊಂದಿಗೆ ಜೋಡಿಸಿ</translation>
-<translation id="5662477687021125631">ಶಾಶ್ವತ</translation>
 <translation id="5667546120811588575">Google Play ಅನ್ನು ಹೊಂದಿಸಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="5669267381087807207">ಸಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತಿದೆ</translation>
 <translation id="5669691691057771421">ಹೊಸ ಪಿನ್ ನಮೂದಿಸಿ</translation>
@@ -3259,6 +3275,7 @@
 <translation id="5687326903064479980">ಸಮಯ ವಲಯ</translation>
 <translation id="5689516760719285838">ಸ್ಥಳ</translation>
 <translation id="56907980372820799">ಲಿಂಕ್ ಡೇಟಾ</translation>
+<translation id="5691180005790455277"><ph name="SITE_GROUP_NAME" /> ಮತ್ತು ಅದರ ಅಡಿಯಲ್ಲಿ ಬರುವ ಯಾವುದೇ ಸೈಟ್‌ಗಳಿಂದ ಸಂಗ್ರಹಿಸಲಾದ ಎಲ್ಲಾ ಡೇಟಾ ಮತ್ತು ಕುಕೀಗಳನ್ನು ತೆರವುಗೊಳಿಸಲಾಗುತ್ತದೆ.</translation>
 <translation id="5691511426247308406">ಕುಟುಂಬ</translation>
 <translation id="5692183275898619210">ಪ್ರಿಂಟ್ ಮಾಡುವುದು ಪೂರ್ಣಗೊಂಡಿದೆ</translation>
 <translation id="5696143504434933566">"<ph name="EXTENSION_NAME" />" ನಿಂದ ದುರುಪಯೋಗವನ್ನು ವರದಿ ಮಾಡಿ</translation>
@@ -3345,7 +3362,6 @@
 <translation id="5815645614496570556">X.400 ವಿಳಾಸ</translation>
 <translation id="5816434091619127343">ವಿನಂತಿಸಿದ ಪ್ರಿಂಟರ್ ಬದಲಾವಣೆಗಳು ಪ್ರಿಂಟರ್ ಅನ್ನು ನಿಷ್ಪ್ರಯೋಜಕಗೊಳಿಸಬಹುದು.</translation>
 <translation id="5817918615728894473">ಜೋಡಿಸು</translation>
-<translation id="5819762621475381970">- ನಿಮ್ಮ ರೂಮ್‌ನ ವಿನ್ಯಾಸ</translation>
 <translation id="5821565227679781414">ಶಾರ್ಟ್‌ಕಟ್ ರಚಿಸಿ</translation>
 <translation id="5825412242012995131">ಆನ್‌ (ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ)</translation>
 <translation id="5826395379250998812">ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ಅನ್ನು, ನಿಮ್ಮ ಫೋನ್‌ಗೆ ಸಂಪರ್ಕಿಸಿ. <ph name="LINK_BEGIN" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="LINK_END" /></translation>
@@ -3481,6 +3497,7 @@
 <translation id="6007240208646052708">ನಿಮ್ಮ ಭಾಷೆಯಲ್ಲಿ ಧ್ವನಿ ಹುಡುಕಾಟ ಲಭ್ಯವಿಲ್ಲ.</translation>
 <translation id="6009781704028455063">ಅಂತರ್ನಿರ್ಮಿತ ಸೆನ್ಸರ್</translation>
 <translation id="6010869025736512584">ವೀಡಿಯೊ ಇನ್‌ಪುಟ್ ಪ್ರವೇಶಿಸಲಾಗುತ್ತಿದೆ</translation>
+<translation id="6011074160056912900">ಈಥರ್‌ನೆಟ್ ನೆಟ್‌ವರ್ಕ್</translation>
 <translation id="6011193465932186973">ಫಿಂಗರ್‌ಪ್ರಿಂಟ್</translation>
 <translation id="6011449291337289699">ಸೈಟ್ ಡೇಟಾವನ್ನು ತೆರವುಗೊಳಿಸಿ</translation>
 <translation id="6015266928248016057">ಅಮಾನ್ಯ PUK. ಬಾಕಿಯಿರುವ ಮರುಪ್ರಯತ್ನಗಳು: <ph name="RETRIES" />.</translation>
@@ -3517,6 +3534,7 @@
 <translation id="6053401458108962351">&amp;ಬ್ರೌಸಿಂಗ್ &amp;ಡೇಟಾವನ್ನು ತೆರವುಗೊಳಿಸಿ...</translation>
 <translation id="6055171183283175969">ನೀವು ನಮೂದಿಸಿದ ಪಾಸ್‌ವರ್ಡ್ ತಪ್ಪಾಗಿದೆ.</translation>
 <translation id="6055392876709372977">RSA ಎನ್‌ಕ್ರಿಪ್ಶನ್‌ನೊಂದಿಗೆ PKCS #1 SHA-256</translation>
+<translation id="6055907707645252013"><ph name="NETWORK_TYPE" /> ನೆಟ್‌ವರ್ಕ್, ಸಂಪರ್ಕಗೊಂಡಿಲ್ಲ</translation>
 <translation id="6056710589053485679">ಸಾಮಾನ್ಯ ಮರುಲೋಡ್</translation>
 <translation id="6057381398996433816">ಈ ಸೈಟ್ ಅನ್ನು ಚಲನೆ ಅಥವಾ ಲೈಟ್ ಸೆನ್ಸರ್‌ಗಳನ್ನು ಬಳಸದಂತೆ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ.</translation>
 <translation id="6058567592298841668">ಪ್ಲಗ್‌ಇನ್ ವರ್ಚುವಲ್ ಯಂತ್ರ: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3580,6 +3598,7 @@
 <translation id="6136114942382973861">ಡೌನ್‌ಲೋಡ್‌ಗಳ ಪಟ್ಟಿಯನ್ನು ಮುಚ್ಚಿ</translation>
 <translation id="6137767437444130246">ಬಳಕೆದಾರರ ಪ್ರಮಾಣಪತ್ರ</translation>
 <translation id="6138680304137685902">SHA-384 ಜೊತೆಗೆ X9.62 ECDSA ಸಹಿ</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, ನೆಟ್‌ವರ್ಕ್ ಇಲ್ಲ</translation>
 <translation id="6141988275892716286">ಡೌನ್‌ಲೋಡ್ ಅನ್ನು ದೃಢೀಕರಿಸಿ</translation>
 <translation id="6143186082490678276">ಸಹಾಯ ಪಡೆಯಿರಿ</translation>
 <translation id="6144938890088808325">Chromebooks ಸುಧಾರಿಸಲು ನಮಗೆ ಸಹಾಯಮಾಡಿ</translation>
@@ -3886,6 +3905,7 @@
 <translation id="6602956230557165253">ನ್ಯಾವಿಗೇಟ್ ಮಾಡಲು ಎಡ ಮತ್ತು ಬಲ ಬಾಣದ ಕೀಲಿಗಳನ್ನು ಬಳಸಿ.</translation>
 <translation id="6605847144724004692">ಇನ್ನು ಯಾವುದೇ ಬಳಕೆದಾರರಿಂದ ರೇಟ್‌ ಮಾಡಲಾಗಿಲ್ಲ.</translation>
 <translation id="6607831829715835317">ಹೆಚ್ಚಿನ ಪರಿ&amp;ಕರಗಳು</translation>
+<translation id="6611972847767394631">ನಿಮ್ಮ ಟ್ಯಾಬ್‌ಗಳನ್ನು ಇಲ್ಲಿ ಕಂಡುಕೊಳ್ಳಿ</translation>
 <translation id="6612358246767739896">ಸಂರಕ್ಷಿಸಿದ ವಿಷಯ</translation>
 <translation id="6615455863669487791">ನನಗೆ ತೋರಿಸಿ</translation>
 <translation id="6618097958368085618">ಪರವಾಗಿಲ್ಲ, ಇರಿಸಿ</translation>
@@ -3954,6 +3974,7 @@
 <translation id="6709133671862442373">ಸುದ್ದಿ</translation>
 <translation id="6709357832553498500"><ph name="EXTENSIONNAME" /> ಬಳಸುವ ಮೂಲಕ ಸಂಪರ್ಕಪಡಿಸು</translation>
 <translation id="6710213216561001401">ಹಿಂದೆ</translation>
+<translation id="6715803357256707211">ನಿಮ್ಮ Linux ಆ್ಯಪ್‌ ಅನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡುವಾಗ ದೋಷವೊಂದು ಸಂಭವಿಸಿದೆ. ವಿವರಗಳಿಗಾಗಿ ಅಧಿಸೂಚನೆಯ ಮೇಲೆ ಕ್ಲಿಕ್ ಮಾಡಿ.</translation>
 <translation id="6721678857435001674">ನಿಮ್ಮ ಸುರಕ್ಷತಾ ಕೀಯ ತಯಾರಕರ ಬ್ರಾಂಡ್ ಹೆಸರು ಮತ್ತು ಮಾದರಿಯನ್ನು ನೋಡಿ</translation>
 <translation id="6721972322305477112">&amp;ಫೈಲ್</translation>
 <translation id="672213144943476270">ಅಥಿತಿಯಾಗಿ ಬ್ರೌಸ್ ಮಾಡುವ ಮೊದಲು ದಯವಿಟ್ಟು ನಿಮ್ಮ ಪ್ರೊಫೈಲ್‌ ಅನ್ನು ಅನ್‌ಲಾಕ್‌ ಮಾಡಿ.</translation>
@@ -3978,7 +3999,6 @@
 <translation id="674632704103926902">ಟ್ಯಾಪ್ ಎಳೆಯುವಿಕೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸು</translation>
 <translation id="6748217015615267851">ರೆಂಡರರ್: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">ನೀವು ಮುಂದುವರಿಯಬಹುದು, ಆದರೆ ನಿಮ್ಮ ಸಿಂಕ್ ಮಾಡಲಾದ ಡೇಟಾ ಮತ್ತು ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಮಾತ್ರ ಮರುಸ್ಥಾಪಿಸಲಾಗುವುದು. ಎಲ್ಲಾ ಸ್ಥಳೀಯ ಡೇಟಾ ಕಳೆದು ಹೋಗುತ್ತದೆ.</translation>
-<translation id="6748775883310276718">ಸಿಂಗಲ್‌ ಆಪ್‌ ಕಿಯೊಸ್ಕ್‌</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (ಅದೃಶ್ಯ)</translation>
 <translation id="6757101664402245801">URL ನಕಲಿಸಲಾಗಿದೆ</translation>
 <translation id="6758056191028427665">ನಮ್ಮ ಕೆಲಸದ ಕುರಿತು ನಿಮ್ಮ ಅಭಿಪ್ರಾಯವನ್ನು ತಿಳಿಸಿ.</translation>
@@ -3988,6 +4008,7 @@
 <translation id="6769712124046837540">ಮುದ್ರಕ ಸೇರಿಸಲಾಗುತ್ತಿದೆ...</translation>
 <translation id="6770664076092644100">NFC ಮೂಲಕ ಪರಿಶೀಲಿಸಿ</translation>
 <translation id="6771503742377376720">ಪ್ರಮಾಣಪತ್ರ ಪ್ರಾಧಿಕಾರವಾಗಿದೆ</translation>
+<translation id="6772339735733515807">ನಿಮ್ಮ ವಿಸ್ತರಣೆಗಳನ್ನು ನಿರ್ವಹಿಸಿ</translation>
 <translation id="6775163072363532304">ಲಭ್ಯವಿರುವ ಸಾಧನಗಳು ಇಲ್ಲಿ ಗೋಚರಿಸುತ್ತವೆ.</translation>
 <translation id="6777817260680419853">ಮರುನಿರ್ದೇಶಿಸುವಿಕೆಯನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ</translation>
 <translation id="6778737459546443941">ನಿಮ್ಮ ಪೋಷಕರು ಇನ್ನೂ ಇದನ್ನು ಅಂಗೀಕರಿಸಿಲ್ಲ</translation>
@@ -4126,6 +4147,7 @@
 <translation id="6972180789171089114">ಆಡಿಯೋ/ವೀಡಿಯೊ</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> ಗೆ ಈ ಫೋಲ್ಡರ್‌ನಲ್ಲಿರುವ ಫೈಲ್‌ಗಳನ್ನು ತೆರೆಯಲು ಸಾಧ್ಯವಿಲ್ಲ ಏಕೆಂದರೆ ಇದರಲ್ಲಿ ಸಿಸ್ಟಂ ಫೈಲ್‍ಗಳಿವೆ</translation>
 <translation id="6972754398087986839">ಪ್ರಾರಂಭಗೊಂಡಿದೆ</translation>
+<translation id="6973611239564315524">Debian 10 (Buster) ಗೆ ಅಪ್‌ಗ್ರೇಡ್ ಲಭ್ಯವಿದೆ</translation>
 <translation id="6974609594866392343">ಆಫ್‌ಲೈನ್ ಡೆಮೊ ಮೋಡ್</translation>
 <translation id="6977381486153291903">ಫರ್ಮ್‌ವೇರ್ ಮರುಪರಿಶೀಲನೆ</translation>
 <translation id="6978121630131642226">ಹುಡುಕಾಟ ಇಂಜಿನ್‌ಗಳು</translation>
@@ -4586,6 +4608,7 @@
 <translation id="7644543211198159466">ಬಣ್ಣ ಮತ್ತು ಥೀಮ್</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (ಮಾಲೀಕರು)</translation>
 <translation id="7645681574855902035">Linux ಬ್ಯಾಕಪ್ ಅನ್ನು ರದ್ದುಗೊಳಿಸಲಾಗುತ್ತಿದೆ</translation>
+<translation id="7646772052135772216">ಪಾಸ್‌ವರ್ಡ್ ಸಿಂಕ್ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿಲ್ಲ</translation>
 <translation id="7647403192093989392">ಯಾವುದೇ ಇತ್ತೀಚಿನ ಚಟುವಟಿಕೆಗಳಿಲ್ಲ</translation>
 <translation id="7648992873808071793">ಈ ಸಾಧನದಲ್ಲಿ ಫೈಲ್‌ಗಳನ್ನು ಸಂಗ್ರಹಿಸಿ</translation>
 <translation id="7649070708921625228">ಸಹಾಯ</translation>
@@ -4773,6 +4796,7 @@
 <translation id="7877451762676714207">ಅಪರಿಚಿತ ಸರ್ವರ್ ದೋಷ. ದಯವಿಟ್ಟು ಪುನಃ ಪ್ರಯತ್ನಿಸಿ, ಅಥವಾ ಸರ್ವರ್ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ.</translation>
 <translation id="7877680364634660272">ಪ್ರವಾಸ</translation>
 <translation id="7878562273885520351">ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್‌ ಅನ್ನು ಸುಲಭವಾಗಿ ಪತ್ತೆ ಮಾಡಬಹುದು</translation>
+<translation id="7879631849810108578">ಶಾರ್ಟ್‌ಕಟ್ ಸೆಟ್ ಮಾಡಲಾಗಿದೆ: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">ನೀವು ಮರುಪ್ರಾರಂಭಿಸಿದಾಗ ಸ್ಥಳೀಯ ಡೇಟಾವನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ</translation>
 <translation id="7881483672146086348">ಖಾತೆಯನ್ನು ವೀಕ್ಷಿಸಿ</translation>
 <translation id="7882358943899516840">ಪೂರೈಕೆದಾರರ ಪ್ರಕಾರ</translation>
@@ -4859,6 +4883,7 @@
 <translation id="7987814697832569482">ಯಾವಾಗಲೂ ಈ VPN ಮೂಲಕವೇ ಸಂಪರ್ಕಿಸಿ</translation>
 <translation id="7988355189918024273">ಪ್ರವೇಶದ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ</translation>
 <translation id="7991296728590311172">ಪ್ರವೇಶದ ವಿಧಾನವನ್ನು ಬದಲಿಸುವ ಸೆಟ್ಟಿಂಗ್‌ಗಳು</translation>
+<translation id="7994350303002908848">Plugin VM ಅನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ಪುನಃ ಪ್ರಯತ್ನಿಸಿ, ಅಥವಾ ನಿಮ್ಮ ಸಂಸ್ಥೆಯ ಸಾಧನ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ. ದೋಷ ಕೋಡ್: <ph name="ERROR_CODE" /></translation>
 <translation id="7994702968232966508">EAP ವಿಧಾನ</translation>
 <translation id="7997826902155442747">ಪ್ರಕ್ರಿಯೆಯ ಆದ್ಯತೆ</translation>
 <translation id="7999229196265990314">ಕೆಳಗಿನ ಫೈಲ್‌ಗಳನ್ನು ರಚಿಸಲಾಗಿದೆ:
@@ -4948,7 +4973,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{ಯಾವುದೇ ಥರ್ಡ್ ಪಾರ್ಟಿ ಕುಕೀಗಳಿಲ್ಲ}=1{1 ಥರ್ಡ್ ಪಾರ್ಟಿ ಕುಕೀಯನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ}one{# ಥರ್ಡ್ ಪಾರ್ಟಿ ಕುಕೀಗಳನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ}other{# ಥರ್ಡ್ ಪಾರ್ಟಿ ಕುಕೀಗಳನ್ನು ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ}}</translation>
 <translation id="810875025413331850">ಯಾವುದೇ ಹತ್ತಿರದ ಸಾಧನಗಳು ಕಂಡುಬಂದಿಲ್ಲ.</translation>
 <translation id="8111155949205007504">ನಿಮ್ಮ iPhone ಮೂಲಕ ಈ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಹಂಚಿಕೊಳ್ಳಿ</translation>
-<translation id="8113043281354018522">ಪರವಾನಗಿ ಪ್ರಕಾರವನ್ನು ಆರಿಸಿ</translation>
 <translation id="8114875720387900039">ಅಡ್ಡಲಾಗಿ ವಿಭಜಿಸಿ</translation>
 <translation id="8116972784401310538">&amp;ಬುಕ್‌ಮಾರ್ಕ್‌ ವ್ಯವಸ್ಥಾಪಕ</translation>
 <translation id="8117620576188476503">ಸ್ಥಿತಿ ಟ್ರೇ ಮೂಲಕ ಸಂಪರ್ಕಗಳು, ಅಪ್‌ಡೇಟ್‌ಗಳು ಮತ್ತು ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಿ. ಕೀಬೋರ್ಡ್‌ಗಳಿಂದ ಇಲ್ಲಿ ಪಡೆಯಲು, Alt + Shift + S ಕೀಗಳನ್ನು ಒತ್ತಿರಿ.</translation>
@@ -5105,6 +5129,7 @@
 <translation id="8327039559959785305">Linux ಫೈಲ್‌ಗಳನ್ನು ಮೌಂಟ್ ಮಾಡುವಲ್ಲಿ ದೋಷ ಕಂಡುಬಂದಿದೆ. ಮತ್ತೊಮ್ಮೆ ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="8335587457941836791">ಶೆಲ್ಫ್‌ನಿಂದ ಅನ್‌ಪಿನ್‌ ಮಾಡು</translation>
 <translation id="8336407002559723354"><ph name="MONTH_AND_YEAR" /> ರಂದು ಅಪ್‌ಡೇಟ್‌ಗಳು ಕೊನೆಗೊಳ್ಳುತ್ತವೆ</translation>
+<translation id="8336721153892716270"><ph name="LANGUAGE" /> ಭಾಷೆಯಲ್ಲಿ ಸಿಸ್ಟಮ್ ಪಠ್ಯವನ್ನು ಪ್ರದರ್ಶಿಸಲು ಸಾಧನವನ್ನು ಮರುಪ್ರಾರಂಭಿಸಿ</translation>
 <translation id="8336739000755212683">ಸಾಧನದ ಖಾತೆ ಚಿತ್ರವನ್ನು ಬದಲಾಯಿಸಿ</translation>
 <translation id="8337047789441383384">ನೀವು ಈ ಭದ್ರತೆ ಕೀಯನ್ನು ಈಗಾಗಲೇ ನೋಂದಾಯಿಸಿದ್ದೀರಿ. ನೀವು ಅದನ್ನು ಮತ್ತೊಮ್ಮೆ ನೋಂದಾಯಿಸಬೇಕಾದ ಅಗತ್ಯವಿಲ್ಲ.</translation>
 <translation id="8338952601723052325">ಡೆವಲಪರ್ ವೆಬ್‌ಸೈಟ್</translation>
@@ -5148,6 +5173,7 @@
 <translation id="8400146488506985033">ಜನರನ್ನು ನಿರ್ವಹಿಸು</translation>
 <translation id="8401432541486058167">ನಿಮ್ಮ ಸ್ಮಾರ್ಟ್ ಕಾರ್ಡ್‌ನೊಂದಿಗೆ ಸಂಯೋಜಿತವಾಗಿರುವ ಪಿನ್ ಅನ್ನು ಒದಗಿಸಿ.</translation>
 <translation id="8405046151008197676">ಇತ್ತೀಚಿನ ಅಪ್‌ಡೇಟ್ ಕುರಿತು ಮುಖ್ಯಾಂಶಗಳನ್ನು ಪಡೆದುಕೊಳ್ಳಿ</translation>
+<translation id="8408068190360279472"><ph name="NETWORK_TYPE" /> ನೆಟ್‌ವರ್ಕ್, ಸಂಪರ್ಕಿಸಲಾಗುತ್ತಿದೆ</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">ಮೊದಲು ಕೇಳಿ (ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ)</translation>
 <translation id="8418445294933751433">ಟ್ಯಾಬ್‌ನಂತೆ &amp;ತೋರಿಸಿ</translation>
@@ -5439,6 +5465,7 @@
 <translation id="8807632654848257479">ಸ್ಥಿರ</translation>
 <translation id="8808478386290700967">ವೆಬ್‌ ಸ್ಟೋರ್‌</translation>
 <translation id="8808686172382650546">ಬೆಕ್ಕು</translation>
+<translation id="8808744862003883508">Chrome ನಲ್ಲಿ ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲಾಗಿರುವ ಎಲ್ಲಾ ವಿಸ್ತರಣೆಗಳನ್ನು ಈ ಪುಟದಲ್ಲಿ ನೀವು ನೋಡಬಹುದು.</translation>
 <translation id="8809147117840417135">ತಿಳಿ ಕೆನ್ನೀಲಿ</translation>
 <translation id="8813698869395535039"><ph name="USERNAME" /> ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ</translation>
 <translation id="8813811964357448561">ಕಾಗದದ ಹಾಳೆ</translation>
@@ -5666,7 +5693,6 @@
 <translation id="9121814364785106365">ಪಿನ್ ಮಾಡಿದ ಟ್ಯಾಬ್ ಆಗಿ ತೆರೆ</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> ಅನ್ನು ವಿರಾಮಗೊಳಿಸಲಾಗಿದೆ</translation>
 <translation id="9124003689441359348">ಉಳಿಸಲಾದ ಪಾಸ್‌ವರ್ಡ್‌ಗಳು ಇಲ್ಲಿ ಗೋಚರಿಸುತ್ತವೆ</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (ಉಳಿದಿರುವ <ph name="LICENSE_COUNT" />.)</translation>
 <translation id="9128317794749765148">ಸೆಟಪ್ ಮಾಡುವಿಕೆಯನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ</translation>
 <translation id="9128870381267983090">ನೆಟ್‌ವರ್ಕ್‌ಗೆ ಸಂಪರ್ಕಿಸು</translation>
 <translation id="9130015405878219958">ಅಮಾನ್ಯ ಮೋಡ್ ನಮೂದಿಸಲಾಗಿದೆ.</translation>
@@ -5705,6 +5731,7 @@
 <translation id="9188732951356337132">ಬಳಕೆ ಮತ್ತು ಡಯಾಗ್ನಾಸ್ಟಿಕ್ ಡೇಟಾವನ್ನು ಕಳುಹಿಸಿ. ಪ್ರಸ್ತುತ ಈ ಸಾಧನವು ಡಯಾಗ್ನಾಸ್ಟಿಕ್, ಸಾಧನ, ಮತ್ತು ಆ್ಯಪ್ ಬಳಕೆಯ ಡೇಟಾವನ್ನು Google ಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕಳುಹಿಸುತ್ತಿದೆ. ಈ ಡೇಟಾವನ್ನು ನಿಮ್ಮ ಮಗುವನ್ನು ಗುರುತಿಸುವುದಕ್ಕೆ ಬಳಸುವುದಿಲ್ಲ, ಹಾಗೂ ಇದು ಸಿಸ್ಟಮ್ ಮತ್ತು ಆ್ಯಪ್ ಸ್ಥಿರತೆ, ಹಾಗೂ ಇತರ ಸುಧಾರಣೆಗಳಿಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಕೆಲವು ಒಟ್ಟುಗೂಡಿಸಿದ ಡೇಟಾವು, Google ಆ್ಯಪ್‌ಗಳಿಗೆ ಮತ್ತು ಪಾಲುದಾರರಿಗೂ ಸಹ ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, Android ಡೆವಲಪರ್‌ಗಳು. ನಿಮ್ಮ ಮಗುವಿಗಾಗಿ ಹೆಚ್ಚುವರಿ ವೆಬ್‌ ಮತ್ತು ಆ್ಯಪ್ ಚಟುವಟಿಕೆ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಆನ್‌ ಮಾಡಿದ್ದಲ್ಲಿ, ಈ ಡೇಟಾವು ಅವರ Google ಖಾತೆಯಲ್ಲಿ ಉಳಿಸಲ್ಪಡಬಹುದು. <ph name="BEGIN_LINK2" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPSec + ಪೂರ್ವ ಹಂಚಿತ ಕೀಲಿ</translation>
 <translation id="920045321358709304"><ph name="SEARCH_ENGINE" /> ಹುಡುಕಾಟ</translation>
+<translation id="9201023452444595544">ಯಾವುದೇ ಆಫ್‌ಲೈನ್ ಡೇಟಾವನ್ನು ತೆರವುಗೊಳಿಸಲಾಗುತ್ತದೆ</translation>
 <translation id="9201220332032049474">ಸ್ಕ್ರೀನ್ ಲಾಕ್ ಆಯ್ಕೆಗಳು</translation>
 <translation id="9203398526606335860">&amp;ಪ್ರೊಫೈಲಿಂಗ್ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ
 </translation>
@@ -5718,6 +5745,7 @@
 <translation id="9220525904950070496">ಖಾತೆಯನ್ನು ತೆಗೆದುಹಾಕಿ</translation>
 <translation id="9220820413868316583">ಬೆರಳನ್ನು ಸರಿಸಿ ಹಾಗೂ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="923467487918828349">ಎಲ್ಲಾ ತೋರಿಸಿ</translation>
+<translation id="929117907539171075">ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲಾದ ಆ್ಯಪ್‌ನಲ್ಲಿನ ಆಫ್‌ಲೈನ್ ಡೇಟಾವನ್ನು ಸಹ ತೆರವುಗೊಳಿಸಲಾಗುತ್ತದೆ</translation>
 <translation id="930268624053534560">ವಿವರವಾದ ಸಮಯಮೊಹರುಗಳು</translation>
 <translation id="932327136139879170">ಹೋಮ್</translation>
 <translation id="932508678520956232">ಮುದ್ರಣವನ್ನು ಪ್ರಾರಂಭಿಸುವುದಕ್ಕೆ ಆಗುವುದಿಲ್ಲ.</translation>
@@ -5743,6 +5771,7 @@
 <translation id="960719561871045870">ಆಪರೇಟರ್ ಕೋಡ್</translation>
 <translation id="960987915827980018">ಸುಮಾರು 1 ಗಂಟೆ ಉಳಿದಿದೆ</translation>
 <translation id="962802172452141067">ಬುಕ್‌ಮಾರ್ಕ್ ಫೋಲ್ಡರ್ ಟ್ರೀ</translation>
+<translation id="964057662886721376">ಕೆಲವು ವಿಸ್ತರಣೆಗಳು ನಿಮ್ಮ ಕಾರ್ಯವನ್ನು ನಿಧಾನಗೊಳಿಸಬಹುದು - ವಿಶೇಷವಾಗಿ ನೀವು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಲು ಉದ್ದೇಶಿಸಿರದ ವಿಸ್ತರಣೆಗಳು.</translation>
 <translation id="964286338916298286">ನಿಮ್ಮ ಐಟಿ ನಿರ್ವಾಹಕರು ನಿಮ್ಮ ಸಾಧನಕ್ಕೆ Chrome ನ ಗುಡೀಸ್‌ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದ್ದಾರೆ.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{ಅಪ್ಲಿಕೇಶನ್}one{ಅಪ್ಲಿಕೇಶನ್‌ಗಳು}other{ಅಪ್ಲಿಕೇಶನ್‌ಗಳು}}</translation>
 <translation id="965211523698323809">ನಿಮ್ಮ <ph name="DEVICE_TYPE" /> ನಿಂದ ಪಠ್ಯ ಸಂದೇಶಗಳನ್ನು ಕಳುಹಿಸಿ ಮತ್ತು ಸ್ವೀಕರಿಸಿ. <ph name="LINK_BEGIN" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_ko.xtb b/chrome/app/resources/generated_resources_ko.xtb
index 43f7eedd..308dc90 100644
--- a/chrome/app/resources/generated_resources_ko.xtb
+++ b/chrome/app/resources/generated_resources_ko.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">맞춤</translation>
 <translation id="1178581264944972037">일시중지</translation>
 <translation id="117916940443676133">보안 키가 PIN으로 보호되어 있지 않습니다. 로그인 데이터를 관리하려면 PIN을 만드세요.</translation>
-<translation id="118069123878619799">- 키와 같은 신체적 특징</translation>
 <translation id="1181037720776840403">삭제</translation>
 <translation id="1183237619868651138">로컬 캐시에 <ph name="EXTERNAL_CRX_FILE" />을(를) 설치할 수 없습니다.</translation>
 <translation id="1185924365081634987"><ph name="GUEST_SIGNIN_LINK_START" />게스트로 로그인<ph name="GUEST_SIGNIN_LINK_END" />하여 네트워크 오류를 수정할 수도 있습니다.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381"><ph name="LOAD_STATE_PARAMETER" />을(를) 기다리는 중...</translation>
 <translation id="1495486559005647033">사용 가능한 다른 기기가 <ph name="NUM_PRINTERS" />개 있습니다.</translation>
 <translation id="1495677929897281669">탭으로 돌아가기</translation>
+<translation id="1499271269825557605">확장 프로그램이 보이지 않거나 브라우저가 예상대로 작동하지 않는다면 여기에서 확장 프로그램을 사용 중지하거나 맞춤설정할 수 있습니다.</translation>
 <translation id="1500297251995790841">알 수 없는 기기[<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">이 소유자 계정이 멀티 로그인 세션에서 처음으로 로그인하는 계정이 되어야 합니다.</translation>
 <translation id="150411034776756821"><ph name="SITE" /> 삭제</translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">카메라 액세스가 차단된 페이지입니다.</translation>
 <translation id="1507246803636407672">삭제(&amp;D)</translation>
 <translation id="1508491105858779599">지문 센서에 손가락을 갖다 대 기기를 잠금 해제합니다.</translation>
+<translation id="1508575541972276599">현재 버전은 Debian 9(Stretch)입니다.</translation>
 <translation id="1509281256533087115">USB를 통해 모든 <ph name="DEVICE_NAME_AND_VENDOR" />에 액세스</translation>
 <translation id="150962533380566081">잘못된 PUK입니다.</translation>
 <translation id="1510030919967934016">이 페이지는 위치 추적이 차단되었습니다.</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">적용</translation>
 <translation id="1603914832182249871">(시크릿 모드)</translation>
 <translation id="1604432177629086300">인쇄할 수 없음: 프린터를 확인하고 다시 시도해 보세요</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: 비밀번호 동기화가 작동하지 않음</translation>
 <translation id="1607139524282324606">항목 삭제</translation>
 <translation id="1608626060424371292">이 사용자 삭제</translation>
 <translation id="1608668830839595724">선택한 항목과 관련된 작업 더보기</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">호스팅된 앱 데이터</translation>
 <translation id="1776712937009046120">사용자 추가</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />에서 관리하는 기기입니다.
+    '다음'을 클릭하여 <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> 계정에 로그인하세요.</translation>
 <translation id="1779652936965200207">다음 패스키를 '<ph name="DEVICE_NAME" />'에 입력하세요.</translation>
 <translation id="1780152987505130652">그룹 닫기</translation>
 <translation id="1781291988450150470">현재 PIN</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">실행할 수 없는 작업</translation>
 <translation id="2050339315714019657">세로 방향</translation>
 <translation id="2053312383184521053">유휴 상태 데이터</translation>
+<translation id="2055585478631012616">열려 있는 탭을 포함하여 이러한 사이트에서 로그아웃됩니다.</translation>
 <translation id="205560151218727633">Google 어시스턴트 로고</translation>
 <translation id="2058456167109518507">기기가 검색됨</translation>
 <translation id="2059913712424898428">시간대</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">실행취소</translation>
 <translation id="2080070583977670716">설정 더보기</translation>
 <translation id="2087822576218954668">인쇄: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN 네트워크</translation>
 <translation id="2089566709556890888">Chrome으로 안전하게 탐색</translation>
 <translation id="2089795179672254991">사이트에서 클립보드에 복사된 텍스트 및 이미지를 보려는 경우 확인(권장)</translation>
 <translation id="2090165459409185032">계정 정보를 복구하려면 google.com/accounts/recovery 페이지로 이동하세요.</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">사이트에서 오디오 및 동영상 입력을 공유하는 중입니다.</translation>
 <translation id="2379281330731083556">시스템 대화상자를 사용하여 인쇄... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">보내기 전에 확인(권장)</translation>
+<translation id="2382818385048255866">확장 프로그램 확인</translation>
 <translation id="2384436799579181135">오류가 발생했습니다. 프린터를 확인한 후 다시 시도해 주세요.</translation>
 <translation id="2387458720915042159">프록시 연결 유형</translation>
 <translation id="2391419135980381625">표준 글꼴</translation>
@@ -1036,6 +1043,7 @@
 <translation id="2462724976360937186">인증 기관 키 ID</translation>
 <translation id="2462752602710430187"><ph name="PRINTER_NAME" /> 추가됨</translation>
 <translation id="2464089476039395325">HTTP 프록시</translation>
+<translation id="2467267713099745100"><ph name="NETWORK_TYPE" /> 네트워크, 연결 없음</translation>
 <translation id="2468205691404969808">페이지를 방문하지 않더라도 쿠키를 통해 환경설정 저장</translation>
 <translation id="2468402215065996499">다마고치</translation>
 <translation id="2469259292033957819">저장된 프린터가 없습니다.</translation>
@@ -1290,6 +1298,7 @@
 <translation id="2800760947029405028">이미지 업로드</translation>
 <translation id="2803375539583399270">PIN 입력</translation>
 <translation id="2804043232879091219">대체 브라우저를 열 수 없습니다.</translation>
+<translation id="2804667941345577550">열려 있는 탭을 포함하여 이 사이트에서 로그아웃됩니다.</translation>
 <translation id="2804680522274557040">카메라 사용 중지됨</translation>
 <translation id="2805646850212350655">Microsoft Encrypting File System</translation>
 <translation id="2805756323405976993">앱</translation>
@@ -1297,6 +1306,7 @@
 <translation id="2806891468525657116">바로가기가 이미 존재합니다.</translation>
 <translation id="2807517655263062534">다운로드한 파일이 여기에 표시됩니다.</translation>
 <translation id="2809586584051668049">외 <ph name="NUMBER_ADDITIONAL_DISABLED" />개</translation>
+<translation id="2810390687497823527">확장 프로그램이 보이지 않거나 브라우저가 예상대로 작동하지 않는다면 여기에서 확장 프로그램을 사용 중지하거나 맞춤설정할 수 있습니다.</translation>
 <translation id="2812049959647166806">Thunderbolt가 지원되지 않음</translation>
 <translation id="2812944337881233323">로그아웃한 후 다시 로그인하세요.</translation>
 <translation id="2812989263793994277">이미지 표시 안함</translation>
@@ -1336,6 +1346,7 @@
 <translation id="2861941300086904918">네이티브 클라이언트 보안 관리자</translation>
 <translation id="2864601841139725659">프로필 사진 설정</translation>
 <translation id="2865919525181940183">현재 화면에 표시된 프로그램의 스크린샷</translation>
+<translation id="286674810810214575">전원 확인 중...</translation>
 <translation id="2867768963760577682">고정 탭으로 열기</translation>
 <translation id="2868746137289129307">이 확장 프로그램은 오래된 것이며 기업 정책에 의해 중지되었습니다. 새로운 버전이 있는 경우 자동으로 사용 설정될 수 있습니다.</translation>
 <translation id="2870560284913253234">사이트</translation>
@@ -1413,6 +1424,7 @@
 <translation id="2972581237482394796">다시 실행(&amp;R)</translation>
 <translation id="2973324205039581528">사이트 음소거</translation>
 <translation id="2977480621796371840">그룹에서 삭제</translation>
+<translation id="2979520980928493164">더 안전하고 즐거운 Chrome 사용</translation>
 <translation id="2979639724566107830">새 창에서 열기</translation>
 <translation id="2981113813906970160">큰 마우스 커서 표시</translation>
 <translation id="2982970937345031">익명으로 신고하기</translation>
@@ -1519,6 +1531,7 @@
 <translation id="3143515551205905069">동기화 취소</translation>
 <translation id="3143754809889689516">처음부터 재생</translation>
 <translation id="3144647712221361880">다음으로 링크 열기</translation>
+<translation id="3145187901750964977">가상 머신을 설치할 수 없습니다. 다시 시도해 보거나 조직의 기기 관리자에게 문의하세요. 오류 코드: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">버전:
     <ph name="LINUX_VERSION" />
 
@@ -1557,6 +1570,7 @@
 <translation id="3192947282887913208">오디오 파일</translation>
 <translation id="3194737229810486521"><ph name="URL" />에서 내 기기에 데이터를 영구 저장하려고 합니다</translation>
 <translation id="3199127022143353223">서버</translation>
+<translation id="3201306578844503970">네트워크 오류로 인해 가상 머신을 설치할 수 없습니다. 다시 시도해 보거나 조직의 기기 관리자에게 문의하세요. 오류 코드: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">사용 가능한 USB 기기가 여기에 표시됩니다.</translation>
 <translation id="3202131003361292969">경로</translation>
 <translation id="3202173864863109533">이 탭의 오디오가 음소거됩니다.</translation>
@@ -1893,7 +1907,6 @@
 <translation id="3678156199662914018">확장 프로그램: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">의견을 보내주셔서 감사합니다. 현재 오프라인 상태이므로 보고서는 나중에 전송됩니다.</translation>
 <translation id="3682824389861648626">움직임 기준</translation>
-<translation id="3683023058278427253">도메인에서 여러 개의 라이선스 유형이 감지되었습니다. 계속하려면 하나의 유형을 선택하세요.</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> 화면 공유 요청</translation>
 <translation id="368789413795732264">파일 쓰기를 시도하는 동안 다음 오류가 발생했습니다. <ph name="ERROR_TEXT" /></translation>
 <translation id="3688507211863392146">애플리케이션에서 연 파일 및 폴더에 쓰기</translation>
@@ -2067,6 +2080,7 @@
 <translation id="389589731200570180">게스트와 공유</translation>
 <translation id="389901847090970821">키보드 선택</translation>
 <translation id="3899879303189199559">1년 이상 오프라인 상태</translation>
+<translation id="3900789207771372462">일부 확장 프로그램에서 개인정보를 포함하여 탐색 활동을 볼 수 있습니다.</translation>
 <translation id="3900966090527141178">비밀번호 내보내기</translation>
 <translation id="3901991538546252627"><ph name="NAME" />에 연결 중</translation>
 <translation id="3905761538810670789">앱 복구</translation>
@@ -2157,7 +2171,6 @@
 <translation id="4013132157686828973">'<ph name="CLIENT_NAME" />'에서 이 브라우저를 디버깅하는 중입니다</translation>
 <translation id="4014432863917027322">'<ph name="EXTENSION_NAME" />'을(를) 복구하시겠습니까?</translation>
 <translation id="4015163439792426608">확장 프로그램이 있나요? 한곳에서 편리하게 <ph name="BEGIN_LINK" />확장 프로그램을 관리<ph name="END_LINK" />하세요.</translation>
-<translation id="4020106588733303597">죄송합니다. 시스템에서 사용 가능한 라이선스를 로드하지 못했습니다.</translation>
 <translation id="4020327272915390518">옵션 메뉴</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">사전에 추가(&amp;A)</translation>
@@ -2195,6 +2208,7 @@
 <translation id="407520071244661467">배율</translation>
 <translation id="4075639477629295004"><ph name="FILE_NAME" />을(를) 전송할 수 없습니다.</translation>
 <translation id="4077917118009885966">이 사이트의 광고가 차단됨</translation>
+<translation id="4077919383365622693"><ph name="SITE" />에서 저장한 모든 데이터와 쿠키가 삭제됩니다.</translation>
 <translation id="4079140982534148664">향상된 맞춤법 검사 기능 사용</translation>
 <translation id="4081242589061676262">파일을 전송할 수 없음</translation>
 <translation id="4084682180776658562">북마크</translation>
@@ -2267,6 +2281,7 @@
 <translation id="4181841719683918333">언어</translation>
 <translation id="4184885522552335684">디스플레이를 이동하려면 드래그하세요.</translation>
 <translation id="4194570336751258953">두드려서 클릭</translation>
+<translation id="4194595472342532425">구성 문제로 인해 Plugin VM을 설정할 수 없습니다. 조직의 기기 관리자에게 문의하세요. 오류 코드: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">새 탭에서 열기</translation>
 <translation id="4195814663415092787">중단한 위치에서 계속하기</translation>
 <translation id="4198146608511578238">Google 어시스턴트와 대화하려면 런처 아이콘을 길게 누르세요.</translation>
@@ -2490,6 +2505,7 @@
 <translation id="4549791035683739768">보안 키에 저장된 지문이 없습니다.</translation>
 <translation id="4551763574344810652">실행취소하려면 <ph name="MODIFIER_KEY_DESCRIPTION" />을(를) 누르세요.</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005"><ph name="NETWORK_TYPE" /> 네트워크, 신호 강도 <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">외부 확장 프로그램의 버전이 기존 프로그램과 동일하거나 낮습니다.</translation>
 <translation id="4555769855065597957">그림자</translation>
 <translation id="4555863373929230635">Google 계정에 비밀번호를 저장하려면 로그인한 다음 동기화를 사용 설정하세요.</translation>
@@ -2567,6 +2583,7 @@
 <translation id="4665446389743427678"><ph name="SITE" />에서 저장한 모든 데이터가 삭제됩니다.</translation>
 <translation id="4668721319092543482"><ph name="PLUGIN_NAME" />을(를) 사용하려면 클릭하세요.</translation>
 <translation id="4672657274720418656">페이지 추출</translation>
+<translation id="46733273239502219">설치된 앱 내 오프라인 데이터도 삭제됩니다.</translation>
 <translation id="4673442866648850031">스타일러스가 분리되면 스타일러스 도구가 열립니다.</translation>
 <translation id="4677585247300749148"><ph name="URL" />에서 접근성 이벤트에 응답하려고 합니다</translation>
 <translation id="4677772697204437347">GPU 메모리</translation>
@@ -2658,7 +2675,6 @@
 <translation id="4823484602432206655">사용자와 기기 설정 확인 및 변경</translation>
 <translation id="4824958205181053313">동기화를 취소하시겠습니까?</translation>
 <translation id="4827675678516992122">연결할 수 없음</translation>
-<translation id="4828937774870308359">오스트레일리아</translation>
 <translation id="4829768588131278040">PIN 설정</translation>
 <translation id="4830502475412647084">OS 업데이트 설치 중</translation>
 <translation id="4830573902900904548"><ph name="DEVICE_TYPE" />에서 <ph name="NETWORK_NAME" /> 네트워크를 사용하여 인터넷에 연결할 수 없습니다. 다른 네트워크를 선택하세요. <ph name="LEARN_MORE_LINK_START" />자세히 알아보기<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2699,6 +2715,7 @@
 <translation id="4876273079589074638">Google 엔지니어가 이 비정상 종료를 조사하고 해결할 수 있도록 도와주세요. 가능한 경우 단계를 정확히 나열해 주세요. 자세히 설명해 주시면 큰 도움이 됩니다.</translation>
 <translation id="4876895919560854374">화면 잠금 및 잠금 해제</translation>
 <translation id="4877276003880815204">요소 검사</translation>
+<translation id="4878653975845355462">관리자가 맞춤 백그라운드를 사용 중지했습니다.</translation>
 <translation id="4879491255372875719">자동(기본값)</translation>
 <translation id="4880328057631981605">액세스포인트 네임(APN)</translation>
 <translation id="4880827082731008257">기록 검색</translation>
@@ -2754,10 +2771,10 @@
 <translation id="4943691134276646401">'<ph name="CHROME_EXTENSION_NAME" />'에서 시리얼 포트에 연결하려고 합니다.</translation>
 <translation id="4944310289250773232">이 인증 서비스는 <ph name="SAML_DOMAIN" />에서 호스팅합니다</translation>
 <translation id="495170559598752135">작업</translation>
+<translation id="4952981627953231344">이 기기에서는 Plugin VM이 허용되지 않습니다. 조직의 기기 관리자에게 문의하세요.</translation>
 <translation id="4953689047182316270">접근성 이벤트에 응답</translation>
 <translation id="4953808748584563296">기본 주황색 아바타</translation>
 <translation id="4955710816792587366">PIN 선택</translation>
-<translation id="4955814292505481804">연간</translation>
 <translation id="4959262764292427323">어느 기기에서나 사용할 수 있도록 비밀번호가 Google 계정에 저장됩니다.</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">이 앱은 관리자가 설치했습니다.</translation>
@@ -3239,7 +3256,6 @@
 <translation id="5659593005791499971">이메일</translation>
 <translation id="5659833766619490117">페이지를 번역할 수 없음</translation>
 <translation id="5660204307954428567"><ph name="DEVICE_NAME" />과(와) 페어링</translation>
-<translation id="5662477687021125631">영구</translation>
 <translation id="5667546120811588575">Google Play 설정 중...</translation>
 <translation id="5669267381087807207">활성화 중</translation>
 <translation id="5669691691057771421">새 PIN 입력</translation>
@@ -3255,6 +3271,7 @@
 <translation id="5687326903064479980">시간대</translation>
 <translation id="5689516760719285838">위치</translation>
 <translation id="56907980372820799">데이터 연결</translation>
+<translation id="5691180005790455277"><ph name="SITE_GROUP_NAME" /> 및 하위 사이트에서 저장한 모든 데이터와 쿠키가 삭제됩니다.</translation>
 <translation id="5691511426247308406">가족</translation>
 <translation id="5692183275898619210">인쇄 완료</translation>
 <translation id="5696143504434933566">'<ph name="EXTENSION_NAME" />'의 악용사례 신고</translation>
@@ -3341,7 +3358,6 @@
 <translation id="5815645614496570556">X.400 주소</translation>
 <translation id="5816434091619127343">프린터 변경을 요청하면 프린터를 사용할 수 없게 됩니다.</translation>
 <translation id="5817918615728894473">페어링</translation>
-<translation id="5819762621475381970">- 방 안의 구조</translation>
 <translation id="5821565227679781414">바로가기 만들기</translation>
 <translation id="5825412242012995131">사용(권장)</translation>
 <translation id="5826395379250998812">휴대전화와 <ph name="DEVICE_TYPE" />을(를) 연결하세요. <ph name="LINK_BEGIN" />자세히 알아보기<ph name="LINK_END" /></translation>
@@ -3477,6 +3493,7 @@
 <translation id="6007240208646052708">사용자의 언어로 음성 검색을 이용할 수 없습니다.</translation>
 <translation id="6009781704028455063">내장 센서</translation>
 <translation id="6010869025736512584">비디오 입력 장치에 액세스 중</translation>
+<translation id="6011074160056912900">이더넷 네트워크</translation>
 <translation id="6011193465932186973">지문</translation>
 <translation id="6011449291337289699">사이트 데이터 삭제</translation>
 <translation id="6015266928248016057">잘못된 PUK입니다. 남은 재시도 횟수는 <ph name="RETRIES" />회입니다.</translation>
@@ -3513,6 +3530,7 @@
 <translation id="6053401458108962351">인터넷 사용 기록 삭제(&amp;C)...</translation>
 <translation id="6055171183283175969">입력한 비밀번호가 올바르지 않습니다.</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256(RSA 암호화 사용)</translation>
+<translation id="6055907707645252013"><ph name="NETWORK_TYPE" /> 네트워크, 연결되지 않음</translation>
 <translation id="6056710589053485679">일반 새로고침</translation>
 <translation id="6057381398996433816">모션 센서 및 조도 센서 사용이 차단된 사이트입니다.</translation>
 <translation id="6058567592298841668">플러그인 가상 머신: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3576,6 +3594,7 @@
 <translation id="6136114942382973861">다운로드바 닫기</translation>
 <translation id="6137767437444130246">사용자 인증서</translation>
 <translation id="6138680304137685902">SHA-384를 포함한 X9.62 ECDSA 서명</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, 네트워크 없음</translation>
 <translation id="6141988275892716286">다운로드 확인</translation>
 <translation id="6143186082490678276">도움말 보기</translation>
 <translation id="6144938890088808325">Chromebook 개선에 도움을 주세요.</translation>
@@ -3882,6 +3901,7 @@
 <translation id="6602956230557165253">오른쪽/왼쪽 화살표 키를 사용하여 탐색합니다.</translation>
 <translation id="6605847144724004692">아직 사용자 평가가 없습니다.</translation>
 <translation id="6607831829715835317">도구 더보기</translation>
+<translation id="6611972847767394631">여기에서 탭 찾아보기</translation>
 <translation id="6612358246767739896">보호된 콘텐츠</translation>
 <translation id="6615455863669487791">표시</translation>
 <translation id="6618097958368085618">보관</translation>
@@ -3950,6 +3970,7 @@
 <translation id="6709133671862442373">뉴스</translation>
 <translation id="6709357832553498500"><ph name="EXTENSIONNAME" />을(를) 사용하여 연결</translation>
 <translation id="6710213216561001401">이전</translation>
+<translation id="6715803357256707211">Linux 애플리케이션을 설치하는 중에 오류가 발생했습니다. 알림을 클릭하면 자세한 정보를 확인할 수 있습니다.</translation>
 <translation id="6721678857435001674">보안 키 제조업체와 모델을 확인하려고 합니다.</translation>
 <translation id="6721972322305477112">파일(&amp;F)</translation>
 <translation id="672213144943476270">프로필을 잠금 해제한 후에 게스트로 탐색하세요.</translation>
@@ -3974,7 +3995,6 @@
 <translation id="674632704103926902">탭 드래그 사용</translation>
 <translation id="6748217015615267851">렌더기: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">계속 진행할 수 있지만 동기화된 데이터와 설정만 복원됩니다. 모든 로컬 데이터가 손실됩니다.</translation>
-<translation id="6748775883310276718">단일 앱 키오스크</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (시크릿 모드)</translation>
 <translation id="6757101664402245801">URL을 복사했습니다</translation>
 <translation id="6758056191028427665">개선할 점이나 격려하고 싶은 점을 알려주세요.</translation>
@@ -3984,6 +4004,7 @@
 <translation id="6769712124046837540">프린터 추가 중...</translation>
 <translation id="6770664076092644100">NFC를 통해 인증</translation>
 <translation id="6771503742377376720">인증 기관임</translation>
+<translation id="6772339735733515807">확장 프로그램 관리</translation>
 <translation id="6775163072363532304">사용 가능한 기기가 여기에 표시됩니다.</translation>
 <translation id="6777817260680419853">리디렉션이 차단됨</translation>
 <translation id="6778737459546443941">부모님이 아직 승인하지 않았습니다.</translation>
@@ -4122,6 +4143,7 @@
 <translation id="6972180789171089114">오디오/비디오</translation>
 <translation id="6972553992270299730">이 폴더에는 시스템 파일이 포함되어 있으므로 <ph name="ORIGIN" />에서 이 폴더의 파일을 열 수 없습니다.</translation>
 <translation id="6972754398087986839">시작하기</translation>
+<translation id="6973611239564315524">Debian 10(Buster)으로 업그레이드할 수 있습니다.</translation>
 <translation id="6974609594866392343">오프라인 데모 모드</translation>
 <translation id="6977381486153291903">펌웨어 버전</translation>
 <translation id="6978121630131642226">검색엔진</translation>
@@ -4581,6 +4603,7 @@
 <translation id="7644543211198159466">색상 및 테마</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" />(소유자)</translation>
 <translation id="7645681574855902035">Linux 백업 취소 중</translation>
+<translation id="7646772052135772216">비밀번호 동기화가 작동하지 않음</translation>
 <translation id="7647403192093989392">최근 활동이 없음</translation>
 <translation id="7648992873808071793">이 기기에 파일 저장</translation>
 <translation id="7649070708921625228">도움말</translation>
@@ -4769,6 +4792,7 @@
 <translation id="7877451762676714207">알 수 없는 서버 오류입니다. 다시 시도하거나 서버 관리자에게 문의하시기 바랍니다.</translation>
 <translation id="7877680364634660272">둘러보기</translation>
 <translation id="7878562273885520351">비밀번호가 도용될 수도 있음</translation>
+<translation id="7879631849810108578">단축키 조합: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">다시 시작하면 로컬 데이터가 삭제됩니다</translation>
 <translation id="7881483672146086348">계정 보기</translation>
 <translation id="7882358943899516840">공급자 유형</translation>
@@ -4855,6 +4879,7 @@
 <translation id="7987814697832569482">항상 이 VPN을 통해 연결</translation>
 <translation id="7988355189918024273">접근성 기능 사용</translation>
 <translation id="7991296728590311172">스위치 제어 설정</translation>
+<translation id="7994350303002908848">Plugin VM을 설치할 수 없습니다. 다시 시도해 보거나 조직의 기기 관리자에게 문의하세요. 오류 코드: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">EAP 방식</translation>
 <translation id="7997826902155442747">프로세스 우선순위</translation>
 <translation id="7999229196265990314">생성된 파일:
@@ -4947,7 +4972,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{타사 쿠키 없음}=1{타사 쿠키 1개가 차단됨}other{타사 쿠키 #개가 차단됨}}</translation>
 <translation id="810875025413331850">주변 기기를 찾을 수 없습니다.</translation>
 <translation id="8111155949205007504">이 비밀번호를 iPhone과 공유하기</translation>
-<translation id="8113043281354018522">라이선스 유형 선택</translation>
 <translation id="8114875720387900039">수평 분할</translation>
 <translation id="8116972784401310538">북마크 관리자(&amp;B)</translation>
 <translation id="8117620576188476503">상태 표시줄에서 연결, 업데이트, 설정을 관리하세요. 키보드를 사용하여 이동하려면 Alt + Shift + S를 누르면 됩니다.</translation>
@@ -5104,6 +5128,7 @@
 <translation id="8327039559959785305">Linux 파일을 마운트하는 중에 오류가 발생했습니다. 다시 시도해 보세요.</translation>
 <translation id="8335587457941836791">임시보관함에서 고정 해제</translation>
 <translation id="8336407002559723354"><ph name="MONTH_AND_YEAR" />에 업데이트 종료</translation>
+<translation id="8336721153892716270"><ph name="LANGUAGE" />로 시스템 텍스트를 표시하려면 기기 다시 시작하기</translation>
 <translation id="8336739000755212683">기기 계정 이미지 변경</translation>
 <translation id="8337047789441383384">이미 이 보안 키를 등록했습니다. 다시 등록하지 않아도 됩니다.</translation>
 <translation id="8338952601723052325">개발자 웹사이트</translation>
@@ -5147,6 +5172,7 @@
 <translation id="8400146488506985033">사용자 관리</translation>
 <translation id="8401432541486058167">스마트 카드와 연결된 PIN을 입력하세요.</translation>
 <translation id="8405046151008197676">최신 업데이트에서 중요한 사항을 확인하세요.</translation>
+<translation id="8408068190360279472"><ph name="NETWORK_TYPE" /> 네트워크, 연결 중</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">우선 확인(권장)</translation>
 <translation id="8418445294933751433">탭으로 표시(&amp;S)</translation>
@@ -5436,6 +5462,7 @@
 <translation id="8807632654848257479">안정</translation>
 <translation id="8808478386290700967">웹 스토어</translation>
 <translation id="8808686172382650546">고양이</translation>
+<translation id="8808744862003883508">이 페이지에서 Chrome에 설치된 모든 확장 프로그램을 볼 수 있습니다.</translation>
 <translation id="8809147117840417135">연한 청록색</translation>
 <translation id="8813698869395535039"><ph name="USERNAME" />에 로그인할 수 없음</translation>
 <translation id="8813811964357448561">장</translation>
@@ -5663,7 +5690,6 @@
 <translation id="9121814364785106365">고정 탭으로 열기</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" />이(가) 일시중지됨</translation>
 <translation id="9124003689441359348">저장한 비밀번호가 여기에 표시됩니다.</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" />(<ph name="LICENSE_COUNT" />개 남음)</translation>
 <translation id="9128317794749765148">설정을 완료할 수 없음</translation>
 <translation id="9128870381267983090">네트워크에 연결</translation>
 <translation id="9130015405878219958">잘못된 모드를 입력했습니다.</translation>
@@ -5702,6 +5728,7 @@
 <translation id="9188732951356337132">사용 및 진단 데이터를 보냅니다. 이 기기는 현재 진단, 기기 및 앱 사용 데이터를 Google에 자동으로 보내고 있습니다. 이 데이터는 자녀를 식별하는 용도로 사용되지 않으며, 시스템 및 앱 안정성 등을 개선하는 데 활용됩니다. 일부 수집 데이터는 Google 앱과 파트너(Android 개발자 등)에게도 도움을 줍니다. 자녀의 추가 웹 및 앱 활동이 사용 설정되어 있다면 이 데이터가 자녀의 Google 계정에 저장될 수 있습니다. <ph name="BEGIN_LINK2" />자세히 알아보기<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPSec + 사전 공유 키</translation>
 <translation id="920045321358709304"><ph name="SEARCH_ENGINE" /> 검색</translation>
+<translation id="9201023452444595544">모든 오프라인 데이터가 삭제됩니다.</translation>
 <translation id="9201220332032049474">화면 잠금 옵션</translation>
 <translation id="9203398526606335860">프로파일링 사용(&amp;P)</translation>
 <translation id="9203904171912129171">기기를 선택하세요.</translation>
@@ -5714,6 +5741,7 @@
 <translation id="9220525904950070496">계정 삭제</translation>
 <translation id="9220820413868316583">손가락을 뗀 뒤 다시 시도하세요.</translation>
 <translation id="923467487918828349">모두 표시</translation>
+<translation id="929117907539171075">설치된 앱의 오프라인 데이터도 삭제됩니다.</translation>
 <translation id="930268624053534560">상세 타임스탬프</translation>
 <translation id="932327136139879170">홈</translation>
 <translation id="932508678520956232">인쇄를 시작할 수 없습니다.</translation>
@@ -5739,6 +5767,7 @@
 <translation id="960719561871045870">운영자 코드</translation>
 <translation id="960987915827980018">약 1시간 남음</translation>
 <translation id="962802172452141067">북마크 폴더 구조</translation>
+<translation id="964057662886721376">일부 확장 프로그램, 특히 원치 않게 설치된 확장프로그램으로 인해 속도가 느려질 수 있습니다.</translation>
 <translation id="964286338916298286">IT 관리자가 내 기기에서 Chrome Goodies를 이용할 수 없도록 설정했습니다.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{애플리케이션}other{애플리케이션}}</translation>
 <translation id="965211523698323809"><ph name="DEVICE_TYPE" />에서 SMS를 보내고 받으세요. <ph name="LINK_BEGIN" />자세히 알아보기<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_ky.xtb b/chrome/app/resources/generated_resources_ky.xtb
index 3dbcf2d..7208f49 100644
--- a/chrome/app/resources/generated_resources_ky.xtb
+++ b/chrome/app/resources/generated_resources_ky.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Өзгөчөлөштүрүлгөн</translation>
 <translation id="1178581264944972037">Бир азга токтотуу</translation>
 <translation id="117916940443676133">Коопсуздук ачкычы PIN код менен корголгон эмес. Кирүү дайындарын башкаруу үчүн, адегенде PIN код тузуңуз.</translation>
-<translation id="118069123878619799">- боюңуз сыяктуу физикалык мүнөздөмөлөрүңүз</translation>
 <translation id="1181037720776840403">Алып салуу</translation>
 <translation id="1183237619868651138">Жергиликтүү кэшке <ph name="EXTERNAL_CRX_FILE" /> орнотулбай жатат.</translation>
 <translation id="1185924365081634987">Бул тармак катасын оңдоо үчүн <ph name="GUEST_SIGNIN_LINK_START" />конок катары серептеп<ph name="GUEST_SIGNIN_LINK_END" /> көрсөңүз да болот.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381"><ph name="LOAD_STATE_PARAMETER" /> күтүүдө…</translation>
 <translation id="1495486559005647033">Мүмкүн болгон башка <ph name="NUM_PRINTERS" /> түзмөк.</translation>
 <translation id="1495677929897281669">Өтмөккө кайтуу</translation>
+<translation id="1499271269825557605">Эгер кеңейтүү тааныш көрүнбөсө же серепчиңиз ойдогудай иштебей жатса, кеңейтүүлөрдү бул жерден өчүрүп же ыңгайлаштырып алсаңыз болот.</translation>
 <translation id="1500297251995790841">Белгисиз түзмөк [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Бир нече профилге кирүү сеансында ушул негизги каттоо эсеби биринчи кириши керек.</translation>
 <translation id="150411034776756821"><ph name="SITE" /> сайтын алып салуу</translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Бул беттин камераңызды пайдалануу мүмкүнчүлүгү бөгөттөлгөн.</translation>
 <translation id="1507246803636407672">&amp;Жарактан чыгаруу</translation>
 <translation id="1508491105858779599">Түзмөктүн кулпусун ачуу үчүн манжаңызды манжа изинин сенсоруна коюңуз.</translation>
+<translation id="1508575541972276599">Учурдагы версия: Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">USB аркылуу каалаган <ph name="DEVICE_NAME_AND_VENDOR" /> түзмөккө мүмкүнчүлүк алуу</translation>
 <translation id="150962533380566081">Жараксыз PUK.</translation>
 <translation id="1510030919967934016">Бул бетке жайгашкан жериңизге көз салууга тыюу салынган.</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">Колдонуу</translation>
 <translation id="1603914832182249871">(Жашыруун)</translation>
 <translation id="1604432177629086300">Басылып чыгарылган жок. Принтерди текшерип, кайра аракет кылыңыз.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: Сырсөздү шайкештирүү иштеген жок</translation>
 <translation id="1607139524282324606">Киргизүүнү тазалоо</translation>
 <translation id="1608626060424371292">Бул колдонуучуну алып салуу</translation>
 <translation id="1608668830839595724">Тандалган нерселер үчүн дагы аракеттер</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">Хост колдонмосунун дайындары</translation>
 <translation id="1776712937009046120">Колдонуучу кошуу</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Бул түзмөктү <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> башкарат.
+    <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> аккаунтуңузга кирүү үчүн "Кийинки" баскычын чыкылдатыңыз.</translation>
 <translation id="1779652936965200207">Бул купуя ачкычты "<ph name="DEVICE_NAME" />" түзмөгүнө киргизиңиз:</translation>
 <translation id="1780152987505130652">Топту жабуу</translation>
 <translation id="1781291988450150470">Учурдагы PIN код</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">Аракет жеткиликсиз</translation>
 <translation id="2050339315714019657">Тигинен</translation>
 <translation id="2053312383184521053">Сенек абалындагы дайындар</translation>
+<translation id="2055585478631012616">Сиз бул сайттардан, анын ичинде ачылып турган өтмөктөрдөн чыгарыласыз</translation>
 <translation id="205560151218727633">Google Жардамчынын логотиби</translation>
 <translation id="2058456167109518507">Түзмөк табылды</translation>
 <translation id="2059913712424898428">Убакыт алкагы</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">Кайтаруу</translation>
 <translation id="2080070583977670716">Дагы жөндөөлөр</translation>
 <translation id="2087822576218954668">Басып чыгаруу: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN тармагы</translation>
 <translation id="2089566709556890888">Google Chrome менен коопсуз серептөө</translation>
 <translation id="2089795179672254991">Алмашуу буферине көчүргөн текстти жана сүрөттөрдү сайт көргүсү келгенде суралсын (сунушталат)</translation>
 <translation id="2090165459409185032">Каттоо эсебиңиздин маалыматын калыбына келтирүү үчүн, төмөнкүгө өтүңүз: google.com/accounts/recovery</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">Сайтка аудио жана видеокирүүлөрүн колдонууга уруксат берилди</translation>
 <translation id="2379281330731083556">Тутум диалогу аркылуу басып чыгаруу… <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Жөнөтүүдөн мурун суроо (сунушталат)</translation>
+<translation id="2382818385048255866">Кеңейтүүлөрүңүздү текшериңиз</translation>
 <translation id="2384436799579181135">Ката кетти. Принтериңизди текшерип, кайра аракет кылыңыз.</translation>
 <translation id="2387458720915042159">Проксинин туташуу түрү</translation>
 <translation id="2391419135980381625">Стандарттуу арип</translation>
@@ -1036,6 +1043,7 @@
 <translation id="2462724976360937186">Тастыктама борборунун ачкыч далдаштыргычы</translation>
 <translation id="2462752602710430187"><ph name="PRINTER_NAME" /> принтери кошулду</translation>
 <translation id="2464089476039395325">HTTP проксиси</translation>
+<translation id="2467267713099745100"><ph name="NETWORK_TYPE" /> тармагы, өчүк</translation>
 <translation id="2468205691404969808">Ал барактарга кирбесеңиз да, жеке тандоолоруңузду эстеп калуу үчүн cookie файлдарын колдонот</translation>
 <translation id="2468402215065996499">Тамагочи</translation>
 <translation id="2469259292033957819">Сакталган принтерлериңиз жок.</translation>
@@ -1290,6 +1298,7 @@
 <translation id="2800760947029405028">Сүрөттү жүктөп берүү</translation>
 <translation id="2803375539583399270">PIN кодду киргизиңиз</translation>
 <translation id="2804043232879091219">Кошумча серепчи ачылган жок</translation>
+<translation id="2804667941345577550">Сиз бул сайттан, анын ичинде ачылып турган өтмөктөрдөн чыгарыласыз.</translation>
 <translation id="2804680522274557040">Камера өчүк</translation>
 <translation id="2805646850212350655">Microsoft Шифрлөө файл тутуму</translation>
 <translation id="2805756323405976993">Колдонмолор</translation>
@@ -1297,6 +1306,7 @@
 <translation id="2806891468525657116">Кыска жол мурунтан бар</translation>
 <translation id="2807517655263062534">Жүктөлүп алынган файлдар бул жерде көрүнөт</translation>
 <translation id="2809586584051668049">жана дагы <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2810390687497823527">Эгер кеңейтүү тааныш көрүнбөсө же серепчиңиз ойдогудай иштебей жатса, кеңейтүүлөрдү бул жерден өчүрүп же ыңгайлаштырып алсаңыз болот.</translation>
 <translation id="2812049959647166806">Thunderbolt колдоого алынбайт</translation>
 <translation id="2812944337881233323">Чыгып, кайра кирип көрүңүз</translation>
 <translation id="2812989263793994277">Бир да сүрөт көрсөтүлбөсүн</translation>
@@ -1336,6 +1346,7 @@
 <translation id="2861941300086904918">Түпнуска Кардардын коопсуздугун башкаргыч</translation>
 <translation id="2864601841139725659">Профилиңиздин сүрөтүн коюп алыңыз</translation>
 <translation id="2865919525181940183">Экрандагы программалардын скриншоту</translation>
+<translation id="286674810810214575">Кубат булактары текшерилүүдө...</translation>
 <translation id="2867768963760577682">Кадалган өтмөк катары ачуу</translation>
 <translation id="2868746137289129307">Бул кеңейтүү эскирип, ишкана саясаты аркылуу өчүрүлгөн. Ал жаңыраак версия жеткиликтүү болгондо автоматтык түрдө иштетилиши мүмкүн.</translation>
 <translation id="2870560284913253234">Сайт</translation>
@@ -1413,6 +1424,7 @@
 <translation id="2972581237482394796">&amp;Кайталоо</translation>
 <translation id="2973324205039581528">Сайттын үнүн өчүрүү</translation>
 <translation id="2977480621796371840">Топтон алып салуу</translation>
+<translation id="2979520980928493164">Мурдагыдан да коопсуз жана ыңгайлуу Chrome</translation>
 <translation id="2979639724566107830">Жаңы терезеде ачуу</translation>
 <translation id="2981113813906970160">Чоң чычкан курсорун көрсөтүү</translation>
 <translation id="2982970937345031">Жашыруун кабарлоо</translation>
@@ -1519,6 +1531,7 @@
 <translation id="3143515551205905069">Шайкештештирүүнү жокко чыгаруу</translation>
 <translation id="3143754809889689516">Башынан баштап ойнотуу</translation>
 <translation id="3144647712221361880">Шилтемени төмөнкү катары ачуу</translation>
+<translation id="3145187901750964977">Виртуалдык машина орнотулган жок. Кайра аракет кылыңыз же уюмуңуздун түзмөгүнүн администраторуна кайрылыңыз. Ката коду: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Версиясы:
     <ph name="LINUX_VERSION" />
 
@@ -1557,6 +1570,7 @@
 <translation id="3192947282887913208">Аудио файлдар</translation>
 <translation id="3194737229810486521"><ph name="URL" /> түзмөгүңүзгө дайындарды биротоло сактаганы жатат</translation>
 <translation id="3199127022143353223">Серверлер</translation>
+<translation id="3201306578844503970">Тармак катасынан улам виртуалдык машина орнотулган жок. Кайра аракет кылыңыз же уюмуңуздун түзмөгүнүн администраторуна кайрылыңыз. Ката коду: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Жеткиликтүү USB түзмөктөрү ушул жерде көрүнөт.</translation>
 <translation id="3202131003361292969">Жол</translation>
 <translation id="3202173864863109533">Бул өтмөктүн үнү өчүрүлүүдө.</translation>
@@ -1893,7 +1907,6 @@
 <translation id="3678156199662914018">Кеңейтүү: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Ой пикириңиз үчүн чоң рахмат! Отчет Интернетке туташаарыңыз менен жөнөтүлөт.</translation>
 <translation id="3682824389861648626">Жылдыруу босогосу</translation>
-<translation id="3683023058278427253">Домениңиз үчүн берилген уруксаттамалардын бир нече түрү аныкталды. Улантуу үчүн бирөөнү тандаңыз.</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> экран бөлүшүү суранычы</translation>
 <translation id="368789413795732264">Файл жазылып жатканда ката кетти: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Колдонмодо ачылган файлдарга жана папкаларга жазыңыз</translation>
@@ -2067,6 +2080,7 @@
 <translation id="389589731200570180">Коноктор менен бөлүшүү</translation>
 <translation id="389901847090970821">Баскычтопту тандоо</translation>
 <translation id="3899879303189199559">Бир жылдан бери офлайнда.</translation>
+<translation id="3900789207771372462">Айрым кеңейтүүлөр көрүлгөн вебсайттарды, анын ичинде жеке маалыматыңызды көрө алышат.</translation>
 <translation id="3900966090527141178">Сырсөздөрдү экспорттоо</translation>
 <translation id="3901991538546252627"><ph name="NAME" /> менен туташууда</translation>
 <translation id="3905761538810670789">Колдонмону оңдоо</translation>
@@ -2157,7 +2171,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" бул серепчидеги мүчүлүштүктөрдү таап, оңдоп жатат</translation>
 <translation id="4014432863917027322">"<ph name="EXTENSION_NAME" />" оңдойсузбу?</translation>
 <translation id="4015163439792426608">Кеңейтүүлөрүңүз барбы? <ph name="BEGIN_LINK" />Кеңейтүүлөрдү башкарыңыз<ph name="END_LINK" />.</translation>
-<translation id="4020106588733303597">Ой!  Тутум жеткиликтүү уруксаттамаларды жүктөй алган жок.</translation>
 <translation id="4020327272915390518">Параметрлер менюсу</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">Сөздүккө &amp;кошуу</translation>
@@ -2195,6 +2208,7 @@
 <translation id="407520071244661467">Масштаб</translation>
 <translation id="4075639477629295004"><ph name="FILE_NAME" /> тышкы экранга чыгарылбай жатат.</translation>
 <translation id="4077917118009885966">Бул сайттагы жарнамалар бөгөттөлдү</translation>
+<translation id="4077919383365622693"><ph name="SITE" /> сайты сактаган бардык маалымат менен cookie файлдары жок кылынат.</translation>
 <translation id="4079140982534148664">Жакшыртылган орфографиялык текшерүү функциясын колдонуу</translation>
 <translation id="4081242589061676262">Файлды тышкы экранга чыгаруу мүмкүн эмес.</translation>
 <translation id="4084682180776658562">Кыстарма</translation>
@@ -2269,6 +2283,7 @@
 <translation id="4181841719683918333">Тилдер</translation>
 <translation id="4184885522552335684">Дисплейди жылдыруу үчүн сүйрөңүз</translation>
 <translation id="4194570336751258953">Таптап-чыкылдатууну иштетүү</translation>
+<translation id="4194595472342532425">Конфигурациялоо маселесинен улам Plugin VM жөндөлгөн жок. Уюмуңуздун түзмөгүнүн администраторуна кайрылыңыз. Ката коду: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Жаңы өтмөктө ачуу</translation>
 <translation id="4195814663415092787">Чыгып кеткен жерден улантыңыз</translation>
 <translation id="4198146608511578238">Google Жардамчыңызга кайрылуу үчүн Жүргүзгүчтүн сүрөтчөсүн басып туруңуз.</translation>
@@ -2492,6 +2507,7 @@
 <translation id="4549791035683739768">Коопсуздук ачкычыңызда сакталган манжаларыңыздын издери жок</translation>
 <translation id="4551763574344810652">Артка кайтаруу үчүн "<ph name="MODIFIER_KEY_DESCRIPTION" />" баскычтарын басыңыз</translation>
 <translation id="4552089082226364758">Жарк этме</translation>
+<translation id="4552759165874948005"><ph name="NETWORK_TYPE" /> тармагы, сигналдын күчү <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">Тышкы кеңейтүү учурдагыга окшош же версиясы эскирээк.</translation>
 <translation id="4555769855065597957">Көлөкө</translation>
 <translation id="4555863373929230635">Сырсөздөрдү Google аккаунтуңузга сактоо үчүн кирип, шайкештирүүнү күйгүзүңүз.</translation>
@@ -2569,6 +2585,7 @@
 <translation id="4665446389743427678"><ph name="SITE" /> сайтында сакталган бардык дайындар жок кылынат.</translation>
 <translation id="4668721319092543482"><ph name="PLUGIN_NAME" /> плагинин иштетүү үчүн аны чыкылдатыңыз</translation>
 <translation id="4672657274720418656">Бетти тазалоо</translation>
+<translation id="46733273239502219">Орнотулган колдонмолордогу оффлайн маалымат да тазаланат</translation>
 <translation id="4673442866648850031">Стилус алынганда, стилус куралдары ачылсын</translation>
 <translation id="4677585247300749148"><ph name="URL" /> атайын мүмкүнчүлүктөрдү иштетүүгө уруксат суроодо</translation>
 <translation id="4677772697204437347">GPU эстутуму</translation>
@@ -2660,7 +2677,6 @@
 <translation id="4823484602432206655">Колдонуучунун жана түзмөктүн жөндөөлөрүн окуп, өзгөртүү</translation>
 <translation id="4824958205181053313">Шайкештештирүү жокко чыгарылсынбы?</translation>
 <translation id="4827675678516992122">Туташпай койду</translation>
-<translation id="4828937774870308359">Австралиялык</translation>
 <translation id="4829768588131278040">PIN кодуңузду жөндөңүз</translation>
 <translation id="4830502475412647084">OS жаңыртуусу орнотулууда</translation>
 <translation id="4830573902900904548"><ph name="DEVICE_TYPE" /> түзмөгүңүз <ph name="NETWORK_NAME" /> аркылуу Интернетке туташа албайт. Башка тармакты тандаңыз. <ph name="LEARN_MORE_LINK_START" />Көбүрөөк билүү<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2701,6 +2717,7 @@
 <translation id="4876273079589074638">Бул бузулууну изилдеп, аны оңдоо үчүн биздин инженерлерге жардам бериңиз. Эгер мүмкүн болсо, кадамдарды так тизмелеп бериңиз. Бардык маалымат маанилүү!</translation>
 <translation id="4876895919560854374">Экранды кулпулоо жана кулпусун ачуу</translation>
 <translation id="4877276003880815204">Элементтерди иликтөө</translation>
+<translation id="4878653975845355462">Жеке фондорду администраторуңуз өчүрүп койгон</translation>
 <translation id="4879491255372875719">Автоматтык (демейки)</translation>
 <translation id="4880328057631981605">Жетки чекитинин аты</translation>
 <translation id="4880827082731008257">Издөө таржымалы</translation>
@@ -2756,10 +2773,10 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" сериялык портко туташканы жатат</translation>
 <translation id="4944310289250773232">Бул аутентификация кызматынын башкы түйүнү - <ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">Аракеттер</translation>
+<translation id="4952981627953231344">Plugin VM'ди бул түзмөктө колдонууга болбойт. Уюмуңуздун түзмөгүнүн администраторуна кайрылыңыз.</translation>
 <translation id="4953689047182316270">Атайын мүмкүнчүлүктөрдү иштетүү</translation>
 <translation id="4953808748584563296">Демейки ток сары аватар</translation>
 <translation id="4955710816792587366">PIN кодуңузду тандаңыз</translation>
-<translation id="4955814292505481804">Жылдык</translation>
 <translation id="4959262764292427323">Бардык түзмөктөрүңүздө колдонуу үчүн сырсөздөр Google аккаунтуңузда сакталат</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Бул колдонмону администраторуңуз орноткон.</translation>
@@ -3241,7 +3258,6 @@
 <translation id="5659593005791499971">Электрондук почта</translation>
 <translation id="5659833766619490117">Бул барак которулбай койду</translation>
 <translation id="5660204307954428567"><ph name="DEVICE_NAME" /> менен жупташтырыңыз</translation>
-<translation id="5662477687021125631">Чектөөсүз</translation>
 <translation id="5667546120811588575">Google Play жөндөлүүдө…</translation>
 <translation id="5669267381087807207">Жандырылууда</translation>
 <translation id="5669691691057771421">Жаңы PIN киргизиңиз</translation>
@@ -3257,6 +3273,7 @@
 <translation id="5687326903064479980">Убакыт алкагы</translation>
 <translation id="5689516760719285838">Жайгашкан жер</translation>
 <translation id="56907980372820799">Шилтеме дайындары</translation>
+<translation id="5691180005790455277"><ph name="SITE_GROUP_NAME" /> сайтында жана ага тийиштүү башка сайттарда сакталган бардык маалымат жана cookie файлдары жок кылынат.</translation>
 <translation id="5691511426247308406">Үй-бүлөлүк</translation>
 <translation id="5692183275898619210">Басылып чыгарылды</translation>
 <translation id="5696143504434933566">"<ph name="EXTENSION_NAME" />" адепсиздиги тууралуу кабарлоо</translation>
@@ -3343,7 +3360,6 @@
 <translation id="5815645614496570556">X.400 Дарек</translation>
 <translation id="5816434091619127343">Принтердин конфигурациясы сиз каалагандай өзгөртүлсө, ал иштебей калат.</translation>
 <translation id="5817918615728894473">Жупташтыруу</translation>
-<translation id="5819762621475381970">- бөлмөңүздүн көрүнүшү</translation>
 <translation id="5821565227679781414">Кыска жол түзүү</translation>
 <translation id="5825412242012995131">Күйүк (сунушталат)</translation>
 <translation id="5826395379250998812"><ph name="DEVICE_TYPE" /> түзмөгүңүздү телефонго туташтырыңыз. <ph name="LINK_BEGIN" />Көбүрөөк билүү<ph name="LINK_END" /></translation>
@@ -3479,6 +3495,7 @@
 <translation id="6007240208646052708">Сиздин тилде үн менен издөө функциясы иштебейт.</translation>
 <translation id="6009781704028455063">Орнотулган сенсор</translation>
 <translation id="6010869025736512584">Видео киришти колдонууда</translation>
+<translation id="6011074160056912900">Ethernet тармагы</translation>
 <translation id="6011193465932186973">Манжа изи</translation>
 <translation id="6011449291337289699">Сайттын дайындарын тазалаңыз</translation>
 <translation id="6015266928248016057">Жараксыз PUK. Калган аракеттердин саны: <ph name="RETRIES" />.</translation>
@@ -3515,6 +3532,7 @@
 <translation id="6053401458108962351">&amp;Серептөө дайындарын тазалап салуу…</translation>
 <translation id="6055171183283175969">Киргизилген сырсөз туура эмес.</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 RSA шифрлөөсү менен</translation>
+<translation id="6055907707645252013"><ph name="NETWORK_TYPE" /> тармагы, туташкан жок</translation>
 <translation id="6056710589053485679">Кадимки кайра жүктөө</translation>
 <translation id="6057381398996433816">Бул сайттын кыймыл жана жарык сенсорлорун колдонуу мүмкүнчүлүгү бөгөттөлгөн.</translation>
 <translation id="6058567592298841668">Виртуалдык машинаны саюу: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3578,6 +3596,7 @@
 <translation id="6136114942382973861">Жүктөлүп алынгандар тилкесин жабуу</translation>
 <translation id="6137767437444130246">Колдонуучунун тастыктамасы</translation>
 <translation id="6138680304137685902">X9.62 ECDSA Колтамгасы SHA-384 менен</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, тармак жок</translation>
 <translation id="6141988275892716286">Жүктөп алууну ырастаңыз</translation>
 <translation id="6143186082490678276">Жардам алуу</translation>
 <translation id="6144938890088808325">Chromebooks'ту жакшыртууга жардам бериңиз</translation>
@@ -3884,6 +3903,7 @@
 <translation id="6602956230557165253">Сол жана оң жебе баскычтарын колдонуп чабыттаңыз.</translation>
 <translation id="6605847144724004692">Колдонуучулар баалай элек.</translation>
 <translation id="6607831829715835317">Көбүрөөк кура&amp;л</translation>
+<translation id="6611972847767394631">Өтмөктөрүңүздү бул жерден табасыз</translation>
 <translation id="6612358246767739896">Корголгон мазмун</translation>
 <translation id="6615455863669487791">Көрсөтчү гана</translation>
 <translation id="6618097958368085618">Баары бир кала берсин</translation>
@@ -3952,6 +3972,7 @@
 <translation id="6709133671862442373">Жаңылыктар</translation>
 <translation id="6709357832553498500"><ph name="EXTENSIONNAME" /> менен туташуу</translation>
 <translation id="6710213216561001401">Мурунку</translation>
+<translation id="6715803357256707211">Linux колдонмосун орнотуу учурунда ката кетти. Чоо-жайын көрүү үчүн билдирмени чыкылдатыңыз.</translation>
 <translation id="6721678857435001674">Коопсуздук ачкычынын өндүрүүчүсүн жана үлгүсүн көрүү</translation>
 <translation id="6721972322305477112">&amp;Файл</translation>
 <translation id="672213144943476270">Конок катары серептөөдөн мурун, профилиңиздин кулпусун ачыңыз.</translation>
@@ -3976,7 +3997,6 @@
 <translation id="674632704103926902">Таптап сүйрөөнү иштетүү</translation>
 <translation id="6748217015615267851">Видеону иштеп чыгуу: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Уланта берсеңиз болот, бирок шайкештирилген гана дайындарыңыз менен жөндөөлөрүңүз калыбына келтирилет. Жергиликтүү дайындардын баары жоготулат.</translation>
-<translation id="6748775883310276718">Бир колдонмого арналган киоск</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Жашыруун)</translation>
 <translation id="6757101664402245801">URL көчүрүлдү</translation>
 <translation id="6758056191028427665">Биздин ишибиз тууралуу билдирип коюңуз.</translation>
@@ -3986,6 +4006,7 @@
 <translation id="6769712124046837540">Принтер кошуу…</translation>
 <translation id="6770664076092644100">NFC аркылуу ырастоо</translation>
 <translation id="6771503742377376720">Тастыктама борбору</translation>
+<translation id="6772339735733515807">Кеңейтүүлөрүңүздү башкарыңыз</translation>
 <translation id="6775163072363532304">Жеткиликтүү түзмөктөр бул жерден көрүнөт.</translation>
 <translation id="6777817260680419853">Багыттоо бөгөттөлгөн</translation>
 <translation id="6778737459546443941">Ата-энеңиз буга уруксат бере элек</translation>
@@ -4124,6 +4145,7 @@
 <translation id="6972180789171089114">Аудио/Видео</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> бул папкадагы файлдарды ача албайт, себеби анда тутум файлдары бар</translation>
 <translation id="6972754398087986839">Баштоо</translation>
+<translation id="6973611239564315524">Debian 10 (Buster) версиясы жеткиликтүү</translation>
 <translation id="6974609594866392343">Оффлайн демо режими</translation>
 <translation id="6977381486153291903">Орнотулган программаны оңдоо</translation>
 <translation id="6978121630131642226">Издөө каражаттары</translation>
@@ -4583,6 +4605,7 @@
 <translation id="7644543211198159466">Түс жана тема</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (ээси)</translation>
 <translation id="7645681574855902035">Linux'тун камдык көчүрмөсүн сактоо жокко чыгарылууда</translation>
+<translation id="7646772052135772216">Сырсөздү шайкештирүү иштеген жок</translation>
 <translation id="7647403192093989392">Акыркы аракеттер жок</translation>
 <translation id="7648992873808071793">Ушул түзмөккө файлдарды сактайт</translation>
 <translation id="7649070708921625228">Жардам</translation>
@@ -4771,6 +4794,7 @@
 <translation id="7877451762676714207">Белгисиз сервер катасы. Кайра аракет кылыңыз же сервер администраторуна кайрылыңыз.</translation>
 <translation id="7877680364634660272">Карап чыгуу</translation>
 <translation id="7878562273885520351">Сырсөзүңүздү башка адамдар бузуп кирген окшойт</translation>
+<translation id="7879631849810108578">Ыкчам баскыч коюлду: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Түзмөк өчүрүлүп күйгүзүлгөндө, түзмөктөгү дайындар жок кылынат</translation>
 <translation id="7881483672146086348">Каттоо эсебин көрүү</translation>
 <translation id="7882358943899516840">Жабдуучунун түрү</translation>
@@ -4857,6 +4881,7 @@
 <translation id="7987814697832569482">Ар дайым ушул VPN аркылуу туташуу</translation>
 <translation id="7988355189918024273">Атайын мүмкүнчүлүктөр иштетилсин</translation>
 <translation id="7991296728590311172">Switch Access жөндөөлөрү</translation>
+<translation id="7994350303002908848">Plugin VM орнотулган жок. Кайра аракет кылыңыз же уюмуңуздун түзмөгүнүн администраторуна кайрылыңыз. Ката коду: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">EAP ыкмасы</translation>
 <translation id="7997826902155442747">Процесстин артыкчылыгы</translation>
 <translation id="7999229196265990314">Төмөнкү файлдарды түздү:
@@ -4948,7 +4973,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Үчүнчү тараптын cookie файлдары жок}=1{Үчүнчү тараптын 1 cookie файлы бөгөттөлдү}other{Үчүнчү тараптын # cookie файлы бөгөттөлдү}}</translation>
 <translation id="810875025413331850">Жакынкы түзмөктөр табылган жок.</translation>
 <translation id="8111155949205007504">Бул сырсөздү iPhone’уңуз менен бөлүшүңүз</translation>
-<translation id="8113043281354018522">Уруксаттаманын түрүн тандоо</translation>
 <translation id="8114875720387900039">Туурасынан бөлүү</translation>
 <translation id="8116972784401310538">&amp;Кыстармаларды башкаргыч</translation>
 <translation id="8117620576188476503">Абал тактасынын жардамы менен байланыштарды, жаңыртууларды жана жөндөөлөрдү башкарыңыз. Бул жерге баскычтоп аркылуу өтүү үчүн Alt + Shift + S баскычтарын басыңыз.</translation>
@@ -5105,6 +5129,7 @@
 <translation id="8327039559959785305">Linux файлдарын кошуу учурундагы ката. Кайра аракет кылыңыз.</translation>
 <translation id="8335587457941836791">Текчеден бошотуу</translation>
 <translation id="8336407002559723354">Жаңыртуулар <ph name="MONTH_AND_YEAR" /> аяктайт</translation>
+<translation id="8336721153892716270">Тутум текстин <ph name="LANGUAGE" /> тилинде көрсөтүү үчүн түзмөктү өчүрүп күйгүзүңүз</translation>
 <translation id="8336739000755212683">Түзмөктөгү аккаунттун сүрөтүн өзгөртүү</translation>
 <translation id="8337047789441383384">Бул коопсуздук ачкычын мурунтан эле каттап койгонсуз. Аны кайра каттоонун кажети жок.</translation>
 <translation id="8338952601723052325">Иштеп чыгуучунун вебсайты</translation>
@@ -5148,6 +5173,7 @@
 <translation id="8400146488506985033">Байланыштарды башкаруу</translation>
 <translation id="8401432541486058167">Акылдуу картаңыз менен байланышкан PIN кодду киргизиңиз.</translation>
 <translation id="8405046151008197676">Акыркы жаңыртуу жөнүндө маалымат алыңыз</translation>
+<translation id="8408068190360279472"><ph name="NETWORK_TYPE" /> тармагы, туташууда</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Адегенде суралсын (сунушталат)</translation>
 <translation id="8418445294933751433">&amp;Өтмөк катарында көрсөтүү</translation>
@@ -5437,6 +5463,7 @@
 <translation id="8807632654848257479">Туруктуу</translation>
 <translation id="8808478386290700967">Желе дүкөнү</translation>
 <translation id="8808686172382650546">Мышык</translation>
+<translation id="8808744862003883508">Бул баракта Chrome'до орнотулган кеңейтүүлөрдүн баарын көрөсүз.</translation>
 <translation id="8809147117840417135">Мала көгүш жашыл</translation>
 <translation id="8813698869395535039"><ph name="USERNAME" /> катары кирүү мүмкүн эмес</translation>
 <translation id="8813811964357448561">кагаз барактары</translation>
@@ -5664,7 +5691,6 @@
 <translation id="9121814364785106365">Кадалган өтмөк катары ачуу</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> тындырылды</translation>
 <translation id="9124003689441359348">Сакталган сырсөздөр бул жерден көрүнөт</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> калды)</translation>
 <translation id="9128317794749765148">Жөндөө аягына чыккан жок</translation>
 <translation id="9128870381267983090">Тармакка туташуу</translation>
 <translation id="9130015405878219958">Жараксыз режим киргизилди.</translation>
@@ -5703,6 +5729,7 @@
 <translation id="9188732951356337132">Колдонуу жана мүчүлүштүктөрдү аныктоо дайындарын жөнөтүү. Учурда бул түзмөк мүчүлүштүктөрдү аныктоо маалыматын, түзмөктүн жана колдонмонун иштетилиши жөнүндө дайындарды Google'га автоматтык түрдө жөнөтүп жатат. Бул маалымат балаңыздын өздүгүн аныктоо үчүн колдонулбайт жана тутум менен колдонмонун кыйла туруктуу иштешин камсыз кылууга жана башка нерселерди жакшыртууга көмөктөшөт. Айрым дайындар тобу Google колдонмолоруна жана Android'дин иштеп чыгуучулары сыяктуу өнөктөштөрүнө да жардам берет. Эгер кошумча Колдонмолор жана Интернеттеги аракеттер таржымалы балаңыз үчүн күйгүзүлгөн болсо, бул дайындар анын Google аккаунтуна сакталышы мүмкүн. <ph name="BEGIN_LINK2" />Кеңири маалымат<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + алдын-ала бөлүшүлгөн ачкыч</translation>
 <translation id="920045321358709304"><ph name="SEARCH_ENGINE" /> аркылуу издөө</translation>
+<translation id="9201023452444595544">Баардык оффлайн маалыматы тазаланат</translation>
 <translation id="9201220332032049474">Экранды кулпулоо параметрлери</translation>
 <translation id="9203398526606335860">&amp;Профилдөө иштетилди</translation>
 <translation id="9203904171912129171">Түзмөк тандоо</translation>
@@ -5715,6 +5742,7 @@
 <translation id="9220525904950070496">Аккаунтту алып салуу</translation>
 <translation id="9220820413868316583">Көтөрүп, кайра аракет кылыңыз.</translation>
 <translation id="923467487918828349">Баарын көрсөтүү</translation>
+<translation id="929117907539171075">Орнотулган колдонмодогу оффлайн маалымат да тазаланат</translation>
 <translation id="930268624053534560">Убакыт мөөрлөрүнүн чоо-жайы</translation>
 <translation id="932327136139879170">Башкы</translation>
 <translation id="932508678520956232">Басып чыгаруу аракети башталбай калды.</translation>
@@ -5740,6 +5768,7 @@
 <translation id="960719561871045870">Оператордун коду</translation>
 <translation id="960987915827980018">1 сааттай убакыт калды</translation>
 <translation id="962802172452141067">Кыстарма папкасынын даракчасы</translation>
+<translation id="964057662886721376">Айрым кеңейтүүлөр, өзгөчө орноткуңуз келбегендери ылдамдыкты төмөндөтүшү мүмкүн.</translation>
 <translation id="964286338916298286">IT администраторуңуз түзмөгүңүз үчүн Chrome Goodies'ти өчүрүп койгон.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Колдонмо}other{Колдонмолор}}</translation>
 <translation id="965211523698323809">SMS билдирүүлөрүн <ph name="DEVICE_TYPE" /> түзмөгүнөн жөнөтүп, ала аласыз. <ph name="LINK_BEGIN" />Көбүрөөк билүү<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_lo.xtb b/chrome/app/resources/generated_resources_lo.xtb
index 3f4c998..661ddeab 100644
--- a/chrome/app/resources/generated_resources_lo.xtb
+++ b/chrome/app/resources/generated_resources_lo.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">ກໍານົດເອງ</translation>
 <translation id="1178581264944972037">ຢຸດຊົ່ວຄາວ</translation>
 <translation id="117916940443676133">ກະແຈຄວາມປອດໄພຂອງທ່ານບໍ່ໄດ້ຮັບການປົກປ້ອງດ້ວຍ PIN. ເພື່ອຈັດການຂໍ້ມູນການເຂົ້າສູ່ລະບົບ, ກ່ອນອື່ນໃຫ້ສ້າງ PIN.</translation>
-<translation id="118069123878619799">- ລັກສະນະຮ່າງກາຍຂອງທ່ານ ເຊັ່ນ: ລວງສູງ</translation>
 <translation id="1181037720776840403">ລຶບອອກ</translation>
 <translation id="1183237619868651138">ບໍ່​ສາ​ມາດ​ຕິດ​ຕັ້ງ <ph name="EXTERNAL_CRX_FILE" /> ຢູ່ໃນແຄຊ໌ກັບທີ່ໄດ້​.</translation>
 <translation id="1185924365081634987">ທ່ານຍັງອາດຈະລອງ <ph name="GUEST_SIGNIN_LINK_START" />ທ່ອງເນັດເປັນແຂກ<ph name="GUEST_SIGNIN_LINK_END" /> ເພື່ອແກ້ໄຂຄວາມຜິດພາດຂອງເຄືອຂ່າຍນີ້ເບິ່ງ.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">ກໍາລັງລໍຖ້າ <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> ອຸ​ປະ​ກອນ​ທີ່​ມີ​ຢູ່​ອື່ນໆ​.</translation>
 <translation id="1495677929897281669">ກັບຄືນຫາແຖບ</translation>
+<translation id="1499271269825557605">ຖ້າທ່ານບໍ່ຮູ້ຈັກສ່ວນຂະຫຍາຍໃດໜຶ່ງ ຫຼື ຖ້າໂປຣແກຣມທ່ອງເວັບຂອງທ່ານບໍ່ເຮັດວຽກຕາມທີ່ຄາດໄວ້, ທ່ານສາມາດປິດ ຫຼື ປັບແຕ່ງສ່ວນຂະຫຍາຍໄດ້ຢູ່ບ່ອນນີ້.</translation>
 <translation id="1500297251995790841">ອຸປະກອນທີ່ບໍ່ຮູ້ຈັກ [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">ບັນຊີຜູ້ເປັນເຈົ້າຂອງຕ້ອງເປັນບັນຊີລົງຊື່ເຂົ້າໃຊ້ທໍາອິດຢູ່ໃນຊ່ວງເວລາເຂົ້າໃຊ້ການລົງຊື່ເຂົ້າໃຊ້ຫຼາຍອັນ.</translation>
 <translation id="150411034776756821">ລຶບ <ph name="SITE" /> ອອກ</translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">ໜ້ານີ້ຖືກບລັອກຈາກການເຂົ້າໃຊ້ກ້ອງຖ່າຍຮູບຂອງທ່ານ.</translation>
 <translation id="1507246803636407672">ກໍາຈັດຖິ້ມ</translation>
 <translation id="1508491105858779599">ວາງນິ້ວມືຂອງທ່ານໃສ່ເຊັນເຊີລາຍນິ້ວມືເພື່ອປົດລັອກອຸປະກອນ.</translation>
+<translation id="1508575541972276599">ເວີຊັນປັດຈຸບັນຄື Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">ເຂົ້າ​ຫາ <ph name="DEVICE_NAME_AND_VENDOR" /> ໃດ​ໜຶ່ງ​ຜ່ານ USB</translation>
 <translation id="150962533380566081">PUK ທີ່ຖືກຕ້ອງ.</translation>
 <translation id="1510030919967934016">ໜ້ານີ້ຖືກບລັອກຈາກການຕິດຕາມທີ່ຕັ້ງຂອງທ່ານ.</translation>
@@ -432,6 +433,7 @@
 <translation id="1601560923496285236">ນໍາໃຊ້</translation>
 <translation id="1603914832182249871">(ບໍ່​ເຜີຍ​ຕົນ​ຕົວ)</translation>
 <translation id="1604432177629086300">ບໍ່ສາມາດພິມໄດ້. ກວດເບິ່ງເຄື່ອງພິມ ແລ້ວລອງອີກຄັ້ງ.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: ການຊິ້ງຂໍ້ມູນລະຫັດຜ່ານບໍ່ເຮັດວຽກ</translation>
 <translation id="1607139524282324606">ລຶບລ້າງລາຍການຂໍ້ມູນ</translation>
 <translation id="1608626060424371292">ເອົາ​ຜູ້​ໃຊ້​ນີ້ອອກໄປ</translation>
 <translation id="1608668830839595724">ຄຳສັ່ງເພີ່ມເຕີມສຳລັບລາຍການທີ່ເລືອກ</translation>
@@ -558,6 +560,8 @@
 <translation id="177336675152937177">ຂໍ້ມູນແອັບທີ່ເປັນແມ່ຂ່າຍ</translation>
 <translation id="1776712937009046120">ເພີ່ມຜູ້ໃຊ້</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">ອຸປະກອນນີ້ຖືກຈັດການໂດຍ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    ກະລຸນາຄລິກ "ຕໍ່ໄປ" ເພື່ອສືບຕໍ່ການເຂົ້າສູ່ລະບົບບັນຊີ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ຂອງທ່ານ.</translation>
 <translation id="1779652936965200207">ກະລຸນາໃສ່ລະຫັດຜ່ານນີ້ຢູ່ໃນ "<ph name="DEVICE_NAME" />":</translation>
 <translation id="1780152987505130652">ປິດກຸ່ມ</translation>
 <translation id="1781291988450150470">PIN ປັດຈຸບັນ</translation>
@@ -745,6 +749,7 @@
 <translation id="2048653237708779538">ຄຳສັ່ງບໍ່ສາມາດໃຊ້ໄດ້</translation>
 <translation id="2050339315714019657">ລວງຕັ້ງ</translation>
 <translation id="2053312383184521053">ຂໍ້ມູນສະພາວະຢູ່ຊື່ໆ</translation>
+<translation id="2055585478631012616">ທ່ານຈະຖືກນຳອອກຈາກລະບົບເວັບໄຊເຫຼົ່ານີ້, ຮວມທັງໃນແຖບທີ່ເປີດຢູ່</translation>
 <translation id="205560151218727633">ໂລໂກ້ຜູ້ຊ່ວຍ Google</translation>
 <translation id="2058456167109518507">ກວດພົບອຸປະກອນ</translation>
 <translation id="2059913712424898428">ເຂດເວລາ</translation>
@@ -760,6 +765,7 @@
 <translation id="2079545284768500474">ບໍ່ເຮັດ</translation>
 <translation id="2080070583977670716">ການຕັ້ງຄ່າເພີ່ມເຕີມ</translation>
 <translation id="2087822576218954668">ພິມ​: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">ເຄືອຂ່າຍ VPN</translation>
 <translation id="2089566709556890888">ທ່ອງເວັບຢ່າງປອດໄພດ້ວຍ Google Chrome</translation>
 <translation id="2089795179672254991">ຖາມເມື່ອເວັບໄຊຕ້ອງການເຫັນຂໍ້ຄວາມ ແລະ ຮູບພາບທີ່ສຳເນົາໄວ້ໃນຄລິບບອດ (ແນະນຳ)</translation>
 <translation id="2090165459409185032">ເພື່ອ​ກູ້​ຂໍ້​ມູນ​ບັນ​ຊີ​ຂອງ​ທ່ານ​ຄືນ, ໃຫ້ໄປ​ທີ່: google.com/accounts/recovery</translation>
@@ -983,6 +989,7 @@
 <translation id="2379232090534544565">ເວັບໄຊກຳລັງເຂົ້າເຖິງອິນພຸດສຽງ ແລະ ວິດີໂອ</translation>
 <translation id="2379281330731083556">ພິມ​ດ້ວຍການໃຊ້​ກ່ອງ​ລະ​ບົບ... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">ຖາມ​ກ່ອນ​ສົ່ງ (ແນະ​ນຳ​ໃຫ້)</translation>
+<translation id="2382818385048255866">ກວດເບິ່ງສ່ວນຂະຫຍາຍຂອງທ່ານ</translation>
 <translation id="2384436799579181135">ເກີດຄວາມຜິດພາດຂຶ້ນ. ກະລຸນາກວດເບິ່ງເຄື່ອງພິມຂອງທ່ານ ແລ້ວລອງອີກຄັ້ງ.</translation>
 <translation id="2387458720915042159">ປະເພດການເຊື່ອມຕໍ່ພຣັອກຊີ</translation>
 <translation id="2391419135980381625">ຟອນມາດ​ຕະ​ຖານ</translation>
@@ -1034,6 +1041,7 @@
 <translation id="2462724976360937186">ID ລະຫັດໜ່ວຍງານຢັ້ງຢືນ</translation>
 <translation id="2462752602710430187">ເພີ່ມ <ph name="PRINTER_NAME" /> ແລ້ວ</translation>
 <translation id="2464089476039395325">ພຣັອກຊີ HTTP</translation>
+<translation id="2467267713099745100">ເຄືອຂ່າຍ <ph name="NETWORK_TYPE" />, ປິດຢູ່</translation>
 <translation id="2468205691404969808">ໃຊ້ຄຸກກີ້ເພື່ອຈື່ການຕັ້ງຄ່າຂອງທ່ານ, ເຖິງແມ່ນວ່າທ່ານບໍ່ໄດ້ເຂົ້າເບິ່ງໜ້າເຫຼົ່ານັ້ນກໍຕາມ</translation>
 <translation id="2468402215065996499">ທາມາກັອດຈິ</translation>
 <translation id="2469259292033957819">ທ່ານບໍ່ມີເຄື່ອງພິມທີ່ບັນທຶກໄວ້ໃດໆ.</translation>
@@ -1288,6 +1296,7 @@
 <translation id="2800760947029405028">ອັບໂຫລດຮູບ</translation>
 <translation id="2803375539583399270">ປ້ອນ PIN</translation>
 <translation id="2804043232879091219">ບໍ່ສາມາດເປີດໂປຣແກຣມທ່ອງເວັບສຳຮອງໄດ້</translation>
+<translation id="2804667941345577550">ທ່ານຈະຖືກນຳອອກຈາກລະບົບເວັບໄຊນີ້, ຮວມທັງໃນແຖບທີ່ເປີດຢູ່</translation>
 <translation id="2804680522274557040">ປິດກ້ອງຖ່າຍຮູບແລ້ວ</translation>
 <translation id="2805646850212350655">ລະ​ບົບ​ໄຟລ​໌ການໃສ່ລະຫັດ Microsoft</translation>
 <translation id="2805756323405976993">ແອັບ</translation>
@@ -1295,6 +1304,7 @@
 <translation id="2806891468525657116">ມີທາງລັດນັ້ນຢູ່ກ່ອນແລ້ວ</translation>
 <translation id="2807517655263062534">ໄຟລ໌ທີ່ທ່ານດາວໂຫຼດປາກົດຢູ່ບ່ອນນີ້</translation>
 <translation id="2809586584051668049">ແລະ <ph name="NUMBER_ADDITIONAL_DISABLED" /> ເພີ່ມອີກ</translation>
+<translation id="2810390687497823527">ຖ້າທ່ານບໍ່ຮູ້ຈັກສ່ວນຂະຫຍາຍໃດໜຶ່ງ ຫຼື ຖ້າໂປຣແກຣມທ່ອງເວັບຂອງທ່ານບໍ່ເຮັດວຽກຕາມທີ່ຄາດໄວ້, ທ່ານສາມາດປິດ ຫຼື ປັບແຕ່ງສ່ວນຂະຫຍາຍໄດ້ຢູ່ບ່ອນນີ້.</translation>
 <translation id="2812049959647166806">ບໍ່ຮອງຮັບ Thunderbolt</translation>
 <translation id="2812944337881233323">ລອງອອກຈາກລະບົບ ແລ້ວກັບເຂົ້າສູ່ລະບົບອີກຄັ້ງ</translation>
 <translation id="2812989263793994277">ຢ່າສະແດງຮູບໃດອີກ</translation>
@@ -1334,6 +1344,7 @@
 <translation id="2861941300086904918">ຕົວຈັດການຄວາມປອດໄພລູກຂ່າຍເດີມ</translation>
 <translation id="2864601841139725659">ຕັ້ງຄ່າຮູບໂປຣໄຟລ໌ຂອງທ່ານ</translation>
 <translation id="2865919525181940183">ພາບໜ້າຈໍຂອງໂປຣແກຣມທີ່ປັດຈຸບັນຢູ່ໃນໜ້າຈໍ</translation>
+<translation id="286674810810214575">ກຳລັງກວດແຫຼ່ງພະລັງງານ...</translation>
 <translation id="2867768963760577682">ເປີດ​ເປັນ​ແຖບປັກໝຸດແລ້ວ</translation>
 <translation id="2868746137289129307">ສ່ວນ​ຂະ​ຫຍາຍ​ນີ້​ຫຼ້າ​ສະ​ໄໝ ແລະ​ຖືກ​ປິດ​ໃຊ້​ງານ​ຕາມ​ນະ​ໂຍ​ບາຍ​ວິ​ສາ​ຫະ​ກິດ​ແລ້ວ. ມັນ​ອາດ​ຈະ​ຖືກ​ເປີດ​ໃຊ້​ງານ​ອັດ​ຕະ​ໂນ​ມັດ ເມື່ອ​ມີ​ເວີ​ຊັນ​ໃໝ່​ກວ່າ​ໃຫ້.</translation>
 <translation id="2870560284913253234">ເວັບ​ໄຊທ໌</translation>
@@ -1411,6 +1422,7 @@
 <translation id="2972581237482394796">ເຮັດຄືນ</translation>
 <translation id="2973324205039581528">ປິດເວັບໄຊ</translation>
 <translation id="2977480621796371840">ລຶບອອກຈາກກຸ່ມ</translation>
+<translation id="2979520980928493164">Chrome ທີ່ປອດໄພຂຶ້ນ ແລະ ໄວຂຶ້ນ</translation>
 <translation id="2979639724566107830">ເປີດໃນໜ້າຈໍໃໝ່</translation>
 <translation id="2981113813906970160">ສະ​ແດງເຄີເຊີເມົາສ໌ໃຫຍ່</translation>
 <translation id="2982970937345031">ລາຍງານແບບບໍ່ເປີດເຜີຍຊື່</translation>
@@ -1517,6 +1529,7 @@
 <translation id="3143515551205905069">ຍົກເລີກການຊິ້ງຂໍ້ມູນ</translation>
 <translation id="3143754809889689516">ຫຼິ້ນແຕ່ເລີ່ມຕົ້ນ</translation>
 <translation id="3144647712221361880">ເປີດ​ລິ້ງ​ເປັນ</translation>
+<translation id="3145187901750964977">ບໍ່ສາມາດຕິດຕັ້ງເຄື່ອງສະເໝືອນຈິງໄດ້. ກະລຸນາລອງໃໝ່ ຫຼື ຕິດຕໍ່ຜູ້ເບິ່ງແຍງລະບົບອຸປະກອນຂອງອົງການຂອງທ່ານ. ລະຫັດຂໍ້ຜິດພາດ: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">ເວີຊັນ:
     <ph name="LINUX_VERSION" />
 
@@ -1555,6 +1568,7 @@
 <translation id="3192947282887913208">ໄຟລ໌ສຽງ</translation>
 <translation id="3194737229810486521"><ph name="URL" /> ຕ້ອງການເກັບຂໍ້ມູນໄວ້ໃນອຸປະກອນຂອງທ່ານຢ່າງຖາວອນ</translation>
 <translation id="3199127022143353223">ເຊີບເວີ</translation>
+<translation id="3201306578844503970">ບໍ່ສາມາດຕິດຕັ້ງເຄື່ອງສະເໝືອນຈິງໄດ້ ເນື່ອງຈາກເຄືອຂ່າຍຜິດພາດ. ກະລຸນາລອງໃໝ່ ຫຼື ຕິດຕໍ່ຜູ້ເບິ່ງແຍງລະບົບອຸປະກອນຂອງອົງການຂອງທ່ານ. ລະຫັດຂໍ້ຜິດພາດ: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">ອຸປະກອນ USB ທີ່ສາມາດໃຊ້ໄດ້ຈະປາກົດຢູ່ບ່ອນນີ້.</translation>
 <translation id="3202131003361292969">ເສັ້ນທາງ</translation>
 <translation id="3202173864863109533">ສຽງ​ແຖບ​ຂອງ​ນີ້​ກໍາລັງຖືກປິດ.</translation>
@@ -1891,7 +1905,6 @@
 <translation id="3678156199662914018">ສ່ວນຂະ​ຫຍາຍ​: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">ຂໍຂອບໃຈສຳລັບຄຳຕິຊົມຂອງທ່ານ. ທ່ານອອບລາຍຢູ່ຕອນນີ້ ແລະ ລາຍງານຂອງທ່ານຈະຖືກສົ່ງໃນພາຍຫຼັງ.</translation>
 <translation id="3682824389861648626">ຂີດຈຳກັດການເຄື່ອນຍ້າຍ</translation>
-<translation id="3683023058278427253">ພວກເຮົາໄດ້ກວດພົບໃບອະນຸຍາດຫຼາຍປະເພດສຳລັບໂດເມນຂອງທ່ານ. ກະລຸນາເລືອກອັນໜຶ່ງເພື່ອສືບຕໍ່.</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> ຂໍ​ການແຊຣ໌ໜ້າຈໍ</translation>
 <translation id="368789413795732264">ມີຄວາມຜິດພາດໃນຂະນະທີ່ພະຍາຍາມຂຽນໄຟລ໌: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">ຂຽນ​ໃສ່​ໄຟ​ລ ​ແລະ​​ໂຟ​ເດີ​ທີ່​ທ່ານ​ເປີດ​ໃນ​ແອ​ພພະລິ​ເຄຊັນ</translation>
@@ -2065,6 +2078,7 @@
 <translation id="389589731200570180">ແຊຣ໌ກັບແຂກ</translation>
 <translation id="389901847090970821">ເລືອກແປ້ນພິມ</translation>
 <translation id="3899879303189199559">ອອຟລາຍນ໌ມາ​ຫຼາຍ​ກ​່​ວາໜຶ່ງປີແລ້ວ</translation>
+<translation id="3900789207771372462">ບາງສ່ວນຂະຫຍາຍສາມາດເຫັນການເຄື່ອນໄຫວທ່ອງເວັບຂອງທ່ານໄດ້, ຮວມທັງຂໍ້ມູນສ່ວນຕົວ.</translation>
 <translation id="3900966090527141178">ສົ່ງລະຫັດຜ່ານອອກ</translation>
 <translation id="3901991538546252627">ກໍາລເຊື່ອມຕໍ່ກັບ <ph name="NAME" /></translation>
 <translation id="3905761538810670789">ສ້ອມ​ແປງແອັບ</translation>
@@ -2155,7 +2169,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" ກໍາລັງດີບັກໂປຣແກຣມທ່ອງເວັບນີ້</translation>
 <translation id="4014432863917027322">ສ້ອມແປງ "<ph name="EXTENSION_NAME" />" ບໍ?</translation>
 <translation id="4015163439792426608">ມີສ່ວນຂະຫຍາຍຫຼາຍລາຍການບໍ? <ph name="BEGIN_LINK" />ຈັດການສ່ວນຂະຫຍາຍຂອງທ່ານ<ph name="END_LINK" /> ໄດ້ງ່າຍໆຢູ່ບ່ອນດຽວ.</translation>
-<translation id="4020106588733303597">ອຸ້ຍ!  ລະບົບໂຫຼດໃບອະນຸຍາດທີ່ມີໃຫ້ບໍ່ສຳເລັດ.</translation>
 <translation id="4020327272915390518">ເມນູຕົວເລືອກ</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">ເພີ່ມໃສ່ພົດຈະນານຸກົມ</translation>
@@ -2193,6 +2206,7 @@
 <translation id="407520071244661467">ຂະໜາດ</translation>
 <translation id="4075639477629295004">ບໍ່ສາມາດສົ່ງສັນຍານ <ph name="FILE_NAME" /> ໄດ້.</translation>
 <translation id="4077917118009885966">ບລັອກໂຄສະນາໃນເວັບໄຊນີ້ໄວ້ແລ້ວ</translation>
+<translation id="4077919383365622693">ລະບົບຈະລຶບລ້າງຂໍ້ມູນ ແລະ ຄຸກກີ້ທັງໝົດທີ່ເກັບໄວ້ໂດຍ <ph name="SITE" />.</translation>
 <translation id="4079140982534148664">ໃຊ້ການກວດການສະກົດຄຳທີ່ປັບປຸງດີຂຶ້ນແລ້ວ</translation>
 <translation id="4081242589061676262">ບໍ່ສາມາດສົ່ງສັນຍານໄຟລ໌ໄດ້.</translation>
 <translation id="4084682180776658562">ບຸກມາກຄ໌</translation>
@@ -2267,6 +2281,7 @@
 <translation id="4181841719683918333">ພາສາ</translation>
 <translation id="4184885522552335684">ລາກເພື່ອຍ້າຍຈໍສະແດງຜົນ</translation>
 <translation id="4194570336751258953">ເປີດໃຊ້ງານແຕະເພື່ອຄລິກ</translation>
+<translation id="4194595472342532425">ບໍ່ສາມາດຕິດຕັ້ງ Plugin VM ໄດ້ ເນື່ອງຈາກບັນຫາການຕັ້ງຄ່າ. ກະລຸນາຕິດຕໍ່ຜູ້ເບິ່ງແຍງລະບົບອຸປະກອນຂອງອົງການຂອງທ່ານ. ລະຫັດຂໍ້ຜິດພາດ: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">ເປີດຢູ່ໃນແຖບໃໝ່</translation>
 <translation id="4195814663415092787">ສືບ​ຕໍ່​ບ່ອນທີ່ທ່ານອອກໄປ</translation>
 <translation id="4198146608511578238">ພຽງແຕ່ກົດໄອຄອນຕົວເປີດໃຊ້ຄ້າງໄວ້ເພື່ອລົມກັບຜູ້ຊ່ວຍ Google ຂອງທ່ານ.</translation>
@@ -2490,6 +2505,7 @@
 <translation id="4549791035683739768">ກະແຈຄວາມປອດໄພຂອງທ່ານບໍ່ມີລາຍນິ້ວມືທີ່ເກັບຮັກສາໄວ້</translation>
 <translation id="4551763574344810652">ກົດ <ph name="MODIFIER_KEY_DESCRIPTION" /> ເພື່ອຍົກເລີກ</translation>
 <translation id="4552089082226364758">ແຟລດ</translation>
+<translation id="4552759165874948005">ເຄືອຂ່າຍ <ph name="NETWORK_TYPE" />, ຄວາມແຮງສັນຍານ <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">ສ່ວນຂະຫຍາຍທາງນອກເປັນລຸ້ນຄືກັນກັບ ຫຼືຕໍ່າກ່ວາ ເມື່ອປຽບທຽບກັບອັນທີ່ມີຢູ່ແລ້ວ.</translation>
 <translation id="4555769855065597957">ເງົາ</translation>
 <translation id="4555863373929230635">ເພື່ອບັນທຶກລະຫັດຜ່ານໄວ້ໃນບັນຊີ Google ຂອງທ່ານ, ກະລຸນາເຂົ້າສູ່ລະບົບ ແລະ ເປີດການຊິ້ງຂໍ້ມູນ.</translation>
@@ -2567,6 +2583,7 @@
 <translation id="4665446389743427678">ຂໍ້ມູນທັງໝົດທີ່ເກັບໄວ້ໂດຍ <ph name="SITE" /> ຈະຖືກລຶບ.</translation>
 <translation id="4668721319092543482">ຄລິກເພື່ອເປີດນຳໃຊ້ <ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">ກັ່ນໜ້າ</translation>
+<translation id="46733273239502219">ລະບົບຈະລຶບລ້າງຂໍ້ມູນອອບລາຍໃນແອັບທີ່ຕິດຕັ້ງ</translation>
 <translation id="4673442866648850031">ເປີດເຄື່ອງມືປາຍປາກກາ ເມື່ອປາຍປາກກາຖືກລຶບອອກ</translation>
 <translation id="4677585247300749148"><ph name="URL" /> ຕ້ອງການຕອບສະໜອງກັບເຫດການຊ່ວຍເຂົ້າເຖິງ</translation>
 <translation id="4677772697204437347">ຄວາມ​ຈໍາ GPU</translation>
@@ -2658,7 +2675,6 @@
 <translation id="4823484602432206655">ອ່ານ ​ແລະ​ປ່ຽນ​ການຕັ້ງຄ່າຜູ້​ໃຊ້ ແລະ​ອຸ​ປະ​ກອນ</translation>
 <translation id="4824958205181053313">ຍົກເລີກການຊິ້ງຂໍ້ມູນບໍ?</translation>
 <translation id="4827675678516992122">ບໍ່ສາມາດເຊື່ອມຕໍ່ໄດ້</translation>
-<translation id="4828937774870308359">ອອສເຕຣເລຍ</translation>
 <translation id="4829768588131278040">ຕັ້ງຄ່າ PIN</translation>
 <translation id="4830502475412647084">ກຳລັງຕິດຕັ້ງການອັບເດດລະບົບປະຕິບັດການ</translation>
 <translation id="4830573902900904548"><ph name="DEVICE_TYPE" /> ບໍ່​ສາ​ມາດ​ເຊື່ອມ​ຕໍ່​ກັບ​ອິນ​ເຕີ​ເນັດ​ດ້ວຍ​ການ​ໃຊ້ <ph name="NETWORK_NAME" /> ໄດ້. ກະ​ລຸ​ນາ​ເລືອກ​ເຄືອ​ຂ່າຍ​ອື່ນ. <ph name="LEARN_MORE_LINK_START" />ຮຽນ​ຮູ້​ເພີ່ມ​ເຕີມ<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2699,6 +2715,7 @@
 <translation id="4876273079589074638">ຊ່ວຍວິສະວະກອນຂອງພວກເຮົາສືບສວນ ແລະ ແກ້ໄຂການຂັດຂ້ອງນີ້. ບອກຂັ້ນຕອນທີ່ແນ່ນອນຖ້າທ່ານສາມາດເຮັດໄດ້. ບໍ່ມີລາຍລະອຽດໃດໜ້ອຍເກີນໄປ!</translation>
 <translation id="4876895919560854374">ລັອກ ແລະປົດລັອກຫນ້າ​ຈໍ</translation>
 <translation id="4877276003880815204">ກວດກາອົງປະກອບ</translation>
+<translation id="4878653975845355462">ຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານໄດ້ປິດພາບພື້ນຫຼັງແບບກຳນົດເອງແລ້ວ</translation>
 <translation id="4879491255372875719">ອັດຕະໂນມັດ (ຄ່າເລີ່ມຕົ້ນ)</translation>
 <translation id="4880328057631981605">ຊື່​ຈຸດ​ເຂົ້າ​ເຖິງ</translation>
 <translation id="4880827082731008257">ຄົ້ນຫາປະຫວັດ</translation>
@@ -2754,10 +2771,10 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" ຕ້ອງການເຊື່ອມຕໍ່ກັບຜອດອະນຸກໍາ</translation>
 <translation id="4944310289250773232"><ph name="SAML_DOMAIN" /> ເປັນແມ່ຂ່າຍການບໍລິການກວດສອບຄວາມຖືກຕ້ອງ.</translation>
 <translation id="495170559598752135">ການກະທໍາ</translation>
+<translation id="4952981627953231344">Plugin VM ບໍ່ໄດ້ຮັບອະນຸຍາດໃນອຸປະກອນນີ້. ຕິດຕໍ່ຫາຜູ້ເບິ່ງແຍງລະບົບອຸປະກອນຂອງອົງການຂອງທ່ານ.</translation>
 <translation id="4953689047182316270">ຕອບສະໜອງຕໍ່ກັບເຫດການການຊ່ວຍເຂົ້າເຖິງ</translation>
 <translation id="4953808748584563296">ຮູບແທນຕົວສີສົ້ມຕາມຄ່າເລີ່ມຕົ້ນ</translation>
 <translation id="4955710816792587366">ເລືອກ PIN ຂອງທ່ານ</translation>
-<translation id="4955814292505481804">ລາຍປີ</translation>
 <translation id="4959262764292427323">ລະຫັດຜ່ານຖືກບັນທຶກໄວ້ໃນບັນຊີ Google ຂອງທ່ານ ເພື່ອໃຫ້ທ່ານສາມາດໃຊ້ພວກມັນໄດ້ໃນອຸປະກອນຕ່າງໆ</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">ແອັບນີ້ໄດ້ຖືກຕິດຕັ້ງໂດຍຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານ</translation>
@@ -3239,7 +3256,6 @@
 <translation id="5659593005791499971">ອີເມວ</translation>
 <translation id="5659833766619490117">ບໍ່ສາມາດແປໜ້ານີ້ໄດ້</translation>
 <translation id="5660204307954428567">ຈັບຄູ່ກັບ <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">ຕະຫຼອດໄປ</translation>
 <translation id="5667546120811588575">ກຳລັງຕັ້ງຄ່າ Google Play...</translation>
 <translation id="5669267381087807207">ກຳລັງເປີດນຳໃຊ້</translation>
 <translation id="5669691691057771421">ປ້ອນ PIN ໃໝ່</translation>
@@ -3255,6 +3271,7 @@
 <translation id="5687326903064479980">ເຂດເວລາ</translation>
 <translation id="5689516760719285838">ສະຖານທີ່</translation>
 <translation id="56907980372820799">ລິ້ງຂໍ້ມູນ</translation>
+<translation id="5691180005790455277">ລະບົບຈະລຶບລ້າງຂໍ້ມູນ ແລະ ຄຸກກີ້ທັງໝົດທີ່ເກັບໄວ້ໂດຍ <ph name="SITE_GROUP_NAME" /> ແລະ ເວັບໄຊຕ່າງໆພາຍໃຕ້ມັນ.</translation>
 <translation id="5691511426247308406">ຄອບຄົວ</translation>
 <translation id="5692183275898619210">ການພິມສຳເລັດແລ້ວ</translation>
 <translation id="5696143504434933566">ລາຍງານການໃຊ້ໃນທາງທີ່ຜິດຈາກ "<ph name="EXTENSION_NAME" />"</translation>
@@ -3341,7 +3358,6 @@
 <translation id="5815645614496570556">ທີ່​ຢູ່ X.400</translation>
 <translation id="5816434091619127343">ການປ່ຽນແປງເຄື່ອງພິມທີ່ຮ້ອງຂໍມາຈະເຮັດໃຫ້ເຄື່ອງພິມບໍ່ສະຖຽນ.</translation>
 <translation id="5817918615728894473">ຈັບ​ຄູ່</translation>
-<translation id="5819762621475381970">- ແຜນຜັງຂອງຫ້ອງຂອງທ່ານ</translation>
 <translation id="5821565227679781414">ສ້າງ​ທາງ​ລັດ</translation>
 <translation id="5825412242012995131">ເປີດ (ແນະນຳ)</translation>
 <translation id="5826395379250998812">ເຊື່ອມຕໍ່ <ph name="DEVICE_TYPE" /> ຂອງທ່ານກັບໂທລະສັບຂອງທ່ານ. <ph name="LINK_BEGIN" />ສຶກສາເພີ່ມເຕີມ<ph name="LINK_END" /></translation>
@@ -3477,6 +3493,7 @@
 <translation id="6007240208646052708">ການຊອກຫາດ້ວຍສຽງເປັນພາສາຂອງທ່ານບໍ່ສາມາດໃຊ້ໄດ້.</translation>
 <translation id="6009781704028455063">ເຊັນເຊີທີ່ມາພ້ອມໃນເຄື່ອງ</translation>
 <translation id="6010869025736512584">ການ​ເຂົ້າ​ໃຊ້ການ​ປ້ອນຂໍ້ມູນ​ວິ​ດີ​ໂອ</translation>
+<translation id="6011074160056912900">ເຄືອຂ່າຍອີເທີເນັດ</translation>
 <translation id="6011193465932186973">ລາຍນີ້ວມື</translation>
 <translation id="6011449291337289699">ລຶບລ້າງຂໍ້ມູນເວັບໄຊ</translation>
 <translation id="6015266928248016057">PUK ທີ່ຖືກຕ້ອງ. ລອງໄດ້ອີກ: <ph name="RETRIES" /> ເທື່ອ.</translation>
@@ -3513,6 +3530,7 @@
 <translation id="6053401458108962351">ລຶບຂໍ້​ມູນ​ການທ່ອງເນັດ...</translation>
 <translation id="6055171183283175969">ລະຫັດຜ່ານທີ່ທ່ານປ້ອນເຂົ້າບໍ່ຖືກຕ້ອງ.</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 ດ້ວຍການໃສ່ລະຫັດ RSA</translation>
+<translation id="6055907707645252013">ເຄືອຂ່າຍ <ph name="NETWORK_TYPE" />, ບໍ່ໄດ້ເຊື່ອມຕໍ່</translation>
 <translation id="6056710589053485679">ໂຫຼດຄືນໃໝ່ປົກກະຕິ</translation>
 <translation id="6057381398996433816">ເວັບໄຊນີ້ໄດ້ຖືກບລັອກບໍ່ໃຫ້ໃຊ້ເຊັນເຊີກວດຈັບການເຄື່ອນໄຫວ ແລະ ແສງແລ້ວ.</translation>
 <translation id="6058567592298841668">ເຄື່ອງສະເໝືອນຈິງຂອງປລັກອິນ: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3576,6 +3594,7 @@
 <translation id="6136114942382973861">ປິດແຖບການດາວໂຫຼດ</translation>
 <translation id="6137767437444130246">ໃບຮັບຮອງຜູ້ໃຊ້</translation>
 <translation id="6138680304137685902">ລາຍເຊັນ X9.62 ECDSA ທີ່ມີ SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, ບໍ່ມີເຄືອຂ່າຍ</translation>
 <translation id="6141988275892716286">ຢືນຢັນການດາວໂຫຼດ</translation>
 <translation id="6143186082490678276">ເອົາ​ການ​ຊ່ວຍ​ເຫຼືອ</translation>
 <translation id="6144938890088808325">ຊ່ວຍພວກເຮົາປັບປຸງ Chromebooks</translation>
@@ -3882,6 +3901,7 @@
 <translation id="6602956230557165253">ໃຊ້ປຸ່ມລູກສອນຊ້າຍ ແລະຂວາ ເພື່ອກໍານົດທິດທາງ.</translation>
 <translation id="6605847144724004692">ບໍ່ມີຜູ້ໃຊ້ໃດໃຫ້ຄະແນນເທື່ອ.</translation>
 <translation id="6607831829715835317">ເຄື່ອງມືເພີ່ມເຕີມ</translation>
+<translation id="6611972847767394631">ຊອກຫາແຖບຂອງທ່ານຢູ່ທີ່ນີ້</translation>
 <translation id="6612358246767739896">ເນື້ອ​ໃນ​ທີ່ຖືກ​ປົກ​ປ້ອງ</translation>
 <translation id="6615455863669487791">ສະ​ແດງຂ້ອຍ</translation>
 <translation id="6618097958368085618">ຢືນຢັນໃຫ້ເກັບໄວ້</translation>
@@ -3950,6 +3970,7 @@
 <translation id="6709133671862442373">ຂ່າວ</translation>
 <translation id="6709357832553498500">ເຊື່ອມ​ຕໍ່​ດ້ວຍ​ການ​ໃຊ້ <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">ຜ່ານມາ</translation>
+<translation id="6715803357256707211">ເກີດຄວາມຜິດພາດໃນລະຫວ່າງການຕິດຕັ້ງແອັບພລິເຄຊັນ Linux ຂອງທ່ານ. ຄລິກໃສ່ການແຈ້ງເຕືອນສຳລັບລາຍລະອຽດ.</translation>
 <translation id="6721678857435001674">ເບິ່ງຍີ່ຫໍ້ ແລະ ລຸ້ນຂອງກະແຈຄວາມປອດໄພຂອງທ່ານ</translation>
 <translation id="6721972322305477112">​ໄຟລ໌</translation>
 <translation id="672213144943476270">ກະລຸນາປົດລັອກໂປຣໄຟລ໌ຂອງທ່ານກ່ອນທີ່ຈະທ່ອງເວັບເປັນແຂກ.</translation>
@@ -3974,7 +3995,6 @@
 <translation id="674632704103926902">ເປີດໃຊ້ງານການລາກແຕະ</translation>
 <translation id="6748217015615267851">ຕົວສະແດງພາບ: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">ທ່ານ​ອາດ​ຈະ​ດຳ​ເນີນ​ການ​ຕໍ່, ພຽງ​ແຕ່​ຂໍ້​ມູນ ແລະ​ການ​ຕັ້ງ​ຄ່າ​ທີ່​ຊິງ​ຄ໌​ແລ້ວ​ຂອງ​ທ່ານ​ເທົ່າ​ນັ້ນ​ທີ່​ຈະ​ຖືກ​ກູ້​ຄືນ. ທຸກ​ຂໍ້​ມູນ​ໃນ​ເຄື່ອງ​ຈະ​ເສຍ​ໄປ.</translation>
-<translation id="6748775883310276718">Kiosk ແອັບດ່ຽວ</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (ບໍ່ເປີດເຜີຍຕົນຕົວ)</translation>
 <translation id="6757101664402245801">ສຳເນົາ URL ແລ້ວ</translation>
 <translation id="6758056191028427665">ໃຫ້ພວກເຮົາຮູ້ວ່າພວກເຮົາກຳລັງເຮັດໄດ້ດີສໍ່າໃດ.</translation>
@@ -3984,6 +4004,7 @@
 <translation id="6769712124046837540">ກໍາລັງເພີ່ມເຄື່ອງ​ພິມ ...</translation>
 <translation id="6770664076092644100">ຢັ້ງຢືນຜ່ານ NFC</translation>
 <translation id="6771503742377376720">ແມ່ນ​ໜ່ວຍ​ງານອອກ​ໃບ​ຢັ້ງ​ຢືນ</translation>
+<translation id="6772339735733515807">ຈັດການສ່ວນຂະຫຍາຍຂອງທ່ານ</translation>
 <translation id="6775163072363532304">ອຸປະກອນທີ່ສາມາດໃຊ້ໄດ້ຈະປາກົດບ່ອນນີ້.</translation>
 <translation id="6777817260680419853">ບລັອກການປ່ຽນເສັ້ນທາງແລ້ວ</translation>
 <translation id="6778737459546443941">ພໍ່ແມ່ຂອງທ່ານຍັງບໍ່ທັນອະນຸມັດມັນເທື່ອ</translation>
@@ -4122,6 +4143,7 @@
 <translation id="6972180789171089114">ສຽງ/ວິດີໂອ</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> ບໍ່ສາມາດເປີດໄຟລ໌ໃນໂຟນເດີນີ້ໄດ້ ເພາະວ່າມັນປະກອບມີໄຟລ໌ລະບົບ</translation>
 <translation id="6972754398087986839">ເລີ່ມຕົ້ນ</translation>
+<translation id="6973611239564315524">ມີການອັບເກຣດເປັນ Debian 10 (Buster)</translation>
 <translation id="6974609594866392343">ໂໝດສາທິດແບບອອບລາຍ</translation>
 <translation id="6977381486153291903">ການດັດແກ້ເຟີມແວ</translation>
 <translation id="6978121630131642226">ເຄື່ອງ​ຈັກ​ຄົ້ນ​ຫາ</translation>
@@ -4581,6 +4603,7 @@
 <translation id="7644543211198159466">ສີ ແລະ ຮູບແບບສີສັນ</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (ເຈົ້າ​ຂອງ​)</translation>
 <translation id="7645681574855902035">ກຳລັງຍົກເລີກການສຳຮອງຂໍ້ມູນ Linux</translation>
+<translation id="7646772052135772216">ການຊິ້ງຂໍ້ມູນລະຫັດຜ່ານບໍ່ເຮັດວຽກ</translation>
 <translation id="7647403192093989392">ບໍ່ມີການເຄື່ອນໄຫວຫຼ້າສຸດ</translation>
 <translation id="7648992873808071793">ເກັ​ບ​ຮັກ​ສາ​ໄຟ​ລ໌​ໄວ້​ຢູ່​ໃນ​ອຸ​ປະ​ກອນ​ນີ້</translation>
 <translation id="7649070708921625228">ຊ່ວຍ​ເຫຼືອ</translation>
@@ -4768,6 +4791,7 @@
 <translation id="7877451762676714207">ການຜິດພາດຂອງເຊີບເວີທີ່ບໍ່ຮູ້ຈັກ. ກະລຸນາລອງໃໝ່ອີກ, ຫຼືຕິດຕໍ່ຫາຜູ້ຄວບຄຸມເຊີບເວີ.</translation>
 <translation id="7877680364634660272">ແນະນຳການໃຊ້</translation>
 <translation id="7878562273885520351">ອາດຈະມີການລັກໃຊ້ລະຫັດຜ່ານຂອງທ່ານ</translation>
+<translation id="7879631849810108578">ທາງລັດທີ່ຕັ້ງຄ່າ: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">ຂໍ້ມູນພາຍໃນເຄື່ອງຈະຖືກລຶບເມື່ອທ່ານປິດເປີດຄືນໃໝ່</translation>
 <translation id="7881483672146086348">ເບິ່ງ​ບັນ​ຊີ​</translation>
 <translation id="7882358943899516840">ປະ​ເພດ​ຜູ້ໃຫ້​ບໍ​ລິ​ການ​</translation>
@@ -4854,6 +4878,7 @@
 <translation id="7987814697832569482">ເຊື່ອມຕໍ່ຜ່ານ VPN ນີ້ທຸກເທື່ອ</translation>
 <translation id="7988355189918024273">ເປີດນຳໃຊ້ຄຸນສົມບັດການຊ່ວຍເຂົ້າເຖິງ</translation>
 <translation id="7991296728590311172">ການຕັ້ງຄ່າການເຂົ້າເຖິງປຸ່ມ</translation>
+<translation id="7994350303002908848">ບໍ່ສາມາດຕິດຕັ້ງ Plugin VM ໄດ້. ກະລຸນາລອງໃໝ່ ຫຼື ຕິດຕໍ່ຜູ້ເບິ່ງແຍງລະບົບອຸປະກອນຂອງອົງການຂອງທ່ານ. ລະຫັດຂໍ້ຜິດພາດ: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">ວິທີການ EAP</translation>
 <translation id="7997826902155442747">ບຸລິມະສິດຂອງຂະບວນການ</translation>
 <translation id="7999229196265990314">ສ້າງໄຟລ໌ຕໍ່ໄປນີ້ແລ້ວ:
@@ -4945,7 +4970,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{ບໍ່ມີຄຸກກີ້ພາກສ່ວນທີສາມ}=1{ບລັອກຄຸກກີ້ພາກສ່ວນທີສາມໄວ້ 1 ລາຍການ}other{ບລັອກຄຸກກີ້ພາກສ່ວນທີສາມໄວ້ # ລາຍການ}}</translation>
 <translation id="810875025413331850">ບໍ່ພົບອຸປະກອນທີ່ຢູ່ໃກ້ຄຽງ.</translation>
 <translation id="8111155949205007504">ແບ່ງປັນລະຫັດຜ່ານນີ້ກັບ iPhone ຂອງທ່ານ</translation>
-<translation id="8113043281354018522">ເລືອກປະເພດໃບອະນຸຍາດ</translation>
 <translation id="8114875720387900039">ແຍກຕາມລວງນອນ</translation>
 <translation id="8116972784401310538">ຕົວຈັດການບຸກມາກຄ໌</translation>
 <translation id="8117620576188476503">ຈັດການການເຊື່ອມຕໍ່, ການອັບເດດ ແລະ ການຕັ້ງຄ່າດ້ວຍຖາດສະຖານະ. ເພື່ອມາທີ່ນີ້ໂດຍໃຊ້ແປ້ນພິມ, ກະລຸນາກົດ Alt + Shift + S.</translation>
@@ -5102,6 +5126,7 @@
 <translation id="8327039559959785305">ເກີດຜິດພາດໃນການເຊື່ອມຕໍ່ໄຟລ໌ Linux. ກະລຸນາລອງໃໝ່.</translation>
 <translation id="8335587457941836791">ຖອນປັກໝຸດຈາກຖ້ານ</translation>
 <translation id="8336407002559723354">ການອັບເດດສິ້ນສຸດ <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">ຣິສະຕາດອຸປະກອນເພື່ອສະແດງຂໍ້ຄວາມລະບົບເປັນ <ph name="LANGUAGE" /></translation>
 <translation id="8336739000755212683">ປ່ຽນຮູບບັນຊີຂອງອຸປະກອນ</translation>
 <translation id="8337047789441383384">ທ່ານລົງທະບຽນກະແຈຄວາມປອດໄພນີ້ແລ້ວ. ທ່ານບໍ່ຈຳເປັນຕ້ອງລົງທະບຽນມັນອີກຄັ້ງ.</translation>
 <translation id="8338952601723052325">ເວັບ​ໄຊ​ທ​໌ຜູ້ພັດ​ທະ​ນາ​</translation>
@@ -5145,6 +5170,7 @@
 <translation id="8400146488506985033">ຈັດການຜູ້ຄົນ</translation>
 <translation id="8401432541486058167">ໃຫ້ PIN ທີ່ເຊື່ອມໂຍງກັບບັດອັດສະລິຍະຂອງທ່ານ.</translation>
 <translation id="8405046151008197676">ຮັບໄຮໄລ້ຈາກການອັບເດດຫຼ້າສຸດ</translation>
+<translation id="8408068190360279472">ເຄືອຂ່າຍ <ph name="NETWORK_TYPE" />, ກຳລັງເຊື່ອມຕໍ່</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">ຖາມ​ກ່ອນ (ແນະ​ນຳ​ໃຫ້)</translation>
 <translation id="8418445294933751433">ສະ​ແດງ​ແຖບ</translation>
@@ -5434,6 +5460,7 @@
 <translation id="8807632654848257479">ໝັ້ນຄົງ</translation>
 <translation id="8808478386290700967">ຮ້ານ​ຄ້າ​ເວັບ</translation>
 <translation id="8808686172382650546">ແມວ</translation>
+<translation id="8808744862003883508">ໃນໜ້ານີ້ ທ່ານສາມາດເຫັນສ່ວນຂະຫຍາຍທັງໝົດທີ່ຕິດຕັ້ງໃນ Chrome.</translation>
 <translation id="8809147117840417135">ສີຂຽວອົມຟ້າອ່ອນ</translation>
 <translation id="8813698869395535039">ບໍ່ສາມາດລົງຊື່ເຂົ້າໃຊ້ <ph name="USERNAME" /> ໄດ້</translation>
 <translation id="8813811964357448561">ແຜ່ນ​ເຈ້ຍ</translation>
@@ -5661,7 +5688,6 @@
 <translation id="9121814364785106365">ເປີດ​ເປັນ​ແຖບປັກໝຸດແລ້ວ</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> ຖືກຢຸດໄວ້ຊົ່ວຄາວ</translation>
 <translation id="9124003689441359348">ລະຫັດຜ່ານທີ່ບັນທຶກໄວ້ຈະປາກົດຢູ່ບ່ອນນີ້</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (ຍັງເຫຼືອ <ph name="LICENSE_COUNT" />)</translation>
 <translation id="9128317794749765148">ບໍ່ສາມາດເຮັດສຳເລັດການຕັ້ງຄ່າໄດ້</translation>
 <translation id="9128870381267983090">ເຊື່ອມ​ຕໍ່ກັບ​ເຄືອ​ຂ່າຍ</translation>
 <translation id="9130015405878219958">ປ້ອນໂໝດໃຊ້ບໍ່ໄດ້ເຂົ້າໄປແລ້ວ.</translation>
@@ -5700,6 +5726,7 @@
 <translation id="9188732951356337132">ສົ່ງຂໍ້ມູນການນຳໃຊ້ ແລະ ການວິເຄາະ. ອຸປະກອນນີ້ກຳລັງສົ່ງຂໍ້ມູນການວິເຄາະ, ຂໍ້ມູນອຸປະກອນ ແລະ ການໃຊ້ແອັບໃຫ້ Google ໂດຍອັດຕະໂນມັດໃນຂະນະນີ້. ຂໍ້ມູນນີ້ຈະບໍ່ຖືກໃຊ້ເພື່ອລະບຸຕົວລູກຂອງທ່ານ ແລະ ຈະຊ່ວຍປັບປຸງຄວາມສະຖຽນຂອງລະບົບ ແລະ ແອັບ ແລະ ການປັບປຸງອື່ນໆ. ບາງຂໍ້ມູນແບບຮວມກັນຍັງຈະຊ່ວຍແອັບ ແລະ ຮຸ້ນສ່ວນຂອງ Google ນຳອີກ ເຊັ່ນ: ຜູ້ພັດທະນາ Android. ຖ້າເປີດການຕັ້ງຄ່າການເຄື່ອນໄຫວເວັບ ແລະ ແອັບເພີ່ມເຕີມສໍາລັບລູກຂອງທ່ານ, ລະບົບອາດຈະບັນທຶກຂໍ້ມູນນີ້ໄວ້ໃນບັນຊີ Google ຂອງເຂົາເຈົ້າ. <ph name="BEGIN_LINK2" />ສຶກສາ​ເພີ່ມ​ເຕີມ<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + ປຸ່ມແຊຣ໌ກ່ອນ</translation>
 <translation id="920045321358709304">ຊອກຫາ <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">ລະບົບຈະລຶບລ້າງຂໍ້ມູນອອບລາຍຕ່າງໆ</translation>
 <translation id="9201220332032049474">ຕົວເລືອກການລັອກໜ້າຈໍ</translation>
 <translation id="9203398526606335860">ການສ້າງໂປຣໄຟລ໌ເປີດໃຊ້ງານແລ້ວ</translation>
 <translation id="9203904171912129171">ເລືອກອຸປະກອນ</translation>
@@ -5712,6 +5739,7 @@
 <translation id="9220525904950070496">ລົບບັນ​ຊີອອກ</translation>
 <translation id="9220820413868316583">ຍົກນິ້ວມືຂຶ້ນແລ້ວລອງອີກຄັ້ງ.</translation>
 <translation id="923467487918828349">ສະ​ແດງ​ທັງ​ຫມົດ</translation>
+<translation id="929117907539171075">ລະບົບຈະລຶບລ້າງຂໍ້ມູນອອບລາຍໃນແອັບທີ່ຕິດຕັ້ງນຳ</translation>
 <translation id="930268624053534560">ສະແຕັມເວລາລະອຽດ</translation>
 <translation id="932327136139879170">ບ້ານ</translation>
 <translation id="932508678520956232">ບໍ່ສາມາດລິເລີ່ມການພິມໄດ້.</translation>
@@ -5737,6 +5765,7 @@
 <translation id="960719561871045870">ລະຫັດຜູ້ໃຫ້ບໍລິການ</translation>
 <translation id="960987915827980018">ຍັງເຫຼືອປະ​ມານ 1 ຊົ່ວ​ໂມງ</translation>
 <translation id="962802172452141067">ໂຄງສ້າງໂຟນເດີບຸກມາກ</translation>
+<translation id="964057662886721376">ບາງສ່ວນຂະຫຍາຍສາມາດເຮັດໃຫ້ທ່ານຊ້າລົງໄດ້, ໂດຍສະເພາະສ່ວນຂະຫຍາຍທີ່ທ່ານບໍ່ໄດ້ເຈດຕະນາຕິດຕັ້ງ.</translation>
 <translation id="964286338916298286">ຜູ້ເບິ່ງແຍງລະບົບ IT ຂອງທ່ານໄດ້ປິດນຳໃຊ້ Chrome Goodies ສຳລັບອຸປະກອນຂອງທ່ານແລ້ວ.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{ແອັບພລິເຄຊັນ}other{ແອັບພລິເຄຊັນ}}</translation>
 <translation id="965211523698323809">ສົ່ງ ແລະ ຮັບຂໍ້ຄວາມຈາກ <ph name="DEVICE_TYPE" /> ຂອງທ່ານ. <ph name="LINK_BEGIN" />ສຶກສາເພີ່ມເຕີມ<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_lt.xtb b/chrome/app/resources/generated_resources_lt.xtb
index dee6842..3fedbdc 100644
--- a/chrome/app/resources/generated_resources_lt.xtb
+++ b/chrome/app/resources/generated_resources_lt.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Priskirtas</translation>
 <translation id="1178581264944972037">Pristabdyti</translation>
 <translation id="117916940443676133">Saugos raktas neapsaugotas PIN kodu. Kad galėtumėte tvarkyti prisijungimo duomenis, pirmiausia sukurkite PIN kodą.</translation>
-<translation id="118069123878619799">- jūsų fizines savybes, pavyzdžiui, ūgį;</translation>
 <translation id="1181037720776840403">Pašalinti</translation>
 <translation id="1183237619868651138">Nepavyko įdiegti „<ph name="EXTERNAL_CRX_FILE" />“ vietinėje talpykloje.</translation>
 <translation id="1185924365081634987">Taip pat galite bandyti <ph name="GUEST_SIGNIN_LINK_START" />naršyti kaip svečias<ph name="GUEST_SIGNIN_LINK_END" />, kad išspręstumėte šią tinklo klaidą.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">Laukiama <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033">Kitų pasiekiamų įrenginių: <ph name="NUM_PRINTERS" />.</translation>
 <translation id="1495677929897281669">Atgal į skirtuką</translation>
+<translation id="1499271269825557605">Jei neatpažįstate plėtinio arba jei jūsų naršyklė neveikia, kaip numatyta, galite išjungti arba tinkinti plėtinius čia.</translation>
 <translation id="1500297251995790841">Nežinomas įrenginys [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Kelių paskyrų sesijoje pirmiausia turi būti prisijungta naudojant šią savininko paskyrą.</translation>
 <translation id="150411034776756821">Pašalinti <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Šis puslapis užblokuotas, kad nepasiektų jūsų fotoaparato.</translation>
 <translation id="1507246803636407672">&amp;Atmesti</translation>
 <translation id="1508491105858779599">Palieskite pirštu piršto antspaudo jutiklį, kad atrakintumėte įrenginį.</translation>
+<translation id="1508575541972276599">Dabartinė versija – „Debian 9 (Stretch)“</translation>
 <translation id="1509281256533087115">Pasiekite bet kurį „<ph name="DEVICE_NAME_AND_VENDOR" />“ per USB</translation>
 <translation id="150962533380566081">Netinkamas PUK.</translation>
 <translation id="1510030919967934016">Šis puslapis buvo užblokuotas, kad nebūtų galima stebėti jūsų vietovės.</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">Taikyti</translation>
 <translation id="1603914832182249871">(Inkognito)</translation>
 <translation id="1604432177629086300">Nepavyko atspausdinti. Patikrinkite spausdintuvą ir bandykite dar kartą.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: slaptažodžio sinchronizavimas neveikia</translation>
 <translation id="1607139524282324606">Išvalyti įrašą</translation>
 <translation id="1608626060424371292">Pašalinti šį naudotoją</translation>
 <translation id="1608668830839595724">Daugiau veiksmų, skirtų pasirinktiems elementams</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">Priglobti programų duomenys</translation>
 <translation id="1776712937009046120">Pridėti naudotoją</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Šį įrenginį tvarko domenas <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    Spustelėkite „Toliau“, kad tęstumėte prisijungimą prie <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> paskyros.</translation>
 <translation id="1779652936965200207">„<ph name="DEVICE_NAME" />“ įveskite šį prieigos kodą:</translation>
 <translation id="1780152987505130652">Uždaryti grupę</translation>
 <translation id="1781291988450150470">Dabartinis PIN kodas</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">Negalima atlikti veiksmo</translation>
 <translation id="2050339315714019657">Stačias</translation>
 <translation id="2053312383184521053">Neveikos būsenos duomenys</translation>
+<translation id="2055585478631012616">Būsite atjungti nuo šių svetainių, įskaitant atidarytus skirtukus</translation>
 <translation id="205560151218727633">„Google“ padėjėjo logotipas</translation>
 <translation id="2058456167109518507">Įrenginys aptiktas</translation>
 <translation id="2059913712424898428">Laiko juosta</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">Anuliuoti</translation>
 <translation id="2080070583977670716">Daugiau nustatymų</translation>
 <translation id="2087822576218954668">Spausdinti: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN tinklas</translation>
 <translation id="2089566709556890888">Saugiai naršykite naudodami „Google Chrome“</translation>
 <translation id="2089795179672254991">Paklausti, kai svetainė nori matyti tekstą ir vaizdus, nukopijuotus į iškarpinę (rekomenduojama)</translation>
 <translation id="2090165459409185032">Jei norite atkurti paskyros informaciją, apsilankykite adresu google.com/accounts/recovery</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">Svetainė pasiekia garso ir vaizdo įvestis</translation>
 <translation id="2379281330731083556">Spausdinti naudojant sistemos dialogo langą... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Klausti prieš siunčiant (rekomenduojama)</translation>
+<translation id="2382818385048255866">Patikrinkite plėtinius</translation>
 <translation id="2384436799579181135">Įvyko klaida. Patikrinkite spausdintuvą ir bandykite dar kartą.</translation>
 <translation id="2387458720915042159">Tarpinio serverio ryšio tipas</translation>
 <translation id="2391419135980381625">Standartinis šriftas</translation>
@@ -1036,6 +1043,7 @@
 <translation id="2462724976360937186">Sertifikavimo institucijos rakto ID</translation>
 <translation id="2462752602710430187">Pridėtas „<ph name="PRINTER_NAME" />“</translation>
 <translation id="2464089476039395325">HTTP tarpinis serveris</translation>
+<translation id="2467267713099745100">Tinklas: <ph name="NETWORK_TYPE" />, išjungta</translation>
 <translation id="2468205691404969808">Naudoja slapukus, kad primintų jums apie nuostatas, net jei nesilankote tuose puslapiuose</translation>
 <translation id="2468402215065996499">Tamagočis</translation>
 <translation id="2469259292033957819">Nėra išsaugotų spausdintuvų.</translation>
@@ -1290,6 +1298,7 @@
 <translation id="2800760947029405028">Įkelti vaizdą</translation>
 <translation id="2803375539583399270">Įveskite PIN kodą</translation>
 <translation id="2804043232879091219">Nepavyko atidaryti alternatyvios naršyklės</translation>
+<translation id="2804667941345577550">Būsite atjungti nuo šios svetainės, įskaitant atidarytus skirtukus</translation>
 <translation id="2804680522274557040">Fotoaparatas išjungtas</translation>
 <translation id="2805646850212350655">„Microsoft“ koduojamųjų failų sistema</translation>
 <translation id="2805756323405976993">Taikomosios programos</translation>
@@ -1297,6 +1306,7 @@
 <translation id="2806891468525657116">Spartusis klavišas jau yra</translation>
 <translation id="2807517655263062534">Atsisiųsti failai rodomi čia</translation>
 <translation id="2809586584051668049">ir dar <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2810390687497823527">Jei neatpažįstate plėtinio arba jei jūsų naršyklė neveikia, kaip numatyta, galite išjungti arba tinkinti plėtinius čia.</translation>
 <translation id="2812049959647166806">„Thunderbolt“ nepalaikoma</translation>
 <translation id="2812944337881233323">Bandykite atsijungti ir vėl prisijungti</translation>
 <translation id="2812989263793994277">Nerodyti jokių vaizdų</translation>
@@ -1336,6 +1346,7 @@
 <translation id="2861941300086904918">„Native Client“ saugos valdytojas</translation>
 <translation id="2864601841139725659">Profilio nuotraukos nustatymas</translation>
 <translation id="2865919525181940183">Šiuo metu ekrane rodomų programų ekrano kopija</translation>
+<translation id="286674810810214575">Tikrinami maitinimo šaltiniai...</translation>
 <translation id="2867768963760577682">Atidaryti kaip prisegtą skirtuką</translation>
 <translation id="2868746137289129307">Plėtinys pasenęs ir neleidžiamas pagal įmonės politiką. Atsiradus naujesnei versijai, jis gali būti įgalintas automatiškai.</translation>
 <translation id="2870560284913253234">Svetainė</translation>
@@ -1413,6 +1424,7 @@
 <translation id="2972581237482394796">&amp;Atlikti iš naujo</translation>
 <translation id="2973324205039581528">Nutildyti svetainę</translation>
 <translation id="2977480621796371840">Pašalinti iš grupės</translation>
+<translation id="2979520980928493164">Saugesnė ir smagesnė „Chrome“</translation>
 <translation id="2979639724566107830">Atidaryti naujame lange</translation>
 <translation id="2981113813906970160">Rodyti didelį pelės žymeklį</translation>
 <translation id="2982970937345031">Pranešti anonimiškai</translation>
@@ -1519,6 +1531,7 @@
 <translation id="3143515551205905069">Atšaukti sinchronizavimą</translation>
 <translation id="3143754809889689516">Paleisti nuo pradžios</translation>
 <translation id="3144647712221361880">Atidaryti nuorodą kaip</translation>
+<translation id="3145187901750964977">Nepavyko įdiegti virtualiojo įrenginio. Bandykite dar kartą arba susisiekite su organizacijos įrenginio administratoriumi. Klaidos kodas: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Versija:
     <ph name="LINUX_VERSION" />
 
@@ -1557,6 +1570,7 @@
 <translation id="3192947282887913208">Garso įrašų failai</translation>
 <translation id="3194737229810486521"><ph name="URL" /> prašo leidimo nuolat saugoti duomenis jūsų įrenginyje</translation>
 <translation id="3199127022143353223">Serveriai</translation>
+<translation id="3201306578844503970">Nepavyko įdiegti virtualiojo įrenginio dėl tinklo klaidos Bandykite dar kartą arba susisiekite su organizacijos įrenginio administratoriumi. Klaidos kodas: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Čia bus rodomi pasiekiami USB įrenginiai.</translation>
 <translation id="3202131003361292969">Kelias</translation>
 <translation id="3202173864863109533">Šio skirtuko garsas nutildytas.</translation>
@@ -1893,7 +1907,6 @@
 <translation id="3678156199662914018">Plėtinys: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Dėkojame už atsiliepimus. Dabar esate neprisijungę, todėl jūsų pranešimas bus išsiųstas vėliau.</translation>
 <translation id="3682824389861648626">Judesių slenkstis</translation>
-<translation id="3683023058278427253">Aptikome kelių tipų domeno licencijų. Pasirinkite vieną, kad galėtumėte tęsti.</translation>
 <translation id="3683524264665795342">„<ph name="APP_NAME" />“ ekrano bendrinimo užklausa</translation>
 <translation id="368789413795732264">Bandant įrašyti failą įvyko klaida: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Rašyti failuose ir aplankuose, kuriuos atidarėte programoje</translation>
@@ -2067,6 +2080,7 @@
 <translation id="389589731200570180">Bendrinti su svečiais</translation>
 <translation id="389901847090970821">Pasirinkti klaviatūrą</translation>
 <translation id="3899879303189199559">Neprijungta daugiau nei metus</translation>
+<translation id="3900789207771372462">Kai kurie plėtiniai gali peržiūrėti jūsų naršymo veiklą, įskaitant asmens informaciją.</translation>
 <translation id="3900966090527141178">Eksportuokite slaptažodžius</translation>
 <translation id="3901991538546252627">Jungiamasi prie „<ph name="NAME" />“</translation>
 <translation id="3905761538810670789">Pataisyti programą</translation>
@@ -2157,7 +2171,6 @@
 <translation id="4013132157686828973">„<ph name="CLIENT_NAME" />“ derina šią naršyklę</translation>
 <translation id="4014432863917027322">Pataisyti „<ph name="EXTENSION_NAME" />“?</translation>
 <translation id="4015163439792426608">Turite plėtinių? <ph name="BEGIN_LINK" />Tvarkykite juos<ph name="END_LINK" /> vienoje paprastoje vietoje.</translation>
-<translation id="4020106588733303597">Oi, sistemai nepavyko įkelti pasiekiamų licencijų.</translation>
 <translation id="4020327272915390518">Parinkčių meniu</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Pridėti į žodyną</translation>
@@ -2195,6 +2208,7 @@
 <translation id="407520071244661467">Mastelis</translation>
 <translation id="4075639477629295004">Nepavyko perduoti „<ph name="FILE_NAME" />“.</translation>
 <translation id="4077917118009885966">Skelbimai užblokuoti šioje svetainėje</translation>
+<translation id="4077919383365622693">Visi <ph name="SITE" /> saugomi duomenys ir slapukai bus išvalyti.</translation>
 <translation id="4079140982534148664">Naudokite patobulintą rašybos tikrinimą</translation>
 <translation id="4081242589061676262">Nepavyko perduoti failo.</translation>
 <translation id="4084682180776658562">Žymė</translation>
@@ -2269,6 +2283,7 @@
 <translation id="4181841719683918333">Kalbos</translation>
 <translation id="4184885522552335684">Vilkite, kad perkeltumėte vaizdą</translation>
 <translation id="4194570336751258953">Įgalinti paspaudimą palietus</translation>
+<translation id="4194595472342532425">Nepavyko nustatyti „Plugin VM“ dėl konfigūravimo problemos. Susisiekite su organizacijos įrenginio administratoriumi. Klaidos kodas: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Atidaryti naujame skirtuke</translation>
 <translation id="4195814663415092787">Tęskite ten, kur baigėte</translation>
 <translation id="4198146608511578238">Tiesiog palaikykite Paleidimo priemonės piktogramą, kad galėtumėte kalbėti su „Google“ padėjėju.</translation>
@@ -2492,6 +2507,7 @@
 <translation id="4549791035683739768">Saugos rakte nėra išsaugota kontrolinių kodų</translation>
 <translation id="4551763574344810652">Paspauskite „<ph name="MODIFIER_KEY_DESCRIPTION" />“, kad anuliuotumėte</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005">Tinklas: <ph name="NETWORK_TYPE" />, signalo stipris <ph name="SIGNAL_STRENGTH" /> proc.</translation>
 <translation id="4554591392113183336">Išorinis plėtinys yra tos pačios arba senesnės versijos, palyginti su esama.</translation>
 <translation id="4555769855065597957">Šešėlis</translation>
 <translation id="4555863373929230635">Kad slaptažodžiai būtų išsaugomi „Google“ paskyroje, prisijunkite ir įjunkite sinchronizavimą.</translation>
@@ -2569,6 +2585,7 @@
 <translation id="4665446389743427678">Visi svetainės <ph name="SITE" /> išsaugoti duomenys bus ištrinti.</translation>
 <translation id="4668721319092543482">Spustelėkite, kad įgalintumėte „<ph name="PLUGIN_NAME" />“</translation>
 <translation id="4672657274720418656">„Distill“ puslapis</translation>
+<translation id="46733273239502219">Neprisijungus pasiekiami duomenys įdiegtose programose taip pat bus išvalyti</translation>
 <translation id="4673442866648850031">Atidaryti rašiklio įrankius, kai rašiklis pašalintas</translation>
 <translation id="4677585247300749148"><ph name="URL" /> nori reaguoti į pritaikymo neįgaliesiems įvykius</translation>
 <translation id="4677772697204437347">GPU atmintis</translation>
@@ -2660,7 +2677,6 @@
 <translation id="4823484602432206655">Skaityti ir keisti naudotojo bei įrenginio nustatymus</translation>
 <translation id="4824958205181053313">Atšaukti sinchronizavimą?</translation>
 <translation id="4827675678516992122">Nepavyko prisijungti</translation>
-<translation id="4828937774870308359">Australiškas</translation>
 <translation id="4829768588131278040">Nustatyti PIN kodą</translation>
 <translation id="4830502475412647084">Įdiegiamas OS naujinys</translation>
 <translation id="4830573902900904548">„<ph name="DEVICE_TYPE" />“ įrenginiui nepavyksta prisijungti prie interneto naudojant „<ph name="NETWORK_NAME" />“. Pasirinkite kitą tinklą. <ph name="LEARN_MORE_LINK_START" />Sužinokite daugiau<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2701,6 +2717,7 @@
 <translation id="4876273079589074638">Padėkite mūsų inžinieriams ištirti ir ištaisyti šią strigtį. Nurodykite tikslius veiksmus, jei galite. Nėra nesvarbios informacijos!</translation>
 <translation id="4876895919560854374">Užrakinti ir atrakinti ekraną</translation>
 <translation id="4877276003880815204">Inspect Elements</translation>
+<translation id="4878653975845355462">Administratorius išjungė tinkintus fonus</translation>
 <translation id="4879491255372875719">Automatinis (numatytasis)</translation>
 <translation id="4880328057631981605">Prieigos taško pavadinimas</translation>
 <translation id="4880827082731008257">Ieškoti istorijoje</translation>
@@ -2756,10 +2773,10 @@
 <translation id="4943691134276646401">„<ph name="CHROME_EXTENSION_NAME" />“ nori prisijungti prie nuosekliojo prievado</translation>
 <translation id="4944310289250773232">Ši autentifikavimo paslauga priglobiama <ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">Veiksmai</translation>
+<translation id="4952981627953231344">„Plugin VM“ šiame įrenginyje neleidžiamas. Susisiekite su organizacijos įrenginio administratoriumi.</translation>
 <translation id="4953689047182316270">Reaguoti į pritaikymo neįgaliesiems įvykius</translation>
 <translation id="4953808748584563296">Numatytasis oranžinis pseudoportretas</translation>
 <translation id="4955710816792587366">PIN kodo pasirinkimas</translation>
-<translation id="4955814292505481804">Metinė licencija</translation>
 <translation id="4959262764292427323">Slaptažodžiai išsaugoti „Google“ paskyroje, todėl galite juos naudoti bet kuriame įrenginyje</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Šią programą įdiegė administratorius.</translation>
@@ -3242,7 +3259,6 @@
 <translation id="5659593005791499971">El. paštas</translation>
 <translation id="5659833766619490117">Nepavyko išversti šio puslapio</translation>
 <translation id="5660204307954428567">Susieti su <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Nuolatinė licencija</translation>
 <translation id="5667546120811588575">Nustatoma „Google Play“...</translation>
 <translation id="5669267381087807207">Aktyvinama</translation>
 <translation id="5669691691057771421">Įveskite naują PIN kodą</translation>
@@ -3258,6 +3274,7 @@
 <translation id="5687326903064479980">Laiko juosta</translation>
 <translation id="5689516760719285838">Vieta</translation>
 <translation id="56907980372820799">Susieti duomenis</translation>
+<translation id="5691180005790455277">Visi <ph name="SITE_GROUP_NAME" /> ir į ją įtrauktų svetainių saugomi duomenys ir slapukai bus išvalyti.</translation>
 <translation id="5691511426247308406">Šeima</translation>
 <translation id="5692183275898619210">Baigta spausdinti</translation>
 <translation id="5696143504434933566">Pranešti apie piktnaudžiavimą „<ph name="EXTENSION_NAME" />“</translation>
@@ -3344,7 +3361,6 @@
 <translation id="5815645614496570556">X.400 adresas</translation>
 <translation id="5816434091619127343">Atlikus prašomus spausdintuvo pakeitimus, spausdintuvo nebebus galima naudoti.</translation>
 <translation id="5817918615728894473">Susieti</translation>
-<translation id="5819762621475381970">- patalpos išdėstymą;</translation>
 <translation id="5821565227679781414">Sukurti šaukinį</translation>
 <translation id="5825412242012995131">Įjungta (rekomenduojama)</translation>
 <translation id="5826395379250998812">Susiekite „<ph name="DEVICE_TYPE" />“ su telefonu <ph name="LINK_BEGIN" />Sužinokite daugiau<ph name="LINK_END" /></translation>
@@ -3480,6 +3496,7 @@
 <translation id="6007240208646052708">Paieška balsu jūsų kalba nepasiekiama.</translation>
 <translation id="6009781704028455063">Įtaisytas jutiklis</translation>
 <translation id="6010869025736512584">Pasiekiama vaizdo įrašų įvestis</translation>
+<translation id="6011074160056912900">Eterneto tinklas</translation>
 <translation id="6011193465932186973">Piršto antspaudas</translation>
 <translation id="6011449291337289699">Išvalyti svetainės duomenis</translation>
 <translation id="6015266928248016057">Netinkamas PUK. Liko bandymų: <ph name="RETRIES" />.</translation>
@@ -3516,6 +3533,7 @@
 <translation id="6053401458108962351">&amp;Išvalyti naršymo duomenis...</translation>
 <translation id="6055171183283175969">Įvestas slaptažodis netinkamas.</translation>
 <translation id="6055392876709372977">PKCS Nr. 1 SHA-256 su RSA šifruote</translation>
+<translation id="6055907707645252013">Tinklas: <ph name="NETWORK_TYPE" />, neprisijungta</translation>
 <translation id="6056710589053485679">Įprastas įkėlimas iš naujo</translation>
 <translation id="6057381398996433816">Ši svetainė užblokuota, kad nebūtų naudojami judesio ir šviesos jutikliai.</translation>
 <translation id="6058567592298841668">Virtualiojo įrenginio papildinys: „<ph name="PLUGIN_VM_NAME" />“</translation>
@@ -3579,6 +3597,7 @@
 <translation id="6136114942382973861">Uždaryti atsisiuntimų juostą</translation>
 <translation id="6137767437444130246">Naudotojo sertifikatas</translation>
 <translation id="6138680304137685902">X9.62 ECDSA parašas naudojant SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, tinklo nėra</translation>
 <translation id="6141988275892716286">Atsisiuntimo patvirtinimas</translation>
 <translation id="6143186082490678276">Gauti pagalbos</translation>
 <translation id="6144938890088808325">Padėkite mums tobulinti „Chromebook“ kompiuterius</translation>
@@ -3885,6 +3904,7 @@
 <translation id="6602956230557165253">Jei norite naršyti, naudokite rodyklių į kairę ir į dešinę klavišus.</translation>
 <translation id="6605847144724004692">Jokie naudotojai dar neįvertino.</translation>
 <translation id="6607831829715835317">Daugiau įrank&amp;ių</translation>
+<translation id="6611972847767394631">Čia rasite savo skirtukus</translation>
 <translation id="6612358246767739896">Apsaugotas turinys</translation>
 <translation id="6615455863669487791">Rodyti</translation>
 <translation id="6618097958368085618">Vis tiek palikti</translation>
@@ -3953,6 +3973,7 @@
 <translation id="6709133671862442373">Naujienos</translation>
 <translation id="6709357832553498500">Prisijungti naudojant „<ph name="EXTENSIONNAME" />“</translation>
 <translation id="6710213216561001401">Ankstesnis</translation>
+<translation id="6715803357256707211">Įdiegiant „Linux“ programą įvyko klaida. Spustelėję pranešimą rasite išsamią informaciją.</translation>
 <translation id="6721678857435001674">Peržiūrėti jūsų saugos rakto tipą ir modelį</translation>
 <translation id="6721972322305477112">&amp;Failas</translation>
 <translation id="672213144943476270">Prieš naršydami kaip svečias atrakinkite savo profilį.</translation>
@@ -3977,7 +3998,6 @@
 <translation id="674632704103926902">Įgalinti vilkimą palietus</translation>
 <translation id="6748217015615267851">Pateikėjas: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Galite tęsti, bet bus atkurti tik sinchronizuoti duomenys ir nustatymai. Visi vietiniai duomenys bus prarasti.</translation>
-<translation id="6748775883310276718">Vienos programos viešasis terminalas</translation>
 <translation id="6751344591405861699">„<ph name="WINDOW_TITLE" />“ (Inkognito)</translation>
 <translation id="6757101664402245801">URL nukopijuotas</translation>
 <translation id="6758056191028427665">Pateikite atsiliepimų.</translation>
@@ -3987,6 +4007,7 @@
 <translation id="6769712124046837540">Pridedamas spausdintuvas...</translation>
 <translation id="6770664076092644100">Patvirtinti per ALR</translation>
 <translation id="6771503742377376720">Yra sertifikavimo institucija</translation>
+<translation id="6772339735733515807">Plėtinių valdymas</translation>
 <translation id="6775163072363532304">Pasiekiami įrenginiai bus rodomi čia.</translation>
 <translation id="6777817260680419853">Peradresavimas užblokuotas</translation>
 <translation id="6778737459546443941">Jūsų tėtis ar mama dar jos nepatvirtino</translation>
@@ -4125,6 +4146,7 @@
 <translation id="6972180789171089114">Garso / vaizdo įrašai</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> negali atidaryti šiame aplanke esančių failų, nes aplanke yra sistemos failų</translation>
 <translation id="6972754398087986839">Darbo pradžia</translation>
+<translation id="6973611239564315524">Galima naujovinti į „Debian 10 (Buster)“</translation>
 <translation id="6974609594866392343">Demonstracinis režimas neprisijungus</translation>
 <translation id="6977381486153291903">Programinės aparatinės įrangos taisymas</translation>
 <translation id="6978121630131642226">Paieškos sistemos</translation>
@@ -4584,6 +4606,7 @@
 <translation id="7644543211198159466">Spalva ir tema</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (savininkas)</translation>
 <translation id="7645681574855902035">Atšaukiamas „Linux“ atsarginės kopijos kūrimas</translation>
+<translation id="7646772052135772216">Slaptažodžio sinchronizavimas neveikia</translation>
 <translation id="7647403192093989392">Nėra naujausios veiklos</translation>
 <translation id="7648992873808071793">Saugoti failus šiame įrenginyje</translation>
 <translation id="7649070708921625228">Žinynas</translation>
@@ -4772,6 +4795,7 @@
 <translation id="7877451762676714207">Nežinoma serverio klaida. Bandykite dar kartą arba susisiekite su serverio administratoriumi.</translation>
 <translation id="7877680364634660272">Apžvalga</translation>
 <translation id="7878562273885520351">Jūsų slaptažodis gali būti pažeistas</translation>
+<translation id="7879631849810108578">Spartusis klavišas nustatytas: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Vietiniai duomenys bus ištrinti paleidus iš naujo</translation>
 <translation id="7881483672146086348">Žiūrėti paskyrą</translation>
 <translation id="7882358943899516840">Teikėjo tipas</translation>
@@ -4858,6 +4882,7 @@
 <translation id="7987814697832569482">Visada susieti naudojant šį VPN</translation>
 <translation id="7988355189918024273">Įgalinti pasiekiamumo funkcijas</translation>
 <translation id="7991296728590311172">Prieigos jungikliu nustatymai</translation>
+<translation id="7994350303002908848">Nepavyko įdiegti „Plugin VM“. Bandykite dar kartą arba susisiekite su organizacijos įrenginio administratoriumi. Klaidos kodas: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">EAP metodas</translation>
 <translation id="7997826902155442747">Apdorojimo pirmumas</translation>
 <translation id="7999229196265990314">Sukurti šie failai:
@@ -4950,7 +4975,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Nėra trečiųjų šalių slapukų}=1{1 trečiųjų šalių slapukas}one{# trečiųjų šalių slapukas}few{# trečiųjų šalių slapukai}many{# trečiųjų šalių slapuko}other{# trečiųjų šalių slapukų}}</translation>
 <translation id="810875025413331850">Netoliese esančių įrenginių nerasta.</translation>
 <translation id="8111155949205007504">Bendrinkite šį slaptažodį su „iPhone“</translation>
-<translation id="8113043281354018522">Pasirinkite licencijos tipą</translation>
 <translation id="8114875720387900039">Horizontalus skaidymas</translation>
 <translation id="8116972784401310538">&amp;Žymių tvarkytuvė</translation>
 <translation id="8117620576188476503">Tvarkykite ryšius, naujinius ir nustatymus naudodami būsenos dėklą. Kad čia patektumėte naudodami klaviatūrą, paspauskite „Alt“ + „Shift“ + S.</translation>
@@ -5107,6 +5131,7 @@
 <translation id="8327039559959785305">Įdedant „Linux“ failus įvyko klaida. Bandykite dar kartą.</translation>
 <translation id="8335587457941836791">Atsegti nuo lentynos</translation>
 <translation id="8336407002559723354">Naujiniai nebebus teikiami <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Paleiskite įrenginį iš naujo, kad sistemos tekstas būtų rodomas <ph name="LANGUAGE" /></translation>
 <translation id="8336739000755212683">Keisti įrenginio paskyros vaizdą</translation>
 <translation id="8337047789441383384">Jau užregistravote šį saugos raktą. Nebereikia jo registruoti.</translation>
 <translation id="8338952601723052325">Kūrėjo svetainė</translation>
@@ -5150,6 +5175,7 @@
 <translation id="8400146488506985033">Tvarkyti žmones</translation>
 <translation id="8401432541486058167">Nurodykite su išmaniąja kortele susietą PIN kodą.</translation>
 <translation id="8405046151008197676">Gaukite svarbiausios informacijos apie paskiausią naujinį</translation>
+<translation id="8408068190360279472">Tinklas: <ph name="NETWORK_TYPE" />, jungiamasi</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Pirmiausia paklausti (rekomenduojama)</translation>
 <translation id="8418445294933751433">&amp;Rodyti kaip skirtuką</translation>
@@ -5439,6 +5465,7 @@
 <translation id="8807632654848257479">Stabilus</translation>
 <translation id="8808478386290700967">Internetinė parduotuvė</translation>
 <translation id="8808686172382650546">Katė</translation>
+<translation id="8808744862003883508">Šiame puslapyje galite peržiūrėti visus „Chrome“ įdiegtus plėtinius.</translation>
 <translation id="8809147117840417135">Šviesi žalsvai mėlyna</translation>
 <translation id="8813698869395535039">Nepavyko prisijungti prie <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">popieriaus lapas</translation>
@@ -5666,7 +5693,6 @@
 <translation id="9121814364785106365">Atidaryti kaip susegtą skirtuką</translation>
 <translation id="9122176249172999202">„<ph name="IDS_SHORT_PRODUCT_NAME" />“ pristabdyta</translation>
 <translation id="9124003689441359348">Išsaugoti slaptažodžiai bus rodomi čia</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (liko <ph name="LICENSE_COUNT" />)</translation>
 <translation id="9128317794749765148">Nepavyko užbaigti nustatymo proceso</translation>
 <translation id="9128870381267983090">Prisijungti prie tinklo</translation>
 <translation id="9130015405878219958">Įvestas neteisingas režimas.</translation>
@@ -5705,6 +5731,7 @@
 <translation id="9188732951356337132">Siųskite naudojimo ir diagnostikos duomenis. Šiuo metu šis įrenginys automatiškai siunčia „Google“ diagnostikos, įrenginio ir programų naudojimo duomenis. Tai nebus naudojama siekiant nustatyti jūsų vaiko tapatybę ir padės pagerinti sistemos bei programos stabilumą ir teikti kitus patobulinimus. Kai kurie sukaupti duomenys taip pat bus naudingi „Google“ programoms ir partneriams, pvz., „Android“ kūrėjams. Jei papildomas „Žiniatinklio ir programų veiklos“ nustatymas įjungtas vaiko įrenginyje, šie duomenys gali būti išsaugoti vaiko „Google“ paskyroje. <ph name="BEGIN_LINK2" />Sužinokite daugiau<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP / „IPSec“ ir iš anksto bendrinamas raktas</translation>
 <translation id="920045321358709304">Ieškoti sistemoje „<ph name="SEARCH_ENGINE" />“</translation>
+<translation id="9201023452444595544">Visi neprisijungus pasiekiami duomenys bus išvalyti</translation>
 <translation id="9201220332032049474">Ekrano užrakto parinktys</translation>
 <translation id="9203398526606335860">&amp;Profiliavimas įgalintas</translation>
 <translation id="9203904171912129171">Pasirinkti įrenginį</translation>
@@ -5717,6 +5744,7 @@
 <translation id="9220525904950070496">Pašalinti paskyrą</translation>
 <translation id="9220820413868316583">Pakelkite ir bandykite dar kartą.</translation>
 <translation id="923467487918828349">Rodyti viską</translation>
+<translation id="929117907539171075">Neprisijungus pasiekiami duomenys įdiegtoje programoje taip pat bus išvalyti</translation>
 <translation id="930268624053534560">Išsamios laiko žymės</translation>
 <translation id="932327136139879170">Kontaktinė namų informacija</translation>
 <translation id="932508678520956232">Spausdinimo pradėti nepavyko.</translation>
@@ -5742,6 +5770,7 @@
 <translation id="960719561871045870">Operacijos ženklo kodas</translation>
 <translation id="960987915827980018">Liko apie 1 val.</translation>
 <translation id="962802172452141067">Žymių aplanko medis</translation>
+<translation id="964057662886721376">Kai kurie plėtiniai gali lėtinti jūsų darbą, ypač tie, kurių įdiegti neplanavote.</translation>
 <translation id="964286338916298286">IT administratorius jūsų įrenginyje išjungė naudingas „Chrome“ funkcijas.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Programa}one{Programos}few{Programos}many{Programos}other{Programos}}</translation>
 <translation id="965211523698323809">Siųskite ir gaukite teksto pranešimus naudodami „<ph name="DEVICE_TYPE" />“. <ph name="LINK_BEGIN" />Sužinokite daugiau<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb
index 70433c8..1c2eaee 100644
--- a/chrome/app/resources/generated_resources_lv.xtb
+++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Pielāgota</translation>
 <translation id="1178581264944972037">Pauzēt</translation>
 <translation id="117916940443676133">Jūsu drošības atslēga nav aizsargāta ar PIN. Lai pārvaldītu pierakstīšanās datus, vispirms izveidojiet PIN.</translation>
-<translation id="118069123878619799">- jūsu fiziskās īpašības, piemēram, garums;</translation>
 <translation id="1181037720776840403">Noņemt</translation>
 <translation id="1183237619868651138">Failu “<ph name="EXTERNAL_CRX_FILE" />” nevar instalēt lokālajā kešatmiņā.</translation>
 <translation id="1185924365081634987">Varat arī mēģināt <ph name="GUEST_SIGNIN_LINK_START" />pārlūkot kā viesis<ph name="GUEST_SIGNIN_LINK_END" />, lai novērstu šo tīkla kļūdu.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">Gaida <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033">Vēl <ph name="NUM_PRINTERS" /> pieejamas ierīces.</translation>
 <translation id="1495677929897281669">Atgriezties cilnē</translation>
+<translation id="1499271269825557605">Ja neatpazīstat kādu paplašinājumu vai ja pārlūks nedarbojas, kā paredzēts, šeit varat izslēgt vai pielāgot paplašinājumus.</translation>
 <translation id="1500297251995790841">Nezināma ierīce [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Vairākkārtējas pierakstīšanās sesijā šim īpašnieka kontam ir jābūt pirmajam kontam, kurā jāpierakstās.</translation>
 <translation id="150411034776756821">Noņemt vietni <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Šīs lapas piekļuve jūsu kamerai ir bloķēta.</translation>
 <translation id="1507246803636407672">&amp;Atmest</translation>
 <translation id="1508491105858779599">Novietojiet pirkstu uz pirkstu nospiedumu sensora, lai atbloķētu ierīci.</translation>
+<translation id="1508575541972276599">Pašreizējā versija ir Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">Piekļūt jebkurai ierīcei <ph name="DEVICE_NAME_AND_VENDOR" />, izmantojot USB savienojumu</translation>
 <translation id="150962533380566081">PUK nav derīgs.</translation>
 <translation id="1510030919967934016">Šī lapa ir bloķēta un nevar izsekot jūsu atrašanās vietu.</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">Lietot</translation>
 <translation id="1603914832182249871">(Inkognito)</translation>
 <translation id="1604432177629086300">Nevarēja izdrukāt. Pārbaudiet printeri un mēģiniet vēlreiz.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: paroļu sinhronizācija nedarbojas</translation>
 <translation id="1607139524282324606">Notīrīt ierakstu</translation>
 <translation id="1608626060424371292">Noņemt šo lietotāju</translation>
 <translation id="1608668830839595724">Citas darbības ar atlasītajiem vienumiem</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">Mitinātas lietotnes dati</translation>
 <translation id="1776712937009046120">Pievienot lietotāju</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Šo ierīci pārvalda <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    Lai turpinātu pierakstīšanos <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> kontā, noklikšķiniet uz Tālāk.</translation>
 <translation id="1779652936965200207">Ievadiet šo ieejas atslēgu ierīcē <ph name="DEVICE_NAME" />:</translation>
 <translation id="1780152987505130652">Aizvērt grupu</translation>
 <translation id="1781291988450150470">Pašreizējais PIN</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">Darbība nav pieejama</translation>
 <translation id="2050339315714019657">Portrets</translation>
 <translation id="2053312383184521053">Dati par neaktīvu stāvokli</translation>
+<translation id="2055585478631012616">Jūs tiksiet izrakstīts no šīm vietnēm, tostarp atvērtajās cilnēs</translation>
 <translation id="205560151218727633">Google asistenta logotips</translation>
 <translation id="2058456167109518507">Atrastā ierīce</translation>
 <translation id="2059913712424898428">Laika josla</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">Atsaukt</translation>
 <translation id="2080070583977670716">Vairāk iestatījumu</translation>
 <translation id="2087822576218954668">Drukāšana: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN tīkls</translation>
 <translation id="2089566709556890888">Droša pārlūkošana ar Google Chrome</translation>
 <translation id="2089795179672254991">Vaicāt, ja vietne vēlas skatīt starpliktuvē kopēto tekstu un attēlus (ieteicams)</translation>
 <translation id="2090165459409185032">Lai atgūtu konta informāciju, apmeklējiet vietni google.com/accounts/recovery.</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">Vietne piekļūst jūsu audio un video ievadei</translation>
 <translation id="2379281330731083556">Drukāt, izmantojot sistēmas dialoglodziņu... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Jautāt pirms sūtīšanas (ieteicams)</translation>
+<translation id="2382818385048255866">Paplašinājumu pārbaude</translation>
 <translation id="2384436799579181135">Radās kļūda. Lūdzu, pārbaudiet printeri un mēģiniet vēlreiz.</translation>
 <translation id="2387458720915042159">Starpniekservera savienojuma veids</translation>
 <translation id="2391419135980381625">Standarta fonts</translation>
@@ -1036,6 +1043,7 @@
 <translation id="2462724976360937186">Sertifikāta izdevējiestādes atslēgas ID</translation>
 <translation id="2462752602710430187"><ph name="PRINTER_NAME" /> pievienots</translation>
 <translation id="2464089476039395325">HTTP starpniekserveris</translation>
+<translation id="2467267713099745100">Tīkls: <ph name="NETWORK_TYPE" />, izslēgts</translation>
 <translation id="2468205691404969808">Izmanto sīkfailus, lai iegaumētu jūsu preferences, pat ja neapmeklējāt šīs lapas</translation>
 <translation id="2468402215065996499">Tamagoči</translation>
 <translation id="2469259292033957819">Jums nav saglabātu printeru.</translation>
@@ -1290,6 +1298,7 @@
 <translation id="2800760947029405028">Augšupielādēt attēlu</translation>
 <translation id="2803375539583399270">Ievadiet PIN</translation>
 <translation id="2804043232879091219">Nevarēja atvērt citu pārlūkprogrammu</translation>
+<translation id="2804667941345577550">Jūs tiksiet izrakstīts no šīs vietnes, tostarp atvērtajās cilnēs</translation>
 <translation id="2804680522274557040">Kamera ir izslēgta</translation>
 <translation id="2805646850212350655">Microsoft šīfrēšanas failu sistēma</translation>
 <translation id="2805756323405976993">Lietotnes</translation>
@@ -1297,6 +1306,7 @@
 <translation id="2806891468525657116">Saīsne jau pastāv</translation>
 <translation id="2807517655263062534">Šeit ir redzami lejupielādētie faili.</translation>
 <translation id="2809586584051668049">un vēl <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2810390687497823527">Ja neatpazīstat kādu paplašinājumu vai ja pārlūkprogramma nedarbojas, kā paredzēts, šeit varat izslēgt vai pielāgot paplašinājumus.</translation>
 <translation id="2812049959647166806">Thunderbolt savienojums netiek atbalstīts</translation>
 <translation id="2812944337881233323">Izrakstieties un atkārtoti pierakstieties.</translation>
 <translation id="2812989263793994277">Nerādīt nevienu attēlu</translation>
@@ -1336,6 +1346,7 @@
 <translation id="2861941300086904918">Native Client drošības pārvaldnieks</translation>
 <translation id="2864601841139725659">Profila attēla iestatīšana</translation>
 <translation id="2865919525181940183">Ekrānā pašlaik redzamo programmu ekrānuzņēmums</translation>
+<translation id="286674810810214575">Notiek barošanas avotu pārbaude...</translation>
 <translation id="2867768963760577682">Atvērt kā piespraustu cilni</translation>
 <translation id="2868746137289129307">Šis paplašinājums ir novecojis, un uzņēmuma politika to ir atspējojusi. Kad būs pieejama jaunāka versija, iespējams, paplašinājums tiks automātiski iespējots.</translation>
 <translation id="2870560284913253234">Vietne</translation>
@@ -1413,6 +1424,7 @@
 <translation id="2972581237482394796">&amp;Pāratsaukt</translation>
 <translation id="2973324205039581528">Nerādīt vietni</translation>
 <translation id="2977480621796371840">Noņemt no grupas</translation>
+<translation id="2979520980928493164">Veselīgāks, laimīgāks pārlūks Chrome</translation>
 <translation id="2979639724566107830">Atvērt jaunā logā</translation>
 <translation id="2981113813906970160">Rādīt lielu peles kursoru</translation>
 <translation id="2982970937345031">Ziņot anonīmi</translation>
@@ -1519,6 +1531,7 @@
 <translation id="3143515551205905069">Atcelt sinhronizāciju</translation>
 <translation id="3143754809889689516">Atskaņot no sākuma</translation>
 <translation id="3144647712221361880">Atvērt saiti kā</translation>
+<translation id="3145187901750964977">Nevarēja instalēt virtuālo mašīnu. Lūdzu, mēģiniet vēlreiz vai sazinieties ar savas organizācijas ierīču administratoru. Kļūdas kods: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Versija:
     <ph name="LINUX_VERSION" />
 
@@ -1557,6 +1570,7 @@
 <translation id="3192947282887913208">Audio faili</translation>
 <translation id="3194737229810486521">Vietnē <ph name="URL" /> tiek pieprasīta atļauja pastāvīgi glabāt datus jūsu ierīcē.</translation>
 <translation id="3199127022143353223">Serveri</translation>
+<translation id="3201306578844503970">Nevarēja instalēt virtuālo mašīnu tīkla kļūdas dēļ. Lūdzu, mēģiniet vēlreiz vai sazinieties ar savas organizācijas ierīču administratoru. Kļūdas kods: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Šeit tiks rādītas pieejamās USB ierīces.</translation>
 <translation id="3202131003361292969">Ceļš</translation>
 <translation id="3202173864863109533">Šīs cilnes skaņa ir izslēgta.</translation>
@@ -1893,7 +1907,6 @@
 <translation id="3678156199662914018">Paplašinājums: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Paldies par atsauksmēm! Pašlaik esat bezsaistē, un jūsu ziņojums tiks nosūtīts vēlāk.</translation>
 <translation id="3682824389861648626">Kustības slieksnis</translation>
-<translation id="3683023058278427253">Jūsu domēnam tika konstatēti vairāki licenču veidi. Lūdzu, izvēlieties vienu, lai turpinātu.</translation>
 <translation id="3683524264665795342">Lietotnes <ph name="APP_NAME" /> nosūtītais ekrāna kopīgošanas pieprasījums</translation>
 <translation id="368789413795732264">Mēģinot rakstīt failu, radās kļūda: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Rakstīt failos un mapēs, kurus atverat lietojumprogrammā</translation>
@@ -2067,6 +2080,7 @@
 <translation id="389589731200570180">Dalīšanās ar viesiem</translation>
 <translation id="389901847090970821">Tastatūras atlasīšana</translation>
 <translation id="3899879303189199559">Bezsaistē ilgāk par gadu</translation>
+<translation id="3900789207771372462">Dažos paplašinājumos var redzēt jūsu pārlūkošanas darbības, tostarp personas informāciju.</translation>
 <translation id="3900966090527141178">Paroļu eksportēšana</translation>
 <translation id="3901991538546252627">Notiek savienojuma izveide ar <ph name="NAME" /></translation>
 <translation id="3905761538810670789">Lietotnes labošana</translation>
@@ -2157,7 +2171,6 @@
 <translation id="4013132157686828973"><ph name="CLIENT_NAME" /> atkļūdo šo pārlūku.</translation>
 <translation id="4014432863917027322">Vai labot “<ph name="EXTENSION_NAME" />”?</translation>
 <translation id="4015163439792426608">Vai izmantojat paplašinājumus? Ērti <ph name="BEGIN_LINK" />pārvaldiet paplašinājumus<ph name="END_LINK" /> vienuviet.</translation>
-<translation id="4020106588733303597">Diemžēl sistēmai neizdevās ielādēt pieejamās licences.</translation>
 <translation id="4020327272915390518">Opciju izvēlne</translation>
 <translation id="4021279097213088397">—</translation>
 <translation id="4022426551683927403">Pievienot vārdnīc&amp;ai</translation>
@@ -2195,6 +2208,7 @@
 <translation id="407520071244661467">Mērogs</translation>
 <translation id="4075639477629295004">Nevar apraidīt failu <ph name="FILE_NAME" />.</translation>
 <translation id="4077917118009885966">Šajā vietnē reklāmu rādīšana ir bloķēta.</translation>
+<translation id="4077919383365622693">Tiks notīrīti visi vietnes <ph name="SITE" /> saglabātie dati un sīkfaili.</translation>
 <translation id="4079140982534148664">Izmantot uzlaboto pareizrakstības pārbaudi</translation>
 <translation id="4081242589061676262">Faila apraides kļūme</translation>
 <translation id="4084682180776658562">Grāmatzīme</translation>
@@ -2269,6 +2283,7 @@
 <translation id="4181841719683918333">Valodas</translation>
 <translation id="4184885522552335684">Velciet, lai pārvietotu displeju.</translation>
 <translation id="4194570336751258953">Iespējot funkciju "pieskarties, lai noklikšķinātu"</translation>
+<translation id="4194595472342532425">Konfigurācijas problēmas dēļ nevarēja iestatīt spraudni Plugin VM. Lūdzu, sazinieties ar savas organizācijas ierīču administratoru. Kļūdas kods: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Atvērt jaunā cilnē</translation>
 <translation id="4195814663415092787">Atsākt darbu no vietas, kur to beidzu</translation>
 <translation id="4198146608511578238">Vienkārši turiet palaišanas programmas ikonu, lai runātu ar savu Google asistentu.</translation>
@@ -2492,6 +2507,7 @@
 <translation id="4549791035683739768">Jūsu drošības atslēgā nav saglabātu pirkstu nospiedumu</translation>
 <translation id="4551763574344810652">Lai atsauktu, nospiediet <ph name="MODIFIER_KEY_DESCRIPTION" /></translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005">Tīkls: <ph name="NETWORK_TYPE" />, signāla stiprums: <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">Ārējā paplašinājuma versija ir tāda pati vai vecāka nekā pašreizējā paplašinājuma versija.</translation>
 <translation id="4555769855065597957">Ēna</translation>
 <translation id="4555863373929230635">Lai saglabātu paroles savā Google kontā, pierakstieties un ieslēdziet sinhronizāciju.</translation>
@@ -2569,6 +2585,7 @@
 <translation id="4665446389743427678">Tiks izdzēsti visi vietnes <ph name="SITE" /> saglabātie dati.</translation>
 <translation id="4668721319092543482">Noklikšķiniet, lai iespējotu spraudni <ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">Attīrīt lapu</translation>
+<translation id="46733273239502219">Tiks notīrīti arī bezsaistē esošie dati instalētajās lietotnēs</translation>
 <translation id="4673442866648850031">Skārienekrāna pildspalvas rīki tiek atvērti, kad skārienekrāna pildspalva ir noņemta.</translation>
 <translation id="4677585247300749148">Vietnē <ph name="URL" /> tiek pieprasīta atļauja reaģēt uz piekļūstamības notikumiem.</translation>
 <translation id="4677772697204437347">Grafiskā procesora atmiņa</translation>
@@ -2660,7 +2677,6 @@
 <translation id="4823484602432206655">Lasīt un mainīt lietotāja un ierīces iestatījumus</translation>
 <translation id="4824958205181053313">Vai atcelt sinhronizāciju?</translation>
 <translation id="4827675678516992122">Nevarēja izveidot savienojumu</translation>
-<translation id="4828937774870308359">Austrāliešu</translation>
 <translation id="4829768588131278040">Iestatīt PIN</translation>
 <translation id="4830502475412647084">OS atjauninājuma instalēšana</translation>
 <translation id="4830573902900904548"><ph name="DEVICE_TYPE" /> ierīcē nevar izveidot savienojumu ar internetu, izmantojot tīklu <ph name="NETWORK_NAME" />. Lūdzu, izvēlieties citu tīklu. <ph name="LEARN_MORE_LINK_START" />Uzziniet vairāk<ph name="LEARN_MORE_LINK_END" />.</translation>
@@ -2701,6 +2717,7 @@
 <translation id="4876273079589074638">Palīdziet mūsu inženieriem izpētīt un novērst šo avāriju. Ja varat, norādiet konkrētas darbības (jo detalizētāk, jo labāk).</translation>
 <translation id="4876895919560854374">Bloķēt un atbloķēt ekrānu</translation>
 <translation id="4877276003880815204">Pārbaudīt elementus</translation>
+<translation id="4878653975845355462">Jūsu administrators ir izslēdzis pielāgotos fonus</translation>
 <translation id="4879491255372875719">Automātiski (noklusējums)</translation>
 <translation id="4880328057631981605">Piekļuves punkta nosaukums</translation>
 <translation id="4880827082731008257">Meklēšanas vēsture</translation>
@@ -2756,10 +2773,10 @@
 <translation id="4943691134276646401">Paplašinājums “<ph name="CHROME_EXTENSION_NAME" />” vēlas izveidot savienojumu ar seriālo pieslēgvietu</translation>
 <translation id="4944310289250773232">Šo autentifikācijas pakalpojumu mitina <ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">Darbības</translation>
+<translation id="4952981627953231344">Spraudnis Plugin VM nav atļauts šajā ierīce. Sazinieties ar savas organizācijas ierīču administratoru.</translation>
 <translation id="4953689047182316270">Atbildēt uz pieejamības notikumiem</translation>
 <translation id="4953808748584563296">Noklusējuma iemiesojums oranžā krāsā</translation>
 <translation id="4955710816792587366">Izvēlieties PIN</translation>
-<translation id="4955814292505481804">Gada licence</translation>
 <translation id="4959262764292427323">Paroles tiek saglabātas jūsu Google kontā, lai jūs tās varētu izmantot jebkurā ierīcē.</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> — <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Šo lietotni instalēja administrators.</translation>
@@ -3241,7 +3258,6 @@
 <translation id="5659593005791499971">E-pasts</translation>
 <translation id="5659833766619490117">Šo lapu nevarēja pārtulkot</translation>
 <translation id="5660204307954428567">Savienošana pārī ar ierīci “<ph name="DEVICE_NAME" />”</translation>
-<translation id="5662477687021125631">Pastāvīga licence</translation>
 <translation id="5667546120811588575">Notiek Google Play iestatīšana...</translation>
 <translation id="5669267381087807207">Notiek aktivizācija</translation>
 <translation id="5669691691057771421">Ievadiet jauno PIN.</translation>
@@ -3257,6 +3273,7 @@
 <translation id="5687326903064479980">Laika josla</translation>
 <translation id="5689516760719285838">Atrašanās vieta</translation>
 <translation id="56907980372820799">Saistīt datus</translation>
+<translation id="5691180005790455277">Tiks notīrīti visi dati un sīkfaili, kas tiek glabāti vietņu grupā <ph name="SITE_GROUP_NAME" /> un visās pakārtotajās vietnēs.</translation>
 <translation id="5691511426247308406">Ģimene</translation>
 <translation id="5692183275898619210">Drukāšana ir pabeigta</translation>
 <translation id="5696143504434933566">Ziņot par paplašinājuma “<ph name="EXTENSION_NAME" />” pārkāpumu</translation>
@@ -3343,7 +3360,6 @@
 <translation id="5815645614496570556">X.400 adrese</translation>
 <translation id="5816434091619127343">Ja tiktu veiktas pieprasītās printera izmaiņas, printeri nevarētu lietot.</translation>
 <translation id="5817918615728894473">Savienot pārī</translation>
-<translation id="5819762621475381970">- jūsu telpas izkārtojums.</translation>
 <translation id="5821565227679781414">Izveidot saīsni</translation>
 <translation id="5825412242012995131">Ieslēgts (ieteicams)</translation>
 <translation id="5826395379250998812">Savienojiet <ph name="DEVICE_TYPE" /> ierīci ar tālruni. <ph name="LINK_BEGIN" />Uzzināt vairāk<ph name="LINK_END" /></translation>
@@ -3479,6 +3495,7 @@
 <translation id="6007240208646052708">Meklēšana ar balsi jūsu valodā nav pieejama.</translation>
 <translation id="6009781704028455063">Iebūvēts sensors</translation>
 <translation id="6010869025736512584">Notiek piekļūšana video ievadei</translation>
+<translation id="6011074160056912900">Ethernet tīkls</translation>
 <translation id="6011193465932186973">Pirksta nospiedums</translation>
 <translation id="6011449291337289699">Vietnes datu notīrīšana</translation>
 <translation id="6015266928248016057">PUK nav derīgs. Atlikušo mēģinājumu skaits: <ph name="RETRIES" />.</translation>
@@ -3515,6 +3532,7 @@
 <translation id="6053401458108962351">Notīrīt &amp;pārlūkprogrammas datus...</translation>
 <translation id="6055171183283175969">Ievadītā parole nav pareiza.</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 ar RSA šifrējumu</translation>
+<translation id="6055907707645252013">Tīkls: <ph name="NETWORK_TYPE" />, nav savienojuma ar tīklu</translation>
 <translation id="6056710589053485679">Veikt normālo atkārtoto ielādi</translation>
 <translation id="6057381398996433816">Šajā vietnē ir bloķēta kustību un gaismas sensoru izmantošana.</translation>
 <translation id="6058567592298841668">Spraudņa virtuālā mašīna: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3578,6 +3596,7 @@
 <translation id="6136114942382973861">Aizvērt lejupielāžu joslu</translation>
 <translation id="6137767437444130246">Lietotāja sertifikāts</translation>
 <translation id="6138680304137685902">X9.62 ECDSA paraksts ar SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, nav tīkla</translation>
 <translation id="6141988275892716286">Lejupielādes apstiprināšana</translation>
 <translation id="6143186082490678276">Palīdzības saņemšana</translation>
 <translation id="6144938890088808325">Palīdziet mums uzlabot Chromebook datorus</translation>
@@ -3884,6 +3903,7 @@
 <translation id="6602956230557165253">Lai pārvietotos, izmantojiet kreiso un labo bulttaustiņu.</translation>
 <translation id="6605847144724004692">Vēl nav novērtējis neviens lietotājs.</translation>
 <translation id="6607831829715835317">Vairā&amp;k rīku</translation>
+<translation id="6611972847767394631">Jūsu cilnes ir pieejamas šeit</translation>
 <translation id="6612358246767739896">Aizsargāts saturs</translation>
 <translation id="6615455863669487791">Rādīt man</translation>
 <translation id="6618097958368085618">Tik un tā paturēt</translation>
@@ -3952,6 +3972,7 @@
 <translation id="6709133671862442373">Ziņas</translation>
 <translation id="6709357832553498500">Izveidot savienojumu, izmantojot paplašinājumu <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Iepriekšējais</translation>
+<translation id="6715803357256707211">Linux lietojumprogrammas instalēšanas laikā radās kļūda. Noklikšķiniet uz paziņojuma, lai iegūtu detalizētu informāciju.</translation>
 <translation id="6721678857435001674">Skatīt jūsu drošības atslēgas ražotāju un modeli</translation>
 <translation id="6721972322305477112">&amp;Fails</translation>
 <translation id="672213144943476270">Pirms pārlūkošanas viesa režīmā, lūdzu, atbloķējiet savu profilu.</translation>
@@ -3976,7 +3997,6 @@
 <translation id="674632704103926902">Iespējot vilkšanu pieskaroties</translation>
 <translation id="6748217015615267851">Renderētājs: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Varat turpināt, taču tiks atjaunoti tikai sinhronizētie dati un iestatījumi. Visi lokālie dati tiks zaudēti.</translation>
-<translation id="6748775883310276718">Vienas lietotnes kiosks</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Inkognito režīms)</translation>
 <translation id="6757101664402245801">URL ir nokopēts</translation>
 <translation id="6758056191028427665">Sniedziet atsauksmes par pakalpojuma darbību.</translation>
@@ -3986,6 +4006,7 @@
 <translation id="6769712124046837540">Printera pievienošana...</translation>
 <translation id="6770664076092644100">Apstiprināt, izmantojot NFC</translation>
 <translation id="6771503742377376720">Ir sertifikāta izdevējiestāde</translation>
+<translation id="6772339735733515807">Paplašinājumu pārvaldība</translation>
 <translation id="6775163072363532304">Šeit tiks parādītas pieejamās ierīces.</translation>
 <translation id="6777817260680419853">Novirzīšana bloķēta</translation>
 <translation id="6778737459546443941">Neviens no jūsu vecākiem vēl nav to apstiprinājis</translation>
@@ -4124,6 +4145,7 @@
 <translation id="6972180789171089114">Audio/video</translation>
 <translation id="6972553992270299730">Vietne <ph name="ORIGIN" /> nevar atvērt šajā mapē esošos failus, jo mapē ir arī sistēmas faili.</translation>
 <translation id="6972754398087986839">Sākt darbu</translation>
+<translation id="6973611239564315524">Ir pieejams jauninājums uz versiju Debian 10 (Buster)</translation>
 <translation id="6974609594866392343">Bezsaistes demonstrācijas režīms</translation>
 <translation id="6977381486153291903">Programmaparatūras pārskatīšana</translation>
 <translation id="6978121630131642226">Meklētāji</translation>
@@ -4583,6 +4605,7 @@
 <translation id="7644543211198159466">Krāsa un motīvs</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (īpašnieks)</translation>
 <translation id="7645681574855902035">Linux dublējuma atcelšana</translation>
+<translation id="7646772052135772216">Paroļu sinhronizācija nedarbojas</translation>
 <translation id="7647403192093989392">Nav nesen veiktu darbību</translation>
 <translation id="7648992873808071793">saglabāt failus šajā ierīcē</translation>
 <translation id="7649070708921625228">Palīdzība</translation>
@@ -4770,6 +4793,7 @@
 <translation id="7877451762676714207">Nezināma servera kļūda. Mēģiniet vēlreiz vai sazinieties ar servera administratoru.</translation>
 <translation id="7877680364634660272">Ceļvedis</translation>
 <translation id="7878562273885520351">Iespējams, jūsu parole ir apdraudēta</translation>
+<translation id="7879631849810108578">Saīsne ir iestatīta: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Lokālie dati tiks dzēsti, kad veiksiet restartēšanu</translation>
 <translation id="7881483672146086348">Skatīt kontu</translation>
 <translation id="7882358943899516840">Pakalpojumu sniedzēja veids</translation>
@@ -4856,6 +4880,7 @@
 <translation id="7987814697832569482">Savienojuma izveidei vienmēr izmantot šo VPN</translation>
 <translation id="7988355189918024273">Iespējot pieejamības funkcijas</translation>
 <translation id="7991296728590311172">Slēdžu piekļuves iestatījumi</translation>
+<translation id="7994350303002908848">Nevarēja instalēt Plugin VM. Lūdzu, mēģiniet vēlreiz vai sazinieties ar savas organizācijas ierīču administratoru. Kļūdas kods: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">EAP metode</translation>
 <translation id="7997826902155442747">Procesa prioritāte</translation>
 <translation id="7999229196265990314">Tika izveidoti šādi faili:
@@ -4948,7 +4973,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Nav trešās puses sīkfailu}=1{Bloķēts 1 trešās puses sīkfails}zero{Bloķēti # trešās puses sīkfaili}one{Bloķēts # trešās puses sīkfails}other{Bloķēti # trešās puses sīkfaili}}</translation>
 <translation id="810875025413331850">Nav atrasta neviena tuvumā esoša ierīce.</translation>
 <translation id="8111155949205007504">Kopīgojiet šo paroli ar savu iPhone tālruni</translation>
-<translation id="8113043281354018522">Izvēlieties licences veidu</translation>
 <translation id="8114875720387900039">Horizontāls dalījums</translation>
 <translation id="8116972784401310538">&amp;Grāmatzīmju pārvaldnieks</translation>
 <translation id="8117620576188476503">Statusa joslā varat pārvaldīt savienojumus, atjauninājumus un iestatījumus. Lai tai piekļūtu, nospiediet taustiņu kombināciju Alt + Shift + S.</translation>
@@ -5105,6 +5129,7 @@
 <translation id="8327039559959785305">Iekļaujot Linux failus, radās kļūda. Lūdzu, mēģiniet vēlreiz.</translation>
 <translation id="8335587457941836791">Atspraust no plaukta</translation>
 <translation id="8336407002559723354">Atjauninājumi tiks nodrošināti līdz: <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Restartēt ierīci, lai parādītu sistēmas tekstu šādā valodā: <ph name="LANGUAGE" /></translation>
 <translation id="8336739000755212683">Mainīt ierīces konta attēlu</translation>
 <translation id="8337047789441383384">Jūs jau reģistrējāt šo drošības atslēgu. Jums tā nav jāreģistrē vēlreiz.</translation>
 <translation id="8338952601723052325">Izstrādātāja vietne</translation>
@@ -5148,6 +5173,7 @@
 <translation id="8400146488506985033">Pārvaldīt personas</translation>
 <translation id="8401432541486058167">Norādiet PIN, kas ir saistīts ar jūsu viedkarti.</translation>
 <translation id="8405046151008197676">Iegūstiet svarīgāko informāciju no jaunākā atjauninājuma</translation>
+<translation id="8408068190360279472">Tīkls: <ph name="NETWORK_TYPE" />, notiek savienojuma izveide</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Vispirms jautāt (ieteicams)</translation>
 <translation id="8418445294933751433">Rādīt kā cilni</translation>
@@ -5437,6 +5463,7 @@
 <translation id="8807632654848257479">Stabils</translation>
 <translation id="8808478386290700967">Web Store</translation>
 <translation id="8808686172382650546">Kaķis</translation>
+<translation id="8808744862003883508">Šajā lapā varat skatīt visus pārlūkā Chrome instalētos paplašinājumus.</translation>
 <translation id="8809147117840417135">Gaiši zilganzaļa</translation>
 <translation id="8813698869395535039">Problēma ar pierakstīšanos kontā <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">papīra loksne</translation>
@@ -5664,7 +5691,6 @@
 <translation id="9121814364785106365">Atvērt kā piespraustu cilni</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> darbība ir apturēta</translation>
 <translation id="9124003689441359348">Šeit tiks parādītas saglabātās paroles.</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (atlikušas: <ph name="LICENSE_COUNT" />)</translation>
 <translation id="9128317794749765148">Nevarēja pabeigt iestatīšanu</translation>
 <translation id="9128870381267983090">Izveidot savienojumu ar tīklu</translation>
 <translation id="9130015405878219958">Ievadīts nederīgs režīms.</translation>
@@ -5703,6 +5729,7 @@
 <translation id="9188732951356337132">Lietojuma un diagnostikas datu sūtīšana. Pašlaik dati par šo ierīci un ierīces diagnostikas un lietotņu lietojuma dati tiek automātiski sūtīti uzņēmumam Google. Šī informācija netiks izmantota jūsu bērna identificēšanai, un tā palīdzēs uzlabot sistēmas un lietotņu stabilitāti un daudz ko citu. Noteiktus apkopotus datus izmantos arī Google lietotņu izstrādātāji un partneri, piemēram, Android izstrādātāji. Ja jūsu bērnam ir ieslēgts papildu iestatījums “Darbības tīmeklī un lietotnēs”, šie dati var tikt saglabāti bērna Google kontā. <ph name="BEGIN_LINK2" />Uzzināt vairāk<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPSec + iepriekš kopīgota atslēga</translation>
 <translation id="920045321358709304">Meklēt pakalpojumā <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">Visi bezsaistē esošie dati tiks izdzēsti</translation>
 <translation id="9201220332032049474">Ekrāna bloķēšanas opcijas</translation>
 <translation id="9203398526606335860">&amp;Profilēšana iespējota</translation>
 <translation id="9203904171912129171">Atlasiet ierīci</translation>
@@ -5715,6 +5742,7 @@
 <translation id="9220525904950070496">Konta noņemšana</translation>
 <translation id="9220820413868316583">Paceliet pirkstu un pēc tam mēģiniet vēlreiz.</translation>
 <translation id="923467487918828349">Rādīt visus</translation>
+<translation id="929117907539171075">Tiks notīrīti arī bezsaistē esošie dati instalētajā lietotnē</translation>
 <translation id="930268624053534560">Detalizēti laikspiedoli</translation>
 <translation id="932327136139879170">Sākums</translation>
 <translation id="932508678520956232">Nevarēja inicializēt drukāšanu.</translation>
@@ -5740,6 +5768,7 @@
 <translation id="960719561871045870">Operatora kods</translation>
 <translation id="960987915827980018">Atlikusi apmēram 1 stunda</translation>
 <translation id="962802172452141067">Grāmatzīmju mapju koks</translation>
+<translation id="964057662886721376">Daži paplašinājumi, īpaši tie, kurus nevēlējāties instalēt, var palēnināt darbību.</translation>
 <translation id="964286338916298286">IT administrators ir atspējojis Chrome piedāvājumus jūsu ierīcei.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Lietojumprogramma}zero{Lietojumprogrammas}one{Lietojumprogrammas}other{Lietojumprogrammas}}</translation>
 <translation id="965211523698323809">Izmantojiet <ph name="DEVICE_TYPE" /> ierīci, lai sūtītu un saņemtu īsziņas. <ph name="LINK_BEGIN" />Uzzināt vairāk<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_mk.xtb b/chrome/app/resources/generated_resources_mk.xtb
index 86d1416..caa35b8 100644
--- a/chrome/app/resources/generated_resources_mk.xtb
+++ b/chrome/app/resources/generated_resources_mk.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Приспособено</translation>
 <translation id="1178581264944972037">Пауза</translation>
 <translation id="117916940443676133">Вашиот безбедносен клуч не е заштитен со PIN. За да управувате со податоците за најавување, прво создајте PIN.</translation>
-<translation id="118069123878619799">- вашите физички карактеристики, како висината</translation>
 <translation id="1181037720776840403">Отстрани</translation>
 <translation id="1183237619868651138">Не може да ја инсталира датотеката <ph name="EXTERNAL_CRX_FILE" /> во локалниот кеш.</translation>
 <translation id="1185924365081634987">Исто така, може да се обидете да <ph name="GUEST_SIGNIN_LINK_START" />прелистувате како гостин<ph name="GUEST_SIGNIN_LINK_END" /> за да ја поправите оваа грешка на мрежата.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">Се чека <ph name="LOAD_STATE_PARAMETER" />…</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> други достапни уреди.</translation>
 <translation id="1495677929897281669">Назад на картичката</translation>
+<translation id="1499271269825557605">Ако не ја препознавате екстензијата или ако вашиот прелистувач не работи според очекувањата, може да ги исклучите или приспособите екстензиите тука.</translation>
 <translation id="1500297251995790841">Непознат уред [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Оваа сметка на сопственик треба да биде првата пријавена сметка во сесија со повеќекратно пријавување.</translation>
 <translation id="150411034776756821">Отстрани <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Страницата е блокирана да не пристапува до фотоапаратот.</translation>
 <translation id="1507246803636407672">&amp;Отфрли</translation>
 <translation id="1508491105858779599">Поставете го прстот на сензорот за отпечатоци за да го отклучите уредот.</translation>
+<translation id="1508575541972276599">Тековната верзија е Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">Пристапи на секој <ph name="DEVICE_NAME_AND_VENDOR" /> преку USB</translation>
 <translation id="150962533380566081">Погрешен PUK.</translation>
 <translation id="1510030919967934016">Страницата е блокирана да не ја следи вашата локација.</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">Примени</translation>
 <translation id="1603914832182249871">(Инкогнито)</translation>
 <translation id="1604432177629086300">Не можеше да се отпечати. Проверете го печатачот и обидете се повторно.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: синхронизацијата на лозинките не работи</translation>
 <translation id="1607139524282324606">Исчисти го записот</translation>
 <translation id="1608626060424371292">Отстрани го овој корисник</translation>
 <translation id="1608668830839595724">Повеќе дејства за избраните ставки</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">Вдомени податоци на апликација</translation>
 <translation id="1776712937009046120">Додај корисник</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> управува со уредов.
+    Кликнете „Следно“ за да продолжите со најавување на вашата сметка на <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation>
 <translation id="1779652936965200207">Внесете ја лозинкава на „<ph name="DEVICE_NAME" />“:</translation>
 <translation id="1780152987505130652">Затвори ја групата</translation>
 <translation id="1781291988450150470">Тековен PIN</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">Дејството не е достапно</translation>
 <translation id="2050339315714019657">Портрет</translation>
 <translation id="2053312383184521053">Податоци во состојба на неактивност</translation>
+<translation id="2055585478631012616">Ќе ве одјавиме од овие сајтови, вклучително и од отворените картички</translation>
 <translation id="205560151218727633">Лого на „Помошникот на Google“</translation>
 <translation id="2058456167109518507">Откриен е уред</translation>
 <translation id="2059913712424898428">Временска зона</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">Врати</translation>
 <translation id="2080070583977670716">Повеќе поставки</translation>
 <translation id="2087822576218954668">Печати: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN-мрежа</translation>
 <translation id="2089566709556890888">Прелистувајте безбедно со Google Chrome</translation>
 <translation id="2089795179672254991">Прашај кога некој сајт сака да гледа текст и слики копирани на привремената меморија (препорачано)</translation>
 <translation id="2090165459409185032">За да ги обновите информациите за вашата сметка, одете на: google.com/accounts/recovery</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">Еден сајт пристапува до аудио и видеозаписи</translation>
 <translation id="2379281330731083556">Печатете со помош на системски дијалог... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Прашај пред да испратиш (препорачано)</translation>
+<translation id="2382818385048255866">Проверете ги екстензиите</translation>
 <translation id="2384436799579181135">Грешка. Проверете го печатачот и обидете се повторно.</translation>
 <translation id="2387458720915042159">Тип на врска прокси</translation>
 <translation id="2391419135980381625">Стандарден фонт</translation>
@@ -1036,6 +1043,7 @@
 <translation id="2462724976360937186">ИД на клуч на орган за сертифицирање</translation>
 <translation id="2462752602710430187">Додаден е <ph name="PRINTER_NAME" /></translation>
 <translation id="2464089476039395325">HTTP прокси</translation>
+<translation id="2467267713099745100">Мрежа со <ph name="NETWORK_TYPE" />, исклучена</translation>
 <translation id="2468205691404969808">Користи колачиња за да ги запамети вашите поставки, дури и ако не ги посетувате тие страници</translation>
 <translation id="2468402215065996499">Тамагочи</translation>
 <translation id="2469259292033957819">Немате зачувани печатачи.</translation>
@@ -1290,6 +1298,7 @@
 <translation id="2800760947029405028">Прикачете слика</translation>
 <translation id="2803375539583399270">Внесете PIN.</translation>
 <translation id="2804043232879091219">Алтернативниот прелистувач не можеше да се отвори</translation>
+<translation id="2804667941345577550">Ќе ве одјавиме од сајтов, вклучително и од отворените картички</translation>
 <translation id="2804680522274557040">Камерата е исклучена</translation>
 <translation id="2805646850212350655">Систем за шифрирање датотеки на Microsoft</translation>
 <translation id="2805756323405976993">Апликации</translation>
@@ -1297,6 +1306,7 @@
 <translation id="2806891468525657116">Кратенката веќе постои</translation>
 <translation id="2807517655263062534">Датотеките што ги преземате се појавуваат тука</translation>
 <translation id="2809586584051668049">и уште <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2810390687497823527">Ако не ја препознавате екстензијата или ако вашиот прелистувач не работи според очекувањата, може да ги исклучите или приспособите екстензиите тука.</translation>
 <translation id="2812049959647166806">Thunderbolt не е поддржан</translation>
 <translation id="2812944337881233323">Обидете се да се одјавите и да се најавите повторно</translation>
 <translation id="2812989263793994277">Не покажувај слики</translation>
@@ -1336,6 +1346,7 @@
 <translation id="2861941300086904918">Управник за безбедност на матичен клиент</translation>
 <translation id="2864601841139725659">Поставете ја сликата на профилот</translation>
 <translation id="2865919525181940183">Слика од екранот со прикажаните програми</translation>
+<translation id="286674810810214575">Се проверуваат изворите за напојување…</translation>
 <translation id="2867768963760577682">Отвори како прикачена картичка</translation>
 <translation id="2868746137289129307">Оваа наставка е застарена и оневозможена од правилата на компанијата. Можеби автоматски ќе се овозможи штом понова верзија стане достапна.</translation>
 <translation id="2870560284913253234">Локација</translation>
@@ -1413,6 +1424,7 @@
 <translation id="2972581237482394796">&amp;Повтори</translation>
 <translation id="2973324205039581528">Исклучи звук за сајт</translation>
 <translation id="2977480621796371840">Отстрани од групата</translation>
+<translation id="2979520980928493164">Поздрав и посреќен Chrome</translation>
 <translation id="2979639724566107830">Отвори во нов прозорец</translation>
 <translation id="2981113813906970160">Прикажи голем курсор на глушец</translation>
 <translation id="2982970937345031">Пријавете анонимно</translation>
@@ -1519,6 +1531,7 @@
 <translation id="3143515551205905069">Откажи ја синхронизацијата</translation>
 <translation id="3143754809889689516">Пушти од почеток</translation>
 <translation id="3144647712221361880">Отвори ја врската како</translation>
+<translation id="3145187901750964977">Не можеше да се инсталира виртуелната машина. Обидете се повторно или контактирајте со администраторот на уредот во вашата организација. Код за грешка: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Верзија:
     <ph name="LINUX_VERSION" />
 
@@ -1557,6 +1570,7 @@
 <translation id="3192947282887913208">Аудиодатотеки</translation>
 <translation id="3194737229810486521"><ph name="URL" /> сака трајно да складира податоци на вашиот уред</translation>
 <translation id="3199127022143353223">Сервери</translation>
+<translation id="3201306578844503970">Виртуелната машина не можеше да се инсталира поради грешка на мрежата. Обидете се повторно или контактирајте со администраторот на уредот во вашата организација. Код за грешка: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Достапните USB-уреди ќе се појават тука.</translation>
 <translation id="3202131003361292969">Патека</translation>
 <translation id="3202173864863109533">Звукот на оваа картичка е исклучен.</translation>
@@ -1893,7 +1907,6 @@
 <translation id="3678156199662914018">Наставка: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Благодариме за повратните информации. Во моментов сте офлајн, па вашиот извештај ќе се испрати подоцна.</translation>
 <translation id="3682824389861648626">Праг на движења</translation>
-<translation id="3683023058278427253">Откривме повеќе типови лиценци за вашиот домен. Изберете една за да продолжите.</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> барање за споделување на екран</translation>
 <translation id="368789413795732264">Настана грешка при обидот да се напише датотеката: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Пишувајте на датотеки и папки што ги отворате во апликацијата</translation>
@@ -2067,6 +2080,7 @@
 <translation id="389589731200570180">Сподели со гости</translation>
 <translation id="389901847090970821">Изберете тастатура</translation>
 <translation id="3899879303189199559">Исклучен повеќе од година</translation>
+<translation id="3900789207771372462">Некои екстензии може да ја гледаат вашата активност од прелистувањето, вклучително и личните податоци.</translation>
 <translation id="3900966090527141178">Извезување лозинки</translation>
 <translation id="3901991538546252627">Се поврзува со <ph name="NAME" /></translation>
 <translation id="3905761538810670789">Поправи ја апликацијата</translation>
@@ -2157,7 +2171,6 @@
 <translation id="4013132157686828973">„<ph name="CLIENT_NAME" />“ отстранува грешки од прелистувачов</translation>
 <translation id="4014432863917027322">Поправи „<ph name="EXTENSION_NAME" />“?</translation>
 <translation id="4015163439792426608">Имате ли екстензии? <ph name="BEGIN_LINK" />Управувајте со екстензиите<ph name="END_LINK" /> на едно место.</translation>
-<translation id="4020106588733303597">Упс! Системот не успеа да ги вчита достапните лиценци.</translation>
 <translation id="4020327272915390518">Мени со опции</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Додај во речник</translation>
@@ -2195,6 +2208,7 @@
 <translation id="407520071244661467">Размер</translation>
 <translation id="4075639477629295004">Не може да се емитува <ph name="FILE_NAME" />.</translation>
 <translation id="4077917118009885966">Рекламите се блокирани на сајтов</translation>
+<translation id="4077919383365622693">Сите податоци и колачиња складирани од <ph name="SITE" /> ќе се избришат.</translation>
 <translation id="4079140982534148664">Користи подобрена проверка на правопис</translation>
 <translation id="4081242589061676262">Не може да се емитува датотеката.</translation>
 <translation id="4084682180776658562">Обележувач</translation>
@@ -2269,6 +2283,7 @@
 <translation id="4181841719683918333">Јазици</translation>
 <translation id="4184885522552335684">Повлечете за да поместите екран</translation>
 <translation id="4194570336751258953">Овозможи допри и кликни</translation>
+<translation id="4194595472342532425">Не можеше да се постави Plugin VM поради конфигурациски проблем. Контактирајте со администраторот на уредот во вашата организација. Код за грешка: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Отвори во нова картичка</translation>
 <translation id="4195814663415092787">Продолжете каде што сте застанале</translation>
 <translation id="4198146608511578238">Само држете ја иконата „Стартер“ за да разговарате со „Помошникот на Google“.</translation>
@@ -2492,6 +2507,7 @@
 <translation id="4549791035683739768">Вашиот безбедносен клуч нема складирани отпечатоци</translation>
 <translation id="4551763574344810652">Притиснете <ph name="MODIFIER_KEY_DESCRIPTION" /> за да се врати</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005">Мрежа со <ph name="NETWORK_TYPE" />, јачина на сигнал <ph name="SIGNAL_STRENGTH" /> %</translation>
 <translation id="4554591392113183336">Надворешната наставка е иста или пониска верзија споредена со постоечката.</translation>
 <translation id="4555769855065597957">Сенка</translation>
 <translation id="4555863373929230635">За да се зачувуваат лозинки во сметката на Google, најавете се и вклучете синхронизација.</translation>
@@ -2569,6 +2585,7 @@
 <translation id="4665446389743427678">Сите податоци складирани од <ph name="SITE" /> ќе се избришат.</translation>
 <translation id="4668721319092543482">Кликнете за да го овозможите приклучокот <ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">Дестилирај страница</translation>
+<translation id="46733273239502219">Ќе се избришат и офлајн податоците во инсталираните апликации</translation>
 <translation id="4673442866648850031">Отворете ги алатките за пенкало кога ќе се отстрани пенкалото</translation>
 <translation id="4677585247300749148"><ph name="URL" /> сака да одговара на настани за пристапност</translation>
 <translation id="4677772697204437347">ГПУ-меморија</translation>
@@ -2660,7 +2677,6 @@
 <translation id="4823484602432206655">Прочитајте ги и сменете ги корисничките поставки и поставките на уредот</translation>
 <translation id="4824958205181053313">Да се откаже синхронизацијата?</translation>
 <translation id="4827675678516992122">Не може да се поврзе</translation>
-<translation id="4828937774870308359">Австралиско</translation>
 <translation id="4829768588131278040">Постави PIN</translation>
 <translation id="4830502475412647084">Се инсталира ажурирање на ОС</translation>
 <translation id="4830573902900904548"><ph name="DEVICE_TYPE" /> не може да се поврзе на интернет преку <ph name="NETWORK_NAME" />. Изберете друга мрежа. <ph name="LEARN_MORE_LINK_START" />Дознајте повеќе<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2701,6 +2717,7 @@
 <translation id="4876273079589074638">Помогнете им на нашите инженери да го истражат и поправат падот. Наведете ги прецизните чекори ако можете. Сите детали се важни.</translation>
 <translation id="4876895919560854374">Заклучи го и отклучи го екранот</translation>
 <translation id="4877276003880815204">Провери ги елементите</translation>
+<translation id="4878653975845355462">Администраторот ги исклучил приспособените заднини</translation>
 <translation id="4879491255372875719">Автоматски (стандардно)</translation>
 <translation id="4880328057631981605">Име на пристапна точка</translation>
 <translation id="4880827082731008257">Историја на пребарување</translation>
@@ -2756,10 +2773,10 @@
 <translation id="4943691134276646401">„<ph name="CHROME_EXTENSION_NAME" />“ сака да се поврзе со сериска порта</translation>
 <translation id="4944310289250773232">Оваа услуга за автентикација е хостирана од <ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">Дејства</translation>
+<translation id="4952981627953231344">Plugin VM не е дозволен на уредов. Контактирајте со администраторот на уредот во вашата организација.</translation>
 <translation id="4953689047182316270">Одговори на настани за пристапност</translation>
 <translation id="4953808748584563296">Стандарден портокалов аватар</translation>
 <translation id="4955710816792587366">Изберете PIN</translation>
-<translation id="4955814292505481804">Годишна</translation>
 <translation id="4959262764292427323">Лозинките се зачувуваат во вашата сметка на Google за да може да ги користите на кој било уред</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Апликацијава ја инсталирал вашиот администратор.</translation>
@@ -3241,7 +3258,6 @@
 <translation id="5659593005791499971">Е-пошта</translation>
 <translation id="5659833766619490117">Страницава не може да се преведе</translation>
 <translation id="5660204307954428567">Спарете со <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Трајна</translation>
 <translation id="5667546120811588575">Се поставува Google Play…</translation>
 <translation id="5669267381087807207">Се активира</translation>
 <translation id="5669691691057771421">Внесете го новиот PIN</translation>
@@ -3257,6 +3273,7 @@
 <translation id="5687326903064479980">Временска зона</translation>
 <translation id="5689516760719285838">Локација</translation>
 <translation id="56907980372820799">Поврзи податоци</translation>
+<translation id="5691180005790455277">Сите податоци и колачиња складирани од <ph name="SITE_GROUP_NAME" /> и сите подредени сајтови ќе се избришат.</translation>
 <translation id="5691511426247308406">Семејни</translation>
 <translation id="5692183275898619210">Печатењето е завршено</translation>
 <translation id="5696143504434933566">Пријавете злоупотреба од „<ph name="EXTENSION_NAME" />“</translation>
@@ -3343,7 +3360,6 @@
 <translation id="5815645614496570556">X.400 адреса</translation>
 <translation id="5816434091619127343">Бараните промени на печатачот ќе го направат неупотреблив.</translation>
 <translation id="5817918615728894473">Спари</translation>
-<translation id="5819762621475381970">- распоредот на вашата соба</translation>
 <translation id="5821565227679781414">Креирај кратенка</translation>
 <translation id="5825412242012995131">Вклучено (се препорачува)</translation>
 <translation id="5826395379250998812">Поврзете го вашиот <ph name="DEVICE_TYPE" /> со телефонот. <ph name="LINK_BEGIN" />Дознајте повеќе<ph name="LINK_END" /></translation>
@@ -3479,6 +3495,7 @@
 <translation id="6007240208646052708">Гласовно пребарување на вашиот јазик не е достапно.</translation>
 <translation id="6009781704028455063">Вграден сензор</translation>
 <translation id="6010869025736512584">Се пристапува до видеовлезот</translation>
+<translation id="6011074160056912900">Етернет-мрежа</translation>
 <translation id="6011193465932186973">Отпечаток</translation>
 <translation id="6011449291337289699">Избришете ги сите податоци</translation>
 <translation id="6015266928248016057">Погрешен PUK. Преостанати обиди: <ph name="RETRIES" />.</translation>
@@ -3515,6 +3532,7 @@
 <translation id="6053401458108962351">&amp;Исчисти податоци од прелистување…</translation>
 <translation id="6055171183283175969">Внесената лозинка е неточна.</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 со RSA шифрирање</translation>
+<translation id="6055907707645252013">Мрежа со <ph name="NETWORK_TYPE" />, не е поврзана</translation>
 <translation id="6056710589053485679">Нормално повторно вчитување</translation>
 <translation id="6057381398996433816">Користењето на сензорите за движење и светлина е блокирано за сајтов.</translation>
 <translation id="6058567592298841668">Виртуелен уред за приклучоци: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3578,6 +3596,7 @@
 <translation id="6136114942382973861">Затвори ја лентата за преземања</translation>
 <translation id="6137767437444130246">Сертификат на корисник</translation>
 <translation id="6138680304137685902">X9.62 ECDSA потпис со SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, нема мрежа</translation>
 <translation id="6141988275892716286">Потврдете го преземањето</translation>
 <translation id="6143186082490678276">Побарајте помош</translation>
 <translation id="6144938890088808325">Помогнете ни да ги подобриме Chromebooks</translation>
@@ -3884,6 +3903,7 @@
 <translation id="6602956230557165253">За навигација користете ги левото и десното копче со стрелка.</translation>
 <translation id="6605847144724004692">Сѐ уште нема оцени од корисници.</translation>
 <translation id="6607831829715835317">Повеќе алат&amp;ки</translation>
+<translation id="6611972847767394631">Најдете ги вашите картички тука</translation>
 <translation id="6612358246767739896">Заштитена содржина</translation>
 <translation id="6615455863669487791">Покажи ми</translation>
 <translation id="6618097958368085618">Сепак задржи</translation>
@@ -3952,6 +3972,7 @@
 <translation id="6709133671862442373">Вести</translation>
 <translation id="6709357832553498500">Поврзете се повторно користејќи <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Претходно</translation>
+<translation id="6715803357256707211">Грешка при инсталирањето на Linux. Кликнете на известувањето за детали.</translation>
 <translation id="6721678857435001674">да ја види марката и моделот на вашиот безбедносен клуч</translation>
 <translation id="6721972322305477112">&amp;Датотека</translation>
 <translation id="672213144943476270">Отклучете го профилот пред да прелистувате како гостин.</translation>
@@ -3976,7 +3997,6 @@
 <translation id="674632704103926902">Овозможи влечење картичка</translation>
 <translation id="6748217015615267851">Прикажувач: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Може да продолжите, но ќе се обноват само синхронизираните податоци и поставки. Сите локални податоци ќе се загубат.</translation>
-<translation id="6748775883310276718">Киоск со една апликација</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Инкогнито)</translation>
 <translation id="6757101664402245801">Линкот е копиран</translation>
 <translation id="6758056191028427665">Оценете ја нашата работа.</translation>
@@ -3986,6 +4006,7 @@
 <translation id="6769712124046837540">Се додава печатач…</translation>
 <translation id="6770664076092644100">Потврди преку NFC</translation>
 <translation id="6771503742377376720">Е орган за сертифицирање</translation>
+<translation id="6772339735733515807">Управувајте со екстензиите</translation>
 <translation id="6775163072363532304">Достапните уреди ќе се појават тука.</translation>
 <translation id="6777817260680419853">Пренасочувањето е блокирано</translation>
 <translation id="6778737459546443941">Родителот уште не го одобрил</translation>
@@ -4124,6 +4145,7 @@
 <translation id="6972180789171089114">Аудио/видео</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> не може да отвора датотеки во папкава бидејќи таа содржи системски датотеки</translation>
 <translation id="6972754398087986839">Започни</translation>
+<translation id="6973611239564315524">Достапна е надградба на Debian 10 (Buster)</translation>
 <translation id="6974609594866392343">Офлајн демо-режим</translation>
 <translation id="6977381486153291903">Ревизија на фирмвер</translation>
 <translation id="6978121630131642226">Пребарувачи</translation>
@@ -4583,6 +4605,7 @@
 <translation id="7644543211198159466">Боја и тема</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (сопственик)</translation>
 <translation id="7645681574855902035">Се откажува бекапот на Linux</translation>
+<translation id="7646772052135772216">Синхронизацијата на лозинките не работи</translation>
 <translation id="7647403192093989392">Нема неодамнешни активности</translation>
 <translation id="7648992873808071793">Складирај датотеки на уредов</translation>
 <translation id="7649070708921625228">Помош</translation>
@@ -4771,6 +4794,7 @@
 <translation id="7877451762676714207">Непозната грешка на серверот. Обидете се повторно или контактирајте со администраторот на серверот.</translation>
 <translation id="7877680364634660272">Разгледајте</translation>
 <translation id="7878562273885520351">Можно е да ви е компромитирана лозинката</translation>
+<translation id="7879631849810108578">Поставена е кратенка: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Локалните податоци ќе се избришат кога ќе рестартирате</translation>
 <translation id="7881483672146086348">Прикажи сметка</translation>
 <translation id="7882358943899516840">Тип оператор</translation>
@@ -4857,6 +4881,7 @@
 <translation id="7987814697832569482">Секогаш поврзувај преку оваа VPN</translation>
 <translation id="7988355189918024273">Овозможете ги функциите за пристапност</translation>
 <translation id="7991296728590311172">Поставки за „Пристап со прекинувачи“</translation>
+<translation id="7994350303002908848">Не можеше да се инсталира Plugin VM. Обидете се повторно или контактирајте со администраторот на уредот во вашата организација. Код за грешка: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">EAP-метод</translation>
 <translation id="7997826902155442747">Приоритет на процес</translation>
 <translation id="7999229196265990314">Се создадоа следниве датотеки:
@@ -4948,7 +4973,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Нема колачиња од трети страни}=1{Блокирано е 1 колаче од трета страна}one{Блокирано е # колаче од трети страни}other{Блокирани се # колачиња од трети страни}}</translation>
 <translation id="810875025413331850">Не се најдени уреди во близина.</translation>
 <translation id="8111155949205007504">Споделете ја лозинкава со вашиот iPhone</translation>
-<translation id="8113043281354018522">Изберете тип лиценца</translation>
 <translation id="8114875720387900039">Подели хоризонтално</translation>
 <translation id="8116972784401310538">&amp;Управник со обележувачи</translation>
 <translation id="8117620576188476503">Управувајте со врските, ажурирањата и поставките со фиоката за статус. За да стигнете тука преку тастатурата, притиснете Alt + Shift + S.</translation>
@@ -5108,6 +5132,7 @@
 <translation id="8327039559959785305">Грешка при инсталирањето на датотеките на Linux. Обидете се повторно.</translation>
 <translation id="8335587457941836791">Откачи од полица</translation>
 <translation id="8336407002559723354">Ажурирањата ќе завршат во <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Рестартирајте го уредот за да се прикаже системскиот текст на <ph name="LANGUAGE" /></translation>
 <translation id="8336739000755212683">Променете ја сликата за сметката на уредот</translation>
 <translation id="8337047789441383384">Веќе го регистриравте овој безбедносен клуч. Не треба да го регистрирате повторно.</translation>
 <translation id="8338952601723052325">Вебсајт на програмери</translation>
@@ -5151,6 +5176,7 @@
 <translation id="8400146488506985033">Управувај со луѓе</translation>
 <translation id="8401432541486058167">Наведете го PIN-кодот што е поврзан со вашата паметна картичка.</translation>
 <translation id="8405046151008197676">Дознајте ги најдобрите карактеристики од најновото ажурирање</translation>
+<translation id="8408068190360279472">Мрежа со <ph name="NETWORK_TYPE" />, се поврзува</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Прашај прво (препорачано)</translation>
 <translation id="8418445294933751433">&amp;Прикажи како картичка</translation>
@@ -5440,6 +5466,7 @@
 <translation id="8807632654848257479">Стабилен</translation>
 <translation id="8808478386290700967">Веб-продавница</translation>
 <translation id="8808686172382650546">Мачка</translation>
+<translation id="8808744862003883508">На страницава, може да ги видите сите екстензии инсталирани во Chrome.</translation>
 <translation id="8809147117840417135">Светла синозелена</translation>
 <translation id="8813698869395535039">Не може да се најави на <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">лист хартија</translation>
@@ -5667,7 +5694,6 @@
 <translation id="9121814364785106365">Отвори како прикачена картичка</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> е на пауза</translation>
 <translation id="9124003689441359348">Зачуваните лозинки ќе се појават тука</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (Преостануваат <ph name="LICENSE_COUNT" />)</translation>
 <translation id="9128317794749765148">Поставувањето не можеше да се заврши</translation>
 <translation id="9128870381267983090">Поврзете се на мрежа</translation>
 <translation id="9130015405878219958">Внесен е неважечки режим.</translation>
@@ -5706,6 +5732,7 @@
 <translation id="9188732951356337132">Испраќајте податоци за користење и дијагностика. Овој уред во моментов автоматски испраќа дијагностички и податоци за користењето на уредот и апликациите до Google. Овие податоци нема да се користат за идентификација на вашето дете, а ќе помогнат околу стабилноста на системот и апликациите и за други подобрувања. Некои збирни податоци ќе им помогнат на апликациите и партнерите на Google, како што се програмерите на Android. Ако сте ја вклучиле дополнителната поставка „Активност на интернет и апликации“ за вашето дете, овие податоци може да се зачувуваат во сметката на Google на детето. <ph name="BEGIN_LINK2" />Дознајте повеќе<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + претходно споделен клуч</translation>
 <translation id="920045321358709304">Пребарај на <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">Сите офлајн податоци ќе се избришат</translation>
 <translation id="9201220332032049474">Опции за заклучување на екранот</translation>
 <translation id="9203398526606335860">&amp;Профилирањето е овозможено</translation>
 <translation id="9203904171912129171">Изберете уред</translation>
@@ -5718,6 +5745,7 @@
 <translation id="9220525904950070496">Отстрани сметка</translation>
 <translation id="9220820413868316583">Подигнете го прстот и обидете се повторно.</translation>
 <translation id="923467487918828349">Прикажи ги сите</translation>
+<translation id="929117907539171075">Ќе се избришат и офлајн податоците во инсталираната апликација</translation>
 <translation id="930268624053534560">Детални временски печати</translation>
 <translation id="932327136139879170">Дома</translation>
 <translation id="932508678520956232">Не можеше да започне печатење.</translation>
@@ -5743,6 +5771,7 @@
 <translation id="960719561871045870">Код на оператор</translation>
 <translation id="960987915827980018">Преостанува околу 1 час</translation>
 <translation id="962802172452141067">Дрво на папката за обележувачи</translation>
+<translation id="964057662886721376">Некои екстензии може да ве забават, особено оние што сте немале намера да ги инсталирате.</translation>
 <translation id="964286338916298286">Администраторот за информатичка технологија оневозможил Chrome Goodies за вашиот уред.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Апликација}one{Апликации}other{Апликации}}</translation>
 <translation id="965211523698323809">Испраќајте и примајте SMS-пораки од вашиот <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Дознајте повеќе<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_ml.xtb b/chrome/app/resources/generated_resources_ml.xtb
index 5cb72bc..f9d34088 100644
--- a/chrome/app/resources/generated_resources_ml.xtb
+++ b/chrome/app/resources/generated_resources_ml.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">ഇഷ്ടാനുസൃതം</translation>
 <translation id="1178581264944972037">അല്പംനിര്‍ത്തൂ</translation>
 <translation id="117916940443676133">പിൻ ഉപയോഗിച്ച് നിങ്ങളുടെ സുരക്ഷാ കീ പരിരക്ഷിച്ചിട്ടില്ല. സൈൻ ഇൻ ഡാറ്റ മാനേജ് ചെയ്യാൻ, ആദ്യം ഒരു പിൻ സൃഷ്‌ടിക്കുക.</translation>
-<translation id="118069123878619799">- ഉയരം പോലുള്ള, നിങ്ങളുടെ ശാരീരിക സവിശേഷതകൾ</translation>
 <translation id="1181037720776840403">നീക്കംചെയ്യൂ</translation>
 <translation id="1183237619868651138">പ്രാദേശിക കാഷെയിൽ <ph name="EXTERNAL_CRX_FILE" /> ഇൻസ്റ്റാൾ ചെയ്യാനാവില്ല.</translation>
 <translation id="1185924365081634987">ഈ നെറ്റ്‌വർക്ക് പിശക് പരിഹരിക്കാൻ നിങ്ങൾക്ക് <ph name="GUEST_SIGNIN_LINK_START" />അതിഥിയായി ബ്രൗസ് ചെയ്യുന്നതിന്<ph name="GUEST_SIGNIN_LINK_END" /> പരീക്ഷിക്കാം.</translation>
@@ -1890,7 +1889,6 @@
 <translation id="3678156199662914018">വിപുലീകരണം: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">നിങ്ങളുടെ ഫീഡ്‌ബാക്കിന് നന്ദി. നിങ്ങളിപ്പോൾ ഓഫ്‌ലൈനായതിനാൽ, റിപ്പോർട്ട് പിന്നീട് അയയ്‌ക്കുന്നതാണ്.</translation>
 <translation id="3682824389861648626">ചലന പരിധി</translation>
-<translation id="3683023058278427253">നിങ്ങളുടെ ‌ഡൊമെയ്‌നിനായി ഞങ്ങൾ ഒന്നിലധികം ലൈസൻസ് ‌തരങ്ങൾ കണ്ടെത്തി. തുടരാൻ ഒന്ന് ‌തിരഞ്ഞെടുക്കുക.</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> സ്‌ക്രീൻ പങ്കിടൽ അഭ്യർത്ഥന</translation>
 <translation id="368789413795732264">ഫയല്‍ റൈറ്റ് ചെയ്യാന്‍ ശ്രമിക്കുന്നതിനിടയില്‍ ഒരു പിശക് സംഭവിച്ചു: <ph name="ERROR_TEXT" /> .</translation>
 <translation id="3688507211863392146">ആപ്പിൽ നിങ്ങൾ തുറക്കുന്ന ഫയലുകളിലും ഫോൾഡറുകളിലും റൈറ്റ് ചെയ്യുക.</translation>
@@ -2153,7 +2151,6 @@
 <translation id="4013132157686828973">ഈ ബ്രൗസറിനെ "<ph name="CLIENT_NAME" />" ഡീബഗ് ചെയ്യുകയാണ്</translation>
 <translation id="4014432863917027322">"<ph name="EXTENSION_NAME" />" റിപ്പയർ ചെയ്യണോ?</translation>
 <translation id="4015163439792426608">വിപുലീകരണങ്ങൾ ലഭിച്ചോ? എളുപ്പമുള്ള ഒരിടത്ത് നിന്ന് തന്നെ <ph name="BEGIN_LINK" />നിങ്ങളുടെ വിപുലീകരണങ്ങൾ മാനേജ് ചെയ്യുക<ph name="END_LINK" />.</translation>
-<translation id="4020106588733303597">ക്ഷമിക്കണം! ലഭ്യമായ ലൈസൻസുകൾ ‌ലോഡ് ചെയ്യാനായില്ല.</translation>
 <translation id="4020327272915390518">ഓപ്ഷൻ മെനു</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;നിഘണ്ടുവിലേക്ക് ചേര്‍ക്കുക</translation>
@@ -2656,7 +2653,6 @@
 <translation id="4823484602432206655">ഉപയോക്തൃ, ഉപകരണ ക്രമീകരണങ്ങൾ റീഡ് ചെയ്‌ത് മാറ്റുക</translation>
 <translation id="4824958205181053313">സമന്വയം റദ്ദാക്കണോ?</translation>
 <translation id="4827675678516992122">കണക്റ്റ് ചെയ്യാനായില്ല</translation>
-<translation id="4828937774870308359">ഓസ്‌ട്രേലിയൻ</translation>
 <translation id="4829768588131278040">പിൻ നമ്പർ സജ്ജമാക്കുക</translation>
 <translation id="4830502475412647084">OS അപ്‌ഡേറ്റ് ഇൻസ്‌റ്റാൾ ചെയ്യുന്നു</translation>
 <translation id="4830573902900904548"><ph name="NETWORK_NAME" /> ഉപയോഗിച്ച് നിങ്ങളുടെ <ph name="DEVICE_TYPE" /> ഇന്റർനെറ്റിൽ കണ‌ക്റ്റ് ചെയ്യാനാകുന്നില്ല. മറ്റൊരു നെറ്റ്‌വർക്ക് തിരഞ്ഞെടുക്കുക. <ph name="LEARN_MORE_LINK_START" />കൂടുതലറിയുക<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2755,7 +2751,6 @@
 <translation id="4953689047182316270">ഉപയോഗസഹായി ഇവന്റുകളോട് പ്രതികരിക്കുക</translation>
 <translation id="4953808748584563296">ഡിഫോൾട്ടായ ഓറഞ്ച് അവതാർ</translation>
 <translation id="4955710816792587366">നിങ്ങളുടെ പിൻ തിരഞ്ഞെടുക്കുക</translation>
-<translation id="4955814292505481804">വാർഷികം</translation>
 <translation id="4959262764292427323">പാസ്‌വേഡുകൾ നിങ്ങളുടെ Google അക്കൗണ്ടിൽ സംരക്ഷിക്കുന്നതിനാൽ, ഏത് ഉപകരണത്തിലും അവ നിങ്ങൾക്ക് ഉപയോഗിക്കാനാവും</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">ഈ ആപ്പ് നിങ്ങളുടെ അഡ്‌മിൻ ഇൻസ്‌റ്റാൾ ചെയ്‌തതാണ്.</translation>
@@ -3237,7 +3232,6 @@
 <translation id="5659593005791499971">ഇമെയില്‍</translation>
 <translation id="5659833766619490117">ഈ പേജ് വിവർത്തനം ചെയ്യാനായില്ല</translation>
 <translation id="5660204307954428567"><ph name="DEVICE_NAME" /> എന്ന ഉപകരണവുമായി ജോടിയാക്കുക</translation>
-<translation id="5662477687021125631">ശാശ്വതമായത്</translation>
 <translation id="5667546120811588575">Google Play സജ്ജമാക്കുന്നു...</translation>
 <translation id="5669267381087807207">സജീവമാക്കുന്നു</translation>
 <translation id="5669691691057771421">പുതിയ പിൻ നൽകുക</translation>
@@ -3340,7 +3334,6 @@
 <translation id="5815645614496570556">X.400 വിലാസം</translation>
 <translation id="5816434091619127343">അഭ്യർത്ഥിച്ച പ്രിന്റർ മാറ്റങ്ങൾ, പ്രിന്ററിനെ ഉപയോഗിക്കാൻ കഴിയാത്ത നിലയിലാക്കും.</translation>
 <translation id="5817918615728894473">ജോടിയാക്കുക</translation>
-<translation id="5819762621475381970">- നിങ്ങളുടെ റൂമിന്റെ ലേഔട്ട്</translation>
 <translation id="5821565227679781414">കുറുക്കുവഴി സൃഷ്‌ടിക്കുക</translation>
 <translation id="5825412242012995131">ഓണാക്കുക (ശുപാർശചെയ്‌തത്)</translation>
 <translation id="5826395379250998812">നിങ്ങളുടെ ഫോണുമായി <ph name="DEVICE_TYPE" /> കണക്‌റ്റ് ചെയ്യുക. <ph name="LINK_BEGIN" />കൂടുതലറിയുക<ph name="LINK_END" /></translation>
@@ -3974,7 +3967,6 @@
 <translation id="674632704103926902">ടാപ്പ് ചെയ്‌ത് വലിച്ചിടൽ പ്രവർത്തനക്ഷമമാക്കുക</translation>
 <translation id="6748217015615267851">റെൻഡറർ: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">നിങ്ങൾക്ക് തുടരാനായേക്കുമെങ്കിലും സമന്വയിപ്പിച്ച വിവരവും ക്രമീകരണവും മാത്രമേ പുനഃസ്ഥാപിക്കുകയുള്ളൂ. എല്ലാ പ്രാദേശിക വിവരവും നഷ്‌ടപ്പെടും.</translation>
-<translation id="6748775883310276718">സിംഗിൾ ആപ്പ് കിയോസ്‌ക്</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (ആള്‍മാറാട്ടം)</translation>
 <translation id="6757101664402245801">URL പകർത്തി</translation>
 <translation id="6758056191028427665">ഞങ്ങളുടെ പ്രവർത്തനത്തെക്കുറിച്ചുള്ള അഭിപ്രായം അറിയിക്കൂ.</translation>
@@ -4947,7 +4939,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{മൂന്നാം കക്ഷി കുക്കികൾ ഒന്നുമില്ല}=1{ഒരു മൂന്നാം കക്ഷി കുക്കി ബ്ലോക്ക് ചെയ്‍തു}other{# മൂന്നാം കക്ഷി കുക്കികൾ ബ്ലോക്ക് ചെയ്‍തു}}</translation>
 <translation id="810875025413331850">സമീപത്ത് ഉപകരണങ്ങളൊന്നും കണ്ടെത്തിയില്ല.</translation>
 <translation id="8111155949205007504">നിങ്ങളുടെ iPhone-മായി ഈ പാസ്‌വേഡ് പങ്കിടുക</translation>
-<translation id="8113043281354018522">ലൈസൻസ് തരം തിരഞ്ഞെടുക്കുക</translation>
 <translation id="8114875720387900039">തിരശ്ചീനമായി വിഭജിക്കുക</translation>
 <translation id="8116972784401310538">&amp;ബുക്മാര്‍ക്ക് മാനേജര്‍</translation>
 <translation id="8117620576188476503">സ്‌റ്റാറ്റസ് ട്രേ ഉപയോഗിച്ച് കണക്ഷനുകളും അപ്‌ഡേറ്റുകളും ക്രമീകരണവും നിയന്ത്രിക്കുക. കീബോർഡ് ഉപയോഗിച്ച് ഇവിടെ പോകാൻ, Alt + Shift + S അമർത്തുക.</translation>
@@ -5662,7 +5653,6 @@
 <translation id="9121814364785106365">പിന്‍ ചെയ്‍ത ടാബായി തുറക്കുക</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> താൽക്കാലികമായി നിർത്തി</translation>
 <translation id="9124003689441359348">സംരക്ഷിച്ച പാസ്‌വേഡുകൾ ഇവിടെ ദൃശ്യമാകും</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> ശേഷിക്കുന്നു)</translation>
 <translation id="9128317794749765148">സജ്ജീകരണം പൂർത്തിയാക്കാനായില്ല</translation>
 <translation id="9128870381267983090">നെറ്റ്‌വർക്കിലേക്ക് കണക്റ്റ് ചെയ്യുക</translation>
 <translation id="9130015405878219958">അസാധുവായ മോഡ് നല്‍കി.</translation>
diff --git a/chrome/app/resources/generated_resources_mn.xtb b/chrome/app/resources/generated_resources_mn.xtb
index 382a4b339..6b2e08a 100644
--- a/chrome/app/resources/generated_resources_mn.xtb
+++ b/chrome/app/resources/generated_resources_mn.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Хэвийн</translation>
 <translation id="1178581264944972037">Түр зогсоох</translation>
 <translation id="117916940443676133">Таны аюулгүй байдлын түлхүүр ПИН-р хамгаалагдаагүй байна. Нэвтрэх өгөгдлийг удирдахын тулд эхлээд ПИН үүсгэнэ үү.</translation>
-<translation id="118069123878619799">- таны биеийн онцлог, жишээлбэл, өндөр</translation>
 <translation id="1181037720776840403">Хасах</translation>
 <translation id="1183237619868651138"><ph name="EXTERNAL_CRX_FILE" />-г дотоод сүлжээний кешд суулгах боломжгүй байна.</translation>
 <translation id="1185924365081634987">Энэ сүлжээний алдааг засахын тулд та <ph name="GUEST_SIGNIN_LINK_START" />зочин хэлбэрээр хайж<ph name="GUEST_SIGNIN_LINK_END" /> болох юм.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381"><ph name="LOAD_STATE_PARAMETER" />-ыг хүлээж байна...</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> бусад боломжтой төхөөрөмжүүд.</translation>
 <translation id="1495677929897281669">Таб руу буцах</translation>
+<translation id="1499271269825557605">Хэрэв та өргөтгөлийг танихгүй эсвэл таны хөтөч сайн ажиллахгүй байвал та өргөтгөлийг эндээс унтраах эсвэл өөрчлөх боломжтой.</translation>
 <translation id="1500297251995790841">Үл мэдэгдэх төхөөрөмж [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Эзэмшигчийн дансанд эхлээд олон нэвтрэх хэсэгт нэвтэрсэн байх шаардлагтай.</translation>
 <translation id="150411034776756821"><ph name="SITE" />-г устгах</translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Энэ хуудас нь таны камерт хандалт хийх эрхгүй.</translation>
 <translation id="1507246803636407672">&amp; Хэрэгсэхгүй орхих</translation>
 <translation id="1508491105858779599">Төхөөрөмжийн түгжээг тайлахдаа хурууны хээ мэдрэгчид хуруугаа байрлуулна уу.</translation>
+<translation id="1508575541972276599">Одоогийн хувилбар нь Debian 9 (Stretch) байна</translation>
 <translation id="1509281256533087115">Дурын <ph name="DEVICE_NAME_AND_VENDOR" />-д USB ашиглан нэвтрэх</translation>
 <translation id="150962533380566081">PUK буруу байна.</translation>
 <translation id="1510030919967934016">Энэ хуудсыг таны байршлыг тогтоохоос хамгаалсан.</translation>
@@ -430,6 +431,7 @@
 <translation id="1601560923496285236">Ашиглах</translation>
 <translation id="1603914832182249871">(Нэрээ нууцлах)</translation>
 <translation id="1604432177629086300">Хэвлэж чадсангүй. Хэвлэгчийг шалгаад дахин оролдоно уу.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: Нууц үгийг синк хийх ажиллахгүй байна</translation>
 <translation id="1607139524282324606">Оролтыг устгах</translation>
 <translation id="1608626060424371292">Энэ хэрэглэгчийг устга</translation>
 <translation id="1608668830839595724">Сонгосон зүйлс дээр хийх нэмэлт үйлдэл</translation>
@@ -556,6 +558,8 @@
 <translation id="177336675152937177">Аппликейшний өгөгдлийг зохион байгуулсан</translation>
 <translation id="1776712937009046120">Хэрэглэгч нэмэх</translation>
 <translation id="1776883657531386793"><ph name="OID" /> : <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Энэ төхөөрөмжийг <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> удирддаг.
+    <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> бүртгэлдээ үргэлжлүүлэн нэвтрэхийн тулд "Дараах" гэснийг товшино уу.</translation>
 <translation id="1779652936965200207">"<ph name="DEVICE_NAME" />" дээрх түлхүүр үгийг оруулна уу:</translation>
 <translation id="1780152987505130652">Бүлгийг хаах</translation>
 <translation id="1781291988450150470">Одоогийн ПИН</translation>
@@ -743,6 +747,7 @@
 <translation id="2048653237708779538">Үйлдэл боломжгүй байна</translation>
 <translation id="2050339315714019657">Хөрөг зураг</translation>
 <translation id="2053312383184521053">Идэвхгүй хэлбэрийн өгөгдөл</translation>
+<translation id="2055585478631012616">Та эдгээр сайтаас гарах бөгөөд үүнд нээлттэй табын сайтууд мөн багтана</translation>
 <translation id="205560151218727633">Google туслахын лого</translation>
 <translation id="2058456167109518507">Төхөөрөмж илэрсэн</translation>
 <translation id="2059913712424898428">Цагийн бүс</translation>
@@ -758,6 +763,7 @@
 <translation id="2079545284768500474">Буцаах</translation>
 <translation id="2080070583977670716">Нэмэлт тохиргоо</translation>
 <translation id="2087822576218954668">Хэвлэх: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN сүлжээ</translation>
 <translation id="2089566709556890888">Google Chrome-р аюулгүй хайгаарай</translation>
 <translation id="2089795179672254991">Сайт түр санах ойд хуулсан текст, зургийг харах хүсэлтэй үед асуух (санал болгосон)</translation>
 <translation id="2090165459409185032">бүртгэлныхаа мэдээллийг сэргээхийн тулд: google.com/accounts/recovery руу орно уу</translation>
@@ -981,6 +987,7 @@
 <translation id="2379232090534544565">Сайт аудио болон видео оролтод хандаж байна</translation>
 <translation id="2379281330731083556">Системийн харилцах цонхыг ашиглан хэвлэнэ үү... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Явуулахаасаа өмнө асуух (зөвлөж байна)</translation>
+<translation id="2382818385048255866">Өргөтгөлүүдээ шалгах</translation>
 <translation id="2384436799579181135">Алдаа гарсан байна. Та хэвлэгч төхөөрөмжөө шалгаад дахин оролдоно уу.</translation>
 <translation id="2387458720915042159">Прокси холболтын төрөл</translation>
 <translation id="2391419135980381625">Стандарт үсгийн фонт</translation>
@@ -1031,6 +1038,7 @@
 <translation id="2462724976360937186">Certification Authority Key ID</translation>
 <translation id="2462752602710430187"><ph name="PRINTER_NAME" />-г нэмсэн</translation>
 <translation id="2464089476039395325">HTTP прокси</translation>
+<translation id="2467267713099745100"><ph name="NETWORK_TYPE" /> сүлжээ, унтраалттай</translation>
 <translation id="2468205691404969808">Таны сонголтыг таныг тэдгээр хуудсанд зочлоогүй байсан ч санахын тулд күүки ашигладаг</translation>
 <translation id="2468402215065996499">Тамагочи</translation>
 <translation id="2469259292033957819">Танд хадгалсан хэвлэгч байхгүй байна.</translation>
@@ -1285,6 +1293,7 @@
 <translation id="2800760947029405028">Зураг байршуулах</translation>
 <translation id="2803375539583399270">ПИН оруулна уу</translation>
 <translation id="2804043232879091219">Өөр хөтчийг нээж чадсангүй</translation>
+<translation id="2804667941345577550">Та энэ сайтаас гарах бөгөөд үүнд нээлттэй табын сайт мөн багтана</translation>
 <translation id="2804680522274557040">Камерыг унтраасан</translation>
 <translation id="2805646850212350655">Microsoft Encrypting File System</translation>
 <translation id="2805756323405976993">Програм</translation>
@@ -1292,6 +1301,7 @@
 <translation id="2806891468525657116">Ижил товчлол ашиглалтад байна</translation>
 <translation id="2807517655263062534">Таны татаж авсан файл энд харагдана</translation>
 <translation id="2809586584051668049">ба <ph name="NUMBER_ADDITIONAL_DISABLED" /> дэлгэрэнгүй</translation>
+<translation id="2810390687497823527">Хэрэв та өргөтгөлийг танихгүй эсвэл таны хөтөч сайн ажиллахгүй байвал та өргөтгөлийг эндээс унтраах эсвэл өөрчлөх боломжтой.</translation>
 <translation id="2812049959647166806">Thunderbolt-г дэмждэггүй</translation>
 <translation id="2812944337881233323">Гараад, буцаж нэвтэрнэ үү</translation>
 <translation id="2812989263793994277">Зургийг бүү үзүүл</translation>
@@ -1331,6 +1341,7 @@
 <translation id="2861941300086904918">Native Client security manager</translation>
 <translation id="2864601841139725659">Профайл зургаа тохируулах</translation>
 <translation id="2865919525181940183">Одоогоор дэлгэц дээр байгаа програмуудын дэлгэцийн зураг</translation>
+<translation id="286674810810214575">Тэжээлийн эх сурвалжийг шалгаж байна...</translation>
 <translation id="2867768963760577682">Тусгайлан сонгосон цонх хэлбэрээр нээх</translation>
 <translation id="2868746137289129307">Энэхүү өргөтгөлийг байгууллагын бодлого журмын дагуу ашиглахгүй мөн идэвхгүй болгосон байна.Шинэ хувилбар гарсан тохиолдолд энэхүү өргөтгөл нь автоматаар идэвхижих магадлалтай болно.</translation>
 <translation id="2870560284913253234">Ажлын талбар</translation>
@@ -1408,6 +1419,7 @@
 <translation id="2972581237482394796">&amp; Дахин хийх</translation>
 <translation id="2973324205039581528">Сайтын дууг хаах</translation>
 <translation id="2977480621796371840">Бүлгээс хасах</translation>
+<translation id="2979520980928493164">Илүү аюулгүй, илүү хурдан гүйцэтгэлтэй Chrome</translation>
 <translation id="2979639724566107830">Шинэ цонхонд нээх</translation>
 <translation id="2981113813906970160">Том хулганын заагч сумыг харуулах</translation>
 <translation id="2982970937345031">Нэрээ нууж мэдэгдэх</translation>
@@ -1514,6 +1526,7 @@
 <translation id="3143515551205905069">Синкийг цуцлах</translation>
 <translation id="3143754809889689516">Эхнээс нь тоглуулах</translation>
 <translation id="3144647712221361880">Холбоосыг нээх</translation>
+<translation id="3145187901750964977">Виртуал машиныг суулгаж чадсангүй. Дахин оролдоно уу эсвэл байгууллагынхаа төхөөрөмжийн администратортай холбогдоно уу. Алдааны код: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Хувилбар:
     <ph name="LINUX_VERSION" />
 
@@ -1552,6 +1565,7 @@
 <translation id="3192947282887913208">Аудио файлууд</translation>
 <translation id="3194737229810486521"><ph name="URL" /> таны төхөөрөмжид өгөгдлийг бүрмөсөн хадгалах хүсэлтэй байна</translation>
 <translation id="3199127022143353223">Серверүүд</translation>
+<translation id="3201306578844503970">Сүлжээний алдааны улмаас виртуал машиныг суулгаж чадсангүй. Дахин оролдоно уу эсвэл байгууллагынхаа төхөөрөмжийн администратортай холбогдоно уу. Алдааны код: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Боломжтой USB төхөөрөмжүүд энд харагдана.</translation>
 <translation id="3202131003361292969">Зам</translation>
 <translation id="3202173864863109533">Энэ табны дууг хаасан байна.</translation>
@@ -1888,7 +1902,6 @@
 <translation id="3678156199662914018">Өргөтгөл: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Санал хүсэлт илгээсэнд баярлалаа. Та одоогоор офлайн байгаа тул таны тайланг дараа нь илгээх болно.</translation>
 <translation id="3682824389861648626">Хөдөлгөөний босго</translation>
-<translation id="3683023058278427253">Таны домайнд зориулсан хэд хэдэн лицензийн төрөл илэрсэн. Үргэлжлүүлэхийн тулд нэгийг нь сонгоно уу.</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> Дэлгэцийг хуваалцах хүсэлт</translation>
 <translation id="368789413795732264">Файлыг бичиж авахыг оролдож байх үед алдаа гарлаа <ph name="ERROR_TEXT" /> .</translation>
 <translation id="3688507211863392146">Аппликейшн дотор өөрийн нээсэн файл болон хавтас бичнэ үү.</translation>
@@ -2062,6 +2075,7 @@
 <translation id="389589731200570180">Зочидтой хуваалц</translation>
 <translation id="389901847090970821">Гар сонгох</translation>
 <translation id="3899879303189199559">Нэг жилээс илүү хугацаанд оффлайн байсан</translation>
+<translation id="3900789207771372462">Зарим өргөтгөл нь хувийн мэдээлэл зэрэг таны хөтчийн үйл ажиллагааг харах боломжтой.</translation>
 <translation id="3900966090527141178">Нууц үгийг экспортлох</translation>
 <translation id="3901991538546252627"><ph name="NAME" />-д холбогдож байна</translation>
 <translation id="3905761538810670789">Апп засах</translation>
@@ -2151,7 +2165,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" энэ хөтчийг дебаг хийж байна</translation>
 <translation id="4014432863917027322">Та "<ph name="EXTENSION_NAME" />-г" засварлах уу?</translation>
 <translation id="4015163439792426608">Өргөтгөлтэй болсон уу? Хялбарчилсан нэг газраас <ph name="BEGIN_LINK" />өргөтгөлүүдээ удирдаарай<ph name="END_LINK" />.</translation>
-<translation id="4020106588733303597">Уучлаарай!  Систем боломжтой лицензийг ачааллахад алдаа гарлаа.</translation>
 <translation id="4020327272915390518">Сонголтын цэс</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Толь бичигт нэмэх</translation>
@@ -2189,6 +2202,7 @@
 <translation id="407520071244661467">Хэмжээ</translation>
 <translation id="4075639477629295004"><ph name="FILE_NAME" />-г дамжуулах боломжгүй байна.</translation>
 <translation id="4077917118009885966">Энэ сайтад блоклосон зар</translation>
+<translation id="4077919383365622693"><ph name="SITE" />-н хадгалсан бүх өгөгдөл болон күүкийг устгах болно.</translation>
 <translation id="4079140982534148664">Зөв бичгийн алдаа шалгах сайжруулсан онцлогийг ашиглах</translation>
 <translation id="4081242589061676262">Файлыг дамжуулах боломжгүй.</translation>
 <translation id="4084682180776658562">Хадгалах</translation>
@@ -2263,6 +2277,7 @@
 <translation id="4181841719683918333">Хэл</translation>
 <translation id="4184885522552335684">Дэлгэцийг шилжүүлэхийн тулд чирнэ үү</translation>
 <translation id="4194570336751258953">Tap-to-click үйлдлийг идэвхжүүлэх</translation>
+<translation id="4194595472342532425">Тохируулгын алдааны улмаас Plugin VM-г тохируулж чадсангүй. Байгууллагынхаа төхөөрөмжийн администратортай холбогдоно уу. Алдааны код: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Шинэ таб дээр нээх</translation>
 <translation id="4195814663415092787">Орхисон хэсгээсээ үргэлжлүүлэх</translation>
 <translation id="4198146608511578238">Google туслахтайгаа ярихын тулд Эхлүүлэгчийн дүрс тэмдгийг дарна уу.</translation>
@@ -2486,6 +2501,7 @@
 <translation id="4549791035683739768">Таны аюулгүй байдлын түлхүүр дээр хадгалсан хурууны хээ байхгүй байна</translation>
 <translation id="4551763574344810652">Болихын тулд <ph name="MODIFIER_KEY_DESCRIPTION" />-г дарна уу</translation>
 <translation id="4552089082226364758">Гэрэл</translation>
+<translation id="4552759165874948005"><ph name="NETWORK_TYPE" /> сүлжээ, дохионы хүч <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">Энэ програмын гадаад өргөтгөл одоогийн хувилбартай адилхан эсвэл хуучин байна.</translation>
 <translation id="4555769855065597957">Сүүдэр</translation>
 <translation id="4555863373929230635">Google Бүртгэлдээ нууц үг хадгалахын тулд нэвтрээд, синк хийхийг асаана уу.</translation>
@@ -2563,6 +2579,7 @@
 <translation id="4665446389743427678"><ph name="SITE" />-н хадгалсан бүх өгөгдлийг устгана.</translation>
 <translation id="4668721319092543482"><ph name="PLUGIN_NAME" />-г идэвхжүүлэхийн тулд дарна уу</translation>
 <translation id="4672657274720418656">Хуудсыг шүүх</translation>
+<translation id="46733273239502219">Суулгасан аппуудын офлайн өгөгдлийг мөн устгах болно</translation>
 <translation id="4673442866648850031">Мэдрэгч үзгийг устгасны дараа мэдрэгч үзэгний хэрэгслийг нээнэ үү</translation>
 <translation id="4677585247300749148"><ph name="URL" /> хүртээмжийн үйл ажиллагаанд хариу өгөх хүсэлтэй байна</translation>
 <translation id="4677772697204437347">GPU санах ой</translation>
@@ -2654,7 +2671,6 @@
 <translation id="4823484602432206655">Хэрэглэгч болон төхөөрөмжийн тохиргоог уншиж, өөрчлөх</translation>
 <translation id="4824958205181053313">Синкийг цуцлах уу?</translation>
 <translation id="4827675678516992122">Холбогдож чадсангүй</translation>
-<translation id="4828937774870308359">Австралийн</translation>
 <translation id="4829768588131278040">ПИН тохируулах</translation>
 <translation id="4830502475412647084">Үйлдлийн системийн шинэчлэлтийг суулгаж байна</translation>
 <translation id="4830573902900904548">Таны <ph name="DEVICE_TYPE" /> нь <ph name="NETWORK_NAME" />-ыг ашиглан интернэтэд холбогдох боломжгүй байна. Өөр сүлжээ сонгоно уу. <ph name="LEARN_MORE_LINK_START" />Дэлгэрэнгүй үзэх<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2695,6 +2711,7 @@
 <translation id="4876273079589074638">Манай инженерүүдэд гэмтлийн асуудлын тодруулж, засахад нь тусална уу. Боломжтой бол дэлгэрэнгүй тайлбарлана уу. Бидэнд бүх нарийвчилсан мэдээлэл хэрэг болно.</translation>
 <translation id="4876895919560854374">Дэлгэцийг түгжих, түгжээг гаргах</translation>
 <translation id="4877276003880815204">Элементүүдийг шалгах</translation>
+<translation id="4878653975845355462">Таны администратор захиалгат арын дэвсгэрийг унтраасан байна</translation>
 <translation id="4879491255372875719">Автомат (өгөгдмөл)</translation>
 <translation id="4880328057631981605">Нэвтрэх цэгийн нэр</translation>
 <translation id="4880827082731008257">Түүхийг хайх</translation>
@@ -2750,10 +2767,10 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" цуваа портод холбогдох хүсэлтэй байна</translation>
 <translation id="4944310289250773232">Энэ нотолгооны үйлчилгээг <ph name="SAML_DOMAIN" />-с удирддаг</translation>
 <translation id="495170559598752135">Авах арга хэмжээ</translation>
+<translation id="4952981627953231344">Plugin VM-г энэ төхөөрөмж дээр зөвшөөрдөггүй. Байгууллагынхаа төхөөрөмжийн администратортай холбогдоно уу.</translation>
 <translation id="4953689047182316270">Хүртээмжийн үйл ажиллагаанд хариу өгөх</translation>
 <translation id="4953808748584563296">Өгөгдмөл улбар шар аватар</translation>
 <translation id="4955710816792587366">ПИН-ээ сонгох</translation>
-<translation id="4955814292505481804">Жил бүрийн</translation>
 <translation id="4959262764292427323">Нууц үгнүүдийr таны Google Бүртгэлд хадгалсан тул тэдгээрийг та дурын төхөөрөмжид ашиглаж болно</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Таны администратор энэ аппыг суулгасан байна.</translation>
@@ -3236,7 +3253,6 @@
 <translation id="5659593005791499971">И-мэйл хаяг</translation>
 <translation id="5659833766619490117">Энэ хуудсыг орчуулж чадсангүй</translation>
 <translation id="5660204307954428567"><ph name="DEVICE_NAME" />-тай хослуулах</translation>
-<translation id="5662477687021125631">Хугацаагүй</translation>
 <translation id="5667546120811588575">Google Play-г тохируулж байна...</translation>
 <translation id="5669267381087807207">Идэвхжүүлж байна</translation>
 <translation id="5669691691057771421">Шинэ ПИН оруулна уу</translation>
@@ -3252,6 +3268,7 @@
 <translation id="5687326903064479980">Цагийн бүс</translation>
 <translation id="5689516760719285838">Байршил</translation>
 <translation id="56907980372820799">Мэдээллийг холбо</translation>
+<translation id="5691180005790455277"><ph name="SITE_GROUP_NAME" />-н хадгалсан бүх өгөгдөл болон дотор нь байгаа аливаа сайтыг устгах болно.</translation>
 <translation id="5691511426247308406">Гэр бүл</translation>
 <translation id="5692183275898619210">Хэвлэж дууслаа</translation>
 <translation id="5696143504434933566">"<ph name="EXTENSION_NAME" />"-н зохисгүй үйлдлийг мэдээлэх</translation>
@@ -3338,7 +3355,6 @@
 <translation id="5815645614496570556">X.400 хаяг</translation>
 <translation id="5816434091619127343">Хэвлэгчийг хүссэний дагуу өөрчилснөөр хэвлэгчийг ашиглах боломжгүй болно.</translation>
 <translation id="5817918615728894473">Холбох</translation>
-<translation id="5819762621475381970">- таны өрөөний төлөвлөлт</translation>
 <translation id="5821565227679781414">Shortcut үүсгэх</translation>
 <translation id="5825412242012995131">Дээр (Санал болгосон)</translation>
 <translation id="5826395379250998812"><ph name="DEVICE_TYPE" />-г утастайгаа холбоно уу. <ph name="LINK_BEGIN" />Нэмэлт мэдээлэл авах<ph name="LINK_END" /></translation>
@@ -3473,6 +3489,7 @@
 <translation id="6007240208646052708">Таны хэлэнд дуут хайлт боломжгүй байна.</translation>
 <translation id="6009781704028455063">Built-in мэдрэгч</translation>
 <translation id="6010869025736512584">Видео оролт руу нэвтрэх</translation>
+<translation id="6011074160056912900">Ethernet сүлжээ</translation>
 <translation id="6011193465932186973">Хурууны хээ</translation>
 <translation id="6011449291337289699">Сайтын өгөгдлийг устгах</translation>
 <translation id="6015266928248016057">PUK буруу байна. Үлдсэн дахин оролдлого: <ph name="RETRIES" />.</translation>
@@ -3509,6 +3526,7 @@
 <translation id="6053401458108962351">&amp; Хайлтын мэдээллийг цэвэрлэх...</translation>
 <translation id="6055171183283175969">Таны оруулсан нууц үг буруу байна.</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 With RSA Encryption</translation>
+<translation id="6055907707645252013"><ph name="NETWORK_TYPE" /> сүлжээ, холбогдоогүй</translation>
 <translation id="6056710589053485679">Ердийн дахин ачаалах ажиллагаа</translation>
 <translation id="6057381398996433816">Энэ сайтад хөдөлгөөн болон гэрлийн мэдрэгч ашиглахыг хориглосон байна.</translation>
 <translation id="6058567592298841668">Залгаас виртуал машин: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3572,6 +3590,7 @@
 <translation id="6136114942382973861">Татаж авсан файл хадгалах эсвэл нээх хэсгийг хаах</translation>
 <translation id="6137767437444130246">Хэрэглэгчийн сертификат</translation>
 <translation id="6138680304137685902">X9.62 ECDSA SHA-384-тэй гарын үсэг</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, сүлжээ алга байна</translation>
 <translation id="6141988275892716286">Таталтыг баталгаажуулах</translation>
 <translation id="6143186082490678276">Тусламж авах</translation>
 <translation id="6144938890088808325">Chromebook-г сайжруулахад тусална уу</translation>
@@ -3878,6 +3897,7 @@
 <translation id="6602956230557165253">Навигаци хийхийн тулд зүүн, баруун сумтай түлхүүрүүдийг ашиглах.</translation>
 <translation id="6605847144724004692">Одоогоор ямар ч хэрэглэгч үнэлээгүй байна.</translation>
 <translation id="6607831829715835317">Илүү их хэрэгслүүд</translation>
+<translation id="6611972847767394631">Эндээс табуудаа олоорой</translation>
 <translation id="6612358246767739896">Хамгаалагдсан агуулга</translation>
 <translation id="6615455863669487791">Надад үзүүлнэ үү</translation>
 <translation id="6618097958368085618">Ямар ч үед хадгалах</translation>
@@ -3946,6 +3966,7 @@
 <translation id="6709133671862442373">Мэдээ</translation>
 <translation id="6709357832553498500"><ph name="EXTENSIONNAME" />-ыг ашиглан холбогдоно уу</translation>
 <translation id="6710213216561001401">Өмнөх</translation>
+<translation id="6715803357256707211">Таны Linux аппликэйшнийг суулгах явцад алдаа гарлаа. Дэлгэрэнгүй мэдээлэл авах бол мэдэгдэл дээр товшино уу.</translation>
 <translation id="6721678857435001674">Аюулгүй байдлын түлхүүрийнхээ бүтэц болон загварыг харах</translation>
 <translation id="6721972322305477112">&amp;Файл</translation>
 <translation id="672213144943476270">Та зочны хувиар хайлт хийхээс өмнө профайлынхаа түгжээг тайлна уу.</translation>
@@ -3970,7 +3991,6 @@
 <translation id="674632704103926902">Tap dragging хэсгийг идэвхжүүлнэ үү.</translation>
 <translation id="6748217015615267851">Буулгагч: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Ta үргэлжлүүлж болно, гэхдээ таны синхрончилсон өгөгдөл болон тохиргоо сэргээгдэх болно. Харин суурин өгөгдлүүд бүгд устах болно.</translation>
-<translation id="6748775883310276718">Нэг аппын киоск</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Нууцлал)</translation>
 <translation id="6757101664402245801">URL-г хуулсан</translation>
 <translation id="6758056191028427665">Биднийг хэр ажиллаж байгааг мэдэгдэнэ үү.</translation>
@@ -3980,6 +4000,7 @@
 <translation id="6769712124046837540">Принтерийг нэмж байна...</translation>
 <translation id="6770664076092644100">NFC-р баталгаажуулах</translation>
 <translation id="6771503742377376720">Гэрчилгээжүүлэх Алба</translation>
+<translation id="6772339735733515807">Өргөтгөлүүдээ удирдах</translation>
 <translation id="6775163072363532304">Боломжтой байгаа төхөөрөмжүүд энд харагдана.</translation>
 <translation id="6777817260680419853">Дахин чиглүүлэлтийг блоклосон</translation>
 <translation id="6778737459546443941">Таны эцэг эх үүнийг зөвшөөрөөгүй байна</translation>
@@ -4118,6 +4139,7 @@
 <translation id="6972180789171089114">Аудио/Видео</translation>
 <translation id="6972553992270299730">Энэ фолдер системийн файл агуулдаг тул <ph name="ORIGIN" /> нь түүний файлыг нээх боломжгүй.</translation>
 <translation id="6972754398087986839">Эхлүүлэх</translation>
+<translation id="6973611239564315524">Debian 10 (Buster) руу дэвшүүлэх боломжтой байна</translation>
 <translation id="6974609594866392343">Офлайн туршилтын горим</translation>
 <translation id="6977381486153291903">Жижиг програмын шалгалт</translation>
 <translation id="6978121630131642226">Хайлтын систем</translation>
@@ -4577,6 +4599,7 @@
 <translation id="7644543211198159466">Өнгө ба загвар</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (эзэмшигч)</translation>
 <translation id="7645681574855902035">Linux-н нөөцлөлтийг цуцалж байна</translation>
+<translation id="7646772052135772216">Нууц үгийг синк хийх ажиллахгүй байна</translation>
 <translation id="7647403192093989392">Саяхны үйл ажиллагаа байхгүй</translation>
 <translation id="7648992873808071793">Энэхүү төхөөрөмж дээр файлуудыг хадгалах</translation>
 <translation id="7649070708921625228">Тусламж</translation>
@@ -4764,6 +4787,7 @@
 <translation id="7877451762676714207">Тодорхойгүй серверийн алдаа. Серверийн администратор тойгоо холбогдох эсвэл дахин оролдоод үзээрэй.</translation>
 <translation id="7877680364634660272">Аялал</translation>
 <translation id="7878562273885520351">Таны нууц үгийг хулгайлсан байна</translation>
+<translation id="7879631849810108578">Товчлолыг тохирууллаа: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Таныг дахин эхлүүлэх үед дотоод өгөгдлийг устгана</translation>
 <translation id="7881483672146086348">Бүртгэл харах</translation>
 <translation id="7882358943899516840">Нийлүүлэгчийн төрөл</translation>
@@ -4850,6 +4874,7 @@
 <translation id="7987814697832569482">Үргэлж энэ VPN-р холбогдох</translation>
 <translation id="7988355189918024273">Хүртээмжтэй онцлогийг идэвхжүүлэх</translation>
 <translation id="7991296728590311172">Хандалтыг сэлгэх тохиргоо</translation>
+<translation id="7994350303002908848">Plugin VM-г суулгаж чадсангүй. Дахин оролдоно уу эсвэл байгууллагынхаа төхөөрөмжийн администратортай холбогдоно уу. Алдааны код: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">EAP арга</translation>
 <translation id="7997826902155442747">Боловсруулалтын тэргүүлэх чиглэл</translation>
 <translation id="7999229196265990314">Дараах файлуудыг үүсгэсэн болно:
@@ -4940,7 +4965,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Гуравдагч талын күүки байхгүй}=1{Гуравдагч талын 1 күүкиг блоклосон}other{Гуравдагч талын # күүкиг блоклосон}}</translation>
 <translation id="810875025413331850">Ойролцоох төхөөрөмж олдсонгүй.</translation>
 <translation id="8111155949205007504">Энэ нууц үгийг iPhone-д хуваалцах</translation>
-<translation id="8113043281354018522">Лицензийн төрлийг сонгох</translation>
 <translation id="8114875720387900039">Хэвтээ чиглэлд хуваах</translation>
 <translation id="8116972784401310538">Хадгалагдсан хуудсын менежер</translation>
 <translation id="8117620576188476503">Статусын хэсгээр холболт, шинэчлэлт болон тохиргоог удирдана уу. Энд гараар очихын тулд Alt + Shift + S-г дарна уу.</translation>
@@ -5096,6 +5120,7 @@
 <translation id="8327039559959785305">Linux-н файлуудыг залгахад алдаа гарлаа. Дахин оролдоно уу.</translation>
 <translation id="8335587457941836791">Програмын жагсаалтын эхэнд байрлуулахыг болих</translation>
 <translation id="8336407002559723354">Шинэчлэлт нь <ph name="MONTH_AND_YEAR" /> дуусна</translation>
+<translation id="8336721153892716270">Системийн текстийг <ph name="LANGUAGE" /> дээр харуулахын тулд төхөөрөмжийг дахин эхлүүлэх</translation>
 <translation id="8336739000755212683">Төхөөрөмжийн бүртгэлийн зургийг өөрчлөх</translation>
 <translation id="8337047789441383384">Та энэ аюулгүй байдлын түлхүүрийг аль хэдийн бүртгүүлсэн байна. Та үүнийг дахин бүртгүүлэх шаардлагагүй.</translation>
 <translation id="8338952601723052325">Хөгжүүлэгч вэб сайт</translation>
@@ -5139,6 +5164,7 @@
 <translation id="8400146488506985033">Хүмүүсийг удирдах</translation>
 <translation id="8401432541486058167">Таны ухаалаг карттай холбоотой ПИН-г оруулна уу.</translation>
 <translation id="8405046151008197676">Хамгийн сүүлийн шинэчлэлтийн талаар тодруулга авах</translation>
+<translation id="8408068190360279472"><ph name="NETWORK_TYPE" /> сүлжээ, холбогдож байна</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Эхлээд асууна уу (санал болгосон)</translation>
 <translation id="8418445294933751433">&amp; Цонх болгож харуул</translation>
@@ -5426,6 +5452,7 @@
 <translation id="8807632654848257479">Хэвийн</translation>
 <translation id="8808478386290700967">Web Store</translation>
 <translation id="8808686172382650546">Муур</translation>
+<translation id="8808744862003883508">Та энэ хуудсан дээр Chrome-д суулгасан бүх өргөтгөлийг харах боломжтой.</translation>
 <translation id="8809147117840417135">Цайвар номин ногоон</translation>
 <translation id="8813698869395535039"><ph name="USERNAME" />-д нэвтрэх боломжгүй байна</translation>
 <translation id="8813811964357448561">Хуудас цаас</translation>
@@ -5653,7 +5680,6 @@
 <translation id="9121814364785106365">Тусгайлан сонгосон цонх хэлбэрээр нээх</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" />-г түр зогсоосон</translation>
 <translation id="9124003689441359348">Хадгалсан нууц үг энд харагдана</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> rem.)</translation>
 <translation id="9128317794749765148">Тохируулгыг дуусгаж чадсангүй</translation>
 <translation id="9128870381267983090">Сүлжээнд холбогдох</translation>
 <translation id="9130015405878219958">Хүчин төгөлдөр бус горим оруулсан байна.</translation>
@@ -5692,6 +5718,7 @@
 <translation id="9188732951356337132">Ашиглалт болон оношилгооны өгөгдлийг илгээнэ үү. Энэ төхөөрөмж одоогоор оношилгоо, төхөөрөмж болон аппын ашиглалтын өгөгдлийг Google-д автоматаар илгээж байна. Үүнийг таны хүүхдийг тодорхойлоход ашиглахгүй бөгөөд энэ нь систем, аппын тогтвортой байдал болон бусад зүйлийг сайжруулахад тусална. Зарим хуримтлуулсан өгөгдөл нь Google аппууд болон Android хөгжүүлэгч зэрэг түншүүдэд мөн адил тусална. Хэрэв таны хүүхдийн Вэб, Аппын нэмэлт үйл ажиллагааны тохиргоо асаалттай байвал энэ өгөгдлийг тэдний Google Бүртгэлд хадгалж болзошгүй. <ph name="BEGIN_LINK2" />Нэмэлт мэдээлэл авах<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + урьдчилан хуваалцсан түлхүүр</translation>
 <translation id="920045321358709304"><ph name="SEARCH_ENGINE" /> хайх</translation>
+<translation id="9201023452444595544">Офлайн аливаа өгөгдлийг устгах болно</translation>
 <translation id="9201220332032049474">Дэлгэцийн түгжээний сонголт</translation>
 <translation id="9203398526606335860">&amp;Profiling идэвхжсэн</translation>
 <translation id="9203904171912129171">Төхөөрөмж сонгох</translation>
@@ -5704,6 +5731,7 @@
 <translation id="9220525904950070496">Бүртгэлийг хасах</translation>
 <translation id="9220820413868316583">Дээшлүүлээд дахин оролдоно уу.</translation>
 <translation id="923467487918828349">Бүгдийг харуул</translation>
+<translation id="929117907539171075">Суулгасан аппын офлайн өгөгдлийг мөн устгах болно</translation>
 <translation id="930268624053534560">Дэлгэрэнгүй Timestamps</translation>
 <translation id="932327136139879170">Нүүр хуудас</translation>
 <translation id="932508678520956232">Хэвлэлтийг эхлүүлж чадсангүй.</translation>
@@ -5729,6 +5757,7 @@
 <translation id="960719561871045870">Операторын код</translation>
 <translation id="960987915827980018">Ойролцоогоор 1 цаг үлдсэн байна</translation>
 <translation id="962802172452141067">Хавчуургын фолдерын хажуугийн хэсэг</translation>
+<translation id="964057662886721376">Зарим өргөтгөл, ялангуяа таны суулгахыг хүсээгүй өргөтгөл нь таныг удаашруулж болзошгүй.</translation>
 <translation id="964286338916298286">Таны IT (МТ) админ таны төхөөрөмжийн Chrome Goodies-г идэвхгүй болгосон байна.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Апп}other{Аппууд}}</translation>
 <translation id="965211523698323809"><ph name="DEVICE_TYPE" />-с мессеж илгээх, хүлээн авах. <ph name="LINK_BEGIN" />Нэмэлт мэдээлэл авах<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_mr.xtb b/chrome/app/resources/generated_resources_mr.xtb
index 55fe491..8f65c11 100644
--- a/chrome/app/resources/generated_resources_mr.xtb
+++ b/chrome/app/resources/generated_resources_mr.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">कस्टम</translation>
 <translation id="1178581264944972037">विराम द्या</translation>
 <translation id="117916940443676133">तुमची सिक्युरिटी की पिनने संरक्षित केलेली नाही. साइन इन डेटा व्यवस्थापित करण्यासाठी, प्रथम पिन तयार करा.</translation>
-<translation id="118069123878619799">- तुमची शारीरिक वैशिष्‍ट्ये जसे की, उंची</translation>
 <translation id="1181037720776840403">काढून टाका</translation>
 <translation id="1183237619868651138">स्थानिक कॅशेमध्ये <ph name="EXTERNAL_CRX_FILE" /> इंस्टॉल करू शकत नाही.</translation>
 <translation id="1185924365081634987">तुम्ही या नेटवर्क एररचे निराकरण करण्यासाठी <ph name="GUEST_SIGNIN_LINK_START" />अतिथी म्हणून ब्राउझ<ph name="GUEST_SIGNIN_LINK_END" /> देखील करू शकता.</translation>
@@ -1892,7 +1891,6 @@
 <translation id="3678156199662914018">एक्स्टेंशनः <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">तुमच्या फीडबॅकाबद्दल धन्यवाद. तुम्ही आता ऑफलाइन आहात आणि तुमचा अहवाल नंतर पाठविला जाईल.</translation>
 <translation id="3682824389861648626">हालचालाची मर्यादा</translation>
-<translation id="3683023058278427253">आम्ही तुमच्या डोमेनसाठी असलेले एकाधिक परवाने प्रकार शोधले आहेत. कृपया सुरू ठेवण्यासाठी एक निवडा.</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> स्क्रीन शेअर विनंती</translation>
 <translation id="368789413795732264">ही फाइल राइट करण्याचा प्रयत्न करताना एरर आली:<ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">तुम्ही ॲप्समध्ये उघडता त्या फायलींमध्ये आणि फोल्डरमध्ये लिहा</translation>
@@ -2156,7 +2154,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" हा ब्राउझर डीबग करत आहे</translation>
 <translation id="4014432863917027322">"<ph name="EXTENSION_NAME" />" दुरुस्त करायचे?</translation>
 <translation id="4015163439792426608">एक्स्टेंशन आहेत का? एकाच ठिकाणी सहजरीत्या <ph name="BEGIN_LINK" />तुमची एक्स्टेंशन व्यवस्थापित करा<ph name="END_LINK" />.</translation>
-<translation id="4020106588733303597">अरेरे! उपलब्ध परवाने लोड करण्यात सिस्टम अयशस्वी झाली.</translation>
 <translation id="4020327272915390518">पर्याय मेनू</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">शब्दकोशात &amp;जोडा</translation>
@@ -2658,7 +2655,6 @@
 <translation id="4823484602432206655">वापरकर्ता आणि डिव्हाइस सेटिंग्ज वाचा आणि बदला</translation>
 <translation id="4824958205181053313">सिंक रद्द करायचे?</translation>
 <translation id="4827675678516992122">कनेक्ट करता आले नाही</translation>
-<translation id="4828937774870308359">ऑस्ट्रेलियन</translation>
 <translation id="4829768588131278040">पिन सेट करा</translation>
 <translation id="4830502475412647084">OS अपडेट इंस्टॉल करत आहे</translation>
 <translation id="4830573902900904548"><ph name="NETWORK_NAME" /> वापरून इंटरनेटशी कनेक्ट करण्‍यात तुमचे <ph name="DEVICE_TYPE" /> अक्षम आहे. कृपया अन्य नेटवर्क वापरा. <ph name="LEARN_MORE_LINK_START" />अधिक जाणून घ्‍या<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2757,7 +2753,6 @@
 <translation id="4953689047182316270">ॲक्सेसिबिलिटी कामक्रमांना प्रतिसाद द्या</translation>
 <translation id="4953808748584563296">डीफॉल्ट नारिंगी अवतार</translation>
 <translation id="4955710816792587366">तुमचा पिन निवडा</translation>
-<translation id="4955814292505481804">वार्षिक</translation>
 <translation id="4959262764292427323">तुम्हाला कोणत्याही डिव्हाइसवर वापरता यावे यासाठी तुमच्या Google खात्यामध्ये पासवर्ड सेव्ह केले जातात</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">हे ॲप तुमच्या अ‍ॅडमिनिस्ट्रेटरने इंस्टॉल केले आहे.</translation>
@@ -3239,7 +3234,6 @@
 <translation id="5659593005791499971">ईमेल</translation>
 <translation id="5659833766619490117">या पेजचे भाषांतर करता आले नाही</translation>
 <translation id="5660204307954428567"><ph name="DEVICE_NAME" /> सह जोडा</translation>
-<translation id="5662477687021125631">अखंड</translation>
 <translation id="5667546120811588575">Google Play सेट अप करत आहे...</translation>
 <translation id="5669267381087807207">सक्रिय करीत आहे </translation>
 <translation id="5669691691057771421">नवीन पिन एंटर करा</translation>
@@ -3341,7 +3335,6 @@
 <translation id="5815645614496570556">X.400 पत्ता</translation>
 <translation id="5816434091619127343">विनंती केलेले प्रिंटर बदल प्रिंटरला वापरता न येण्याजोगा बनवतील.</translation>
 <translation id="5817918615728894473">जोडा</translation>
-<translation id="5819762621475381970">- तुमच्या रूमचा लेआउट</translation>
 <translation id="5821565227679781414">शॉर्टकट तयार करा</translation>
 <translation id="5825412242012995131">सुरू आहे (शिफारस केलेले)</translation>
 <translation id="5826395379250998812">तुमचे <ph name="DEVICE_TYPE" /> तुमच्या फोनसह कनेक्ट करा. <ph name="LINK_BEGIN" />अधिक जाणून घ्या<ph name="LINK_END" /></translation>
@@ -3975,7 +3968,6 @@
 <translation id="674632704103926902">टॅप ड्रॅगिंग सुरू करा</translation>
 <translation id="6748217015615267851">रेंडरर: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">तुम्ही सुरु ठेवू शकता परंतु केवळ तुमचा संकालित डेटा आणि सेटिंग्ज पुनर्संचयित केले जातील. सर्व स्थानिक डेटा गमावला जाईल.</translation>
-<translation id="6748775883310276718">एकल ॲप कियोस्क</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (गुप्त)</translation>
 <translation id="6757101664402245801">URL कॉपी केली</translation>
 <translation id="6758056191028427665">आम्ही आमचे काम कसे करत आहोत त्याबद्दल आम्हाला कळवा.</translation>
@@ -4946,7 +4938,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{कोणत्याही तृतीय पक्ष कुकी नाहीत}=1{१ तृतीय पक्ष कुकी ब्लॉक केली आहे}other{# तृतीय पक्ष कुकी ब्लॉक केल्या आहेत}}</translation>
 <translation id="810875025413331850">कोणतीही जवळपासची डिव्हाइस आढळली नाहीत.</translation>
 <translation id="8111155949205007504">तुमच्या iPhone सह हा पासवर्ड शेअर करा</translation>
-<translation id="8113043281354018522">परवाना प्रकार निवडा</translation>
 <translation id="8114875720387900039">आडवे विभाजित करा</translation>
 <translation id="8116972784401310538">&amp;बुकमार्क व्यवस्थापक</translation>
 <translation id="8117620576188476503">स्थिती ट्रेने कनेक्शन, अपडेट आणि सेटिंग्ज व्यवस्थापित करा. येथे कीबोर्डने येण्यासाठी, Alt + Shift + S दाबा.</translation>
@@ -5663,7 +5654,6 @@
 <translation id="9121814364785106365">पिन केलेला टॅब म्हणून उघडा</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> थांबवले आहे</translation>
 <translation id="9124003689441359348">सेव्ह केलेले पासवर्ड येथे दिसून येतील</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> शि.)</translation>
 <translation id="9128317794749765148">सेट करणे पूर्ण करू शकलो नाही</translation>
 <translation id="9128870381267983090">नेटवर्कशी कनेक्ट करा</translation>
 <translation id="9130015405878219958">चुकीचे मोड एंटर केले.</translation>
diff --git a/chrome/app/resources/generated_resources_ms.xtb b/chrome/app/resources/generated_resources_ms.xtb
index 094efdf..07ba86a2 100644
--- a/chrome/app/resources/generated_resources_ms.xtb
+++ b/chrome/app/resources/generated_resources_ms.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Tersuai</translation>
 <translation id="1178581264944972037">Jeda</translation>
 <translation id="117916940443676133">Kunci keselamatan anda tidak dilindungi dengan PIN. Untuk mengurus data log masuk, buat PIN terlebih dahulu.</translation>
-<translation id="118069123878619799">- ciri fizikal anda, seperti ketinggian</translation>
 <translation id="1181037720776840403">Alih keluar</translation>
 <translation id="1183237619868651138">Tidak boleh memasang <ph name="EXTERNAL_CRX_FILE" /> dalam cache tempatan.</translation>
 <translation id="1185924365081634987">Anda boleh cuba <ph name="GUEST_SIGNIN_LINK_START" />semak imbas sebagai tetamu<ph name="GUEST_SIGNIN_LINK_END" /> untuk membetulkan ralat rangkaian ini juga.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">Menunggu untuk <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> peranti lain yang tersedia.</translation>
 <translation id="1495677929897281669">Kembali ke tab</translation>
+<translation id="1499271269825557605">Jika anda tidak mengecam sambungan itu atau jika penyemak imbas anda tidak berfungsi seperti yang dijangkakan, anda boleh mematikan atau menyesuaikan sambungan di sini.</translation>
 <translation id="1500297251995790841">Peranti tidak diketahui [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Akaun pemilik ini perlu menjadi akaun dilog masuk yang pertama dalam sesi berbilang log masuk.</translation>
 <translation id="150411034776756821">Alih keluar <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Halaman ini telah disekat daripada mengakses kamera anda.</translation>
 <translation id="1507246803636407672">&amp;Buang</translation>
 <translation id="1508491105858779599">Letakkan jari anda pada penderia cap jari untuk membuka kunci peranti.</translation>
+<translation id="1508575541972276599">Versi semasa ialah Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">Akses mana-mana <ph name="DEVICE_NAME_AND_VENDOR" /> melalui USB</translation>
 <translation id="150962533380566081">PUK tidak sah.</translation>
 <translation id="1510030919967934016">Halaman ini disekat daripada menjejaki lokasi anda.</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">Gunakan</translation>
 <translation id="1603914832182249871">(Inkognito)</translation>
 <translation id="1604432177629086300">Tidak dapat mencetak. Semak pencetak dan cuba lagi.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: Penyegerakan kata laluan tidak berfungsi</translation>
 <translation id="1607139524282324606">Kosongkan masukan</translation>
 <translation id="1608626060424371292">Alih keluar pengguna ini</translation>
 <translation id="1608668830839595724">Lagi tindakan untuk item yang dipilih</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">Data apl yang dihoskan</translation>
 <translation id="1776712937009046120">Tambah pengguna</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Peranti ini diurus oleh <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    Sila klik "Seterusnya" untuk meneruskan proses log masuk ke akaun <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> anda.</translation>
 <translation id="1779652936965200207">Sila masukkan kekunci laluan ini pada "<ph name="DEVICE_NAME" />":</translation>
 <translation id="1780152987505130652">Tutup Kumpulan</translation>
 <translation id="1781291988450150470">PIN semasa</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">Tindakan tidak tersedia</translation>
 <translation id="2050339315714019657">Potret</translation>
 <translation id="2053312383184521053">Data Keadaan Melahu</translation>
+<translation id="2055585478631012616">Anda akan dilog keluar daripada tapak ini, termasuk dalam tab yang terbuka</translation>
 <translation id="205560151218727633">Logo Google Assistant</translation>
 <translation id="2058456167109518507">Peranti dikesan</translation>
 <translation id="2059913712424898428">Zon waktu</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">Buat asal</translation>
 <translation id="2080070583977670716">Lagi tetapan</translation>
 <translation id="2087822576218954668">Cetak: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">Rangkaian VPN</translation>
 <translation id="2089566709556890888">Semak imbas dengan selamat menggunakan Google Chrome</translation>
 <translation id="2089795179672254991">Tanya apabila tapak ingin melihat teks dan imej yang disalin ke papan keratan (disyorkan)</translation>
 <translation id="2090165459409185032">Untuk memulihkan maklumat akaun anda, pergi ke: google.com/accounts/recovery</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">Satu tapak sedang mengakses input audio dan video</translation>
 <translation id="2379281330731083556">Cetak menggunakan dialog sistem... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Tanya sebelum menghantar (disyorkan)</translation>
+<translation id="2382818385048255866">Semak sambungan anda</translation>
 <translation id="2384436799579181135">Ralat telah berlaku. Sila periksa pencetak anda dan cuba lagi.</translation>
 <translation id="2387458720915042159">Jenis sambungan proksi</translation>
 <translation id="2391419135980381625">Fon standard</translation>
@@ -1036,6 +1043,7 @@
 <translation id="2462724976360937186">ID Kekunci Pihak Berkuasa Pensijilan</translation>
 <translation id="2462752602710430187"><ph name="PRINTER_NAME" /> ditambahkan</translation>
 <translation id="2464089476039395325">Proksi HTTP</translation>
+<translation id="2467267713099745100">Rangkaian <ph name="NETWORK_TYPE" />, dimatikan</translation>
 <translation id="2468205691404969808">Menggunakan kuki untuk mengingati pilihan anda, walaupun anda tidak melawati halaman tersebut</translation>
 <translation id="2468402215065996499">Tamagotchi</translation>
 <translation id="2469259292033957819">Anda tiada pencetak yang disimpan.</translation>
@@ -1290,6 +1298,7 @@
 <translation id="2800760947029405028">Muat naik imej</translation>
 <translation id="2803375539583399270">Masukkan PIN</translation>
 <translation id="2804043232879091219">Penyemak imbas alternatif tidak boleh dibuka</translation>
+<translation id="2804667941345577550">Anda akan dilog keluar daripada tapak ini, termasuk dalam tab yang terbuka</translation>
 <translation id="2804680522274557040">Kamera dimatikan</translation>
 <translation id="2805646850212350655">Sistem Fail Penyulitan Microsoft</translation>
 <translation id="2805756323405976993">Apl</translation>
@@ -1297,6 +1306,7 @@
 <translation id="2806891468525657116">Pintasan sudah wujud</translation>
 <translation id="2807517655263062534">Fail yang anda muat turun dipaparkan di sini</translation>
 <translation id="2809586584051668049">dan <ph name="NUMBER_ADDITIONAL_DISABLED" /> lagi</translation>
+<translation id="2810390687497823527">Jika anda tidak mengecam sambungan itu atau jika penyemak imbas anda tidak berfungsi seperti yang dijangkakan, anda boleh mematikan atau menyesuaikan sambungan di sini.</translation>
 <translation id="2812049959647166806">Thunderbolt tidak disokong</translation>
 <translation id="2812944337881233323">Cuba log keluar dan log masuk semula</translation>
 <translation id="2812989263793994277">Jangan paparkan sebarang imej</translation>
@@ -1336,6 +1346,7 @@
 <translation id="2861941300086904918">Pengurus keselamatan Klien Asli</translation>
 <translation id="2864601841139725659">Tetapkan gambar profil anda</translation>
 <translation id="2865919525181940183">Tangkapan skrin atur cara yang sedang dipaparkan pada skrin</translation>
+<translation id="286674810810214575">Menyemak sumber kuasa...</translation>
 <translation id="2867768963760577682">Buka sebagai Tab Disemat</translation>
 <translation id="2868746137289129307">Sambungan ini sudah lapuk dan dilumpuhkan oleh dasar perusahaan. Ia mungkin menjadi aktif secara automatik apabila versi yang lebih baharu tersedia.</translation>
 <translation id="2870560284913253234">Tapak</translation>
@@ -1413,6 +1424,7 @@
 <translation id="2972581237482394796">&amp;Buat Semula</translation>
 <translation id="2973324205039581528">Redam Tapak</translation>
 <translation id="2977480621796371840">Alih keluar daripada kumpulan</translation>
+<translation id="2979520980928493164">Chrome yang lebih sihat dan gembira</translation>
 <translation id="2979639724566107830">Buka dalam tetingkap baharu</translation>
 <translation id="2981113813906970160">Paparkan kursor tetikus besar</translation>
 <translation id="2982970937345031">Laporkan secara awanama</translation>
@@ -1519,6 +1531,7 @@
 <translation id="3143515551205905069">Batalkan penyegerakan</translation>
 <translation id="3143754809889689516">Mainkan dari permulaan</translation>
 <translation id="3144647712221361880">Buka pautan sebagai</translation>
+<translation id="3145187901750964977">Tidak dapat memasang mesin maya. Sila cuba lagi atau hubungi pentadbir peranti organisasi anda. Kod ralat: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Versi:
     <ph name="LINUX_VERSION" />
 
@@ -1557,6 +1570,7 @@
 <translation id="3192947282887913208">Fail Audio</translation>
 <translation id="3194737229810486521"><ph name="URL" /> mahu menyimpan data pada peranti anda secara kekal</translation>
 <translation id="3199127022143353223">Pelayan</translation>
+<translation id="3201306578844503970">Tidak dapat memasang mesin maya disebabkan oleh ralat rangkaian. Sila cuba lagi atau hubungi pentadbir peranti organisasi anda. Kod ralat: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Peranti USB yang tersedia akan dipaparkan di sini.</translation>
 <translation id="3202131003361292969">Laluan</translation>
 <translation id="3202173864863109533">Audio bagi tab ini sedang diredam.</translation>
@@ -1893,7 +1907,6 @@
 <translation id="3678156199662914018">Sambungan: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Terima kasih atas maklum balas anda. Anda berada di luar talian sekarang dan laporan anda akan dihantar sebentar lagi.</translation>
 <translation id="3682824389861648626">Ambang pergerakan</translation>
-<translation id="3683023058278427253">Kami telah mengesan berbilang jenis lesen untuk domain anda. Sila pilih satu untuk meneruskan.</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> Permintaan Perkongsian Skrin</translation>
 <translation id="368789413795732264">Terdapat ralat semasa mencuba untuk menulis fail: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Tulis pada fail dan folder yang anda buka dalam aplikasi</translation>
@@ -2067,6 +2080,7 @@
 <translation id="389589731200570180">Berkongsi dengan tetamu</translation>
 <translation id="389901847090970821">Pilih papan kekunci</translation>
 <translation id="3899879303189199559">Di luar talian selama lebih setahun</translation>
+<translation id="3900789207771372462">Sesetengah sambungan boleh melihat aktiviti penyemakan imbas anda - termasuk maklumat peribadi.</translation>
 <translation id="3900966090527141178">Eksport kata laluan</translation>
 <translation id="3901991538546252627">Menyambung ke <ph name="NAME" /></translation>
 <translation id="3905761538810670789">Baiki apl</translation>
@@ -2157,7 +2171,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" sedang menyahpepijat penyemak imbas ini</translation>
 <translation id="4014432863917027322">Baiki "<ph name="EXTENSION_NAME" />"?</translation>
 <translation id="4015163439792426608">Ada sambungan? <ph name="BEGIN_LINK" />Urus sambungan anda<ph name="END_LINK" /> di satu tempat yang mudah.</translation>
-<translation id="4020106588733303597">Op! Sistem gagal memuatkan lesen yang tersedia.</translation>
 <translation id="4020327272915390518">Menu pilihan</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Tambahkan pada Kamus</translation>
@@ -2195,6 +2208,7 @@
 <translation id="407520071244661467">Skala</translation>
 <translation id="4075639477629295004">Tidak dapat menghantar <ph name="FILE_NAME" />.</translation>
 <translation id="4077917118009885966">Iklan disekat di tapak ini</translation>
+<translation id="4077919383365622693">Semua data dan kuki yang disimpan oleh <ph name="SITE" /> akan dipadamkan.</translation>
 <translation id="4079140982534148664">Gunakan Semak Ejaan yang Dipertingkatkan</translation>
 <translation id="4081242589061676262">Tidak dapat menghantar fail.</translation>
 <translation id="4084682180776658562">Penanda halaman</translation>
@@ -2269,6 +2283,7 @@
 <translation id="4181841719683918333">Bahasa</translation>
 <translation id="4184885522552335684">Seret untuk mengalihkan paparan</translation>
 <translation id="4194570336751258953">Dayakan ketik untuk klik</translation>
+<translation id="4194595472342532425">Tidak dapat menyediakan Plugin VM kerana berlaku masalah konfigurasi. Sila hubungi pentadbir peranti organisasi anda. Kod ralat: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Buka dalam tab baharu</translation>
 <translation id="4195814663415092787">Sambung semula dari tempat anda berhenti</translation>
 <translation id="4198146608511578238">Cuma tahan ikon Pelancar untuk bercakap dengan Google Assistant anda.</translation>
@@ -2492,6 +2507,7 @@
 <translation id="4549791035683739768">Kunci keselamatan anda tidak menyimpan cap jari.</translation>
 <translation id="4551763574344810652">Tekan <ph name="MODIFIER_KEY_DESCRIPTION" /> untuk buat asal</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005">Rangkaian <ph name="NETWORK_TYPE" />, kekuatan isyarat <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">Sambungan luar ialah versi yang sama atau lebih rendah berbanding yang sedia ada.</translation>
 <translation id="4555769855065597957">Bayang</translation>
 <translation id="4555863373929230635">Untuk menyimpan kata laluan pada Akaun Google anda, log masuk dan aktifkan penyegerakan.</translation>
@@ -2569,6 +2585,7 @@
 <translation id="4665446389743427678">Semua data yang disimpan oleh <ph name="SITE" /> akan dipadamkan.</translation>
 <translation id="4668721319092543482">Klik untuk mendayakan <ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">Menyuling Halaman</translation>
+<translation id="46733273239502219">Data luar talian dalam apl yang dipasang juga akan dipadamkan</translation>
 <translation id="4673442866648850031">Buka alatan stilus apabila stilus dialih keluar</translation>
 <translation id="4677585247300749148"><ph name="URL" /> ingin menjawab acara kebolehaksesan</translation>
 <translation id="4677772697204437347">Memori GPU</translation>
@@ -2660,7 +2677,6 @@
 <translation id="4823484602432206655">Baca dan tukar pengguna dan tetapan peranti</translation>
 <translation id="4824958205181053313">Batalkan penyegerakan?</translation>
 <translation id="4827675678516992122">Tidak dapat menyambung</translation>
-<translation id="4828937774870308359">Australia</translation>
 <translation id="4829768588131278040">Sediakan PIN</translation>
 <translation id="4830502475412647084">Memasang kemas kini OS</translation>
 <translation id="4830573902900904548"><ph name="DEVICE_TYPE" /> anda tidak dapat menyambung ke Internet menggunakan <ph name="NETWORK_NAME" />. Sila pilih rangkaian lain. <ph name="LEARN_MORE_LINK_START" />Ketahui lebih lanjut<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2701,6 +2717,7 @@
 <translation id="4876273079589074638">Bantu jurutera kami menyiasat dan menyelesaikan ranap ini. Senaraikan langkah sebenar jika boleh. Setiap butiran penting!</translation>
 <translation id="4876895919560854374">Kunci dan buka kunci skrin</translation>
 <translation id="4877276003880815204">Periksa Unsur</translation>
+<translation id="4878653975845355462">Latar belakang tersuai telah dimatikan oleh pentadbir anda</translation>
 <translation id="4879491255372875719">Automatik (lalai)</translation>
 <translation id="4880328057631981605">Nama titik capaian</translation>
 <translation id="4880827082731008257">Sejarah carian</translation>
@@ -2756,10 +2773,10 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" ingin menyambung ke port siri</translation>
 <translation id="4944310289250773232">Perkhidmatan pengesahan ini dihoskan oleh <ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">Tindakan</translation>
+<translation id="4952981627953231344">Plugin VM tidak dibenarkan pada peranti ini. Hubungi pentadbir peranti organisasi anda.</translation>
 <translation id="4953689047182316270">Jawab Acara Kebolehaksesan</translation>
 <translation id="4953808748584563296">Avatar jingga lalai</translation>
 <translation id="4955710816792587366">Pilih PIN anda</translation>
-<translation id="4955814292505481804">Tahunan</translation>
 <translation id="4959262764292427323">Kata laluan disimpan dalam Akaun Google anda supaya anda dapat menggunakannya pada mana-mana peranti</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Apl ini telah dipasang oleh pentadbir anda.</translation>
@@ -3241,7 +3258,6 @@
 <translation id="5659593005791499971">E-mel</translation>
 <translation id="5659833766619490117">Halaman ini tidak dapat diterjemahkan</translation>
 <translation id="5660204307954428567">Gandingkan dengan <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Berterusan</translation>
 <translation id="5667546120811588575">Menyediakan Google Play...</translation>
 <translation id="5669267381087807207">Mengaktifkan</translation>
 <translation id="5669691691057771421">Masukkan PIN baharu</translation>
@@ -3257,6 +3273,7 @@
 <translation id="5687326903064479980">Zon waktu</translation>
 <translation id="5689516760719285838">Lokasi</translation>
 <translation id="56907980372820799">Pautkan data</translation>
+<translation id="5691180005790455277">Semua data dan kuki yang disimpan oleh <ph name="SITE_GROUP_NAME" /> dan mana-mana tapak di bawahnya akan dipadamkan.</translation>
 <translation id="5691511426247308406">Keluarga</translation>
 <translation id="5692183275898619210">Pencetakan selesai</translation>
 <translation id="5696143504434933566">Laporkan penyalahgunaan daripada "<ph name="EXTENSION_NAME" />"</translation>
@@ -3343,7 +3360,6 @@
 <translation id="5815645614496570556">Alamat X.400</translation>
 <translation id="5816434091619127343">Perubahan pencetak yang diminta akan menjadikan pencetak tidak boleh digunakan.</translation>
 <translation id="5817918615728894473">Gandingkan</translation>
-<translation id="5819762621475381970">- reka letak bilik anda</translation>
 <translation id="5821565227679781414">Cipta Pintasan</translation>
 <translation id="5825412242012995131">Hidup (Disyorkan)</translation>
 <translation id="5826395379250998812">Sambungkan <ph name="DEVICE_TYPE" /> anda dengan telefon anda. <ph name="LINK_BEGIN" />Ketahui lebih lanjut<ph name="LINK_END" /></translation>
@@ -3479,6 +3495,7 @@
 <translation id="6007240208646052708">Carian suara dalam bahasa anda tidak tersedia.</translation>
 <translation id="6009781704028455063">Penderia terbina dalam</translation>
 <translation id="6010869025736512584">Mengakses input video</translation>
+<translation id="6011074160056912900">Rangkaian ethernet</translation>
 <translation id="6011193465932186973">Cap jari</translation>
 <translation id="6011449291337289699">Kosongkan data tapak</translation>
 <translation id="6015266928248016057">PUK tidak sah. Baki cubaan semula: <ph name="RETRIES" />.</translation>
@@ -3515,6 +3532,7 @@
 <translation id="6053401458108962351">&amp;Kosongkan data menyemak imbas...</translation>
 <translation id="6055171183283175969">Kata laluan yang anda masukkan tidak betul.</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 Dengan Penyulitan RSA</translation>
+<translation id="6055907707645252013">Rangkaian <ph name="NETWORK_TYPE" />, tidak disambungkan</translation>
 <translation id="6056710589053485679">Muat Semula Biasa</translation>
 <translation id="6057381398996433816">Tapak ini telah disekat daripada menggunakan penderia gerakan dan cahaya.</translation>
 <translation id="6058567592298841668">Mesin Maya Pemalam: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3578,6 +3596,7 @@
 <translation id="6136114942382973861">Tutup bar muat turun</translation>
 <translation id="6137767437444130246">Sijil pengguna</translation>
 <translation id="6138680304137685902">Tandatangan X9.62 ECDSA dengan SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, tiada rangkaian</translation>
 <translation id="6141988275892716286">Sahkan muat turun</translation>
 <translation id="6143186082490678276">Dapatkan Bantuan</translation>
 <translation id="6144938890088808325">Bantu kami memperbaik Chromebook</translation>
@@ -3884,6 +3903,7 @@
 <translation id="6602956230557165253">Gunakan kekunci anak panah kiri dan kanan untuk menavigasi.</translation>
 <translation id="6605847144724004692">Belum dinilai oleh mana-mana pengguna.</translation>
 <translation id="6607831829715835317">Lagi al&amp;at</translation>
+<translation id="6611972847767394631">Cari tab anda di sini</translation>
 <translation id="6612358246767739896">Kandungan yang dilindungi</translation>
 <translation id="6615455863669487791">Tunjukkan kepada saya</translation>
 <translation id="6618097958368085618">Simpan Juga</translation>
@@ -3952,6 +3972,7 @@
 <translation id="6709133671862442373">Berita</translation>
 <translation id="6709357832553498500">Sambung menggunakan <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Sebelumnya</translation>
+<translation id="6715803357256707211">Ralat telah berlaku semasa pemasangan aplikasi Linux anda. Klik pemberitahuan untuk mendapatkan butiran.</translation>
 <translation id="6721678857435001674">Lihat jenama dan model Kunci Keselamatan anda</translation>
 <translation id="6721972322305477112">&amp;Fail</translation>
 <translation id="672213144943476270">Sila buka kunci profil anda sebelum menyemak imbas sebagai tetamu.</translation>
@@ -3976,7 +3997,6 @@
 <translation id="674632704103926902">Dayakan penyeretan ketik</translation>
 <translation id="6748217015615267851">Pemapar: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Anda boleh meneruskan, tetapi hanya data disegerakkan dan tetapan anda yang akan dipulihkan. Semua data tempatan akan hilang.</translation>
-<translation id="6748775883310276718">Kios Satu Apl</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Inkognito)</translation>
 <translation id="6757101664402245801">URL disalin</translation>
 <translation id="6758056191028427665">Beritahu kami tentang prestasi kami.</translation>
@@ -3986,6 +4006,7 @@
 <translation id="6769712124046837540">Menambah pencetak...</translation>
 <translation id="6770664076092644100">Sahkan melalui NFC</translation>
 <translation id="6771503742377376720">Adalah Pihak Berkuasa Pensijilan</translation>
+<translation id="6772339735733515807">Urus sambungan anda</translation>
 <translation id="6775163072363532304">Peranti yang tersedia akan dipaparkan di sini.</translation>
 <translation id="6777817260680419853">Ubah hala disekat</translation>
 <translation id="6778737459546443941">Ibu bapa anda belum meluluskannya</translation>
@@ -4124,6 +4145,7 @@
 <translation id="6972180789171089114">Audio/Video</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> tidak dapat membuka fail dalam folder ini kerana folder ini mengandungi fail sistem</translation>
 <translation id="6972754398087986839">Bermula</translation>
+<translation id="6973611239564315524">Peningkatan kepada Debian 10 (Buster) tersedia</translation>
 <translation id="6974609594866392343">Mod tunjuk cara luar talian</translation>
 <translation id="6977381486153291903">Semakan perisian tegar</translation>
 <translation id="6978121630131642226">Enjin Carian</translation>
@@ -4583,6 +4605,7 @@
 <translation id="7644543211198159466">Warna dan tema</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (pemilik)</translation>
 <translation id="7645681574855902035">Membatalkan sandaran Linux</translation>
+<translation id="7646772052135772216">Penyegerakan kata laluan tidak berfungsi</translation>
 <translation id="7647403192093989392">Tiada aktiviti baru-baru ini</translation>
 <translation id="7648992873808071793">Simpan fail pada peranti ini</translation>
 <translation id="7649070708921625228">Bantuan</translation>
@@ -4771,6 +4794,7 @@
 <translation id="7877451762676714207">Ralat pelayan tidak diketahui. Sila cuba lagi atau hubungi pentadbir pelayan.</translation>
 <translation id="7877680364634660272">Lawatan</translation>
 <translation id="7878562273885520351">Kata laluan anda mungkin terjejas</translation>
+<translation id="7879631849810108578">Pintasan ditetapkan: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Data setempat akan dipadamkan apabila anda memulakan semula peranti</translation>
 <translation id="7881483672146086348">Paparkan Akaun</translation>
 <translation id="7882358943899516840">Jenis penyedia</translation>
@@ -4857,6 +4881,7 @@
 <translation id="7987814697832569482">Sentiasa sambung melalui VPN ini</translation>
 <translation id="7988355189918024273">Dayakan ciri kebolehcapaian</translation>
 <translation id="7991296728590311172">Tetapan Akses Suis</translation>
+<translation id="7994350303002908848">Tidak dapat memasang Plugin VM. Sila cuba lagi atau hubungi pentadbir peranti organisasi anda. Kod ralat: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">Kaedah EAP</translation>
 <translation id="7997826902155442747">Keutamaan Proses</translation>
 <translation id="7999229196265990314">Mencipta fail berikut:
@@ -4949,7 +4974,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Tiada kuki pihak ketiga}=1{1 kuki pihak ketiga disekat}other{# kuki pihak ketiga disekat}}</translation>
 <translation id="810875025413331850">Tiada peranti berdekatan dijumpai.</translation>
 <translation id="8111155949205007504">Kongsi kata laluan ini dengan iPhone anda</translation>
-<translation id="8113043281354018522">Pilih jenis lesen</translation>
 <translation id="8114875720387900039">Pisah mendatar</translation>
 <translation id="8116972784401310538">&amp;Pengurus penanda halaman</translation>
 <translation id="8117620576188476503">Urus sambungan, kemas kini dan tetapan dengan dulang status. Untuk ke sini menggunakan papan kekunci, tekan Alt + Shift + S.</translation>
@@ -5106,6 +5130,7 @@
 <translation id="8327039559959785305">Ralat semasa melekapkan fail Linux. Sila cuba lagi.</translation>
 <translation id="8335587457941836791">Nyahsemat dari rak</translation>
 <translation id="8336407002559723354">Kemas kini tamat <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Mulakan semula peranti untuk memaparkan teks sistem dalam <ph name="LANGUAGE" /></translation>
 <translation id="8336739000755212683">Tukar imej akaun peranti</translation>
 <translation id="8337047789441383384">Anda telah pun mendaftarkan kunci keselamatan ini. Anda tidak perlu mendaftarkannya semula.</translation>
 <translation id="8338952601723052325">Laman web pemaju</translation>
@@ -5150,6 +5175,7 @@
 <translation id="8400146488506985033">Urus orang</translation>
 <translation id="8401432541486058167">Sediakan PIN yang dikaitkan dengan kad pintar anda.</translation>
 <translation id="8405046151008197676">Dapatkan sorotan daripada kemas kini terbaharu</translation>
+<translation id="8408068190360279472">Rangkaian <ph name="NETWORK_TYPE" />, menyambung</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Tanya dahulu (disyorkan)</translation>
 <translation id="8418445294933751433">&amp;Paparkan sebagai tab</translation>
@@ -5439,6 +5465,7 @@
 <translation id="8807632654848257479">Stabil</translation>
 <translation id="8808478386290700967">Kedai Web</translation>
 <translation id="8808686172382650546">Kucing</translation>
+<translation id="8808744862003883508">Pada halaman ini, anda dapat melihat semua sambungan yang dipasang pada Chrome.</translation>
 <translation id="8809147117840417135">Hijau kebiruan cerah</translation>
 <translation id="8813698869395535039">Tidak dapat mengelog masuk ke <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">helai kertas</translation>
@@ -5666,7 +5693,6 @@
 <translation id="9121814364785106365">Buka sebagai tab dipin</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> dijeda</translation>
 <translation id="9124003689441359348">Kata laluan yang disimpan akan kelihatan di sini</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> lagi)</translation>
 <translation id="9128317794749765148">Persediaan tidak dapat diselesaikan</translation>
 <translation id="9128870381267983090">Sambung ke rangkaian</translation>
 <translation id="9130015405878219958">Mod tidak sah dimasukkan.</translation>
@@ -5705,6 +5731,7 @@
 <translation id="9188732951356337132">Hantar data penggunaan dan diagnostik. Pada masa ini, peranti ini menghantar data diagnostik dan penggunaan peranti serta apl kepada Google secara automatik. Data ini tidak akan digunakan untuk mengenal pasti anak anda dan akan membantu peningkatan kestabilan sistem dan apl serta pelbagai lagi. Sesetengah data agregat juga akan membantu apl dan rakan kongsi Google, seperti pembangun Android. Jika tetapan Aktiviti Web &amp; Apl tambahan dihidupkan untuk anak anda, data ini mungkin disimpan ke Akaun Googlenya. <ph name="BEGIN_LINK2" />Ketahui Lebih Lanjut<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + kekunci praperkongsian</translation>
 <translation id="920045321358709304">Cari <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">Sebarang data luar talian akan dipadamkan</translation>
 <translation id="9201220332032049474">Pilihan kunci skrin</translation>
 <translation id="9203398526606335860">&amp;Dayakan pemprofilan</translation>
 <translation id="9203904171912129171">Pilih peranti</translation>
@@ -5717,6 +5744,7 @@
 <translation id="9220525904950070496">Alih keluar akaun</translation>
 <translation id="9220820413868316583">Angkat kemudian cuba lagi.</translation>
 <translation id="923467487918828349">Paparkan Semua</translation>
+<translation id="929117907539171075">Data luar talian dalam apl yang dipasang juga akan dipadamkan</translation>
 <translation id="930268624053534560">Cap Masa Terperinci</translation>
 <translation id="932327136139879170">Laman Utama</translation>
 <translation id="932508678520956232">Tidak dapat memulakan percetakan.</translation>
@@ -5742,7 +5770,8 @@
 <translation id="960719561871045870">Kod operator</translation>
 <translation id="960987915827980018">Tinggal kira-kira 1jam</translation>
 <translation id="962802172452141067">Pohon folder penanda halaman</translation>
-<translation id="964286338916298286">Pentadbir IT anda telah melumpuhkan Chrome Goodies untuk peranti anda.</translation>
+<translation id="964057662886721376">Sesetengah sambungan boleh memperlahankan Internet anda - terutamanya sambungan yang tidak dipasang dengan sengaja.</translation>
+<translation id="964286338916298286">Pentadbir IT anda telah melumpuhkan Cenderahati Chrome untuk peranti anda.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Aplikasi}other{Aplikasi}}</translation>
 <translation id="965211523698323809">Hantar dan terima mesej teks daripada <ph name="DEVICE_TYPE" /> anda. <ph name="LINK_BEGIN" />Ketahui lebih lanjut<ph name="LINK_END" /></translation>
 <translation id="967624055006145463">Data disimpan</translation>
diff --git a/chrome/app/resources/generated_resources_my.xtb b/chrome/app/resources/generated_resources_my.xtb
index 47490d0..c711567a 100644
--- a/chrome/app/resources/generated_resources_my.xtb
+++ b/chrome/app/resources/generated_resources_my.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">စိတ်ကြိုက်</translation>
 <translation id="1178581264944972037">ဆိုင်းငံ့ထားရန်</translation>
 <translation id="117916940443676133">သင့်လုံခြုံရေးကီးကို ပင်နံပါတ်ဖြင့် ကာကွယ်မထားပါ။ လက်မှတ်ထိုးဝင်ခြင်း ဒေတာများကို စီမံရန် ပင်နံပါတ် ဦးစွာသတ်မှတ်ပါ။</translation>
-<translation id="118069123878619799">- အရပ်ကဲ့သို့ သင်၏ ပုံပန်းသဏ္ဌာန်</translation>
 <translation id="1181037720776840403">ဖယ်ရှားရန်</translation>
 <translation id="1183237619868651138">ဒေသတွင်း ကရှ်တွင် <ph name="EXTERNAL_CRX_FILE" /> အား မတပ်ဆင်နိုင်ပါ။</translation>
 <translation id="1185924365081634987">သင်သည် <ph name="GUEST_SIGNIN_LINK_START" />ဧည့်သည် အဖြစ် ဝင်ကြည့်ရန်<ph name="GUEST_SIGNIN_LINK_END" /> ကြိုးစားကြည့်ကာ ဒီကွန်ရက် အမှားကို ပြင်ပေနိုင်သည်။</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381"><ph name="LOAD_STATE_PARAMETER" />ကို စောင့်နေ...</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> ရနိုင်သည့် အခြား ကိရိယာများ</translation>
 <translation id="1495677929897281669">တဘ်သို့ ပြန်သွားရန်</translation>
+<translation id="1499271269825557605">နောက်ဆက်တွဲတစ်ခုကို မမှတ်မိလျှင် သို့မဟုတ် သင့်ဘရောင်ဇာသည် ထင်ထားသည့်အတိုင်း အလုပ်လုပ်ခြင်းမရှိလျှင် ဤနေရာတွင် နောက်ဆက်တွဲများကို ပိတ်ခြင်း သို့မဟုတ် စိတ်ကြိုက်ပြင်ဆင်နိုင်သည်။</translation>
 <translation id="1500297251995790841">အမည်မသိ စက်ပစ္စည်း [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">ဒီပိုင်ရှင် အကောင့်မှာ အကြိမ်ကြိမ် လက်မှတ်ထိုးရမည့် အစီအစဉ် ထဲက ပထမဦးဆုံး လက်မှတ်ထိုး ဝင်သည့် အကောင့် ဖြစ်ပါသည်။</translation>
 <translation id="150411034776756821"><ph name="SITE" /> ကို ဖယ်ရှားပါ</translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">ဒီစာမျက်နှာကို သင်၏ ကင်မရာကို ရယူသုံးမရအောင် ပိတ်ဆို့ထားသည်။</translation>
 <translation id="1507246803636407672">စွန့်ပစ်ရန်</translation>
 <translation id="1508491105858779599">စက်ပစ္စည်းကို ဖွင့်ရန်အတွက် လက်ဗွေအာရုံခံ ကိရိယာပေါ်တွင် သင်၏လက်ချောင်းကို တင်ပါ။</translation>
+<translation id="1508575541972276599">လက်ရှိဗားရှင်းသည် Debian 9 (Stretch) ဖြစ်သည်</translation>
 <translation id="1509281256533087115">USB မှတစ်ဆင့် မည်သည့် <ph name="DEVICE_NAME_AND_VENDOR" />ကိုမဆို သုံးပါ</translation>
 <translation id="150962533380566081">PUK မမှန်ကန်ပါ။</translation>
 <translation id="1510030919967934016">ဒီစာမျက်နှာကို သင်၏ တည်နေရာ ခြေရာခံ မရအောင် ပိတ်ဆို့ထားသည်။</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">ကျင့်သုံးရန်</translation>
 <translation id="1603914832182249871">(ရုပ်ဖျက်)</translation>
 <translation id="1604432177629086300">ပုံနှိပ်ထုတ်၍ မရပါ။ ပုံနှိပ်စက်ကို စစ်ဆေးပြီး ထပ်စမ်းကြည့်ပါ။</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />- စကားဝှက်စင့်ခ်လုပ်ခြင်းကို အသုံးပြု၍မရပါ</translation>
 <translation id="1607139524282324606">ထည့်သွင်းမှု ဖယ်ရှားရန်</translation>
 <translation id="1608626060424371292">ဒီအသုံးပြုသူကို ဖယ်ရှားရန်</translation>
 <translation id="1608668830839595724">ရွေးထားသောအရာများအတွက် နောက်ထပ် လုပ်ဆောင်ချက်များ</translation>
@@ -561,6 +563,8 @@
 <translation id="177336675152937177">ဟို့စ် လုပ်ခဲ့သည့် အက်ပ် ဒေတာ</translation>
 <translation id="1776712937009046120">အသုံးပြုသူ ပေါင်းထည့်ရန်</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">ဤစက်ပစ္စည်းကို <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> မှစီမံခန့်ခွဲထားခြင်းဖြစ်သည်။
+    သင့် <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> အကောင့်သို့ ရှေ့ဆက်၍ လက်မှတ်ထိုးဝင်ရန် "ရှေ့သို့" ကိုနှိပ်ပါ။</translation>
 <translation id="1779652936965200207">"<ph name="DEVICE_NAME" />" တွင် ဤ passkey ကို ရိုက်ထည့်ပါ။</translation>
 <translation id="1780152987505130652">အုပ်စုကို ပိတ်ခြင်း</translation>
 <translation id="1781291988450150470">လက်ရှိ 'ပင်နံပါတ်'</translation>
@@ -748,6 +752,7 @@
 <translation id="2048653237708779538">လုပ်ဆောင်ချက် မရနိုင်ပါ</translation>
 <translation id="2050339315714019657">ဒေါင်လိုက်</translation>
 <translation id="2053312383184521053">မလှုပ်မရှား အခြေအနေ ဒေတာ</translation>
+<translation id="2055585478631012616">ဖွင့်ထားသော တဘ်များအပါအဝင် ဤဝဘ်ဆိုက်များမှ သင် ထွက်သွားပါမည်</translation>
 <translation id="205560151218727633">Google assistant တံဆိပ်</translation>
 <translation id="2058456167109518507">စက်ပစ္စည်း တွေ့ရှိထားသည်</translation>
 <translation id="2059913712424898428">စံတော်ချိန်</translation>
@@ -763,6 +768,7 @@
 <translation id="2079545284768500474">ပြန်ဖျက်ရန်</translation>
 <translation id="2080070583977670716">ဆက်တင်များ ပိုမိုပြရန်</translation>
 <translation id="2087822576218954668">ပရင့်: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN ကွန်ရက်</translation>
 <translation id="2089566709556890888">Google Chrome ကို အသုံးပြု၍ ဝဘ်ဆိုက်များအား လုံခြုံစွာ ဖွင့်ကြည့်လိုက်ပါ</translation>
 <translation id="2089795179672254991">ကလစ်ဘုတ်သို့ မိတ္တူကူးထားသည့် စာသားနှင့် ပုံများကို ဝဘ်ဆိုက်က ကြည့်လိုသည့်အခါ မေးမြန်းပါ (အကြံပြုထားသည်)</translation>
 <translation id="2090165459409185032">သင့် အကောင့်အချက်အလက်များ ပြန်လည်ရယူရန်၊ google.com/accounts/recovery သို့ သွားပါ</translation>
@@ -986,6 +992,7 @@
 <translation id="2379232090534544565">ဝဘ်ဆိုက်တစ်ခုက အသံနှင့် ဗီဒီယိုထည့်သွင်းမှုကို ဝင်သုံးနေသည်</translation>
 <translation id="2379281330731083556">စနစ် မေး​ဖြေကို သုံးပြီး ပရင့်ထုတ်ရန်... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">မပို့မှီ မေးပါ (အကြံပြုထား)</translation>
+<translation id="2382818385048255866">သင့်နောက်ဆက်တွဲများကို စစ်ဆေးခြင်း</translation>
 <translation id="2384436799579181135">အမှားအယွင်း ရှိနေသည်။ သင့်ပုံနှိပ်စက်ကိုစစ်ဆေးပြီး ထပ်လုပ်ကြည့်ပါ။</translation>
 <translation id="2387458720915042159">ပရောက်စီ ချိတ်ဆက်မှု အမျိုးအစား</translation>
 <translation id="2391419135980381625">စံ​ေ</translation>
@@ -1037,6 +1044,7 @@
 <translation id="2462724976360937186">လက်မှတ်ထုတ်ပေးမှု အာဏာပိုင် သော့ ID</translation>
 <translation id="2462752602710430187"><ph name="PRINTER_NAME" /> ကို ထည့်ပြီးပြီ</translation>
 <translation id="2464089476039395325">HTTP ပရောက်စီ</translation>
+<translation id="2467267713099745100"><ph name="NETWORK_TYPE" /> ကွန်ရက်၊ ပိတ်ထားသည်</translation>
 <translation id="2468205691404969808">အဆိုပါ စာမျက်နှာများကို သင်ဝင်ကြည့်မထားလျှင်ပင် သင့်ဦးစားပေးများကို မှတ်မိရန် ကွတ်ကီးများ အသုံးပြုသည်</translation>
 <translation id="2468402215065996499">Tamagotchi</translation>
 <translation id="2469259292033957819">သင်သိမ်းဆည်းထားသည့် ပုံနှိပ်စက် တစ်ခုမျှ မရှိပါ။</translation>
@@ -1291,6 +1299,7 @@
 <translation id="2800760947029405028">ပုံအပ်လုဒ်လုပ်ရန်</translation>
 <translation id="2803375539583399270">ပင်နံပါတ် ထည့်ပါ</translation>
 <translation id="2804043232879091219">အရန်ဘရောင်ဇာ ဖွင့်၍မရပါ</translation>
+<translation id="2804667941345577550">ဖွင့်ထားသည့်တဘ်များအပါအဝင် ဤဝဘ်ဆိုက်မှ သင်ထွက်သွားပါမည်</translation>
 <translation id="2804680522274557040">ကင်မရာ ပိတ်ထားပါသည်</translation>
 <translation id="2805646850212350655">Microsoft လျှို့ဝှက်ကုဒ်သွင်းရေး ဖိုင် စနစ်</translation>
 <translation id="2805756323405976993">အက်ပ်များ</translation>
@@ -1298,6 +1307,7 @@
 <translation id="2806891468525657116">ဖြတ်လမ်းလင့်ခ် ရှိပြီးသားဖြစ်သည်</translation>
 <translation id="2807517655263062534">သင်ဒေါင်းလုဒ်လုပ်သော ဖိုင်များသည် ဤနေရာတွင် ပေါ်ပါသည်</translation>
 <translation id="2809586584051668049">နှင့် <ph name="NUMBER_ADDITIONAL_DISABLED" /> များစွာ</translation>
+<translation id="2810390687497823527">နောက်ဆက်တွဲတစ်ခုကို မမှတ်မိလျှင် သို့မဟုတ် သင့်ဘရောင်ဇာသည် ထင်ထားသည့်အတိုင်း အလုပ်လုပ်ခြင်းမရှိလျှင် ဤနေရာတွင် နောက်ဆက်တွဲများကို ပိတ်ခြင်း သို့မဟုတ် စိတ်ကြိုက်ပြင်ဆင်နိုင်သည်။</translation>
 <translation id="2812049959647166806">Thunderbolt ကို ပံ့ပိုးမထားပါ</translation>
 <translation id="2812944337881233323">ထွက်ပြီး ပြန်လည်၍ လက်မှတ်ထိုးဝင်ကြည့်ပါ</translation>
 <translation id="2812989263793994277">ပုံများကို လုံးဝ မပြရန်</translation>
@@ -1337,6 +1347,7 @@
 <translation id="2861941300086904918">ဒေသခံ ဖောက်သည်လုံခြုံရေး မန်နေဂျာ</translation>
 <translation id="2864601841139725659">သင်၏ပရိုဖိုင်ပုံ သတ်မှတ်ပါ</translation>
 <translation id="2865919525181940183">ဖန်သားပြင်ပေါ်တွင် လက်ရှိဖွင့်ထားသော ပရိုဂရမ်များ၏ ဖန်သားပြင်ဓာတ်ပုံ</translation>
+<translation id="286674810810214575">ပါဝါအရင်းအမြစ်ကို စစ်ဆေးနေသည်...</translation>
 <translation id="2867768963760577682">ပင်တွဲထားသည့် တဲပ်အဖြစ် ဖွင့်ရန်</translation>
 <translation id="2868746137289129307">ဤ ပရိုဂရမ်အဆက် ခေတ်နောက်ကျနေပြီး  လုပ်ငန်းမူဝါဒမှလုပ်ဆောင်မှုအားရပ်တန့်ထားပြီဖြစ်သည်။ဗားရှင်းအသစ်ရရှိနိုင်ပါက ၄င်းအား အလိုလျောက်လုပ်ဆောင်လာပါလိမ့်မည်။</translation>
 <translation id="2870560284913253234">ဆိုဒ်</translation>
@@ -1414,6 +1425,7 @@
 <translation id="2972581237482394796">&amp;ပြန်လုပ်ရန်</translation>
 <translation id="2973324205039581528">ဝဘ်ဆိုက် ဖျောက်ထားခြင်း</translation>
 <translation id="2977480621796371840">အဖွဲ့မှ ဖယ်ရှားပါ</translation>
+<translation id="2979520980928493164">ကျန်းမာရေးနှင့် ပိုမိုညီညွှတ်ပြီး ပိုမိုပျော်စရာကောင်းသော Chrome</translation>
 <translation id="2979639724566107830">ဝင်းဒိုးအသစ်တွင် ဖွင့်ပါ</translation>
 <translation id="2981113813906970160">ကြီးမားသည့် မောက်စ်ညွှန်ပြကိရိယာ ပြရန်</translation>
 <translation id="2982970937345031">အမည်မဖော်ဘဲ အကြောင်းကြားရန်</translation>
@@ -1520,6 +1532,7 @@
 <translation id="3143515551205905069">စင့်ခ်လုပ်ခြင်း ပယ်ဖျက်ရန်</translation>
 <translation id="3143754809889689516">အစမှ ကစားရန်</translation>
 <translation id="3144647712221361880">လင့်ကို ...အဖြစ် ဖွင့်ပါ</translation>
+<translation id="3145187901750964977">အသွင်တုစက်ကို ထည့်သွင်း၍မရပါ။ ထပ်စမ်းကြည့်ပါ သို့မဟုတ် သင့်အဖွဲ့အစည်း၏ စက်ပစ္စည်း စီမံခန့်ခွဲသူထံ ဆက်သွယ်ပါ။ အမှားကုဒ်- <ph name="ERROR_CODE" />။</translation>
 <translation id="3149477159749171726">ဗားရှင်း-
     <ph name="LINUX_VERSION" />
 
@@ -1558,6 +1571,7 @@
 <translation id="3192947282887913208">အသံ ဖိုင်များ</translation>
 <translation id="3194737229810486521"><ph name="URL" /> သည် ဒေတာများကို သင်၏စက်တွင် အမြဲတမ်းသိုလှောင်လိုသည်</translation>
 <translation id="3199127022143353223">ဆာဗာများ</translation>
+<translation id="3201306578844503970">ကွန်ရက်အမှားအယွင်းကြောင့် အသွင်တုစက်ကို ထည့်သွင်း၍မရပါ။ ထပ်စမ်းကြည့်ပါ သို့မဟုတ် သင့်အဖွဲ့အစည်း၏ စက်ပစ္စည်း စီမံခန့်ခွဲသူထံ ဆက်သွယ်ပါ။ အမှားကုဒ်- <ph name="ERROR_CODE" />။</translation>
 <translation id="3201422919974259695">အသုံးပြုနိုင်သော USB စက်ပစ္စည်းများကို ဤနေရာတွင် တွေ့ရပါမည်။</translation>
 <translation id="3202131003361292969">လမ်းကြောင်း</translation>
 <translation id="3202173864863109533">ဤ တဘ်၏ အသံကို ပိတ်ထား၏။</translation>
@@ -1894,7 +1908,6 @@
 <translation id="3678156199662914018">တိုးချဲ့မှု: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">အကြံပြုပေးသည့်အတွက် ကျေးဇူးတင်ပါသည်။ သင်ယခုအော့ဖ်လိုင်းဖြစ်နေလျှင် သင့်အစီရင်ခံစာကို နောက်မှ ပို့ပါမည်။</translation>
 <translation id="3682824389861648626">လှုပ်ရှားမှု ခံနိုင်စွမ်း</translation>
-<translation id="3683023058278427253">သင့်ဒိုမိန်းအတွက် လိုင်စင်အမျိုးအစားများစွာကို တွေ့ရှိရပါသည်။ ဆက်လက်လုပ်ဆောင်ရန် တစ်ခုရွေးချယ်ပါ။</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> မျက်နှာပြင် မျှဝေရန် တောင်းဆိုချက်</translation>
 <translation id="368789413795732264">ဒီဖိုင်ကို ရေးရန် ကြိုးစားစဉ် အမှား တစ်ခု ကြုံခဲ့ရ: <ph name="ERROR_TEXT" />။</translation>
 <translation id="3688507211863392146">သင်က အပလီကေးရှင်း ထဲမှာ ဖွင့်ခဲ့သည်ကို ဖိုင်များ နှင့် ဖိုလ်ဒါများသို့ ရေးရန်</translation>
@@ -2068,6 +2081,7 @@
 <translation id="389589731200570180">ဧည့်သည်များဖြင့် မျှဝေမည်</translation>
 <translation id="389901847090970821">ကီးဘုတ်ကို ရွေးပါ</translation>
 <translation id="3899879303189199559">အော့ဖ်လိုင်း ဖြစ်နေသည်မှာ တစ်နှစ် ကျော်သွားပြီ</translation>
+<translation id="3900789207771372462">အချို့နောက်ဆက်တွဲများသည် ကိုယ်ရေးကိုယ်တာ အချက်အလက်များ အပါအဝင် - သင့်ကြည့်ရှုခြင်းများကို မြင်နိုင်သည်။</translation>
 <translation id="3900966090527141178">စကားဝှက်များကို တင်ပို့ရန်</translation>
 <translation id="3901991538546252627"><ph name="NAME" />သို့ ချိတ်ဆက်​ေနေ</translation>
 <translation id="3905761538810670789">အက်ပ်ပြင်ဆင်ရန်</translation>
@@ -2157,7 +2171,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" သည် ဤဘရောင်ဇာ၏ အမှားကိုရှာပြင်ပေးနေသည်</translation>
 <translation id="4014432863917027322">"<ph name="EXTENSION_NAME" />" အား ပြင်မည်လား?</translation>
 <translation id="4015163439792426608">နောက်ဆက်တွဲများ ရှိသလား။ လွယ်ကူသော နေရာတစ်ခုတည်းတွင် <ph name="BEGIN_LINK" />သင်၏နောက်ဆက်တွဲများကို စီမံပါ<ph name="END_LINK" />။</translation>
-<translation id="4020106588733303597">သည်းခံပါ။ စနစ်သည် ရရှိနိုင်သော လိုင်စင်များကို မဖွင့်နိုင်ပါ။</translation>
 <translation id="4020327272915390518">ရွေးချယ်စရာ မီနူး</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;အဘိဓာန်သို့ ထည့်ရန်</translation>
@@ -2195,6 +2208,7 @@
 <translation id="407520071244661467">အတိုင်းအတာ</translation>
 <translation id="4075639477629295004"><ph name="FILE_NAME" /> ကို ကာစ်လုပ်၍မရပါ။</translation>
 <translation id="4077917118009885966">ဤဝဘ်ဆိုက်တွင် ကြော်ငြာများကို ပိတ်ထားပါသည်</translation>
+<translation id="4077919383365622693"><ph name="SITE" /> က သိုလှောင်ထားသည့် ဒေတာများနှင့် ကွတ်ကီးများအားလုံးကို ရှင်းလင်းလိုက်ပါမည်။</translation>
 <translation id="4079140982534148664">အဆင့်မြင့် စာလုံးပေါင်းစစ်ဆေးခြင်းကို အသုံးပြုပါ</translation>
 <translation id="4081242589061676262">ဖိုင်ကို ကာစ်လုပ်၍ မရပါ။</translation>
 <translation id="4084682180776658562">စာညှပ်</translation>
@@ -2269,6 +2283,7 @@
 <translation id="4181841719683918333">ဘာသာစကားများ</translation>
 <translation id="4184885522552335684">မျက်နှာပြင် ပြသမှုတစ်ခုကို ရွှေ့ရန် ဖိဆွဲပါ</translation>
 <translation id="4194570336751258953">ကလစ်ရန် နှိပ်ခြင်း ဖွင့်</translation>
+<translation id="4194595472342532425">စီစဉ်သတ်မှတ်ခြင်း ပြဿနာတစ်ခုကြောင့် Plugin VM ကို စနစ်ထည့်သွင်း၍မရပါ။ သင့်အဖွဲ့အစည်း၏ စက်ပစ္စည်း စီမံခန့်ခွဲသူထံ ဆက်သွယ်ပါ။ အမှားကုဒ်- <ph name="ERROR_CODE" />။</translation>
 <translation id="4195643157523330669">တဘ်အသစ်တွင် ဖွင့်ရန်</translation>
 <translation id="4195814663415092787">သင်ချန်ထားသည့်နေရာမှ ဆက်မည်</translation>
 <translation id="4198146608511578238">သင်၏ Google Assistant ကို စကားပြောရန် Launcher သင်္ကေတကို နှိပ်ထားပါ။</translation>
@@ -2492,6 +2507,7 @@
 <translation id="4549791035683739768">သင့်လုံခြုံရေးကီးတွင် လက်ဗွေရာများ သိမ်းမထားပါ</translation>
 <translation id="4551763574344810652">တစ်ဆင့်နောက်ပြန်ရန် <ph name="MODIFIER_KEY_DESCRIPTION" /> ကို နှိပ်ပါ</translation>
 <translation id="4552089082226364758">ဖလက်ရှ်</translation>
+<translation id="4552759165874948005"><ph name="NETWORK_TYPE" /> ကွန်ရက်၊ လိုင်းဆွဲအား <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">ပြင်ပတိုးချဲ့လိုင်းသည် လက်ရှိတစ်ခုနှင့် နှိုင်းယှဉ်ပါက အတူတူ သို့မဟုတ် ပိုမိုနိမ့်သော ဗားရှင်းတွင် ဖြစ်၏။</translation>
 <translation id="4555769855065597957">အရိပ်</translation>
 <translation id="4555863373929230635">စကားဝှက်များကို သင်၏ Google အကောင့်တွင် သိမ်းရန် လက်မှတ်ထိုးဝင်ပြီး စင့်ခ်လုပ်ခြင်းကိုဖွင့်ပါ။</translation>
@@ -2569,6 +2585,7 @@
 <translation id="4665446389743427678"><ph name="SITE" /> က သိမ်းဆည်းထားသည့် ဒေတာများအားလုံးကို ဖျက်လိုက်ပါမည်။</translation>
 <translation id="4668721319092543482"><ph name="PLUGIN_NAME" /> ကို အသုံးပြုရန် ကလစ်နှိပ်ပါ</translation>
 <translation id="4672657274720418656">စာမျက်နှာ အနှစ်ချုပ်ရန်</translation>
+<translation id="46733273239502219">ထည့်သွင်းထားသည့် အက်ပ်များအတွင်းရှိ အော့ဖ်လိုင်းဒေတာများအားလုံးကိုလည်း ရှင်းလင်းလိုက်ပါမည်</translation>
 <translation id="4673442866648850031">စတိုင်လက်စ်ခဲတံကို ဖယ်ရှားလိုက်သည့်အခါ စတိုင်လက်စ်ခဲတံတူးလ်စ်ကို ဖွင့်ရန်</translation>
 <translation id="4677585247300749148"><ph name="URL" /> သည် အများသုံးစွဲနိုင်မှု ဖြစ်ရပ်များကို တုံ့ပြန်လိုပါသည်</translation>
 <translation id="4677772697204437347">GPU မှတ်ဉာဏ်</translation>
@@ -2660,7 +2677,6 @@
 <translation id="4823484602432206655">သုံးစွဲသူနှင့် စက်ကိရိယာ ဆက်တင်များအား ဖတ်ပြီး ပြောင်းရန်</translation>
 <translation id="4824958205181053313">စင့်ခ်လုပ်ခြင်းကို ပယ်ဖျက်လိုပါသလား။</translation>
 <translation id="4827675678516992122">ချိတ်ဆက်၍ မရပါ</translation>
-<translation id="4828937774870308359">သြစတြေးလျ</translation>
 <translation id="4829768588131278040">ပင်နံပါတ်ကို သတ်မှတ်ရန်</translation>
 <translation id="4830502475412647084">OS အပ်ဒိတ်ကို ထည့်သွင်းနေသည်</translation>
 <translation id="4830573902900904548">သင့် <ph name="DEVICE_TYPE" /> သည် <ph name="NETWORK_NAME" /> ကိုအသုံးပြုပြီ: အင်တာနက်သို့ ချိတ်ဆက်၍မရနိုင်ပါ။ ကျေးဇူးပြု၍ အခြားကွန်ရက်ကို ရွေးချယ်ပါ။ <ph name="LEARN_MORE_LINK_START" />ပိုမိုလေ့လာရန်<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2701,6 +2717,7 @@
 <translation id="4876273079589074638">ဤ ရပ်တန့်သွားခြင်းကို အင်ဂျင်နီယာများက စစ်ဆေးဖော်ထုတ်ပြီး ပြင်ဆင်နိုင်ရန် ကူညီပါ။ တတ်နိုင်ပါက အဆင့်များကို အတိအကျစာရင်းလုပ်ပေးပါ။ အသေးစိတ်ရရှိနိုင်လေ ပိုကောင်းလေဖြစ်ပါသည်။</translation>
 <translation id="4876895919560854374">မျက်နှာပြင်အား သော့ခတ်ခြင်းနှင့် ပိတ်ခြင်း</translation>
 <translation id="4877276003880815204">စာမျက်နှာအတွင်းရှိ အရာများကို စစ်ဆေးရန်</translation>
+<translation id="4878653975845355462">စိတ်ကြိုက်နောက်ခံများကို သင့်စီမံခန့်ခွဲသူက ပိတ်ထားသည်</translation>
 <translation id="4879491255372875719">အလိုအလျောက် (မူရင်း)</translation>
 <translation id="4880328057631981605">ချိတ်ဆက်မှတ်၏ အမည်</translation>
 <translation id="4880827082731008257">ရှာဖွေမှု မှတ်တမ်း</translation>
@@ -2756,10 +2773,10 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" က အမှတ်စဉ်ပို့တ်ကို ချိတ်ဆက်လိုသည်</translation>
 <translation id="4944310289250773232">ဤအထောက်အထားစိစစ်ခြင်း ဝန်ဆောင်မှုကို <ph name="SAML_DOMAIN" /> က လက်ခံဝန်ဆောင်ပေးထားခြင်းဖြစ်သည်</translation>
 <translation id="495170559598752135">လုပ်ဆောင်ချက်များ</translation>
+<translation id="4952981627953231344">Plugin VM ကို ဤစက်ပေါ်တွင် ခွင့်ပြုမထားပါ။ သင့်အဖွဲ့အစည်း၏ စက်ပစ္စည်း စီမံခန့်ခွဲသူထံ ဆက်သွယ်ပါ။</translation>
 <translation id="4953689047182316270">အများသုံးစွဲနိုင်မှု ဖြစ်ရပ်များကို တုန့်ပြန်ပါ</translation>
 <translation id="4953808748584563296">မူရင်းလိမ္မော်ရောင်ချန်နယ်ပုံ</translation>
 <translation id="4955710816792587366">သင်၏ ပင်နံပါတ်ကို ရွေးချယ်ခြင်း</translation>
-<translation id="4955814292505481804">နှစ်စဉ်</translation>
 <translation id="4959262764292427323">မည်သည့်စက်ပစ္စည်းတွင်မဆို အသုံးပြုနိုင်ရန် စကားဝှက်များကို သင်၏ Google အကောင့်ထဲတွင် သိမ်းဆည်းထားပါသည်</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">ဤအက်ပ်ကို သင်၏စီမံခန့်ခွဲသူက ထည့်သွင်းထားပါသည်။</translation>
@@ -3242,7 +3259,6 @@
 <translation id="5659593005791499971">အီးမေးလ်</translation>
 <translation id="5659833766619490117">ဤစာမျက်နှာကို ဘာသာပြန်၍ မရပါ</translation>
 <translation id="5660204307954428567"><ph name="DEVICE_NAME" /> နှင့် တွဲချိတ်ပါ</translation>
-<translation id="5662477687021125631">အစဉ်အမြဲ</translation>
 <translation id="5667546120811588575">Google Play ကို စနစ်ထည့်သွင်းနေသည်...</translation>
 <translation id="5669267381087807207">အသက်သွင်းနေ</translation>
 <translation id="5669691691057771421">ပင်နံပါတ်အသစ်ကို ထည့်ပါ</translation>
@@ -3258,6 +3274,7 @@
 <translation id="5687326903064479980">စံတော်ချိန်</translation>
 <translation id="5689516760719285838">တည်နေရာ</translation>
 <translation id="56907980372820799">လင့် ဒေတာ</translation>
+<translation id="5691180005790455277"><ph name="SITE_GROUP_NAME" /> နှင့် ၎င်းအောက်ရှိ ဝဘ်ဆိုက်များက သိမ်းထားသည့် ဒေဝာာနှင့် ကွတ်ကီးများအားလုံးကို ရှင်းလင်းလိုက်ပါမည်။</translation>
 <translation id="5691511426247308406">မိသားစု</translation>
 <translation id="5692183275898619210">ပုံနှိပ်ထုတ်ယူပြီးပြီ</translation>
 <translation id="5696143504434933566">"<ph name="EXTENSION_NAME" />" သည် အလွဲသုံးစားလုပ်ကြောင်း တိုင်ကြားရန်</translation>
@@ -3344,7 +3361,6 @@
 <translation id="5815645614496570556">X.၄၀၀ လိပ်စာ</translation>
 <translation id="5816434091619127343">ပုံနှိပ် အပြောင်းအလဲများပြုလုပ်ရန် တောင်းဆိုထားလျှင် ၎င်းကို အသုံးပြု၍ရမည် မဟုတ်ပါ။</translation>
 <translation id="5817918615728894473">တွဲချိတ်ပါ</translation>
-<translation id="5819762621475381970">- သင့်အခန်း၏ အပြင်အဆင်</translation>
 <translation id="5821565227679781414">ဖြတ်လမ်း ဖန်တီးရန်</translation>
 <translation id="5825412242012995131">ဖွင့်ရန် (အကြံပြုထားသည်)</translation>
 <translation id="5826395379250998812">သင်၏ <ph name="DEVICE_TYPE" /> ကို သင့်ဖုန်းနှင့် ချိတ်ဆက်ပါ။ <ph name="LINK_BEGIN" />ပိုမိုလေ့လာရန်<ph name="LINK_END" /></translation>
@@ -3478,6 +3494,7 @@
 <translation id="6007240208646052708">သင်၏ဘာသာစကားကို အသုံးပြုပြီး အသံဖြင့် ရှာဖွေ၍မရပါ။</translation>
 <translation id="6009781704028455063">ပူးတွဲပါ အာရုံခံဆင်ဆာ</translation>
 <translation id="6010869025736512584">ဗီဒီယို ထည့်သွင်းမှုကို ရယူနေ</translation>
+<translation id="6011074160056912900">အီသာနက်ကွန်ရက်</translation>
 <translation id="6011193465932186973">လက်ဗွေ</translation>
 <translation id="6011449291337289699">ဆိုက်ဒေတာများကို ရှင်းလင်းပါ</translation>
 <translation id="6015266928248016057">PUK မမှန်ကန်ပါ။ ကျန်ရှိသော စမ်းကြည့်ခွင့်အကြိမ်ရေ- <ph name="RETRIES" />။</translation>
@@ -3514,6 +3531,7 @@
 <translation id="6053401458108962351">&amp;ဘရောင်ဇာ ဒေတ ရှင်းရန်...</translation>
 <translation id="6055171183283175969">သင်ထည့်သွင်းလိုက်သည့် စကားဝှက် မမှန်ကန်ပါ။</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 RSA လျှို့ဝှက်ကုဒ် သွင်းမှုဖြင့်</translation>
+<translation id="6055907707645252013"><ph name="NETWORK_TYPE" /> ကွန်ရက်၊ ချိတ်ဆက်မထားပါ</translation>
 <translation id="6056710589053485679">သာမှန် ပြန်ဖွင့်</translation>
 <translation id="6057381398996433816">လှုပ်ရှားမှုနှင့် အလင်းရောင် အာရုံခံကိရိယာများ အသုံးပြုခွင့်ကို ဤဝဘ်ဆိုက်အတွက် ပိတ်ထားသည်။</translation>
 <translation id="6058567592298841668">ပလပ်အင် ပကတိအသွက်စက်− <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3577,6 +3595,7 @@
 <translation id="6136114942382973861">ဒေါင်းလုဒ်ဘား ပိတ်ရန်</translation>
 <translation id="6137767437444130246">အသုံးပြုသူ အသိအမှတ်ပြုလက်မှတ်</translation>
 <translation id="6138680304137685902">SHA-384 ဖြင့် X9.62 ECDSA လက်မှတ်</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />၊ ကွန်ရက်မရှိပါ</translation>
 <translation id="6141988275892716286">ဒေါင်းလုဒ်လုပ်ရန် အတည်ပြုခြင်း</translation>
 <translation id="6143186082490678276">အကူအညီ ရယူရန်</translation>
 <translation id="6144938890088808325">Chromebooks တိုးတက်ကောင်းမွန်လာစေရန် ကူညီပါ</translation>
@@ -3882,6 +3901,7 @@
 <translation id="6602956230557165253">သွားလာရန် ဘယ်ညာ မြားများကို အသုံးပြုပါ။</translation>
 <translation id="6605847144724004692">မည်သည့် အသုံးပြုသူကမျှ အဆင့်သတ်မှတ်မထားရသေးပါ။</translation>
 <translation id="6607831829715835317">နောက်ထပ် ကိရိ&amp;ယာများ</translation>
+<translation id="6611972847767394631">သင်၏ တဘ်များကို ဤနေရာတွင် ရှာယူပါ</translation>
 <translation id="6612358246767739896">ကာကွယ်ထားသည့် အကြောင်းအရာ</translation>
 <translation id="6615455863669487791">ပြရန်</translation>
 <translation id="6618097958368085618">မည်သို့ပင်ဖြစ်စေ သိမ်းရန်</translation>
@@ -3950,6 +3970,7 @@
 <translation id="6709133671862442373">သတင်းများ</translation>
 <translation id="6709357832553498500"><ph name="EXTENSIONNAME" /> သုံး၍ ချိတ်ဆက်ပါ</translation>
 <translation id="6710213216561001401">အရင်</translation>
+<translation id="6715803357256707211">သင်၏ Linux အပလီကေးရှင်းကို ထည့်သွင်းနေစဉ် အမှားအယွင်း ဖြစ်ပေါ်ခဲ့သည်။ အသေးစိတ်အချက်အလက်များအတွက် အကြောင်းကြားချက်များပေါ်တွင် နှိပ်ပါ။</translation>
 <translation id="6721678857435001674">သင့် 'လုံခြုံရေးကီး' ၏ ထုတ်လုပ်သူနှင့် မော်ဒယ်လ်ကို ကြည့်ပါ</translation>
 <translation id="6721972322305477112">&amp;ဖိုင်</translation>
 <translation id="672213144943476270">ဧည့်သည်အဖြစ် အသုံးမပြုမီ သင့်ပရိုဖိုင်ကို လော့ခ်ဖြုတ်ပါ။</translation>
@@ -3974,7 +3995,6 @@
 <translation id="674632704103926902">ထိပြီး ဆွဲရန် ခွင့်ပြုခြင်း။</translation>
 <translation id="6748217015615267851">ပြင်ထားသည့်စာမျက်နှာ− <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">သင်ရှေ့ဆက်နိုင်ပါသည်၊ သို့သော် သင်ထပ်တူပြုထားသည့်ဒေတာများနှင့် ကြိုတင်ချိန်ညှိချက်များကိုသာလျှင် ပြန်လည်သိုလှောင်ပါမည်။ စက်တွင်းဒေတာများအားလုံး ပျောက်ဆုံးသွားပါမည်။</translation>
-<translation id="6748775883310276718">အက်ပ်တစ်ခုတည်းသုံးစနစ်</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (ရုပ်ဖျက်)</translation>
 <translation id="6757101664402245801">URL ကို မိတ္တူကူးပြီးပါပြီ</translation>
 <translation id="6758056191028427665">ကျွန်ုပ်တို့၏ ဝန်ဆောင်မှုများအတွက် စိတ်ကျေနပ်မှုမည်မျှရှိကြောင်း ပြောပြပေးပါ။</translation>
@@ -3984,6 +4004,7 @@
 <translation id="6769712124046837540">ပရင်တာ ထည့်နေ…</translation>
 <translation id="6770664076092644100">NFC မှတစ်ဆင့် အတည်ပြုရန်</translation>
 <translation id="6771503742377376720">အသိမှတ်ပြုလက်မှတ် အာဏာဖြစ်သည်</translation>
+<translation id="6772339735733515807">သင့်နောက်ဆက်တွဲများကို စီမံခြင်း</translation>
 <translation id="6775163072363532304">အသုံးပြုနိုင်သော ကိရိယာများကို ဤနေရာတွင် တွေ့ရပါမည်။</translation>
 <translation id="6777817260680419853">တဆင့်ပြန်ညွှန်ခြင်းကို ပိတ်ထားသည်</translation>
 <translation id="6778737459546443941">သင့်မိဘသည် ၎င်းကို အတည်မပြုသေးပါ</translation>
@@ -4122,6 +4143,7 @@
 <translation id="6972180789171089114">အသံ/ဗီဒီယို</translation>
 <translation id="6972553992270299730">ဤဖိုင်တွဲတွင် စနစ်ဖိုင်များ ပါဝင်သည့်အတွက် <ph name="ORIGIN" /> က ၎င်းထဲရှိ ဖိုင်များကို ဖွင့်၍မရပါ</translation>
 <translation id="6972754398087986839">စကြရအောင်</translation>
+<translation id="6973611239564315524">Debian 10 (Buster) သို့ အဆင့်မြှင့်တင်နိုင်ပါပြီ</translation>
 <translation id="6974609594866392343">အော့ဖ်လိုင်း သရုပ်ပြမုဒ်</translation>
 <translation id="6977381486153291903">ဖာမ်းဝဲ ပြန်လည်စိစစ်ခြင်း</translation>
 <translation id="6978121630131642226">ရှာဖွေရေး အင်ဂျင်များ</translation>
@@ -4581,6 +4603,7 @@
 <translation id="7644543211198159466">အရောင်နှင့် အပြင်အဆင်</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (ပိုင်ရှင်)</translation>
 <translation id="7645681574855902035">Linux အရန်သိမ်းခြင်းကို ပယ်ဖျက်နေပါသည်</translation>
+<translation id="7646772052135772216">စကားဝှက်စင့်ခ်လုပ်ခြင်းကို အသုံးပြု၍မရပါ</translation>
 <translation id="7647403192093989392">မကြာသေးမီက လုပ်ဆောင်ချက်များ မရှိပါ</translation>
 <translation id="7648992873808071793">ဤစက်ကိရိယာတွင် ဖိုင်များ သိမ်းပါ</translation>
 <translation id="7649070708921625228">အကူအညီ</translation>
@@ -4769,6 +4792,7 @@
 <translation id="7877451762676714207">မသိရ ဆာဗာ အမှား။ ကျေးဇူးပြုပြီး ထပ်စမ်းပါ၊ သို့မဟုတ် ဆာဗာ စီမံအု်ပချုပ်သူကို ဆက်သွယ်ပါ။</translation>
 <translation id="7877680364634660272">လှည့်လည်ကြည့်ရှုရန်</translation>
 <translation id="7878562273885520351">သင့်စကားဝှက် အခိုးခံထားရနိုင်သည်</translation>
+<translation id="7879631849810108578">သတ်မှတ်ထားသည့် ဖြတ်လမ်းလင့်ခ်- <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">သင်ပြန်စတင်သည့်အခါ စက်အတွင်းဒေတာများကို ဖျက်လိုက်ပါမည်</translation>
 <translation id="7881483672146086348">အကောင့်ကို ကြည့်ရန်</translation>
 <translation id="7882358943899516840">ထောက်ပံ့သူအမျိုးစား</translation>
@@ -4855,6 +4879,7 @@
 <translation id="7987814697832569482">VPN မှတစ်ဆင့်သာ အမြဲချိတ်ဆက်ရန်</translation>
 <translation id="7988355189918024273">အများသုံးစွဲနိုင်မှုဆိုင်ရာ ဝန်ဆောင်မှုများကို ဖွင့်ပါ</translation>
 <translation id="7991296728590311172">ခလုတ်သုံးခြင်း ဆက်တင်များ</translation>
+<translation id="7994350303002908848">Plugin VM ကို ထည့်သွင်း၍မရပါ။ ထပ်စမ်းကြည့်ပါ သို့မဟုတ် သင့်အဖွဲ့အစည်း၏ စက်ပစ္စည်း စီမံခန့်ခွဲသူထံ ဆက်သွယ်ပါ။ အမှားကုဒ်- <ph name="ERROR_CODE" />။</translation>
 <translation id="7994702968232966508">EAP နည်းလမ်း</translation>
 <translation id="7997826902155442747">စီမံဆောင်ရွက်မှု ဦးစားပေးမှု</translation>
 <translation id="7999229196265990314">အောက်ပါ ဖိုင်များ ဖန်တီးမည်:
@@ -4946,7 +4971,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{ပြင်ပအဖွဲ့အစည်း၏ ကွတ်ကီးများ မရှိပါ}=1{ပြင်ပအဖွဲ့အစည်း၏ ကွတ်ကီး ၁ ခုကို ပိတ်ထားသည်}other{ပြင်ပအဖွဲ့အစည်း၏ ကွတ်ကီး # ခုကို ပိတ်ထားသည်}}</translation>
 <translation id="810875025413331850">အနီးအနားတွင် ကိရိယာများ မရှိပါ။</translation>
 <translation id="8111155949205007504">ဤစကားဝှက်ကို သင်၏ iPhone နှင့် မျှဝေပါ</translation>
-<translation id="8113043281354018522">လိုင်စင်အမျိုးအစား ရွေးပါ</translation>
 <translation id="8114875720387900039">အလျားလိုက် ခွဲရန်</translation>
 <translation id="8116972784401310538">&amp;စာညှပ် မန်နေဂျာ</translation>
 <translation id="8117620576188476503">အခြေအနေပြ အကန့်မှတစ်ဆင့် ချိတ်ဆက်မှုများ၊ အပ်ဒိတ်များနှင့် ဆက်တင်များကို စီမံခန့်ခွဲပါ။ ကီးဘုတ်ကို အသုံးပြုရန် Alt + Shift + S ကို နှိပ်ပါ။</translation>
@@ -5103,6 +5127,7 @@
 <translation id="8327039559959785305">Linux ဖိုင်များကို တင်ရာတွင် အမှားအယွင်းရှိနေသည်။ ထပ်စမ်းကြည့်ပါ။</translation>
 <translation id="8335587457941836791">စင် ပေါ်မှ ထုတ်ပစ်ရန်</translation>
 <translation id="8336407002559723354"><ph name="MONTH_AND_YEAR" /> တွင် အပ်ဒိတ်များ အဆုံးသတ်ပါမည်</translation>
+<translation id="8336721153892716270">စနစ်စာသားကို <ph name="LANGUAGE" /> ဖြင့်ပြရန် စက်ပစ္စည်းကို ပြန်စပါ</translation>
 <translation id="8336739000755212683">စက်ပစ္စည်း၏ အကောင့်ပုံ ပြောင်းရန်</translation>
 <translation id="8337047789441383384">သင်သည် ဤလုံခြုံရေးကီးကို မှတ်ပုံတင်ပြီး ဖြစ်သည်။ ထပ်မံ၍ မှတ်ပုံတင်ရန် မလိုပါ။</translation>
 <translation id="8338952601723052325">ရေးသားသူ ဝက်ဆိုက်</translation>
@@ -5146,6 +5171,7 @@
 <translation id="8400146488506985033">လူများကို စီမံခန့်ခွဲပါ</translation>
 <translation id="8401432541486058167">သင့်အဆင့်မြင့်ကတ်နှင့် ဆက်စပ်နေသော ပင်နံပါတ်ကို ပေးပါ။</translation>
 <translation id="8405046151008197676">နောက်ဆုံးထွက် အပ်ဒိတ်မှ အထူးအသားပေးများကို ရယူပါ</translation>
+<translation id="8408068190360279472"><ph name="NETWORK_TYPE" /> ကွန်ရက်၊ ချိတ်ဆက်နေသည်</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">ဦးစွာ မေးပါ (အကြံပြုထား)</translation>
 <translation id="8418445294933751433">တဲပ် အနေဖြင့် &amp;ပြ</translation>
@@ -5435,6 +5461,7 @@
 <translation id="8807632654848257479">တည်ငြိမ်နေ</translation>
 <translation id="8808478386290700967">ဝဘ်စတိုး</translation>
 <translation id="8808686172382650546">ကြောင်</translation>
+<translation id="8808744862003883508">ဤစာမျက်နှာတွင် Chrome အတွင်း ထည့်သွင်းထားသည့် နောက်ဆက်တွဲများအားလုံးကို မြင်နိုင်သည်။</translation>
 <translation id="8809147117840417135">စိမ်းပြာဖျော့</translation>
 <translation id="8813698869395535039"><ph name="USERNAME" /> သို့ လက်မှတ်ထိုးဝင်၍ မရပါ</translation>
 <translation id="8813811964357448561">စက္ကူ စာရွက်</translation>
@@ -5662,7 +5689,6 @@
 <translation id="9121814364785106365">ပင်ထိုးထား တဲဘ် အဖြစ် ဖွင့်ရန်</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> ကို ခေတ္တရပ်ထားသည်</translation>
 <translation id="9124003689441359348">သိမ်းဆည်းထားသော စကားဝှက်များကို ဤနေရာတွင် တွေ့ရပါမည်</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> rem.)</translation>
 <translation id="9128317794749765148">စနစ်ထည့်သွင်းမှုကို အပြီးသတ်၍မရပါ</translation>
 <translation id="9128870381267983090">ကွန်ယက်သို့ ချိတ်ဆက်ပါ</translation>
 <translation id="9130015405878219958">ဝင်လိုက်သည့် မုဒ် မမှန်ပါ။</translation>
@@ -5701,6 +5727,7 @@
 <translation id="9188732951356337132">အသုံးပြုမှုနှင့် အမှားရှာဖွေမှုဒေတာ ပို့ပါ။ ဤစက်ပစ္စည်းက အမှားရှာဖွေမှု၊ ကိရိယာနှင့် အက်ပ်အသုံးပြုမှု ဒေတာတို့ကို လောလောဆယ်တွင် Google သို့ အလိုအလျောက် ပို့ပေးပါသည်။ ၎င်းကို အသုံးပြု၍ သင့်ကလေး မည်သူမည်ဝါဖြစ်ကြောင်း ထုတ်ဖော်သွားမည် မဟုတ်ဘဲ စနစ်နှင့် အက်ပ်တည်ငြိမ်မှု၊ အခြား တိုးတက်ပြင်ဆင်မှုများအတွက် အသုံးပြုသွားပါမည်။ စုစည်းထားသော ဒေတာအချို့က Google အက်ပ်နှင့် Android ဆော့ဖ်ဝဲအင်ဂျင်နီယာများကဲ့သို့ ပါတနာများကို ကူညီပေးပါမည်။ သင့်ကလေးအတွက် ထပ်တိုး 'ဝဘ်နှင့် အက်ပ်လုပ်ဆောင်ချက်' ကို ဖွင့်ထားသည့်အခါ ဤဒေတာကို သူ၏ Google အကောင့်သို့ သိမ်းသွားပါမည်။ <ph name="BEGIN_LINK2" />ပိုမိုလေ့လာရန်<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + ကြိုတင်-မျှဝေထား သော့</translation>
 <translation id="920045321358709304"><ph name="SEARCH_ENGINE" /> တွင် ရှာဖွေရန်</translation>
+<translation id="9201023452444595544">အော့ဖ်လိုင်းဒေတာများအားလုံးကို ရှင်းလင်းလိုက်ပါမည်</translation>
 <translation id="9201220332032049474">မျက်နှာပြင် လော့ခ်ချရန် ရွေးချယ်စရာများ</translation>
 <translation id="9203398526606335860">&amp;ပရိုဖိုင်ကြည့်မှု ဖွင့်ထား</translation>
 <translation id="9203904171912129171">စက်ပစ္စည်းတစ်ခု ရွေးချယ်ပါ</translation>
@@ -5713,6 +5740,7 @@
 <translation id="9220525904950070496">အကောင့်ကို ဖယ်ရှားရန်</translation>
 <translation id="9220820413868316583">မ လိုက်ပြီး ထပ်လုပ်ကြည့်ပါ။</translation>
 <translation id="923467487918828349">အားလုံးပြ</translation>
+<translation id="929117907539171075">ထည့်သွင်းထားသည့် အက်ပ်အတွင်းရှိ အော့ဖ်လိုင်းဒေဝာများကိုလည်း ရှင်းလင်းလိုက်ပါမည်</translation>
 <translation id="930268624053534560">အသေးစိတ် အချိန်တံဆိပ်</translation>
 <translation id="932327136139879170">ပင်မ</translation>
 <translation id="932508678520956232">ပရင်ထုတ်မှုကို စတင်လုပ် မပေးနိုင်ခဲ့ပါ။</translation>
@@ -5738,6 +5766,7 @@
 <translation id="960719561871045870">မိုဘိုင်းဝန်ဆောင်မှုဌာန ကုဒ်</translation>
 <translation id="960987915827980018">၁ နာရီ ခန့် ကျန်နေ</translation>
 <translation id="962802172452141067">လိပ်စာအကန့် မြေပုံဇယား</translation>
+<translation id="964057662886721376">အချို့ နောက်ဆက်တွဲများသည် သင့်ကို နှေးကွေးစေနိုင်သည် - အထူးသဖြင့် သင်ထည့်သွင်းရန် မရည်ရွယ်သော နောက်ဆက်တွဲများ။</translation>
 <translation id="964286338916298286">သင်၏ IT စီမံခန့်ခွဲသူက သင့်ကိရိယာ အတွက် Chrome Goodies ကို ပိတ်ထားသည်။</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{အပလီကေးရှင်း}other{အပလီကေးရှင်းများ}}</translation>
 <translation id="965211523698323809">သင်၏ <ph name="DEVICE_TYPE" /> မှနေ၍ မိုဘိုင်းမက်ဆေ့ဂျ်များ ပို့ခြင်း၊ လက်ခံခြင်းတို့ ပြုလုပ်နိုင်သည်။ <ph name="LINK_BEGIN" />ပိုမိုလေ့လာရန်<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_ne.xtb b/chrome/app/resources/generated_resources_ne.xtb
index f816a1e..ee064c34 100644
--- a/chrome/app/resources/generated_resources_ne.xtb
+++ b/chrome/app/resources/generated_resources_ne.xtb
@@ -131,7 +131,6 @@
 <translation id="1177863135347784049">अनुकूल</translation>
 <translation id="1178581264944972037">पज गर्नुहोस्</translation>
 <translation id="117916940443676133">तपाईंको सुरक्षा साँचो PIN प्रयोग गरी सुरक्षित गरिएको छैन। साइन इन गर्न चाहिने डेटा व्यवस्थित गर्न सर्वप्रथम एउटा PIN सिर्जना गर्नुहोस्।</translation>
-<translation id="118069123878619799">- उचाइ जस्ता तपाईंको शारीरिक विशेषता</translation>
 <translation id="1181037720776840403">हटाउनुहोस्</translation>
 <translation id="1183237619868651138">स्थानीय क्यासमा <ph name="EXTERNAL_CRX_FILE" /> स्थापना गर्न सक्दैन।</translation>
 <translation id="1185924365081634987">यो नेटवर्क त्रुटिलाई सच्याउनको लागि तपाईंले <ph name="GUEST_SIGNIN_LINK_START" />अतिथीको रूपमा ब्राउज<ph name="GUEST_SIGNIN_LINK_END" /> गर्ने प्रयास पनि गर्न सक्नुहुन्छ।</translation>
@@ -350,6 +349,7 @@
 <translation id="1493892686965953381"><ph name="LOAD_STATE_PARAMETER" /> लाई प्रतिक्षा गर्दै...</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> अन्य उपलब्ध यन्त्रहरू।</translation>
 <translation id="1495677929897281669">ट्याबमा फर्कनुहोस्</translation>
+<translation id="1499271269825557605">तपाईंले कुनै एक्स्टेन्सन चिन्न सक्नुभएन भने वा तपाईंको ब्राउजरले अपेक्षा गरिएअनुसार काम गर्दै छैन भने तपाईं यहाँबाट एक्स्टेन्सनहरू निष्क्रिय पार्न वा तिनलाई आफूले रोजेअनुसार पार्न सक्नुहुन्छ।</translation>
 <translation id="1500297251995790841">अज्ञात यन्त्र [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">यो मालिक खाता मल्टिपल साइन-इन सत्रमा पहिलो पटक साइन-इन गरिएको खाता हुनुपर्दछ।</translation>
 <translation id="150411034776756821"><ph name="SITE" /> हटाउनुहोस्</translation>
@@ -357,6 +357,7 @@
 <translation id="1507170440449692343">यो पृष्ठलाई तपाईंको क्यामेरा पहुँच गर्नबाट ब्लक गरिएको छ।</translation>
 <translation id="1507246803636407672">&amp;नकार्नुहोस्</translation>
 <translation id="1508491105858779599">यन्त्रलाई अनलक गर्नका लागि फिंगरप्रिन्ट सेन्सरमा आफ्नो औंला राख्नुहोस्।</translation>
+<translation id="1508575541972276599">हालको संस्करण Debian 9 (Stretch) हो</translation>
 <translation id="1509281256533087115">USB मार्फत कुनै पनि <ph name="DEVICE_NAME_AND_VENDOR" /> पहुँच गर्नुहोस्</translation>
 <translation id="150962533380566081">अमान्य PUK।</translation>
 <translation id="1510030919967934016">यो पृष्ठलाई तपाईंको स्थान ट्र्याक गर्नबाट ब्लक गरिएको छ।</translation>
@@ -430,6 +431,7 @@
 <translation id="1601560923496285236">लागु गर्नुहोस्</translation>
 <translation id="1603914832182249871">(इन्कगनिटो)</translation>
 <translation id="1604432177629086300">प्रिन्ट गर्न सकिएन। प्रिन्टरको जाँच गरी फेरि प्रयास गर्नुहोस्।</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: पासवर्ड सिंक गर्ने सुविधाले काम गरिरहेको छैन</translation>
 <translation id="1607139524282324606">प्रविष्टि खाली गर्नुहोस्</translation>
 <translation id="1608626060424371292">यो प्रयोगकर्तालाई हटाउनुहोस्</translation>
 <translation id="1608668830839595724">चयन गरिएका वस्तुमा गर्न सकिने थप कारबाहीहरू</translation>
@@ -556,6 +558,8 @@
 <translation id="177336675152937177">होस्ट गरिएको अनुप्रयोग लगत</translation>
 <translation id="1776712937009046120">प्रयोगकर्ता थप्नुहोस्</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.ले यो यन्त्रको व्यवस्थापन गर्छ।
+    आफ्नो <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> खातामा साइन गर्न जारी राख्न "अर्को" मा क्लिक गर्नुहोस्।</translation>
 <translation id="1779652936965200207">कृपया यस पासकुञ्जीलाई "<ph name="DEVICE_NAME" />" मा प्रविष्टि गर्नुहोस्:</translation>
 <translation id="1780152987505130652">समूह बन्द गर्नुहोस्</translation>
 <translation id="1781291988450150470">हालको PIN</translation>
@@ -743,6 +747,7 @@
 <translation id="2048653237708779538">कारबाही उपलब्ध छैन</translation>
 <translation id="2050339315714019657">पोर्ट्रेट</translation>
 <translation id="2053312383184521053">निष्क्रिय स्थिति लगत</translation>
+<translation id="2055585478631012616">तपाईं खुला ट्याबहरूका साथै यी साइटहरूबाट साइन आउट हुनु हुने छ</translation>
 <translation id="205560151218727633">Google सहायकको लोगो</translation>
 <translation id="2058456167109518507">यन्त्र पत्ता लाग्यो</translation>
 <translation id="2059913712424898428">समय क्षेत्र</translation>
@@ -758,6 +763,7 @@
 <translation id="2079545284768500474">अन्डू गर्नुहोस्</translation>
 <translation id="2080070583977670716">थप सेटिङहरू</translation>
 <translation id="2087822576218954668">प्रिन्ट: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN नेटवर्क</translation>
 <translation id="2089566709556890888">Google Chrome मार्फत सुरक्षित ब्राउज गर्नुहोस्</translation>
 <translation id="2089795179672254991">कुनै साइटले क्लिपबोर्डमा प्रतिलिपि गरिएका पाठ र छवि हेर्न चाहेको बेला सोध्नुहोस् (सिफारिस गरिएको)</translation>
 <translation id="2090165459409185032">तपाईँको खाता जानकारी पुनःप्राप्ति गर्न google.com/accounts/recovery मा जानुहोस्</translation>
@@ -981,6 +987,7 @@
 <translation id="2379232090534544565">कुनै साइटले अडियो र भिडियो इनपुटमाथि पहुँच राख्दै छ</translation>
 <translation id="2379281330731083556">प्रणाली संवाद प्रयोग गर्दै छाप्नुहोस्... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">पठाउनु अघि सोध्नुहोस् (सिफारिस गरिएको)</translation>
+<translation id="2382818385048255866">आफ्ना एक्स्टेन्सनहरूको जाँच गर्नुहोस्</translation>
 <translation id="2384436799579181135">एउटा त्रुटि भयो। कृपया आफ्नो प्रिन्टरको जाँच गरी फेरि प्रयास गर्नुहोस्।</translation>
 <translation id="2387458720915042159">प्रोक्सी जडानको प्रकार</translation>
 <translation id="2391419135980381625">मानक फन्ट</translation>
@@ -1032,6 +1039,7 @@
 <translation id="2462724976360937186">प्रमाणीकरण प्राधिकरण कुञ्जी आइडी</translation>
 <translation id="2462752602710430187"><ph name="PRINTER_NAME" /> थपियो</translation>
 <translation id="2464089476039395325">HTTP को प्रोक्सी</translation>
+<translation id="2467267713099745100"><ph name="NETWORK_TYPE" /> नेटवर्क, निष्क्रिय छ</translation>
 <translation id="2468205691404969808">तपाईं ती पृष्ठहरूमा नजानुभए तापनि तपाईंका प्राथमिकताहरू सम्झनका लागि कुकीहरूको प्रयोग गर्छ</translation>
 <translation id="2468402215065996499">तामागोची</translation>
 <translation id="2469259292033957819">तपाईंसँग सुरक्षित गर्नका लागि कुनै पनि प्रिन्टर छैन।</translation>
@@ -1286,6 +1294,7 @@
 <translation id="2800760947029405028">कुनै छवि अपलोड गर्नुहोस्</translation>
 <translation id="2803375539583399270">PIN प्रविष्टि गर्नुहोस्</translation>
 <translation id="2804043232879091219">वैकल्पिक ब्राउजर खोल्न सकिएन</translation>
+<translation id="2804667941345577550">तपाईंलाई खुला ट्याबहरूलगायत यस साइटबाट साइन आउट गरिने छ</translation>
 <translation id="2804680522274557040">क्यामेरा निष्क्रिय पारियो</translation>
 <translation id="2805646850212350655">Microsoft गुप्तिकरण फाइल प्रणाली</translation>
 <translation id="2805756323405976993">एप्स</translation>
@@ -1293,6 +1302,7 @@
 <translation id="2806891468525657116">सर्टकट पहिलेदेखि नै विद्यमान छ</translation>
 <translation id="2807517655263062534">तपाईंले डाउनलोड गरेका फाइलहरू यहाँ देखिन्छन्</translation>
 <translation id="2809586584051668049">र <ph name="NUMBER_ADDITIONAL_DISABLED" /> थप</translation>
+<translation id="2810390687497823527">तपाईंले कुनै एक्स्टेन्सन चिन्न सक्नुभएन भने वा तपाईंको ब्राउजरले अपेक्षा गरिएअनुसार काम गर्दै छैन भने तपाईं यहाँबाट एक्स्टेन्सनहरू निष्क्रिय पार्न वा तिनलाई आफूले रोजेअनुसार पार्न सक्नुहुन्छ।</translation>
 <translation id="2812049959647166806">थन्डरबोल्ट प्रयोग गर्न मिल्दैन</translation>
 <translation id="2812944337881233323">साइन आउट गरेर फेरि साइन इन गरी हेर्नुहोस्</translation>
 <translation id="2812989263793994277">कुनैपनि छविहरू नदेखाउनुहोस्</translation>
@@ -1332,6 +1342,7 @@
 <translation id="2861941300086904918">स्वदेशी ग्राहक सुरक्षा व्यवस्थापक</translation>
 <translation id="2864601841139725659">आफ्नो प्रोफाइल तस्बिर सेट गर्नुहोस्</translation>
 <translation id="2865919525181940183">हाल स्क्रिनमा देखिएका कार्यक्रमहरूको स्क्रिनसट</translation>
+<translation id="286674810810214575">पावरका स्रोतहरूको जाँच गर्दै...</translation>
 <translation id="2867768963760577682">पिन गरिएको ट्याबको रूपमा खोल्नुहोस्</translation>
 <translation id="2868746137289129307">यो एक्सटेन्सनको मिति सकिएको छ र उद्यम नीति द्वारा अक्षम छ। एक नयाँ संस्करण उपलब्ध भएपछि यो स्वतः सक्षम हुन सक्छ।</translation>
 <translation id="2870560284913253234">साइट</translation>
@@ -1410,6 +1421,7 @@
 <translation id="2972581237482394796">&amp;फेरि गर्नुहोस्</translation>
 <translation id="2973324205039581528">साइट म्युट गर्नुहोस्</translation>
 <translation id="2977480621796371840">समूहबाट हटाउनुहोस्</translation>
+<translation id="2979520980928493164">अझ सुरक्षित, अझ राम्रो Chrome</translation>
 <translation id="2979639724566107830">नयाँ विन्डोमा खोल्नुहोस्</translation>
 <translation id="2981113813906970160">ठूलो माउस कर्सर देखाउँनुहोस्</translation>
 <translation id="2982970937345031">बेनामी रूपमा रिपोर्ट गर्नुहोस्</translation>
@@ -1516,6 +1528,7 @@
 <translation id="3143515551205905069">सिंक रद्द गर्नुहोस्</translation>
 <translation id="3143754809889689516">सुरुबाट प्ले गर्नुहोस्</translation>
 <translation id="3144647712221361880">यस रूपमा लिंक खोल्नुहोस्</translation>
+<translation id="3145187901750964977">भर्चुअल मेसिन स्थापना गर्न सकिएन। कृपया फेरि प्रयास गर्नुहोस् वा आफ्नो सङ्गठनका यन्त्रका प्रशासकसँग सम्पर्क गर्नुहोस्। त्रुटिको कोड: <ph name="ERROR_CODE" />।</translation>
 <translation id="3149477159749171726">संस्करण:
     <ph name="LINUX_VERSION" />
 
@@ -1554,6 +1567,7 @@
 <translation id="3192947282887913208">अडियो फाइलहरू</translation>
 <translation id="3194737229810486521"><ph name="URL" /> तपाईंको यन्त्रमा स्थायी रूपमा डेटा भण्डारण गर्न चाहन्छ</translation>
 <translation id="3199127022143353223">सर्भरहरू</translation>
+<translation id="3201306578844503970">नेटवर्कसम्बन्धी त्रुटिका कारण भर्चुअल मेसिन स्थापना गर्न सकिएन। कृपया फेरि प्रयास गर्नुहोस् वा आफ्नो सङ्गठनका यन्त्रका प्रशासकसँग सम्पर्क गर्नुहोस्। त्रुटिको कोड: <ph name="ERROR_CODE" />।</translation>
 <translation id="3201422919974259695">उपलब्ध USB यन्त्रहरू यहाँ देखिने छन्।</translation>
 <translation id="3202131003361292969">पथ</translation>
 <translation id="3202173864863109533">यस ट्याबको अडियो म्युट गरिएको छ।</translation>
@@ -1890,7 +1904,6 @@
 <translation id="3678156199662914018">विस्तार: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">प्रतिक्रिया दिनुभएकोमा धन्यवाद। तपाईं अहिले अफलाइन हुनुहुन्छ र तपाईंको रिपोर्ट पछि पठाइने छ।</translation>
 <translation id="3682824389861648626">चालको थ्रेसहोल्ड</translation>
-<translation id="3683023058278427253">हामीले तपाईंको डोमेनमा धेरै प्रकारका इजाजतपत्रहरू पत्ता लगाएका छौं। जारी राख्न कृपया कुनै एउटा इजाजतपत्र छनौट गर्नुहोस्।</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> स्क्रीन साझा अनुरोध</translation>
 <translation id="368789413795732264">फाइल लेख्ने प्यास गर्दा एउटा त्रुटि भयो: <ph name="ERROR_TEXT" />।</translation>
 <translation id="3688507211863392146">तपाईंले एप्लिकेसनमा खोल्नुहुने फाइलहरू र फोल्डरहरूमा लेख्नुहोस्।</translation>
@@ -2064,6 +2077,7 @@
 <translation id="389589731200570180">अतिथिहरूसँग साझा गर्नुहोस्</translation>
 <translation id="389901847090970821">किबोर्ड चयन गर्नुहोस्</translation>
 <translation id="3899879303189199559">एक वर्ष भन्दा बढीको लागि अफलाइन</translation>
+<translation id="3900789207771372462">केही एक्स्टेन्सनहरूले व्यक्तिगत जानकारीसहित तपाईंको ब्राउजिङसम्बन्धी क्रियाकलाप देख्न सक्छन्।</translation>
 <translation id="3900966090527141178">पासवर्डहरू निर्यात गर्नुहोस्</translation>
 <translation id="3901991538546252627"><ph name="NAME" /> मा जडान हुँदै</translation>
 <translation id="3905761538810670789">अनुप्रयोग मर्मत गर्नुहोस्</translation>
@@ -2153,7 +2167,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" यस ब्राउजरलाई डिबग गर्दै छ</translation>
 <translation id="4014432863917027322">मर्मत गर्नुहोस् "<ph name="EXTENSION_NAME" />"?</translation>
 <translation id="4015163439792426608">तपाईंले एक्स्टेन्सनहरू स्थापना गर्नुभएको छ? एउटै ठाउँबाट सजिलैसँग <ph name="BEGIN_LINK" />आफ्ना एक्स्टेन्सनहरू व्यवस्थित गर्नुहोस्<ph name="END_LINK" /></translation>
-<translation id="4020106588733303597">हत्तेरिका!  प्रणालीले उपलब्ध इजाजतपत्रहरू लोड गर्न सकेन।</translation>
 <translation id="4020327272915390518">विकल्पहरू नामक मेनु</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">शब्दकोषमा &amp;थप्नुहोस्</translation>
@@ -2191,6 +2204,7 @@
 <translation id="407520071244661467">मापन</translation>
 <translation id="4075639477629295004"><ph name="FILE_NAME" /> लाई cast गर्न सकिएन।</translation>
 <translation id="4077917118009885966">यो साइटमा विज्ञापनहरूमाथि रोक लगाइएको छ</translation>
+<translation id="4077919383365622693"><ph name="SITE" /> मा भण्डारण गरिएका सबै डेटा र कुकीहरू मेटाइने छन्।</translation>
 <translation id="4079140982534148664">हिज्जे जाँचसम्बन्धी परिष्कृत सुविधा प्रयोग गर्नुहोस्</translation>
 <translation id="4081242589061676262">फाइललाई cast गर्न सकिएन।</translation>
 <translation id="4084682180776658562">बुकमार्क</translation>
@@ -2265,6 +2279,7 @@
 <translation id="4181841719683918333">भाषाहरू</translation>
 <translation id="4184885522552335684">कुनै प्रदर्शनलाई सार्न तान्नुहोस्</translation>
 <translation id="4194570336751258953">क्लिक-गर्न-ट्याप गर्नुहोस् सक्षम गर्नुहोस्</translation>
+<translation id="4194595472342532425">कन्फिगुरेसनसम्बन्धी समस्या भएका कारण Plugin VM सेटअप गर्न सकिएन। कृपया आफ्नो सङ्गठनका यन्त्रका प्रशासकसँग सम्पर्क गर्नुहोस्। त्रुटिको कोड: <ph name="ERROR_CODE" />।</translation>
 <translation id="4195643157523330669">नयाँ ट्याबमा खोल्नुहोस्</translation>
 <translation id="4195814663415092787">तपाइँले छोड्नुभएको स्थान देखि जारी राख्नुहोस्</translation>
 <translation id="4198146608511578238">आफ्नो Google सहायकसँग कुरा गर्न केवल लन्चर आइकनमा थिचिराख्नुहोस्</translation>
@@ -2488,6 +2503,7 @@
 <translation id="4549791035683739768">तपाईंको सुरक्षा साँचोमा कुनै पनि फिंगरप्रिन्ट भण्डारण गरिएको छैन</translation>
 <translation id="4551763574344810652">अन्डू गर्न <ph name="MODIFIER_KEY_DESCRIPTION" /> थिच्नुहोस्</translation>
 <translation id="4552089082226364758">फ्ल्यास</translation>
+<translation id="4552759165874948005"><ph name="NETWORK_TYPE" /> नेटवर्क, सिग्नलको क्षमता <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">अवस्थित संस्करणसँग तुलना गर्दा बाह्य विस्तार समान वा तल्लो संस्करणमा छ।</translation>
 <translation id="4555769855065597957">छाया</translation>
 <translation id="4555863373929230635">आफ्नो Google खातामा पासवर्डहरू सुरक्षित गर्न साइन इन गरी सिंक गर्ने सुविधा सक्रिय गर्नुहोस्।</translation>
@@ -2565,6 +2581,7 @@
 <translation id="4665446389743427678"><ph name="SITE" /> ले भण्डारण गरेको सबै डेटा मेटाइने छ।</translation>
 <translation id="4668721319092543482"><ph name="PLUGIN_NAME" /> लाई सक्षम पार्न क्लिक गर्नुहोस्।</translation>
 <translation id="4672657274720418656">पृष्ठ आसव</translation>
+<translation id="46733273239502219">स्थापना गरिएका अनुप्रयोगहरूमा रहेको अफलाइन डेटा पनि हटाइने छ</translation>
 <translation id="4673442866648850031">स्टाइलस निकाल्दा स्टाइलस सम्बन्धी उपकरणहरू खोल्नुहोस्</translation>
 <translation id="4677585247300749148"><ph name="URL" /> पहुँचसम्बन्धी कार्यक्रमहरूमा प्रतिक्रिया दिन चाहन्छ</translation>
 <translation id="4677772697204437347">GPU स्मृति</translation>
@@ -2656,7 +2673,6 @@
 <translation id="4823484602432206655">पढ्नुहोस् र प्रयोगकर्ता तथा यन्त्र सेटिङहरू परिवर्तन गर्नुहोस्</translation>
 <translation id="4824958205181053313">सिंक रद्द गर्ने हो?</translation>
 <translation id="4827675678516992122">जडान गर्न सकिएन</translation>
-<translation id="4828937774870308359">अस्ट्रेलियाली</translation>
 <translation id="4829768588131278040">PIN सेटअप गर्नुहोस्</translation>
 <translation id="4830502475412647084">OS अद्यावधिक स्थापना गर्दै</translation>
 <translation id="4830573902900904548">तपाईँको <ph name="DEVICE_TYPE" /> <ph name="NETWORK_NAME" /> प्रयोग गरेर इन्टरनेटसँग जडान गर्न असमर्थ छ। कृपया अर्को नेटवर्क छनौट गर्नुहोस्। <ph name="LEARN_MORE_LINK_START" /> थप जान्नुहोस् <ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2697,6 +2713,7 @@
 <translation id="4876273079589074638">हाम्रा इन्जिनियरहरूलाई यो क्र्यासको छानबिन गर्न र त्यसलाई समाधान गर्नमा मद्दत गर्नुहोस्। सम्भव भएसम्म हरेक कदमहरू जस्ताको तस्तै सूचीबद्ध गर्नुहोस्। कुनै पनि विवरण कम महत्त्वपूर्ण हुँदैन!</translation>
 <translation id="4876895919560854374">स्क्रिनलाई लक र अनलक गर्नुहोस्</translation>
 <translation id="4877276003880815204">तत्त्वहरूको निरीक्षण गर्नुहोस्</translation>
+<translation id="4878653975845355462">इच्छ्याइएका पृष्ठभूमिहरू तपाईंका प्रशासकद्वारा निष्क्रिय पारिएका छन्</translation>
 <translation id="4879491255372875719">स्वचालित (पूर्वनिर्धारित)</translation>
 <translation id="4880328057631981605">पहुँच बिन्दुको नाम</translation>
 <translation id="4880827082731008257">खोज इतिहास</translation>
@@ -2752,10 +2769,10 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" कुनै क्रमिक पोर्टमा जडान गर्न चाहन्छ</translation>
 <translation id="4944310289250773232">यो प्रमाणीकरण सेवा <ph name="SAML_DOMAIN" /> ले होस्ट गरेको हो</translation>
 <translation id="495170559598752135">कार्यहरू</translation>
+<translation id="4952981627953231344">यस यन्त्रमा Plugin VM स्थापना गर्न मिल्दैन। आफ्नो सङ्गठनका यन्त्रका प्रशासकसँग सम्पर्क गर्नुहोस्।</translation>
 <translation id="4953689047182316270">पहुँचसम्बन्धी कार्यक्रमहरूमा प्रतिक्रिया दिनुहोस्</translation>
 <translation id="4953808748584563296">पूर्वनिर्धारित सुन्तला रङ्गको अवतार</translation>
 <translation id="4955710816792587366">आफ्नो PIN छनौट गर्नुहोस्</translation>
-<translation id="4955814292505481804">वार्षिक</translation>
 <translation id="4959262764292427323">तपाईं जुनसुकै बेला पासवर्ड प्रयोग गर्न सक्नुहोस् भन्नाका खातिर तिनलाई तपाईंको Google खातामा सुरक्षित गरिन्छ</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">तपाईंका प्रशासकले यो अनुप्रयोग स्थापना गर्नुभएको हो।</translation>
@@ -3237,7 +3254,6 @@
 <translation id="5659593005791499971">इमेल</translation>
 <translation id="5659833766619490117">यस पृष्ठलाई अनुवाद गर्न सकिएन</translation>
 <translation id="5660204307954428567"><ph name="DEVICE_NAME" /> सँग जोडा बनाउनुहोस्</translation>
-<translation id="5662477687021125631">आजीवन</translation>
 <translation id="5667546120811588575">Google Play सेटअप गरिँदै छ…</translation>
 <translation id="5669267381087807207">सक्रिय गर्दै</translation>
 <translation id="5669691691057771421">नयाँ PIN प्रविष्टि गर्नुहोस्</translation>
@@ -3253,6 +3269,7 @@
 <translation id="5687326903064479980">समय क्षेत्र</translation>
 <translation id="5689516760719285838">स्थान</translation>
 <translation id="56907980372820799">लिङ्क डाटा</translation>
+<translation id="5691180005790455277"><ph name="SITE_GROUP_NAME" /> द्वारा भण्डारण गरिएका सबै डेटा र कुकीहरू तथा यसअन्तर्गतका सबै साइटहरू हटाइने छन्।</translation>
 <translation id="5691511426247308406">परिवार</translation>
 <translation id="5692183275898619210">छाप्ने काम सम्पन्न भयो</translation>
 <translation id="5696143504434933566"><ph name="EXTENSION_NAME" /> को दुरुपयोगबारे रिपोर्ट गर्नुहोस्</translation>
@@ -3339,7 +3356,6 @@
 <translation id="5815645614496570556">X.400 ठेगाना</translation>
 <translation id="5816434091619127343">अनुरोध गरिएका प्रिन्टरसम्बन्धी परिवर्तनहरूले यस प्रिन्टरलाई काम नलाग्ने बनाउने छ।</translation>
 <translation id="5817918615728894473">जोडा  बनाउनुहोस्</translation>
-<translation id="5819762621475381970">- तपाईंको कोठाको प्रारूप</translation>
 <translation id="5821565227679781414">सर्टकट सिर्जना गर्नुहोस्</translation>
 <translation id="5825412242012995131">सक्रिय (सिफारिस गरिएको)</translation>
 <translation id="5826395379250998812">आफ्नो <ph name="DEVICE_TYPE" /> आफ्नो फोनमा जोड्नुहोस्। <ph name="LINK_BEGIN" />थप जान्नुहोस्<ph name="LINK_END" /></translation>
@@ -3474,6 +3490,7 @@
 <translation id="6007240208646052708">तपाईंको भाषामा आवाजमार्फत खोजी गर्ने सुविधा उपलब्ध छैन।</translation>
 <translation id="6009781704028455063">अन्तर्निर्मित सेन्सर</translation>
 <translation id="6010869025736512584">भिडियो आगत पहुँच गर्दै</translation>
+<translation id="6011074160056912900">इथरनेट नेटवर्क</translation>
 <translation id="6011193465932186973">फिंगरप्रिन्ट</translation>
 <translation id="6011449291337289699">साइट सम्बन्धी डेटा खाली गर्नुहोस्</translation>
 <translation id="6015266928248016057">अमान्य PUK। बाँकी प्रयास: <ph name="RETRIES" />।</translation>
@@ -3510,6 +3527,7 @@
 <translation id="6053401458108962351">&amp;ब्राउजिङ लगत खालि गर्नुहोस्...</translation>
 <translation id="6055171183283175969">तपाईंले प्रविष्ट गर्नुभएको पासवर्ड गलत छ।</translation>
 <translation id="6055392876709372977">RSA इन्क्रिप्शनको साथमा PKCS #1 SHA-256</translation>
+<translation id="6055907707645252013"><ph name="NETWORK_TYPE" /> नेटवर्क, जोडिएको छैन</translation>
 <translation id="6056710589053485679">सामान्य पुन: लोड</translation>
 <translation id="6057381398996433816">यो साइटलाई चाल तथा प्रकाशसम्बन्धी सेन्सरहरू प्रयोग गर्नबाट रोक लगाइएको छ।</translation>
 <translation id="6058567592298841668">प्लगइन भर्चुअल मेसिन: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3573,6 +3591,7 @@
 <translation id="6136114942382973861">डाउनलोडहरूको पट्टी बन्द गर्नुहोस्</translation>
 <translation id="6137767437444130246">प्रयोगकर्ताको प्रमाणपत्र</translation>
 <translation id="6138680304137685902">SHA-384 सहितको X9.62 ECDSA हस्ताक्षर</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, नेटवर्क छैन</translation>
 <translation id="6141988275892716286">डाउनलोड गर्ने पुष्टि गर्नुहोस्</translation>
 <translation id="6143186082490678276">मद्दत प्राप्त गर्नुहोस्</translation>
 <translation id="6144938890088808325">हामीलाई Chromebooks लाई सुधार गर्न मद्दत गर्नुहोस्</translation>
@@ -3879,6 +3898,7 @@
 <translation id="6602956230557165253">नेभिगेट गर्न बायाँ र दायाँ बाण कुञ्जीहरू प्रयोग गर्नुहोस्।</translation>
 <translation id="6605847144724004692">अझै पनि कुनै पनि प्रयोगकर्ताले मूल्याङ्कन गर्नुभएको छैन।</translation>
 <translation id="6607831829715835317">थप उपक&amp;रणहरू</translation>
+<translation id="6611972847767394631">आफ्ना ट्याबहरू यहाँ फेला पार्नुहोस्</translation>
 <translation id="6612358246767739896">संरक्षित सामग्री</translation>
 <translation id="6615455863669487791">मलाई देखाउनुहोस्</translation>
 <translation id="6618097958368085618">जे भए पनि राख्नुहोस्</translation>
@@ -3947,6 +3967,7 @@
 <translation id="6709133671862442373">समाचार</translation>
 <translation id="6709357832553498500"><ph name="EXTENSIONNAME" /> प्रयोग गरेर जडान गर्नुहोस्</translation>
 <translation id="6710213216561001401">अघिल्लो</translation>
+<translation id="6715803357256707211">तपाईंको Linux अनुप्रयोग स्थापना गर्ने क्रममा कुनै त्रुटि भयो। विस्तृत विवरणका लागि सूचनामा क्लिक गर्नुहोस्।</translation>
 <translation id="6721678857435001674">आफ्नो सुरक्षा साँचोको ब्रान्डको नाम र मोडेल हेर्नुहोस्</translation>
 <translation id="6721972322305477112">&amp;फाइल</translation>
 <translation id="672213144943476270">कृपया एक अतिथिको रूपमा ब्राउज गर्नु अघि आफ्नो प्रोफाइललाई अनलक गर्नुहोस्।</translation>
@@ -3971,7 +3992,6 @@
 <translation id="674632704103926902">ट्याप तान्नु सक्षम गर्नुहोस्</translation>
 <translation id="6748217015615267851">रेन्डर गर्ने: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">तपाईँले अघि बढ्न सक्नुहुन्छ, तर केवल तपाईँको सिंक भएको डेटा र सेटिङहरू मात्र पुनःप्राप्त हुनुे छ। सबै स्थानीय डेटा नष्ट हुने छन्।</translation>
-<translation id="6748775883310276718">एकल अनुप्रयोग किअस्क</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (गुप्त)</translation>
 <translation id="6757101664402245801">URL प्रतिलिपि गरियो</translation>
 <translation id="6758056191028427665">हामी कस्तो काम गर्दैछौं भन्नेबारे प्रतिक्रिया दिनुहोस्।</translation>
@@ -3981,6 +4001,7 @@
 <translation id="6769712124046837540">मुद्रक थप्दै...</translation>
 <translation id="6770664076092644100">NFC मार्फत पुष्टि गर्नुहोस्</translation>
 <translation id="6771503742377376720">एउटा प्रमाणीकरण अधिकार हो</translation>
+<translation id="6772339735733515807">आफ्ना एक्स्टेन्सनहरूको व्यवस्थापन गर्नुहोस्</translation>
 <translation id="6775163072363532304">उपलब्ध यन्त्रहरू यहाँ देखिने छन्।</translation>
 <translation id="6777817260680419853">रिडिरेक्ट गर्न रोक लगाइयो</translation>
 <translation id="6778737459546443941">तपाईंको अभिभावले अझै पनि यसलाई अनुमोदन गर्नुभएको छैन</translation>
@@ -4119,6 +4140,7 @@
 <translation id="6972180789171089114">अडियो/भिडियो</translation>
 <translation id="6972553992270299730">यस फोल्डरमा प्रणालीका फाइलहरू भएकाले <ph name="ORIGIN" /> ले यसभित्रका फाइलहरू खोल्न सक्दैन</translation>
 <translation id="6972754398087986839">सुरु गर्नुहोस्</translation>
+<translation id="6973611239564315524">Debian 10 (Buster) मा स्तरोन्नति गर्ने सुविधा उपलब्ध छ</translation>
 <translation id="6974609594866392343">अफलाइन डेमो मोड</translation>
 <translation id="6977381486153291903">फर्मवेयरको पुनरावृत्ति</translation>
 <translation id="6978121630131642226">खोज इन्जिनहरू</translation>
@@ -4578,6 +4600,7 @@
 <translation id="7644543211198159466">रङ तथा विषयवस्तु</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (मालिक)</translation>
 <translation id="7645681574855902035">Linux को ब्याकअप रद्द गर्दै</translation>
+<translation id="7646772052135772216">पासवर्ड सिंक गर्ने सुविधाले काम गर्दै छैन</translation>
 <translation id="7647403192093989392">हालसालैको कुनै पनि क्रियाकलाप छैन</translation>
 <translation id="7648992873808071793">यस यन्त्रमा फाइलहरू भण्डार गर्नुहोस्</translation>
 <translation id="7649070708921625228">मद्दत</translation>
@@ -4766,6 +4789,7 @@
 <translation id="7877451762676714207">अज्ञात सर्भर त्रुटि। कृपया पुन: प्रयास गर्नुहोस्, वा सर्भर व्यवस्थापकलाई सम्पर्क गर्नुहोस्।</translation>
 <translation id="7877680364634660272">भ्रमण</translation>
 <translation id="7878562273885520351">तपाईंको पासवर्ड जोखिममा पर्न सक्छ</translation>
+<translation id="7879631849810108578">सर्टकटको सेट: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">तपाईंले पुन: सुरु गर्नुहुँदा स्थानीय डेटा मेटाइने छ</translation>
 <translation id="7881483672146086348">खाता हेर्नुहोस्</translation>
 <translation id="7882358943899516840">प्रदायकको प्रकार</translation>
@@ -4852,6 +4876,7 @@
 <translation id="7987814697832569482">सधैँ यो VPN मार्फत जडान गर्नुहोस्</translation>
 <translation id="7988355189918024273">पहुँच सम्बन्धी सुविधाहरूलाई सक्षम पार्नुहोस्</translation>
 <translation id="7991296728590311172">स्विचमार्फत पहुँच राख्ने सुविधासम्बन्धी सेटिङहरू</translation>
+<translation id="7994350303002908848">Plugin VM स्थापना गर्न सकिएन। कृपया फेरि प्रयास गर्नुहोस् वा आफ्नो सङ्गठनका यन्त्रका प्रशासकसँग सम्पर्क गर्नुहोस्। त्रुटिको कोड: <ph name="ERROR_CODE" />।</translation>
 <translation id="7994702968232966508">EAP विधि</translation>
 <translation id="7997826902155442747">प्रक्रिया प्राथमिकता</translation>
 <translation id="7999229196265990314">निम्न फाइलहरू सिर्जना गर्‍यो:
@@ -4943,7 +4968,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{कुनै पनि तेस्रो पक्षीय कुकी छैन}=1{१ तेस्रो पक्षीय कुकीलाई रोक लगाइयो}other{# वटा तेस्रो पक्षीय कुकीलाई रोक लगाइयो}}</translation>
 <translation id="810875025413331850">वरपर कुनै पनि यन्त्र भेटिएन।</translation>
 <translation id="8111155949205007504">यो पासवर्ड आफ्नो iPhone मा आदान प्रदान गर्नुहोस्</translation>
-<translation id="8113043281354018522">इजाजतपत्रको प्रकार छनौट गर्नुहोस्</translation>
 <translation id="8114875720387900039">तेर्सो रूपमा विभाजन गर्नुहोस्</translation>
 <translation id="8116972784401310538">&amp;बुकमार्क व्यवस्थापक</translation>
 <translation id="8117620576188476503">स्थितिसम्बन्धी ट्रेमार्फत जडान, अद्यावधिक र सेटिङहरू व्यवस्थित गर्नुहोस्। किबोर्डमार्फत यो कार्य गर्न Alt + Shift + S थिच्नुहोस्।</translation>
@@ -5100,6 +5124,7 @@
 <translation id="8327039559959785305">Linux का फाइलहरू माउन्ट गर्ने क्रममा त्रुटि भयो। कृपया फेरि प्रयास गर्नुहोस्।</translation>
 <translation id="8335587457941836791">शेल्फबाट अनपिन गर्नुहोस्</translation>
 <translation id="8336407002559723354"><ph name="MONTH_AND_YEAR" /> पछि अद्यावधिक गरिने छैन</translation>
+<translation id="8336721153892716270">प्रणालीको पाठ <ph name="LANGUAGE" /> भाषामा देखाउन यन्त्र पुनः सुरु गर्नुहोस्</translation>
 <translation id="8336739000755212683">यन्त्रको खाताको छवि बदल्नुहोस्</translation>
 <translation id="8337047789441383384">तपाईंले पहिले नै यो सुरक्षा साँचो दर्ता गर्नुभएको छ। तपाईंले यसलाई फेरि दर्ता गर्नु पर्दैन।</translation>
 <translation id="8338952601723052325">विकासकर्ता वेबसाइट</translation>
@@ -5143,6 +5168,7 @@
 <translation id="8400146488506985033">व्यक्तिहरूको व्यवस्थापन गर्नुहोस्</translation>
 <translation id="8401432541486058167">आफ्नो स्मार्ट कार्डसँग सम्बद्ध PIN प्रदान गर्नुहोस्।</translation>
 <translation id="8405046151008197676">पछिल्लो अद्यावधिकका हाइलाइटहरू प्राप्त गर्नुहोस्</translation>
+<translation id="8408068190360279472"><ph name="NETWORK_TYPE" /> नेटवर्क, जोड्दै</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">पहिलो (सिफारिस गरिएको) सोध्नुहोस्</translation>
 <translation id="8418445294933751433">&amp;ट्याबको रूपमा देखाउनुहोस्</translation>
@@ -5432,6 +5458,7 @@
 <translation id="8807632654848257479">स्थिर</translation>
 <translation id="8808478386290700967">वेब भण्डार</translation>
 <translation id="8808686172382650546">बिरालो</translation>
+<translation id="8808744862003883508">तपाईं यस पृष्ठमा Chrome मा स्थापना गरिएका सबै एक्स्टेन्सनहरू देख्न सक्नुहुन्छ।</translation>
 <translation id="8809147117840417135">हल्का निलो-हरियो मिश्रित रङ</translation>
 <translation id="8813698869395535039"><ph name="USERNAME" /> मा साइन इन गर्न सकिँदैन</translation>
 <translation id="8813811964357448561">कागजको पाना</translation>
@@ -5659,7 +5686,6 @@
 <translation id="9121814364785106365">छापिएको ट्याबको रूपमा खोल्नुहोस्</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> पज गरिएको छ</translation>
 <translation id="9124003689441359348">सुरक्षित गरिएका पासवर्डहरू यहाँ देखिनेछन्</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> बाँकी।)</translation>
 <translation id="9128317794749765148">सेटअप सम्पन्न हुन सकेन</translation>
 <translation id="9128870381267983090">नेटवर्कमा जडान गर्नुहोस्</translation>
 <translation id="9130015405878219958">अवैध मोड प्रविष्ट गरियो।</translation>
@@ -5698,6 +5724,7 @@
 <translation id="9188732951356337132">प्रयोग तथा निदानसम्बन्धी डेटा पठाउनुहोस्। यो यन्त्रले हाल निदान, यन्त्र र अनुप्रयोगको उपयोगसम्बन्धी डेटा स्वतः Google मा पठाइरहेको छ। यस्तो डेटा तपाईंका बालकको पहिचान गर्ने प्रयोजनका लागि प्रयोग गरिने छैन र यसले प्रणाली तथा अनुप्रयोगको स्थिरता र थप कुराहरू सुधार गर्न मद्दत गर्ने छ। केही एकीकृत डेटाले Google का अनुप्रयोग तथा Android का विकासकर्ता जस्ता साझेदारहरूलाई पनि मद्दत गर्ने छ। तपाईंका बालकको खातामा वेब तथा अनुप्रयोगसम्बन्धी अतिरिक्त क्रियाकलापको सेटिङ सक्रिय गरिएको छ भने यो डेटा उनको Google खातामा सुरक्षित गरिन सक्छ। <ph name="BEGIN_LINK2" />थप जान्नुहोस्<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + पहिले नै साझा गरिएको कुञ्जी</translation>
 <translation id="920045321358709304"><ph name="SEARCH_ENGINE" /> खोज्नुहोस्</translation>
+<translation id="9201023452444595544">सबै अफलाइन डेटा हटाइने छ</translation>
 <translation id="9201220332032049474">स्क्रिन लकका विकल्पहरू</translation>
 <translation id="9203398526606335860">&amp;प्रोफाइलिङ सक्षम भयो</translation>
 <translation id="9203904171912129171">कुनै यन्त्र चयन गर्नुहोस्</translation>
@@ -5710,6 +5737,7 @@
 <translation id="9220525904950070496">खाता हटाउनुहोस्</translation>
 <translation id="9220820413868316583">औँला उठाई फेरि प्रयास गर्नुहोस्।</translation>
 <translation id="923467487918828349">सबै देखाउनुहोस्</translation>
+<translation id="929117907539171075">स्थापना गरिएको अनुप्रयोगमा रहेको अफलाइन डेटा पनि हटाइने छ</translation>
 <translation id="930268624053534560">विस्तृत टाइमस्ट्याम्पहरू</translation>
 <translation id="932327136139879170">गृहपृष्ठ</translation>
 <translation id="932508678520956232">प्रिन्ट प्रारम्भ गर्न सकेन।</translation>
@@ -5735,6 +5763,7 @@
 <translation id="960719561871045870">अपरेटरको कोड</translation>
 <translation id="960987915827980018">लगभग 1 घन्टा बाँकी</translation>
 <translation id="962802172452141067">पुस्तक चिन्ह भएको फोल्डरको ट्री</translation>
+<translation id="964057662886721376">कतिपय एक्स्टेन्सनहरू र त्यसमा पनि खास गरी तपाईंले स्थापना गर्न नचाहेका एक्स्टेन्सनहरूले तपाईंको कार्यको गति कम गर्न सक्छन्।</translation>
 <translation id="964286338916298286">तपाईंको IT प्रशासकले तपाईंको यन्त्रमा Chrome Goodies लाई असक्षम पार्नुभएको छ।</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{अनुप्रयोग}other{अनुप्रयोगहरू}}</translation>
 <translation id="965211523698323809">आफ्नो <ph name="DEVICE_TYPE" /> बाट पाठ सन्देशहरू आदान प्रदान गर्नुहोस्। <ph name="LINK_BEGIN" />थप जान्नुहोस्<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb
index a0c0dc8..b1126817 100644
--- a/chrome/app/resources/generated_resources_nl.xtb
+++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Aangepast</translation>
 <translation id="1178581264944972037">Onderbreken</translation>
 <translation id="117916940443676133">Je beveiligingssleutel is niet beveiligd met een pincode. Maak eerst een pincode als je de inloggegevens wilt beheren.</translation>
-<translation id="118069123878619799">- je fysieke kenmerken, zoals je lengte</translation>
 <translation id="1181037720776840403">Verwijderen</translation>
 <translation id="1183237619868651138">Kan <ph name="EXTERNAL_CRX_FILE" /> niet in lokale cache installeren.</translation>
 <translation id="1185924365081634987">Je kunt ook proberen te <ph name="GUEST_SIGNIN_LINK_START" />browsen als gast<ph name="GUEST_SIGNIN_LINK_END" /> om deze netwerkfout op te lossen.</translation>
@@ -1908,7 +1907,6 @@
 <translation id="3678156199662914018">Extensie: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Bedankt voor je feedback. Je bent nu offline en je rapport wordt later verzonden.</translation>
 <translation id="3682824389861648626">Bewegingsdrempel</translation>
-<translation id="3683023058278427253">We hebben meerdere licentietypen gedetecteerd voor je domein. Kies er een om door te gaan.</translation>
 <translation id="3683524264665795342">Verzoek voor scherm delen van <ph name="APP_NAME" /></translation>
 <translation id="368789413795732264">Er is een fout opgetreden bij het genereren van het bestand: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Schrijven naar bestanden en mappen die je opent in de app</translation>
@@ -2173,7 +2171,6 @@
 <translation id="4013132157686828973">'<ph name="CLIENT_NAME" />' voert foutopsporing uit in deze browser</translation>
 <translation id="4014432863917027322">"<ph name="EXTENSION_NAME" />" repareren?</translation>
 <translation id="4015163439792426608">Heb je extensies? <ph name="BEGIN_LINK" />Beheer ze<ph name="END_LINK" /> overzichtelijk op één plaats.</translation>
-<translation id="4020106588733303597">Het systeem kan de beschikbare licenties niet laden.</translation>
 <translation id="4020327272915390518">Menu Opties</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">Toevoegen &amp;aan woordenboek</translation>
@@ -2680,7 +2677,6 @@
 <translation id="4823484602432206655">Gebruikers- en apparaatinstellingen lezen en wijzigen</translation>
 <translation id="4824958205181053313">Synchronisatie annuleren?</translation>
 <translation id="4827675678516992122">Kan geen verbinding maken</translation>
-<translation id="4828937774870308359">Australisch</translation>
 <translation id="4829768588131278040">Pincode instellen</translation>
 <translation id="4830502475412647084">OS-update installeren</translation>
 <translation id="4830573902900904548">Je <ph name="DEVICE_TYPE" /> kan geen verbinding maken met internet via <ph name="NETWORK_NAME" />. Kies een ander netwerk. <ph name="LEARN_MORE_LINK_START" />Meer informatie<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2781,7 +2777,6 @@
 <translation id="4953689047182316270">Reageren op toegankelijkheidsgebeurtenissen</translation>
 <translation id="4953808748584563296">Standaard oranje avatar</translation>
 <translation id="4955710816792587366">Je pincode kiezen</translation>
-<translation id="4955814292505481804">Jaarlijks</translation>
 <translation id="4959262764292427323">Wachtwoorden worden in je Google-account opgeslagen, zodat je deze op elk apparaat kunt gebruiken</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Deze app is geïnstalleerd door je beheerder.</translation>
@@ -3263,7 +3258,6 @@
 <translation id="5659593005791499971">E-mailadres</translation>
 <translation id="5659833766619490117">Deze pagina kan niet worden vertaald</translation>
 <translation id="5660204307954428567">Koppelen met <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Oneindig</translation>
 <translation id="5667546120811588575">Google Play instellen...</translation>
 <translation id="5669267381087807207">Wordt geactiveerd</translation>
 <translation id="5669691691057771421">Nieuwe pincode opgeven</translation>
@@ -3366,7 +3360,6 @@
 <translation id="5815645614496570556">X.400-adres</translation>
 <translation id="5816434091619127343">Met de aangevraagde printerwijzigingen wordt de printer wordt onbruikbaar.</translation>
 <translation id="5817918615728894473">Koppelen</translation>
-<translation id="5819762621475381970">- de indeling van je kamer</translation>
 <translation id="5821565227679781414">Snelle link maken</translation>
 <translation id="5825412242012995131">Aan (aanbevolen)</translation>
 <translation id="5826395379250998812">Koppel je <ph name="DEVICE_TYPE" /> aan je telefoon. <ph name="LINK_BEGIN" />Meer informatie<ph name="LINK_END" /></translation>
@@ -4004,7 +3997,6 @@
 <translation id="674632704103926902">Tikken en slepen inschakelen</translation>
 <translation id="6748217015615267851">Weergaveprogramma: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Je kunt doorgaan, maar alleen je gesynchroniseerde gegevens en instellingen worden hersteld. Alle lokale gegevens gaan verloren.</translation>
-<translation id="6748775883310276718">Kiosk van enkele app</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Incognito)</translation>
 <translation id="6757101664402245801">URL gekopieerd</translation>
 <translation id="6758056191028427665">Laat ons weten of we goed bezig zijn.</translation>
@@ -4981,7 +4973,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Geen cookies van derden}=1{1 cookie van derden is geblokkeerd}other{# cookies van derden zijn geblokkeerd}}</translation>
 <translation id="810875025413331850">Geen apparaten in de buurt gevonden.</translation>
 <translation id="8111155949205007504">Dit wachtwoord delen met je iPhone</translation>
-<translation id="8113043281354018522">Licentietype kiezen</translation>
 <translation id="8114875720387900039">Horizontaal splitsen</translation>
 <translation id="8116972784401310538">&amp;Bladwijzerbeheer</translation>
 <translation id="8117620576188476503">Beheer verbindingen, updates en instellingen via het statusvak. Druk op Alt + Shift + S om via het toetsenbord daarnaartoe te gaan.</translation>
@@ -5701,7 +5692,6 @@
 <translation id="9121814364785106365">Openen als vastgezet tabblad</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> is onderbroken</translation>
 <translation id="9124003689441359348">Opgeslagen wachtwoorden worden hier weergegeven</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (nog <ph name="LICENSE_COUNT" />)</translation>
 <translation id="9128317794749765148">Installatie is niet voltooid</translation>
 <translation id="9128870381267983090">Verbinding maken met netwerk</translation>
 <translation id="9130015405878219958">Ongeldige modus opgegeven.</translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb
index 2b74c99..5ba408db 100644
--- a/chrome/app/resources/generated_resources_no.xtb
+++ b/chrome/app/resources/generated_resources_no.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Tilpasset</translation>
 <translation id="1178581264944972037">Stans midlertidig</translation>
 <translation id="117916940443676133">Sikkerhetsnøkkelen din er ikke beskyttet med PIN-kode. For å administrere påloggingsinformasjon må du opprette en PIN-kode først.</translation>
-<translation id="118069123878619799">– fysiske kjennetegn, som hvor høy du er</translation>
 <translation id="1181037720776840403">Fjern</translation>
 <translation id="1183237619868651138"><ph name="EXTERNAL_CRX_FILE" /> kan ikke installeres i lokalbufferen.</translation>
 <translation id="1185924365081634987">Du kan også prøve å <ph name="GUEST_SIGNIN_LINK_START" />surfe som gjest<ph name="GUEST_SIGNIN_LINK_END" /> for å løse denne nettverksfeilen.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">Venter på <ph name="LOAD_STATE_PARAMETER" /> …</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> andre tilgjengelige enheter.</translation>
 <translation id="1495677929897281669">Tilbake til fanen</translation>
+<translation id="1499271269825557605">Hvis det er utvidelser du ikke kjenner igjen, eller hvis nettleseren ikke fungerer som forventet, kan du slå av eller tilpasse utvidelser her.</translation>
 <translation id="1500297251995790841">Ukjent enhet [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Denne eierkontoen må være den første påloggingskontoen i en multipåloggingsøkt.</translation>
 <translation id="150411034776756821">Fjern <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Kameraet er blokkert for denne siden.</translation>
 <translation id="1507246803636407672">&amp;amp;Forkast</translation>
 <translation id="1508491105858779599">Legg en finger på fingeravtrykkssensoren for å låse opp enheten.</translation>
+<translation id="1508575541972276599">Gjeldende versjon er Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">Få tilgang til en hvilken som helst <ph name="DEVICE_NAME_AND_VENDOR" /> via USB</translation>
 <translation id="150962533380566081">Ugyldig PUK.</translation>
 <translation id="1510030919967934016">Denne siden har blitt nektet tillatelse til å spore posisjonen din.</translation>
@@ -431,6 +432,7 @@
 <translation id="1601560923496285236">Bruk</translation>
 <translation id="1603914832182249871">(Inkognito)</translation>
 <translation id="1604432177629086300">Kunne ikke skrive ut. Kontrollér skriveren og prøv på nytt.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: Passordsynkronisering fungerer ikke</translation>
 <translation id="1607139524282324606">Tøm oppføring</translation>
 <translation id="1608626060424371292">Fjern denne brukeren</translation>
 <translation id="1608668830839595724">Flere handlinger for de valgte elementene</translation>
@@ -557,6 +559,8 @@
 <translation id="177336675152937177">Appdata på vertstjener</translation>
 <translation id="1776712937009046120">Legg til bruker</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Denne enheten administreres av <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    Klikk på «Neste» for å fortsette med å logge på <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />-kontoen din.</translation>
 <translation id="1779652936965200207">Skriv inn dette passordet på «<ph name="DEVICE_NAME" />»:</translation>
 <translation id="1780152987505130652">Lukk gruppen</translation>
 <translation id="1781291988450150470">Gjeldende PIN-kode</translation>
@@ -744,6 +748,7 @@
 <translation id="2048653237708779538">Handlingen er ikke tilgjengelig</translation>
 <translation id="2050339315714019657">Stående</translation>
 <translation id="2053312383184521053">Data om hviletilstand</translation>
+<translation id="2055585478631012616">Du blir logget av disse nettstedene – inkludert i åpne faner</translation>
 <translation id="205560151218727633">Google Assistent-logo</translation>
 <translation id="2058456167109518507">Enhet oppdaget</translation>
 <translation id="2059913712424898428">Tidssone</translation>
@@ -759,6 +764,7 @@
 <translation id="2079545284768500474">Angre</translation>
 <translation id="2080070583977670716">Flere innstillinger</translation>
 <translation id="2087822576218954668">Skriv ut: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN-nettverk</translation>
 <translation id="2089566709556890888">Surf trygt med Google Chrome</translation>
 <translation id="2089795179672254991">Spør når et nettsted ber om å se tekst og bilder som er kopiert til utklippstavlen (anbefalt)</translation>
 <translation id="2090165459409185032">For å gjenopprette kontoinformasjonen din, gå til: google.com/accounts/recovery</translation>
@@ -982,6 +988,7 @@
 <translation id="2379232090534544565">Et nettsted har tilgang til lyd- og videoinndata</translation>
 <translation id="2379281330731083556">Skriv ut med systemdialogen <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Spør før noe sendes (anbefales).</translation>
+<translation id="2382818385048255866">Sjekk utvidelsene dine</translation>
 <translation id="2384436799579181135">Det har oppstått en feil. Sjekk skriveren og prøv på nytt.</translation>
 <translation id="2387458720915042159">Tilkoblingstype for proxy-tjener</translation>
 <translation id="2391419135980381625">Standardskrift</translation>
@@ -1033,6 +1040,7 @@
 <translation id="2462724976360937186">Nøkkel-ID for sertifiseringsinstans</translation>
 <translation id="2462752602710430187"><ph name="PRINTER_NAME" /> er lagt til</translation>
 <translation id="2464089476039395325">HTTP-proxy-tjener</translation>
+<translation id="2467267713099745100"><ph name="NETWORK_TYPE" />-nettverk – av</translation>
 <translation id="2468205691404969808">Bruker informasjonskapsler til å huske preferansene dine, selv om du ikke går til de sidene</translation>
 <translation id="2468402215065996499">Tamagotchi</translation>
 <translation id="2469259292033957819">Du har ingen lagrede skrivere.</translation>
@@ -1287,6 +1295,7 @@
 <translation id="2800760947029405028">Last opp et bilde</translation>
 <translation id="2803375539583399270">Skriv inn PIN-koden</translation>
 <translation id="2804043232879091219">Kunne ikke åpne den alternative nettleseren</translation>
+<translation id="2804667941345577550">Du blir logget av dette nettstedet, også i faner som er åpne</translation>
 <translation id="2804680522274557040">Kameraet er slått av</translation>
 <translation id="2805646850212350655">Microsoft Encrypting File System</translation>
 <translation id="2805756323405976993">Apper</translation>
@@ -1294,6 +1303,7 @@
 <translation id="2806891468525657116">Snarveien finnes allerede</translation>
 <translation id="2807517655263062534">Filer du laster ned, vises her</translation>
 <translation id="2809586584051668049">og <ph name="NUMBER_ADDITIONAL_DISABLED" /> til</translation>
+<translation id="2810390687497823527">Hvis det er utvidelser du ikke kjenner igjen, eller hvis nettleseren ikke fungerer som forventet, kan du slå av eller tilpasse utvidelser her.</translation>
 <translation id="2812049959647166806">Thunderbolt støttes ikke</translation>
 <translation id="2812944337881233323">Prøv å logge av og på igjen</translation>
 <translation id="2812989263793994277">Ikke vis bilder</translation>
@@ -1333,6 +1343,7 @@
 <translation id="2861941300086904918">Sikkerhetsadministrator for Native Client</translation>
 <translation id="2864601841139725659">Angi profilbildet ditt</translation>
 <translation id="2865919525181940183">Skjermdump av programmene som er på skjermen</translation>
+<translation id="286674810810214575">Sjekker strømkilder …</translation>
 <translation id="2867768963760577682">Åpne som festet fane</translation>
 <translation id="2868746137289129307">Denne utvidelsen er utdatert og avslått av bedriftsretningslinjene. Den kan slås på automatisk når en nyere versjon er tilgjengelig.</translation>
 <translation id="2870560284913253234">Nettsted</translation>
@@ -1410,6 +1421,7 @@
 <translation id="2972581237482394796">Gjø&amp;r om</translation>
 <translation id="2973324205039581528">Kutt lyden for nettsted</translation>
 <translation id="2977480621796371840">Fjern fra gruppen</translation>
+<translation id="2979520980928493164">Gjør Chrome friskere og gladere</translation>
 <translation id="2979639724566107830">Åpne i nytt vindu</translation>
 <translation id="2981113813906970160">Vis stor musepeker</translation>
 <translation id="2982970937345031">Rapporér anonymt</translation>
@@ -1516,6 +1528,7 @@
 <translation id="3143515551205905069">Avbryt synkronisering</translation>
 <translation id="3143754809889689516">Spill av fra begynnelsen</translation>
 <translation id="3144647712221361880">Åpne linken som</translation>
+<translation id="3145187901750964977">Kunne ikke installere den virtuelle maskinen. Prøv på nytt, eller kontakt enhetsadministratoren for organisasjonen. Feilkode: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Versjon:
     <ph name="LINUX_VERSION" />
 
@@ -1554,6 +1567,7 @@
 <translation id="3192947282887913208">Lydfiler</translation>
 <translation id="3194737229810486521"><ph name="URL" /> ber om å lagre data permanent på enheten din</translation>
 <translation id="3199127022143353223">Tjenere</translation>
+<translation id="3201306578844503970">Kunne ikke installere den virtuelle maskinen på grunn av en nettverksfeil. Prøv på nytt, eller kontakt enhetsadministratoren for organisasjonen. Feilkode: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Tilgjengelige USB-enheter vises her.</translation>
 <translation id="3202131003361292969">Bane</translation>
 <translation id="3202173864863109533">Lyden er slått av for denne fanen.</translation>
@@ -1890,7 +1904,6 @@
 <translation id="3678156199662914018">Utvidelse: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Takk for tilbakemeldingen. Siden du er uten nett akkurat nå, sendes rapporten senere.</translation>
 <translation id="3682824389861648626">Bevegelsesterskel</translation>
-<translation id="3683023058278427253">Vi har oppdaget flere lisenstyper for domenet ditt. Velg én for å fortsette.</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" />-forespørsel om skjermdeling</translation>
 <translation id="368789413795732264">Det oppstod en feil under forsøket på å skrive filen: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">skrive til filer og mapper du åpner i appen</translation>
@@ -2064,6 +2077,7 @@
 <translation id="389589731200570180">Del med gjester</translation>
 <translation id="389901847090970821">Velg tastatur</translation>
 <translation id="3899879303189199559">Frakoblet i over ett år</translation>
+<translation id="3900789207771372462">Noen utvidelser kan se nettleseraktiviteten din – inkludert personopplysninger.</translation>
 <translation id="3900966090527141178">Eksportér passord</translation>
 <translation id="3901991538546252627">Kobler til <ph name="NAME" /></translation>
 <translation id="3905761538810670789">Reparer appen</translation>
@@ -2152,7 +2166,6 @@
 <translation id="4013132157686828973">«<ph name="CLIENT_NAME" />» feilsøker denne nettleseren</translation>
 <translation id="4014432863917027322">Vil du reparere «<ph name="EXTENSION_NAME" />»?</translation>
 <translation id="4015163439792426608">Har du utvidelser? <ph name="BEGIN_LINK" />Administrer utvidelsene<ph name="END_LINK" /> på ett praktisk sted.</translation>
-<translation id="4020106588733303597">Beklager. Systemet kunne ikke laste inn tilgjengelige lisenser.</translation>
 <translation id="4020327272915390518">Alternativmeny</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Legg til i ordliste</translation>
@@ -2190,6 +2203,7 @@
 <translation id="407520071244661467">Skalér</translation>
 <translation id="4075639477629295004">Kunne ikke caste <ph name="FILE_NAME" />.</translation>
 <translation id="4077917118009885966">Annonser er blokkert på dette nettstedet</translation>
+<translation id="4077919383365622693">Alle data og informasjonskapsler som er lagret for <ph name="SITE" />, slettes.</translation>
 <translation id="4079140982534148664">Bruk forbedret stavekontroll</translation>
 <translation id="4081242589061676262">Kan ikke caste filen.</translation>
 <translation id="4084682180776658562">Legg til bokmerke</translation>
@@ -2264,6 +2278,7 @@
 <translation id="4181841719683918333">Språk</translation>
 <translation id="4184885522552335684">Dra i skjermene for å flytte dem</translation>
 <translation id="4194570336751258953">Aktiver berøringsklikk</translation>
+<translation id="4194595472342532425">Kunne ikke konfigurere Plugin VM på grunn av et konfigurasjonsproblem. Kontakt enhetsadministratoren for organisasjonen din. Feilkode: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Åpne i ny fane</translation>
 <translation id="4195814663415092787">Fortsett der du slapp</translation>
 <translation id="4198146608511578238">Bare hold på appoversiktikonet for å snakke med Google-assistenten</translation>
@@ -2487,6 +2502,7 @@
 <translation id="4549791035683739768">Det er ikke lagret noen fingeravtrykk på sikkerhetsnøkkelen</translation>
 <translation id="4551763574344810652">Trykk på <ph name="MODIFIER_KEY_DESCRIPTION" /> for å angre</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005"><ph name="NETWORK_TYPE" />-nettverk – signalstyrke <ph name="SIGNAL_STRENGTH" /> %</translation>
 <translation id="4554591392113183336">Den eksterne utvidelsen har samme eller lavere versjonsnummer som den eksisterende utvidelsen.</translation>
 <translation id="4555769855065597957">Skygge</translation>
 <translation id="4555863373929230635">For å lagre passord i Google-kontoen, logg på og slå på synkronisering.</translation>
@@ -2564,6 +2580,7 @@
 <translation id="4665446389743427678">Alle data som lagres av <ph name="SITE" />, blir slettet.</translation>
 <translation id="4668721319092543482">Klikk for å slå på <ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">Destiller siden</translation>
+<translation id="46733273239502219">Frakoblede data i installerte apper blir også slettet</translation>
 <translation id="4673442866648850031">Åpne pekepennverktøyene når pekepennen fjernes</translation>
 <translation id="4677585247300749148"><ph name="URL" /> ber om å svare på tilgjengelighetshendelser</translation>
 <translation id="4677772697204437347">GPU-minne</translation>
@@ -2655,7 +2672,6 @@
 <translation id="4823484602432206655">lese og endre bruker- og enhetsinnstillinger</translation>
 <translation id="4824958205181053313">Vil du avbryte synkroniseringen?</translation>
 <translation id="4827675678516992122">Kan ikke koble til</translation>
-<translation id="4828937774870308359">Australsk</translation>
 <translation id="4829768588131278040">Konfigurer en PIN-kode</translation>
 <translation id="4830502475412647084">Installerer OS-oppdateringen</translation>
 <translation id="4830573902900904548"><ph name="DEVICE_TYPE" /> kan ikke koble til Internett via <ph name="NETWORK_NAME" />. Velg et annet nettverk. <ph name="LEARN_MORE_LINK_START" />Finn ut mer<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2696,6 +2712,7 @@
 <translation id="4876273079589074638">Hjelp teknikerne våre med å undersøke og fikse denne feilen. Legg inn den nøyaktige fremgangsmåten om du kan. Ingen detaljer er ubetydelige.</translation>
 <translation id="4876895919560854374">låse og låse opp skjermen</translation>
 <translation id="4877276003880815204">Undersøk elementer</translation>
+<translation id="4878653975845355462">Administratoren har slått av egendefinerte bakgrunner</translation>
 <translation id="4879491255372875719">Automatisk (standard)</translation>
 <translation id="4880328057631981605">Navn på tilgangspunkt</translation>
 <translation id="4880827082731008257">Søk i loggen</translation>
@@ -2751,10 +2768,10 @@
 <translation id="4943691134276646401">«<ph name="CHROME_EXTENSION_NAME" />» vil koble til en seriell port</translation>
 <translation id="4944310289250773232">Verten for denne autentiseringstjenesten er <ph name="SAML_DOMAIN" />.</translation>
 <translation id="495170559598752135">Handlinger</translation>
+<translation id="4952981627953231344">Plugin VM tillates ikke på denne enheten. Kontakt enhetsadministratoren for organisasjonen din.</translation>
 <translation id="4953689047182316270">Svar på tilgjengelighetshendelser</translation>
 <translation id="4953808748584563296">Oransje standardbrukerbilde</translation>
 <translation id="4955710816792587366">Velg PIN-koden din</translation>
-<translation id="4955814292505481804">Årlig</translation>
 <translation id="4959262764292427323">Passordene er lagret i Google-kontoen din, slik at du kan bruke dem på alle enheter</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Denne appen er installert av administratoren.</translation>
@@ -3236,7 +3253,6 @@
 <translation id="5659593005791499971">E-post</translation>
 <translation id="5659833766619490117">Siden kunne ikke oversettes</translation>
 <translation id="5660204307954428567">Koble til <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Vedvarende</translation>
 <translation id="5667546120811588575">Konfigurerer Google Play …</translation>
 <translation id="5669267381087807207">Aktiverer</translation>
 <translation id="5669691691057771421">Skriv inn en ny PIN-kode</translation>
@@ -3252,6 +3268,7 @@
 <translation id="5687326903064479980">Tidssone</translation>
 <translation id="5689516760719285838">Sted</translation>
 <translation id="56907980372820799">Koble sammen data</translation>
+<translation id="5691180005790455277">Alle data og informasjonskapsler som er lagret av <ph name="SITE_GROUP_NAME" /> og eventuelle underordnede nettsteder, blir slettet.</translation>
 <translation id="5691511426247308406">Familie</translation>
 <translation id="5692183275898619210">Utskriften er fullført</translation>
 <translation id="5696143504434933566">Rapportér misbruk fra «<ph name="EXTENSION_NAME" />»</translation>
@@ -3338,7 +3355,6 @@
 <translation id="5815645614496570556">X.400-adresse</translation>
 <translation id="5816434091619127343">De forespurte skriverendringene gjør at du ikke kan bruke skriveren.</translation>
 <translation id="5817918615728894473">Koble sammen</translation>
-<translation id="5819762621475381970">– hvordan rommet ditt ser ut</translation>
 <translation id="5821565227679781414">Opprett snarvei</translation>
 <translation id="5825412242012995131">På (anbefales)</translation>
 <translation id="5826395379250998812">Koble <ph name="DEVICE_TYPE" /> til telefonen. <ph name="LINK_BEGIN" />Finn ut mer<ph name="LINK_END" /></translation>
@@ -3474,6 +3490,7 @@
 <translation id="6007240208646052708">Talesøk er ikke tilgjengelig på språket ditt.</translation>
 <translation id="6009781704028455063">Innebygd sensor</translation>
 <translation id="6010869025736512584">Åpner videoinngang</translation>
+<translation id="6011074160056912900">Ethernet-nettverk</translation>
 <translation id="6011193465932186973">Fingeravtrykk</translation>
 <translation id="6011449291337289699">Fjern nettstedsdata</translation>
 <translation id="6015266928248016057">Ugyldig PUK-kode. Gjenværende forsøk: <ph name="RETRIES" />.</translation>
@@ -3510,6 +3527,7 @@
 <translation id="6053401458108962351">&amp;Tøm logg</translation>
 <translation id="6055171183283175969">Passordet du skrev inn, er feil.</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 med RSA-kryptering</translation>
+<translation id="6055907707645252013"><ph name="NETWORK_TYPE" />-nettverk – ikke tilkoblet</translation>
 <translation id="6056710589053485679">Normal innlasting på nytt</translation>
 <translation id="6057381398996433816">Dette nettstedet er blokkert fra å bruke bevegelses- og lyssensorer.</translation>
 <translation id="6058567592298841668">Virtuell maskin for programtillegg: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3573,6 +3591,7 @@
 <translation id="6136114942382973861">Lukk nedlastingsraden</translation>
 <translation id="6137767437444130246">Brukersertifikat</translation>
 <translation id="6138680304137685902">X9.62 ECDSA-signatur med SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" /> – ingen nettverk</translation>
 <translation id="6141988275892716286">Bekreft nedlastingen</translation>
 <translation id="6143186082490678276">Få hjelp</translation>
 <translation id="6144938890088808325">Hjelp oss med å forbedre Chromebook</translation>
@@ -3879,6 +3898,7 @@
 <translation id="6602956230557165253">Bruk venstre og høyre piltast for å navigere.</translation>
 <translation id="6605847144724004692">Ikke vurdert av noen brukere ennå.</translation>
 <translation id="6607831829715835317">Flere verktøy</translation>
+<translation id="6611972847767394631">Se fanene dine her</translation>
 <translation id="6612358246767739896">Beskyttet innhold</translation>
 <translation id="6615455863669487791">Vis meg</translation>
 <translation id="6618097958368085618">Behold likevel</translation>
@@ -3947,6 +3967,7 @@
 <translation id="6709133671862442373">Nyheter</translation>
 <translation id="6709357832553498500">Koble til med <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Forrige</translation>
+<translation id="6715803357256707211">Det oppsto en feil under installasjon av Linux-programmet. Klikk på varselet for mer informasjon.</translation>
 <translation id="6721678857435001674">se merket og modellen til sikkerhetsnøkkelen din</translation>
 <translation id="6721972322305477112">&amp;Fil</translation>
 <translation id="672213144943476270">Du må låse opp profilen din før du kan surfe som gjest.</translation>
@@ -3971,7 +3992,6 @@
 <translation id="674632704103926902">Slå på trykk og dra</translation>
 <translation id="6748217015615267851">Gjengiver: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Du kan fortsette, men bare synkroniserte data og innstillinger blir gjenopprettet. Alle lokale data går tapt.</translation>
-<translation id="6748775883310276718">Enkeltapp-kiosk</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Inkognito)</translation>
 <translation id="6757101664402245801">Nettadressen er kopiert</translation>
 <translation id="6758056191028427665">Gi oss tilbakemelding.</translation>
@@ -3981,6 +4001,7 @@
 <translation id="6769712124046837540">Legger til skriver …</translation>
 <translation id="6770664076092644100">Bekreft via NFC</translation>
 <translation id="6771503742377376720">Er en sertifiseringsinstans</translation>
+<translation id="6772339735733515807">Administrering av utvidelser</translation>
 <translation id="6775163072363532304">Tilgjengelige enheter vises her.</translation>
 <translation id="6777817260680419853">Viderekobling er blokkert</translation>
 <translation id="6778737459546443941">Forelderen din har ikke godkjent det ennå</translation>
@@ -4119,6 +4140,7 @@
 <translation id="6972180789171089114">Lyd og video</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> kan ikke åpne filer i denne mappen, fordi den inneholder systemfiler</translation>
 <translation id="6972754398087986839">Kom i gang</translation>
+<translation id="6973611239564315524">En oppgradering for Debian 10 (Buster) er tilgjengelig</translation>
 <translation id="6974609594866392343">Demomodus uten nett</translation>
 <translation id="6977381486153291903">Fastvareversjon</translation>
 <translation id="6978121630131642226">Søkemotorer</translation>
@@ -4578,6 +4600,7 @@
 <translation id="7644543211198159466">Farge og tema</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (eier)</translation>
 <translation id="7645681574855902035">Avbryter sikkerhetskopiering av Linux</translation>
+<translation id="7646772052135772216">Passordsynkronisering fungerer ikke</translation>
 <translation id="7647403192093989392">Ingen nylige aktiviteter</translation>
 <translation id="7648992873808071793">lagre filer på denne enheten</translation>
 <translation id="7649070708921625228">Hjelp</translation>
@@ -4766,6 +4789,7 @@
 <translation id="7877451762676714207">Ukjent tjenerfeil. Prøv på nytt eller kontakt tjeneradministratoren.</translation>
 <translation id="7877680364634660272">Innføring</translation>
 <translation id="7878562273885520351">Passordet ditt kan være kompromittert</translation>
+<translation id="7879631849810108578">Snarveien er angitt: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Lokale data slettes når du starter på nytt</translation>
 <translation id="7881483672146086348">Se konto</translation>
 <translation id="7882358943899516840">Leverandørtype</translation>
@@ -4852,6 +4876,7 @@
 <translation id="7987814697832569482">Koble alltid til via dette VPN-et</translation>
 <translation id="7988355189918024273">Aktiver funksjoner for tilgjengelighet</translation>
 <translation id="7991296728590311172">Innstillinger for brytertilgang</translation>
+<translation id="7994350303002908848">Kunne ikke installere Plugin VM. Prøv på nytt, eller kontakt enhetsadministratoren for organisasjonen. Feilkode: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">EAP-metode</translation>
 <translation id="7997826902155442747">Prosessprioritet</translation>
 <translation id="7999229196265990314">Opprettet følgende filer:
@@ -4944,7 +4969,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Ingen informasjonskapsler fra tredjeparter}=1{1 informasjonskapsel fra en tredjepart er blokkert}other{# informasjonskapsler fra tredjeparter er blokkert}}</translation>
 <translation id="810875025413331850">Fant ingen enheter i nærheten.</translation>
 <translation id="8111155949205007504">Del dette passordet med iPhonen din</translation>
-<translation id="8113043281354018522">Velg lisenstype</translation>
 <translation id="8114875720387900039">Del horisontalt</translation>
 <translation id="8116972784401310538">&amp;Bokmerkebehandling</translation>
 <translation id="8117620576188476503">Administrer tilkoblinger, oppdateringer og innstillinger med statusfeltet. For å komme hit kan du også bruke tastekombinasjonen Alt + Shift + S.</translation>
@@ -5101,6 +5125,7 @@
 <translation id="8327039559959785305">Feil ved bruk av Linux-filer. Prøv på nytt.</translation>
 <translation id="8335587457941836791">Løsne fra hyllen</translation>
 <translation id="8336407002559723354">Oppdateringene avsluttes <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Start enheten på nytt for å vise systemtekst på <ph name="LANGUAGE" /></translation>
 <translation id="8336739000755212683">Endre bildet for enhetskontoen</translation>
 <translation id="8337047789441383384">Du har allerede registrert denne sikkerhetsnøkkelen. Du trenger ikke å registrere den på nytt.</translation>
 <translation id="8338952601723052325">Utviklernettsted</translation>
@@ -5144,6 +5169,7 @@
 <translation id="8400146488506985033">Administrer personer</translation>
 <translation id="8401432541486058167">Oppgi PIN-koden som er tilknyttet smartkortet ditt.</translation>
 <translation id="8405046151008197676">Se høydepunktene i den nyeste oppdateringen</translation>
+<translation id="8408068190360279472"><ph name="NETWORK_TYPE" />-nettverk – kobler til</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Spør først (anbefales)</translation>
 <translation id="8418445294933751433">Vi&amp;s som fane</translation>
@@ -5433,6 +5459,7 @@
 <translation id="8807632654848257479">Stabil</translation>
 <translation id="8808478386290700967">Nettmarked</translation>
 <translation id="8808686172382650546">Katt</translation>
+<translation id="8808744862003883508">På denne siden kan du se alle utvidelsene som er installert i Chrome.</translation>
 <translation id="8809147117840417135">Lys blågrønn</translation>
 <translation id="8813698869395535039">Kan ikke logge på <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">ark</translation>
@@ -5660,7 +5687,6 @@
 <translation id="9121814364785106365">Åpne som festet fane</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> er satt på pause</translation>
 <translation id="9124003689441359348">Lagrede passord vises her</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> gjenstår)</translation>
 <translation id="9128317794749765148">Kunne ikke fullføre konfigureringen</translation>
 <translation id="9128870381267983090">Koble til nettverk</translation>
 <translation id="9130015405878219958">Ugyldig modus angitt.</translation>
@@ -5699,6 +5725,7 @@
 <translation id="9188732951356337132">Send bruks- og diagnostikkdata. Denne enheten sender for øyeblikket diagnostikk-, enhets- og appbruksdata til Google automatisk. Disse dataene brukes ikke til å identifisere barnet ditt, men bidrar til å gjøre systemet og appene bedre og mer stabile. Noen aggregerte data hjelper også Google-apper og -partnere, for eksempel Android-utviklere. Hvis du har slått på innstillingen for annen nett- og appaktivitet for barnet ditt, kan disse dataene bli lagret i barnets Google-konto. <ph name="BEGIN_LINK2" />Finn ut mer<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + forhåndsdelt nøkkel</translation>
 <translation id="920045321358709304">Søk med <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">Eventuelle frakoblede data blir slettet.</translation>
 <translation id="9201220332032049474">Alternativer for skjermlås</translation>
 <translation id="9203398526606335860">&amp;Profilering aktivert</translation>
 <translation id="9203904171912129171">Velg enhet</translation>
@@ -5711,6 +5738,7 @@
 <translation id="9220525904950070496">Fjern konto</translation>
 <translation id="9220820413868316583">Løft fingeren, og prøv deretter på nytt.</translation>
 <translation id="923467487918828349">Vis alle</translation>
+<translation id="929117907539171075">Frakoblede data i installerte apper blir også slettet</translation>
 <translation id="930268624053534560">Detaljerte tidsstempler</translation>
 <translation id="932327136139879170">Gå til startsiden</translation>
 <translation id="932508678520956232">Kan ikke starte utskrift.</translation>
@@ -5736,6 +5764,7 @@
 <translation id="960719561871045870">Operatørkode</translation>
 <translation id="960987915827980018">Omtrent én time igjen</translation>
 <translation id="962802172452141067">Trestrukturen for bokmerkemappen</translation>
+<translation id="964057662886721376">Noen utvidelser kan gjøre maskinen tregere – spesielt utvidelser du ikke har installert med vilje.</translation>
 <translation id="964286338916298286">IT-administratoren din har deaktivert ekstrafunksjoner for Chrome på enheten din.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Program}other{Programmer}}</translation>
 <translation id="965211523698323809">Send og motta SMS-er fra <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Finn ut mer<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_or.xtb b/chrome/app/resources/generated_resources_or.xtb
index b925277..5f72329 100644
--- a/chrome/app/resources/generated_resources_or.xtb
+++ b/chrome/app/resources/generated_resources_or.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">କଷ୍ଟମ୍‌</translation>
 <translation id="1178581264944972037">ବିରତି</translation>
 <translation id="117916940443676133">ଆପଣଙ୍କର ସୁରକ୍ଷା କୀ ଏକ ପିନ୍ ଦ୍ୱାରା ସୁରକ୍ଷିତ ନୁହେଁ। ସାଇନ୍-ଇନ୍ ଡାଟା ପରିଚାଳନା କରିବାକୁ ପ୍ରଥମେ ଏକ ପିନ୍ ତିଆରି କରନ୍ତୁ।</translation>
-<translation id="118069123878619799">- ଆପଣଙ୍କର ଶାରୀରିକ ବୈଶିଷ୍ଟ୍ୟ, ଯେପରି ଉଚ୍ଚତା</translation>
 <translation id="1181037720776840403">ଅପସାରଣ</translation>
 <translation id="1183237619868651138">ସ୍ଥାନୀୟ କେଚ୍‍‍ରେ <ph name="EXTERNAL_CRX_FILE" /> ଇନ୍‍ଷ୍ଟଲ୍ କରାଯାଇପାରିବ ନାହିଁ।</translation>
 <translation id="1185924365081634987">ଆପଣ ଏହି ନେଟ୍‍ୱର୍କ ତ୍ରୁଟିର ସମାଧାନ କରିବା ପାଇଁ <ph name="GUEST_SIGNIN_LINK_START" />ଅତିଥି ଭାବରେ ବ୍ରାଉଜ୍ କରିବା<ph name="GUEST_SIGNIN_LINK_END" />କୁ ମଧ୍ୟ ଚେଷ୍ଟା କରିପାରିବେ।</translation>
@@ -350,6 +349,7 @@
 <translation id="1493892686965953381"><ph name="LOAD_STATE_PARAMETER" /> ପାଇଁ ଅପେକ୍ଷାରତ...</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> ଅନ୍ୟ ଉପଲବ୍ଧ ଥିବା ଡିଭାଇସ୍‌</translation>
 <translation id="1495677929897281669">ଟାବ୍‌କୁ ଫେରନ୍ତୁ</translation>
+<translation id="1499271269825557605">ଯଦି ଆପଣ କୌଣସି ଏକ୍ସଟେନ୍‌ସନ୍‍କୁ ଚିହ୍ନଟ କରିପାରୁନାହାଁନ୍ତି କିମ୍ବା ଆପଣଙ୍କର ବ୍ରାଉଜର୍ ଆଶା ଅନୁଯାୟୀ କାର୍ଯ୍ୟ କରୁନାହିଁ, ତେବେ ଆପଣ ଏଠାରେ ଏକ୍ସଟେନ୍‌ସନ୍‍ଗୁଡ଼ିକୁ ବନ୍ଦ କରିପାରିବେ କିମ୍ବା କଷ୍ଟମାଇଜ୍ କରିପାରିବେ।</translation>
 <translation id="1500297251995790841">ଅଜଣା ଡିଭାଇସ୍‌ [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">ଏହି ମାଲିକଙ୍କ ଆକାଉଣ୍ଟଟିକୁ ସର୍ବପ୍ରଥମେ ସାଇନ୍ ଇନ୍ କରିଥିବା ଆକାଉଣ୍ଟ ଭାବରେ ରଖିବା ଆବଶ୍ୟକ ଅଟେ৷</translation>
 <translation id="150411034776756821"><ph name="SITE" />କୁ କାଢ଼ି ଦିଅନ୍ତୁ</translation>
@@ -357,6 +357,7 @@
 <translation id="1507170440449692343">ଏହି ପୃଷ୍ଠାରୁ ଆପଣଙ୍କର କ୍ୟାମେରା ଆକ୍ସେସ୍ କରିବାକୁ ଅବରୋଧ କରାଯାଇଛି।</translation>
 <translation id="1507246803636407672">&amp;ଖାରଜ କରନ୍ତୁ</translation>
 <translation id="1508491105858779599">ଡିଭାଇସ୍ ଅନ୍‌ଲକ୍ କରିବା ପାଇଁ ଟିପଚିହ୍ନ ସେନ୍ସର୍‌ରେ ଆପଣଙ୍କର ଆଙ୍ଗୁଠି ରଖନ୍ତୁ ।</translation>
+<translation id="1508575541972276599">ବର୍ତ୍ତମାନର ସଂସ୍କରଣ Debian 9 (Stretch) ଅଟେ</translation>
 <translation id="1509281256533087115">USB ମାଧ୍ୟମରେ ଯେକୌଣସି <ph name="DEVICE_NAME_AND_VENDOR" /> ଆକ୍ସେସ୍‌ କରନ୍ତୁ</translation>
 <translation id="150962533380566081">ଅବୈଧ PUK।</translation>
 <translation id="1510030919967934016">ଏହି ପୃଷ୍ଟାକୁ ଆପଣଙ୍କର ଲୋକେସନ୍ ଟ୍ରାକ୍ କରିବାରୁ ବ୍ଲକ୍ କରାଯାଇଛି।</translation>
@@ -429,6 +430,7 @@
 <translation id="1601560923496285236">ଲାଗୁ କରନ୍ତୁ</translation>
 <translation id="1603914832182249871">(ଇନ୍‌କଗ୍ନିଟୋ)</translation>
 <translation id="1604432177629086300">ପ୍ରିଣ୍ଟ କରାଯାଇପାରିଲା ନାହିଁ। ପ୍ରିଣ୍ଟର୍ ଯାଞ୍ଚ କରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: ପାସ୍‍ୱାର୍ଡ ସିଙ୍କ୍ କାମ କରୁ ନାହିଁ</translation>
 <translation id="1607139524282324606">ଏଣ୍ଟ୍ରି ଖାଲି କରନ୍ତୁ</translation>
 <translation id="1608626060424371292">ଏହି ଉପଯୋଗକର୍ତ୍ତାଙ୍କୁ କାଢ଼ିଦିଅନ୍ତୁ</translation>
 <translation id="1608668830839595724">ଚୟନ କରାଯାଇଥିବା ଆଇଟମ୍‌ଗୁଡ଼ିକ ପାଇଁ ଅଧିକ ପଦକ୍ଷେପଗୁଡ଼ିକ</translation>
@@ -555,6 +557,8 @@
 <translation id="177336675152937177">ହୋଷ୍ଟ କରାଯାଇଥିବା ଆପ୍‍ ଡାଟା</translation>
 <translation id="1776712937009046120">ଉପଯୋଗକର୍ତ୍ତାଙ୍କୁ ଯୋଗ କରନ୍ତୁ</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">ଏହି ଡିଭାଇସ୍ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ଙ୍କ ଦ୍ୱାରା ପରିଚାଳିତ ହେଉଛି।
+    ଆପଣଙ୍କର <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ଆକାଉଣ୍ଟରେ ସାଇନ୍ ଇନ୍ ଜାରି ରଖିବାକୁ, ଦୟାକରି "ପରବର୍ତ୍ତୀ"ରେ କ୍ଲିକ୍ କରନ୍ତୁ।</translation>
 <translation id="1779652936965200207">ଦୟାକରି ଏହି ପାସ୍‌କୀ "<ph name="DEVICE_NAME" />"ରେ ଲେଖନ୍ତୁ</translation>
 <translation id="1780152987505130652">ଗୋଷ୍ଠୀ ବନ୍ଦ କରନ୍ତୁ</translation>
 <translation id="1781291988450150470">ବର୍ତ୍ତମାନର ପିନ୍</translation>
@@ -742,6 +746,7 @@
 <translation id="2048653237708779538">କାର୍ଯ୍ୟ ଉପଲବ୍ଧ ନାହିଁ</translation>
 <translation id="2050339315714019657">ପୋଟ୍ରେଟ୍‌</translation>
 <translation id="2053312383184521053">ନିଷ୍କ୍ରିୟ ସ୍ଥିତିରେ ଥିବା ଡାଟା</translation>
+<translation id="2055585478631012616">ଖୋଲା ଥିବା ଟାବ୍‍ଗୁଡ଼ିକ ସହିତ, ଆପଣଙ୍କୁ ଏହି ସାଇଟ୍‍ଗୁଡ଼ିକରୁ ସାଇନ୍ ଆଉଟ୍ କରିଦିଆଯିବ</translation>
 <translation id="205560151218727633">Google ଆସିଷ୍ଟାଣ୍ଟ ଲୋଗୋ</translation>
 <translation id="2058456167109518507">ଡିଭାଇସ୍ ଚିହ୍ନଟ କରାଯାଇଛି</translation>
 <translation id="2059913712424898428">ସମୟ କ୍ଷେତ୍ର</translation>
@@ -757,6 +762,7 @@
 <translation id="2079545284768500474">ପୂର୍ବବତ୍</translation>
 <translation id="2080070583977670716">ଅଧିକ ସେଟିଂ</translation>
 <translation id="2087822576218954668">ପ୍ରିଣ୍ଟ କରନ୍ତୁ: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN ନେଟ୍‌ୱାର୍କ</translation>
 <translation id="2089566709556890888">Google Chrome ସହ ସୁରକ୍ଷିତ ଭାବେ ବ୍ରାଉଜ୍ କରନ୍ତୁ</translation>
 <translation id="2089795179672254991">ଯଦି କୌଣସି ସାଇଟ୍ କ୍ଲିପ୍‌ବୋର୍ଡରେ କପି କରାଯାଇଥିବା ଟେକ୍ସଟ୍ ଓ ଛବିକୁ ଦେଖିବାକୁ ଚାହେଁ, ସେତେବେଳେ ପଚାରନ୍ତୁ (ସୁପାରିଶ୍ କରାଯାଇଛି)</translation>
 <translation id="2090165459409185032">ଆପଣଙ୍କର ଆକାଉଣ୍ଟ ସୂଚନା ପୁନରୁଦ୍ଧାର କରିବାକୁ, ଏଠାକୁ ଯାଆନ୍ତୁ: google.com/accounts/recovery</translation>
@@ -980,6 +986,7 @@
 <translation id="2379232090534544565">ଏକ ସାଇଟ୍ ଅଡିଓ ଓ ଭିଡିଓ ଇନ୍‍ପୁଟ୍ ଆକ୍ସେସ୍ କରୁଛି</translation>
 <translation id="2379281330731083556">ସିଷ୍ଟମ୍ ଡାଏଲଗ୍ ବ୍ୟବହାର କରି ପ୍ରିଣ୍ଟ କରନ୍ତୁ... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">ପଠାଇବା ପୂର୍ବରୁ ପଚାରନ୍ତୁ (ସୁପାରିଶ୍ କରାଯାଇଛି)</translation>
+<translation id="2382818385048255866">ଆପଣଙ୍କର ଏକ୍ସଟେନ୍‍ସନ୍‍ଗୁଡ଼ିକ ଯାଞ୍ଚ କରନ୍ତୁ</translation>
 <translation id="2384436799579181135">ଏକ ତ୍ରୁଟି ହୋଇଛି। ଦୟାକରି ଆପଣଙ୍କର ପ୍ରିଣ୍ଟର୍ ଯାଞ୍ଚ କରନ୍ତୁ ଏବଂ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation>
 <translation id="2387458720915042159">ପ୍ରକ୍ସି ସଂଯୋଗ ପ୍ରକାର</translation>
 <translation id="2391419135980381625">ସାଧାରଣ ଫଣ୍ଟ</translation>
@@ -1030,6 +1037,7 @@
 <translation id="2462724976360937186">ସାର୍ଟିଫିକେଟ୍ କର୍ତ୍ତୁପକ୍ଷ କୀ' ID</translation>
 <translation id="2462752602710430187"><ph name="PRINTER_NAME" />କୁ ଯୋଗ କରାଗଲା</translation>
 <translation id="2464089476039395325">HTTP ପ୍ରୋକ୍ସି</translation>
+<translation id="2467267713099745100"><ph name="NETWORK_TYPE" /> ନେଟ୍‍ୱାର୍କ, ବନ୍ଦ ଅଛି</translation>
 <translation id="2468205691404969808">ଯଦିଓ, ଆପଣ ସେହି ପୃଷ୍ଠାଗୁଡ଼ିକୁ ଯାଆନ୍ତି ନାହିଁ, ତଥାପି ଆପଣଙ୍କର ପ୍ରାଥମିକତାକୁ ମନେରଖିବାକୁ ଏହା କୁକୀ ବ୍ୟବହାର କରେ</translation>
 <translation id="2468402215065996499">ଟାମାଗୋଚୀ</translation>
 <translation id="2469259292033957819">ଆପଣଙ୍କ ପାଖରେ କୌଣସି ସେଭ୍ କରାଯାଇଥିବା ପ୍ରିଣ୍ଟର୍ ନାହିଁ।</translation>
@@ -1284,6 +1292,7 @@
 <translation id="2800760947029405028">ଏକ ଛବି ଅପଲୋଡ୍ କରନ୍ତୁ</translation>
 <translation id="2803375539583399270">PIN ଲେଖନ୍ତୁ</translation>
 <translation id="2804043232879091219">ବିକଳ୍ପ ବ୍ରାଉଜର୍ ଖୋଲାଯାଇପାରିଲା ନାହିଁ</translation>
+<translation id="2804667941345577550">ଖୋଲା ଥିବା ଟାବ୍‍ଗୁଡ଼ିକ ସହିତ, ଆପଣଙ୍କୁ ଏହି ସାଇଟ୍‍ରୁ ସାଇନ୍ ଆଉଟ୍ କରିଦିଆଯିବ</translation>
 <translation id="2804680522274557040">କ୍ୟାମେରା ବନ୍ଦ କରାଯାଇଛି</translation>
 <translation id="2805646850212350655">Microsoft ଏନ୍‌କ୍ରିପ୍ଟିଂ ଫାଇଲ୍ ସିଷ୍ଟମ୍</translation>
 <translation id="2805756323405976993">ଆପ୍ସ</translation>
@@ -1291,6 +1300,7 @@
 <translation id="2806891468525657116">ସର୍ଟକଟ୍ ପୂର୍ବରୁ ବିଦ୍ୟମାନ ଅଛି</translation>
 <translation id="2807517655263062534">ଆପଣ ଡାଉନ୍‌ଲୋଡ୍ କରିଥିବା ଫାଇଲ୍‌ଗୁଡ଼ିକ ଏଠାରେ ଦେଖାଯିବ</translation>
 <translation id="2809586584051668049">ଏବଂ ଆହୁରି <ph name="NUMBER_ADDITIONAL_DISABLED" /> ଜଣ</translation>
+<translation id="2810390687497823527">ଯଦି ଆପଣ କୌଣସି ଏକ୍ସଟେନ୍‌ସନ୍‍କୁ ଚିହ୍ନଟ କରିପାରୁନାହାଁନ୍ତି କିମ୍ବା ଆପଣଙ୍କର ବ୍ରାଉଜ‍‍ର୍ ଆଶା ଅନୁଯାୟୀ କାର୍ଯ୍ୟ କରୁନାହିଁ, ତେବେ ଆପଣ ଏଠାରେ ଏକ୍ସଟେନ୍‌ସନ୍‍ଗୁଡ଼ିକୁ ବନ୍ଦ କରିପାରିବେ କିମ୍ବା କଷ୍ଟମାଇଜ୍ କରିପାରିବେ।</translation>
 <translation id="2812049959647166806">ଥଣ୍ଡର୍‌ବୋଲ୍ଟ ସମର୍ଥିତ ନୁହେଁ</translation>
 <translation id="2812944337881233323">ସାଇନ୍ ଆଉଟ୍ କରନ୍ତୁ ଏବଂ ପୁଣିଥରେ ପ୍ରବେଶ କରି ଦେଖନ୍ତୁ।</translation>
 <translation id="2812989263793994277">କୌଣସି ଛବି ଦେଖାନ୍ତୁ ନାହିଁ</translation>
@@ -1330,6 +1340,7 @@
 <translation id="2861941300086904918">ମୂଳ କ୍ଲାଏଣ୍ଟ ସୁରକ୍ଷା ପରିଚାଳକ</translation>
 <translation id="2864601841139725659">ଆପଣଙ୍କ ପ୍ରୋଫାଇଲ୍ ଛବି ସେଟ୍ କରନ୍ତୁ</translation>
 <translation id="2865919525181940183">ବର୍ତ୍ତମାନ ସ୍କ୍ରିନ୍‍‍ରେ ଥିବା ପ୍ରୋଗ୍ରାମ୍‍ଗୁଡ଼ିକର ସ୍କ୍ରିନ୍‍ସଟ୍</translation>
+<translation id="286674810810214575">ପାୱାର ଉତ୍ସଗୁଡ଼ିକୁ ଯାଞ୍ଚ କରାଯାଉଛି...</translation>
 <translation id="2867768963760577682">ପିନ୍‌ କରାଯାଇଥିବା ଟାବ୍‌ ଭାବରେ ଖୋଲନ୍ତୁ</translation>
 <translation id="2868746137289129307">ଏହି ଏକ୍ସଟେନ୍‌ସନ୍‌ ପୁରୁଣା ହୋ‍ଇଯାଇଛି ଏବଂ ଏଣ୍ଟର୍‌ପ୍ରାଇଜ୍ ନୀତି ଦ୍ଵାରା ଅକ୍ଷମ କରାଯାଇଛି। ଯେତେବେଳେ ଏକ ନୂତନ ସଂସ୍କରଣ ଉପଲବ୍ଧ ହେବ ଏହା ସ୍ୱଚାଳିତ ଭାବେ ସକ୍ଷମ ହୋ‍ଇପାରେ।</translation>
 <translation id="2870560284913253234">ସାଇଟ୍</translation>
@@ -1407,6 +1418,7 @@
 <translation id="2972581237482394796">&amp;ପୁନଃବତ୍</translation>
 <translation id="2973324205039581528">ସାଇଟ୍‌କୁ ମ୍ୟୁଟ୍ କରନ୍ତୁ</translation>
 <translation id="2977480621796371840">ଗୋଷ୍ଠୀରୁ କାଢ଼ି ଦିଅନ୍ତୁ</translation>
+<translation id="2979520980928493164">ଏକ ଅଧିକ ସୁସ୍ଥ ଓ ଆନନ୍ଦଦାୟକ Chrome</translation>
 <translation id="2979639724566107830">ନୂତନ ୱିଣ୍ଡୋରେ ଖୋଲନ୍ତୁ</translation>
 <translation id="2981113813906970160">ବଡ ମାଉସ୍‌ କର୍ସର୍‌ ଦେଖନ୍ତୁ</translation>
 <translation id="2982970937345031">ଅଜ୍ଞାତ ଭାବରେ ରିପୋର୍ଟ କରନ୍ତୁ</translation>
@@ -1513,6 +1525,7 @@
 <translation id="3143515551205905069">ସିଙ୍କ୍‌ ବାତିଲ୍‍ କରନ୍ତୁ</translation>
 <translation id="3143754809889689516">ଆରମ୍ଭରୁ ଚଲାନ୍ତୁ</translation>
 <translation id="3144647712221361880">ଏହିପରି ଭାବେ ଲିଙ୍କ୍ ଖୋଲନ୍ତୁ</translation>
+<translation id="3145187901750964977">ଭର୍ଚୁଆଲ୍ ମେସିନ୍ ଇନଷ୍ଟଲ୍ କରାଯାଇପାରିଲା ନାହିଁ। ଦୟାକରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ କିମ୍ବା ଆପଣଙ୍କ ସଂସ୍ଥାର ଡିଭାଇସ୍ ଆଡ୍‍ମିନିଷ୍ଟ୍ରେଟର୍‍ଙ୍କ ସହିତ ଯୋଗାଯୋଗ କରନ୍ତୁ। ତ୍ରୁଟି କୋଡ୍: <ph name="ERROR_CODE" />।</translation>
 <translation id="3149477159749171726">ସଂସ୍କରଣ:
     <ph name="LINUX_VERSION" />
 
@@ -1551,6 +1564,7 @@
 <translation id="3192947282887913208">ଅଡିଓ ଫାଇଲ୍ସ</translation>
 <translation id="3194737229810486521"><ph name="URL" /> ଆପଣଙ୍କର ଡିଭାଇସ୍‌ରେ ସ୍ଥାୟୀରୂପେ ଡାଟା ଷ୍ଟୋର୍ କରିବାକୁ ଚାହୁଁଛି</translation>
 <translation id="3199127022143353223">ସର୍ଭର୍‌ଗୁଡ଼ିକ</translation>
+<translation id="3201306578844503970">ଏକ ନେଟ୍‍ୱାର୍କ ତ୍ରୁଟି ଯୋଗୁଁ ଭର୍ଚୁଆଲ୍ ମେସିନ୍‍କୁ ଇନଷ୍ଟଲ୍ କରାଯାଇପାରିଲା ନାହିଁ। ଦୟାକରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ କିମ୍ବା ଆପଣଙ୍କ ସଂସ୍ଥାର ଡିଭାଇସ୍ ଆଡ୍‍ମିନିଷ୍ଟ୍ରେଟର୍‍ଙ୍କ ସହିତ ଯୋଗାଯୋଗ କରନ୍ତୁ। ତ୍ରୁଟି କୋଡ୍: <ph name="ERROR_CODE" />।</translation>
 <translation id="3201422919974259695">ଏଠାରେ ଉପଲବ୍ଧ ଥିବା USB ଡିଭାଇସ୍‍ଗୁଡ଼ିକ ଦେଖାଯିବ।</translation>
 <translation id="3202131003361292969">ପାଥ୍</translation>
 <translation id="3202173864863109533">ଏହି ଟାବ୍‌ର ଅଡିଓ ମ୍ୟୁଟ୍‌ କରାଯାଉଛି।</translation>
@@ -1887,7 +1901,6 @@
 <translation id="3678156199662914018">ପରିବର୍ଦ୍ଧନ: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">ଆପଣଙ୍କର ମତାମତ ପାଇଁ ଧନ୍ୟବାଦ। ଆପଣ ବର୍ତ୍ତମାନ ଅଫ୍‌ଲାଇନ୍ ଅଛନ୍ତି, ଏବଂ ଆପଣଙ୍କ ରିପୋର୍ଟ ପରେ ପଠାଯିବ।</translation>
 <translation id="3682824389861648626">ଗତିଶୀଳ ଥ୍ରେସ୍‌ହୋଲ୍ଡ</translation>
-<translation id="3683023058278427253">ଆପଣଙ୍କର ଡୋମେନ୍‌ ପାଇଁ ଆମେ ଏକାଧିକ ଲାଇସେନ୍ସର ପ୍ରକାର ଚିହ୍ନଟ କରିଛୁ। ଦୟାକରି ଜାରି ରଖିବାକୁ ଗୋଟିଏ ବାଛନ୍ତୁ।</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> ସ୍କ୍ରିନ୍ ସେୟାରିଂ ଅନୁରୋଧ</translation>
 <translation id="368789413795732264">ଫାଇଲ୍‌ଟି ଲେଖିବା ସମୟରେ ଏକ ତ୍ରୁଟି ହୋଇଥିଲା: <ph name="ERROR_TEXT" />।</translation>
 <translation id="3688507211863392146">ଆପଣ ଆପ୍ଲିକେସନ୍‍‍ରେ ଖୋଲିଥିବା ଫାଇଲ୍ ଓ ଫୋଲ୍ଡର୍‍ଗୁଡ଼ିକରେ ଲେଖନ୍ତୁ</translation>
@@ -2061,6 +2074,7 @@
 <translation id="389589731200570180">ଅତିଥିଙ୍କ ସହ ସେୟାର୍ କରନ୍ତୁ</translation>
 <translation id="389901847090970821">କୀ'ବୋର୍ଡ୍ ଚୟନ କରନ୍ତୁ</translation>
 <translation id="3899879303189199559">ଏକ ବର୍ଷରୁ ଅଧିକ ସମୟ ହେଲା ଅଫ୍‍ଲାଇନ ଅଛି</translation>
+<translation id="3900789207771372462">କିଛି ଏକ୍ସଟେନ୍‍ସନ୍ ବ୍ୟକ୍ତିଗତ ସୂଚନା ସହିତ - ଆପଣଙ୍କର ବ୍ରାଉଜିଂ କାର୍ଯ୍ୟକଳାପ ଦେଖିପାରିବ।</translation>
 <translation id="3900966090527141178">ପାସ୍‍ୱର୍ଡଗୁଡ଼ିକ ଏକ୍ସପୋର୍ଟ କରନ୍ତୁ</translation>
 <translation id="3901991538546252627"><ph name="NAME" />କୁ ସଂଯୋଗ ହେଉଛି</translation>
 <translation id="3905761538810670789">ଆପ୍ ମରାମତି କରନ୍ତୁ</translation>
@@ -2150,7 +2164,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" ଏହି ବ୍ରାଉଜର୍‌କୁ ଡିବଗ୍ କରୁଛନ୍ତି</translation>
 <translation id="4014432863917027322">"<ph name="EXTENSION_NAME" />" ଅପ୍‌ଡେଟ୍ କରିବେ?</translation>
 <translation id="4015163439792426608">ଏକ୍ସଟେନ୍‍ସନ୍‍ଗୁଡ଼ିକ ପାଇଛନ୍ତି କି? ଏକ ସ୍ଥାନରୁ ସହଜରେ <ph name="BEGIN_LINK" />ଆପଣଙ୍କର ଏକ୍ସଟେନ୍‍ସନ୍‍ଗୁଡ଼ିକ ପରିଚାଳନା କରନ୍ତୁ<ph name="END_LINK" />।</translation>
-<translation id="4020106588733303597">ଓହୋ!  ସିଷ୍ଟମ୍ ଉପଲବ୍ଧ ଲାଇସେନ୍ସ ଲୋଡ୍ କରିବାରେ ବିଫଳ ହେଲା।</translation>
 <translation id="4020327272915390518">ବିକଳ୍ପ ମେନ୍ୟୁ</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;ଅଭିଧାନରେ ଯୋଗ କରନ୍ତୁ</translation>
@@ -2188,6 +2201,7 @@
 <translation id="407520071244661467">ସ୍କେଲ୍</translation>
 <translation id="4075639477629295004"><ph name="FILE_NAME" />କୁ କାଷ୍ଟ କରିବାରେ ଅକ୍ଷମ।</translation>
 <translation id="4077917118009885966">ଏହି ସାଇଟ୍‌ରେ ବିଜ୍ଞାପନଗୁଡ଼ିକ ଅବରୋଧ କରାଯାଇଛି</translation>
+<translation id="4077919383365622693"><ph name="SITE" /> ଦ୍ୱାରା ଷ୍ଟୋର୍ କରାଯାଇଥିବା ସମସ୍ତ ଡାଟା ଏବଂ କୁକୀଗୁଡ଼ିକ ଖାଲି କରାଯିବ।</translation>
 <translation id="4079140982534148664">ଉନ୍ନତ ବନାନ ଯାଞ୍ଚ ବ୍ୟବହାର କରନ୍ତୁ</translation>
 <translation id="4081242589061676262">ଫାଇଲ୍ କାଷ୍ଟ କରିହେଲା ନାହିଁ।</translation>
 <translation id="4084682180776658562">ବୁକମାର୍କ</translation>
@@ -2262,6 +2276,7 @@
 <translation id="4181841719683918333">ଭାଷାସମୂହ</translation>
 <translation id="4184885522552335684">ଏକ ଡିସ୍‌ପ୍ଲେ ଘୁଞ୍ଚାଇବାକୁ ଡ୍ରାଗ୍ କରନ୍ତୁ</translation>
 <translation id="4194570336751258953">'କ୍ଲିକ୍ ପାଇଁ ଟାପ୍ କରନ୍ତୁ' ବଟନ୍‌କୁ ସକ୍ଷମ କରନ୍ତୁ</translation>
+<translation id="4194595472342532425">ଏକ କନଫିଗ୍‌ରେସନ୍ ସମସ୍ୟା କାରଣରୁ ପ୍ଲଗ୍‍ଇନ୍ VMକୁ ସେଟ୍ ଅପ୍ କରାଯାଇପାରିଲା ନାହିଁ। ଦୟାକରି ଆପଣଙ୍କ ସଂସ୍ଥାର ଡିଭାଇସ୍ ଆଡ୍‍ମିନିଷ୍ଟ୍ରେଟର୍‍ଙ୍କ ସହିତ ଯୋଗାଯୋଗ କରନ୍ତୁ। ତ୍ରୁଟି କୋଡ୍: <ph name="ERROR_CODE" />।</translation>
 <translation id="4195643157523330669">ନୂତନ ଟ୍ୟାବରେ ଖୋଲନ୍ତୁ</translation>
 <translation id="4195814663415092787">ଆପଣ ଯେଉଁଠାରୁ ଛାଡ଼ିଥିଲେ ସେହିଠାରୁ ଚେଷ୍ଟା କରନ୍ତୁ</translation>
 <translation id="4198146608511578238">ଆପଣଙ୍କ Google Assistant ସହ କଥା ହେବାକୁ ଲଞ୍ଚର୍ ଆଇକନ୍‌କୁ ଧରି ରଖନ୍ତୁ।</translation>
@@ -2485,6 +2500,7 @@
 <translation id="4549791035683739768">ଆପଣଙ୍କର ସୁରକ୍ଷା କୀରେ କୌଣସି ଟିପଚିହ୍ନ ଷ୍ଟୋର୍ କରାଯାଇନାହିଁ</translation>
 <translation id="4551763574344810652">ପୂର୍ବବତ୍ କରିବା ପାଇଁ <ph name="MODIFIER_KEY_DESCRIPTION" /> ଦବାନ୍ତୁ</translation>
 <translation id="4552089082226364758">ଫ୍ଲାସ୍‍</translation>
+<translation id="4552759165874948005"><ph name="NETWORK_TYPE" /> ନେଟ୍‍ୱାର୍କ, ସିଗ୍‍ନାଲ୍‍ର କ୍ଷମତା <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">ବାହ୍ୟ ସମ୍ପ୍ରସାରଣ ବିଦ୍ୟମାନ ଥିବା ସଂସ୍କରଣ ତୁଳନାରେ ସମାନ କିମ୍ବା ନିମ୍ନତର ସଂସ୍କରଣରେ ଅଛି।</translation>
 <translation id="4555769855065597957">ଛାୟା</translation>
 <translation id="4555863373929230635">ଆପଣଙ୍କ Google ଆକାଉଣ୍ଟରେ ପାସ୍‌ୱାର୍ଡଗୁଡ଼ିକୁ ସେଭ୍ କରିବା ପାଇଁ ସାଇନ୍ ଇନ୍ କରି ସିଙ୍କ୍ ଚାଲୁ କରନ୍ତୁ।</translation>
@@ -2562,6 +2578,7 @@
 <translation id="4665446389743427678"><ph name="SITE" /> ଦ୍ୱାରା ଷ୍ଟୋର୍‌ କରାଯାଇଥିବା ସମସ୍ତ ଡାଟା ଡିଲିଟ୍‌ କରାଯିବ।</translation>
 <translation id="4668721319092543482"><ph name="PLUGIN_NAME" />କୁ ସକ୍ଷମ କରିବା ପାଇଁ କ୍ଲିକ୍ କରନ୍ତୁ</translation>
 <translation id="4672657274720418656">ଶୁଦ୍ଧ ପୃଷ୍ଠା</translation>
+<translation id="46733273239502219">ଇନଷ୍ଟଲ୍ କରାଯାଇଥିବା ଆପ୍‍ଗୁଡ଼ିକରୁ ଅଫ୍‍ଲାଇନ୍ ଡାଟା ଖାଲି କରାଯିବ</translation>
 <translation id="4673442866648850031">ଷ୍ଟାଇଲସ୍ ବାହାର କରିବା ସମୟରେ ଷ୍ଟାଇଲସ୍ ଟୁଲ୍ ଖୋଲନ୍ତୁ</translation>
 <translation id="4677585247300749148"><ph name="URL" /> ଆକ୍ସେସିବିଲିଟୀ ଇଭେଣ୍ଟକୁ ପ୍ରତିକ୍ରିୟା ଦେବାକୁ ଚାହୁଁଛି</translation>
 <translation id="4677772697204437347">GPU ମେମୋରୀ</translation>
@@ -2653,7 +2670,6 @@
 <translation id="4823484602432206655">ଉପଯୋଗକର୍ତ୍ତା ଏବଂ ଡିଭାଇସ୍‌ ସେଟିଂସ୍‌ ପଢ଼ନ୍ତୁ ଏବଂ ପରିବର୍ତ୍ତନ କରନ୍ତୁ</translation>
 <translation id="4824958205181053313">ସିଙ୍କ୍‌ ବାତିଲ୍‌ କରିବେ?</translation>
 <translation id="4827675678516992122">ସଂଯୋଗ କରିହେଲା ନାହିଁ</translation>
-<translation id="4828937774870308359">ଅଷ୍ଟ୍ରେଲିଆନ୍</translation>
 <translation id="4829768588131278040">PIN ସେଟ୍‍ ଅପ୍‍ କରନ୍ତୁ</translation>
 <translation id="4830502475412647084">OS ଅପ୍‌ଡେଟ୍ ଇନ୍‌ଷ୍ଟଲ୍ ହେଉଛି</translation>
 <translation id="4830573902900904548">ଆପଣଙ୍କ <ph name="DEVICE_TYPE" />ର <ph name="NETWORK_NAME" /> ବ୍ୟବହାର କରି ଇଣ୍ଟର୍ନେଟ୍‌ ସହ ସଂଯୁକ୍ତ କରିବାକୁ ଅକ୍ଷମ ଅଟେ। ଦୟାକରି ଅନ୍ୟ ଏକ ନେଟ୍‌ୱର୍କ ବାଛନ୍ତୁ। <ph name="LEARN_MORE_LINK_START" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2694,6 +2710,7 @@
 <translation id="4876273079589074638">ଆମ ଇଞ୍ଜିନିୟର୍‌ମାନଙ୍କୁ ଏହି ଦୁର୍ଘଟଣାର ତଦନ୍ତ କରିବାରେ ଏବଂ ଠିକ୍ କରିବାରେ ସାହାଯ୍ୟ କରନ୍ତୁ। ଯଦି ଆପଣ ପାରୁଛନ୍ତି, ତେବେ ସଠିକ୍ ପର୍ଯ୍ୟାୟଗୁଡ଼ିକର ତାଲିକା କରନ୍ତୁ କୌଣସି ବିବରଣୀ ଅତି ଛୋଟ ନୁହେଁ!</translation>
 <translation id="4876895919560854374">ସ୍କ୍ରିନ୍‌କୁ ଲକ୍‌ ଏବଂ ଅନ୍‍ଲକ୍‍ କରନ୍ତୁ</translation>
 <translation id="4877276003880815204">ଉପାଦାନଗୁଡ଼ିକ ଯାଞ୍ଚ କରନ୍ତୁ</translation>
+<translation id="4878653975845355462">ଆପଣଙ୍କର ଆଡ୍‍ମିନିଷ୍ଟ୍ରେଟର୍‍ଙ୍କ ଦ୍ୱାରା କଷ୍ଟମ୍ ପୃଷ୍ଠପଟଗୁଡ଼ିକ ବନ୍ଦ କରାଯାଇଛି</translation>
 <translation id="4879491255372875719">ସ୍ୱଚାଳିତ (ଡିଫଲ୍ଟ)</translation>
 <translation id="4880328057631981605">ଆକ୍ସେସ୍ ପଏଣ୍ଟର ନାମ</translation>
 <translation id="4880827082731008257">ଇତିବୃତ୍ତି ସନ୍ଧାନ କରନ୍ତୁ</translation>
@@ -2749,10 +2766,10 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" ଏକ ସିରିୟାଲ୍ ପୋର୍ଟ ସହ ସଂଯୋଗ କରିବାକୁ ଚାହୁଁଛି</translation>
 <translation id="4944310289250773232"><ph name="SAML_DOMAIN" /> ଦ୍ୱାରା ପ୍ରାମାଣିକତା ସେବା ହୋଷ୍ଟ କରାଯାଇଛି</translation>
 <translation id="495170559598752135">କାର୍ଯ୍ୟ</translation>
+<translation id="4952981627953231344">ଏହି ଡିଭାଇସ୍‍‍ରେ ପ୍ଲଗ୍‍ଇନ୍ VMକୁ ଅନୁମତି ଦିଆଯାଏ ନାହିଁ। ଆପଣଙ୍କ ସଂସ୍ଥାର ଡିଭାଇସ୍ ଆଡ୍‍ମିନିଷ୍ଟ୍ରେଟର୍‍ଙ୍କ ସହିତ ଯୋଗାଯୋଗ କରନ୍ତୁ।</translation>
 <translation id="4953689047182316270">ଆକ୍ସେସିବିଲିଟୀ ଇଭେଣ୍ଟକୁ ପ୍ରତିକ୍ରିୟା ଦିଏ</translation>
 <translation id="4953808748584563296">ଡିଫଲ୍ଟ ଅରେଞ୍ଜ ଅବତାର</translation>
 <translation id="4955710816792587366">ଆପଣଙ୍କର ପିନ୍‌ ନମ୍ବର ବାଛନ୍ତୁ</translation>
-<translation id="4955814292505481804">ବାର୍ଷିକ</translation>
 <translation id="4959262764292427323">ପାସ୍‌ୱାର୍ଡଗୁଡ଼ିକ ଆପଣଙ୍କର Google ଆକାଉଣ୍ଟରେ ସେଭ୍ କରାଯାଇଛି ତେଣୁ ଆପଣ ସେଗୁଡ଼ିକୁ ଯେକୌଣସି ଡିଭାଇସ୍‌ରେ ବ୍ୟବହାର କରିପାରିବେ</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">ଆପଣଙ୍କର ଆଡ୍‍ମିନିଷ୍ଟ୍ରେଟର୍‌ଙ୍କ ଦ୍ଵାରା ଏହି ଆପ୍ ଇନ୍‍ଷ୍ଟଲ୍ କରାଯାଇଛି।</translation>
@@ -3234,7 +3251,6 @@
 <translation id="5659593005791499971">ଇମେଲ୍</translation>
 <translation id="5659833766619490117">ଏହି ପୃଷ୍ଠାଟିକୁ ଅନୁବାଦ କରାଯାଇପାରିବ ନାହିଁ</translation>
 <translation id="5660204307954428567"><ph name="DEVICE_NAME" /> ସହ ପେୟାର୍‌ କରନ୍ତୁ</translation>
-<translation id="5662477687021125631">ଲଗାତାର</translation>
 <translation id="5667546120811588575">Google Play ସେଟ୍‍ଅପ୍ କରାଯାଉଛି...</translation>
 <translation id="5669267381087807207">ସକ୍ରିୟ କରାଯାଉଛି</translation>
 <translation id="5669691691057771421">ନୂଆ ପିନ୍‍ ଲେଖନ୍ତୁ</translation>
@@ -3250,6 +3266,7 @@
 <translation id="5687326903064479980">ଟାଇମ୍‌ ଜୋନ୍</translation>
 <translation id="5689516760719285838">ଲୋକେସନ୍</translation>
 <translation id="56907980372820799">ଡାଟା ଲିଙ୍କ୍ କରନ୍ତୁ</translation>
+<translation id="5691180005790455277"><ph name="SITE_GROUP_NAME" /> ଏବଂ ଏହାର ଅଧୀନରେ ଥିବା ଯେ କୌଣସି ସାଇଟ୍ ଦ୍ୱାରା ଷ୍ଟୋର୍ କରାଯାଇଥିବା ସମସ୍ତ ଡାଟା ଓ କୁକୀ ଖାଲି କରାଯିବ।</translation>
 <translation id="5691511426247308406">ଫ୍ୟାମିଲି</translation>
 <translation id="5692183275898619210">ପ୍ରିଣ୍ଟିଂ ସମ୍ପୁର୍ଣ୍ଣ ହୋଇଛି</translation>
 <translation id="5696143504434933566">"<ph name="EXTENSION_NAME" />"ରୁ ଦୁର୍ବ୍ୟବହାରର ରିପୋର୍ଟ କରନ୍ତୁ</translation>
@@ -3336,7 +3353,6 @@
 <translation id="5815645614496570556">X.400 ଠିକଣା</translation>
 <translation id="5816434091619127343">ପ୍ରିଣ୍ଟର୍‍‍ରେ ଅନୁରୋଧ କରାଯାଇଥିବା ପରିବର୍ତ୍ତନ କାରଣରୁ ପ୍ରିଣ୍ଟର୍ ଅନୁପଯୋଗୀ ହୋଇଯିବ।</translation>
 <translation id="5817918615728894473">ପେୟାର୍ କରନ୍ତୁ</translation>
-<translation id="5819762621475381970">- ଆପଣଙ୍କ ରୁମ୍‍ର ଲେଆଉଟ୍</translation>
 <translation id="5821565227679781414">ସର୍ଟକଟ୍ ତିଆରି କରନ୍ତୁ</translation>
 <translation id="5825412242012995131">ଚାଲୁ ଅଛି (ସୁପାରିଶ୍ କରାଯାଇଛି)</translation>
 <translation id="5826395379250998812">ଆପଣଙ୍କର ଫୋନ୍ ସହ ଆପଣଙ୍କର <ph name="DEVICE_TYPE" />କୁ ସଂଯୁକ୍ତ କରନ୍ତୁ। <ph name="LINK_BEGIN" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="LINK_END" /></translation>
@@ -3472,6 +3488,7 @@
 <translation id="6007240208646052708">ଆପଣଙ୍କ ଭାଷାରେ ଭଏସ୍ ସନ୍ଧାନ ଉପଲବ୍ଧ ନାହିଁ।</translation>
 <translation id="6009781704028455063">ବିଲ୍ଟ-ଇନ୍ ସେନ୍ସର୍</translation>
 <translation id="6010869025736512584">ଭିଡିଓ ଇନପୁଟ୍ ଆକ୍ସେସ୍ ହେଉଛି</translation>
+<translation id="6011074160056912900">ଇଥର୍‌ନେଟ୍ ନେଟ୍‍ୱାର୍କ</translation>
 <translation id="6011193465932186973">ଟିପ ଚିହ୍ନ</translation>
 <translation id="6011449291337289699">ସାଇଟ୍‍ ଡାଟା ଖାଲି କରନ୍ତୁ</translation>
 <translation id="6015266928248016057">ଅବୈଧ PUK। ପୁଣି ଚେଷ୍ଟା କରିବାକୁ ବାକି ଅଛି: <ph name="RETRIES" /> ଥର।</translation>
@@ -3508,6 +3525,7 @@
 <translation id="6053401458108962351">&amp;ବ୍ରାଉଜିଂ ଡାଟା ଖାଲି କରନ୍ତୁ...</translation>
 <translation id="6055171183283175969">ଆପଣ ଲେଖିଥିବା ପାସ୍‍ୱର୍ଡ ଭୁଲ୍ ଅଛି।</translation>
 <translation id="6055392876709372977">RSA ଏନକ୍ରିପ୍ସନ୍ ସହିତ PKCS #1 SHA-256</translation>
+<translation id="6055907707645252013"><ph name="NETWORK_TYPE" /> ନେଟ୍‍ୱାର୍କ, ସଂଯୁକ୍ତ ହୋଇନାହିଁ</translation>
 <translation id="6056710589053485679">ସାଧାରଣ ପୁଣି ଲୋଡ୍ ହେଉଛି</translation>
 <translation id="6057381398996433816">ମୋସନ୍ ଏବଂ ଲାଇଟ୍ ସେନ୍ସର୍ ବ୍ୟବହାର କରିବା ପାଇଁ ଏହି ସାଇଟ୍‍କୁ ବ୍ଲକ୍ କରାଯାଇଛି।</translation>
 <translation id="6058567592298841668">ଭର୍ଚୁଆଲ୍ ମେସିନ୍‍ର ପ୍ଲଗ୍-ଇନ୍: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3571,6 +3589,7 @@
 <translation id="6136114942382973861">ଡାଉନ୍‌ଲୋଡ୍ ବାର୍‍କୁ ବନ୍ଦ କରନ୍ତୁ</translation>
 <translation id="6137767437444130246">ଉପଯୋଗକର୍ତ୍ତାଙ୍କ ସାର୍ଟିଫିକେଟ୍‌</translation>
 <translation id="6138680304137685902">SHA-384 ସହିତ X9.62 ECDSAର ସ୍ଵାକ୍ଷର</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, କୌଣସି ନେଟ୍‌ୱାର୍କ ନାହିଁ</translation>
 <translation id="6141988275892716286">ଡାଉନ୍‌ଲୋଡ୍ ସୁନିଶ୍ଚିତ କରନ୍ତୁ</translation>
 <translation id="6143186082490678276">ସାହାଯ୍ୟ ପାଆନ୍ତୁ</translation>
 <translation id="6144938890088808325">Chromebooks ଉନ୍ନତ କରିବାରେ ଆମକୁ ସାହାଯ୍ୟ କରନ୍ତୁ</translation>
@@ -3878,6 +3897,7 @@
 <translation id="6602956230557165253">ନାଭିଗେଟ୍‍ କରିବାକୁ ବାମ ଏବଂ ଡାହାଣ ତୀର କୀ ବ୍ୟବହାର କରନ୍ତୁ।</translation>
 <translation id="6605847144724004692">ବର୍ତ୍ତମାନ ପର୍ଯ୍ୟନ୍ତ କୌଣସି ଉପଯୋଗକର୍ତ୍ତାଙ୍କ ଦ୍ୱାରା ମୂଲ୍ୟାଙ୍କିତ କରାଯାଇନାହିଁ।</translation>
 <translation id="6607831829715835317">ଅଧିକ ଟୁ&amp;ଲ୍</translation>
+<translation id="6611972847767394631">ଆପଣଙ୍କର ଟାବ୍‍ଗୁଡ଼ିକୁ ଏଠାରେ ଖୋଜନ୍ତୁ</translation>
 <translation id="6612358246767739896">ସୁରକ୍ଷିତ ବିଷୟବସ୍ତୁ</translation>
 <translation id="6615455863669487791">ମୋତେ ଦେଖାନ୍ତୁ</translation>
 <translation id="6618097958368085618">ଯେକୌଣସି ମତେ ରଖନ୍ତୁ</translation>
@@ -3947,6 +3967,7 @@
 <translation id="6709133671862442373">ସମ୍ଵାଦ</translation>
 <translation id="6709357832553498500"><ph name="EXTENSIONNAME" /> ବ୍ୟବହାର କରି ସଂଯୋଗ କରନ୍ତୁ</translation>
 <translation id="6710213216561001401">ପୂର୍ବବର୍ତ୍ତୀ</translation>
+<translation id="6715803357256707211">ଆପଣଙ୍କ Linux ଆପ୍ଲିକେସନ୍‍ର ଇନ୍‌ଷ୍ଟଲେସନ୍ ସମୟରେ ଏକ ତ୍ରୁଟି ଦେଖାଦେଲା। ବିବରଣୀ ପାଇଁ ବିଜ୍ଞପ୍ତିରେ କ୍ଲିକ୍ କରନ୍ତୁ।</translation>
 <translation id="6721678857435001674">ଆପଣଙ୍କ ସୁରକ୍ଷା କୀ'ର ନିର୍ମାତାଙ୍କ ନାମ ଏବଂ ମଡେଲ୍ ନମ୍ବର ଦେଖନ୍ତୁ</translation>
 <translation id="6721972322305477112">&amp;ଫାଇଲ୍</translation>
 <translation id="672213144943476270">ଅତିଥି ରୂପରେ ବ୍ରାଉଜିଂ କରିବା ପୂର୍ବରୁ ଦୟାକରି ଆପଣଙ୍କର ପ୍ରୋଫାଇଲ୍‍କୁ ଅନ୍‍ଲକ୍ କରନ୍ତୁ।</translation>
@@ -3971,7 +3992,6 @@
 <translation id="674632704103926902">ଟାପ୍‍ କରି ଟାଣି ଆଣିବାକୁ ସକ୍ଷମ କରନ୍ତୁ</translation>
 <translation id="6748217015615267851">ରେଣ୍ଡରର୍: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">ହୁଏତ ଆପଣ ଆଗକୁ ବଢ଼ିପାରିବେ, କିନ୍ତୁ ଆପଣଙ୍କର ସିଙ୍କ୍ କରାଯାଇଥିବା ଡାଟା ଏବଂ ସେଟିଂସ୍ କେବଳ ରିଷ୍ଟୋର୍ କରାଯିବ। ସମସ୍ତ ସ୍ଥାନୀୟ ଡାଟା ଡିଲିଟ୍ ହୋଇଯିବ।</translation>
-<translation id="6748775883310276718">ସିଙ୍ଗଲ୍ ଆପ୍ କିଓସ୍କ</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (ଇନ୍‌କଗ୍ନିଟୋ)</translation>
 <translation id="6757101664402245801">URL କପି କରାଗଲା</translation>
 <translation id="6758056191028427665">ଆମେ କେଉଁଭଳି କାମ କରୁଛୁ, ତାହା ଆମକୁ ଜଣାନ୍ତୁ।</translation>
@@ -3981,6 +4001,7 @@
 <translation id="6769712124046837540">ପ୍ରିଣ୍ଟର୍ ଯୋଗ କରାଯାଉଛି...</translation>
 <translation id="6770664076092644100">NFC ମାଧ୍ୟମରେ ଯାଞ୍ଚ କରନ୍ତୁ</translation>
 <translation id="6771503742377376720">ଏକ ସାର୍ଟିଫିକେଟ୍ କର୍ତ୍ତୃପକ୍ଷ</translation>
+<translation id="6772339735733515807">ଆପଣଙ୍କର ଏକ୍ସଟେନ୍‍ସନ୍‍ଗୁଡ଼ିକୁ ପରିଚାଳନା କରନ୍ତୁ</translation>
 <translation id="6775163072363532304">ଉପଲବ୍ଧ ଡିଭାଇସ୍‍ଗୁଡ଼ିକ ଏଠାରେ ଦେଖାଯିବ।</translation>
 <translation id="6777817260680419853">ରିଡାଇରେକ୍ଟକୁ ଅବରୋଧ କରାଯାଇଛି।</translation>
 <translation id="6778737459546443941">ଆପଣଙ୍କର ଅଭିଭାବକ ଏପର୍ଯ୍ୟନ୍ତ ଏହାକୁ ଅନୁମୋଦିତ କରିନାହାନ୍ତି</translation>
@@ -4119,6 +4140,7 @@
 <translation id="6972180789171089114">ଅଡିଓ/ଭିଡିଓ</translation>
 <translation id="6972553992270299730">ଏଥିରେ ସିଷ୍ଟମ୍ ଫାଇଲ୍‌ଗୁଡ଼ିକ ଥିବା ଯୋଗୁଁ <ph name="ORIGIN" /> ଏହି ଫୋଲ୍ଡର୍‍ର ଫାଇଲ୍‌ଗୁଡ଼ିକୁ ଖୋଲିପାରିବ ନାହିଁ</translation>
 <translation id="6972754398087986839">ଆରମ୍ଭ କରନ୍ତୁ</translation>
+<translation id="6973611239564315524">Debian 10 (Buster)ର ଏକ ଅପଗ୍ରେଡ୍ ଉପଲବ୍ଧ ଅଛି</translation>
 <translation id="6974609594866392343">ଅଫ୍‍ଲାଇନ୍‌ ଡେମୋ ମୋଡ୍</translation>
 <translation id="6977381486153291903">ଫାର୍ମୱେର୍ ପୁନରାବୃତ୍ତି</translation>
 <translation id="6978121630131642226">ସନ୍ଧାନ ଇଞ୍ଜିନଗୁଡିକ</translation>
@@ -4578,6 +4600,7 @@
 <translation id="7644543211198159466">ରଙ୍ଗ ଏବଂ ଥିମ୍</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (ମାଲିକ)</translation>
 <translation id="7645681574855902035">Linux ବ୍ୟାକ୍‌ଅପ୍ ବାତିଲ୍ କରୁଛି</translation>
+<translation id="7646772052135772216">ପାସ୍‍ୱାର୍ଡ ସିଙ୍କ୍ କାମ କରୁ ନାହିଁ</translation>
 <translation id="7647403192093989392">ନିକଟ ଅତୀତରେ କୌଣସି କାର୍ଯ୍ୟକଳାପ ହୋ‍ଇନାହିଁ</translation>
 <translation id="7648992873808071793">ଏହି ଡିଭାଇସ୍‌ରେ ଫାଇଲ୍ ଷ୍ଟୋର୍ କରନ୍ତୁ</translation>
 <translation id="7649070708921625228">ସହାୟତା</translation>
@@ -4766,6 +4789,7 @@
 <translation id="7877451762676714207">ଅଜଣା ସର୍ଭର୍ ତ୍ରୁଟି। ଦୟାକରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ କିମ୍ବା ସର୍ଭର୍ ବ୍ୟବସ୍ଥାପକଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।</translation>
 <translation id="7877680364634660272">ଭ୍ରମଣ</translation>
 <translation id="7878562273885520351">ଆପଣଙ୍କର ପାସ୍‌ୱର୍ଡରେ ହେର୍‍ଫେର୍‌ କରାଯାଇଥାଇପାରେ</translation>
+<translation id="7879631849810108578">ସର୍ଟକଟ୍ ସେଟ୍ କରାଯାଇଛି: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">ଯେତେବେଳେ ଆପଣ ରିଷ୍ଟାର୍ଟ କରିବେ ସେତେବେଳେ ସ୍ଥାନୀୟ ଡାଟା ଡିଲିଟ୍ ହୋଇଯିବ</translation>
 <translation id="7881483672146086348">ଆକାଉଣ୍ଟ ଦେଖନ୍ତୁ</translation>
 <translation id="7882358943899516840">ପ୍ରଦାତା ପ୍ରକାର</translation>
@@ -4852,6 +4876,7 @@
 <translation id="7987814697832569482">ସର୍ବଦା ଏହି VPN ମାଧ୍ୟମରେ ସଂଯୋଗ କରନ୍ତୁ</translation>
 <translation id="7988355189918024273">ଆକ୍ସେସ୍‌ବିଲିଟୀ ବୈଶିଷ୍ଟ୍ୟଗୁଡ଼ିକ ସକ୍ଷମ କରନ୍ତୁ</translation>
 <translation id="7991296728590311172">ଆକ୍ସେସ୍ ସେ୍ଟିଂସ୍ ସ୍ୱିଚ୍ କରନ୍ତୁ</translation>
+<translation id="7994350303002908848">ପ୍ଲଗ୍‍ଇନ୍ VM ଇନଷ୍ଟଲ୍ କରାଯାଇପାରିଲା ନାହିଁ। ଦୟାକରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ କିମ୍ବା ଆପଣଙ୍କ ସଂସ୍ଥାର ଡିଭାଇସ୍ ଆଡ୍‍ମିନିଷ୍ଟ୍ରେଟର୍‍ଙ୍କ ସହିତ ଯୋଗାଯୋଗ କରନ୍ତୁ। ତ୍ରୁଟି କୋଡ୍: <ph name="ERROR_CODE" />।</translation>
 <translation id="7994702968232966508">EAP ପଦ୍ଧତି</translation>
 <translation id="7997826902155442747">ପ୍ରକ୍ରିୟା ପ୍ରାଥମିକତା</translation>
 <translation id="7999229196265990314">ନିମ୍ନୋକ୍ତ ଫାଇଲ୍‌ଗୁଡ଼ିକ ତିଆରି ହୋ‍ଇଛି:
@@ -4942,7 +4967,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{କୌଣସି ତୃତୀୟ-ପକ୍ଷ କୁକୀ ନାହିଁ}=1{1ଟି ତୃତୀୟ-ପକ୍ଷ କୁକୀ ବ୍ଲକ୍ କରାଯାଇଛି}other{#ଟି ତୃତୀୟ-ପକ୍ଷ କୁକୀ ବ୍ଲକ୍ କରାଯାଇଛି}}</translation>
 <translation id="810875025413331850">ନିକଟରେ କୌଣସି ଡିଭାଇସ୍ ମିଳି ନାହିଁ।</translation>
 <translation id="8111155949205007504">ଆପଣଙ୍କର iPhone ସହିତ ଏହି ପାସ୍‌ୱର୍ଡ ସେୟାର୍ କରନ୍ତୁ</translation>
-<translation id="8113043281354018522">ଲାଇସେନ୍ସ ପ୍ରକାର ବାଛନ୍ତୁ</translation>
 <translation id="8114875720387900039">ହରିଜୋଣ୍ଟାଲ୍ ଭାବରେ ଭାଗ କରନ୍ତୁ</translation>
 <translation id="8116972784401310538">&amp;ବୁକମାର୍କ ପରିଚାଳକ</translation>
 <translation id="8117620576188476503">ସ୍ଥିତି ଟ୍ରେ ସହ ସଂଯୋଗ, ଅପ୍‌ଡେଟ୍‌ ଏବଂ ସେଟିଂସ୍‌ ପରିଚାଳନା କରନ୍ତୁ। କୀବୋର୍ଡ ଦ୍ୱାରା ଏଠାରେ ପ୍ରାପ୍ତ କରିବାକୁ, Alt + Shift + S ଦବାନ୍ତୁ।</translation>
@@ -5098,6 +5122,7 @@
 <translation id="8327039559959785305">Linux ଫାଇଲ୍‌ଗୁଡ଼ିକର ମାଉଣ୍ଟିଙ୍ଗରେ ତ୍ରୁଟି। ଦୟାକରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation>
 <translation id="8335587457941836791">ସେଲ୍ଫରୁ ଅନପିନ୍ କରନ୍ତୁ</translation>
 <translation id="8336407002559723354"><ph name="MONTH_AND_YEAR" />ରେ ଅପ୍‌ଡେଟ୍‌ଗୁଡ଼ିକ ଶେଷ ହେଉଛି</translation>
+<translation id="8336721153892716270"><ph name="LANGUAGE" />ରେ ସିଷ୍ଟମ୍ ଟେକ୍ସଟ୍ ଦେଖାଇବା ପାଇଁ ଡିଭାଇସ୍‍କୁ ରିଷ୍ଟାର୍ଟ କରନ୍ତୁ</translation>
 <translation id="8336739000755212683">ଡିଭାଇସ୍ ଆକାଉଣ୍ଟ ଛବି ବଦଳାନ୍ତୁ</translation>
 <translation id="8337047789441383384">ଆପଣ ଏହି ସୁରକ୍ଷା କୀ' କୁ ଆଗରୁ ପଞ୍ଜିକୃତ କରିସାରିଛନ୍ତି। ଆପଣଙ୍କୁ ଏହା ପୁଣି ପଞ୍ଜିକରଣ କରିବାକୁ ପଡ଼ିବ ନାହିଁ।</translation>
 <translation id="8338952601723052325">ଡେଭେଲପର୍‌ଙ୍କ ୱେବ୍‍ସାଇଟ୍</translation>
@@ -5141,6 +5166,7 @@
 <translation id="8400146488506985033">ଲୋକମାନଙ୍କୁ ପରିଚାଳନା କରନ୍ତୁ</translation>
 <translation id="8401432541486058167">ଆପଣଙ୍କର ସ୍ମାର୍ଟ କାର୍ଡ ସହିତ ସମ୍ବନ୍ଧିତ ଥିବା PIN ପ୍ରଦାନ କରନ୍ତୁ।</translation>
 <translation id="8405046151008197676">ନବୀନତମ ଅପ୍‌ଡେଟ୍‍ରୁ ହାଇଲାଇଟ୍ସ ପାଆନ୍ତୁ</translation>
+<translation id="8408068190360279472"><ph name="NETWORK_TYPE" /> ନେଟ୍‍ୱାର୍କ, ସଂଯୁକ୍ତ ହେଉଛି</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">ପ୍ରଥମେ ପଚାରନ୍ତୁ (ସୁପାରିଶ କରାଯାଇଛି)</translation>
 <translation id="8418445294933751433">&amp;ଟ୍ୟାବ୍ ଭାବେ ଦେଖାନ୍ତୁ</translation>
@@ -5430,6 +5456,7 @@
 <translation id="8807632654848257479">ସ୍ଥିର</translation>
 <translation id="8808478386290700967">ୱେବ୍ ଷ୍ଟୋର୍</translation>
 <translation id="8808686172382650546">କ୍ୟାଟ୍‌</translation>
+<translation id="8808744862003883508">ଏହି ପୃଷ୍ଠାରେ ଆପଣ Chromeରେ ଇନଷ୍ଟଲ୍ କରାଯାଇଥିବା ସମସ୍ତ ଏକ୍ସଟେନ୍‍ସନ୍ ଦେଖିପାରିବେ।</translation>
 <translation id="8809147117840417135">ହାଲୁକା ଟିଲ୍</translation>
 <translation id="8813698869395535039"><ph name="USERNAME" />ରେ ସାଇନ୍ ଇନ୍ କରାଯାଇପାରିବ ନାହିଁ</translation>
 <translation id="8813811964357448561">କାଗଜର ସୀଟ୍</translation>
@@ -5657,7 +5684,6 @@
 <translation id="9121814364785106365">ଏକ ପିନ୍‌ କରାଯାଇଥିବା ଟାବ୍‌ରୂପେ ଖୋଲନ୍ତୁ</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" />କୁ ବିରତ କରାଯାଇଛି</translation>
 <translation id="9124003689441359348">ସେଭ୍ ଥିବା ପାସ୍‌ୱର୍ଡ ଏଠାରେ ଦେଖାଯିବ।</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> rem.)</translation>
 <translation id="9128317794749765148">ସେଟ୍‌ଅପ୍‌ ସମ୍ପୂର୍ଣ୍ଣ କରାଯାଇ ପାରିଲା ନାହିଁ</translation>
 <translation id="9128870381267983090">ନେଟ୍‌ୱର୍କ ସହ ସଂଯୋଗ କରନ୍ତୁ</translation>
 <translation id="9130015405878219958">ଅବୈଧ ମୋଡ୍ ଏଣ୍ଟର୍ ହୋଇଛି।</translation>
@@ -5696,6 +5722,7 @@
 <translation id="9188732951356337132">ବ୍ୟବହାର ଓ ଡାଏଗ୍ନୋଷ୍ଟିକ୍ ଡାଟାକୁ ପଠାନ୍ତୁ। ଏହି ଡିଭାଇସ୍ ବର୍ତ୍ତମାନ ସ୍ୱଚାଳିତରୂପେ ଡାଏଗ୍ନୋଷ୍ଟିକ୍, ଆପ୍ ଏବଂ ଆପ୍ ବ୍ୟବହାର ଡାଟା Googleକୁ ପଠାଉଛି। ଏହା ଆପଣଙ୍କର ପିଲାକୁ ଚିହ୍ନଟ କରିବାରେ ବ୍ୟବହାର କରାଯିବ ନାହିଁ ଏବଂ ସିଷ୍ଟମ୍ ଓ ଆପ୍‌ର ସ୍ଥିରତା ତଥା ଅନ୍ୟାନ୍ୟ ଉନ୍ନତି ଆଣିବାରେ ସାହାଯ୍ୟ କରିବ। କିଛି ଏକତ୍ରିତ ଡାଟା ମଧ୍ୟ Google ଆପ୍ସ ଏବଂ ଏହାର ସହଭାଗୀ ଯେପରିକି, Android ଡେଭଲପର୍, ମାନଙ୍କୁ ସାହାଯ୍ୟ କରିବ। ଯଦି ଆପଣଙ୍କର ପିଲା ପାଇଁ ଅତିରିକ୍ତ ୱେବ୍ ଏବଂ ଆପ୍ ଗତିବିଧି ସେଟିଂସ୍ ଚାଲୁ ସ୍ଥିତିରେ ଥାଏ, ତେବେ ଏହି ଡାଟା ହୁଏତ ସେମାନଙ୍କର Google ଆକାଉଣ୍ଟରେ ସେଭ୍ ହୋଇଯିବ। <ph name="BEGIN_LINK2" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + ପୂର୍ବରୁ-ସେୟାର୍ କରାଯାଇଥିବା କୀ</translation>
 <translation id="920045321358709304"><ph name="SEARCH_ENGINE" />ରେ ଖୋଜନ୍ତୁ</translation>
+<translation id="9201023452444595544">ଯେ କୌଣସି ଅଫ୍‍ଲାଇନ୍ ଡାଟା ଖାଲି କରାଯିବ</translation>
 <translation id="9201220332032049474">ସ୍କ୍ରିନ୍ ଲକ୍ ବିକଳ୍ପ</translation>
 <translation id="9203398526606335860">&amp;ପ୍ରଫାଇଲିଂ ସକ୍ଷମ କରାଗଲା</translation>
 <translation id="9203904171912129171">ଏକ ଡିଭାଇସ୍ ଚୟନ କରନ୍ତୁ</translation>
@@ -5708,6 +5735,7 @@
 <translation id="9220525904950070496">ଆକାଉଣ୍ଟ କାଢ଼ିଦିଅନ୍ତୁ</translation>
 <translation id="9220820413868316583">ଆଙ୍ଗୁଠି ଉଠାନ୍ତୁ ଏହାପରେ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation>
 <translation id="923467487918828349">ସବୁ ଦେଖାନ୍ତୁ</translation>
+<translation id="929117907539171075">ଇନଷ୍ଟଲ୍ କରାଯାଇଥିବା ଆପ୍‍ରୁ ଅଫ୍‍ଲାଇନ୍ ଡାଟା ମଧ୍ୟ ଖାଲି କରାଯିବ</translation>
 <translation id="930268624053534560">ବିବରଣୀ ସହିତ ଟାଇମ୍‌ଷ୍ଟାମ୍ପସ୍‍</translation>
 <translation id="932327136139879170">Home</translation>
 <translation id="932508678520956232">ପ୍ରିଣ୍ଟିଂ ଆରମ୍ଭ କରିହେଲା ନାହିଁ।</translation>
@@ -5733,6 +5761,7 @@
 <translation id="960719561871045870">ଅପରେଟର୍ କୋଡ୍</translation>
 <translation id="960987915827980018">ପାଖାପାଖି 1 ଘଣ୍ଟା ବାକି ଅଛି</translation>
 <translation id="962802172452141067">ବୁକ୍‌ମାର୍କ ଫୋଲ୍ଡର୍ ଟ୍ରି</translation>
+<translation id="964057662886721376">କିଛି ଏକ୍ସଟେନ୍‍ସନ୍ ଆପଣଙ୍କୁ ମନ୍ଥର କରିପାରେ - ବିଶେଷତଃ ଯେଉଁଗୁଡ଼ିକୁ ଆପଣ ଇନଷ୍ଟଲ୍ କରିବାକୁ ଚାହୁଁନଥିବେ।</translation>
 <translation id="964286338916298286">ଆପଣଙ୍କର ଡିଭାଇସ୍‌ ପାଇଁ ଆପଣଙ୍କ IT ବ୍ୟବସ୍ଥାପକ Chrome Goodiesକୁ ଅକ୍ଷମ କରିଛନ୍ତି।</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{ଆପ୍ଲିକେସନ୍}other{ଆପ୍ଲିକେସନ୍}}</translation>
 <translation id="965211523698323809">ଆପଣଙ୍କର <ph name="DEVICE_TYPE" />ରୁ ଟେକ୍ସଟ୍ ମେସେଜ୍ ପଠାନ୍ତୁ ଏବଂ ପ୍ରାପ୍ତ କରନ୍ତୁ। <ph name="LINK_BEGIN" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_pa.xtb b/chrome/app/resources/generated_resources_pa.xtb
index 256c295b..44fa30b 100644
--- a/chrome/app/resources/generated_resources_pa.xtb
+++ b/chrome/app/resources/generated_resources_pa.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">ਵਿਉਂਂਤੀ</translation>
 <translation id="1178581264944972037">ਰੋਕੋ</translation>
 <translation id="117916940443676133">ਤੁਹਾਡੀ ਸੁਰੱਖਿਆ ਕੁੰਜੀ ਕਿਸੇ ਪਿੰਨ ਦੇ ਨਾਲ ਸੁਰੱਖਿਅਤ ਨਹੀਂ ਹੈ। ਸਾਈਨ-ਇਨ ਡਾਟੇ ਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਣ ਲਈ, ਪਹਿਲਾਂ ਕੋਈ ਪਿੰਨ ਬਣਾਓ।</translation>
-<translation id="118069123878619799">- ਤੁਹਾਡੀਆਂ ਸਰੀਰਕ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ, ਜਿਵੇਂ ਕਿ ਲੰਬਾਈ</translation>
 <translation id="1181037720776840403">ਹਟਾਓ</translation>
 <translation id="1183237619868651138">ਸਥਾਨਕ ਕੈਸ਼ੇ ਵਿੱਚ <ph name="EXTERNAL_CRX_FILE" /> ਨੂੰ ਸਥਾਪਤ ਨਹੀਂ ਕਰ ਸਕਦਾ।</translation>
 <translation id="1185924365081634987">ਤੁਹਾਨੂੰ ਇਸ ਨੈੱਟਵਰਕ ਗੜਬੜ ਨੂੰ ਠੀਕ ਕਰਨ ਲਈ <ph name="GUEST_SIGNIN_LINK_START" />ਮਹਿਮਾਨ ਦੇ ਤੌਰ ਤੇ ਬ੍ਰਾਊਜ਼ ਕਰੋ<ph name="GUEST_SIGNIN_LINK_END" /> ਵਿਕਲਪ ਨੂੰ ਵੀ ਵਰਤ ਕੇ ਦੇਖਣਾ ਚਾਹੀਦਾ ਹੈ।</translation>
@@ -1891,7 +1890,6 @@
 <translation id="3678156199662914018">ਐਕਸਟੈਂਸ਼ਨ: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">ਤੁਹਾਡੇ ਵਿਚਾਰ ਲਈ ਤੁਹਾਡਾ ਧੰਨਵਾਦ। ਤੁਸੀਂ ਹੁਣ ਆਫ਼ਲਾਈਨ ਹੋ, ਅਤੇ ਤੁਹਾਡੀ ਰਿਪੋਰਟ ਬਾਅਦ ਵਿੱਚ ਭੇਜੀ ਜਾਵੇਗੀ।</translation>
 <translation id="3682824389861648626">ਹਰਕਤ ਦੀ ਘੱਟੋ-ਘੱਟ ਸੀਮਾ</translation>
-<translation id="3683023058278427253">ਅਸੀਂ ਤੁਹਾਡੀ ਡੋਮੇਨ ਲਈ ਇੱਕ ਤੋਂ ਵੱਧ ਲਾਇਸੰਸ ਕਿਸਮਾਂ ਦਾ ਪਤਾ ਲਗਾਇਆ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਜਾਰੀ ਰੱਖਣ ਲਈ ਇੱਕ ਨੂੰ ਚੁਣੋ।</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> ਸਕ੍ਰੀਨ ਸ਼ੇਅਰਿੰਗ ਬੇਨਤੀ</translation>
 <translation id="368789413795732264">ਫਾਈਲ ਲਿਖਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਵੇਲੇ ਇੱਕ ਗੜਬੜ ਹੋਈ ਸੀ: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">ਉਹਨਾਂ ਫਾਈਲਾਂ ਅਤੇ ਫੋਲਡਰਾਂ ਵਿੱਚ ਲਿਖੋ ਜਿਹਨਾਂ ਨੂੰ ਤੁਸੀਂ ਐਪਲੀਕੇਸ਼ਨ ਵਿੱਚ ਖੋਲ੍ਹਦੇ ਹੋ</translation>
@@ -2155,7 +2153,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" ਵੱਲੋਂ ਇਸ ਬ੍ਰਾਊਜ਼ਰ ਨੂੰ ਡੀਬੱਗ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ</translation>
 <translation id="4014432863917027322">ਕੀ "<ph name="EXTENSION_NAME" />" ਨੂੰ ਰਿਪੇਅਰ ਕਰਨਾ ਹੈ?</translation>
 <translation id="4015163439792426608">ਕੀ ਤੁਹਾਡੇ ਕੋਲ ਐਕਸਟੈਂਸ਼ਨਾਂ ਹਨ? ਇੱਕ ਸੁਖਾਲੀ ਥਾਂ 'ਤੇ <ph name="BEGIN_LINK" />ਆਪਣੀਆਂ ਐਕਸਟੈਂਸ਼ਨਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ<ph name="END_LINK" />।</translation>
-<translation id="4020106588733303597">ਓਹੋ! ਸਿਸਟਮ ਵੱਲੋਂ ਉਪਲਬਧ ਲਾਇਸੰਸਾਂ ਨੂੰ ਲੋਡ ਕਰਨਾ ਅਸਫਲ ਰਿਹਾ।</translation>
 <translation id="4020327272915390518">ਵਿਕਲਪ ਮੀਨੂ</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;ਸ਼ਬਦਕੋਸ਼ ਵਿੱਚ ਜੋੜੋ</translation>
@@ -2658,7 +2655,6 @@
 <translation id="4823484602432206655">ਵਰਤੋਂਕਾਰ ਅਤੇ ਡੀਵਾਈਸ ਸੈਟਿੰਗਾਂ ਪੜ੍ਹੋ ਅਤੇ ਬਦਲੋ</translation>
 <translation id="4824958205181053313">ਕੀ ਸਮਕਾਲੀਕਰਨ ਰੱਦ ਕਰਨਾ ਹੈ?</translation>
 <translation id="4827675678516992122">ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ</translation>
-<translation id="4828937774870308359">ਆਸਟ੍ਰੇਲੀਆਈ</translation>
 <translation id="4829768588131278040">PIN ਸਥਾਪਤ ਕਰੋ</translation>
 <translation id="4830502475412647084">OS ਅੱਪਡੇਟ ਸਥਾਪਤ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ</translation>
 <translation id="4830573902900904548">ਤੁਹਾਡਾ <ph name="DEVICE_TYPE" /> <ph name="NETWORK_NAME" /> ਨੂੰ ਵਰਤਦੇ ਹੋਏ ਇੰਟਰਨੈਟ ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਵਿੱਚ ਅਸਮਰੱਥ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਦੂਜਾ ਨੈੱਟਵਰਕ ਚੁਣੋ। <ph name="LEARN_MORE_LINK_START" />ਹੋਰ ਜਾਣੋ<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2757,7 +2753,6 @@
 <translation id="4953689047182316270">ਪਹੁੰਚਯੋਗਤਾ ਇਵੈਂਟਾਂ 'ਤੇ ਪ੍ਰਤਿਕਿਰਿਆ ਕਰੋ</translation>
 <translation id="4953808748584563296">ਪੂਰਵ-ਨਿਰਧਾਰਤ ਸੰਤਰੀ ਅਵਤਾਰ</translation>
 <translation id="4955710816792587366">ਆਪਣਾ ਪਿੰਨ ਚੁਣੋ</translation>
-<translation id="4955814292505481804">ਸਲਾਨਾ</translation>
 <translation id="4959262764292427323">ਪਾਸਵਰਡ ਤੁਹਾਡੇ 'Google ਖਾਤੇ' ਵਿੱਚ ਰੱਖਿਅਤ ਕੀਤੇ ਜਾਂਦੇ ਹਨ ਤਾਂ ਕਿ ਤੁਸੀਂ ਉਹਨਾਂ ਨੂੰ ਕਿਸੇ ਡੀਵਾਈਸ 'ਤੇ ਵਰਤ ਸਕੋ</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">ਇਹ ਐਪ ਤੁਹਾਡੇ ਪ੍ਰਸ਼ਾਸਕ ਨੇ ਸਥਾਪਤ ਕੀਤੀ ਹੈ।</translation>
@@ -3239,7 +3234,6 @@
 <translation id="5659593005791499971">ਈਮੇਲ</translation>
 <translation id="5659833766619490117">ਇਸ ਪੰਨੇ ਦਾ ਅਨੁਵਾਦ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ</translation>
 <translation id="5660204307954428567"><ph name="DEVICE_NAME" /> ਨਾਲ ਜੋੜਾਬੱਧ ਕਰੋ</translation>
-<translation id="5662477687021125631">ਸਦੀਵੀ</translation>
 <translation id="5667546120811588575">Google Play ਸੈੱਟਅੱਪ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ...</translation>
 <translation id="5669267381087807207">ਸਕਿਰਿਆ ਕਰ ਰਿਹਾ ਹੈ</translation>
 <translation id="5669691691057771421">ਨਵਾਂ PIN ਦਾਖਲ ਕਰੋ</translation>
@@ -3341,7 +3335,6 @@
 <translation id="5815645614496570556">X.400 ਪਤਾ</translation>
 <translation id="5816434091619127343">ਬੇਨਤੀ ਕੀਤੇ ਪ੍ਰਿੰਟਰ ਬਦਲਾਵਾਂ ਨਾਲ ਪ੍ਰਿੰਟਰ ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੇਗੀ।</translation>
 <translation id="5817918615728894473">ਜੋੜਾ</translation>
-<translation id="5819762621475381970">- ਤੁਹਾਡੇ ਕਮਰੇ ਦਾ ਖਾਕਾ</translation>
 <translation id="5821565227679781414">ਸ਼ਾਰਟਕੱਟ ਬਣਾਓ</translation>
 <translation id="5825412242012995131">ਚਾਲੂ (ਸਿਫ਼ਾਰਸ਼ੀ)</translation>
 <translation id="5826395379250998812">ਆਪਣੀ <ph name="DEVICE_TYPE" /> ਨੂੰ ਆਪਣੇ ਫ਼ੋਨ ਨਾਲ ਕਨੈਕਟ ਕਰੋ। <ph name="LINK_BEGIN" />ਹੋਰ ਜਾਣੋ<ph name="LINK_END" /></translation>
@@ -3974,7 +3967,6 @@
 <translation id="674632704103926902">ਟੈਪ ਡ੍ਰੈਗਿੰਗ ਨੂੰ ਚਾਲੂ ਕਰੋ</translation>
 <translation id="6748217015615267851">ਰੈਂਡਰਰ: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">ਤੁਸੀਂ ਅੱਗੇ ਵੱਧ ਸਕਦੇ ਹੋ, ਪਰ ਸਿਰਫ਼ ਤੁਹਾਡਾ ਸਮਕਾਲੀਕਰਨ ਕੀਤਾ ਡਾਟਾ ਅਤੇ ਸੈੱਟਿੰਗਾਂ ਨੂੰ ਮੁੜ-ਬਹਾਲ ਕੀਤਾ ਜਾਵੇਗਾ। ਸਾਰਾ ਸਥਾਨਕ ਡਾਟਾ ਗੁਆਚ ਜਾਵੇਗਾ।</translation>
-<translation id="6748775883310276718">ਇਕਹਿਰੀ ਐਪ ਕਿਓਸਕ</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (ਗੁਮਨਾਮ)</translation>
 <translation id="6757101664402245801">URL ਕਾਪੀ ਕੀਤਾ ਗਿਆ</translation>
 <translation id="6758056191028427665">ਸਾਨੂੰ ਦੱਸੋ ਕਿ ਸਾਡਾ ਪ੍ਰਦਰਸ਼ਨ ਕਿਹੋ ਜਿਹਾ ਹੈ।</translation>
@@ -4945,7 +4937,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{ਕੋਈ ਤੀਜੀ-ਧਿਰ ਦੀਆਂ ਕੁਕੀ ਨਹੀਂ}=1{1 ਤੀਜੀ-ਧਿਰ ਦੀ ਕੁਕੀ ਨੂੰ ਬਲਾਕ ਕੀਤਾ ਗਿਆ ਹੈ}other{# ਤੀਜੀ-ਧਿਰ ਦੀਆਂ ਕੁਕੀਜ਼ ਨੂੰ ਬਲਾਕ ਕੀਤਾ ਗਿਆ ਹੈ}}</translation>
 <translation id="810875025413331850">ਕੋਈ ਨਜ਼ਦੀਕੀ ਡੀਵਾਈਸ ਨਹੀਂ ਮਿਲੇ।</translation>
 <translation id="8111155949205007504">ਇਸ ਪਾਸਵਰਡ ਨੂੰ ਆਪਣੇ iPhone ਨਾਲ ਸਾਂਝਾ ਕਰੋ</translation>
-<translation id="8113043281354018522">ਲਾਇਸੰਸ ਕਿਸਮ ਚੁਣੋ</translation>
 <translation id="8114875720387900039">ਲੇਟਵੇਂ ਤੌਰ 'ਤੇ ਵੰਡੋ</translation>
 <translation id="8116972784401310538">&amp;ਬੁੱਕਮਾਰਕ ਪ੍ਰਬੰਧਕ</translation>
 <translation id="8117620576188476503">ਅਵਸਥਾ ਟ੍ਰੇੇਅ ਦੇ ਨਾਲ ਕਨੈਕਸ਼ਨਾਂ, ਅੱਪਡੇਟਾਂ ਅਤੇ ਸੈਟਿੰਗਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ। ਇੱਥੇ ਕੀ-ਬੋਰਡ ਰਾਹੀਂ ਜਾਣ ਲਈ, Alt + Shift + S ਦਬਾਓ।</translation>
@@ -5660,7 +5651,6 @@
 <translation id="9121814364785106365">ਪਿੰਨ ਕੀਤੀ ਟੈਬ ਦੇ ਤੌਰ ਤੇ ਖੋਲ੍ਹੋ</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> ਰੋਕਿਆ ਗਿਆ</translation>
 <translation id="9124003689441359348">ਰੱਖਿਅਤ ਕੀਤੇ ਪਾਸਵਰਡ ਇੱਥੇ ਵਿਖਾਈ ਦੇਣਗੇ</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> ਬਾਕੀ)</translation>
 <translation id="9128317794749765148">ਸੈੱਟਅੱਪ ਪੂਰਾ ਨਹੀਂ ਹੋ ਸਕਿਆ</translation>
 <translation id="9128870381267983090">ਨੈੱਟਵਰਕ ਨਾਲ ਕਨੈਕਟ ਕਰੋ</translation>
 <translation id="9130015405878219958">ਅਵੈਧ ਮੋਡ ਦਾਖ਼ਲ ਕੀਤਾ ਗਿਆ।</translation>
diff --git a/chrome/app/resources/generated_resources_pl.xtb b/chrome/app/resources/generated_resources_pl.xtb
index ae1a696..d8fcec7 100644
--- a/chrome/app/resources/generated_resources_pl.xtb
+++ b/chrome/app/resources/generated_resources_pl.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Niestandardowe</translation>
 <translation id="1178581264944972037">Wstrzymaj</translation>
 <translation id="117916940443676133">Klucz bezpieczeństwa nie jest zabezpieczony kodem PIN. Aby zarządzać danymi logowania, najpierw utwórz kod PIN.</translation>
-<translation id="118069123878619799">– Twoje cechy fizyczne, np wzrost;</translation>
 <translation id="1181037720776840403">Usuń</translation>
 <translation id="1183237619868651138">Nie można zainstalować pliku <ph name="EXTERNAL_CRX_FILE" /> w lokalnej pamięci podręcznej.</translation>
 <translation id="1185924365081634987">Aby spróbować usunąć ten błąd sieci, możesz też użyć trybu <ph name="GUEST_SIGNIN_LINK_START" />przeglądania jako gość<ph name="GUEST_SIGNIN_LINK_END" />.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">Czekam na <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033">Inne dostępne urządzenia (<ph name="NUM_PRINTERS" />).</translation>
 <translation id="1495677929897281669">Wróć do karty</translation>
+<translation id="1499271269825557605">Jeśli nie rozpoznajesz jakiegoś rozszerzenia lub przeglądarka nie działa w oczekiwany sposób, tutaj możesz wyłączyć lub dostosować rozszerzenia.</translation>
 <translation id="1500297251995790841">Nieznane urządzenie [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">W sesji wielokrotnego logowania trzeba w pierwszej kolejności zalogować się na konto tego właściciela.</translation>
 <translation id="150411034776756821">Usuń <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Ta strona ma zablokowany dostęp do kamery.</translation>
 <translation id="1507246803636407672">&amp;Przerwij</translation>
 <translation id="1508491105858779599">Umieść palec na czytniku linii papilarnych, by odblokować urządzenie.</translation>
+<translation id="1508575541972276599">Obecna wersja to Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">Dostęp do każdego urządzenia <ph name="DEVICE_NAME_AND_VENDOR" /> przez USB</translation>
 <translation id="150962533380566081">Nieprawidłowy PUK.</translation>
 <translation id="1510030919967934016">Tej stronie zablokowano możliwość śledzenia Twojej lokalizacji.</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">Zastosuj</translation>
 <translation id="1603914832182249871">(Incognito)</translation>
 <translation id="1604432177629086300">Nie udało się wydrukować. Sprawdź drukarkę i spróbuj jeszcze raz.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: synchronizacja haseł nie działa</translation>
 <translation id="1607139524282324606">Wyczyść wpis</translation>
 <translation id="1608626060424371292">Usuń tego użytkownika</translation>
 <translation id="1608668830839595724">Więcej czynności dla wybranych elementów</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">Dane udostępnianych aplikacji</translation>
 <translation id="1776712937009046120">Dodaj użytkownika</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Tym urządzeniem zarządza domena <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    Kliknij „Dalej”, by kontynuować logowanie się na konto w domenie <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation>
 <translation id="1779652936965200207">Wpisz ten klucz na urządzeniu „<ph name="DEVICE_NAME" />”:</translation>
 <translation id="1780152987505130652">Zamknij grupę</translation>
 <translation id="1781291988450150470">Obecny kod PIN</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">Czynność niedostępna</translation>
 <translation id="2050339315714019657">Pionowo</translation>
 <translation id="2053312383184521053">Dane o stanie bezczynności</translation>
+<translation id="2055585478631012616">Wylogujemy Cię z tych stron, także na otwartych kartach</translation>
 <translation id="205560151218727633">Logo Asystenta Google</translation>
 <translation id="2058456167109518507">Wykryto urządzenie</translation>
 <translation id="2059913712424898428">Strefa czasowa</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">Cofnij</translation>
 <translation id="2080070583977670716">Więcej ustawień</translation>
 <translation id="2087822576218954668">Drukuj: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">Sieć VPN</translation>
 <translation id="2089566709556890888">Przeglądaj bezpiecznie w Google Chrome</translation>
 <translation id="2089795179672254991">Pytaj, gdy strona chce uzyskać dostęp do tekstu i obrazów skopiowanych do schowka (zalecane)</translation>
 <translation id="2090165459409185032">Aby odzyskać dane konta, wejdź na google.com/accounts/recovery</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">Strona ma dostęp do wejścia audio i wideo</translation>
 <translation id="2379281330731083556">Drukuj w oknie systemowym <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Pytaj przed wysłaniem (zalecane)</translation>
+<translation id="2382818385048255866">Sprawdzanie rozszerzeń</translation>
 <translation id="2384436799579181135">Wystąpił błąd. Sprawdź drukarkę i spróbuj ponownie.</translation>
 <translation id="2387458720915042159">Typ połączenia z serwerem proxy</translation>
 <translation id="2391419135980381625">Czcionka standardowa</translation>
@@ -1036,6 +1043,7 @@
 <translation id="2462724976360937186">Identyfikator klucza urzędu certyfikacji</translation>
 <translation id="2462752602710430187">Dodano: <ph name="PRINTER_NAME" /></translation>
 <translation id="2464089476039395325">Serwer proxy HTTP</translation>
+<translation id="2467267713099745100">Sieć <ph name="NETWORK_TYPE" />, wyłączona</translation>
 <translation id="2468205691404969808">Zapisuje Twoje ustawienia w plikach cookie, nawet jeśli nie odwiedzasz tych stron</translation>
 <translation id="2468402215065996499">Tamagotchi</translation>
 <translation id="2469259292033957819">Nie masz zapisanych drukarek.</translation>
@@ -1290,6 +1298,7 @@
 <translation id="2800760947029405028">Prześlij obraz</translation>
 <translation id="2803375539583399270">Wpisz kod PIN</translation>
 <translation id="2804043232879091219">Nie udało się otworzyć alternatywnej przeglądarki</translation>
+<translation id="2804667941345577550">Wylogujemy Cię z tej strony, także na otwartych kartach</translation>
 <translation id="2804680522274557040">Kamera wyłączona</translation>
 <translation id="2805646850212350655">System szyfrowania plików firmy Microsoft</translation>
 <translation id="2805756323405976993">Aplikacje</translation>
@@ -1297,6 +1306,7 @@
 <translation id="2806891468525657116">Skrót już istnieje</translation>
 <translation id="2807517655263062534">Tutaj wyświetlają się pobrane pliki</translation>
 <translation id="2809586584051668049">i jeszcze <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2810390687497823527">Jeśli nie rozpoznajesz jakiegoś rozszerzenia lub przeglądarka nie działa w oczekiwany sposób, tutaj możesz wyłączyć lub dostosować rozszerzenia.</translation>
 <translation id="2812049959647166806">Standard Thunderbolt nie jest obsługiwany</translation>
 <translation id="2812944337881233323">Wyloguj się i zaloguj się ponownie</translation>
 <translation id="2812989263793994277">Nie pokazuj żadnych grafik</translation>
@@ -1336,6 +1346,7 @@
 <translation id="2861941300086904918">Menedżer zabezpieczeń klienta rodzimego</translation>
 <translation id="2864601841139725659">Ustawianie zdjęcia profilowego</translation>
 <translation id="2865919525181940183">Zrzut ekranu z widocznymi na nim teraz programami</translation>
+<translation id="286674810810214575">Sprawdzam źródła zasilania...</translation>
 <translation id="2867768963760577682">Otwórz jako przypiętą kartę</translation>
 <translation id="2868746137289129307">To rozszerzenie jest nieaktualne i zostało wyłączone zgodnie z polityką firmy. Może zostać włączone automatycznie, gdy dostępna będzie nowa wersja.</translation>
 <translation id="2870560284913253234">Witryna</translation>
@@ -1413,6 +1424,7 @@
 <translation id="2972581237482394796">&amp;Ponów</translation>
 <translation id="2973324205039581528">Wycisz stronę</translation>
 <translation id="2977480621796371840">Usuń z grupy</translation>
+<translation id="2979520980928493164">Chrome w świetnym stanie</translation>
 <translation id="2979639724566107830">Otwórz w nowym oknie</translation>
 <translation id="2981113813906970160">Pokaż duży kursor myszy</translation>
 <translation id="2982970937345031">Zgłoś anonimowo</translation>
@@ -1519,6 +1531,7 @@
 <translation id="3143515551205905069">Anuluj synchronizację</translation>
 <translation id="3143754809889689516">Odtwórz od początku</translation>
 <translation id="3144647712221361880">Otwórz link jako</translation>
+<translation id="3145187901750964977">Nie udało się zainstalować maszyny wirtualnej. Spróbuj jeszcze raz lub skontaktuj się z administratorem urządzeń w Twojej organizacji. Kod błędu: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Wersja:
     <ph name="LINUX_VERSION" />
 
@@ -1557,6 +1570,7 @@
 <translation id="3192947282887913208">Pliki dźwiękowe</translation>
 <translation id="3194737229810486521"><ph name="URL" /> chce na stałe przechowywać dane na Twoim urządzeniu</translation>
 <translation id="3199127022143353223">Serwery</translation>
+<translation id="3201306578844503970">Z powodu błędu sieci nie udało się zainstalować maszyny wirtualnej. Spróbuj jeszcze raz lub skontaktuj się z administratorem urządzeń w Twojej organizacji. Kod błędu: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Tutaj będą widoczne dostępne urządzenia USB.</translation>
 <translation id="3202131003361292969">Ścieżka</translation>
 <translation id="3202173864863109533">Dźwięk z karty został wyciszony.</translation>
@@ -1893,7 +1907,6 @@
 <translation id="3678156199662914018">Rozszerzenie: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Dziękujemy za opinię. Jesteś teraz offline, więc Twoje zgłoszenie zostanie wysłane później.</translation>
 <translation id="3682824389861648626">Próg ruchu</translation>
-<translation id="3683023058278427253">Wykryliśmy wiele typów licencji w domenie. Wybierz jeden, by kontynuować.</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> – żądanie udostępnienia ekranu</translation>
 <translation id="368789413795732264">Wystąpił błąd podczas próby zapisu pliku: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Zapisywanie danych w plikach i folderach otwieranych w aplikacji</translation>
@@ -2067,6 +2080,7 @@
 <translation id="389589731200570180">Udostępnij gościom</translation>
 <translation id="389901847090970821">Wybierz klawiaturę</translation>
 <translation id="3899879303189199559">Offline od ponad roku</translation>
+<translation id="3900789207771372462">Niektóre rozszerzenia widzą Twoją aktywność związaną z przeglądaniem – w tym Twoje dane osobowe.</translation>
 <translation id="3900966090527141178">Eksportuj hasła</translation>
 <translation id="3901991538546252627">Łączę z: <ph name="NAME" /></translation>
 <translation id="3905761538810670789">Napraw aplikację</translation>
@@ -2157,7 +2171,6 @@
 <translation id="4013132157686828973">„<ph name="CLIENT_NAME" />” debuguje tę przeglądarkę</translation>
 <translation id="4014432863917027322">Naprawić „<ph name="EXTENSION_NAME" />”?</translation>
 <translation id="4015163439792426608">Korzystasz z rozszerzeń? <ph name="BEGIN_LINK" />Zarządzaj nimi<ph name="END_LINK" /> w jednym, łatwo dostępnym miejscu.</translation>
-<translation id="4020106588733303597">Ups, system nie mógł załadować dostępnych licencji.</translation>
 <translation id="4020327272915390518">Menu opcji</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Dodaj do słownika</translation>
@@ -2195,6 +2208,7 @@
 <translation id="407520071244661467">Skala</translation>
 <translation id="4075639477629295004">Nie udało się przesłać pliku <ph name="FILE_NAME" />.</translation>
 <translation id="4077917118009885966">Reklamy zostały zablokowane na tej stronie</translation>
+<translation id="4077919383365622693">Wszystkie dane i pliki cookie zapisane przez stronę <ph name="SITE" /> zostaną wyczyszczone.</translation>
 <translation id="4079140982534148664">Używaj ulepszonego sprawdzania pisowni</translation>
 <translation id="4081242589061676262">Nie można przesłać pliku.</translation>
 <translation id="4084682180776658562">Dodaj do zakładek</translation>
@@ -2269,6 +2283,7 @@
 <translation id="4181841719683918333">Języki</translation>
 <translation id="4184885522552335684">Przeciągnij, by przesunąć ekran</translation>
 <translation id="4194570336751258953">Włącz kliknięcie przez dotknięcie</translation>
+<translation id="4194595472342532425">Z powodu błędu konfiguracji nie udało się skonfigurować Plugin VM. Skontaktuj się z administratorem urządzeń w Twojej organizacji. Kod błędu: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Otwórz w nowej karcie</translation>
 <translation id="4195814663415092787">Kontynuuj tam, gdzie skończyłem</translation>
 <translation id="4198146608511578238">Aby porozmawiać z Asystentem Google, naciśnij i przytrzymaj ikonę menu z aplikacjami.</translation>
@@ -2492,6 +2507,7 @@
 <translation id="4549791035683739768">Na kluczu bezpieczeństwa nie ma zapisanych żadnych odcisków palców</translation>
 <translation id="4551763574344810652">Naciśnij <ph name="MODIFIER_KEY_DESCRIPTION" />, by cofnąć</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005">Sieć <ph name="NETWORK_TYPE" />, siła sygnału <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">Wersja rozszerzenia zewnętrznego jest starsza lub taka sama jak wersja obecna.</translation>
 <translation id="4555769855065597957">Cień</translation>
 <translation id="4555863373929230635">Aby zapisywać hasła na swoim koncie Google, zaloguj się i włącz synchronizację.</translation>
@@ -2569,6 +2585,7 @@
 <translation id="4665446389743427678">Wszystkie dane przechowywane przez stronę <ph name="SITE" /> zostaną usunięte.</translation>
 <translation id="4668721319092543482">Kliknij, by włączyć wtyczkę <ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">Zbadaj stronę</translation>
+<translation id="46733273239502219">Dane offline w zainstalowanych aplikacjach też zostaną wyczyszczone</translation>
 <translation id="4673442866648850031">Po wyjęciu rysika otwórz jego narzędzia</translation>
 <translation id="4677585247300749148"><ph name="URL" /> chce odpowiadać na zdarzenia dotyczące ułatwień dostępu</translation>
 <translation id="4677772697204437347">Pamięć GPU</translation>
@@ -2660,7 +2677,6 @@
 <translation id="4823484602432206655">Odczyt i zmiana ustawień użytkownika oraz urządzenia</translation>
 <translation id="4824958205181053313">Anulować synchronizację?</translation>
 <translation id="4827675678516992122">Nie udało się połączyć</translation>
-<translation id="4828937774870308359">Australijskie</translation>
 <translation id="4829768588131278040">Ustaw kod PIN</translation>
 <translation id="4830502475412647084">Instaluję aktualizację systemu operacyjnego</translation>
 <translation id="4830573902900904548"><ph name="DEVICE_TYPE" /> nie może się połączyć z internetem przez sieć <ph name="NETWORK_NAME" />. Wybierz inną sieć. <ph name="LEARN_MORE_LINK_START" />Więcej informacji<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2701,6 +2717,7 @@
 <translation id="4876273079589074638">Pomóż naszym inżynierom zbadać i naprawić tę awarię. Jeśli możesz, dokładnie opisz poszczególne czynności. Każdy szczegół jest ważny.</translation>
 <translation id="4876895919560854374">Blokowanie i odblokowywanie ekranu</translation>
 <translation id="4877276003880815204">Sprawdź elementy</translation>
+<translation id="4878653975845355462">Niestandardowe tła wyłączył administrator</translation>
 <translation id="4879491255372875719">Automatycznie (domyślnie)</translation>
 <translation id="4880328057631981605">Nazwa punktu dostępu</translation>
 <translation id="4880827082731008257">Przeszukaj historię</translation>
@@ -2756,10 +2773,10 @@
 <translation id="4943691134276646401">„<ph name="CHROME_EXTENSION_NAME" />” chce się połączyć z portem szeregowym</translation>
 <translation id="4944310289250773232">Ta usługa uwierzytelniania pochodzi z domeny <ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">Czynności</translation>
+<translation id="4952981627953231344">Wtyczka Plugin VM nie jest dozwolona na tym urządzeniu. Skontaktuj się z administratorem urządzenia w organizacji.</translation>
 <translation id="4953689047182316270">Odpowiadanie na zdarzenia dotyczące ułatwień dostępu</translation>
 <translation id="4953808748584563296">Domyślny pomarańczowy awatar</translation>
 <translation id="4955710816792587366">Ustaw kod PIN</translation>
-<translation id="4955814292505481804">Roczna</translation>
 <translation id="4959262764292427323">Hasła są zapisywane na Twoim koncie Google, dzięki czemu możesz ich używać na dowolnym urządzeniu</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Tę aplikację zainstalował administrator.</translation>
@@ -3241,7 +3258,6 @@
 <translation id="5659593005791499971">E-mail</translation>
 <translation id="5659833766619490117">Nie udało się przetłumaczyć tej strony</translation>
 <translation id="5660204307954428567">Sparować z urządzeniem <ph name="DEVICE_NAME" />?</translation>
-<translation id="5662477687021125631">Bezterminowa</translation>
 <translation id="5667546120811588575">Konfiguruję Google Play…</translation>
 <translation id="5669267381087807207">Aktywowanie</translation>
 <translation id="5669691691057771421">Wpisz nowy kod PIN</translation>
@@ -3257,6 +3273,7 @@
 <translation id="5687326903064479980">Strefa czasowa</translation>
 <translation id="5689516760719285838">Lokalizacja</translation>
 <translation id="56907980372820799">Połącz dane</translation>
+<translation id="5691180005790455277">Wszystkie dane i pliki cookie przechowywane przez grupę <ph name="SITE_GROUP_NAME" /> oraz wszystkie należące do niej strony zostaną wyczyszczone.</translation>
 <translation id="5691511426247308406">Rodzina</translation>
 <translation id="5692183275898619210">Drukowanie zakończone</translation>
 <translation id="5696143504434933566">Zgłoś nadużycie dotyczące rozszerzenia „<ph name="EXTENSION_NAME" />”</translation>
@@ -3343,7 +3360,6 @@
 <translation id="5815645614496570556">Adres X.400</translation>
 <translation id="5816434091619127343">Te zmiany uniemożliwiłyby korzystanie z drukarki.</translation>
 <translation id="5817918615728894473">Sparuj</translation>
-<translation id="5819762621475381970">– układ Twojego pokoju.</translation>
 <translation id="5821565227679781414">Utwórz skrót</translation>
 <translation id="5825412242012995131">Włącz (zalecane)</translation>
 <translation id="5826395379250998812">Połącz urządzenie <ph name="DEVICE_TYPE" /> z telefonem. <ph name="LINK_BEGIN" />Więcej informacji<ph name="LINK_END" /></translation>
@@ -3479,6 +3495,7 @@
 <translation id="6007240208646052708">Wyszukiwanie głosowe jest niedostępne w Twoim języku.</translation>
 <translation id="6009781704028455063">Wbudowany czujnik</translation>
 <translation id="6010869025736512584">Otwieram wejście wideo</translation>
+<translation id="6011074160056912900">Sieć Ethernet</translation>
 <translation id="6011193465932186973">Odcisk palca</translation>
 <translation id="6011449291337289699">Wyczyść dane witryny</translation>
 <translation id="6015266928248016057">Nieprawidłowy PUK. Pozostała liczba prób: <ph name="RETRIES" />.</translation>
@@ -3515,6 +3532,7 @@
 <translation id="6053401458108962351">&amp;Wyczyść dane przeglądania...</translation>
 <translation id="6055171183283175969">Podane hasło jest nieprawidłowe.</translation>
 <translation id="6055392876709372977">PKCS #1, SHA-256 z szyfrowaniem RSA</translation>
+<translation id="6055907707645252013">Sieć <ph name="NETWORK_TYPE" />, nie połączono</translation>
 <translation id="6056710589053485679">Załaduj ponownie (normalnie)</translation>
 <translation id="6057381398996433816">Tej witrynie zablokowano dostęp do czujników ruchu lub oświetlenia.</translation>
 <translation id="6058567592298841668">Maszyna wirtualna wtyczki: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3578,6 +3596,7 @@
 <translation id="6136114942382973861">Zamknij pasek pobranych plików</translation>
 <translation id="6137767437444130246">Certyfikat użytkownika</translation>
 <translation id="6138680304137685902">Podpis X9.62 ECDSA z SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, brak sieci</translation>
 <translation id="6141988275892716286">Potwierdź pobranie</translation>
 <translation id="6143186082490678276">Uzyskaj pomoc</translation>
 <translation id="6144938890088808325">Pomóż nam ulepszyć Chromebooki</translation>
@@ -3884,6 +3903,7 @@
 <translation id="6602956230557165253">Nawiguj za pomocą strzałek w lewo i w prawo.</translation>
 <translation id="6605847144724004692">Nikt jeszcze tego nie ocenił</translation>
 <translation id="6607831829715835317">Więcej narzę&amp;dzi</translation>
+<translation id="6611972847767394631">Tu znajdziesz karty</translation>
 <translation id="6612358246767739896">Treść chroniona</translation>
 <translation id="6615455863669487791">Pokaż mi</translation>
 <translation id="6618097958368085618">Zachowaj mimo to</translation>
@@ -3952,6 +3972,7 @@
 <translation id="6709133671862442373">Wiadomości</translation>
 <translation id="6709357832553498500">Połącz za pomocą rozszerzenia <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Wstecz</translation>
+<translation id="6715803357256707211">Podczas instalowania aplikacji na Linuksa wystąpił błąd. Kliknij powiadomienie, by zobaczyć szczegółowe informacje.</translation>
 <translation id="6721678857435001674">Odczytywanie marki i modelu klucza bezpieczeństwa</translation>
 <translation id="6721972322305477112">&amp;Plik</translation>
 <translation id="672213144943476270">Aby przeglądać jako gość, odblokuj swój profil.</translation>
@@ -3976,7 +3997,6 @@
 <translation id="674632704103926902">Włącz przeciąganie dotykiem</translation>
 <translation id="6748217015615267851">Mechanizm renderowania: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Możesz kontynuować, ale zostaną przywrócone tylko zsynchronizowane dane i ustawienia. Wszystkie dane lokalne zostaną utracone.</translation>
-<translation id="6748775883310276718">Pojedyncza aplikacja kiosku</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Incognito)</translation>
 <translation id="6757101664402245801">URL został skopiowany</translation>
 <translation id="6758056191028427665">Co sądzisz o efektach naszej pracy?</translation>
@@ -3986,6 +4006,7 @@
 <translation id="6769712124046837540">Dodaję drukarkę...</translation>
 <translation id="6770664076092644100">Zweryfikuj przez NFC</translation>
 <translation id="6771503742377376720">Jest urzędem certyfikacji</translation>
+<translation id="6772339735733515807">Zarządzanie rozszerzeniami</translation>
 <translation id="6775163072363532304">Tu pojawią się dostępne urządzenia.</translation>
 <translation id="6777817260680419853">Przekierowanie zostało zablokowane</translation>
 <translation id="6778737459546443941">Twój rodzic jeszcze na to nie zezwolił</translation>
@@ -4124,6 +4145,7 @@
 <translation id="6972180789171089114">Audio/wideo</translation>
 <translation id="6972553992270299730">Strona <ph name="ORIGIN" /> nie może otwierać plików w tym folderze, ponieważ zawiera on pliki systemowe</translation>
 <translation id="6972754398087986839">Rozpocznij</translation>
+<translation id="6973611239564315524">Dostępne jest uaktualnienie do Debiana 10 (Buster)</translation>
 <translation id="6974609594866392343">Tryb demo offline</translation>
 <translation id="6977381486153291903">Wersja oprogramowania</translation>
 <translation id="6978121630131642226">Wyszukiwarki</translation>
@@ -4583,6 +4605,7 @@
 <translation id="7644543211198159466">Kolor i motyw</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (właściciel)</translation>
 <translation id="7645681574855902035">Anuluję tworzenie kopii zapasowej Linuksa</translation>
+<translation id="7646772052135772216">Synchronizacja haseł nie działa</translation>
 <translation id="7647403192093989392">Brak ostatniej aktywności</translation>
 <translation id="7648992873808071793">Zapisywanie plików na tym urządzeniu</translation>
 <translation id="7649070708921625228">Pomoc</translation>
@@ -4771,6 +4794,7 @@
 <translation id="7877451762676714207">Nieznany błąd serwera. Spróbuj ponownie lub skontaktuj się z administratorem serwera.</translation>
 <translation id="7877680364634660272">Prezentacja</translation>
 <translation id="7878562273885520351">Ktoś mógł poznać Twoje hasło</translation>
+<translation id="7879631849810108578">Ustawiono skrót: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Dane lokalne zostaną usunięte po ponownym uruchomieniu</translation>
 <translation id="7881483672146086348">Wyświetl konto</translation>
 <translation id="7882358943899516840">Typ dostawcy</translation>
@@ -4857,6 +4881,7 @@
 <translation id="7987814697832569482">Zawsze łącz się przez tę sieć VPN</translation>
 <translation id="7988355189918024273">Włącz ułatwienia dostępu</translation>
 <translation id="7991296728590311172">Ustawienia funkcji Switch Access</translation>
+<translation id="7994350303002908848">Nie udało się zainstalować Plugin VM. Spróbuj jeszcze raz lub skontaktuj się z administratorem urządzeń w Twojej organizacji. Kod błędu: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">Metoda EAP</translation>
 <translation id="7997826902155442747">Priorytet procesu</translation>
 <translation id="7999229196265990314">Utworzono następujące pliki:
@@ -4949,7 +4974,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Brak plików cookie innych firm}=1{Zablokowano 1 plik cookie innej firmy}few{Zablokowano # pliki cookie innych firm}many{Zablokowano # plików cookie innych firm}other{Zablokowano # pliku cookie innych firm}}</translation>
 <translation id="810875025413331850">Nie znaleziono żadnych urządzeń w pobliżu.</translation>
 <translation id="8111155949205007504">Udostępnij to hasło za pomocą iPhone'a</translation>
-<translation id="8113043281354018522">Wybierz typ licencji</translation>
 <translation id="8114875720387900039">Podziel poziomo</translation>
 <translation id="8116972784401310538">&amp;Menedżer zakładek</translation>
 <translation id="8117620576188476503">Zarządzaj połączeniami, aktualizacjami i ustawieniami na pasku stanu. Aby je otworzyć za pomocą klawiatury, naciśnij Alt + Shift + S.</translation>
@@ -5106,6 +5130,7 @@
 <translation id="8327039559959785305">Błąd podczas montowania plików Linuksa. Spróbuj ponownie.</translation>
 <translation id="8335587457941836791">Odepnij z półki</translation>
 <translation id="8336407002559723354">Data ostatniej aktualizacji: <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Uruchom ponownie urządzenie, by przełączyć język systemu na <ph name="LANGUAGE" /></translation>
 <translation id="8336739000755212683">Zmień obraz konta na urządzeniu</translation>
 <translation id="8337047789441383384">Ten klucz bezpieczeństwa jest już zarejestrowany. Nie musisz rejestrować go ponownie.</translation>
 <translation id="8338952601723052325">Witryna dewelopera</translation>
@@ -5149,6 +5174,7 @@
 <translation id="8400146488506985033">Zarządzaj użytkownikami</translation>
 <translation id="8401432541486058167">Wpisz kod PIN powiązany z Twoją kartą elektroniczną.</translation>
 <translation id="8405046151008197676">Poznaj najważniejsze ulepszenia z najnowszej aktualizacji</translation>
+<translation id="8408068190360279472">Sieć <ph name="NETWORK_TYPE" />, łączę</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Najpierw zapytaj (zalecane)</translation>
 <translation id="8418445294933751433">&amp;Pokaż jako kartę</translation>
@@ -5438,6 +5464,7 @@
 <translation id="8807632654848257479">Stabilny</translation>
 <translation id="8808478386290700967">Chrome Web Store</translation>
 <translation id="8808686172382650546">Kot</translation>
+<translation id="8808744862003883508">Na tej stronie możesz zobaczyć wszystkie rozszerzenia zainstalowane w Chrome.</translation>
 <translation id="8809147117840417135">Jasny morski</translation>
 <translation id="8813698869395535039">Problem z logowaniem na konto <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">kartka</translation>
@@ -5665,7 +5692,6 @@
 <translation id="9121814364785106365">Otwórz jako przypiętą kartę</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> – wstrzymano</translation>
 <translation id="9124003689441359348">Tutaj pojawią się zapisane hasła</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (pozostało: <ph name="LICENSE_COUNT" />)</translation>
 <translation id="9128317794749765148">Nie udało się ukończyć konfiguracji</translation>
 <translation id="9128870381267983090">Połącz z siecią</translation>
 <translation id="9130015405878219958">Wprowadzono nieprawidłowy tryb.</translation>
@@ -5704,6 +5730,7 @@
 <translation id="9188732951356337132">Wysyłaj dane diagnostyczne oraz informacje o użyciu. To urządzenie automatycznie wysyła do Google dane diagnostyczne oraz informacje o używaniu urządzenia i aplikacji. Nie zostaną one użyte do zidentyfikowania Twojego dziecka. Wykorzystamy je, by poprawić stabilność systemu i aplikacji oraz wprowadzić inne ulepszenia. Niektóre dane zbiorcze pomogą nam też udoskonalić aplikacje Google lub zostaną wykorzystane przez naszych partnerów, na przykład deweloperów aplikacji na Androida. Jeśli na koncie Google dziecka włączysz ustawienie Dodatkowa aktywność w internecie i aplikacjach, te dane mogą być zapisywane na tym koncie. <ph name="BEGIN_LINK2" />Więcej informacji<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPSec + klucz wstępny</translation>
 <translation id="920045321358709304">Szukaj w: <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">Wszystkie dane offline zostaną wyczyszczone</translation>
 <translation id="9201220332032049474">Opcje blokady ekranu</translation>
 <translation id="9203398526606335860">&amp;Profilowanie włączone</translation>
 <translation id="9203904171912129171">Wybierz urządzenie</translation>
@@ -5716,6 +5743,7 @@
 <translation id="9220525904950070496">Usuń konto</translation>
 <translation id="9220820413868316583">Unieś i spróbuj ponownie.</translation>
 <translation id="923467487918828349">Pokaż wszystko</translation>
+<translation id="929117907539171075">Dane offline w zainstalowanej aplikacji też zostaną wyczyszczone</translation>
 <translation id="930268624053534560">Szczegółowe sygnatury czasowe</translation>
 <translation id="932327136139879170">Strona główna</translation>
 <translation id="932508678520956232">Nie można zainicjować drukowania.</translation>
@@ -5741,6 +5769,7 @@
 <translation id="960719561871045870">Kod operatora</translation>
 <translation id="960987915827980018">Zostało około 1 godziny</translation>
 <translation id="962802172452141067">Drzewo folderów zakładek</translation>
+<translation id="964057662886721376">Niektóre rozszerzenia mogą spowalniać przeglądarkę – zwłaszcza te zainstalowane mimowolnie.</translation>
 <translation id="964286338916298286">Twój administrator IT wyłączył możliwość korzystania z bonusów Chrome na tym urządzeniu.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Aplikacja}few{Aplikacje}many{Aplikacje}other{Aplikacje}}</translation>
 <translation id="965211523698323809">Wysyłanie i odbieranie SMS-ów na urządzeniu <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Więcej informacji<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_pt-BR.xtb b/chrome/app/resources/generated_resources_pt-BR.xtb
index 1e0660c..d627a33 100644
--- a/chrome/app/resources/generated_resources_pt-BR.xtb
+++ b/chrome/app/resources/generated_resources_pt-BR.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Personalizado</translation>
 <translation id="1178581264944972037">Pausar</translation>
 <translation id="117916940443676133">Sua chave de segurança não está protegida com um PIN. Para gerenciar dados de login, crie um PIN primeiro.</translation>
-<translation id="118069123878619799">- suas características físicas, como altura;</translation>
 <translation id="1181037720776840403">Remover</translation>
 <translation id="1183237619868651138">Não foi possível instalar o arquivo <ph name="EXTERNAL_CRX_FILE" /> no cache local.</translation>
 <translation id="1185924365081634987">Tente <ph name="GUEST_SIGNIN_LINK_START" />navegar como convidado<ph name="GUEST_SIGNIN_LINK_END" /> para corrigir este erro da rede.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">Aguardando <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> outros dispositivos disponíveis.</translation>
 <translation id="1495677929897281669">Voltar à guia</translation>
+<translation id="1499271269825557605">Se você não reconhece uma extensão, ou se seu navegador não está funcionando como o esperado, é possível desativar ou personalizar extensões aqui.</translation>
 <translation id="1500297251995790841">Dispositivo desconhecido [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Esta conta de proprietário precisa ser a primeira conta a fazer login em uma sessão de login múltiplo.</translation>
 <translation id="150411034776756821">Remover <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Esta página foi impedida de acessar sua câmera.</translation>
 <translation id="1507246803636407672">&amp;Descartar</translation>
 <translation id="1508491105858779599">Coloque o dedo no sensor de impressão digital para desbloquear o dispositivo.</translation>
+<translation id="1508575541972276599">A versão atual é Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">Acessar qualquer <ph name="DEVICE_NAME_AND_VENDOR" /> por USB</translation>
 <translation id="150962533380566081">PUK inválida.</translation>
 <translation id="1510030919967934016">Esta página foi impedida de rastrear o seu local.</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">Aplicar</translation>
 <translation id="1603914832182249871">(Modo anônimo)</translation>
 <translation id="1604432177629086300">Não foi possível imprimir. Verifique a impressora e tente novamente</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: a sincronização de senha não está funcionando</translation>
 <translation id="1607139524282324606">Limpar entrada</translation>
 <translation id="1608626060424371292">Remover este usuário</translation>
 <translation id="1608668830839595724">Mais ações para itens selecionados</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">Dados do aplicativo hospedado</translation>
 <translation id="1776712937009046120">Adicionar usuário</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Este dispositivo é gerenciado por <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    Clique em "Próxima" para continuar a fazer login na sua conta de <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation>
 <translation id="1779652936965200207">Insira esta senha em "<ph name="DEVICE_NAME" />":</translation>
 <translation id="1780152987505130652">Fechar grupo</translation>
 <translation id="1781291988450150470">PIN atual</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">Ação indisponível</translation>
 <translation id="2050339315714019657">Retrato</translation>
 <translation id="2053312383184521053">Dados em estado de inatividade</translation>
+<translation id="2055585478631012616">Sua conta será desconectada desses sites, inclusive nas guias abertas.</translation>
 <translation id="205560151218727633">Logotipo do Google Assistente</translation>
 <translation id="2058456167109518507">Dispositivo detectado</translation>
 <translation id="2059913712424898428">Fuso horário</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">Desfazer</translation>
 <translation id="2080070583977670716">Mais definições</translation>
 <translation id="2087822576218954668">Imprimir: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">Rede VPN</translation>
 <translation id="2089566709556890888">Navegue com segurança com o Google Chrome</translation>
 <translation id="2089795179672254991">Perguntar quando um site quiser ver os textos e imagens copiados para a área de transferência (recomendado)</translation>
 <translation id="2090165459409185032">Para recuperar informações da sua conta, acesse: google.com.br/accounts/recovery</translation>
@@ -793,7 +799,7 @@
 <translation id="2129825002735785149">Atualizar plug-in</translation>
 <translation id="2131077480075264">Não foi possível instalar o app "<ph name="APP_NAME" />" porque ele não é permitido por "<ph name="IMPORT_NAME" />"</translation>
 <translation id="21354425047973905">Ocultar PINs</translation>
-<translation id="2135456203358955318">Lupa ancorada</translation>
+<translation id="2135456203358955318">Lupa em área fixa</translation>
 <translation id="2135787500304447609">&amp;Retomar</translation>
 <translation id="2136372518715274136">Digite a nova senha</translation>
 <translation id="2136476978468204130">A senha longa informada está incorreta</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">Um site está acessando a entrada de áudio e vídeo</translation>
 <translation id="2379281330731083556">Imprimir utilizando caixa de diálogo de sistema... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Perguntar antes de enviar (recomendado)</translation>
+<translation id="2382818385048255866">Verificar extensões</translation>
 <translation id="2384436799579181135">Ocorreu um erro. Verifique sua impressora e tente novamente.</translation>
 <translation id="2387458720915042159">Tipo de conexão proxy</translation>
 <translation id="2391419135980381625">Fonte padrão</translation>
@@ -1036,6 +1043,7 @@
 <translation id="2462724976360937186">ID da chave da autoridade de certificação</translation>
 <translation id="2462752602710430187"><ph name="PRINTER_NAME" /> adicionada</translation>
 <translation id="2464089476039395325">Proxy HTTP</translation>
+<translation id="2467267713099745100">Rede <ph name="NETWORK_TYPE" />, desativada</translation>
 <translation id="2468205691404969808">Utiliza cookies para lembrar suas preferências, mesmo se você não acessar essas páginas</translation>
 <translation id="2468402215065996499">Tamagotchi</translation>
 <translation id="2469259292033957819">Você não tem impressoras salvas.</translation>
@@ -1290,6 +1298,7 @@
 <translation id="2800760947029405028">Fazer upload de uma imagem</translation>
 <translation id="2803375539583399270">Insira o PIN</translation>
 <translation id="2804043232879091219">Não foi possível abrir o navegador alternativo</translation>
+<translation id="2804667941345577550">Sua conta será desconectada desse site, inclusive nas guias abertas</translation>
 <translation id="2804680522274557040">Câmera desativada</translation>
 <translation id="2805646850212350655">Sistema de arquivos com criptografia da Microsoft</translation>
 <translation id="2805756323405976993">Apps</translation>
@@ -1297,6 +1306,7 @@
 <translation id="2806891468525657116">O atalho já existe</translation>
 <translation id="2807517655263062534">Os arquivos transferidos por download aparecem aqui</translation>
 <translation id="2809586584051668049">e mais <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2810390687497823527">Se você não reconhece uma extensão, ou se o navegador não está funcionando como esperado, é possível desativar ou personalizar extensões aqui.</translation>
 <translation id="2812049959647166806">O Thunderbolt não é compatível</translation>
 <translation id="2812944337881233323">Tente sair e fazer login novamente</translation>
 <translation id="2812989263793994277">Não mostrar nenhuma imagem</translation>
@@ -1336,6 +1346,7 @@
 <translation id="2861941300086904918">Gerenciador de segurança do Cliente nativo</translation>
 <translation id="2864601841139725659">Definir a foto do seu perfil</translation>
 <translation id="2865919525181940183">Captura de tela dos programas que estão em exibição</translation>
+<translation id="286674810810214575">Verificando fontes de energia…</translation>
 <translation id="2867768963760577682">Abrir como guia fixada</translation>
 <translation id="2868746137289129307">Esta extensão está desatualizada e desativada por uma política empresarial. Ela poderá ser ativada automaticamente quando uma versão recente estiver disponível.</translation>
 <translation id="2870560284913253234">Site</translation>
@@ -1413,6 +1424,7 @@
 <translation id="2972581237482394796">&amp;Refazer</translation>
 <translation id="2973324205039581528">Desativar som do site</translation>
 <translation id="2977480621796371840">Remover do grupo</translation>
+<translation id="2979520980928493164">Um Chrome mais saudável e feliz</translation>
 <translation id="2979639724566107830">Abrir em uma nova janela</translation>
 <translation id="2981113813906970160">Mostrar cursor grande do mouse</translation>
 <translation id="2982970937345031">Enviar feedback anonimamente</translation>
@@ -1519,6 +1531,7 @@
 <translation id="3143515551205905069">Cancelar sincronização</translation>
 <translation id="3143754809889689516">Reproduzir do início</translation>
 <translation id="3144647712221361880">Abrir link como</translation>
+<translation id="3145187901750964977">Não foi possível instalar a máquina virtual. Tente novamente ou entre em contato com o administrador do dispositivo da sua organização. Código do erro: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Versão:
     <ph name="LINUX_VERSION" />
 
@@ -1557,6 +1570,7 @@
 <translation id="3192947282887913208">Arquivos de áudio</translation>
 <translation id="3194737229810486521"><ph name="URL" /> quer armazenar permanentemente os dados no seu dispositivo</translation>
 <translation id="3199127022143353223">Servidores</translation>
+<translation id="3201306578844503970">Não foi possível instalar a máquina virtual devido a um erro de rede. Tente novamente ou entre em contato com o administrador do dispositivo da sua organização. Código do erro: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Os dispositivos USB disponíveis serão exibidos aqui.</translation>
 <translation id="3202131003361292969">Caminho</translation>
 <translation id="3202173864863109533">O áudio desta guia está sendo desativado.</translation>
@@ -1893,7 +1907,6 @@
 <translation id="3678156199662914018">Extensão: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Agradecemos seu feedback. Você está off-line no momento. Seu relatório será enviado mais tarde.</translation>
 <translation id="3682824389861648626">Limite de movimento</translation>
-<translation id="3683023058278427253">Detectamos vários tipos de licença para seu domínio. Escolha um para continuar.</translation>
 <translation id="3683524264665795342">Solicitação de compartilhamento da tela do <ph name="APP_NAME" /></translation>
 <translation id="368789413795732264">Ocorreu um erro ao tentar gravar o arquivo: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Realizar gravações em arquivos e pastas que você abre no aplicativo</translation>
@@ -2067,6 +2080,7 @@
 <translation id="389589731200570180">Compartilhar com convidados</translation>
 <translation id="389901847090970821">Selecionar teclado</translation>
 <translation id="3899879303189199559">Off-line há mais de um ano</translation>
+<translation id="3900789207771372462">Algumas extensões podem ver a atividade do seu navegador, incluindo informações pessoais.</translation>
 <translation id="3900966090527141178">Exportar senhas</translation>
 <translation id="3901991538546252627">Conectando-se a <ph name="NAME" /></translation>
 <translation id="3905761538810670789">Reparar app</translation>
@@ -2157,7 +2171,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" está depurando esse navegador</translation>
 <translation id="4014432863917027322">Reparar "<ph name="EXTENSION_NAME" />"?</translation>
 <translation id="4015163439792426608">Instalou extensões? <ph name="BEGIN_LINK" />Gerencie suas extensões<ph name="END_LINK" /> em um só lugar.</translation>
-<translation id="4020106588733303597">Ops! O sistema falhou ao carregar as licenças disponíveis.</translation>
 <translation id="4020327272915390518">Menu Opções</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Adicionar ao dicionário</translation>
@@ -2195,6 +2208,7 @@
 <translation id="407520071244661467">Escala</translation>
 <translation id="4075639477629295004">Não foi possível transmitir o arquivo <ph name="FILE_NAME" /></translation>
 <translation id="4077917118009885966">Anúncios bloqueados neste site</translation>
+<translation id="4077919383365622693">Todos os dados e cookies armazenados por <ph name="SITE" /> serão excluídos.</translation>
 <translation id="4079140982534148664">Usar a verificação ortográfica aprimorada</translation>
 <translation id="4081242589061676262">Não foi possível transmitir o arquivo.</translation>
 <translation id="4084682180776658562">Favorito</translation>
@@ -2269,6 +2283,7 @@
 <translation id="4181841719683918333">Idiomas</translation>
 <translation id="4184885522552335684">Arraste para mover uma tela</translation>
 <translation id="4194570336751258953">Ativar toque para clicar</translation>
+<translation id="4194595472342532425">Não foi possível definir a Plugin VM devido a um problema de configuração. Entre em contato com o administrador do dispositivo da sua organização. Código do erro: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Abrir em uma nova guia</translation>
 <translation id="4195814663415092787">Continuar de onde você parou</translation>
 <translation id="4198146608511578238">Basta tocar no ícone de tela de início e mantê-lo pressionado para falar com seu Google Assistente.</translation>
@@ -2492,6 +2507,7 @@
 <translation id="4549791035683739768">Sua chave de segurança não tem nenhuma impressão digital armazenada</translation>
 <translation id="4551763574344810652">Pressione <ph name="MODIFIER_KEY_DESCRIPTION" /> para desfazer</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005">Rede <ph name="NETWORK_TYPE" />, intensidade do sinal em <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">A extensão externa está na mesma versão ou em uma versão anterior à existente.</translation>
 <translation id="4555769855065597957">Shadow</translation>
 <translation id="4555863373929230635">Para salvar senhas na Conta do Google, faça login e ative a sincronização.</translation>
@@ -2569,6 +2585,7 @@
 <translation id="4665446389743427678">Todos os dados armazenados pelo site <ph name="SITE" /> serão excluídos.</translation>
 <translation id="4668721319092543482">Clique para ativar o plug-in <ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">Página de conversão</translation>
+<translation id="46733273239502219">Os dados off-line em apps instalados também serão removidos</translation>
 <translation id="4673442866648850031">Abrir ferramentas da stylus quando a stylus for removida</translation>
 <translation id="4677585247300749148"><ph name="URL" /> quer responder a eventos de acessibilidade</translation>
 <translation id="4677772697204437347">Memória do GPU</translation>
@@ -2660,7 +2677,6 @@
 <translation id="4823484602432206655">Ler e alterar as configurações do dispositivo e usuário</translation>
 <translation id="4824958205181053313">Cancelar sincronização?</translation>
 <translation id="4827675678516992122">Não foi possível conectar</translation>
-<translation id="4828937774870308359">Australiano</translation>
 <translation id="4829768588131278040">Configurar PIN</translation>
 <translation id="4830502475412647084">Instalando atualização do SO</translation>
 <translation id="4830573902900904548">Não foi possível conectar seu <ph name="DEVICE_TYPE" /> à Internet usando <ph name="NETWORK_NAME" />. Escolha outra rede. <ph name="LEARN_MORE_LINK_START" />Saiba mais<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2701,6 +2717,7 @@
 <translation id="4876273079589074638">Ajude nossos engenheiros a investigar e corrigir a falha. Indique as etapas exatas, se possível. Nenhum detalhe é irrelevante.</translation>
 <translation id="4876895919560854374">Bloquear e desbloquear a tela</translation>
 <translation id="4877276003880815204">Inspecionar elementos</translation>
+<translation id="4878653975845355462">Os planos de fundo personalizados foram desativados pelo administrador</translation>
 <translation id="4879491255372875719">Automático (padrão)</translation>
 <translation id="4880328057631981605">Nome do ponto de acesso</translation>
 <translation id="4880827082731008257">Histórico de pesquisa</translation>
@@ -2756,10 +2773,10 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" quer se conectar a uma porta serial</translation>
 <translation id="4944310289250773232">Este serviço de autenticação é hospedado por <ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">Ações</translation>
+<translation id="4952981627953231344">A Plugin VM não é permitida neste dispositivo. Entre em contato com o administrador de dispositivos da sua organização.</translation>
 <translation id="4953689047182316270">Responder a eventos de acessibilidade</translation>
 <translation id="4953808748584563296">Avatar laranja padrão</translation>
 <translation id="4955710816792587366">Escolher o PIN</translation>
-<translation id="4955814292505481804">Anual</translation>
 <translation id="4959262764292427323">As senhas são salvas na sua Conta do Google para que você possa usá-las em qualquer dispositivo</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" />: <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Este app foi instalado pelo seu administrador.</translation>
@@ -3242,7 +3259,6 @@
 <translation id="5659593005791499971">E-mail</translation>
 <translation id="5659833766619490117">Não foi possível traduzir esta página</translation>
 <translation id="5660204307954428567">Parear com o <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Perpétua</translation>
 <translation id="5667546120811588575">Configurando o Google Play…</translation>
 <translation id="5669267381087807207">Ativando</translation>
 <translation id="5669691691057771421">Digite o novo PIN</translation>
@@ -3258,6 +3274,7 @@
 <translation id="5687326903064479980">Fuso horário</translation>
 <translation id="5689516760719285838">Local</translation>
 <translation id="56907980372820799">Vincular dados</translation>
+<translation id="5691180005790455277">Todos os dados e cookies armazenados por <ph name="SITE_GROUP_NAME" /> e sites relacionados serão removidos.</translation>
 <translation id="5691511426247308406">Família</translation>
 <translation id="5692183275898619210">Impressão concluída</translation>
 <translation id="5696143504434933566">Denunciar abuso de "<ph name="EXTENSION_NAME" />"</translation>
@@ -3344,7 +3361,6 @@
 <translation id="5815645614496570556">Endereço X.400</translation>
 <translation id="5816434091619127343">As alterações solicitadas inutilizariam a impressora.</translation>
 <translation id="5817918615728894473">Parear</translation>
-<translation id="5819762621475381970">- o layout do ambiente.</translation>
 <translation id="5821565227679781414">Criar atalho</translation>
 <translation id="5825412242012995131">Ativado (recomendado)</translation>
 <translation id="5826395379250998812">Conecte seu <ph name="DEVICE_TYPE" /> ao smartphone. <ph name="LINK_BEGIN" />Saiba mais<ph name="LINK_END" /></translation>
@@ -3480,6 +3496,7 @@
 <translation id="6007240208646052708">A pesquisa por voz no seu idioma não está disponível.</translation>
 <translation id="6009781704028455063">Sensor integrado</translation>
 <translation id="6010869025736512584">Acessando entrada de vídeo</translation>
+<translation id="6011074160056912900">Rede Ethernet</translation>
 <translation id="6011193465932186973">Impressão digital</translation>
 <translation id="6011449291337289699">Limpar dados de sites</translation>
 <translation id="6015266928248016057">PUK inválida. Tentativas restantes: <ph name="RETRIES" />.</translation>
@@ -3516,6 +3533,7 @@
 <translation id="6053401458108962351">&amp;Limpar dados de navegação...</translation>
 <translation id="6055171183283175969">A senha inserida está incorreta.</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 com criptografia RSA</translation>
+<translation id="6055907707645252013">Rede <ph name="NETWORK_TYPE" />, não conectada</translation>
 <translation id="6056710589053485679">Recarregamento normal</translation>
 <translation id="6057381398996433816">Este site foi impedido de usar sensores de luz e movimento.</translation>
 <translation id="6058567592298841668">Plug-in de máquina virtual: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3579,6 +3597,7 @@
 <translation id="6136114942382973861">Fechar barra de downloads</translation>
 <translation id="6137767437444130246">Certificado do usuário</translation>
 <translation id="6138680304137685902">Assinatura X9.62 ECDSA com SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, sem rede</translation>
 <translation id="6141988275892716286">Confirmar download</translation>
 <translation id="6143186082490678276">Receber ajuda</translation>
 <translation id="6144938890088808325">Ajudar a melhorar os Chromebooks</translation>
@@ -3886,6 +3905,7 @@
 <translation id="6602956230557165253">Use as setas para esquerda e direita para navegar.</translation>
 <translation id="6605847144724004692">Ainda sem classificação dos usuários.</translation>
 <translation id="6607831829715835317">Mais ferramen&amp;tas</translation>
+<translation id="6611972847767394631">Veja suas guias aqui</translation>
 <translation id="6612358246767739896">Conteúdo protegido</translation>
 <translation id="6615455863669487791">Exibir</translation>
 <translation id="6618097958368085618">Manter assim mesmo</translation>
@@ -3954,6 +3974,7 @@
 <translation id="6709133671862442373">Notícias</translation>
 <translation id="6709357832553498500">Conectar usando <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Anterior</translation>
+<translation id="6715803357256707211">Ocorreu um erro durante a instalação do aplicativo Linux. Clique na notificação para ver mais detalhes.</translation>
 <translation id="6721678857435001674">Veja a marca e o modelo da sua chave de segurança</translation>
 <translation id="6721972322305477112">&amp;Arquivo</translation>
 <translation id="672213144943476270">Desbloqueie seu perfil antes de navegar como convidado.</translation>
@@ -3978,7 +3999,6 @@
 <translation id="674632704103926902">Ativar gesto de arrastar com toque</translation>
 <translation id="6748217015615267851">Renderizador: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">É possível prosseguir, mas apenas seus dados e configurações sincronizados serão restaurados. Todos os dados locais serão perdidos.</translation>
-<translation id="6748775883310276718">Quiosque de aplicativo único</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Modo anônimo)</translation>
 <translation id="6757101664402245801">URL copiado</translation>
 <translation id="6758056191028427665">Diga como estamos nos saindo.</translation>
@@ -3988,6 +4008,7 @@
 <translation id="6769712124046837540">Adicionando impressora...</translation>
 <translation id="6770664076092644100">Verificar por NFC</translation>
 <translation id="6771503742377376720">É uma Autoridade de certificação</translation>
+<translation id="6772339735733515807">Gerenciar suas extensões</translation>
 <translation id="6775163072363532304">Os dispositivos disponíveis serão exibidos aqui.</translation>
 <translation id="6777817260680419853">Redirecionamento bloqueado</translation>
 <translation id="6778737459546443941">Seu responsável ainda não o aprovou</translation>
@@ -4126,6 +4147,7 @@
 <translation id="6972180789171089114">Áudio/vídeo</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> não pode abrir arquivos nesta pasta porque ela contém arquivos do sistema</translation>
 <translation id="6972754398087986839">Primeiros passos</translation>
+<translation id="6973611239564315524">O upgrade para o Debian 10 (Buster) está disponível</translation>
 <translation id="6974609594866392343">Modo de demonstração off-line</translation>
 <translation id="6977381486153291903">Revisão do firmware</translation>
 <translation id="6978121630131642226">Mecanismos de pesquisa</translation>
@@ -4383,7 +4405,7 @@
 <translation id="7328867076235380839">Combinação inválida</translation>
 <translation id="7329154610228416156">O login falhou porque foi configurado para usar um URL não seguro (<ph name="BLOCKED_URL" />). Entre em contato com o administrador.</translation>
 <translation id="7334190995941642545">O Smart Lock está indisponível no momento. Tente novamente mais tarde.</translation>
-<translation id="7334274148831027933">Ativar lupa ancorada</translation>
+<translation id="7334274148831027933">Ativar lupa em área fixa</translation>
 <translation id="7335974957018254119">Usar verificação ortográfica para</translation>
 <translation id="7336799713063880535">Notificações bloq.</translation>
 <translation id="7338630283264858612">O número de série do dispositivo é inválido.</translation>
@@ -4585,6 +4607,7 @@
 <translation id="7644543211198159466">Cor e tema</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (proprietário)</translation>
 <translation id="7645681574855902035">Cancelando backup do Linux</translation>
+<translation id="7646772052135772216">A sincronização de senha não está funcionando</translation>
 <translation id="7647403192093989392">Nenhuma atividade recente</translation>
 <translation id="7648992873808071793">Armazenar arquivos neste dispositivo</translation>
 <translation id="7649070708921625228">Ajuda</translation>
@@ -4773,6 +4796,7 @@
 <translation id="7877451762676714207">Erro de servidor desconhecido. Tente novamente ou entre em contato com o administrador do servidor.</translation>
 <translation id="7877680364634660272">Tour</translation>
 <translation id="7878562273885520351">Sua senha pode estar comprometida</translation>
+<translation id="7879631849810108578">Atalho definido: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Os dados locais serão excluídos quando você reiniciar</translation>
 <translation id="7881483672146086348">Visualizar conta</translation>
 <translation id="7882358943899516840">Tipo de provedor</translation>
@@ -4801,7 +4825,7 @@
 <translation id="7915471803647590281">Conte-nos o que está acontecendo antes de enviar comentários.</translation>
 <translation id="7918257978052780342">Inscrever-se</translation>
 <translation id="7919210519031517829"><ph name="DURATION" />s</translation>
-<translation id="792514962475806987">Nível de zoom da lupa ancorada:</translation>
+<translation id="792514962475806987">Nível de zoom da lupa em área fixa:</translation>
 <translation id="7925247922861151263">Falha ao verificar AAA</translation>
 <translation id="7925285046818567682">Aguardando <ph name="HOST_NAME" />...</translation>
 <translation id="7926423016278357561">Não fui eu.</translation>
@@ -4859,6 +4883,7 @@
 <translation id="7987814697832569482">Sempre se conectar usando esta VPN</translation>
 <translation id="7988355189918024273">Ativa os recursos de acessibilidade</translation>
 <translation id="7991296728590311172">Configurações do acesso com interruptor</translation>
+<translation id="7994350303002908848">Não foi possível instalar a Plugin VM. Tente novamente ou entre em contato com o administrador do dispositivo da sua organização. Código do erro: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">Método EAP</translation>
 <translation id="7997826902155442747">Prioridade de processo</translation>
 <translation id="7999229196265990314">Os seguintes arquivos foram criados:
@@ -4951,7 +4976,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Sem cookies de terceiros}=1{1 cookie de terceiros foi bloqueado}one{# cookie de terceiros foi bloqueado}other{# cookies de terceiros foram bloqueados}}</translation>
 <translation id="810875025413331850">Nenhum dispositivo próximo encontrado.</translation>
 <translation id="8111155949205007504">Compartilhar essa senha com seu iPhone</translation>
-<translation id="8113043281354018522">Escolha o tipo de licença</translation>
 <translation id="8114875720387900039">Divisão horizontal</translation>
 <translation id="8116972784401310538">&amp;Gerenciador de favoritos</translation>
 <translation id="8117620576188476503">Gerencie conexões, atualizações e configurações com a bandeja de status. Para chegar aqui com o teclado, pressione Alt + Shift + S.</translation>
@@ -5108,6 +5132,7 @@
 <translation id="8327039559959785305">Erro ao ativar arquivos do Linux. Tente novamente.</translation>
 <translation id="8335587457941836791">Desafixar da estante</translation>
 <translation id="8336407002559723354">As atualizações terminam em <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Reinicie o dispositivo para mostrar a mensagem do sistema em <ph name="LANGUAGE" /></translation>
 <translation id="8336739000755212683">Alterar imagem da conta do dispositivo</translation>
 <translation id="8337047789441383384">Você já registrou essa chave de segurança. Não é necessário registrá-la novamente.</translation>
 <translation id="8338952601723052325">Website do desenvolvedor</translation>
@@ -5151,6 +5176,7 @@
 <translation id="8400146488506985033">Gerenciar pessoas</translation>
 <translation id="8401432541486058167">Insira o PIN associado ao seu cartão inteligente.</translation>
 <translation id="8405046151008197676">Veja os destaques da atualização mais recente</translation>
+<translation id="8408068190360279472">Rede <ph name="NETWORK_TYPE" />, conectando</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Perguntar primeiro (recomendado)</translation>
 <translation id="8418445294933751433">&amp;Mostrar como guia</translation>
@@ -5440,6 +5466,7 @@
 <translation id="8807632654848257479">Estável</translation>
 <translation id="8808478386290700967">Web Store</translation>
 <translation id="8808686172382650546">Gato</translation>
+<translation id="8808744862003883508">Nesta página, é possível ver todas as extensões instaladas no Chrome.</translation>
 <translation id="8809147117840417135">Verde-água</translation>
 <translation id="8813698869395535039">Não é possível fazer login em <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">folha de papel</translation>
@@ -5667,7 +5694,6 @@
 <translation id="9121814364785106365">Abrir como guia fixada</translation>
 <translation id="9122176249172999202">O <ph name="IDS_SHORT_PRODUCT_NAME" /> está pausado</translation>
 <translation id="9124003689441359348">As senhas salvas aparecerão aqui</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> rest.)</translation>
 <translation id="9128317794749765148">Não foi possível concluir a configuração</translation>
 <translation id="9128870381267983090">Conectar à rede</translation>
 <translation id="9130015405878219958">Modo inválido inserido.</translation>
@@ -5706,6 +5732,7 @@
 <translation id="9188732951356337132">Envie dados de uso e diagnóstico. No momento, este dispositivo está enviando automaticamente ao Google dados de diagnóstico, de uso de apps e do dispositivo. Eles não serão usados para identificar seu filho e ajudarão a melhorar o sistema, a estabilidade de apps e muito mais. Alguns dados agregados também ajudarão os apps do Google e os nossos parceiros, como os desenvolvedores Android. Se a configuração "Atividade na Web e de apps adicional" estiver ativada para seu filho, esses dados poderão ser salvos na Conta do Google dele. <ph name="BEGIN_LINK2" />Saiba mais<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPSEC + chave pré-compartilhada</translation>
 <translation id="920045321358709304">Pesquisar <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">Todos os dados off-line serão removidos</translation>
 <translation id="9201220332032049474">Opções de bloqueio de tela</translation>
 <translation id="9203398526606335860">&amp;Criação de perfil ativada</translation>
 <translation id="9203904171912129171">Selecione um dispositivo</translation>
@@ -5718,6 +5745,7 @@
 <translation id="9220525904950070496">Remover conta</translation>
 <translation id="9220820413868316583">Levante o dedo e tente novamente.</translation>
 <translation id="923467487918828349">Mostrar todas</translation>
+<translation id="929117907539171075">Os dados off-line em apps instalados também serão removidos</translation>
 <translation id="930268624053534560">Timestamps detalhados</translation>
 <translation id="932327136139879170">Início</translation>
 <translation id="932508678520956232">Não foi possível iniciar a impressão.</translation>
@@ -5743,6 +5771,7 @@
 <translation id="960719561871045870">Código da operadora</translation>
 <translation id="960987915827980018">Cerca de 1 hora restante</translation>
 <translation id="962802172452141067">Árvore de pastas de favoritos</translation>
+<translation id="964057662886721376">Algumas extensões podem deixar o dispositivo lento, especialmente aquelas que você não quis instalar.</translation>
 <translation id="964286338916298286">Seu administrador de TI desativou os Goodies do Chrome para seu dispositivo.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Aplicativo}one{Aplicativo}other{Aplicativos}}</translation>
 <translation id="965211523698323809">Envie e receba mensagens de texto no <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Saiba mais<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb
index fc59c71..b41e8f8 100644
--- a/chrome/app/resources/generated_resources_pt-PT.xtb
+++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Personalizado</translation>
 <translation id="1178581264944972037">Pausa</translation>
 <translation id="117916940443676133">A sua chave de segurança não está protegida com um PIN. Para gerir os dados de início de sessão, crie primeiro um PIN.</translation>
-<translation id="118069123878619799">- As suas caraterísticas físicas, como a altura</translation>
 <translation id="1181037720776840403">Remover</translation>
 <translation id="1183237619868651138">Não é possível instalar <ph name="EXTERNAL_CRX_FILE" /> na cache local.</translation>
 <translation id="1185924365081634987">Também pode experimentar <ph name="GUEST_SIGNIN_LINK_START" />navegar como convidado<ph name="GUEST_SIGNIN_LINK_END" /> para corrigir este erro de rede.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">A aguardar <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033">Mais <ph name="NUM_PRINTERS" /> dispositivos disponíveis.</translation>
 <translation id="1495677929897281669">Voltar ao separador</translation>
+<translation id="1499271269825557605">Se não reconhecer uma extensão ou o seu navegador não estiver a funcionar conforme esperado, pode desativar ou personalizar as extensões aqui.</translation>
 <translation id="1500297251995790841">Dispositivo desconhecido [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Esta conta de proprietário tem de ser a primeira conta com início de sessão integrado.</translation>
 <translation id="150411034776756821">Remover <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Esta página foi impedida de aceder à sua câmara.</translation>
 <translation id="1507246803636407672">&amp;Rejeitar</translation>
 <translation id="1508491105858779599">Coloque o dedo no sensor de impressões digitais para desbloquear o dispositivo.</translation>
+<translation id="1508575541972276599">A versão atual é Debian 9 (Stretch).</translation>
 <translation id="1509281256533087115">Aceder a qualquer <ph name="DEVICE_NAME_AND_VENDOR" /> através de USB</translation>
 <translation id="150962533380566081">PUK inválido.</translation>
 <translation id="1510030919967934016">Esta página foi bloqueada de monitorizar a sua localização.</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">Aplicar</translation>
 <translation id="1603914832182249871">(Navegação anónima)</translation>
 <translation id="1604432177629086300">Não foi possível imprimir. Verifique a impressora e tente novamente.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: a sincronização de palavras-passe não está a funcionar</translation>
 <translation id="1607139524282324606">Limpar entrada</translation>
 <translation id="1608626060424371292">Remover este utilizador</translation>
 <translation id="1608668830839595724">Mais ações para os itens selecionados</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">Dados de aplicações alojadas</translation>
 <translation id="1776712937009046120">Adicionar utilizador</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Este dispositivo é gerido por <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    Clique em "Seguinte" para continuar a iniciar sessão na sua conta de <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation>
 <translation id="1779652936965200207">Introduza esta chave de acesso no "<ph name="DEVICE_NAME" />":</translation>
 <translation id="1780152987505130652">Fechar grupo</translation>
 <translation id="1781291988450150470">PIN atual</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">Ação não disponível</translation>
 <translation id="2050339315714019657">Vertical</translation>
 <translation id="2053312383184521053">Dados do estado inativo</translation>
+<translation id="2055585478631012616">A sua sessão nestes sites será terminada, incluindo em separadores abertos.</translation>
 <translation id="205560151218727633">Logótipo do Assistente Google</translation>
 <translation id="2058456167109518507">Dispositivo detetado</translation>
 <translation id="2059913712424898428">Fuso horário</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">Anular</translation>
 <translation id="2080070583977670716">Mais definições</translation>
 <translation id="2087822576218954668">Imprimir: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">Rede VPN</translation>
 <translation id="2089566709556890888">Navegue em segurança com o Google Chrome</translation>
 <translation id="2089795179672254991">Perguntar quando um site pretender ver o texto e as imagens copiados para a área de transferência (recomendado)</translation>
 <translation id="2090165459409185032">Para recuperar a sua informação da conta, aceda a google.com/accounts/recovery</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">Um site está a aceder à entrada de áudio e de vídeo.</translation>
 <translation id="2379281330731083556">Imprimir utilizando a caixa de diálogo do sistema... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Perguntar antes de enviar (recomendado)</translation>
+<translation id="2382818385048255866">Verifique as suas extensões</translation>
 <translation id="2384436799579181135">Ocorreu um erro. Verifique a impressora e tente novamente.</translation>
 <translation id="2387458720915042159">Tipo de ligação proxy</translation>
 <translation id="2391419135980381625">Tipo de letra padrão</translation>
@@ -1035,6 +1042,7 @@
 <translation id="2462724976360937186">ID da chave da autoridade de certificação</translation>
 <translation id="2462752602710430187"><ph name="PRINTER_NAME" /> adicionada</translation>
 <translation id="2464089476039395325">Proxy de HTTP</translation>
+<translation id="2467267713099745100">Rede <ph name="NETWORK_TYPE" />, desativada</translation>
 <translation id="2468205691404969808">Utiliza cookies para memorizar as suas preferências, mesmo que não visite essas páginas.</translation>
 <translation id="2468402215065996499">Tamagotchi</translation>
 <translation id="2469259292033957819">Não tem qualquer impressora guardada.</translation>
@@ -1289,6 +1297,7 @@
 <translation id="2800760947029405028">Carregar uma imagem</translation>
 <translation id="2803375539583399270">Introduzir PIN</translation>
 <translation id="2804043232879091219">Não foi possível abrir o navegador alternativo.</translation>
+<translation id="2804667941345577550">A sua sessão neste site será terminada, incluindo em separadores abertos.</translation>
 <translation id="2804680522274557040">A câmara está desativada</translation>
 <translation id="2805646850212350655">Sistema de encriptação de ficheiros Microsoft</translation>
 <translation id="2805756323405976993">Aplicações</translation>
@@ -1296,6 +1305,7 @@
 <translation id="2806891468525657116">O atalho já existe.</translation>
 <translation id="2807517655263062534">Os ficheiros que transferir são apresentados aqui</translation>
 <translation id="2809586584051668049">e mais <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2810390687497823527">Se não reconhecer uma extensão ou o seu navegador não estiver a funcionar conforme esperado, pode desativar ou personalizar as extensões aqui.</translation>
 <translation id="2812049959647166806">O Thunderbolt não é suportado</translation>
 <translation id="2812944337881233323">Experimente terminar e iniciar sessão novamente</translation>
 <translation id="2812989263793994277">Não mostrar imagens</translation>
@@ -1335,6 +1345,7 @@
 <translation id="2861941300086904918">Gestor de segurança Native Client</translation>
 <translation id="2864601841139725659">Definir a sua imagem do perfil</translation>
 <translation id="2865919525181940183">Captura de ecrã dos programas atualmente no ecrã</translation>
+<translation id="286674810810214575">A verificar as fontes alimentação…</translation>
 <translation id="2867768963760577682">Abrir como Separador Fixo</translation>
 <translation id="2868746137289129307">Esta extensão está desatualizada e foi desativada por uma política empresarial; pode ser ativada automaticamente quando estiver disponível uma versão mais recente.</translation>
 <translation id="2870560284913253234">Site</translation>
@@ -1413,6 +1424,7 @@
 <translation id="2972581237482394796">&amp;Repetir</translation>
 <translation id="2973324205039581528">Desativar som do site</translation>
 <translation id="2977480621796371840">Remover do grupo</translation>
+<translation id="2979520980928493164">Um Chrome com melhor desempenho e funcionamento</translation>
 <translation id="2979639724566107830">Abrir numa nova janela</translation>
 <translation id="2981113813906970160">Mostrar cursor grande do rato</translation>
 <translation id="2982970937345031">Denunciar anonimamente</translation>
@@ -1519,6 +1531,7 @@
 <translation id="3143515551205905069">Cancelar sincronização</translation>
 <translation id="3143754809889689516">Reproduzir desde o início</translation>
 <translation id="3144647712221361880">Abrir link como</translation>
+<translation id="3145187901750964977">Não foi possível instalar a máquina virtual. Tente novamente ou contacte o administrador do dispositivo da sua entidade. Código de erro: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Versão:
     <ph name="LINUX_VERSION" />
 
@@ -1557,6 +1570,7 @@
 <translation id="3192947282887913208">Ficheiros de áudio</translation>
 <translation id="3194737229810486521"><ph name="URL" /> pretende armazenar permanentemente dados no seu dispositivo.</translation>
 <translation id="3199127022143353223">Servidores</translation>
+<translation id="3201306578844503970">Não foi possível instalar a máquina virtual devido a um erro de rede. Tente novamente ou contacte o administrador do dispositivo da sua entidade. Código de erro: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Os dispositivos USB disponíveis são apresentados aqui.</translation>
 <translation id="3202131003361292969">Caminho</translation>
 <translation id="3202173864863109533">O som deste separador foi desativado.</translation>
@@ -1893,7 +1907,6 @@
 <translation id="3678156199662914018">Extensão: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Obrigado pelos seus comentários. Neste modo, está offline, pelo que o seu relatório será enviado mais tarde.</translation>
 <translation id="3682824389861648626">Limite de movimentos</translation>
-<translation id="3683023058278427253">Detetámos vários tipos de licença para o seu domínio. Escolha um para continuar.</translation>
 <translation id="3683524264665795342">Pedido de Partilha de Ecrã de <ph name="APP_NAME" /></translation>
 <translation id="368789413795732264">Ocorreu um erro ao tentar escrever o ficheiro: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Escrever em ficheiros e pastas que são abertos na aplicação</translation>
@@ -2067,6 +2080,7 @@
 <translation id="389589731200570180">Partilhar com convidados</translation>
 <translation id="389901847090970821">Selecionar teclado</translation>
 <translation id="3899879303189199559">Offline durante mais de um ano</translation>
+<translation id="3900789207771372462">Algumas extensões podem ver a sua atividade de navegação, incluindo as informações pessoais.</translation>
 <translation id="3900966090527141178">Exportar palavras-passe</translation>
 <translation id="3901991538546252627">A ligar a <ph name="NAME" /></translation>
 <translation id="3905761538810670789">Reparar aplicação</translation>
@@ -2157,7 +2171,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" está a depurar este navegador.</translation>
 <translation id="4014432863917027322">Reparar "<ph name="EXTENSION_NAME" />"?</translation>
 <translation id="4015163439792426608">Tem extensões? <ph name="BEGIN_LINK" />Faça a gestão das suas extensões<ph name="END_LINK" /> num lugar acessível.</translation>
-<translation id="4020106588733303597">Ups! O sistema não conseguiu carregar as licenças disponíveis.</translation>
 <translation id="4020327272915390518">Menu de opções</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Adicionar ao Dicionário</translation>
@@ -2195,6 +2208,7 @@
 <translation id="407520071244661467">Escala</translation>
 <translation id="4075639477629295004">Não é possível transmitir <ph name="FILE_NAME" />.</translation>
 <translation id="4077917118009885966">Anúncios bloqueados neste site</translation>
+<translation id="4077919383365622693">Todos os dados e cookies armazenados pelo site <ph name="SITE" /> serão limpos.</translation>
 <translation id="4079140982534148664">Utilizar a verificação ortográfica avançada</translation>
 <translation id="4081242589061676262">Não é possível transmitir o ficheiro.</translation>
 <translation id="4084682180776658562">Marcar</translation>
@@ -2269,6 +2283,7 @@
 <translation id="4181841719683918333">Idiomas</translation>
 <translation id="4184885522552335684">Arrastar para mover um ecrã</translation>
 <translation id="4194570336751258953">Ativar tocar para clicar</translation>
+<translation id="4194595472342532425">Não foi possível configurar o Plugin VM devido a um problema na configuração. Contacte o administrador do dispositivo da sua entidade. Código de erro: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Abrir num novo separador</translation>
 <translation id="4195814663415092787">Continuar onde deixou</translation>
 <translation id="4198146608511578238">Basta premir sem soltar o ícone do Iniciador para falar com o seu Assistente Google.</translation>
@@ -2492,6 +2507,7 @@
 <translation id="4549791035683739768">A sua chave de segurança não tem impressões digitais armazenadas.</translation>
 <translation id="4551763574344810652">Prima <ph name="MODIFIER_KEY_DESCRIPTION" /> para anular</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005">Rede <ph name="NETWORK_TYPE" />, intensidade do sinal <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">A extensão externa tem a mesma versão ou uma versão inferior à existente.</translation>
 <translation id="4555769855065597957">Sombra</translation>
 <translation id="4555863373929230635">Para guardar palavras-passe na sua Conta Google, inicie sessão e ative a sincronização.</translation>
@@ -2569,6 +2585,7 @@
 <translation id="4665446389743427678">Todos os dados armazenados pelo site <ph name="SITE" /> serão eliminados.</translation>
 <translation id="4668721319092543482">Clique para ativar o <ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">Página de destilação</translation>
+<translation id="46733273239502219">Os dados offline nas aplicações instaladas também serão limpos.</translation>
 <translation id="4673442866648850031">Abra as ferramentas da caneta stylus quando a caneta stylus for removida</translation>
 <translation id="4677585247300749148"><ph name="URL" /> pretende responder a eventos de acessibilidade.</translation>
 <translation id="4677772697204437347">Memória de GPU</translation>
@@ -2660,7 +2677,6 @@
 <translation id="4823484602432206655">Ler e alterar definições do utilizador e do dispositivo</translation>
 <translation id="4824958205181053313">Pretende cancelar a sincronização?</translation>
 <translation id="4827675678516992122">Não foi possível ligar</translation>
-<translation id="4828937774870308359">Australiano</translation>
 <translation id="4829768588131278040">Configurar PIN</translation>
 <translation id="4830502475412647084">A instalar a atualização do SO…</translation>
 <translation id="4830573902900904548">O seu <ph name="DEVICE_TYPE" /> não consegue estabelecer ligação à Internet através de <ph name="NETWORK_NAME" />. Escolha outra rede. <ph name="LEARN_MORE_LINK_START" />Saiba mais<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2701,6 +2717,7 @@
 <translation id="4876273079589074638">Ajude os nossos engenheiros a analisar e corrigir esta falha de sistema. Enumere os passos exatos, se possível. Nenhum detalhe é demasiado pequeno!</translation>
 <translation id="4876895919560854374">Bloquear e desbloquear o ecrã</translation>
 <translation id="4877276003880815204">Inspecionar elementos</translation>
+<translation id="4878653975845355462">Os fundos personalizados foram desativados pelo seu administrador.</translation>
 <translation id="4879491255372875719">Automático (predefinição)</translation>
 <translation id="4880328057631981605">Nome do ponto de acesso</translation>
 <translation id="4880827082731008257">Pesquisar histórico</translation>
@@ -2756,10 +2773,10 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" pretende estabelecer ligação a uma porta de série</translation>
 <translation id="4944310289250773232">Este serviço de autenticação é alojado por <ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">Ações</translation>
+<translation id="4952981627953231344">O Plugin VM não é permitido neste dispositivo. Contacte o administrador do dispositivo da sua entidade.</translation>
 <translation id="4953689047182316270">Responder a eventos de acessibilidade</translation>
 <translation id="4953808748584563296">Avatar cor de laranja predefinido</translation>
 <translation id="4955710816792587366">Escolher o PIN</translation>
-<translation id="4955814292505481804">Anual</translation>
 <translation id="4959262764292427323">As palavras-passe são guardadas na sua Conta Google para que as possa utilizar em qualquer dispositivo.</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Esta aplicação foi instalada pelo seu administrador.</translation>
@@ -3242,7 +3259,6 @@
 <translation id="5659593005791499971">Email</translation>
 <translation id="5659833766619490117">Não foi possível traduzir esta página</translation>
 <translation id="5660204307954428567">Sincronizar com o dispositivo <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Vitalícia</translation>
 <translation id="5667546120811588575">A configurar o Google Play...</translation>
 <translation id="5669267381087807207">A activar</translation>
 <translation id="5669691691057771421">Introduzir o novo PIN</translation>
@@ -3258,6 +3274,7 @@
 <translation id="5687326903064479980">Fuso horário</translation>
 <translation id="5689516760719285838">Local</translation>
 <translation id="56907980372820799">Associar dados</translation>
+<translation id="5691180005790455277">Todos os dados e cookies armazenados pelo grupo de sites <ph name="SITE_GROUP_NAME" /> e por quaisquer sites associados a este serão limpos.</translation>
 <translation id="5691511426247308406">Família</translation>
 <translation id="5692183275898619210">Impressão concluída</translation>
 <translation id="5696143504434933566">Denunciar abuso de "<ph name="EXTENSION_NAME" />"</translation>
@@ -3344,7 +3361,6 @@
 <translation id="5815645614496570556">Endereço X.400</translation>
 <translation id="5816434091619127343">As alterações solicitadas à impressora deixariam-na inutilizável.</translation>
 <translation id="5817918615728894473">Sincronizar</translation>
-<translation id="5819762621475381970">- A disposição da divisão</translation>
 <translation id="5821565227679781414">Criar Atalho</translation>
 <translation id="5825412242012995131">Ativado (recomendado)</translation>
 <translation id="5826395379250998812">Ligue o dispositivo <ph name="DEVICE_TYPE" /> ao telemóvel. <ph name="LINK_BEGIN" />Saiba mais<ph name="LINK_END" /></translation>
@@ -3480,6 +3496,7 @@
 <translation id="6007240208646052708">A pesquisa por voz não está disponível no seu idioma.</translation>
 <translation id="6009781704028455063">Sensor integrado</translation>
 <translation id="6010869025736512584">A aceder à entrada de vídeo</translation>
+<translation id="6011074160056912900">Rede Ethernet</translation>
 <translation id="6011193465932186973">Impressão digital</translation>
 <translation id="6011449291337289699">Limpar dados do site</translation>
 <translation id="6015266928248016057">PUK inválido. Tentativas restantes: <ph name="RETRIES" />.</translation>
@@ -3516,6 +3533,7 @@
 <translation id="6053401458108962351">&amp;Limpar dados de navegação...</translation>
 <translation id="6055171183283175969">A palavra-passe introduzida está incorreta.</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 Com encriptação RSA</translation>
+<translation id="6055907707645252013">Rede <ph name="NETWORK_TYPE" />, não ligada</translation>
 <translation id="6056710589053485679">Atualização Normal</translation>
 <translation id="6057381398996433816">Este site foi impedido de utilizar os sensores de movimento e de luz.</translation>
 <translation id="6058567592298841668">Plugin VM: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3579,6 +3597,7 @@
 <translation id="6136114942382973861">Fechar barra de transferências</translation>
 <translation id="6137767437444130246">Certificado do utilizador</translation>
 <translation id="6138680304137685902">Assinatura X9.62 ECDSA com SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, sem rede</translation>
 <translation id="6141988275892716286">Confirmar transferência</translation>
 <translation id="6143186082490678276">Obter ajuda</translation>
 <translation id="6144938890088808325">Ajude-nos a melhorar os Chromebooks</translation>
@@ -3885,6 +3904,7 @@
 <translation id="6602956230557165253">Utilize as teclas de seta para a esquerda e direita para navegar.</translation>
 <translation id="6605847144724004692">Ainda não obteve classificação dos utilizadores.</translation>
 <translation id="6607831829715835317">Mais ferrament&amp;as</translation>
+<translation id="6611972847767394631">Encontre os seus separadores aqui</translation>
 <translation id="6612358246767739896">Conteúdo protegido</translation>
 <translation id="6615455863669487791">Mostrar</translation>
 <translation id="6618097958368085618">Manter na mesma</translation>
@@ -3953,6 +3973,7 @@
 <translation id="6709133671862442373">Notícias</translation>
 <translation id="6709357832553498500">Ligar através de <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Anterior</translation>
+<translation id="6715803357256707211">Ocorreu um erro durante a instalação da sua aplicação para Linux. Clique na notificação para obter detalhes.</translation>
 <translation id="6721678857435001674">Ver a marca e o modelo da sua Chave de segurança</translation>
 <translation id="6721972322305477112">&amp;Ficheiro</translation>
 <translation id="672213144943476270">Desbloqueie o seu perfil antes de navegar como convidado</translation>
@@ -3977,7 +3998,6 @@
 <translation id="674632704103926902">Ativar arrastamento através do toque</translation>
 <translation id="6748217015615267851">Renderizador: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Pode continuar, mas apenas os dados e definições sincronizados são restaurados. Todos os dados locais perdem-se.</translation>
-<translation id="6748775883310276718">Single App Kiosk</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Navegação anónima)</translation>
 <translation id="6757101664402245801">URL copiado</translation>
 <translation id="6758056191028427665">Dê-nos a sua opinião acerca do nosso desempenho.</translation>
@@ -3987,6 +4007,7 @@
 <translation id="6769712124046837540">A adicionar impressora…</translation>
 <translation id="6770664076092644100">Validar através de NFC</translation>
 <translation id="6771503742377376720">É uma autoridade de certificação</translation>
+<translation id="6772339735733515807">Faça a gestão das suas extensões</translation>
 <translation id="6775163072363532304">Os dispositivos disponíveis aparecem aqui.</translation>
 <translation id="6777817260680419853">Redirecionamento bloqueado</translation>
 <translation id="6778737459546443941">O teu pai/a tua mãe ainda não o aprovou</translation>
@@ -4125,6 +4146,7 @@
 <translation id="6972180789171089114">Áudio/Vídeo</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> não consegue abrir os ficheiros nesta pasta porque contém ficheiros de sistema</translation>
 <translation id="6972754398087986839">Começar</translation>
+<translation id="6973611239564315524">Está disponível uma atualização para a versão Debian 10 (Buster).</translation>
 <translation id="6974609594866392343">Modo de demonstração offline</translation>
 <translation id="6977381486153291903">Revisão de firmware</translation>
 <translation id="6978121630131642226">Motores de pesquisa</translation>
@@ -4584,6 +4606,7 @@
 <translation id="7644543211198159466">Cor e tema</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (proprietário)</translation>
 <translation id="7645681574855902035">A cancelar a cópia de segurança do Linux…</translation>
+<translation id="7646772052135772216">A sincronização de palavras-passe não está a funcionar</translation>
 <translation id="7647403192093989392">Não existem atividades recentes.</translation>
 <translation id="7648992873808071793">Armazenar ficheiros neste dispositivo</translation>
 <translation id="7649070708921625228">Ajuda</translation>
@@ -4772,6 +4795,7 @@
 <translation id="7877451762676714207">Erro de servidor desconhecido. Tente novamente ou contacte o gestor do servidor.</translation>
 <translation id="7877680364634660272">Visita guiada</translation>
 <translation id="7878562273885520351">A palavra-passe pode estar comprometida</translation>
+<translation id="7879631849810108578">Atalho definido: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Os dados locais vão ser eliminados quando reiniciar o dispositivo</translation>
 <translation id="7881483672146086348">Ver Conta</translation>
 <translation id="7882358943899516840">Tipo de fornecedor</translation>
@@ -4858,6 +4882,7 @@
 <translation id="7987814697832569482">Ligar sempre através desta VPN</translation>
 <translation id="7988355189918024273">Ativar funcionalidades de acessibilidade</translation>
 <translation id="7991296728590311172">Definições do acesso por comutador</translation>
+<translation id="7994350303002908848">Não foi possível instalar o Plugin VM. Tente novamente ou contacte o administrador do dispositivo da sua entidade. Código de erro: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">Método EAP</translation>
 <translation id="7997826902155442747">Prioridade do processo</translation>
 <translation id="7999229196265990314">Criou os seguintes ficheiros:
@@ -4950,7 +4975,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Sem cookies de terceiros}=1{1 cookie de terceiros está bloqueado}other{# cookies de terceiros estão bloqueados}}</translation>
 <translation id="810875025413331850">Não foram encontrados dispositivos nas proximidades.</translation>
 <translation id="8111155949205007504">Partilhar esta palavra-passe com o seu iPhone</translation>
-<translation id="8113043281354018522">Selecionar o tipo de licença</translation>
 <translation id="8114875720387900039">Divisão horizontal</translation>
 <translation id="8116972784401310538">&amp;Gestor de marcadores</translation>
 <translation id="8117620576188476503">Faça a gestão de ligações, atualizações e definições através do tabuleiro de estado. Para chegar aqui através do teclado, prima Alt + Shift + S.</translation>
@@ -5106,6 +5130,7 @@
 <translation id="8327039559959785305">Erro ao montar os ficheiros Linux. Tente novamente.</translation>
 <translation id="8335587457941836791">Soltar da prateleira</translation>
 <translation id="8336407002559723354">As atualizações terminam a <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Reiniciar o dispositivo para apresentar o texto do sistema em <ph name="LANGUAGE" /></translation>
 <translation id="8336739000755212683">Alterar imagem da conta do dispositivo</translation>
 <translation id="8337047789441383384">Já registou esta chave de segurança. Não tem de a registar novamente.</translation>
 <translation id="8338952601723052325">Website para programadores</translation>
@@ -5149,6 +5174,7 @@
 <translation id="8400146488506985033">Gerir pessoas</translation>
 <translation id="8401432541486058167">Indique o PIN que está associado ao seu cartão inteligente.</translation>
 <translation id="8405046151008197676">Obtenha os destaques da atualização mais recente.</translation>
+<translation id="8408068190360279472">Rede <ph name="NETWORK_TYPE" />, a ligar…</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Perguntar primeiro (recomendado)</translation>
 <translation id="8418445294933751433">Mo&amp;strar como separador</translation>
@@ -5438,6 +5464,7 @@
 <translation id="8807632654848257479">Estável</translation>
 <translation id="8808478386290700967">Web Store</translation>
 <translation id="8808686172382650546">Gato</translation>
+<translation id="8808744862003883508">Nesta página, pode ver todas as extensões instaladas no Chrome.</translation>
 <translation id="8809147117840417135">Azul esverdeado claro</translation>
 <translation id="8813698869395535039">Não é possível iniciar sessão na conta <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">folha de papel</translation>
@@ -5665,7 +5692,6 @@
 <translation id="9121814364785106365">Abrir como separador fixo</translation>
 <translation id="9122176249172999202">O <ph name="IDS_SHORT_PRODUCT_NAME" /> foi colocado em pausa</translation>
 <translation id="9124003689441359348">As palavras-passe guardadas aparecem aqui</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> rest.)</translation>
 <translation id="9128317794749765148">Não foi possível concluir a configuração</translation>
 <translation id="9128870381267983090">Ligar à rede</translation>
 <translation id="9130015405878219958">Introduzido modo inválido.</translation>
@@ -5704,6 +5730,7 @@
 <translation id="9188732951356337132">Envie dados de utilização e diagnósticos. Agora, este dispositivo está a enviar automaticamente dados de diagnóstico, de utilização de aplicações e do dispositivo para a Google. Estes dados não serão utilizados para identificar a criança e ajudarão a melhorar a estabilidade das aplicações e do sistema, entre outras melhorias. Alguns dados agregados também ajudarão as aplicações e os parceiros Google, como os programadores Android. Se a definição Atividade da Web e de aplicações adicional estiver ativada para a criança, estes dados podem ser guardados na respetiva Conta Google. <ph name="BEGIN_LINK2" />Saiba mais<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPSec + chave pré-partilhada</translation>
 <translation id="920045321358709304">Pesquisar no <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">Todos os dados offline serão limpos.</translation>
 <translation id="9201220332032049474">Opções do bloqueio de ecrã</translation>
 <translation id="9203398526606335860">Criação de &amp;perfis ativada</translation>
 <translation id="9203904171912129171">Selecionar um dispositivo</translation>
@@ -5716,6 +5743,7 @@
 <translation id="9220525904950070496">Remover conta</translation>
 <translation id="9220820413868316583">Levante e tente novamente.</translation>
 <translation id="923467487918828349">Mostrar todas</translation>
+<translation id="929117907539171075">Os dados offline na aplicação instalada também serão limpos.</translation>
 <translation id="930268624053534560">Data/hora em detalhe</translation>
 <translation id="932327136139879170">Página inicial</translation>
 <translation id="932508678520956232">Não foi possível iniciar a impressão.</translation>
@@ -5741,6 +5769,7 @@
 <translation id="960719561871045870">Código do operador</translation>
 <translation id="960987915827980018">Falta cerca de 1 hora</translation>
 <translation id="962802172452141067">Árvore de pastas de marcadores</translation>
+<translation id="964057662886721376">Algumas extensões podem tornar a utilização mais lenta, especialmente as que não pretendia instalar.</translation>
 <translation id="964286338916298286">O gestor de TI desativou os Extras do Chrome para o dispositivo.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Aplicação}other{Aplicações}}</translation>
 <translation id="965211523698323809">Envie e receba mensagens de texto com o <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Saiba mais<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_ro.xtb b/chrome/app/resources/generated_resources_ro.xtb
index 7f379e75..89ef46a 100644
--- a/chrome/app/resources/generated_resources_ro.xtb
+++ b/chrome/app/resources/generated_resources_ro.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Personalizează</translation>
 <translation id="1178581264944972037">Întrerupe</translation>
 <translation id="117916940443676133">Cheia de securitate nu este protejată printr-un cod PIN. Pentru a gestiona datele de conectare, creează mai întâi un cod PIN.</translation>
-<translation id="118069123878619799">- trăsăturile tale fizice, cum ar fi înălțimea;</translation>
 <translation id="1181037720776840403">Elimină</translation>
 <translation id="1183237619868651138">Nu se poate instala <ph name="EXTERNAL_CRX_FILE" /> în memoria cache locală.</translation>
 <translation id="1185924365081634987">Pentru a remedia eroarea de rețea, puteți încerca și să <ph name="GUEST_SIGNIN_LINK_START" />navigați ca invitat<ph name="GUEST_SIGNIN_LINK_END" />.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">Se așteaptă <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033">Încă <ph name="NUM_PRINTERS" /> dispozitive disponibile.</translation>
 <translation id="1495677929897281669">Înpoi la filă</translation>
+<translation id="1499271269825557605">Dacă nu recunoști o extensie sau dacă browserul nu funcționează așa cum te așteptai, poți să dezactivezi sau să personalizezi extensiile aici.</translation>
 <translation id="1500297251995790841">Dispozitiv necunoscut [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Acest cont de proprietar trebuie să fie primul conectat într-o sesiune de conectare multiplă.</translation>
 <translation id="150411034776756821">Elimină <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Accesul acestei pagini la camera dvs. a fost blocat.</translation>
 <translation id="1507246803636407672">&amp;Renunțați</translation>
 <translation id="1508491105858779599">Pune degetul pe senzorul de amprentă pentru a debloca dispozitivul.</translation>
+<translation id="1508575541972276599">Versiunea actuală este Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">Accesează orice <ph name="DEVICE_NAME_AND_VENDOR" /> prin USB</translation>
 <translation id="150962533380566081">PUK nevalid.</translation>
 <translation id="1510030919967934016">Urmărirea locației tale de către această pagină a fost blocată.</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">Aplicați</translation>
 <translation id="1603914832182249871">(Incognito)</translation>
 <translation id="1604432177629086300">Nu s-a putut printa. Verifică imprimanta și încearcă din nou.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: sincronizarea parolelor nu funcționează</translation>
 <translation id="1607139524282324606">Șterge intrarea</translation>
 <translation id="1608626060424371292">Eliminați acest utilizator</translation>
 <translation id="1608668830839595724">Mai multe acțiuni pentru elementele selectate</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">Datele aplicațiilor găzduite</translation>
 <translation id="1776712937009046120">Adaugă un utilizator</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Acest dispozitiv este gestionat de <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    Dă clic pe „Înainte” ca să continui conectarea la contul <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation>
 <translation id="1779652936965200207">Introduceți această cheie de acces pe „<ph name="DEVICE_NAME" />":</translation>
 <translation id="1780152987505130652">Închide grupul</translation>
 <translation id="1781291988450150470">Codul PIN actual</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">Acțiunea nu este disponibilă</translation>
 <translation id="2050339315714019657">Portret</translation>
 <translation id="2053312383184521053">Date pentru starea inactivă</translation>
+<translation id="2055585478631012616">Te vei deconecta de la site-uri, inclusiv din filele deschise</translation>
 <translation id="205560151218727633">Sigla Asistentului Google</translation>
 <translation id="2058456167109518507">S-a detectat un dispozitiv</translation>
 <translation id="2059913712424898428">Fus orar</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">Anulează</translation>
 <translation id="2080070583977670716">Mai multe setări</translation>
 <translation id="2087822576218954668">Printați: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">Rețea VPN</translation>
 <translation id="2089566709556890888">Navighează în siguranță folosind Google Chrome</translation>
 <translation id="2089795179672254991">Întreabă-mă când un site dorește să vadă textul și imaginile copiate în clipboard (recomandat)</translation>
 <translation id="2090165459409185032">Pentru a recupera informațiile despre cont, accesează: google.com/accounts/recovery</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">Un site accesează intrările audio și video</translation>
 <translation id="2379281330731083556">Printați utilizând caseta de dialog a sistemului... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Solicită permisiunea înainte de trimitere (recomandat)</translation>
+<translation id="2382818385048255866">Verifică extensiile</translation>
 <translation id="2384436799579181135">A apărut o eroare. Verifică imprimanta și încearcă din nou.</translation>
 <translation id="2387458720915042159">Tip de conexiune prin proxy</translation>
 <translation id="2391419135980381625">Font standard</translation>
@@ -1036,6 +1043,7 @@
 <translation id="2462724976360937186">ID-ul cheii autorității de certificare</translation>
 <translation id="2462752602710430187">S-a adăugat <ph name="PRINTER_NAME" /></translation>
 <translation id="2464089476039395325">Proxy HTTP</translation>
+<translation id="2467267713099745100">Rețea <ph name="NETWORK_TYPE" />, dezactivată</translation>
 <translation id="2468205691404969808">Folosește cookie-uri pentru a-ți reține preferințele, chiar dacă nu accesezi paginile respective</translation>
 <translation id="2468402215065996499">Tamagotchi</translation>
 <translation id="2469259292033957819">Nu ai imprimante salvate.</translation>
@@ -1290,6 +1298,7 @@
 <translation id="2800760947029405028">Încarcă o imagine</translation>
 <translation id="2803375539583399270">Introdu codul PIN</translation>
 <translation id="2804043232879091219">Browserul secundar nu a putut fi deschis</translation>
+<translation id="2804667941345577550">Te vei deconecta de la acest site, inclusiv din filele deschise</translation>
 <translation id="2804680522274557040">Camera foto este dezactivată</translation>
 <translation id="2805646850212350655">Sistem Microsoft de criptare a fișierelor</translation>
 <translation id="2805756323405976993">Aplicații</translation>
@@ -1297,6 +1306,7 @@
 <translation id="2806891468525657116">Comanda rapidă există deja</translation>
 <translation id="2807517655263062534">Fișierele pe care le descarci apar aici</translation>
 <translation id="2809586584051668049">și încă <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2810390687497823527">Dacă nu recunoști o extensie sau dacă browserul nu funcționează așa cum te așteptai, poți să dezactivezi sau să personalizezi extensiile aici.</translation>
 <translation id="2812049959647166806">Thunderbolt nu este acceptat</translation>
 <translation id="2812944337881233323">Deconectează-te și conectează-te din nou</translation>
 <translation id="2812989263793994277">Nu afișa nicio imagine</translation>
@@ -1336,6 +1346,7 @@
 <translation id="2861941300086904918">Manager de securitate Client nativ</translation>
 <translation id="2864601841139725659">Setează fotografia de profil</translation>
 <translation id="2865919525181940183">Captură de ecran a programelor afișate pe ecran</translation>
+<translation id="286674810810214575">Se verifică sursele de alimentare…</translation>
 <translation id="2867768963760577682">Deschideți ca filă fixată</translation>
 <translation id="2868746137289129307">Această extensie este învechită și a fost dezactivată de o politică de companie. Dacă este disponibilă o nouă versiune, extensia ar putea fi activată automat.</translation>
 <translation id="2870560284913253234">Site</translation>
@@ -1413,6 +1424,7 @@
 <translation id="2972581237482394796">&amp;Repetă</translation>
 <translation id="2973324205039581528">Dezactivează sunetul pentru site</translation>
 <translation id="2977480621796371840">Elimină din grup</translation>
+<translation id="2979520980928493164">Un Chrome mai sănătos și mai fericit</translation>
 <translation id="2979639724566107830">Deschide într-o fereastră nouă</translation>
 <translation id="2981113813906970160">Afișați cursorul de mouse mare</translation>
 <translation id="2982970937345031">Raportează anonim</translation>
@@ -1519,6 +1531,7 @@
 <translation id="3143515551205905069">Anulează sincronizarea</translation>
 <translation id="3143754809889689516">Redă de la început</translation>
 <translation id="3144647712221361880">Deschide linkul ca</translation>
+<translation id="3145187901750964977">Nu s-a putut instala mașina virtuală. Încearcă din nou sau contactează administratorul dispozitivului din organizație. Cod de eroare <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Versiune:
     <ph name="LINUX_VERSION" />
 
@@ -1557,6 +1570,7 @@
 <translation id="3192947282887913208">Fișiere audio</translation>
 <translation id="3194737229810486521"><ph name="URL" /> dorește să stocheze permanent date pe dispozitiv</translation>
 <translation id="3199127022143353223">Servere</translation>
+<translation id="3201306578844503970">Nu s-a putut instala mașina virtuală din cauza unei erori de rețea. Încearcă din nou sau contactează administratorul dispozitivului din organizație. Cod de eroare <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Dispozitivele USB disponibile vor apărea aici.</translation>
 <translation id="3202131003361292969">Cale</translation>
 <translation id="3202173864863109533">Sunetul acestei file este dezactivat.</translation>
@@ -1893,7 +1907,6 @@
 <translation id="3678156199662914018">Extensie: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Îți mulțumim pentru feedback. Acum ești offline, iar raportul va fi trimis mai târziu.</translation>
 <translation id="3682824389861648626">Limită de mișcare</translation>
-<translation id="3683023058278427253">Pentru domeniul tău am detectat mai multe tipuri de licențe. Alege un tip pentru a continua.</translation>
 <translation id="3683524264665795342">Solicitare de accesare a ecranului pentru aplicația <ph name="APP_NAME" /></translation>
 <translation id="368789413795732264">A apărut o eroare la încercarea de scriere a fișierului: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Scrie în fișierele și dosarele pe care le deschideți în aplicație</translation>
@@ -2067,6 +2080,7 @@
 <translation id="389589731200570180">Permiteți accesul invitaților</translation>
 <translation id="389901847090970821">Selectează tastatura</translation>
 <translation id="3899879303189199559">Offline pentru mai mult de un an</translation>
+<translation id="3900789207771372462">Unele extensii îți pot vedea activitatea de navigare, inclusiv informațiile cu caracter personal.</translation>
 <translation id="3900966090527141178">Exportă parolele</translation>
 <translation id="3901991538546252627">Se conectează la <ph name="NAME" /></translation>
 <translation id="3905761538810670789">Repară aplicația</translation>
@@ -2157,7 +2171,6 @@
 <translation id="4013132157686828973">„<ph name="CLIENT_NAME" />” remediază erorile din acest browser</translation>
 <translation id="4014432863917027322">Repari „<ph name="EXTENSION_NAME" />”?</translation>
 <translation id="4015163439792426608">Ai extensii? <ph name="BEGIN_LINK" />Gestionează extensiile<ph name="END_LINK" /> ușor, dintr-un singur loc.</translation>
-<translation id="4020106588733303597">Hopa! Sistemul nu a încărcat licențele disponibile.</translation>
 <translation id="4020327272915390518">Meniul Opțiuni</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Adaugă în dicționar</translation>
@@ -2195,6 +2208,7 @@
 <translation id="407520071244661467">Redimensionează</translation>
 <translation id="4075639477629295004">Nu se poate proiecta <ph name="FILE_NAME" />.</translation>
 <translation id="4077917118009885966">Anunțurile au fost blocate pe acest site</translation>
+<translation id="4077919383365622693">Toate datele și cookie-urile stocate de <ph name="SITE" /> vor fi șterse.</translation>
 <translation id="4079140982534148664">Folosește verificarea îmbunătățită a ortografiei</translation>
 <translation id="4081242589061676262">Nu se poate proiecta fișierul.</translation>
 <translation id="4084682180776658562">Marcaj</translation>
@@ -2269,6 +2283,7 @@
 <translation id="4181841719683918333">Limbi</translation>
 <translation id="4184885522552335684">Trage pentru a muta o afișare</translation>
 <translation id="4194570336751258953">Activează funcția „atinge pentru clic”</translation>
+<translation id="4194595472342532425">Nu s-a instalat Plugin VM din cauza unei probleme de configurație. Contactează administratorul dispozitivului din organizație. Cod de eroare <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Deschide în filă nouă</translation>
 <translation id="4195814663415092787">Continuați de unde ați rămas</translation>
 <translation id="4198146608511578238">Pentru a vorbi cu Asistentul Google, ține apăsată pictograma Lansator.</translation>
@@ -2492,6 +2507,7 @@
 <translation id="4549791035683739768">Cheia de securitate nu are amprente stocate.</translation>
 <translation id="4551763574344810652">Apasă pe <ph name="MODIFIER_KEY_DESCRIPTION" /> pentru a anula</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005">Rețea <ph name="NETWORK_TYPE" />, puterea semnalului <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">Extensia externă este în aceeași versiune sau într-o versiune inferioară celei existente.</translation>
 <translation id="4555769855065597957">Umbră</translation>
 <translation id="4555863373929230635">Conectează-te și activează sincronizarea ca să salvezi parolele în Contul tău Google.</translation>
@@ -2569,6 +2585,7 @@
 <translation id="4665446389743427678">Toate datele stocate de <ph name="SITE" /> vor fi șterse.</translation>
 <translation id="4668721319092543482">Dă clic pentru a activa <ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">Faceți conversia paginii</translation>
+<translation id="46733273239502219">Datele offline din aplicațiile instalate vor fi șterse la rândul lor</translation>
 <translation id="4673442866648850031">Deschide instrumentele pentru creion când acesta este înlăturat</translation>
 <translation id="4677585247300749148"><ph name="URL" /> dorește să răspundă evenimentelor de accesibilitate</translation>
 <translation id="4677772697204437347">Memorie GPU</translation>
@@ -2660,7 +2677,6 @@
 <translation id="4823484602432206655">Citește și modifică setările pentru dispozitiv și pentru utilizator</translation>
 <translation id="4824958205181053313">Anulezi sincronizarea?</translation>
 <translation id="4827675678516992122">Nu s-a putut conecta</translation>
-<translation id="4828937774870308359">Inversă</translation>
 <translation id="4829768588131278040">Configurează codul PIN</translation>
 <translation id="4830502475412647084">Se instalează actualizarea sistemului de operare</translation>
 <translation id="4830573902900904548">Dispozitivul <ph name="DEVICE_TYPE" /> nu se poate conecta la internet folosind <ph name="NETWORK_NAME" />. Alege altă rețea. <ph name="LEARN_MORE_LINK_START" />Află mai multe<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2701,6 +2717,7 @@
 <translation id="4876273079589074638">Ajută-i pe inginerii noștri să investigheze și să remedieze această blocare. Dacă poți, indică pașii exacți. Orice detaliu este important!</translation>
 <translation id="4876895919560854374">Blochează și deblochează ecranul</translation>
 <translation id="4877276003880815204">Inspectează elementele</translation>
+<translation id="4878653975845355462">Administratorul a dezactivat fundalurile personalizate</translation>
 <translation id="4879491255372875719">Automat (prestabilit)</translation>
 <translation id="4880328057631981605">Nume punct de acces</translation>
 <translation id="4880827082731008257">Caută în istoric</translation>
@@ -2756,10 +2773,10 @@
 <translation id="4943691134276646401">„<ph name="CHROME_EXTENSION_NAME" />” dorește să se conecteze la un port serial</translation>
 <translation id="4944310289250773232">Acest serviciu de autentificare este găzduit de <ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">Acțiuni</translation>
+<translation id="4952981627953231344">Plugin VM nu este permis pe acest dispozitiv. Contactează administratorul dispozitivului din organizație.</translation>
 <translation id="4953689047182316270">să răspundă evenimentelor de accesibilitate</translation>
 <translation id="4953808748584563296">Avatar portocaliu prestabilit</translation>
 <translation id="4955710816792587366">Alege codul PIN</translation>
-<translation id="4955814292505481804">Anuală</translation>
 <translation id="4959262764292427323">Parolele sunt salvate în Contul tău Google, astfel încât să le poți folosi pe orice dispozitiv</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Aplicația a fost instalată de administrator.</translation>
@@ -3241,7 +3258,6 @@
 <translation id="5659593005791499971">Adresă de e-mail</translation>
 <translation id="5659833766619490117">Pagina nu a putut fi tradusă</translation>
 <translation id="5660204307954428567">Asociază cu <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Perpetuă</translation>
 <translation id="5667546120811588575">Se configurează Google Play...</translation>
 <translation id="5669267381087807207">Se activează</translation>
 <translation id="5669691691057771421">Introdu noul cod PIN</translation>
@@ -3257,6 +3273,7 @@
 <translation id="5687326903064479980">Fus orar</translation>
 <translation id="5689516760719285838">Locație</translation>
 <translation id="56907980372820799">Conectați datele</translation>
+<translation id="5691180005790455277">Toate datele și cookie-urile stocate de <ph name="SITE_GROUP_NAME" /> și de orice alte site-uri subordonate vor fi șterse.</translation>
 <translation id="5691511426247308406">Familie</translation>
 <translation id="5692183275898619210">S-a finalizat printarea</translation>
 <translation id="5696143504434933566">Raportează abuzul din „<ph name="EXTENSION_NAME" />”</translation>
@@ -3343,7 +3360,6 @@
 <translation id="5815645614496570556">Adresă X.400</translation>
 <translation id="5816434091619127343">Modificările solicitate ar face imprimanta inutilizabilă.</translation>
 <translation id="5817918615728894473">Asociază</translation>
-<translation id="5819762621475381970">- aspectul camerei în care te afli;</translation>
 <translation id="5821565227679781414">Creați o comandă rapidă</translation>
 <translation id="5825412242012995131">Activat (recomandat)</translation>
 <translation id="5826395379250998812">Conectează-ți dispozitivul <ph name="DEVICE_TYPE" /> cu telefonul. <ph name="LINK_BEGIN" />Află mai multe<ph name="LINK_END" /></translation>
@@ -3479,6 +3495,7 @@
 <translation id="6007240208646052708">Căutarea vocală în limba ta nu este disponibilă.</translation>
 <translation id="6009781704028455063">Senzor încorporat</translation>
 <translation id="6010869025736512584">Se accesează intrarea video</translation>
+<translation id="6011074160056912900">Rețeaua ethernet</translation>
 <translation id="6011193465932186973">Amprentă</translation>
 <translation id="6011449291337289699">Șterge datele site-ului</translation>
 <translation id="6015266928248016057">PUK nevalid. Număr de reîncercări rămase: <ph name="RETRIES" />.</translation>
@@ -3515,6 +3532,7 @@
 <translation id="6053401458108962351">&amp;Șterge datele de navigare...</translation>
 <translation id="6055171183283175969">Parola introdusă nu este corectă.</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 cu criptare RSA</translation>
+<translation id="6055907707645252013"><ph name="NETWORK_TYPE" /> rețea, nu este conectată</translation>
 <translation id="6056710589053485679">Reîncărcați normal</translation>
 <translation id="6057381398996433816">Acest site nu are permisiunea de a folosi senzorii de mișcare și de lumină.</translation>
 <translation id="6058567592298841668">Mașina virtuală cu plugin: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3578,6 +3596,7 @@
 <translation id="6136114942382973861">Închide bara de descărcări</translation>
 <translation id="6137767437444130246">Certificat de utilizator</translation>
 <translation id="6138680304137685902">Semnătură X9.62 ECDSA cu SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, nicio rețea</translation>
 <translation id="6141988275892716286">Confirmă descărcarea</translation>
 <translation id="6143186082490678276">Primiți ajutor</translation>
 <translation id="6144938890088808325">Ajută-ne să îmbunătățim Chromebookurile</translation>
@@ -3884,6 +3903,7 @@
 <translation id="6602956230557165253">Utilizați butoanele săgeată la stânga și la dreapta pentru a naviga.</translation>
 <translation id="6605847144724004692">Nu a fost încă evaluat de utilizatori.</translation>
 <translation id="6607831829715835317">Mai multe instru&amp;mente</translation>
+<translation id="6611972847767394631">Regăsește filele aici</translation>
 <translation id="6612358246767739896">Conținut protejat</translation>
 <translation id="6615455863669487791">Afișați</translation>
 <translation id="6618097958368085618">Păstrează oricum</translation>
@@ -3952,6 +3972,7 @@
 <translation id="6709133671862442373">Știri</translation>
 <translation id="6709357832553498500">Conectează-te folosind <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Înapoi</translation>
+<translation id="6715803357256707211">A apărut o eroare în timpul instalării aplicației Linux. Dă clic pe notificare pentru detalii.</translation>
 <translation id="6721678857435001674">să vadă marca și modelul cheii de securitate</translation>
 <translation id="6721972322305477112">&amp;Fișier</translation>
 <translation id="672213144943476270">Deblochează profilul înainte de a naviga ca invitat.</translation>
@@ -3976,7 +3997,6 @@
 <translation id="674632704103926902">Activați tragerea prin atingere</translation>
 <translation id="6748217015615267851">Motor de redare: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Poți continua, dar numai datele și setările sincronizate vor fi restabilite. Toate datele locale se vor pierde.</translation>
-<translation id="6748775883310276718">Chioșc cu o singură aplicație</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Incognito)</translation>
 <translation id="6757101664402245801">Adresa URL a fost copiată</translation>
 <translation id="6758056191028427665">Spune-ne cum ne descurcăm.</translation>
@@ -3986,6 +4006,7 @@
 <translation id="6769712124046837540">Se adaugă imprimanta...</translation>
 <translation id="6770664076092644100">Confirmă prin NFC</translation>
 <translation id="6771503742377376720">Este o Autoritate de certificare</translation>
+<translation id="6772339735733515807">Gestionează extensiile</translation>
 <translation id="6775163072363532304">Dispozitivele disponibile vor apărea aici.</translation>
 <translation id="6777817260680419853">Redirecționarea a fost blocată</translation>
 <translation id="6778737459546443941">Părintele tău nu l-a aprobat încă</translation>
@@ -4124,6 +4145,7 @@
 <translation id="6972180789171089114">Audio/Video</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> nu poate deschide fișiere din acest dosar, deoarece conține fișiere de sistem</translation>
 <translation id="6972754398087986839">Începe</translation>
+<translation id="6973611239564315524">Este disponibil un upgrade la Debian 10 (Buster)</translation>
 <translation id="6974609594866392343">Modul demo offline</translation>
 <translation id="6977381486153291903">Versiune firmware</translation>
 <translation id="6978121630131642226">Motoarele de căutare</translation>
@@ -4583,6 +4605,7 @@
 <translation id="7644543211198159466">Culoare și temă</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (proprietar)</translation>
 <translation id="7645681574855902035">Se anulează backupul Linux</translation>
+<translation id="7646772052135772216">Sincronizarea parolelor nu funcționează</translation>
 <translation id="7647403192093989392">Nu există activități recente.</translation>
 <translation id="7648992873808071793">Stocheze fișiere pe acest dispozitiv</translation>
 <translation id="7649070708921625228">Ajutor</translation>
@@ -4771,6 +4794,7 @@
 <translation id="7877451762676714207">Eroare de server necunoscută. Încercați din nou sau contactați administratorul serverului.</translation>
 <translation id="7877680364634660272">Tur</translation>
 <translation id="7878562273885520351">Este posibil ca parola să fie compromisă</translation>
+<translation id="7879631849810108578">Set de comenzi rapide: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Datele locale vor fi șterse când repornești</translation>
 <translation id="7881483672146086348">Afișați contul</translation>
 <translation id="7882358943899516840">Tip furnizor</translation>
@@ -4857,6 +4881,7 @@
 <translation id="7987814697832569482">Conectează-te mereu prin această rețea VPN</translation>
 <translation id="7988355189918024273">Activați funcțiile de accesibilitate</translation>
 <translation id="7991296728590311172">Setările pentru Accesul prin comutare</translation>
+<translation id="7994350303002908848">Nu s-a putut instala Plugin VM. Încearcă din nou sau contactează administratorul dispozitivului din organizație. Cod de eroare <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">Metodă EAP</translation>
 <translation id="7997826902155442747">Prioritatea procesului</translation>
 <translation id="7999229196265990314">Au fost create următoarele fișiere:
@@ -4949,7 +4974,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Niciun cookie terță parte}=1{Un cookie terță parte este blocat}few{# cookie-uri terță parte sunt blocate}other{# de cookie-uri terță parte sunt blocate}}</translation>
 <translation id="810875025413331850">Nu a fost găsit niciun dispozitiv în apropiere.</translation>
 <translation id="8111155949205007504">Trimite această parolă pe iPhone</translation>
-<translation id="8113043281354018522">Alege tipul de licență</translation>
 <translation id="8114875720387900039">Împarte pe orizontală</translation>
 <translation id="8116972784401310538">&amp;Manager de marcaje</translation>
 <translation id="8117620576188476503">Gestionează conexiunile, actualizările și setările din bara de stare. Pentru a le accesa folosind tastatura, apasă Alt + Shift + S.</translation>
@@ -5106,6 +5130,7 @@
 <translation id="8327039559959785305">Eroare la instalarea fișierelor Linux. Încearcă din nou.</translation>
 <translation id="8335587457941836791">Anulați fixarea din raft</translation>
 <translation id="8336407002559723354">Actualizările se încheie în <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Repornește dispozitivul ca să afișezi textul sistemului în <ph name="LANGUAGE" /></translation>
 <translation id="8336739000755212683">Schimbă imaginea contului de pe dispozitiv</translation>
 <translation id="8337047789441383384">Ai înregistrat deja această cheie de securitate. Nu trebuie să o înregistrezi din nou.</translation>
 <translation id="8338952601723052325">Site-ul dezvoltatorului</translation>
@@ -5149,6 +5174,7 @@
 <translation id="8400146488506985033">Gestionează persoanele</translation>
 <translation id="8401432541486058167">Introdu codul PIN asociat cardului inteligent.</translation>
 <translation id="8405046151008197676">Vezi informațiile importante despre ultima actualizare</translation>
+<translation id="8408068190360279472">Rețea <ph name="NETWORK_TYPE" />, se stabilește conexiunea</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Mai întâi întreabă (recomandat)</translation>
 <translation id="8418445294933751433">&amp;Afișează ca filă</translation>
@@ -5438,6 +5464,7 @@
 <translation id="8807632654848257479">Stabil</translation>
 <translation id="8808478386290700967">Magazin web</translation>
 <translation id="8808686172382650546">Pisică</translation>
+<translation id="8808744862003883508">În această pagină poți vedea toate extensiile instalate în Chrome.</translation>
 <translation id="8809147117840417135">Turcoaz deschis</translation>
 <translation id="8813698869395535039">Nu te poți conecta folosind <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">foaie de hârtie</translation>
@@ -5665,7 +5692,6 @@
 <translation id="9121814364785106365">Deschide ca filă fixată</translation>
 <translation id="9122176249172999202">Aplicația <ph name="IDS_SHORT_PRODUCT_NAME" /> este întreruptă</translation>
 <translation id="9124003689441359348">Parolele salvate vor fi afișate aici</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> rămase)</translation>
 <translation id="9128317794749765148">Nu s-a putut finaliza configurarea</translation>
 <translation id="9128870381267983090">Conectați-vă la rețea</translation>
 <translation id="9130015405878219958">A fost introdus un mod nevalid.</translation>
@@ -5704,6 +5730,7 @@
 <translation id="9188732951356337132">Trimite date de utilizare și diagnosticare. Momentan, dispozitivul trimite automat date de diagnosticare și de utilizare a dispozitivului și aplicațiilor la Google. Acestea nu vor fi folosite la identificarea copilului și vor ajuta la stabilitatea sistemului, a aplicațiilor și altele. Unele date cumulate vor ajuta aplicațiile și partenerii Google, cum ar fi dezvoltatorii Android. Dacă ai activat setarea Activitatea suplimentară de pe web și din aplicații pentru copilul tău, aceste date pot fi salvate în Contul său Google. <ph name="BEGIN_LINK2" />Află mai multe<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPSec + cheia predistribuită</translation>
 <translation id="920045321358709304">Caută pe <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">Toate datele offline vor fi șterse</translation>
 <translation id="9201220332032049474">Opțiuni de blocare a ecranului</translation>
 <translation id="9203398526606335860">&amp;Analizare activată</translation>
 <translation id="9203904171912129171">Selectează un dispozitiv</translation>
@@ -5716,6 +5743,7 @@
 <translation id="9220525904950070496">Eliminați contul</translation>
 <translation id="9220820413868316583">Ridică, apoi încearcă din nou.</translation>
 <translation id="923467487918828349">Afișează-le pe toate</translation>
+<translation id="929117907539171075">Datele offline din aplicația instalată vor fi șterse la rândul lor</translation>
 <translation id="930268624053534560">Marcaje temporale detaliate</translation>
 <translation id="932327136139879170">Pagina de pornire</translation>
 <translation id="932508678520956232">Printarea nu a putut fi inițiată.</translation>
@@ -5741,6 +5769,7 @@
 <translation id="960719561871045870">Cod operator</translation>
 <translation id="960987915827980018">A mai rămas aproape 1 oră</translation>
 <translation id="962802172452141067">Arborele cu dosarele de marcaje</translation>
+<translation id="964057662886721376">Unele extensii te pot încetini, mai ales cele pe care n-ai vrut să le instalezi.</translation>
 <translation id="964286338916298286">Administratorul IT a dezactivat accesoriile Chrome pentru dispozitiv.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Aplicație}few{Aplicații}other{Aplicații}}</translation>
 <translation id="965211523698323809">Trimite și primește mesaje text pe <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Află mai multe<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb
index 565f1d2..3e5e94f 100644
--- a/chrome/app/resources/generated_resources_ru.xtb
+++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Персонализированные</translation>
 <translation id="1178581264944972037">Пауза</translation>
 <translation id="117916940443676133">Ваш электронный ключ не защищен PIN-кодом. Чтобы управлять учетными данными, создайте PIN-код.</translation>
-<translation id="118069123878619799">– получить представление о параметрах вашего тела, например о росте;</translation>
 <translation id="1181037720776840403">Удалить</translation>
 <translation id="1183237619868651138">Не удается установить файл <ph name="EXTERNAL_CRX_FILE" /> в локальный кеш.</translation>
 <translation id="1185924365081634987">Чтобы исправить данную сетевую ошибку, попробуйте <ph name="GUEST_SIGNIN_LINK_START" />войти в гостевом режиме<ph name="GUEST_SIGNIN_LINK_END" />.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">Ожидание загрузки <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033">Количество других доступных устройств: <ph name="NUM_PRINTERS" />.</translation>
 <translation id="1495677929897281669">Вернуться на вкладку</translation>
+<translation id="1499271269825557605">Если вы обнаружили незнакомое расширение или заметили сбои в работе браузера, вы можете отключить расширение или изменить его настройки.</translation>
 <translation id="1500297251995790841">Неизвестное устройство [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">При одновременной работе в нескольких аккаунтах необходимо сначала зайти в аккаунт владельца.</translation>
 <translation id="150411034776756821">Удалить <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Доступ к вашей камере для этой страницы заблокирован.</translation>
 <translation id="1507246803636407672">&amp;Отменить</translation>
 <translation id="1508491105858779599">Чтобы снять блокировку экрана, поместите палец на сканер отпечатков пальцев.</translation>
+<translation id="1508575541972276599">Текущая версия: Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">Доступ к любому устройству <ph name="DEVICE_NAME_AND_VENDOR" /> по USB</translation>
 <translation id="150962533380566081">Неверный PUK-код.</translation>
 <translation id="1510030919967934016">Отслеживание вашего местоположения этой страницей заблокировано.</translation>
@@ -433,6 +434,7 @@
 <translation id="1601560923496285236">Применить</translation>
 <translation id="1603914832182249871">(инкогнито)</translation>
 <translation id="1604432177629086300">Ошибка печати. Проверьте принтер и повторите попытку.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: синхронизация паролей не работает</translation>
 <translation id="1607139524282324606">Очистить запись</translation>
 <translation id="1608626060424371292">Удалить профиль</translation>
 <translation id="1608668830839595724">Другие действия с выбранными закладками</translation>
@@ -559,6 +561,8 @@
 <translation id="177336675152937177">Данные размещаемых приложений</translation>
 <translation id="1776712937009046120">Добавить пользователя</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Это устройство принадлежит домену <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    Чтобы войти в аккаунт <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />, нажмите "Далее".</translation>
 <translation id="1779652936965200207">Введите данный ключ доступа в "<ph name="DEVICE_NAME" />":</translation>
 <translation id="1780152987505130652">Закрыть группу</translation>
 <translation id="1781291988450150470">Текущий PIN-код</translation>
@@ -746,6 +750,7 @@
 <translation id="2048653237708779538">Действие недоступно</translation>
 <translation id="2050339315714019657">Книжная</translation>
 <translation id="2053312383184521053">Данные о состоянии бездействия</translation>
+<translation id="2055585478631012616">Вы автоматически выйдете из аккаунта на этих сайтах (в том числе на открытых вкладках).</translation>
 <translation id="205560151218727633">Логотип Google Ассистента</translation>
 <translation id="2058456167109518507">Обнаружено устройство</translation>
 <translation id="2059913712424898428">Часовой пояс</translation>
@@ -761,6 +766,7 @@
 <translation id="2079545284768500474">Отмена</translation>
 <translation id="2080070583977670716">Дополнительные настройки</translation>
 <translation id="2087822576218954668">Печать: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">Сеть VPN</translation>
 <translation id="2089566709556890888">Безопасный браузер Google Chrome</translation>
 <translation id="2089795179672254991">Запрашивать мое разрешение на доступ сайтов к тексту и изображениям, скопированным в буфер обмена (рекомендуется)</translation>
 <translation id="2090165459409185032">Чтобы восстановить данные аккаунта, перейдите на страницу google.com/accounts/recovery</translation>
@@ -984,6 +990,7 @@
 <translation id="2379232090534544565">Сайту предоставлен доступ к аудио- и видеовходу</translation>
 <translation id="2379281330731083556">Печатать с помощью системного диалогового окна <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Спрашивать разрешение перед отправкой (рекомендуется)</translation>
+<translation id="2382818385048255866">Проверьте расширения</translation>
 <translation id="2384436799579181135">Произошла ошибка. Проверьте принтер и повторите попытку.</translation>
 <translation id="2387458720915042159">Тип подключения через прокси-сервер</translation>
 <translation id="2391419135980381625">Стандартный шрифт</translation>
@@ -1034,6 +1041,7 @@
 <translation id="2462724976360937186">Идентификатор ключа ЦС</translation>
 <translation id="2462752602710430187">Добавлен принтер <ph name="PRINTER_NAME" /></translation>
 <translation id="2464089476039395325">HTTP-прокси</translation>
+<translation id="2467267713099745100">Сеть <ph name="NETWORK_TYPE" /> отключена</translation>
 <translation id="2468205691404969808">Использовать файлы cookie, чтобы запомнить ваши предпочтения, даже если вы не открываете эти страницы</translation>
 <translation id="2468402215065996499">Тамагочи</translation>
 <translation id="2469259292033957819">У вас нет сохраненных принтеров.</translation>
@@ -1288,6 +1296,7 @@
 <translation id="2800760947029405028">Загрузить изображение</translation>
 <translation id="2803375539583399270">Введите PIN-код</translation>
 <translation id="2804043232879091219">Не удалось открыть альтернативный браузер.</translation>
+<translation id="2804667941345577550">Вы автоматически выйдете из аккаунта на этом сайте (в том числе на открытых вкладках).</translation>
 <translation id="2804680522274557040">Камера отключена</translation>
 <translation id="2805646850212350655">Зашифрованная файловая система (EFS) Microsoft</translation>
 <translation id="2805756323405976993">Приложения</translation>
@@ -1295,6 +1304,7 @@
 <translation id="2806891468525657116">Ярлык уже добавлен</translation>
 <translation id="2807517655263062534">Скачанные файлы появятся здесь</translation>
 <translation id="2809586584051668049">и ещё <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2810390687497823527">Если вы обнаружили незнакомое расширение или заметили сбои в работе браузера, вы можете отключить расширение или изменить его настройки.</translation>
 <translation id="2812049959647166806">Thunderbolt не поддерживается</translation>
 <translation id="2812944337881233323">Выйдите из Chrome и снова войдите в систему</translation>
 <translation id="2812989263793994277">Не показывать</translation>
@@ -1334,6 +1344,7 @@
 <translation id="2861941300086904918">Менеджер безопасности – Native Client</translation>
 <translation id="2864601841139725659">Выберите фото профиля</translation>
 <translation id="2865919525181940183">Скриншот с открытыми программами на экране</translation>
+<translation id="286674810810214575">Проверка источников питания…</translation>
 <translation id="2867768963760577682">Открыть в закрепленной вкладке</translation>
 <translation id="2868746137289129307">Это устаревшее расширение отключено в соответствии с корпоративной политикой. Когда появится новая версия, оно может включиться автоматически.</translation>
 <translation id="2870560284913253234">Сайт</translation>
@@ -1411,6 +1422,7 @@
 <translation id="2972581237482394796">&amp;Повторить</translation>
 <translation id="2973324205039581528">Отключить звук на сайте</translation>
 <translation id="2977480621796371840">Удалить из группы</translation>
+<translation id="2979520980928493164">Быстрый и защищенный браузер Chrome</translation>
 <translation id="2979639724566107830">Открыть в новом окне</translation>
 <translation id="2981113813906970160">Показывать большой курсор мыши</translation>
 <translation id="2982970937345031">Отправить анонимный отзыв</translation>
@@ -1517,6 +1529,7 @@
 <translation id="3143515551205905069">Отмена</translation>
 <translation id="3143754809889689516">Воспроизвести с начала</translation>
 <translation id="3144647712221361880">Открыть ссылку как</translation>
+<translation id="3145187901750964977">Не удалось установить виртуальную машину. Повторите попытку или обратитесь к администратору устройства. Код ошибки: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Версия:
     <ph name="LINUX_VERSION" />
 
@@ -1555,6 +1568,7 @@
 <translation id="3192947282887913208">Аудиофайлы</translation>
 <translation id="3194737229810486521">Сайт <ph name="URL" /> запрашивает разрешение на постоянное хранение данных на вашем устройстве.</translation>
 <translation id="3199127022143353223">Серверы</translation>
+<translation id="3201306578844503970">Не удалось установить виртуальную машину из-за ошибки сети. Повторите попытку или обратитесь к администратору устройства. Код ошибки: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Здесь появятся доступные USB-устройства.</translation>
 <translation id="3202131003361292969">Путь</translation>
 <translation id="3202173864863109533">Звук на этой вкладке отключен</translation>
@@ -1891,7 +1905,6 @@
 <translation id="3678156199662914018">Расширение: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Благодарим за отзыв. Отчет будет отправлен, когда вы подключитесь к Интернету.</translation>
 <translation id="3682824389861648626">Порог перемещения</translation>
-<translation id="3683023058278427253">Для вашего домена найдено несколько типов лицензий. Выберите один из них, чтобы продолжить.</translation>
 <translation id="3683524264665795342">Запрос доступа к экрану от <ph name="APP_NAME" /></translation>
 <translation id="368789413795732264">Произошла ошибка при записи файла: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Запись данных в файлы и каталоги, открытые в приложении</translation>
@@ -2065,6 +2078,7 @@
 <translation id="389589731200570180">Проявляйте гостеприимство</translation>
 <translation id="389901847090970821">Выберите раскладку клавиатуры</translation>
 <translation id="3899879303189199559">Не в Сети больше года</translation>
+<translation id="3900789207771372462">У некоторых расширений есть доступ к вашим действиям в браузере, в том числе к персональным данным.</translation>
 <translation id="3900966090527141178">Экспорт паролей</translation>
 <translation id="3901991538546252627">Подключение к <ph name="NAME" /></translation>
 <translation id="3905761538810670789">Восстановить приложение</translation>
@@ -2155,7 +2169,6 @@
 <translation id="4013132157686828973"><ph name="CLIENT_NAME" /> отлаживает этот браузер.</translation>
 <translation id="4014432863917027322">Восстановить "<ph name="EXTENSION_NAME" />"?</translation>
 <translation id="4015163439792426608">Используете расширения? <ph name="BEGIN_LINK" />Управляйте ими<ph name="END_LINK" /> в специальном разделе.</translation>
-<translation id="4020106588733303597">Не удалось загрузить доступные лицензии.</translation>
 <translation id="4020327272915390518">Действия</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">Добавить в словарь</translation>
@@ -2193,6 +2206,7 @@
 <translation id="407520071244661467">Масштаб</translation>
 <translation id="4075639477629295004">Невозможно транслировать файл "<ph name="FILE_NAME" />"</translation>
 <translation id="4077917118009885966">Реклама заблокирована на этом сайте</translation>
+<translation id="4077919383365622693">Все данные и файлы cookie, хранящиеся на сайте <ph name="SITE" />, будут удалены.</translation>
 <translation id="4079140982534148664">Использовать расширенную проверку правописания</translation>
 <translation id="4081242589061676262">Ошибка трансляции файла.</translation>
 <translation id="4084682180776658562">Закладка</translation>
@@ -2267,6 +2281,7 @@
 <translation id="4181841719683918333">Языки</translation>
 <translation id="4184885522552335684">Перетащите дисплей на новое место</translation>
 <translation id="4194570336751258953">Включить нажатие от прикосновения</translation>
+<translation id="4194595472342532425">Не удалось настроить Plugin VM из-за проблем с конфигурацией. Обратитесь к администратору устройства. Код ошибки: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Открыть в новой вкладке</translation>
 <translation id="4195814663415092787">Ранее открытые вкладки</translation>
 <translation id="4198146608511578238">Чтобы поговорить с Google Ассистентом, просто удерживайте значок панели запуска.</translation>
@@ -2490,6 +2505,7 @@
 <translation id="4549791035683739768">На вашем электронном ключе нет сохраненных отпечатков пальцев.</translation>
 <translation id="4551763574344810652">Чтобы отменить действие, нажмите <ph name="MODIFIER_KEY_DESCRIPTION" /></translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005">Сеть <ph name="NETWORK_TYPE" />, уровень сигнала – <ph name="SIGNAL_STRENGTH" /> %</translation>
 <translation id="4554591392113183336">Внешнее расширение не новее существующего.</translation>
 <translation id="4555769855065597957">Тень</translation>
 <translation id="4555863373929230635">Чтобы сохранять пароли в аккаунте Google, войдите в него и включите синхронизацию.</translation>
@@ -2567,6 +2583,7 @@
 <translation id="4665446389743427678">Все данные, хранящиеся на сайте <ph name="SITE" />, будут удалены.</translation>
 <translation id="4668721319092543482">Нажмите, чтобы включить плагин "<ph name="PLUGIN_NAME" />"</translation>
 <translation id="4672657274720418656">Сжать страницу</translation>
+<translation id="46733273239502219">Офлайн-данные в установленных приложениях будут также удалены.</translation>
 <translation id="4673442866648850031">Оставлять открытыми инструменты стилуса при его извлечении</translation>
 <translation id="4677585247300749148">Сайт <ph name="URL" /> запрашивает доступ к специальным возможностям.</translation>
 <translation id="4677772697204437347">Память GPU</translation>
@@ -2658,7 +2675,6 @@
 <translation id="4823484602432206655">Просмотр и изменение настроек для пользователей и устройств</translation>
 <translation id="4824958205181053313">Отключить синхронизацию?</translation>
 <translation id="4827675678516992122">Ошибка подключения</translation>
-<translation id="4828937774870308359">Обратная</translation>
 <translation id="4829768588131278040">Установить PIN-код</translation>
 <translation id="4830502475412647084">Обновление ОС</translation>
 <translation id="4830573902900904548">Устройству <ph name="DEVICE_TYPE" /> не удается подключиться к Интернету по сети <ph name="NETWORK_NAME" />. Выберите другую сеть. <ph name="LEARN_MORE_LINK_START" />Подробнее…<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2699,6 +2715,7 @@
 <translation id="4876273079589074638">Опишите свои действия максимально подробно, чтобы наши специалисты смогли быстрее выяснить причину сбоя и устранить ее.</translation>
 <translation id="4876895919560854374">Блокировка и разблокировка экрана</translation>
 <translation id="4877276003880815204">Проверить элементы</translation>
+<translation id="4878653975845355462">Администратор запретил изменять фоновое изображение.</translation>
 <translation id="4879491255372875719">Автоматически (по умолчанию)</translation>
 <translation id="4880328057631981605">Название точки доступа</translation>
 <translation id="4880827082731008257">Искать в истории</translation>
@@ -2754,10 +2771,10 @@
 <translation id="4943691134276646401">Расширение "<ph name="CHROME_EXTENSION_NAME" />" запрашивает разрешение подключиться к последовательному порту</translation>
 <translation id="4944310289250773232">Сервис аутентификации размещен в домене <ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">Действия</translation>
+<translation id="4952981627953231344">Использование Plugin VM запрещено на этом устройстве. Обратитесь к администратору.</translation>
 <translation id="4953689047182316270">Использование специальных возможностей</translation>
 <translation id="4953808748584563296">Аватар по умолчанию (оранжевый)</translation>
 <translation id="4955710816792587366">Установите PIN-код</translation>
-<translation id="4955814292505481804">Годовая</translation>
 <translation id="4959262764292427323">Пароли сохраняются в аккаунте Google и будут доступны на любом устройстве.</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> (<ph name="PROFILE_NAME" />)</translation>
 <translation id="496185450405387901">Это приложение установлено администратором</translation>
@@ -3239,7 +3256,6 @@
 <translation id="5659593005791499971">Электронная почта</translation>
 <translation id="5659833766619490117">Не удалось перевести страницу</translation>
 <translation id="5660204307954428567">Подключение к устройству <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Бессрочная</translation>
 <translation id="5667546120811588575">Настройка Google Play…</translation>
 <translation id="5669267381087807207">Активация</translation>
 <translation id="5669691691057771421">Введите новый PIN-код</translation>
@@ -3255,6 +3271,7 @@
 <translation id="5687326903064479980">Часовой пояс</translation>
 <translation id="5689516760719285838">Геоданные</translation>
 <translation id="56907980372820799">Связать аккаунты</translation>
+<translation id="5691180005790455277">Все данные и файлы cookie, сохраненные группой сайтов <ph name="SITE_GROUP_NAME" />, будут удалены.</translation>
 <translation id="5691511426247308406">Семейство</translation>
 <translation id="5692183275898619210">Печать завершена</translation>
 <translation id="5696143504434933566">Пожаловаться на расширение "<ph name="EXTENSION_NAME" />"</translation>
@@ -3341,7 +3358,6 @@
 <translation id="5815645614496570556">Адрес X.400</translation>
 <translation id="5816434091619127343">Если применить запрошенные изменения, принтер станет непригодным для использования.</translation>
 <translation id="5817918615728894473">Подключить</translation>
-<translation id="5819762621475381970">– узнать планировку комнаты, в которой вы находитесь.</translation>
 <translation id="5821565227679781414">Создать ярлык</translation>
 <translation id="5825412242012995131">Вкл. (рекомендуется)</translation>
 <translation id="5826395379250998812">Подключите устройство <ph name="DEVICE_TYPE" /> к телефону. <ph name="LINK_BEGIN" />Подробнее…<ph name="LINK_END" /></translation>
@@ -3477,6 +3493,7 @@
 <translation id="6007240208646052708">Голосовой поиск на вашем языке недоступен.</translation>
 <translation id="6009781704028455063">Встроенный датчик</translation>
 <translation id="6010869025736512584">Доступ к видеовходу</translation>
+<translation id="6011074160056912900">Сеть Ethernet</translation>
 <translation id="6011193465932186973">Отпечатки пальцев</translation>
 <translation id="6011449291337289699">Удаление данных сайтов</translation>
 <translation id="6015266928248016057">Недействительный PUK-код. Осталось попыток: <ph name="RETRIES" />.</translation>
@@ -3513,6 +3530,7 @@
 <translation id="6053401458108962351">&amp;Удаление данных о просмотренных страницах...</translation>
 <translation id="6055171183283175969">Введен неверный пароль.</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 с шифрованием RSA</translation>
+<translation id="6055907707645252013">Сеть <ph name="NETWORK_TYPE" />, нет подключения</translation>
 <translation id="6056710589053485679">Обычная перезагрузка</translation>
 <translation id="6057381398996433816">Этому сайту запрещено использовать датчики движения и освещенности</translation>
 <translation id="6058567592298841668">Виртуальная машина для плагинов: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3576,6 +3594,7 @@
 <translation id="6136114942382973861">Закрыть панель загрузок</translation>
 <translation id="6137767437444130246">Сертификат пользователя</translation>
 <translation id="6138680304137685902">Подпись ECDSA X9.62 с SHA-384</translation>
+<translation id="6138894911715675297">Сеть <ph name="NETWORK_TYPE" />, нет доступа</translation>
 <translation id="6141988275892716286">Подтвердите скачивание</translation>
 <translation id="6143186082490678276">Справка</translation>
 <translation id="6144938890088808325">Помогите нам улучшить Chromebook</translation>
@@ -3882,6 +3901,7 @@
 <translation id="6602956230557165253">Для перехода используйте клавиши со стрелками вправо и влево.</translation>
 <translation id="6605847144724004692">Оценок пока нет.</translation>
 <translation id="6607831829715835317">Дополнительные инстру&amp;менты</translation>
+<translation id="6611972847767394631">Здесь находятся ваши вкладки</translation>
 <translation id="6612358246767739896">Защищенный контент</translation>
 <translation id="6615455863669487791">Показать</translation>
 <translation id="6618097958368085618">Все равно сохранить</translation>
@@ -3950,6 +3970,7 @@
 <translation id="6709133671862442373">Новости</translation>
 <translation id="6709357832553498500">Подключиться через <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Назад</translation>
+<translation id="6715803357256707211">При установке приложения для Linux произошла ошибка. Чтобы узнать больше, нажмите на уведомление.</translation>
 <translation id="6721678857435001674">Просмотр производителя и модели Электронного ключа</translation>
 <translation id="6721972322305477112">&amp;Файл</translation>
 <translation id="672213144943476270">Чтобы пользоваться браузером в гостевом режиме, разблокируйте свой профиль.</translation>
@@ -3974,7 +3995,6 @@
 <translation id="674632704103926902">Включить перетаскивание нажатием</translation>
 <translation id="6748217015615267851">Видеообработка: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Если вы продолжите сейчас, восстановлены будут только синхронизированные, но не локальные данные.</translation>
-<translation id="6748775883310276718">Киоск для одного приложения</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (инкогнито)</translation>
 <translation id="6757101664402245801">URL скопирован</translation>
 <translation id="6758056191028427665">Расскажите, как у вас дела.</translation>
@@ -3984,6 +4004,7 @@
 <translation id="6769712124046837540">Добавление принтера...</translation>
 <translation id="6770664076092644100">Подтвердить через NFC</translation>
 <translation id="6771503742377376720">Является центром сертификации</translation>
+<translation id="6772339735733515807">Управление расширениями</translation>
 <translation id="6775163072363532304">Здесь будут появляться доступные устройства.</translation>
 <translation id="6777817260680419853">Попытка переадресации заблокирована</translation>
 <translation id="6778737459546443941">Ещё не одобрено родителем</translation>
@@ -4122,6 +4143,7 @@
 <translation id="6972180789171089114">Аудио/видео</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> не может открывать файлы в этой папке, поскольку она содержит системные файлы.</translation>
 <translation id="6972754398087986839">Начать</translation>
+<translation id="6973611239564315524">Доступна версия Debian 10 (Buster).</translation>
 <translation id="6974609594866392343">Демонстрационный офлайн-режим</translation>
 <translation id="6977381486153291903">Версия встроенного ПО</translation>
 <translation id="6978121630131642226">Поисковые системы</translation>
@@ -4581,6 +4603,7 @@
 <translation id="7644543211198159466">Цвет и тема</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (владелец)</translation>
 <translation id="7645681574855902035">Отмена резервного копирования контейнера Linux…</translation>
+<translation id="7646772052135772216">Синхронизация паролей не работает</translation>
 <translation id="7647403192093989392">Нет недавних действий</translation>
 <translation id="7648992873808071793">сохранение файлов на этом устройстве</translation>
 <translation id="7649070708921625228">Справка</translation>
@@ -4769,6 +4792,7 @@
 <translation id="7877451762676714207">Обнаружена неизвестная ошибка сервера. Повторите попытку или свяжитесь с его администратором.</translation>
 <translation id="7877680364634660272">Обзор возможностей</translation>
 <translation id="7878562273885520351">Злоумышленники могли узнать ваш пароль</translation>
+<translation id="7879631849810108578">Добавлено сочетание клавиш: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Локальные данные будут удалены после перезапуска</translation>
 <translation id="7881483672146086348">Просмотреть аккаунт</translation>
 <translation id="7882358943899516840">Тип провайдера</translation>
@@ -4855,6 +4879,7 @@
 <translation id="7987814697832569482">Всегда использовать эту VPN-сеть</translation>
 <translation id="7988355189918024273">Включить функции для людей с ограниченными возможностями</translation>
 <translation id="7991296728590311172">Настройки функции Switch Access</translation>
+<translation id="7994350303002908848">Не удалось установить Plugin VM. Повторите попытку или обратитесь к администратору устройства. Код ошибки: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">Метод EAP</translation>
 <translation id="7997826902155442747">Приоритет процессов</translation>
 <translation id="7999229196265990314">Созданы следующие файлы:
@@ -4947,7 +4972,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Нет сторонних файлов cookie}=1{Заблокирован 1 сторонний файл cookie}one{Заблокирован # сторонний файл cookie}few{Заблокировано # сторонних файла cookie}many{Заблокировано # сторонних файлов cookie}other{Заблокировано # сторонних файла cookie}}</translation>
 <translation id="810875025413331850">Устройства поблизости не найдены.</translation>
 <translation id="8111155949205007504">Поделитесь паролем с iPhone</translation>
-<translation id="8113043281354018522">Выберите тип лицензии</translation>
 <translation id="8114875720387900039">Разделить по горизонтали</translation>
 <translation id="8116972784401310538">&amp;Диспетчер закладок</translation>
 <translation id="8117620576188476503">Управляйте подключениями, обновлениями и настройками с помощью строки состояния. Для этого нажмите Alt + Shift + S.</translation>
@@ -5103,6 +5127,7 @@
 <translation id="8327039559959785305">Не удалось подключить файлы Linux. Повторите попытку.</translation>
 <translation id="8335587457941836791">Открепить от панели запуска</translation>
 <translation id="8336407002559723354">Прекращение автоматического обновления: <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Чтобы язык системы поменялся на <ph name="LANGUAGE" />, перезапустите устройство</translation>
 <translation id="8336739000755212683">Изменить фото профиля на устройстве</translation>
 <translation id="8337047789441383384">Вы уже зарегистрировали этот электронный ключ ранее.</translation>
 <translation id="8338952601723052325">Сайт разработчика</translation>
@@ -5146,6 +5171,7 @@
 <translation id="8400146488506985033">Управлять пользователями</translation>
 <translation id="8401432541486058167">Укажите PIN-код, связанный с вашей смарт-картой.</translation>
 <translation id="8405046151008197676">Изучите основную информацию о последнем обновлении.</translation>
+<translation id="8408068190360279472">Сеть <ph name="NETWORK_TYPE" />, подключение</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Всегда спрашивать (рекомендуется)</translation>
 <translation id="8418445294933751433">&amp;Показать как вкладку</translation>
@@ -5435,6 +5461,7 @@
 <translation id="8807632654848257479">Стабильная</translation>
 <translation id="8808478386290700967">Интернет-магазин Chrome</translation>
 <translation id="8808686172382650546">Кот</translation>
+<translation id="8808744862003883508">На этой странице показаны все расширения, установленные в Chrome.</translation>
 <translation id="8809147117840417135">Светло-бирюзовый</translation>
 <translation id="8813698869395535039">Не удалось войти в аккаунт <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">лист бумаги</translation>
@@ -5662,7 +5689,6 @@
 <translation id="9121814364785106365">Открыть в закрепленной вкладке</translation>
 <translation id="9122176249172999202">Работа приложения "<ph name="IDS_SHORT_PRODUCT_NAME" />" приостановлена</translation>
 <translation id="9124003689441359348">Здесь появятся сохраненные пароли</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (осталось <ph name="LICENSE_COUNT" />)</translation>
 <translation id="9128317794749765148">Не удалось завершить установку</translation>
 <translation id="9128870381267983090">Подключитесь к сети</translation>
 <translation id="9130015405878219958">Указан неверный режим.</translation>
@@ -5701,6 +5727,7 @@
 <translation id="9188732951356337132">Отправка данных о работе устройства. Сейчас это устройство автоматически отправляет в Google диагностическую информацию, сведения об использовании приложений и самого устройства. Установить личность ребенка по этим данным нельзя. Они нужны нам, чтобы в будущем повысить стабильность приложений и внести другие улучшения. Некоторые данные в обобщенном виде пригодятся партнерам Google, например разработчикам Android. Если запись дополнительной истории приложений и веб-поиска включена, эта информация может сохраняться в аккаунте ребенка. <ph name="BEGIN_LINK2" />Подробнее…<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + общий ключ</translation>
 <translation id="920045321358709304">Искать в <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">Все офлайн-данные будут удалены.</translation>
 <translation id="9201220332032049474">Параметры блокировки экрана</translation>
 <translation id="9203398526606335860">&amp;Сбор данных включен</translation>
 <translation id="9203904171912129171">Выберите устройство</translation>
@@ -5713,6 +5740,7 @@
 <translation id="9220525904950070496">Удалить аккаунт</translation>
 <translation id="9220820413868316583">Поднимите палец и попробуйте ещё раз.</translation>
 <translation id="923467487918828349">Показать все</translation>
+<translation id="929117907539171075">Офлайн-данные в установленном приложении будут также удалены.</translation>
 <translation id="930268624053534560">Подробные временные метки</translation>
 <translation id="932327136139879170">Главная страница</translation>
 <translation id="932508678520956232">Не удалось начать печать.</translation>
@@ -5738,6 +5766,7 @@
 <translation id="960719561871045870">Код оператора</translation>
 <translation id="960987915827980018">Осталось около часа</translation>
 <translation id="962802172452141067">Дерево папок с закладками</translation>
+<translation id="964057662886721376">Некоторые расширения могут замедлить работу браузера – особенно те, которые были установлены без вашего ведома.</translation>
 <translation id="964286338916298286">Администратор отключил бонусы Chrome для вашего устройства.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Приложение}one{Приложения}few{Приложения}many{Приложения}other{Приложения}}</translation>
 <translation id="965211523698323809">Отправлять и получать SMS на устройстве <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Подробнее…<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_si.xtb b/chrome/app/resources/generated_resources_si.xtb
index 19b8aa93..a0c4706 100644
--- a/chrome/app/resources/generated_resources_si.xtb
+++ b/chrome/app/resources/generated_resources_si.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">සැකසුම්</translation>
 <translation id="1178581264944972037">විරාමය</translation>
 <translation id="117916940443676133">ඔබේ ආරක්‍ෂක යතුරු රහස් අංකයකින් ආරක්‍ෂා නොකෙරේ. පුරන දත්ත කළමනා කිරීමට, පළමුව රහස් අංකයක් නිර්මාණ කරන්න.</translation>
-<translation id="118069123878619799">- උස වැනි ඔබේ ශාරීරික ලක්‍ෂණ</translation>
 <translation id="1181037720776840403">ඉවත් කරන්න</translation>
 <translation id="1183237619868651138"><ph name="EXTERNAL_CRX_FILE" /> දේශීය කැශ් මත ස්ථාපනය කළ නොහැකි විය.</translation>
 <translation id="1185924365081634987">මෙම ජාල දෝශය සැකසීමට ඔබට <ph name="GUEST_SIGNIN_LINK_START" />අමුත්තෙකු ලෙස ගවේශනය<ph name="GUEST_SIGNIN_LINK_END" /> උත්සහ කළ හැක.</translation>
@@ -1905,7 +1904,6 @@
 <translation id="3678156199662914018">දිගුව: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">ඔබගේ ප්‍රතිපෝෂණයට ස්තූතියි. ඔබ දැන් නොබැඳි වන අතර, ඔබේ වාර්තාව පසුව යවනු ඇත.</translation>
 <translation id="3682824389861648626">චලන සීමාන්තිකය</translation>
-<translation id="3683023058278427253">අපි ඔබේ වසම සඳහා බලපත්‍ර වර්ග කිහිපයක් හඳුනා ගත්තෙමු. ඉදිරියට යාමට එකක් තෝරා ගන්න.</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> තිර බෙදාගැනීම් ඉල්ලීමක්</translation>
 <translation id="368789413795732264">මෙම ගොනුව ලිවීමට උත්සාහ කිරීමේදී දෝෂයක් ඇති විය: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">ඔබ යෙදුම තුළ විවෘත කරන ගොනු සහ ෆෝල්ඩර වෙතට ලියන්න</translation>
@@ -2171,7 +2169,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" මෙම බ්‍රව්සරය නිදොස් කරයි</translation>
 <translation id="4014432863917027322">අළුත්වැඩියාකරන්නද? "<ph name="EXTENSION_NAME" />"?</translation>
 <translation id="4015163439792426608">දිගු තිබේද? එක පහසු තැනකින් <ph name="BEGIN_LINK" />ඔබේ දිගු කළමනා කරන්න<ph name="END_LINK" />.</translation>
-<translation id="4020106588733303597">අපොයි! තිබෙන බලපත්‍ර පූරණයට පද්ධතිය අසමත් විය.</translation>
 <translation id="4020327272915390518">විකල්ප මෙනුව</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">ශබ්දකෝෂය වෙත &amp;එක් කරන්න</translation>
@@ -2678,7 +2675,6 @@
 <translation id="4823484602432206655">පරිශීලක සහ උපාංගය සැකසීම් කියවා වෙනස් කරන්න</translation>
 <translation id="4824958205181053313">සමමුහූර්තය අවලංගු කරන්නේද?</translation>
 <translation id="4827675678516992122">සම්බන්ධ කළ නොහැකි විය</translation>
-<translation id="4828937774870308359">ඕස්ට්‍රේලියානු</translation>
 <translation id="4829768588131278040">PIN පිහිටුවන්න</translation>
 <translation id="4830502475412647084">OS යාවත්කාලීනය ස්ථාපනය කරමින්</translation>
 <translation id="4830573902900904548">ඔබේ <ph name="DEVICE_TYPE" /> හට <ph name="NETWORK_NAME" />. භාවිත කර අන්තර්ජාලය වෙත පිවිසිය නොහැකිය. කරුණාකර වෙනත් ජාලයක් තෝරන්න. <ph name="LEARN_MORE_LINK_START" />තව දැන ගන්න<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2779,7 +2775,6 @@
 <translation id="4953689047182316270">ප්‍රවේශ්‍යතා සිදුවීම්වලට ප්‍රතිචාර දක්වන්න</translation>
 <translation id="4953808748584563296">පෙරනිමි තැඹිලි නියුරුව</translation>
 <translation id="4955710816792587366">ඔබගේ PIN තෝරන්න</translation>
-<translation id="4955814292505481804">වාර්ෂික</translation>
 <translation id="4959262764292427323">මුරපද ඔබගේ Google ගිණුමේ සුරක්ෂිත කර ඇති අතර, එනිසා ඔබට ඒවා ඕනෑම උපාංගයක භාවිතා කළ හැකිය</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">මෙම යෙදුම ඔබේ පරිපාලකයා විසින් ස්ථාපන කරනු ලැබ ඇත.</translation>
@@ -3262,7 +3257,6 @@
 <translation id="5659593005791499971">ඊතැපෑල</translation>
 <translation id="5659833766619490117">මෙම පිටුව පරිවර්තනය කළ නොහැකි විය</translation>
 <translation id="5660204307954428567"><ph name="DEVICE_NAME" /> සමඟ යුගල කරන්න</translation>
-<translation id="5662477687021125631">නිත්‍ය</translation>
 <translation id="5667546120811588575">Google Play පිහිටුවමින්...</translation>
 <translation id="5669267381087807207">සක්‍රීය වෙමින්...</translation>
 <translation id="5669691691057771421">නව PIN ඇතුළු කරන්න</translation>
@@ -3365,7 +3359,6 @@
 <translation id="5815645614496570556">X.400 ලිපිනය</translation>
 <translation id="5816434091619127343">ඉල්ලූ මුද්‍රක වෙනස්කම් මුද්‍රකය භාවිතා කළ නොහැකි තත්ත්වයට පත් කළ හැකිය.</translation>
 <translation id="5817918615728894473">යුගල කරන්න</translation>
-<translation id="5819762621475381970">- ඔබේ කාමරයේ වින්‍යාසය</translation>
 <translation id="5821565227679781414">කෙටිමාර්ගය සාදන්න</translation>
 <translation id="5825412242012995131">සක්‍රීය (නිර්දේශිතයි)</translation>
 <translation id="5826395379250998812">ඔබේ <ph name="DEVICE_TYPE" /> ඔබේ දුරකථනය සමඟ සම්බන්ධ කරන්න. <ph name="LINK_BEGIN" />තවත් දැන ගන්න<ph name="LINK_END" /></translation>
@@ -4001,7 +3994,6 @@
 <translation id="674632704103926902">තට්ටු ඇදගෙන යාම සබල කරන්න</translation>
 <translation id="6748217015615267851">විදහාපානය: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">ඔබට ඉදිරියට හැක, නමුත් ඔබගේ සමමුහුර්තක දත්ත හා සැකසුම් යළි පිහිටුවීම සිදුවේ. සියලුම පෙදෙසි දත්ත නැති වනු ඇත.</translation>
-<translation id="6748775883310276718">තනි යෙදුම් Kiosk</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Incognito)</translation>
 <translation id="6757101664402245801">URL පිටපත් කරන ලදී</translation>
 <translation id="6758056191028427665">අපි සිදු කරන්නේ කෙසේදැයි අපට දන්වන්න.</translation>
@@ -4977,7 +4969,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{තෙවන පාර්ශ්ව කුකී නැත}=1{1 තෙවන පාර්ශ්ව කුකීයක් අවහිර කළා}one{තෙවන පාර්ශ්ව කුකී # ක් අවහිර කළා}other{තෙවන පාර්ශ්ව කුකී # ක් අවහිර කළා}}</translation>
 <translation id="810875025413331850">කිසිඳු උපාංගයක් අවටින් හමු නොවිය.</translation>
 <translation id="8111155949205007504">ඔබේ iPhone සමඟ මෙම මුරපදය බෙදාගන්න</translation>
-<translation id="8113043281354018522">බලපත්‍ර වර්ගය තෝරා ගන්න</translation>
 <translation id="8114875720387900039">තිරස්ව වෙන් කරන්න</translation>
 <translation id="8116972784401310538">&amp;පිටු සලකුණු කලමනාකරු</translation>
 <translation id="8117620576188476503">තත්ත්ව තැටිය සමඟ සබැඳුම්, යාවත්කාලීන සහ සැකසීම් කළමනාකරණය කරන්න. යතුරු පුවරුව මඟින් මෙහි ලබා ගැනීමට, Alt + Shift + S ඔබන්න.</translation>
@@ -5696,7 +5687,6 @@
 <translation id="9121814364785106365">රැඳවූ ටැබයක් ලෙස විවෘත කරන්න</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> විරාම කෙරේ</translation>
 <translation id="9124003689441359348">සුරැකි මුරපද මෙහි දිස් වනු ඇත</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> ඉතිරි.)</translation>
 <translation id="9128317794749765148">සැකසීම සම්පූර්ණ කළ නොහැකි විය</translation>
 <translation id="9128870381267983090">ජාලයට සබඳ වන්න</translation>
 <translation id="9130015405878219958">අවලංගු ප්‍රකාරය ඇතුළු කෙරිණි.</translation>
diff --git a/chrome/app/resources/generated_resources_sk.xtb b/chrome/app/resources/generated_resources_sk.xtb
index 8cf242e06..27e6389 100644
--- a/chrome/app/resources/generated_resources_sk.xtb
+++ b/chrome/app/resources/generated_resources_sk.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Vlastné</translation>
 <translation id="1178581264944972037">Pozastaviť</translation>
 <translation id="117916940443676133">Váš bezpečnostný kľúč nie je chránený kódom PIN. Ak chcete spravovať prihlasovacie údaje, najprv vytvorte PIN.</translation>
-<translation id="118069123878619799">– vašich fyzických vlastnostiach, napríklad výške</translation>
 <translation id="1181037720776840403">Odstrániť</translation>
 <translation id="1183237619868651138">Súbor <ph name="EXTERNAL_CRX_FILE" /> nie je možné nainštalovať v miestnej vyrovnávacej pamäti</translation>
 <translation id="1185924365081634987">Ak chcete túto chybu siete odstrániť, môžete tiež skúsiť <ph name="GUEST_SIGNIN_LINK_START" />prehliadanie v režime hosťa<ph name="GUEST_SIGNIN_LINK_END" />.</translation>
@@ -1907,7 +1906,6 @@
 <translation id="3678156199662914018">Rozšírenie: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Ďakujeme vám za spätnú väzbu. Teraz ste offline a vaše hlásenie sa odošle neskôr.</translation>
 <translation id="3682824389861648626">Limit pohybu</translation>
-<translation id="3683023058278427253">Zistili sme viacero typov licencií pre vašu doménu. Ak chcete pokračovať, vyberte jednu.</translation>
 <translation id="3683524264665795342">Žiadosť o zdieľanie obrazovky s aplikáciou <ph name="APP_NAME" /></translation>
 <translation id="368789413795732264">Pri zapisovaní súboru sa vyskytla chyba: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Zapisovať do súborov a priečinkov, ktoré v aplikácii otvoríte</translation>
@@ -2172,7 +2170,6 @@
 <translation id="4013132157686828973"><ph name="CLIENT_NAME" /> ladí tento prehliadač</translation>
 <translation id="4014432863917027322">Chcete opraviť rozšírenie <ph name="EXTENSION_NAME" />?</translation>
 <translation id="4015163439792426608">Používate rozšírenia? <ph name="BEGIN_LINK" />Uľahčite si správu rozšírení<ph name="END_LINK" /> na jednom mieste.</translation>
-<translation id="4020106588733303597">Ojoj, systému sa nepodarilo načítať dostupné licencie.</translation>
 <translation id="4020327272915390518">Ponuka možností</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">Prid&amp;ať do slovníka</translation>
@@ -2679,7 +2676,6 @@
 <translation id="4823484602432206655">Čítať a meniť nastavenia používateľa a zariadenia</translation>
 <translation id="4824958205181053313">Chcete zrušiť synchronizáciu?</translation>
 <translation id="4827675678516992122">Nepodarilo sa pripojiť</translation>
-<translation id="4828937774870308359">Opačné</translation>
 <translation id="4829768588131278040">Nastaviť kód PIN</translation>
 <translation id="4830502475412647084">Inštaluje sa aktualizácia operačného systému</translation>
 <translation id="4830573902900904548">Vaše zariadenie <ph name="DEVICE_TYPE" /> sa nedokáže pripojiť k internetu pomocou siete <ph name="NETWORK_NAME" />. Vyberte inú sieť. <ph name="LEARN_MORE_LINK_START" />Ďalšie informácie<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2780,7 +2776,6 @@
 <translation id="4953689047182316270">Reagovať na udalosti dostupnosti</translation>
 <translation id="4953808748584563296">Predvolený oranžový avatar</translation>
 <translation id="4955710816792587366">Vyberte si PIN</translation>
-<translation id="4955814292505481804">Ročná</translation>
 <translation id="4959262764292427323">Heslá sa ukladajú do účtu Google, takže ich môžete používať v ľubovoľnom zariadení</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Túto aplikáciu nainštaloval váš správca.</translation>
@@ -3262,7 +3257,6 @@
 <translation id="5659593005791499971">E-mail</translation>
 <translation id="5659833766619490117">Túto stránku sa nepodarilo preložiť</translation>
 <translation id="5660204307954428567">Párovanie so zariadením <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Doživotná</translation>
 <translation id="5667546120811588575">Nastavuje sa služba Google Play...</translation>
 <translation id="5669267381087807207">Prebieha aktivácia</translation>
 <translation id="5669691691057771421">Zadanie nového kódu PIN</translation>
@@ -3365,7 +3359,6 @@
 <translation id="5815645614496570556">Adresa X.400</translation>
 <translation id="5816434091619127343">Požadované zmeny by tlačiareň znefunkčnili.</translation>
 <translation id="5817918615728894473">Párovať</translation>
-<translation id="5819762621475381970">– rozložení vašej miestnosti</translation>
 <translation id="5821565227679781414">Vytvoriť odkaz</translation>
 <translation id="5825412242012995131">Zapnuté (odporúča sa)</translation>
 <translation id="5826395379250998812">Pripojte zariadenie <ph name="DEVICE_TYPE" /> k svojmu telefónu. <ph name="LINK_BEGIN" />Ďalšie informácie<ph name="LINK_END" /></translation>
@@ -4003,7 +3996,6 @@
 <translation id="674632704103926902">Povoliť presunutie klepnutím</translation>
 <translation id="6748217015615267851">Vykresľovací modul: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Môžete pokračovať, ale obnovia sa iba vaše synchronizované údaje a nastavenia. Všetky miestne údaje stratíte.</translation>
-<translation id="6748775883310276718">Verejný terminál s jedinou aplikáciou</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Inkognito)</translation>
 <translation id="6757101664402245801">Webová adresa bola skopírovaná</translation>
 <translation id="6758056191028427665">Dajte nám tak vedieť, ako sa nám darí v našom úsilí.</translation>
@@ -4981,7 +4973,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Žiadne súbory cookie tretích strán}=1{Je blokovaný 1 súbor cookie tretej strany}few{Sú blokované # súbory cookie tretích strán}many{# third-party cookies are blocked}other{Je blokovaných # súborov cookie tretích strán}}</translation>
 <translation id="810875025413331850">Nenašli sa žiadne zariadenia nablízku.</translation>
 <translation id="8111155949205007504">Zdieľajte toto heslo so svojím zariadením iPhone</translation>
-<translation id="8113043281354018522">Vyberte typ licencie</translation>
 <translation id="8114875720387900039">Rozdeliť vodorovne</translation>
 <translation id="8116972784401310538">&amp;Správca záložiek</translation>
 <translation id="8117620576188476503">Spravujte pripojenia, aktualizácie a nastavenia pomocou stavového panela. Ak sem chcete prejsť pomocou klávesnice, stlačte klávesy Alt + Shift + S.</translation>
@@ -5699,7 +5690,6 @@
 <translation id="9121814364785106365">Otvoriť ako pevnú kartu</translation>
 <translation id="9122176249172999202">Aplikácia <ph name="IDS_SHORT_PRODUCT_NAME" /> je pozastavená</translation>
 <translation id="9124003689441359348">Tu sa zobrazia uložené heslá</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (zostáva: <ph name="LICENSE_COUNT" />)</translation>
 <translation id="9128317794749765148">Nastavenie sa nepodarilo dokončiť</translation>
 <translation id="9128870381267983090">Pripojiť k sieti</translation>
 <translation id="9130015405878219958">Zadali ste neplatný režim.</translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb
index d748841..a349c977 100644
--- a/chrome/app/resources/generated_resources_sl.xtb
+++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Po meri</translation>
 <translation id="1178581264944972037">Prekini</translation>
 <translation id="117916940443676133">Vaš varnostni ključ ni zaščiten s kodo PIN. Če želite upravljati podatke za prijavo, naprej ustvarite kodo PIN.</translation>
-<translation id="118069123878619799">– vaše fizične poteze, na primer višina,</translation>
 <translation id="1181037720776840403">Odstrani</translation>
 <translation id="1183237619868651138">Datoteke <ph name="EXTERNAL_CRX_FILE" /> ni mogoče namestiti v lokalnem predpomnilniku.</translation>
 <translation id="1185924365081634987">Če želite odpraviti to omrežno napako, lahko prav tako poskusite <ph name="GUEST_SIGNIN_LINK_START" />brskati kot gost<ph name="GUEST_SIGNIN_LINK_END" />.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">Čakanje na <ph name="LOAD_STATE_PARAMETER" /> ...</translation>
 <translation id="1495486559005647033">Število drugih razpoložljivih naprav: <ph name="NUM_PRINTERS" />.</translation>
 <translation id="1495677929897281669">Nazaj na zavihek</translation>
+<translation id="1499271269825557605">Če razširitve ne prepoznate ali če brskalnik ne deluje po pričakovanjih, lahko tukaj izklopite ali prilagodite razširitve.</translation>
 <translation id="1500297251995790841">Neznana naprava [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">V seji prijave z več računi mora biti ta račun lastnika prvi prijavljeni račun.</translation>
 <translation id="150411034776756821">Odstrani <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Tej strani je onemogočen dostop do kamere.</translation>
 <translation id="1507246803636407672">Zavrzi</translation>
 <translation id="1508491105858779599">Položite prst na tipalo prstnih odtisov, da odklenete napravo.</translation>
+<translation id="1508575541972276599">Trenutna različica je Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">Dostop do katere koli naprave <ph name="DEVICE_NAME_AND_VENDOR" /> prek USB-ja</translation>
 <translation id="150962533380566081">Neveljavna koda PUK.</translation>
 <translation id="1510030919967934016">Tej strani je preprečeno spremljanje vaše lokacije.</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">Uporabi</translation>
 <translation id="1603914832182249871">(Način brez beleženja zgodovine)</translation>
 <translation id="1604432177629086300">Ni bilo mogoče tiskati. Preverite tiskalnik in poskusite znova.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: sinhronizacija gesel ne deluje</translation>
 <translation id="1607139524282324606">Izbris vnosa</translation>
 <translation id="1608626060424371292">Odstrani tega uporabnika</translation>
 <translation id="1608668830839595724">Več dejanj za izbrane elemente</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">Podatki gostujočih aplikacij</translation>
 <translation id="1776712937009046120">Dodaj uporabnika</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">To napravo upravlja domena <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    Kliknite »Naprej«, če želite nadaljevati prijavo v račun za <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation>
 <translation id="1779652936965200207">Geslo vnesite v napravi »<ph name="DEVICE_NAME" />«:</translation>
 <translation id="1780152987505130652">Zapri skupino</translation>
 <translation id="1781291988450150470">Trenutna koda PIN</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">Dejanje ni na voljo</translation>
 <translation id="2050339315714019657">Pokončno</translation>
 <translation id="2053312383184521053">Podatki o stanju nedejavnosti</translation>
+<translation id="2055585478631012616">Odjavljeni boste s teh spletnih mest, vključno s tistimi na odprtih zavihkih</translation>
 <translation id="205560151218727633">Logotip Pomočnika Google</translation>
 <translation id="2058456167109518507">Zaznana je bila naprava</translation>
 <translation id="2059913712424898428">Časovni pas</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">Razveljavi</translation>
 <translation id="2080070583977670716">Več nastavitev</translation>
 <translation id="2087822576218954668">Tiskanje: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">Omrežje VPN</translation>
 <translation id="2089566709556890888">Varno brskanje z Google Chromom</translation>
 <translation id="2089795179672254991">Vprašaj, ko želi spletno mesto videti besedilo in slike, kopirane v odložišče (priporočljivo)</translation>
 <translation id="2090165459409185032">Če želite obnoviti podatke računa, pojdite na: google.com/accounts/recovery</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">Spletno mesto dostopa do vhodov za zvok in sliko</translation>
 <translation id="2379281330731083556">Tiskanje v pogovornem oknu sistema ... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Vprašaj pred pošiljanjem (priporočljivo)</translation>
+<translation id="2382818385048255866">Preverjanje razširitev</translation>
 <translation id="2384436799579181135">Prišlo je do napake. Preverite tiskalnik in poskusite znova.</translation>
 <translation id="2387458720915042159">Vrsta povezave strežnika proxy</translation>
 <translation id="2391419135980381625">Standardna pisava</translation>
@@ -1036,6 +1043,7 @@
 <translation id="2462724976360937186">ID ključa overitelja potrdil</translation>
 <translation id="2462752602710430187">Dodano: <ph name="PRINTER_NAME" /></translation>
 <translation id="2464089476039395325">Proxy HTTP</translation>
+<translation id="2467267713099745100">Omrežje <ph name="NETWORK_TYPE" />, izklopljeno</translation>
 <translation id="2468205691404969808">Uporablja piškotke, da si zapomni vaše nastavitve, tudi če teh strani ne obiskujete</translation>
 <translation id="2468402215065996499">Tamagoči</translation>
 <translation id="2469259292033957819">Nimate shranjenih tiskalnikov.</translation>
@@ -1290,6 +1298,7 @@
 <translation id="2800760947029405028">Naloži sliko</translation>
 <translation id="2803375539583399270">Vnesite kodo PIN</translation>
 <translation id="2804043232879091219">Nadomestnega brskalnika ni bilo mogoče odpreti</translation>
+<translation id="2804667941345577550">Odjavljeni boste s tega spletnega mesta, vključno s tistim na odprtih zavihkih</translation>
 <translation id="2804680522274557040">Fotoaparat je izklopljen</translation>
 <translation id="2805646850212350655">Microsoftov šifrirni datotečni sistem</translation>
 <translation id="2805756323405976993">Aplikacije</translation>
@@ -1297,6 +1306,7 @@
 <translation id="2806891468525657116">Bližnjica že obstaja</translation>
 <translation id="2807517655263062534">Tu so prikazane datoteke, ki jih prenesete</translation>
 <translation id="2809586584051668049">in še <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2810390687497823527">Če razširitve ne prepoznate ali če brskalnik ne deluje po pričakovanjih, lahko tukaj izklopite ali prilagodite razširitve.</translation>
 <translation id="2812049959647166806">Thunderbolt ni podprt</translation>
 <translation id="2812944337881233323">Poskusite se odjaviti in znova prijaviti</translation>
 <translation id="2812989263793994277">Ne pokaži slik</translation>
@@ -1336,6 +1346,7 @@
 <translation id="2861941300086904918">Upravitelj varnosti Native Client</translation>
 <translation id="2864601841139725659">Nastavitev slike za profil</translation>
 <translation id="2865919525181940183">Posnetek zaslona s programi, ki so trenutno na zaslon</translation>
+<translation id="286674810810214575">Preverjanje virov napajanja ...</translation>
 <translation id="2867768963760577682">Odpri v pripetem zavihku</translation>
 <translation id="2868746137289129307">Ta razširitev je zastarela in jo je onemogočil pravilnik podjetja. Ko bo na voljo novejša različica, bo morda samodejno omogočena.</translation>
 <translation id="2870560284913253234">Spletno mesto</translation>
@@ -1413,6 +1424,7 @@
 <translation id="2972581237482394796">&amp;Uveljavi</translation>
 <translation id="2973324205039581528">Izklopi zvok spletnega mesta</translation>
 <translation id="2977480621796371840">Odstrani iz skupine</translation>
+<translation id="2979520980928493164">Bolj varen in vesel Chrome</translation>
 <translation id="2979639724566107830">Odpri v novem oknu</translation>
 <translation id="2981113813906970160">Pokaži velik miškin kazalec</translation>
 <translation id="2982970937345031">Anonimna prijava</translation>
@@ -1519,6 +1531,7 @@
 <translation id="3143515551205905069">Prekliči sinhronizacijo</translation>
 <translation id="3143754809889689516">Predvajaj od začetka</translation>
 <translation id="3144647712221361880">Odpiranje povezave kot</translation>
+<translation id="3145187901750964977">Navideznega računalnika ni bilo mogoče namestiti. Poskusite znova ali se obrnite na skrbnika naprave v organizaciji. Koda napake: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Različica:
     <ph name="LINUX_VERSION" />
 
@@ -1557,6 +1570,7 @@
 <translation id="3192947282887913208">Zvočne datoteke</translation>
 <translation id="3194737229810486521"><ph name="URL" /> želi trajno shraniti podatke v vaši napravi</translation>
 <translation id="3199127022143353223">Strežniki</translation>
+<translation id="3201306578844503970">Navideznega računalnika ni bilo mogoče namestiti zaradi omrežne napake. Poskusite znova ali se obrnite na skrbnika naprave v organizaciji. Koda napake: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Razpoložljive naprave USB bodo prikazane tukaj.</translation>
 <translation id="3202131003361292969">Pot</translation>
 <translation id="3202173864863109533">Zvok tega zavihka je izklopljen.</translation>
@@ -1893,7 +1907,6 @@
 <translation id="3678156199662914018">Razširitev: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Hvala za povratne informacije. Trenutno nimate povezave, zato bo poročilo poslano pozneje.</translation>
 <translation id="3682824389861648626">Prag gibanja</translation>
-<translation id="3683023058278427253">Zaznali smo več vrst licenc za vašo domeno. Izberite eno, če želite nadaljevati.</translation>
 <translation id="3683524264665795342">Zahteva za skupno rabo zaslona aplikacije <ph name="APP_NAME" /></translation>
 <translation id="368789413795732264">Pri zapisovanju datoteke je prišlo do napake: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Zapisovanje v datoteke in mape, ki jih odprete v aplikaciji</translation>
@@ -2067,6 +2080,7 @@
 <translation id="389589731200570180">Skupna raba z gosti</translation>
 <translation id="389901847090970821">Izbira tipkovnice</translation>
 <translation id="3899879303189199559">Brez povezave več kot eno leto</translation>
+<translation id="3900789207771372462">Nekatere razširitve lahko vidijo vašo dejavnost brskanja, vključno z osebnimi podatki.</translation>
 <translation id="3900966090527141178">Izvoz gesel</translation>
 <translation id="3901991538546252627">Vzpostavljanje povezave z omrežjem <ph name="NAME" /></translation>
 <translation id="3905761538810670789">Popravi aplikacijo</translation>
@@ -2157,7 +2171,6 @@
 <translation id="4013132157686828973">»<ph name="CLIENT_NAME" />« odpravlja napake v brskalniku</translation>
 <translation id="4014432863917027322">Želite popraviti »<ph name="EXTENSION_NAME" />«?</translation>
 <translation id="4015163439792426608">Imate razširitve? <ph name="BEGIN_LINK" />Upravljajte razširitve<ph name="END_LINK" /> na enem preprostem mestu.</translation>
-<translation id="4020106588733303597">Ojoj. Sistemu ni uspelo naložiti razpoložljivih licenc.</translation>
 <translation id="4020327272915390518">Meni z možnostmi</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Dodaj v slovar</translation>
@@ -2195,6 +2208,7 @@
 <translation id="407520071244661467">Prilagajanje velikosti</translation>
 <translation id="4075639477629295004">Ni mogoče predvajati <ph name="FILE_NAME" />.</translation>
 <translation id="4077917118009885966">Oglasi blokirani na tem spletnem mestu</translation>
+<translation id="4077919383365622693">Izbrisani bodo vsi podatki in piškotki, ki jih je shranilo spletno mesto <ph name="SITE" />.</translation>
 <translation id="4079140982534148664">Uporaba izboljšanega preverjanja črkovanja</translation>
 <translation id="4081242589061676262">Datoteke ni mogoče predvajati.</translation>
 <translation id="4084682180776658562">Zaznamek</translation>
@@ -2269,6 +2283,7 @@
 <translation id="4181841719683918333">Jeziki</translation>
 <translation id="4184885522552335684">Povlecite, če želite premakniti zaslon</translation>
 <translation id="4194570336751258953">Omogoči klik z dotikom</translation>
+<translation id="4194595472342532425">Plugin VM-ja ni bilo mogoče nastaviti zaradi težave s konfiguracijo. Obrnite se na skrbnika naprave v organizaciji. Koda napake: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Odpri v novem zavihku</translation>
 <translation id="4195814663415092787">Nadaljuj prejšnjo sejo</translation>
 <translation id="4198146608511578238">Pridržite ikono zaganjalnika, če želite komunicirati s Pomočnikom Google.</translation>
@@ -2492,6 +2507,7 @@
 <translation id="4549791035683739768">Varnostni ključ nima shranjenih prstnih odtisov</translation>
 <translation id="4551763574344810652">Pritisnite <ph name="MODIFIER_KEY_DESCRIPTION" /> za razveljavitev</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005">Omrežje <ph name="NETWORK_TYPE" />, moč signala je <ph name="SIGNAL_STRENGTH" /> %</translation>
 <translation id="4554591392113183336">Zunanja razširitev je iste ali starejše različice kot trenutna.</translation>
 <translation id="4555769855065597957">Senca</translation>
 <translation id="4555863373929230635">Če želite shraniti gesla v račun Google, se prijavite in vklopite sinhronizacijo.</translation>
@@ -2569,6 +2585,7 @@
 <translation id="4665446389743427678">Vsi podatki, ki jih shrani <ph name="SITE" />, bodo izbrisani.</translation>
 <translation id="4668721319092543482">Kliknite, če želite omogočiti <ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">Ustvari povzetek strani</translation>
+<translation id="46733273239502219">Izbrisani bodo tudi podatki brez povezave v nameščenih aplikacijah</translation>
 <translation id="4673442866648850031">Odpiranje orodij za pisalo, ko je pisalo izvlečeno</translation>
 <translation id="4677585247300749148"><ph name="URL" /> se želi odzvati na dogodke funkcij za ljudi s posebnimi potrebami</translation>
 <translation id="4677772697204437347">Pomnilnik GPE</translation>
@@ -2660,7 +2677,6 @@
 <translation id="4823484602432206655">Branje in spreminjanje nastavitev funkcij za ljudi s posebnimi potrebami</translation>
 <translation id="4824958205181053313">Želite preklicati sinhronizacijo?</translation>
 <translation id="4827675678516992122">Povezava ni mogoča</translation>
-<translation id="4828937774870308359">Avstralsko</translation>
 <translation id="4829768588131278040">Nastavi kodo PIN</translation>
 <translation id="4830502475412647084">Nameščanje posodobitve operacijskega sistema</translation>
 <translation id="4830573902900904548">Naprava <ph name="DEVICE_TYPE" /> se ne more povezati v internet prek omrežja <ph name="NETWORK_NAME" />. Izberite drugo omrežje. <ph name="LEARN_MORE_LINK_START" />Več o tem<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2701,6 +2717,7 @@
 <translation id="4876273079589074638">Pomagajte našim tehnikom preučiti in odpraviti to zrušitev. Natančno navedite svoje korake, če lahko. Pomembna je vsaka podrobnost.</translation>
 <translation id="4876895919560854374">Zaklepanje in odklepanje zaslona</translation>
 <translation id="4877276003880815204">Pregled elementov</translation>
+<translation id="4878653975845355462">Skrbnik je izklopil ozadja po meri</translation>
 <translation id="4879491255372875719">Samodejno (privzeto)</translation>
 <translation id="4880328057631981605">Ime dostopne točke</translation>
 <translation id="4880827082731008257">Zgodovina iskanja</translation>
@@ -2756,10 +2773,10 @@
 <translation id="4943691134276646401">»<ph name="CHROME_EXTENSION_NAME" />« se želi povezati z zaporednimi vrati</translation>
 <translation id="4944310289250773232">Storitev preverjanja pristnosti gosti <ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">Dejanja</translation>
+<translation id="4952981627953231344">Plugin VM ni dovoljen v tej napravi. Obrnite se na skrbnika naprave v organizaciji.</translation>
 <translation id="4953689047182316270">Odzivanje na dogodke funkcij za ljudi s posebnimi potrebami</translation>
 <translation id="4953808748584563296">Privzeti oranžni avatar</translation>
 <translation id="4955710816792587366">Izberite kodo PIN</translation>
-<translation id="4955814292505481804">Letna</translation>
 <translation id="4959262764292427323">Gesla so shranjena v Google Računu, da jih lahko uporabite v kateri koli napravi</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Aplikacijo je namestil skrbnik.</translation>
@@ -3243,7 +3260,6 @@
 <translation id="5659593005791499971">E-pošta</translation>
 <translation id="5659833766619490117">Te strani ni bilo mogoče prevesti</translation>
 <translation id="5660204307954428567">Seznanitev z napravo <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Stalna</translation>
 <translation id="5667546120811588575">Nastavljanje Googla Play ...</translation>
 <translation id="5669267381087807207">Aktiviranje</translation>
 <translation id="5669691691057771421">Vnos nove kode PIN</translation>
@@ -3259,6 +3275,7 @@
 <translation id="5687326903064479980">Časovni pas</translation>
 <translation id="5689516760719285838">Lokacija</translation>
 <translation id="56907980372820799">Poveži podatke</translation>
+<translation id="5691180005790455277">Izbrisani bodo vsi podatki in piškotki, ki jih je shranila skupina <ph name="SITE_GROUP_NAME" /> in vsa spletna mesta v njej.</translation>
 <translation id="5691511426247308406">Družina</translation>
 <translation id="5692183275898619210">Tiskanje je dokončano</translation>
 <translation id="5696143504434933566">Prijava zlorabe v razširitvi »<ph name="EXTENSION_NAME" />«</translation>
@@ -3345,7 +3362,6 @@
 <translation id="5815645614496570556">Naslov X.400</translation>
 <translation id="5816434091619127343">Če uveljavite zahtevane spremembe tiskalnika, bo ta neuporaben.</translation>
 <translation id="5817918615728894473">Seznani</translation>
-<translation id="5819762621475381970">– tloris sobe.</translation>
 <translation id="5821565227679781414">Ustvari bližnjico</translation>
 <translation id="5825412242012995131">Vklop (priporočeno)</translation>
 <translation id="5826395379250998812">Povežite napravo <ph name="DEVICE_TYPE" /> s telefonom. <ph name="LINK_BEGIN" />Več o tem<ph name="LINK_END" /></translation>
@@ -3481,6 +3497,7 @@
 <translation id="6007240208646052708">Glasovno iskanje v vašem jeziku ni na voljo.</translation>
 <translation id="6009781704028455063">Vgrajeno tipalo</translation>
 <translation id="6010869025736512584">Dostopanje do videovhoda</translation>
+<translation id="6011074160056912900">Ethernetno omrežje</translation>
 <translation id="6011193465932186973">Prstni odtis</translation>
 <translation id="6011449291337289699">Brisanje podatkov spletnih mest</translation>
 <translation id="6015266928248016057">Neveljavna koda PUK. Še toliko vnovičnih poskusov: <ph name="RETRIES" />.</translation>
@@ -3517,6 +3534,7 @@
 <translation id="6053401458108962351">&amp;Izbriši podatke brskanja ...</translation>
 <translation id="6055171183283175969">Vnesli ste napačno geslo.</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 s šifriranjem RSA</translation>
+<translation id="6055907707645252013">Omrežje <ph name="NETWORK_TYPE" />, povezava ni vzpostavljena</translation>
 <translation id="6056710589053485679">Znova naloži z običajnim načinom</translation>
 <translation id="6057381398996433816">Temu spletnemu mestu je preprečena uporaba tipal gibanja in svetlobe.</translation>
 <translation id="6058567592298841668">Vtičnik za navidezni računalnik: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3580,6 +3598,7 @@
 <translation id="6136114942382973861">Zapri vrstico za prenose</translation>
 <translation id="6137767437444130246">Uporabniško potrdilo</translation>
 <translation id="6138680304137685902">Podpis X9.62 ECDSA z algoritmom SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, ni omrežja</translation>
 <translation id="6141988275892716286">Potrdi prenos</translation>
 <translation id="6143186082490678276">Poiščite pomoč</translation>
 <translation id="6144938890088808325">Pomagajte nam izboljšati Chromebooke</translation>
@@ -3886,6 +3905,7 @@
 <translation id="6602956230557165253">Pomikate se s puščicama levo in desno.</translation>
 <translation id="6605847144724004692">Še ni ocen uporabnikov.</translation>
 <translation id="6607831829715835317">Več orodij</translation>
+<translation id="6611972847767394631">Poiščite svoje zavihke tukaj</translation>
 <translation id="6612358246767739896">Zaščitena vsebina</translation>
 <translation id="6615455863669487791">Pokaži mi</translation>
 <translation id="6618097958368085618">Vseeno obdrži</translation>
@@ -3954,6 +3974,7 @@
 <translation id="6709133671862442373">Novice</translation>
 <translation id="6709357832553498500">Povezava z uporabo razširitve <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Nazaj</translation>
+<translation id="6715803357256707211">Med namestitvijo aplikacije za Linux je prišlo do napake. Za podrobnosti kliknite obvestilo.</translation>
 <translation id="6721678857435001674">Ogled znamke in modela varnostnega ključa</translation>
 <translation id="6721972322305477112">&amp;Datoteka</translation>
 <translation id="672213144943476270">Preden brskate kot gost, odklenite profil.</translation>
@@ -3978,7 +3999,6 @@
 <translation id="674632704103926902">Omogoči vlečenje z dotikom</translation>
 <translation id="6748217015615267851">Upodabljalnik: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Lahko nadaljujete, toda obnovljeni bodo samo sinhronizirani podatki in nastavitve. Vsi lokalni podatki bodo izgubljeni.</translation>
-<translation id="6748775883310276718">Način kioska s posamezno aplikacijo</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (način brez beleženja zgodovine)</translation>
 <translation id="6757101664402245801">URL je kopiran</translation>
 <translation id="6758056191028427665">Sporočite nam, kako ste zadovoljni z nami.</translation>
@@ -3988,6 +4008,7 @@
 <translation id="6769712124046837540">Dodajanje tiskalnika ...</translation>
 <translation id="6770664076092644100">Preverite prek NFC-ja</translation>
 <translation id="6771503742377376720">Je overitelj potrdil</translation>
+<translation id="6772339735733515807">Upravljanje razširitev</translation>
 <translation id="6775163072363532304">Tu bodo prikazane razpoložljive naprave.</translation>
 <translation id="6777817260680419853">Preusmeritev je blokirana</translation>
 <translation id="6778737459546443941">Starši še niso odobrili</translation>
@@ -4126,6 +4147,7 @@
 <translation id="6972180789171089114">Zvok/video</translation>
 <translation id="6972553992270299730">Spletno mesto <ph name="ORIGIN" /> ne more odpreti datotek v tej mapi, ker so v njej sistemske datoteke</translation>
 <translation id="6972754398087986839">Začnite</translation>
+<translation id="6973611239564315524">Na voljo je nadgradnja na Debian 10 (Buster)</translation>
 <translation id="6974609594866392343">Predstavitveni način brez povezave</translation>
 <translation id="6977381486153291903">Različica vdelane programske opreme</translation>
 <translation id="6978121630131642226">Iskalniki</translation>
@@ -4585,6 +4607,7 @@
 <translation id="7644543211198159466">Barva in tema</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (lastnik)</translation>
 <translation id="7645681574855902035">Preklic varnostnega kopiranja vsebnika za Linux</translation>
+<translation id="7646772052135772216">Sinhronizacija gesel ne deluje</translation>
 <translation id="7647403192093989392">Ni nedavnih dejavnosti</translation>
 <translation id="7648992873808071793">Shranjevanje datotek v tej napravi</translation>
 <translation id="7649070708921625228">Pomoč</translation>
@@ -4773,6 +4796,7 @@
 <translation id="7877451762676714207">Neznana napaka strežnika. Poskusite znova ali se obrnite na skrbnika strežnika.</translation>
 <translation id="7877680364634660272">Predstavitev</translation>
 <translation id="7878562273885520351">Geslo je morda ogroženo</translation>
+<translation id="7879631849810108578">Bližnjica je nastavljena: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Ob vnovičnem zagonu bodo izbrisani lokalni podatki</translation>
 <translation id="7881483672146086348">Prikaz računa</translation>
 <translation id="7882358943899516840">Vrsta ponudnika</translation>
@@ -4859,6 +4883,7 @@
 <translation id="7987814697832569482">Vedno poveži prek tega omrežja VPN</translation>
 <translation id="7988355189918024273">Omogoči funkcije za ljudi s posebnimi potrebami</translation>
 <translation id="7991296728590311172">Nastavitve stikalnega dostopa</translation>
+<translation id="7994350303002908848">Plugin VM-ja ni bilo mogoče namestiti. Poskusite znova ali se obrnite na skrbnika naprave v organizaciji. Koda napake: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">Način EAP</translation>
 <translation id="7997826902155442747">Prednost postopkov</translation>
 <translation id="7999229196265990314">Ustvarjene so bile te datoteke:
@@ -4951,7 +4976,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Ni piškotkov drugih spletnih mest}=1{1 piškotek drugega spletnega mesta je blokiran}one{# piškotek drugih spletnih mest je blokiran}two{# piškotka drugih spletnih mest sta blokirana}few{# piškotki drugih spletnih mest so blokirani}other{# piškotkov drugih spletnih mest je blokiranih}}</translation>
 <translation id="810875025413331850">Ni naprav v bližini.</translation>
 <translation id="8111155949205007504">Deljenje tega gesla z iPhonom</translation>
-<translation id="8113043281354018522">Izberite vrsto licence</translation>
 <translation id="8114875720387900039">Razdeli vodoravno</translation>
 <translation id="8116972784401310538">&amp;Upravitelj zaznamkov</translation>
 <translation id="8117620576188476503">Upravljanje povezav, posodobitev in nastavitev v vrstici stanja. Če želite dostopati s tipkovnico, pritisnite Alt + Shift + S.</translation>
@@ -5108,6 +5132,7 @@
 <translation id="8327039559959785305">Napaka pri vpenjanju datotek za Linux. Poskusite znova.</translation>
 <translation id="8335587457941836791">Odpenjanje s police</translation>
 <translation id="8336407002559723354">Naprava bo prejemala posodobitve do <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Če želite sistemsko besedilo prikazati v jeziku <ph name="LANGUAGE" />, znova zaženite napravo</translation>
 <translation id="8336739000755212683">Spremeni sliko računa v napravi</translation>
 <translation id="8337047789441383384">Ta varnostni ključ ste že registrirali. Vnovična registracija ni potrebna.</translation>
 <translation id="8338952601723052325">Spletno mesto za razvijalce</translation>
@@ -5151,6 +5176,7 @@
 <translation id="8400146488506985033">Upravljanje ljudi</translation>
 <translation id="8401432541486058167">Navedite kodo PIN, povezano s pametno kartico.</translation>
 <translation id="8405046151008197676">Oglejte si najzanimivejše dele najnovejše posodobitve</translation>
+<translation id="8408068190360279472">Omrežje <ph name="NETWORK_TYPE" />, vzpostavljanje povezave</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Najprej vprašaj (priporočeno)</translation>
 <translation id="8418445294933751433">&amp;Prikaži kot zavihek</translation>
@@ -5440,6 +5466,7 @@
 <translation id="8807632654848257479">Stabilna</translation>
 <translation id="8808478386290700967">Spletna trgovina</translation>
 <translation id="8808686172382650546">Mačka</translation>
+<translation id="8808744862003883508">Na tej strani so prikazane vse razširitve, nameščene v Chromu.</translation>
 <translation id="8809147117840417135">Svetlo zelenomodra</translation>
 <translation id="8813698869395535039">Prijava v račun <ph name="USERNAME" /> ni mogoča</translation>
 <translation id="8813811964357448561">list papirja</translation>
@@ -5667,7 +5694,6 @@
 <translation id="9121814364785106365">Odpri na pripetem zavihku</translation>
 <translation id="9122176249172999202">Aplikacija <ph name="IDS_SHORT_PRODUCT_NAME" /> je začasno zaustavljena</translation>
 <translation id="9124003689441359348">Shranjena gesla bodo prikazana tukaj</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (še <ph name="LICENSE_COUNT" />)</translation>
 <translation id="9128317794749765148">Nastavitve ni bilo mogoče dokončati</translation>
 <translation id="9128870381267983090">Vzpostavi povezavo z omrežjem</translation>
 <translation id="9130015405878219958">Vneseni način ni veljaven.</translation>
@@ -5706,6 +5732,7 @@
 <translation id="9188732951356337132">Pošiljanje podatkov o uporabi in diagnostičnih podatkov. Ta naprava trenutno Googlu samodejno pošilja diagnostične podatke ter podatke o uporabi naprave in aplikacij. Teh podatkov ne bomo uporabljali, da bi prepoznali vašega otroka, temveč za izboljšanje stabilnosti sistema in izvajanja aplikacij ter drugega. Nekateri združeni podatki bodo pomagali tudi Googlovim aplikacijam in partnerjem, na primer razvijalcem za Android. Če ste za otroka vklopili dodatno beleženje dejavnosti v spletu in aplikacijah, bodo ti podatki morda shranjeni v njegovem računu za Google. <ph name="BEGIN_LINK2" />Več o tem<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + ključ v vnaprejšnji skupni rabi</translation>
 <translation id="920045321358709304">Iskanje z iskalnikom <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">Morebitni podatki brez povezave bodo izbrisani</translation>
 <translation id="9201220332032049474">Možnosti zaklepanja zaslona</translation>
 <translation id="9203398526606335860">&amp;Profiliranje omogočeno</translation>
 <translation id="9203904171912129171">Izberite napravo</translation>
@@ -5718,6 +5745,7 @@
 <translation id="9220525904950070496">Odstranitev računa</translation>
 <translation id="9220820413868316583">Dvignite prst, nato poskusite znova.</translation>
 <translation id="923467487918828349">Pokaži vse</translation>
+<translation id="929117907539171075">Izbrisani bodo tudi podatki brez povezave v nameščeni aplikaciji</translation>
 <translation id="930268624053534560">Podrobni časovni žigi</translation>
 <translation id="932327136139879170">Domov</translation>
 <translation id="932508678520956232">Tiskanja ni bilo mogoče začeti.</translation>
@@ -5743,6 +5771,7 @@
 <translation id="960719561871045870">Koda operaterja</translation>
 <translation id="960987915827980018">Še približno ena ura</translation>
 <translation id="962802172452141067">Drevo mape z zaznamki</translation>
+<translation id="964057662886721376">Nekatere razširitve lahko upočasnijo delovanje – zlasti tiste, ki jih niste nameravali namestiti.</translation>
 <translation id="964286338916298286">Skrbnik za IT je za vašo napravo onemogočil dodatke za Chrome.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Aplikacija}one{Aplikacije}two{Aplikacije}few{Aplikacije}other{Aplikacije}}</translation>
 <translation id="965211523698323809">Prejemanje in pošiljanje sporočil SMS z napravo <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Več o tem<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_sq.xtb b/chrome/app/resources/generated_resources_sq.xtb
index 6084464..caf2065 100644
--- a/chrome/app/resources/generated_resources_sq.xtb
+++ b/chrome/app/resources/generated_resources_sq.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">E personalizuar</translation>
 <translation id="1178581264944972037">Pauzë</translation>
 <translation id="117916940443676133">Çelësi yt i sigurisë nuk është i mbrojtur me një kod PIN. Për të menaxhuar të dhënat e identifikimit, në fillim krijo një kod PIN.</translation>
-<translation id="118069123878619799">- karakteristikat e tua fizike, si gjatësia</translation>
 <translation id="1181037720776840403">Hiq</translation>
 <translation id="1183237619868651138"><ph name="EXTERNAL_CRX_FILE" /> nuk mund të instalohet në memorien specifike lokale.</translation>
 <translation id="1185924365081634987">Mund të provosh po ashtu që të <ph name="GUEST_SIGNIN_LINK_START" />shfletosh si vizitor<ph name="GUEST_SIGNIN_LINK_END" /> për të rregulluar këtë gabim të rrjetit.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">Po pret për <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> pajisje të tjera të ofrueshme.</translation>
 <translation id="1495677929897281669">Kthehu te skeda</translation>
+<translation id="1499271269825557605">Nëse nuk e njeh një shtesë ose nëse shfletuesi nuk funksionon siç pritet, mund t'i çaktivizosh ose personalizosh shtesat këtu.</translation>
 <translation id="1500297251995790841">Pajisje e panjohur [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Kjo llogari zotëruesi duhet të jetë llogaria e parë e identifikimit në një sesion me identifikime të shumëfishta.</translation>
 <translation id="150411034776756821">Hiq <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Për këtë faqe është bllokuar qasja te kamera.</translation>
 <translation id="1507246803636407672">&amp;Hidhi poshtë</translation>
 <translation id="1508491105858779599">Vendose gishtin mbi sensorin e gjurmës së gishtit për të shkyçur pajisjen.</translation>
+<translation id="1508575541972276599">Versioni aktual është Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">Qasu në çdo <ph name="DEVICE_NAME_AND_VENDOR" /> përmes USB</translation>
 <translation id="150962533380566081">Kodi PUK i pavlefshëm.</translation>
 <translation id="1510030919967934016">Për këtë faqe është bllokuar monitorimi i vendndodhjes tënde.</translation>
@@ -431,6 +432,7 @@
 <translation id="1601560923496285236">Zbato</translation>
 <translation id="1603914832182249871">(I fshehtë)</translation>
 <translation id="1604432177629086300">Nuk mund të printohej. Kontrollo printerin dhe provo përsëri.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: Sinkronizimi i fjalëkalimeve nuk po funksionon</translation>
 <translation id="1607139524282324606">Pastro regjistrimin</translation>
 <translation id="1608626060424371292">Hiqe këtë përdorues</translation>
 <translation id="1608668830839595724">Veprime të tjera për artikujt e zgjedhur</translation>
@@ -557,6 +559,8 @@
 <translation id="177336675152937177">Të dhënat e strehuara të aplikacionit</translation>
 <translation id="1776712937009046120">Shto përdorues</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Kjo pajisje menaxhohet nga <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    Kliko te "Përpara" për të vazhduar me identifikimin në llogarinë tënde <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation>
 <translation id="1779652936965200207">Fut këtë çelës kalimi në "<ph name="DEVICE_NAME" />":</translation>
 <translation id="1780152987505130652">Mbyll grupin</translation>
 <translation id="1781291988450150470">Kodi PIN aktual</translation>
@@ -744,6 +748,7 @@
 <translation id="2048653237708779538">Veprimi nuk ofrohet</translation>
 <translation id="2050339315714019657">Portret (vertikal</translation>
 <translation id="2053312383184521053">Të dhënat e gjendjes së qetë</translation>
+<translation id="2055585478631012616">Do të nxirresh nga këto sajte, duke përfshirë edhe në skedat e hapura</translation>
 <translation id="205560151218727633">Logoja e asistentit të Google</translation>
 <translation id="2058456167109518507">U diktua pajisje</translation>
 <translation id="2059913712424898428">Brezi orar</translation>
@@ -759,6 +764,7 @@
 <translation id="2079545284768500474">Zhbëj</translation>
 <translation id="2080070583977670716">Cilësime të tjera</translation>
 <translation id="2087822576218954668">Printo: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">Rrjeti VPN</translation>
 <translation id="2089566709556890888">Shfleto në mënyrë të sigurt me Google Chrome</translation>
 <translation id="2089795179672254991">Pyet kur një sajt dëshiron të shikojë tekstin dhe imazhet e kopjuara te kujtesa e fragmenteve (rekomandohet)</translation>
 <translation id="2090165459409185032">Për të rikuperuar informacionet e llogarisë tënde, shko te: google.com/accounts/recovery</translation>
@@ -982,6 +988,7 @@
 <translation id="2379232090534544565">Një sajt ka qasje te hyrja e audios dhe e videos</translation>
 <translation id="2379281330731083556">Printo me dialogun e sistemit... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Pyet para dërgimit (rekomandohet)</translation>
+<translation id="2382818385048255866">Kontrollo shtesat e tua</translation>
 <translation id="2384436799579181135">Ka ndodhur një gabim. Kontrollo printerin dhe provo sërish.</translation>
 <translation id="2387458720915042159">Lloji i lidhjes së përfaqësuesit</translation>
 <translation id="2391419135980381625">Stili standard i shkrimit</translation>
@@ -1033,6 +1040,7 @@
 <translation id="2462724976360937186">ID-ja e çelësit të Autoritetit të Certifikimit</translation>
 <translation id="2462752602710430187">U shtua <ph name="PRINTER_NAME" /></translation>
 <translation id="2464089476039395325">Përfaqësuesi i HTTP-së</translation>
+<translation id="2467267713099745100">Rrjeti <ph name="NETWORK_TYPE" />, joaktiv</translation>
 <translation id="2468205691404969808">Përdor kuki për të kujtuar preferencat e tua, edhe nëse nuk i viziton ato faqe</translation>
 <translation id="2468402215065996499">Tamagoçi</translation>
 <translation id="2469259292033957819">Nuk ke asnjë printer të ruajtur.</translation>
@@ -1287,6 +1295,7 @@
 <translation id="2800760947029405028">Ngarko imazh</translation>
 <translation id="2803375539583399270">Fut kodin PIN</translation>
 <translation id="2804043232879091219">Shfletuesi alternativ nuk mund të hapej</translation>
+<translation id="2804667941345577550">Do të nxirresh nga ky sajt, duke përfshirë edhe në skedat e hapura</translation>
 <translation id="2804680522274557040">Kamera është çaktivizuar</translation>
 <translation id="2805646850212350655">Sistemi i skedarëve të enkriptimit të Microsoft</translation>
 <translation id="2805756323405976993">Aplikacionet</translation>
@@ -1294,6 +1303,7 @@
 <translation id="2806891468525657116">Shkurtorja ekziston tashmë</translation>
 <translation id="2807517655263062534">Skedarët që shkarkon shfaqen këtu</translation>
 <translation id="2809586584051668049">dhe <ph name="NUMBER_ADDITIONAL_DISABLED" /> të tjerë</translation>
+<translation id="2810390687497823527">Nëse nuk e njeh një shtesë ose nëse shfletuesi nuk funksionon siç pritet, mund t'i çaktivizosh ose personalizosh shtesat këtu.</translation>
 <translation id="2812049959647166806">Thunderbolt nuk mbështetet</translation>
 <translation id="2812944337881233323">Provo të dalësh dhe të identifikohesh sërish</translation>
 <translation id="2812989263793994277">Mos shfaq asnjë imazh</translation>
@@ -1333,6 +1343,7 @@
 <translation id="2861941300086904918">Menaxheri i sigurisë së Klientit origjinal</translation>
 <translation id="2864601841139725659">Vendos fotografinë e profilit</translation>
 <translation id="2865919525181940183">Pamjet e ekranit të programeve që janë aktualisht në ekran</translation>
+<translation id="286674810810214575">Po kontrollon burimet e energjisë...</translation>
 <translation id="2867768963760577682">Hape si skedë të gozhduar</translation>
 <translation id="2868746137289129307">Kjo shtesë është e vjetruar dhe e çaktivizuar nga politika e ndërmarrjes. Ajo mund të aktivizohet automatikisht kur ofrohet një version më i ri.</translation>
 <translation id="2870560284913253234">Sajti</translation>
@@ -1410,6 +1421,7 @@
 <translation id="2972581237482394796">&amp;Ribëje</translation>
 <translation id="2973324205039581528">Hiq zërin e sajtit</translation>
 <translation id="2977480621796371840">Hiq nga grupi</translation>
+<translation id="2979520980928493164">Një Chrome më i shëndetshëm dhe më i lumtur</translation>
 <translation id="2979639724566107830">Hape në një dritare të re</translation>
 <translation id="2981113813906970160">Shfaq kursorin e madh të miut</translation>
 <translation id="2982970937345031">Raporto në mënyrë anonime</translation>
@@ -1516,6 +1528,7 @@
 <translation id="3143515551205905069">Anulo sinkronizimin</translation>
 <translation id="3143754809889689516">Luaj nga fillimi</translation>
 <translation id="3144647712221361880">Hape lidhjen si</translation>
+<translation id="3145187901750964977">Pajisja virtuale nuk mund të instalohej. Provo përsëri ose kontakto me administratorin e pajisjes së organizatës. Kodi i gabimit <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Versioni:
     <ph name="LINUX_VERSION" />
 
@@ -1554,6 +1567,7 @@
 <translation id="3192947282887913208">Skedarët audio</translation>
 <translation id="3194737229810486521"><ph name="URL" /> kërkon të ruajë në mënyrë të përhershme të dhëna në pajisjen tënde</translation>
 <translation id="3199127022143353223">Serverët</translation>
+<translation id="3201306578844503970">Pajisja virtuale nuk mund të instalohej për shkak të një gabimi në rrjet. Provo përsëri ose kontakto me administratorin e pajisjes së organizatës. Kodi i gabimit <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Pajisjet USB të ofruara do të shfaqen këtu.</translation>
 <translation id="3202131003361292969">Shtegu</translation>
 <translation id="3202173864863109533">Audioja e kësaj skede është vendosur në heshtje.</translation>
@@ -1890,7 +1904,6 @@
 <translation id="3678156199662914018">Shtesa: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Faleminderit për komentet! Aktualisht je jashtë linje dhe raportimi do të dërgohet më vonë.</translation>
 <translation id="3682824389861648626">Pragu i lëvizjes</translation>
-<translation id="3683023058278427253">Kemi zbuluar shumë lloje licencash për domenin tënd. Zgjidh një për të vazhduar.</translation>
 <translation id="3683524264665795342">Kërkesa e ndarjes së ekranit e <ph name="APP_NAME" /></translation>
 <translation id="368789413795732264">Pati një gabim gjatë përpjekjes së leximit të skedarit: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Shkruaj në skedarët dhe dosjet që hap në aplikacion.</translation>
@@ -2064,6 +2077,7 @@
 <translation id="389589731200570180">Ndaje me vizitorët</translation>
 <translation id="389901847090970821">Zgjidh tastierën</translation>
 <translation id="3899879303189199559">Jashtë linje për më shumë se një vit</translation>
+<translation id="3900789207771372462">Disa shtesa mund të shikojnë aktivitetin tënd të shfletimit, duke përfshirë edhe informacionin tënd personal.</translation>
 <translation id="3900966090527141178">Eksporto fjalëkalimet</translation>
 <translation id="3901991538546252627">Po lidhet me <ph name="NAME" /></translation>
 <translation id="3905761538810670789">Riparo aplikacionin</translation>
@@ -2154,7 +2168,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" po e korrigjon këtë shfletues</translation>
 <translation id="4014432863917027322">Të riparohet "<ph name="EXTENSION_NAME" />"?</translation>
 <translation id="4015163439792426608">Ke shtesa? <ph name="BEGIN_LINK" />Menaxho shtesat e tua<ph name="END_LINK" /> në një vend me lehtësi.</translation>
-<translation id="4020106588733303597">Mos! Sistemi nuk arriti të ngarkojë licencat e disponueshme.</translation>
 <translation id="4020327272915390518">Menyja e opsioneve</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Shto në fjalor</translation>
@@ -2192,6 +2205,7 @@
 <translation id="407520071244661467">Shkalla</translation>
 <translation id="4075639477629295004">Nuk mund të transmetojë <ph name="FILE_NAME" />.</translation>
 <translation id="4077917118009885966">Reklamat janë të bllokuara në këtë sajt</translation>
+<translation id="4077919383365622693">Të gjitha të dhënat dhe kukit e ruajtura nga <ph name="SITE" /> do të fshihen.</translation>
 <translation id="4079140982534148664">Përdor kontrolluesin drejtshkrimor të përmirësuar</translation>
 <translation id="4081242589061676262">Skedari nuk mund të transmetohet.</translation>
 <translation id="4084682180776658562">Faqeshënuesi</translation>
@@ -2266,6 +2280,7 @@
 <translation id="4181841719683918333">Gjuhët</translation>
 <translation id="4184885522552335684">Zvarrite një ekran për ta lëvizur</translation>
 <translation id="4194570336751258953">Aktivizo klikimin me trokitje</translation>
+<translation id="4194595472342532425">Nuk mund të konfigurohet Plugin VM për shkak të një probleme në konfigurim. Kontakto me administratorin e pajisjes së organizatës. Kodi i gabimit <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Hape në një skedë të re</translation>
 <translation id="4195814663415092787">Vazhdo ku e ke lënë</translation>
 <translation id="4198146608511578238">Thjesht mbaj shtypur ikonën e Launcher për të folur me "Asistentin" tënd të Google.</translation>
@@ -2489,6 +2504,7 @@
 <translation id="4549791035683739768">Çelësi yt i sigurisë nuk ka gjurmë gishtash të ruajtura</translation>
 <translation id="4551763574344810652">Shtyp <ph name="MODIFIER_KEY_DESCRIPTION" /> për ta zhbërë</translation>
 <translation id="4552089082226364758">Blici</translation>
+<translation id="4552759165874948005">Rrjeti <ph name="NETWORK_TYPE" />, fuqia e sinjalit <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">Shtesa e jashtme është në të njëjtin version ose më të ulët në krahasim me ekzistuesin.</translation>
 <translation id="4555769855065597957">Hije</translation>
 <translation id="4555863373929230635">Për të ruajtur fjalëkalimet në "Llogarinë tënde të Google", identifikohu dhe aktivizo sinkronizimin.</translation>
@@ -2566,6 +2582,7 @@
 <translation id="4665446389743427678">Të gjitha të dhënat e ruajtura nga <ph name="SITE" /> do të fshihen.</translation>
 <translation id="4668721319092543482">Kliko për të aktivizuar <ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">Faqja e Distill</translation>
+<translation id="46733273239502219">Do të fshihen gjithashtu edhe të dhënat jashtë linje në aplikacionet e instaluara</translation>
 <translation id="4673442866648850031">Hap veglat e stilolapsit kur hiqet stilolapsi</translation>
 <translation id="4677585247300749148"><ph name="URL" /> kërkon të reagojë ndaj ngjarjeve të qasshmërisë</translation>
 <translation id="4677772697204437347">Memoria GPU</translation>
@@ -2657,7 +2674,6 @@
 <translation id="4823484602432206655">Lexo dhe ndrysho cilësimet e përdoruesit dhe të pajisjes</translation>
 <translation id="4824958205181053313">Të anulohet sinkronizimi?</translation>
 <translation id="4827675678516992122">Nuk mund të lidhej</translation>
-<translation id="4828937774870308359">Australian</translation>
 <translation id="4829768588131278040">Konfiguro kodin PIN</translation>
 <translation id="4830502475412647084">Po instalon përditësimin e sistemit operativ</translation>
 <translation id="4830573902900904548">Pajisja <ph name="DEVICE_TYPE" /> nuk mund të lidhet në internet duke përdorur <ph name="NETWORK_NAME" />. Zgjidh një rrjet tjetër. <ph name="LEARN_MORE_LINK_START" />Mëso më shumë<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2698,6 +2714,7 @@
 <translation id="4876273079589074638">Ndihmo inxhinierët tanë të hetojnë dhe të rregullojnë këtë ndërprerje aksidentale. Rendit hapat e saktë nëse është e mundur. Nuk ka detaje të tepërta!</translation>
 <translation id="4876895919560854374">Kyç dhe shkyç ekranin</translation>
 <translation id="4877276003880815204">Inspekto elementet</translation>
+<translation id="4878653975845355462">Sfondet e personalizuara janë çaktivizuar nga administratori yt</translation>
 <translation id="4879491255372875719">Automatike (e parazgjedhur)</translation>
 <translation id="4880328057631981605">Emri i pikës së qasjes</translation>
 <translation id="4880827082731008257">Historiku i kërkimeve</translation>
@@ -2753,10 +2770,10 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" dëshiron të lidhet me një portë serie</translation>
 <translation id="4944310289250773232">Ky shërbim vërtetimi strehohet nga <ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">Veprimet</translation>
+<translation id="4952981627953231344">Plugin VM nuk lejohet në këtë pajisje. Kontakto me administratorin e pajisjes së organizatës.</translation>
 <translation id="4953689047182316270">Reago ndaj ngjarjeve të qasshmërisë</translation>
 <translation id="4953808748584563296">Avatari i parazgjedhur portokalli</translation>
 <translation id="4955710816792587366">Zgjidh kodin PIN</translation>
-<translation id="4955814292505481804">Vjetore</translation>
 <translation id="4959262764292427323">Fjalëkalimet ruhen në llogarinë tënde të Google që të mund t'i përdorësh në çdo pajisje</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Ky aplikacion është instaluar nga administratori yt.</translation>
@@ -3238,7 +3255,6 @@
 <translation id="5659593005791499971">Mail-i</translation>
 <translation id="5659833766619490117">Kjo faqe nuk mund të përkthehej</translation>
 <translation id="5660204307954428567">Çifto me <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">E vazhdueshme</translation>
 <translation id="5667546120811588575">Po konfiguron Google Play...</translation>
 <translation id="5669267381087807207">Po aktivizohet</translation>
 <translation id="5669691691057771421">Fut kodin e ri PIN</translation>
@@ -3254,6 +3270,7 @@
 <translation id="5687326903064479980">Brezi orar</translation>
 <translation id="5689516760719285838">Vendndodhja</translation>
 <translation id="56907980372820799">Lidh të dhënat</translation>
+<translation id="5691180005790455277">Të gjitha të dhënat dhe kukit e ruajtura nga <ph name="SITE_GROUP_NAME" /> dhe çdo sajt nën të do të fshihen.</translation>
 <translation id="5691511426247308406">Familja</translation>
 <translation id="5692183275898619210">Printimi përfundoi</translation>
 <translation id="5696143504434933566">Raporto abuzimin nga "<ph name="EXTENSION_NAME" />"</translation>
@@ -3340,7 +3357,6 @@
 <translation id="5815645614496570556">Adresa X.400</translation>
 <translation id="5816434091619127343">Ndryshimet e kërkuara të printerit do ta bënin printerin të papërdorshëm.</translation>
 <translation id="5817918615728894473">Çifto</translation>
-<translation id="5819762621475381970">- struktura e dhomës</translation>
 <translation id="5821565227679781414">Krijo shkurtore</translation>
 <translation id="5825412242012995131">Aktive (rekomandohet)</translation>
 <translation id="5826395379250998812">Lidhe <ph name="DEVICE_TYPE" /> me telefonin tënd. <ph name="LINK_BEGIN" />Mëso më shumë<ph name="LINK_END" /></translation>
@@ -3476,6 +3492,7 @@
 <translation id="6007240208646052708">Kërkimi me zë në gjuhën tënde nuk është i disponueshëm.</translation>
 <translation id="6009781704028455063">Sensori i integruar</translation>
 <translation id="6010869025736512584">Po qaset në hyrjen e videos</translation>
+<translation id="6011074160056912900">Rrjeti i eternetit</translation>
 <translation id="6011193465932186973">Gjurma e gishtit</translation>
 <translation id="6011449291337289699">Pastro të dhënat e sajtit</translation>
 <translation id="6015266928248016057">Kodi PUK i pavlefshëm. Ripërpjekjet e mbetura: <ph name="RETRIES" />.</translation>
@@ -3512,6 +3529,7 @@
 <translation id="6053401458108962351">&amp;Pastro të dhënat e shfletimit...</translation>
 <translation id="6055171183283175969">Fjalëkalimi që fute është i pasaktë.</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 me enkriptim RSA</translation>
+<translation id="6055907707645252013">Rrjeti <ph name="NETWORK_TYPE" />, nuk është lidhur</translation>
 <translation id="6056710589053485679">Ringarkim normal</translation>
 <translation id="6057381398996433816">Kësaj faqeje i është bllokuar përdorimi i sensorëve të lëvizjes dhe të dritës.</translation>
 <translation id="6058567592298841668">Pajisja virtuale e shtesës: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3575,6 +3593,7 @@
 <translation id="6136114942382973861">Mbyll shiritin e shkarkimeve</translation>
 <translation id="6137767437444130246">Certifikata e përdoruesit</translation>
 <translation id="6138680304137685902">Nënshkrimi X9.62 ECDSA me SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, nuk ka rrjet</translation>
 <translation id="6141988275892716286">Konfirmo shkarkimin</translation>
 <translation id="6143186082490678276">Merr ndihmë</translation>
 <translation id="6144938890088808325">Na ndihmo të përmirësojmë pajisjet Chromebook</translation>
@@ -3881,6 +3900,7 @@
 <translation id="6602956230557165253">Përdor tastet e shigjetës majtas dhe djathtas për të lundruar.</translation>
 <translation id="6605847144724004692">Nuk është vlerësuar ende nga asnjë përdorues.</translation>
 <translation id="6607831829715835317">Vegla të tj&amp;era</translation>
+<translation id="6611972847767394631">Gjej skedat e tua këtu</translation>
 <translation id="6612358246767739896">Përmbajtje e mbrojtur</translation>
 <translation id="6615455863669487791">Ma trego</translation>
 <translation id="6618097958368085618">Mbaje gjithsesi</translation>
@@ -3949,6 +3969,7 @@
 <translation id="6709133671862442373">Lajmet</translation>
 <translation id="6709357832553498500">Lidhu duke përdorur <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Prapa</translation>
+<translation id="6715803357256707211">Ndodhi një gabim gjatë instalimit të aplikacionit tënd në Linux. Kliko mbi njoftim për detaje.</translation>
 <translation id="6721678857435001674">Shikojë markën dhe modelin e çelësit tënd të sigurisë</translation>
 <translation id="6721972322305477112">&amp;Skedari</translation>
 <translation id="672213144943476270">Shkyçe profilin tënd para se të shfletosh si vizitor.</translation>
@@ -3973,7 +3994,6 @@
 <translation id="674632704103926902">Aktivizo zvarritjen me trokitje</translation>
 <translation id="6748217015615267851">Interpretuesi: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Mund të vazhdosh, por do të restaurohen vetëm të dhënat e sinkronizuara. Të gjitha të dhënat lokale do të humbasin.</translation>
-<translation id="6748775883310276718">"Kioskë" për një aplikacion</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (e fshehtë)</translation>
 <translation id="6757101664402245801">URL-ja u kopjua</translation>
 <translation id="6758056191028427665">Na trego se si po ecim.</translation>
@@ -3983,6 +4003,7 @@
 <translation id="6769712124046837540">Po shton printerin...</translation>
 <translation id="6770664076092644100">Verifikohu nëpërmjet NFC-së</translation>
 <translation id="6771503742377376720">Është autoritet certifikimi</translation>
+<translation id="6772339735733515807">Menaxho shtesat e tua</translation>
 <translation id="6775163072363532304">Pajisjet e ofruara do të shfaqen këtu.</translation>
 <translation id="6777817260680419853">Ridrejtimi u bllokua</translation>
 <translation id="6778737459546443941">Prindi yt nuk e ka miratuar ende</translation>
@@ -4121,6 +4142,7 @@
 <translation id="6972180789171089114">Audio/Video</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> nuk mund t'i hapë skedarët në këtë dosje sepse ajo përmban skedarë sistemi</translation>
 <translation id="6972754398087986839">Fillo</translation>
+<translation id="6973611239564315524">Ofrohet një përmirësim në Debian 10 (Buster)</translation>
 <translation id="6974609594866392343">Modaliteti i demonstrimit jashtë linje</translation>
 <translation id="6977381486153291903">Rishikimi i firmuerit</translation>
 <translation id="6978121630131642226">Motorët e kërkimit</translation>
@@ -4580,6 +4602,7 @@
 <translation id="7644543211198159466">Ngjyra dhe tema</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (zotëruesi)</translation>
 <translation id="7645681574855902035">Po anulon rezervimin e Linux</translation>
+<translation id="7646772052135772216">Sinkronizimi i fjalëkalimeve nuk po funksionon</translation>
 <translation id="7647403192093989392">Asnjë aktivitet së fundi</translation>
 <translation id="7648992873808071793">Ruaji skedarët në këtë pajisje</translation>
 <translation id="7649070708921625228">Ndihma</translation>
@@ -4767,6 +4790,7 @@
 <translation id="7877451762676714207">Gabim i panjohur në server. Provo sërish më vonë ose kontakto me administratorin e serverit.</translation>
 <translation id="7877680364634660272">Turneu</translation>
 <translation id="7878562273885520351">Fjalëkalimet e tua mund të jenë kompromentuar</translation>
+<translation id="7879631849810108578">Shkurtorja u vendos: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Të dhënat lokale do të fshihen kur ta rinisësh</translation>
 <translation id="7881483672146086348">Shiko llogarinë</translation>
 <translation id="7882358943899516840">Lloji i ofruesit</translation>
@@ -4853,6 +4877,7 @@
 <translation id="7987814697832569482">Lidhu gjithmonë nëpërmjet këtij rrjeti VPN</translation>
 <translation id="7988355189918024273">Aktivizo funksionet e qasshmërisë</translation>
 <translation id="7991296728590311172">Cilësimet e "Qasjes me çelës"</translation>
+<translation id="7994350303002908848">Plugin VM nuk mund të instalohej. Provo përsëri ose kontakto me administratorin e pajisjes së organizatës. Kodi i gabimit <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">Metoda EAP</translation>
 <translation id="7997826902155442747">Përparësia e procesit</translation>
 <translation id="7999229196265990314">Krijoi skedarët e mëposhtëm:
@@ -4944,7 +4969,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Asnjë kuki e palëve të treta}=1{1 kuki e palëve të treta është bllokuar}other{# kuki të palëve të treta janë bllokuar}}</translation>
 <translation id="810875025413331850">Nuk u gjetën pajisje afër.</translation>
 <translation id="8111155949205007504">Ndaje këtë fjalëkalim me telefonin tënd iPhone</translation>
-<translation id="8113043281354018522">Zgjidh llojin e licencës</translation>
 <translation id="8114875720387900039">Horizontal i ndarë</translation>
 <translation id="8116972784401310538">&amp;Menaxheri i faqeshënuesve</translation>
 <translation id="8117620576188476503">Menaxho lidhjet, përditësimet dhe cilësimet me tabakanë e statusit. Për të arritur këtu me anë të tastierës, shtyp Alt + Shift + S.</translation>
@@ -5101,6 +5125,7 @@
 <translation id="8327039559959785305">Gabim gjatë instalimit të skedarëve të Linux. Provo përsëri më vonë.</translation>
 <translation id="8335587457941836791">Hiq gozhdimin nga rafti</translation>
 <translation id="8336407002559723354">Përditësimet përfundojnë në <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Rinis pajisjen për të shfaqur tekstin e sistemit në <ph name="LANGUAGE" /></translation>
 <translation id="8336739000755212683">Ndrysho imazhin e llogarisë së pajisjes</translation>
 <translation id="8337047789441383384">E ke regjistruar tashmë këtë çelës sigurie. Nuk është e nevojshme ta regjistrosh përsëri.</translation>
 <translation id="8338952601723052325">Sajti i uebit i zhvilluesit</translation>
@@ -5144,6 +5169,7 @@
 <translation id="8400146488506985033">Menaxho kontaktet</translation>
 <translation id="8401432541486058167">Jep kodin PIN të lidhur me kartën tënde inteligjente.</translation>
 <translation id="8405046151008197676">Merr pikat kryesore nga përditësimi i fundit</translation>
+<translation id="8408068190360279472">Rrjeti <ph name="NETWORK_TYPE" />, po lidhet</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Pyet në fillim (rekomandohet)</translation>
 <translation id="8418445294933751433">&amp;Shfaq si skedë</translation>
@@ -5433,6 +5459,7 @@
 <translation id="8807632654848257479">I qëndrueshëm</translation>
 <translation id="8808478386290700967">Dyqani i uebit</translation>
 <translation id="8808686172382650546">Macja</translation>
+<translation id="8808744862003883508">Në këtë faqe mund të shikosh të gjitha shtesat e instaluara në Chrome.</translation>
 <translation id="8809147117840417135">Gurkali e çelur</translation>
 <translation id="8813698869395535039">Nuk mund të identifikohet në <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">fletë letre</translation>
@@ -5660,7 +5687,6 @@
 <translation id="9121814364785106365">Hap si skedë të gozhduar</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> është vendosur në pauzë</translation>
 <translation id="9124003689441359348">Fjalëkalimet e ruajtura do të shfaqen këtu</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (mbeten <ph name="LICENSE_COUNT" />)</translation>
 <translation id="9128317794749765148">Konfigurimi nuk mund të përfundonte</translation>
 <translation id="9128870381267983090">Lidhu me rrjetin</translation>
 <translation id="9130015405878219958">U fut modalitet i pavlefshëm.</translation>
@@ -5699,6 +5725,7 @@
 <translation id="9188732951356337132">Dërgo të dhënat e përdorimit dhe të diagnostikimit. Aktualisht kjo pajisje po dërgon automatikisht te Google të dhënat e diagnostikimit dhe të përdorimit të pajisjes dhe të aplikacioneve. Këto nuk do të përdoren për të identifikuar fëmijën tënd dhe do të ndihmojnë për qëndrueshmërinë e sistemit dhe të aplikacioneve dhe për përmirësime të tjera. Disa të dhëna të përmbledhura do të ndihmojnë po ashtu aplikacionet dhe partnerët e Google, si p.sh. zhvilluesit e Android. Nëse cilësimi i "Aktivitetit shtesë të uebit dhe të aplikacioneve" është i aktivizuar për fëmijën tënd, këto të dhëna mund të ruhen në "Llogarinë e Google" të fëmijës. <ph name="BEGIN_LINK2" />Mëso më shumë<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + çelësi i ndarë paraprakisht</translation>
 <translation id="920045321358709304">Kërko në <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">Çdo e dhënë jashtë linje do të fshihet</translation>
 <translation id="9201220332032049474">Opsionet e kyçjes së ekranit</translation>
 <translation id="9203398526606335860">&amp;Profilizimi u aktivizua</translation>
 <translation id="9203904171912129171">Zgjidh një pajisje</translation>
@@ -5711,6 +5738,7 @@
 <translation id="9220525904950070496">Hiq llogarinë</translation>
 <translation id="9220820413868316583">Ngrije dhe më pas provo përsëri.</translation>
 <translation id="923467487918828349">Shfaqi të gjitha</translation>
+<translation id="929117907539171075">Do të fshihen gjithashtu edhe të dhënat jashtë linje në aplikacionin e instaluar</translation>
 <translation id="930268624053534560">Stampimet kohore të detajuara</translation>
 <translation id="932327136139879170">Faqja kryesore</translation>
 <translation id="932508678520956232">Printimi nuk mund të iniciohej.</translation>
@@ -5736,6 +5764,7 @@
 <translation id="960719561871045870">Kodi i operatorit</translation>
 <translation id="960987915827980018">Rreth 1 orë e mbetur</translation>
 <translation id="962802172452141067">Pema e dosjes së faqeshënuesve</translation>
+<translation id="964057662886721376">Disa shtesa mund të të ngadalësojnë, sidomos ato që nuk ke dashur t'i instaloje.</translation>
 <translation id="964286338916298286">Administratori i teknologjisë së informacionit ka çaktivizuar "Chrome Goodies" për pajisjen tënde.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Aplikacioni}other{Aplikacionet}}</translation>
 <translation id="965211523698323809">Dërgo dhe merr mesazhe me tekst nga pajisja jote <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Mëso më shumë<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb
index 1781810f..05ee7bb9 100644
--- a/chrome/app/resources/generated_resources_sr.xtb
+++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Прилагођено</translation>
 <translation id="1178581264944972037">Паузирај</translation>
 <translation id="117916940443676133">Безбедносни кључ није заштићен PIN-ом. Да бисте управљали подацима за пријављивање, прво направите PIN.</translation>
-<translation id="118069123878619799">– ваше физичке особине, попут висине</translation>
 <translation id="1181037720776840403">Уклони</translation>
 <translation id="1183237619868651138">Није успело инсталирање датотеке <ph name="EXTERNAL_CRX_FILE" /> у локалном кешу.</translation>
 <translation id="1185924365081634987">Можете да покушате и да <ph name="GUEST_SIGNIN_LINK_START" />прегледате као гост<ph name="GUEST_SIGNIN_LINK_END" /> да бисте исправили ову грешку на мрежи.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">Чека се <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033">Других доступних уређаја: <ph name="NUM_PRINTERS" />.</translation>
 <translation id="1495677929897281669">Назад на картицу</translation>
+<translation id="1499271269825557605">Ако не препознајете додатак или ако прегледач не ради на очекивани начин, овде можете да искључите или прилагодите додатке.</translation>
 <translation id="1500297251995790841">Непознат уређај [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Овај власнички налог мора да буде први пријављени налог у сесији са вишеструким пријављивањем.</translation>
 <translation id="150411034776756821">Уклони <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Овој страници је забрањен приступ камери.</translation>
 <translation id="1507246803636407672">&amp;Одбаци</translation>
 <translation id="1508491105858779599">Ставите прст на сензор за отисак прста да бисте откључали уређај.</translation>
+<translation id="1508575541972276599">Актуелна верзија је Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">Приступај било ком уређају <ph name="DEVICE_NAME_AND_VENDOR" /> преко USB-а</translation>
 <translation id="150962533380566081">Неважећи PUK.</translation>
 <translation id="1510030919967934016">Овој страници је онемогућено да прати локацију на којој се налазите.</translation>
@@ -431,6 +432,7 @@
 <translation id="1601560923496285236">Примени</translation>
 <translation id="1603914832182249871">(Без архивирања)</translation>
 <translation id="1604432177629086300">Штампање није успело. Проверите штампач и пробајте поново.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: Синхронизација лозинки не ради</translation>
 <translation id="1607139524282324606">Обриши унос</translation>
 <translation id="1608626060424371292">Уклони овог корисника</translation>
 <translation id="1608668830839595724">Још радњи за изабране ставке</translation>
@@ -557,6 +559,8 @@
 <translation id="177336675152937177">Подаци хостованих апликација</translation>
 <translation id="1776712937009046120">Додај корисника</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Овим уређајем управља <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    Кликните на „Даље“ да бисте наставили са пријављивањем на налог за <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation>
 <translation id="1779652936965200207">Унесите овај приступни кôд на уређају „<ph name="DEVICE_NAME" />“:</translation>
 <translation id="1780152987505130652">Затвори групу</translation>
 <translation id="1781291988450150470">Актуелни PIN</translation>
@@ -744,6 +748,7 @@
 <translation id="2048653237708779538">Радња није доступна</translation>
 <translation id="2050339315714019657">Вертикално</translation>
 <translation id="2053312383184521053">Подаци о стању мировања</translation>
+<translation id="2055585478631012616">Одјавићете се са ових сајтова, укључујући и оне на отвореним картицама</translation>
 <translation id="205560151218727633">Логотип Google помоћника</translation>
 <translation id="2058456167109518507">Откривен је уређај</translation>
 <translation id="2059913712424898428">Временска зона</translation>
@@ -759,6 +764,7 @@
 <translation id="2079545284768500474">Опозови</translation>
 <translation id="2080070583977670716">Више подешавања</translation>
 <translation id="2087822576218954668">Штампање: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN мрежа</translation>
 <translation id="2089566709556890888">Прегледајте безбедно уз Google Chrome</translation>
 <translation id="2089795179672254991">Питај када сајт жели да види текст и слике који су копирани у привремену меморију (препоручено)</translation>
 <translation id="2090165459409185032">Да бисте вратили информације о налогу, идите на: google.com/accounts/recovery</translation>
@@ -982,6 +988,7 @@
 <translation id="2379232090534544565">Сајт приступа аудио и видео улазу</translation>
 <translation id="2379281330731083556">Штампај помоћу системског дијалога... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Питај пре слања (препоручује се)</translation>
+<translation id="2382818385048255866">Проверите додатке</translation>
 <translation id="2384436799579181135">Дошло је до грешке. Проверите штампач и пробајте поново.</translation>
 <translation id="2387458720915042159">Тип везе са проксијем</translation>
 <translation id="2391419135980381625">Стандардни фонт</translation>
@@ -1033,6 +1040,7 @@
 <translation id="2462724976360937186">ИД кључа ауторитета за издавање сертификата</translation>
 <translation id="2462752602710430187">Додато је: <ph name="PRINTER_NAME" /></translation>
 <translation id="2464089476039395325">HTTP прокси</translation>
+<translation id="2467267713099745100">Мрежа <ph name="NETWORK_TYPE" />, искључена је</translation>
 <translation id="2468205691404969808">Користи колачиће да би се запамтила подешавања, чак и када не посећујете те странице</translation>
 <translation id="2468402215065996499">Тамагочи</translation>
 <translation id="2469259292033957819">Немате сачуваних штампача.</translation>
@@ -1287,6 +1295,7 @@
 <translation id="2800760947029405028">Отпреми слику</translation>
 <translation id="2803375539583399270">Унесите PIN</translation>
 <translation id="2804043232879091219">Нисмо успели да отворимо алтернативни прегледач</translation>
+<translation id="2804667941345577550">Одјавићете се са овог сајта, укључујући и оне на отвореним картицама</translation>
 <translation id="2804680522274557040">Дозвола за камеру је искључена</translation>
 <translation id="2805646850212350655">Microsoft систем за шифровање датотека</translation>
 <translation id="2805756323405976993">Апликације</translation>
@@ -1294,6 +1303,7 @@
 <translation id="2806891468525657116">Пречица већ постоји</translation>
 <translation id="2807517655263062534">Датотеке које преузмете ће се појавити овде</translation>
 <translation id="2809586584051668049">и још <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2810390687497823527">Ако не препознајете додатак или ако прегледач не ради на очекивани начин, овде можете да искључите или прилагодите додатке.</translation>
 <translation id="2812049959647166806">Thunderbolt није подржан</translation>
 <translation id="2812944337881233323">Покушајте да се одјавите и поново пријавите</translation>
 <translation id="2812989263793994277">Не приказуј ниједну слику</translation>
@@ -1333,6 +1343,7 @@
 <translation id="2861941300086904918">Менаџер безбедности за Native Client</translation>
 <translation id="2864601841139725659">Подесите слику профила</translation>
 <translation id="2865919525181940183">Снимак екрана програма који су тренутно на екрану</translation>
+<translation id="286674810810214575">Проверавају се извори напајања...</translation>
 <translation id="2867768963760577682">Отвори као закачену картицу</translation>
 <translation id="2868746137289129307">Овај додатак је застарео и смернице за предузећа га онемогућавају. Можда ће аутоматски постати омогућен када новија верзија постане доступна.</translation>
 <translation id="2870560284913253234">Сајт</translation>
@@ -1410,6 +1421,7 @@
 <translation id="2972581237482394796">&amp;Понови радњу</translation>
 <translation id="2973324205039581528">Искључи звук сајта</translation>
 <translation id="2977480621796371840">Уклони из групе</translation>
+<translation id="2979520980928493164">Безбеднији и бржи Chrome</translation>
 <translation id="2979639724566107830">Отворите у новом прозору</translation>
 <translation id="2981113813906970160">Прикажи велики курсор</translation>
 <translation id="2982970937345031">Пошаљи извештај анонимно</translation>
@@ -1516,6 +1528,7 @@
 <translation id="3143515551205905069">Откажи синхронизацију</translation>
 <translation id="3143754809889689516">Пусти испочетка</translation>
 <translation id="3144647712221361880">Отворите линк као</translation>
+<translation id="3145187901750964977">Инсталирање виртуелне машине није успело. Пробајте поново или се обратите администратору уређаја у организацији. Кôд грешке: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Верзија:
     <ph name="LINUX_VERSION" />
 
@@ -1554,6 +1567,7 @@
 <translation id="3192947282887913208">Аудио датотеке</translation>
 <translation id="3194737229810486521"><ph name="URL" /> жели да трајно складишти податке на уређају</translation>
 <translation id="3199127022143353223">Сервери</translation>
+<translation id="3201306578844503970">Инсталирање виртуелне машине није успело због грешке на мрежи. Пробајте поново или се обратите администратору уређаја у организацији. Кôд грешке: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Доступни USB уређаји ће се приказивати овде.</translation>
 <translation id="3202131003361292969">Путања</translation>
 <translation id="3202173864863109533">Звук ове картице је искључен.</translation>
@@ -1890,7 +1904,6 @@
 <translation id="3678156199662914018">Додатак: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Хвала вам на повратним информацијама. Тренутно сте офлајн и касније ћемо вам послати извештај.</translation>
 <translation id="3682824389861648626">Ограничење кретања</translation>
-<translation id="3683023058278427253">Открили смо више типова лиценци на домену. Одаберите један да бисте наставили.</translation>
 <translation id="3683524264665795342">Захтев за дељење екрана апликације <ph name="APP_NAME" /></translation>
 <translation id="368789413795732264">Дошло је до грешке при покушају уписивања датотеке: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Уписивање у датотеке и директоријуме које отворите у апликацији</translation>
@@ -2064,6 +2077,7 @@
 <translation id="389589731200570180">Делите са гостима</translation>
 <translation id="389901847090970821">Изаберите тастатуру</translation>
 <translation id="3899879303189199559">Офлајн дуже од годину дана</translation>
+<translation id="3900789207771372462">Неки додаци могу да виде активности прегледања, укључујући личне податке.</translation>
 <translation id="3900966090527141178">Извезите лозинке</translation>
 <translation id="3901991538546252627">Повезивање са мрежом <ph name="NAME" /></translation>
 <translation id="3905761538810670789">Поправи апликацију</translation>
@@ -2154,7 +2168,6 @@
 <translation id="4013132157686828973">„<ph name="CLIENT_NAME" />“ отклања грешке из овог прегледача</translation>
 <translation id="4014432863917027322">Желите ли да поправите „<ph name="EXTENSION_NAME" />“?</translation>
 <translation id="4015163439792426608">Имате додатке? <ph name="BEGIN_LINK" />Управљајте додацима<ph name="END_LINK" /> на једном практичном месту.</translation>
-<translation id="4020106588733303597">Упс! Систем није успео да учита доступне лиценце.</translation>
 <translation id="4020327272915390518">Мени са опцијама</translation>
 <translation id="4021279097213088397">-</translation>
 <translation id="4022426551683927403">&amp;Додај у речник</translation>
@@ -2192,6 +2205,7 @@
 <translation id="407520071244661467">Размера</translation>
 <translation id="4075639477629295004">Није успело пребацивање за <ph name="FILE_NAME" />.</translation>
 <translation id="4077917118009885966">Огласи су блокирани на овом сајту</translation>
+<translation id="4077919383365622693">Бришу се сви подаци и колачићи које чува <ph name="SITE" />.</translation>
 <translation id="4079140982534148664">Користите побољшану проверу правописа</translation>
 <translation id="4081242589061676262">Није успело пребацивање датотеке.</translation>
 <translation id="4084682180776658562">Обележивач</translation>
@@ -2266,6 +2280,7 @@
 <translation id="4181841719683918333">Језици</translation>
 <translation id="4184885522552335684">Превлачите да бисте померили приказ</translation>
 <translation id="4194570336751258953">Омогући функцију „додирни-за-клик“</translation>
+<translation id="4194595472342532425">Подешавање Plugin VM-а није успело због проблема са конфигурацијом. Обратите се администратору уређаја у организацији. Кôд грешке: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Отвори на новој картици</translation>
 <translation id="4195814663415092787">Настави претходну сесију</translation>
 <translation id="4198146608511578238">Само држите икону Покретача да бисте причали са Google помоћником.</translation>
@@ -2489,6 +2504,7 @@
 <translation id="4549791035683739768">На безбедносном кључу нема сачуваних отисака прстију</translation>
 <translation id="4551763574344810652">Притисните <ph name="MODIFIER_KEY_DESCRIPTION" /> да бисте опозвали</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005">Мрежа <ph name="NETWORK_TYPE" />, јачина сигнала <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">Верзија спољног додатка је иста или старија од постојећег.</translation>
 <translation id="4555769855065597957">Нови профил</translation>
 <translation id="4555863373929230635">Да бисте сачували лозинке на Google налогу, пријавите се и укључите синхронизацију.</translation>
@@ -2566,6 +2582,7 @@
 <translation id="4665446389743427678">Биће избрисани сви подаци које <ph name="SITE" /> чува.</translation>
 <translation id="4668721319092543482">Кликните да бисте омогућили <ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">Пречишћавање странице</translation>
+<translation id="46733273239502219">Бришу се и офлајн подаци у инсталираним апликацијама</translation>
 <translation id="4673442866648850031">Отварај алатке за писаљку када се писаљка уклони</translation>
 <translation id="4677585247300749148"><ph name="URL" /> жели да одговара на догађаје приступачности</translation>
 <translation id="4677772697204437347">GPU меморија</translation>
@@ -2657,7 +2674,6 @@
 <translation id="4823484602432206655">Читање и мењање подешавања корисника и уређаја</translation>
 <translation id="4824958205181053313">Желите ли да откажете синхронизацију?</translation>
 <translation id="4827675678516992122">Повезивање није успело</translation>
-<translation id="4828937774870308359">Аустралијски</translation>
 <translation id="4829768588131278040">Подеси PIN</translation>
 <translation id="4830502475412647084">Инсталира се ажурирање ОС-а</translation>
 <translation id="4830573902900904548"><ph name="DEVICE_TYPE" /> не може да се повеже на интернет помоћу мреже <ph name="NETWORK_NAME" />. Изаберите неку другу мрежу. <ph name="LEARN_MORE_LINK_START" />Сазнајте више<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2698,6 +2714,7 @@
 <translation id="4876273079589074638">Помозите инжењерима да истраже и реше проблеме са отказивањем. Наведите тачне кораке ако можете. Ниједан детаљ није неважан!</translation>
 <translation id="4876895919560854374">Закључавање и откључавање екрана</translation>
 <translation id="4877276003880815204">Проверите елементе</translation>
+<translation id="4878653975845355462">Администратор је искључио прилагођене позадине</translation>
 <translation id="4879491255372875719">Аутоматски (подразумевано)</translation>
 <translation id="4880328057631981605">Назив приступне тачке</translation>
 <translation id="4880827082731008257">Претражи историју</translation>
@@ -2753,10 +2770,10 @@
 <translation id="4943691134276646401">„<ph name="CHROME_EXTENSION_NAME" />“ жели да се повеже са серијским портом</translation>
 <translation id="4944310289250773232">Ову услугу потврде идентитета хостује <ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">Радње</translation>
+<translation id="4952981627953231344">Plugin VM није дозвољен на овом уређају. Обратите се администратору уређаја у организацији.</translation>
 <translation id="4953689047182316270">одговара на догађаје приступачности</translation>
 <translation id="4953808748584563296">Подразумевани наранџасти аватар</translation>
 <translation id="4955710816792587366">Одаберите PIN</translation>
-<translation id="4955814292505481804">Годишња</translation>
 <translation id="4959262764292427323">Лозинке се чувају на Google налогу да бисте могли да их користите на било ком уређају</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Администратор је инсталирао ову апликацију.</translation>
@@ -3239,7 +3256,6 @@
 <translation id="5659593005791499971">Имејл</translation>
 <translation id="5659833766619490117">Превођење ове странице није успело</translation>
 <translation id="5660204307954428567">Упарите са уређајем <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Трајна</translation>
 <translation id="5667546120811588575">Google Play се подешава…</translation>
 <translation id="5669267381087807207">Активирање</translation>
 <translation id="5669691691057771421">Унесите нови PIN</translation>
@@ -3255,6 +3271,7 @@
 <translation id="5687326903064479980">Временска зона</translation>
 <translation id="5689516760719285838">Локација</translation>
 <translation id="56907980372820799">Повежи податке</translation>
+<translation id="5691180005790455277">Бришу се сви подаци и колачићи које чувају <ph name="SITE_GROUP_NAME" /> и сви сајтови у оквиру те групе.</translation>
 <translation id="5691511426247308406">Породица</translation>
 <translation id="5692183275898619210">Штампање је завршено</translation>
 <translation id="5696143504434933566">Пријави злоупотребу од „<ph name="EXTENSION_NAME" />“</translation>
@@ -3342,7 +3359,6 @@
 <translation id="5815645614496570556">X.400 адреса</translation>
 <translation id="5816434091619127343">Тражене измене ће учинити штампач неупотребљивим.</translation>
 <translation id="5817918615728894473">Упари</translation>
-<translation id="5819762621475381970">– изглед ваше собе</translation>
 <translation id="5821565227679781414">Направи пречицу</translation>
 <translation id="5825412242012995131">Укључено (препоручено)</translation>
 <translation id="5826395379250998812">Повежите <ph name="DEVICE_TYPE" /> са телефоном. <ph name="LINK_BEGIN" />Сазнајте више<ph name="LINK_END" /></translation>
@@ -3478,6 +3494,7 @@
 <translation id="6007240208646052708">Гласовна претрага на вашем језику није доступна.</translation>
 <translation id="6009781704028455063">Уграђени сензор</translation>
 <translation id="6010869025736512584">Приступа се видео улазу</translation>
+<translation id="6011074160056912900">Етернет мрежа</translation>
 <translation id="6011193465932186973">Дигитални отисак</translation>
 <translation id="6011449291337289699">Обришите податке сајта</translation>
 <translation id="6015266928248016057">Неважећи PUK. Преосталих покушаја: <ph name="RETRIES" />.</translation>
@@ -3514,6 +3531,7 @@
 <translation id="6053401458108962351">&amp;Обриши податке прегледања...</translation>
 <translation id="6055171183283175969">Лозинка коју сте унели је нетачна.</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 са RSA шифровањем</translation>
+<translation id="6055907707645252013">Мрежа <ph name="NETWORK_TYPE" />, није повезана</translation>
 <translation id="6056710589053485679">Поново учитај нормално</translation>
 <translation id="6057381398996433816">Овом сајту је забрањено да користи сензоре за покрет и светло.</translation>
 <translation id="6058567592298841668">Виртуелна машина за додатну компоненту: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3577,6 +3595,7 @@
 <translation id="6136114942382973861">Затвори траку са преузимањима</translation>
 <translation id="6137767437444130246">Кориснички сертификат</translation>
 <translation id="6138680304137685902">Потпис X9.62 ECDSA путем SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, нема мреже</translation>
 <translation id="6141988275892716286">Потврдите преузимање</translation>
 <translation id="6143186082490678276">Затражите помоћ</translation>
 <translation id="6144938890088808325">Помозите нам да побољшамо Chromebook-ове</translation>
@@ -3883,6 +3902,7 @@
 <translation id="6602956230557165253">Користите тастере са стрелицама улево и удесно за кретање.</translation>
 <translation id="6605847144724004692">Још увек није оценио ниједан корисник.</translation>
 <translation id="6607831829715835317">Још а&amp;латки</translation>
+<translation id="6611972847767394631">Пронађите картице овде</translation>
 <translation id="6612358246767739896">Заштићени садржај</translation>
 <translation id="6615455863669487791">Покажи ми</translation>
 <translation id="6618097958368085618">Ипак задржи</translation>
@@ -3951,6 +3971,7 @@
 <translation id="6709133671862442373">Вести</translation>
 <translation id="6709357832553498500">Повежи се помоћу <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Претходно</translation>
+<translation id="6715803357256707211">Дошло је до грешке током инсталирања Linux апликације. Кликните на обавештење да бисте пронашли детаљне информације.</translation>
 <translation id="6721678857435001674">да види произвођача и модел безбедносног кључа</translation>
 <translation id="6721972322305477112">&amp;File (Датотека)</translation>
 <translation id="672213144943476270">Откључајте профил да бисте прегледали као гост.</translation>
@@ -3975,7 +3996,6 @@
 <translation id="674632704103926902">Омогући превлачење додиром</translation>
 <translation id="6748217015615267851">Приказивач: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Можете да наставите, али ће бити враћени само синхронизовани подаци и подешавања. Изгубићете све локалне податке.</translation>
-<translation id="6748775883310276718">Киоск за појединачне апликације</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (без архивирања)</translation>
 <translation id="6757101664402245801">URL је копиран</translation>
 <translation id="6758056191028427665">Поделите утиске о нашем учинку.</translation>
@@ -3985,6 +4005,7 @@
 <translation id="6769712124046837540">Додавање штампача...</translation>
 <translation id="6770664076092644100">Потврди помоћу NFC-а</translation>
 <translation id="6771503742377376720">Јесте ауторитет за издавање сертификата</translation>
+<translation id="6772339735733515807">Управљајте додацима</translation>
 <translation id="6775163072363532304">Доступни уређаји се приказују овде.</translation>
 <translation id="6777817260680419853">Преусмеравање је блокирано</translation>
 <translation id="6778737459546443941">Родитељ га још увек није одобрио</translation>
@@ -4123,6 +4144,7 @@
 <translation id="6972180789171089114">Аудио/видео</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> не може да отвори датотеке у овом директоријуму јер он садржи системске датотеке</translation>
 <translation id="6972754398087986839">Започнимо</translation>
+<translation id="6973611239564315524">Доступна је надоградња на Debian 10 (Buster)</translation>
 <translation id="6974609594866392343">Офлајн режим демонстрације</translation>
 <translation id="6977381486153291903">Ревизија фирмвера</translation>
 <translation id="6978121630131642226">Претраживачи</translation>
@@ -4582,6 +4604,7 @@
 <translation id="7644543211198159466">Боја и тема</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (власник)</translation>
 <translation id="7645681574855902035">Отказује се прављење резервне копије за Linux</translation>
+<translation id="7646772052135772216">Синхронизација лозинки не ради</translation>
 <translation id="7647403192093989392">Нема недавних активности</translation>
 <translation id="7648992873808071793">складишти датотеке на овом уређају</translation>
 <translation id="7649070708921625228">Помоћ</translation>
@@ -4770,6 +4793,7 @@
 <translation id="7877451762676714207">Непозната грешка сервера. Пробајте поново или контактирајте администратора сервера.</translation>
 <translation id="7877680364634660272">Обилазак</translation>
 <translation id="7878562273885520351">Лозинка је можда компромитована</translation>
+<translation id="7879631849810108578">Пречица је подешена: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Локални подаци ће бити избрисани када рестартујете уређај</translation>
 <translation id="7881483672146086348">Прикажи налог</translation>
 <translation id="7882358943899516840">Тип добављача</translation>
@@ -4856,6 +4880,7 @@
 <translation id="7987814697832569482">Увек се повезуј преко овог VPN-а</translation>
 <translation id="7988355189918024273">Омогући функције приступачности</translation>
 <translation id="7991296728590311172">Подешавања приступа помоћу прекидача</translation>
+<translation id="7994350303002908848">Инсталирање Plugin VM-а није успело. Пробајте поново или се обратите администратору уређаја у организацији. Кôд грешке: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">EAP метод</translation>
 <translation id="7997826902155442747">Приоритет процеса</translation>
 <translation id="7999229196265990314">Направљене су следеће датотеке:
@@ -4948,7 +4973,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Нема колачића треће стране}=1{1 колачић треће стране је блокиран}one{# колачић треће стране је блокиран}few{# колачића треће стране су блокирана}other{# колачића треће стране је блокирано}}</translation>
 <translation id="810875025413331850">Није пронађен ниједан уређај у близини.</translation>
 <translation id="8111155949205007504">Делите ову лозинку са iPhone-ом</translation>
-<translation id="8113043281354018522">Одаберите тип лиценце</translation>
 <translation id="8114875720387900039">Подели хоризонтално</translation>
 <translation id="8116972784401310538">&amp;Менаџер обележивача</translation>
 <translation id="8117620576188476503">Управљајте везама, ажурирањима и подешавањима помоћу статусне траке. Да бисте дошли овде помоћу тастатуре, притисните Alt + Shift + S.</translation>
@@ -5105,6 +5129,7 @@
 <translation id="8327039559959785305">Грешка при прикључивању Linux датотека. Пробајте поново.</translation>
 <translation id="8335587457941836791">Откачи са полице</translation>
 <translation id="8336407002559723354">Ажурирања ће бити доступна до <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Рестартујте уређај да би се системски текст приказивао на језику <ph name="LANGUAGE" /></translation>
 <translation id="8336739000755212683">Промените слику налога на уређају</translation>
 <translation id="8337047789441383384">Већ сте регистровали овај безбедносни кључ. Не морате поново да га региструјете.</translation>
 <translation id="8338952601723052325">Веб-сајт програмера</translation>
@@ -5148,6 +5173,7 @@
 <translation id="8400146488506985033">Управљај људима</translation>
 <translation id="8401432541486058167">Наведите PIN који је повезан са паметном картицом.</translation>
 <translation id="8405046151008197676">Погледајте резиме најновијег ажурирања</translation>
+<translation id="8408068190360279472">Мрежа <ph name="NETWORK_TYPE" />, повезује се</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Прво питај (препоручено)</translation>
 <translation id="8418445294933751433">&amp;Прикажи као картицу</translation>
@@ -5437,6 +5463,7 @@
 <translation id="8807632654848257479">Стабилно</translation>
 <translation id="8808478386290700967">Веб-продавница</translation>
 <translation id="8808686172382650546">Мачка</translation>
+<translation id="8808744862003883508">На овој страници можете да видите сва додатке инсталиране у Chrome-у.</translation>
 <translation id="8809147117840417135">Светлотиркизна</translation>
 <translation id="8813698869395535039">Пријављивање на <ph name="USERNAME" /> није успело</translation>
 <translation id="8813811964357448561">лист папира</translation>
@@ -5664,7 +5691,6 @@
 <translation id="9121814364785106365">Отвори као закачену картицу</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> – паузирано</translation>
 <translation id="9124003689441359348">Сачуване лозинке ће се појавити овде</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (преосталих: <ph name="LICENSE_COUNT" />)</translation>
 <translation id="9128317794749765148">Подешавање није довршено</translation>
 <translation id="9128870381267983090">Повезивање са мрежом</translation>
 <translation id="9130015405878219958">Унет је неважећи режим.</translation>
@@ -5703,6 +5729,7 @@
 <translation id="9188732951356337132">Шаљите податке о коришћењу и дијагностичке податке. Овај уређај тренутно аутоматски шаље податке о дијагностици, уређају и коришћењу апликација Google-у. Те информације се неће користити за идентификацију детета и помоћи ће у одржавању стабилности система и апликације и другим подешавањима. Неки обједињени подаци ће такође помоћи Google апликацијама и партнерима, попут Android програмера. Ако за дете укључите подешавање додатне активности на вебу и у апликацијама, ти подаци ће се можда чувати на Google налогу детета. <ph name="BEGIN_LINK2" />Сазнајте више<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + тајни кључ</translation>
 <translation id="920045321358709304">Претражи <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">Бришу се сви офлајн подаци</translation>
 <translation id="9201220332032049474">Опције закључавања екрана</translation>
 <translation id="9203398526606335860">&amp;Профилисање је омогућено</translation>
 <translation id="9203904171912129171">Изаберите уређај</translation>
@@ -5715,6 +5742,7 @@
 <translation id="9220525904950070496">Уклањање налога</translation>
 <translation id="9220820413868316583">Подигните, па пробајте поново.</translation>
 <translation id="923467487918828349">Прикажи све</translation>
+<translation id="929117907539171075">Бришу се и офлајн подаци у инсталираној апликацији</translation>
 <translation id="930268624053534560">Детаљне временске ознаке</translation>
 <translation id="932327136139879170">Почетна</translation>
 <translation id="932508678520956232">Није могуће покренути штампање.</translation>
@@ -5740,6 +5768,7 @@
 <translation id="960719561871045870">Кôд мобилног оператера</translation>
 <translation id="960987915827980018">Остало је око сат времена</translation>
 <translation id="962802172452141067">Стабло директоријума обележивача</translation>
+<translation id="964057662886721376">Неки додаци могу да вас успоре, посебно они које нисте намеравали да инсталирате.</translation>
 <translation id="964286338916298286">ИТ администратор је онемогућио Chrome забавне стварчице за уређај.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Апликација}one{Апликације}few{Апликације}other{Апликације}}</translation>
 <translation id="965211523698323809">Шаљите и примајте SMS-ове са уређаја <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Сазнајте више<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb
index 2d99e0d..2be70c6a 100644
--- a/chrome/app/resources/generated_resources_sv.xtb
+++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Anpassad</translation>
 <translation id="1178581264944972037">Paus</translation>
 <translation id="117916940443676133">Säkerhetsnyckeln skyddas inte av en pinkod. Skapa en pinkod först innan du hanterar inloggningsuppgifter.</translation>
-<translation id="118069123878619799">– din fysiska egenskaper, t.ex. hur lång du är</translation>
 <translation id="1181037720776840403">Ta bort</translation>
 <translation id="1183237619868651138">Det går inte att installera <ph name="EXTERNAL_CRX_FILE" /> i det lokala cacheminnet.</translation>
 <translation id="1185924365081634987">Du kan också försöka lösa nätverksproblemet genom att <ph name="GUEST_SIGNIN_LINK_START" />surfa som gäst<ph name="GUEST_SIGNIN_LINK_END" />.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">Väntar på <ph name="LOAD_STATE_PARAMETER" /> ...</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> andra tillgängliga enheter.</translation>
 <translation id="1495677929897281669">Tillbaka till flik</translation>
+<translation id="1499271269825557605">Om du inte känner igen ett tillägg eller om webbläsaren inte fungerar som den ska kan du stänga av eller anpassa tillägg här.</translation>
 <translation id="1500297251995790841">Okänd enhet [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Det här ägarkontot måste vara det första inloggade kontot i en session med flera inloggningar.</translation>
 <translation id="150411034776756821">Ta bort <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Den här sidan får inte använda din kamera.</translation>
 <translation id="1507246803636407672">&amp;Kasta</translation>
 <translation id="1508491105858779599">Placera fingret på fingeravtryckssensorn för att låsa upp enheten.</translation>
+<translation id="1508575541972276599">Aktuell version: Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">Åtkomst till valfri <ph name="DEVICE_NAME_AND_VENDOR" /> via USB</translation>
 <translation id="150962533380566081">Ogiltig PUK-kod.</translation>
 <translation id="1510030919967934016">Sidan har förhindrats från att spåra din plats.</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">Verkställ</translation>
 <translation id="1603914832182249871">(Inkognito)</translation>
 <translation id="1604432177629086300">Utskriften misslyckades. Kontrollera skrivaren och försök igen.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: Det går inte att synkronisera lösenord</translation>
 <translation id="1607139524282324606">Rensa post</translation>
 <translation id="1608626060424371292">Ta bort den här användaren</translation>
 <translation id="1608668830839595724">Fler åtgärder för valda objekt</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">Appdata som har en värd</translation>
 <translation id="1776712937009046120">Lägg till användare</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Den här enheten hanteras av <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    Fortsätt med inloggningen på kontot på <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> genom att klicka på Nästa.</translation>
 <translation id="1779652936965200207">Ange denna nyckel på <ph name="DEVICE_NAME" />:</translation>
 <translation id="1780152987505130652">Stäng grupp</translation>
 <translation id="1781291988450150470">Aktuell pinkod</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">Åtgärden är inte tillgänglig</translation>
 <translation id="2050339315714019657">Stående</translation>
 <translation id="2053312383184521053">Data om läget inaktiv</translation>
+<translation id="2055585478631012616">Du loggas ut från webbplatserna i fråga, även på öppna flikar</translation>
 <translation id="205560151218727633">Logotyp för Google Assistent</translation>
 <translation id="2058456167109518507">En enhet har upptäckts</translation>
 <translation id="2059913712424898428">Tidszon</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">Ångra</translation>
 <translation id="2080070583977670716">Fler inställningar</translation>
 <translation id="2087822576218954668">Utskrift: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN-nätverk</translation>
 <translation id="2089566709556890888">Surfa säkert med Google Chrome</translation>
 <translation id="2089795179672254991">Fråga när en webbplats vill få tillgång till text och bilder som kopierats till Urklipp (rekommenderas)</translation>
 <translation id="2090165459409185032">Återställ kontoinformationen på google.com/accounts/recovery</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">En webbplats tar emot ljud- och videoindata</translation>
 <translation id="2379281330731083556">Skriv ut via systemets dialogruta ... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Fråga innan något skickas (rekommenderas)</translation>
+<translation id="2382818385048255866">Kontrollera dina tillägg</translation>
 <translation id="2384436799579181135">Ett fel uppstod. Kontrollera skrivaren och försök igen.</translation>
 <translation id="2387458720915042159">Proxyanslutningstyp</translation>
 <translation id="2391419135980381625">Standardteckensnitt</translation>
@@ -1036,6 +1043,7 @@
 <translation id="2462724976360937186">Nyckel-ID för certifikatutfärdare</translation>
 <translation id="2462752602710430187"><ph name="PRINTER_NAME" /> har lagts till</translation>
 <translation id="2464089476039395325">HTTP-proxy</translation>
+<translation id="2467267713099745100">Nätverkstyp: <ph name="NETWORK_TYPE" />, inaktiverat</translation>
 <translation id="2468205691404969808">Kommer ihåg med hjälp av cookies vad du brukar välja även om du inte besöker sidorna i fråga</translation>
 <translation id="2468402215065996499">Tamagotchi</translation>
 <translation id="2469259292033957819">Du har inga sparade skrivare.</translation>
@@ -1290,6 +1298,7 @@
 <translation id="2800760947029405028">Ladda upp en bild</translation>
 <translation id="2803375539583399270">Ange pinkod</translation>
 <translation id="2804043232879091219">Det gick inte att öppna den andra webbläsaren</translation>
+<translation id="2804667941345577550">Du loggas ut från den här webbplatsen, även på öppna flikar</translation>
 <translation id="2804680522274557040">Kamera har inaktiverats</translation>
 <translation id="2805646850212350655">Microsofts krypterande filsystem</translation>
 <translation id="2805756323405976993">Appar</translation>
@@ -1297,6 +1306,7 @@
 <translation id="2806891468525657116">Genvägen finns redan</translation>
 <translation id="2807517655263062534">Filer som du laddar ned visas här</translation>
 <translation id="2809586584051668049">och ytterligare <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2810390687497823527">Om du inte känner igen ett tillägg eller om webbläsaren inte fungerar som den ska kan du stänga av eller anpassa tillägg här.</translation>
 <translation id="2812049959647166806">Thunderbolt stöds inte</translation>
 <translation id="2812944337881233323">Testa att logga ut och logga in igen</translation>
 <translation id="2812989263793994277">Visa inga bilder</translation>
@@ -1336,6 +1346,7 @@
 <translation id="2861941300086904918">Native Client säkerhetshanterare</translation>
 <translation id="2864601841139725659">Ange profilbild</translation>
 <translation id="2865919525181940183">Skärmdump av program som visas på skärmen</translation>
+<translation id="286674810810214575">Kontrollerar strömkällor …</translation>
 <translation id="2867768963760577682">Öppna som en fast flik</translation>
 <translation id="2868746137289129307">Tillägget är inaktuellt och inaktiverat av företagspolicyn. Det kan aktiveras automatiskt när en ny version blir tillgänglig.</translation>
 <translation id="2870560284913253234">Webbplats</translation>
@@ -1413,6 +1424,7 @@
 <translation id="2972581237482394796">&amp;Upprepa</translation>
 <translation id="2973324205039581528">Stäng av webbplatsens ljud</translation>
 <translation id="2977480621796371840">Ta bort från gruppen</translation>
+<translation id="2979520980928493164">Håll Chrome i trim</translation>
 <translation id="2979639724566107830">Öppna i nytt fönster</translation>
 <translation id="2981113813906970160">Visa stor muspekare</translation>
 <translation id="2982970937345031">Rapportera anonymt</translation>
@@ -1519,6 +1531,7 @@
 <translation id="3143515551205905069">Avbryt synkronisering</translation>
 <translation id="3143754809889689516">Spela upp från början</translation>
 <translation id="3144647712221361880">Öppna länk som</translation>
+<translation id="3145187901750964977">Det gick inte att installera den virtuella maskinen. Försök igen eller kontakta organisationens enhetsadministratör. Felkod: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Version:
     <ph name="LINUX_VERSION" />
 
@@ -1557,6 +1570,7 @@
 <translation id="3192947282887913208">Ljudfiler</translation>
 <translation id="3194737229810486521"><ph name="URL" /> vill lagra data permanent på din enhet</translation>
 <translation id="3199127022143353223">Servrar</translation>
+<translation id="3201306578844503970">Det gick inte att installera den virtuella maskinen på grund av ett nätverksfel. Försök igen eller kontakta organisationens enhetsadministratör. Felkod: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Tillgängliga USB-enheter visas här.</translation>
 <translation id="3202131003361292969">Sökväg</translation>
 <translation id="3202173864863109533">Ljudet är avstängt på den här fliken.</translation>
@@ -1893,7 +1907,6 @@
 <translation id="3678156199662914018">Tillägg: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Tack för din feedback. Just nu är du offline, så rapporten skickas senare.</translation>
 <translation id="3682824389861648626">Gräns för rörelse</translation>
-<translation id="3683023058278427253">Vi har hittat flera licenstyper för din domän. Välj en innan du fortsätter.</translation>
 <translation id="3683524264665795342">Förfrågan från <ph name="APP_NAME" /> om skärmdelning</translation>
 <translation id="368789413795732264">Ett fel uppstod när följande fil skulle skrivas: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Skriva till filer och mappar som du öppnar i appen</translation>
@@ -2067,6 +2080,7 @@
 <translation id="389589731200570180">Dela med gäster</translation>
 <translation id="389901847090970821">Välj tangentbord</translation>
 <translation id="3899879303189199559">Offline i mer än ett år</translation>
+<translation id="3900789207771372462">Din webbaktivitet är synlig för vissa tillägg. Det gäller även personliga uppgifter.</translation>
 <translation id="3900966090527141178">Exportera lösenord</translation>
 <translation id="3901991538546252627">Ansluter till <ph name="NAME" /></translation>
 <translation id="3905761538810670789">Reparera appen</translation>
@@ -2157,7 +2171,6 @@
 <translation id="4013132157686828973"><ph name="CLIENT_NAME" /> felsöker webbläsaren</translation>
 <translation id="4014432863917027322">Vill du reparera <ph name="EXTENSION_NAME" />?</translation>
 <translation id="4015163439792426608">Använder du tillägg? <ph name="BEGIN_LINK" />Hantera tilläggen<ph name="END_LINK" /> enkelt på ett ställe.</translation>
-<translation id="4020106588733303597">Hoppsan! Det gick inte att läsa in de tillgängliga licenserna.</translation>
 <translation id="4020327272915390518">Alternativmeny</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Lägg till i ordlistan</translation>
@@ -2195,6 +2208,7 @@
 <translation id="407520071244661467">Skaländra</translation>
 <translation id="4075639477629295004">Det gick inte att casta <ph name="FILE_NAME" />.</translation>
 <translation id="4077917118009885966">Annonser blockeras på den här webbplatsen</translation>
+<translation id="4077919383365622693">All data och alla cookies som sparats av <ph name="SITE" /> raderas.</translation>
 <translation id="4079140982534148664">Använd förbättrad stavningskontroll</translation>
 <translation id="4081242589061676262">Det går inte att casta filen.</translation>
 <translation id="4084682180776658562">Infoga bokmärke</translation>
@@ -2269,6 +2283,7 @@
 <translation id="4181841719683918333">Språk</translation>
 <translation id="4184885522552335684">Flytta skärmar genom att dra dem</translation>
 <translation id="4194570336751258953">Aktivera klick på styrplattan</translation>
+<translation id="4194595472342532425">Det gick inte att installera Plugin VM på grund av ett konfigurationsproblem. Kontakta organisationens enhetsadministratör. Felkod: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Öppna i ny flik</translation>
 <translation id="4195814663415092787">Fortsätt där du slutade</translation>
 <translation id="4198146608511578238">Håll startprogrammets ikon nedtryckt om du vill prata med Google Assistent.</translation>
@@ -2492,6 +2507,7 @@
 <translation id="4549791035683739768">Det finns inga sparade fingeravtryck på säkerhetsnyckeln.</translation>
 <translation id="4551763574344810652">Tryck på <ph name="MODIFIER_KEY_DESCRIPTION" /> för att ångra</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005">Nätverkstyp: <ph name="NETWORK_TYPE" />, signalstyrka <ph name="SIGNAL_STRENGTH" /> %</translation>
 <translation id="4554591392113183336">Det externa tillägget har samma eller lägre version än det som redan finns.</translation>
 <translation id="4555769855065597957">Skugga</translation>
 <translation id="4555863373929230635">Logga in och aktivera synkronisering om du vill spara lösenord i Google-kontot.</translation>
@@ -2569,6 +2585,7 @@
 <translation id="4665446389743427678">All data som lagrats av <ph name="SITE" /> raderas.</translation>
 <translation id="4668721319092543482">Klicka för att aktivera <ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">Skapa Distiller-sida</translation>
+<translation id="46733273239502219">Offlinedata i installerade appar raderas också</translation>
 <translation id="4673442866648850031">Öppna verktyg för e-penna när e-pennan tas bort</translation>
 <translation id="4677585247300749148"><ph name="URL" /> vill svara på tillgänglighetshändelser</translation>
 <translation id="4677772697204437347">GPU-minne</translation>
@@ -2660,7 +2677,6 @@
 <translation id="4823484602432206655">Läsa och ändra användarinställningar och enhetsinställningar</translation>
 <translation id="4824958205181053313">Vill du avbryta synkroniseringen?</translation>
 <translation id="4827675678516992122">Det gick inte att ansluta</translation>
-<translation id="4828937774870308359">Australiensisk</translation>
 <translation id="4829768588131278040">Konfigurera pinkod</translation>
 <translation id="4830502475412647084">Uppdateringen för operativsystemet installeras</translation>
 <translation id="4830573902900904548">Din <ph name="DEVICE_TYPE" /> kan inte ansluta till internet med <ph name="NETWORK_NAME" />. Välj ett annat nätverk. <ph name="LEARN_MORE_LINK_START" />Läs mer<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2701,6 +2717,7 @@
 <translation id="4876273079589074638">Hjälp våra ingenjörer att undersöka och åtgärda den här kraschen. Ange de exakta stegen om du kan. Ingen detalj är för liten.</translation>
 <translation id="4876895919560854374">Låsa och låsa upp skärmen</translation>
 <translation id="4877276003880815204">Inspektera element</translation>
+<translation id="4878653975845355462">Anpassade bakgrunder har inaktiverats av administratören</translation>
 <translation id="4879491255372875719">Automatiskt (standard)</translation>
 <translation id="4880328057631981605">Namn på åtkomstpunkt (APN)</translation>
 <translation id="4880827082731008257">Sök i historiken</translation>
@@ -2756,10 +2773,10 @@
 <translation id="4943691134276646401"><ph name="CHROME_EXTENSION_NAME" /> vill ansluta till en serieport</translation>
 <translation id="4944310289250773232">Den här autentiseringstjänsten tillhandahålls av <ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">Åtgärder</translation>
+<translation id="4952981627953231344">Plugin VM är inte tillåtet på den här enheten. Kontakta organisationens enhetsadministratör.</translation>
 <translation id="4953689047182316270">Svara på tillgänglighetshändelser</translation>
 <translation id="4953808748584563296">Orange standardavatar</translation>
 <translation id="4955710816792587366">Välj en pinkod</translation>
-<translation id="4955814292505481804">Årslicens</translation>
 <translation id="4959262764292427323">Lösenorden sparas i Google-kontot så att du kan använda dem på vilken enhet som helst</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Den här appen har installerats av administratören.</translation>
@@ -3241,7 +3258,6 @@
 <translation id="5659593005791499971">E-post</translation>
 <translation id="5659833766619490117">Det gick inte att översätta sidan</translation>
 <translation id="5660204307954428567">Parkoppla med <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Permanent licens</translation>
 <translation id="5667546120811588575">Google Play konfigureras …</translation>
 <translation id="5669267381087807207">Aktiverar</translation>
 <translation id="5669691691057771421">Ange en ny pinkod</translation>
@@ -3257,6 +3273,7 @@
 <translation id="5687326903064479980">Tidszon</translation>
 <translation id="5689516760719285838">Plats</translation>
 <translation id="56907980372820799">Koppla data</translation>
+<translation id="5691180005790455277">All data och alla cookies som sparats av <ph name="SITE_GROUP_NAME" /> och eventuella underordnade webbplatser raderas.</translation>
 <translation id="5691511426247308406">Familj</translation>
 <translation id="5692183275898619210">Utskriften har slutförts</translation>
 <translation id="5696143504434933566">Rapportera otillåten användning från <ph name="EXTENSION_NAME" /></translation>
@@ -3343,7 +3360,6 @@
 <translation id="5815645614496570556">X.400-adress</translation>
 <translation id="5816434091619127343">De begärda ändringarna av skrivaren innebär att skrivaren inte kan användas.</translation>
 <translation id="5817918615728894473">Koppla</translation>
-<translation id="5819762621475381970">– hur ditt rum ser ut</translation>
 <translation id="5821565227679781414">Skapa genväg</translation>
 <translation id="5825412242012995131">På (rekommenderas)</translation>
 <translation id="5826395379250998812">Anslut <ph name="DEVICE_TYPE" /> till telefonen. <ph name="LINK_BEGIN" />Läs mer<ph name="LINK_END" /></translation>
@@ -3479,6 +3495,7 @@
 <translation id="6007240208646052708">Röstsökning är inte tillgängligt på ditt språk.</translation>
 <translation id="6009781704028455063">Inbyggd sensor</translation>
 <translation id="6010869025736512584">Får åtkomst till videoindata</translation>
+<translation id="6011074160056912900">Ethernet-nätverk</translation>
 <translation id="6011193465932186973">Fingeravtryck</translation>
 <translation id="6011449291337289699">Rensa webbplatsdata</translation>
 <translation id="6015266928248016057">Ogiltig PUK-kod. Återstående försök: <ph name="RETRIES" />.</translation>
@@ -3515,6 +3532,7 @@
 <translation id="6053401458108962351">&amp;Ta bort webbinformation...</translation>
 <translation id="6055171183283175969">Det angivna lösenordet är felaktigt.</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 med RSA-kryptering</translation>
+<translation id="6055907707645252013">Nätverkstyp: <ph name="NETWORK_TYPE" />, inte anslutet</translation>
 <translation id="6056710589053485679">Normal inläsning</translation>
 <translation id="6057381398996433816">Den här webbplatsen får inte använda enhetens rörelse- och ljussensor.</translation>
 <translation id="6058567592298841668">Plugin för virtuell maskin: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3578,6 +3596,7 @@
 <translation id="6136114942382973861">Stäng nedladdningsfältet</translation>
 <translation id="6137767437444130246">Användarcertifikat</translation>
 <translation id="6138680304137685902">X9.62 ECDSA-signatur med SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, inget nätverk</translation>
 <translation id="6141988275892716286">Bekräfta nedladdning</translation>
 <translation id="6143186082490678276">Få hjälp</translation>
 <translation id="6144938890088808325">Hjälp oss att göra Chromebook bättre</translation>
@@ -3884,6 +3903,7 @@
 <translation id="6602956230557165253">Navigera med hjälp av piltangenterna till höger och vänster.</translation>
 <translation id="6605847144724004692">Inga användare har betygsatt detta ännu.</translation>
 <translation id="6607831829715835317">Fler verkt&amp;yg</translation>
+<translation id="6611972847767394631">Här finns dina flikar</translation>
 <translation id="6612358246767739896">Skyddat innehåll</translation>
 <translation id="6615455863669487791">Visa mig</translation>
 <translation id="6618097958368085618">Behåll ändå</translation>
@@ -3952,6 +3972,7 @@
 <translation id="6709133671862442373">Nyheter</translation>
 <translation id="6709357832553498500">Anslut med <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Föregående</translation>
+<translation id="6715803357256707211">Ett fel uppstod under installationen av Linux-programmet. Klicka på aviseringen om du vill läsa mer.</translation>
 <translation id="6721678857435001674">Visa säkerhetsnyckelns märke och modell</translation>
 <translation id="6721972322305477112">&amp;Arkiv</translation>
 <translation id="672213144943476270">Du måste låsa upp din profil innan du kan surfa som gäst.</translation>
@@ -3976,7 +3997,6 @@
 <translation id="674632704103926902">Aktivera "tryck och dra"</translation>
 <translation id="6748217015615267851">Renderas av: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Du kan fortsätta, men endast synkroniserade uppgifter och inställningar återställs. All lokal data kommer att gå förlorad.</translation>
-<translation id="6748775883310276718">Licens för ensam kioskapp</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Inkognito)</translation>
 <translation id="6757101664402245801">Webbadressen har kopierats</translation>
 <translation id="6758056191028427665">Berätta hur vi sköter oss.</translation>
@@ -3986,6 +4006,7 @@
 <translation id="6769712124046837540">Lägger till skrivare ...</translation>
 <translation id="6770664076092644100">Verifiera via NFC</translation>
 <translation id="6771503742377376720">Är en certifikatutfärdare</translation>
+<translation id="6772339735733515807">Hantera tillägg</translation>
 <translation id="6775163072363532304">Tillgängliga enheter visas här.</translation>
 <translation id="6777817260680419853">Omdirigeringen blockerades</translation>
 <translation id="6778737459546443941">Din förälder har inte godkänt den ännu</translation>
@@ -4124,6 +4145,7 @@
 <translation id="6972180789171089114">Ljud/video</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> kan inte öppna filer i den här mappen eftersom den innehåller systemfiler</translation>
 <translation id="6972754398087986839">Komma igång</translation>
+<translation id="6973611239564315524">En uppgradering till Debian 10 (Buster) är tillgänglig</translation>
 <translation id="6974609594866392343">Demoläge offline</translation>
 <translation id="6977381486153291903">Revision av firmware</translation>
 <translation id="6978121630131642226">Sökmotorer</translation>
@@ -4583,6 +4605,7 @@
 <translation id="7644543211198159466">Färg och tema</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (ägare)</translation>
 <translation id="7645681574855902035">Säkerhetskopieringen av Linux avbryts …</translation>
+<translation id="7646772052135772216">Det går inte att synkronisera lösenord</translation>
 <translation id="7647403192093989392">Inga aktiviteter nyligen</translation>
 <translation id="7648992873808071793">Spara filer på enheten</translation>
 <translation id="7649070708921625228">Hjälp</translation>
@@ -4771,6 +4794,7 @@
 <translation id="7877451762676714207">Okänt serverfel. Försök igen eller kontakta serveradministratören.</translation>
 <translation id="7877680364634660272">Rundtur</translation>
 <translation id="7878562273885520351">Lösenordet kan vara utsatt för risk</translation>
+<translation id="7879631849810108578">Kortkommandot har ställts in: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Lokal data raderas när du startar om</translation>
 <translation id="7881483672146086348">Visa konto</translation>
 <translation id="7882358943899516840">Leverantörstyp</translation>
@@ -4857,6 +4881,7 @@
 <translation id="7987814697832569482">Anslut alltid via detta VPN</translation>
 <translation id="7988355189918024273">Aktivera tillgänglighetsfunktioner</translation>
 <translation id="7991296728590311172">Inställningar för brytarstyrning</translation>
+<translation id="7994350303002908848">Det gick inte att installera Plugin VM. Försök igen eller kontakta organisationens enhetsadministratör. Felkod: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">EAP-metod</translation>
 <translation id="7997826902155442747">Prioriteringsprocess</translation>
 <translation id="7999229196265990314">Följande filer har skapats:
@@ -4949,7 +4974,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Inga cookies från tredje part}=1{1 cookie från tredje part har blockerats}other{# cookies från tredje part har blockerats}}</translation>
 <translation id="810875025413331850">Inga enheter i närheten hittades.</translation>
 <translation id="8111155949205007504">Dela det här lösenordet med din iPhone</translation>
-<translation id="8113043281354018522">Välj licenstyp</translation>
 <translation id="8114875720387900039">Dela vågrätt</translation>
 <translation id="8116972784401310538">&amp;Bokmärkshanteraren</translation>
 <translation id="8117620576188476503">Hantera anslutningar, uppdateringar och inställningar i statusfältet. Tryck på Alt + Skift + S om du vill öppna statusfältet.</translation>
@@ -5106,6 +5130,7 @@
 <translation id="8327039559959785305">Ett fel uppstod när Linux-filer skulle monteras. Försök igen.</translation>
 <translation id="8335587457941836791">Ta bort från hyllan</translation>
 <translation id="8336407002559723354">Inga uppdateringar efter <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Starta om enheten om du vill använda <ph name="LANGUAGE" /> som systemspråk</translation>
 <translation id="8336739000755212683">Ändra kontobilden på enheten</translation>
 <translation id="8337047789441383384">Du har redan registrerat den här säkerhetsnyckeln. Du behöver inte registrera den igen.</translation>
 <translation id="8338952601723052325">Webbplats för utvecklare</translation>
@@ -5149,6 +5174,7 @@
 <translation id="8400146488506985033">Hantera personer</translation>
 <translation id="8401432541486058167">Ange den pinkod som är kopplad till ditt smartkort.</translation>
 <translation id="8405046151008197676">Läs det viktigaste om den senaste uppdateringen</translation>
+<translation id="8408068190360279472">Nätverkstyp: <ph name="NETWORK_TYPE" />, ansluter</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Fråga först (rekommenderas)</translation>
 <translation id="8418445294933751433">&amp;Visa som flik</translation>
@@ -5438,6 +5464,7 @@
 <translation id="8807632654848257479">Stabil</translation>
 <translation id="8808478386290700967">Web Store</translation>
 <translation id="8808686172382650546">Katt</translation>
+<translation id="8808744862003883508">På den här sidan visas alla tillägg som har installerats i Chrome.</translation>
 <translation id="8809147117840417135">Ljust blågrön</translation>
 <translation id="8813698869395535039">Det gick inte att logga in på <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">pappersark</translation>
@@ -5665,7 +5692,6 @@
 <translation id="9121814364785106365">Öppna som en fast flik</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> har pausats</translation>
 <translation id="9124003689441359348">Sparade lösenord visas här</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> återstår)</translation>
 <translation id="9128317794749765148">Det gick inte att slutföra konfigurationen</translation>
 <translation id="9128870381267983090">Anslut till ett nätverk</translation>
 <translation id="9130015405878219958">Du har angett ett ogiltigt läge.</translation>
@@ -5704,6 +5730,7 @@
 <translation id="9188732951356337132">Skicka diagnostik- och användningsdata. Den här enheten skickar för närvarande diagnostikdata, enhetsdata och data om appanvändning till Google automatiskt. Denna data används till att förbättra systemets och apparnas stabilitet med mera och inte till att identifiera ditt barn. Viss samlad data används även till att förbättra appar från Google och partner, till exempel Android-utvecklare. Om ytterligare webb- och appaktivitet har aktiverats för ditt barn kan denna data sparas i Google-kontot. <ph name="BEGIN_LINK2" />Läs mer<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPSec + i förväg delad nyckel</translation>
 <translation id="920045321358709304">Sök på <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">All offlinedata raderas</translation>
 <translation id="9201220332032049474">Alternativ för skärmlås</translation>
 <translation id="9203398526606335860">&amp;Profilering aktiverad</translation>
 <translation id="9203904171912129171">Välj en enhet</translation>
@@ -5716,6 +5743,7 @@
 <translation id="9220525904950070496">Ta bort konto</translation>
 <translation id="9220820413868316583">Lyft fingret och testa igen.</translation>
 <translation id="923467487918828349">Visa alla</translation>
+<translation id="929117907539171075">Offlinedata i en installerad app raderas också</translation>
 <translation id="930268624053534560">Detaljerade tidsstämplar</translation>
 <translation id="932327136139879170">Startsida</translation>
 <translation id="932508678520956232">Det gick inte att påbörja utskriften.</translation>
@@ -5741,6 +5769,7 @@
 <translation id="960719561871045870">Operatörskod</translation>
 <translation id="960987915827980018">Ca 1 timme kvar</translation>
 <translation id="962802172452141067">Mappstruktur för bokmärken</translation>
+<translation id="964057662886721376">Vissa tillägg kan göra webbläsaren långsammare – i synnerhet sådana tillägg som du inte själv har valt att installera.</translation>
 <translation id="964286338916298286">IT-administratören har inaktiverat Godbitar från Chrome för din enhet.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{App}other{Appar}}</translation>
 <translation id="965211523698323809">Skicka och ta emot sms på <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Läs mer<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb
index 9751ac9..b22761eb 100644
--- a/chrome/app/resources/generated_resources_sw.xtb
+++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Maalum</translation>
 <translation id="1178581264944972037">Sitisha</translation>
 <translation id="117916940443676133">Ufunguo wako wa usalama haujalindwa kwa PIN. Ili udhibiti data ya kuingia katika akaunti, tunga PIN kwanza.</translation>
-<translation id="118069123878619799">- sifa zako za kimwili, kama vile urefu</translation>
 <translation id="1181037720776840403">Ondoa</translation>
 <translation id="1183237619868651138">Haiwezi kusakinisha <ph name="EXTERNAL_CRX_FILE" /> katika akiba ya ndani.</translation>
 <translation id="1185924365081634987">Pia unaweza kujaribu <ph name="GUEST_SIGNIN_LINK_START" />kuvinjari kama aliyealikwa<ph name="GUEST_SIGNIN_LINK_END" /> ili kurekebisha hitilafu hii ya mtandao.</translation>
@@ -1905,7 +1904,6 @@
 <translation id="3678156199662914018">Kiendelezi: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Asante sana kwa maoni yako. Sasa uko nje ya mtandao, na ripoti yako itatumwa baadaye.</translation>
 <translation id="3682824389861648626">Kiasi cha usogezaji</translation>
-<translation id="3683023058278427253">Tumegundua aina nyingi za leseni za kikoa chako. Tafadhali chagua moja ili uendelee.</translation>
 <translation id="3683524264665795342">Ombi la <ph name="APP_NAME" /> la Kushiriki Skirini</translation>
 <translation id="368789413795732264">Kulikuwa na hitilafu wakati wa kujaribu kuandika faili: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Andika kwenye faili na folda unazofungua katika programu hii.</translation>
@@ -2170,7 +2168,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" inatatua hitilafu ya kivinjari hiki</translation>
 <translation id="4014432863917027322">Je, ungependa kukarabati "<ph name="EXTENSION_NAME" />"?</translation>
 <translation id="4015163439792426608">Je, una viendelezi? <ph name="BEGIN_LINK" />Dhibiti viendelezi vyako<ph name="END_LINK" /> katika sehemu moja rahisi.</translation>
-<translation id="4020106588733303597">Samahani! Mfumo umeshindwa kupakia leseni zilizopo.</translation>
 <translation id="4020327272915390518">Menyu yenye chaguo</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">Ongez&amp;a kwenye Kamusi</translation>
@@ -2675,7 +2672,6 @@
 <translation id="4823484602432206655">Soma na ubadilishe mipangilio ya mtumiaji na kifaa</translation>
 <translation id="4824958205181053313">Ungependa kughairi usawazishaji?</translation>
 <translation id="4827675678516992122">Imeshindwa kuunganisha</translation>
-<translation id="4828937774870308359">Kiaustralia</translation>
 <translation id="4829768588131278040">Unda PIN</translation>
 <translation id="4830502475412647084">Inasasisha Mfumo wa Uendeshaji</translation>
 <translation id="4830573902900904548"><ph name="DEVICE_TYPE" /> yako haiwezi kuunganisha kwenye Intaneti kwa kutumia <ph name="NETWORK_NAME" />. Tafadhali chagua mtandao mwingine. <ph name="LEARN_MORE_LINK_START" />Pata maelezo zaidi<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2776,7 +2772,6 @@
 <translation id="4953689047182316270">Kushughulikia Matukio ya Zana za Walio na Matatizo ya Kuona au Kusikia</translation>
 <translation id="4953808748584563296">Ishara chaguomsingi ya rangi ya machungwa</translation>
 <translation id="4955710816792587366">Chagua PIN yako</translation>
-<translation id="4955814292505481804">Kila mwaka</translation>
 <translation id="4959262764292427323">Manenosiri yanahifadhiwa kwenye Akaunti yako ya Google ili uweze kuyatumia kwenye kifaa chochote</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Programu hii imesakinishwa na msimamizi wako.</translation>
@@ -3258,7 +3253,6 @@
 <translation id="5659593005791499971">Barua pepe</translation>
 <translation id="5659833766619490117">Imeshindwa kutafsiri ukurasa huu</translation>
 <translation id="5660204307954428567">Oanisha na <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Daima</translation>
 <translation id="5667546120811588575">Inaweka mipangilio ya Google Play...</translation>
 <translation id="5669267381087807207">Inaamilisha</translation>
 <translation id="5669691691057771421">Weka PIN mpya</translation>
@@ -3361,7 +3355,6 @@
 <translation id="5815645614496570556">Anwani X.400</translation>
 <translation id="5816434091619127343">Mabadiliko ya printa yaliyoombwa yatafanya printa isitumike.</translation>
 <translation id="5817918615728894473">Oanisha</translation>
-<translation id="5819762621475381970">- muundo wa chumba chako</translation>
 <translation id="5821565227679781414">Unda Njia Mkato</translation>
 <translation id="5825412242012995131">Imewashwa (Inapendekezwa)</translation>
 <translation id="5826395379250998812">Unganisha <ph name="DEVICE_TYPE" /> yako na simu yako. <ph name="LINK_BEGIN" />Pata maelezo zaidi<ph name="LINK_END" /></translation>
@@ -3999,7 +3992,6 @@
 <translation id="674632704103926902">Washa uburutaji wa kugonga</translation>
 <translation id="6748217015615267851">Mtekelezaji: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Unaweza kuendelea, lakini data na mipangilio yako iliyosawazishwa pekee ndiyo itakayorejeshwa. Data yote ya karibu itapotea.</translation>
-<translation id="6748775883310276718">Skrini Nzima ya Programu Moja</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Hali fiche)</translation>
 <translation id="6757101664402245801">URL imenakiliwa</translation>
 <translation id="6758056191028427665">Tueleze jinsi huduma inavyokuridhisha.</translation>
@@ -4979,7 +4971,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Hakuna vidakuzi vya mtu au kampuni nyingine}=1{Imezuia kidakuzi kimoja cha mtu au kampuni nyingine}other{Imezuia vidakuzi # vya mtu na kampuni nyingine}}</translation>
 <translation id="810875025413331850">Haikupata vifaa vyovyote vilivyo karibu.</translation>
 <translation id="8111155949205007504">Shiriki nenosiri hili ukitumia iPhone yako</translation>
-<translation id="8113043281354018522">Chagua aina ya leseni</translation>
 <translation id="8114875720387900039">Gawanya kimlalo</translation>
 <translation id="8116972784401310538">Kidhi&amp;biti alamisho</translation>
 <translation id="8117620576188476503">Dhibiti miunganisho, masasisho na mipangilio ukitumia treya ya hali. Ili kufikia kwa kutumia kibodi, bonyeza Alt + Shift + S.</translation>
@@ -5698,7 +5689,6 @@
 <translation id="9121814364785106365">Fungua kama kichupo kilichobanwa</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> imesimamishwa</translation>
 <translation id="9124003689441359348">Manenosiri yaliyohifadhiwa yataonekana hapa</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (Zimesalia leseni <ph name="LICENSE_COUNT" />)</translation>
 <translation id="9128317794749765148">Imeshindwa kukamilisha shughuli ya kusakinisha</translation>
 <translation id="9128870381267983090">Unganisha kwenye mtandao</translation>
 <translation id="9130015405878219958">Modi batili imeingizwa.</translation>
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb
index aa86f2a..eba89ea 100644
--- a/chrome/app/resources/generated_resources_ta.xtb
+++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">தனிப்பயன்</translation>
 <translation id="1178581264944972037">இடைநிறுத்து</translation>
 <translation id="117916940443676133">'பின்' மூலம் உங்கள் பாதுகாப்பு விசை பாதுகாக்கப்படவில்லை. உள்நுழைவுத் தரவை நிர்வகிக்க முதலில் 'பின்னை' அமைக்கவும்.</translation>
-<translation id="118069123878619799">- உங்களின் உயரம் போன்ற உடல் அமைப்பு விவரங்கள்</translation>
 <translation id="1181037720776840403">அகற்று</translation>
 <translation id="1183237619868651138">அக தற்காலிகச் சேமிப்பில் <ph name="EXTERNAL_CRX_FILE" />ஐ நிறுவ முடியாது.</translation>
 <translation id="1185924365081634987">இந்த நெட்வொர்க் பிழையைச் சரிசெய்ய, <ph name="GUEST_SIGNIN_LINK_START" />விருந்தினராக உலாவவும்<ph name="GUEST_SIGNIN_LINK_END" /> முயற்சி செய்யலாம்.</translation>
@@ -1893,7 +1892,6 @@
 <translation id="3678156199662914018">நீட்டிப்பு: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">உங்கள் கருத்திற்கு நன்றி. இப்போது ஆஃப்லைனில் உள்ளீர்கள், உங்கள் அறிக்கை பின்னர் அனுப்பப்படும்.</translation>
 <translation id="3682824389861648626">நகர்வு வரம்பு</translation>
-<translation id="3683023058278427253">உங்கள் டொமைனுக்கு, பல உரிம வகைகளைக் கண்டறிந்துள்ளோம். தொடர, ஏதேனும் ஒன்றைத் தேர்வு செய்யவும்.</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> திரை பகிர்தல் கோரிக்கை</translation>
 <translation id="368789413795732264"><ph name="ERROR_TEXT" /> என்ற கோப்பை எழுத முயற்சிக்கும்போது ஒரு பிழை ஏற்பட்டது.</translation>
 <translation id="3688507211863392146">பயன்பாட்டில் நீங்கள் திறக்கும் கோப்புகள் மற்றும் கோப்புறைகளில் எழுதலாம்</translation>
@@ -2157,7 +2155,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" இந்த உலாவியில் பிழைதிருத்தம் செய்கிறது</translation>
 <translation id="4014432863917027322">"<ph name="EXTENSION_NAME" />"ஐப் புதுப்பிக்கவா?</translation>
 <translation id="4015163439792426608">நீட்டிப்புகள் இருக்கிறதா? ஒரே இடத்தில் எளிதாக <ph name="BEGIN_LINK" />உங்கள் நீட்டிப்புகளை நிர்வகியுங்கள்<ph name="END_LINK" />.</translation>
-<translation id="4020106588733303597">அச்சச்சோ!  கிடைக்கும் உரிமங்களை ஏற்ற முடியவில்லை.</translation>
 <translation id="4020327272915390518">விருப்பங்கள் மெனு</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">அகராதியில் &amp;சேர்</translation>
@@ -2660,7 +2657,6 @@
 <translation id="4823484602432206655">பயணர் மற்றும் சாதன அமைப்புகளைப் படிக்கும் மற்றும் மாற்றும்</translation>
 <translation id="4824958205181053313">ஒத்திசைவை ரத்துசெய்யவா?</translation>
 <translation id="4827675678516992122">இணைக்க முடியவில்லை</translation>
-<translation id="4828937774870308359">ஆஸ்திரேலியன்</translation>
 <translation id="4829768588131278040">பின்னை அமை</translation>
 <translation id="4830502475412647084">OS புதுப்பிப்பை நிறுவுகிறது</translation>
 <translation id="4830573902900904548">உங்கள் <ph name="DEVICE_TYPE" /> ஆல் <ph name="NETWORK_NAME" /> மூலம் இணையத்துடன் இணைய முடியவில்லை. வேறு நெட்வொர்க்கைத் தேர்வுசெய்யவும். <ph name="LEARN_MORE_LINK_START" />மேலும் அறிக<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2759,7 +2755,6 @@
 <translation id="4953689047182316270">அணுகல்தன்மை நிகழ்வுகளுக்குப் பதிலளித்தல்</translation>
 <translation id="4953808748584563296">இயல்பு ஆரஞ்சுநிற அவதார்</translation>
 <translation id="4955710816792587366">பின்னைத் தேர்ந்தெடுக்கவும்</translation>
-<translation id="4955814292505481804">வருடாந்திரம்</translation>
 <translation id="4959262764292427323">கடவுச்சொற்களை வேறு சாதனங்களிலும் பயன்படுத்துவதற்காக, அவை உங்கள் Google கணக்கில் சேமிக்கப்பட்டுள்ளன</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">உங்கள் நிர்வாகி இந்த ஆப்ஸை நிறுவியுள்ளார்.</translation>
@@ -3242,7 +3237,6 @@
 <translation id="5659593005791499971">மின்னஞ்சல்</translation>
 <translation id="5659833766619490117">இந்தப் பக்கத்தை மொழிபெயர்க்க முடியவில்லை</translation>
 <translation id="5660204307954428567"><ph name="DEVICE_NAME" /> உடன் இணைத்தல்</translation>
-<translation id="5662477687021125631">காலாவதியாகாத உரிமம்</translation>
 <translation id="5667546120811588575">Google Playஐ அமைக்கிறது...</translation>
 <translation id="5669267381087807207">செயலாக்குகிறது</translation>
 <translation id="5669691691057771421">புதிய பின்னை உள்ளிடவும்</translation>
@@ -3344,7 +3338,6 @@
 <translation id="5815645614496570556">X.400 முகவரி</translation>
 <translation id="5816434091619127343">கோரிய பிரிண்டர் மாற்றங்கள், அதைப் பயன்படுத்த முடியாததாக மாற்றும்.</translation>
 <translation id="5817918615728894473">இணை</translation>
-<translation id="5819762621475381970">- உங்கள் அறையின் தளவமைப்பு</translation>
 <translation id="5821565227679781414">ஷார்ட்கட்டை உருவாக்கு</translation>
 <translation id="5825412242012995131">ஆன் (பரிந்துரைக்கப்படுவது)</translation>
 <translation id="5826395379250998812">உங்கள் <ph name="DEVICE_TYPE" /> சாதனத்தை மொபைலுடன் இணைக்கவும் <ph name="LINK_BEGIN" />மேலும் அறிக<ph name="LINK_END" /></translation>
@@ -3977,7 +3970,6 @@
 <translation id="674632704103926902">தட்டி இழுப்பதை இயக்கு</translation>
 <translation id="6748217015615267851">ரெண்டரர்: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">தொடர்ந்தாலும், ஒத்திசைக்கப்பட்ட தரவும் அமைப்புகளும் மட்டுமே மீட்டெடுக்கப்படும். சிஸ்டத்தின் அகத் தரவு முழுவதையும் இழப்பீர்கள்.</translation>
-<translation id="6748775883310276718">ஒற்றைப் ஆப்ஸ் கியோஸ்க்</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (மறைநிலை)</translation>
 <translation id="6757101664402245801">URL நகலெடுக்கப்பட்டது</translation>
 <translation id="6758056191028427665">எவ்வாறு செயல்படுகிறோம் என்பதை எங்களுக்குத் தெரிவிக்கவும்.</translation>
@@ -4950,7 +4942,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{மூன்றாம் தரப்பின் குக்கீகள் எதுவும் இல்லை}=1{1 மூன்றாம் தரப்பின் குக்கீ தடுக்கப்பட்டுள்ளது}other{# மூன்றாம் தரப்பின் குக்கீகள் தடுக்கப்பட்டுள்ளன}}</translation>
 <translation id="810875025413331850">அருகில் சாதனங்கள் இல்லை.</translation>
 <translation id="8111155949205007504">இந்தக் கடவுச்சொல்லை உங்கள் iPhone உடன் பகிருங்கள்</translation>
-<translation id="8113043281354018522">உரிம வகையைத் தேர்வு செய்யவும்</translation>
 <translation id="8114875720387900039">கிடைமட்டமாகப் பிரி</translation>
 <translation id="8116972784401310538">&amp;புக்மார்க் நிர்வாகி</translation>
 <translation id="8117620576188476503">இணைப்புகள், அறிவிப்புகள், அமைப்புகள் ஆகியவற்றை நிலைத் தட்டில் நிர்வகிக்கலாம். விசைப்பலகை மூலம் இங்கே வர, Alt, Shift, S ஆகிய விசைகளை ஒன்றாக அழுத்தவும்.</translation>
@@ -5666,7 +5657,6 @@
 <translation id="9121814364785106365">பொருத்திய தாவலாகத் திற</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> இடைநிறுத்தப்பட்டது</translation>
 <translation id="9124003689441359348">சேமித்த கடவுச்சொற்கள் இங்கே தோன்றும்</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> ரெம்)</translation>
 <translation id="9128317794749765148">அமைவை நிறைவுசெய்ய இயலவில்லை</translation>
 <translation id="9128870381267983090">நெட்வொர்க்குடன் இணையவும்</translation>
 <translation id="9130015405878219958">செல்லாத பயன்முறை உள்ளிடப்பட்டது. </translation>
diff --git a/chrome/app/resources/generated_resources_te.xtb b/chrome/app/resources/generated_resources_te.xtb
index 0a4c1d4..c8e1f3f 100644
--- a/chrome/app/resources/generated_resources_te.xtb
+++ b/chrome/app/resources/generated_resources_te.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">అనుకూల</translation>
 <translation id="1178581264944972037">పాజ్ చేయి</translation>
 <translation id="117916940443676133">మీ 'సెక్యూరిటీ కీ'కి పిన్ రక్షణ లేదు. సైన్-ఇన్ డేటాను నిర్వహించడానికి, ముందు పిన్‌ను సృష్టించండి.</translation>
-<translation id="118069123878619799">- మీ ఎత్తు వంటి భౌతిక లక్షణాలు</translation>
 <translation id="1181037720776840403">తీసివేయి</translation>
 <translation id="1183237619868651138">స్థానిక కాష్‌లో <ph name="EXTERNAL_CRX_FILE" />ను ఇన్‌స్టాల్ చేయడం సాధ్యపడదు.</translation>
 <translation id="1185924365081634987">మీరు ఈ నెట్‌వర్క్ ఎర్ర‌ర్‌ను పరిష్కరించడానికి <ph name="GUEST_SIGNIN_LINK_START" />అతిథిగా బ్రౌజ్ చేయడాన్ని<ph name="GUEST_SIGNIN_LINK_END" /> కూడా ప్రయత్నించవచ్చు.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381"><ph name="LOAD_STATE_PARAMETER" /> కోసం వేచి ఉంది...</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> అందుబాటులో ఉన్న ఇతర పరికరాలు.</translation>
 <translation id="1495677929897281669">తిరిగి ట్యాబ్‌కు వెళ్లు</translation>
+<translation id="1499271269825557605">మీరు ఎక్స్‌టెన్షన్‌ని గుర్తించకపోతే, లేదా మీ బ్రౌజర్ ఊహించిన విధంగా పని చేయకపోతే, మీరు ఇక్కడ ఆపివేయవచ్చు లేదా ఎక్స్‌టెన్షన్‌లను అనుకూలీకరించవచ్చు.</translation>
 <translation id="1500297251995790841">తెలియని పరికరం [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">ఈ యజమాని ఖాతానే బహుళ సైన్-ఇన్ సెషన్‌లో మొదటిగా సైన్-ఇన్ చేయాల్సిన ఖాతా.</translation>
 <translation id="150411034776756821"><ph name="SITE" />ని తీసివేయి</translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">ఈ పేజీ మీ కెమెరాను ప్రాప్యత చేయకుండా బ్లాక్ చేయబడింది.</translation>
 <translation id="1507246803636407672">&amp;వదిలివేయి</translation>
 <translation id="1508491105858779599">పరికరాన్ని అన్‌లాక్ చేయడానికి వేలిముద్ర సెన్సార్‌పై మీ వేలిని ఉంచండి.</translation>
+<translation id="1508575541972276599">ప్రస్తుత వెర్షన్ Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">ఏ <ph name="DEVICE_NAME_AND_VENDOR" />ని అయినా USB ద్వారా యాక్సెస్ చేయడానికి అనుమతి</translation>
 <translation id="150962533380566081">PUK చెల్లదు.</translation>
 <translation id="1510030919967934016">మీ స్థానాన్ని ట్రాక్ చెయ్యకుండా ఈ పేజీ బ్లాక్ చెయ్యబడింది.</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">వర్తించు</translation>
 <translation id="1603914832182249871">(అజ్ఞాతంగా)</translation>
 <translation id="1604432177629086300">ముద్రించడం సాధ్యపడలేదు. ప్రింటర్‌ను పరిశీలించి, మళ్ళీ ప్రయత్నించండి.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: పాస్‌వర్డ్ సింక్ పనిచేయడం లేదు</translation>
 <translation id="1607139524282324606">నమోదును తీసివేయండి</translation>
 <translation id="1608626060424371292">ఈ వినియోగదారును తీసివేయండి</translation>
 <translation id="1608668830839595724">ఎంపిక చేసిన అంశాల కోసం మరిన్ని చర్యలు</translation>
@@ -560,6 +562,7 @@
 <translation id="177336675152937177">హోస్ట్ చేసిన యాప్‌ డేటా</translation>
 <translation id="1776712937009046120">వినియోగదారును జోడించు</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">ఈ పరికరం <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ద్వారా నిర్వహించబడుతోంది. దయచేసి మీ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ఖాతాకు సైన్ ఇన్ చేయడం కొనసాగించడానికి "త‌ర్వాత‌" క్లిక్ చేయండి.</translation>
 <translation id="1779652936965200207">దయచేసి "<ph name="DEVICE_NAME" />"లో ఈ పాస్‌కీని నమోదు చేయండి:</translation>
 <translation id="1780152987505130652">సమూహాన్ని మూసివేయి</translation>
 <translation id="1781291988450150470">ప్రస్తుత పిన్‌</translation>
@@ -747,6 +750,7 @@
 <translation id="2048653237708779538">చర్య అందుబాటులో లేదు</translation>
 <translation id="2050339315714019657">పోర్ట్రెయిట్</translation>
 <translation id="2053312383184521053">నిష్క్రియ స్థితి డేటా</translation>
+<translation id="2055585478631012616">అలాగే మీరు తెరిచిన ట్యాబ్‌లతో సహా, ఆయా సైట్‌ల నుండి పూర్తిగా సైన్ అవుట్ చేయబడతారు</translation>
 <translation id="205560151218727633">Google సహాయకం లోగో</translation>
 <translation id="2058456167109518507">పరికరం కనుగొనబడింది</translation>
 <translation id="2059913712424898428">సమయ మండలి</translation>
@@ -762,6 +766,7 @@
 <translation id="2079545284768500474">చర్య రద్దు</translation>
 <translation id="2080070583977670716">మరిన్ని సెట్టింగ్‌లు</translation>
 <translation id="2087822576218954668">ముద్రణ: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN నెట్‌వర్క్</translation>
 <translation id="2089566709556890888">Google Chromeతో సురక్షితంగా బ్రౌజ్ చేయండి</translation>
 <translation id="2089795179672254991">క్లిప్‌బోర్డ్‌కు కాపీ చేసిన వచనం మరియు చిత్రాలను సైట్ చూడాలన్నప్పుడు అనుమతి అడగాలి (సిఫార్సు చేయడమైనది)</translation>
 <translation id="2090165459409185032">మీ ఖాతా సమాచారాన్ని పునరుద్ధరించడానికి, దీనికి వెళ్లండి: google.com/accounts/recovery</translation>
@@ -985,6 +990,7 @@
 <translation id="2379232090534544565">ఆడియో మరియు వీడియో ఇన్‌పుట్‌ని ఒక సైట్ యాక్సెస్ చేస్తోంది</translation>
 <translation id="2379281330731083556">సిస్టమ్ డైలాగ్‌ ఉపయోగించి ముద్రించు ...<ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">పంపడానికి ముందు అడుగుతుంది (సిఫార్సు చేయబడింది)</translation>
+<translation id="2382818385048255866">మీ ఎక్స్‌టెన్షన్‌లను తనిఖీ చేయండి</translation>
 <translation id="2384436799579181135">ఎర్రర్ ఏర్పడింది. దయచేసి మీ ప్రింటర్‌ను తనిఖీ చేసి మళ్లీ ప్రయత్నించండి.</translation>
 <translation id="2387458720915042159">ప్రాక్సీ కనెక్షన్ రకం</translation>
 <translation id="2391419135980381625">ప్రామాణిక ఫాంట్</translation>
@@ -1036,6 +1042,7 @@
 <translation id="2462724976360937186">సర్టిఫికెట్ అధికార కీ ID</translation>
 <translation id="2462752602710430187"><ph name="PRINTER_NAME" /> జోడించబడింది</translation>
 <translation id="2464089476039395325">HTTP ప్రాక్సీ</translation>
+<translation id="2467267713099745100"><ph name="NETWORK_TYPE" /> నెట్‌వర్క్, ఆఫ్‌లో ఉంది</translation>
 <translation id="2468205691404969808">మీ ప్రాధాన్యతలను గుర్తుంచుకోవడానికి కుక్కీలను ఉపయోగిస్తుంది, మీరు ఆ పేజీలను సందర్శించకపోయినా కూడా అది అమలవుతుంది</translation>
 <translation id="2468402215065996499">టమగోచి</translation>
 <translation id="2469259292033957819">మీ వద్ద సేవ్ చేసిన ప్రింటర్‌లు ఏవీ లేవు.</translation>
@@ -1290,6 +1297,7 @@
 <translation id="2800760947029405028">చిత్రాన్ని అప్‌లోడ్ చేయండి</translation>
 <translation id="2803375539583399270">PINను నమోదు చేయండి</translation>
 <translation id="2804043232879091219">ప్రత్యామ్నాయ బ్రౌజర్‌ను తెరవడం సాధ్యపడలేదు</translation>
+<translation id="2804667941345577550">అలాగే మీరు తెరిచిన ట్యాబ్‌లతో సహా, ఈ సైట్‌ నుండి పూర్తిగా సైన్ అవుట్ చేయబడతారు.</translation>
 <translation id="2804680522274557040">కెమెరా ఆఫ్ చేయబడింది</translation>
 <translation id="2805646850212350655">Microsoft Encrypting File System</translation>
 <translation id="2805756323405976993">యాప్స్</translation>
@@ -1297,6 +1305,7 @@
 <translation id="2806891468525657116">షార్ట్‌కట్ ఇప్పటికే ఉంది</translation>
 <translation id="2807517655263062534">మీరు డౌన్‌లోడ్ చేసిన ఫైల్‌లు ఇక్కడ కనిపిస్తాయి</translation>
 <translation id="2809586584051668049">ఇంకా మరో <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2810390687497823527">మీరు ఎక్స్‌టెన్షన్‌ని గుర్తించకపోతే, లేదా మీ బ్రౌజర్ ఊహించిన విధంగా పని చేయకపోతే, మీరు ఇక్కడ ఆపివేయవచ్చు లేదా ఎక్స్‌టెన్షన్‌లను అనుకూలీకరించవచ్చు.</translation>
 <translation id="2812049959647166806">Thunderboltలో మద్దతు లేదు</translation>
 <translation id="2812944337881233323">సైన్ అవుట్ చేసి, తిరిగి సైన్ ఇన్ చేయడం ప్రయత్నించండి</translation>
 <translation id="2812989263793994277">ఏ చిత్రాలనూ చూపించవద్దు</translation>
@@ -1336,6 +1345,7 @@
 <translation id="2861941300086904918">స్థానిక‌ క్లయింట్ భద్రతా మేనేజ‌ర్‌</translation>
 <translation id="2864601841139725659">మీ ప్రొఫైల్ చిత్రాన్ని సెట్ చేయండి</translation>
 <translation id="2865919525181940183">ప్రస్తుతం స్క్రీన్‌పై ఉన్న ప్రోగ్రామ్‌ల స్క్రీన్‌షాట్</translation>
+<translation id="286674810810214575">పవర్ మూలాలను తనిఖీ చేస్తోంది...</translation>
 <translation id="2867768963760577682">పిన్ చేసిన ట్యాబ్ లాగా తెరువు</translation>
 <translation id="2868746137289129307">ఈ ఎక్స్‌టెన్షన్ చాలా పాతది, వ్యాపార విధానం కారణంగా నిలిపివేయబడింది. అయితే, కొత్త వెర్షన్ అందుబాటులో ఉన్నప్పుడు ఇది ఆటోమేటిక్‌గా ప్రారంభించబడవచ్చు.</translation>
 <translation id="2870560284913253234">సైట్</translation>
@@ -1413,6 +1423,7 @@
 <translation id="2972581237482394796">&amp;పునరావృతం</translation>
 <translation id="2973324205039581528">సైట్‌ను మ్యూట్ చేయండి</translation>
 <translation id="2977480621796371840">గుంపు నుండి తీసివేయి</translation>
+<translation id="2979520980928493164">ఏ సమస్యా లేని చక్కని Chrome</translation>
 <translation id="2979639724566107830">కొత్త విండోలో తెరువు</translation>
 <translation id="2981113813906970160">పెద్ద మౌస్ కర్సర్‌ను చూపు</translation>
 <translation id="2982970937345031">అనామకంగా నివేదించు</translation>
@@ -1519,6 +1530,7 @@
 <translation id="3143515551205905069">సింక్‌ను రద్దు చేయి</translation>
 <translation id="3143754809889689516">ప్రారంభం నుండి ప్లే చేయి</translation>
 <translation id="3144647712221361880">లింక్‌ను దీని తరపున తెరువు</translation>
+<translation id="3145187901750964977">వర్చువల్ మెషిన్‌ని ఇన్‌స్టాల్ చేయడం సాధ్యపడలేదు. దయచేసి మళ్లీ ప్రయత్నించండి, లేదా మీ సంస్థ పరికర నిర్వాహకుడిని సంప్రదించండి. ఎర్రర్ కోడ్: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">వెర్షన్:
     <ph name="LINUX_VERSION" />
 
@@ -1557,6 +1569,7 @@
 <translation id="3192947282887913208">ఆడియో  ఫైళ్ళు</translation>
 <translation id="3194737229810486521"><ph name="URL" /> శాశ్వతంగా డేటాను మీ పరికరంలో నిల్వ చేయాలనుకుంటోంది</translation>
 <translation id="3199127022143353223">సర్వర్‌లు</translation>
+<translation id="3201306578844503970">నెట్‌వర్క్ ఎర్రర్ కారణంగా వర్చువల్ మెషిన్‌ని ఇన్‌స్టాల్ చేయడం సాధ్యం కాలేదు. దయచేసి మళ్లీ ప్రయత్నించండి, లేదా మీ సంస్థ పరికర నిర్వాహకుడిని సంప్రదించండి. ఎర్రర్ కోడ్: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">అందుబాటులో గల USB పరికరాలు ఇక్కడ కనిపిస్తాయి.</translation>
 <translation id="3202131003361292969">పాథ్‌</translation>
 <translation id="3202173864863109533">ఈ ట్యాబ్ ఆడియో మ్యూట్ చేయబడుతోంది.</translation>
@@ -1893,7 +1906,6 @@
 <translation id="3678156199662914018">పొడిగింపు: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">మీ అభిప్రాయం తెలియజేసినందుకు ధన్యవాదాలు. మీరు ప్రస్తుతం ఆఫ్‌లైన్‌లో ఉన్నారు, మీ నివేదిక తర్వాత పంపబడుతుంది.</translation>
 <translation id="3682824389861648626">కదలిక థ్రెషోల్డ్</translation>
-<translation id="3683023058278427253">మేము మీ డొమైన్ కోసం బహుళ లైసెన్స్ రకాలను కనుగొన్నాము. దయచేసి కొనసాగడానికి ఒకదాన్ని ఎంచుకోండి.</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> స్క్రీన్ షేరింగ్ అభ్యర్థన</translation>
 <translation id="368789413795732264">ఫైల్‌ను వ్రాయడానికి ప్రయత్నించడంలో ఎర్రర్ జరిగింది: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">మీరు అప్లికేషన్‌లో తెరిచే ఫైల్‌లు మరియు ఫోల్డర్‌లలో వ్రాయండి</translation>
@@ -2067,6 +2079,7 @@
 <translation id="389589731200570180">అతిథులతో భాగస్వామ్యం చేయండి</translation>
 <translation id="389901847090970821">కీబోర్డ్‌ను ఎంచుకోండి</translation>
 <translation id="3899879303189199559">సంవత్సరానికి పైగా ఆఫ్‌లైన్‌లో ఉంది</translation>
+<translation id="3900789207771372462">కొన్ని ఎక్స్‌టెన్షన్‌లు మీ బ్రౌజింగ్ కార్యకలాపాన్ని చూడగలవు - వ్యక్తిగత సమాచారంతో సహా.</translation>
 <translation id="3900966090527141178">పాస్‌వర్డ్‌లను ఎగుమతి చేయండి</translation>
 <translation id="3901991538546252627"><ph name="NAME" />కి కనెక్ట్ చేస్తోంది</translation>
 <translation id="3905761538810670789">యాప్‌ను సరి చేయి</translation>
@@ -2157,7 +2170,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" ఈ బ్రౌజర్‌ను డీబగ్ చేస్తోంది</translation>
 <translation id="4014432863917027322">"<ph name="EXTENSION_NAME" />"ని సరి చేయాలా?</translation>
 <translation id="4015163439792426608">ఎక్స్‌టెన్షన్‌లను ఇన్‌స్టాల్ చేశారా? ఒక సులభమైన స్థలంలో <ph name="BEGIN_LINK" />మీ ఎక్స్‌టెన్షన్‌లను నిర్వహించండి<ph name="END_LINK" />.</translation>
-<translation id="4020106588733303597">అయ్యో! అందుబాటులో ఉన్న లైసెన్స్‌లను లోడ్ చేయడంలో సిస్టమ్ విఫలమైంది.</translation>
 <translation id="4020327272915390518">ఎంపికల మెను</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">నిఘంటువుకు &amp;జోడించు</translation>
@@ -2195,6 +2207,7 @@
 <translation id="407520071244661467">ప్రమాణం</translation>
 <translation id="4075639477629295004"><ph name="FILE_NAME" />ని ప్రసారం చేయడం సాధ్యపడలేదు.</translation>
 <translation id="4077917118009885966">ఈ సైట్‌లో ప్రకటనలు బ్లాక్ చేయబడ్డాయి</translation>
+<translation id="4077919383365622693"><ph name="SITE" /> ద్వారా నిల్వ చేయబడిన డేటా మరియు కుక్కీలన్నీ తొలగించబడతాయి.</translation>
 <translation id="4079140982534148664">మెరుగైన స్పెల్ చెక్‌ను ఉపయోగించు</translation>
 <translation id="4081242589061676262">ఫైల్‌ని ప్రసారం చేయడం సాధ్యపడలేదు.</translation>
 <translation id="4084682180776658562">బుక్‌మార్క్ చేయి</translation>
@@ -2269,6 +2282,7 @@
 <translation id="4181841719683918333">భాషలు</translation>
 <translation id="4184885522552335684">డిస్‌ప్లేను తరలించడానికి లాగండి</translation>
 <translation id="4194570336751258953">క్లిక్ చేయ‌డానికి టాప్ చేయి ప్రారంభించు</translation>
+<translation id="4194595472342532425">కాన్ఫిగరేషన్ సమస్య కారణంగా Plugin VMని సెటప్ చేయడం సాధ్యం కాలేదు. దయచేసి మీ సంస్థ యొక్క పరికర నిర్వాహకుడిని సంప్రదించండి. ఎర్రర్ కోడ్: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">కొత్త ట్యాబ్‌లో తెరువు</translation>
 <translation id="4195814663415092787">మీరు నిష్క్రమించిన చోటు నుండే కొనసాగించండి</translation>
 <translation id="4198146608511578238">మీ Google అసిస్టెంట్‌తో మాట్లాడటానికి లాంఛ‌ర్‌ చిహ్నాన్ని నొక్కి, ఉంచండి.</translation>
@@ -2492,6 +2506,7 @@
 <translation id="4549791035683739768">మీ సెక్యూరిటీ కీలో వేలిముద్రలు సేవ్ చేయబడలేదు</translation>
 <translation id="4551763574344810652">చర్యరద్దు చేయడానికి <ph name="MODIFIER_KEY_DESCRIPTION" />ను నొక్కండి</translation>
 <translation id="4552089082226364758">ఫ్లాష్</translation>
+<translation id="4552759165874948005"><ph name="NETWORK_TYPE" /> నెట్‌వర్క్, సిగ్నల్ సామర్థ్యం <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">ప్రస్తుతం ఉన్న వెర్షన్‌తో పోలిస్తే, బాహ్య ఎక్స్‌టెన్షన్ అదే వెర్షన్‌కు చెందినది లేదా తక్కువ వెర్షన్‌కు చెందినది.</translation>
 <translation id="4555769855065597957">నీడ</translation>
 <translation id="4555863373929230635">పాస్‌వర్డ్‌లను మీ Google ఖాతాలో సేవ్ చేయడానికి, సైన్ ఇన్ చేసి, సింక్ ఆన్ చేయండి.</translation>
@@ -2569,6 +2584,7 @@
 <translation id="4665446389743427678"><ph name="SITE" /> ద్వారా నిల్వ చేయబడిన మొత్తం డేటా తొలగించబడుతుంది.</translation>
 <translation id="4668721319092543482"><ph name="PLUGIN_NAME" />ను ప్రారంభించడానికి క్లిక్ చేయండి</translation>
 <translation id="4672657274720418656">పేజీని డిస్టిల్ చేయి</translation>
+<translation id="46733273239502219">ఇన్‌స్టాల్ చేసిన యాప్‌లలో ఆఫ్‌లైన్ డేటా కూడా తీసివేయబడుతుంది</translation>
 <translation id="4673442866648850031">స్టైలస్‌ను బయటకు తీసినప్పుడు స్టైలస్ సాధనాలను తెరుస్తుంది</translation>
 <translation id="4677585247300749148">యాక్సెసిబిలిటీ ఈవెంట్‌లకు <ph name="URL" /> ప్రతిస్పందించాలని అనుకుంటోంది</translation>
 <translation id="4677772697204437347">GPU మెమరీ</translation>
@@ -2660,7 +2676,6 @@
 <translation id="4823484602432206655">వినియోగదారు మరియు పరికర సెట్టింగ్‌లను చదవడానికి మరియు మార్చడానికి అనుమతి</translation>
 <translation id="4824958205181053313">సింక్‌ను రద్దు చేయాలా?</translation>
 <translation id="4827675678516992122">కనెక్ట్ చేయడం సాధ్యపడలేదు</translation>
-<translation id="4828937774870308359">ఆస్ట్రేలియన్</translation>
 <translation id="4829768588131278040">PINని సెటప్ చేయి</translation>
 <translation id="4830502475412647084">OS అప్‌డేట్‌ ఇన్‌స్టాల్ చేయబడుతుంది</translation>
 <translation id="4830573902900904548"><ph name="NETWORK_NAME" />ను ఉపయోగించి మీ <ph name="DEVICE_TYPE" /> ఇంటర్నెట్‌కి కనెక్ట్ చేయలేకపోయింది. దయచేసి మరో నెట్‌వర్క్‌ను ఎంచుకోండి. <ph name="LEARN_MORE_LINK_START" />మరింత తెలుసుకోండి<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2701,6 +2716,7 @@
 <translation id="4876273079589074638">క్రాష్ ఎందుకు జరిగిందన్నది తెలుసుకోవడానికి, పరిష్కరించడానికి మా ఇంజినీర్‌లకు సహాయం చేయండి. మీకు సాధ్యమైతే విషయాన్ని క్రమ పద్ధతిలో దశల వారీగా పేర్కొనండి. వివరణ ఏదీ మరీ చిన్నగా ఉండకూడదు!</translation>
 <translation id="4876895919560854374">స్క్రీన్‌ను లాక్ చేయండి మరియు అన్‌లాక్ చేయండి</translation>
 <translation id="4877276003880815204">మూలకాలను పర్యవేక్షించు</translation>
+<translation id="4878653975845355462">మీ నిర్వాహకుడి ద్వారా అనుకూల నేపథ్యాలు ఆపివేయబడ్డాయి</translation>
 <translation id="4879491255372875719">ఆటోమేటిక్ (డిఫాల్ట్)</translation>
 <translation id="4880328057631981605">యాక్సెస్ స్థానం పేరు</translation>
 <translation id="4880827082731008257">శోధన చరిత్ర</translation>
@@ -2756,10 +2772,10 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" ఈ సీరియల్ పోర్ట్‌లలో ఒకదానితో కనెక్ట్ (అనుసంధానం) కావాలని కోరుకుంటుంది</translation>
 <translation id="4944310289250773232">ఈ ప్రమాణీకరణ సేవ <ph name="SAML_DOMAIN" /> ద్వారా హోస్ట్ చేయబడుతోంది</translation>
 <translation id="495170559598752135">చర్యలు</translation>
+<translation id="4952981627953231344">Plugin VM ఈ పరికరంలో అనుమతించబడదు. మీ సంస్థ యొక్క పరికర నిర్వాహకుడిని సంప్రదించండి.</translation>
 <translation id="4953689047182316270">యాక్సెస్ సామర్థ్యం ఉన్న ఈవెంట్‌లకు ప్రతిస్పందించండి</translation>
 <translation id="4953808748584563296">డిఫాల్ట్ నారింజ రంగు అవతార్</translation>
 <translation id="4955710816792587366">మీ పిన్ ఎంచుకోండి</translation>
-<translation id="4955814292505481804">వార్షికం</translation>
 <translation id="4959262764292427323">మీ Google ఖాతాలో పాస్‌వర్డ్‌లు సేవ్ చేయబడతాయి కాబట్టి మీరు వాటిని ఏ పరికరంలోనైనా ఉపయోగించవచ్చు</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">మీ నిర్వాహకులు ఈ యాప్‌ను ఇన్‌స్టాల్ చేసారు.</translation>
@@ -3241,7 +3257,6 @@
 <translation id="5659593005791499971">ఇమెయిల్</translation>
 <translation id="5659833766619490117">ఈ పేజీని అనువదించడం సాధ్యపడలేదు</translation>
 <translation id="5660204307954428567"><ph name="DEVICE_NAME" />తో జత చేయండి</translation>
-<translation id="5662477687021125631">శాశ్వతం</translation>
 <translation id="5667546120811588575">Google Play సెటప్ చేస్తోంది...</translation>
 <translation id="5669267381087807207">సక్రియం చేస్తోంది</translation>
 <translation id="5669691691057771421">కొత్త PINని నమోదు చేయండి</translation>
@@ -3257,6 +3272,7 @@
 <translation id="5687326903064479980">సమయ మండలి</translation>
 <translation id="5689516760719285838">స్థానం</translation>
 <translation id="56907980372820799">డేటాను జోడించు</translation>
+<translation id="5691180005790455277"><ph name="SITE_GROUP_NAME" /> ద్వారా లేదా దానిలో ఉండే ఏవైనా సైట్‌ల ద్వారా నిల్వ చేయబడిన డేటా మరియు కుక్కీలన్నీ తొలగించబడతాయి.</translation>
 <translation id="5691511426247308406">కుటుంబం</translation>
 <translation id="5692183275898619210">ముద్రణ పూర్తయింది</translation>
 <translation id="5696143504434933566">"<ph name="EXTENSION_NAME" />" నుండి దుర్వినియోగాన్ని నివేదించు</translation>
@@ -3343,7 +3359,6 @@
 <translation id="5815645614496570556">X.400 చిరునామా</translation>
 <translation id="5816434091619127343">అభ్యర్ధించిన ప్రింటర్ మార్పులు ప్రింటర్‌ను నిరుపయోగంగా చేస్తాయి.</translation>
 <translation id="5817918615728894473">జత చేయి</translation>
-<translation id="5819762621475381970">- మీ గది యొక్క లేఅవుట్</translation>
 <translation id="5821565227679781414">షార్ట్‌కట్‌ను సృష్టించు</translation>
 <translation id="5825412242012995131">ఆన్ (సిఫార్సు చేయడమైనది)</translation>
 <translation id="5826395379250998812">మీ <ph name="DEVICE_TYPE" />ను మీ ఫోన్‌తో కనెక్ట్ చేయండి. <ph name="LINK_BEGIN" />మరింత తెలుసుకోండి<ph name="LINK_END" /></translation>
@@ -3479,6 +3494,7 @@
 <translation id="6007240208646052708">మీ భాషలో వాయిస్ శోధన అందుబాటులో లేదు.</translation>
 <translation id="6009781704028455063">అంతర్నిర్మిత సెన్సార్</translation>
 <translation id="6010869025736512584">వీడియో ఇన్‌పుట్ యాక్సెస్‌ చేయబడుతోంది</translation>
+<translation id="6011074160056912900">ఈథర్‌నెట్ నెట్‌వర్క్‌</translation>
 <translation id="6011193465932186973">వేలిముద్ర</translation>
 <translation id="6011449291337289699">సైట్ డేటాను తీసివేయండి</translation>
 <translation id="6015266928248016057">PUK చెల్లదు. మిగిలి ఉన్న పునఃప్రయత్నాల సంఖ్య: <ph name="RETRIES" />.</translation>
@@ -3515,6 +3531,7 @@
 <translation id="6053401458108962351">&amp;బ్రౌజింగ్‌ డేటాను క్లియర్ చేయి...</translation>
 <translation id="6055171183283175969">మీరు నమోదు చేసిన పాస్‌వర్డ్ తప్పు.</translation>
 <translation id="6055392876709372977">RSA ఎన్‌క్రిప్షన్‌తో PKCS #1 SHA-256</translation>
+<translation id="6055907707645252013"><ph name="NETWORK_TYPE" /> నెట్‌వర్క్, కనెక్ట్ కాలేదు</translation>
 <translation id="6056710589053485679">సాధారణంగా మళ్లీ లోడ్ చేయి</translation>
 <translation id="6057381398996433816">మోషన్ మరియు లైట్ సెన్సార్‌లను ఉపయోగించనీయకుండా ఈ సైట్ బ్లాక్ చేయబడింది.</translation>
 <translation id="6058567592298841668">ప్లగ్ఇన్ వర్చువల్ మెషిన్: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3578,6 +3595,7 @@
 <translation id="6136114942382973861">డౌన్‌లోడ్‌ల బార్‌ను మూసివేయండి</translation>
 <translation id="6137767437444130246">వినియోగదారు సర్టిఫికెట్</translation>
 <translation id="6138680304137685902">SHA-384తో X9.62 ECDSA సంతకం</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, నెట్‌వర్క్ లేదు</translation>
 <translation id="6141988275892716286">డౌన్‌లోడ్‌ను నిర్ధారించండి</translation>
 <translation id="6143186082490678276">సహాయం పొందండి</translation>
 <translation id="6144938890088808325">Chromebookలను మెరుగుపరచడంలో మాకు సహాయపడండి</translation>
@@ -3884,6 +3902,7 @@
 <translation id="6602956230557165253">నావిగేట్ చేయడానికి ఎడమ మరియు కుడి బాణం కీలను ఉపయోగించండి.</translation>
 <translation id="6605847144724004692">ఇంకా ఏ వినియోగదారులు రేట్ చేయలేదు.</translation>
 <translation id="6607831829715835317">మరిన్ని సాధనా&amp;లు</translation>
+<translation id="6611972847767394631">మీ ట్యాబ్‌లను ఇక్కడ కనుగొనండి</translation>
 <translation id="6612358246767739896">రక్షిత కంటెంట్</translation>
 <translation id="6615455863669487791">నాకు చూపించు</translation>
 <translation id="6618097958368085618">ఏదేమైనా ఉంచు</translation>
@@ -3952,6 +3971,7 @@
 <translation id="6709133671862442373">వార్తలు</translation>
 <translation id="6709357832553498500"><ph name="EXTENSIONNAME" />ని ఉపయోగించి కనెక్ట్ చేయి</translation>
 <translation id="6710213216561001401">మునుపటి</translation>
+<translation id="6715803357256707211">మీ Linux అప్లికేషన్ ఇన్‌స్టాలేషన్ సమయంలో ఎర్రర్ ఏర్పడింది. వివరాల కోసం నోటిఫికేషన్‌పై క్లిక్ చేయండి.</translation>
 <translation id="6721678857435001674">మీ భద్రతా కీ యొక్క తయారీదారు బ్రాండ్ పేరు మరియు మోడల్‌ని చూడండి</translation>
 <translation id="6721972322305477112">&amp;ఫైల్</translation>
 <translation id="672213144943476270">అతిథి లాగా బ్రౌజ్ చేయబోయే ముందు దయచేసి మీ ప్రొఫైల్‌ను అన్‌లాక్ చేయండి.</translation>
@@ -3976,7 +3996,6 @@
 <translation id="674632704103926902">నొక్కి లాగడాన్ని ప్రారంభించు</translation>
 <translation id="6748217015615267851">రెండరర్: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">మీరు కొనసాగించవచ్చు, కానీ మీ సమకాలీకరించిన డేటా మరియు సెట్టింగ్‌లు మాత్రమే పునరుద్ధరించబడతాయి. మొత్తం స్థానిక డేటాని కోల్పోవడం జరుగుతుంది.</translation>
-<translation id="6748775883310276718">ఒకే యాప్ కియోస్క్</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (అజ్ఞాతంగా)</translation>
 <translation id="6757101664402245801">URL కాపీ చేయబడింది</translation>
 <translation id="6758056191028427665">మేము అందించే సేవలు ఎలా ఉన్నాయో మాకు తెలియజేయండి.</translation>
@@ -3986,6 +4005,7 @@
 <translation id="6769712124046837540">ప్రింటర్‌ని జోడిస్తోంది...</translation>
 <translation id="6770664076092644100">NFC ద్వారా ధృవీకరించు</translation>
 <translation id="6771503742377376720">ప్రమాణపత్ర అధికారం</translation>
+<translation id="6772339735733515807">మీ ఎక్స్‌టెన్షన్‌లను నిర్వహించండి</translation>
 <translation id="6775163072363532304">అందుబాటులో ఉన్న పరికరాలు ఇక్కడ కనిపిస్తాయి.</translation>
 <translation id="6777817260680419853">మళ్ళింపు బ్లాక్ చేయబడింది</translation>
 <translation id="6778737459546443941">మీ తల్లి/తండ్రి దీన్ని ఇంకా ఆమోదించలేదు</translation>
@@ -4124,6 +4144,7 @@
 <translation id="6972180789171089114">ఆడియో/వీడియో</translation>
 <translation id="6972553992270299730">సిస్టమ్ ఫైల్‌లు ఉన్నాయి కాబట్టి ఈ ఫోల్డర్‌లోని ఫైల్‌లను <ph name="ORIGIN" /> తెరవలేదు</translation>
 <translation id="6972754398087986839">ప్రారంభించండి</translation>
+<translation id="6973611239564315524">Debian 10 (Buster)కి అప్‌గ్రేడ్ అందుబాటులో ఉంది</translation>
 <translation id="6974609594866392343">ఆఫ్‌లైన్ డెమో మోడ్</translation>
 <translation id="6977381486153291903">ఫర్మ్‌వేర్ పునర్విమర్శ</translation>
 <translation id="6978121630131642226">శోధన ఇంజిన్‌లు</translation>
@@ -4583,6 +4604,7 @@
 <translation id="7644543211198159466">రంగు మరియు థీమ్‌</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (యజమాని)</translation>
 <translation id="7645681574855902035">Linux బ్యాకప్‍ను రద్దు చేస్తోంది</translation>
+<translation id="7646772052135772216">పాస్‌వర్డ్‌ సింక్ పనిచేయడం లేదు</translation>
 <translation id="7647403192093989392">ఇటీవలి కార్యకలాపాలు లేవు</translation>
 <translation id="7648992873808071793">ఈ పరికరంలో ఫైల్‌లను నిల్వ చేయాలనుకుంటోంది</translation>
 <translation id="7649070708921625228">సహాయం</translation>
@@ -4770,6 +4792,7 @@
 <translation id="7877451762676714207">తెలియని సర్వర్ లోపం. దయచేసి మళ్లీ ప్రయత్నించండి లేదా సర్వర్ నిర్వాహకుడిని సంప్రదించండి.</translation>
 <translation id="7877680364634660272">పర్యటన</translation>
 <translation id="7878562273885520351">మీ పాస్‌వర్డ్ ఎవరికైనా తెలిసిపోయి ఉండవచ్చు</translation>
+<translation id="7879631849810108578">షార్ట్‌కట్ సెట్ చేయబడింది: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">మీరు పునఃప్రారంభించినప్పుడు స్థానిక డేటా తొలగించబడుతుంది</translation>
 <translation id="7881483672146086348">ఖాతాను వీక్షించండి</translation>
 <translation id="7882358943899516840">ప్రదాత రకం</translation>
@@ -4856,6 +4879,7 @@
 <translation id="7987814697832569482">ఎల్లప్పుడూ ఈ VPN ద్వారా కనెక్ట్ చేయి</translation>
 <translation id="7988355189918024273">సులభంగా యాక్సెస్‌ చేసే ఫీచ‌ర్‌లను ప్రారంభించు</translation>
 <translation id="7991296728590311172">స్విచ్ యాక్సెస్ సెట్టింగ్‌లు</translation>
+<translation id="7994350303002908848">Plugin VMని ఇన్‌స్టాల్ చేయడం సాధ్యపడలేదు. దయచేసి మళ్లీ ప్రయత్నించండి, లేదా మీ సంస్థ పరికర నిర్వాహకుడిని సంప్రదించండి. ఎర్రర్ కోడ్: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">EAP పద్ధతి</translation>
 <translation id="7997826902155442747">ప్రాసెస్ ప్రాధాన్యత</translation>
 <translation id="7999229196265990314">ఈ క్రింది ఫైళ్ళను సృష్టించింది:
@@ -4945,7 +4969,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{మూడవ పక్షం కుక్కీలు లేవు}=1{మూడవ పక్షానికి సంబంధించిన 1 కుక్కీ బ్లాక్ చేయబడింది}other{మూడవ పక్షానికి సంబంధించిన # కుక్కీలు బ్లాక్ చేయబడ్డాయి}}</translation>
 <translation id="810875025413331850">సమీప పరికరాలు ఏవీ కనుగొనబడలేదు.</translation>
 <translation id="8111155949205007504">మీ iPhoneతో ఈ పాస్‌వర్డ్‌ను భాగస్వామ్యం చేయండి</translation>
-<translation id="8113043281354018522">లైసెన్స్ రకాన్ని ఎంచుకోండి</translation>
 <translation id="8114875720387900039">అడ్డంగా విభజించు</translation>
 <translation id="8116972784401310538">&amp;బుక్‌మార్క్ నిర్వాహకుడు</translation>
 <translation id="8117620576188476503">స్థితి ట్రేతో కనెక్షన్‌లు, అప్‌డేట్‌లు మరియు సెట్టింగ్‌లను నిర్వహించండి. కీబోర్డ్ ద్వారా ఇక్కడికి రావాలంటే, Alt + Shift + Sని నొక్కండి.</translation>
@@ -5102,6 +5125,7 @@
 <translation id="8327039559959785305">Linux ఫైల్‌లను మౌంట్ చేయడంలో ఎర్రర్ ఏర్పడింది. దయచేసి మళ్లీ ప్రయత్నించండి.</translation>
 <translation id="8335587457941836791">అర నుండి అన్‌పిన్ చేయండి</translation>
 <translation id="8336407002559723354">అప్‌డేట్‌లు <ph name="MONTH_AND_YEAR" />తో ముగుస్తాయి</translation>
+<translation id="8336721153892716270">సిస్టమ్ వచనాన్ని <ph name="LANGUAGE" />లో చూపడానికి పరికరాన్ని రీస్టార్ట్ చేయండి</translation>
 <translation id="8336739000755212683">పరికరం ఖాతా చిత్రాన్ని మార్చండి</translation>
 <translation id="8337047789441383384">మీరు ఈ సెక్యూరిటీ కీని ఇప్పటికే నమోదు చేసుకున్నారు. కాబట్టి, మీరు మళ్లీ నమోదు చేయాల్సిన అవసరం లేదు.</translation>
 <translation id="8338952601723052325">డెవలపర్ వెబ్‌సైట్</translation>
@@ -5145,6 +5169,7 @@
 <translation id="8400146488506985033">వ్యక్తులను నిర్వహించు</translation>
 <translation id="8401432541486058167">మీ స్మార్ట్ కార్డ్‌కు అనుబంధించబడిన పిన్‌ను అందించండి.</translation>
 <translation id="8405046151008197676">తాజా అప్‌డేట్ నుండి హైలైట్‌లను పొందండి</translation>
+<translation id="8408068190360279472"><ph name="NETWORK_TYPE" /> నెట్‌వర్క్, కనెక్ట్ చేస్తోంది</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">ముందుగా అడుగు (సిఫార్సు చేయబడింది)</translation>
 <translation id="8418445294933751433">&amp;ట్యాబ్ లాగా చూపండి</translation>
@@ -5434,6 +5459,7 @@
 <translation id="8807632654848257479">స్థిరత్వం</translation>
 <translation id="8808478386290700967">వెబ్ స్టోర్</translation>
 <translation id="8808686172382650546">పిల్లి</translation>
+<translation id="8808744862003883508">ఈ పేజీలో మీరు Chromeలో ఇన్‌స్టాల్ చేసిన అన్ని ఎక్స్‌టెన్షన్‌లను చూడవచ్చు.</translation>
 <translation id="8809147117840417135">లేత నీలి ఆకుపచ్చ రంగు</translation>
 <translation id="8813698869395535039"><ph name="USERNAME" />కు సైన్ ఇన్ చేయడం సాధ్యపడదు</translation>
 <translation id="8813811964357448561">పేపర్ షీట్</translation>
@@ -5661,7 +5687,6 @@
 <translation id="9121814364785106365">పిన్ చేసిన టాబ్ లాగా తెరువు</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> పాజ్ చేయబడింది</translation>
 <translation id="9124003689441359348">సేవ్ చేసిన పాస్‌వర్డ్‌లు ఇక్కడ కనిపిస్తాయి</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> ఉన్నాయి)</translation>
 <translation id="9128317794749765148">సెటప్‌ను పూర్తి చేయలేకపోయింది</translation>
 <translation id="9128870381267983090">నెట్‌వర్క్‌కి కనెక్ట్ చేయి</translation>
 <translation id="9130015405878219958">చెల్లని మోడ్ ఎంటర్ చేయ‌బడింది.</translation>
@@ -5700,6 +5725,7 @@
 <translation id="9188732951356337132">వినియోగం &amp; విశ్లేషణల డేటాను పంపండి. ఈ పరికరం ప్రస్తుతం సమస్య విశ్లేషణ, అలాగే పరికర, యాప్ వినియోగ డేటాను ఆటోమేటిక్‌గా Googleకి పంపుతుంది. ఇది మీ చిన్నారి గురించి గుర్తించడానికి ఉపయోగించబడదు, ఇది కేవలం సిస్టమ్, యాప్ స్థిరత్వానికి, అలాగే ఇతర మెరుగుదలలకు సహాయపడుతుంది. కొంత సముదాయ డేటా కూడా Google యాప్‌లకు, అలాగే Android డెవలపర్‌ల లాంటి భాగస్వాములకు సహాయపడుతుంది. మీ చిన్నారి కోసం అదనపు వెబ్ &amp; యాప్ కార్యకలాపం సెట్టింగ్‌ను ఆన్ చేసినట్లయితే, ఈ డేటా వారి Google ఖాతాలో సేవ్ చేయబడవచ్చు. <ph name="BEGIN_LINK2" />మరింత తెలుసుకోండి<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + ముందుగా భాగస్వామ్యం చేసిన కీ</translation>
 <translation id="920045321358709304"><ph name="SEARCH_ENGINE" />ని వెతుకు</translation>
+<translation id="9201023452444595544">ఏదైనా ఆఫ్‌లైన్ డేటా ఉంటే తీసివేయబడుతుంది</translation>
 <translation id="9201220332032049474">స్క్రీన్ లాక్ ఎంపికలు</translation>
 <translation id="9203398526606335860">&amp;ప్రొఫైలింగ్ అనుమతించబడింది</translation>
 <translation id="9203904171912129171">ఒక పరికరాన్ని ఎంచుకోండి</translation>
@@ -5712,6 +5738,7 @@
 <translation id="9220525904950070496">ఖాతాను తీసివేయండి</translation>
 <translation id="9220820413868316583">వేలిని తీసివేసి, మళ్లీ పెట్టండి.</translation>
 <translation id="923467487918828349">అన్నీ చూపించు</translation>
+<translation id="929117907539171075">ఇన్‌స్టాల్ చేసిన యాప్‌లో ఆఫ్‌లైన్ డేటా కూడా తీసివేయబడుతుంది</translation>
 <translation id="930268624053534560">వివరణాత్మక సమయముద్రలు</translation>
 <translation id="932327136139879170">హోమ్</translation>
 <translation id="932508678520956232">ముద్రించడాన్ని ప్రారంభించడం సాధ్యం కాలేదు.</translation>
@@ -5737,6 +5764,7 @@
 <translation id="960719561871045870">ఆపరేటర్ కోడ్</translation>
 <translation id="960987915827980018">సుమారు 1 గంట మిగిలి ఉంది</translation>
 <translation id="962802172452141067">బుక్‌మార్క్ ఫోల్డర్‌ ట్రీ</translation>
+<translation id="964057662886721376">కొన్ని ఎక్స్‌టెన్షన్‌లు మీ వేగాన్ని తగ్గిస్తాయి - ముఖ్యంగా మీరు ఇన్‌స్టాల్ చేయాలని అనుకోలేనివి.</translation>
 <translation id="964286338916298286">మీ IT నిర్వాహకుడు మీ పరికరానికి Chrome కానుకలను నిలిపివేసారు.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{అప్లికేషన్}other{అప్లికేషన్‌లు}}</translation>
 <translation id="965211523698323809">మీ <ph name="DEVICE_TYPE" /> నుండి వచన సందేశాలను పంపండి, స్వీకరించండి. <ph name="LINK_BEGIN" />మరింత తెలుసుకోండి<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_th.xtb b/chrome/app/resources/generated_resources_th.xtb
index 7f1dc24c..2d435aae 100644
--- a/chrome/app/resources/generated_resources_th.xtb
+++ b/chrome/app/resources/generated_resources_th.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">ที่กำหนดเอง</translation>
 <translation id="1178581264944972037">หยุดชั่วคราว</translation>
 <translation id="117916940443676133">คีย์ความปลอดภัยไม่มีการป้องกันด้วย PIN หากต้องการจัดการข้อมูลการลงชื่อเข้าใช้ ให้สร้าง PIN ขึ้นมาก่อน</translation>
-<translation id="118069123878619799">- ลักษณะทางกายภาพของคุณ เช่น ส่วนสูง</translation>
 <translation id="1181037720776840403">นำออก</translation>
 <translation id="1183237619868651138">ไม่สามารถติดตั้ง <ph name="EXTERNAL_CRX_FILE" /> ในแคชในเครื่อง</translation>
 <translation id="1185924365081634987">คุณสามารถลอง<ph name="GUEST_SIGNIN_LINK_START" />เรียกดูในฐานะผู้เยี่ยมชม<ph name="GUEST_SIGNIN_LINK_END" /> เพื่อแก้ไขข้อผิดพลาดของเครือข่าย</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">กำลังรอ <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> อุปกรณ์อื่นๆ ที่พร้อมใช้งาน</translation>
 <translation id="1495677929897281669">กลับไปที่แท็บ</translation>
+<translation id="1499271269825557605">หากคุณจำส่วนขยายไม่ได้ หรือหากเบราว์เซอร์ไม่ทำงานตามที่คิด คุณปิดหรือกำหนดค่าการทำงานของส่วนขยายด้วยตนเองได้ที่นี่</translation>
 <translation id="1500297251995790841">อุปกรณ์ที่ไม่รู้จัก [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">บัญชีเจ้าของนี้ต้องเป็นบัญชีที่ลงชื่อเข้าใช้บัญชีแรกในเซสชันการลงชื่อเข้าใช้พร้อมกัน</translation>
 <translation id="150411034776756821">นำ <ph name="SITE" /> ออก</translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">หน้านี้ถูกบล็อกไม่ให้เข้าถึงกล้องของคุณ</translation>
 <translation id="1507246803636407672">&amp;ยกเลิก</translation>
 <translation id="1508491105858779599">วางนิ้วของคุณบนเซ็นเซอร์ลายนิ้วมือเพื่อปลดล็อกอุปกรณ์</translation>
+<translation id="1508575541972276599">เวอร์ชันปัจจุบันคือ Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">เข้าถึง <ph name="DEVICE_NAME_AND_VENDOR" /> ใดก็ได้ผ่าน USB</translation>
 <translation id="150962533380566081">PUK ไม่ถูกต้อง</translation>
 <translation id="1510030919967934016">หน้านี้ถูกปิดกั้นไม่ให้ติดตามตำแหน่งของคุณ</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">นำไปใช้</translation>
 <translation id="1603914832182249871">(โหมดไม่ระบุตัวตน)</translation>
 <translation id="1604432177629086300">พิมพ์ไม่สำเร็จ ตรวจสอบเครื่องพิมพ์แล้วลองอีกครั้ง</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: การซิงค์รหัสผ่านไม่ทำงาน</translation>
 <translation id="1607139524282324606">ล้างรายการ</translation>
 <translation id="1608626060424371292">ลบผู้ใช้รายนี้</translation>
 <translation id="1608668830839595724">การดำเนินการอื่นๆ สำหรับรายการที่เลือก</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">ข้อมูลแอปที่โฮสต์</translation>
 <translation id="1776712937009046120">เพิ่มผู้ใช้</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">อุปกรณ์นี้จัดการโดย <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />
+    โปรดคลิก "ถัดไป" เพื่อลงชื่อเข้าใช้บัญชี <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ของคุณต่อ</translation>
 <translation id="1779652936965200207">โปรดป้อนรหัสผ่านนี้บน "<ph name="DEVICE_NAME" />":</translation>
 <translation id="1780152987505130652">ปิดกลุ่ม</translation>
 <translation id="1781291988450150470">PIN ปัจจุบัน</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">การดำเนินการไม่พร้อมให้ใช้งาน</translation>
 <translation id="2050339315714019657">แนวตั้ง</translation>
 <translation id="2053312383184521053">ข้อมูลของสถานะไม่มีการใช้งาน</translation>
+<translation id="2055585478631012616">คุณจะออกจากระบบของเว็บไซต์เหล่านี้ รวมถึงในแท็บที่เปิดอยู่</translation>
 <translation id="205560151218727633">โลโก้ Google Assistant</translation>
 <translation id="2058456167109518507">อุปกรณ์ที่ตรวจพบ</translation>
 <translation id="2059913712424898428">เขตเวลา</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">เลิกทำ</translation>
 <translation id="2080070583977670716">การตั้งค่าเพิ่มเติม</translation>
 <translation id="2087822576218954668">พิมพ์: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">เครือข่าย VPN</translation>
 <translation id="2089566709556890888">ท่องเว็บอย่างปลอดภัยด้วย Google Chrome</translation>
 <translation id="2089795179672254991">ถามเมื่อเว็บไซต์ต้องการดูข้อความและรูปภาพที่คัดลอกไปที่คลิปบอร์ด (แนะนำ)</translation>
 <translation id="2090165459409185032">หากต้องการกู้คืนข้อมูลบัญชี โปรดไปที่ google.com/accounts/recovery</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">มีเว็บไซต์กำลังเข้าถึงอินพุตเสียงและวิดีโอ</translation>
 <translation id="2379281330731083556">พิมพ์โดยใช้ช่องโต้ตอบของระบบ... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">ถามก่อนที่จะส่ง (แนะนำ)</translation>
+<translation id="2382818385048255866">ตรวจสอบส่วนขยาย</translation>
 <translation id="2384436799579181135">เกิดข้อผิดพลาด โปรดตรวจสอบเครื่องพิมพ์และลองอีกครั้ง</translation>
 <translation id="2387458720915042159">ประเภทการเชื่อมต่อพร็อกซี</translation>
 <translation id="2391419135980381625">แบบอักษรมาตรฐาน</translation>
@@ -1036,6 +1043,7 @@
 <translation id="2462724976360937186">รหัสคีย์ผู้ออกใบรับรอง</translation>
 <translation id="2462752602710430187">เพิ่ม <ph name="PRINTER_NAME" /> แล้ว</translation>
 <translation id="2464089476039395325">พร็อกซี HTTP</translation>
+<translation id="2467267713099745100">เครือข่าย <ph name="NETWORK_TYPE" /> ปิดอยู่</translation>
 <translation id="2468205691404969808">ใช้คุกกี้เพื่อให้จดจำค่ากำหนดของคุณ แม้ว่าคุณไม่ได้เข้าชมหน้าเว็บเหล่านั้น</translation>
 <translation id="2468402215065996499">ทามาก็อตจิ</translation>
 <translation id="2469259292033957819">คุณไม่มีเครื่องพิมพ์ที่บันทึกไว้</translation>
@@ -1290,6 +1298,7 @@
 <translation id="2800760947029405028">อัปโหลดภาพ</translation>
 <translation id="2803375539583399270">ป้อน PIN</translation>
 <translation id="2804043232879091219">เปิดเบราว์เซอร์สำรองไม่ได้</translation>
+<translation id="2804667941345577550">คุณจะออกจากระบบของเว็บไซต์นี้ รวมถึงในแท็บที่เปิดอยู่</translation>
 <translation id="2804680522274557040">ปิดกล้องอยู่</translation>
 <translation id="2805646850212350655">ระบบไฟล์การเข้ารหัสของ Microsoft</translation>
 <translation id="2805756323405976993">แอป</translation>
@@ -1297,6 +1306,7 @@
 <translation id="2806891468525657116">มีทางลัดนี้อยู่แล้ว</translation>
 <translation id="2807517655263062534">ไฟล์ที่คุณดาวน์โหลดจะปรากฏที่นี่</translation>
 <translation id="2809586584051668049">และอีก <ph name="NUMBER_ADDITIONAL_DISABLED" /> รายการ</translation>
+<translation id="2810390687497823527">หากคุณจำส่วนขยายไม่ได้ หรือหากเบราว์เซอร์ไม่ทำงานตามที่คิด คุณปิดหรือกำหนดค่าการทำงานของส่วนขยายด้วยตนเองได้ที่นี่</translation>
 <translation id="2812049959647166806">ไม่รองรับ Thunderbolt</translation>
 <translation id="2812944337881233323">ลองออกจากระบบและลงชื่อเข้าใช้อีกครั้ง</translation>
 <translation id="2812989263793994277">ไม่ต้องแสดงภาพใดๆ</translation>
@@ -1336,6 +1346,7 @@
 <translation id="2861941300086904918">ตัวจัดการความปลอดภัยไคลเอ็นต์ในระบบ</translation>
 <translation id="2864601841139725659">ตั้งรูปโปรไฟล์</translation>
 <translation id="2865919525181940183">ภาพหน้าจอของโปรแกรมที่กำลังแสดงอยู่ในหน้าจอ</translation>
+<translation id="286674810810214575">กำลังตรวจสอบแหล่งจ่ายไฟ...</translation>
 <translation id="2867768963760577682">เปิดเป็นแท็บที่ถูกตรึง</translation>
 <translation id="2868746137289129307">ส่วนขยายนี้ล้าสมัยแล้วและปิดใช้อยู่โดยนโยบายองค์กร แต่อาจเปิดใช้โดยอัตโนมัติได้เมื่อมีเวอร์ชันใหม่</translation>
 <translation id="2870560284913253234">เว็บไซต์</translation>
@@ -1413,6 +1424,7 @@
 <translation id="2972581237482394796">&amp;ทำซ้ำ</translation>
 <translation id="2973324205039581528">ปิดเสียงเว็บไซต์</translation>
 <translation id="2977480621796371840">นำออกจากกลุ่ม</translation>
+<translation id="2979520980928493164">Chrome ที่ปลอดภัยขึ้นและเร็วขึ้น</translation>
 <translation id="2979639724566107830">เปิดในหน้าต่างใหม่</translation>
 <translation id="2981113813906970160">แสดงเคอร์เซอร์เมาส์ขนาดใหญ่</translation>
 <translation id="2982970937345031">รายงานแบบไม่ระบุตัวตน</translation>
@@ -1519,6 +1531,7 @@
 <translation id="3143515551205905069">ยกเลิกการซิงค์</translation>
 <translation id="3143754809889689516">เริ่มเล่นตั้งแต่ต้น</translation>
 <translation id="3144647712221361880">เปิดลิงก์ในฐานะ</translation>
+<translation id="3145187901750964977">ติดตั้งเครื่องเสมือนไม่ได้ โปรดลองอีกครั้ง หรือติดต่อผู้ดูแลระบบอุปกรณ์ขององค์กร รหัสข้อผิดพลาด: <ph name="ERROR_CODE" /></translation>
 <translation id="3149477159749171726">เวอร์ชัน:
     <ph name="LINUX_VERSION" />
 
@@ -1557,6 +1570,7 @@
 <translation id="3192947282887913208">ไฟล์เสียง</translation>
 <translation id="3194737229810486521"><ph name="URL" /> ต้องการจัดเก็บข้อมูลอย่างถาวรในอุปกรณ์ของคุณ</translation>
 <translation id="3199127022143353223">เซิร์ฟเวอร์</translation>
+<translation id="3201306578844503970">ติดตั้งเครื่องเสมือนไม่ได้เพราะข้อผิดพลาดเกี่ยวกับเครือข่าย โปรดลองอีกครั้ง หรือติดต่อผู้ดูแลระบบอุปกรณ์ขององค์กร รหัสข้อผิดพลาด: <ph name="ERROR_CODE" /></translation>
 <translation id="3201422919974259695">อุปกรณ์ USB ที่ใช้ได้จะปรากฏที่นี่</translation>
 <translation id="3202131003361292969">เส้นทาง</translation>
 <translation id="3202173864863109533">กำลังปิดเสียงของแท็บนี้อยู่</translation>
@@ -1893,7 +1907,6 @@
 <translation id="3678156199662914018">ส่วนขยาย: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">ขอขอบคุณสำหรับความคิดเห็น คุณกำลังออฟไลน์อยู่ในขณะนี้ และระบบจะส่งรายงานของคุณในภายหลัง</translation>
 <translation id="3682824389861648626">เกณฑ์การเคลื่อนไหว</translation>
-<translation id="3683023058278427253">เราตรวจพบประเภทใบอนุญาตหลายประเภทสำหรับโดเมนของคุณ โปรดเลือก 1 รายการเพื่อดำเนินการต่อ</translation>
 <translation id="3683524264665795342">คำขอการแชร์หน้าจอของ <ph name="APP_NAME" /></translation>
 <translation id="368789413795732264">เกิดข้อผิดพลาดขณะพยายามเขียนไฟล์: <ph name="ERROR_TEXT" /></translation>
 <translation id="3688507211863392146">เขียนไปยังไฟล์และโฟลเดอร์ที่คุณเปิดในแอปพลิเคชัน</translation>
@@ -2067,6 +2080,7 @@
 <translation id="389589731200570180">แชร์กับผู้เยี่ยมชม</translation>
 <translation id="389901847090970821">เลือกแป้นพิมพ์</translation>
 <translation id="3899879303189199559">ออฟไลน์นานกว่าหนึ่งปี</translation>
+<translation id="3900789207771372462">ส่วยขยายบางอย่างจะเห็นกิจกรรมการท่องเว็บของคุณ รวมถึงข้อมูลส่วนบุคคล</translation>
 <translation id="3900966090527141178">ส่งออกรหัสผ่าน</translation>
 <translation id="3901991538546252627">กำลังเชื่อมต่อกับ <ph name="NAME" /></translation>
 <translation id="3905761538810670789">ซ่อมแอป</translation>
@@ -2157,7 +2171,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" กำลังแก้ไขข้อบกพร่องของเบราว์เซอร์นี้</translation>
 <translation id="4014432863917027322">ต้องการซ่อม "<ph name="EXTENSION_NAME" />" ไหม</translation>
 <translation id="4015163439792426608">หากมีส่วนขยายหลายรายการ คุณจะ<ph name="BEGIN_LINK" />จัดการส่วนขยาย<ph name="END_LINK" />ได้โดยง่ายในที่เดียว</translation>
-<translation id="4020106588733303597">อ๊ะ! ระบบโหลดใบอนุญาตที่พร้อมใช้งานไม่ได้</translation>
 <translation id="4020327272915390518">เมนูตัวเลือก</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;เพิ่มลงในพจนานุกรม</translation>
@@ -2195,6 +2208,7 @@
 <translation id="407520071244661467">ปรับขนาด</translation>
 <translation id="4075639477629295004">ไม่สามารถแคสต์ <ph name="FILE_NAME" /></translation>
 <translation id="4077917118009885966">บล็อกโฆษณาในไซต์นี้</translation>
+<translation id="4077919383365622693">ระบบจะล้างข้อมูลและคุกกี้ทั้งหมดที่ <ph name="SITE" /> จัดเก็บไว้</translation>
 <translation id="4079140982534148664">ใช้ฟีเจอร์ตรวจตัวสะกดที่ได้รับการปรับปรุง</translation>
 <translation id="4081242589061676262">ไม่สามารถแคสต์ไฟล์</translation>
 <translation id="4084682180776658562">บุ๊กมาร์ก</translation>
@@ -2269,6 +2283,7 @@
 <translation id="4181841719683918333">ภาษา</translation>
 <translation id="4184885522552335684">ลากเพื่อย้ายการแสดงผล</translation>
 <translation id="4194570336751258953">เปิดการใช้งานแตะเพื่อคลิก</translation>
+<translation id="4194595472342532425">ตั้งค่า Plugin VM ไม่ได้เพราะเกิดปัญหาในการกำหนดค่า โปรดติดต่อผู้ดูแลระบบอุปกรณ์ขององค์กร รหัสข้อผิดพลาด: <ph name="ERROR_CODE" /></translation>
 <translation id="4195643157523330669">เปิดในแท็บใหม่</translation>
 <translation id="4195814663415092787">ดำเนินการต่อจากที่ค้างอยู่</translation>
 <translation id="4198146608511578238">เพียงแตะไอคอน Launcher ค้างไว้เพื่อพูดคุยกับ Google Assistant</translation>
@@ -2492,6 +2507,7 @@
 <translation id="4549791035683739768">คีย์ความปลอดภัยไม่มีลายนิ้วมือบันทึกไว้</translation>
 <translation id="4551763574344810652">กด <ph name="MODIFIER_KEY_DESCRIPTION" /> เพื่อเลิกทำ</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005">เครือข่าย <ph name="NETWORK_TYPE" /> ความแรงสัญญาณ <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">ส่วนขยายภายนอกเป็นเวอร์ชันเดียวกันหรือต่ำกว่าเมื่อเปรียบเทียบกับส่วนขยายที่มีอยู่</translation>
 <translation id="4555769855065597957">เงา</translation>
 <translation id="4555863373929230635">หากต้องการบันทึกรหัสผ่านลงในบัญชี Google ให้ลงชื่อเข้าใช้และเปิดการซิงค์</translation>
@@ -2569,6 +2585,7 @@
 <translation id="4665446389743427678">ระบบจะลบข้อมูลทั้งหมดที่ <ph name="SITE" /> จัดเก็บไว้</translation>
 <translation id="4668721319092543482">คลิกเพื่อเปิดใช้ <ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">สกัดหน้า</translation>
+<translation id="46733273239502219">ระบบจะล้างข้อมูลออฟไลน์ในแอปที่ติดตั้งไว้ด้วย</translation>
 <translation id="4673442866648850031">เปิดเครื่องมือสไตลัสเมื่อมีการถอดสไตลัสออก</translation>
 <translation id="4677585247300749148"><ph name="URL" /> ต้องการตอบสนองต่อเหตุการณ์การเข้าถึงพิเศษ</translation>
 <translation id="4677772697204437347">หน่วยความจำ GPU</translation>
@@ -2660,7 +2677,6 @@
 <translation id="4823484602432206655">อ่านและเปลี่ยนการตั้งค่าผู้ใช้และอุปกรณ์</translation>
 <translation id="4824958205181053313">ยกเลิกการซิงค์ใช่ไหม</translation>
 <translation id="4827675678516992122">เชื่อมต่อไม่ได้</translation>
-<translation id="4828937774870308359">ออสเตรเลีย</translation>
 <translation id="4829768588131278040">ตั้งค่า PIN</translation>
 <translation id="4830502475412647084">กำลังติดตั้งอัปเดตระบบปฏิบัติการ</translation>
 <translation id="4830573902900904548"><ph name="DEVICE_TYPE" /> ของคุณไม่สามารถเชื่อมต่ออินเทอร์เน็ตโดยใช้ <ph name="NETWORK_NAME" /> โปรดเลือกเครือข่ายอื่น <ph name="LEARN_MORE_LINK_START" />ดูข้อมูลเพิ่มเติม<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2701,6 +2717,7 @@
 <translation id="4876273079589074638">ช่วยวิศวกรของเราตรวจสอบและแก้ไขข้อขัดข้องนี้ ระบุขั้นตอนที่แน่นอนหากทำได้ ไม่มีรายละเอียดใดที่ไร้ประโยชน์!</translation>
 <translation id="4876895919560854374">ล็อกและปลดล็อกหน้าจอ</translation>
 <translation id="4877276003880815204">ตรวจสอบองค์ประกอบ</translation>
+<translation id="4878653975845355462">ผู้ดูแลระบบของคุณปิดพื้นหลังที่กำหนดเอง</translation>
 <translation id="4879491255372875719">อัตโนมัติ (ค่าเริ่มต้น)</translation>
 <translation id="4880328057631981605">ชื่อจุดเข้าใช้งาน</translation>
 <translation id="4880827082731008257">ค้นประวัติการเข้าชม</translation>
@@ -2756,10 +2773,10 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" ต้องการเชื่อมต่อกับพอร์ตอนุกรม</translation>
 <translation id="4944310289250773232">บริการการตรวจสอบสิทธิ์นี้โฮสต์โดย <ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">การทำงาน</translation>
+<translation id="4952981627953231344">อุปกรณ์นี้ไม่อนุญาตให้ใช้ Plugin VM โปรดติดต่อผู้ดูแลระบบอุปกรณ์ขององค์กร</translation>
 <translation id="4953689047182316270">ตอบสนองต่อเหตุการณ์การเข้าถึงพิเศษ</translation>
 <translation id="4953808748584563296">รูปโปรไฟล์เริ่มต้นสีส้ม</translation>
 <translation id="4955710816792587366">เลือก PIN ของคุณ</translation>
-<translation id="4955814292505481804">รายปี</translation>
 <translation id="4959262764292427323">เราจะบันทึกรหัสผ่านไว้ในบัญชี Google เพื่อให้คุณใช้ในอุปกรณ์เครื่องใดก็ได้</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">ผู้ดูแลระบบเป็นคนติดตั้งแอปนี้</translation>
@@ -3241,7 +3258,6 @@
 <translation id="5659593005791499971">อีเมล</translation>
 <translation id="5659833766619490117">แปลหน้านี้ไม่ได้</translation>
 <translation id="5660204307954428567">จับคู่กับ <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">ถาวร</translation>
 <translation id="5667546120811588575">กำลังตั้งค่า Google Play...</translation>
 <translation id="5669267381087807207">กำลังเปิดการใช้งาน</translation>
 <translation id="5669691691057771421">ป้อน PIN ใหม่</translation>
@@ -3257,6 +3273,7 @@
 <translation id="5687326903064479980">เขตเวลา</translation>
 <translation id="5689516760719285838">ตำแหน่ง</translation>
 <translation id="56907980372820799">ลิงก์ข้อมูล</translation>
+<translation id="5691180005790455277">ระบบจะล้างข้อมูลและคุกกี้ทั้งหมดที่ <ph name="SITE_GROUP_NAME" /> และเว็บไซต์ภายใต้กลุ่มนี้จัดเก็บไว้</translation>
 <translation id="5691511426247308406">ครอบครัว</translation>
 <translation id="5692183275898619210">การพิมพ์เสร็จสมบูรณ์</translation>
 <translation id="5696143504434933566">รายงานการละเมิดจาก "<ph name="EXTENSION_NAME" />"</translation>
@@ -3343,7 +3360,6 @@
 <translation id="5815645614496570556">ที่อยู่ X.400</translation>
 <translation id="5816434091619127343">การเปลี่ยนแปลงเครื่องพิมพ์ที่ขอจะทำให้เครื่องพิมพ์ใช้ไม่ได้</translation>
 <translation id="5817918615728894473">จับคู่</translation>
-<translation id="5819762621475381970">- เลย์เอาต์ของห้อง</translation>
 <translation id="5821565227679781414">สร้างทางลัด</translation>
 <translation id="5825412242012995131">เปิด (แนะนำ)</translation>
 <translation id="5826395379250998812">เชื่อมต่อ <ph name="DEVICE_TYPE" /> กับโทรศัพท์ <ph name="LINK_BEGIN" />ดูข้อมูลเพิ่มเติม<ph name="LINK_END" /></translation>
@@ -3479,6 +3495,7 @@
 <translation id="6007240208646052708">ภาษาของคุณไม่มีการค้นหาด้วยเสียง</translation>
 <translation id="6009781704028455063">เซ็นเซอร์ในเครื่อง</translation>
 <translation id="6010869025736512584">กำลังเข้าถึงอินพุตวิดีโอ</translation>
+<translation id="6011074160056912900">เครือข่ายอีเธอร์เน็ต</translation>
 <translation id="6011193465932186973">ลายนิ้วมือ</translation>
 <translation id="6011449291337289699">ล้างข้อมูลเว็บไซต์</translation>
 <translation id="6015266928248016057">PUK ไม่ถูกต้อง ป้อนได้อีก <ph name="RETRIES" /> ครั้ง</translation>
@@ -3515,6 +3532,7 @@
 <translation id="6053401458108962351">&amp;ล้างข้อมูลการท่องเว็บ...</translation>
 <translation id="6055171183283175969">รหัสผ่านที่คุณป้อนไม่ถูกต้อง</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 พร้อมการเข้ารหัส RSA</translation>
+<translation id="6055907707645252013">เครือข่าย <ph name="NETWORK_TYPE" /> ยังไม่ได้เชื่อมต่อ</translation>
 <translation id="6056710589053485679">โหลดซ้ำตามปกติ</translation>
 <translation id="6057381398996433816">เว็บไซต์นี้ถูกบล็อกไม่ให้ใช้เซ็นเซอร์ตรวจจับการเคลื่อนไหวและแสง</translation>
 <translation id="6058567592298841668">เครื่องเสมือนของปลั๊กอิน: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3578,6 +3596,7 @@
 <translation id="6136114942382973861">ปิดแถบดาวน์โหลด</translation>
 <translation id="6137767437444130246">ใบรับรองของผู้ใช้</translation>
 <translation id="6138680304137685902">ลายเซ็น X9.62 ECDSA ที่มี SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" /> ไม่มีเครือข่าย</translation>
 <translation id="6141988275892716286">ยืนยันการดาวน์โหลด</translation>
 <translation id="6143186082490678276">รับความช่วยเหลือ</translation>
 <translation id="6144938890088808325">ช่วยเราปรับปรุง Chromebook</translation>
@@ -3884,6 +3903,7 @@
 <translation id="6602956230557165253">ใช้แป้นลูกศรซ้ายและขวาเพื่อนำทาง</translation>
 <translation id="6605847144724004692">ยังไม่มีผู้ใช้ให้คะแนน</translation>
 <translation id="6607831829715835317">เ&amp;ครื่องมือเพิ่มเติม</translation>
+<translation id="6611972847767394631">ค้นหาแท็บของคุณที่นี่</translation>
 <translation id="6612358246767739896">เนื้อหาที่ได้รับความคุ้มครอง</translation>
 <translation id="6615455863669487791">แสดงให้ฉันเห็น</translation>
 <translation id="6618097958368085618">อย่างไรก็เก็บไว้</translation>
@@ -3952,6 +3972,7 @@
 <translation id="6709133671862442373">ข่าวสาร</translation>
 <translation id="6709357832553498500">เชื่อมต่อโดยใช้ <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">ก่อนหน้า</translation>
+<translation id="6715803357256707211">เกิดข้อผิดพลาดระหว่างการติดตั้งแอปพลิเคชัน Linux คลิกที่การแจ้งเตือนเพื่อดูรายละเอียด</translation>
 <translation id="6721678857435001674">ดูยี่ห้อและรุ่นของคีย์ความปลอดภัย</translation>
 <translation id="6721972322305477112">&amp;ไฟล์</translation>
 <translation id="672213144943476270">โปรดปลดล็อกโปรไฟล์ของคุณก่อนท่องเว็บในฐานะผู้เยี่ยมชม</translation>
@@ -3976,7 +3997,6 @@
 <translation id="674632704103926902">เปิดใช้งานการแตะลาก</translation>
 <translation id="6748217015615267851">ตัวแสดงผล: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">คุณสามารถดำเนินการต่อได้ แต่ระบบจะกู้คืนข้อมูลที่ซิงค์และการตั้งค่าเท่านั้น ข้อมูลในเครื่องทั้งหมดจะสูญหาย</translation>
-<translation id="6748775883310276718">คีออสก์แอปเดี่ยว</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (โหมดไม่ระบุตัวตน)</translation>
 <translation id="6757101664402245801">คัดลอก URL แล้ว</translation>
 <translation id="6758056191028427665">แจ้งให้เราทราบถึงความพึงพอใจ</translation>
@@ -3986,6 +4006,7 @@
 <translation id="6769712124046837540">กำลังเพิ่มเครื่องพิมพ์...</translation>
 <translation id="6770664076092644100">ยืนยันผ่าน NFC</translation>
 <translation id="6771503742377376720">เป็นผู้ออกใบรับรอง</translation>
+<translation id="6772339735733515807">จัดการส่วนขยายของคุณ</translation>
 <translation id="6775163072363532304">อุปกรณ์ที่ใช้ได้จะแสดงที่นี่</translation>
 <translation id="6777817260680419853">การเปลี่ยนเส้นทางถูกบล็อก</translation>
 <translation id="6778737459546443941">ผู้ปกครองยังไม่ได้อนุมัติเว็บไซต์นี้</translation>
@@ -4124,6 +4145,7 @@
 <translation id="6972180789171089114">เสียง/วิดีโอ</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> เปิดไฟล์ในโฟลเดอร์นี้ไม่ได้เพราะมีไฟล์ระบบอยู่</translation>
 <translation id="6972754398087986839">เริ่มต้นใช้งาน</translation>
+<translation id="6973611239564315524">มีการอัปเกรดเป็น Debian 10 (Buster) พร้อมใช้งาน</translation>
 <translation id="6974609594866392343">โหมดสาธิตแบบออฟไลน์</translation>
 <translation id="6977381486153291903">การแก้ไขเฟิร์มแวร์</translation>
 <translation id="6978121630131642226">เครื่องมือค้นหา</translation>
@@ -4583,6 +4605,7 @@
 <translation id="7644543211198159466">สีและธีม</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (เจ้าของ)</translation>
 <translation id="7645681574855902035">กำลังยกเลิกการสำรองข้อมูล Linux</translation>
+<translation id="7646772052135772216">การซิงค์รหัสผ่านไม่ทำงาน</translation>
 <translation id="7647403192093989392">ไม่มีกิจกรรมล่าสุด</translation>
 <translation id="7648992873808071793">จัดเก็บไฟล์บนอุปกรณ์นี้</translation>
 <translation id="7649070708921625228">ช่วยเหลือ</translation>
@@ -4771,6 +4794,7 @@
 <translation id="7877451762676714207">ข้อผิดพลาดของเซิร์ฟเวอร์ที่ไม่รู้จัก โปรดลองอีกครั้งหรือติดต่อผู้ดูแลระบบเซิร์ฟเวอร์</translation>
 <translation id="7877680364634660272">ทัวร์ชม</translation>
 <translation id="7878562273885520351">รหัสผ่านของคุณอาจถูกขโมยได้</translation>
+<translation id="7879631849810108578">แป้นพิมพ์ลัดที่ตั้งค่า: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">เมื่อคุณรีสตาร์ท ระบบจะลบข้อมูลในเครื่อง</translation>
 <translation id="7881483672146086348">ดูบัญชี</translation>
 <translation id="7882358943899516840">ประเภทผู้ให้บริการ</translation>
@@ -4857,6 +4881,7 @@
 <translation id="7987814697832569482">เชื่อมต่อผ่าน VPN นี้ทุกครั้ง</translation>
 <translation id="7988355189918024273">เปิดการใช้งานฟีเจอร์การเข้าถึง</translation>
 <translation id="7991296728590311172">การตั้งค่าการเข้าถึงด้วยสวิตช์</translation>
+<translation id="7994350303002908848">ติดตั้ง Plugin VM ไม่ได้ โปรดลองอีกครั้ง หรือติดต่อผู้ดูแลระบบอุปกรณ์ขององค์กร รหัสข้อผิดพลาด: <ph name="ERROR_CODE" /></translation>
 <translation id="7994702968232966508">วิธีการ EAP</translation>
 <translation id="7997826902155442747">ลำดับความสำคัญของกระบวนการ</translation>
 <translation id="7999229196265990314">สร้างไฟล์ต่อไปนี้:
@@ -4949,7 +4974,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{ไม่มีคุกกี้ของบุคคลที่สาม}=1{บล็อกคุกกี้ของบุคคลที่สามไว้ 1 รายการ}other{บล็อกคุกกี้ของบุคคลที่สามไว้ # รายการ}}</translation>
 <translation id="810875025413331850">ไม่พบอุปกรณ์ที่อยู่ใกล้เคียง</translation>
 <translation id="8111155949205007504">แชร์รหัสผ่านนี้กับ iPhone</translation>
-<translation id="8113043281354018522">เลือกประเภทใบอนุญาต</translation>
 <translation id="8114875720387900039">แยกในแนวนอน</translation>
 <translation id="8116972784401310538">ตั&amp;วจัดการบุ๊กมาร์ก</translation>
 <translation id="8117620576188476503">จัดการการเชื่อมต่อ อัปเดต และการตั้งค่าด้วยถาดสถานะ หากต้องการมาที่นี่โดยใช้แป้นพิมพ์ ให้กด Alt + Shift + S</translation>
@@ -5106,6 +5130,7 @@
 <translation id="8327039559959785305">เกิดข้อผิดพลาดขณะต่อเชื่อมไฟล์ Linux โปรดลองอีกครั้ง</translation>
 <translation id="8335587457941836791">เลิกตรึงในชั้นวาง</translation>
 <translation id="8336407002559723354">การอัปเดตจะสิ้นสุดใน<ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">รีสตาร์ทอุปกรณ์เพื่อแสดงข้อความของระบบในภาษา<ph name="LANGUAGE" /></translation>
 <translation id="8336739000755212683">เปลี่ยนรูปภาพของบัญชีอุปกรณ์</translation>
 <translation id="8337047789441383384">คุณลงทะเบียนคีย์ความปลอดภัยนี้ไปแล้ว ไม่จำเป็นต้องลงทะเบียนซ้ำ</translation>
 <translation id="8338952601723052325">เว็บไซต์สำหรับนักพัฒนาซอฟต์แวร์</translation>
@@ -5149,6 +5174,7 @@
 <translation id="8400146488506985033">จัดการบุคคล</translation>
 <translation id="8401432541486058167">ใส่ PIN ที่เชื่อมโยงกับสมาร์ทการ์ดของคุณ</translation>
 <translation id="8405046151008197676">ดูไฮไลต์จากอัปเดตล่าสุด</translation>
+<translation id="8408068190360279472">เครือข่าย <ph name="NETWORK_TYPE" /> กำลังเชื่อมต่อ</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">ถามก่อน (แนะนำ)</translation>
 <translation id="8418445294933751433">แ&amp;สดงเป็นแถบ</translation>
@@ -5438,6 +5464,7 @@
 <translation id="8807632654848257479">เสถียร</translation>
 <translation id="8808478386290700967">ร้านค้าบนเว็บ</translation>
 <translation id="8808686172382650546">แมว</translation>
+<translation id="8808744862003883508">ในหน้านี้คุณจะเห็นส่วนขยายทั้งหมดที่ติดตั้งใน Chrome</translation>
 <translation id="8809147117840417135">สีน้ำเงินอมเขียวอ่อน</translation>
 <translation id="8813698869395535039">ไม่สามารถลงชื่อเข้าใช้ <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">หน้ากระดาษ</translation>
@@ -5665,7 +5692,6 @@
 <translation id="9121814364785106365">เปิดเป็นแท็บที่ปักหมุดไว้</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> หยุดชั่วคราว</translation>
 <translation id="9124003689441359348">รหัสผ่านที่บันทึกไว้จะแสดงที่นี่</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (เหลือ <ph name="LICENSE_COUNT" /> รายการ)</translation>
 <translation id="9128317794749765148">ตั้งค่าไม่สำเร็จ</translation>
 <translation id="9128870381267983090">เชื่อมต่อกับเครือข่าย</translation>
 <translation id="9130015405878219958">โหมดที่ป้อนไม่ถูกต้อง</translation>
@@ -5704,6 +5730,7 @@
 <translation id="9188732951356337132">ส่งข้อมูลการใช้งานและการวินิจฉัย ปัจจุบันอุปกรณ์นี้ส่งข้อมูลการวินิจฉัย อุปกรณ์ และการใช้งานแอปไปยัง Google โดยอัตโนมัติ โดยจะไม่มีการใช้ข้อมูลนี้ในการระบุชื่อบุตรหลานของคุณ และจะช่วยปรับปรุงความเสถียรของแอปและระบบ และอื่นๆ ข้อมูลที่รวบรวมมาบางส่วนจะมีประโยชน์ต่อแอปและพาร์ทเนอร์ของ Google ด้วย เช่น นักพัฒนาซอฟต์แวร์ Android หากเปิดการตั้งค่ากิจกรรมเพิ่มเติมบนเว็บและแอปสำหรับบุตรหลาน ระบบอาจบันทึกข้อมูลนี้ไว้ในบัญชี Google ของบุตรหลาน <ph name="BEGIN_LINK2" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + คีย์ที่แชร์ล่วงหน้า</translation>
 <translation id="920045321358709304">ค้นหา <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">ระบบจะล้างข้อมูลออฟไลน์ทั้งหมด</translation>
 <translation id="9201220332032049474">ตัวเลือกการล็อกหน้าจอ</translation>
 <translation id="9203398526606335860">&amp;เปิดใช้งานการทำแฟ้มประวัติ</translation>
 <translation id="9203904171912129171">เลือกอุปกรณ์</translation>
@@ -5716,6 +5743,7 @@
 <translation id="9220525904950070496">ลบบัญชี</translation>
 <translation id="9220820413868316583">ยกนิ้วขึ้นแล้วลองอีกครั้ง</translation>
 <translation id="923467487918828349">แสดงทั้งหมด</translation>
+<translation id="929117907539171075">ระบบจะล้างข้อมูลออฟไลน์ในแอปที่ติดตั้งไว้ด้วย</translation>
 <translation id="930268624053534560">การประทับเวลาโดยละเอียด</translation>
 <translation id="932327136139879170">หน้าแรก</translation>
 <translation id="932508678520956232">ไม่สามารถเริ่มพิมพ์</translation>
@@ -5741,6 +5769,7 @@
 <translation id="960719561871045870">รหัสผู้ให้บริการ</translation>
 <translation id="960987915827980018">เหลือเวลาอีกประมาณ 1 ชั่วโมง</translation>
 <translation id="962802172452141067">แผนผังของโฟลเดอร์บุ๊กมาร์ก</translation>
+<translation id="964057662886721376">ส่วนขยายบางอย่างอาจทำให้ระบบทำงานช้าลง โดยเฉพาะส่วนขยายที่คุณไม่ได้ตั้งใจที่จะติดตั้ง</translation>
 <translation id="964286338916298286">ผู้ดูแลระบบไอทีได้ปิดการใช้สินค้าจาก Chrome ในอุปกรณ์ของคุณ</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{แอปพลิเคชัน}other{แอปพลิเคชัน}}</translation>
 <translation id="965211523698323809">ส่งและรับ SMS จาก <ph name="DEVICE_TYPE" /> <ph name="LINK_BEGIN" />ดูข้อมูลเพิ่มเติม<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_tr.xtb b/chrome/app/resources/generated_resources_tr.xtb
index a2976a0..55d05580 100644
--- a/chrome/app/resources/generated_resources_tr.xtb
+++ b/chrome/app/resources/generated_resources_tr.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Özel</translation>
 <translation id="1178581264944972037">Duraklat</translation>
 <translation id="117916940443676133">Güvenlik anahtarınız PIN ile korunmuyor. Oturum açma verilerini yönetmek için önce PIN oluşturun.</translation>
-<translation id="118069123878619799">- boyunuz gibi fiziksel özellikleriniz</translation>
 <translation id="1181037720776840403">Kaldır</translation>
 <translation id="1183237619868651138"><ph name="EXTERNAL_CRX_FILE" /> yerel önbelleğe yüklenemiyor.</translation>
 <translation id="1185924365081634987">Ayrıca, bu ağ hatasını gidermek için <ph name="GUEST_SIGNIN_LINK_START" />misafir olarak göz atmayı<ph name="GUEST_SIGNIN_LINK_END" /> da deneyebilirsiniz.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381"><ph name="LOAD_STATE_PARAMETER" /> bekleniyor...</translation>
 <translation id="1495486559005647033">Kullanılabilir <ph name="NUM_PRINTERS" /> cihaz daha var.</translation>
 <translation id="1495677929897281669">Sekmeye dön</translation>
+<translation id="1499271269825557605">Bir uzantıyı tanımıyorsanız ya da tarayıcınız beklendiği gibi çalışmıyorsa uzantıları burada kapatabilir veya özelleştirebilirsiniz.</translation>
 <translation id="1500297251995790841">Bilinmeyen cihaz [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Bu sahip hesabının bir çoklu oturumda ilk oturum açan hesap olması gerekir.</translation>
 <translation id="150411034776756821"><ph name="SITE" /> sitesini kaldır</translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Bu sayfanın kameranıza erişimi engellenmiştir.</translation>
 <translation id="1507246803636407672">&amp;Sil</translation>
 <translation id="1508491105858779599">Cihazın kilidini açmak için parmağınızı parmak izi sensörünün üzerine yerleştirin.</translation>
+<translation id="1508575541972276599">Geçerli sürüm: Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">USB üzerinden herhangi bir <ph name="DEVICE_NAME_AND_VENDOR" /> cihazına erişme</translation>
 <translation id="150962533380566081">Geçersiz PUK.</translation>
 <translation id="1510030919967934016">Bu sayfanın konumunuzu izlemesi engellendi.</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">Uygula</translation>
 <translation id="1603914832182249871">(Gizli mod)</translation>
 <translation id="1604432177629086300">Yazdırılamadı. Yazıcıyı kontrol edip tekrar deneyin.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: Şifre senkronizasyonu çalışmıyor</translation>
 <translation id="1607139524282324606">Girişi temizle</translation>
 <translation id="1608626060424371292">Bu kullanıcıyı kaldır</translation>
 <translation id="1608668830839595724">Seçilen öğeler için daha fazla işlem</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">Barındırılan uygulama verileri</translation>
 <translation id="1776712937009046120">Kullanıcı ekle</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Bu cihaz <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> tarafından yönetiliyor.
+    <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> hesabınızda oturum açmaya devam etmek için lütfen "Sonraki"yi tıklayın.</translation>
 <translation id="1779652936965200207">Lütfen bu parolayı "<ph name="DEVICE_NAME" />" cihazında girin:</translation>
 <translation id="1780152987505130652">Grubu Kapat</translation>
 <translation id="1781291988450150470">Mevcut PIN</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">İşlem kullanılamıyor</translation>
 <translation id="2050339315714019657">Dikey</translation>
 <translation id="2053312383184521053">Boşta Kalma Durumu Verileri</translation>
+<translation id="2055585478631012616">Açık sekmeler dahil olmak üzere bu sitelerdeki oturumunuzu kapatacaksınız</translation>
 <translation id="205560151218727633">Google Asistan logosu</translation>
 <translation id="2058456167109518507">Cihaz algılandı</translation>
 <translation id="2059913712424898428">Saat dilimi</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">Geri al</translation>
 <translation id="2080070583977670716">Daha fazla ayar</translation>
 <translation id="2087822576218954668">Yazdır: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN ağı</translation>
 <translation id="2089566709556890888">Google Chrome ile güvenli bir şekilde göz atın</translation>
 <translation id="2089795179672254991">Siteler panoya kopyalanan metin ve resimleri görmek istediğinde sorulsun (önerilen)</translation>
 <translation id="2090165459409185032">Hesap bilgilerinizi kurtarmak için şu adrese gidin: google.com/accounts/recovery</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">Bir site, ses ve video girişine erişiyor</translation>
 <translation id="2379281330731083556">Sistem iletişim kutusunu kullanarak yazdır... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Göndermeden önce sor (önerilir)</translation>
+<translation id="2382818385048255866">Uzantılarınızı kontrol edin</translation>
 <translation id="2384436799579181135">Bir hata oluştu. Lütfen yazıcınızı kontrol edin ve tekrar deneyin.</translation>
 <translation id="2387458720915042159">Proxy bağlantısı türü</translation>
 <translation id="2391419135980381625">Standart yazı tipi</translation>
@@ -1036,6 +1043,7 @@
 <translation id="2462724976360937186">Sertifika Yetkilisi Anahtar Kimliği</translation>
 <translation id="2462752602710430187"><ph name="PRINTER_NAME" /> eklendi</translation>
 <translation id="2464089476039395325">HTTP Proxy'si</translation>
+<translation id="2467267713099745100"><ph name="NETWORK_TYPE" /> adlı ağ, kapalı</translation>
 <translation id="2468205691404969808">Belirtilen sayfaları ziyaret etmiyor olsanız bile tercihlerinizi hatırlamak için çerezler kullanır</translation>
 <translation id="2468402215065996499">Tamagotchi</translation>
 <translation id="2469259292033957819">Kaydedilmiş yazıcınız yok.</translation>
@@ -1290,6 +1298,7 @@
 <translation id="2800760947029405028">Resim yükle</translation>
 <translation id="2803375539583399270">PIN girin</translation>
 <translation id="2804043232879091219">Alternatif tarayıcı açılamadı</translation>
+<translation id="2804667941345577550">Açık sekmeler dahil olmak üzere bu sitede oturumunuz kapatılacak</translation>
 <translation id="2804680522274557040">Kamera devre dışı bırakıldı</translation>
 <translation id="2805646850212350655">Microsoft Şifreleme Dosya Sistemi</translation>
 <translation id="2805756323405976993">Uygulamalar</translation>
@@ -1297,6 +1306,7 @@
 <translation id="2806891468525657116">Kısayol zaten mevcut</translation>
 <translation id="2807517655263062534">İndirdiğiniz dosyalar burada görünür</translation>
 <translation id="2809586584051668049">ve diğer <ph name="NUMBER_ADDITIONAL_DISABLED" /> öğe</translation>
+<translation id="2810390687497823527">Bir uzantıyı tanımıyorsanız ya da tarayıcınız beklendiği gibi çalışmıyorsa uzantıları burada kapatabilir veya özelleştirebilirsiniz.</translation>
 <translation id="2812049959647166806">Thunderbolt desteklenmiyor</translation>
 <translation id="2812944337881233323">Oturumu kapatıp tekrar açmayı deneyin</translation>
 <translation id="2812989263793994277">Hiçbir resmi gösterme</translation>
@@ -1336,6 +1346,7 @@
 <translation id="2861941300086904918">Yerel İstemci güvenlik yöneticisi</translation>
 <translation id="2864601841139725659">Profil resminizi ayarlama</translation>
 <translation id="2865919525181940183">Şu anda ekrandaki programların ekran görüntüsü</translation>
+<translation id="286674810810214575">Güç kaynakları kontrol ediliyor...</translation>
 <translation id="2867768963760577682">İğnelenmiş Sekme Olarak Aç</translation>
 <translation id="2868746137289129307">Bu uzantı, eski ve kurumsal politika tarafından devre dışı bırakıldı. Yeni bir sürüm kullanılabilir durumda olduğunda otomatik olarak etkin hale gelebilir.</translation>
 <translation id="2870560284913253234">Site</translation>
@@ -1413,6 +1424,7 @@
 <translation id="2972581237482394796">&amp;Yinele</translation>
 <translation id="2973324205039581528">Sitenin Sesini Kapat</translation>
 <translation id="2977480621796371840">Gruptan kaldır</translation>
+<translation id="2979520980928493164">Daha sağlıklı, mutlu bir Chrome</translation>
 <translation id="2979639724566107830">Yeni pencerede aç</translation>
 <translation id="2981113813906970160">Büyük fare imleci göster</translation>
 <translation id="2982970937345031">Anonim olarak bildir</translation>
@@ -1519,6 +1531,7 @@
 <translation id="3143515551205905069">Senkronizasyonu iptal et</translation>
 <translation id="3143754809889689516">Baştan oynat</translation>
 <translation id="3144647712221361880">Bağlantıyı farklı aç</translation>
+<translation id="3145187901750964977">Sanal makine yüklenemedi. Lütfen tekrar deneyin veya kuruluşunuzun cihaz yöneticisiyle iletişime geçin. Hata kodu: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Sürüm:
     <ph name="LINUX_VERSION" />
 
@@ -1557,6 +1570,7 @@
 <translation id="3192947282887913208">Ses Dosyaları</translation>
 <translation id="3194737229810486521"><ph name="URL" />, cihazınıza kalıcı olarak veri depolamak istiyor</translation>
 <translation id="3199127022143353223">Sunucular</translation>
+<translation id="3201306578844503970">Ağ hatası nedeniyle sanal makine yüklenemedi. Lütfen tekrar deneyin veya kuruluşunuzun cihaz yöneticisiyle iletişime geçin. Hata kodu: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Kullanılabilir USB cihazlar burada görünür.</translation>
 <translation id="3202131003361292969">Yol</translation>
 <translation id="3202173864863109533">Bu sekmenin sesi kapatılıyor.</translation>
@@ -1893,7 +1907,6 @@
 <translation id="3678156199662914018">Uzantı: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Geri bildiriminiz için teşekkürler. Şu anda çevrimdışısınız ve raporunuz daha sonra gönderilecek.</translation>
 <translation id="3682824389861648626">Hareket eşiği</translation>
-<translation id="3683023058278427253">Alanınız için birden fazla lisans türü belirledik. Devam etmek için lütfen birini seçin.</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> Ekran Paylaşım Talebi</translation>
 <translation id="368789413795732264">Dosya yazılmaya çalışılırken bir hata oluştu: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Uygulamada açtığınız dosyalara ve klasörlere yazma</translation>
@@ -2067,6 +2080,7 @@
 <translation id="389589731200570180">Misafirlerle paylaş</translation>
 <translation id="389901847090970821">Klavye seçin</translation>
 <translation id="3899879303189199559">Bir yıldan fazladır çevrimdışı</translation>
+<translation id="3900789207771372462">Bazı uzantılar, kişisel bilgiler dahil olmak üzere tarama etkinliğinizi görebilir.</translation>
 <translation id="3900966090527141178">Şifreleri dışa aktarın</translation>
 <translation id="3901991538546252627"><ph name="NAME" /> ağına bağlanılıyor</translation>
 <translation id="3905761538810670789">Uygulamayı onar</translation>
@@ -2157,7 +2171,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" bu tarayıcıda hata ayıklıyor</translation>
 <translation id="4014432863917027322">"<ph name="EXTENSION_NAME" />" onarılsın mı?</translation>
 <translation id="4015163439792426608">Uzantı kullanıyor musunuz? <ph name="BEGIN_LINK" />Uzantılarınızı tek yerden kolayca yönetin<ph name="END_LINK" />.</translation>
-<translation id="4020106588733303597">Tüh! Sistem kullanılabilir lisansları yükleyemedi.</translation>
 <translation id="4020327272915390518">Seçenekler menüsü</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">Sözlüğe &amp;Ekle</translation>
@@ -2195,6 +2208,7 @@
 <translation id="407520071244661467">Ölçek</translation>
 <translation id="4075639477629295004"><ph name="FILE_NAME" /> yayınlanamıyor.</translation>
 <translation id="4077917118009885966">Reklamlar bu sitede engellendi</translation>
+<translation id="4077919383365622693"><ph name="SITE" /> web sitesinin depoladığı tüm veriler ve çerezler temizlenecek.</translation>
 <translation id="4079140982534148664">Gelişmiş Yazım Denetimini Kullan</translation>
 <translation id="4081242589061676262">Dosya yayınlanamıyor.</translation>
 <translation id="4084682180776658562">Yer İşareti</translation>
@@ -2269,6 +2283,7 @@
 <translation id="4181841719683918333">Diller</translation>
 <translation id="4184885522552335684">Ekranı taşımak için sürükleyin</translation>
 <translation id="4194570336751258953">Tıklamak için hafifçe vur'u etkinleştir</translation>
+<translation id="4194595472342532425">Yapılandırma sorunu nedeniyle Plugin VM kurulumu yapılamadı. Lütfen kuruluşunuzun cihaz yöneticisiyle iletişime geçin. Hata kodu: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Yeni sekmede aç</translation>
 <translation id="4195814663415092787">Kaldığım yerden devam et</translation>
 <translation id="4198146608511578238">Google Asistanınızla konuşmak için Launcher simgesini basılı tutmanız yeterlidir.</translation>
@@ -2492,6 +2507,7 @@
 <translation id="4549791035683739768">Güvenlik anahtarınızda depolanmış parmak izi yok</translation>
 <translation id="4551763574344810652">Geri Almak için <ph name="MODIFIER_KEY_DESCRIPTION" /> kısayoluna basın</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005"><ph name="NETWORK_TYPE" /> adlı ağ, %<ph name="SIGNAL_STRENGTH" /> sinyal gücü</translation>
 <translation id="4554591392113183336">Harici uzantı, mevcut bir uzantıyla aynı veya daha eski sürümde.</translation>
 <translation id="4555769855065597957">Gölge</translation>
 <translation id="4555863373929230635">Şifreleri Google Hesabınıza kaydetmek için oturum açın ve senkronizasyonu etkinleştirin.</translation>
@@ -2569,6 +2585,7 @@
 <translation id="4665446389743427678"><ph name="SITE" /> web sitesinin depoladığı tüm veriler silinecektir.</translation>
 <translation id="4668721319092543482"><ph name="PLUGIN_NAME" /> eklentisini etkinleştirmek için tıklayın</translation>
 <translation id="4672657274720418656">Sayfayı Ayrıştır</translation>
+<translation id="46733273239502219">Yüklü uygulamalardaki çevrimdışı veriler de temizlenecek</translation>
 <translation id="4673442866648850031">Ekran kalemi yerinden çıkarıldığında ekran kalemi araçlarını aç</translation>
 <translation id="4677585247300749148"><ph name="URL" />, erişilebilirlikle ilgili etkinliklere yanıt vermek istiyor</translation>
 <translation id="4677772697204437347">GPU belleği</translation>
@@ -2660,7 +2677,6 @@
 <translation id="4823484602432206655">Kullanıcı ve cihaz ayarlarını okuma ve değiştirme</translation>
 <translation id="4824958205181053313">Senkronizasyon iptal edilsin mi?</translation>
 <translation id="4827675678516992122">Bağlanılamadı</translation>
-<translation id="4828937774870308359">Avustralya</translation>
 <translation id="4829768588131278040">PIN ayarla</translation>
 <translation id="4830502475412647084">OS güncellemesini yükleyin</translation>
 <translation id="4830573902900904548"><ph name="DEVICE_TYPE" /> cihazınız <ph name="NETWORK_NAME" /> ile İnternet'e bağlanamıyor. Lütfen başka bir ağ seçin. <ph name="LEARN_MORE_LINK_START" />Daha fazla bilgi edinin<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2701,6 +2717,7 @@
 <translation id="4876273079589074638">Mühendislerimizin kilitlenme olayı araştırmalarına ve düzeltmelerine yardımcı olun. Yapabilirseniz adımları tam olarak listeleyin. Hiçbir ayrıntıyı atlamayın!</translation>
 <translation id="4876895919560854374">Ekranı kilitleme ve kilidini açma</translation>
 <translation id="4877276003880815204">Öğeleri İncele</translation>
+<translation id="4878653975845355462">Özel arka planlar yöneticiniz tarafından kapatıldı</translation>
 <translation id="4879491255372875719">Otomatik (varsayılan)</translation>
 <translation id="4880328057631981605">Erişim noktası adı</translation>
 <translation id="4880827082731008257">Geçmişte ara</translation>
@@ -2756,10 +2773,10 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" bir seri bağlantı noktasına bağlanmak istiyor</translation>
 <translation id="4944310289250773232">Bu kimlik doğrulama hizmeti <ph name="SAML_DOMAIN" /> tarafından barındırılıyor.</translation>
 <translation id="495170559598752135">İşlemler</translation>
+<translation id="4952981627953231344">Plugin VM'e bu cihazda izin verilmiyor. Kuruluşunuzun cihaz yöneticisiyle iletişime geçin.</translation>
 <translation id="4953689047182316270">Erişilebilirlikle İlgili Etkinliklere Yanıt Verme</translation>
 <translation id="4953808748584563296">Varsayılan turuncu avatar</translation>
 <translation id="4955710816792587366">PIN'inizi seçin</translation>
-<translation id="4955814292505481804">Yıllık</translation>
 <translation id="4959262764292427323">Şifreler Google Hesabınıza kaydedildiğinden bunları herhangi bir cihazda kullanabilirsiniz</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Bu uygulama, yöneticiniz tarafından yüklendi.</translation>
@@ -3242,7 +3259,6 @@
 <translation id="5659593005791499971">E-posta</translation>
 <translation id="5659833766619490117">Bu sayfa çevrilemedi</translation>
 <translation id="5660204307954428567"><ph name="DEVICE_NAME" /> ile eşleyin</translation>
-<translation id="5662477687021125631">Kalıcı</translation>
 <translation id="5667546120811588575">Google Play kuruluyor...</translation>
 <translation id="5669267381087807207">Etkinleştiriliyor</translation>
 <translation id="5669691691057771421">Yeni PIN'i girin</translation>
@@ -3258,6 +3274,7 @@
 <translation id="5687326903064479980">Saat dilimi</translation>
 <translation id="5689516760719285838">Konum</translation>
 <translation id="56907980372820799">Verileri bağla</translation>
+<translation id="5691180005790455277"><ph name="SITE_GROUP_NAME" /> web sitesinin ve altındaki sitelerin depoladığı tüm veriler ve çerezler temizlenecek.</translation>
 <translation id="5691511426247308406">Aile</translation>
 <translation id="5692183275898619210">Yazdırma işlemi tamamlandı</translation>
 <translation id="5696143504434933566">"<ph name="EXTENSION_NAME" />" uzantısının kötüye kullanımını bildir</translation>
@@ -3344,7 +3361,6 @@
 <translation id="5815645614496570556">X.400 Adresi</translation>
 <translation id="5816434091619127343">Yazıcıda yapılması istenen değişiklikler yazıcıyı kullanılamaz hale getirecekti.</translation>
 <translation id="5817918615728894473">Eşle</translation>
-<translation id="5819762621475381970">- odanızın düzeni</translation>
 <translation id="5821565227679781414">Kısayol Oluştur</translation>
 <translation id="5825412242012995131">Açık (Önerilen)</translation>
 <translation id="5826395379250998812"><ph name="DEVICE_TYPE" /> cihazınızı telefonunuza bağlayın. <ph name="LINK_BEGIN" />Daha fazla bilgi<ph name="LINK_END" /></translation>
@@ -3480,6 +3496,7 @@
 <translation id="6007240208646052708">Sesli arama özelliği dilinizde kullanılamaz.</translation>
 <translation id="6009781704028455063">Yerleşik sensör</translation>
 <translation id="6010869025736512584">Video girişine erişiliyor</translation>
+<translation id="6011074160056912900">Ethernet ağı</translation>
 <translation id="6011193465932186973">Parmak izi</translation>
 <translation id="6011449291337289699">Site verilerini temizle</translation>
 <translation id="6015266928248016057">Geçersiz PUK. Kalan deneme sayısı: <ph name="RETRIES" />.</translation>
@@ -3516,6 +3533,7 @@
 <translation id="6053401458108962351">&amp;Tarama verilerini temizle...</translation>
 <translation id="6055171183283175969">Girdiğiniz şifre yanlış.</translation>
 <translation id="6055392876709372977">PKCS #1 RSA Şifrelemeli SHA-256</translation>
+<translation id="6055907707645252013"><ph name="NETWORK_TYPE" /> ağı, bağlı değil</translation>
 <translation id="6056710589053485679">Normal Yeniden Yükle</translation>
 <translation id="6057381398996433816">Bu sitenin hareket ve ışık sensörlerini kullanması engellendi.</translation>
 <translation id="6058567592298841668">Sanal Makine Eklentisi: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3579,6 +3597,7 @@
 <translation id="6136114942382973861">İndirme çubuğunu kapat</translation>
 <translation id="6137767437444130246">Kullanıcı sertifikası</translation>
 <translation id="6138680304137685902">SHA-384 ile X9.62 ECDSA İmzası</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, ağ yok</translation>
 <translation id="6141988275892716286">İndirme işlemini onaylayın</translation>
 <translation id="6143186082490678276">Yardım Alın</translation>
 <translation id="6144938890088808325">Chromebook'ları iyileştirmemize yardımcı olun</translation>
@@ -3885,6 +3904,7 @@
 <translation id="6602956230557165253">Gezinmek için sol ve sağ okları kullanın.</translation>
 <translation id="6605847144724004692">Henüz hiçbir kullanıcı puan vermedi.</translation>
 <translation id="6607831829715835317">Diğer araç&amp;lar</translation>
+<translation id="6611972847767394631">Sekmelerinizi burada bulabilirsiniz</translation>
 <translation id="6612358246767739896">Korunan içerik</translation>
 <translation id="6615455863669487791">Göster</translation>
 <translation id="6618097958368085618">Yine de Tut</translation>
@@ -3953,6 +3973,7 @@
 <translation id="6709133671862442373">Haberler</translation>
 <translation id="6709357832553498500"><ph name="EXTENSIONNAME" /> uzantısını kullanarak bağlan</translation>
 <translation id="6710213216561001401">Önceki</translation>
+<translation id="6715803357256707211">Linux uygulamanızın yüklenmesi sırasında bir hata oluştu. Ayrıntılar için bildirimi tıklayın.</translation>
 <translation id="6721678857435001674">Güvenlik Anahtarınızın markasını ve modelini görme</translation>
 <translation id="6721972322305477112">&amp;Dosya</translation>
 <translation id="672213144943476270">Lütfen misafir olarak göz atmadan önce profilinizin kilidini açın.</translation>
@@ -3977,7 +3998,6 @@
 <translation id="674632704103926902">Hafifçe vurarak sürüklemeyi etkinleştir</translation>
 <translation id="6748217015615267851">Oluşturucu: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Devam edebilirsiniz, ancak yalnızca senkronize edilen verileriniz ve ayarlarınız geri yüklenecek. Tüm yerel verileri kaybedeceksiniz.</translation>
-<translation id="6748775883310276718">Tek Uygulama Kiosk'u</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Gizli mod)</translation>
 <translation id="6757101664402245801">URL kopyalandı</translation>
 <translation id="6758056191028427665">Bizimle ilgili görüşünüzü bildirin.</translation>
@@ -3987,6 +4007,7 @@
 <translation id="6769712124046837540">Yazıcı ekleniyor...</translation>
 <translation id="6770664076092644100">NFC kullanarak doğrula</translation>
 <translation id="6771503742377376720">Sertifika Yetkilisidir</translation>
+<translation id="6772339735733515807">Uzantılarınızı yönetme</translation>
 <translation id="6775163072363532304">Kullanılabilir cihazlar burada görünür.</translation>
 <translation id="6777817260680419853">Yönlendirme engellendi</translation>
 <translation id="6778737459546443941">Ebeveyniniz henüz onaylamadı</translation>
@@ -4125,6 +4146,7 @@
 <translation id="6972180789171089114">Ses/Video</translation>
 <translation id="6972553992270299730">Sistem dosyaları içerdiği için <ph name="ORIGIN" /> bu klasördeki dosyaları açamaz</translation>
 <translation id="6972754398087986839">Başlarken</translation>
+<translation id="6973611239564315524">Debian 10 (Buster) sürümüne geçiş yapılabilir</translation>
 <translation id="6974609594866392343">Çevrimdışı demo modu</translation>
 <translation id="6977381486153291903">Donanım yazılımı düzeltmesi</translation>
 <translation id="6978121630131642226">Arama Motorları</translation>
@@ -4584,6 +4606,7 @@
 <translation id="7644543211198159466">Renk ve tema</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (cihaz sahibi)</translation>
 <translation id="7645681574855902035">Linux yedeklemesi iptal ediliyor</translation>
+<translation id="7646772052135772216">Şifre senkronizasyonu çalışmıyor</translation>
 <translation id="7647403192093989392">Yeni etkinlik yok</translation>
 <translation id="7648992873808071793">Dosyaları bu cihazda depolama</translation>
 <translation id="7649070708921625228">Yardım</translation>
@@ -4771,6 +4794,7 @@
 <translation id="7877451762676714207">Bilinmeyen sunucu hatası. Lütfen tekrar deneyin veya sunucu yöneticinize başvurun.</translation>
 <translation id="7877680364634660272">Tur</translation>
 <translation id="7878562273885520351">Şifrenizin güvenliği ihlal edilmiş olabilir</translation>
+<translation id="7879631849810108578">Kısayol ayarlandı: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Yeniden başlattığınızda yerel veriler silinir</translation>
 <translation id="7881483672146086348">Hesabı Görüntüle</translation>
 <translation id="7882358943899516840">Sağlayıcı türü</translation>
@@ -4857,6 +4881,7 @@
 <translation id="7987814697832569482">Her zaman bu VPN üzerinden bağlan</translation>
 <translation id="7988355189918024273">Erişilebilirlik özelliklerini etkinleştir</translation>
 <translation id="7991296728590311172">Anahtar Erişimi ayarları</translation>
+<translation id="7994350303002908848">Plugin VM yüklenemedi. Lütfen tekrar deneyin veya kuruluşunuzun cihaz yöneticisiyle iletişime geçin. Hata kodu: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">EAP yöntemi</translation>
 <translation id="7997826902155442747">Süreç Önceliği</translation>
 <translation id="7999229196265990314">Aşağıdaki dosyalar oluşturuldu:
@@ -4949,7 +4974,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Üçüncü taraf çerez yok}=1{1 üçüncü taraf çerez engellendi}other{# üçüncü taraf çerez engellendi}}</translation>
 <translation id="810875025413331850">Yakında olan cihaz bulunamadı.</translation>
 <translation id="8111155949205007504">Bu şifreyi iPhone'unuz ile paylaşın</translation>
-<translation id="8113043281354018522">Lisans türünü seçin</translation>
 <translation id="8114875720387900039">Yatay böl</translation>
 <translation id="8116972784401310538">&amp;Yer imi yöneticisi</translation>
 <translation id="8117620576188476503">Durum tepsisi ile bağlantıları, güncellemeleri ve ayarları yönetin. Klavyeyle buraya ulaşmak için Alt + Üst Karakter + S tuşlarına basın.</translation>
@@ -5106,6 +5130,7 @@
 <translation id="8327039559959785305">Linux dosyaları yüklenirken hata oluştu. Lütfen tekrar deneyin.</translation>
 <translation id="8335587457941836791">Raftaki sabitlemeyi kaldır</translation>
 <translation id="8336407002559723354">Güncellemeler <ph name="MONTH_AND_YEAR" /> tarihinde sona erer</translation>
+<translation id="8336721153892716270">Sistem metnini <ph name="LANGUAGE" /> dilinde göstermek için cihazı yeniden başlatın</translation>
 <translation id="8336739000755212683">Cihaz hesap görüntüsünü değiştir</translation>
 <translation id="8337047789441383384">Bu güvenlik anahtarını zaten kaydettiniz. Tekrar kaydetmeniz gerekmez.</translation>
 <translation id="8338952601723052325">Geliştirici web sitesi</translation>
@@ -5149,6 +5174,7 @@
 <translation id="8400146488506985033">Kişileri yönet</translation>
 <translation id="8401432541486058167">Akıllı kartınızla ilişkilendirilen PIN'i girin.</translation>
 <translation id="8405046151008197676">En yeni güncellemeden öne çıkanları alın</translation>
+<translation id="8408068190360279472"><ph name="NETWORK_TYPE" /> ağı, bağlanıyor</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Önce sor (önerilir)</translation>
 <translation id="8418445294933751433">&amp;Sekme olarak göster</translation>
@@ -5438,6 +5464,7 @@
 <translation id="8807632654848257479">Kararlı</translation>
 <translation id="8808478386290700967">Web Mağazası</translation>
 <translation id="8808686172382650546">Kedi</translation>
+<translation id="8808744862003883508">Chrome'da yüklü tüm uzantıları bu sayfada görebilirsiniz.</translation>
 <translation id="8809147117840417135">Açık turkuaz</translation>
 <translation id="8813698869395535039"><ph name="USERNAME" /> hesabında oturum açılamıyor</translation>
 <translation id="8813811964357448561">kağıt</translation>
@@ -5665,7 +5692,6 @@
 <translation id="9121814364785106365">İğnelenmiş sekme olarak aç</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> duraklatıldı</translation>
 <translation id="9124003689441359348">Kayıtlı şifreleriniz burada görünür</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> tane kaldı)</translation>
 <translation id="9128317794749765148">Kurulum tamamlanamadı</translation>
 <translation id="9128870381267983090">Ağa bağlan</translation>
 <translation id="9130015405878219958">Geçersiz mod girildi</translation>
@@ -5704,6 +5730,7 @@
 <translation id="9188732951356337132">Kullanım ve teşhis verilerini gönder. Bu cihaz şu anda teşhis, cihaz ve uygulama kullanımı verilerini otomatik olarak Google'a gönderiyor. Bu veriler, çocuğunuzun kimliğini tespit etmek için kullanılmaz; sistem ve uygulama kararlılığı ile diğer özellikleri iyileştirmeye yardımcı olur. Bazı birleştirilmiş veriler, Google uygulamalarına ve iş ortaklarına da (ör. Android geliştiricileri) yardımcı olur. Çocuğunuz için ek Web ve Uygulama Etkinliği açıksa bu veriler çocuğunuzun Google Hesabına kaydedilebilir. <ph name="BEGIN_LINK2" />Daha Fazla Bilgi<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + önceden paylaşılan anahtar</translation>
 <translation id="920045321358709304"><ph name="SEARCH_ENGINE" /> üzerinde ara</translation>
+<translation id="9201023452444595544">Tüm çevrimdışı veriler temizlenecek</translation>
 <translation id="9201220332032049474">Ekran kilidi seçenekleri</translation>
 <translation id="9203398526606335860">&amp;Profil oluşturma etkin</translation>
 <translation id="9203904171912129171">Cihaz seçin</translation>
@@ -5716,6 +5743,7 @@
 <translation id="9220525904950070496">Hesabı kaldır</translation>
 <translation id="9220820413868316583">Kaldırın, ardından tekrar deneyin.</translation>
 <translation id="923467487918828349">Tümünü Göster</translation>
+<translation id="929117907539171075">Yüklü uygulamadaki çevrimdışı veriler de temizlenecek</translation>
 <translation id="930268624053534560">Ayrıntılı Zaman Damgaları</translation>
 <translation id="932327136139879170">Ana Sayfa</translation>
 <translation id="932508678520956232">Yazdırma başlatılamadı.</translation>
@@ -5741,6 +5769,7 @@
 <translation id="960719561871045870">Operatör kodu</translation>
 <translation id="960987915827980018">Yaklaşık 1 saat kaldı</translation>
 <translation id="962802172452141067">Yer işareti klasör ağacı</translation>
+<translation id="964057662886721376">Bazı uzantılar, özellikle de bilerek yüklemedikleriniz sizi yavaşlatabilir.</translation>
 <translation id="964286338916298286">BT yöneticiniz cihazınızda Chrome Ekstraları'nı devre dışı bırakmış.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Uygulama}other{Uygulamalar}}</translation>
 <translation id="965211523698323809"><ph name="DEVICE_TYPE" /> cihazınızdan kısa mesaj gönderin ve alın <ph name="LINK_BEGIN" />Daha fazla bilgi<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_uk.xtb b/chrome/app/resources/generated_resources_uk.xtb
index 1756e6f..ce8e5cd43 100644
--- a/chrome/app/resources/generated_resources_uk.xtb
+++ b/chrome/app/resources/generated_resources_uk.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Спеціальне</translation>
 <translation id="1178581264944972037">Пауза</translation>
 <translation id="117916940443676133">Ваш ключ безпеки не захищено PIN-кодом. Щоб керувати даними для входу, спершу створіть PIN-код.</translation>
-<translation id="118069123878619799">- ваші фізичні характеристики, такі як зріст;</translation>
 <translation id="1181037720776840403">Видалити</translation>
 <translation id="1183237619868651138">Не вдається встановити <ph name="EXTERNAL_CRX_FILE" /> у локальному кеші.</translation>
 <translation id="1185924365081634987">Щоб виправити цю помилку мережі, можна також спробувати <ph name="GUEST_SIGNIN_LINK_START" />перегляд у гостьовому режимі<ph name="GUEST_SIGNIN_LINK_END" />.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">Очікування <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033">Інші доступні пристрої: <ph name="NUM_PRINTERS" />.</translation>
 <translation id="1495677929897281669">Назад на вкладку</translation>
+<translation id="1499271269825557605">Якщо ви не впізнаєте розширення або веб-переглядач працює неналежним чином, вимкніть чи налаштуйте розширення тут.</translation>
 <translation id="1500297251995790841">Невідомий пристрій [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Цей обліковий запис власника має бути першим обліковим записом, з якого здійснено вхід під час сеансу паралельного входу.</translation>
 <translation id="150411034776756821">Видалити дані сайту <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Доступ цієї сторінки до вашої камери заблоковано.</translation>
 <translation id="1507246803636407672">&amp;Відхилити</translation>
 <translation id="1508491105858779599">Щоб розблокувати пристрій, прикладіть палець до сканера відбитків пальців.</translation>
+<translation id="1508575541972276599">Поточна версія: Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">Отримувати доступ до будь-якого пристрою <ph name="DEVICE_NAME_AND_VENDOR" /> через USB</translation>
 <translation id="150962533380566081">Недійсний PUK-код.</translation>
 <translation id="1510030919967934016">Цій сторінці заборонено відстежувати ваше місцезнаходження.</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">Застосувати</translation>
 <translation id="1603914832182249871">(Анонімний перегляд)</translation>
 <translation id="1604432177629086300">Не вдається роздрукувати. Перевірте принтер і повторіть спробу.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: синхронізація паролів не працює</translation>
 <translation id="1607139524282324606">Очистити введені дані</translation>
 <translation id="1608626060424371292">Вилучити цього користувача</translation>
 <translation id="1608668830839595724">Додаткові дії для вибраних елементів</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">Дані розміщених програм</translation>
 <translation id="1776712937009046120">Додати користувача</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Цим пристроєм керує <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    Натисніть "Далі", щоб увійти в обліковий запис <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation>
 <translation id="1779652936965200207">Введіть цей ключ на пристрої "<ph name="DEVICE_NAME" />":</translation>
 <translation id="1780152987505130652">Закрити групу</translation>
 <translation id="1781291988450150470">Поточний PIN-код</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">Дія недоступна</translation>
 <translation id="2050339315714019657">Портретна</translation>
 <translation id="2053312383184521053">Дані про неактивний стан</translation>
+<translation id="2055585478631012616">Ви вийдете з облікового запису на цих сайтах, зокрема у відкритих вкладках</translation>
 <translation id="205560151218727633">Логотип Google Асистент</translation>
 <translation id="2058456167109518507">Виявлено пристрій</translation>
 <translation id="2059913712424898428">Часовий пояс</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">Відмінити</translation>
 <translation id="2080070583977670716">Більше налаштувань</translation>
 <translation id="2087822576218954668">Друк: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">Мережа VPN</translation>
 <translation id="2089566709556890888">Безпечний перегляд сайтів у Google Chrome</translation>
 <translation id="2089795179672254991">Запитувати, коли сайт хоче переглядати тексти й зображення в буфері обміну (рекомендується)</translation>
 <translation id="2090165459409185032">Щоб відновити дані облікового запису, перейдіть на сторінку google.com/accounts/recovery</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">Сайт має доступ до аудіо- й відеовходу</translation>
 <translation id="2379281330731083556">Друкувати за допомогою діалогового вікна системи... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Запитувати, перш ніж надсилати (рекомендується)</translation>
+<translation id="2382818385048255866">Перевірте розширення</translation>
 <translation id="2384436799579181135">Сталася помилка. Перевірте принтер і повторіть спробу.</translation>
 <translation id="2387458720915042159">Тип з’єднання з проксі-сервером</translation>
 <translation id="2391419135980381625">Стандартний шрифт</translation>
@@ -1036,6 +1043,7 @@
 <translation id="2462724976360937186">Ідентифікатор ключа центру сертифікації</translation>
 <translation id="2462752602710430187">Додано принтер <ph name="PRINTER_NAME" /></translation>
 <translation id="2464089476039395325">Проксі-сервер HTTP</translation>
+<translation id="2467267713099745100">Мережа <ph name="NETWORK_TYPE" />: вимкнено</translation>
 <translation id="2468205691404969808">Використовує файли cookie, щоб запам’ятовувати налаштування, навіть якщо ви не відвідуєте ці сторінки</translation>
 <translation id="2468402215065996499">Тамагочі</translation>
 <translation id="2469259292033957819">Немає збережених принтерів.</translation>
@@ -1290,6 +1298,7 @@
 <translation id="2800760947029405028">Завантажити зображення</translation>
 <translation id="2803375539583399270">Введіть PIN-код</translation>
 <translation id="2804043232879091219">Не вдалося відкрити альтернативний веб-переглядач</translation>
+<translation id="2804667941345577550">Ви вийдете з облікового запису на цьому сайті, зокрема у відкритих вкладках</translation>
 <translation id="2804680522274557040">Камеру вимкнено</translation>
 <translation id="2805646850212350655">Система шифрування файлів Microsoft</translation>
 <translation id="2805756323405976993">Додатки</translation>
@@ -1297,6 +1306,7 @@
 <translation id="2806891468525657116">Ярлик уже є</translation>
 <translation id="2807517655263062534">Тут відображаються завантажені файли</translation>
 <translation id="2809586584051668049">і ще <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2810390687497823527">Якщо ви не впізнаєте розширення або веб-переглядач працює неналежним чином, вимкніть чи налаштуйте розширення тут.</translation>
 <translation id="2812049959647166806">Thunderbolt не підтримується</translation>
 <translation id="2812944337881233323">Вийдіть зі свого облікового запису та ввійдіть у нього знову</translation>
 <translation id="2812989263793994277">Не показувати жодних зображень</translation>
@@ -1336,6 +1346,7 @@
 <translation id="2861941300086904918">Менеджер безпеки Native Client</translation>
 <translation id="2864601841139725659">Налаштуйте зображення профілю</translation>
 <translation id="2865919525181940183">Знімок екрана з відкритими програмами</translation>
+<translation id="286674810810214575">Перевірка джерел живлення…</translation>
 <translation id="2867768963760577682">Відкрити як закріплену вкладку</translation>
 <translation id="2868746137289129307">Це розширення застаріле; його вимкнено політикою підприємства. Якщо буде доступна нова версія, розширення ввімкнеться автоматично.</translation>
 <translation id="2870560284913253234">Сайт</translation>
@@ -1413,6 +1424,7 @@
 <translation id="2972581237482394796">&amp;Повторити</translation>
 <translation id="2973324205039581528">Вимкнути звук на сайті</translation>
 <translation id="2977480621796371840">Вилучити з групи</translation>
+<translation id="2979520980928493164">Ще безпечніший і продуктивніший Chrome</translation>
 <translation id="2979639724566107830">Відкрити в новому вікні</translation>
 <translation id="2981113813906970160">Показувати великий курсор миші</translation>
 <translation id="2982970937345031">Поскаржитись анонімно</translation>
@@ -1519,6 +1531,7 @@
 <translation id="3143515551205905069">Скасувати синхронізацію</translation>
 <translation id="3143754809889689516">Відтворити з початку</translation>
 <translation id="3144647712221361880">Відкрити посилання як</translation>
+<translation id="3145187901750964977">Не вдалося встановити віртуальну машину. Повторіть спробу або зв'яжіться з адміністратором пристрою у своїй організації. Код помилки: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Версія:
     <ph name="LINUX_VERSION" />
 
@@ -1557,6 +1570,7 @@
 <translation id="3192947282887913208">Аудіофайли</translation>
 <translation id="3194737229810486521">Сайт <ph name="URL" /> хоче постійно зберігати дані на вашому пристрої</translation>
 <translation id="3199127022143353223">Сервери</translation>
+<translation id="3201306578844503970">Не вдалося встановити віртуальну машину через помилку мережі. Повторіть спробу або зв'яжіться з адміністратором пристрою у своїй організації. Код помилки: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Тут з’являться доступні пристрої USB.</translation>
 <translation id="3202131003361292969">Шлях</translation>
 <translation id="3202173864863109533">Звук на цій вкладці вимкнено.</translation>
@@ -1893,7 +1907,6 @@
 <translation id="3678156199662914018">Розширення: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Дякуємо за відгук. Звіт буде надіслано пізніше, оскільки зараз ви офлайн.</translation>
 <translation id="3682824389861648626">Мінімальна кількість рухів</translation>
-<translation id="3683023058278427253">Ми виявили кілька типів ліцензій для вашого домену. Щоб продовжити, виберіть ліцензію.</translation>
 <translation id="3683524264665795342">Запит на спільний доступ до екрана від програми <ph name="APP_NAME" /></translation>
 <translation id="368789413795732264">Під час спроби запису файлу сталася помилка: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Записувати у файли та папки, які ви відкриваєте в програмі</translation>
@@ -2067,6 +2080,7 @@
 <translation id="389589731200570180">Використовувати спільно з гостями</translation>
 <translation id="389901847090970821">Виберіть клавіатуру</translation>
 <translation id="3899879303189199559">Офлайн понад рік</translation>
+<translation id="3900789207771372462">Деякі розширення можуть бачити ваші дії у веб-переглядачі, зокрема особисту інформацію.</translation>
 <translation id="3900966090527141178">Експортувати паролі</translation>
 <translation id="3901991538546252627">Під’єднання до <ph name="NAME" /></translation>
 <translation id="3905761538810670789">Відновити додаток</translation>
@@ -2157,7 +2171,6 @@
 <translation id="4013132157686828973"><ph name="CLIENT_NAME" /> налагоджує цей веб-переглядач</translation>
 <translation id="4014432863917027322">Відновити розширення <ph name="EXTENSION_NAME" />?</translation>
 <translation id="4015163439792426608">Користуєтеся розширеннями? <ph name="BEGIN_LINK" />Керуйте ними<ph name="END_LINK" /> в єдиному зручному місці.</translation>
-<translation id="4020106588733303597">На жаль, системі не вдалося завантажити доступні ліцензії.</translation>
 <translation id="4020327272915390518">Меню параметрів</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Додати до словника</translation>
@@ -2195,6 +2208,7 @@
 <translation id="407520071244661467">Масштаб</translation>
 <translation id="4075639477629295004">Не вдається транслювати файл <ph name="FILE_NAME" />.</translation>
 <translation id="4077917118009885966">На цьому сайті заблоковано показ реклами</translation>
+<translation id="4077919383365622693">Усі дані й файли cookie, збережені сайтом <ph name="SITE" />, буде видалено.</translation>
 <translation id="4079140982534148664">Використовувати покращену перевірку орфографії</translation>
 <translation id="4081242589061676262">Не вдається транслювати файл.</translation>
 <translation id="4084682180776658562">Закладка</translation>
@@ -2269,6 +2283,7 @@
 <translation id="4181841719683918333">Мови</translation>
 <translation id="4184885522552335684">Потягніть, щоб перемістити дисплей</translation>
 <translation id="4194570336751258953">Увімкнути функцію "торкнутися, щоб натиснути"</translation>
+<translation id="4194595472342532425">Не вдалося налаштувати Plugin VM через проблему з конфігурацією. Зв'яжіться з адміністратором пристрою у своїй організації. Код помилки: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Відкрити в новій вкладці</translation>
 <translation id="4195814663415092787">Продовжити з місця зупинки</translation>
 <translation id="4198146608511578238">Утримуйте значок "Панель запуску", щоб спілкуватися з Google Асистентом.</translation>
@@ -2492,6 +2507,7 @@
 <translation id="4549791035683739768">На ключі безпеки немає збережених відбитків</translation>
 <translation id="4551763574344810652">Щоб відмінити, натисніть <ph name="MODIFIER_KEY_DESCRIPTION" /></translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005">Мережа <ph name="NETWORK_TYPE" />, рівень сигналу – <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">Зовнішнє розширення має таку саму або нижчу версію порівняно з наявним.</translation>
 <translation id="4555769855065597957">Shadow</translation>
 <translation id="4555863373929230635">Щоб зберігати паролі в обліковому записі Google, увійдіть у нього й увімкніть синхронізацію.</translation>
@@ -2569,6 +2585,7 @@
 <translation id="4665446389743427678">Усі дані, збережені сайтом <ph name="SITE" /> буде видалено.</translation>
 <translation id="4668721319092543482">Натисніть, щоб увімкнути плагін <ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">Сторінка перетворення</translation>
+<translation id="46733273239502219">Офлайн-дані в установлених додатках також буде видалено</translation>
 <translation id="4673442866648850031">Відкривати інструменти стилуса, коли стилус витягнуто</translation>
 <translation id="4677585247300749148">Сайт <ph name="URL" /> хоче реагувати на використання спеціальних можливостей</translation>
 <translation id="4677772697204437347">Пам’ять GPU</translation>
@@ -2660,7 +2677,6 @@
 <translation id="4823484602432206655">Переглядати та змінювати налаштування користувача й пристрою</translation>
 <translation id="4824958205181053313">Скасувати синхронізацію?</translation>
 <translation id="4827675678516992122">Не вдалося під’єднатись</translation>
-<translation id="4828937774870308359">Австралійське</translation>
 <translation id="4829768588131278040">Налаштувати PIN-код</translation>
 <translation id="4830502475412647084">Установлюється оновлення ОС</translation>
 <translation id="4830573902900904548">Ваш <ph name="DEVICE_TYPE" /> не може під’єднатися до Інтернету через мережу "<ph name="NETWORK_NAME" />". Виберіть іншу. <ph name="LEARN_MORE_LINK_START" />Докладніше<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2701,6 +2717,7 @@
 <translation id="4876273079589074638">Допоможіть нашим розробникам вивчити та виправити аварійне завершення роботи. Опишіть усі свої дії. Кожна деталь важлива.</translation>
 <translation id="4876895919560854374">Блокувати чи розблоковувати екран</translation>
 <translation id="4877276003880815204">Перевірити елементи</translation>
+<translation id="4878653975845355462">Адміністратор вимкнув можливість встановлення власних фонів</translation>
 <translation id="4879491255372875719">Автоматично (за умовчанням)</translation>
 <translation id="4880328057631981605">Ім’я точки доступу</translation>
 <translation id="4880827082731008257">Пошук в історії</translation>
@@ -2756,10 +2773,10 @@
 <translation id="4943691134276646401"><ph name="CHROME_EXTENSION_NAME" /> хоче під’єднатися до послідовного порту</translation>
 <translation id="4944310289250773232">Цей сервіс автентифікації розміщує <ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">Дії</translation>
+<translation id="4952981627953231344">На пристрої заборонено використовувати Plugin VM. Зв'яжіться з адміністратором пристрою у своїй організації.</translation>
 <translation id="4953689047182316270">реагувати на події спеціальних можливостей</translation>
 <translation id="4953808748584563296">Стандартний оранжевий аватар</translation>
 <translation id="4955710816792587366">Придумайте PIN-код</translation>
-<translation id="4955814292505481804">Річна ліцензія</translation>
 <translation id="4959262764292427323">Паролі зберігаються в обліковому записі Google, щоб ви могли користуватися ними на будь-якому пристрої</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> – <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Цей додаток установлено адміністратором.</translation>
@@ -3241,7 +3258,6 @@
 <translation id="5659593005791499971">Електронна пошта</translation>
 <translation id="5659833766619490117">Цю сторінку неможливо перекласти</translation>
 <translation id="5660204307954428567">Підключити до пристрою <ph name="DEVICE_NAME" />?</translation>
-<translation id="5662477687021125631">Безстрокова ліцензія</translation>
 <translation id="5667546120811588575">Налаштування Google Play…</translation>
 <translation id="5669267381087807207">Активація</translation>
 <translation id="5669691691057771421">Введіть новий PIN-код</translation>
@@ -3257,6 +3273,7 @@
 <translation id="5687326903064479980">Часовий пояс</translation>
 <translation id="5689516760719285838">Місцезнаходження</translation>
 <translation id="56907980372820799">Зв’язати облікові записи</translation>
+<translation id="5691180005790455277">Усі дані й файли cookie, збережені сайтом <ph name="SITE_GROUP_NAME" /> і сайтами його групи, буде видалено.</translation>
 <translation id="5691511426247308406">Сім’я</translation>
 <translation id="5692183275898619210">Друк завершено</translation>
 <translation id="5696143504434933566">Поскаржитися на розширення <ph name="EXTENSION_NAME" /></translation>
@@ -3343,7 +3360,6 @@
 <translation id="5815645614496570556">Адреса каталогу X.400</translation>
 <translation id="5816434091619127343">Після цих змін принтер стане непридатним для використання.</translation>
 <translation id="5817918615728894473">Підключити</translation>
-<translation id="5819762621475381970">- вигляд вашої кімнати.</translation>
 <translation id="5821565227679781414">Створити ярлик</translation>
 <translation id="5825412242012995131">Увімкнено (рекомендовано)</translation>
 <translation id="5826395379250998812">Під'єднайте <ph name="DEVICE_TYPE" /> до телефона. <ph name="LINK_BEGIN" />Докладніше<ph name="LINK_END" /></translation>
@@ -3479,6 +3495,7 @@
 <translation id="6007240208646052708">Голосовий пошук недоступний вашою мовою.</translation>
 <translation id="6009781704028455063">Вбудований датчик</translation>
 <translation id="6010869025736512584">Отримання доступу до відеовходу</translation>
+<translation id="6011074160056912900">Мережа Ethernet</translation>
 <translation id="6011193465932186973">Відбиток пальця</translation>
 <translation id="6011449291337289699">Очистити дані веб-сайту</translation>
 <translation id="6015266928248016057">Недійсний PUK-код. Залишилося стільки спроб: <ph name="RETRIES" />.</translation>
@@ -3515,6 +3532,7 @@
 <translation id="6053401458108962351">&amp;Очистити дані веб-перегляду...</translation>
 <translation id="6055171183283175969">Введений пароль неправильний.</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 із шифруванням RSA</translation>
+<translation id="6055907707645252013">Мережа <ph name="NETWORK_TYPE" />, не під'єднано до Інтернету</translation>
 <translation id="6056710589053485679">Звичайне перезавантаження</translation>
 <translation id="6057381398996433816">Цьому сайту заборонено використовувати датчики руху та світла.</translation>
 <translation id="6058567592298841668">Віртуальна машина плагіна: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3578,6 +3596,7 @@
 <translation id="6136114942382973861">Закрити панель завантажень</translation>
 <translation id="6137767437444130246">Сертифікат користувача</translation>
 <translation id="6138680304137685902">Алгоритм ECDSA X9.62 з підписом SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, немає мережі</translation>
 <translation id="6141988275892716286">Підтвердити завантаження</translation>
 <translation id="6143186082490678276">Довідка</translation>
 <translation id="6144938890088808325">Допоможіть нам покращити Chromebook</translation>
@@ -3884,6 +3903,7 @@
 <translation id="6602956230557165253">Використовуйте ліву та праву клавіші зі стрілками для навігації.</translation>
 <translation id="6605847144724004692">Ще немає оцінок користувачів.</translation>
 <translation id="6607831829715835317">Інші інстру&amp;менти</translation>
+<translation id="6611972847767394631">Знайдіть свої вкладки тут</translation>
 <translation id="6612358246767739896">Захищений вміст</translation>
 <translation id="6615455863669487791">Показати</translation>
 <translation id="6618097958368085618">Усе одно завантажити</translation>
@@ -3952,6 +3972,7 @@
 <translation id="6709133671862442373">Новини</translation>
 <translation id="6709357832553498500">Під’єднатися за допомогою розширення <ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Попереднє</translation>
+<translation id="6715803357256707211">Під час встановлення додатка Linux сталася помилка. Щоб дізнатися більше, натисніть сповіщення.</translation>
 <translation id="6721678857435001674">Переглядати марку й модель ключа безпеки</translation>
 <translation id="6721972322305477112">&amp;Файл</translation>
 <translation id="672213144943476270">Перш ніж переглядати сторінки в гостьовому режимі, розблокуйте профіль.</translation>
@@ -3976,7 +3997,6 @@
 <translation id="674632704103926902">Увімкнути перетягування дотиком</translation>
 <translation id="6748217015615267851">Засіб обробки відео: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Ви можете продовжити, однак буде відновлено лише синхронізовані дані та налаштування. Усі локальні дані буде втрачено.</translation>
-<translation id="6748775883310276718">Термінал з одним додатком</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Анонімний перегляд)</translation>
 <translation id="6757101664402245801">URL-адресу скопійовано</translation>
 <translation id="6758056191028427665">Поділіться з нами своїми враженнями.</translation>
@@ -3986,6 +4006,7 @@
 <translation id="6769712124046837540">Додавання принтера…</translation>
 <translation id="6770664076092644100">Підтвердити через NFC</translation>
 <translation id="6771503742377376720">Є Центром сертифікації</translation>
+<translation id="6772339735733515807">Керування розширеннями</translation>
 <translation id="6775163072363532304">Тут відображатимуться доступні пристрої.</translation>
 <translation id="6777817260680419853">Переспрямування заблоковано</translation>
 <translation id="6778737459546443941">Батьки ще не схвалили його</translation>
@@ -4124,6 +4145,7 @@
 <translation id="6972180789171089114">Звук і відео</translation>
 <translation id="6972553992270299730">Сайт <ph name="ORIGIN" /> не може відкривати файли в цій папці, оскільки вона містить системні файли</translation>
 <translation id="6972754398087986839">Почати</translation>
+<translation id="6973611239564315524">Доступне оновлення Debian 10 (Buster)</translation>
 <translation id="6974609594866392343">Демо-режим офлайн</translation>
 <translation id="6977381486153291903">Мікропрограма</translation>
 <translation id="6978121630131642226">Пошукові системи</translation>
@@ -4583,6 +4605,7 @@
 <translation id="7644543211198159466">Колір і тема</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (власник)</translation>
 <translation id="7645681574855902035">Скасовується резервне копіювання Linux</translation>
+<translation id="7646772052135772216">Синхронізація паролів не працює</translation>
 <translation id="7647403192093989392">Немає останніх дій</translation>
 <translation id="7648992873808071793">Зберігати файли на цьому пристрої</translation>
 <translation id="7649070708921625228">Довідка</translation>
@@ -4771,6 +4794,7 @@
 <translation id="7877451762676714207">Невідома помилка сервера. Повторіть спробу чи зв’яжіться з адміністратором сервера.</translation>
 <translation id="7877680364634660272">Огляд</translation>
 <translation id="7878562273885520351">Ваш пароль можуть зламати</translation>
+<translation id="7879631849810108578">Комбінацію клавіш установлено: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Локальні дані буде видалено під час перезапуску</translation>
 <translation id="7881483672146086348">Переглянути обліковий запис</translation>
 <translation id="7882358943899516840">Тип постачальника</translation>
@@ -4857,6 +4881,7 @@
 <translation id="7987814697832569482">Завжди підключатися через цю мережу VPN</translation>
 <translation id="7988355189918024273">Увімкнути функції доступності</translation>
 <translation id="7991296728590311172">Налаштування кнопкового доступу</translation>
+<translation id="7994350303002908848">Не вдалося встановити Plugin VM. Повторіть спробу або зв'яжіться з адміністратором пристрою у своїй організації. Код помилки: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">Метод EAP</translation>
 <translation id="7997826902155442747">Пріоритет обробки</translation>
 <translation id="7999229196265990314">Створено такі файли:
@@ -4949,7 +4974,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Немає файлів cookie третіх сторін}=1{Заблоковано 1 файл cookie третіх сторін}one{Заблоковано # файл cookie третіх сторін}few{Заблоковано # файли cookie третіх сторін}many{Заблоковано # файлів cookie третіх сторін}other{Заблоковано # файлу cookie третіх сторін}}</translation>
 <translation id="810875025413331850">Пристроїв поблизу не знайдено.</translation>
 <translation id="8111155949205007504">Надішліть цей пароль на пристрій iPhone</translation>
-<translation id="8113043281354018522">Виберіть тип ліцензії</translation>
 <translation id="8114875720387900039">Розділити горизонтально</translation>
 <translation id="8116972784401310538">&amp;Диспетчер закладок</translation>
 <translation id="8117620576188476503">Керуйте з’єднаннями, оновленнями та налаштуваннями за допомогою панелі статусу. Щоб відкрити панель статусу з клавіатури, натисніть Alt+Shift+S.</translation>
@@ -5106,6 +5130,7 @@
 <translation id="8327039559959785305">Помилка підключення файлів Linux. Повторіть спробу.</translation>
 <translation id="8335587457941836791">Відкріпити з полиці</translation>
 <translation id="8336407002559723354">Оновлення не надходитимуть після такого часу: <ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Перезапустити пристрій, щоб <ph name="LANGUAGE" /> була мовою системи</translation>
 <translation id="8336739000755212683">Змінити зображення облікового запису на пристрої</translation>
 <translation id="8337047789441383384">Ви вже зареєстрували цей ключ безпеки. Не потрібно робити це знову.</translation>
 <translation id="8338952601723052325">Веб-сайт розробника</translation>
@@ -5149,6 +5174,7 @@
 <translation id="8400146488506985033">Керувати користувачами</translation>
 <translation id="8401432541486058167">Укажіть PIN-код, зв'язаний із вашою розумною карткою.</translation>
 <translation id="8405046151008197676">Отримайте інформацію про останнє оновлення</translation>
+<translation id="8408068190360279472">Мережа <ph name="NETWORK_TYPE" />: підключення</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Спершу запитувати (рекомендується)</translation>
 <translation id="8418445294933751433">&amp;Показати як вкладку</translation>
@@ -5438,6 +5464,7 @@
 <translation id="8807632654848257479">Стабільний</translation>
 <translation id="8808478386290700967">Web Store</translation>
 <translation id="8808686172382650546">Кіт</translation>
+<translation id="8808744862003883508">На цій сторінці можна переглянути всі розширення, установлені в Chrome.</translation>
 <translation id="8809147117840417135">Світло-бірюзовий</translation>
 <translation id="8813698869395535039">Не вдається ввійти в обліковий запис <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">аркуш паперу</translation>
@@ -5665,7 +5692,6 @@
 <translation id="9121814364785106365">Відкрити як закріплену вкладку</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" />: призупинено</translation>
 <translation id="9124003689441359348">Тут відображатимуться збережені паролі</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (залишилося: <ph name="LICENSE_COUNT" />)</translation>
 <translation id="9128317794749765148">Не вдалося завершити встановлення</translation>
 <translation id="9128870381267983090">З'єднатися з мережею</translation>
 <translation id="9130015405878219958">Введено недійсний режим.</translation>
@@ -5704,6 +5730,7 @@
 <translation id="9188732951356337132">Надсилати дані про використання й діагностику. Цей пристрій наразі автоматично надсилає в Google дані про діагностику та використання пристрою і додатків. Ця інформація не використовуватиметься для встановлення особи вашої дитини, а допоможе покращити стабільність системи, додатків тощо. Деякі зведені дані також корисні для додатків і партнерів Google, як-от розробників Android. Якщо ввімкнено додаткову Історію додатків і веб-пошуку, ці дані зберігаються в обліковому записі Google дитини. <ph name="BEGIN_LINK2" />Докладніше<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPSec + Спільний ключ</translation>
 <translation id="920045321358709304">Пошук у <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">Усі дані, збережені офлайн, буде видалено</translation>
 <translation id="9201220332032049474">Способи блокування екрана</translation>
 <translation id="9203398526606335860">&amp;Профілювання ввімкнено</translation>
 <translation id="9203904171912129171">Виберіть пристрій</translation>
@@ -5716,6 +5743,7 @@
 <translation id="9220525904950070496">Видалення облікового запису</translation>
 <translation id="9220820413868316583">Підніміть палець, а потім повторіть спробу.</translation>
 <translation id="923467487918828349">Показати всі</translation>
+<translation id="929117907539171075">Офлайн-дані в установленому додатку також буде видалено</translation>
 <translation id="930268624053534560">Детальні позначки часу</translation>
 <translation id="932327136139879170">Домашня сторінка</translation>
 <translation id="932508678520956232">Не вдалося ініціювати друк.</translation>
@@ -5741,6 +5769,7 @@
 <translation id="960719561871045870">Код оператора</translation>
 <translation id="960987915827980018">Залишилася приблизно 1 год.</translation>
 <translation id="962802172452141067">Дерево папок із закладками</translation>
+<translation id="964057662886721376">Деякі розширення можуть сповільнювати роботу, зокрема ті, які ви не збиралися встановлювати.</translation>
 <translation id="964286338916298286">ІТ-адміністратор вимкнув додаткові можливості Chrome для вашого пристрою.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Додаток}one{Додатки}few{Додатки}many{Додатки}other{Додатки}}</translation>
 <translation id="965211523698323809">Обмінюйтеся текстовими повідомленнями за допомогою <ph name="DEVICE_TYPE" />. <ph name="LINK_BEGIN" />Докладніше<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_ur.xtb b/chrome/app/resources/generated_resources_ur.xtb
index 78ac20a..750044a9 100644
--- a/chrome/app/resources/generated_resources_ur.xtb
+++ b/chrome/app/resources/generated_resources_ur.xtb
@@ -134,7 +134,6 @@
 <translation id="1177863135347784049">حسب ضرورت</translation>
 <translation id="1178581264944972037">موقوف کریں</translation>
 <translation id="117916940443676133">‏آپ کی سیکیورٹی کلید PIN کے ذریعے محفوظ نہیں ہے۔ سائن ان ڈیٹا کا نظم کرنے کے لیے پہلے ایک PIN تخلیق کریں۔</translation>
-<translation id="118069123878619799">- آپ کی جسمانی خصوصیات، جیسے کہ قد</translation>
 <translation id="1181037720776840403">ہٹائیں</translation>
 <translation id="1183237619868651138">مقامی کیش میں <ph name="EXTERNAL_CRX_FILE" /> کو انسٹال نہیں کیا جا سکتا ہے۔</translation>
 <translation id="1185924365081634987">یہ نیٹ ورک خرابی حل کرنے کیلئے آپ <ph name="GUEST_SIGNIN_LINK_START" />مہمان کے بطور براؤز<ph name="GUEST_SIGNIN_LINK_END" /> کرنے کی بھی کوشش کر سکتے ہیں۔</translation>
@@ -353,6 +352,7 @@
 <translation id="1493892686965953381"><ph name="LOAD_STATE_PARAMETER" /> کیلئے منتظر…</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> دیگر دستیاب آلات۔</translation>
 <translation id="1495677929897281669">ٹیب پر واپس جائیں</translation>
+<translation id="1499271269825557605">اگر آپ ایکسٹینشن کی شناخت نہیں کرتے ہیں، یا آپ کا براؤزر توقع کے مطابق کام نہیں کرتا ہے، تو آپ ایکسٹینشنز کو آف یا یہاں ان کو جسب ضرورت بنا سکتے ہیں۔</translation>
 <translation id="1500297251995790841">نامعلوم آلہ [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">اس مالک کے اکاؤنٹ کو متعدد سائن ان سیشن میں پہلا سائن ان کردہ اکاؤنٹ ہونا چاہئے۔</translation>
 <translation id="150411034776756821"><ph name="SITE" /> کو ہٹائیں</translation>
@@ -360,6 +360,7 @@
 <translation id="1507170440449692343">اس صفحہ کو آپ کے کیمرا تک رسائی حاصل کرنے سے مسدود کر دیا گیا ہے۔</translation>
 <translation id="1507246803636407672">&amp;مسترد کریں</translation>
 <translation id="1508491105858779599">آلہ غیر مقفل کرنے کیلئے اپنی انگلی کو فنگرپرنٹ سینسر پر رکھیں۔</translation>
+<translation id="1508575541972276599">‏موجودہ ورژن Debian 9 ‏(Stretch)‏ ہے‪</translation>
 <translation id="1509281256533087115">‏USB کے ذریعے کسی بھی <ph name="DEVICE_NAME_AND_VENDOR" /> تک رسائی حاصل کریں</translation>
 <translation id="150962533380566081">‏غلط PUK۔</translation>
 <translation id="1510030919967934016">اس صفحہ کو آپ کے مقام کو ٹریک کرنے سے مسدود کر دیا گیا ہے۔</translation>
@@ -435,6 +436,7 @@
 <translation id="1601560923496285236">لاگو کریں</translation>
 <translation id="1603914832182249871">(پوشیدگی)</translation>
 <translation id="1604432177629086300">پرنٹ نہیں کیا جا سکا۔ پرنٹر چیک کریں اور دوبارہ کوشش کریں۔</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: پاس ورڈ کی مطابقت پذیری کام نہیں کر رہی ہے</translation>
 <translation id="1607139524282324606">داخلہ صاف کریں</translation>
 <translation id="1608626060424371292">اس صارف کو ہٹائیں</translation>
 <translation id="1608668830839595724">منتخب کردہ آئٹمز کیلئے مزید کارروائیاں</translation>
@@ -561,6 +563,8 @@
 <translation id="177336675152937177">میزبانی کردہ ایپ کا ڈیٹا</translation>
 <translation id="1776712937009046120">صارف کو شامل کریں</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">یہ آلہ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> کے زیر انتظام ہے۔
+    اپنے <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> اکاؤنٹ میں سائن ان جاری رکھنے کیلئے براہ کرم "آگے" پر کلک کریں۔</translation>
 <translation id="1779652936965200207">براہ کرم "<ph name="DEVICE_NAME" />" پر یہ پاس کی درج کریں۔</translation>
 <translation id="1780152987505130652">گروپ بند کریں</translation>
 <translation id="1781291988450150470">‏موجودہ PIN</translation>
@@ -748,6 +752,7 @@
 <translation id="2048653237708779538">کارروائی دستیاب نہیں ہے</translation>
 <translation id="2050339315714019657">پورٹریٹ</translation>
 <translation id="2053312383184521053">معطل صورتحال کا ڈیٹا</translation>
+<translation id="2055585478631012616">اوپن ٹیبز سمیت، آپ ان سائٹس سے سائن آؤٹ ہو جائیں گے</translation>
 <translation id="205560151218727633">‏Google اسسٹنٹ لوگو</translation>
 <translation id="2058456167109518507">آلہ کا پتا چلا</translation>
 <translation id="2059913712424898428">ٹائم زون</translation>
@@ -763,6 +768,7 @@
 <translation id="2079545284768500474">کالعدم کریں</translation>
 <translation id="2080070583977670716">مزید ترتیبات</translation>
 <translation id="2087822576218954668">پرنٹ کریں: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">‏VPN نیٹ ورک</translation>
 <translation id="2089566709556890888">‏Google Chrome کے ساتھ محفوظ طریقے سے براؤز کریں</translation>
 <translation id="2089795179672254991">جب کوئی سائٹ کلپ بورڈ میں کاپی کیے گئے متن اور تصاویر دیکھنا چاہے تو پوچھیں (تجویز کردہ)</translation>
 <translation id="2090165459409185032">‏اپنے اکاؤنٹ کی معلومات کی بازیابی کیلئے، اس پر جائیں: google.com/accounts/recovery</translation>
@@ -986,6 +992,7 @@
 <translation id="2379232090534544565">ایک سائٹ آڈیو اور ویڈیو ان پٹ تک رسائی حاصل کر رہی ہے</translation>
 <translation id="2379281330731083556">سسٹم ڈائیلاگ کا استعمال کر کے پرنٹ کریں… <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">بھیجنے سے پہلے پوچھیں (تجویز کردہ)</translation>
+<translation id="2382818385048255866">اپنی ایکسٹینشنز چیک کریں</translation>
 <translation id="2384436799579181135">ایک خرابی پیش آ گئی ہے۔ براہ کرم اپنا پرٹنر چیک کریں اور دوبارہ کوشش کریں۔</translation>
 <translation id="2387458720915042159">پراکسی کنکشن کی قسم</translation>
 <translation id="2391419135980381625">معیاری فونٹ</translation>
@@ -1037,6 +1044,7 @@
 <translation id="2462724976360937186">‏سرٹیفکیشن اتھارٹی کلید URL</translation>
 <translation id="2462752602710430187"><ph name="PRINTER_NAME" /> کو شامل کر دیا گیا</translation>
 <translation id="2464089476039395325">‏HTTP پراکسی</translation>
+<translation id="2467267713099745100"><ph name="NETWORK_TYPE" /> نیٹ ورک، آف ہے</translation>
 <translation id="2468205691404969808">چاہے آپ وہ صفحات ملاحظہ نہ کریں، تب بھی آپ کی ترجیحات یاد رکھنے کے لیے کوکیز استعمال کرتا ہے</translation>
 <translation id="2468402215065996499">تاما گوچی</translation>
 <translation id="2469259292033957819">آپ کے پاس محفوظ کردہ کوئی پرنٹر نہیں ہے۔</translation>
@@ -1291,6 +1299,7 @@
 <translation id="2800760947029405028">ایک تصویر اپ لوڈ کریں</translation>
 <translation id="2803375539583399270">‏PIN درج کریں</translation>
 <translation id="2804043232879091219">متبادل براؤزر نہیں کھل سکا</translation>
+<translation id="2804667941345577550">اوپن ٹیبز سمیت، آپ اس سائٹ سے سائن آؤٹ ہو جائیں گے</translation>
 <translation id="2804680522274557040">کیمرا آف ہے</translation>
 <translation id="2805646850212350655">‏Microsoft مرموزکاری فائل سسٹم</translation>
 <translation id="2805756323405976993">اطلاقات</translation>
@@ -1298,6 +1307,7 @@
 <translation id="2806891468525657116">شارٹ کٹ پہلے سے موجود ہے</translation>
 <translation id="2807517655263062534">آپ کی ڈاؤن لوڈ کردہ فائلز یہاں ظاہر ہوتی ہیں</translation>
 <translation id="2809586584051668049">اور <ph name="NUMBER_ADDITIONAL_DISABLED" /> مزید</translation>
+<translation id="2810390687497823527">اگر آپ ایکسٹینشن کی شناخت نہیں کرتے ہیں، یا آپ کا براؤزر توقع کے مطابق کام نہیں کرتا ہے، تو آپ ایکسٹینشنز کو آف یا یہاں ان کو حسب ضرورت بنا سکتے ہیں۔</translation>
 <translation id="2812049959647166806">‏Thunderbolt تعاون یافتہ نہیں ہے</translation>
 <translation id="2812944337881233323">سائن آؤٹ اور پھر دوبارہ سائن ان کر کے دیکھیں</translation>
 <translation id="2812989263793994277">کوئی تصاویر نہ دکھائیں</translation>
@@ -1337,6 +1347,7 @@
 <translation id="2861941300086904918">‏Native Client سیکیورٹی مینیجر</translation>
 <translation id="2864601841139725659">اپنے پروفائل کی تصویر سیٹ کریں</translation>
 <translation id="2865919525181940183">ان پروگرامز کا اسکرین شاٹ جو فی الحال اسکرین پر موجود ہے</translation>
+<translation id="286674810810214575">پاور کے ذارائع چیک کیے جا رہے ہیں...</translation>
 <translation id="2867768963760577682">پن کردہ ٹیب کے بطور کھولیں</translation>
 <translation id="2868746137289129307">یہ ایکسٹینشن پرانا ہے اور انٹرپرائز پالیسی کی جانب سے غیر فعال کر دیا گیا ہے۔ ایک نیا ورژن دستیاب ہو جانے پر یہ خود بخود فعال ہو سکتا ہے۔</translation>
 <translation id="2870560284913253234">سائٹ</translation>
@@ -1414,6 +1425,7 @@
 <translation id="2972581237482394796">&amp;واپس لائیں</translation>
 <translation id="2973324205039581528">سائٹ کی آواز بند کریں</translation>
 <translation id="2977480621796371840">گروپ سے ہٹائیں</translation>
+<translation id="2979520980928493164">‏صحت مند، خوش مزاج Chrome</translation>
 <translation id="2979639724566107830">نئی ونڈو میں کھولیں</translation>
 <translation id="2981113813906970160">بڑا ماؤس کرسر دکھائیں</translation>
 <translation id="2982970937345031">گمنام طریقہ سے اطلاع دیں</translation>
@@ -1520,6 +1532,7 @@
 <translation id="3143515551205905069">مطابقت پذیری منسوخ کریں</translation>
 <translation id="3143754809889689516">شروع سے چلائیں</translation>
 <translation id="3144647712221361880">لنک کو اس کے بطور کھولیں</translation>
+<translation id="3145187901750964977">ورچوئل مشین کو انسٹال نہیں کیا جا سکا۔ براہ کرم دوبارہ کوشش کریں، یا اپنی تنظیم کے آلہ کے منتظم سے رابطہ کریں۔ خرابی کا کوڈ: <ph name="ERROR_CODE" />۔</translation>
 <translation id="3149477159749171726">ورژن:
     <ph name="LINUX_VERSION" />
 
@@ -1558,6 +1571,7 @@
 <translation id="3192947282887913208">آڈیو فائلز</translation>
 <translation id="3194737229810486521"><ph name="URL" /> آپ کے آلے پر مستقل طور پر ڈیٹا اسٹور کرنا چاہتا ہے</translation>
 <translation id="3199127022143353223">سرورز</translation>
+<translation id="3201306578844503970">نیٹ ورک کی خرابی کی وجہ سے ورچوئل مشین کو انسٹال نہیں کیا جا سکا۔ براہ کرم دوبارہ کوشش کریں، یا اپنی تنظیم کے آلہ کے منتظم سے رابطہ کریں۔ خرابی کا کوڈ: <ph name="ERROR_CODE" />۔</translation>
 <translation id="3201422919974259695">‏دستیاب USB آلات یہاں ظاہر ہوں گے۔</translation>
 <translation id="3202131003361292969">راستہ</translation>
 <translation id="3202173864863109533">اس ٹیب کی آڈیو خاموش کو کیا جا رہا ہے۔</translation>
@@ -1894,7 +1908,6 @@
 <translation id="3678156199662914018">ایکسٹینشن: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">آپ کے تاثرات کا شکریہ۔ آپ ابھی آف لائن ہیں اور آپ کی رپورٹ بعد میں بھیجی جائے گی۔</translation>
 <translation id="3682824389861648626">حرکت کی حد</translation>
-<translation id="3683023058278427253">ہمیں آپ کے ڈومین کیلئے لائسنس کی متعدد قسموں کا پتہ چلا ہے۔ براہ کرم جاری رکھنے کیلئے ایک کا انتخاب کریں۔</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> اسکرین کے اشتراک کی درخواست</translation>
 <translation id="368789413795732264">فائل کو رائٹ کرنے کی کوشش کرتے ہوئے ایک خرابی پیش آ گئی: <ph name="ERROR_TEXT" />۔</translation>
 <translation id="3688507211863392146">جو فائلیں اور فولڈرز آپ ایپلیکیشنز میں کھولتے ہیں ان میں لکھیں</translation>
@@ -2068,6 +2081,7 @@
 <translation id="389589731200570180">مہمانان کے ساتھ اشتراک کریں</translation>
 <translation id="389901847090970821">کی بورڈ منتخب کریں</translation>
 <translation id="3899879303189199559">ایک سال سے زیادہ تک کیلئے آف لائن</translation>
+<translation id="3900789207771372462">کچھ ایکسٹینشنز آپ کی براؤزنگ سرگرمی - بشمول ذاتی معلومات دیکھ سکتی ہیں۔</translation>
 <translation id="3900966090527141178">پاس ورڈز برآمد کریں</translation>
 <translation id="3901991538546252627"><ph name="NAME" /> سے منسلک کیا جا رہا ہے</translation>
 <translation id="3905761538810670789">ایپ کو درست کریں</translation>
@@ -2158,7 +2172,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" اس براؤزر کو ڈیبگ کر رہا ہے</translation>
 <translation id="4014432863917027322">"<ph name="EXTENSION_NAME" /> کی اصلاح کریں؟</translation>
 <translation id="4015163439792426608">ایکسٹینشنز مل گئیں؟ ایک آسان مقام پر <ph name="BEGIN_LINK" />اپنے ایکسٹینشنز کا نظم کریں<ph name="END_LINK" />۔</translation>
-<translation id="4020106588733303597">افوہ! سسٹم دستیاب لائسنسوں کو لوڈ کرنے میں ناکام ہو گیا۔</translation>
 <translation id="4020327272915390518">اختیارات کا مینو</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">لغت میں &amp;شامل کریں</translation>
@@ -2196,6 +2209,7 @@
 <translation id="407520071244661467">اسکیل</translation>
 <translation id="4075639477629295004"><ph name="FILE_NAME" /> کاسٹ کرنے سے قاصر ہے۔</translation>
 <translation id="4077917118009885966">اس سائٹ پر اشتہارات مسدود ہیں</translation>
+<translation id="4077919383365622693"><ph name="SITE" /> کے اسٹور کردہ تمام ڈیٹا اور کوکیز صاف کر دیے جائیں گے۔</translation>
 <translation id="4079140982534148664">املا کی بہتر جانچ استعمال کریں</translation>
 <translation id="4081242589061676262">فائل کاسٹ کرنے سے قاصر۔</translation>
 <translation id="4084682180776658562">بُک مارک</translation>
@@ -2270,6 +2284,7 @@
 <translation id="4181841719683918333">زبانیں</translation>
 <translation id="4184885522552335684">ڈسپلے کو منتقل کرنے کیلئے گھسیٹیں</translation>
 <translation id="4194570336751258953">کلک کرنے کیلئے تھپتھپائیں کو فعال کریں</translation>
+<translation id="4194595472342532425">‏کنفیگریشن میں مسئلہ پیش آنے کی وجہ سے Plugin VM کو سیٹ اپ نہیں کیا جا سکا۔ براہ کرم اپنی تنظیم کے آلہ کے منتظم سے رابطہ کریں۔ خرابی کا کوڈ: <ph name="ERROR_CODE" />۔</translation>
 <translation id="4195643157523330669">نئے ٹیب میں کھولیں</translation>
 <translation id="4195814663415092787">آپ نے جہاں چھوڑا تھا وہیں سے جاری رکھیں</translation>
 <translation id="4198146608511578238">‏اپنے Google اسسٹنٹ سے بات کرنے کے لیے صرف لانچر آئیکن کو پکڑیں۔</translation>
@@ -2493,6 +2508,7 @@
 <translation id="4549791035683739768">آپ کی سیکیورٹی کلید میں کوئی فنگر پرنٹ اسٹور نہیں ہے</translation>
 <translation id="4551763574344810652">کالعدم کرنے کے لیے <ph name="MODIFIER_KEY_DESCRIPTION" /> دبائيں</translation>
 <translation id="4552089082226364758">فلیش</translation>
+<translation id="4552759165874948005"><ph name="NETWORK_TYPE" /> نیٹ ورک، سگنل کی مظبوطی <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">بیرونی ایکسٹینشن موجودہ ورژن کے مقابلہ ویسا ہی یا اس سے کم تر ورژن پر ہے۔</translation>
 <translation id="4555769855065597957">سایہ</translation>
 <translation id="4555863373929230635">‏اپنے Google اکاؤنٹ میں پاس ورڈز محفوظ کرنے کیلئے، سائن ان کریں اور مطابقت پذیری آن کریں۔</translation>
@@ -2570,6 +2586,7 @@
 <translation id="4665446389743427678"><ph name="SITE" /> کا اسٹور کردہ تمام ڈیٹا حذف ہو جائے گا۔</translation>
 <translation id="4668721319092543482"><ph name="PLUGIN_NAME" /> کو فعال کرنے کیلئے کلک کریں</translation>
 <translation id="4672657274720418656">ڈسٹل صفحہ</translation>
+<translation id="46733273239502219">انسٹال کردہ ایپس کا آف لائن ڈیٹا بھی صاف ہو جائے گا</translation>
 <translation id="4673442866648850031">اسٹائلس کو ہٹانے کے وقت اسٹائلس ٹولز کھولیں</translation>
 <translation id="4677585247300749148"><ph name="URL" /> ایکسیسبیلٹی کے ایونٹس کا جواب دینا چاہتا ہے</translation>
 <translation id="4677772697204437347">‏GPU میموری</translation>
@@ -2661,7 +2678,6 @@
 <translation id="4823484602432206655">صارف اور آلہ کی ترتیبات پڑھیں اور انہیں تبدیل کریں</translation>
 <translation id="4824958205181053313">مطابقت پذیری منسوخ کریں؟</translation>
 <translation id="4827675678516992122">منسلک نہیں ہو سکا</translation>
-<translation id="4828937774870308359">آسٹریلیائی</translation>
 <translation id="4829768588131278040">‏PIN ترتیب دیں</translation>
 <translation id="4830502475412647084">‏OS اپ ڈیٹ انسٹال کیا جا رہا ہے</translation>
 <translation id="4830573902900904548"><ph name="NETWORK_NAME" /> کا استعمال کرتے ہوئے آپ کا <ph name="DEVICE_TYPE" /> انٹرنیٹ سے منسلک ہونے سے قاصر ہے۔ براہ کرم کوئی دوسرا نیٹ ورک منتخب کریں۔<ph name="LEARN_MORE_LINK_START" />مزید جانیں<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2702,6 +2718,7 @@
 <translation id="4876273079589074638">ہمارے انجینئروں کو تفتیش اور اس ناکامی کو حل کرنے میں مدد کریں۔ اگر آپ قطعی مراحل کی فہرست بنا سکتے ہیں تو بنائیں۔ کوئی بھی تفصیل بہت چھوٹی نہیں ہے!</translation>
 <translation id="4876895919560854374">اسکرین کو مقفل اور غیر مقفل کریں</translation>
 <translation id="4877276003880815204">عناصر کا معائنہ کریں</translation>
+<translation id="4878653975845355462">آپ کے منتظم نے حسب ضرورت کے پس مناظر کو آف کر دیا ہے</translation>
 <translation id="4879491255372875719">خودکار (ڈیفالٹ)</translation>
 <translation id="4880328057631981605">رسائی کی جگہ کا نام</translation>
 <translation id="4880827082731008257">تلاش کی سرگزشت</translation>
@@ -2757,10 +2774,10 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" ایک سیریل پورٹ سے منسلک ہونا چاہتا ہے</translation>
 <translation id="4944310289250773232">یہ توثیقی سروس <ph name="SAML_DOMAIN" /> کی زیر میزبانی ہے</translation>
 <translation id="495170559598752135">کارروائیاں</translation>
+<translation id="4952981627953231344">‏اس آلہ پر Plugin VM کی اجازت نہیں ہے۔ اپنی تنظیم کے آلہ کے منتظم سے رابطہ کریں۔</translation>
 <translation id="4953689047182316270">ایکسیسبیلٹی ایونٹس کا جواب دیں</translation>
 <translation id="4953808748584563296">ڈیفالٹ نارنجی اوتار</translation>
 <translation id="4955710816792587366">‏اپنا PIN منتخب کریں</translation>
-<translation id="4955814292505481804">سالانہ</translation>
 <translation id="4959262764292427323">‏آپ کے Google اکاؤنٹ میں پاس ورڈز محفوظ ہیں اس لیے آپ انہیں کسی بھی آلہ پر استعمال کر سکتے ہیں</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">یہ ایپ آپ کے منتظم نے انسٹال کی ہے۔</translation>
@@ -3242,7 +3259,6 @@
 <translation id="5659593005791499971">ای میل</translation>
 <translation id="5659833766619490117">اس صفحہ کا ترجمہ نہیں کیا جا سکا</translation>
 <translation id="5660204307954428567"><ph name="DEVICE_NAME" /> کے ساتھ جوڑا بنائیں</translation>
-<translation id="5662477687021125631">دائمی</translation>
 <translation id="5667546120811588575">‏Google Play کو سیٹ کیا جا رہا ہے...</translation>
 <translation id="5669267381087807207">فعال کیا جا رہا ہے</translation>
 <translation id="5669691691057771421">‏نیا PIN درج کریں</translation>
@@ -3258,6 +3274,7 @@
 <translation id="5687326903064479980">ٹائم زون</translation>
 <translation id="5689516760719285838">مقام</translation>
 <translation id="56907980372820799">ڈیٹا کو لنک کریں</translation>
+<translation id="5691180005790455277"><ph name="SITE_GROUP_NAME" /> کے اسٹور کردہ تمام ڈیٹا اور کوکیز اس کے ماتحت تمام سائٹس کو صاف کر دیا جائے گا۔</translation>
 <translation id="5691511426247308406">فیملی</translation>
 <translation id="5692183275898619210">پرنٹنگ مکمل ہو گئی</translation>
 <translation id="5696143504434933566">"<ph name="EXTENSION_NAME" />" کی جانب سے بیجا استعمال کی اطلاع دیں</translation>
@@ -3344,7 +3361,6 @@
 <translation id="5815645614496570556">‏X.400 پتہ</translation>
 <translation id="5816434091619127343">پرنٹر میں درخواست کردہ تبدیلیاں کرنے سے پرنٹر ناقابل استعمال ہو جائے گا۔</translation>
 <translation id="5817918615728894473">جوڑا بنائيں</translation>
-<translation id="5819762621475381970">- آپ کے کمرے کا لے آؤٹ</translation>
 <translation id="5821565227679781414">شارٹ کٹ تخلیق کریں</translation>
 <translation id="5825412242012995131">آن (تجویز کردہ)</translation>
 <translation id="5826395379250998812">اپنے <ph name="DEVICE_TYPE" /> کو اپنے فون سے منسلک کریں۔ <ph name="LINK_BEGIN" />مزید جانیں<ph name="LINK_END" /></translation>
@@ -3480,6 +3496,7 @@
 <translation id="6007240208646052708">آپ کی زبان میں صوتی تلاش دستیاب نہیں ہے۔</translation>
 <translation id="6009781704028455063">پہلے سے شامل سینسر</translation>
 <translation id="6010869025736512584">ویڈیو ان پٹ تک رسائی ہو رہی ہے</translation>
+<translation id="6011074160056912900">ایتھرنیٹ نیٹ ورک</translation>
 <translation id="6011193465932186973">فنگر پرنٹ</translation>
 <translation id="6011449291337289699">سائٹ کا ڈیٹا صاف کریں</translation>
 <translation id="6015266928248016057">‏غلط PUK۔ اتنی بار دوبارہ کوشش کی جا سکتی ہے: <ph name="RETRIES" />۔</translation>
@@ -3516,6 +3533,7 @@
 <translation id="6053401458108962351">براؤزنگ ڈیٹا &amp;صاف کریں…</translation>
 <translation id="6055171183283175969">آپ کا درج کردہ پاس ورڈ غلط ہے۔</translation>
 <translation id="6055392876709372977">‏PKCS #1 SHA-256 مع RSA مرموز کاری</translation>
+<translation id="6055907707645252013"><ph name="NETWORK_TYPE" /> نیٹ ورک، منسلک نہیں ہے</translation>
 <translation id="6056710589053485679">عام ری لوڈ</translation>
 <translation id="6057381398996433816">اس سائٹ کو موشن اور لائٹ سینسرز استعمال کرنے سے مسدود کر دیا گيا ہے۔</translation>
 <translation id="6058567592298841668">پلگ ان ورچوئل مشین: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3579,6 +3597,7 @@
 <translation id="6136114942382973861">ڈاؤن لوڈز بار بند کریں</translation>
 <translation id="6137767437444130246">صارف کا سرٹیفیکیٹ</translation>
 <translation id="6138680304137685902">‏SHA-384 کے ساتھ X9.62 ECDSA دستخط</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />، کوئی نیٹ ورک نہیں</translation>
 <translation id="6141988275892716286">ڈاؤن لوڈ کی توثیق کریں</translation>
 <translation id="6143186082490678276">مدد حاصل کریں</translation>
 <translation id="6144938890088808325">‏Chromebooks کو بہتر بنانے میں ہماری مدد کریں</translation>
@@ -3885,6 +3904,7 @@
 <translation id="6602956230557165253">نیویگیٹ کرنے کیلئے بائیں اور دائیں تیر کے نشانات کی کلیدیں استعمال کریں۔</translation>
 <translation id="6605847144724004692">ابھی تک کسی صارف نے درجہ بندی نہیں کی۔</translation>
 <translation id="6607831829715835317">مزید &amp;ٹولز</translation>
+<translation id="6611972847767394631">یہاں اپنے ٹیبز تلاش کریں</translation>
 <translation id="6612358246767739896">تحفظ یافتہ مواد</translation>
 <translation id="6615455863669487791">مجھے دکھائیں</translation>
 <translation id="6618097958368085618">بہر حال رکھیں</translation>
@@ -3953,6 +3973,7 @@
 <translation id="6709133671862442373">خبریں</translation>
 <translation id="6709357832553498500"><ph name="EXTENSIONNAME" /> کا استعمال کر کے منسلک کریں</translation>
 <translation id="6710213216561001401">گزشتہ</translation>
+<translation id="6715803357256707211">‏آپ کی Linux ایپلیکیشن کو انسٹال کرنے کے دوران ایک خرابی پیش آ گئی۔ تفصیلات کے لیے اطلاع پر کلک کریں۔</translation>
 <translation id="6721678857435001674">اپنی سیکیورٹی کلید کا برانڈ اور ماڈل دیکھیں</translation>
 <translation id="6721972322305477112">&amp;فائل</translation>
 <translation id="672213144943476270">ایک مہمان کے بطور براؤز کرنے سے پہلے براہ کرم اپنا پروفائل غیر مقفل کریں۔</translation>
@@ -3977,7 +3998,6 @@
 <translation id="674632704103926902">تھپتھپا کر گھسیٹنے کو فعال کریں</translation>
 <translation id="6748217015615267851">رینڈرر: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">آپ آگے بڑھ سکتے ہیں لیکن آپ کے صرف مطابقت پذیر ڈیٹا اور ترتیبات کو بحال کیا جائے گا۔ سبھی مقامی ڈیٹا ضائع ہو جائے گا۔</translation>
-<translation id="6748775883310276718">سنگل ایپ کیوسک</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (پوشیدگی)</translation>
 <translation id="6757101664402245801">‏URL کاپی ہوگیا</translation>
 <translation id="6758056191028427665">ہماری کارکردگی کے بارے میں ہمیں بتائیں۔</translation>
@@ -3987,6 +4007,7 @@
 <translation id="6769712124046837540">پرنٹر کو شامل کیا جا رہا ہے…</translation>
 <translation id="6770664076092644100">‏NFC کے ذریعے توثیق کریں</translation>
 <translation id="6771503742377376720">ایک سرٹیفیکیشن ادارہ ہے</translation>
+<translation id="6772339735733515807">اپنے ایکسٹینشنز کا نظم کریں</translation>
 <translation id="6775163072363532304">دستیاب آلات یہاں دکھائی دیں گے۔</translation>
 <translation id="6777817260680419853">ری ڈائریکٹ مسدود ہے</translation>
 <translation id="6778737459546443941">آپ کے والدین نے ابھی تک اسے منظور نہیں کیا ہے</translation>
@@ -4125,6 +4146,7 @@
 <translation id="6972180789171089114">آڈیو/ویڈیو</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> اس فولڈر میں فائلز کو نہیں کھول سکتا کیونکہ اس میں سسٹم فائلز ہیں</translation>
 <translation id="6972754398087986839">شروع کریں</translation>
+<translation id="6973611239564315524">‏Debian 10 (بسٹر) کے لیے ایک اپ گریڈ دستیاب ہے</translation>
 <translation id="6974609594866392343">آف لائن ڈیمو وضع</translation>
 <translation id="6977381486153291903">فرم ویئر نظر ثانی</translation>
 <translation id="6978121630131642226">سرچ انجن</translation>
@@ -4584,6 +4606,7 @@
 <translation id="7644543211198159466">رنگ اور تھیم</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (مالک)</translation>
 <translation id="7645681574855902035">‏Linux کا بیک اپ منسوخ ہو رہا ہے</translation>
+<translation id="7646772052135772216">پاس ورڈ کی مطابقت پذیری کام نہیں کر رہی ہے</translation>
 <translation id="7647403192093989392">کوئی حالیہ سرگرمی نہیں</translation>
 <translation id="7648992873808071793">فائلیں اس آلہ پر اسٹور کریں</translation>
 <translation id="7649070708921625228">مدد</translation>
@@ -4773,6 +4796,7 @@
 <translation id="7877451762676714207">سرور کی نامعلوم  خرابی۔ براہ کرم دوبارہ کوشش کریں یا سرور کے منتظم سے رابطہ کریں۔</translation>
 <translation id="7877680364634660272">ٹؤر</translation>
 <translation id="7878562273885520351">لگتا ہے کسی نے آپ کے پاسورڈ کے ساتھ چھیڑ چھاڑ کی ہے</translation>
+<translation id="7879631849810108578">شارٹ کٹ کا سیٹ: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">جب آپ دوبارہ شروع کریں گے تو مقامی ڈیٹا حذف ہو جائے گا</translation>
 <translation id="7881483672146086348">اکاؤنٹ دیکھیں</translation>
 <translation id="7882358943899516840">فراہم کنندہ کی قسم</translation>
@@ -4859,6 +4883,7 @@
 <translation id="7987814697832569482">‏ہمیشہ اس VPN کے ذریعے منسلک کریں</translation>
 <translation id="7988355189918024273">ایکسیسبیلٹی کی خصوصیات کو فعال کریں</translation>
 <translation id="7991296728590311172">سوئچ رسائی کی ترتیبات</translation>
+<translation id="7994350303002908848">‏Plugin VM انسٹال نہیں کیا جا سکا۔ براہ کرم دوبارہ کوشش کریں، یا اپنی تنظیم کے آلہ کے منتظم سے رابطہ کریں۔ خرابی کا کوڈ: <ph name="ERROR_CODE" />۔</translation>
 <translation id="7994702968232966508">‏EAP طریقہ</translation>
 <translation id="7997826902155442747">کارروائی کی ترجیح</translation>
 <translation id="7999229196265990314">مندرجہ ذیل فائلز بنائی گئیں:
@@ -4950,7 +4975,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{کوئی فریق ثالث کوکی نہیں ہے}=1{1 فریق ثالث کوکی مسدود ہے}other{# فریق ثالث کوکیز مسدود ہیں}}</translation>
 <translation id="810875025413331850">کوئی قریبی آلہ نہیں ملا۔</translation>
 <translation id="8111155949205007504">‏اپنے iPhone کے ساتھ اس پاس ورڈ کا اشتراک کریں</translation>
-<translation id="8113043281354018522">لائسنس کی قسم منتخب کریں</translation>
 <translation id="8114875720387900039">افقی تقسیم کریں</translation>
 <translation id="8116972784401310538">&amp;بک مارک مینیجر</translation>
 <translation id="8117620576188476503">‏صورت حال ٹرے کے ذریعے کنکشنز، اپ ڈیٹس اور ترتیبات کا نظم کریں۔ کی بورڈ کے ذریعے یہاں پہنچنے کیلئے، Alt + Shift + S دبائیں۔</translation>
@@ -5107,6 +5131,7 @@
 <translation id="8327039559959785305">‏Linux فائلز کو ماؤنٹ کرنے میں خرابی پیش آ گئی۔ براہ کرم دوبارہ کوشش کریں۔</translation>
 <translation id="8335587457941836791">شیلف سے پن ہٹائیں</translation>
 <translation id="8336407002559723354">اپ ڈیٹس <ph name="MONTH_AND_YEAR" /> کو ختم ہو جائیں گی</translation>
+<translation id="8336721153892716270"><ph name="LANGUAGE" /> میں سسٹم کا متن دکھانے کے لیے آلہ ری سٹارٹ کریں</translation>
 <translation id="8336739000755212683">آلے کے اکاؤنٹ کی تصویر تبدیل کریں</translation>
 <translation id="8337047789441383384">آپ یہ سیکیورٹی کلید پہلے ہی رجسٹر کر چکے ہیں۔ آپ کو اسے دوبارہ رجسٹر کرنے کی ضرورت نہیں ہے۔</translation>
 <translation id="8338952601723052325">ڈیولپر کی ویب سائٹ</translation>
@@ -5150,6 +5175,7 @@
 <translation id="8400146488506985033">لوگوں کا نظم کریں</translation>
 <translation id="8401432541486058167">‏وہ PIN فراہم کریں جو آپ کے اسمارٹ کارڈ کے ساتھ وابستہ ہے۔</translation>
 <translation id="8405046151008197676">تازہ ترین اپ ڈیٹ سے ہائی لائٹس حاصل کریں</translation>
+<translation id="8408068190360279472"><ph name="NETWORK_TYPE" /> نیٹ ورک، منسلک ہو رہا ہے</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">پہلے پوچھیں (تجویز کردہ)</translation>
 <translation id="8418445294933751433">ٹیب کے بطور &amp;دکھائیں</translation>
@@ -5439,6 +5465,7 @@
 <translation id="8807632654848257479">مستحکم</translation>
 <translation id="8808478386290700967">ویب اسٹور</translation>
 <translation id="8808686172382650546">بلی</translation>
+<translation id="8808744862003883508">‏اس صفحہ پر آپ Chrome میں انسٹال کردہ تمام ایکسٹینشنز دیکھ سکتے ہیں۔</translation>
 <translation id="8809147117840417135">ہلکا نیلگوں سبز</translation>
 <translation id="8813698869395535039"><ph name="USERNAME" /> میں سائن ان نہیں کیا جا سکتا ہے</translation>
 <translation id="8813811964357448561">پیپر کی شیٹ</translation>
@@ -5666,7 +5693,6 @@
 <translation id="9121814364785106365">پن کردہ ٹیب کے بطور کھولیں</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> موقوف ہے</translation>
 <translation id="9124003689441359348">محفوظ کردہ پاس ورڈز یہاں ظاہر ہوں گے</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> باقی)</translation>
 <translation id="9128317794749765148">سیٹ اپ مکمل نہیں ہو سکا</translation>
 <translation id="9128870381267983090">نیٹ ورک سے منسلک ہوں</translation>
 <translation id="9130015405878219958">غلط وضع درج کر دی گئی۔</translation>
@@ -5705,6 +5731,7 @@
 <translation id="9188732951356337132">‏استعمال اور ڈائیگناسٹک کا ڈیٹا بھیجیں۔ فی الوقت یہ آلہ خود کار طور پر ڈائیگناسٹک، آلے اور ایپ کے استعمال کا ڈیٹا Google کو بھیج رہا ہے۔ اس کا استعمال آپ کے بچے کی شناخت کیلئے نہیں کیا جائے گا اور اس سے سسٹم اور ایپ کے استحکام اور دیگر بہتریوں میں مدد ملے گی۔ کچھ مجموعی ڈیٹا Google ایپس اور پارٹنرز، جیسے Android ڈیولپرز، کی مدد بھی کرے گا۔ اگر آپ کے بچے کیلئے ویب اور ایپ کی اضافی سرگرمی کی ترتیب آن ہے تو اس ڈیٹا کو اس کے Google اکاؤنٹ میں محفوظ کیا جا سکتا ہے۔ <ph name="BEGIN_LINK2" />مزید جانیں<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">‏‎L2TP/IPsec + پیشگی اشتراک کردہ کلید</translation>
 <translation id="920045321358709304">تلاش کریں <ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">آف لائن تمام ڈيٹا صاف ہو جائیں گے</translation>
 <translation id="9201220332032049474">اسکرین لاک کے اختیارات</translation>
 <translation id="9203398526606335860">&amp;پروفائلنگ فعال ہے</translation>
 <translation id="9203904171912129171">ایک آلہ منتخب کریں</translation>
@@ -5717,6 +5744,7 @@
 <translation id="9220525904950070496">اکاؤنٹ ہٹائیں</translation>
 <translation id="9220820413868316583">اٹھائیں پھر دوبارہ کوشش کریں۔</translation>
 <translation id="923467487918828349">سبھی کو دکھائیں</translation>
+<translation id="929117907539171075">انسٹال کردہ ایپ کا آف لائن ڈیٹا بھی صاف ہو جائے گا</translation>
 <translation id="930268624053534560">تفصیلی ٹائم اسٹامپس</translation>
 <translation id="932327136139879170">ھوم</translation>
 <translation id="932508678520956232">پرنٹنگ کو شروع نہیں کیا جا سکا۔</translation>
@@ -5742,6 +5770,7 @@
 <translation id="960719561871045870">آپریٹر کوڈ</translation>
 <translation id="960987915827980018">قریب 1 گھنٹہ باقی ہے</translation>
 <translation id="962802172452141067">بُک مارک فولڈر کا درخت</translation>
+<translation id="964057662886721376">کچھ ایکسٹینشنز آپ کو سست کر سکتے ہیں - خاص طور پر وہ جن کو آپ انسٹال کرنا نہیں چاہتے تھے۔</translation>
 <translation id="964286338916298286">‏آپ کے IT کے منتظم نے آپ کے آلے کیلئے "Chrome کی اچھی چیزوں" کو غیر فعال کر دیا ہے۔</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{ایپلیکیشن}other{ایپلیکیشنز}}</translation>
 <translation id="965211523698323809">اپنے <ph name="DEVICE_TYPE" /> سے متنی پیغامات بھیجیں اور وصول کریں۔ <ph name="LINK_BEGIN" />مزید جانیں<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_uz.xtb b/chrome/app/resources/generated_resources_uz.xtb
index 576f2de..1342dc6 100644
--- a/chrome/app/resources/generated_resources_uz.xtb
+++ b/chrome/app/resources/generated_resources_uz.xtb
@@ -134,7 +134,6 @@
 <translation id="1177863135347784049">Boshqa</translation>
 <translation id="1178581264944972037">Pauza</translation>
 <translation id="117916940443676133">Elektron kalit PIN kod bilan himoyalanmagan. Kirish maʼlumotlarini boshqarish uchun avval PIN kod yarating.</translation>
-<translation id="118069123878619799">- boʻy kabi jismoniy xususiyatlaringiz</translation>
 <translation id="1181037720776840403">Olib tashlash</translation>
 <translation id="1183237619868651138"><ph name="EXTERNAL_CRX_FILE" /> faylini lokal keshga o‘rnatib bo‘lmayapti.</translation>
 <translation id="1185924365081634987">Mazkur tarmoq xatoligini tuzatish uchun <ph name="GUEST_SIGNIN_LINK_START" />mehmon rejimida kirib<ph name="GUEST_SIGNIN_LINK_END" /> ko‘ring.</translation>
@@ -353,6 +352,7 @@
 <translation id="1493892686965953381"><ph name="LOAD_STATE_PARAMETER" /> yuklanishi kutilmoqda...</translation>
 <translation id="1495486559005647033">Boshqa mavjud qurilmalar soni: <ph name="NUM_PRINTERS" /></translation>
 <translation id="1495677929897281669">Varaqqa qaytish</translation>
+<translation id="1499271269825557605">Kengaytmani tanimasangiz yoki brauzer kutganingizdek ishlamasa, kengaytmalarni bu yerdan faolsizlantirishingiz yoki boshqarishingiz mumkin.</translation>
 <translation id="1500297251995790841">Noma’lum qurilma [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Birdaniga bir nechta hisobdan ishlash vaqtida birinchi o‘rinda hisob egasi kirishi kerak.</translation>
 <translation id="150411034776756821"><ph name="SITE" /> saytini olib tashlash</translation>
@@ -360,6 +360,7 @@
 <translation id="1507170440449692343">Bu sahifaga kameradan foydalanish taqiqlandi.</translation>
 <translation id="1507246803636407672">&amp;Bekor qilish</translation>
 <translation id="1508491105858779599">Qurilma qulfini ochish uchun barmog‘ingizni barmoq izi sensori ustiga qo‘ying.</translation>
+<translation id="1508575541972276599">Joriy versiya: Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">USB orqali har qanday <ph name="DEVICE_NAME_AND_VENDOR" /> qurilmasiga kirish</translation>
 <translation id="150962533380566081">PUK kod xato.</translation>
 <translation id="1510030919967934016">Bu sahifaga joylashuvingiz ma’lumotlarini ko‘rish taqiqlandi.</translation>
@@ -432,6 +433,7 @@
 <translation id="1601560923496285236">Qo‘llash</translation>
 <translation id="1603914832182249871">(inkognito)</translation>
 <translation id="1604432177629086300">Chop etilmadi. Printerni tekshiring va qayta urining.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: parollar sinxronizatsiyasi ishlamayapti</translation>
 <translation id="1607139524282324606">Tozalash</translation>
 <translation id="1608626060424371292">Profilni o‘chirish</translation>
 <translation id="1608668830839595724">Tanlangan elementlar uchun yana boshqa amallar</translation>
@@ -558,6 +560,8 @@
 <translation id="177336675152937177">Joylashtiriladigan ilovalarning ma’lumotlari</translation>
 <translation id="1776712937009046120">Foydalanuvchi kiritish</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Bu qurilma <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> domeni orqali boshqariladi.
+    “Davom etish” ustiga bosib <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> hisobiga kiring.</translation>
 <translation id="1779652936965200207">Bu kalitni "<ph name="DEVICE_NAME" />"da kiriting:</translation>
 <translation id="1780152987505130652">Guruhni yopish</translation>
 <translation id="1781291988450150470">Joriy PIN kod</translation>
@@ -745,6 +749,7 @@
 <translation id="2048653237708779538">Bu amal ishlamaydi</translation>
 <translation id="2050339315714019657">Bo‘yiga</translation>
 <translation id="2053312383184521053">Harakatsiz holat ma’lumotlari</translation>
+<translation id="2055585478631012616">Bu saytlardagi hisobingizdan avtomatik chiqarilasiz (shuningdek, ochiq varaqlardan ham)</translation>
 <translation id="205560151218727633">Google assistent logosi</translation>
 <translation id="2058456167109518507">Qurilma topildi</translation>
 <translation id="2059913712424898428">Vaqt mintaqasi</translation>
@@ -760,6 +765,7 @@
 <translation id="2079545284768500474">Bekor qilish</translation>
 <translation id="2080070583977670716">Kengaytirilgan sozlamalar</translation>
 <translation id="2087822576218954668">Chop etish: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN tarmoq</translation>
 <translation id="2089566709556890888">Google Chrome yordamida internetda xavfsiz ishlaysiz</translation>
 <translation id="2089795179672254991">Saytlar klipbordga nusxalangan matn va rasmlarni ko‘rmoqchi bo‘lganda xabar berilsin (tavsiya etiladi)</translation>
 <translation id="2090165459409185032">Hisob ma’lumotini tiklash uchun bu yerga o‘ting: google.com/accounts/recovery</translation>
@@ -983,6 +989,7 @@
 <translation id="2379232090534544565">Sayt audio va video translatsiyasidan foydalanmoqda</translation>
 <translation id="2379281330731083556">Tizim muloqot oynasi yordamida chop etish... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Yuborishdan oldin so‘ralsin (tavsiya etiladi)</translation>
+<translation id="2382818385048255866">Kengaytmalarni tekshiring</translation>
 <translation id="2384436799579181135">Xatolik yuz berdi. Printeringizni tekshiring va qaytadan urining.</translation>
 <translation id="2387458720915042159">Proksi-server orqali ulanish turi</translation>
 <translation id="2391419135980381625">Standard shrift</translation>
@@ -1034,6 +1041,7 @@
 <translation id="2462724976360937186">Sertifikat markazi kaliti identifikatori</translation>
 <translation id="2462752602710430187"><ph name="PRINTER_NAME" /> qo‘shildi</translation>
 <translation id="2464089476039395325">HTTP proksi-server</translation>
+<translation id="2467267713099745100">Tarmoq: <ph name="NETWORK_TYPE" />, faolsizlantirilgan</translation>
 <translation id="2468205691404969808">Saytlarga tashrif buyurmasangiz ham, cookie-axborot ulardagi afzalliklaringizni eslab qolish uchun foydalaniladi</translation>
 <translation id="2468402215065996499">Tamagochi</translation>
 <translation id="2469259292033957819">Saqlangan printerlar mavjud emas.</translation>
@@ -1288,6 +1296,7 @@
 <translation id="2800760947029405028">Rasm yuklash</translation>
 <translation id="2803375539583399270">PIN kodni kiriting</translation>
 <translation id="2804043232879091219">Muqobil brauzer ochilmadi</translation>
+<translation id="2804667941345577550">Bu saytdagi hisobingizdan avtomatik chiqarilasiz (shuningdek, ochiq varaqlardan ham)</translation>
 <translation id="2804680522274557040">Kamera faolsizlantirilgan</translation>
 <translation id="2805646850212350655">Microsoft (EFS) shifrlangan fayl tizimi</translation>
 <translation id="2805756323405976993">Ilovalar</translation>
@@ -1295,6 +1304,7 @@
 <translation id="2806891468525657116">Bunday tezkor tugma mavjud</translation>
 <translation id="2807517655263062534">Yuklab olingan fayllar shu yerda turadi</translation>
 <translation id="2809586584051668049">shuningdek, <ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2810390687497823527">Kengaytmani tanimasangiz yoki brauzer kutganingizdek ishlamasa, kengaytmalarni bu yerdan faolsizlantirishingiz yoki boshqarishingiz mumkin.</translation>
 <translation id="2812049959647166806">Thunderbolt qoʻllab-quvvatlanmaydi</translation>
 <translation id="2812944337881233323">Hisobingizdan chiqing va yana kiring</translation>
 <translation id="2812989263793994277">Ko‘rsatilmasin</translation>
@@ -1334,6 +1344,7 @@
 <translation id="2861941300086904918">Xavfsizlik menejeri – Native Client</translation>
 <translation id="2864601841139725659">Profilga rasm joylang</translation>
 <translation id="2865919525181940183">Joriy ekrandagi dasturlarning skrinshoti</translation>
+<translation id="286674810810214575">Quvvat manbalari tekshirilmoqda…</translation>
 <translation id="2867768963760577682">Qadalgan tab sifatida ochish</translation>
 <translation id="2868746137289129307">Ushbu kengaytma eskirgan, shuning uchun u korporativ siyosat shartlariga ko‘ra o‘chirib qo‘yildi. Yangi versiyasi chiqishi bilan bu kengaytma avtomatik yoqilishi mumkin.</translation>
 <translation id="2870560284913253234">Sayt</translation>
@@ -1411,6 +1422,7 @@
 <translation id="2972581237482394796">&amp;Qaytarish</translation>
 <translation id="2973324205039581528">Sayt ovozini o‘chirish</translation>
 <translation id="2977480621796371840">Guruhdan chiqarish</translation>
+<translation id="2979520980928493164">Chrome – tezkor va himoyalangan brauzer</translation>
 <translation id="2979639724566107830">Yangi oynada ochish</translation>
 <translation id="2981113813906970160">Sichqonchaning katta kursorini ko‘rsatish</translation>
 <translation id="2982970937345031">Anonim tarzda xabar berish</translation>
@@ -1517,6 +1529,7 @@
 <translation id="3143515551205905069">Sinxronizatsiyani bekor qilish</translation>
 <translation id="3143754809889689516">Boshidan ijro etish</translation>
 <translation id="3144647712221361880">Havolani quyidagicha ochish</translation>
+<translation id="3145187901750964977">Virtual mashina oʻrnatilmadi Qayta urining yoki tashkilotingizning qurilma boʻyicha administratoriga murojaat qiling. Xatolik kodi: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Versiya:
     <ph name="LINUX_VERSION" />
 
@@ -1555,6 +1568,7 @@
 <translation id="3192947282887913208">Audio fayllar</translation>
 <translation id="3194737229810486521"><ph name="URL" /> saytidan ma’lumotlarni mobil qurilmangizda doimiy saqlashga ruxsat so‘rovi keldi</translation>
 <translation id="3199127022143353223">Serverlar</translation>
+<translation id="3201306578844503970">Tarmoqda muammo yuz berganligi uchun virtual mashina oʻrnatilmadi. Qayta urining yoki tashkilotingizning qurilma boʻyicha administratoriga murojaat qiling. Xatolik kodi: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Mavjud USB qurilmalar bu yerda chiqadi.</translation>
 <translation id="3202131003361292969">Fayl yo‘lagi</translation>
 <translation id="3202173864863109533">Bu ichki oyna ovozi o‘chirib qo‘yilgan</translation>
@@ -1891,7 +1905,6 @@
 <translation id="3678156199662914018">Kengaytma: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Fikr-mulohaza uchun rahmat! Hozir internet bilan aloqa yo‘qligi sababli xabaringiz keyinroq yuboriladi.</translation>
 <translation id="3682824389861648626">Harakat chegarasi</translation>
-<translation id="3683023058278427253">Domeningizga turli litsenziyalar topdik. Davom etish uchun ulardan birini tanlang.</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> ekraningizga ulanmoqchi</translation>
 <translation id="368789413795732264">Faylni yozishda xatolik yuz berdi: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Ilovada ochilgan ma’lumotlarni fayl va jildlarga yozish</translation>
@@ -2065,6 +2078,7 @@
 <translation id="389589731200570180">Mehmondo‘st bo‘ling</translation>
 <translation id="389901847090970821">Klaviaturani tanlang</translation>
 <translation id="3899879303189199559">Bir yildan beri oflayn</translation>
+<translation id="3900789207771372462">Ayrim kengaytmalar brauzerdagi faoliyatingizni, shuningdek, shaxsiy maʼlumotlaringizni ham kuzatishi mumkin.</translation>
 <translation id="3900966090527141178">Parollarni eksport qilish</translation>
 <translation id="3901991538546252627"><ph name="NAME" /> tarmog‘iga ulanilmoqda</translation>
 <translation id="3905761538810670789">Ilovani ta’mirlash</translation>
@@ -2155,7 +2169,6 @@
 <translation id="4013132157686828973">“<ph name="CLIENT_NAME" />” ushbu brauzerdagi nosozliklarni aniqlamoqda</translation>
 <translation id="4014432863917027322">“<ph name="EXTENSION_NAME" />” kengaytmasi tiklansinmi?</translation>
 <translation id="4015163439792426608">Kengaytmalar ishlatasizmi? Qulay joydan <ph name="BEGIN_LINK" />kengaytmalarni boshqaring<ph name="END_LINK" />.</translation>
-<translation id="4020106588733303597">Tizim mavjud litsenziyalarni yuklay olmadi.</translation>
 <translation id="4020327272915390518">Parametrlar menyusi</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Lug‘atga qo‘shish</translation>
@@ -2193,6 +2206,7 @@
 <translation id="407520071244661467">Masshtab</translation>
 <translation id="4075639477629295004"><ph name="FILE_NAME" /> translatsiya qilinmadi.</translation>
 <translation id="4077917118009885966">Bu saytda reklamalar bloklandi</translation>
+<translation id="4077919383365622693"><ph name="SITE" /> joylashtirgan barcha maʼlumot va cookie fayllar tozalab tashlanadi.</translation>
 <translation id="4079140982534148664">Kengaytirilgan imlo tekshiruvini ishlatish</translation>
 <translation id="4081242589061676262">Fayl translatsiya qilinmadi.</translation>
 <translation id="4084682180776658562">Xatcho‘p</translation>
@@ -2267,6 +2281,7 @@
 <translation id="4181841719683918333">Tillar</translation>
 <translation id="4184885522552335684">Ekranga o‘tkazish uchun sudrang</translation>
 <translation id="4194570336751258953">Teginib bosish xususiyatini yoqish</translation>
+<translation id="4194595472342532425">Sozlashda muammo yuz berganligi uchun Plugin VM sozlanmadi. Tashkilotingizning qurilma boʻyicha administratoriga murojaat qiling. Xatolik kodi: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Yangi varaqda ochish</translation>
 <translation id="4195814663415092787">Avval ochilgan ichki oynalar</translation>
 <translation id="4198146608511578238">Google Assistent bilan gaplashish uchun Launcher ikonkasini bosib turing.</translation>
@@ -2490,6 +2505,7 @@
 <translation id="4549791035683739768">Elektron kalitingizda barmoq izlari topilmadi</translation>
 <translation id="4551763574344810652">Bekor qilish uchun <ph name="MODIFIER_KEY_DESCRIPTION" /> ni bosing</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005">Tarmoq: <ph name="NETWORK_TYPE" />, signal darajasi: <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">Tashqi kengaytma versiyasi joriysidan yangi emas.</translation>
 <translation id="4555769855065597957">Soya</translation>
 <translation id="4555863373929230635">Parollar Google hisobida saqlanishi uchun sinxronizatsiyani yoqing.</translation>
@@ -2567,6 +2583,7 @@
 <translation id="4665446389743427678"><ph name="SITE" /> saqlagan barcha maʼlumotlar tozalanadi.</translation>
 <translation id="4668721319092543482">“<ph name="PLUGIN_NAME" />” plaginini yoqish uchun bosing</translation>
 <translation id="4672657274720418656">Sahifani siqish</translation>
+<translation id="46733273239502219">Oʻrnatilgan ilovalardagi oflayn maʼlumotlar ham tozalab tashlanadi.</translation>
 <translation id="4673442866648850031">Stilus o‘chiqligida stilus vositalari ko‘rsatilsin</translation>
 <translation id="4677585247300749148"><ph name="URL" /> maxsus imkoniyatlardan foydalanmoqchi</translation>
 <translation id="4677772697204437347">GPU xotirasi</translation>
@@ -2658,7 +2675,6 @@
 <translation id="4823484602432206655">Foydalanuvchilar va qurilmalar sozlamalarini ko‘rish va o‘zgartirish</translation>
 <translation id="4824958205181053313">Sinxronizatsiya bekor qilinsinmi?</translation>
 <translation id="4827675678516992122">Ulanmadi</translation>
-<translation id="4828937774870308359">Teskari</translation>
 <translation id="4829768588131278040">PIN kod o‘rnatish</translation>
 <translation id="4830502475412647084">OS yangilanishi o‘rnatilmoqda</translation>
 <translation id="4830573902900904548"><ph name="DEVICE_TYPE" /> qurilmasi <ph name="NETWORK_NAME" /> tarmog‘i orqali internetga ulana olmayapti. Boshqa tarmoqni tanlang. <ph name="LEARN_MORE_LINK_START" />Batafsil<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2699,6 +2715,7 @@
 <translation id="4876273079589074638">Muhandislarimizga nosozlikni aniqlash va tuzatishiga yordam bering. Yuz bergan nosozlik bosqichlarini batafsil yoriting. Har bir axborotingiz bizga yordam beradi.</translation>
 <translation id="4876895919560854374">Ekranni qulflash va qulfdan chiqarish</translation>
 <translation id="4877276003880815204">Elementlarni tekshirish</translation>
+<translation id="4878653975845355462">Fon rasmlarini oʻzgartirishni administrator taqiqlagan</translation>
 <translation id="4879491255372875719">Avtomatik (birlamchi)</translation>
 <translation id="4880328057631981605">Internetga ulanish nuqtasi (APN)</translation>
 <translation id="4880827082731008257">Qidiruv tarixi</translation>
@@ -2754,10 +2771,10 @@
 <translation id="4943691134276646401">“<ph name="CHROME_EXTENSION_NAME" />” seriyali portga ulanmoqchi</translation>
 <translation id="4944310289250773232">Bu autentifikatsiya xizmati <ph name="SAML_DOMAIN" /> domenida joylashgan.</translation>
 <translation id="495170559598752135">Harakatlar</translation>
+<translation id="4952981627953231344">Bu qurilmada Plugin VM ishlatish taqiqlangan. Tashkilotingizning qurilma boʻyicha administratoriga murojaat qiling.</translation>
 <translation id="4953689047182316270">Maxsus imkoniyatlar ishlatilishi</translation>
 <translation id="4953808748584563296">Standart to‘q sariq avatar</translation>
 <translation id="4955710816792587366">PIN kod tanlang</translation>
-<translation id="4955814292505481804">Yillik</translation>
 <translation id="4959262764292427323">Google hisobingizga saqlangan parollardan har qanday qurilmada foydalanishingiz mumkin.</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Bu ilova administrator tomonidan oʻrnatilgan.</translation>
@@ -3239,7 +3256,6 @@
 <translation id="5659593005791499971">Email</translation>
 <translation id="5659833766619490117">Bu sahifa tarjima qilinmadi</translation>
 <translation id="5660204307954428567"><ph name="DEVICE_NAME" /> qurilmasiga ulansinmi?</translation>
-<translation id="5662477687021125631">Doimiy</translation>
 <translation id="5667546120811588575">Google Play sozlanmoqda</translation>
 <translation id="5669267381087807207">Faollashtirilmoqda</translation>
 <translation id="5669691691057771421">Yangi PIN kodni kiriting</translation>
@@ -3255,6 +3271,7 @@
 <translation id="5687326903064479980">Vaqt mintaqasi</translation>
 <translation id="5689516760719285838">Joylashuv</translation>
 <translation id="56907980372820799">Hisobni bog‘lash</translation>
+<translation id="5691180005790455277"><ph name="SITE_GROUP_NAME" /> va unga tegishli saytlar joylashtirgan barcha maʼlumot va cookie fayllar tozalab tashlanadi.</translation>
 <translation id="5691511426247308406">Oilaviy</translation>
 <translation id="5692183275898619210">Chop etildi</translation>
 <translation id="5696143504434933566">“<ph name="EXTENSION_NAME" />” ustidan shikoyat qilish</translation>
@@ -3341,7 +3358,6 @@
 <translation id="5815645614496570556">X.400 manzili</translation>
 <translation id="5816434091619127343">So‘ralgan o‘zgartirishlar printerni ishdan chiqarishi mumkin.</translation>
 <translation id="5817918615728894473">Ulanish</translation>
-<translation id="5819762621475381970">- xonangiz dizayni</translation>
 <translation id="5821565227679781414">Yorliq yaratish</translation>
 <translation id="5825412242012995131">Yoqilgan (tavsiya etiladi)</translation>
 <translation id="5826395379250998812"><ph name="DEVICE_TYPE" /> qurilmasiga telefoningizni ulang. <ph name="LINK_BEGIN" />Batafsil<ph name="LINK_END" /></translation>
@@ -3477,6 +3493,7 @@
 <translation id="6007240208646052708">Ovozli qidiruv hozircha sizning tilingizda ishlamaydi.</translation>
 <translation id="6009781704028455063">Ichki o‘rnatilgan sensor</translation>
 <translation id="6010869025736512584">Video-kirish qurilmasi faollashtirildi</translation>
+<translation id="6011074160056912900">Ethernet tarmoq</translation>
 <translation id="6011193465932186973">Barmoq izi</translation>
 <translation id="6011449291337289699">Sayt ma’lumotlarini tozalash</translation>
 <translation id="6015266928248016057">PUK kod xato. <ph name="RETRIES" /> ta urinish qoldi.</translation>
@@ -3513,6 +3530,7 @@
 <translation id="6053401458108962351">Brauzer tarixini &amp;tozalash...</translation>
 <translation id="6055171183283175969">Parol xato kiritildi</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 algoritmli RSA shifrlash</translation>
+<translation id="6055907707645252013">Tarmoq: <ph name="NETWORK_TYPE" />, ulanmagan</translation>
 <translation id="6056710589053485679">Oddiy qayta yuklash</translation>
 <translation id="6057381398996433816">Bu sayt uchun harakat va yorug‘lik sensorlaridan foydalanish taqiqlandi</translation>
 <translation id="6058567592298841668">Virtual mashina plagini: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3576,6 +3594,7 @@
 <translation id="6136114942382973861">Yuklanmalar panelini yopish</translation>
 <translation id="6137767437444130246">Foydalanuvchi sertifikati</translation>
 <translation id="6138680304137685902">SHA-384 algoritmli X9.62 ECDSA imzosi</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, tarmoq topilmadi</translation>
 <translation id="6141988275892716286">Yuklanishni tasdiqlang</translation>
 <translation id="6143186082490678276">Get Help</translation>
 <translation id="6144938890088808325">Chromebook qurilmalarini takomillashtirishga yordam bering</translation>
@@ -3882,6 +3901,7 @@
 <translation id="6602956230557165253">Kezish uchun chapga va o‘ngga tugmalarini ishlating.</translation>
 <translation id="6605847144724004692">Haligacha hech kim baho bermagan.</translation>
 <translation id="6607831829715835317">Qo‘shimcha &amp;asboblar</translation>
+<translation id="6611972847767394631">Varaqlarni bu yerdan toping</translation>
 <translation id="6612358246767739896">Himoyalangan kontent</translation>
 <translation id="6615455863669487791">Ko‘rsatish</translation>
 <translation id="6618097958368085618">Baribir davom etsin</translation>
@@ -3950,6 +3970,7 @@
 <translation id="6709133671862442373">Yangiliklar</translation>
 <translation id="6709357832553498500"><ph name="EXTENSIONNAME" /> orqali ulanish</translation>
 <translation id="6710213216561001401">Avvalgi</translation>
+<translation id="6715803357256707211">Linux ilovasini oʻrnatishda xatolik yuz berdi. Batafsil axborot olish uchun bildirishnoma ustiga bosing.</translation>
 <translation id="6721678857435001674">Elektron kalitingiz modeli va ishlab chiqaruvchisini ko‘rish</translation>
 <translation id="6721972322305477112">&amp;Fayl</translation>
 <translation id="672213144943476270">Mehmon sifatida foydalanish uchun o‘z profilingizga kiring.</translation>
@@ -3974,7 +3995,6 @@
 <translation id="674632704103926902">Teginib tortish imkoniyatini yoqish</translation>
 <translation id="6748217015615267851">Videoni renderlash vositasi: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Agar davom etsangiz, faqat sinxronlangan ma’lumotlar qayta tiklanadi. Qurilmadagi ma’lumotlar esa tiklanmaydi.</translation>
-<translation id="6748775883310276718">Yagona ilova uchun kiosk</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Inkognito)</translation>
 <translation id="6757101664402245801">URL manzilidan nusxa olindi.</translation>
 <translation id="6758056191028427665">Bizga fikr-mulohaza yuboring.</translation>
@@ -3984,6 +4004,7 @@
 <translation id="6769712124046837540">Printer qo‘shilmoqda...</translation>
 <translation id="6770664076092644100">NFC orqali tasdiqlash</translation>
 <translation id="6771503742377376720">Bu sertifikatlashtirish markazi</translation>
+<translation id="6772339735733515807">Kengaytmalarni boshqarish</translation>
 <translation id="6775163072363532304">Ulangan qurilmalar shu yerda chiqadi.</translation>
 <translation id="6777817260680419853">Yo‘naltirish bloklandi</translation>
 <translation id="6778737459546443941">Ota-onangiz tomonidan hali tasdiqlanmagan</translation>
@@ -4122,6 +4143,7 @@
 <translation id="6972180789171089114">Audio/Video</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> bu jilddagi fayllarni ocha olmaydi, chunki unda tizim fayllari mavjud</translation>
 <translation id="6972754398087986839">Boshlash</translation>
+<translation id="6973611239564315524">Debian 10 (Buster) versiyasi chiqdi</translation>
 <translation id="6974609594866392343">Oflayn demo rejimi</translation>
 <translation id="6977381486153291903">Mikrodastur versiyasi</translation>
 <translation id="6978121630131642226">Qidiruv tizimlari</translation>
@@ -4581,6 +4603,7 @@
 <translation id="7644543211198159466">Ranglar va mavzular</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (egasi)</translation>
 <translation id="7645681574855902035">Linux tasvirini zaxiralash bekor qilinmoqda</translation>
+<translation id="7646772052135772216">Parollar sinxronizatsiyasi ishlamadi</translation>
 <translation id="7647403192093989392">Hech qanday harakat aniqlanmadi</translation>
 <translation id="7648992873808071793">Fayllarni bu qurilmada saqlash</translation>
 <translation id="7649070708921625228">Yordam</translation>
@@ -4768,6 +4791,7 @@
 <translation id="7877451762676714207">Serverda noma’lum xato. Qayta urinib ko‘ring yoki administrator bilan bog‘laning.</translation>
 <translation id="7877680364634660272">Tanishuv</translation>
 <translation id="7878562273885520351">Parolingiz o‘g‘irlangan bo‘lishi mumkin</translation>
+<translation id="7879631849810108578">Tugmalar birikmasi kiritildi: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Keyingi oʻchirib-yoqilganda mahalliy maʼlumotlar tozalanadi</translation>
 <translation id="7881483672146086348">Hisobni ko‘rish</translation>
 <translation id="7882358943899516840">Ta’minot turi</translation>
@@ -4854,6 +4878,7 @@
 <translation id="7987814697832569482">Har doim VPN orqali ulanish</translation>
 <translation id="7988355189918024273">Maxsus imkoniyatlarni yoqish</translation>
 <translation id="7991296728590311172">Switch Access sozlamalari</translation>
+<translation id="7994350303002908848">Plugin VM oʻrnatilmadi. Qayta urining yoki tashkilotingizning qurilma boʻyicha administratoriga murojaat qiling. Xatolik kodi: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">EAP usuli</translation>
 <translation id="7997826902155442747">Jarayonlarning muhimligi</translation>
 <translation id="7999229196265990314">Quyidagi fayllar yaratildi:
@@ -4945,7 +4970,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Tashqi cookie fayllar yoʻq}=1{1 ta tashqi cookie fayl bloklandi}other{# ta tashqi cookie fayl bloklandi}}</translation>
 <translation id="810875025413331850">Yaqin-atrofda hech qanday qurilma topilmadi.</translation>
 <translation id="8111155949205007504">Bu parolni iPhone’ga ulashish</translation>
-<translation id="8113043281354018522">Litsenziya turini tanlang</translation>
 <translation id="8114875720387900039">Gorizontal ajratish</translation>
 <translation id="8116972784401310538">&amp;Xatcho‘plar menejeri</translation>
 <translation id="8117620576188476503">Ulanishlar, yangilanishlar va sozlamalarni holat qatoridan boshqarish. Bu oynani Alt+Shift+S tugmalar birikmasini bosib ochishingiz mumkin.</translation>
@@ -5102,6 +5126,7 @@
 <translation id="8327039559959785305">Linux fayllari ulanmadi. Qaytadan urining.</translation>
 <translation id="8335587457941836791">Javondan olib tashlash</translation>
 <translation id="8336407002559723354">Yangilanishlar <ph name="MONTH_AND_YEAR" /> sanasigacha</translation>
+<translation id="8336721153892716270">Tizim <ph name="LANGUAGE" /> tilida chiqishi uchun qurilmani qayta ishga tushiring.</translation>
 <translation id="8336739000755212683">Qurilmadagi hisob rasmini almashtirish</translation>
 <translation id="8337047789441383384">Bu elektron kalit allaqachon registratsiya qilingan. Uni qaytadan registratsiya qilish shart emas.</translation>
 <translation id="8338952601723052325">Dasturchi sayti</translation>
@@ -5145,6 +5170,7 @@
 <translation id="8400146488506985033">Foydalanuvchilarni boshqarish</translation>
 <translation id="8401432541486058167">Smart kartangiz PIN kodini kiriting.</translation>
 <translation id="8405046151008197676">Oxirgi yangilanishdagi asosiy oʻzgarishlar</translation>
+<translation id="8408068190360279472">Tarmoq: <ph name="NETWORK_TYPE" />, ulanmoqda</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">Avval so‘ralsin (tavsiya etiladi)</translation>
 <translation id="8418445294933751433">&amp;Ichki oyna sifatida ko‘rsatish</translation>
@@ -5434,6 +5460,7 @@
 <translation id="8807632654848257479">Barqaror</translation>
 <translation id="8808478386290700967">Internet-do‘kon</translation>
 <translation id="8808686172382650546">Mushuk</translation>
+<translation id="8808744862003883508">Bu sahifada Google Chrome brauzerida oʻrnatilgan barcha kengaytmalarni koʻrishingiz mumkin.</translation>
 <translation id="8809147117840417135">Och moviy</translation>
 <translation id="8813698869395535039"><ph name="USERNAME" /> nomidan kirib bo‘lmadi</translation>
 <translation id="8813811964357448561">qog‘oz varag‘i</translation>
@@ -5661,7 +5688,6 @@
 <translation id="9121814364785106365">Qadalgan ichki oyna sifatida ochish</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> pauza qilindi</translation>
 <translation id="9124003689441359348">Saqlangan parollar shu yerda turadi</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> ta qoldi)</translation>
 <translation id="9128317794749765148">Oxirigacha sozlanmadi</translation>
 <translation id="9128870381267983090">Tarmoqqa ulanish</translation>
 <translation id="9130015405878219958">Noto‘g‘ri rejim ko‘rsatildi.</translation>
@@ -5700,6 +5726,7 @@
 <translation id="9188732951356337132">Foydalanish va diagnostika axborotini yuborish. Bu qurilma hozirda qurilma va ilovalardan foydalanish haqidagi hamda diagnostika axborotini avtomatik tarzda Google kompaniyasiga yubormoqda. Ushbu axborotdan farzandingiz shaxsini aniqlash uchun foydalanilmaydi. Ular tizim va ilovalar barqarorligi kabilarni yaxshilash uchun ishlatiladi. Ayrim toʻplangan maʼlumotlar Android dasturchilar kabi hamkorlarimizga ham oʻz ilovalari va mahsulotlarini yanada yaxshilashga yordam beradi. Agar farzandingiz uchun Kengaytirilgan veb-qidiruv va ilovalar tarixi yoqilgan boʻlsa, bu maʼlumotlar uning Google hisobiga saqlanadi. <ph name="BEGIN_LINK2" />Batafsil<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + umumiy kalit</translation>
 <translation id="920045321358709304"><ph name="SEARCH_ENGINE" /> orqali qidirish</translation>
+<translation id="9201023452444595544">Har qanday oflayn axborot tozalab tashlanadi</translation>
 <translation id="9201220332032049474">Ekran qulfi parametrlari</translation>
 <translation id="9203398526606335860">&amp;Ma’lumotlarni yig‘ish yoniq</translation>
 <translation id="9203904171912129171">Qurilmani tanlang</translation>
@@ -5712,6 +5739,7 @@
 <translation id="9220525904950070496">Hisobni olib tashlash</translation>
 <translation id="9220820413868316583">Barmoqni oling va qaytadan urining.</translation>
 <translation id="923467487918828349">Hammasi</translation>
+<translation id="929117907539171075">Oʻrnatilgan ilovadagi oflayn maʼlumotlar ham tozalab tashlanadi.</translation>
 <translation id="930268624053534560">Batafsil vaqt nishonlari</translation>
 <translation id="932327136139879170">Bosh sahifa</translation>
 <translation id="932508678520956232">Chop etishni boshlab bo‘lmadi.</translation>
@@ -5738,6 +5766,7 @@
 <translation id="960719561871045870">Operator kodi</translation>
 <translation id="960987915827980018">1 soatcha qoldi</translation>
 <translation id="962802172452141067">Xatcho‘plar javoni</translation>
+<translation id="964057662886721376">Ayrim kengaytmalar brauzer ishlashini sekinlashtirishi mumkin, masalan, aynan beruxsat oʻrnatilgan kengaytmalar</translation>
 <translation id="964286338916298286">IT administratoringiz qurilmangiz uchun Chrome bonuslarini failsizlantirgan.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Ilova}other{Ilovalar}}</translation>
 <translation id="965211523698323809"><ph name="DEVICE_TYPE" /> orqali SMS yuborish va qabul qilish. <ph name="LINK_BEGIN" />Batafsil<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_vi.xtb b/chrome/app/resources/generated_resources_vi.xtb
index 3ad5360..f0f00d1 100644
--- a/chrome/app/resources/generated_resources_vi.xtb
+++ b/chrome/app/resources/generated_resources_vi.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Tùy chỉnh</translation>
 <translation id="1178581264944972037">Tạm dừng</translation>
 <translation id="117916940443676133">Bạn chưa thiết lập mã PIN để bảo vệ khóa bảo mật. Để quản lý dữ liệu đăng nhập, trước tiên, hãy tạo một mã PIN.</translation>
-<translation id="118069123878619799">– đặc điểm hình thể của bạn, chẳng hạn như chiều cao</translation>
 <translation id="1181037720776840403">Xóa</translation>
 <translation id="1183237619868651138">Không thể cài đặt <ph name="EXTERNAL_CRX_FILE" /> trong bộ nhớ đệm cục bộ.</translation>
 <translation id="1185924365081634987">Bạn cũng có thể thử <ph name="GUEST_SIGNIN_LINK_START" />duyệt với tư cách khách<ph name="GUEST_SIGNIN_LINK_END" /> để khắc phục lỗi mạng này.</translation>
@@ -1893,7 +1892,6 @@
 <translation id="3678156199662914018">Tiện ích: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Cảm ơn bạn đã phản hồi. Bạn hiện đang ngoại tuyến và báo cáo của bạn sẽ được gửi sau.</translation>
 <translation id="3682824389861648626">Ngưỡng chuyển động</translation>
-<translation id="3683023058278427253">Chúng tôi đã phát hiện nhiều loại giấy phép cho miền của bạn. Vui lòng chọn một giấy phép để tiếp tục.</translation>
 <translation id="3683524264665795342">Yêu cầu chia sẻ màn hình <ph name="APP_NAME" /></translation>
 <translation id="368789413795732264">Đã có lỗi khi cố gắng ghi tệp: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Ghi vào têp và thư mục bạn mở trong ứng dụng</translation>
@@ -2157,7 +2155,6 @@
 <translation id="4013132157686828973">"<ph name="CLIENT_NAME" />" đang gỡ lỗi trình duyệt này</translation>
 <translation id="4014432863917027322">Bạn muốn sửa "<ph name="EXTENSION_NAME" />"?</translation>
 <translation id="4015163439792426608">Bạn đang sử dụng tiện ích? Bạn có thể dễ dàng <ph name="BEGIN_LINK" />quản lý các tiện ích của mình<ph name="END_LINK" /> ở cùng một nơi.</translation>
-<translation id="4020106588733303597">Rất tiếc!  Hệ thống không tải được giấy phép hiện có.</translation>
 <translation id="4020327272915390518">Menu tùy chọn</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Thêm vào Từ điển</translation>
@@ -2660,7 +2657,6 @@
 <translation id="4823484602432206655">Đọc và thay đổi cài đặt người dùng và thiết bị</translation>
 <translation id="4824958205181053313">Bạn muốn hủy đồng bộ hóa?</translation>
 <translation id="4827675678516992122">Không thể kết nối</translation>
-<translation id="4828937774870308359">Tiếng Úc</translation>
 <translation id="4829768588131278040">Thiết lập mã PIN</translation>
 <translation id="4830502475412647084">Đang cài đặt bản cập nhật hệ điều hành</translation>
 <translation id="4830573902900904548"><ph name="DEVICE_TYPE" /> của bạn không thể kết nối Internet bằng cách sử dụng <ph name="NETWORK_NAME" />. Vui lòng chọn mạng khác. <ph name="LEARN_MORE_LINK_START" />Tìm hiểu thêm<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2759,7 +2755,6 @@
 <translation id="4953689047182316270">Phản hồi các sự kiện trợ năng</translation>
 <translation id="4953808748584563296">Hình đại diện màu cam mặc định</translation>
 <translation id="4955710816792587366">Chọn mã PIN</translation>
-<translation id="4955814292505481804">Hàng năm</translation>
 <translation id="4959262764292427323">Các mật khẩu được lưu trong Tài khoản Google của bạn, vì vậy, bạn có thể sử dụng các mật khẩu đó trên bất cứ thiết bị nào</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Quản trị viên của bạn đã cài đặt ứng dụng này.</translation>
@@ -3241,7 +3236,6 @@
 <translation id="5659593005791499971">Email</translation>
 <translation id="5659833766619490117">Không thể dịch trang này</translation>
 <translation id="5660204307954428567">Ghép nối với <ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Vĩnh viễn</translation>
 <translation id="5667546120811588575">Đang thiết lập Google Play...</translation>
 <translation id="5669267381087807207">Đang kích hoạt</translation>
 <translation id="5669691691057771421">Nhập mã PIN mới</translation>
@@ -3343,7 +3337,6 @@
 <translation id="5815645614496570556">Địa chỉ X.400</translation>
 <translation id="5816434091619127343">Các thay đổi đã yêu cầu đối với máy in sẽ làm cho máy in đó không sử dụng được.</translation>
 <translation id="5817918615728894473">Ghép nối</translation>
-<translation id="5819762621475381970">– cách bài trí phòng của bạn</translation>
 <translation id="5821565227679781414">Tạo lối tắt</translation>
 <translation id="5825412242012995131">Bật (Đề xuất)</translation>
 <translation id="5826395379250998812">Hãy kết nối <ph name="DEVICE_TYPE" /> với điện thoại của bạn. <ph name="LINK_BEGIN" />Tìm hiểu thêm<ph name="LINK_END" /></translation>
@@ -3976,7 +3969,6 @@
 <translation id="674632704103926902">Bật tính năng kéo nhấn</translation>
 <translation id="6748217015615267851">Trình kết xuất: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Bạn có thể tiến hành nhưng chỉ các cài đặt và dữ liệu đã đồng bộ hóa của bạn mới được lưu trữ. Tất cả dữ liệu cục bộ sẽ mất.</translation>
-<translation id="6748775883310276718">Kiosk ứng dụng đơn</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (Ẩn danh)</translation>
 <translation id="6757101664402245801">Đã sao chép URL</translation>
 <translation id="6758056191028427665">Hãy cho chúng tôi biết ý kiến của bạn về dịch vụ của chúng tôi.</translation>
@@ -4949,7 +4941,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Không có cookie bên thứ ba}=1{Đã chặn 1 cookie bên thứ ba}other{Đã chặn # cookie bên thứ ba}}</translation>
 <translation id="810875025413331850">Không tìm thấy thiết bị lân cận.</translation>
 <translation id="8111155949205007504">Chia sẻ mật khẩu này với iPhone của bạn</translation>
-<translation id="8113043281354018522">Chọn loại giấy phép</translation>
 <translation id="8114875720387900039">Chia ngang</translation>
 <translation id="8116972784401310538">&amp;Trình quản lý dấu trang</translation>
 <translation id="8117620576188476503">Quản lý các kết nối, bản cập nhật và cài đặt bằng khay trạng thái. Để truy cập vào đây bằng bàn phím, hãy nhấn tổ hợp phím Alt + Shift + S.</translation>
@@ -5665,7 +5656,6 @@
 <translation id="9121814364785106365">Mở dưới dạng tab được ghim</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> đã bị tạm dừng</translation>
 <translation id="9124003689441359348">Mật khẩu đã lưu của bạn sẽ xuất hiện ở đây</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> giấy phép còn lại)</translation>
 <translation id="9128317794749765148">Không thể hoàn tất quá trình thiết lập</translation>
 <translation id="9128870381267983090">Kết nối đến mạng</translation>
 <translation id="9130015405878219958">Chế độ không hợp lệ được nhập.</translation>
diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb
index c2a5fae..30da71b 100644
--- a/chrome/app/resources/generated_resources_zh-CN.xtb
+++ b/chrome/app/resources/generated_resources_zh-CN.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">自定义</translation>
 <translation id="1178581264944972037">暂停</translation>
 <translation id="117916940443676133">您尚未设置 PIN 码来保护您的安全密钥。要管理登录数据,请先创建一个 PIN 码。</translation>
-<translation id="118069123878619799">- 您的身体特征,例如身高</translation>
 <translation id="1181037720776840403">删除</translation>
 <translation id="1183237619868651138">无法将 <ph name="EXTERNAL_CRX_FILE" /> 安装在本地缓存中。</translation>
 <translation id="1185924365081634987">您也可以尝试<ph name="GUEST_SIGNIN_LINK_START" />以访客身份浏览<ph name="GUEST_SIGNIN_LINK_END" />,以便修复该网络错误。</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">正在等待<ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033">另外<ph name="NUM_PRINTERS" />个可用的设备。</translation>
 <translation id="1495677929897281669">返回到标签页</translation>
+<translation id="1499271269825557605">如果您不认识某款扩展程序或者您的浏览器无法按预期运行,您可在此处关闭或自定义扩展程序。</translation>
 <translation id="1500297251995790841">未知设备 [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">在多帐号登录会话中,此所有者帐号必须是最先登录的帐号。</translation>
 <translation id="150411034776756821">移除 <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">已阻止此网页使用您的摄像头。</translation>
 <translation id="1507246803636407672">舍弃(&amp;D)</translation>
 <translation id="1508491105858779599">请将手指放在指纹传感器上以解锁设备。</translation>
+<translation id="1508575541972276599">当前所用版本为 Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">通过 USB 访问任何<ph name="DEVICE_NAME_AND_VENDOR" /></translation>
 <translation id="150962533380566081">PUK 无效。</translation>
 <translation id="1510030919967934016">系统已阻止此网页跟踪您的位置。</translation>
@@ -431,6 +432,7 @@
 <translation id="1601560923496285236">应用</translation>
 <translation id="1603914832182249871">(无痕)</translation>
 <translation id="1604432177629086300">无法打印。请检查打印机,然后重试。</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />:无法同步密码</translation>
 <translation id="1607139524282324606">清除此条目</translation>
 <translation id="1608626060424371292">移除此用户</translation>
 <translation id="1608668830839595724">可对所选项执行的更多操作</translation>
@@ -557,6 +559,8 @@
 <translation id="177336675152937177">托管应用数据</translation>
 <translation id="1776712937009046120">添加用户</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">此设备由 <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> 管理。
+    请点击“下一步”,以继续使用您的 <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> 帐号登录。</translation>
 <translation id="1779652936965200207">请在“<ph name="DEVICE_NAME" />”上输入此匹配密钥:</translation>
 <translation id="1780152987505130652">关闭群组</translation>
 <translation id="1781291988450150470">当前 PIN 码</translation>
@@ -744,6 +748,7 @@
 <translation id="2048653237708779538">无法执行操作</translation>
 <translation id="2050339315714019657">纵向</translation>
 <translation id="2053312383184521053">闲置状态数据</translation>
+<translation id="2055585478631012616">您将会自动退出这些网站(包括打开的标签页)</translation>
 <translation id="205560151218727633">Google 助理徽标</translation>
 <translation id="2058456167109518507">检测到的设备</translation>
 <translation id="2059913712424898428">时区</translation>
@@ -759,6 +764,7 @@
 <translation id="2079545284768500474">撤消</translation>
 <translation id="2080070583977670716">更多设置</translation>
 <translation id="2087822576218954668">打印:<ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN 网络</translation>
 <translation id="2089566709556890888">使用 Google Chrome 进行安全浏览</translation>
 <translation id="2089795179672254991">当网站想查看复制到剪贴板的文字和图片时询问您(推荐)</translation>
 <translation id="2090165459409185032">要恢复您的帐号信息,请访问 google.com/accounts/recovery</translation>
@@ -982,6 +988,7 @@
 <translation id="2379232090534544565">网站正在使用音频和视频输入</translation>
 <translation id="2379281330731083556">使用系统对话框进行打印...<ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">发送前先询问(推荐)</translation>
+<translation id="2382818385048255866">检查您的扩展程序</translation>
 <translation id="2384436799579181135">出错了。请检查您的打印机,然后重试。</translation>
 <translation id="2387458720915042159">代理连接类型</translation>
 <translation id="2391419135980381625">标准字体</translation>
@@ -1032,6 +1039,7 @@
 <translation id="2462724976360937186">证书授权中心密钥 ID</translation>
 <translation id="2462752602710430187">已添加<ph name="PRINTER_NAME" /></translation>
 <translation id="2464089476039395325">HTTP 代理</translation>
+<translation id="2467267713099745100">“<ph name="NETWORK_TYPE" />”类型的网络,已关闭</translation>
 <translation id="2468205691404969808">使用 Cookie 记住您的偏好设置(即使您不访问这些网页)</translation>
 <translation id="2468402215065996499">拓麻歌子</translation>
 <translation id="2469259292033957819">您没有已保存的打印机。</translation>
@@ -1286,6 +1294,7 @@
 <translation id="2800760947029405028">上传图片</translation>
 <translation id="2803375539583399270">输入 PIN 码</translation>
 <translation id="2804043232879091219">无法打开替代浏览器</translation>
+<translation id="2804667941345577550">您将会自动退出这个网站(包括打开的标签页)</translation>
 <translation id="2804680522274557040">摄像头已关闭</translation>
 <translation id="2805646850212350655">Microsoft 加密文件系统</translation>
 <translation id="2805756323405976993">应用</translation>
@@ -1293,6 +1302,7 @@
 <translation id="2806891468525657116">快捷方式已存在</translation>
 <translation id="2807517655263062534">您下载的文件会显示在此处</translation>
 <translation id="2809586584051668049">及另外<ph name="NUMBER_ADDITIONAL_DISABLED" />个扩展程序</translation>
+<translation id="2810390687497823527">如果您不认识某款扩展程序或者您的浏览器无法按预期运行,您可在此处关闭或自定义扩展程序。</translation>
 <translation id="2812049959647166806">Thunderbolt 不受支持</translation>
 <translation id="2812944337881233323">请尝试退出并重新登录</translation>
 <translation id="2812989263793994277">不显示任何图片</translation>
@@ -1332,6 +1342,7 @@
 <translation id="2861941300086904918">Native Client 安全管理器</translation>
 <translation id="2864601841139725659">设置您的个人资料照片</translation>
 <translation id="2865919525181940183">当前屏幕所含程序的屏幕截图</translation>
+<translation id="286674810810214575">正在检查电源…</translation>
 <translation id="2867768963760577682">在固定标签页中打开</translation>
 <translation id="2868746137289129307">此扩展程序已过期并已根据企业政策停用。当有新版本时,它可能会自动启用。</translation>
 <translation id="2870560284913253234">网站</translation>
@@ -1409,6 +1420,7 @@
 <translation id="2972581237482394796">重做(&amp;R)</translation>
 <translation id="2973324205039581528">将单个网站静音</translation>
 <translation id="2977480621796371840">从组中移除</translation>
+<translation id="2979520980928493164">打造一个更稳健、更欢快的 Chrome</translation>
 <translation id="2979639724566107830">在新窗口中打开</translation>
 <translation id="2981113813906970160">显示大号鼠标光标</translation>
 <translation id="2982970937345031">以匿名方式报告</translation>
@@ -1515,6 +1527,7 @@
 <translation id="3143515551205905069">取消同步</translation>
 <translation id="3143754809889689516">从头播放</translation>
 <translation id="3144647712221361880">以其他身份打开链接</translation>
+<translation id="3145187901750964977">无法安装虚拟机。请重试,或与贵单位的设备管理员联系。错误代码:<ph name="ERROR_CODE" />。</translation>
 <translation id="3149477159749171726">版本:
     <ph name="LINUX_VERSION" />
 
@@ -1553,6 +1566,7 @@
 <translation id="3192947282887913208">音频文件</translation>
 <translation id="3194737229810486521"><ph name="URL" /> 想在您的设备上永久存储数据</translation>
 <translation id="3199127022143353223">服务器</translation>
+<translation id="3201306578844503970">无法安装虚拟机,因为发生了网络连接错误。请重试,或与贵单位的设备管理员联系。错误代码:<ph name="ERROR_CODE" />。</translation>
 <translation id="3201422919974259695">可用的 USB 设备会显示在此处。</translation>
 <translation id="3202131003361292969">路径</translation>
 <translation id="3202173864863109533">此标签页已静音。</translation>
@@ -1889,7 +1903,6 @@
 <translation id="3678156199662914018">扩展程序:<ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">感谢您提交反馈。您目前处于离线状态,系统将在您上线后提交您的反馈报告。</translation>
 <translation id="3682824389861648626">鼠标移动阈值</translation>
-<translation id="3683023058278427253">我们检测到您的网域有多种许可类型。请选择一种许可类型以继续操作。</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> 屏幕共享请求</translation>
 <translation id="368789413795732264">尝试写入文件时发生错误:<ph name="ERROR_TEXT" />。</translation>
 <translation id="3688507211863392146">写入您在此应用中打开的文件和文件夹</translation>
@@ -2063,6 +2076,7 @@
 <translation id="389589731200570180">与访客共享</translation>
 <translation id="389901847090970821">选择键盘</translation>
 <translation id="3899879303189199559">离线超过 1 年</translation>
+<translation id="3900789207771372462">某些扩展程序可以查看您的浏览活动(包括个人信息)。</translation>
 <translation id="3900966090527141178">导出密码</translation>
 <translation id="3901991538546252627">正在连接:<ph name="NAME" /></translation>
 <translation id="3905761538810670789">修复应用</translation>
@@ -2152,7 +2166,6 @@
 <translation id="4013132157686828973">“<ph name="CLIENT_NAME" />”正在调试此浏览器</translation>
 <translation id="4014432863917027322">要修复“<ph name="EXTENSION_NAME" />”吗?</translation>
 <translation id="4015163439792426608">安装了扩展程序?在一个位置轻松<ph name="BEGIN_LINK" />管理您的扩展程序<ph name="END_LINK" />。</translation>
-<translation id="4020106588733303597">糟糕!系统未能成功加载可用的许可。</translation>
 <translation id="4020327272915390518">选项菜单</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">添加到字典中(&amp;A)</translation>
@@ -2190,6 +2203,7 @@
 <translation id="407520071244661467">缩放</translation>
 <translation id="4075639477629295004">无法投射“<ph name="FILE_NAME" />”。</translation>
 <translation id="4077917118009885966">已拦截此网站上的广告</translation>
+<translation id="4077919383365622693"><ph name="SITE" /> 存储的所有数据和 Cookie 都会被清除。</translation>
 <translation id="4079140982534148664">使用增强的“拼写检查”功能</translation>
 <translation id="4081242589061676262">无法投射文件。</translation>
 <translation id="4084682180776658562">添加书签</translation>
@@ -2264,6 +2278,7 @@
 <translation id="4181841719683918333">语言</translation>
 <translation id="4184885522552335684">拖动即可移动显示屏</translation>
 <translation id="4194570336751258953">启用点按单击</translation>
+<translation id="4194595472342532425">无法设置 Plugin VM,因为出现了配置问题。请与贵单位的设备管理员联系。错误代码:<ph name="ERROR_CODE" />。</translation>
 <translation id="4195643157523330669">在新标签页中打开</translation>
 <translation id="4195814663415092787">从上次停下的地方继续</translation>
 <translation id="4198146608511578238">只需按住“启动器”图标即可与 Google 助理对话。</translation>
@@ -2487,6 +2502,7 @@
 <translation id="4549791035683739768">您的安全密钥未存储任何指纹</translation>
 <translation id="4551763574344810652">按 <ph name="MODIFIER_KEY_DESCRIPTION" /> 即可撤消</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005">“<ph name="NETWORK_TYPE" />”类型的网络,信号强度为 <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">外部扩展程序的版本与现有版本相同或更低。</translation>
 <translation id="4555769855065597957">阴影</translation>
 <translation id="4555863373929230635">若想将密码保存到您的 Google 帐号中,请登录帐号并开启同步功能。</translation>
@@ -2564,6 +2580,7 @@
 <translation id="4665446389743427678">即将删除 <ph name="SITE" /> 存储的所有数据。</translation>
 <translation id="4668721319092543482">点击即可启用 <ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">提取页面</translation>
+<translation id="46733273239502219">已安装应用中的离线数据也会被清除</translation>
 <translation id="4673442866648850031">取出触控笔时打开触控笔工具</translation>
 <translation id="4677585247300749148"><ph name="URL" /> 想对无障碍事件做出响应</translation>
 <translation id="4677772697204437347">GPU内存</translation>
@@ -2655,7 +2672,6 @@
 <translation id="4823484602432206655">读取和更改用户设置与设备设置</translation>
 <translation id="4824958205181053313">取消同步?</translation>
 <translation id="4827675678516992122">无法连接</translation>
-<translation id="4828937774870308359">澳大利亚</translation>
 <translation id="4829768588131278040">设置 PIN 码</translation>
 <translation id="4830502475412647084">正在安装操作系统更新</translation>
 <translation id="4830573902900904548">您的<ph name="DEVICE_TYPE" />无法通过<ph name="NETWORK_NAME" />连接到互联网,请选择其他网络。<ph name="LEARN_MORE_LINK_START" />了解详情<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2696,6 +2712,7 @@
 <translation id="4876273079589074638">帮助我们的工程师调查并解决此崩溃问题。请列出您的具体操作,越详细越好!</translation>
 <translation id="4876895919560854374">将屏幕锁定和解锁</translation>
 <translation id="4877276003880815204">检查元素</translation>
+<translation id="4878653975845355462">您的管理员已关闭自定义背景</translation>
 <translation id="4879491255372875719">自动(默认)</translation>
 <translation id="4880328057631981605">接入点名称 (APN)</translation>
 <translation id="4880827082731008257">搜索历史记录</translation>
@@ -2751,10 +2768,10 @@
 <translation id="4943691134276646401">“<ph name="CHROME_EXTENSION_NAME" />”想连接到串行端口</translation>
 <translation id="4944310289250773232">此项身份验证服务由 <ph name="SAML_DOMAIN" /> 托管</translation>
 <translation id="495170559598752135">操作</translation>
+<translation id="4952981627953231344">不允许在此设备上使用 Plugin VM。请与贵单位的设备管理员联系。</translation>
 <translation id="4953689047182316270">对无障碍事件做出响应</translation>
 <translation id="4953808748584563296">默认的橙色头像</translation>
 <translation id="4955710816792587366">选择 PIN 码</translation>
-<translation id="4955814292505481804">年度</translation>
 <translation id="4959262764292427323">系统会将密码保存在您的 Google 帐号中,以便您在任意设备上使用密码</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">您的管理员已安装此应用。</translation>
@@ -3236,7 +3253,6 @@
 <translation id="5659593005791499971">电子邮件</translation>
 <translation id="5659833766619490117">无法翻译此网页</translation>
 <translation id="5660204307954428567">与“<ph name="DEVICE_NAME" />”配对</translation>
-<translation id="5662477687021125631">永久</translation>
 <translation id="5667546120811588575">正在设置 Google Play…</translation>
 <translation id="5669267381087807207">正在激活</translation>
 <translation id="5669691691057771421">请输入新的 PIN 码</translation>
@@ -3252,6 +3268,7 @@
 <translation id="5687326903064479980">时区</translation>
 <translation id="5689516760719285838">位置信息</translation>
 <translation id="56907980372820799">关联数据</translation>
+<translation id="5691180005790455277"><ph name="SITE_GROUP_NAME" /> 及其名下所有网站存储的所有数据和 Cookie 都会被清除。</translation>
 <translation id="5691511426247308406">家用</translation>
 <translation id="5692183275898619210">打印完成</translation>
 <translation id="5696143504434933566">举报“<ph name="EXTENSION_NAME" />”的滥用行为</translation>
@@ -3338,7 +3355,6 @@
 <translation id="5815645614496570556">X.400 地址</translation>
 <translation id="5816434091619127343">所请求的打印机更改会导致打印机不可用。</translation>
 <translation id="5817918615728894473">配对</translation>
-<translation id="5819762621475381970">- 您房间的布局</translation>
 <translation id="5821565227679781414">创建快捷方式</translation>
 <translation id="5825412242012995131">开启(推荐)</translation>
 <translation id="5826395379250998812">请将您的 <ph name="DEVICE_TYPE" /> 连接到手机。<ph name="LINK_BEGIN" />了解详情<ph name="LINK_END" /></translation>
@@ -3474,6 +3490,7 @@
 <translation id="6007240208646052708">不支持使用您所用的语言执行语音搜索。</translation>
 <translation id="6009781704028455063">内置传感器</translation>
 <translation id="6010869025736512584">正在存取视频输入</translation>
+<translation id="6011074160056912900">以太网</translation>
 <translation id="6011193465932186973">指纹</translation>
 <translation id="6011449291337289699">清除网站数据</translation>
 <translation id="6015266928248016057">PUK 无效。剩余重试次数:<ph name="RETRIES" /> 次。</translation>
@@ -3510,6 +3527,7 @@
 <translation id="6053401458108962351">清除浏览数据(&amp;C)...</translation>
 <translation id="6055171183283175969">您输入的密码不正确。</translation>
 <translation id="6055392876709372977">PKCS #1,带有 RSA 加密的 SHA-256</translation>
+<translation id="6055907707645252013">“<ph name="NETWORK_TYPE" />”类型的网络,未连接</translation>
 <translation id="6056710589053485679">正常重新加载</translation>
 <translation id="6057381398996433816">此网站已被禁止使用动态传感器和光传感器。</translation>
 <translation id="6058567592298841668">插件虚拟机:<ph name="PLUGIN_VM_NAME" /></translation>
@@ -3573,6 +3591,7 @@
 <translation id="6136114942382973861">关闭下载内容栏</translation>
 <translation id="6137767437444130246">用户证书</translation>
 <translation id="6138680304137685902">采用 SHA-384 算法的 X9.62 ECDSA 签名</translation>
+<translation id="6138894911715675297">“<ph name="NETWORK_TYPE" />”类型,没有可连接的网络</translation>
 <translation id="6141988275892716286">确认下载</translation>
 <translation id="6143186082490678276">获取帮助</translation>
 <translation id="6144938890088808325">帮助我们改进 Chromebook</translation>
@@ -3879,6 +3898,7 @@
 <translation id="6602956230557165253">使用左右箭头键进行导航。</translation>
 <translation id="6605847144724004692">还没有任何用户给出评分。</translation>
 <translation id="6607831829715835317">更多工具(&amp;L)</translation>
+<translation id="6611972847767394631">您可在此处找到自己的标签页</translation>
 <translation id="6612358246767739896">受保护的内容</translation>
 <translation id="6615455863669487791">显示图标</translation>
 <translation id="6618097958368085618">仍然保留</translation>
@@ -3947,6 +3967,7 @@
 <translation id="6709133671862442373">资讯</translation>
 <translation id="6709357832553498500">使用“<ph name="EXTENSIONNAME" />”连接</translation>
 <translation id="6710213216561001401">上一个</translation>
+<translation id="6715803357256707211">安装 Linux 应用时出错。请点击通知以了解详情。</translation>
 <translation id="6721678857435001674">查看您的安全密钥的品牌和型号</translation>
 <translation id="6721972322305477112">文件(&amp;F)</translation>
 <translation id="672213144943476270">在以访客身份浏览前,请先解锁您的个人资料。</translation>
@@ -3971,7 +3992,6 @@
 <translation id="674632704103926902">启用点按拖动功能</translation>
 <translation id="6748217015615267851">呈现器:<ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">您可以继续,但系统将只恢复已同步的数据和设置。所有本地数据都将会丢失。</translation>
-<translation id="6748775883310276718">单个应用自助服务终端</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" />(无痕)</translation>
 <translation id="6757101664402245801">网址已复制</translation>
 <translation id="6758056191028427665">让我们知道您的满意度。</translation>
@@ -3981,6 +4001,7 @@
 <translation id="6769712124046837540">添加打印机…</translation>
 <translation id="6770664076092644100">通过 NFC 进行验证</translation>
 <translation id="6771503742377376720">是证书授权中心</translation>
+<translation id="6772339735733515807">管理您的扩展程序</translation>
 <translation id="6775163072363532304">可用设备将会显示在此处。</translation>
 <translation id="6777817260680419853">已禁止重定向</translation>
 <translation id="6778737459546443941">您的父亲/母亲尚未批准此网站</translation>
@@ -4119,6 +4140,7 @@
 <translation id="6972180789171089114">音频/视频</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> 无法打开此文件夹内的文件,因为此文件夹含有系统文件</translation>
 <translation id="6972754398087986839">开始使用</translation>
+<translation id="6973611239564315524">可以升级至 Debian 10 (Buster)</translation>
 <translation id="6974609594866392343">离线演示模式</translation>
 <translation id="6977381486153291903">固件版本</translation>
 <translation id="6978121630131642226">搜索引擎</translation>
@@ -4578,6 +4600,7 @@
 <translation id="7644543211198159466">颜色和主题背景</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" />(所有者)</translation>
 <translation id="7645681574855902035">正在取消 Linux 备份</translation>
+<translation id="7646772052135772216">无法同步密码</translation>
 <translation id="7647403192093989392">近期无活动</translation>
 <translation id="7648992873808071793">在此设备上存储文件</translation>
 <translation id="7649070708921625228">帮助</translation>
@@ -4766,6 +4789,7 @@
 <translation id="7877451762676714207">未知服务器错误。请重试或与服务器管理员联系。</translation>
 <translation id="7877680364634660272">导览</translation>
 <translation id="7878562273885520351">您的密码可能会被盗用</translation>
+<translation id="7879631849810108578">已成功设置快捷键:<ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">系统会在您重启设备时删除本地数据</translation>
 <translation id="7881483672146086348">查看帐号</translation>
 <translation id="7882358943899516840">提供商类型</translation>
@@ -4852,6 +4876,7 @@
 <translation id="7987814697832569482">始终通过此 VPN 连接</translation>
 <translation id="7988355189918024273">启用辅助功能</translation>
 <translation id="7991296728590311172">开关控制设置</translation>
+<translation id="7994350303002908848">无法安装 Plugin VM。请重试,或与贵单位的设备管理员联系。错误代码:<ph name="ERROR_CODE" />。</translation>
 <translation id="7994702968232966508">EAP 方法</translation>
 <translation id="7997826902155442747">进程优先级</translation>
 <translation id="7999229196265990314">已创建以下文件:
@@ -4944,7 +4969,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{无第三方 Cookie}=1{已屏蔽 1 个第三方 Cookie}other{已屏蔽 # 个第三方 Cookie}}</translation>
 <translation id="810875025413331850">未找到附近的设备。</translation>
 <translation id="8111155949205007504">将此密码发送到您的 iPhone</translation>
-<translation id="8113043281354018522">选择许可类型</translation>
 <translation id="8114875720387900039">水平分割</translation>
 <translation id="8116972784401310538">书签管理器(&amp;B)</translation>
 <translation id="8117620576188476503">使用状态栏管理连接、更新和设置。若要通过键盘访问这些内容,请按 Alt + Shift + S 组合键。</translation>
@@ -5100,6 +5124,7 @@
 <translation id="8327039559959785305">装载 Linux 文件时出错。请重试。</translation>
 <translation id="8335587457941836791">取消固定到任务栏</translation>
 <translation id="8336407002559723354">将于 <ph name="MONTH_AND_YEAR" />停止更新</translation>
+<translation id="8336721153892716270">重启设备以改用<ph name="LANGUAGE" />显示系统文字</translation>
 <translation id="8336739000755212683">更改设备帐号图片</translation>
 <translation id="8337047789441383384">您已注册过此安全密钥。无需再次注册。</translation>
 <translation id="8338952601723052325">开发者网站</translation>
@@ -5143,6 +5168,7 @@
 <translation id="8400146488506985033">管理用户</translation>
 <translation id="8401432541486058167">请提供与您的智能卡关联的 PIN 码。</translation>
 <translation id="8405046151008197676">了解最近更新的主要内容</translation>
+<translation id="8408068190360279472">“<ph name="NETWORK_TYPE" />”类型的网络,正在连接</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">先询问(推荐)</translation>
 <translation id="8418445294933751433">显示为标签页(&amp;S)</translation>
@@ -5432,6 +5458,7 @@
 <translation id="8807632654848257479">稳定</translation>
 <translation id="8808478386290700967">Chrome 网上应用店</translation>
 <translation id="8808686172382650546">猫</translation>
+<translation id="8808744862003883508">在此页面上,您可看到 Chrome 中已安装的所有扩展程序。</translation>
 <translation id="8809147117840417135">浅蓝绿色</translation>
 <translation id="8813698869395535039">无法登录 <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">张纸</translation>
@@ -5659,7 +5686,6 @@
 <translation id="9121814364785106365">在固定标签页中打开</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" />已被暂停</translation>
 <translation id="9124003689441359348">已保存的密码将显示在这里</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" />(剩余 <ph name="LICENSE_COUNT" /> 项)</translation>
 <translation id="9128317794749765148">无法完成设置</translation>
 <translation id="9128870381267983090">连接到网络</translation>
 <translation id="9130015405878219958">输入的模式无效。</translation>
@@ -5698,6 +5724,7 @@
 <translation id="9188732951356337132">发送使用情况数据和诊断数据。目前,此设备会自动向 Google 发送诊断数据、设备数据和应用使用情况数据。这些数据不会被用来辨识您孩子的身份,而是会被用来帮助提高系统和应用的稳定性以及实现其他方面的改进。部分汇总数据也会对 Google 应用和合作伙伴(例如 Android 开发者)有所帮助。如果您已为孩子开启“其他网络与应用活动记录”设置,这些数据可能会被保存到其 Google 帐号中。<ph name="BEGIN_LINK2" />了解详情<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPSec + 预共享密钥</translation>
 <translation id="920045321358709304">在<ph name="SEARCH_ENGINE" />中搜索</translation>
+<translation id="9201023452444595544">所有离线数据都会被清除</translation>
 <translation id="9201220332032049474">屏幕锁定选项</translation>
 <translation id="9203398526606335860">分析已启用(&amp;P)</translation>
 <translation id="9203904171912129171">选择设备</translation>
@@ -5710,6 +5737,7 @@
 <translation id="9220525904950070496">移除帐号</translation>
 <translation id="9220820413868316583">请抬起手指,然后重试。</translation>
 <translation id="923467487918828349">显示全部</translation>
+<translation id="929117907539171075">已安装应用中的离线数据也会被清除</translation>
 <translation id="930268624053534560">详细时间戳</translation>
 <translation id="932327136139879170">首页</translation>
 <translation id="932508678520956232">无法开始打印。</translation>
@@ -5735,6 +5763,7 @@
 <translation id="960719561871045870">运营商代码</translation>
 <translation id="960987915827980018">约剩 1 小时</translation>
 <translation id="962802172452141067">书签文件夹树</translation>
+<translation id="964057662886721376">某些扩展程序可能会拖慢 Chrome 的运行速度 - 尤其是您原本没打算安装的那些扩展程序。</translation>
 <translation id="964286338916298286">您的 IT 管理员已禁止您的设备享用 Chrome 附赠的好礼。</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{应用}other{应用}}</translation>
 <translation id="965211523698323809">通过您的<ph name="DEVICE_TYPE" />收发短信。<ph name="LINK_BEGIN" />了解详情<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_zh-HK.xtb b/chrome/app/resources/generated_resources_zh-HK.xtb
index 8607d2d..22e1210 100644
--- a/chrome/app/resources/generated_resources_zh-HK.xtb
+++ b/chrome/app/resources/generated_resources_zh-HK.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">自訂</translation>
 <translation id="1178581264944972037">暫停</translation>
 <translation id="117916940443676133">您的安全密鑰並未受 PIN 保護。請先建立 PIN 以管理登入資料。</translation>
-<translation id="118069123878619799">- 您的身體特徵,例如身高</translation>
 <translation id="1181037720776840403">移除</translation>
 <translation id="1183237619868651138">無法在本機快取中安裝 <ph name="EXTERNAL_CRX_FILE" />。</translation>
 <translation id="1185924365081634987">您也可以嘗試<ph name="GUEST_SIGNIN_LINK_START" />以訪客身分瀏覽<ph name="GUEST_SIGNIN_LINK_END" />,藉此修正網絡問題。</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">正在等待 <ph name="LOAD_STATE_PARAMETER" />…</translation>
 <translation id="1495486559005647033">還有 <ph name="NUM_PRINTERS" /> 個可用裝置。</translation>
 <translation id="1495677929897281669">返回分頁</translation>
+<translation id="1499271269825557605">如果你對某個擴充功能沒有印象,或是瀏覽器無法正常運作,可以在這裡關閉或自訂擴充功能。</translation>
 <translation id="1500297251995790841">不明裝置 [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">擁有者帳戶必須是多重登入工作階段中第一個登入的帳戶。</translation>
 <translation id="150411034776756821">移除 <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">系統已封鎖這個網頁存取您的相機。</translation>
 <translation id="1507246803636407672">捨棄(&amp;D)</translation>
 <translation id="1508491105858779599">將您的手指放在指紋感應器上即可解鎖裝置。</translation>
+<translation id="1508575541972276599">目前版本為 Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">使用 USB 存取所有 <ph name="DEVICE_NAME_AND_VENDOR" /></translation>
 <translation id="150962533380566081">PUK 無效。</translation>
 <translation id="1510030919967934016">這個網頁已被封鎖,無法追蹤您的位置。</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">套用</translation>
 <translation id="1603914832182249871">(無痕模式)</translation>
 <translation id="1604432177629086300">無法列印。請檢查打印機,然後再試一次</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />:密碼同步功能無法正常運作</translation>
 <translation id="1607139524282324606">清除項目</translation>
 <translation id="1608626060424371292">移除這個使用者</translation>
 <translation id="1608668830839595724">更多可對所選項目執行的動作</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">代管應用程式數據</translation>
 <translation id="1776712937009046120">新增使用者</translation>
 <translation id="1776883657531386793"><ph name="OID" />:<ph name="INFO" /></translation>
+<translation id="1777310661937894236">這個裝置是由 <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> 所管理。
+    請按 [下一步] 繼續登入你的 <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> 帳戶。</translation>
 <translation id="1779652936965200207">請在「<ph name="DEVICE_NAME" />」上輸入以下密碼金鑰:</translation>
 <translation id="1780152987505130652">關閉群組</translation>
 <translation id="1781291988450150470">目前的 PIN</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">無法執行操作</translation>
 <translation id="2050339315714019657">直向</translation>
 <translation id="2053312383184521053">閒置狀態數據</translation>
+<translation id="2055585478631012616">系統會將你登出這些網站,包括在開啟的分頁中也一樣</translation>
 <translation id="205560151218727633">「Google 助理」標誌</translation>
 <translation id="2058456167109518507">偵測到的裝置</translation>
 <translation id="2059913712424898428">時區</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">復原</translation>
 <translation id="2080070583977670716">顯示更多設定</translation>
 <translation id="2087822576218954668">列印:<ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN 網路</translation>
 <translation id="2089566709556890888">透過 Google Chrome 瀏覽器安全瀏覽內容</translation>
 <translation id="2089795179672254991">在網站要求查看複製到剪貼簿的文字和圖片時詢問您 (建議)</translation>
 <translation id="2090165459409185032">如要復原帳戶資料,請前往:google.com/accounts/recovery</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">有網站正在存取音訊和影片輸入</translation>
 <translation id="2379281330731083556">使用系統對話方塊列印…<ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">傳送前先詢問 (建議)</translation>
+<translation id="2382818385048255866">檢查你的擴充功能</translation>
 <translation id="2384436799579181135">發生錯誤。請檢查您的打印機,然後再試一次。</translation>
 <translation id="2387458720915042159">Proxy 連接類型</translation>
 <translation id="2391419135980381625">標準字型</translation>
@@ -1035,6 +1042,7 @@
 <translation id="2462724976360937186">憑證授權單位金鑰識別碼</translation>
 <translation id="2462752602710430187">已新增「<ph name="PRINTER_NAME" />」</translation>
 <translation id="2464089476039395325">HTTP Proxy</translation>
+<translation id="2467267713099745100"><ph name="NETWORK_TYPE" />網路,關閉</translation>
 <translation id="2468205691404969808">使用 Cookie 記住您的偏好設定 (即使你沒有瀏覽這些網頁)</translation>
 <translation id="2468402215065996499">他媽哥池</translation>
 <translation id="2469259292033957819">你冇任何儲存咗嘅打印機。</translation>
@@ -1289,6 +1297,7 @@
 <translation id="2800760947029405028">上載圖片</translation>
 <translation id="2803375539583399270">請輸入 PIN</translation>
 <translation id="2804043232879091219">無法開啟替代瀏覽器</translation>
+<translation id="2804667941345577550">系統會將你登出這個網站,包括在開啟的分頁中也一樣</translation>
 <translation id="2804680522274557040">相機已關閉</translation>
 <translation id="2805646850212350655">Microsoft 加密檔案系統</translation>
 <translation id="2805756323405976993">應用程式</translation>
@@ -1296,6 +1305,7 @@
 <translation id="2806891468525657116">捷徑已存在</translation>
 <translation id="2807517655263062534">您下載的檔案會在這裡顯示</translation>
 <translation id="2809586584051668049">和另外 <ph name="NUMBER_ADDITIONAL_DISABLED" /> 個</translation>
+<translation id="2810390687497823527">如果你對某個擴充功能沒有印象,或是瀏覽器無法正常運作,可以在這裡關閉或自訂擴充功能。</translation>
 <translation id="2812049959647166806">系統不支援 Thunderbolt</translation>
 <translation id="2812944337881233323">請嘗試登出並重新登入</translation>
 <translation id="2812989263793994277">不顯示任何圖片</translation>
@@ -1335,6 +1345,7 @@
 <translation id="2861941300086904918">Native Client 安全性管理員</translation>
 <translation id="2864601841139725659">設定您的個人檔案相片</translation>
 <translation id="2865919525181940183">目前畫面上面嘅程式螢幕截圖</translation>
+<translation id="286674810810214575">正在檢查電源...</translation>
 <translation id="2867768963760577682">在固定分頁中開啟</translation>
 <translation id="2868746137289129307">這項擴充功能已過時,並根據企業政策停用。當日後有更新版本可用,系統可能會自動啟用該功能。</translation>
 <translation id="2870560284913253234">網站</translation>
@@ -1412,6 +1423,7 @@
 <translation id="2972581237482394796">重做(&amp;R)</translation>
 <translation id="2973324205039581528">將單一網站靜音</translation>
 <translation id="2977480621796371840">從群組中移除</translation>
+<translation id="2979520980928493164">更流暢、更容易使用的 Chrome</translation>
 <translation id="2979639724566107830">在新視窗中開啟</translation>
 <translation id="2981113813906970160">顯示大型滑鼠游標</translation>
 <translation id="2982970937345031">以匿名方式報告</translation>
@@ -1518,6 +1530,7 @@
 <translation id="3143515551205905069">取消同步處理</translation>
 <translation id="3143754809889689516">從頭開始播放</translation>
 <translation id="3144647712221361880">以其他身分開啟連結</translation>
+<translation id="3145187901750964977">無法安裝虛擬機器。請再試一次,或是與貴機構的裝置管理員聯絡。錯誤代碼:<ph name="ERROR_CODE" />。</translation>
 <translation id="3149477159749171726">版本:<ph name="LINUX_VERSION" />
 
     說明:
@@ -1555,6 +1568,7 @@
 <translation id="3192947282887913208">音效檔案</translation>
 <translation id="3194737229810486521"><ph name="URL" /> 要求在您的裝置上永久儲存數據</translation>
 <translation id="3199127022143353223">伺服器</translation>
+<translation id="3201306578844503970">網路發生錯誤,因此無法安裝虛擬機器。請再試一次,或是與貴機構的裝置管理員聯絡。錯誤代碼:<ph name="ERROR_CODE" />。</translation>
 <translation id="3201422919974259695">可用的 USB 裝置將會在這裡顯示。</translation>
 <translation id="3202131003361292969">路徑</translation>
 <translation id="3202173864863109533">此分頁的音效已設為靜音。</translation>
@@ -1891,7 +1905,6 @@
 <translation id="3678156199662914018">擴充功能:<ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">多謝您提供的意見反映。您目前處於離線狀態,系統會稍後傳送您的報告。</translation>
 <translation id="3682824389861648626">移動限制</translation>
-<translation id="3683023058278427253">我們偵測到您的網域有多種授權類型。請選取一種類型以繼續操作。</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> 要求共用螢幕</translation>
 <translation id="368789413795732264">嘗試寫入檔案時發生錯誤:<ph name="ERROR_TEXT" />。</translation>
 <translation id="3688507211863392146">寫入您在應用程式中開啟的檔案和資料夾</translation>
@@ -2065,6 +2078,7 @@
 <translation id="389589731200570180">與訪客共用</translation>
 <translation id="389901847090970821">選取鍵盤</translation>
 <translation id="3899879303189199559">離線超過一年</translation>
+<translation id="3900789207771372462">部分擴充功能可以查看你的瀏覽活動 (包括個人資訊)。</translation>
 <translation id="3900966090527141178">匯出密碼</translation>
 <translation id="3901991538546252627">正在連線至 <ph name="NAME" /></translation>
 <translation id="3905761538810670789">修復應用程式</translation>
@@ -2155,7 +2169,6 @@
 <translation id="4013132157686828973">「<ph name="CLIENT_NAME" />」正在為此瀏覽器偵錯</translation>
 <translation id="4014432863917027322">修復「<ph name="EXTENSION_NAME" />」?</translation>
 <translation id="4015163439792426608">您有使用擴充程式嗎?集中<ph name="BEGIN_LINK" />管理擴充程式<ph name="END_LINK" />,輕鬆又方便。</translation>
-<translation id="4020106588733303597">抱歉!系統無法載入可用的授權。</translation>
 <translation id="4020327272915390518">選項選單</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">新增到字典(&amp;A)</translation>
@@ -2193,6 +2206,7 @@
 <translation id="407520071244661467">縮放比例</translation>
 <translation id="4075639477629295004">無法投放 <ph name="FILE_NAME" />。</translation>
 <translation id="4077917118009885966">已封鎖此網站的廣告</translation>
+<translation id="4077919383365622693"><ph name="SITE" /> 儲存的所有資料和 Cookie 都將遭到清除。</translation>
 <translation id="4079140982534148664">使用進階拼字檢查功能</translation>
 <translation id="4081242589061676262">無法投放檔案。</translation>
 <translation id="4084682180776658562">書籤</translation>
@@ -2267,6 +2281,7 @@
 <translation id="4181841719683918333">語言</translation>
 <translation id="4184885522552335684">拖曳即可移動顯示屏</translation>
 <translation id="4194570336751258953">啟用輕按點擊功能</translation>
+<translation id="4194595472342532425">配置作業發生問題,因此無法設定 Plugin VM。請與貴機構的裝置管理員聯絡。錯誤代碼:<ph name="ERROR_CODE" />。</translation>
 <translation id="4195643157523330669">在新分頁中開啟</translation>
 <translation id="4195814663415092787">開啟上次瀏覽的內容</translation>
 <translation id="4198146608511578238">只需按住「啟動器」圖示,即可與「Google 助理」對話。</translation>
@@ -2490,6 +2505,7 @@
 <translation id="4549791035683739768">您的安全密鑰並未儲存任何指紋</translation>
 <translation id="4551763574344810652">按下 <ph name="MODIFIER_KEY_DESCRIPTION" /> 即可復原</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005"><ph name="NETWORK_TYPE" />網路,訊號強度 <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">外部擴充功能與現有擴充功能的版本相同或較低。</translation>
 <translation id="4555769855065597957">陰影</translation>
 <translation id="4555863373929230635">如要將密碼儲存至 Google 帳戶,請登入並開啟同步功能。</translation>
@@ -2567,6 +2583,7 @@
 <translation id="4665446389743427678"><ph name="SITE" /> 儲存的所有資料都會被刪除。</translation>
 <translation id="4668721319092543482">按一下即可啟用 <ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">提取頁面</translation>
+<translation id="46733273239502219">已安裝應用程式中的離線資料也將遭到清除</translation>
 <translation id="4673442866648850031">拔出觸控筆後開啟觸控筆工具</translation>
 <translation id="4677585247300749148"><ph name="URL" /> 希望回應無障礙功能事件</translation>
 <translation id="4677772697204437347">GPU 記憶體使用量</translation>
@@ -2658,7 +2675,6 @@
 <translation id="4823484602432206655">讀取和變更使用者和裝置設定</translation>
 <translation id="4824958205181053313">要取消同步功能嗎?</translation>
 <translation id="4827675678516992122">無法連線</translation>
-<translation id="4828937774870308359">澳洲式</translation>
 <translation id="4829768588131278040">設定 PIN</translation>
 <translation id="4830502475412647084">正在安裝作業系統更新</translation>
 <translation id="4830573902900904548"><ph name="DEVICE_TYPE" /> 無法透過 <ph name="NETWORK_NAME" /> 連線至互聯網,請選擇其他網絡。<ph name="LEARN_MORE_LINK_START" />瞭解詳情<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2699,6 +2715,7 @@
 <translation id="4876273079589074638">協助我們的軟件工程師調查和修正此當機問題。請盡可能列出所有實際步驟,越詳細越好!</translation>
 <translation id="4876895919560854374">鎖定和解鎖屏幕</translation>
 <translation id="4877276003880815204">檢查元素</translation>
+<translation id="4878653975845355462">你的系統管理員已停用自訂背景功能</translation>
 <translation id="4879491255372875719">自動 (預設)</translation>
 <translation id="4880328057631981605">接入點名稱 (APN)</translation>
 <translation id="4880827082731008257">搜尋記錄</translation>
@@ -2754,10 +2771,10 @@
 <translation id="4943691134276646401">「<ph name="CHROME_EXTENSION_NAME" />」要求與序列連接埠連線</translation>
 <translation id="4944310289250773232">此驗證服務由 <ph name="SAML_DOMAIN" /> 代管</translation>
 <translation id="495170559598752135">動作</translation>
+<translation id="4952981627953231344">這部裝置不允許使用 Plugin VM。請與貴機構的裝置管理員聯絡。</translation>
 <translation id="4953689047182316270">回應無障礙功能事件</translation>
 <translation id="4953808748584563296">預設橙色圖片</translation>
 <translation id="4955710816792587366">選擇 PIN</translation>
-<translation id="4955814292505481804">全年</translation>
 <translation id="4959262764292427323">密碼會儲存在您的 Google 帳戶中,讓您可在任何裝置上使用</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">您的管理員已安裝此應用程式。</translation>
@@ -3239,7 +3256,6 @@
 <translation id="5659593005791499971">電郵</translation>
 <translation id="5659833766619490117">無法翻譯此網頁的內容</translation>
 <translation id="5660204307954428567">與 <ph name="DEVICE_NAME" /> 配對</translation>
-<translation id="5662477687021125631">永久</translation>
 <translation id="5667546120811588575">正在設定 Google Play…</translation>
 <translation id="5669267381087807207">啟用</translation>
 <translation id="5669691691057771421">輸入新的 PIN</translation>
@@ -3255,6 +3271,7 @@
 <translation id="5687326903064479980">時區</translation>
 <translation id="5689516760719285838">位置</translation>
 <translation id="56907980372820799">連結數據</translation>
+<translation id="5691180005790455277"><ph name="SITE_GROUP_NAME" /> 及該群組中所有網站儲存的資料和 Cookie 都將遭到清除。</translation>
 <translation id="5691511426247308406">家庭</translation>
 <translation id="5692183275898619210">列印完成</translation>
 <translation id="5696143504434933566">舉報「<ph name="EXTENSION_NAME" />」的濫用行為</translation>
@@ -3341,7 +3358,6 @@
 <translation id="5815645614496570556">X.400 地址</translation>
 <translation id="5816434091619127343">要求的打印機變更會讓此打印機無法使用。</translation>
 <translation id="5817918615728894473">配對</translation>
-<translation id="5819762621475381970">- 您的房間配置</translation>
 <translation id="5821565227679781414">建立捷徑</translation>
 <translation id="5825412242012995131">啟用 (建議設定)</translation>
 <translation id="5826395379250998812">將 <ph name="DEVICE_TYPE" /> 連結至您的手機。<ph name="LINK_BEGIN" />瞭解詳情<ph name="LINK_END" /></translation>
@@ -3477,6 +3493,7 @@
 <translation id="6007240208646052708">無法使用您的語言執行語音搜尋。</translation>
 <translation id="6009781704028455063">內置感應器</translation>
 <translation id="6010869025736512584">正在存取視訊輸入</translation>
+<translation id="6011074160056912900">乙太網路</translation>
 <translation id="6011193465932186973">指紋</translation>
 <translation id="6011449291337289699">清除網站資料</translation>
 <translation id="6015266928248016057">PUK 無效。剩餘重試次數:<ph name="RETRIES" /> 次。</translation>
@@ -3513,6 +3530,7 @@
 <translation id="6053401458108962351">清除瀏覽數據(&amp;C)…</translation>
 <translation id="6055171183283175969">您輸入的密碼不正確。</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 (使用 RSA 加密)</translation>
+<translation id="6055907707645252013"><ph name="NETWORK_TYPE" />網路,未連線</translation>
 <translation id="6056710589053485679">正常重新載入</translation>
 <translation id="6057381398996433816">系統已封鎖此網站使用動作和光線感應器。</translation>
 <translation id="6058567592298841668">外掛程式虛擬機器:<ph name="PLUGIN_VM_NAME" /></translation>
@@ -3576,6 +3594,7 @@
 <translation id="6136114942382973861">閂下載內容列</translation>
 <translation id="6137767437444130246">使用者憑證</translation>
 <translation id="6138680304137685902">使用 SHA-384 的 X9.62 ECDSA 簽名</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />,沒有網路連線</translation>
 <translation id="6141988275892716286">確認下載</translation>
 <translation id="6143186082490678276">取得說明</translation>
 <translation id="6144938890088808325">協助我們改善 Chromebook</translation>
@@ -3882,6 +3901,7 @@
 <translation id="6602956230557165253">使用向左鍵和向右鍵瀏覽。</translation>
 <translation id="6605847144724004692">尚未有使用者評分。</translation>
 <translation id="6607831829715835317">更多工具(&amp;L)</translation>
+<translation id="6611972847767394631">在這裡尋找你的分頁</translation>
 <translation id="6612358246767739896">受保護內容</translation>
 <translation id="6615455863669487791">顯示</translation>
 <translation id="6618097958368085618">仍要保留</translation>
@@ -3950,6 +3970,7 @@
 <translation id="6709133671862442373">新聞內容</translation>
 <translation id="6709357832553498500">使用「<ph name="EXTENSIONNAME" />」連線</translation>
 <translation id="6710213216561001401">上一個</translation>
+<translation id="6715803357256707211">安裝 Linux 應用程式的過程中發生錯誤。如需詳細資料,請按一下通知。</translation>
 <translation id="6721678857435001674">查看「安全密鑰」的品牌和型號</translation>
 <translation id="6721972322305477112">檔案(&amp;F)</translation>
 <translation id="672213144943476270">以訪客身分瀏覽前,請先取消鎖定您的個人檔案。</translation>
@@ -3974,7 +3995,6 @@
 <translation id="674632704103926902">啟用輕觸拖曳</translation>
 <translation id="6748217015615267851">轉譯器:<ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">您可以繼續,但是只有您的同步資料和設定會被還原。所有本機資料將會遺失。</translation>
-<translation id="6748775883310276718">單一應用程式資訊站</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (無痕模式)</translation>
 <translation id="6757101664402245801">已複製網址</translation>
 <translation id="6758056191028427665">請讓我們瞭解您的滿意度。</translation>
@@ -3984,6 +4004,7 @@
 <translation id="6769712124046837540">新增打印機…</translation>
 <translation id="6770664076092644100">透過 NFC 驗證</translation>
 <translation id="6771503742377376720">這是憑證授權單位</translation>
+<translation id="6772339735733515807">管理你的擴充功能</translation>
 <translation id="6775163072363532304">可用的裝置將會在這裡顯示。</translation>
 <translation id="6777817260680419853">已禁止重新導向</translation>
 <translation id="6778737459546443941">您的家長尚未批准瀏覽此網站</translation>
@@ -4122,6 +4143,7 @@
 <translation id="6972180789171089114">音訊/影片</translation>
 <translation id="6972553992270299730">由於資料夾中包含系統檔案,<ph name="ORIGIN" /> 無法開啟此資料夾中的檔案</translation>
 <translation id="6972754398087986839">開始使用</translation>
+<translation id="6973611239564315524">現在可以升級至 Debian 10 (Buster)</translation>
 <translation id="6974609594866392343">離線示範模式</translation>
 <translation id="6977381486153291903">韌體版本</translation>
 <translation id="6978121630131642226">搜尋引擎</translation>
@@ -4581,6 +4603,7 @@
 <translation id="7644543211198159466">顏色和主題</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (擁有者)</translation>
 <translation id="7645681574855902035">正在取消 Linux 備份</translation>
+<translation id="7646772052135772216">密碼同步功能無法正常運作</translation>
 <translation id="7647403192093989392">最近沒有任何活動</translation>
 <translation id="7648992873808071793">在此裝置上存放檔案</translation>
 <translation id="7649070708921625228">說明</translation>
@@ -4769,6 +4792,7 @@
 <translation id="7877451762676714207">不明的伺服器錯誤。請再試一次,或與伺服器管理員聯絡。</translation>
 <translation id="7877680364634660272">導覽</translation>
 <translation id="7878562273885520351">您的密碼可能會被盜用</translation>
+<translation id="7879631849810108578">已設定快速鍵:<ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">系統會在您重新啟動時刪除本機資料</translation>
 <translation id="7881483672146086348">查看帳戶</translation>
 <translation id="7882358943899516840">供應商類型</translation>
@@ -4855,6 +4879,7 @@
 <translation id="7987814697832569482">永遠透過此 VPN 連接</translation>
 <translation id="7988355189918024273">啟用無障礙功能</translation>
 <translation id="7991296728590311172">「按鈕控制」設定</translation>
+<translation id="7994350303002908848">無法安裝 Plugin VM。請再試一次,或是與貴機構的裝置管理員聯絡。錯誤代碼:<ph name="ERROR_CODE" />。</translation>
 <translation id="7994702968232966508">EAP 方法</translation>
 <translation id="7997826902155442747">處理優先次序</translation>
 <translation id="7999229196265990314">已建立下列檔案:
@@ -4947,7 +4972,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{沒有第三方 Cookie}=1{已封鎖 1 個第三方 Cookie}other{已封鎖 # 個第三方 Cookie}}</translation>
 <translation id="810875025413331850">找不到附近的裝置。</translation>
 <translation id="8111155949205007504">透過您的 iPhone 分享此密碼</translation>
-<translation id="8113043281354018522">選擇授權類型</translation>
 <translation id="8114875720387900039">水平分割</translation>
 <translation id="8116972784401310538">書籤管理員(&amp;B)</translation>
 <translation id="8117620576188476503">使用狀態列管理連線、更新和設定。如要透過鍵盤來存取這些內容,請按 Alt + Shift + S 鍵。</translation>
@@ -5103,6 +5127,7 @@
 <translation id="8327039559959785305">連接 Linux 檔案時發生錯誤,請再試一次。</translation>
 <translation id="8335587457941836791">從檔案櫃中取消固定</translation>
 <translation id="8336407002559723354">此裝置將於 <ph name="MONTH_AND_YEAR" />停止更新</translation>
+<translation id="8336721153892716270">重新啟動裝置,改以<ph name="LANGUAGE" />顯示系統文字</translation>
 <translation id="8336739000755212683">變更裝置的帳戶圖片</translation>
 <translation id="8337047789441383384">您已註冊此安全密鑰,因此無需再註冊。</translation>
 <translation id="8338952601723052325">開發人員網站</translation>
@@ -5146,6 +5171,7 @@
 <translation id="8400146488506985033">管理使用者</translation>
 <translation id="8401432541486058167">請輸入與智能資訊卡相關聯的 PIN。</translation>
 <translation id="8405046151008197676">瞭解最新的更新內容摘要</translation>
+<translation id="8408068190360279472"><ph name="NETWORK_TYPE" />網路,連線中</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">事先詢問 (建議)</translation>
 <translation id="8418445294933751433">顯示為分頁(&amp;S)</translation>
@@ -5435,6 +5461,7 @@
 <translation id="8807632654848257479">穩定</translation>
 <translation id="8808478386290700967">網上商店</translation>
 <translation id="8808686172382650546">Cat</translation>
+<translation id="8808744862003883508">這個頁面會顯示安裝在 Chrome 的所有擴充功能。</translation>
 <translation id="8809147117840417135">淺藍綠色</translation>
 <translation id="8813698869395535039">無法登入 <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">紙張數目</translation>
@@ -5662,7 +5689,6 @@
 <translation id="9121814364785106365">在固定分頁中開啟</translation>
 <translation id="9122176249172999202">「<ph name="IDS_SHORT_PRODUCT_NAME" />」已暫停</translation>
 <translation id="9124003689441359348">已儲存的密碼將會在這裡顯示</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (剩餘 <ph name="LICENSE_COUNT" /> 個)</translation>
 <translation id="9128317794749765148">無法完成設定</translation>
 <translation id="9128870381267983090">連線至網路</translation>
 <translation id="9130015405878219958">輸入的模式無效。</translation>
@@ -5701,6 +5727,7 @@
 <translation id="9188732951356337132">傳送使用情況和診斷資料。此裝置目前會自動將診斷、裝置及應用程式的使用情況資料傳送至 Google。這些資料不會用來識別您子女的身分,而是用於改善系統和應用程式的穩定性和其他效能。部分彙整資料也會用於協助 Google 應用程式與合作夥伴 (例如 Android 開發人員)。如果已為子女開啟其他「網絡及應用程式活動記錄」設定,系統可能會將此資料儲存至其 Google 帳戶。<ph name="BEGIN_LINK2" />瞭解詳情<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + 預先共用金鑰</translation>
 <translation id="920045321358709304">透過 <ph name="SEARCH_ENGINE" /> 搜尋</translation>
+<translation id="9201023452444595544">所有離線資料都將遭到清除</translation>
 <translation id="9201220332032049474">螢幕鎖定選項</translation>
 <translation id="9203398526606335860">分析已啟用(&amp;P)</translation>
 <translation id="9203904171912129171">選取裝置</translation>
@@ -5713,6 +5740,7 @@
 <translation id="9220525904950070496">移除帳戶</translation>
 <translation id="9220820413868316583">提起手指,然後再試一次。</translation>
 <translation id="923467487918828349">全部顯示</translation>
+<translation id="929117907539171075">已安裝應用程式中的離線資料也將遭到清除</translation>
 <translation id="930268624053534560">詳細的時間戳</translation>
 <translation id="932327136139879170">首頁</translation>
 <translation id="932508678520956232">無法初始化列印操作。</translation>
@@ -5738,6 +5766,7 @@
 <translation id="960719561871045870">流動網絡供應商代碼</translation>
 <translation id="960987915827980018">還有約 1 個小時</translation>
 <translation id="962802172452141067">樹狀分枝書籤</translation>
+<translation id="964057662886721376">部分擴充功能會造成執行速度緩慢,尤其是你在無意中安裝的擴充功能。</translation>
 <translation id="964286338916298286">IT 管理員已為您的裝置停用 Chrome Goodies。</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{應用程式}other{應用程式}}</translation>
 <translation id="965211523698323809">在 <ph name="DEVICE_TYPE" /> 上收發短訊。<ph name="LINK_BEGIN" />瞭解詳情<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb
index f2925f4..666db7fe 100644
--- a/chrome/app/resources/generated_resources_zh-TW.xtb
+++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">自訂</translation>
 <translation id="1178581264944972037">暫停</translation>
 <translation id="117916940443676133">你的安全金鑰未受 PIN 碼保護。如要管理登入資料,請先建立 PIN 碼。</translation>
-<translation id="118069123878619799">- 你的身體特徵,例如身高</translation>
 <translation id="1181037720776840403">移除</translation>
 <translation id="1183237619868651138">無法在本機快取中安裝 <ph name="EXTERNAL_CRX_FILE" />。</translation>
 <translation id="1185924365081634987">你也可以嘗試<ph name="GUEST_SIGNIN_LINK_START" />以訪客身分瀏覽<ph name="GUEST_SIGNIN_LINK_END" />,藉此修復網路問題。</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">正在等待 <ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033">還有 <ph name="NUM_PRINTERS" /> 個可用裝置。</translation>
 <translation id="1495677929897281669">返回分頁</translation>
+<translation id="1499271269825557605">如果你對某個擴充功能沒有印象,或是瀏覽器無法正常運作,可以在這裡關閉或自訂擴充功能。</translation>
 <translation id="1500297251995790841">不明裝置 [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">擁有者帳戶必須是多重登入工作階段中第一個登入的帳戶。</translation>
 <translation id="150411034776756821">移除 <ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">系統已封鎖這個網頁存取你的攝影機。</translation>
 <translation id="1507246803636407672">捨棄(&amp;D)</translation>
 <translation id="1508491105858779599">將你的手指放在指紋感應器上即可解鎖裝置。</translation>
+<translation id="1508575541972276599">目前版本為 Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">透過 USB 存取任何 <ph name="DEVICE_NAME_AND_VENDOR" /></translation>
 <translation id="150962533380566081">PUK 無效。</translation>
 <translation id="1510030919967934016">此網頁已遭封鎖,無法追蹤你的位置。</translation>
@@ -434,6 +435,7 @@
 <translation id="1601560923496285236">套用</translation>
 <translation id="1603914832182249871">(無痕模式)</translation>
 <translation id="1604432177629086300">無法列印。請檢查印表機,然後再試一次。</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />:密碼同步功能無法正常運作</translation>
 <translation id="1607139524282324606">清除項目</translation>
 <translation id="1608626060424371292">移除這位使用者</translation>
 <translation id="1608668830839595724">更多可對所選項目執行的動作</translation>
@@ -560,6 +562,8 @@
 <translation id="177336675152937177">代管應用程式資料</translation>
 <translation id="1776712937009046120">新增使用者</translation>
 <translation id="1776883657531386793"><ph name="OID" />:<ph name="INFO" /></translation>
+<translation id="1777310661937894236">這個裝置是由 <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> 所管理。
+    請按 [下一步] 繼續登入你的 <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> 帳戶。</translation>
 <translation id="1779652936965200207">請在「<ph name="DEVICE_NAME" />」上輸入以下密碼金鑰:</translation>
 <translation id="1780152987505130652">關閉群組</translation>
 <translation id="1781291988450150470">目前的 PIN 碼</translation>
@@ -747,6 +751,7 @@
 <translation id="2048653237708779538">無法執行操作</translation>
 <translation id="2050339315714019657">直向</translation>
 <translation id="2053312383184521053">閒置狀態資料</translation>
+<translation id="2055585478631012616">系統會將你登出這些網站,包括在開啟的分頁中也一樣</translation>
 <translation id="205560151218727633">Google 助理標誌</translation>
 <translation id="2058456167109518507">偵測到裝置</translation>
 <translation id="2059913712424898428">時區</translation>
@@ -762,6 +767,7 @@
 <translation id="2079545284768500474">復原</translation>
 <translation id="2080070583977670716">顯示更多設定</translation>
 <translation id="2087822576218954668">列印:<ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">VPN 網路</translation>
 <translation id="2089566709556890888">使用 Google Chrome 安全瀏覽網路</translation>
 <translation id="2089795179672254991">當網站要讀取已複製到剪貼簿的文字和圖片時,必須先詢問你 (建議使用)</translation>
 <translation id="2090165459409185032">如要還原您的帳戶資訊,請前往 google.com/accounts/recovery</translation>
@@ -985,6 +991,7 @@
 <translation id="2379232090534544565">有某個網站正在存取音訊和視訊輸入內容</translation>
 <translation id="2379281330731083556">使用系統對話方塊進行列印... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">傳送前詢問我 (建議)</translation>
+<translation id="2382818385048255866">檢查你的擴充功能</translation>
 <translation id="2384436799579181135">發生錯誤。請檢查你的印表機,然後再試一次。</translation>
 <translation id="2387458720915042159">Proxy 連線類型</translation>
 <translation id="2391419135980381625">標準字型</translation>
@@ -1035,6 +1042,7 @@
 <translation id="2462724976360937186">憑證授權單位金鑰識別碼</translation>
 <translation id="2462752602710430187">已新增「<ph name="PRINTER_NAME" />」</translation>
 <translation id="2464089476039395325">HTTP Proxy</translation>
+<translation id="2467267713099745100"><ph name="NETWORK_TYPE" />網路,關閉</translation>
 <translation id="2468205691404969808">使用 Cookie 記住你的偏好設定 (即使你沒有造訪這些網頁)</translation>
 <translation id="2468402215065996499">電子寵物</translation>
 <translation id="2469259292033957819">沒有已儲存的印表機。</translation>
@@ -1289,6 +1297,7 @@
 <translation id="2800760947029405028">上傳圖片</translation>
 <translation id="2803375539583399270">輸入 PIN</translation>
 <translation id="2804043232879091219">無法開啟替代瀏覽器</translation>
+<translation id="2804667941345577550">系統會將你登出這個網站,包括在開啟的分頁中也一樣</translation>
 <translation id="2804680522274557040">攝影機已關閉</translation>
 <translation id="2805646850212350655">Microsoft 加密檔案系統</translation>
 <translation id="2805756323405976993">應用程式</translation>
@@ -1296,6 +1305,7 @@
 <translation id="2806891468525657116">捷徑已經存在</translation>
 <translation id="2807517655263062534">你下載的檔案會顯示在這裡</translation>
 <translation id="2809586584051668049">和另外 <ph name="NUMBER_ADDITIONAL_DISABLED" /> 個</translation>
+<translation id="2810390687497823527">如果你對某個擴充功能沒有印象,或是瀏覽器無法正常運作,可以在這裡關閉或自訂擴充功能。</translation>
 <translation id="2812049959647166806">系統不支援 Thunderbolt</translation>
 <translation id="2812944337881233323">請嘗試登出,再重新登入</translation>
 <translation id="2812989263793994277">不顯示任何圖片</translation>
@@ -1335,6 +1345,7 @@
 <translation id="2861941300086904918">Native Client 安全性管理員</translation>
 <translation id="2864601841139725659">設定你的個人資料圖片</translation>
 <translation id="2865919525181940183">目前畫面上程式的螢幕截圖</translation>
+<translation id="286674810810214575">正在檢查電源...</translation>
 <translation id="2867768963760577682">在固定分頁中開啟</translation>
 <translation id="2868746137289129307">這項過舊的擴充功能現已依企業政策停用。如有可用的新版本,則可能會自動重新啟用。</translation>
 <translation id="2870560284913253234">網站</translation>
@@ -1412,6 +1423,7 @@
 <translation id="2972581237482394796">重做(&amp;R)</translation>
 <translation id="2973324205039581528">關閉網站音訊</translation>
 <translation id="2977480621796371840">從群組中移除</translation>
+<translation id="2979520980928493164">更流暢、更容易使用的 Chrome</translation>
 <translation id="2979639724566107830">於新視窗中開啟</translation>
 <translation id="2981113813906970160">顯示大型滑鼠游標</translation>
 <translation id="2982970937345031">以匿名方式傳送意見</translation>
@@ -1518,6 +1530,7 @@
 <translation id="3143515551205905069">取消同步處理</translation>
 <translation id="3143754809889689516">從頭播放</translation>
 <translation id="3144647712221361880">以其他身分開啟連結</translation>
+<translation id="3145187901750964977">無法安裝虛擬機器。請再試一次,或是與貴機構的裝置管理員聯絡。錯誤代碼:<ph name="ERROR_CODE" />。</translation>
 <translation id="3149477159749171726">版本:
     <ph name="LINUX_VERSION" />
 
@@ -1556,6 +1569,7 @@
 <translation id="3192947282887913208">音訊檔</translation>
 <translation id="3194737229810486521"><ph name="URL" /> 要求在你的裝置上永久儲存資料</translation>
 <translation id="3199127022143353223">伺服器</translation>
+<translation id="3201306578844503970">網路發生錯誤,因此無法安裝虛擬機器。請再試一次,或是與貴機構的裝置管理員聯絡。錯誤代碼:<ph name="ERROR_CODE" />。</translation>
 <translation id="3201422919974259695">可用的 USB 裝置將會顯示在這裡。</translation>
 <translation id="3202131003361292969">路徑</translation>
 <translation id="3202173864863109533">分頁音訊已關閉。</translation>
@@ -1892,7 +1906,6 @@
 <translation id="3678156199662914018">擴充功能:<ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">感謝你提供意見!你目前處於離線狀態,重新上線後系統就會傳送你的意見回饋報告。</translation>
 <translation id="3682824389861648626">滑鼠移動限額</translation>
-<translation id="3683023058278427253">我們偵測到你的網域有多種授權類型。如要繼續操作,請選取一種類型。</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> 要求共用畫面</translation>
 <translation id="368789413795732264">嘗試寫入檔案時發生錯誤:<ph name="ERROR_TEXT" />。</translation>
 <translation id="3688507211863392146">寫入你在應用程式中開啟的檔案和資料夾</translation>
@@ -2066,6 +2079,7 @@
 <translation id="389589731200570180">與訪客共用</translation>
 <translation id="389901847090970821">選取鍵盤</translation>
 <translation id="3899879303189199559">離線超過一年</translation>
+<translation id="3900789207771372462">部分擴充功能可以查看你的瀏覽活動 (包括個人資訊)。</translation>
 <translation id="3900966090527141178">匯出密碼</translation>
 <translation id="3901991538546252627">正在連線至:<ph name="NAME" /></translation>
 <translation id="3905761538810670789">修復應用程式</translation>
@@ -2155,7 +2169,6 @@
 <translation id="4013132157686828973">「<ph name="CLIENT_NAME" />」正在為這個瀏覽器偵錯</translation>
 <translation id="4014432863917027322">修復「<ph name="EXTENSION_NAME" />」?</translation>
 <translation id="4015163439792426608">你有使用擴充功能嗎?<ph name="BEGIN_LINK" />集中管理擴充功能<ph name="END_LINK" />,輕鬆又方便。</translation>
-<translation id="4020106588733303597">糟糕!系統無法載入可用的授權。</translation>
 <translation id="4020327272915390518">選項選單</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">新增到字典(&amp;A)</translation>
@@ -2193,6 +2206,7 @@
 <translation id="407520071244661467">縮放比例</translation>
 <translation id="4075639477629295004">無法投放「<ph name="FILE_NAME" />」。</translation>
 <translation id="4077917118009885966">已封鎖這個網站的廣告</translation>
+<translation id="4077919383365622693"><ph name="SITE" /> 儲存的所有資料和 Cookie 都將遭到清除。</translation>
 <translation id="4079140982534148664">使用進階拼字檢查功能</translation>
 <translation id="4081242589061676262">無法投放檔案。</translation>
 <translation id="4084682180776658562">書籤</translation>
@@ -2267,6 +2281,7 @@
 <translation id="4181841719683918333">語言</translation>
 <translation id="4184885522552335684">拖曳即可移動顯示畫面</translation>
 <translation id="4194570336751258953">啟用點按功能</translation>
+<translation id="4194595472342532425">配置作業發生問題,因此無法設定 Plugin VM。請與貴機構的裝置管理員聯絡。錯誤代碼:<ph name="ERROR_CODE" />。</translation>
 <translation id="4195643157523330669">在新分頁中開啟</translation>
 <translation id="4195814663415092787">繼續瀏覽上次開啟的網頁</translation>
 <translation id="4198146608511578238">只要按住啟動器圖示即可與 Google 助理交談。</translation>
@@ -2490,6 +2505,7 @@
 <translation id="4549791035683739768">你的安全金鑰沒有儲存任何指紋</translation>
 <translation id="4551763574344810652">按下 <ph name="MODIFIER_KEY_DESCRIPTION" /> 即可復原</translation>
 <translation id="4552089082226364758">Flash</translation>
+<translation id="4552759165874948005"><ph name="NETWORK_TYPE" />網路,訊號強度 <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">外部擴充功能與現有擴充功能的版本相同,或版本較低。</translation>
 <translation id="4555769855065597957">陰影</translation>
 <translation id="4555863373929230635">如要將密碼儲存到你的 Google 帳戶,請登入並開啟同步功能。</translation>
@@ -2567,6 +2583,7 @@
 <translation id="4665446389743427678"><ph name="SITE" /> 儲存的所有資料都將遭到刪除。</translation>
 <translation id="4668721319092543482">按一下即可啟用「<ph name="PLUGIN_NAME" />」</translation>
 <translation id="4672657274720418656">提取頁面</translation>
+<translation id="46733273239502219">已安裝應用程式中的離線資料也將遭到清除</translation>
 <translation id="4673442866648850031">移除觸控筆時取出觸控筆工具</translation>
 <translation id="4677585247300749148"><ph name="URL" /> 要求回應無障礙事件</translation>
 <translation id="4677772697204437347">GPU 記憶體</translation>
@@ -2658,7 +2675,6 @@
 <translation id="4823484602432206655">讀取及變更使用者和裝置設定</translation>
 <translation id="4824958205181053313">取消同步處理?</translation>
 <translation id="4827675678516992122">無法連線</translation>
-<translation id="4828937774870308359">澳洲式</translation>
 <translation id="4829768588131278040">設定 PIN 碼</translation>
 <translation id="4830502475412647084">正在安裝作業系統更新</translation>
 <translation id="4830573902900904548">您的 <ph name="DEVICE_TYPE" /> 無法透過 <ph name="NETWORK_NAME" /> 連線至網際網路,請選擇其他網路。<ph name="LEARN_MORE_LINK_START" />瞭解詳情<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2699,6 +2715,7 @@
 <translation id="4876273079589074638">協助我們的工程師調查這項當機問題並予以修正。請儘可能列出所有確切步驟,鉅細靡遺!</translation>
 <translation id="4876895919560854374">鎖定及解鎖螢幕</translation>
 <translation id="4877276003880815204">檢查元素</translation>
+<translation id="4878653975845355462">你的系統管理員已停用自訂背景功能</translation>
 <translation id="4879491255372875719">自動 (預設)</translation>
 <translation id="4880328057631981605">存取點名稱</translation>
 <translation id="4880827082731008257">搜尋記錄</translation>
@@ -2754,10 +2771,10 @@
 <translation id="4943691134276646401">「<ph name="CHROME_EXTENSION_NAME" />」要求與序列埠連線</translation>
 <translation id="4944310289250773232">這是由 <ph name="SAML_DOMAIN" /> 代管的驗證服務</translation>
 <translation id="495170559598752135">動作</translation>
+<translation id="4952981627953231344">這部裝置不允許使用 Plugin VM。請與貴機構的裝置管理員聯絡。</translation>
 <translation id="4953689047182316270">回應無障礙活動</translation>
 <translation id="4953808748584563296">預設的橘色顯示圖片</translation>
 <translation id="4955710816792587366">選擇 PIN 碼</translation>
-<translation id="4955814292505481804">年約</translation>
 <translation id="4959262764292427323">系統會將密碼儲存在你的 Google 帳戶中,方便你在任何裝置上使用密碼</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">你的系統管理員已安裝此應用程式。</translation>
@@ -3239,7 +3256,6 @@
 <translation id="5659593005791499971">電子郵件</translation>
 <translation id="5659833766619490117">無法翻譯這個網頁的內容</translation>
 <translation id="5660204307954428567">與「<ph name="DEVICE_NAME" />」配對</translation>
-<translation id="5662477687021125631">永久</translation>
 <translation id="5667546120811588575">正在設定 Google Play...</translation>
 <translation id="5669267381087807207">啟用中</translation>
 <translation id="5669691691057771421">輸入新的 PIN 碼</translation>
@@ -3255,6 +3271,7 @@
 <translation id="5687326903064479980">時區</translation>
 <translation id="5689516760719285838">位置</translation>
 <translation id="56907980372820799">連結資料</translation>
+<translation id="5691180005790455277"><ph name="SITE_GROUP_NAME" /> 及該群組中所有網站儲存的資料和 Cookie 都將遭到清除。</translation>
 <translation id="5691511426247308406">家用</translation>
 <translation id="5692183275898619210">列印完成</translation>
 <translation id="5696143504434933566">檢舉「<ph name="EXTENSION_NAME" />」的濫用情形</translation>
@@ -3341,7 +3358,6 @@
 <translation id="5815645614496570556">X.400 地址</translation>
 <translation id="5816434091619127343">要求的印表機變更會讓這部印表機無法使用。</translation>
 <translation id="5817918615728894473">配對</translation>
-<translation id="5819762621475381970">- 你的房間配置</translation>
 <translation id="5821565227679781414">建立捷徑</translation>
 <translation id="5825412242012995131">啟用 (建議設定)</translation>
 <translation id="5826395379250998812">請將 <ph name="DEVICE_TYPE" /> 連線至手機。<ph name="LINK_BEGIN" />瞭解詳情<ph name="LINK_END" /></translation>
@@ -3477,6 +3493,7 @@
 <translation id="6007240208646052708">無法使用你的語言進行語音搜尋。</translation>
 <translation id="6009781704028455063">內建感應器</translation>
 <translation id="6010869025736512584">正在存取視訊輸入</translation>
+<translation id="6011074160056912900">乙太網路</translation>
 <translation id="6011193465932186973">指紋</translation>
 <translation id="6011449291337289699">清除網站資料</translation>
 <translation id="6015266928248016057">PUK 無效。剩餘重試次數:<ph name="RETRIES" /> 次。</translation>
@@ -3513,6 +3530,7 @@
 <translation id="6053401458108962351">清除瀏覽資料(&amp;C)...</translation>
 <translation id="6055171183283175969">你所輸入的密碼不正確。</translation>
 <translation id="6055392876709372977">PKCS #1 SHA-256 (使用 RSA 加密)</translation>
+<translation id="6055907707645252013"><ph name="NETWORK_TYPE" />網路,未連線</translation>
 <translation id="6056710589053485679">正常重新載入</translation>
 <translation id="6057381398996433816">這個網站已遭封鎖,無法使用動作感應器和光源感應器。</translation>
 <translation id="6058567592298841668">外掛程式虛擬機器:<ph name="PLUGIN_VM_NAME" /></translation>
@@ -3576,6 +3594,7 @@
 <translation id="6136114942382973861">關閉下載內容列</translation>
 <translation id="6137767437444130246">使用者憑證</translation>
 <translation id="6138680304137685902">使用 SHA-384 的 X9.62 ECDSA 簽章</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />,沒有網路連線</translation>
 <translation id="6141988275892716286">確認下載</translation>
 <translation id="6143186082490678276">取得說明</translation>
 <translation id="6144938890088808325">協助我們改善 Chromebook</translation>
@@ -3882,6 +3901,7 @@
 <translation id="6602956230557165253">使用向左鍵和向右鍵瀏覽。</translation>
 <translation id="6605847144724004692">還沒有任何使用者給予評分。</translation>
 <translation id="6607831829715835317">更多工具(&amp;L)</translation>
+<translation id="6611972847767394631">在這裡尋找你的分頁</translation>
 <translation id="6612358246767739896">受保護內容</translation>
 <translation id="6615455863669487791">顯示</translation>
 <translation id="6618097958368085618">確定保留</translation>
@@ -3950,6 +3970,7 @@
 <translation id="6709133671862442373">新聞內容</translation>
 <translation id="6709357832553498500">使用「<ph name="EXTENSIONNAME" />」連線</translation>
 <translation id="6710213216561001401">返回</translation>
+<translation id="6715803357256707211">安裝 Linux 應用程式的過程中發生錯誤。如需詳細資料,請按一下通知。</translation>
 <translation id="6721678857435001674">查看安全金鑰的製造商和型號</translation>
 <translation id="6721972322305477112">檔案(&amp;F)</translation>
 <translation id="672213144943476270">以訪客身分瀏覽之前,請先取消鎖定您的個人資料。</translation>
@@ -3974,7 +3995,6 @@
 <translation id="674632704103926902">啟用輕觸拖曳</translation>
 <translation id="6748217015615267851">轉譯器:<ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">您可以繼續操作,但系統只會還原您已同步處理的資料和設定。所有本機資料都會遺失。</translation>
-<translation id="6748775883310276718">單一應用程式資訊站</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (無痕模式)</translation>
 <translation id="6757101664402245801">已複製網址</translation>
 <translation id="6758056191028427665">請讓我們瞭解你的滿意度。</translation>
@@ -3984,6 +4004,7 @@
 <translation id="6769712124046837540">新增印表機...</translation>
 <translation id="6770664076092644100">透過 NFC 進行驗證</translation>
 <translation id="6771503742377376720">這是憑證授權單位</translation>
+<translation id="6772339735733515807">管理你的擴充功能</translation>
 <translation id="6775163072363532304">可用的裝置會顯示在這裡。</translation>
 <translation id="6777817260680419853">已禁止重新導向</translation>
 <translation id="6778737459546443941">你的家長尚未核准這個網站</translation>
@@ -4122,6 +4143,7 @@
 <translation id="6972180789171089114">音效/影片</translation>
 <translation id="6972553992270299730"><ph name="ORIGIN" /> 無法開啟此資料夾的檔案,因為資料夾中包含系統檔案</translation>
 <translation id="6972754398087986839">開始使用</translation>
+<translation id="6973611239564315524">現在可以升級至 Debian 10 (Buster)</translation>
 <translation id="6974609594866392343">離線示範模式</translation>
 <translation id="6977381486153291903">韌體版本</translation>
 <translation id="6978121630131642226">搜尋引擎</translation>
@@ -4581,6 +4603,7 @@
 <translation id="7644543211198159466">顏色和主題</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (擁有者)</translation>
 <translation id="7645681574855902035">正在取消 Linux 備份作業</translation>
+<translation id="7646772052135772216">密碼同步功能無法正常運作</translation>
 <translation id="7647403192093989392">最近沒有活動</translation>
 <translation id="7648992873808071793">在這個裝置上儲存檔案</translation>
 <translation id="7649070708921625228">說明</translation>
@@ -4769,6 +4792,7 @@
 <translation id="7877451762676714207">不明的伺服器錯誤。請再試一次,或與伺服器管理員聯絡。</translation>
 <translation id="7877680364634660272">導覽</translation>
 <translation id="7878562273885520351">你的密碼可能已經外洩</translation>
+<translation id="7879631849810108578">已設定快速鍵:<ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">系統會在你重新啟動時刪除本機資料</translation>
 <translation id="7881483672146086348">查看帳戶</translation>
 <translation id="7882358943899516840">供應商類型</translation>
@@ -4855,6 +4879,7 @@
 <translation id="7987814697832569482">一律透過這個 VPN 建立連線</translation>
 <translation id="7988355189918024273">啟用無障礙功能</translation>
 <translation id="7991296728590311172">開關功能設定</translation>
+<translation id="7994350303002908848">無法安裝 Plugin VM。請再試一次,或是與貴機構的裝置管理員聯絡。錯誤代碼:<ph name="ERROR_CODE" />。</translation>
 <translation id="7994702968232966508">EAP 方法</translation>
 <translation id="7997826902155442747">處理優先順序</translation>
 <translation id="7999229196265990314">已建立下列檔案:
@@ -4947,7 +4972,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{沒有第三方 Cookie}=1{已封鎖 1 組第三方 Cookie}other{已封鎖 # 組第三方 Cookie}}</translation>
 <translation id="810875025413331850">找不到附近的裝置。</translation>
 <translation id="8111155949205007504">透過 iPhone 分享這個密碼</translation>
-<translation id="8113043281354018522">選擇授權類型</translation>
 <translation id="8114875720387900039">水平分割</translation>
 <translation id="8116972784401310538">書籤管理員(&amp;B)</translation>
 <translation id="8117620576188476503">透過狀態匣管理連線、更新和設定。如要使用鍵盤開啟這個畫面,請按下 Alt + Shift + S 鍵。</translation>
@@ -5103,6 +5127,7 @@
 <translation id="8327039559959785305">掛接 Linux 檔案時發生錯誤,請再試一次。</translation>
 <translation id="8335587457941836791">從檔案櫃中取消固定</translation>
 <translation id="8336407002559723354">這部裝置將在 <ph name="MONTH_AND_YEAR" />停止更新</translation>
+<translation id="8336721153892716270">重新啟動裝置,改以<ph name="LANGUAGE" />顯示系統文字</translation>
 <translation id="8336739000755212683">變更裝置的帳戶圖片</translation>
 <translation id="8337047789441383384">你已註冊過這個安全金鑰,不必再次註冊。</translation>
 <translation id="8338952601723052325">開發人員網站</translation>
@@ -5146,6 +5171,7 @@
 <translation id="8400146488506985033">管理使用者</translation>
 <translation id="8401432541486058167">請輸入與智慧型卡片相關聯的 PIN 碼。</translation>
 <translation id="8405046151008197676">瞭解最新的更新內容摘要</translation>
+<translation id="8408068190360279472"><ph name="NETWORK_TYPE" />網路,連線中</translation>
 <translation id="8410775397654368139">Google Play</translation>
 <translation id="8413385045638830869">先詢問我 (建議)</translation>
 <translation id="8418445294933751433">顯示為分頁(&amp;S)</translation>
@@ -5435,6 +5461,7 @@
 <translation id="8807632654848257479">穩定版</translation>
 <translation id="8808478386290700967">線上應用程式商店</translation>
 <translation id="8808686172382650546">貓咪</translation>
+<translation id="8808744862003883508">這個頁面會顯示安裝在 Chrome 的所有擴充功能。</translation>
 <translation id="8809147117840417135">淺藍綠色</translation>
 <translation id="8813698869395535039">無法登入 <ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">張</translation>
@@ -5662,7 +5689,6 @@
 <translation id="9121814364785106365">在固定分頁中開啟</translation>
 <translation id="9122176249172999202"><ph name="IDS_SHORT_PRODUCT_NAME" /> 已暫停</translation>
 <translation id="9124003689441359348">你所儲存的密碼會顯示在這裡</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (還剩 <ph name="LICENSE_COUNT" /> 個)</translation>
 <translation id="9128317794749765148">無法完成設定</translation>
 <translation id="9128870381267983090">連線至網路</translation>
 <translation id="9130015405878219958">輸入的模式無效。</translation>
@@ -5701,6 +5727,7 @@
 <translation id="9188732951356337132">傳送使用狀況與診斷資料。這個裝置目前會自動將診斷資料以及裝置和應用程式的使用狀況資料傳送給 Google。這些資料將有助於系統和應用程式提高穩定性及做出其他改善,並不會用於識別貴子女的身分。部分匯總資料還能夠為 Google 應用程式和合作夥伴 (例如 Android 開發人員) 提供幫助。如果貴子女的「其他網路和應用程式活動」設定為開啟,系統可能會將這些資料儲存到他們的 Google 帳戶。<ph name="BEGIN_LINK2" />瞭解詳情<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + 預先共用金鑰</translation>
 <translation id="920045321358709304">透過 <ph name="SEARCH_ENGINE" /> 搜尋</translation>
+<translation id="9201023452444595544">所有離線資料都將遭到清除</translation>
 <translation id="9201220332032049474">螢幕鎖定選項</translation>
 <translation id="9203398526606335860">分析已啟用(&amp;P)</translation>
 <translation id="9203904171912129171">選取裝置</translation>
@@ -5713,6 +5740,7 @@
 <translation id="9220525904950070496">移除帳戶</translation>
 <translation id="9220820413868316583">請移開手指,然後再試一次。</translation>
 <translation id="923467487918828349">全部顯示</translation>
+<translation id="929117907539171075">已安裝應用程式中的離線資料也將遭到清除</translation>
 <translation id="930268624053534560">詳細時間戳記</translation>
 <translation id="932327136139879170">首頁</translation>
 <translation id="932508678520956232">無法初始化列印作業。</translation>
@@ -5738,6 +5766,7 @@
 <translation id="960719561871045870">電信業者代碼</translation>
 <translation id="960987915827980018">剩下約 1 個小時</translation>
 <translation id="962802172452141067">書籤資料夾樹狀結構</translation>
+<translation id="964057662886721376">部分擴充功能會造成執行速度緩慢,尤其是你在無意中安裝的擴充功能。</translation>
 <translation id="964286338916298286">你的 IT 管理員已為你的裝置停用 Chrome 好康優惠。</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{應用程式}other{應用程式}}</translation>
 <translation id="965211523698323809">透過你的 <ph name="DEVICE_TYPE" /> 收發簡訊。<ph name="LINK_BEGIN" />瞭解詳情<ph name="LINK_END" /></translation>
diff --git a/chrome/app/resources/generated_resources_zu.xtb b/chrome/app/resources/generated_resources_zu.xtb
index 517c8f1..1de81d0 100644
--- a/chrome/app/resources/generated_resources_zu.xtb
+++ b/chrome/app/resources/generated_resources_zu.xtb
@@ -133,7 +133,6 @@
 <translation id="1177863135347784049">Ngokwezifiso</translation>
 <translation id="1178581264944972037">Misa isikhashana</translation>
 <translation id="117916940443676133">Ukhiye wakho wokuqinisekisa ubunikazi awuvunyelwe ngephinikhodi. Ukuze uphathe idatha yokungena ngemvume, qala udale iphinikhodi</translation>
-<translation id="118069123878619799">- izici zakho zomzimba, njengobude</translation>
 <translation id="1181037720776840403">Susa</translation>
 <translation id="1183237619868651138">Ayikwazi ukufaka i-<ph name="EXTERNAL_CRX_FILE" /> kunqolobane yasendaweni.</translation>
 <translation id="1185924365081634987">Ungaphinda uzame <ph name="GUEST_SIGNIN_LINK_START" />ukudlulisa amehlo njengesihambeli<ph name="GUEST_SIGNIN_LINK_END" /> ukuze ulungise leli phutha lenethiwekhi.</translation>
@@ -352,6 +351,7 @@
 <translation id="1493892686965953381">Ilindele i-<ph name="LOAD_STATE_PARAMETER" />...</translation>
 <translation id="1495486559005647033"><ph name="NUM_PRINTERS" /> amanye amadivayisi atholakalayo.</translation>
 <translation id="1495677929897281669">Emuva kuthebhu</translation>
+<translation id="1499271269825557605">Uma ungasazi isandiso, noma uma isiphequluli sakho singasebenzi njengokulindelekile, ungavala noma wenze ngezifiso izandiso lapha.</translation>
 <translation id="1500297251995790841">Idivayisi engaziwa [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation>
 <translation id="1503394326855300303">Le akhawunti yomnikazi kumele kube i-akhawunti yokuqala yokungena ngemvume kwiseshini yokungena ngemvume okuningi.</translation>
 <translation id="150411034776756821">Susa i-<ph name="SITE" /></translation>
@@ -359,6 +359,7 @@
 <translation id="1507170440449692343">Leli khasi livinjelwe kusuka ekufinyeleleni kukhamela yakho.</translation>
 <translation id="1507246803636407672">Lahla</translation>
 <translation id="1508491105858779599">Beka umunwe wakho kunzwa yezigxivizo zeminwe ukuze uvule idivayisi.</translation>
+<translation id="1508575541972276599">Inguqulo yamanje iyi-Debian 9 (Stretch)</translation>
 <translation id="1509281256533087115">Finyelela kunoma iyiphi i-<ph name="DEVICE_NAME_AND_VENDOR" /> nge-USB</translation>
 <translation id="150962533380566081">I-PUK engavumelekile.</translation>
 <translation id="1510030919967934016">Leli khasi livinjelwe ukuthi lilandelele indawo yakho.</translation>
@@ -432,6 +433,7 @@
 <translation id="1601560923496285236">Faka</translation>
 <translation id="1603914832182249871">(I-Incognito)</translation>
 <translation id="1604432177629086300">Ayikwazanga ukuphrinta. Hlola iphrinta uphinde uzame futhi.</translation>
+<translation id="1605544918554600534"><ph name="PROFILE_NAME" />: Ukuvumelanisa iphasiwedi akusebenzi</translation>
 <translation id="1607139524282324606">Sula ukungena</translation>
 <translation id="1608626060424371292">Susa lo msebenzisi</translation>
 <translation id="1608668830839595724">Izenzo eziningi zezinto ezikhethiwe</translation>
@@ -558,6 +560,8 @@
 <translation id="177336675152937177">Idatha esingathiwe yohlelo lokusebenza</translation>
 <translation id="1776712937009046120">Engeza umsebenzisi</translation>
 <translation id="1776883657531386793"><ph name="OID" />: <ph name="INFO" /></translation>
+<translation id="1777310661937894236">Le divayisi iphethwe ngu-<ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.
+    Sicela uchofoze "Okulandelayo" ukuze uqhubeke nokungena ngemvume ku-akhawunti yakho ye-<ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />.</translation>
 <translation id="1779652936965200207">Sicela ufake lo khiye wokundlula ku-"<ph name="DEVICE_NAME" />":</translation>
 <translation id="1780152987505130652">Vala iqembu</translation>
 <translation id="1781291988450150470">Iphinikhodi yamanje</translation>
@@ -745,6 +749,7 @@
 <translation id="2048653237708779538">Isenzo asitholakali</translation>
 <translation id="2050339315714019657">Ukuma ngobude</translation>
 <translation id="2053312383184521053">Idatha yesimo sokungenzi lutho</translation>
+<translation id="2055585478631012616">Uzokhishwa kulawa masayithi, kufaka phakathi kumathebhu avuliwe</translation>
 <translation id="205560151218727633">Ilogo yomsizi we-Google</translation>
 <translation id="2058456167109518507">Idivayisi itholakele</translation>
 <translation id="2059913712424898428">Indawo yesikhathi</translation>
@@ -760,6 +765,7 @@
 <translation id="2079545284768500474">Hlehlisa</translation>
 <translation id="2080070583977670716">Ezinye izilungiselelo</translation>
 <translation id="2087822576218954668">Phrinta: <ph name="PRINT_NAME" /></translation>
+<translation id="2088690981887365033">Inethiwekhi ye-VPN</translation>
 <translation id="2089566709556890888">Phequlula ngokuphephile nge-Google Chrome</translation>
 <translation id="2089795179672254991">Buza uma isayithi lifuna ukubona umbhalo nezithombe ezikopishelwe kubhodi lokunamathisela (kunconyiwe)</translation>
 <translation id="2090165459409185032">Ukuze uphinde uthole ulwazi lakho le-akhawunti, hamba ku-: google.com/accounts/recovery</translation>
@@ -983,6 +989,7 @@
 <translation id="2379232090534544565">Isayithi lifinyelela okungenayo komsindo nevidiyo</translation>
 <translation id="2379281330731083556">Phrinta usebenzisa ingxoxo yesistimu... <ph name="SHORTCUT_KEY" /></translation>
 <translation id="2381756643783702095">Buza ngaphambi kokuthumela (kunconyiwe)</translation>
+<translation id="2382818385048255866">Hlola izangiso zakho</translation>
 <translation id="2384436799579181135">Kuvele iphutha. Sicela uhlole iphrinta yakho uphinde uzame futhi.</translation>
 <translation id="2387458720915042159">Uhlobo loxhumo lommeleli</translation>
 <translation id="2391419135980381625">Ifonti ejwayelekile</translation>
@@ -1034,6 +1041,7 @@
 <translation id="2462724976360937186">I-ID yokhiye osemagunyeni wokunika isitifiketi</translation>
 <translation id="2462752602710430187">Kungeziwe <ph name="PRINTER_NAME" /></translation>
 <translation id="2464089476039395325">Ummeleli we-HTTP</translation>
+<translation id="2467267713099745100"><ph name="NETWORK_TYPE" /> inethiwekhi, valiwe</translation>
 <translation id="2468205691404969808">Isebenzisa amakhukhi ukuze ikhumbule okuncamelayo, nanoma ungawavakasheli lawo makhasi.</translation>
 <translation id="2468402215065996499">I-Tamagotchi</translation>
 <translation id="2469259292033957819">Awunawo amaphrinta alondoloziwe.</translation>
@@ -1288,6 +1296,7 @@
 <translation id="2800760947029405028">Layisha isithombe</translation>
 <translation id="2803375539583399270">Faka iphinikhodi</translation>
 <translation id="2804043232879091219">Esinye isiphequluli asikwazanga ukuvulwa</translation>
+<translation id="2804667941345577550">Uzokhishwa kuleli sayithi, kufaka phakathi kumathebhu avuliwe</translation>
 <translation id="2804680522274557040">Ikhamera ivaliwe</translation>
 <translation id="2805646850212350655">Ukubethelwa kwe-Microsift kwesistimu yefayela</translation>
 <translation id="2805756323405976993">Izinhlelo zokusebenza</translation>
@@ -1295,6 +1304,7 @@
 <translation id="2806891468525657116">Isinqamuleli sesivele sikhona</translation>
 <translation id="2807517655263062534">Amafayela owalandayo azovela lapha</translation>
 <translation id="2809586584051668049">nokuningi okungu-<ph name="NUMBER_ADDITIONAL_DISABLED" /></translation>
+<translation id="2810390687497823527">Uma ungaboni isandiso, noma uma isiphequluli sakho singasebenzi ngendlela elindelekile, ungavala ukwenza ngezifiso izandiso lapha.</translation>
 <translation id="2812049959647166806">I-thunderbolt ayisekelwe</translation>
 <translation id="2812944337881233323">Zama ukuphuma ngemvume uphinde ungene ngemvume futhi</translation>
 <translation id="2812989263793994277">Ungabonisi noma yiziphi izithombe</translation>
@@ -1334,6 +1344,7 @@
 <translation id="2861941300086904918">Isiphathi sokuvikela seklayenti lomdabu</translation>
 <translation id="2864601841139725659">Setha isithombe sakho sephrofayela</translation>
 <translation id="2865919525181940183">Isithombe-skrini sezinhlelo manje ezikusikrini</translation>
+<translation id="286674810810214575">Ihlola imithombo yesiphequluli...</translation>
 <translation id="2867768963760577682">Vula njengethebhu ephiniwe</translation>
 <translation id="2868746137289129307">Lesi sandiso siphelelwe isikhathi futhi sikhutshazwe inqubomgomo yebhizinisi. Singahle sinikwe amandla ngokuzenzakalelayo uma inguqulo entsha itholakala.</translation>
 <translation id="2870560284913253234">Isayithi</translation>
@@ -1411,6 +1422,7 @@
 <translation id="2972581237482394796">&amp;Yenza futhi</translation>
 <translation id="2973324205039581528">Thulisa isayithi</translation>
 <translation id="2977480621796371840">Susa kusukela kuqembu</translation>
+<translation id="2979520980928493164">I-Chrome enempilo, ejabulile</translation>
 <translation id="2979639724566107830">Vula ewindini elisha</translation>
 <translation id="2981113813906970160">Bonisa isikhombisi esikhulu segundane</translation>
 <translation id="2982970937345031">Bika ngokungaziwa</translation>
@@ -1517,6 +1529,7 @@
 <translation id="3143515551205905069">Khansela ukuvumelanisa</translation>
 <translation id="3143754809889689516">Dlala kusukela ekuqaleni</translation>
 <translation id="3144647712221361880">Vula isixhumanisi njenge-</translation>
+<translation id="3145187901750964977">Ayikwazanga ukufaka umshini ngokubuka Sicela uzame, noma uxhumane nomlawuli wedivayisi wenhlangnao yakho. Ikhodi yephutha: <ph name="ERROR_CODE" />.</translation>
 <translation id="3149477159749171726">Inguqulo:
     <ph name="LINUX_VERSION" />
 
@@ -1555,6 +1568,7 @@
 <translation id="3192947282887913208">Amafayela womsindo</translation>
 <translation id="3194737229810486521">I-<ph name="URL" /> ifuna ukugcina unaphakade idatha kudivayisi yakho</translation>
 <translation id="3199127022143353223">Amaseva</translation>
+<translation id="3201306578844503970">Ayikwazi ukufaka umshini wokubuka ngenxa yephutha lenethiwekhi. Sicela uzame, noma uxhumane nomlawuli wedivayisi wenhlangnao yakho. Ikhodi yephutha: <ph name="ERROR_CODE" />.</translation>
 <translation id="3201422919974259695">Amadivayisi atholakalayo e-USB azovela lapha.</translation>
 <translation id="3202131003361292969">Indlela</translation>
 <translation id="3202173864863109533">Le thebhu yomsindo iyathuliswa.</translation>
@@ -1891,7 +1905,6 @@
 <translation id="3678156199662914018">Isandiso: <ph name="EXTENSION_NAME" /></translation>
 <translation id="3681311097828166361">Siyabonga ngempendulo yakho. Awuxhumekile ku-inthanethi manje, futhi umbiko wakho uzothunyelwa emuva kwesikhathi.</translation>
 <translation id="3682824389861648626">Umkhawulo wokunyakaza</translation>
-<translation id="3683023058278427253">Sithole izinhlobo eziningi zelayisense zesizinda sakho. Sicela ukhethe esisodwa ukuze uqhubeke.</translation>
 <translation id="3683524264665795342"><ph name="APP_NAME" /> Isicelo sokwabelana ngesikrini</translation>
 <translation id="368789413795732264">Kube khona iphutha ngenkathi kuzanywa ukubhala ifayela: <ph name="ERROR_TEXT" />.</translation>
 <translation id="3688507211863392146">Bhala kumafayela namafolda owavula kuhlelo lokusebenza</translation>
@@ -2065,6 +2078,7 @@
 <translation id="389589731200570180">Yabelana nezihambeli</translation>
 <translation id="389901847090970821">Khetha ikhibhodi</translation>
 <translation id="3899879303189199559">Ayixhunyiwe ku-inthanethi ngaphezulu konyaka</translation>
+<translation id="3900789207771372462">Ezinye izandiso zingabona umsebenzi wakho wokuphequlula - kufaka phakathi ulwazi lomuntu siqu.</translation>
 <translation id="3900966090527141178">Thumela amaphasiwedi</translation>
 <translation id="3901991538546252627">Ixhumeka ku-<ph name="NAME" /></translation>
 <translation id="3905761538810670789">Lungisa uhlelo lokusebenza</translation>
@@ -2154,7 +2168,6 @@
 <translation id="4013132157686828973">I-"<ph name="CLIENT_NAME" />" ilungisa amaphutha kulesi siphequluli</translation>
 <translation id="4014432863917027322">Lungisa i-"<ph name="EXTENSION_NAME" />"?</translation>
 <translation id="4015163439792426608">Usitholile isandiso? <ph name="BEGIN_LINK" />Phatha izandiso zakho<ph name="END_LINK" /> endaweni eyodwa kalula.</translation>
-<translation id="4020106588733303597">Eshu! Isistimu ihlulekile ukulayisha amalayisense atholakalayo.</translation>
 <translation id="4020327272915390518">Imenyu yezinketho</translation>
 <translation id="4021279097213088397">–</translation>
 <translation id="4022426551683927403">&amp;Engeza kusichazamazwi</translation>
@@ -2192,6 +2205,7 @@
 <translation id="407520071244661467">Isikali</translation>
 <translation id="4075639477629295004">Ayikwazi ukusakaza i-<ph name="FILE_NAME" />.</translation>
 <translation id="4077917118009885966">Isikhangiso sivinjelwe kuleli sayithi</translation>
+<translation id="4077919383365622693">Yonke idatha namakhukhi alondolozwe nge-<ph name="SITE" /> azosuswa.</translation>
 <translation id="4079140982534148664">Sebenzisa Ukuhlola Kwesipele Okuthuthukisiwe</translation>
 <translation id="4081242589061676262">Ayikwazi ukusakaza ifayela.</translation>
 <translation id="4084682180776658562">Ibhukhimakhi</translation>
@@ -2266,6 +2280,7 @@
 <translation id="4181841719683918333">Izilimi</translation>
 <translation id="4184885522552335684">Hudula ukuze uhambise isiboniso</translation>
 <translation id="4194570336751258953">Nika amandla ukuthepha kuya ekuchofozeni</translation>
+<translation id="4194595472342532425">Ayikwazanga ukusetha i-Plugin VM ngenxa yenkinga yokulungisa. Sicela uxhumane nomlawuli wedivayisi yakho yenhlangano. Ikhodi yephutha: <ph name="ERROR_CODE" />.</translation>
 <translation id="4195643157523330669">Vula kuthebhu entsha</translation>
 <translation id="4195814663415092787">Qhubeka lapho ugcine khona</translation>
 <translation id="4198146608511578238">Vele ubambe isithonjana sesiqalisi ukuze ukhulume nomsizi wakho we-Google.</translation>
@@ -2489,6 +2504,7 @@
 <translation id="4549791035683739768">Ukhiye wakho wokuqinisekisa ubunikazi awunazo izigxivizo zeminwe ezigciniwe</translation>
 <translation id="4551763574344810652">Cindezela ku-<ph name="MODIFIER_KEY_DESCRIPTION" /> ukuze uhlehlise</translation>
 <translation id="4552089082226364758">Ifuleshi</translation>
+<translation id="4552759165874948005"><ph name="NETWORK_TYPE" /> inethiwekhi, amandla wesignali <ph name="SIGNAL_STRENGTH" />%</translation>
 <translation id="4554591392113183336">Isandiso sangaphandle sikunguqulo efanayo noma engaphansi ngokuqhathaniswa nesivele ikhona.</translation>
 <translation id="4555769855065597957">Amafu</translation>
 <translation id="4555863373929230635">Ukuze kulondolozwe amaphasiwedi ku-akhawunti yakho ye-Google, ngena ngemvume uphinde uvule ukuvumelanisa.</translation>
@@ -2566,6 +2582,7 @@
 <translation id="4665446389743427678">Yonke idatha egcinwe i-<ph name="SITE" /> izosuswa.</translation>
 <translation id="4668721319092543482">Chofoza ukuze unike amandla i-<ph name="PLUGIN_NAME" /></translation>
 <translation id="4672657274720418656">Ikhasi elihluziwe</translation>
+<translation id="46733273239502219">Idatha engaxhumekile ku-inthanethi nayo izosulwa</translation>
 <translation id="4673442866648850031">Vula amathuluzi e-stylus uma i-stylus sisusiwe</translation>
 <translation id="4677585247300749148">I-<ph name="URL" /> ifuna ukuphendula kumicimbi efinyelelekayo</translation>
 <translation id="4677772697204437347">Imemori ye-GPU</translation>
@@ -2657,7 +2674,6 @@
 <translation id="4823484602432206655">Funda uphinde uguqule izilungiselelo zomsebenzisi nedivayisi</translation>
 <translation id="4824958205181053313">Khansela ukuvumelanisa?</translation>
 <translation id="4827675678516992122">Ayikwazanga ukuxhuma</translation>
-<translation id="4828937774870308359">I-Australian</translation>
 <translation id="4829768588131278040">Setha iphinikhodi</translation>
 <translation id="4830502475412647084">Ifaka isibuyekezo se-OS</translation>
 <translation id="4830573902900904548">I-<ph name="DEVICE_TYPE" /> yakho ayikwazi ukuxhuma ku-inthanethi isebenzisa i-<ph name="NETWORK_NAME" />. Sicela ukhethe enye inethiwekhi. <ph name="LEARN_MORE_LINK_START" />Funda kabanzi<ph name="LEARN_MORE_LINK_END" /></translation>
@@ -2698,6 +2714,7 @@
 <translation id="4876273079589074638">Siza onjiniyela bethu baphenye baphinde balungise lokhu kuphahlazeka. Faka kuhlu izinyathelo eziqondile uma ungakhona. Awukho umniningwane omncane kakhulu!</translation>
 <translation id="4876895919560854374">Khiya uphinde uvule isikrini</translation>
 <translation id="4877276003880815204">Hlola izinto</translation>
+<translation id="4878653975845355462">Ingemuva elizenzakalelayo livaliwe ngumlawuli wakho</translation>
 <translation id="4879491255372875719">Okuzenzakalelayo (okuzenzakalelayo)</translation>
 <translation id="4880328057631981605">Igama lephoyinti lokufinyelela</translation>
 <translation id="4880827082731008257">Umlando wosesho</translation>
@@ -2753,10 +2770,10 @@
 <translation id="4943691134276646401">"<ph name="CHROME_EXTENSION_NAME" />" ifuna ukuxhuma embobeni yesiriyeli</translation>
 <translation id="4944310289250773232">Le sevisi yokufakazela ubuqiniso isingethwe i-<ph name="SAML_DOMAIN" /></translation>
 <translation id="495170559598752135">Izenzo</translation>
+<translation id="4952981627953231344">I-Plugin VM ayivunyelwe kule divayisi. Xhumana nomlawuli wedivayisi yenhlangano yakho.</translation>
 <translation id="4953689047182316270">Phendula kumicimbi efinyelelekayo</translation>
 <translation id="4953808748584563296">Isithombe esizenzakalelayo esiwolintshi</translation>
 <translation id="4955710816792587366">Khetha i-PIN yakho</translation>
-<translation id="4955814292505481804">Njalo ngonyaka</translation>
 <translation id="4959262764292427323">Amaphasiwedi alondolozwa ku-akhawunti yakho ye-Google ukuze ukwazi ukuwasebenzisa kunoma iyiphi idivayisi</translation>
 <translation id="4960294539892203357"><ph name="WINDOW_TITLE" /> - <ph name="PROFILE_NAME" /></translation>
 <translation id="496185450405387901">Lolu hlelo lokusebenza lufakwe umlawuli wakho.</translation>
@@ -3241,7 +3258,6 @@
 <translation id="5659593005791499971">I-imeyili</translation>
 <translation id="5659833766619490117">Leli khasi alikwazanga ukuhunyushwa</translation>
 <translation id="5660204307954428567">Bhangqa ne-<ph name="DEVICE_NAME" /></translation>
-<translation id="5662477687021125631">Engapheliyo</translation>
 <translation id="5667546120811588575">Isetha i-Google Play...</translation>
 <translation id="5669267381087807207">Yenza kusebenze</translation>
 <translation id="5669691691057771421">Faka iphinikhodi entsha</translation>
@@ -3257,6 +3273,7 @@
 <translation id="5687326903064479980">Indawo yesikhathi</translation>
 <translation id="5689516760719285838">Indawo</translation>
 <translation id="56907980372820799">Xhumanisa idatha</translation>
+<translation id="5691180005790455277">Yonke idatha namakhokhi alondolozwe i-<ph name="SITE_GROUP_NAME" /> namanye amasayithi ngaphansi kwayo izosuswa.</translation>
 <translation id="5691511426247308406">Umndeni</translation>
 <translation id="5692183275898619210">Ukuphrinta kuqediwe</translation>
 <translation id="5696143504434933566">Bika ukuhlukumeza kusuka ku-"<ph name="EXTENSION_NAME" />"</translation>
@@ -3343,7 +3360,6 @@
 <translation id="5815645614496570556">X.400 Ikheli</translation>
 <translation id="5816434091619127343">Ushintsho oluceliwe lwephrinta lungenza iphrinta ingasebenziseki.</translation>
 <translation id="5817918615728894473">Banqa</translation>
-<translation id="5819762621475381970">- isendlalelo segumbi lakho</translation>
 <translation id="5821565227679781414">Dala isinqamuleli</translation>
 <translation id="5825412242012995131">Kuvuliwe (Kunconyiwe)</translation>
 <translation id="5826395379250998812">Xhuma i-<ph name="DEVICE_TYPE" /> yakho nefoni. <ph name="LINK_BEGIN" />Funda kabanzi<ph name="LINK_END" /></translation>
@@ -3479,6 +3495,7 @@
 <translation id="6007240208646052708">Usesho lwezwi ngolimi lwakho olutholakali.</translation>
 <translation id="6009781704028455063">Inzwa eyakhelwe ngaphakathi</translation>
 <translation id="6010869025736512584">Ifinyelela kokokufaka kwevidiyo</translation>
+<translation id="6011074160056912900">Inethiwekhi ye-Ethernet</translation>
 <translation id="6011193465932186973">Izigxivizo zeminwe</translation>
 <translation id="6011449291337289699">Sula idatha yesayithi</translation>
 <translation id="6015266928248016057">I-PUK engavumelekile. Ukuzama kabusha okusele: <ph name="RETRIES" />.</translation>
@@ -3515,6 +3532,7 @@
 <translation id="6053401458108962351">&amp;Sula idatha yokudlulisa amehlo...</translation>
 <translation id="6055171183283175969">Iphasiwedi oyifakile ayilungile.</translation>
 <translation id="6055392876709372977">I-PKCS #1 SHA-256 enokubethela kwe-RSA</translation>
+<translation id="6055907707645252013">Inethiwekhi ye-<ph name="NETWORK_TYPE" /> ayixhunyiwe</translation>
 <translation id="6056710589053485679">Ukuphinda ulayishe okujwayelekile</translation>
 <translation id="6057381398996433816">Leli sayithi livinjelwe kusukela ekusebenziseni izinzwa zokunyakaza nezokukhanya.</translation>
 <translation id="6058567592298841668">Xhuma umshini obonakalayo: <ph name="PLUGIN_VM_NAME" /></translation>
@@ -3578,6 +3596,7 @@
 <translation id="6136114942382973861">Vala ibha yokulanda</translation>
 <translation id="6137767437444130246">Isitifiketi somsebenzisi</translation>
 <translation id="6138680304137685902">Isiginesha ye-X9.62 ECDSA ne-SHA-384</translation>
+<translation id="6138894911715675297"><ph name="NETWORK_TYPE" />, ayikho inethiwekhi</translation>
 <translation id="6141988275892716286">Qinisekisa ukulanda</translation>
 <translation id="6143186082490678276">Thola usizo</translation>
 <translation id="6144938890088808325">Sisize sithuthukise i-Chromebooks</translation>
@@ -3884,6 +3903,7 @@
 <translation id="6602956230557165253">Sebenzisa okhiye bomcibisholo ongakwesokunxele nongakwesokudla ukuze uzulazule.</translation>
 <translation id="6605847144724004692">Akulinganisiwe okwamanje abasebenzisi.</translation>
 <translation id="6607831829715835317">Amathuluzi amaningi</translation>
+<translation id="6611972847767394631">Thola amathebhu wakho lapha</translation>
 <translation id="6612358246767739896">Okuqukethwe okuvikelekile</translation>
 <translation id="6615455863669487791">Ngibonise</translation>
 <translation id="6618097958368085618">Gcina noma kunjalo</translation>
@@ -3952,6 +3972,7 @@
 <translation id="6709133671862442373">Izindaba</translation>
 <translation id="6709357832553498500">Xhumeka usebenzisa i-<ph name="EXTENSIONNAME" /></translation>
 <translation id="6710213216561001401">Okwedlule</translation>
+<translation id="6715803357256707211">Kuvele iphutha phakathi nokufakwa kohlelo lwakho lokusebenza le-Linux. Chofoza kusaziso ngemininingwane.</translation>
 <translation id="6721678857435001674">Bona ukwenziwa nemodeli yokhiye bakho bokuqinisekisa ubunikazi</translation>
 <translation id="6721972322305477112">Ifayela</translation>
 <translation id="672213144943476270">Sicela uvule iphrofayela yakho ngaphambi kokuphequlula njengesihambeli.</translation>
@@ -3976,7 +3997,6 @@
 <translation id="674632704103926902">Nika amandla ukuhudula kwempompi</translation>
 <translation id="6748217015615267851">Nikezela: <ph name="RENDERER_URL" /></translation>
 <translation id="6748465660675848252">Ungahle uqhubeke, kodwa idatha yakho evumelanisiwe kuphela nezilungiselelo kuzobuyiswa. Idatha yendawo izohlakeka.</translation>
-<translation id="6748775883310276718">Ikhiyoski yohlelo lokusebenza olulodwa</translation>
 <translation id="6751344591405861699"><ph name="WINDOW_TITLE" /> (i-Incognito)</translation>
 <translation id="6757101664402245801">I-URL ikopishiwe</translation>
 <translation id="6758056191028427665">Sazise ukuthi siqhuba kanjani.</translation>
@@ -3986,6 +4006,7 @@
 <translation id="6769712124046837540">Ingeza iphrinta...</translation>
 <translation id="6770664076092644100">Qinisekisa nge-NFC</translation>
 <translation id="6771503742377376720">Ingukuba segunyeni kokunika isitifiketi</translation>
+<translation id="6772339735733515807">Phatha izandiso zakho</translation>
 <translation id="6775163072363532304">Amadivayisi atholakalayo azobonakala lapha.</translation>
 <translation id="6777817260680419853">Ukuqondiswa kabusha kuvinjiwe</translation>
 <translation id="6778737459546443941">Umzali wakho akakuvumanga okwamanje</translation>
@@ -4124,6 +4145,7 @@
 <translation id="6972180789171089114">Umsindo/Ividiyo</translation>
 <translation id="6972553992270299730">I-<ph name="ORIGIN" /> ayikwazi ukuvula amafayela akuleli folda ngoba liqukethe amafayela esistimu</translation>
 <translation id="6972754398087986839">Qala</translation>
+<translation id="6973611239564315524">Ukuthuthuka ku-Debian 10 (Buster) kuyatholakala</translation>
 <translation id="6974609594866392343">Imodi yedemo yokungaxhumekile</translation>
 <translation id="6977381486153291903">Isibuyekezo se-firmware</translation>
 <translation id="6978121630131642226">Izinjini zosesho</translation>
@@ -4583,6 +4605,7 @@
 <translation id="7644543211198159466">Umbala netimu</translation>
 <translation id="7645176681409127223"><ph name="USER_NAME" /> (umnikazi)</translation>
 <translation id="7645681574855902035">Ikhansela isipele se-Linux</translation>
+<translation id="7646772052135772216">Ukuvumelanisa amaphasiwedi akusebenzi</translation>
 <translation id="7647403192093989392">Ayikho imisebenzi yakamuva</translation>
 <translation id="7648992873808071793">Gcina amafayela kule divayisi</translation>
 <translation id="7649070708921625228">Usizo</translation>
@@ -4771,6 +4794,7 @@
 <translation id="7877451762676714207">Iphutha elingaziwa leseva. Sicela uzame futhi, noma uxhumane nomlawuli weseva.</translation>
 <translation id="7877680364634660272">Uhambo</translation>
 <translation id="7878562273885520351">Iphasiwedi yakho ingafakwa engozini</translation>
+<translation id="7879631849810108578">Isinqamuleli sisethiwe: <ph name="IDS_SHORT_SET_COMMAND" /></translation>
 <translation id="7880823633812189969">Idatha yasendaweni izosuswa uma uqala kabusha</translation>
 <translation id="7881483672146086348">Buka i-akhawunti</translation>
 <translation id="7882358943899516840">Uhlobo lomhlinzeki</translation>
@@ -4857,6 +4881,7 @@
 <translation id="7987814697832569482">Njalo xhuma ngale VPN</translation>
 <translation id="7988355189918024273">Nika amandla izici zokufinyeleleka</translation>
 <translation id="7991296728590311172">Izilungiselelo zokufinyelela zeswishi</translation>
+<translation id="7994350303002908848">Ayikwazanga ukufaka i-Plugin VM. Sicela uzame, noma uxhumane nomlawuli wedivayisi wenhlangnao yakho. Ikhodi yephutha: <ph name="ERROR_CODE" />.</translation>
 <translation id="7994702968232966508">Indlela ye-EAP</translation>
 <translation id="7997826902155442747">Ukukhetha kwenqubo</translation>
 <translation id="7999229196265990314">Idale amafayela alandelayo:
@@ -4948,7 +4973,6 @@
 <translation id="8108526232944491552">{COUNT,plural, =0{Awekho amakhukhi enkampani yangaphandle}=1{1 ikhukhi lenkampani yangaphandle livinjelwe}one{# amakhukhi enkampani yangaphandle avinjelwe}other{# amakhukhi enkampani yangaphandle avinjelwe}}</translation>
 <translation id="810875025413331850">Awekho amadivayisi aseduze atholiwe.</translation>
 <translation id="8111155949205007504">Yabelana ngale phasiwedi ne-iPhone yakho</translation>
-<translation id="8113043281354018522">Khetha uhlobo lwelayisense</translation>
 <translation id="8114875720387900039">Hlukanisa ngokuvundlile</translation>
 <translation id="8116972784401310538">I&amp;siphathi sebhukhimakhi</translation>
 <translation id="8117620576188476503">Phatha ukuxhumeka, izibuyekezo, nezilungiselelo ngethreyi yesimo. Ukuze ufike lapha ngekhibhodi, cindezela ku-Alt + Shift + S.</translation>
@@ -5105,6 +5129,7 @@
 <translation id="8327039559959785305">Iphutha lokukhweza amafayela e-Linux. Sicela uzame futhi.</translation>
 <translation id="8335587457941836791">Khipha ukuphina kusuka kushelufu</translation>
 <translation id="8336407002559723354">Izibuyekezo ziphela ngomhla ka-<ph name="MONTH_AND_YEAR" /></translation>
+<translation id="8336721153892716270">Qalisa kabusha idivayisi ukuze ubonise umbhalo wesistimu-<ph name="LANGUAGE" /></translation>
 <translation id="8336739000755212683">Shintsha isithombe se-akhawunti yedivayisi</translation>
 <translation id="8337047789441383384">Usuvele ubhalise lo khiye wokuvikela. Akumele uphinde uwungeze futhi.</translation>
 <translation id="8338952601723052325">Iwebhusayithi yonjiniyela</translation>
@@ -5148,6 +5173,7 @@
 <translation id="8400146488506985033">Phatha abantu</translation>
 <translation id="8401432541486058167">Nikeza iphinikhodi ehambisana ne-smart card sakho.</translation>
 <translation id="8405046151008197676">Thola izithombe ezinhle kakhulu kusukela kusibuyekezo sakamuva kakhulu</translation>
+<translation id="8408068190360279472"><ph name="NETWORK_TYPE" /> inethiwekhi, ukuxhuma</translation>
 <translation id="8410775397654368139">I-Google Play</translation>
 <translation id="8413385045638830869">Buza kuqala (kunconyiwe)</translation>
 <translation id="8418445294933751433">Bonisa njengethebhu</translation>
@@ -5437,6 +5463,7 @@
 <translation id="8807632654848257479">Izinzile</translation>
 <translation id="8808478386290700967">Isitolo sewebhu</translation>
 <translation id="8808686172382650546">Ikati</translation>
+<translation id="8808744862003883508">Kulei khasi ungabona zonke izandiso ezifakiwe ku-Chrome.</translation>
 <translation id="8809147117840417135">I-teal ekhanyayo</translation>
 <translation id="8813698869395535039">Ayikwazi ukungena ngemvume ku-<ph name="USERNAME" /></translation>
 <translation id="8813811964357448561">ishidi lephepha</translation>
@@ -5664,7 +5691,6 @@
 <translation id="9121814364785106365">Vula njengethebhu ephiniwe</translation>
 <translation id="9122176249172999202">I-<ph name="IDS_SHORT_PRODUCT_NAME" /> iphunyuziwe</translation>
 <translation id="9124003689441359348">Amaphasiwedi alondoloziwe azovela lapha</translation>
-<translation id="9125466540846359910"><ph name="LICENSE_TYPE" /> (<ph name="LICENSE_COUNT" /> rem.)</translation>
 <translation id="9128317794749765148">Ukusetha akukwazanga ukuqedelelwa</translation>
 <translation id="9128870381267983090">Xhuma kunethiwekhi</translation>
 <translation id="9130015405878219958">Kufakwe imodi engavumelekile.</translation>
@@ -5703,6 +5729,7 @@
 <translation id="9188732951356337132">Thumela idatha yokusetshenziswa neyokuxilonga. Le divayisi manje ithumela ngokuzenzakalela idatha yokuxilonga, yedivayisi, neyokusetshenziswa kwedatha ku-Google. Lokhu ngeke kusetshenziselwe ukukhomba ingane yakho futhi kuzosiza ukuzinza kwesistimu nokohlelo lokusebenza nokunye ukuthuthukiswa. Enye idatha izophinda isize izinhlelo zokusebenza ze-Google nozakwethu, abafana nonjiniyela be-Android. Uma isilungiselelo esingeziwe sewebhu nesohlelo lokusebenza sivulelwe ingane yakho, le datha ingalondolozwa ku-akhawunti yakhe ye-Google. <ph name="BEGIN_LINK2" />Funda kabanzi<ph name="END_LINK2" /></translation>
 <translation id="9190063653747922532">L2TP/IPsec + ukhiye owabiwe ngaphambilini</translation>
 <translation id="920045321358709304">Sesha i-<ph name="SEARCH_ENGINE" /></translation>
+<translation id="9201023452444595544">Noma iyiphi idatha engaxhunyiwe ku-inthanethi izosulwa</translation>
 <translation id="9201220332032049474">Izinketho zokukhiya isikrini</translation>
 <translation id="9203398526606335860">Ukwenza iphrofayela kunikwe amandla</translation>
 <translation id="9203904171912129171">Khetha idivaysi</translation>
@@ -5715,6 +5742,7 @@
 <translation id="9220525904950070496">Susa i-akhawunti</translation>
 <translation id="9220820413868316583">Phakamisa bese uyazama futhi.</translation>
 <translation id="923467487918828349">Bonisa konke</translation>
+<translation id="929117907539171075">Idatha engaxhumekile ku-inthanethi kuzinhlelo zokusebenza ezixhumekile izosuswa</translation>
 <translation id="930268624053534560">Izitembu zesikhathi ezinemininingwane</translation>
 <translation id="932327136139879170">Ikhaya</translation>
 <translation id="932508678520956232">Ayikwazanga ukuqalisa ukuphrinta.</translation>
@@ -5740,6 +5768,7 @@
 <translation id="960719561871045870">Ikhodi ye-opharetha</translation>
 <translation id="960987915827980018">Kusele okungenani ihora elingu-1</translation>
 <translation id="962802172452141067">Isihlahla sefolda yebhukhimakhi</translation>
+<translation id="964057662886721376">Ezinye izandiso zingehlisa isivinini sakho - ikakhulukazi lezo ongazifakanga ngenhloso.</translation>
 <translation id="964286338916298286">Umlawuli wakho we-IT ukhubaze izinto ze-Chrome zedivayisi yakho.</translation>
 <translation id="964439421054175458">{NUM_APLLICATIONS,plural, =1{Uhlelo lokusebenza}one{Izinhlelo zokusebenza}other{Izinhlelo zokusebenza}}</translation>
 <translation id="965211523698323809">Thumela futhi wamukele imilayezo kusuka ku-<ph name="DEVICE_TYPE" /> yakho. <ph name="LINK_BEGIN" />Funda kabanzi<ph name="LINK_END" /></translation>
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp
index 27781478..3f78537 100644
--- a/chrome/app/settings_strings.grdp
+++ b/chrome/app/settings_strings.grdp
@@ -1131,7 +1131,7 @@
       Pair
     </message>
     <message name="IDS_SETTINGS_BLUETOOTH_PAIR_DEVICE_TITLE" desc="Title of the settings dialog for adding or pairing Bluetooth a device.">
-      Pair Bluetooth device
+      Connect to Bluetooth device
     </message>
     <message name="IDS_SETTINGS_BLUETOOTH_NO_DEVICES" desc="Message displayed when there are no paired Bluetooth devices scan.">
       No paired devices
diff --git a/chrome/app_shim/app_shim_controller.mm b/chrome/app_shim/app_shim_controller.mm
index 1fdb7849c..d330191a 100644
--- a/chrome/app_shim/app_shim_controller.mm
+++ b/chrome/app_shim/app_shim_controller.mm
@@ -469,8 +469,7 @@
   if (init_state_ == InitState::kWaitingForAppToFinishLaunch) {
     launch_files_ = files;
   } else {
-    // TODO(https://crbug.com/829689): Implement me!
-    NOTIMPLEMENTED();
+    host_->FilesOpened(files);
   }
 }
 
diff --git a/chrome/app_shim/app_shim_delegate.mm b/chrome/app_shim/app_shim_delegate.mm
index 00c1039..a58eb81 100644
--- a/chrome/app_shim/app_shim_delegate.mm
+++ b/chrome/app_shim/app_shim_delegate.mm
@@ -35,10 +35,7 @@
 }
 
 - (void)applicationWillBecomeActive:(NSNotification*)notification {
-  // TODO(https://crbug.com/829689): There should be no arguments to this mojo
-  // method.
-  return _appShimController->host()->FocusApp(
-      chrome::mojom::AppShimFocusType::kNormal, std::vector<base::FilePath>());
+  return _appShimController->host()->FocusApp();
 }
 
 - (BOOL)validateUserInterfaceItem:(id<NSValidatedUserInterfaceItem>)item {
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index 389a904..c34c3f4 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -1141,8 +1141,6 @@
     "performance_manager/observers/isolation_context_metrics.h",
     "performance_manager/observers/metrics_collector.cc",
     "performance_manager/observers/metrics_collector.h",
-    "performance_manager/performance_manager_features.cc",
-    "performance_manager/performance_manager_features.h",
     "performance_manager/persistence/site_data/exponential_moving_average.cc",
     "performance_manager/persistence/site_data/exponential_moving_average.h",
     "performance_manager/persistence/site_data/feature_usage.h",
@@ -1527,8 +1525,6 @@
     "resources_util.h",
     "search/instant_io_context.cc",
     "search/instant_io_context.h",
-    "search/ntp_icon_source.cc",
-    "search/ntp_icon_source.h",
     "search/search.cc",
     "search/search.h",
     "search/suggestions/suggestions_service_factory.cc",
@@ -2951,6 +2947,8 @@
       "updates/update_notification_client.h",
       "updates/update_notification_config.cc",
       "updates/update_notification_config.h",
+      "updates/update_notification_info.cc",
+      "updates/update_notification_info.h",
       "updates/update_notification_service.h",
       "updates/update_notification_service_bridge.cc",
       "updates/update_notification_service_bridge.h",
@@ -3456,6 +3454,8 @@
       "search/ntp_custom_background_enabled_policy_handler.h",
       "search/ntp_features.cc",
       "search/ntp_features.h",
+      "search/ntp_icon_source.cc",
+      "search/ntp_icon_source.h",
       "search/one_google_bar/one_google_bar_data.cc",
       "search/one_google_bar/one_google_bar_data.h",
       "search/one_google_bar/one_google_bar_loader.h",
diff --git a/chrome/browser/DEPS b/chrome/browser/DEPS
index d5c7842..b6f1558a 100644
--- a/chrome/browser/DEPS
+++ b/chrome/browser/DEPS
@@ -172,8 +172,9 @@
   "+components/payments/content",
   "+components/payments/core",
   "+components/performance_manager/public",
-  "+components/performance_manager/test_support",
+  "+components/performance_manager/embedder",
   "+components/performance_manager/performance_manager_tab_helper.h",
+  "+components/performance_manager/test_support",
   "+components/performance_manager/performance_manager_impl.h",
   "+components/pdf/browser",
   "+components/policy",
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index 52da3d2..d3f5c12e 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -3210,12 +3210,6 @@
          download::features::kUseDownloadOfflineContentProvider)},
 
 #if defined(OS_ANDROID)
-    {"download-rename", flag_descriptions::kDownloadRenameName,
-     flag_descriptions::kDownloadRenameDescription, kOsAndroid,
-     FEATURE_VALUE_TYPE(chrome::android::kDownloadRename)},
-#endif
-
-#if defined(OS_ANDROID)
     {"update-notification-scheduling-integration",
      flag_descriptions::kUpdateNotificationSchedulingIntegrationName,
      flag_descriptions::kUpdateNotificationSchedulingIntegrationDescription,
@@ -3224,13 +3218,6 @@
          chrome::android::kUpdateNotificationSchedulingIntegration)},
 #endif
 
-    {"download-resumption-without-strong-validators",
-     flag_descriptions::kDownloadResumptionWithoutStrongValidatorsName,
-     flag_descriptions::kDownloadResumptionWithoutStrongValidatorsDescription,
-     kOsAll,
-     FEATURE_VALUE_TYPE(
-         download::features::kAllowDownloadResumptionWithoutStrongValidators)},
-
     {"tab-hover-cards", flag_descriptions::kTabHoverCardsName,
      flag_descriptions::kTabHoverCardsDescription, kOsDesktop,
      FEATURE_WITH_PARAMS_VALUE_TYPE(features::kTabHoverCards,
@@ -3338,8 +3325,8 @@
      flag_descriptions::kUseXpsForPrintingFromPdfName,
      flag_descriptions::kUseXpsForPrintingFromPdfDescription, kOsWin,
      FEATURE_VALUE_TYPE(printing::features::kUseXpsForPrintingFromPdf)},
-#endif // defined(OS_WIN)
-#endif // BUILDFLAG(ENABLE_PRINTING)
+#endif  // defined(OS_WIN)
+#endif  // BUILDFLAG(ENABLE_PRINTING)
 
     {"autofill-profile-client-validation",
      flag_descriptions::kAutofillProfileClientValidationName,
@@ -4652,15 +4639,15 @@
     {"improved-cookie-controls", flag_descriptions::kImprovedCookieControlsName,
      flag_descriptions::kImprovedCookieControlsDescription, kOsDesktop,
      FEATURE_VALUE_TYPE(content_settings::kImprovedCookieControls)},
+#endif  // !defined(OS_ANDROID)
 
     {"improved-cookie-controls-for-third-party-cookie-blocking",
      flag_descriptions::kImprovedCookieControlsForThirdPartyCookieBlockingName,
      flag_descriptions::
          kImprovedCookieControlsForThirdPartyCookieBlockingDescription,
-     kOsDesktop,
+     kOsAll,
      FEATURE_VALUE_TYPE(
          content_settings::kImprovedCookieControlsForThirdPartyCookieBlocking)},
-#endif  // !defined(OS_ANDROID)
 
 #if !defined(OS_ANDROID)
     {"accessibility-internals-page-improvements",
diff --git a/chrome/browser/after_startup_task_utils.cc b/chrome/browser/after_startup_task_utils.cc
index 4062162..382f0d3 100644
--- a/chrome/browser/after_startup_task_utils.cc
+++ b/chrome/browser/after_startup_task_utils.cc
@@ -15,9 +15,9 @@
 #include "base/process/process.h"
 #include "base/rand_util.h"
 #include "base/sequence_checker.h"
+#include "base/sequenced_task_runner.h"
 #include "base/synchronization/atomic_flag.h"
 #include "base/task/post_task.h"
-#include "base/task_runner.h"
 #include "build/build_config.h"
 #include "content/public/browser/browser_task_traits.h"
 #include "content/public/browser/browser_thread.h"
@@ -45,13 +45,13 @@
 
 struct AfterStartupTask {
   AfterStartupTask(const base::Location& from_here,
-                   const scoped_refptr<base::TaskRunner>& task_runner,
+                   const scoped_refptr<base::SequencedTaskRunner>& task_runner,
                    base::OnceClosure task)
       : from_here(from_here), task_runner(task_runner), task(std::move(task)) {}
   ~AfterStartupTask() {}
 
   const base::Location from_here;
-  const scoped_refptr<base::TaskRunner> task_runner;
+  const scoped_refptr<base::SequencedTaskRunner> task_runner;
   base::OnceClosure task;
 };
 
@@ -82,7 +82,8 @@
   // Spread their execution over a brief time.
   constexpr int kMinDelaySec = 0;
   constexpr int kMaxDelaySec = 10;
-  scoped_refptr<base::TaskRunner> target_runner = queued_task->task_runner;
+  scoped_refptr<base::SequencedTaskRunner> target_runner =
+      queued_task->task_runner;
   base::Location from_here = queued_task->from_here;
   int delay_in_seconds = g_schedule_tasks_with_delay
                              ? base::RandInt(kMinDelaySec, kMaxDelaySec)
@@ -235,28 +236,6 @@
 
 }  // namespace
 
-AfterStartupTaskUtils::Runner::Runner(
-    scoped_refptr<base::TaskRunner> destination_runner)
-    : destination_runner_(std::move(destination_runner)) {
-  DCHECK(destination_runner_);
-}
-
-AfterStartupTaskUtils::Runner::~Runner() = default;
-
-bool AfterStartupTaskUtils::Runner::PostDelayedTask(
-    const base::Location& from_here,
-    base::OnceClosure task,
-    base::TimeDelta delay) {
-  DCHECK(delay.is_zero());
-  AfterStartupTaskUtils::PostTask(from_here, destination_runner_,
-                                  std::move(task));
-  return true;
-}
-
-bool AfterStartupTaskUtils::Runner::RunsTasksInCurrentSequence() const {
-  return destination_runner_->RunsTasksInCurrentSequence();
-}
-
 void AfterStartupTaskUtils::StartMonitoringStartup() {
   // The observer is self-deleting.
   (new StartupObserver)->Start();
@@ -264,7 +243,7 @@
 
 void AfterStartupTaskUtils::PostTask(
     const base::Location& from_here,
-    const scoped_refptr<base::TaskRunner>& destination_runner,
+    const scoped_refptr<base::SequencedTaskRunner>& destination_runner,
     base::OnceClosure task) {
   if (IsBrowserStartupComplete()) {
     destination_runner->PostTask(from_here, std::move(task));
diff --git a/chrome/browser/after_startup_task_utils.h b/chrome/browser/after_startup_task_utils.h
index dc311e6..9d8d1cc 100644
--- a/chrome/browser/after_startup_task_utils.h
+++ b/chrome/browser/after_startup_task_utils.h
@@ -7,37 +7,20 @@
 
 #include "base/bind.h"
 #include "base/callback.h"
+#include "base/location.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
-#include "base/task_runner.h"
 
 namespace android {
 class AfterStartupTaskUtilsJNI;
 }
 
+namespace base {
+class SequencedTaskRunner;
+}
+
 class AfterStartupTaskUtils {
  public:
-  // A helper TaskRunner which merely forwards to
-  // AfterStartupTaskUtils::PostTask(). Doesn't support tasks with a non-zero
-  // delay.
-  class Runner : public base::TaskRunner {
-   public:
-    explicit Runner(scoped_refptr<base::TaskRunner> destination_runner);
-
-    // Overrides from base::TaskRunner:
-    bool PostDelayedTask(const base::Location& from_here,
-                         base::OnceClosure task,
-                         base::TimeDelta delay) override;
-    bool RunsTasksInCurrentSequence() const override;
-
-   private:
-    ~Runner() override;
-
-    const scoped_refptr<base::TaskRunner> destination_runner_;
-
-    DISALLOW_COPY_AND_ASSIGN(Runner);
-  };
-
   // Observes startup and when complete runs tasks that have accrued.
   static void StartMonitoringStartup();
 
@@ -46,7 +29,7 @@
   // Note: see browser_thread.h
   static void PostTask(
       const base::Location& from_here,
-      const scoped_refptr<base::TaskRunner>& destination_runner,
+      const scoped_refptr<base::SequencedTaskRunner>& destination_runner,
       base::OnceClosure task);
 
   // Returns true if browser startup is complete. Only use this on a one-off
diff --git a/chrome/browser/after_startup_task_utils_unittest.cc b/chrome/browser/after_startup_task_utils_unittest.cc
index 1bec272..d872340 100644
--- a/chrome/browser/after_startup_task_utils_unittest.cc
+++ b/chrome/browser/after_startup_task_utils_unittest.cc
@@ -11,6 +11,7 @@
 #include "base/bind_helpers.h"
 #include "base/memory/ref_counted.h"
 #include "base/run_loop.h"
+#include "base/sequenced_task_runner.h"
 #include "base/task/post_task.h"
 #include "base/task_runner_util.h"
 #include "content/public/browser/browser_task_traits.h"
@@ -20,9 +21,9 @@
 
 namespace {
 
-class WrappedTaskRunner : public base::TaskRunner {
+class WrappedTaskRunner : public base::SequencedTaskRunner {
  public:
-  explicit WrappedTaskRunner(scoped_refptr<TaskRunner> real_runner)
+  explicit WrappedTaskRunner(scoped_refptr<SequencedTaskRunner> real_runner)
       : real_task_runner_(std::move(real_runner)) {}
 
   bool PostDelayedTask(const base::Location& from_here,
@@ -36,11 +37,21 @@
         base::TimeDelta());  // Squash all delays so our tests complete asap.
   }
 
+  bool PostNonNestableDelayedTask(const base::Location& from_here,
+                                  base::OnceClosure task,
+                                  base::TimeDelta delay) override {
+    // Not implemented.
+    NOTREACHED();
+    return false;
+  }
+
   bool RunsTasksInCurrentSequence() const override {
     return real_task_runner_->RunsTasksInCurrentSequence();
   }
 
-  base::TaskRunner* real_runner() const { return real_task_runner_.get(); }
+  base::SequencedTaskRunner* real_runner() const {
+    return real_task_runner_.get();
+  }
 
   int total_task_count() const { return posted_task_count_ + ran_task_count_; }
   int posted_task_count() const { return posted_task_count_; }
@@ -59,7 +70,7 @@
     std::move(task).Run();
   }
 
-  scoped_refptr<TaskRunner> real_task_runner_;
+  scoped_refptr<base::SequencedTaskRunner> real_task_runner_;
   int posted_task_count_ = 0;
   int ran_task_count_ = 0;
 };
@@ -92,7 +103,7 @@
   // Hop to the background sequence and call PostAfterStartupTask.
   void PostAfterStartupTaskFromBackgroundSequence(
       const base::Location& from_here,
-      scoped_refptr<base::TaskRunner> task_runner,
+      scoped_refptr<base::SequencedTaskRunner> task_runner,
       base::OnceClosure task) {
     base::RunLoop run_loop;
     background_sequence_->real_runner()->PostTaskAndReply(
@@ -112,7 +123,7 @@
     run_loop.Run();
   }
 
-  static void VerifyExpectedSequence(base::TaskRunner* task_runner) {
+  static void VerifyExpectedSequence(base::SequencedTaskRunner* task_runner) {
     EXPECT_TRUE(task_runner->RunsTasksInCurrentSequence());
   }
 
@@ -197,29 +208,3 @@
   EXPECT_EQ(2, background_sequence_->ran_task_count());
   EXPECT_EQ(2, ui_thread_->ran_task_count());
 }
-
-// Verify that posting to an AfterStartupTaskUtils::Runner bound to
-// |background_sequence_| results in the same behavior as posting via
-// AfterStartupTaskUtils::PostTask(..., background_sequence_, ...).
-TEST_F(AfterStartupTaskTest, AfterStartupTaskUtilsRunner) {
-  scoped_refptr<base::TaskRunner> after_startup_runner =
-      base::MakeRefCounted<AfterStartupTaskUtils::Runner>(background_sequence_);
-
-  EXPECT_FALSE(AfterStartupTaskUtils::IsBrowserStartupComplete());
-  after_startup_runner->PostTask(
-      FROM_HERE, base::BindOnce(&AfterStartupTaskTest::VerifyExpectedSequence,
-                                base::RetainedRef(background_sequence_)));
-
-  base::RunLoop().RunUntilIdle();
-  EXPECT_FALSE(AfterStartupTaskUtils::IsBrowserStartupComplete());
-  EXPECT_EQ(0, background_sequence_->total_task_count());
-
-  AfterStartupTaskUtils::SetBrowserStartupIsCompleteForTesting();
-  EXPECT_EQ(1, background_sequence_->posted_task_count());
-
-  FlushBackgroundSequence();
-  base::RunLoop().RunUntilIdle();
-  EXPECT_EQ(1, background_sequence_->ran_task_count());
-
-  EXPECT_EQ(0, ui_thread_->total_task_count());
-}
diff --git a/chrome/browser/android/autofill_assistant/generic_ui_controller_android.cc b/chrome/browser/android/autofill_assistant/generic_ui_controller_android.cc
index 8d8301f..08d6a36 100644
--- a/chrome/browser/android/autofill_assistant/generic_ui_controller_android.cc
+++ b/chrome/browser/android/autofill_assistant/generic_ui_controller_android.cc
@@ -175,8 +175,11 @@
 
   if (proto.view_case() == ViewProto::kViewContainer) {
     for (const auto& child : proto.view_container().views()) {
-      Java_AssistantViewFactory_addViewToContainer(
-          env, jview, CreateJavaView(env, jcontext, jdelegate, child, views));
+      auto jchild = CreateJavaView(env, jcontext, jdelegate, child, views);
+      if (!jchild) {
+        return nullptr;
+      }
+      Java_AssistantViewFactory_addViewToContainer(env, jview, jchild);
     }
   }
 
diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browser/android/bookmarks/bookmark_bridge.cc
index e50a206..bd32c8d 100644
--- a/chrome/browser/android/bookmarks/bookmark_bridge.cc
+++ b/chrome/browser/android/bookmarks/bookmark_bridge.cc
@@ -521,9 +521,10 @@
     nodes.pop();
 
     for (const auto& child : node->children()) {
-      // Empty title means deleted partner bookmarks or folders. See
-      // PartnerBookmarksShim::RemoveBookmark().
-      if (GetTitle(child.get()).empty())
+      // Do not count deleted partner bookmarks or folders, which will have
+      // empty titles. See PartnerBookmarkShim::RemoveBookmark().
+      if (partner_bookmarks_shim_->IsPartnerBookmark(child.get()) &&
+          partner_bookmarks_shim_->GetTitle(child.get()).empty())
         continue;
       if (child->is_folder())
         nodes.push(child.get());
diff --git a/chrome/browser/android/chrome_feature_list.cc b/chrome/browser/android/chrome_feature_list.cc
index 9f181f7..9165076 100644
--- a/chrome/browser/android/chrome_feature_list.cc
+++ b/chrome/browser/android/chrome_feature_list.cc
@@ -20,6 +20,7 @@
 #include "components/autofill/core/common/autofill_payments_features.h"
 #include "components/autofill_assistant/browser/features.h"
 #include "components/browser_sync/browser_sync_switches.h"
+#include "components/content_settings/core/common/features.h"
 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_features.h"
 #include "components/download/public/common/download_features.h"
 #include "components/feed/feed_feature_list.h"
@@ -65,6 +66,7 @@
     &autofill_assistant::features::kAutofillAssistant,
     &autofill_assistant::features::kAutofillAssistantDirectActions,
     &autofill::features::kAutofillTouchToFill,
+    &content_settings::kImprovedCookieControlsForThirdPartyCookieBlocking,
     &download::features::kDownloadAutoResumptionNative,
     &download::features::kUseDownloadOfflineContentProvider,
     &features::kAppNotificationStatusMessaging,
diff --git a/chrome/browser/android/customtabs/detached_resource_request.cc b/chrome/browser/android/customtabs/detached_resource_request.cc
index 8fe8a303..df67702 100644
--- a/chrome/browser/android/customtabs/detached_resource_request.cc
+++ b/chrome/browser/android/customtabs/detached_resource_request.cc
@@ -82,7 +82,8 @@
   resource_request->referrer = net::URLRequestJob::ComputeReferrerForPolicy(
       referrer_policy, site_for_cookies_, url_);
   resource_request->referrer_policy = referrer_policy;
-  resource_request->site_for_cookies = site_for_cookies_;
+  resource_request->site_for_cookies =
+      net::SiteForCookies::FromUrl(site_for_cookies_);
 
   url::Origin site_for_cookies_origin = url::Origin::Create(site_for_cookies_);
   resource_request->request_initiator = site_for_cookies_origin;
diff --git a/chrome/browser/android/explore_sites/ntp_json_fetcher_unittest.cc b/chrome/browser/android/explore_sites/ntp_json_fetcher_unittest.cc
index 7727396a..efdf5db 100644
--- a/chrome/browser/android/explore_sites/ntp_json_fetcher_unittest.cc
+++ b/chrome/browser/android/explore_sites/ntp_json_fetcher_unittest.cc
@@ -9,7 +9,6 @@
 #include "chrome/browser/android/chrome_feature_list.h"
 #include "chrome/test/base/testing_profile.h"
 #include "content/public/test/browser_task_environment.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "content/public/test/test_utils.h"
 #include "net/test/embedded_test_server/controllable_http_response.h"
 #include "net/test/embedded_test_server/embedded_test_server.h"
@@ -117,9 +116,6 @@
 
   // This allows us to override the URL via finch params.
   base::test::ScopedFeatureList scoped_feature_list_;
-
-  // This allows the NTPJsonFetcher to grab the JSON parsing service.
-  content::TestServiceManagerContext smc;
 };
 
 // TODO(https://crbug.com/854250): Fix the tests. They are disabled because
diff --git a/chrome/browser/android/preferences/website_preference_bridge.cc b/chrome/browser/android/preferences/website_preference_bridge.cc
index ef4bf97..6cfdecca67 100644
--- a/chrome/browser/android/preferences/website_preference_bridge.cc
+++ b/chrome/browser/android/preferences/website_preference_bridge.cc
@@ -1002,13 +1002,20 @@
 static void JNI_WebsitePreferenceBridge_SetContentSettingForPattern(
     JNIEnv* env,
     int content_settings_type,
-    const JavaParamRef<jstring>& pattern,
+    const JavaParamRef<jstring>& primary_pattern,
+    const JavaParamRef<jstring>& secondary_pattern,
     int setting) {
+  std::string primary_pattern_string =
+      ConvertJavaStringToUTF8(env, primary_pattern);
+  std::string secondary_pattern_string =
+      ConvertJavaStringToUTF8(env, secondary_pattern);
   HostContentSettingsMap* host_content_settings_map =
       HostContentSettingsMapFactory::GetForProfile(GetOriginalProfile());
   host_content_settings_map->SetContentSettingCustomScope(
-      ContentSettingsPattern::FromString(ConvertJavaStringToUTF8(env, pattern)),
-      ContentSettingsPattern::Wildcard(),
+      ContentSettingsPattern::FromString(primary_pattern_string),
+      secondary_pattern_string.empty()
+          ? ContentSettingsPattern::Wildcard()
+          : ContentSettingsPattern::FromString(secondary_pattern_string),
       static_cast<ContentSettingsType>(content_settings_type), std::string(),
       static_cast<ContentSetting>(setting));
 }
@@ -1026,6 +1033,7 @@
     Java_WebsitePreferenceBridge_addContentSettingExceptionToList(
         env, list, content_settings_type,
         ConvertUTF8ToJavaString(env, entries[i].primary_pattern.ToString()),
+        ConvertUTF8ToJavaString(env, entries[i].secondary_pattern.ToString()),
         entries[i].GetContentSetting(),
         ConvertUTF8ToJavaString(env, entries[i].source));
   }
diff --git a/chrome/browser/android/webapps/add_to_homescreen_mediator.cc b/chrome/browser/android/webapps/add_to_homescreen_mediator.cc
index a4e5c3b2..465426c 100644
--- a/chrome/browser/android/webapps/add_to_homescreen_mediator.cc
+++ b/chrome/browser/android/webapps/add_to_homescreen_mediator.cc
@@ -101,6 +101,11 @@
 }
 
 void AddToHomescreenMediator::OnUiDismissed(JNIEnv* env) {
+  if (!params_) {
+    delete this;
+    return;
+  }
+
   event_callback_.Run(AddToHomescreenInstaller::Event::UI_DISMISSED, *params_);
   delete this;
 }
diff --git a/chrome/browser/apps/app_shim/app_shim_host_mac.cc b/chrome/browser/apps/app_shim/app_shim_host_mac.cc
index c13891d..828db53 100644
--- a/chrome/browser/apps/app_shim/app_shim_host_mac.cc
+++ b/chrome/browser/apps/app_shim/app_shim_host_mac.cc
@@ -138,18 +138,19 @@
 
   if (bootstrap_) {
     // If there is a connected app shim process, focus the app windows.
-    client_->OnShimFocus(this, chrome::mojom::AppShimFocusType::kNormal,
-                         std::vector<base::FilePath>());
+    client_->OnShimFocus(this);
   } else {
     // Otherwise, attempt to launch whatever app shims we find.
     LaunchShimInternal(false /* recreate_shims */);
   }
 }
 
-void AppShimHost::FocusApp(chrome::mojom::AppShimFocusType focus_type,
-                           const std::vector<base::FilePath>& files) {
-  DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
-  client_->OnShimFocus(this, focus_type, files);
+void AppShimHost::FocusApp() {
+  client_->OnShimFocus(this);
+}
+
+void AppShimHost::FilesOpened(const std::vector<base::FilePath>& files) {
+  client_->OnShimOpenedFiles(this, files);
 }
 
 void AppShimHost::ProfileSelectedFromMenu(const base::FilePath& profile_path) {
diff --git a/chrome/browser/apps/app_shim/app_shim_host_mac.h b/chrome/browser/apps/app_shim/app_shim_host_mac.h
index 759adf79..450797ed 100644
--- a/chrome/browser/apps/app_shim/app_shim_host_mac.h
+++ b/chrome/browser/apps/app_shim/app_shim_host_mac.h
@@ -51,11 +51,13 @@
     virtual void OnShimProcessDisconnected(AppShimHost* host) = 0;
 
     // Invoked by the shim host when the shim process receives a focus event.
-    // |files|, if non-empty, holds an array of files dragged onto the app
-    // bundle or dock icon.
-    virtual void OnShimFocus(AppShimHost* host,
-                             chrome::mojom::AppShimFocusType focus_type,
-                             const std::vector<base::FilePath>& files) = 0;
+    virtual void OnShimFocus(AppShimHost* host) = 0;
+
+    // Invoked by the shim host when the shim opens a file, e.g, by dragging
+    // a file onto the dock icon.
+    virtual void OnShimOpenedFiles(
+        AppShimHost* host,
+        const std::vector<base::FilePath>& files) = 0;
 
     // Invoked when a profile is selected from the menu bar.
     virtual void OnShimSelectedProfile(AppShimHost* host,
@@ -109,8 +111,8 @@
   void OnShimProcessTerminated(bool recreate_shims_requested);
 
   // chrome::mojom::AppShimHost.
-  void FocusApp(chrome::mojom::AppShimFocusType focus_type,
-                const std::vector<base::FilePath>& files) override;
+  void FocusApp() override;
+  void FilesOpened(const std::vector<base::FilePath>& files) override;
   void ProfileSelectedFromMenu(const base::FilePath& profile_path) override;
 
   // Weak, owns |this|.
diff --git a/chrome/browser/apps/app_shim/app_shim_host_mac_unittest.cc b/chrome/browser/apps/app_shim/app_shim_host_mac_unittest.cc
index 6796ed3..dd20681f 100644
--- a/chrome/browser/apps/app_shim/app_shim_host_mac_unittest.cc
+++ b/chrome/browser/apps/app_shim/app_shim_host_mac_unittest.cc
@@ -172,11 +172,9 @@
     host_ = nullptr;
     ++close_count_;
   }
-  void OnShimFocus(AppShimHost* host,
-                   chrome::mojom::AppShimFocusType focus_type,
-                   const std::vector<base::FilePath>& file) override {
-    ++focus_count_;
-  }
+  void OnShimFocus(AppShimHost* host) override { ++focus_count_; }
+  void OnShimOpenedFiles(AppShimHost* host,
+                         const std::vector<base::FilePath>& files) override {}
   void OnShimSelectedProfile(AppShimHost* host,
                              const base::FilePath& profile_path) override {}
 
@@ -220,8 +218,7 @@
   EXPECT_EQ(0, focus_count_);
   EXPECT_EQ(0, close_count_);
 
-  GetMojoHost()->FocusApp(chrome::mojom::AppShimFocusType::kNormal,
-                          std::vector<base::FilePath>());
+  GetMojoHost()->FocusApp();
   RunUntilIdle();
   EXPECT_EQ(1, focus_count_);
 
diff --git a/chrome/browser/apps/app_shim/app_shim_interactive_uitest_mac.mm b/chrome/browser/apps/app_shim/app_shim_interactive_uitest_mac.mm
index ad7797d..b1ee87d2 100644
--- a/chrome/browser/apps/app_shim/app_shim_interactive_uitest_mac.mm
+++ b/chrome/browser/apps/app_shim/app_shim_interactive_uitest_mac.mm
@@ -119,9 +119,9 @@
     if (run_loop_.get())
       run_loop_->Quit();
   }
-  void OnShimFocus(AppShimHost* host,
-                   chrome::mojom::AppShimFocusType focus_type,
-                   const std::vector<base::FilePath>& files) override {}
+  void OnShimFocus(AppShimHost* host) override {}
+  void OnShimOpenedFiles(AppShimHost* host,
+                         const std::vector<base::FilePath>& files) override {}
   void OnShimSelectedProfile(AppShimHost* host,
                              const base::FilePath& profile_path) override {}
 
diff --git a/chrome/browser/apps/app_shim/app_shim_listener_browsertest_mac.mm b/chrome/browser/apps/app_shim/app_shim_listener_browsertest_mac.mm
index 52e01b9..34954e42 100644
--- a/chrome/browser/apps/app_shim/app_shim_listener_browsertest_mac.mm
+++ b/chrome/browser/apps/app_shim/app_shim_listener_browsertest_mac.mm
@@ -136,8 +136,8 @@
 
  private:
   // chrome::mojom::AppShimHost.
-  void FocusApp(chrome::mojom::AppShimFocusType focus_type,
-                const std::vector<base::FilePath>& files) override {}
+  void FocusApp() override {}
+  void FilesOpened(const std::vector<base::FilePath>& files) override {}
   void ProfileSelectedFromMenu(const base::FilePath& profile_path) override {}
 
   std::unique_ptr<base::RunLoop> runner_;
diff --git a/chrome/browser/apps/app_shim/extension_app_shim_handler_mac.cc b/chrome/browser/apps/app_shim/extension_app_shim_handler_mac.cc
index 1f968b2..22deaf5 100644
--- a/chrome/browser/apps/app_shim/extension_app_shim_handler_mac.cc
+++ b/chrome/browser/apps/app_shim/extension_app_shim_handler_mac.cc
@@ -360,10 +360,11 @@
   extensions::RecordAppLaunchType(
       extension_misc::APP_LAUNCH_CMD_LINE_APP, extension->GetType());
   if (extension->is_hosted_app()) {
-    apps::LaunchService::Get(profile)->OpenApplication(
-        CreateAppLaunchParamsUserContainer(
-            profile, extension, WindowOpenDisposition::NEW_FOREGROUND_TAB,
-            apps::mojom::AppLaunchSource::kSourceCommandLine));
+    auto params = CreateAppLaunchParamsUserContainer(
+        profile, extension, WindowOpenDisposition::NEW_FOREGROUND_TAB,
+        apps::mojom::AppLaunchSource::kSourceCommandLine);
+    params.launch_files = files;
+    apps::LaunchService::Get(profile)->OpenApplication(params);
     return;
   }
   if (files.empty()) {
@@ -762,13 +763,7 @@
     // If another app shim process has already connected to this (profile,
     // app_id) pair, then focus the windows for the existing process. Note
     // that this only does anything for non-RemoveCocoa apps.
-    OnShimFocus(
-        profile_state->GetHost(),
-        bootstrap->GetLaunchType() == chrome::mojom::AppShimLaunchType::kNormal
-            ? chrome::mojom::AppShimFocusType::kReopen
-            : chrome::mojom::AppShimFocusType::kNormal,
-        bootstrap->GetLaunchFiles());
-
+    OnShimFocus(profile_state->GetHost());
     bootstrap->OnFailedToConnectToHost(
         chrome::mojom::AppShimLaunchResult::kDuplicateHost);
     return;
@@ -934,10 +929,7 @@
   }
 }
 
-void ExtensionAppShimHandler::OnShimFocus(
-    AppShimHost* host,
-    chrome::mojom::AppShimFocusType focus_type,
-    const std::vector<base::FilePath>& files) {
+void ExtensionAppShimHandler::OnShimFocus(AppShimHost* host) {
   // This path is only for legacy apps (which are perforce single-profile).
   if (host->UsesRemoteViews())
     return;
@@ -951,16 +943,35 @@
   }
 
   AppWindowList windows = delegate_->GetWindows(profile, host->GetAppId());
-  for (auto it = windows.rbegin(); it != windows.rend(); ++it) {
-    if (*it)
-      (*it)->GetBaseWindow()->Show();
-  }
-
-  if (focus_type == chrome::mojom::AppShimFocusType::kNormal ||
-      (focus_type == chrome::mojom::AppShimFocusType::kReopen &&
-       !windows.empty())) {
+  if (!windows.empty()) {
+    for (auto it = windows.rbegin(); it != windows.rend(); ++it) {
+      if (*it)
+        (*it)->GetBaseWindow()->Show();
+    }
     return;
   }
+
+  delegate_->LaunchApp(profile, extension, std::vector<base::FilePath>());
+}
+
+void ExtensionAppShimHandler::OnShimOpenedFiles(
+    AppShimHost* host,
+    const std::vector<base::FilePath>& files) {
+  auto found_app = apps_.find(host->GetAppId());
+  DCHECK(found_app != apps_.end());
+  AppState* app_state = found_app->second.get();
+  Profile* profile = nullptr;
+  if (app_state->IsMultiProfile()) {
+    // TODO(https://crbug.com/829689): Open files using the most-recently-used
+    // profile. This just grabs one at random.
+    profile = app_state->profiles.begin()->first;
+  } else {
+    profile = delegate_->ProfileForPath(host->GetProfilePath());
+  }
+  DCHECK(profile);
+  const Extension* extension =
+      delegate_->MaybeGetAppExtension(profile, host->GetAppId());
+  DCHECK(extension);
   delegate_->LaunchApp(profile, extension, files);
 }
 
diff --git a/chrome/browser/apps/app_shim/extension_app_shim_handler_mac.h b/chrome/browser/apps/app_shim/extension_app_shim_handler_mac.h
index 6554b3d..bda9399 100644
--- a/chrome/browser/apps/app_shim/extension_app_shim_handler_mac.h
+++ b/chrome/browser/apps/app_shim/extension_app_shim_handler_mac.h
@@ -162,9 +162,9 @@
       base::OnceCallback<void(base::Process)> launched_callback,
       base::OnceClosure terminated_callback) override;
   void OnShimProcessDisconnected(AppShimHost* host) override;
-  void OnShimFocus(AppShimHost* host,
-                   chrome::mojom::AppShimFocusType focus_type,
-                   const std::vector<base::FilePath>& files) override;
+  void OnShimFocus(AppShimHost* host) override;
+  void OnShimOpenedFiles(AppShimHost* host,
+                         const std::vector<base::FilePath>& files) override;
   void OnShimSelectedProfile(AppShimHost* host,
                              const base::FilePath& profile_path) override;
 
diff --git a/chrome/browser/apps/app_shim/extension_app_shim_handler_mac_unittest.cc b/chrome/browser/apps/app_shim/extension_app_shim_handler_mac_unittest.cc
index 7a37163e..33a459a4 100644
--- a/chrome/browser/apps/app_shim/extension_app_shim_handler_mac_unittest.cc
+++ b/chrome/browser/apps/app_shim/extension_app_shim_handler_mac_unittest.cc
@@ -150,15 +150,10 @@
   }
   virtual ~TestingExtensionAppShimHandler() {}
 
-  MOCK_METHOD3(OnShimFocus,
-               void(AppShimHost* host,
-                    chrome::mojom::AppShimFocusType,
-                    const std::vector<base::FilePath>& files));
+  MOCK_METHOD1(OnShimFocus, void(AppShimHost* host));
 
-  void RealOnShimFocus(AppShimHost* host,
-                       chrome::mojom::AppShimFocusType focus_type,
-                       const std::vector<base::FilePath>& files) {
-    ExtensionAppShimHandler::OnShimFocus(host, focus_type, files);
+  void RealOnShimFocus(AppShimHost* host) {
+    ExtensionAppShimHandler::OnShimFocus(host);
   }
 
   void SetProfileMenuItems(
@@ -290,6 +285,7 @@
     return test_weak_factory_.GetWeakPtr();
   }
 
+  using AppShimHost::FilesOpened;
   using AppShimHost::ProfileSelectedFromMenu;
 
   std::unique_ptr<TestAppShim> test_app_shim_;
@@ -492,23 +488,17 @@
     base::WeakPtr<TestHost> host = host_unique->GetWeakPtr();
     NormalLaunch(bootstrap, std::move(host_unique));
     EXPECT_EQ(host.get(), handler_->FindHost(profile, host->GetAppId()));
-    EXPECT_CALL(
-        *handler_,
-        OnShimFocus(host.get(), chrome::mojom::AppShimFocusType::kNormal, _));
+    EXPECT_CALL(*handler_, OnShimFocus(host.get()));
     handler_->OnAppActivated(profile, host->GetAppId());
     EXPECT_TRUE(host->did_connect_to_host());
   }
 
   // Simulates a focus request coming from a running app shim.
   void ShimNormalFocus(TestHost* host) {
-    EXPECT_CALL(*handler_,
-                OnShimFocus(host, chrome::mojom::AppShimFocusType::kNormal, _))
+    EXPECT_CALL(*handler_, OnShimFocus(host))
         .WillOnce(Invoke(handler_.get(),
                          &TestingExtensionAppShimHandler::RealOnShimFocus));
-
-    const std::vector<base::FilePath> no_files;
-    handler_->OnShimFocus(host, chrome::mojom::AppShimFocusType::kNormal,
-                          no_files);
+    handler_->OnShimFocus(host);
   }
 
   content::BrowserTaskEnvironment task_environment_;
@@ -661,18 +651,14 @@
 
   // Activation when there is a registered shim finishes launch with success and
   // focuses the app.
-  EXPECT_CALL(
-      *handler_,
-      OnShimFocus(host_aa_.get(), chrome::mojom::AppShimFocusType::kNormal, _));
+  EXPECT_CALL(*handler_, OnShimFocus(host_aa_.get()));
   handler_->OnAppActivated(&profile_a_, kTestAppIdA);
   EXPECT_EQ(chrome::mojom::AppShimLaunchResult::kSuccess,
             *bootstrap_aa_result_);
 
   // Starting and closing a second host just focuses the original host of the
   // app.
-  EXPECT_CALL(*handler_,
-              OnShimFocus(host_aa_.get(),
-                          chrome::mojom::AppShimFocusType::kReopen, some_file));
+  EXPECT_CALL(*handler_, OnShimFocus(host_aa_.get()));
 
   DoShimLaunch(bootstrap_aa_duplicate_, std::move(host_aa_duplicate_unique_),
                chrome::mojom::AppShimLaunchType::kNormal, some_file);
@@ -704,28 +690,28 @@
             *bootstrap_aa_result_);
   EXPECT_EQ(host_aa_.get(), handler_->FindHost(&profile_a_, kTestAppIdA));
 
-  // Return no app windows for OnShimFocus.
+  // Return no app windows for OnShimFocus. This will result in a launch call.
   AppWindowList app_window_list;
   EXPECT_CALL(*delegate_, GetWindows(&profile_a_, kTestAppIdA))
       .WillRepeatedly(Return(app_window_list));
+  EXPECT_CALL(*delegate_, LaunchApp(&profile_a_, extension_a_.get(), _))
+      .Times(1);
+  ShimNormalFocus(host_aa_.get());
 
-  // Non-reopen focus does nothing.
+  // Return one window. This should do nothing.
+  app_window_list.push_back(static_cast<extensions::AppWindow*>(nullptr));
+  EXPECT_CALL(*delegate_, GetWindows(&profile_a_, kTestAppIdA))
+      .WillRepeatedly(Return(app_window_list));
   EXPECT_CALL(*delegate_,
               LaunchApp(&profile_a_, extension_a_.get(), _))
       .Times(0);
   ShimNormalFocus(host_aa_.get());
 
-  // Reopen focus launches the app.
-  EXPECT_CALL(
-      *handler_,
-      OnShimFocus(host_aa_.get(), chrome::mojom::AppShimFocusType::kReopen, _))
-      .WillOnce(Invoke(handler_.get(),
-                       &TestingExtensionAppShimHandler::RealOnShimFocus));
+  // Open files should trigger a launch with those files.
   std::vector<base::FilePath> some_file(1, base::FilePath("some_file"));
   EXPECT_CALL(*delegate_,
               LaunchApp(&profile_a_, extension_a_.get(), some_file));
-  handler_->OnShimFocus(host_aa_.get(),
-                        chrome::mojom::AppShimFocusType::kReopen, some_file);
+  host_aa_->FilesOpened(some_file);
 
   // Process disconnect will cause the host to be deleted.
   handler_->OnShimProcessDisconnected(host_aa_.get());
@@ -933,10 +919,7 @@
 
   // Launch the app for this host. It should find the pre-existing host, and the
   // pre-existing host's launch result should be set.
-  EXPECT_CALL(
-      *handler_,
-      OnShimFocus(host_aa_.get(), chrome::mojom::AppShimFocusType::kNormal, _))
-      .Times(1);
+  EXPECT_CALL(*handler_, OnShimFocus(host_aa_.get())).Times(1);
   EXPECT_CALL(*delegate_, LaunchApp(&profile_a_, extension_a_.get(), _))
       .Times(0);
   EXPECT_FALSE(host_aa_->did_connect_to_host());
diff --git a/chrome/browser/bad_message.h b/chrome/browser/bad_message.h
index 96bed3f8..10a5dd82 100644
--- a/chrome/browser/bad_message.h
+++ b/chrome/browser/bad_message.h
@@ -24,6 +24,7 @@
   WRLHH_LOGGING_STOPPED_BAD_STATE = 0,
   PPH_EXTRA_PREVIEW_MESSAGE = 1,
   PMF_INVALID_INITIATOR_ORIGIN = 2,
+  RFH_INVALID_WEB_UI_CONTROLLER = 3,
 
   // Please add new elements here. The naming convention is abbreviated class
   // name (e.g. RenderFrameHost becomes RFH) plus a unique description of the
diff --git a/chrome/browser/chrome_browser_interface_binders.cc b/chrome/browser/chrome_browser_interface_binders.cc
index 19a85ab6..76ba14f 100644
--- a/chrome/browser/chrome_browser_interface_binders.cc
+++ b/chrome/browser/chrome_browser_interface_binders.cc
@@ -10,13 +10,22 @@
 #include "build/build_config.h"
 #include "chrome/browser/accessibility/accessibility_labels_service.h"
 #include "chrome/browser/accessibility/accessibility_labels_service_factory.h"
+#include "chrome/browser/bad_message.h"
 #include "chrome/browser/dom_distiller/dom_distiller_service_factory.h"
+#include "chrome/browser/engagement/site_engagement_details.mojom.h"
 #include "chrome/browser/language/translate_frame_binder.h"
+#include "chrome/browser/media/media_engagement_score_details.mojom.h"
 #include "chrome/browser/navigation_predictor/navigation_predictor.h"
 #include "chrome/browser/predictors/network_hints_handler_impl.h"
 #include "chrome/browser/prerender/prerender_contents.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ssl/insecure_sensitive_input_driver_factory.h"
+#include "chrome/browser/ui/webui/bluetooth_internals/bluetooth_internals.mojom.h"
+#include "chrome/browser/ui/webui/bluetooth_internals/bluetooth_internals_ui.h"
+#include "chrome/browser/ui/webui/engagement/site_engagement_ui.h"
+#include "chrome/browser/ui/webui/interventions_internals/interventions_internals.mojom.h"
+#include "chrome/browser/ui/webui/interventions_internals/interventions_internals_ui.h"
+#include "chrome/browser/ui/webui/media/media_engagement_ui.h"
 #include "chrome/common/prerender.mojom.h"
 #include "components/dom_distiller/content/browser/distillability_driver.h"
 #include "components/dom_distiller/content/browser/distiller_javascript_service_impl.h"
@@ -29,7 +38,9 @@
 #include "content/public/browser/browser_context.h"
 #include "content/public/browser/render_frame_host.h"
 #include "content/public/browser/render_process_host.h"
+#include "content/public/browser/web_ui_controller.h"
 #include "content/public/common/content_features.h"
+#include "content/public/common/url_constants.h"
 #include "extensions/buildflags/buildflags.h"
 #include "mojo/public/cpp/bindings/pending_receiver.h"
 #include "services/image_annotation/public/mojom/image_annotation.mojom.h"
@@ -48,6 +59,8 @@
 #include "chrome/browser/android/contextualsearch/contextual_search_observer.h"
 #include "chrome/browser/android/dom_distiller/distiller_ui_handle_android.h"
 #include "chrome/browser/offline_pages/android/offline_page_auto_fetcher.h"
+#include "chrome/browser/ui/webui/explore_sites_internals/explore_sites_internals.mojom.h"
+#include "chrome/browser/ui/webui/explore_sites_internals/explore_sites_internals_ui.h"
 #include "chrome/common/offline_page_auto_fetcher.mojom.h"
 #include "components/contextual_search/content/browser/contextual_search_js_api_service_impl.h"
 #include "components/contextual_search/content/common/mojom/contextual_search_js_api_service.mojom.h"
@@ -61,6 +74,24 @@
 #else
 #include "chrome/browser/badging/badge_manager.h"
 #include "chrome/browser/payments/payment_request_factory.h"
+#include "chrome/browser/ui/webui/downloads/downloads.mojom.h"
+#include "chrome/browser/ui/webui/downloads/downloads_ui.h"
+#endif
+
+#if defined(OS_CHROMEOS)
+#include "chrome/browser/ui/webui/chromeos/add_supervision/add_supervision.mojom.h"
+#include "chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_ui.h"
+#endif
+
+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
+    defined(OS_CHROMEOS)
+#include "chrome/browser/ui/webui/discards/discards.mojom.h"
+#include "chrome/browser/ui/webui/discards/discards_ui.h"
+#endif
+
+#if defined(OS_CHROMEOS)
+#include "chrome/browser/ui/webui/chromeos/machine_learning/machine_learning_internals_page_handler.mojom.h"
+#include "chrome/browser/ui/webui/chromeos/machine_learning/machine_learning_internals_ui.h"
 #endif
 
 #if BUILDFLAG(ENABLE_EXTENSIONS)
@@ -72,6 +103,43 @@
 namespace chrome {
 namespace internal {
 
+namespace {
+
+// Registers a binder in |map| that binds |Interface| iff the RenderFrameHost
+// has a WebUIController of type |WebUIControllerSubclass|.
+// TODO(calamity): Allow binding of N WebUIControllers to M Interfaces.
+template <typename WebUIControllerSubclass, typename Interface>
+void RegisterWebUIControllerInterfaceBinder(
+    service_manager::BinderMapWithContext<content::RenderFrameHost*>* map) {
+  map->Add<Interface>(
+      base::BindRepeating([](content::RenderFrameHost* host,
+                             mojo::PendingReceiver<Interface> receiver) {
+        auto* contents = content::WebContents::FromRenderFrameHost(host);
+        content::WebUI* web_ui = contents->GetWebUI();
+
+        // Performs a safe downcast to the concrete WebUIController subclass.
+        WebUIControllerSubclass* concrete_controller =
+            web_ui ? web_ui->GetController()->GetAs<WebUIControllerSubclass>()
+                   : nullptr;
+
+        // This is expected to be called only for main frames and for the right
+        // WebUI pages matching the same WebUI associated to the
+        // RenderFrameHost.
+        if (host->GetParent() || !concrete_controller) {
+          ReceivedBadMessage(
+              host->GetProcess(),
+              bad_message::BadMessageReason::RFH_INVALID_WEB_UI_CONTROLLER);
+          return;
+        }
+
+        // Fails to compile if |WebUIControllerSubclass| does not implement the
+        // appropriate overload for |Interface|.
+        concrete_controller->BindInterface(std::move(receiver));
+      }));
+}
+
+}  // namespace
+
 #if BUILDFLAG(ENABLE_UNHANDLED_TAP)
 void BindUnhandledTapWebContentsObserver(
     content::RenderFrameHost* const host,
@@ -271,6 +339,9 @@
   map->Add<blink::mojom::ShareService>(base::BindRepeating(
       &ForwardToJavaWebContents<blink::mojom::ShareService>));
 
+  map->Add<contextual_search::mojom::ContextualSearchJsApiService>(
+      base::BindRepeating(&BindContextualSearchObserver));
+
 #if BUILDFLAG(ENABLE_UNHANDLED_TAP)
   map->Add<blink::mojom::UnhandledTapNotifier>(
       base::BindRepeating(&BindUnhandledTapWebContentsObserver));
@@ -289,11 +360,6 @@
   }
 #endif
 
-#if defined(OS_ANDROID)
-  map->Add<contextual_search::mojom::ContextualSearchJsApiService>(
-      base::BindRepeating(&BindContextualSearchObserver));
-#endif
-
 #if BUILDFLAG(ENABLE_EXTENSIONS)
   map->Add<extensions::mime_handler::MimeHandlerService>(
       base::BindRepeating(&BindMimeHandlerService));
@@ -305,5 +371,52 @@
       base::BindRepeating(&BindNetworkHintsHandler));
 }
 
+void PopulateChromeWebUIFrameBinders(
+    service_manager::BinderMapWithContext<content::RenderFrameHost*>* map) {
+  RegisterWebUIControllerInterfaceBinder<BluetoothInternalsUI,
+                                         ::mojom::BluetoothInternalsHandler>(
+      map);
+
+  RegisterWebUIControllerInterfaceBinder<
+      InterventionsInternalsUI, ::mojom::InterventionsInternalsPageHandler>(
+      map);
+
+  RegisterWebUIControllerInterfaceBinder<
+      MediaEngagementUI, media::mojom::MediaEngagementScoreDetailsProvider>(
+      map);
+
+  RegisterWebUIControllerInterfaceBinder<
+      SiteEngagementUI, ::mojom::SiteEngagementDetailsProvider>(map);
+
+#if defined(OS_ANDROID)
+  RegisterWebUIControllerInterfaceBinder<
+      explore_sites::ExploreSitesInternalsUI,
+      explore_sites_internals::mojom::PageHandler>(map);
+#else
+  RegisterWebUIControllerInterfaceBinder<DownloadsUI,
+                                         downloads::mojom::PageHandlerFactory>(
+      map);
+#endif
+
+#if defined(OS_CHROMEOS)
+  RegisterWebUIControllerInterfaceBinder<
+      chromeos::AddSupervisionUI,
+      add_supervision::mojom::AddSupervisionHandler>(map);
+
+  RegisterWebUIControllerInterfaceBinder<
+      chromeos::machine_learning::MachineLearningInternalsUI,
+      chromeos::machine_learning::mojom::PageHandler>(map);
+#endif  // defined(OS_CHROMEOS)
+
+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
+    defined(OS_CHROMEOS)
+  RegisterWebUIControllerInterfaceBinder<DiscardsUI,
+                                         discards::mojom::DetailsProvider>(map);
+
+  RegisterWebUIControllerInterfaceBinder<DiscardsUI,
+                                         discards::mojom::GraphDump>(map);
+#endif
+}
+
 }  // namespace internal
 }  // namespace chrome
diff --git a/chrome/browser/chrome_browser_interface_binders.h b/chrome/browser/chrome_browser_interface_binders.h
index 8141dde..e69fb5b 100644
--- a/chrome/browser/chrome_browser_interface_binders.h
+++ b/chrome/browser/chrome_browser_interface_binders.h
@@ -15,13 +15,22 @@
 namespace chrome {
 namespace internal {
 
+// The mechanism implemented by the PopulateChrome*FrameBinders() functions
+// below will replace interface registries and binders used for handling
+// InterfaceProvider's GetInterface() calls (see crbug.com/718652).
+
 // PopulateChromeFrameBinders() registers BrowserInterfaceBroker's
 // GetInterface() handler callbacks for chrome-specific document-scoped
-// interfaces. This mechanism will replace interface registries and binders used
-// for handling InterfaceProvider's GetInterface() calls (see crbug.com/718652).
+// interfaces.
 void PopulateChromeFrameBinders(
     service_manager::BinderMapWithContext<content::RenderFrameHost*>* map);
 
+// PopulateChromeWebUIFrameBinders() registers BrowserInterfaceBroker's
+// GetInterface() handler callbacks for chrome-specific document-scoped
+// interfaces used from WebUI pages (e.g. chrome://bluetooth-internals).
+void PopulateChromeWebUIFrameBinders(
+    service_manager::BinderMapWithContext<content::RenderFrameHost*>* map);
+
 }  // namespace internal
 }  // namespace chrome
 
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
index 816ea26..9eafea4c 100644
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -24,6 +24,7 @@
 #include "base/metrics/histogram_macros.h"
 #include "base/no_destructor.h"
 #include "base/path_service.h"
+#include "base/sequenced_task_runner.h"
 #include "base/stl_util.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_split.h"
@@ -1282,7 +1283,7 @@
 
 void ChromeContentBrowserClient::PostAfterStartupTask(
     const base::Location& from_here,
-    const scoped_refptr<base::TaskRunner>& task_runner,
+    const scoped_refptr<base::SequencedTaskRunner>& task_runner,
     base::OnceClosure task) {
   AfterStartupTaskUtils::PostTask(from_here, task_runner, std::move(task));
 
diff --git a/chrome/browser/chrome_content_browser_client.h b/chrome/browser/chrome_content_browser_client.h
index 4ae90ae..2b1501f 100644
--- a/chrome/browser/chrome_content_browser_client.h
+++ b/chrome/browser/chrome_content_browser_client.h
@@ -111,9 +111,10 @@
   // content::ContentBrowserClient:
   std::unique_ptr<content::BrowserMainParts> CreateBrowserMainParts(
       const content::MainFunctionParams& parameters) override;
-  void PostAfterStartupTask(const base::Location& from_here,
-                            const scoped_refptr<base::TaskRunner>& task_runner,
-                            base::OnceClosure task) override;
+  void PostAfterStartupTask(
+      const base::Location& from_here,
+      const scoped_refptr<base::SequencedTaskRunner>& task_runner,
+      base::OnceClosure task) override;
   bool IsBrowserStartupComplete() override;
   void SetBrowserStartupIsCompleteForTesting() override;
   std::string GetStoragePartitionIdForSite(
diff --git a/chrome/browser/chrome_content_browser_client_receiver_bindings.cc b/chrome/browser/chrome_content_browser_client_receiver_bindings.cc
index e38bab72..020bf814 100644
--- a/chrome/browser/chrome_content_browser_client_receiver_bindings.cc
+++ b/chrome/browser/chrome_content_browser_client_receiver_bindings.cc
@@ -200,6 +200,7 @@
     content::RenderFrameHost* render_frame_host,
     service_manager::BinderMapWithContext<content::RenderFrameHost*>* map) {
   chrome::internal::PopulateChromeFrameBinders(map);
+  chrome::internal::PopulateChromeWebUIFrameBinders(map);
 
 #if BUILDFLAG(ENABLE_EXTENSIONS)
   content::WebContents* web_contents =
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn
index 5163cbc..9926639 100644
--- a/chrome/browser/chromeos/BUILD.gn
+++ b/chrome/browser/chromeos/BUILD.gn
@@ -249,6 +249,7 @@
     "//gpu/ipc/host",
     "//gpu/ipc/service",
     "//media",
+    "//media/capture:capture_switches",
     "//media/mojo/mojom",
     "//mojo/public/cpp/platform",
     "//mojo/public/cpp/system",
@@ -2174,6 +2175,8 @@
     "smb_client/temp_file_manager.h",
     "startup_settings_cache.cc",
     "startup_settings_cache.h",
+    "sync/app_settings_model_type_controller.cc",
+    "sync/app_settings_model_type_controller.h",
     "sync/apps_model_type_controller.cc",
     "sync/apps_model_type_controller.h",
     "sync/os_sync_model_type_controller.cc",
diff --git a/chrome/browser/chromeos/arc/fileapi/arc_file_system_bridge_unittest.cc b/chrome/browser/chromeos/arc/fileapi/arc_file_system_bridge_unittest.cc
index 4196485a..c198b13 100644
--- a/chrome/browser/chromeos/arc/fileapi/arc_file_system_bridge_unittest.cc
+++ b/chrome/browser/chromeos/arc/fileapi/arc_file_system_bridge_unittest.cc
@@ -25,7 +25,6 @@
 #include "components/arc/test/connection_holder_util.h"
 #include "components/arc/test/fake_file_system_instance.h"
 #include "content/public/test/browser_task_environment.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "content/public/test/test_utils.h"
 #include "storage/browser/file_system/external_mount_points.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -84,7 +83,6 @@
  protected:
   base::ScopedTempDir temp_dir_;
   content::BrowserTaskEnvironment task_environment_;
-  content::TestServiceManagerContext service_manager_context_;
   std::unique_ptr<TestingProfileManager> profile_manager_;
 
   FakeFileSystemInstance fake_file_system_;
diff --git a/chrome/browser/chromeos/arc/policy/arc_policy_bridge_unittest.cc b/chrome/browser/chromeos/arc/policy/arc_policy_bridge_unittest.cc
index 809c10aa..72bdbf7 100644
--- a/chrome/browser/chromeos/arc/policy/arc_policy_bridge_unittest.cc
+++ b/chrome/browser/chromeos/arc/policy/arc_policy_bridge_unittest.cc
@@ -34,7 +34,6 @@
 #include "components/sync_preferences/testing_pref_service_syncable.h"
 #include "components/user_manager/scoped_user_manager.h"
 #include "content/public/test/browser_task_environment.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "services/data_decoder/public/cpp/test_support/in_process_data_decoder.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -262,7 +261,6 @@
  private:
   content::BrowserTaskEnvironment task_environment_;
   data_decoder::test::InProcessDataDecoder in_process_data_decoder_;
-  content::TestServiceManagerContext service_manager_context_;
   std::unique_ptr<user_manager::ScopedUserManager> user_manager_enabler_;
   std::unique_ptr<TestingProfileManager> testing_profile_manager_;
   base::RunLoop run_loop_;
diff --git a/chrome/browser/chromeos/child_accounts/time_limits/app_service_wrapper.cc b/chrome/browser/chromeos/child_accounts/time_limits/app_service_wrapper.cc
index 4b8af6d7..0bfdc8bd 100644
--- a/chrome/browser/chromeos/child_accounts/time_limits/app_service_wrapper.cc
+++ b/chrome/browser/chromeos/child_accounts/time_limits/app_service_wrapper.cc
@@ -15,6 +15,7 @@
 #include "chrome/services/app_service/public/cpp/app_update.h"
 #include "chrome/services/app_service/public/cpp/instance_update.h"
 #include "chrome/services/app_service/public/mojom/types.mojom.h"
+#include "extensions/common/constants.h"
 
 namespace chromeos {
 namespace app_time {
@@ -23,9 +24,10 @@
 
 // Return whether app with |app_id| should be included for per-app time
 // limits.
-// TODO(agawronska): Add support for PWA and Chrome.
 bool ShouldIncludeApp(const AppId& app_id) {
-  return app_id.app_type() == apps::mojom::AppType::kArc;
+  return app_id.app_type() == apps::mojom::AppType::kArc ||
+         app_id.app_type() == apps::mojom::AppType::kWeb ||
+         app_id.app_id() == extension_misc::kChromeAppId;
 }
 
 // Gets AppId from |update|.
@@ -82,10 +84,9 @@
   DCHECK(!app_service_id.empty());
 
   std::string app_name;
-  GetAppCache().ForOneApp(app_service_id,
-                          [&app_name](const apps::AppUpdate& update) {
-                            app_name = update.ShortName();
-                          });
+  GetAppCache().ForOneApp(
+      app_service_id,
+      [&app_name](const apps::AppUpdate& update) { app_name = update.Name(); });
   return app_name;
 }
 
diff --git a/chrome/browser/chromeos/child_accounts/time_limits/app_service_wrapper_unittest.cc b/chrome/browser/chromeos/child_accounts/time_limits/app_service_wrapper_unittest.cc
index 03801803..48c12f4 100644
--- a/chrome/browser/chromeos/child_accounts/time_limits/app_service_wrapper_unittest.cc
+++ b/chrome/browser/chromeos/child_accounts/time_limits/app_service_wrapper_unittest.cc
@@ -9,11 +9,18 @@
 #include <vector>
 
 #include "base/containers/flat_map.h"
+#include "base/files/file_path.h"
+#include "base/memory/scoped_refptr.h"
+#include "base/optional.h"
 #include "base/strings/strcat.h"
 #include "base/test/scoped_feature_list.h"
+#include "base/values.h"
 #include "chrome/browser/apps/app_service/app_service_test.h"
 #include "chrome/browser/chromeos/child_accounts/time_limits/app_types.h"
+#include "chrome/browser/extensions/extension_service.h"
+#include "chrome/browser/extensions/test_extension_system.h"
 #include "chrome/browser/ui/app_list/arc/arc_app_test.h"
+#include "chrome/browser/web_applications/components/web_app_helpers.h"
 #include "chrome/common/chrome_features.h"
 #include "chrome/services/app_service/public/cpp/app_update.h"
 #include "chrome/services/app_service/public/mojom/types.mojom.h"
@@ -22,8 +29,11 @@
 #include "components/arc/mojom/app_permissions.mojom.h"
 #include "components/arc/test/fake_app_instance.h"
 #include "content/public/test/browser_task_environment.h"
+#include "extensions/common/constants.h"
+#include "extensions/common/manifest_constants.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "url/gurl.h"
 
 namespace chromeos {
 namespace app_time {
@@ -35,6 +45,15 @@
 constexpr char kArcPackage2[] = "com.example.app2";
 constexpr char kArcApp2[] = "ArcApp2";
 
+constexpr char kExtensionAppUrl[] = "https://example.com/";
+constexpr char kExtensionNameChrome[] = "Chrome";
+constexpr char kExtensionNameA[] = "ExtensionA";
+
+constexpr char kWebAppUrl1[] = "https://webappone.com/";
+constexpr char kWebAppName1[] = "WebApp1";
+constexpr char kWebAppUrl2[] = "https://webapptwo.com/";
+constexpr char kWebAppName2[] = "WebApp2";
+
 arc::mojom::ArcPackageInfoPtr CreateArcAppPackage(
     const std::string& package_name) {
   auto package = arc::mojom::ArcPackageInfo::New();
@@ -58,6 +77,29 @@
   return app;
 }
 
+scoped_refptr<extensions::Extension> CreateExtension(
+    const std::string& extension_id,
+    const std::string& name,
+    const std::string& url,
+    bool is_bookmark_app = false) {
+  base::Value manifest(base::Value::Type::DICTIONARY);
+  manifest.SetStringPath(extensions::manifest_keys::kName, name);
+  manifest.SetStringPath(extensions::manifest_keys::kVersion, "1");
+  manifest.SetIntPath(extensions::manifest_keys::kManifestVersion, 2);
+  manifest.SetStringPath(extensions::manifest_keys::kLaunchWebURL, url);
+
+  std::string error;
+  extensions::Extension::InitFromValueFlags flags =
+      is_bookmark_app ? extensions::Extension::FROM_BOOKMARK
+                      : extensions::Extension::NO_FLAGS;
+  scoped_refptr<extensions::Extension> extension =
+      extensions::Extension::Create(
+          base::FilePath(), extensions::Manifest::UNPACKED,
+          static_cast<base::DictionaryValue&>(manifest), flags, extension_id,
+          &error);
+  return extension;
+}
+
 }  // namespace
 
 class AppServiceWrapperTest : public testing::Test {
@@ -90,9 +132,25 @@
     testing::Test::SetUp();
 
     feature_list_.InitAndEnableFeature(features::kPerAppTimeLimits);
+
+    extensions::TestExtensionSystem* extension_system(
+        static_cast<extensions::TestExtensionSystem*>(
+            extensions::ExtensionSystem::Get(&profile_)));
+    extension_service_ = extension_system->CreateExtensionService(
+        base::CommandLine::ForCurrentProcess(), base::FilePath(), false);
+    extension_service_->Init();
+
     app_service_test_.SetUp(&profile_);
     arc_test_.SetUp(&profile_);
+    task_environment_.RunUntilIdle();
+
     tested_wrapper_.AddObserver(&test_listener_);
+
+    // Install Chrome.
+    scoped_refptr<extensions::Extension> chrome = CreateExtension(
+        extension_misc::kChromeAppId, kExtensionNameChrome, kExtensionAppUrl);
+    extension_service_->AddComponentExtension(chrome.get());
+    task_environment_.RunUntilIdle();
   }
 
   void TearDown() override {
@@ -104,32 +162,79 @@
 
   void RunUntilIdle() { task_environment_.RunUntilIdle(); }
 
-  void SimulateAppInstalled(const AppId& app_id, const std::string& app_name) {
-    const std::string& package_name = app_id.app_id();
-    arc_test_.AddPackage(CreateArcAppPackage(package_name)->Clone());
+  void SimulateAppInstalled(const AppId& app_id,
+                            const std::string& app_name,
+                            base::Optional<std::string> url = base::nullopt) {
+    if (app_id.app_type() == apps::mojom::AppType::kArc) {
+      const std::string& package_name = app_id.app_id();
+      arc_test_.AddPackage(CreateArcAppPackage(package_name)->Clone());
 
-    const arc::mojom::AppInfo app = CreateArcAppInfo(package_name, app_name);
-    arc_test_.app_instance()->SendPackageAppListRefreshed(package_name, {app});
+      const arc::mojom::AppInfo app = CreateArcAppInfo(package_name, app_name);
+      arc_test_.app_instance()->SendPackageAppListRefreshed(package_name,
+                                                            {app});
+      task_environment_.RunUntilIdle();
+      return;
+    }
 
-    task_environment_.RunUntilIdle();
+    if (app_id.app_type() == apps::mojom::AppType::kExtension) {
+      scoped_refptr<extensions::Extension> ext = CreateExtension(
+          app_id.app_id(), app_name, url.value(), false /*is_bookmark_app*/);
+      extension_service_->AddExtension(ext.get());
+      task_environment_.RunUntilIdle();
+      return;
+    }
+
+    if (app_id.app_type() == apps::mojom::AppType::kWeb) {
+      scoped_refptr<extensions::Extension> web_app = CreateExtension(
+          app_id.app_id(), app_name, url.value(), true /*is_bookmark_app*/);
+      extension_service_->AddExtension(web_app.get());
+      task_environment_.RunUntilIdle();
+      return;
+    }
   }
 
   void SimulateAppUninstalled(const AppId& app_id) {
-    const std::string& package_name = app_id.app_id();
-    arc_test_.app_instance()->UninstallPackage(package_name);
+    if (app_id.app_type() == apps::mojom::AppType::kArc) {
+      const std::string& package_name = app_id.app_id();
+      arc_test_.app_instance()->UninstallPackage(package_name);
+      task_environment_.RunUntilIdle();
+      return;
+    }
 
-    task_environment_.RunUntilIdle();
+    if (app_id.app_type() == apps::mojom::AppType::kExtension ||
+        app_id.app_type() == apps::mojom::AppType::kWeb) {
+      extension_service_->UnloadExtension(
+          app_id.app_id(), extensions::UnloadedExtensionReason::UNINSTALL);
+      task_environment_.RunUntilIdle();
+      return;
+    }
   }
 
   void SimulateAppDisabled(const AppId& app_id,
                            const std::string& app_name,
                            bool disabled) {
-    const std::string& package_name = app_id.app_id();
-    arc::mojom::AppInfo app = CreateArcAppInfo(package_name, app_name);
-    app.suspended = disabled;
-    arc_test_.app_instance()->SendPackageAppListRefreshed(package_name, {app});
+    if (app_id.app_type() == apps::mojom::AppType::kArc) {
+      const std::string& package_name = app_id.app_id();
+      arc::mojom::AppInfo app = CreateArcAppInfo(package_name, app_name);
+      app.suspended = disabled;
+      arc_test_.app_instance()->SendPackageAppListRefreshed(package_name,
+                                                            {app});
+      task_environment_.RunUntilIdle();
+      return;
+    }
 
-    task_environment_.RunUntilIdle();
+    if (app_id.app_type() == apps::mojom::AppType::kExtension ||
+        app_id.app_type() == apps::mojom::AppType::kWeb) {
+      if (disabled) {
+        extension_service_->DisableExtension(
+            app_id.app_id(),
+            extensions::disable_reason::DISABLE_BLOCKED_BY_POLICY);
+      } else {
+        extension_service_->EnableExtension(app_id.app_id());
+      }
+      task_environment_.RunUntilIdle();
+      return;
+    }
   }
 
  private:
@@ -140,46 +245,78 @@
   apps::AppServiceTest app_service_test_;
   ArcAppTest arc_test_;
 
+  extensions::ExtensionService* extension_service_ = nullptr;
+
   AppServiceWrapper tested_wrapper_{&profile_};
   MockListener test_listener_;
 };
 
 // Tests GetInstalledApps() method.
 TEST_F(AppServiceWrapperTest, GetInstalledApps) {
-  // No ARC apps installed.
-  EXPECT_EQ(0u, tested_wrapper().GetInstalledApps().size());
+  // Chrome is the only 'preinstalled' app.
+  const AppId chrome =
+      AppId(apps::mojom::AppType::kExtension, extension_misc::kChromeAppId);
+  std::vector<AppId> installed_apps = tested_wrapper().GetInstalledApps();
+  EXPECT_EQ(1u, installed_apps.size());
+  EXPECT_TRUE(base::Contains(installed_apps, chrome));
 
-  // Update the list of ARC apps.
-  const std::vector<arc::mojom::AppInfo>& expected_apps =
-      arc_test().fake_apps();
-  arc_test().app_instance()->SendRefreshAppList(expected_apps);
-  RunUntilIdle();
-
-  const std::vector<AppId> installed_apps = tested_wrapper().GetInstalledApps();
-  ASSERT_EQ(expected_apps.size(), installed_apps.size());
-  for (const auto& app : expected_apps) {
-    EXPECT_TRUE(base::Contains(
-        installed_apps, AppId(apps::mojom::AppType::kArc, app.package_name)));
-  }
-}
-
-TEST_F(AppServiceWrapperTest, GetAppName) {
+  // Add ARC app.
   const AppId app1(apps::mojom::AppType::kArc, kArcPackage1);
   EXPECT_CALL(test_listener(), OnAppInstalled(app1)).Times(1);
   SimulateAppInstalled(app1, kArcApp1);
 
-  const AppId app2(apps::mojom::AppType::kArc, kArcPackage2);
-  EXPECT_CALL(test_listener(), OnAppInstalled(app2)).Times(1);
-  SimulateAppInstalled(app2, kArcApp2);
+  // Add extension app. It will be ignored, because PATL does not support
+  // extensions (with exception of Chrome) now.
+  const AppId app2(apps::mojom::AppType::kExtension,
+                   web_app::GenerateAppIdFromURL(GURL(kExtensionAppUrl)));
+  // PATL does not support extensions, so there will be no install notification.
+  EXPECT_CALL(test_listener(), OnAppInstalled(app2)).Times(0);
+  SimulateAppInstalled(app2, kExtensionNameA, kExtensionAppUrl);
+
+  // Add web app.
+  const AppId app3(apps::mojom::AppType::kWeb,
+                   web_app::GenerateAppIdFromURL(GURL(kWebAppUrl1)));
+  EXPECT_CALL(test_listener(), OnAppInstalled(app3)).Times(1);
+  SimulateAppInstalled(app3, kWebAppName1, kWebAppUrl1);
+
+  // We get ARC and web app plus Chrome that is 'preinstalled'.
+  const std::vector<AppId> expected_apps = {chrome, app1, app3};
+  installed_apps = tested_wrapper().GetInstalledApps();
+  ASSERT_EQ(3u, installed_apps.size());
+  for (const auto& app : expected_apps) {
+    EXPECT_TRUE(base::Contains(installed_apps, app));
+  }
+}
+
+TEST_F(AppServiceWrapperTest, GetAppName) {
+  const AppId chrome(apps::mojom::AppType::kExtension,
+                     extension_misc::kChromeAppId);
+  EXPECT_EQ(kExtensionNameChrome, tested_wrapper().GetAppName(chrome));
+
+  const AppId app1(apps::mojom::AppType::kArc, kArcPackage1);
+  EXPECT_CALL(test_listener(), OnAppInstalled(app1)).Times(1);
+  SimulateAppInstalled(app1, kArcApp1);
+
+  const AppId app2(apps::mojom::AppType::kExtension,
+                   web_app::GenerateAppIdFromURL(GURL(kExtensionAppUrl)));
+  // PATL does not support extensions, so there will be no install notification.
+  EXPECT_CALL(test_listener(), OnAppInstalled(app2)).Times(0);
+  SimulateAppInstalled(app2, kExtensionNameA, kExtensionAppUrl);
+
+  const AppId app3(apps::mojom::AppType::kWeb,
+                   web_app::GenerateAppIdFromURL(GURL(kWebAppUrl1)));
+  EXPECT_CALL(test_listener(), OnAppInstalled(app3)).Times(1);
+  SimulateAppInstalled(app3, kWebAppName1, kWebAppUrl1);
 
   EXPECT_EQ(kArcApp1, tested_wrapper().GetAppName(app1));
-  EXPECT_EQ(kArcApp2, tested_wrapper().GetAppName(app2));
+  EXPECT_EQ(kExtensionNameA, tested_wrapper().GetAppName(app2));
+  EXPECT_EQ(kWebAppName1, tested_wrapper().GetAppName(app3));
 }
 
 // Tests installs and uninstalls of Arc apps.
 TEST_F(AppServiceWrapperTest, ArcAppInstallation) {
-  // No app installed.
-  EXPECT_EQ(0u, tested_wrapper().GetInstalledApps().size());
+  // Only Chrome installed.
+  EXPECT_EQ(1u, tested_wrapper().GetInstalledApps().size());
 
   // Install first ARC app.
   const AppId app1(apps::mojom::AppType::kArc, kArcPackage1);
@@ -187,8 +324,8 @@
   SimulateAppInstalled(app1, kArcApp1);
 
   std::vector<AppId> installed_apps = tested_wrapper().GetInstalledApps();
-  ASSERT_EQ(1u, installed_apps.size());
-  EXPECT_EQ(app1, installed_apps[0]);
+  EXPECT_EQ(2u, installed_apps.size());
+  EXPECT_TRUE(base::Contains(installed_apps, app1));
 
   // Install second ARC app.
   const AppId app2(apps::mojom::AppType::kArc, kArcPackage2);
@@ -196,15 +333,50 @@
   SimulateAppInstalled(app2, kArcApp2);
 
   installed_apps = tested_wrapper().GetInstalledApps();
-  EXPECT_EQ(2u, installed_apps.size());
+  EXPECT_EQ(3u, installed_apps.size());
+  EXPECT_TRUE(base::Contains(installed_apps, app2));
 
   // Uninstall first ARC app.
   EXPECT_CALL(test_listener(), OnAppUninstalled(app1)).Times(1);
   SimulateAppUninstalled(app1);
 
   installed_apps = tested_wrapper().GetInstalledApps();
-  ASSERT_EQ(1u, installed_apps.size());
-  EXPECT_EQ(app2, installed_apps[0]);
+  ASSERT_EQ(2u, installed_apps.size());
+  EXPECT_TRUE(base::Contains(installed_apps, app2));
+}
+
+// Tests installs and uninstalls of web apps.
+TEST_F(AppServiceWrapperTest, WebAppInstallation) {
+  // Only Chrome installed.
+  EXPECT_EQ(1u, tested_wrapper().GetInstalledApps().size());
+
+  // Install first web app.
+  const AppId app1(apps::mojom::AppType::kWeb,
+                   web_app::GenerateAppIdFromURL(GURL(kWebAppUrl1)));
+  EXPECT_CALL(test_listener(), OnAppInstalled(app1)).Times(1);
+  SimulateAppInstalled(app1, kWebAppName1, kWebAppUrl1);
+
+  std::vector<AppId> installed_apps = tested_wrapper().GetInstalledApps();
+  EXPECT_EQ(2u, installed_apps.size());
+  EXPECT_TRUE(base::Contains(installed_apps, app1));
+
+  // Install second web app.
+  const AppId app2(apps::mojom::AppType::kWeb,
+                   web_app::GenerateAppIdFromURL(GURL(kWebAppUrl2)));
+  EXPECT_CALL(test_listener(), OnAppInstalled(app2)).Times(1);
+  SimulateAppInstalled(app2, kWebAppName2, kWebAppUrl2);
+
+  installed_apps = tested_wrapper().GetInstalledApps();
+  EXPECT_EQ(3u, installed_apps.size());
+  EXPECT_TRUE(base::Contains(installed_apps, app2));
+
+  // Uninstall first web app.
+  EXPECT_CALL(test_listener(), OnAppUninstalled(app1)).Times(1);
+  SimulateAppUninstalled(app1);
+
+  installed_apps = tested_wrapper().GetInstalledApps();
+  ASSERT_EQ(2u, installed_apps.size());
+  EXPECT_TRUE(base::Contains(installed_apps, app2));
 }
 
 TEST_F(AppServiceWrapperTest, ArcAppDisabled) {
@@ -222,6 +394,39 @@
   SimulateAppDisabled(app, kArcApp1, false);
 }
 
+TEST_F(AppServiceWrapperTest, WebAppDisabled) {
+  // Install web app.
+  const AppId app(apps::mojom::AppType::kWeb,
+                  web_app::GenerateAppIdFromURL(GURL(kWebAppUrl1)));
+  EXPECT_CALL(test_listener(), OnAppInstalled(app)).Times(1);
+  SimulateAppInstalled(app, kWebAppName1, kWebAppUrl1);
+
+  // Make app disabled.
+  EXPECT_CALL(test_listener(), OnAppBlocked(app)).Times(1);
+  SimulateAppDisabled(app, kWebAppName1, true /*disabled*/);
+
+  // Re-enable app.
+  EXPECT_CALL(test_listener(), OnAppAvailable(app)).Times(1);
+  SimulateAppDisabled(app, kWebAppName1, false /*disabled*/);
+}
+
+// PATL v1 does not support 'extensions' other than Chrome.
+TEST_F(AppServiceWrapperTest, IgnoreOtherExtensions) {
+  const AppId chrome(apps::mojom::AppType::kExtension,
+                     extension_misc::kChromeAppId);
+  std::vector<AppId> installed_apps = tested_wrapper().GetInstalledApps();
+  EXPECT_TRUE(base::Contains(installed_apps, chrome));
+
+  const AppId app1(apps::mojom::AppType::kExtension,
+                   web_app::GenerateAppIdFromURL(GURL(kExtensionAppUrl)));
+  EXPECT_CALL(test_listener(), OnAppInstalled(app1)).Times(0);
+  SimulateAppInstalled(app1, kExtensionNameA, kExtensionAppUrl);
+
+  installed_apps = tested_wrapper().GetInstalledApps();
+  EXPECT_EQ(1u, installed_apps.size());
+  EXPECT_TRUE(base::Contains(installed_apps, chrome));
+}
+
 // TODO(agawronska): Add tests for ARC apps activity once crrev.com/c/1906614 is
 // landed.
 
diff --git a/chrome/browser/chromeos/child_accounts/time_limits/web_time_limit_navigation_throttle.cc b/chrome/browser/chromeos/child_accounts/time_limits/web_time_limit_navigation_throttle.cc
index e9406dc..1ecd9fe 100644
--- a/chrome/browser/chromeos/child_accounts/time_limits/web_time_limit_navigation_throttle.cc
+++ b/chrome/browser/chromeos/child_accounts/time_limits/web_time_limit_navigation_throttle.cc
@@ -132,8 +132,9 @@
   web_app::WebAppTabHelper* web_app_helper =
       web_app::WebAppTabHelper::FromWebContents(web_contents);
 
-  bool is_windowed =
-      (type == Browser::Type::TYPE_APP) || (type == Browser::Type::TYPE_POPUP);
+  bool is_windowed = (type == Browser::Type::TYPE_APP_POPUP) ||
+                     (type == Browser::Type::TYPE_APP) ||
+                     (type == Browser::Type::TYPE_POPUP);
   bool is_app = false;
   if (web_app_helper && !web_app_helper->app_id().empty())
     is_app = true;
diff --git a/chrome/browser/chromeos/crostini/crostini_manager.cc b/chrome/browser/chromeos/crostini/crostini_manager.cc
index 757c0e6a..f6703b4 100644
--- a/chrome/browser/chromeos/crostini/crostini_manager.cc
+++ b/chrome/browser/chromeos/crostini/crostini_manager.cc
@@ -55,7 +55,6 @@
 #include "content/public/common/service_manager_connection.h"
 #include "dbus/message.h"
 #include "extensions/browser/extension_registry.h"
-#include "services/device/public/mojom/constants.mojom.h"
 #include "services/device/public/mojom/usb_device.mojom.h"
 #include "services/device/public/mojom/usb_enumeration_options.mojom.h"
 #include "services/network/public/cpp/network_connection_tracker.h"
diff --git a/chrome/browser/chromeos/crostini/crostini_package_notification.cc b/chrome/browser/chromeos/crostini/crostini_package_notification.cc
index bd745b84..0ca7aeb 100644
--- a/chrome/browser/chromeos/crostini/crostini_package_notification.cc
+++ b/chrome/browser/chromeos/crostini/crostini_package_notification.cc
@@ -157,8 +157,6 @@
   return result;
 }
 
-// TODO(timloh): This doesn't get called if the user shuts down Crostini, so
-// the notification will be stuck at whatever percentage it is at.
 void CrostiniPackageNotification::UpdateProgress(
     PackageOperationStatus status,
     int progress_percent,
diff --git a/chrome/browser/chromeos/crostini/crostini_package_service.h b/chrome/browser/chromeos/crostini/crostini_package_service.h
index 34915e6..70c44dd 100644
--- a/chrome/browser/chromeos/crostini/crostini_package_service.h
+++ b/chrome/browser/chromeos/crostini/crostini_package_service.h
@@ -49,9 +49,6 @@
 
   void NotificationCompleted(CrostiniPackageNotification* notification);
 
-  // The package installer service caches the most recent retrieved package
-  // info, for use in a package install notification.
-  // TODO(timloh): Actually cache the values.
   void GetLinuxPackageInfo(
       const std::string& vm_name,
       const std::string& container_name,
diff --git a/chrome/browser/chromeos/crostini/crostini_terminal.cc b/chrome/browser/chromeos/crostini/crostini_terminal.cc
index f9d538e..81c9b3f 100644
--- a/chrome/browser/chromeos/crostini/crostini_terminal.cc
+++ b/chrome/browser/chromeos/crostini/crostini_terminal.cc
@@ -76,8 +76,9 @@
                            const apps::AppLaunchParams& launch_params,
                            const GURL& vsh_in_crosh_url,
                            Browser* browser) {
-  ShowApplicationWindow(profile, launch_params, vsh_in_crosh_url, browser,
-                        WindowOpenDisposition::NEW_FOREGROUND_TAB);
+  NavigateApplicationWindow(browser, launch_params, vsh_in_crosh_url,
+                            WindowOpenDisposition::NEW_FOREGROUND_TAB);
+  browser->window()->Show();
   browser->window()->GetNativeWindow()->SetProperty(
       kOverrideWindowIconResourceIdKey, IDR_LOGO_CROSTINI_TERMINAL);
 }
diff --git a/chrome/browser/chromeos/drive/drive_integration_service.cc b/chrome/browser/chromeos/drive/drive_integration_service.cc
index 9e4f6a8b..4030dbf 100644
--- a/chrome/browser/chromeos/drive/drive_integration_service.cc
+++ b/chrome/browser/chromeos/drive/drive_integration_service.cc
@@ -58,7 +58,6 @@
 #include "mojo/public/cpp/bindings/callback_helpers.h"
 #include "mojo/public/cpp/bindings/pending_remote.h"
 #include "net/traffic_annotation/network_traffic_annotation.h"
-#include "services/device/public/mojom/constants.mojom.h"
 #include "services/device/public/mojom/wake_lock_provider.mojom.h"
 #include "services/identity/public/mojom/identity_service.mojom.h"
 #include "services/network/public/cpp/network_connection_tracker.h"
diff --git a/chrome/browser/chromeos/drive/drive_integration_service_unittest.cc b/chrome/browser/chromeos/drive/drive_integration_service_unittest.cc
index 6ca850fd..4a2cae19 100644
--- a/chrome/browser/chromeos/drive/drive_integration_service_unittest.cc
+++ b/chrome/browser/chromeos/drive/drive_integration_service_unittest.cc
@@ -8,7 +8,6 @@
 #include "chrome/test/base/testing_profile.h"
 #include "chrome/test/base/testing_profile_manager.h"
 #include "content/public/test/browser_task_environment.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "content/public/test/test_utils.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -23,7 +22,6 @@
 
  protected:
   content::BrowserTaskEnvironment task_environment_;
-  content::TestServiceManagerContext context_;
   // DriveIntegrationService depends on DriveNotificationManager which depends
   // on InvalidationService. On Chrome OS, the InvalidationServiceFactory
   // uses chromeos::ProfileHelper, which needs the ProfileManager or a
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 d30a4a4..46ec552 100644
--- a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc
+++ b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc
@@ -2713,13 +2713,13 @@
       ash::GetShelfAutoHideBehaviorPref(profile->GetPrefs(), display_id);
   std::string str_behavior;
   switch (behavior) {
-    case ash::ShelfAutoHideBehavior::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS:
+    case ash::ShelfAutoHideBehavior::kAlways:
       str_behavior = "always";
       break;
-    case ash::ShelfAutoHideBehavior::SHELF_AUTO_HIDE_BEHAVIOR_NEVER:
+    case ash::ShelfAutoHideBehavior::kNever:
       str_behavior = "never";
       break;
-    case ash::ShelfAutoHideBehavior::SHELF_AUTO_HIDE_ALWAYS_HIDDEN:
+    case ash::ShelfAutoHideBehavior::kAlwaysHidden:
       // SHELF_AUTO_HIDE_ALWAYS_HIDDEN not supported by shelf_prefs.cc
       return RespondNow(Error("SHELF_AUTO_HIDE_ALWAYS_HIDDEN not supported"));
   }
@@ -2748,9 +2748,9 @@
 
   ash::ShelfAutoHideBehavior behavior;
   if (params->behavior == "always") {
-    behavior = ash::ShelfAutoHideBehavior::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS;
+    behavior = ash::ShelfAutoHideBehavior::kAlways;
   } else if (params->behavior == "never") {
-    behavior = ash::ShelfAutoHideBehavior::SHELF_AUTO_HIDE_BEHAVIOR_NEVER;
+    behavior = ash::ShelfAutoHideBehavior::kNever;
   } else {
     return RespondNow(Error(
         base::StrCat({"Invalid behavior; expected 'always', 'never', got ",
diff --git a/chrome/browser/chromeos/extensions/login_screen/login_screen_ui/ui_handler_unittest.cc b/chrome/browser/chromeos/extensions/login_screen/login_screen_ui/ui_handler_unittest.cc
index 5be9d7f..ca87371a 100644
--- a/chrome/browser/chromeos/extensions/login_screen/login_screen_ui/ui_handler_unittest.cc
+++ b/chrome/browser/chromeos/extensions/login_screen/login_screen_ui/ui_handler_unittest.cc
@@ -18,7 +18,6 @@
 #include "components/session_manager/core/session_manager.h"
 #include "components/version_info/version_info.h"
 #include "content/public/test/browser_task_environment.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "extensions/browser/extension_registry.h"
 #include "extensions/common/extension.h"
 #include "extensions/common/extension_builder.h"
@@ -188,7 +187,6 @@
   }
 
   content::BrowserTaskEnvironment task_environment_;
-  content::TestServiceManagerContext context_;
   const extensions::ScopedCurrentChannel scoped_current_channel_;
 
   session_manager::SessionManager session_manager_;
diff --git a/chrome/browser/chromeos/extensions/login_screen/login_state/session_state_changed_event_dispatcher_unittest.cc b/chrome/browser/chromeos/extensions/login_screen/login_state/session_state_changed_event_dispatcher_unittest.cc
index 48679506..dc81d09 100644
--- a/chrome/browser/chromeos/extensions/login_screen/login_state/session_state_changed_event_dispatcher_unittest.cc
+++ b/chrome/browser/chromeos/extensions/login_screen/login_state/session_state_changed_event_dispatcher_unittest.cc
@@ -15,7 +15,6 @@
 #include "chrome/test/base/testing_profile_manager.h"
 #include "components/session_manager/session_manager_types.h"
 #include "content/public/test/browser_task_environment.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "extensions/browser/event_router.h"
 #include "extensions/browser/test_event_router_observer.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -77,7 +76,6 @@
 
  protected:
   content::BrowserTaskEnvironment task_environment_;
-  content::TestServiceManagerContext service_manager_context_;
   TestingProfile* testing_profile_;
   std::unique_ptr<session_manager::SessionManager> session_manager_;
   std::unique_ptr<SessionStateChangedEventDispatcher> dispatcher_;
diff --git a/chrome/browser/chromeos/extensions/printing/printing_api_handler_unittest.cc b/chrome/browser/chromeos/extensions/printing/printing_api_handler_unittest.cc
index 58e28294..f0768fb2 100644
--- a/chrome/browser/chromeos/extensions/printing/printing_api_handler_unittest.cc
+++ b/chrome/browser/chromeos/extensions/printing/printing_api_handler_unittest.cc
@@ -20,7 +20,6 @@
 #include "chrome/test/base/testing_profile.h"
 #include "chrome/test/base/testing_profile_manager.h"
 #include "content/public/test/browser_task_environment.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "extensions/browser/event_router.h"
 #include "extensions/browser/event_router_factory.h"
 #include "extensions/browser/test_event_router.h"
@@ -155,7 +154,6 @@
 
  protected:
   content::BrowserTaskEnvironment task_environment_;
-  content::TestServiceManagerContext service_manager_context_;
   TestingProfile* testing_profile_;
   TestEventRouter* event_router_ = nullptr;
   std::unique_ptr<PrintingAPIHandler> printing_api_handler_;
diff --git a/chrome/browser/chromeos/extensions/printing_metrics/print_job_finished_event_dispatcher_unittest.cc b/chrome/browser/chromeos/extensions/printing_metrics/print_job_finished_event_dispatcher_unittest.cc
index ee14fd3d..1c0f4953 100644
--- a/chrome/browser/chromeos/extensions/printing_metrics/print_job_finished_event_dispatcher_unittest.cc
+++ b/chrome/browser/chromeos/extensions/printing_metrics/print_job_finished_event_dispatcher_unittest.cc
@@ -18,7 +18,6 @@
 #include "chrome/test/base/testing_profile.h"
 #include "chrome/test/base/testing_profile_manager.h"
 #include "content/public/test/browser_task_environment.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "extensions/browser/event_router.h"
 #include "extensions/browser/event_router_factory.h"
 #include "extensions/browser/test_event_router_observer.h"
@@ -96,7 +95,6 @@
 
  protected:
   content::BrowserTaskEnvironment task_environment_;
-  content::TestServiceManagerContext service_manager_context_;
   TestingProfile* testing_profile_;
   std::unique_ptr<TestEventRouterObserver> observer_;
 
diff --git a/chrome/browser/chromeos/file_manager/fileapi_util_unittest.cc b/chrome/browser/chromeos/file_manager/fileapi_util_unittest.cc
index 833e9337..786a3e8 100644
--- a/chrome/browser/chromeos/file_manager/fileapi_util_unittest.cc
+++ b/chrome/browser/chromeos/file_manager/fileapi_util_unittest.cc
@@ -16,7 +16,6 @@
 #include "chrome/test/base/testing_profile_manager.h"
 #include "content/public/browser/storage_partition.h"
 #include "content/public/test/browser_task_environment.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "content/public/test/test_utils.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/shell_dialogs/selected_file_info.h"
@@ -39,7 +38,6 @@
      ConvertSelectedFileInfoListToFileChooserFileInfoList) {
   // Prepare the test environment.
   content::BrowserTaskEnvironment task_environment_;
-  content::TestServiceManagerContext service_manager_context;
   TestingProfileManager profile_manager(TestingBrowserProcess::GetGlobal());
   ASSERT_TRUE(profile_manager.SetUp());
 
diff --git a/chrome/browser/chromeos/file_manager/path_util_unittest.cc b/chrome/browser/chromeos/file_manager/path_util_unittest.cc
index cf1d0acd..6216690 100644
--- a/chrome/browser/chromeos/file_manager/path_util_unittest.cc
+++ b/chrome/browser/chromeos/file_manager/path_util_unittest.cc
@@ -37,7 +37,6 @@
 #include "components/drive/drive_pref_names.h"
 #include "components/user_manager/scoped_user_manager.h"
 #include "content/public/test/browser_task_environment.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "storage/browser/file_system/external_mount_points.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -116,8 +115,6 @@
 }
 
 TEST_F(FileManagerPathUtilTest, GetPathDisplayTextForSettings) {
-  content::TestServiceManagerContext service_manager_context;
-
   EXPECT_EQ("Downloads", GetPathDisplayTextForSettings(
                              profile_.get(), "/home/chronos/user/Downloads"));
   EXPECT_EQ("Downloads",
@@ -288,7 +285,6 @@
 }
 
 TEST_F(FileManagerPathUtilTest, MigrateToDriveFs) {
-  content::TestServiceManagerContext service_manager_context;
   base::FilePath home("/home/chronos/u-0123456789abcdef");
   base::FilePath other("/some/other/path");
   base::FilePath old_drive("/special/drive-0123456789abcdef");
diff --git a/chrome/browser/chromeos/file_manager/volume_manager_unittest.cc b/chrome/browser/chromeos/file_manager/volume_manager_unittest.cc
index 11378e5..71378f23 100644
--- a/chrome/browser/chromeos/file_manager/volume_manager_unittest.cc
+++ b/chrome/browser/chromeos/file_manager/volume_manager_unittest.cc
@@ -36,7 +36,6 @@
 #include "components/storage_monitor/storage_info.h"
 #include "components/user_manager/user.h"
 #include "content/public/test/browser_task_environment.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "extensions/browser/extension_registry.h"
 #include "services/device/public/mojom/mtp_storage_info.mojom.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -267,7 +266,6 @@
   }
 
   content::BrowserTaskEnvironment task_environment_;
-  content::TestServiceManagerContext context_;
   std::unique_ptr<FakeDiskMountManager> disk_mount_manager_;
   std::unique_ptr<ProfileEnvironment> main_profile_;
 };
diff --git a/chrome/browser/chromeos/fileapi/external_file_url_loader_factory_unittest.cc b/chrome/browser/chromeos/fileapi/external_file_url_loader_factory_unittest.cc
index 73a6d08..e2944f9 100644
--- a/chrome/browser/chromeos/fileapi/external_file_url_loader_factory_unittest.cc
+++ b/chrome/browser/chromeos/fileapi/external_file_url_loader_factory_unittest.cc
@@ -20,7 +20,6 @@
 #include "content/public/common/url_constants.h"
 #include "content/public/test/browser_task_environment.h"
 #include "content/public/test/mock_render_process_host.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "mojo/public/cpp/system/data_pipe_utils.h"
 #include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
 #include "net/url_request/redirect_info.h"
@@ -106,7 +105,6 @@
 
  private:
   content::BrowserTaskEnvironment task_environment_;
-  content::TestServiceManagerContext context_;
 
   std::unique_ptr<ExternalFileURLLoaderFactory> url_loader_factory_;
 
diff --git a/chrome/browser/chromeos/login/DEPS b/chrome/browser/chromeos/login/DEPS
index e6d48d4..711312ab 100644
--- a/chrome/browser/chromeos/login/DEPS
+++ b/chrome/browser/chromeos/login/DEPS
@@ -12,4 +12,7 @@
     "+ash/system/status_area_widget.h",
     "+ash/system/unified/unified_system_tray.h",
   ],
+  "chrome_restart_request\.cc": [
+    "+media/capture/capture_export.h",
+  ],
 }
diff --git a/chrome/browser/chromeos/login/active_directory_login_browsertest.cc b/chrome/browser/chromeos/login/active_directory_login_browsertest.cc
index 0b186b13..044503d6 100644
--- a/chrome/browser/chromeos/login/active_directory_login_browsertest.cc
+++ b/chrome/browser/chromeos/login/active_directory_login_browsertest.cc
@@ -101,7 +101,13 @@
 }  // namespace
 
 // Test successful Active Directory login.
-IN_PROC_BROWSER_TEST_F(ActiveDirectoryLoginTest, LoginSuccess) {
+// TODO(https://crbug.com/1034481) Flaky on MSAN bots.
+#if defined(MEMORY_SANITIZER)
+#define MAYBE_LoginSuccess DISABLED_LoginSuccess
+#else
+#define MAYBE_LoginSuccess LoginSuccess
+#endif
+IN_PROC_BROWSER_TEST_F(ActiveDirectoryLoginTest, MAYBE_LoginSuccess) {
   OobeBaseTest::WaitForSigninScreen();
   ASSERT_TRUE(InstallAttributes::Get()->IsActiveDirectoryManaged());
   ad_login_.TestNoError();
@@ -112,7 +118,13 @@
 
 // Tests that the Kerberos SSO environment variables are set correctly after
 // an Active Directory log in.
-IN_PROC_BROWSER_TEST_F(ActiveDirectoryLoginTest, KerberosVarsCopied) {
+// TODO(https://crbug.com/1034481) Flaky on MSAN bots.
+#if defined(MEMORY_SANITIZER)
+#define MAYBE_KerberosVarsCopied DISABLED_KerberosVarsCopied
+#else
+#define MAYBE_KerberosVarsCopied KerberosVarsCopied
+#endif
+IN_PROC_BROWSER_TEST_F(ActiveDirectoryLoginTest, MAYBE_KerberosVarsCopied) {
   OobeBaseTest::WaitForSigninScreen();
   ad_login_.TestNoError();
   ad_login_.TestDomainHidden();
diff --git a/chrome/browser/chromeos/login/chrome_restart_request.cc b/chrome/browser/chromeos/login/chrome_restart_request.cc
index 29e36d4..7fcf12ba 100644
--- a/chrome/browser/chromeos/login/chrome_restart_request.cc
+++ b/chrome/browser/chromeos/login/chrome_restart_request.cc
@@ -43,6 +43,7 @@
 #include "content/public/common/content_switches.h"
 #include "gpu/command_buffer/service/gpu_switches.h"
 #include "media/base/media_switches.h"
+#include "media/capture/capture_switches.h"
 #include "media/media_buildflags.h"
 #include "services/service_manager/sandbox/switches.h"
 #include "third_party/cros_system_api/switches/chrome_switches.h"
diff --git a/chrome/browser/chromeos/login/lock/screen_locker_unittest.cc b/chrome/browser/chromeos/login/lock/screen_locker_unittest.cc
index d02c6f6e..bc43479 100644
--- a/chrome/browser/chromeos/login/lock/screen_locker_unittest.cc
+++ b/chrome/browser/chromeos/login/lock/screen_locker_unittest.cc
@@ -40,7 +40,6 @@
 #include "components/user_manager/scoped_user_manager.h"
 #include "content/public/browser/audio_service.h"
 #include "content/public/test/browser_task_environment.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "device/bluetooth/dbus/bluez_dbus_manager.h"
 #include "media/audio/test_audio_thread.h"
 #include "services/audio/public/cpp/sounds/audio_stream_handler.h"
@@ -114,9 +113,6 @@
   // Needed for main loop and posting async tasks.
   content::BrowserTaskEnvironment task_environment_;
 
-  // Needed to set up Service Manager and create mojo fakes.
-  content::TestServiceManagerContext context_;
-
   // ViewsScreenLocker dependencies:
   lock_screen_apps::StateController state_controller_;
   // * MojoSystemInfoDispatcher dependencies:
diff --git a/chrome/browser/chromeos/login/login_browsertest.cc b/chrome/browser/chromeos/login/login_browsertest.cc
index eb919550..00ce2a7 100644
--- a/chrome/browser/chromeos/login/login_browsertest.cc
+++ b/chrome/browser/chromeos/login/login_browsertest.cc
@@ -106,7 +106,8 @@
       shelf->GetStatusAreaWidget()->unified_system_tray();
   SCOPED_TRACE(testing::Message()
                << "ShelfVisibilityState=" << shelf->GetVisibilityState()
-               << " ShelfAutoHideBehavior=" << shelf->auto_hide_behavior());
+               << " ShelfAutoHideBehavior="
+               << static_cast<int>(shelf->auto_hide_behavior()));
   EXPECT_TRUE(tray->GetVisible());
 
   // This check flakes for LoginGuestTest: https://crbug.com/693106.
diff --git a/chrome/browser/chromeos/login/users/chrome_user_manager.cc b/chrome/browser/chromeos/login/users/chrome_user_manager.cc
index 76c29c2..9d62e98 100644
--- a/chrome/browser/chromeos/login/users/chrome_user_manager.cc
+++ b/chrome/browser/chromeos/login/users/chrome_user_manager.cc
@@ -21,8 +21,8 @@
 namespace chromeos {
 
 ChromeUserManager::ChromeUserManager(
-    scoped_refptr<base::TaskRunner> task_runner)
-    : UserManagerBase(task_runner) {}
+    scoped_refptr<base::SingleThreadTaskRunner> task_runner)
+    : UserManagerBase(std::move(task_runner)) {}
 
 ChromeUserManager::~ChromeUserManager() {}
 
diff --git a/chrome/browser/chromeos/login/users/chrome_user_manager.h b/chrome/browser/chromeos/login/users/chrome_user_manager.h
index 6bf426d..bf28ec2 100644
--- a/chrome/browser/chromeos/login/users/chrome_user_manager.h
+++ b/chrome/browser/chromeos/login/users/chrome_user_manager.h
@@ -7,7 +7,7 @@
 
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
-#include "base/task_runner.h"
+#include "base/single_thread_task_runner.h"
 #include "chrome/browser/chromeos/login/users/affiliation.h"
 #include "chrome/browser/chromeos/login/users/user_manager_interface.h"
 #include "chrome/browser/chromeos/policy/device_local_account_policy_service.h"
@@ -22,7 +22,8 @@
 class ChromeUserManager : public user_manager::UserManagerBase,
                           public UserManagerInterface {
  public:
-  explicit ChromeUserManager(scoped_refptr<base::TaskRunner> task_runner);
+  explicit ChromeUserManager(
+      scoped_refptr<base::SingleThreadTaskRunner> task_runner);
   ~ChromeUserManager() override;
 
   // user_manager::UserManagerBase:
diff --git a/chrome/browser/chromeos/login/users/chrome_user_manager_impl.cc b/chrome/browser/chromeos/login/users/chrome_user_manager_impl.cc
index a958909..b12675f2 100644
--- a/chrome/browser/chromeos/login/users/chrome_user_manager_impl.cc
+++ b/chrome/browser/chromeos/login/users/chrome_user_manager_impl.cc
@@ -29,7 +29,6 @@
 #include "base/strings/utf_string_conversions.h"
 #include "base/system/sys_info.h"
 #include "base/task/post_task.h"
-#include "base/task_runner.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/values.h"
 #include "chrome/browser/browser_process.h"
@@ -355,7 +354,7 @@
 ChromeUserManagerImpl::ChromeUserManagerImpl()
     : ChromeUserManager(base::ThreadTaskRunnerHandle::IsSet()
                             ? base::ThreadTaskRunnerHandle::Get()
-                            : scoped_refptr<base::TaskRunner>()),
+                            : nullptr),
       cros_settings_(CrosSettings::Get()),
       device_local_account_policy_service_(NULL),
       supervised_user_manager_(new SupervisedUserManagerImpl(this)) {
diff --git a/chrome/browser/chromeos/login/users/fake_chrome_user_manager.cc b/chrome/browser/chromeos/login/users/fake_chrome_user_manager.cc
index 4a1e6fb..ada21a54 100644
--- a/chrome/browser/chromeos/login/users/fake_chrome_user_manager.cc
+++ b/chrome/browser/chromeos/login/users/fake_chrome_user_manager.cc
@@ -9,6 +9,7 @@
 
 #include "base/callback.h"
 #include "base/command_line.h"
+#include "base/single_thread_task_runner.h"
 #include "base/system/sys_info.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/browser_process_platform_part.h"
@@ -33,7 +34,7 @@
 
 namespace {
 
-class FakeTaskRunner : public base::TaskRunner {
+class FakeTaskRunner : public base::SingleThreadTaskRunner {
  public:
   FakeTaskRunner() = default;
 
@@ -41,13 +42,18 @@
   ~FakeTaskRunner() override {}
 
  private:
-  // base::TaskRunner overrides.
+  // base::SingleThreadTaskRunner:
   bool PostDelayedTask(const base::Location& from_here,
                        base::OnceClosure task,
                        base::TimeDelta delay) override {
     std::move(task).Run();
     return true;
   }
+  bool PostNonNestableDelayedTask(const base::Location& from_here,
+                                  base::OnceClosure task,
+                                  base::TimeDelta delay) override {
+    return PostDelayedTask(from_here, std::move(task), delay);
+  }
   bool RunsTasksInCurrentSequence() const override { return true; }
 
   DISALLOW_COPY_AND_ASSIGN(FakeTaskRunner);
diff --git a/chrome/browser/chromeos/login/users/mock_user_manager.cc b/chrome/browser/chromeos/login/users/mock_user_manager.cc
index 2f6e4576..8ec73e8 100644
--- a/chrome/browser/chromeos/login/users/mock_user_manager.cc
+++ b/chrome/browser/chromeos/login/users/mock_user_manager.cc
@@ -6,20 +6,26 @@
 
 #include <utility>
 
-#include "base/task_runner.h"
+#include "base/single_thread_task_runner.h"
 #include "chrome/browser/chromeos/login/users/fake_supervised_user_manager.h"
 #include "chrome/browser/chromeos/profiles/profile_helper.h"
 
 namespace {
 
-class FakeTaskRunner : public base::TaskRunner {
+class FakeTaskRunner : public base::SingleThreadTaskRunner {
  public:
+  // base::SingleThreadTaskRunner:
   bool PostDelayedTask(const base::Location& from_here,
                        base::OnceClosure task,
                        base::TimeDelta delay) override {
     std::move(task).Run();
     return true;
   }
+  bool PostNonNestableDelayedTask(const base::Location& from_here,
+                                  base::OnceClosure task,
+                                  base::TimeDelta delay) override {
+    return PostDelayedTask(from_here, std::move(task), delay);
+  }
   bool RunsTasksInCurrentSequence() const override { return true; }
 
  protected:
diff --git a/chrome/browser/chromeos/ownership/owner_settings_service_chromeos.cc b/chrome/browser/chromeos/ownership/owner_settings_service_chromeos.cc
index eba432803..d370a90a 100644
--- a/chrome/browser/chromeos/ownership/owner_settings_service_chromeos.cc
+++ b/chrome/browser/chromeos/ownership/owner_settings_service_chromeos.cc
@@ -649,6 +649,7 @@
     //   kReportDeviceActivityTimes
     //   kReportDeviceBoardStatus
     //   kReportDeviceBootMode
+    //   kReportDeviceCpuInfo
     //   kReportDeviceHardwareStatus
     //   kReportDeviceLocation
     //   kReportDeviceNetworkInterfaces
diff --git a/chrome/browser/chromeos/plugin_vm/plugin_vm_manager_unittest.cc b/chrome/browser/chromeos/plugin_vm/plugin_vm_manager_unittest.cc
index a33e71a0..d560a681 100644
--- a/chrome/browser/chromeos/plugin_vm/plugin_vm_manager_unittest.cc
+++ b/chrome/browser/chromeos/plugin_vm/plugin_vm_manager_unittest.cc
@@ -70,6 +70,22 @@
     return chrome_launcher_controller_->GetShelfSpinnerController();
   }
 
+  void SetListVmsResponse(vm_tools::plugin_dispatcher::VmState state) {
+    vm_tools::plugin_dispatcher::ListVmResponse list_vms_response;
+    list_vms_response.add_vm_info()->set_state(state);
+    VmPluginDispatcherClient().set_list_vms_response(list_vms_response);
+  }
+
+  void NotifyVmStateChanged(vm_tools::plugin_dispatcher::VmState state) {
+    vm_tools::plugin_dispatcher::VmStateChangedSignal state_changed_signal;
+    state_changed_signal.set_owner_id(
+        chromeos::ProfileHelper::GetUserIdHashFromProfile(
+            testing_profile_.get()));
+    state_changed_signal.set_vm_name(kPluginVmName);
+    state_changed_signal.set_vm_state(state);
+    VmPluginDispatcherClient().NotifyVmStateChanged(state_changed_signal);
+  }
+
   content::BrowserTaskEnvironment task_environment_;
   std::unique_ptr<TestingProfile> testing_profile_;
   std::unique_ptr<PluginVmTestHelper> test_helper_;
@@ -103,10 +119,7 @@
   EXPECT_TRUE(IsPluginVmAllowedForProfile(testing_profile_.get()));
 
   // The PluginVmManager calls StartVm when the VM is not yet running.
-  vm_tools::plugin_dispatcher::ListVmResponse list_vms_response;
-  list_vms_response.add_vm_info()->set_state(
-      vm_tools::plugin_dispatcher::VmState::VM_STATE_STOPPED);
-  VmPluginDispatcherClient().set_list_vms_response(list_vms_response);
+  SetListVmsResponse(vm_tools::plugin_dispatcher::VmState::VM_STATE_STOPPED);
 
   plugin_vm_manager_->LaunchPluginVm();
   task_environment_.RunUntilIdle();
@@ -126,10 +139,7 @@
   EXPECT_TRUE(IsPluginVmAllowedForProfile(testing_profile_.get()));
 
   // The PluginVmManager skips calling StartVm when the VM is already running.
-  vm_tools::plugin_dispatcher::ListVmResponse list_vms_response;
-  list_vms_response.add_vm_info()->set_state(
-      vm_tools::plugin_dispatcher::VmState::VM_STATE_RUNNING);
-  VmPluginDispatcherClient().set_list_vms_response(list_vms_response);
+  SetListVmsResponse(vm_tools::plugin_dispatcher::VmState::VM_STATE_RUNNING);
 
   plugin_vm_manager_->LaunchPluginVm();
   task_environment_.RunUntilIdle();
@@ -158,14 +168,7 @@
   EXPECT_TRUE(
       chrome_launcher_controller_->IsOpen(ash::ShelfID(kPluginVmAppId)));
 
-  vm_tools::plugin_dispatcher::VmStateChangedSignal state_changed_signal;
-  state_changed_signal.set_owner_id(
-      chromeos::ProfileHelper::GetUserIdHashFromProfile(
-          testing_profile_.get()));
-  state_changed_signal.set_vm_name(kPluginVmName);
-  state_changed_signal.set_vm_state(
-      vm_tools::plugin_dispatcher::VmState::VM_STATE_RUNNING);
-  VmPluginDispatcherClient().NotifyVmStateChanged(state_changed_signal);
+  NotifyVmStateChanged(vm_tools::plugin_dispatcher::VmState::VM_STATE_RUNNING);
   task_environment_.RunUntilIdle();
   EXPECT_TRUE(ConciergeClient().get_vm_info_called());
   EXPECT_TRUE(base::DirectoryExists(
@@ -173,24 +176,19 @@
   EXPECT_TRUE(SeneschalClient().share_path_called());
   EXPECT_EQ(plugin_vm_manager_->seneschal_server_handle(), 1ul);
 
-  state_changed_signal.set_vm_state(
-      vm_tools::plugin_dispatcher::VmState::VM_STATE_STOPPED);
-  VmPluginDispatcherClient().NotifyVmStateChanged(state_changed_signal);
+  NotifyVmStateChanged(vm_tools::plugin_dispatcher::VmState::VM_STATE_STOPPED);
   task_environment_.RunUntilIdle();
   EXPECT_EQ(plugin_vm_manager_->seneschal_server_handle(), 0ul);
   EXPECT_FALSE(
       chrome_launcher_controller_->IsOpen(ash::ShelfID(kPluginVmAppId)));
 
   // Signals for RUNNING, then SUSPENDED.
-  state_changed_signal.set_vm_state(
-      vm_tools::plugin_dispatcher::VmState::VM_STATE_RUNNING);
-  VmPluginDispatcherClient().NotifyVmStateChanged(state_changed_signal);
+  NotifyVmStateChanged(vm_tools::plugin_dispatcher::VmState::VM_STATE_RUNNING);
   task_environment_.RunUntilIdle();
   EXPECT_EQ(plugin_vm_manager_->seneschal_server_handle(), 1ul);
 
-  state_changed_signal.set_vm_state(
+  NotifyVmStateChanged(
       vm_tools::plugin_dispatcher::VmState::VM_STATE_SUSPENDED);
-  VmPluginDispatcherClient().NotifyVmStateChanged(state_changed_signal);
   task_environment_.RunUntilIdle();
   EXPECT_EQ(plugin_vm_manager_->seneschal_server_handle(), 0ul);
 }
@@ -202,10 +200,7 @@
   // No spinner before doing anything
   EXPECT_FALSE(SpinnerController()->HasApp(kPluginVmAppId));
 
-  vm_tools::plugin_dispatcher::ListVmResponse list_vms_response;
-  list_vms_response.add_vm_info()->set_state(
-      vm_tools::plugin_dispatcher::VmState::VM_STATE_STOPPED);
-  VmPluginDispatcherClient().set_list_vms_response(list_vms_response);
+  SetListVmsResponse(vm_tools::plugin_dispatcher::VmState::VM_STATE_STOPPED);
 
   plugin_vm_manager_->LaunchPluginVm();
   task_environment_.RunUntilIdle();
@@ -228,19 +223,10 @@
   // delayed until an appropriate state change signal is received.
   test_helper_->AllowPluginVm();
 
-  vm_tools::plugin_dispatcher::VmStateChangedSignal state_changed_signal;
-  state_changed_signal.set_owner_id(
-      chromeos::ProfileHelper::GetUserIdHashFromProfile(
-          testing_profile_.get()));
-  state_changed_signal.set_vm_name(kPluginVmName);
-  state_changed_signal.set_vm_state(
+  NotifyVmStateChanged(
       vm_tools::plugin_dispatcher::VmState::VM_STATE_SUSPENDING);
-  VmPluginDispatcherClient().NotifyVmStateChanged(state_changed_signal);
 
-  vm_tools::plugin_dispatcher::ListVmResponse list_vms_response;
-  list_vms_response.add_vm_info()->set_state(
-      vm_tools::plugin_dispatcher::VmState::VM_STATE_SUSPENDING);
-  VmPluginDispatcherClient().set_list_vms_response(list_vms_response);
+  SetListVmsResponse(vm_tools::plugin_dispatcher::VmState::VM_STATE_SUSPENDING);
   plugin_vm_manager_->LaunchPluginVm();
   task_environment_.RunUntilIdle();
 
@@ -250,9 +236,8 @@
   EXPECT_TRUE(SpinnerController()->HasApp(kPluginVmAppId));
 
   // The launch process continues once the operation completes.
-  state_changed_signal.set_vm_state(
+  NotifyVmStateChanged(
       vm_tools::plugin_dispatcher::VmState::VM_STATE_SUSPENDED);
-  VmPluginDispatcherClient().NotifyVmStateChanged(state_changed_signal);
   task_environment_.RunUntilIdle();
 
   EXPECT_TRUE(VmPluginDispatcherClient().list_vms_called());
@@ -265,10 +250,7 @@
   EXPECT_TRUE(IsPluginVmAllowedForProfile(testing_profile_.get()));
 
   // The PluginVmManager calls StartVm when the VM is not yet running.
-  vm_tools::plugin_dispatcher::ListVmResponse list_vms_response;
-  list_vms_response.add_vm_info()->set_state(
-      vm_tools::plugin_dispatcher::VmState::VM_STATE_STOPPED);
-  VmPluginDispatcherClient().set_list_vms_response(list_vms_response);
+  SetListVmsResponse(vm_tools::plugin_dispatcher::VmState::VM_STATE_STOPPED);
 
   vm_tools::plugin_dispatcher::StartVmResponse start_vm_response;
   start_vm_response.set_error(
diff --git a/chrome/browser/chromeos/policy/device_policy_decoder_chromeos.cc b/chrome/browser/chromeos/policy/device_policy_decoder_chromeos.cc
index 8dcf31b8..cb4414e1 100644
--- a/chrome/browser/chromeos/policy/device_policy_decoder_chromeos.cc
+++ b/chrome/browser/chromeos/policy/device_policy_decoder_chromeos.cc
@@ -689,6 +689,12 @@
                       std::move(value), nullptr);
       }
     }
+    if (container.has_report_cpu_info()) {
+      policies->Set(key::kReportDeviceCpuInfo, POLICY_LEVEL_MANDATORY,
+                    POLICY_SCOPE_MACHINE, POLICY_SOURCE_CLOUD,
+                    std::make_unique<base::Value>(container.report_cpu_info()),
+                    nullptr);
+    }
   }
 
   if (policy.has_device_heartbeat_settings()) {
diff --git a/chrome/browser/chromeos/policy/scheduled_update_checker/device_scheduled_update_checker.cc b/chrome/browser/chromeos/policy/scheduled_update_checker/device_scheduled_update_checker.cc
index dff619a..e4646744 100644
--- a/chrome/browser/chromeos/policy/scheduled_update_checker/device_scheduled_update_checker.cc
+++ b/chrome/browser/chromeos/policy/scheduled_update_checker/device_scheduled_update_checker.cc
@@ -19,7 +19,6 @@
 #include "chrome/browser/chromeos/policy/scheduled_update_checker/task_executor_with_retries.h"
 #include "chromeos/settings/cros_settings_names.h"
 #include "chromeos/settings/timezone_settings.h"
-#include "services/device/public/mojom/constants.mojom.h"
 #include "third_party/icu/source/i18n/unicode/gregocal.h"
 #include "third_party/icu/source/i18n/unicode/ucal.h"
 
diff --git a/chrome/browser/chromeos/policy/scheduled_update_checker/device_scheduled_update_checker_unittest.cc b/chrome/browser/chromeos/policy/scheduled_update_checker/device_scheduled_update_checker_unittest.cc
index 0dd0da85..937c44fe 100644
--- a/chrome/browser/chromeos/policy/scheduled_update_checker/device_scheduled_update_checker_unittest.cc
+++ b/chrome/browser/chromeos/policy/scheduled_update_checker/device_scheduled_update_checker_unittest.cc
@@ -37,7 +37,6 @@
 #include "chromeos/tpm/stub_install_attributes.h"
 #include "components/policy/core/common/policy_service.h"
 #include "services/device/public/cpp/test/test_wake_lock_provider.h"
-#include "services/device/public/mojom/constants.mojom.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/cros_system_api/dbus/shill/dbus-constants.h"
 
diff --git a/chrome/browser/chromeos/policy/status_collector/device_status_collector.cc b/chrome/browser/chromeos/policy/status_collector/device_status_collector.cc
index ce8a4b5..a11e763b 100644
--- a/chrome/browser/chromeos/policy/status_collector/device_status_collector.cc
+++ b/chrome/browser/chromeos/policy/status_collector/device_status_collector.cc
@@ -745,6 +745,17 @@
         battery_info_out->set_manufacture_date(
             base::StringPrintf("%04d-%02d-%02d", year, month, day));
       }
+      const auto& cpu_info = probe_result->cpu_info;
+      if (cpu_info.has_value()) {
+        for (const auto& cpu : cpu_info.value()) {
+          em::CpuInfo* const cpu_info_out =
+              response_params_.device_status->add_cpu_info();
+          cpu_info_out->set_model_name(cpu->model_name);
+          cpu_info_out->set_architecture(
+              em::CpuInfo::Architecture(cpu->architecture));
+          cpu_info_out->set_max_clock_speed_khz(cpu->max_clock_speed_khz);
+        }
+      }
 
       for (const std::unique_ptr<SampledData>& sample_data : samples) {
         auto it = sample_data->battery_samples.find(battery_info->model_name);
@@ -897,6 +908,8 @@
       chromeos::kReportDeviceStorageStatus, callback);
   board_status_subscription_ = cros_settings_->AddSettingsObserver(
       chromeos::kReportDeviceBoardStatus, callback);
+  cpu_info_subscription_ = cros_settings_->AddSettingsObserver(
+      chromeos::kReportDeviceCpuInfo, callback);
 
   power_manager_->AddObserver(this);
 
@@ -998,6 +1011,10 @@
                                   &report_board_status_)) {
     report_board_status_ = false;
   }
+  if (!cros_settings_->GetBoolean(chromeos::kReportDeviceCpuInfo,
+                                  &report_cpu_info_)) {
+    report_cpu_info_ = false;
+  }
 
   if (!report_hardware_status_) {
     ClearCachedResourceUsage();
@@ -1270,6 +1287,8 @@
     categories_to_probe.push_back(ProbeCategoryEnum::kNonRemovableBlockDevices);
   if (report_power_status_)
     categories_to_probe.push_back(ProbeCategoryEnum::kBattery);
+  if (report_cpu_info_)
+    categories_to_probe.push_back(ProbeCategoryEnum::kCpu);
 
   auto sample = std::make_unique<SampledData>();
   sample->timestamp = base::Time::Now();
@@ -1291,6 +1310,10 @@
   std::move(callback).Run(std::move(reply), sampled_data_);
 }
 
+bool DeviceStatusCollector::ShouldFetchCrosHealthData() const {
+  return report_power_status_ || report_storage_status_ || report_cpu_info_;
+}
+
 void DeviceStatusCollector::ReportingUsersChanged() {
   std::vector<std::string> reporting_users;
   for (auto& value :
@@ -1614,8 +1637,10 @@
   // clear
   status->clear_cpu_temp_infos();
 
-  if (report_power_status_ || report_storage_status_) {
+  if (report_storage_status_)
     state->FetchEMMCLifeTime(emmc_lifetime_fetcher_);
+
+  if (ShouldFetchCrosHealthData()) {
     state->FetchCrosHealthdData(cros_healthd_data_fetcher_);
   } else {
     // Sample CPU temperature in a background thread.
diff --git a/chrome/browser/chromeos/policy/status_collector/device_status_collector.h b/chrome/browser/chromeos/policy/status_collector/device_status_collector.h
index 482acbd..9af5e63 100644
--- a/chrome/browser/chromeos/policy/status_collector/device_status_collector.h
+++ b/chrome/browser/chromeos/policy/status_collector/device_status_collector.h
@@ -306,6 +306,10 @@
       CrosHealthdDataReceiver callback,
       chromeos::cros_healthd::mojom::TelemetryInfoPtr reply);
 
+  // Returns true if data (e.g. CPU info, power status, etc.) should be fetched
+  // from cros_healthd.
+  bool ShouldFetchCrosHealthData() const;
+
   // Callback invoked when reporting users pref is changed.
   void ReportingUsersChanged();
 
@@ -398,6 +402,7 @@
   bool report_power_status_ = false;
   bool report_storage_status_ = false;
   bool report_board_status_ = false;
+  bool report_cpu_info_ = false;
 
   std::unique_ptr<chromeos::CrosSettings::ObserverSubscription>
       activity_times_subscription_;
@@ -419,6 +424,8 @@
       storage_status_subscription_;
   std::unique_ptr<chromeos::CrosSettings::ObserverSubscription>
       board_status_subscription_;
+  std::unique_ptr<chromeos::CrosSettings::ObserverSubscription>
+      cpu_info_subscription_;
 
   std::unique_ptr<PrefChangeRegistrar> pref_change_registrar_;
 
diff --git a/chrome/browser/chromeos/policy/status_collector/device_status_collector_browsertest.cc b/chrome/browser/chromeos/policy/status_collector/device_status_collector_browsertest.cc
index 79ca3f7b..26445a95 100644
--- a/chrome/browser/chromeos/policy/status_collector/device_status_collector_browsertest.cc
+++ b/chrome/browser/chromeos/policy/status_collector/device_status_collector_browsertest.cc
@@ -365,6 +365,7 @@
     const chromeos::cros_healthd::mojom::CachedVpdInfo& cached_vpd_info,
     const chromeos::cros_healthd::mojom::NonRemovableBlockDeviceInfo&
         storage_info,
+    const chromeos::cros_healthd::mojom::CpuInfo& cpu_info,
     const em::CPUTempInfo& cpu_sample,
     const em::BatterySample& battery_sample,
     policy::DeviceStatusCollector::CrosHealthdDataReceiver receiver) {
@@ -374,9 +375,11 @@
   base::Optional<std::vector<
       chromeos::cros_healthd::mojom::NonRemovableBlockDeviceInfoPtr>>
       block_device_info(std::move(storage_vector));
+  std::vector<chromeos::cros_healthd::mojom::CpuInfoPtr> cpu_vector;
+  cpu_vector.push_back(cpu_info.Clone());
   chromeos::cros_healthd::mojom::TelemetryInfo fake_info(
       battery_info.Clone(), std::move(block_device_info),
-      cached_vpd_info.Clone(), base::nullopt);
+      cached_vpd_info.Clone(), std::move(cpu_vector));
 
   auto sample = std::make_unique<policy::SampledData>();
   sample->cpu_samples[cpu_sample.cpu_label()] = cpu_sample;
@@ -2371,6 +2374,15 @@
   constexpr int kExpectedChargeNow = 5281;                        // (mAh)
   constexpr double kFakeChargeNow = kExpectedChargeNow / 1000.0;  // (Ah)
 
+  // CPU test values.
+  constexpr char kFakeModelName[] = "fake_cpu_model_name";
+  constexpr chromeos::cros_healthd::mojom::CpuArchitectureEnum
+      kFakeMojoArchitecture =
+          chromeos::cros_healthd::mojom::CpuArchitectureEnum::kX86_64;
+  constexpr em::CpuInfo::Architecture kFakeProtoArchitecture =
+      em::CpuInfo::X86_64;
+  constexpr uint32_t kFakeMaxClockSpeed = 3400000;
+
   // CPU Temperature test values.
   constexpr char kFakeCpuLabel[] = "fake_cpu_label";
   constexpr int kFakeCpuTemp = 91832;
@@ -2385,6 +2397,8 @@
   chromeos::cros_healthd::mojom::NonRemovableBlockDeviceInfo storage_info(
       kFakeStoragePath, kFakeStorageSize, kFakeStorageType, kFakeStorageManfid,
       kFakeStorageName, kFakeStorageSerial);
+  chromeos::cros_healthd::mojom::CpuInfo cpu_info(
+      kFakeModelName, kFakeMojoArchitecture, kFakeMaxClockSpeed);
 
   // Create a fake sample to test with.
   em::CPUTempInfo fake_cpu_temp_sample;
@@ -2407,22 +2421,29 @@
       base::BindRepeating(&GetEmptyEMMCLifetimeEstimation),
       base::BindRepeating(&GetEmptyStatefulPartitionInfo),
       base::BindRepeating(&GetFakeCrosHealthdData, battery_info,
-                          cached_vpd_info, storage_info, fake_cpu_temp_sample,
-                          fake_battery_sample));
+                          cached_vpd_info, storage_info, cpu_info,
+                          fake_cpu_temp_sample, fake_battery_sample));
 
-  // If neither kReportDevicePowerStatus nor kReportDeviceStorageStatus are set,
-  // expect that the data from cros_healthd isn't present in the protobuf.
+  // If kReportDeviceCpuInfo, kReportDevicePowerStatus, and
+  // kReportDeviceStorageStatus are false, expect that the data from
+  // cros_healthd isn't present in the protobuf.
+  scoped_testing_cros_settings_.device_settings()->SetBoolean(
+      chromeos::kReportDeviceCpuInfo, false);
   scoped_testing_cros_settings_.device_settings()->SetBoolean(
       chromeos::kReportDevicePowerStatus, false);
   scoped_testing_cros_settings_.device_settings()->SetBoolean(
       chromeos::kReportDeviceStorageStatus, false);
   GetStatus();
+  ASSERT_EQ(device_status_.cpu_info_size(), 0);
   EXPECT_FALSE(device_status_.has_power_status());
   EXPECT_FALSE(device_status_.has_storage_status());
   EXPECT_FALSE(device_status_.has_system_status());
 
-  // When kReportDevicePowerStatus and kReportDeviceStorageStatus are set,
-  // expect the protobuf to have the data from cros_healthd.
+  // When kReportDeviceCpuInfo, kReportDevicePowerStatus, and
+  // kReportDeviceStorageStatus are set, expect the protobuf to have the data
+  // from cros_healthd.
+  scoped_testing_cros_settings_.device_settings()->SetBoolean(
+      chromeos::kReportDeviceCpuInfo, true);
   scoped_testing_cros_settings_.device_settings()->SetBoolean(
       chromeos::kReportDevicePowerStatus, true);
   scoped_testing_cros_settings_.device_settings()->SetBoolean(
@@ -2468,6 +2489,13 @@
   // Verify the Cached VPD.
   ASSERT_TRUE(device_status_.has_system_status());
   EXPECT_EQ(device_status_.system_status().vpd_sku_number(), kFakeSkuNumber);
+
+  // Verify the CPU data.
+  ASSERT_EQ(device_status_.cpu_info_size(), 1);
+  const auto& cpu = device_status_.cpu_info(0);
+  EXPECT_EQ(cpu.model_name(), kFakeModelName);
+  EXPECT_EQ(cpu.architecture(), kFakeProtoArchitecture);
+  EXPECT_EQ(cpu.max_clock_speed_khz(), kFakeMaxClockSpeed);
 }
 
 // Fake device state.
diff --git a/chrome/browser/chromeos/power/smart_charging/smart_charging_manager.cc b/chrome/browser/chromeos/power/smart_charging/smart_charging_manager.cc
index a309083..0ff60e2 100644
--- a/chrome/browser/chromeos/power/smart_charging/smart_charging_manager.cc
+++ b/chrome/browser/chromeos/power/smart_charging/smart_charging_manager.cc
@@ -4,11 +4,13 @@
 
 #include "chrome/browser/chromeos/power/smart_charging/smart_charging_manager.h"
 
-#include <memory>
-
 #include "chrome/browser/chromeos/power/ml/recent_events_counter.h"
 #include "chromeos/constants/devicetype.h"
 #include "chromeos/dbus/power_manager/backlight.pb.h"
+#include "components/viz/host/host_frame_sink_manager.h"
+#include "services/metrics/public/cpp/metrics_utils.h"
+#include "ui/aura/env.h"
+#include "ui/compositor/compositor.h"
 
 namespace chromeos {
 namespace power {
@@ -17,30 +19,33 @@
 // Interval at which data should be logged.
 constexpr base::TimeDelta kLoggingInterval = base::TimeDelta::FromMinutes(30);
 
-// Count number of key, mouse and touch events in the past 30 minutes.
-constexpr base::TimeDelta kUserInputEventsDuration =
+// Count number of key, mouse, touch events or duration of audio/video playing
+// in the past 30 minutes.
+constexpr base::TimeDelta kUserActivityDuration =
     base::TimeDelta::FromMinutes(30);
 
 // Granularity of input events is per minute.
 constexpr int kNumUserInputEventsBuckets =
-    kUserInputEventsDuration / base::TimeDelta::FromMinutes(1);
+    kUserActivityDuration / base::TimeDelta::FromMinutes(1);
 }  // namespace
 
 SmartChargingManager::SmartChargingManager(
     ui::UserActivityDetector* detector,
+    mojo::PendingReceiver<viz::mojom::VideoDetectorObserver> receiver,
     std::unique_ptr<base::RepeatingTimer> periodic_timer)
     : periodic_timer_(std::move(periodic_timer)),
+      receiver_(this, std::move(receiver)),
       mouse_counter_(std::make_unique<ml::RecentEventsCounter>(
-          kUserInputEventsDuration,
+          kUserActivityDuration,
           kNumUserInputEventsBuckets)),
       key_counter_(std::make_unique<ml::RecentEventsCounter>(
-          kUserInputEventsDuration,
+          kUserActivityDuration,
           kNumUserInputEventsBuckets)),
       stylus_counter_(std::make_unique<ml::RecentEventsCounter>(
-          kUserInputEventsDuration,
+          kUserActivityDuration,
           kNumUserInputEventsBuckets)),
       touch_counter_(std::make_unique<ml::RecentEventsCounter>(
-          kUserInputEventsDuration,
+          kUserActivityDuration,
           kNumUserInputEventsBuckets)) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   DCHECK(detector);
@@ -60,9 +65,16 @@
   ui::UserActivityDetector* const detector = ui::UserActivityDetector::Get();
   DCHECK(detector);
 
+  mojo::PendingRemote<viz::mojom::VideoDetectorObserver> video_observer;
   std::unique_ptr<SmartChargingManager> screen_brightness_manager =
       std::make_unique<SmartChargingManager>(
-          detector, std::make_unique<base::RepeatingTimer>());
+          detector, video_observer.InitWithNewPipeAndPassReceiver(),
+          std::make_unique<base::RepeatingTimer>());
+
+  aura::Env::GetInstance()
+      ->context_factory_private()
+      ->GetHostFrameSinkManager()
+      ->AddVideoDetectorObserver(std::move(video_observer));
 
   return screen_brightness_manager;
 }
@@ -160,6 +172,19 @@
   LogEvent(UserChargingEvent::Event::SUSPEND);
 }
 
+void SmartChargingManager::OnVideoActivityStarted() {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  most_recent_video_start_time_ = boot_clock_.GetTimeSinceBoot();
+  is_video_playing_ = true;
+}
+
+void SmartChargingManager::OnVideoActivityEnded() {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  recent_video_usage_.push_back(TimePeriod(most_recent_video_start_time_,
+                                           boot_clock_.GetTimeSinceBoot()));
+  is_video_playing_ = false;
+}
+
 void SmartChargingManager::PopulateUserChargingEventProto(
     UserChargingEvent* proto) {
   auto& features = *proto->mutable_features();
@@ -178,6 +203,10 @@
   if (screen_brightness_percent_)
     features.set_screen_brightness_percent(
         static_cast<int>(screen_brightness_percent_.value()));
+
+  features.set_duration_recent_video_playing(
+      ukm::GetExponentialBucketMinForUserTiming(
+          DurationRecentVideoPlaying().InMinutes()));
 }
 
 void SmartChargingManager::LogEvent(
@@ -205,5 +234,28 @@
   }
 }
 
+base::TimeDelta SmartChargingManager::DurationRecentVideoPlaying() {
+  // Removes events that is out of |kUserActivityDuration|.
+  const base::TimeDelta start_of_duration =
+      boot_clock_.GetTimeSinceBoot() - kUserActivityDuration;
+  while (!recent_video_usage_.empty() &&
+         recent_video_usage_.front().end_time < start_of_duration) {
+    recent_video_usage_.pop_front();
+  }
+
+  // Calculates total time.
+  base::TimeDelta total_time = base::TimeDelta::FromSeconds(0);
+  for (const auto& event : recent_video_usage_) {
+    total_time += std::min(event.end_time - event.start_time,
+                           event.end_time - start_of_duration);
+  }
+  if (is_video_playing_) {
+    total_time +=
+        std::min(kUserActivityDuration, boot_clock_.GetTimeSinceBoot() -
+                                            most_recent_video_start_time_);
+  }
+  return total_time;
+}
+
 }  // namespace power
 }  // namespace chromeos
diff --git a/chrome/browser/chromeos/power/smart_charging/smart_charging_manager.h b/chrome/browser/chromeos/power/smart_charging/smart_charging_manager.h
index 74f765e..17513e1 100644
--- a/chrome/browser/chromeos/power/smart_charging/smart_charging_manager.h
+++ b/chrome/browser/chromeos/power/smart_charging/smart_charging_manager.h
@@ -16,6 +16,7 @@
 #include "chrome/browser/chromeos/power/smart_charging/user_charging_event.pb.h"
 #include "chromeos/dbus/power/power_manager_client.h"
 #include "mojo/public/cpp/bindings/receiver.h"
+#include "services/viz/public/mojom/compositing/video_detector_observer.mojom.h"
 #include "ui/base/user_activity/user_activity_detector.h"
 #include "ui/base/user_activity/user_activity_observer.h"
 
@@ -29,14 +30,27 @@
 // user charging events. It is currently used to log data and will be
 // extended to do inference in the future.
 class SmartChargingManager : public ui::UserActivityObserver,
-                             public PowerManagerClient::Observer {
+                             public PowerManagerClient::Observer,
+                             public viz::mojom::VideoDetectorObserver {
  public:
-  SmartChargingManager(ui::UserActivityDetector* detector,
-                       std::unique_ptr<base::RepeatingTimer> periodic_timer);
+  SmartChargingManager(
+      ui::UserActivityDetector* detector,
+      mojo::PendingReceiver<viz::mojom::VideoDetectorObserver> receiver,
+      std::unique_ptr<base::RepeatingTimer> periodic_timer);
   ~SmartChargingManager() override;
   SmartChargingManager(const SmartChargingManager&) = delete;
   SmartChargingManager& operator=(const SmartChargingManager&) = delete;
 
+  // Stores start time and end time of events.
+  struct TimePeriod {
+    TimePeriod(base::TimeDelta start, base::TimeDelta end) {
+      start_time = start;
+      end_time = end;
+    }
+    base::TimeDelta start_time;
+    base::TimeDelta end_time;
+  };
+
   static std::unique_ptr<SmartChargingManager> CreateInstance();
 
   // ui::UserActivityObserver overrides:
@@ -50,6 +64,10 @@
   void ShutdownRequested(power_manager::RequestShutdownReason reason) override;
   void SuspendImminent(power_manager::SuspendImminent::Reason reason) override;
 
+  // viz::mojom::VideoDetectorObserver overrides:
+  void OnVideoActivityStarted() override;
+  void OnVideoActivityEnded() override;
+
  private:
   friend class SmartChargingManagerTest;
 
@@ -66,6 +84,10 @@
   void OnReceiveScreenBrightnessPercent(
       base::Optional<double> screen_brightness_percent);
 
+  // Gets amount of time of video playing recently (e.g. in the last 30
+  // minutes).
+  base::TimeDelta DurationRecentVideoPlaying();
+
   ScopedObserver<ui::UserActivityDetector, ui::UserActivityObserver>
       user_activity_observer_{this};
 
@@ -80,12 +102,20 @@
   ml::BootClock boot_clock_;
   int event_id_ = -1;
 
+  const mojo::Receiver<viz::mojom::VideoDetectorObserver> receiver_;
+
   // Counters for user events.
   const std::unique_ptr<ml::RecentEventsCounter> mouse_counter_;
   const std::unique_ptr<ml::RecentEventsCounter> key_counter_;
   const std::unique_ptr<ml::RecentEventsCounter> stylus_counter_;
   const std::unique_ptr<ml::RecentEventsCounter> touch_counter_;
 
+  // A queue that stores recent video usage of the user.
+  base::circular_deque<TimePeriod> recent_video_usage_;
+  // Most recent time the user started playing video.
+  base::TimeDelta most_recent_video_start_time_;
+  bool is_video_playing_ = false;
+
   // TODO(crbug.com/1028853): This is for testing only. Need to remove when ukm
   // logger is available.
   UserChargingEvent user_charging_event_for_test_;
diff --git a/chrome/browser/chromeos/power/smart_charging/smart_charging_manager_unittest.cc b/chrome/browser/chromeos/power/smart_charging/smart_charging_manager_unittest.cc
index 94c155d..6bd13cec 100644
--- a/chrome/browser/chromeos/power/smart_charging/smart_charging_manager_unittest.cc
+++ b/chrome/browser/chromeos/power/smart_charging/smart_charging_manager_unittest.cc
@@ -30,11 +30,13 @@
     ChromeRenderViewHostTestHarness::SetUp();
     PowerManagerClient::InitializeFake();
 
+    mojo::PendingRemote<viz::mojom::VideoDetectorObserver> observer;
     auto periodic_timer = std::make_unique<base::RepeatingTimer>();
     periodic_timer->SetTaskRunner(
         task_environment()->GetMainThreadTaskRunner());
     smart_charging_manager_ = std::make_unique<SmartChargingManager>(
-        &user_activity_detector_, std::move(periodic_timer));
+        &user_activity_detector_, observer.InitWithNewPipeAndPassReceiver(),
+        std::move(periodic_timer));
   }
 
   void TearDown() override {
@@ -82,6 +84,10 @@
         power_manager::SuspendImminent::LID_CLOSED);
   }
 
+  void ReportVideoStart() { smart_charging_manager_->OnVideoActivityStarted(); }
+
+  void ReportVideoEnd() { smart_charging_manager_->OnVideoActivityEnded(); }
+
   void FireTimer() { smart_charging_manager_->OnTimerFired(); }
 
   void InitializeBrightness(const double level) {
@@ -92,6 +98,10 @@
     task_environment()->FastForwardBy(base::TimeDelta::FromSeconds(seconds));
   }
 
+  base::TimeDelta GetDurationRecentVideoPlaying() {
+    return smart_charging_manager_->DurationRecentVideoPlaying();
+  }
+
   const gfx::Point kEventLocation = gfx::Point(90, 90);
   const ui::MouseEvent kMouseEvent = ui::MouseEvent(ui::ET_MOUSE_MOVED,
                                                     kEventLocation,
@@ -222,5 +232,36 @@
             UserChargingEvent::Event::SHUTDOWN);
 }
 
+TEST_F(SmartChargingManagerTest, VideoDuration) {
+  // Video playing periods: [100, 200], [300, 500], [700, 800], [1500,2000].
+  FastForwardTimeBySecs(100);
+  ReportVideoStart();
+  FastForwardTimeBySecs(100);
+  ReportVideoEnd();
+  FastForwardTimeBySecs(100);
+  ReportVideoStart();
+  FastForwardTimeBySecs(200);
+  ReportVideoEnd();
+  FastForwardTimeBySecs(200);
+  ReportVideoStart();
+  FastForwardTimeBySecs(100);
+  ReportVideoEnd();
+  FastForwardTimeBySecs(700);
+  ReportVideoStart();
+  FastForwardTimeBySecs(300);
+
+  // At 1800s, total video playing time should be 700s.
+  EXPECT_EQ(GetDurationRecentVideoPlaying().InSeconds(), 700);
+
+  // At 2000s, total video playing time should be 800s.
+  FastForwardTimeBySecs(200);
+  ReportVideoEnd();
+  EXPECT_EQ(GetDurationRecentVideoPlaying().InSeconds(), 800);
+
+  // At 3600s, total video playing time should be 200s.
+  FastForwardTimeBySecs(1600);
+  EXPECT_EQ(GetDurationRecentVideoPlaying().InSeconds(), 200);
+}
+
 }  // namespace power
 }  // namespace chromeos
diff --git a/chrome/browser/chromeos/settings/device_settings_provider.cc b/chrome/browser/chromeos/settings/device_settings_provider.cc
index e273ccf5..43e49052 100644
--- a/chrome/browser/chromeos/settings/device_settings_provider.cc
+++ b/chrome/browser/chromeos/settings/device_settings_provider.cc
@@ -112,6 +112,7 @@
     kReportDeviceActivityTimes,
     kReportDeviceBoardStatus,
     kReportDeviceBootMode,
+    kReportDeviceCpuInfo,
     kReportDeviceHardwareStatus,
     kReportDeviceLocation,
     kReportDevicePowerStatus,
@@ -550,6 +551,10 @@
       new_values_cache->SetInteger(kReportUploadFrequency,
                                    reporting_policy.device_status_frequency());
     }
+    if (reporting_policy.has_report_cpu_info()) {
+      new_values_cache->SetBoolean(kReportDeviceCpuInfo,
+                                   reporting_policy.report_cpu_info());
+    }
   }
 }
 
diff --git a/chrome/browser/chromeos/sync/app_settings_model_type_controller.cc b/chrome/browser/chromeos/sync/app_settings_model_type_controller.cc
new file mode 100644
index 0000000..334c1ae
--- /dev/null
+++ b/chrome/browser/chromeos/sync/app_settings_model_type_controller.cc
@@ -0,0 +1,66 @@
+// 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 "chrome/browser/chromeos/sync/app_settings_model_type_controller.h"
+
+#include <utility>
+
+#include "chrome/browser/profiles/profile.h"
+#include "chromeos/constants/chromeos_features.h"
+#include "components/prefs/pref_service.h"
+#include "components/sync/base/model_type.h"
+#include "components/sync/base/pref_names.h"
+#include "components/sync/driver/sync_service.h"
+#include "extensions/browser/api/storage/backend_task_runner.h"
+#include "extensions/browser/extension_system.h"
+
+AppSettingsModelTypeController::AppSettingsModelTypeController(
+    syncer::OnceModelTypeStoreFactory store_factory,
+    SyncableServiceProvider syncable_service_provider,
+    const base::RepeatingClosure& dump_stack,
+    Profile* profile,
+    syncer::SyncService* sync_service)
+    : NonUiSyncableServiceBasedModelTypeController(
+          syncer::APP_SETTINGS,
+          std::move(store_factory),
+          std::move(syncable_service_provider),
+          dump_stack,
+          extensions::GetBackendTaskRunner(),
+          /*allow_transport_mode=*/true),
+      profile_(profile),
+      sync_service_(sync_service) {
+  DCHECK(chromeos::features::IsSplitSettingsSyncEnabled());
+  DCHECK(profile_);
+  DCHECK(sync_service_);
+  pref_registrar_.Init(profile_->GetPrefs());
+  pref_registrar_.Add(
+      syncer::prefs::kOsSyncFeatureEnabled,
+      base::BindRepeating(&AppSettingsModelTypeController::OnUserPrefChanged,
+                          base::Unretained(this)));
+}
+
+AppSettingsModelTypeController::~AppSettingsModelTypeController() = default;
+
+void AppSettingsModelTypeController::LoadModels(
+    const syncer::ConfigureContext& configure_context,
+    const ModelLoadCallback& model_load_callback) {
+  DCHECK(CalledOnValidThread());
+  extensions::ExtensionSystem::Get(profile_)->InitForRegularProfile(
+      /*extensions_enabled=*/true);
+  NonUiSyncableServiceBasedModelTypeController::LoadModels(configure_context,
+                                                           model_load_callback);
+}
+
+syncer::DataTypeController::PreconditionState
+AppSettingsModelTypeController::GetPreconditionState() const {
+  DCHECK(CalledOnValidThread());
+  return profile_->GetPrefs()->GetBoolean(syncer::prefs::kOsSyncFeatureEnabled)
+             ? PreconditionState::kPreconditionsMet
+             : PreconditionState::kMustStopAndClearData;
+}
+
+void AppSettingsModelTypeController::OnUserPrefChanged() {
+  DCHECK(CalledOnValidThread());
+  sync_service_->DataTypePreconditionChanged(type());
+}
diff --git a/chrome/browser/chromeos/sync/app_settings_model_type_controller.h b/chrome/browser/chromeos/sync/app_settings_model_type_controller.h
new file mode 100644
index 0000000..d42e3ad
--- /dev/null
+++ b/chrome/browser/chromeos/sync/app_settings_model_type_controller.h
@@ -0,0 +1,53 @@
+// 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 CHROME_BROWSER_CHROMEOS_SYNC_APP_SETTINGS_MODEL_TYPE_CONTROLLER_H_
+#define CHROME_BROWSER_CHROMEOS_SYNC_APP_SETTINGS_MODEL_TYPE_CONTROLLER_H_
+
+#include "base/callback_forward.h"
+#include "base/memory/weak_ptr.h"
+#include "components/prefs/pref_change_registrar.h"
+#include "components/sync/driver/non_ui_syncable_service_based_model_type_controller.h"
+#include "components/sync/model/model_type_store.h"
+
+class Profile;
+
+namespace syncer {
+class SyncService;
+}  // namespace syncer
+
+// Controller for sync of ModelType APP_SETTINGS on Chrome OS. Runs in sync
+// transport mode. Starts the extensions machinery when sync is starting.
+// Handles extension data on the extensions background thread.
+class AppSettingsModelTypeController
+    : public syncer::NonUiSyncableServiceBasedModelTypeController {
+ public:
+  AppSettingsModelTypeController(
+      syncer::OnceModelTypeStoreFactory store_factory,
+      SyncableServiceProvider syncable_service_provider,
+      const base::RepeatingClosure& dump_stack,
+      Profile* profile,
+      syncer::SyncService* sync_service);
+  ~AppSettingsModelTypeController() override;
+
+  AppSettingsModelTypeController(const AppSettingsModelTypeController&) =
+      delete;
+  AppSettingsModelTypeController& operator=(
+      const AppSettingsModelTypeController&) = delete;
+
+  // DataTypeController:
+  void LoadModels(const syncer::ConfigureContext& configure_context,
+                  const ModelLoadCallback& model_load_callback) override;
+  PreconditionState GetPreconditionState() const override;
+
+ private:
+  // Callback for changes to the OS sync feature enabled pref.
+  void OnUserPrefChanged();
+
+  Profile* const profile_;
+  syncer::SyncService* const sync_service_;
+  PrefChangeRegistrar pref_registrar_;
+};
+
+#endif  // CHROME_BROWSER_CHROMEOS_SYNC_APP_SETTINGS_MODEL_TYPE_CONTROLLER_H_
diff --git a/chrome/browser/content_settings/sound_content_setting_observer_unittest.cc b/chrome/browser/content_settings/sound_content_setting_observer_unittest.cc
index e267e6a..899ae4c 100644
--- a/chrome/browser/content_settings/sound_content_setting_observer_unittest.cc
+++ b/chrome/browser/content_settings/sound_content_setting_observer_unittest.cc
@@ -15,7 +15,6 @@
 #include "components/content_settings/core/browser/host_content_settings_map.h"
 #include "components/ukm/content/source_url_recorder.h"
 #include "components/ukm/test_ukm_recorder.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "content/public/test/web_contents_tester.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -44,9 +43,6 @@
   void SetUp() override {
     ChromeRenderViewHostTestHarness::SetUp();
 
-    test_service_manager_context_ =
-        std::make_unique<content::TestServiceManagerContext>();
-
     RecentlyAudibleHelper::CreateForWebContents(web_contents());
     SoundContentSettingObserver::CreateForWebContents(web_contents());
     ukm::InitializeSourceUrlRecorderForWebContents(web_contents());
@@ -57,12 +53,6 @@
     NavigateAndCommit(GURL(kURL1));
   }
 
-  void TearDown() override {
-    // Must be reset before browser thread teardown.
-    test_service_manager_context_.reset();
-    ChromeRenderViewHostTestHarness::TearDown();
-  }
-
  protected:
   void ChangeSoundContentSettingTo(ContentSetting setting) {
     GURL url = web_contents()->GetLastCommittedURL();
@@ -110,11 +100,6 @@
   HostContentSettingsMap* host_content_settings_map_;
   std::unique_ptr<ukm::TestUkmRecorder> test_ukm_recorder_;
 
-  // WebContentsImpl accesses the system Connector, so make sure the Service
-  // Manager is initialized.
-  std::unique_ptr<content::TestServiceManagerContext>
-      test_service_manager_context_;
-
   DISALLOW_COPY_AND_ASSIGN(SoundContentSettingObserverTest);
 };
 
diff --git a/chrome/browser/devtools/devtools_ui_bindings.cc b/chrome/browser/devtools/devtools_ui_bindings.cc
index 8b862f45..c817854 100644
--- a/chrome/browser/devtools/devtools_ui_bindings.cc
+++ b/chrome/browser/devtools/devtools_ui_bindings.cc
@@ -839,7 +839,7 @@
   resource_request.url = gurl;
   // TODO(caseq): this preserves behavior of URLFetcher-based implementation.
   // We really need to pass proper first party origin from the front-end.
-  resource_request.site_for_cookies = gurl;
+  resource_request.site_for_cookies = net::SiteForCookies::FromUrl(gurl);
   resource_request.headers.AddHeadersFromString(headers);
 
   NetworkResourceLoader::URLLoaderFactoryHolder url_loader_factory;
diff --git a/chrome/browser/devtools/devtools_window.cc b/chrome/browser/devtools/devtools_window.cc
index 283e61c..a3313ef 100644
--- a/chrome/browser/devtools/devtools_window.cc
+++ b/chrome/browser/devtools/devtools_window.cc
@@ -38,7 +38,7 @@
 #include "chrome/common/pref_names.h"
 #include "chrome/common/url_constants.h"
 #include "components/app_modal/javascript_dialog_manager.h"
-#include "components/performance_manager/performance_manager_tab_helper.h"
+#include "components/performance_manager/embedder/performance_manager_registry.h"
 #include "components/pref_registry/pref_registry_syncable.h"
 #include "components/prefs/scoped_user_pref_update.h"
 #include "components/sync_preferences/pref_service_syncable.h"
@@ -962,8 +962,8 @@
   zoom::ZoomController::CreateForWebContents(main_web_contents_);
   zoom::ZoomController::FromWebContents(main_web_contents_)
       ->SetShowsNotificationBubble(false);
-  performance_manager::PerformanceManagerTabHelper::CreateForWebContents(
-      main_web_contents_);
+  performance_manager::PerformanceManagerRegistry::GetInstance()
+      ->CreatePageNodeForWebContents(main_web_contents_);
 
   g_devtools_window_instances.Get().push_back(this);
 
diff --git a/chrome/browser/devtools/protocol/security_handler.cc b/chrome/browser/devtools/protocol/security_handler.cc
index 14f991e..03b2d85 100644
--- a/chrome/browser/devtools/protocol/security_handler.cc
+++ b/chrome/browser/devtools/protocol/security_handler.cc
@@ -38,14 +38,12 @@
 const char kCertMissingSubjectAltName[] = "cert-missing-subject-alt-name";
 
 std::string SecurityLevelToProtocolSecurityState(
-    security_state::SecurityLevel security_level,
-    GURL url) {
+    security_state::SecurityLevel security_level) {
   switch (security_level) {
     case security_state::NONE:
+      return protocol::Security::SecurityStateEnum::Neutral;
     case security_state::WARNING:
-      if (security_state::ShouldDowngradeNeutralStyling(
-              security_level, url,
-              base::BindRepeating(&content::IsOriginSecure)))
+      if (security_state::ShouldShowDangerTriangleForWarningLevel())
         return protocol::Security::SecurityStateEnum::Insecure;
       return protocol::Security::SecurityStateEnum::Neutral;
     case security_state::SECURE_WITH_POLICY_INSTALLED_CERT:
@@ -189,8 +187,8 @@
       SecurityStateTabHelper::FromWebContents(web_contents);
   DCHECK(helper);
   auto state = helper->GetVisibleSecurityState();
-  std::string security_state = SecurityLevelToProtocolSecurityState(
-      helper->GetSecurityLevel(), state->url);
+  std::string security_state =
+      SecurityLevelToProtocolSecurityState(helper->GetSecurityLevel());
 
   bool scheme_is_cryptographic =
       security_state::IsSchemeCryptographic(state->url);
diff --git a/chrome/browser/download/download_danger_prompt.cc b/chrome/browser/download/download_danger_prompt.cc
index 7c6c282..b13b156 100644
--- a/chrome/browser/download/download_danger_prompt.cc
+++ b/chrome/browser/download/download_danger_prompt.cc
@@ -51,6 +51,8 @@
       return "DeepScannedSafe";
     case download::DOWNLOAD_DANGER_TYPE_DEEP_SCANNED_OPENED_DANGEROUS:
       return "DeepScannedOpenedDangerous";
+    case download::DOWNLOAD_DANGER_TYPE_PROMPT_FOR_SCANNING:
+      return "PromptForScanning";
     case download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS:
     case download::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT:
     case download::DOWNLOAD_DANGER_TYPE_USER_VALIDATED:
diff --git a/chrome/browser/download/download_item_model.cc b/chrome/browser/download/download_item_model.cc
index d14a89c4..06b66a4 100644
--- a/chrome/browser/download/download_item_model.cc
+++ b/chrome/browser/download/download_item_model.cc
@@ -230,6 +230,7 @@
     case download::DOWNLOAD_DANGER_TYPE_DEEP_SCANNED_OPENED_DANGEROUS:
     case download::DOWNLOAD_DANGER_TYPE_SENSITIVE_CONTENT_WARNING:
     case download::DOWNLOAD_DANGER_TYPE_SENSITIVE_CONTENT_BLOCK:
+    case download::DOWNLOAD_DANGER_TYPE_PROMPT_FOR_SCANNING:
       return true;
 
     case download::DOWNLOAD_DANGER_TYPE_DEEP_SCANNED_SAFE:
@@ -277,6 +278,7 @@
     case download::DOWNLOAD_DANGER_TYPE_SENSITIVE_CONTENT_WARNING:
     case download::DOWNLOAD_DANGER_TYPE_SENSITIVE_CONTENT_BLOCK:
     case download::DOWNLOAD_DANGER_TYPE_DEEP_SCANNED_SAFE:
+    case download::DOWNLOAD_DANGER_TYPE_PROMPT_FOR_SCANNING:
       return false;
   }
   NOTREACHED();
diff --git a/chrome/browser/download/download_prefs_unittest.cc b/chrome/browser/download/download_prefs_unittest.cc
index 7a30998..85bb211d 100644
--- a/chrome/browser/download/download_prefs_unittest.cc
+++ b/chrome/browser/download/download_prefs_unittest.cc
@@ -17,7 +17,6 @@
 #include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h"
 #include "chrome/browser/chromeos/profiles/profile_helper.h"
 #include "components/drive/drive_pref_names.h"
-#include "content/public/test/test_service_manager_context.h"
 #endif
 
 using safe_browsing::FileTypePolicies;
@@ -184,7 +183,6 @@
 
 TEST(DownloadPrefsTest, DownloadDirSanitization) {
   content::BrowserTaskEnvironment task_environment_;
-  content::TestServiceManagerContext service_manager_context;
   TestingProfile profile(base::FilePath("/home/chronos/u-0123456789abcdef"));
   DownloadPrefs prefs(&profile);
   const base::FilePath default_dir =
diff --git a/chrome/browser/download/download_ui_model.cc b/chrome/browser/download/download_ui_model.cc
index cb684f9..8144514e 100644
--- a/chrome/browser/download/download_ui_model.cc
+++ b/chrome/browser/download/download_ui_model.cc
@@ -308,6 +308,7 @@
       return l10n_util::GetStringFUTF16(
           IDS_PROMPT_DOWNLOAD_SENSITIVE_CONTENT_BLOCKED, elided_filename);
     }
+    case download::DOWNLOAD_DANGER_TYPE_PROMPT_FOR_SCANNING:
     case download::DOWNLOAD_DANGER_TYPE_DEEP_SCANNED_SAFE:
     case download::DOWNLOAD_DANGER_TYPE_DEEP_SCANNED_OPENED_DANGEROUS:
     case download::DOWNLOAD_DANGER_TYPE_ASYNC_SCANNING:
diff --git a/chrome/browser/download/notification/download_item_notification.cc b/chrome/browser/download/notification/download_item_notification.cc
index e06f0c7..58de6f0 100644
--- a/chrome/browser/download/notification/download_item_notification.cc
+++ b/chrome/browser/download/notification/download_item_notification.cc
@@ -728,6 +728,7 @@
       return l10n_util::GetStringFUTF16(IDS_PROMPT_DOWNLOAD_CHANGES_SETTINGS,
                                         elided_filename);
     }
+    case download::DOWNLOAD_DANGER_TYPE_PROMPT_FOR_SCANNING:
     case download::DOWNLOAD_DANGER_TYPE_SENSITIVE_CONTENT_WARNING:
     case download::DOWNLOAD_DANGER_TYPE_SENSITIVE_CONTENT_BLOCK:
     case download::DOWNLOAD_DANGER_TYPE_DEEP_SCANNED_SAFE:
diff --git a/chrome/browser/extensions/api/chrome_extensions_api_client.cc b/chrome/browser/extensions/api/chrome_extensions_api_client.cc
index 10b8986f..a9f2ae9 100644
--- a/chrome/browser/extensions/api/chrome_extensions_api_client.cc
+++ b/chrome/browser/extensions/api/chrome_extensions_api_client.cc
@@ -46,7 +46,7 @@
 #include "chrome/common/url_constants.h"
 #include "chrome/common/webui_url_constants.h"
 #include "components/pdf/browser/pdf_web_contents_helper.h"
-#include "components/performance_manager/performance_manager_tab_helper.h"
+#include "components/performance_manager/embedder/performance_manager_registry.h"
 #include "components/performance_manager/public/performance_manager.h"
 #include "components/signin/core/browser/signin_header_helper.h"
 #include "content/public/browser/browser_context.h"
@@ -108,9 +108,9 @@
 
   extensions::ChromeExtensionWebContentsObserver::CreateForWebContents(
       web_contents);
-  if (performance_manager::PerformanceManager::IsAvailable()) {
-    performance_manager::PerformanceManagerTabHelper::CreateForWebContents(
-        web_contents);
+  if (auto* performance_manager_registry =
+          performance_manager::PerformanceManagerRegistry::GetInstance()) {
+    performance_manager_registry->CreatePageNodeForWebContents(web_contents);
   }
 }
 
diff --git a/chrome/browser/extensions/api/downloads/downloads_api.cc b/chrome/browser/extensions/api/downloads/downloads_api.cc
index 51009e7..e79d9d08 100644
--- a/chrome/browser/extensions/api/downloads/downloads_api.cc
+++ b/chrome/browser/extensions/api/downloads/downloads_api.cc
@@ -152,6 +152,7 @@
 const char kDangerSensitiveContentBlock[] = "sensitiveContentBlock";
 const char kDangerDeepScannedSafe[] = "deepScannedSafe";
 const char kDangerDeepScannedOpenedDangerous[] = "deepScannedOpenedDangerous";
+const char kDangerPromptForScanning[] = "promptForScanning";
 const char kDangerUrl[] = "url";
 const char kEndTimeKey[] = "endTime";
 const char kEndedAfterKey[] = "endedAfter";
@@ -201,7 +202,8 @@
                                       kDangerSensitiveContentWarning,
                                       kDangerSensitiveContentBlock,
                                       kDangerDeepScannedSafe,
-                                      kDangerDeepScannedOpenedDangerous};
+                                      kDangerDeepScannedOpenedDangerous,
+                                      kDangerPromptForScanning};
 static_assert(base::size(kDangerStrings) == download::DOWNLOAD_DANGER_TYPE_MAX,
               "kDangerStrings should have DOWNLOAD_DANGER_TYPE_MAX elements");
 
diff --git a/chrome/browser/extensions/api/management/management_browsertest.cc b/chrome/browser/extensions/api/management/management_browsertest.cc
index 265e4a2..ed3d7a5 100644
--- a/chrome/browser/extensions/api/management/management_browsertest.cc
+++ b/chrome/browser/extensions/api/management/management_browsertest.cc
@@ -42,7 +42,6 @@
 #include "extensions/browser/updater/extension_downloader.h"
 #include "extensions/test/extension_test_message_listener.h"
 #include "extensions/test/test_background_page_first_load_observer.h"
-#include "net/url_request/test_url_request_interceptor.h"
 #include "testing/gmock/include/gmock/gmock.h"
 
 using content::BrowserThread;
diff --git a/chrome/browser/extensions/api/omnibox/omnibox_api_interactive_test.cc b/chrome/browser/extensions/api/omnibox/omnibox_api_interactive_test.cc
index 08c9d4f..0ef0acf 100644
--- a/chrome/browser/extensions/api/omnibox/omnibox_api_interactive_test.cc
+++ b/chrome/browser/extensions/api/omnibox/omnibox_api_interactive_test.cc
@@ -437,7 +437,9 @@
 }
 
 // Tests typing something but not staying in keyword mode.
-IN_PROC_BROWSER_TEST_F(OmniboxApiTest, ExtensionSuggestionsOnlyInKeywordMode) {
+// Test is flaky. crbug.com/1030219
+IN_PROC_BROWSER_TEST_F(OmniboxApiTest,
+                       DISABLED_ExtensionSuggestionsOnlyInKeywordMode) {
   ASSERT_TRUE(RunExtensionTest("omnibox")) << message_;
 
   // The results depend on the TemplateURLService being loaded. Make sure it is
diff --git a/chrome/browser/extensions/api/page_capture/page_capture_apitest.cc b/chrome/browser/extensions/api/page_capture/page_capture_apitest.cc
index 387f41f..9169507 100644
--- a/chrome/browser/extensions/api/page_capture/page_capture_apitest.cc
+++ b/chrome/browser/extensions/api/page_capture/page_capture_apitest.cc
@@ -78,7 +78,7 @@
 // TODO(crbug.com/961017): Fix memory leaks in tests and re-enable on LSAN.
 // Also flaky-failing on slow (debug) bots: https://crbug.com/1017305
 #if defined(LEAK_SANITIZER) || !defined(NDEBUG) || \
-    defined(ADDRESS_SANITIZER) || defined(OS_WIN)
+    defined(ADDRESS_SANITIZER) || defined(OS_MACOSX) || defined(OS_WIN)
 #define MAYBE_SaveAsMHTML DISABLED_SaveAsMHTML
 #else
 #define MAYBE_SaveAsMHTML SaveAsMHTML
diff --git a/chrome/browser/extensions/api/sessions/sessions_api.cc b/chrome/browser/extensions/api/sessions/sessions_api.cc
index 7d2d33e..f130ece 100644
--- a/chrome/browser/extensions/api/sessions/sessions_api.cc
+++ b/chrome/browser/extensions/api/sessions/sessions_api.cc
@@ -242,6 +242,11 @@
     const std::string& session_tag) {
   DCHECK(!window.tabs.empty());
 
+  // Ignore app popup window for now because we do not have a corresponding
+  // api::windows::WindowType value.
+  if (window.type == sessions::SessionWindow::TYPE_APP_POPUP)
+    return nullptr;
+
   // Prune tabs that are not syncable or are NewTabPage. Then, sort the tabs
   // from most recent to least recent.
   std::vector<const sessions::SessionTab*> tabs_in_window;
@@ -286,6 +291,8 @@
     case sessions::SessionWindow::TYPE_DEVTOOLS:
       type = api::windows::WINDOW_TYPE_DEVTOOLS;
       break;
+    case sessions::SessionWindow::TYPE_APP_POPUP:
+      NOTREACHED();
   }
 
   api::windows::WindowState state = api::windows::WINDOW_STATE_NONE;
diff --git a/chrome/browser/extensions/api/virtual_keyboard_private/chrome_virtual_keyboard_delegate.cc b/chrome/browser/extensions/api/virtual_keyboard_private/chrome_virtual_keyboard_delegate.cc
index 8606e917..4545e10de 100644
--- a/chrome/browser/extensions/api/virtual_keyboard_private/chrome_virtual_keyboard_delegate.cc
+++ b/chrome/browser/extensions/api/virtual_keyboard_private/chrome_virtual_keyboard_delegate.cc
@@ -407,6 +407,9 @@
       "resizablefloatingkeyboard",
       base::FeatureList::IsEnabled(
           chromeos::features::kVirtualKeyboardFloatingResizable)));
+  features->AppendString(GenerateFeatureFlag(
+      "nativerulebased", base::FeatureList::IsEnabled(
+                             chromeos::features::kNativeRuleBasedTyping)));
 
   results->Set("features", std::move(features));
 
diff --git a/chrome/browser/extensions/api/web_request/web_request_apitest.cc b/chrome/browser/extensions/api/web_request/web_request_apitest.cc
index 5b47f14..6ba99dd 100644
--- a/chrome/browser/extensions/api/web_request/web_request_apitest.cc
+++ b/chrome/browser/extensions/api/web_request/web_request_apitest.cc
@@ -2718,7 +2718,7 @@
   }
 };
 
-INSTANTIATE_TEST_SUITE_P(/* No prefix */,
+INSTANTIATE_TEST_SUITE_P(All,
                          ServiceWorkerWebRequestApiTest,
                          ::testing::Bool());
 
diff --git a/chrome/browser/extensions/app_data_migrator.cc b/chrome/browser/extensions/app_data_migrator.cc
index abe7c05..c7015ec 100644
--- a/chrome/browser/extensions/app_data_migrator.cc
+++ b/chrome/browser/extensions/app_data_migrator.cc
@@ -13,6 +13,7 @@
 #include "content/public/browser/indexed_db_context.h"
 #include "content/public/browser/storage_partition.h"
 #include "extensions/browser/extension_registry.h"
+#include "extensions/browser/extension_util.h"
 #include "extensions/common/extension.h"
 #include "storage/browser/file_system/file_system_context.h"
 #include "storage/browser/file_system/sandbox_file_system_backend_delegate.h"
@@ -156,16 +157,15 @@
 
   // This should retrieve the general storage partition.
   content::StoragePartition* old_partition =
-      BrowserContext::GetStoragePartitionForSite(
-          profile_, Extension::GetBaseURLFromExtensionId(extension->id()));
+      util::GetStoragePartitionForExtensionId(extension->id(), profile_);
 
   // Enable the new extension so we can access its storage partition.
   bool old_was_disabled = registry_->AddEnabled(extension);
 
   // This should create a new isolated partition for the new version of the
   // extension.
-  StoragePartition* new_partition = BrowserContext::GetStoragePartitionForSite(
-      profile_, Extension::GetBaseURLFromExtensionId(extension->id()));
+  StoragePartition* new_partition =
+      util::GetStoragePartitionForExtensionId(extension->id(), profile_);
 
   // Now, restore the enabled/disabled state of the new and old extensions.
   if (old_was_disabled)
diff --git a/chrome/browser/extensions/app_data_migrator_unittest.cc b/chrome/browser/extensions/app_data_migrator_unittest.cc
index ace0db65..b07186b 100644
--- a/chrome/browser/extensions/app_data_migrator_unittest.cc
+++ b/chrome/browser/extensions/app_data_migrator_unittest.cc
@@ -20,6 +20,7 @@
 #include "content/public/test/browser_task_environment.h"
 #include "content/public/test/test_utils.h"
 #include "extensions/browser/extension_registry.h"
+#include "extensions/browser/extension_util.h"
 #include "extensions/common/extension.h"
 #include "extensions/common/extension_builder.h"
 #include "extensions/common/manifest.h"
@@ -35,7 +36,7 @@
   TestingProfile::Builder profile_builder;
   return profile_builder.Build();
 }
-}
+}  // namespace
 
 namespace extensions {
 
@@ -268,12 +269,8 @@
   content::RunAllTasksUntilIdle();
 
   registry_->AddEnabled(new_ext);
-  GURL extension_url =
-      extensions::Extension::GetBaseURLFromExtensionId(new_ext->id());
-
   content::StoragePartition* new_partition =
-      content::BrowserContext::GetStoragePartitionForSite(profile_.get(),
-                                                          extension_url);
+      util::GetStoragePartitionForExtensionId(new_ext->id(), profile_.get());
 
   ASSERT_NE(new_partition->GetPath(), default_partition_->GetPath());
 
diff --git a/chrome/browser/extensions/chrome_extension_host_delegate.cc b/chrome/browser/extensions/chrome_extension_host_delegate.cc
index 815c276..54852f6 100644
--- a/chrome/browser/extensions/chrome_extension_host_delegate.cc
+++ b/chrome/browser/extensions/chrome_extension_host_delegate.cc
@@ -16,8 +16,7 @@
 #include "chrome/browser/picture_in_picture/picture_in_picture_window_manager.h"
 #include "chrome/browser/ui/prefs/prefs_tab_helper.h"
 #include "components/app_modal/javascript_dialog_manager.h"
-#include "components/performance_manager/performance_manager_tab_helper.h"
-#include "components/performance_manager/public/performance_manager.h"
+#include "components/performance_manager/embedder/performance_manager_registry.h"
 #include "extensions/browser/extension_host.h"
 #include "extensions/browser/extension_system.h"
 
@@ -33,9 +32,9 @@
   PrefsTabHelper::CreateForWebContents(web_contents);
   apps::AudioFocusWebContentsObserver::CreateForWebContents(web_contents);
 
-  if (performance_manager::PerformanceManager::IsAvailable()) {
-    performance_manager::PerformanceManagerTabHelper::CreateForWebContents(
-        web_contents);
+  if (auto* performance_manager_registry =
+          performance_manager::PerformanceManagerRegistry::GetInstance()) {
+    performance_manager_registry->CreatePageNodeForWebContents(web_contents);
   }
 }
 
diff --git a/chrome/browser/extensions/data_deleter.cc b/chrome/browser/extensions/data_deleter.cc
index 3b41e72b..18035c4 100644
--- a/chrome/browser/extensions/data_deleter.cc
+++ b/chrome/browser/extensions/data_deleter.cc
@@ -97,9 +97,8 @@
     GURL launch_web_url_origin(
         AppLaunchInfo::GetLaunchWebURL(extension).GetOrigin());
 
-    StoragePartition* partition = BrowserContext::GetStoragePartitionForSite(
-        profile,
-        Extension::GetBaseURLFromExtensionId(extension->id()));
+    StoragePartition* partition =
+        util::GetStoragePartitionForExtensionId(extension->id(), profile);
 
     ExtensionSpecialStoragePolicy* storage_policy =
         profile->GetExtensionSpecialStoragePolicy();
diff --git a/chrome/browser/extensions/extension_disabled_ui_browsertest.cc b/chrome/browser/extensions/extension_disabled_ui_browsertest.cc
index 50491a78..bc8d97f 100644
--- a/chrome/browser/extensions/extension_disabled_ui_browsertest.cc
+++ b/chrome/browser/extensions/extension_disabled_ui_browsertest.cc
@@ -38,7 +38,6 @@
 #include "extensions/browser/test_extension_registry_observer.h"
 #include "extensions/common/extension.h"
 #include "extensions/test/extension_test_message_listener.h"
-#include "net/url_request/test_url_request_interceptor.h"
 
 using content::BrowserThread;
 using extensions::Extension;
diff --git a/chrome/browser/extensions/extension_protocols_unittest.cc b/chrome/browser/extensions/extension_protocols_unittest.cc
index 64e6c6d..0a44df5 100644
--- a/chrome/browser/extensions/extension_protocols_unittest.cc
+++ b/chrome/browser/extensions/extension_protocols_unittest.cc
@@ -126,7 +126,8 @@
   network::ResourceRequest request;
   request.method = method;
   request.url = url;
-  request.site_for_cookies = url;  // bypass third-party cookie blocking.
+  request.site_for_cookies =
+      net::SiteForCookies::FromUrl(url);  // bypass third-party cookie blocking.
   request.request_initiator =
       url::Origin::Create(url);  // ensure initiator set.
   request.referrer_policy = content::Referrer::GetDefaultReferrerPolicy();
diff --git a/chrome/browser/extensions/extension_tab_util.cc b/chrome/browser/extensions/extension_tab_util.cc
index 53f23ad..4f22660 100644
--- a/chrome/browser/extensions/extension_tab_util.cc
+++ b/chrome/browser/extensions/extension_tab_util.cc
@@ -386,9 +386,10 @@
   if (browser.is_type_devtools())
     return tabs_constants::kWindowTypeValueDevTools;
   // TODO(crbug.com/990158): We return 'popup' for both popup and app since
-  // chrome.tabs.create({type: 'popup'}) uses
+  // chrome.windows.create({type: 'popup'}) uses
   // Browser::CreateParams::CreateForApp.
-  if (browser.is_type_popup() || browser.is_type_app())
+  if (browser.is_type_popup() || browser.is_type_app() ||
+      browser.is_type_app_popup())
     return tabs_constants::kWindowTypeValuePopup;
   return tabs_constants::kWindowTypeValueNormal;
 }
diff --git a/chrome/browser/extensions/extension_view_host.cc b/chrome/browser/extensions/extension_view_host.cc
index 5542ffe..231daf3 100644
--- a/chrome/browser/extensions/extension_view_host.cc
+++ b/chrome/browser/extensions/extension_view_host.cc
@@ -18,8 +18,7 @@
 #include "chrome/browser/ui/color_chooser.h"
 #include "components/autofill/content/browser/content_autofill_driver_factory.h"
 #include "components/autofill/core/browser/autofill_manager.h"
-#include "components/performance_manager/performance_manager_tab_helper.h"
-#include "components/performance_manager/public/performance_manager.h"
+#include "components/performance_manager/embedder/performance_manager_registry.h"
 #include "components/web_modal/web_contents_modal_dialog_manager.h"
 #include "content/public/browser/file_select_listener.h"
 #include "content/public/browser/keyboard_event_processing_result.h"
@@ -82,9 +81,9 @@
       autofill::ChromeAutofillClient::FromWebContents(host_contents()),
       g_browser_process->GetApplicationLocale(),
       autofill::AutofillManager::ENABLE_AUTOFILL_DOWNLOAD_MANAGER);
-  if (performance_manager::PerformanceManager::IsAvailable()) {
-    performance_manager::PerformanceManagerTabHelper::CreateForWebContents(
-        host_contents());
+  if (auto* performance_manager_registry =
+          performance_manager::PerformanceManagerRegistry::GetInstance()) {
+    performance_manager_registry->CreatePageNodeForWebContents(host_contents());
   }
 
   // The popup itself cannot be zoomed, but we must specify a zoom level to use.
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
index e7e85fa..d7ca9945 100644
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -862,16 +862,6 @@
     "expiry_milestone": 80
   },
   {
-    "name": "download-rename",
-    "owners": [ "hesen", "dtrainor" ],
-    "expiry_milestone": 79
-  },
-  {
-    "name": "download-resumption-without-strong-validators",
-    "owners": [ "qinmin", "dtrainor", "xingliu" ],
-    "expiry_milestone": 80
-  },
-  {
     "name": "draw-vertically-edge-to-edge",
     "owners": [ "chrome-android-app@chromium.org" ],
     "expiry_milestone": 88
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index 15b0dda..e5245daa 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -488,12 +488,6 @@
     "code), where the final download origin or any origin in the redirect "
     "chain is insecure.";
 
-const char kDownloadResumptionWithoutStrongValidatorsName[] =
-    "Allow download resumption without strong validators";
-const char kDownloadResumptionWithoutStrongValidatorsDescription[] =
-    "Allows download to resume instead of restarting from the begining if "
-    "strong validators are not present.";
-
 const char kEnableAccessibilityImageDescriptionsName[] =
     "Accessibility Image Descriptions";
 const char kEnableAccessibilityImageDescriptionsDescription[] =
@@ -1216,6 +1210,11 @@
     "Ignore blacklist decisions made by Optimization Hints for Lite Page "
     "Redirect previews";
 
+const char kImprovedCookieControlsForThirdPartyCookieBlockingName[] =
+    "Enable improved UI for third-party cookie blocking";
+const char kImprovedCookieControlsForThirdPartyCookieBlockingDescription[] =
+    "Enables an improved UI for existing third-party cookie blocking users.";
+
 const char kImpulseScrollAnimationsName[] = "Impulse-style scroll animations";
 const char kImpulseScrollAnimationsDescription[] =
     "Replaces the default scroll animation with Impulse-style scroll "
@@ -2539,9 +2538,6 @@
 const char kDirectActionsDescription[] =
     "Enables direct actions (Android Q and more).";
 
-const char kDownloadRenameName[] = "Enable download rename";
-const char kDownloadRenameDescription[] = "Enables rename option for downloads";
-
 const char kDuetTabStripIntegrationAndroidName[] = "Duet-TabStrip Integration";
 const char kDuetTabStripIntegrationAndroidDescription[] =
     "Allows users to access integration of Duet and TabStrip.";
@@ -2934,11 +2930,6 @@
 const char kImprovedCookieControlsDescription[] =
     "Improved UI in Incognito mode for third-party cookie blocking.";
 
-const char kImprovedCookieControlsForThirdPartyCookieBlockingName[] =
-    "Enable improved UI for third-party cookie blocking";
-const char kImprovedCookieControlsForThirdPartyCookieBlockingDescription[] =
-    "Enables an improved UI for existing third-party cookie blocking users.";
-
 const char kEnableReaderModeName[] = "Enable Reader Mode";
 const char kEnableReaderModeDescription[] =
     "Allows viewing of simplified web pages by selecting 'Customize and "
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
index fad2d0c..d6dfbab 100644
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -308,9 +308,6 @@
 extern const char kDisplayList2dCanvasName[];
 extern const char kDisplayList2dCanvasDescription[];
 
-extern const char kDownloadResumptionWithoutStrongValidatorsName[];
-extern const char kDownloadResumptionWithoutStrongValidatorsDescription[];
-
 extern const char kEnableAccessibilityImageDescriptionsName[];
 extern const char kEnableAccessibilityImageDescriptionsDescription[];
 
@@ -732,6 +729,10 @@
 extern const char kIgnoreLitePageRedirectHintsBlacklistName[];
 extern const char kIgnoreLitePageRedirectHintsBlacklistDescription[];
 
+extern const char kImprovedCookieControlsForThirdPartyCookieBlockingName[];
+extern const char
+    kImprovedCookieControlsForThirdPartyCookieBlockingDescription[];
+
 extern const char kCompositorThreadedScrollbarScrollingName[];
 extern const char kCompositorThreadedScrollbarScrollingDescription[];
 
@@ -1505,9 +1506,6 @@
 extern const char kDontPrefetchLibrariesName[];
 extern const char kDontPrefetchLibrariesDescription[];
 
-extern const char kDownloadRenameName[];
-extern const char kDownloadRenameDescription[];
-
 extern const char kAutofillManualFallbackAndroidName[];
 extern const char kAutofillManualFallbackAndroidDescription[];
 
@@ -1722,10 +1720,6 @@
 extern const char kImprovedCookieControlsName[];
 extern const char kImprovedCookieControlsDescription[];
 
-extern const char kImprovedCookieControlsForThirdPartyCookieBlockingName[];
-extern const char
-    kImprovedCookieControlsForThirdPartyCookieBlockingDescription[];
-
 extern const char kEnableReaderModeName[];
 extern const char kEnableReaderModeDescription[];
 
diff --git a/chrome/browser/media/media_engagement_contents_observer_unittest.cc b/chrome/browser/media/media_engagement_contents_observer_unittest.cc
index 3fc2f15..bf61d9e 100644
--- a/chrome/browser/media/media_engagement_contents_observer_unittest.cc
+++ b/chrome/browser/media/media_engagement_contents_observer_unittest.cc
@@ -26,7 +26,6 @@
 #include "components/ukm/test_ukm_recorder.h"
 #include "content/public/browser/web_contents.h"
 #include "content/public/test/mock_navigation_handle.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "content/public/test/web_contents_tester.h"
 #include "media/base/media_switches.h"
 #include "services/metrics/public/cpp/ukm_builders.h"
@@ -39,9 +38,7 @@
     : public ChromeRenderViewHostTestHarness {
  public:
   MediaEngagementContentsObserverTest()
-      : task_runner_(new base::TestMockTimeTaskRunner()),
-        test_service_manager_context_(
-            std::make_unique<content::TestServiceManagerContext>()) {}
+      : task_runner_(new base::TestMockTimeTaskRunner()) {}
 
   void SetUp() override {
     ChromeRenderViewHostTestHarness::SetUp();
@@ -65,12 +62,6 @@
     Advance15Minutes();
   }
 
-  void TearDown() override {
-    // Must be reset before browser thread teardown.
-    test_service_manager_context_.reset();
-    ChromeRenderViewHostTestHarness::TearDown();
-  }
-
   MediaEngagementContentsObserver* CreateContentsObserverFor(
       content::WebContents* web_contents) {
     MediaEngagementContentsObserver* contents_observer =
@@ -443,11 +434,6 @@
   const base::TimeDelta kMaxWaitingTime =
       MediaEngagementContentsObserver::kSignificantMediaPlaybackTime +
       base::TimeDelta::FromSeconds(2);
-
-  // WebContentsImpl accesses the system Connector so the Service Manager must
-  // be initialized.
-  std::unique_ptr<content::TestServiceManagerContext>
-      test_service_manager_context_;
 };
 
 // TODO(mlamouri): test that visits are not recorded multiple times when a
diff --git a/chrome/browser/media/router/providers/cast/mirroring_activity_record.cc b/chrome/browser/media/router/providers/cast/mirroring_activity_record.cc
index 18d31590..d9d13ae 100644
--- a/chrome/browser/media/router/providers/cast/mirroring_activity_record.cc
+++ b/chrome/browser/media/router/providers/cast/mirroring_activity_record.cc
@@ -25,6 +25,7 @@
 #include "chrome/common/media_router/route_request_result.h"
 #include "components/cast_channel/cast_message_util.h"
 #include "components/cast_channel/cast_socket.h"
+#include "components/cast_channel/enum_table.h"
 #include "components/mirroring/mojom/session_parameters.mojom.h"
 #include "mojo/public/cpp/bindings/interface_request.h"
 #include "mojo/public/cpp/bindings/pending_remote.h"
@@ -41,6 +42,23 @@
 
 namespace media_router {
 
+namespace {
+
+const std::string GetMirroringNamespace(const base::Value& message) {
+  const base::Value* const type_value =
+      message.FindKeyOfType("type", base::Value::Type::STRING);
+
+  if (type_value &&
+      type_value->GetString() ==
+          cast_util::EnumToString<cast_channel::CastMessageType,
+                                  cast_channel::CastMessageType::kRpc>())
+    return mirroring::mojom::kWebRtcNamespace;
+  else
+    return mirroring::mojom::kRemotingNamespace;
+}
+
+}  // namespace
+
 MirroringActivityRecord::MirroringActivityRecord(
     const MediaRoute& route,
     const std::string& app_id,
@@ -133,35 +151,9 @@
 
   GetDataDecoder().ParseJson(
       message->json_format_data,
-      base::BindRepeating(
-          [](const std::string& route_id,
-             base::WeakPtr<MirroringActivityRecord> self,
-             data_decoder::DataDecoder::ValueOrError result) {
-            if (!result.value) {
-              // TODO(crbug.com/905002): Record UMA metric for parse result.
-              DLOG(ERROR) << "Failed to parse Cast client message for "
-                          << route_id << ": " << *result.error;
-              return;
-            }
-
-            if (!self)
-              return;
-
-            CastSession* session = self->GetSession();
-            DCHECK(session);
-
-            // TODO(jrw): Can some of this logic be shared with
-            // CastActivityRecord::SendAppMessageToReceiver?
-            cast::channel::CastMessage cast_message =
-                cast_channel::CreateCastMessage(
-                    mirroring::mojom::kWebRtcNamespace,
-                    std::move(*result.value),
-                    self->message_handler_->sender_id(),
-                    session->transport_id());
-            self->message_handler_->SendCastMessage(self->channel_id_,
-                                                    cast_message);
-          },
-          route().media_route_id(), weak_ptr_factory_.GetWeakPtr()));
+      base::BindRepeating(&MirroringActivityRecord::HandleParseJsonResult,
+                          weak_ptr_factory_.GetWeakPtr(),
+                          route().media_route_id()));
 }
 
 Result MirroringActivityRecord::SendAppMessageToReceiver(
@@ -242,8 +234,9 @@
 void MirroringActivityRecord::OnAppMessage(
     const cast::channel::CastMessage& message) {
   if (message.namespace_() != mirroring::mojom::kWebRtcNamespace &&
-      message.namespace_() == mirroring::mojom::kRemotingNamespace) {
+      message.namespace_() != mirroring::mojom::kRemotingNamespace) {
     // Ignore message with wrong namespace.
+    DVLOG(2) << "Ignoring message with namespace " << message.namespace_();
     return;
   }
   DVLOG(2) << "Relaying app message from receiver: " << message.DebugString();
@@ -276,6 +269,29 @@
     mojo::PendingReceiver<mojom::MediaController> media_controller,
     mojo::PendingRemote<mojom::MediaStatusObserver> observer) {}
 
+void MirroringActivityRecord::HandleParseJsonResult(
+    const std::string& route_id,
+    data_decoder::DataDecoder::ValueOrError result) {
+  if (!result.value) {
+    // TODO(crbug.com/905002): Record UMA metric for parse result.
+    DLOG(ERROR) << "Failed to parse Cast client message for " << route_id
+                << ": " << *result.error;
+    return;
+  }
+
+  CastSession* session = GetSession();
+  DCHECK(session);
+
+  const std::string message_namespace = GetMirroringNamespace(*result.value);
+
+  // TODO(jrw): Can some of this logic be shared with
+  // CastActivityRecord::SendAppMessageToReceiver?
+  cast::channel::CastMessage cast_message = cast_channel::CreateCastMessage(
+      message_namespace, std::move(*result.value),
+      message_handler_->sender_id(), session->transport_id());
+  message_handler_->SendCastMessage(channel_id_, cast_message);
+}
+
 void MirroringActivityRecord::StopMirroring() {
   // Running the callback will cause this object to be deleted.
   if (on_stop_)
diff --git a/chrome/browser/media/router/providers/cast/mirroring_activity_record.h b/chrome/browser/media/router/providers/cast/mirroring_activity_record.h
index cbee067f..56f2db0 100644
--- a/chrome/browser/media/router/providers/cast/mirroring_activity_record.h
+++ b/chrome/browser/media/router/providers/cast/mirroring_activity_record.h
@@ -95,6 +95,9 @@
     kMaxValue = kOffscreenTab,
   };
 
+  void HandleParseJsonResult(const std::string& route_id,
+                             data_decoder::DataDecoder::ValueOrError result);
+
   void StopMirroring();
 
   mojo::Remote<mirroring::mojom::MirroringServiceHost> host_;
diff --git a/chrome/browser/media/unified_autoplay_config_unittest.cc b/chrome/browser/media/unified_autoplay_config_unittest.cc
index 6746bfa..2e7c1bee 100644
--- a/chrome/browser/media/unified_autoplay_config_unittest.cc
+++ b/chrome/browser/media/unified_autoplay_config_unittest.cc
@@ -14,7 +14,6 @@
 #include "components/content_settings/core/browser/host_content_settings_map.h"
 #include "components/prefs/pref_service.h"
 #include "content/public/common/web_preferences.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "content/public/test/web_contents_tester.h"
 #include "media/base/media_switches.h"
 
@@ -31,18 +30,10 @@
         {media::kAutoplayDisableSettings, media::kAutoplayWhitelistSettings},
         {});
     ChromeRenderViewHostTestHarness::SetUp();
-    test_service_manager_context_ =
-        std::make_unique<content::TestServiceManagerContext>();
 
     SoundContentSettingObserver::CreateForWebContents(web_contents());
   }
 
-  void TearDown() override {
-    // Must be reset before browser thread teardown.
-    test_service_manager_context_.reset();
-    ChromeRenderViewHostTestHarness::TearDown();
-  }
-
   void SetSoundContentSettingDefault(ContentSetting value) {
     HostContentSettingsMap* content_settings =
         HostContentSettingsMapFactory::GetForProfile(profile());
@@ -75,11 +66,6 @@
   PrefService* GetPrefs() { return profile()->GetPrefs(); }
 
   base::test::ScopedFeatureList scoped_feature_list_;
-
-  // WebContentsImpl accesses the system Connector, so the Service Manager must
-  // be initialized.
-  std::unique_ptr<content::TestServiceManagerContext>
-      test_service_manager_context_;
 };
 
 TEST_F(UnifiedAutoplaySoundSettingsTest, ContentSetting_Allow) {
diff --git a/chrome/browser/media/webrtc/webrtc_video_display_perf_browsertest.cc b/chrome/browser/media/webrtc/webrtc_video_display_perf_browsertest.cc
index 2967c48..cb7ab37 100644
--- a/chrome/browser/media/webrtc/webrtc_video_display_perf_browsertest.cc
+++ b/chrome/browser/media/webrtc/webrtc_video_display_perf_browsertest.cc
@@ -177,22 +177,14 @@
 // lifetime of a single video frame by synchronizing on the timestamps values
 // attached to trace events. Then, it calculates the duration and related stats.
 
-// TODO(https://crbug.com/993020): Fix flakes on Windows bots.
-#if defined(OS_WIN)
-#define MAYBE_WebRtcVideoDisplayPerfBrowserTest \
-  DISABLED_WebRtcVideoDisplayPerfBrowserTest
-#else
-#define MAYBE_WebRtcVideoDisplayPerfBrowserTest \
-  WebRtcVideoDisplayPerfBrowserTest
-#endif
-class MAYBE_WebRtcVideoDisplayPerfBrowserTest
+class WebRtcVideoDisplayPerfBrowserTest
     : public WebRtcTestBase,
       public testing::WithParamInterface<
           std::tuple<gfx::Size /* resolution */,
                      int /* fps */,
                      bool /* disable_render_smoothness_algorithm */>> {
  public:
-  MAYBE_WebRtcVideoDisplayPerfBrowserTest() {
+  WebRtcVideoDisplayPerfBrowserTest() {
     const auto& params = GetParam();
     const gfx::Size& resolution = std::get<0>(params);
     test_config_ = {resolution.width(), resolution.height(),
@@ -460,20 +452,20 @@
 };
 
 INSTANTIATE_TEST_SUITE_P(WebRtcVideoDisplayPerfBrowserTests,
-                         MAYBE_WebRtcVideoDisplayPerfBrowserTest,
+                         WebRtcVideoDisplayPerfBrowserTest,
                          testing::Combine(testing::Values(gfx::Size(1280, 720),
                                                           gfx::Size(1920,
                                                                     1080)),
                                           testing::Values(30, 60),
                                           testing::Bool()));
 
-IN_PROC_BROWSER_TEST_P(MAYBE_WebRtcVideoDisplayPerfBrowserTest,
+IN_PROC_BROWSER_TEST_P(WebRtcVideoDisplayPerfBrowserTest,
                        MANUAL_TestVideoDisplayPerfVP9) {
   TestVideoDisplayPerf("VP9");
 }
 
 #if BUILDFLAG(RTC_USE_H264)
-IN_PROC_BROWSER_TEST_P(MAYBE_WebRtcVideoDisplayPerfBrowserTest,
+IN_PROC_BROWSER_TEST_P(WebRtcVideoDisplayPerfBrowserTest,
                        MANUAL_TestVideoDisplayPerfH264) {
   if (!base::FeatureList::IsEnabled(
           blink::features::kWebRtcH264WithOpenH264FFmpeg)) {
diff --git a/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics_unittest.cc b/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics_unittest.cc
index adb8d233..3acb49c 100644
--- a/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics_unittest.cc
+++ b/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics_unittest.cc
@@ -9,7 +9,6 @@
 #include "base/macros.h"
 #include "base/test/metrics/histogram_tester.h"
 #include "content/public/test/browser_task_environment.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/display/screen.h"
 #include "ui/display/test/test_screen.h"
@@ -39,7 +38,6 @@
  private:
   // Provides a message loop and allows the use of the task scheduler
   content::BrowserTaskEnvironment task_environment_;
-  content::TestServiceManagerContext service_manager_context_;
 
   // Dummy screen required by a ChromeBrowserMainExtraPartsMetrics test target.
   display::test::TestScreen test_screen_;
diff --git a/chrome/browser/metrics/chrome_metrics_service_client.cc b/chrome/browser/metrics/chrome_metrics_service_client.cc
index 8ffa1322..e567dcd 100644
--- a/chrome/browser/metrics/chrome_metrics_service_client.cc
+++ b/chrome/browser/metrics/chrome_metrics_service_client.cc
@@ -89,6 +89,7 @@
 #include "components/omnibox/browser/omnibox_metrics_provider.h"
 #include "components/prefs/pref_registry_simple.h"
 #include "components/prefs/pref_service.h"
+#include "components/sync/driver/passphrase_type_metrics_provider.h"
 #include "components/sync/driver/sync_service.h"
 #include "components/sync_device_info/device_count_metrics_provider.h"
 #include "components/ukm/ukm_service.h"
@@ -765,6 +766,10 @@
           &DeviceInfoSyncServiceFactory::GetAllDeviceInfoTrackers)));
 
   metrics_service_->RegisterMetricsProvider(
+      std::make_unique<syncer::PassphraseTypeMetricsProvider>(
+          base::BindRepeating(&ProfileSyncServiceFactory::GetAllSyncServices)));
+
+  metrics_service_->RegisterMetricsProvider(
       std::make_unique<HttpsEngagementMetricsProvider>());
 
   metrics_service_->RegisterMetricsProvider(
diff --git a/chrome/browser/metrics/chrome_metrics_service_client_unittest.cc b/chrome/browser/metrics/chrome_metrics_service_client_unittest.cc
index 1b71f124..2b021f1 100644
--- a/chrome/browser/metrics/chrome_metrics_service_client_unittest.cc
+++ b/chrome/browser/metrics/chrome_metrics_service_client_unittest.cc
@@ -21,7 +21,6 @@
 #include "components/prefs/testing_pref_service.h"
 #include "components/ukm/ukm_service.h"
 #include "content/public/test/browser_task_environment.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "extensions/buildflags/buildflags.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -54,8 +53,6 @@
             &ChromeMetricsServiceClientTest::LoadFakeClientInfoBackup,
             base::Unretained(this)));
     ASSERT_TRUE(profile_manager_.SetUp());
-    service_manager_context_ =
-        std::make_unique<content::TestServiceManagerContext>();
 #if defined(OS_CHROMEOS)
     // ChromeOs Metrics Provider require g_login_state and power manager client
     // initialized before they can be instantiated.
@@ -69,7 +66,6 @@
     chromeos::LoginState::Shutdown();
     chromeos::PowerManagerClient::Shutdown();
 #endif  // defined(OS_CHROMEOS)
-    service_manager_context_.reset();
   }
 
  protected:
@@ -85,7 +81,6 @@
   base::UserActionTester user_action_runner_;
   std::unique_ptr<metrics::MetricsStateManager> metrics_state_manager_;
   metrics::TestEnabledStateProvider enabled_state_provider_;
-  std::unique_ptr<content::TestServiceManagerContext> service_manager_context_;
 
  private:
   DISALLOW_COPY_AND_ASSIGN(ChromeMetricsServiceClientTest);
@@ -155,7 +150,7 @@
   size_t expected_providers = 3;
 
   // This is the number of metrics providers that are outside any #if macros.
-  expected_providers += 18;
+  expected_providers += 19;
 
 #if BUILDFLAG(ENABLE_EXTENSIONS)
   expected_providers++;  // ExtensionsMetricsProvider.
diff --git a/chrome/browser/net/network_context_configuration_browsertest.cc b/chrome/browser/net/network_context_configuration_browsertest.cc
index 78f7ac3..544316bc 100644
--- a/chrome/browser/net/network_context_configuration_browsertest.cc
+++ b/chrome/browser/net/network_context_configuration_browsertest.cc
@@ -547,12 +547,13 @@
     if (cookie_type == CookieType::kThirdParty)
       cookie_line += ";SameSite=None;Secure";
     request->url = server->GetURL("/set-cookie?" + cookie_line);
+    url::Origin origin;
     if (cookie_type == CookieType::kThirdParty)
-      request->site_for_cookies = GURL("http://example.com");
+      origin = url::Origin::Create(GURL("http://example.com"));
     else
-      request->site_for_cookies = server->base_url();
+      origin = url::Origin::Create(server->base_url());
+    request->site_for_cookies = net::SiteForCookies::FromOrigin(origin);
 
-    url::Origin origin = url::Origin::Create(request->site_for_cookies);
     request->trusted_params = network::ResourceRequest::TrustedParams();
     request->trusted_params->network_isolation_key =
         net::NetworkIsolationKey(origin, origin);
@@ -786,8 +787,8 @@
   std::unique_ptr<network::ResourceRequest> request =
       std::make_unique<network::ResourceRequest>();
   request->url = https_server.GetURL("/echoheader?Cookie");
-  request->site_for_cookies = GURL(chrome::kChromeUIPrintURL);
-  url::Origin origin = url::Origin::Create(request->site_for_cookies);
+  url::Origin origin = url::Origin::Create(GURL(chrome::kChromeUIPrintURL));
+  request->site_for_cookies = net::SiteForCookies::FromOrigin(origin);
   request->trusted_params = network::ResourceRequest::TrustedParams();
   request->trusted_params->network_isolation_key =
       net::NetworkIsolationKey(origin, origin);
diff --git a/chrome/browser/offline_pages/offline_page_url_loader.cc b/chrome/browser/offline_pages/offline_page_url_loader.cc
index 2c44ae8..b47b7b7 100644
--- a/chrome/browser/offline_pages/offline_page_url_loader.cc
+++ b/chrome/browser/offline_pages/offline_page_url_loader.cc
@@ -42,7 +42,8 @@
   redirect_info.new_referrer_policy = net::URLRequest::NO_REFERRER;
   redirect_info.new_method = "GET";
   redirect_info.status_code = response_code;
-  redirect_info.new_site_for_cookies = redirect_info.new_url;
+  redirect_info.new_site_for_cookies =
+      net::SiteForCookies::FromUrl(redirect_info.new_url);
   return redirect_info;
 }
 
diff --git a/chrome/browser/optimization_guide/prediction/prediction_manager_unittest.cc b/chrome/browser/optimization_guide/prediction/prediction_manager_unittest.cc
index 7606035..cb13044e 100644
--- a/chrome/browser/optimization_guide/prediction/prediction_manager_unittest.cc
+++ b/chrome/browser/optimization_guide/prediction/prediction_manager_unittest.cc
@@ -13,6 +13,7 @@
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/time/time.h"
+#include "build/build_config.h"
 #include "chrome/browser/optimization_guide/optimization_guide_navigation_data.h"
 #include "chrome/browser/optimization_guide/optimization_guide_util.h"
 #include "chrome/browser/optimization_guide/optimization_guide_web_contents_observer.h"
@@ -557,8 +558,16 @@
       0);
 }
 
+// TODO(https://crbug.com/1034433) Flaky on Mac10.12
+#if defined(OS_MACOSX)
+#define MAYBE_NoPredictionModelForRegisteredOptimizationTarget \
+  DISABLED_NoPredictionModelForRegisteredOptimizationTarget
+#else
+#define MAYBE_NoPredictionModelForRegisteredOptimizationTarget \
+  NoPredictionModelForRegisteredOptimizationTarget
+#endif
 TEST_F(PredictionManagerTest,
-       NoPredictionModelForRegisteredOptimizationTarget) {
+       MAYBE_NoPredictionModelForRegisteredOptimizationTarget) {
   base::HistogramTester histogram_tester;
   std::unique_ptr<content::MockNavigationHandle> navigation_handle =
       CreateMockNavigationHandleWithOptimizationGuideWebContentsObserver(
@@ -1009,8 +1018,16 @@
       PredictionManagerModelStatus::kStoreAvailableModelNotLoaded, 1);
 }
 
+// TODO(https://crbug.com/1034433) Flaky on Mac10.12
+#if defined(OS_MACOSX)
+#define MAYBE_ShouldTargetNavigationStoreUnavailableModelUnknown \
+  DISABLED_ShouldTargetNavigationStoreUnavailableModelUnknown
+#else
+#define MAYBE_ShouldTargetNavigationStoreUnavailableModelUnknown \
+  ShouldTargetNavigationStoreUnavailableModelUnknown
+#endif
 TEST_F(PredictionManagerTest,
-       ShouldTargetNavigationStoreUnavailableModelUnknown) {
+       MAYBE_ShouldTargetNavigationStoreUnavailableModelUnknown) {
   base::HistogramTester histogram_tester;
   std::unique_ptr<content::MockNavigationHandle> navigation_handle =
       CreateMockNavigationHandleWithOptimizationGuideWebContentsObserver(
@@ -1070,7 +1087,16 @@
       "OptimizationGuide.PredictionManager.HostModelFeaturesStored", 0);
 }
 
-TEST_F(PredictionManagerTest, UpdateModelWithUnsupportedOptimizationTarget) {
+// TODO(https://crbug.com/1034433) Flaky on Mac10.12
+#if defined(OS_MACOSX)
+#define MAYBE_UpdateModelWithUnsupportedOptimizationTarget \
+  DISABLED_UpdateModelWithUnsupportedOptimizationTarget
+#else
+#define MAYBE_UpdateModelWithUnsupportedOptimizationTarget \
+  UpdateModelWithUnsupportedOptimizationTarget
+#endif
+TEST_F(PredictionManagerTest,
+       MAYBE_UpdateModelWithUnsupportedOptimizationTarget) {
   std::unique_ptr<content::MockNavigationHandle> navigation_handle =
       CreateMockNavigationHandleWithOptimizationGuideWebContentsObserver(
           GURL("https://foo.com"));
diff --git a/chrome/browser/page_load_metrics/observers/third_party_metrics_observer_browsertest.cc b/chrome/browser/page_load_metrics/observers/third_party_metrics_observer_browsertest.cc
index f01fbbc..30cd7b8c 100644
--- a/chrome/browser/page_load_metrics/observers/third_party_metrics_observer_browsertest.cc
+++ b/chrome/browser/page_load_metrics/observers/third_party_metrics_observer_browsertest.cc
@@ -370,7 +370,7 @@
 }
 
 INSTANTIATE_TEST_SUITE_P(
-    /* no prefix */,
+    All,
     ThirdPartyDomStorageAccessMetricsObserverBrowserTest,
     ::testing::Values(false, true));
 
diff --git a/chrome/browser/page_load_metrics/observers/third_party_metrics_observer_unittest.cc b/chrome/browser/page_load_metrics/observers/third_party_metrics_observer_unittest.cc
index 88315e9e..00a8c34d 100644
--- a/chrome/browser/page_load_metrics/observers/third_party_metrics_observer_unittest.cc
+++ b/chrome/browser/page_load_metrics/observers/third_party_metrics_observer_unittest.cc
@@ -534,6 +534,6 @@
 }
 
 INSTANTIATE_TEST_SUITE_P(
-    /* no prefix */,
+    All,
     ThirdPartyDomStorageAccessMetricsObserverTest,
     ::testing::Values(false, true));
diff --git a/chrome/browser/performance_manager/chrome_browser_main_extra_parts_performance_manager.cc b/chrome/browser/performance_manager/chrome_browser_main_extra_parts_performance_manager.cc
index de66eae..a11001a 100644
--- a/chrome/browser/performance_manager/chrome_browser_main_extra_parts_performance_manager.cc
+++ b/chrome/browser/performance_manager/chrome_browser_main_extra_parts_performance_manager.cc
@@ -21,11 +21,10 @@
 #include "chrome/browser/performance_manager/observers/isolation_context_metrics.h"
 #include "chrome/browser/performance_manager/observers/metrics_collector.h"
 #include "chrome/browser/profiles/profile_manager.h"
+#include "components/performance_manager/embedder/performance_manager_registry.h"
 #include "components/performance_manager/graph/graph_impl.h"
 #include "components/performance_manager/performance_manager_impl.h"
 #include "components/performance_manager/performance_manager_lock_observer.h"
-#include "components/performance_manager/performance_manager_tab_helper.h"
-#include "components/performance_manager/render_process_user_data.h"
 #include "components/performance_manager/shared_worker_watcher.h"
 #include "content/public/browser/storage_partition.h"
 #include "content/public/common/content_features.h"
@@ -102,6 +101,7 @@
   performance_manager_ = performance_manager::PerformanceManagerImpl::Create(
       base::BindOnce(&ChromeBrowserMainExtraPartsPerformanceManager::
                          CreateDefaultPoliciesAndDecorators));
+  registry_ = performance_manager::PerformanceManagerRegistry::Create();
   browser_child_process_watcher_ =
       std::make_unique<performance_manager::BrowserChildProcessWatcher>();
   browser_child_process_watcher_->Initialize();
@@ -131,15 +131,13 @@
 
   page_live_state_data_helper_.reset();
 
-  // There may still be WebContents with attached tab helpers at this point in
-  // time, and there's no convenient later call-out to destroy the performance
-  // manager. To release the page and frame nodes, detach the tab helpers
-  // from any existing WebContents.
-  performance_manager::PerformanceManagerTabHelper::DetachAndDestroyAll();
-
-  // Then the render process nodes. These have to be destroyed after the
-  // frame nodes.
-  performance_manager::RenderProcessUserData::DetachAndDestroyAll();
+  // There may still be WebContents and RenderProcessHosts with attached user
+  // data, retaining PageNodes, FrameNodes and ProcessNodes. Tear down the
+  // registry to release these nodes. There is no convenient later call-out to
+  // destroy the performance manager after all WebContents and
+  // RenderProcessHosts have been destroyed.
+  registry_->TearDown();
+  registry_.reset();
 
   performance_manager::PerformanceManagerImpl::Destroy(
       std::move(performance_manager_));
diff --git a/chrome/browser/performance_manager/chrome_browser_main_extra_parts_performance_manager.h b/chrome/browser/performance_manager/chrome_browser_main_extra_parts_performance_manager.h
index b86a7c3..fe6731d 100644
--- a/chrome/browser/performance_manager/chrome_browser_main_extra_parts_performance_manager.h
+++ b/chrome/browser/performance_manager/chrome_browser_main_extra_parts_performance_manager.h
@@ -29,6 +29,7 @@
 class GraphImpl;
 class PageLiveStateDecoratorHelper;
 class PerformanceManagerImpl;
+class PerformanceManagerRegistry;
 class SharedWorkerWatcher;
 }  // namespace performance_manager
 
@@ -68,6 +69,7 @@
 
   std::unique_ptr<performance_manager::PerformanceManagerImpl>
       performance_manager_;
+  std::unique_ptr<performance_manager::PerformanceManagerRegistry> registry_;
 
   // This must be alive at least until the end of base::ThreadPool shutdown,
   // because it can be accessed by IndexedDB which runs on a base::ThreadPool
diff --git a/chrome/browser/performance_manager/chrome_content_browser_client_performance_manager_part.cc b/chrome/browser/performance_manager/chrome_content_browser_client_performance_manager_part.cc
index 0a6486f4..14fe590 100644
--- a/chrome/browser/performance_manager/chrome_content_browser_client_performance_manager_part.cc
+++ b/chrome/browser/performance_manager/chrome_content_browser_client_performance_manager_part.cc
@@ -9,6 +9,7 @@
 #include "base/bind.h"
 #include "base/logging.h"
 #include "base/threading/sequenced_task_runner_handle.h"
+#include "components/performance_manager/embedder/performance_manager_registry.h"
 #include "components/performance_manager/graph/process_node_impl.h"
 #include "components/performance_manager/performance_manager_impl.h"
 #include "components/performance_manager/public/mojom/coordination_unit.mojom.h"
@@ -54,9 +55,9 @@
       base::BindRepeating(&BindProcessNode, render_process_host->GetID()),
       base::SequencedTaskRunnerHandle::Get());
 
-  // Ideally this would strictly be a "CreateForRenderProcess", but when a
-  // RenderFrameHost is "resurrected" with a new process it will already have
-  // user data attached. This will happen on renderer crash.
-  performance_manager::RenderProcessUserData::GetOrCreateForRenderProcessHost(
-      render_process_host);
+  // Ideally this would strictly be a "Create", but when a RenderFrameHost is
+  // "resurrected" with a new process it will already have user data attached.
+  // This will happen on renderer crash.
+  performance_manager::PerformanceManagerRegistry::GetInstance()
+      ->CreateProcessNodeForRenderProcessHost(render_process_host);
 }
diff --git a/chrome/browser/performance_manager/decorators/helpers/page_live_state_decorator_helper_unittest.cc b/chrome/browser/performance_manager/decorators/helpers/page_live_state_decorator_helper_unittest.cc
index 62caabb..a3e2f8f 100644
--- a/chrome/browser/performance_manager/decorators/helpers/page_live_state_decorator_helper_unittest.cc
+++ b/chrome/browser/performance_manager/decorators/helpers/page_live_state_decorator_helper_unittest.cc
@@ -7,7 +7,7 @@
 #include "chrome/browser/media/webrtc/media_capture_devices_dispatcher.h"
 #include "chrome/browser/media/webrtc/media_stream_capture_indicator.h"
 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
-#include "components/performance_manager/performance_manager_tab_helper.h"
+#include "components/performance_manager/embedder/performance_manager_registry.h"
 #include "components/performance_manager/performance_manager_test_harness.h"
 #include "components/performance_manager/test_support/page_live_state_decorator.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -29,6 +29,7 @@
   void SetUp() override {
     ChromeRenderViewHostTestHarness::SetUp();
     perf_man_ = PerformanceManagerImpl::Create(base::DoNothing());
+    registry_ = PerformanceManagerRegistry::Create();
     indicator_ = MediaCaptureDevicesDispatcher::GetInstance()
                      ->GetMediaStreamCaptureIndicator();
     auto contents = CreateTestWebContents();
@@ -40,6 +41,8 @@
     helper_.reset();
     indicator_.reset();
     DeleteContents();
+    registry_->TearDown();
+    registry_.reset();
     // Have the performance manager destroy itself.
     PerformanceManagerImpl::Destroy(std::move(perf_man_));
     task_environment()->RunUntilIdle();
@@ -50,7 +53,7 @@
   std::unique_ptr<content::WebContents> CreateTestWebContents() {
     std::unique_ptr<content::WebContents> contents =
         ChromeRenderViewHostTestHarness::CreateTestWebContents();
-    PerformanceManagerTabHelper::CreateForWebContents(contents.get());
+    registry_->CreatePageNodeForWebContents(contents.get());
     return contents;
   }
 
@@ -63,6 +66,7 @@
  private:
   scoped_refptr<MediaStreamCaptureIndicator> indicator_;
   std::unique_ptr<PerformanceManagerImpl> perf_man_;
+  std::unique_ptr<PerformanceManagerRegistry> registry_;
   std::unique_ptr<PageLiveStateDecoratorHelper> helper_;
 };
 
diff --git a/chrome/browser/performance_manager/graph/policies/policy_features.cc b/chrome/browser/performance_manager/graph/policies/policy_features.cc
index 0a00162..54b593e 100644
--- a/chrome/browser/performance_manager/graph/policies/policy_features.cc
+++ b/chrome/browser/performance_manager/graph/policies/policy_features.cc
@@ -80,5 +80,14 @@
 
 #endif  // defined(OS_LINUX)
 
+#if !defined(OS_ANDROID)
+const base::Feature kPageFreezingFromPerformanceManager{
+    "PageFreezingFromPerformanceManager", base::FEATURE_DISABLED_BY_DEFAULT};
+
+const base::Feature kUrgentDiscardingFromPerformanceManager{
+    "UrgentDiscardingFromPerformanceManager",
+    base::FEATURE_DISABLED_BY_DEFAULT};
+#endif
+
 }  // namespace features
 }  // namespace performance_manager
diff --git a/chrome/browser/performance_manager/graph/policies/policy_features.h b/chrome/browser/performance_manager/graph/policies/policy_features.h
index af30943..0df4638d 100644
--- a/chrome/browser/performance_manager/graph/policies/policy_features.h
+++ b/chrome/browser/performance_manager/graph/policies/policy_features.h
@@ -76,6 +76,16 @@
 
 #endif  // defined(OS_LINUX)
 
+#if !defined(OS_ANDROID)
+// Enables freezing pages directly from PerformanceManager rather than via
+// TabManager.
+extern const base::Feature kPageFreezingFromPerformanceManager;
+
+// Enables urgent discarding of pages directly from PerformanceManager rather
+// than via TabManager.
+extern const base::Feature kUrgentDiscardingFromPerformanceManager;
+#endif
+
 }  // namespace features
 }  // namespace performance_manager
 
diff --git a/chrome/browser/performance_manager/performance_manager_features.cc b/chrome/browser/performance_manager/performance_manager_features.cc
deleted file mode 100644
index 6657750..0000000
--- a/chrome/browser/performance_manager/performance_manager_features.cc
+++ /dev/null
@@ -1,14 +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.
-
-#include "chrome/browser/performance_manager/performance_manager_features.h"
-
-namespace features {
-
-// Enables freezing pages directly from PerformanceManager rather than via
-// TabManager.
-const base::Feature kPageFreezingFromPerformanceManager{
-    "PageFreezingFromPerformanceManager", base::FEATURE_DISABLED_BY_DEFAULT};
-
-}  // namespace features
diff --git a/chrome/browser/performance_manager/performance_manager_features.h b/chrome/browser/performance_manager/performance_manager_features.h
deleted file mode 100644
index 50328947..0000000
--- a/chrome/browser/performance_manager/performance_manager_features.h
+++ /dev/null
@@ -1,16 +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.
-
-#ifndef CHROME_BROWSER_PERFORMANCE_MANAGER_PERFORMANCE_MANAGER_FEATURES_H_
-#define CHROME_BROWSER_PERFORMANCE_MANAGER_PERFORMANCE_MANAGER_FEATURES_H_
-
-#include "base/feature_list.h"
-
-namespace features {
-
-extern const base::Feature kPageFreezingFromPerformanceManager;
-
-}  // namespace features
-
-#endif  // CHROME_BROWSER_PERFORMANCE_MANAGER_PERFORMANCE_MANAGER_FEATURES_H_
diff --git a/chrome/browser/performance_manager/render_process_host_proxy_unittest.cc b/chrome/browser/performance_manager/render_process_host_proxy_unittest.cc
index f224071..823883f 100644
--- a/chrome/browser/performance_manager/render_process_host_proxy_unittest.cc
+++ b/chrome/browser/performance_manager/render_process_host_proxy_unittest.cc
@@ -15,9 +15,9 @@
 #include "chrome/test/base/testing_browser_process.h"
 #include "chrome/test/base/testing_profile.h"
 #include "chrome/test/base/testing_profile_manager.h"
+#include "components/performance_manager/embedder/performance_manager_registry.h"
 #include "components/performance_manager/graph/process_node_impl.h"
 #include "components/performance_manager/performance_manager_impl.h"
-#include "components/performance_manager/performance_manager_tab_helper.h"
 #include "components/performance_manager/public/graph/process_node.h"
 #include "components/performance_manager/public/render_process_host_proxy.h"
 #include "components/performance_manager/render_process_user_data.h"
@@ -38,8 +38,11 @@
   void SetUp() override {
     ChromeRenderViewHostTestHarness::SetUp();
     perf_man_ = PerformanceManagerImpl::Create(base::DoNothing());
+    registry_ = PerformanceManagerRegistry::Create();
   }
   void TearDown() override {
+    registry_->TearDown();
+    registry_.reset();
     // Have the performance manager destroy itself.
     PerformanceManagerImpl::Destroy(std::move(perf_man_));
     task_environment()->RunUntilIdle();
@@ -50,10 +53,12 @@
   std::unique_ptr<content::WebContents> CreateTestWebContents() {
     std::unique_ptr<content::WebContents> contents =
         ChromeRenderViewHostTestHarness::CreateTestWebContents();
-    PerformanceManagerTabHelper::CreateForWebContents(contents.get());
+    registry_->CreatePageNodeForWebContents(contents.get());
     return contents;
   }
 
+  std::unique_ptr<PerformanceManagerRegistry> registry_;
+
  private:
   std::unique_ptr<PerformanceManagerImpl> perf_man_;
 
@@ -81,8 +86,9 @@
       rph_factory->CreateRenderProcessHost(profile, site_instance.get()));
 
   // Now create a RenderProcessUserData which creates a ProcessNode.
+  registry_->CreateProcessNodeForRenderProcessHost(host);
   auto* render_process_user_data =
-      RenderProcessUserData::GetOrCreateForRenderProcessHost(host);
+      RenderProcessUserData::GetForRenderProcessHost(host);
   ASSERT_NE(render_process_user_data, nullptr);
   ProcessNode* process_node = render_process_user_data->process_node();
   ASSERT_NE(process_node, nullptr);
diff --git a/chrome/browser/permissions/permission_context_base.cc b/chrome/browser/permissions/permission_context_base.cc
index e0b19ef..0b9a690 100644
--- a/chrome/browser/permissions/permission_context_base.cc
+++ b/chrome/browser/permissions/permission_context_base.cc
@@ -43,13 +43,6 @@
 #include "extensions/common/constants.h"
 #include "url/gurl.h"
 
-#if defined(OS_CHROMEOS)
-#include "chrome/browser/chromeos/app_mode/web_app/web_kiosk_app_data.h"
-#include "chrome/browser/chromeos/app_mode/web_app/web_kiosk_app_manager.h"
-#include "components/user_manager/user.h"
-#include "components/user_manager/user_manager.h"
-#endif
-
 namespace {
 
 const char kPermissionBlockedKillSwitchMessage[] =
@@ -179,7 +172,6 @@
       case PermissionStatusSource::INSECURE_ORIGIN:
       case PermissionStatusSource::UNSPECIFIED:
       case PermissionStatusSource::VIRTUAL_URL_DIFFERENT_ORIGIN:
-      case PermissionStatusSource::WEB_KIOSK_APP_MODE:
         break;
     }
 
@@ -272,22 +264,7 @@
     return PermissionResult(content_setting,
                             PermissionStatusSource::UNSPECIFIED);
   }
-#if defined(OS_CHROMEOS)
-  if (user_manager::UserManager::IsInitialized() &&
-      user_manager::UserManager::Get()->IsLoggedInAsWebKioskApp()) {
-    const AccountId& account_id =
-        user_manager::UserManager::Get()->GetPrimaryUser()->GetAccountId();
-    DCHECK(chromeos::WebKioskAppManager::IsInitialized());
 
-    const chromeos::WebKioskAppData* app_data =
-        chromeos::WebKioskAppManager::Get()->GetAppByAccountId(account_id);
-    DCHECK(app_data);
-    if (url::Origin::Create(requesting_origin) ==
-        url::Origin::Create(app_data->install_url()))
-      return PermissionResult(CONTENT_SETTING_ALLOW,
-                              PermissionStatusSource::WEB_KIOSK_APP_MODE);
-  }
-#endif
   PermissionResult result =
       PermissionDecisionAutoBlocker::GetForProfile(profile_)->GetEmbargoResult(
           requesting_origin, content_settings_type_);
diff --git a/chrome/browser/permissions/permission_context_base_unittest.cc b/chrome/browser/permissions/permission_context_base_unittest.cc
index 0ddf4ab..f9162201 100644
--- a/chrome/browser/permissions/permission_context_base_unittest.cc
+++ b/chrome/browser/permissions/permission_context_base_unittest.cc
@@ -36,7 +36,6 @@
 #include "components/content_settings/core/common/content_settings_types.h"
 #include "components/ukm/content/source_url_recorder.h"
 #include "components/ukm/test_ukm_recorder.h"
-#include "components/user_manager/scoped_user_manager.h"
 #include "components/variations/variations_associated_data.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/navigation_entry.h"
@@ -45,11 +44,6 @@
 #include "content/public/test/mock_render_process_host.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
-#if defined(OS_CHROMEOS)
-#include "chrome/browser/chromeos/app_mode/web_app/web_kiosk_app_manager.h"
-#include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h"
-#endif
-
 const char* const kPermissionsKillSwitchFieldStudy =
     PermissionContextBase::kPermissionsKillSwitchFieldStudy;
 const char* const kPermissionsKillSwitchBlockedValue =
@@ -691,35 +685,6 @@
     prompt_factory_->DocumentOnLoadCompletedInMainFrame();
   }
 
-#if defined(OS_CHROMEOS)
-  void TestWebKioskMode(const GURL& app_url,
-                        const GURL& request_url,
-                        ContentSetting response) {
-    const AccountId account_id = AccountId::FromUserEmail("lala@example.com");
-
-    auto fake_user_manager =
-        std::make_unique<chromeos::FakeChromeUserManager>();
-    // Stealing the pointer from unique ptr before it goes to the scoped user
-    // manager.
-    chromeos::FakeChromeUserManager* user_manager = fake_user_manager.get();
-    auto scoped_user_manager =
-        std::make_unique<user_manager::ScopedUserManager>(
-            std::move(fake_user_manager));
-    user_manager->AddWebKioskAppUser(account_id);
-    user_manager->LoginUser(account_id);
-
-    auto kiosk_app_manager = std::make_unique<chromeos::WebKioskAppManager>();
-    kiosk_app_manager->AddAppForTesting(account_id, app_url);
-
-    TestPermissionContext permission_context(profile(),
-                                             ContentSettingsType::GEOLOCATION);
-    PermissionResult result = permission_context.GetPermissionStatus(
-        nullptr, request_url, request_url);
-
-    EXPECT_EQ(result.content_setting, response);
-  }
-#endif  // defined(OS_CHROMEOS)
-
  private:
   // ChromeRenderViewHostTestHarness:
   void SetUp() override {
@@ -904,15 +869,3 @@
                  GURL("http://www.google.com/foo"), CONTENT_SETTING_ASK,
                  PermissionStatusSource::UNSPECIFIED);
 }
-
-#if defined(OS_CHROMEOS)
-TEST_F(PermissionContextBaseTests, TestWebKioskModeSameOrigin) {
-  TestWebKioskMode(GURL("https://google.com/launch"),
-                   GURL("https://google.com/page"), CONTENT_SETTING_ALLOW);
-}
-
-TEST_F(PermissionContextBaseTests, TestWebKioskModeDifferentOrigin) {
-  TestWebKioskMode(GURL("https://google.com/launch"),
-                   GURL("https://notgoogle.com/page"), CONTENT_SETTING_ASK);
-}
-#endif  // defined(OS_CHROMEOS)
diff --git a/chrome/browser/permissions/permission_request_manager.cc b/chrome/browser/permissions/permission_request_manager.cc
index 4062690..c94eb07 100644
--- a/chrome/browser/permissions/permission_request_manager.cc
+++ b/chrome/browser/permissions/permission_request_manager.cc
@@ -41,6 +41,13 @@
 #include "extensions/common/constants.h"
 #endif
 
+#if defined(OS_CHROMEOS)
+#include "chrome/browser/chromeos/app_mode/web_app/web_kiosk_app_data.h"
+#include "chrome/browser/chromeos/app_mode/web_app/web_kiosk_app_manager.h"
+#include "components/user_manager/user.h"
+#include "components/user_manager/user_manager.h"
+#endif
+
 namespace {
 
 bool IsMessageTextEqual(PermissionRequest* a,
@@ -112,11 +119,31 @@
   // any other renderer-side nav initiations?). Double-check this for
   // correct behavior on interstitials -- we probably want to basically queue
   // any request for which GetVisibleURL != GetLastCommittedURL.
-  const GURL& request_url_ = web_contents()->GetLastCommittedURL();
+  const GURL& main_frame_url_ = web_contents()->GetLastCommittedURL();
   bool is_main_frame =
-      url::Origin::Create(request_url_)
+      url::Origin::Create(main_frame_url_)
           .IsSameOriginWith(url::Origin::Create(request->GetOrigin()));
 
+#if defined(OS_CHROMEOS)
+  // In web kiosk mode, all permission requests are auto-approved for the origin
+  // of the main app.
+  if (user_manager::UserManager::IsInitialized() &&
+      user_manager::UserManager::Get()->IsLoggedInAsWebKioskApp()) {
+    const AccountId& account_id =
+        user_manager::UserManager::Get()->GetPrimaryUser()->GetAccountId();
+    DCHECK(chromeos::WebKioskAppManager::IsInitialized());
+    const chromeos::WebKioskAppData* app_data =
+        chromeos::WebKioskAppManager::Get()->GetAppByAccountId(account_id);
+    DCHECK(app_data);
+    if (url::Origin::Create(request->GetOrigin()) ==
+        url::Origin::Create(app_data->install_url())) {
+      request->PermissionGranted();
+      request->RequestFinished();
+      return;
+    }
+  }
+#endif
+
   // Don't re-add an existing request or one with a duplicate text request.
   PermissionRequest* existing_request = GetExistingRequest(request);
   if (existing_request) {
@@ -448,8 +475,6 @@
 
   auto* adaptive_notification_permission_ui_enabler =
       AdaptiveQuietNotificationPermissionUiEnabler::GetForProfile(profile);
-  adaptive_notification_permission_ui_enabler->RecordPermissionPromptOutcome(
-      permission_action);
   for (PermissionRequest* request : requests_) {
     // TODO(timloh): We only support dismiss and ignore embargo for permissions
     // which use PermissionRequestImpl as the other subclasses don't support
@@ -457,6 +482,12 @@
     if (request->GetContentSettingsType() == ContentSettingsType::DEFAULT)
       continue;
 
+    if (request->GetPermissionRequestType() ==
+        PermissionRequestType::PERMISSION_NOTIFICATIONS) {
+      adaptive_notification_permission_ui_enabler
+          ->RecordPermissionPromptOutcome(permission_action);
+    }
+
     PermissionEmbargoStatus embargo_status =
         PermissionEmbargoStatus::NOT_EMBARGOED;
     if (permission_action == PermissionAction::DISMISSED) {
diff --git a/chrome/browser/permissions/permission_request_manager_unittest.cc b/chrome/browser/permissions/permission_request_manager_unittest.cc
index c418d505..6e70557 100644
--- a/chrome/browser/permissions/permission_request_manager_unittest.cc
+++ b/chrome/browser/permissions/permission_request_manager_unittest.cc
@@ -31,8 +31,14 @@
 #include "chrome/test/base/testing_profile.h"
 #include "components/pref_registry/pref_registry_syncable.h"
 #include "components/prefs/scoped_user_pref_update.h"
+#include "components/user_manager/scoped_user_manager.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
+#if defined(OS_CHROMEOS)
+#include "chrome/browser/chromeos/app_mode/web_app/web_kiosk_app_manager.h"
+#include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h"
+#endif
+
 const double kTestEngagementScore = 29;
 
 class PermissionRequestManagerTest : public ChromeRenderViewHostTestHarness {
@@ -123,6 +129,34 @@
     manager_->NavigationEntryCommitted(details);
   }
 
+#if defined(OS_CHROMEOS)
+  std::unique_ptr<MockPermissionRequest> MakeRequestInWebKioskMode(
+      const GURL& url,
+      const GURL& app_url) {
+    const AccountId account_id = AccountId::FromUserEmail("lala@example.com");
+
+    auto fake_user_manager =
+        std::make_unique<chromeos::FakeChromeUserManager>();
+    // Stealing the pointer from unique ptr before it goes to the scoped user
+    // manager.
+    chromeos::FakeChromeUserManager* user_manager = fake_user_manager.get();
+    auto scoped_user_manager =
+        std::make_unique<user_manager::ScopedUserManager>(
+            std::move(fake_user_manager));
+    user_manager->AddWebKioskAppUser(account_id);
+    user_manager->LoginUser(account_id);
+
+    auto kiosk_app_manager = std::make_unique<chromeos::WebKioskAppManager>();
+    kiosk_app_manager->AddAppForTesting(account_id, app_url);
+
+    NavigateAndCommit(url);
+    auto request = std::make_unique<MockPermissionRequest>(
+        /*text*/ "test", PermissionRequestType::PERMISSION_GEOLOCATION, url);
+    manager_->AddRequest(request.get());
+    return request;
+  }
+#endif
+
  protected:
   GURL url_;
   MockPermissionRequest request1_;
@@ -677,6 +711,22 @@
   EXPECT_FALSE(manager_->ShouldCurrentRequestUseQuietUI());
   Deny();
 
+  // Only denying the notification permission should count toward the threshold,
+  // other permissions should not.
+  GURL camera_url("http://www.camera.com/");
+  NavigateAndCommit(camera_url);
+  manager_->AddRequest(&request_camera_);
+  WaitForBubbleToBeShown();
+  EXPECT_FALSE(manager_->ShouldCurrentRequestUseQuietUI());
+  Deny();
+
+  GURL microphone_url("http://www.microphone.com/");
+  NavigateAndCommit(microphone_url);
+  manager_->AddRequest(&request_mic_);
+  WaitForBubbleToBeShown();
+  EXPECT_FALSE(manager_->ShouldCurrentRequestUseQuietUI());
+  Deny();
+
   GURL notification6("http://www.notification6.com/");
   NavigateAndCommit(notification6);
   MockPermissionRequest notification6_request(
@@ -891,3 +941,28 @@
   EXPECT_FALSE(manager_->ShouldCurrentRequestUseQuietUI());
   Accept();
 }
+
+#if defined(OS_CHROMEOS)
+TEST_F(PermissionRequestManagerTest, TestWebKioskModeSameOrigin) {
+  auto request =
+      MakeRequestInWebKioskMode(/*url*/ GURL("https://google.com/page"),
+                                /*app_url*/ GURL("https://google.com/launch"));
+
+  WaitForBubbleToBeShown();
+  // It should be granted by default.
+  EXPECT_TRUE(request->granted());
+}
+
+TEST_F(PermissionRequestManagerTest, TestWebKioskModeDifferentOrigin) {
+  auto request =
+      MakeRequestInWebKioskMode(/*url*/ GURL("https://example.com/page"),
+                                /*app_url*/ GURL("https://google.com/launch"));
+
+  WaitForBubbleToBeShown();
+  // It should not be granted by default.
+  EXPECT_FALSE(request->granted());
+  // But you should be able to accept it.
+  Accept();
+  EXPECT_TRUE(request->granted());
+}
+#endif  // defined(OS_CHROMEOS)
diff --git a/chrome/browser/permissions/permission_result.h b/chrome/browser/permissions/permission_result.h
index f85ce02e..484ff29 100644
--- a/chrome/browser/permissions/permission_result.h
+++ b/chrome/browser/permissions/permission_result.h
@@ -35,10 +35,6 @@
   // seen by the user. This may be very confusing for a user to see in a
   // permissions request.
   VIRTUAL_URL_DIFFERENT_ORIGIN,
-
-  // In web kiosk mode, all permissions are granted to the domain associated
-  // with the single app running.
-  WEB_KIOSK_APP_MODE,
 };
 
 struct PermissionResult {
diff --git a/chrome/browser/permissions/permission_uma_util.cc b/chrome/browser/permissions/permission_uma_util.cc
index 1935e1f..d0ef51bc 100644
--- a/chrome/browser/permissions/permission_uma_util.cc
+++ b/chrome/browser/permissions/permission_uma_util.cc
@@ -257,7 +257,6 @@
     case PermissionStatusSource::INSECURE_ORIGIN:
     case PermissionStatusSource::FEATURE_POLICY:
     case PermissionStatusSource::VIRTUAL_URL_DIFFERENT_ORIGIN:
-    case PermissionStatusSource::WEB_KIOSK_APP_MODE:
       // The permission wasn't under embargo, so don't record anything. We may
       // embargo it later.
       break;
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
index 2a047999..736066e 100644
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -172,9 +172,13 @@
 #include "chrome/browser/component_updater/metadata_table_chromeos.h"
 #else
 #include "chrome/browser/extensions/api/enterprise_reporting_private/prefs.h"
-#endif
+#endif  // defined(OS_CHROMEOS)
 #endif  // BUILDFLAG(ENABLE_EXTENSIONS)
 
+#if BUILDFLAG(ENABLE_LEGACY_DESKTOP_IN_PRODUCT_HELP)
+#include "chrome/browser/feature_engagement/session_duration_updater.h"
+#endif
+
 #if BUILDFLAG(ENABLE_OFFLINE_PAGES)
 #include "chrome/browser/offline_pages/prefetch/offline_metrics_collector_impl.h"
 #include "chrome/browser/offline_pages/prefetch/prefetch_background_task_handler_impl.h"
@@ -186,18 +190,14 @@
 #include "chrome/browser/plugins/plugins_resource_service.h"
 #endif
 
-#if BUILDFLAG(ENABLE_SUPERVISED_USERS)
-#include "chrome/browser/supervised_user/child_accounts/child_account_service.h"
-#include "chrome/browser/supervised_user/supervised_user_service.h"
-#include "chrome/browser/supervised_user/supervised_user_whitelist_service.h"
-#endif
-
 #if BUILDFLAG(ENABLE_SERVICE_DISCOVERY)
 #include "chrome/browser/ui/webui/local_discovery/local_discovery_ui.h"
 #endif
 
-#if BUILDFLAG(ENABLE_LEGACY_DESKTOP_IN_PRODUCT_HELP)
-#include "chrome/browser/feature_engagement/session_duration_updater.h"
+#if BUILDFLAG(ENABLE_SUPERVISED_USERS)
+#include "chrome/browser/supervised_user/child_accounts/child_account_service.h"
+#include "chrome/browser/supervised_user/supervised_user_service.h"
+#include "chrome/browser/supervised_user/supervised_user_whitelist_service.h"
 #endif
 
 #if defined(OS_ANDROID)
@@ -217,10 +217,14 @@
 #if BUILDFLAG(ENABLE_FEED_IN_CHROME)
 #include "components/feed/core/pref_names.h"
 #endif  // BUILDFLAG(ENABLE_FEED_IN_CHROME)
+#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
+#include "components/games/core/games_prefs.h"
+#endif  // BUILDFLAG(GOOGLE_CHROME_BRANDING)
 #else   // defined(OS_ANDROID)
 #include "chrome/browser/apps/app_service/app_service_proxy.h"
 #include "chrome/browser/enterprise_reporting/prefs.h"
 #include "chrome/browser/gcm/gcm_product_util.h"
+#include "chrome/browser/media/unified_autoplay_config.h"
 #include "chrome/browser/metrics/tab_stats_tracker.h"
 #include "chrome/browser/search/instant_service.h"
 #include "chrome/browser/search/promos/promo_service.h"
@@ -231,6 +235,7 @@
 #include "chrome/browser/ui/webui/history/history_ui.h"
 #include "chrome/browser/ui/webui/settings/settings_ui.h"
 #include "chrome/browser/upgrade_detector/upgrade_detector.h"
+#include "components/ntp_tiles/custom_links_manager_impl.h"
 #endif  // defined(OS_ANDROID)
 
 #if defined(OS_CHROMEOS)
@@ -363,15 +368,6 @@
 #include "chrome/browser/ui/browser_view_prefs.h"
 #endif
 
-#if !defined(OS_ANDROID)
-#include "chrome/browser/media/unified_autoplay_config.h"
-#include "components/ntp_tiles/custom_links_manager_impl.h"
-#endif
-
-#if defined(OS_ANDROID) && BUILDFLAG(GOOGLE_CHROME_BRANDING)
-#include "components/games/core/games_prefs.h"
-#endif
-
 namespace {
 
 // Deprecated 8/2018.
diff --git a/chrome/browser/previews/lazyload_browsertest.cc b/chrome/browser/previews/lazyload_browsertest.cc
index 593bec5..31c354f5 100644
--- a/chrome/browser/previews/lazyload_browsertest.cc
+++ b/chrome/browser/previews/lazyload_browsertest.cc
@@ -409,7 +409,7 @@
   }
 };
 
-IN_PROC_BROWSER_TEST_F(LazyLoadPrerenderBrowserTest, ImagesIgnored) {
+IN_PROC_BROWSER_TEST_F(LazyLoadPrerenderBrowserTest, DISABLED_ImagesIgnored) {
   EnableDataSaver(true);
   SetUpURLMonitor();
   ASSERT_TRUE(embedded_test_server()->Start());
diff --git a/chrome/browser/profiling_host/BUILD.gn b/chrome/browser/profiling_host/BUILD.gn
index ebb02e5..5470239 100644
--- a/chrome/browser/profiling_host/BUILD.gn
+++ b/chrome/browser/profiling_host/BUILD.gn
@@ -40,6 +40,7 @@
   deps = [
     "//base",
     "//base/allocator:buildflags",
+    "//chrome/common:non_code_constants",
     "//components/heap_profiling:test_support",
     "//components/services/heap_profiling/public/cpp",
     "//content/public/common",
diff --git a/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.cc b/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.cc
index 4bb88c5..d72a8675 100644
--- a/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.cc
+++ b/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.cc
@@ -34,7 +34,7 @@
 
 PepperBrokerMessageFilter::~PepperBrokerMessageFilter() {}
 
-scoped_refptr<base::TaskRunner>
+scoped_refptr<base::SequencedTaskRunner>
 PepperBrokerMessageFilter::OverrideTaskRunnerForMessage(
     const IPC::Message& message) {
   return base::CreateSingleThreadTaskRunner({BrowserThread::UI});
diff --git a/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.h b/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.h
index d3a01e4..fcff9060 100644
--- a/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.h
+++ b/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.h
@@ -33,7 +33,7 @@
   ~PepperBrokerMessageFilter() override;
 
   // ppapi::host::ResourceMessageFilter overrides.
-  scoped_refptr<base::TaskRunner> OverrideTaskRunnerForMessage(
+  scoped_refptr<base::SequencedTaskRunner> OverrideTaskRunnerForMessage(
       const IPC::Message& message) override;
   int32_t OnResourceMessageReceived(
       const IPC::Message& msg,
diff --git a/chrome/browser/renderer_host/pepper/pepper_flash_clipboard_message_filter.cc b/chrome/browser/renderer_host/pepper/pepper_flash_clipboard_message_filter.cc
index 8a57873..4336ec6 100644
--- a/chrome/browser/renderer_host/pepper/pepper_flash_clipboard_message_filter.cc
+++ b/chrome/browser/renderer_host/pepper/pepper_flash_clipboard_message_filter.cc
@@ -99,7 +99,7 @@
 
 PepperFlashClipboardMessageFilter::~PepperFlashClipboardMessageFilter() {}
 
-scoped_refptr<base::TaskRunner>
+scoped_refptr<base::SequencedTaskRunner>
 PepperFlashClipboardMessageFilter::OverrideTaskRunnerForMessage(
     const IPC::Message& msg) {
   // Clipboard writes should always occur on the UI thread due to the
diff --git a/chrome/browser/renderer_host/pepper/pepper_flash_clipboard_message_filter.h b/chrome/browser/renderer_host/pepper/pepper_flash_clipboard_message_filter.h
index 33b4797d5..9498c394 100644
--- a/chrome/browser/renderer_host/pepper/pepper_flash_clipboard_message_filter.h
+++ b/chrome/browser/renderer_host/pepper/pepper_flash_clipboard_message_filter.h
@@ -39,7 +39,7 @@
 
  protected:
   // ppapi::host::ResourceMessageFilter overrides.
-  scoped_refptr<base::TaskRunner> OverrideTaskRunnerForMessage(
+  scoped_refptr<base::SequencedTaskRunner> OverrideTaskRunnerForMessage(
       const IPC::Message& msg) override;
   int32_t OnResourceMessageReceived(
       const IPC::Message& msg,
diff --git a/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.cc b/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.cc
index 0fa0fa34..c94e1947 100644
--- a/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.cc
+++ b/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.cc
@@ -76,7 +76,7 @@
 PepperIsolatedFileSystemMessageFilter::
     ~PepperIsolatedFileSystemMessageFilter() {}
 
-scoped_refptr<base::TaskRunner>
+scoped_refptr<base::SequencedTaskRunner>
 PepperIsolatedFileSystemMessageFilter::OverrideTaskRunnerForMessage(
     const IPC::Message& msg) {
   // In order to reach ExtensionSystem, we need to get ProfileManager first.
diff --git a/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.h b/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.h
index b36248d..56a23e8f 100644
--- a/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.h
+++ b/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.h
@@ -40,7 +40,7 @@
       content::BrowserPpapiHost* host);
 
   // ppapi::host::ResourceMessageFilter implementation.
-  scoped_refptr<base::TaskRunner> OverrideTaskRunnerForMessage(
+  scoped_refptr<base::SequencedTaskRunner> OverrideTaskRunnerForMessage(
       const IPC::Message& msg) override;
   int32_t OnResourceMessageReceived(
       const IPC::Message& msg,
diff --git a/chrome/browser/resource_coordinator/local_site_characteristics_data_unittest_utils.cc b/chrome/browser/resource_coordinator/local_site_characteristics_data_unittest_utils.cc
index 6f0c6f8..1f1b0e5 100644
--- a/chrome/browser/resource_coordinator/local_site_characteristics_data_unittest_utils.cc
+++ b/chrome/browser/resource_coordinator/local_site_characteristics_data_unittest_utils.cc
@@ -101,6 +101,7 @@
   // initialized.
   performance_manager_ =
       performance_manager::PerformanceManagerImpl::Create(base::DoNothing());
+  registry_ = performance_manager::PerformanceManagerRegistry::Create();
 
   LocalSiteCharacteristicsDataStoreFactory::EnableForTesting();
 
@@ -112,6 +113,8 @@
 }
 
 void ChromeTestHarnessWithLocalDB::TearDown() {
+  registry_->TearDown();
+  registry_.reset();
   performance_manager::PerformanceManagerImpl::Destroy(
       std::move(performance_manager_));
   content::SetSystemConnectorForTesting(nullptr);
diff --git a/chrome/browser/resource_coordinator/local_site_characteristics_data_unittest_utils.h b/chrome/browser/resource_coordinator/local_site_characteristics_data_unittest_utils.h
index e71dbb1..a7553e8 100644
--- a/chrome/browser/resource_coordinator/local_site_characteristics_data_unittest_utils.h
+++ b/chrome/browser/resource_coordinator/local_site_characteristics_data_unittest_utils.h
@@ -14,6 +14,7 @@
 #include "chrome/browser/resource_coordinator/local_site_characteristics_data_store_factory.h"
 #include "chrome/browser/resource_coordinator/local_site_characteristics_database.h"
 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
+#include "components/performance_manager/embedder/performance_manager_registry.h"
 #include "components/performance_manager/performance_manager_impl.h"
 #include "testing/gmock/include/gmock/gmock.h"
 
@@ -108,6 +109,7 @@
  private:
   std::unique_ptr<performance_manager::PerformanceManagerImpl>
       performance_manager_;
+  std::unique_ptr<performance_manager::PerformanceManagerRegistry> registry_;
 };
 
 }  // namespace testing
diff --git a/chrome/browser/resource_coordinator/tab_lifecycle_unit_source_unittest.cc b/chrome/browser/resource_coordinator/tab_lifecycle_unit_source_unittest.cc
index 78e66f6..210442d0 100644
--- a/chrome/browser/resource_coordinator/tab_lifecycle_unit_source_unittest.cc
+++ b/chrome/browser/resource_coordinator/tab_lifecycle_unit_source_unittest.cc
@@ -31,7 +31,7 @@
 #include "chrome/browser/ui/tabs/test_tab_strip_model_delegate.h"
 #include "chrome/common/pref_names.h"
 #include "chrome/test/base/testing_profile.h"
-#include "components/performance_manager/performance_manager_tab_helper.h"
+#include "components/performance_manager/embedder/performance_manager_registry.h"
 #include "components/performance_manager/public/performance_manager.h"
 #include "components/performance_manager/test_support/graph_impl.h"
 #include "components/prefs/pref_registry_simple.h"
@@ -799,8 +799,8 @@
   std::unique_ptr<content::WebContents> web_contents =
       CreateAndNavigateWebContents();
   content::WebContents* raw_web_contents = web_contents.get();
-  performance_manager::PerformanceManagerTabHelper::CreateForWebContents(
-      raw_web_contents);
+  performance_manager::PerformanceManagerRegistry::GetInstance()
+      ->CreatePageNodeForWebContents(raw_web_contents);
 
   auto page_node =
       performance_manager::PerformanceManager::GetPageNodeForWebContents(
diff --git a/chrome/browser/resource_coordinator/tab_manager.cc b/chrome/browser/resource_coordinator/tab_manager.cc
index 82dabd2..aa73cdd 100644
--- a/chrome/browser/resource_coordinator/tab_manager.cc
+++ b/chrome/browser/resource_coordinator/tab_manager.cc
@@ -32,7 +32,7 @@
 #include "chrome/browser/media/webrtc/media_capture_devices_dispatcher.h"
 #include "chrome/browser/media/webrtc/media_stream_capture_indicator.h"
 #include "chrome/browser/memory/oom_memory_details.h"
-#include "chrome/browser/performance_manager/performance_manager_features.h"
+#include "chrome/browser/performance_manager/graph/policies/policy_features.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/resource_coordinator/background_tab_navigation_throttle.h"
 #include "chrome/browser/resource_coordinator/local_site_characteristics_webcontents_observer.h"
@@ -193,16 +193,23 @@
 // MemoryPressureMonitor is not implemented on Linux so far and tabs are never
 // discarded.
 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS)
-  // Create a |MemoryPressureListener| to listen for memory events when
-  // MemoryCoordinator is disabled. When MemoryCoordinator is enabled
-  // it asks TabManager to do tab discarding.
-  base::MemoryPressureMonitor* monitor = base::MemoryPressureMonitor::Get();
-  if (monitor) {
-    RegisterMemoryPressureListener();
-    base::MemoryPressureListener::MemoryPressureLevel level =
-        monitor->GetCurrentPressureLevel();
-    if (level == base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL) {
-      OnMemoryPressure(level);
+  // Don't handle memory pressure events here if this is done by
+  // PerformanceManager.
+  if (!base::FeatureList::IsEnabled(
+          performance_manager::features::
+              kUrgentDiscardingFromPerformanceManager)) {
+    // Create a |MemoryPressureListener| to listen for memory events when
+    // MemoryCoordinator is disabled. When MemoryCoordinator is enabled
+    // it asks TabManager to do tab discarding.
+    base::MemoryPressureMonitor* monitor = base::MemoryPressureMonitor::Get();
+    if (monitor) {
+      RegisterMemoryPressureListener();
+      base::MemoryPressureListener::MemoryPressureLevel level =
+          monitor->GetCurrentPressureLevel();
+      if (level ==
+          base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL) {
+        OnMemoryPressure(level);
+      }
     }
   }
 #endif
@@ -263,6 +270,8 @@
 }
 
 void TabManager::LogMemoryAndDiscardTab(LifecycleUnitDiscardReason reason) {
+  DCHECK(!base::FeatureList::IsEnabled(
+      performance_manager::features::kUrgentDiscardingFromPerformanceManager));
   // Discard immediately without waiting for LogMemory() (https://crbug/850545).
   // Consider removing LogMemory() at all if nobody cares about the log.
   LogMemory("Tab Discards Memory details");
@@ -777,7 +786,7 @@
     return;
 
   if (base::FeatureList::IsEnabled(
-          features::kPageFreezingFromPerformanceManager)) {
+          performance_manager::features::kPageFreezingFromPerformanceManager)) {
     return;
   }
 
diff --git a/chrome/browser/resource_coordinator/tab_manager_stats_collector_unittest.cc b/chrome/browser/resource_coordinator/tab_manager_stats_collector_unittest.cc
index 8318fe27..e6a84b1 100644
--- a/chrome/browser/resource_coordinator/tab_manager_stats_collector_unittest.cc
+++ b/chrome/browser/resource_coordinator/tab_manager_stats_collector_unittest.cc
@@ -26,7 +26,7 @@
 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
 #include "chrome/test/base/test_browser_window.h"
 #include "chrome/test/base/testing_profile.h"
-#include "components/performance_manager/performance_manager_tab_helper.h"
+#include "components/performance_manager/embedder/performance_manager_registry.h"
 #include "components/ukm/test_ukm_recorder.h"
 #include "content/public/browser/web_contents.h"
 #include "content/public/test/web_contents_tester.h"
@@ -109,8 +109,8 @@
 
   std::unique_ptr<WebContents> CreateWebContentsForUKM(ukm::SourceId id) {
     std::unique_ptr<WebContents> contents(CreateTestWebContents());
-    performance_manager::PerformanceManagerTabHelper::CreateForWebContents(
-        contents.get());
+    performance_manager::PerformanceManagerRegistry::GetInstance()
+        ->CreatePageNodeForWebContents(contents.get());
     ResourceCoordinatorTabHelper::CreateForWebContents(contents.get());
     ResourceCoordinatorTabHelper::FromWebContents(contents.get())
         ->SetUkmSourceIdForTest(id);
diff --git a/chrome/browser/resource_coordinator/tab_manager_unittest.cc b/chrome/browser/resource_coordinator/tab_manager_unittest.cc
index 2546a28..56f5790 100644
--- a/chrome/browser/resource_coordinator/tab_manager_unittest.cc
+++ b/chrome/browser/resource_coordinator/tab_manager_unittest.cc
@@ -47,7 +47,7 @@
 #include "chrome/common/url_constants.h"
 #include "chrome/test/base/test_browser_window.h"
 #include "chrome/test/base/testing_profile.h"
-#include "components/performance_manager/performance_manager_tab_helper.h"
+#include "components/performance_manager/embedder/performance_manager_registry.h"
 #include "components/variations/variations_associated_data.h"
 #include "content/public/browser/render_frame_host.h"
 #include "content/public/browser/render_process_host.h"
@@ -197,18 +197,18 @@
                    const char* url2 = kTestUrl,
                    const char* url3 = kTestUrl) {
     contents1_ = CreateTestWebContents();
-    performance_manager::PerformanceManagerTabHelper::CreateForWebContents(
-        contents1_.get());
+    performance_manager::PerformanceManagerRegistry::GetInstance()
+        ->CreatePageNodeForWebContents(contents1_.get());
     ResourceCoordinatorTabHelper::CreateForWebContents(contents1_.get());
     nav_handle1_ = CreateTabAndNavigation(url1, contents1_.get());
     contents2_ = CreateTestWebContents();
-    performance_manager::PerformanceManagerTabHelper::CreateForWebContents(
-        contents2_.get());
+    performance_manager::PerformanceManagerRegistry::GetInstance()
+        ->CreatePageNodeForWebContents(contents2_.get());
     ResourceCoordinatorTabHelper::CreateForWebContents(contents2_.get());
     nav_handle2_ = CreateTabAndNavigation(url2, contents2_.get());
     contents3_ = CreateTestWebContents();
-    performance_manager::PerformanceManagerTabHelper::CreateForWebContents(
-        contents3_.get());
+    performance_manager::PerformanceManagerRegistry::GetInstance()
+        ->CreatePageNodeForWebContents(contents3_.get());
     ResourceCoordinatorTabHelper::CreateForWebContents(contents3_.get());
     nav_handle3_ = CreateTabAndNavigation(url3, contents3_.get());
 
diff --git a/chrome/browser/resource_coordinator/tab_metrics_logger.cc b/chrome/browser/resource_coordinator/tab_metrics_logger.cc
index 853a9ce2..63930d2 100644
--- a/chrome/browser/resource_coordinator/tab_metrics_logger.cc
+++ b/chrome/browser/resource_coordinator/tab_metrics_logger.cc
@@ -240,6 +240,7 @@
       window_type = WindowMetricsEvent::TYPE_POPUP;
       break;
     case Browser::TYPE_APP:
+    case Browser::TYPE_APP_POPUP:
       window_type = WindowMetricsEvent::TYPE_APP;
       break;
     case Browser::TYPE_DEVTOOLS:
diff --git a/chrome/browser/resources/bluetooth_internals/adapter_broker.js b/chrome/browser/resources/bluetooth_internals/adapter_broker.js
index 1ca5ea6..faf51bf 100644
--- a/chrome/browser/resources/bluetooth_internals/adapter_broker.js
+++ b/chrome/browser/resources/bluetooth_internals/adapter_broker.js
@@ -166,7 +166,8 @@
 
     const bluetoothInternalsHandler = opt_bluetoothInternalsHandler ?
         opt_bluetoothInternalsHandler :
-        mojom.BluetoothInternalsHandler.getRemote();
+        mojom.BluetoothInternalsHandler.getRemote(
+            /*useBrowserInterfaceBroker=*/ true);
 
     // Get an Adapter service.
     return bluetoothInternalsHandler.getAdapter().then(function(response) {
diff --git a/chrome/browser/resources/bluetooth_internals/bluetooth_internals.js b/chrome/browser/resources/bluetooth_internals/bluetooth_internals.js
index e146a8e..9e3e1a3c 100644
--- a/chrome/browser/resources/bluetooth_internals/bluetooth_internals.js
+++ b/chrome/browser/resources/bluetooth_internals/bluetooth_internals.js
@@ -40,7 +40,8 @@
   let userRequestedScanStop = false;
 
   /** @type {!mojom.BluetoothInternalsHandlerRemote} */
-  const bluetoothInternalsHandler = mojom.BluetoothInternalsHandler.getRemote();
+  const bluetoothInternalsHandler = mojom.BluetoothInternalsHandler.getRemote(
+      /*useBrowserInterfaceBroker=*/ true);
 
   /**
    * Observer for page changes. Used to update page title header.
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/desktop_automation_handler.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/desktop_automation_handler.js
index 119f764..caa94665 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/desktop_automation_handler.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/desktop_automation_handler.js
@@ -63,6 +63,12 @@
       EventType.DOCUMENT_SELECTION_CHANGED, this.onDocumentSelectionChanged);
   this.addListener_(EventType.FOCUS, this.onFocus);
   this.addListener_(EventType.HOVER, this.onHover);
+
+  // Note that live region changes from views are really announcement
+  // events. Their target nodes contain no live region semantics and have no
+  // relation to live regions which are supported in |LiveRegions|.
+  this.addListener_(EventType.LIVE_REGION_CHANGED, this.onEventFromViews);
+
   this.addListener_(EventType.LOAD_COMPLETE, this.onLoadComplete);
   this.addListener_(EventType.MENU_END, this.onMenuEnd);
   this.addListener_(EventType.MENU_LIST_ITEM_SELECTED, this.onEventIfSelected);
@@ -155,6 +161,15 @@
   /**
    * @param {!AutomationEvent} evt
    */
+  onEventFromViews: function(evt) {
+    if (evt.target.root.role == RoleType.DESKTOP) {
+      this.onEventDefault(evt);
+    }
+  },
+
+  /**
+   * @param {!AutomationEvent} evt
+   */
   onEventIfSelected: function(evt) {
     if (evt.target.selected) {
       this.onEventDefault(evt);
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/editing_test.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/editing_test.js
index 86a19bb5..8ebe416 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/editing_test.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/editing_test.js
@@ -1197,7 +1197,8 @@
       });
 });
 
-TEST_F('ChromeVoxEditingTest', 'BackwardWordDelete', function() {
+// TODO(https://crbug.com/1033983) flaky on linux-chromeos-rel/dbg.
+TEST_F('ChromeVoxEditingTest', 'DISABLED_BackwardWordDelete', function() {
   var mockFeedback = this.createMockFeedback();
   this.runWithLoadedTree(
       `
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/output.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/output.js
index 8d785d7..ed97b63 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/output.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/output.js
@@ -153,8 +153,6 @@
   comboBoxMenuButton: {msgId: 'role_combobox', earconId: 'LISTBOX'},
   complementary: {msgId: 'role_complementary', inherits: 'abstractContainer'},
   comment: {msgId: 'role_comment', inherits: 'abstractContainer'},
-  commentSection:
-      {msgId: 'role_comment_section', inherits: 'abstractContainer'},
   contentDeletion:
       {msgId: 'role_content_deletion', inherits: 'abstractContainer'},
   contentInsertion:
@@ -272,7 +270,6 @@
   radioButton: {msgId: 'role_radio'},
   radioGroup: {msgId: 'role_radiogroup', inherits: 'abstractContainer'},
   region: {msgId: 'role_region', inherits: 'abstractContainer'},
-  revision: {msgId: 'role_revision', inherits: 'abstractContainer'},
   rootWebArea: {outputContextFirst: true},
   row: {msgId: 'role_row', inherits: 'abstractContainer'},
   rowHeader: {msgId: 'role_rowheader', inherits: 'cell'},
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/background/output_test.js b/chrome/browser/resources/chromeos/accessibility/chromevox/background/output_test.js
index 489d3e0..f0b8455e 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/background/output_test.js
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/background/output_test.js
@@ -567,22 +567,52 @@
 
 SYNC_TEST_F('ChromeVoxOutputE2ETest', 'MessageIdAndEarconValidity', function() {
   const kNoBrailleMessageRequired = new Set([
-    'comment',          'commentSection',   'contentDeletion',
-    'contentInsertion', 'docAbstract',      'docAcknowledgments',
-    'docAfterword',     'docAppendix',      'docBackLink',
-    'docBiblioEntry',   'docBibliography',  'docBiblioRef',
-    'docChapter',       'docColophon',      'docConclusion',
-    'docCover',         'docCredit',        'docCredits',
-    'docDedication',    'docEndnote',       'docEndnotes',
-    'docEpigraph',      'docEpilogue',      'docErrata',
-    'docExample',       'docFootnote',      'docForeword',
-    'docGlossary',      'docGlossRef',      'docIndex',
-    'docIntroduction',  'docNoteRef',       'docNotice',
-    'docPageBreak',     'docPageList',      'docPart',
-    'docPreface',       'docPrologue',      'docPullquote',
-    'docQna',           'docSubtitle',      'docTip',
-    'docToc',           'graphicsDocument', 'graphicsObject',
-    'graphicsSymbol',   'revision',         'suggestion',
+    'comment',
+    'contentDeletion',
+    'contentInsertion',
+    'docAbstract',
+    'docAcknowledgments',
+    'docAfterword',
+    'docAppendix',
+    'docBackLink',
+    'docBiblioEntry',
+    'docBibliography',
+    'docBiblioRef',
+    'docChapter',
+    'docColophon',
+    'docConclusion',
+    'docCover',
+    'docCredit',
+    'docCredits',
+    'docDedication',
+    'docEndnote',
+    'docEndnotes',
+    'docEpigraph',
+    'docEpilogue',
+    'docErrata',
+    'docExample',
+    'docFootnote',
+    'docForeword',
+    'docGlossary',
+    'docGlossRef',
+    'docIndex',
+    'docIntroduction',
+    'docNoteRef',
+    'docNotice',
+    'docPageBreak',
+    'docPageList',
+    'docPart',
+    'docPreface',
+    'docPrologue',
+    'docPullquote',
+    'docQna',
+    'docSubtitle',
+    'docTip',
+    'docToc',
+    'graphicsDocument',
+    'graphicsObject',
+    'graphicsSymbol',
+    'suggestion',
   ]);
   for (var key in Output.ROLE_INFO_) {
     var value = Output.ROLE_INFO_[key];
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings.grd b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings.grd
index f575f39..501a3375 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings.grd
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings.grd
@@ -1123,9 +1123,6 @@
       <message desc="Accessibility role description for a single comment" name="IDS_CHROMEVOX_ROLE_COMMENT">
         Comment
       </message>
-      <message desc="Accessibility role description for a comment section" name="IDS_CHROMEVOX_ROLE_COMMENT_SECTION">
-        Comment section
-      </message>
       <message desc="Accessibility role description for content deletion, meaning content that is has been or is suggested to be removed from a document, such as in a revision review" name="IDS_CHROMEVOX_ROLE_CONTENT_DELETION">
         Deletion
       </message>
@@ -1366,9 +1363,6 @@
       <message desc="This is an abbreviated ARIA widget role name shown on a braille display. When translating, try to find a contracted form of the translation for 'radio button group' according to local conventions. If reasonable, use all lowercase and avoid punctuation to keep the number of characters as low as possible." name="IDS_CHROMEVOX_ROLE_RADIOGROUP_BRL">
         rdgrp
       </message>
-      <message desc="Accessibility role description for revision, meaning historical change info tied to this content" name="IDS_CHROMEVOX_ROLE_REVISION">
-        Revision
-      </message>
       <message desc="Describes an element with the ARIA role scrollbar." name="IDS_CHROMEVOX_ROLE_SCROLLBAR">
         Scroll bar
       </message>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_af.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_af.xtb
index 827757f..b5b53f3 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_af.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_af.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{agteroorstrepie}other{# agteroorstrepies}}</translation>
 <translation id="3650317109285159359">kieslysitemmerkblokkie</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dollar}other{# dollartekens}}</translation>
-<translation id="3658742229777143148">Hersiening</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, lyskassie</translation>
 <translation id="3681531118904532409">Papajaklits</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">Aflaai is gestaak <ph name="FILE_NAME" /></translation>
 <translation id="8138880386467279117">Raak</translation>
 <translation id="8153880621934657047">Nie in tabel nie.</translation>
-<translation id="8161114871611868169">Opmerking-afdeling</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{onderstreep}other{# onderstrepe}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">ry</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_am.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_am.xtb
index 17b213f..648058f0 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_am.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_am.xtb
@@ -384,7 +384,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{የኋሊት ጥቅስ}one{# የኋሊት ጥቅሶች}other{# የኋሊት ጥቅሶች}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{ዶላር}one{# የዶላር ምልክቶች}other{# የዶላር ምልክቶች}}</translation>
-<translation id="3658742229777143148">ክለሳ</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />፣ የዝርዝር ሳጥን</translation>
 <translation id="3681531118904532409">ፓፓያ ዊፕ</translation>
@@ -1103,7 +1102,6 @@
 <translation id="812886159861361726">ማውረድ ቆሟል <ph name="FILE_NAME" /></translation>
 <translation id="8138880386467279117">ይንኩ</translation>
 <translation id="8153880621934657047">በሠንጠረዥ ውስጥ አይደሉም።</translation>
-<translation id="8161114871611868169">የአስተያየት ክፍል</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{ሰረዘዘብጥ}one{# ሰረዘዘብጦች}other{# ሰረዘዘብጦች}}</translation>
 <translation id="8179976553408161302">አስገባ</translation>
 <translation id="8184828902145951186">ረድፍ</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ar.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ar.xtb
index 38fffa4..96f6444 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ar.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ar.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{علامة تجزئة واحدة}zero{# backticks}two{علامتا تجزئة (#)}few{# علامات تجزئة}many{# علامة تجزئة}other{# من علامات التجزئة}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{علامة دولار واحدة}zero{# dollar signs}two{علامتا دولار (#)}few{# علامات دولار}many{# علامة دولار}other{# من علامات الدولار}}</translation>
-<translation id="3658742229777143148">التعديل</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755">مربع القائمة <ph name="VALUE" /></translation>
 <translation id="3681531118904532409">أصفر باهت</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">تم إيقاف تنزيل <ph name="FILE_NAME" />.</translation>
 <translation id="8138880386467279117">اللمس</translation>
 <translation id="8153880621934657047">ليس بداخل الجدول.</translation>
-<translation id="8161114871611868169">قسم التعليقات</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{شرطة سفلية واحدة}zero{# underscores}two{شرطتان سفليتان (#)}few{# شرطات سفلية}many{# شرطة سفلية}other{# من الشرطات السفلية}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">الصف</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_as.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_as.xtb
index f2fba09..b852150 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_as.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_as.xtb
@@ -382,7 +382,6 @@
 <translation id="3622350485154495700">এটা আঙুলিৰে দুবাৰ টিপক</translation>
 <translation id="3646890046000188562">{COUNT,plural, =1{বেকটিক}one{#টা বেকটিক}other{#টা বেকটিক}}</translation>
 <translation id="3650317109285159359">চেকবক্স থকা মেনুৰ বস্তু</translation>
-<translation id="3658742229777143148">পুনৰীক্ষণ</translation>
 <translation id="3659787053479271466">সতৰ্ক</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, তালিকাৰ বাকচ</translation>
 <translation id="3681531118904532409">পাপায়া হুইপ</translation>
@@ -1101,7 +1100,6 @@
 <translation id="812886159861361726"><ph name="FILE_NAME" />ৰ ডাউনল'ড বাধাপ্ৰাপ্ত হৈছে</translation>
 <translation id="8138880386467279117">স্পর্শ</translation>
 <translation id="8153880621934657047">তালিকাৰ ভিতৰত নাই।</translation>
-<translation id="8161114871611868169">মন্তব্যৰ শাখা</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{আণ্ডাৰস্ক’ৰ}one{#টা আণ্ডাৰস্ক’ৰ}other{#টা আণ্ডাৰস্ক’ৰ}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">শাৰী</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_az.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_az.xtb
index 130a5ffc..80e5de3 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_az.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_az.xtb
@@ -384,7 +384,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{tərs dırnaq}other{# tərs dırnaq}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dollar}other{# dollar işarəsi}}</translation>
-<translation id="3658742229777143148">Versiya</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, siyahı qutusu</translation>
 <translation id="3681531118904532409">Sarımtıl</translation>
@@ -1103,7 +1102,6 @@
 <translation id="812886159861361726"><ph name="FILE_NAME" /> faylının endirilməsi dayandırıldı</translation>
 <translation id="8138880386467279117">Toxunun</translation>
 <translation id="8153880621934657047">Cədvəl daxilində deyil.</translation>
-<translation id="8161114871611868169">Şərh bölməsi</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{alt xətt}other{# alt xətt}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">cər</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_be.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_be.xtb
index 19bb893..62330c8 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_be.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_be.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{адваротны апостраф}one{# адваротны апостраф}few{# адваротныя апострафы}many{# адваротных апострафаў}other{# адваротнага апострафа}}</translation>
 <translation id="3650317109285159359">пнктменюполдптушкі</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{долар}one{# знак долара}few{# знакі долара}many{# знакаў долара}other{# знака долара}}</translation>
-<translation id="3658742229777143148">Рэдакцыя</translation>
 <translation id="3659787053479271466">абвестка</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, поле спіса</translation>
 <translation id="3681531118904532409">Папаевы крэм</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">Спынена спампоўванне файла "<ph name="FILE_NAME" />"</translation>
 <translation id="8138880386467279117">Сэнсарны ўвод</translation>
 <translation id="8153880621934657047">За межамі табліцы.</translation>
-<translation id="8161114871611868169">Раздзел каментарыяў</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{Знак падкрэслівання}one{# знак падкрэслівання}few{# знакі падкрэслівання}many{# знакаў падкрэслівання}other{# знака падкрэслівання}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">радок</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_bg.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_bg.xtb
index 292580e..846c7dd3 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_bg.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_bg.xtb
@@ -384,7 +384,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{обратен апостроф}other{# обратни апострофа}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{знак за долар}other{# знака за долар}}</translation>
-<translation id="3658742229777143148">Ревизия</translation>
 <translation id="3659787053479271466">сигнал</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, списъчно поле</translation>
 <translation id="3681531118904532409">папая</translation>
@@ -1103,7 +1102,6 @@
 <translation id="812886159861361726">Изтеглянето на <ph name="FILE_NAME" /> спря</translation>
 <translation id="8138880386467279117">Докосване</translation>
 <translation id="8153880621934657047">Не сте в таблицата.</translation>
-<translation id="8161114871611868169">Секция за коментари</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{долна черта}other{# долни черти}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">ред</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_bn.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_bn.xtb
index 0ee067e8..c14d964 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_bn.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_bn.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{ব্যাকটিক}one{#টি ব্যাকটিক}other{#টি ব্যাকটিক}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{ডলার}one{#টি ডলার চিহ্ন}other{#টি ডলার চিহ্ন}}</translation>
-<translation id="3658742229777143148">পুনর্বিবেচনা</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, তালিকা বাক্স</translation>
 <translation id="3681531118904532409">পাপায়া হুইপ</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726"><ph name="FILE_NAME" /> ডাউনলোড করা বন্ধ হয়ে গেছে</translation>
 <translation id="8138880386467279117">স্পর্শ</translation>
 <translation id="8153880621934657047">সারণীর ভিতরে নয়৷</translation>
-<translation id="8161114871611868169">মন্তব্যের বিভাগ</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{আন্ডারস্কোর}one{#টি আন্ডারস্কোর}other{#টি আন্ডারস্কোর}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">সারি</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_bs.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_bs.xtb
index f252807..a6ea816 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_bs.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_bs.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{kratkouzlazni akcenat}one{# kratkouzlazni akcenat}few{# kratkouzlazna akcenta}other{# kratkouzlaznih akcenata}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dolar}one{# znak za dolar}few{# znaka za dolar}other{# znakova za dolar}}</translation>
-<translation id="3658742229777143148">Revizija</translation>
 <translation id="3659787053479271466">upoz</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, okvir s listom</translation>
 <translation id="3681531118904532409">Papaja</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">Preuzimanje je zaustavljeno – <ph name="FILE_NAME" /></translation>
 <translation id="8138880386467279117">Dodirnuti</translation>
 <translation id="8153880621934657047">Niste unutar tabele.</translation>
-<translation id="8161114871611868169">Odjeljak za komentare</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{donja crta}one{# donja crta}few{# donje crte}other{# donjih crti}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">red</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ca.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ca.xtb
index 80470bc..90ce5eb82 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ca.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ca.xtb
@@ -384,7 +384,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{accent agut}other{# accents aguts}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dòlar}other{# símbols de dòlar}}</translation>
-<translation id="3658742229777143148">Revisió</translation>
 <translation id="3659787053479271466">alerta</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, quadre de llista</translation>
 <translation id="3681531118904532409">Papaia clar</translation>
@@ -1103,7 +1102,6 @@
 <translation id="812886159861361726">S'ha aturat la baixada del fitxer <ph name="FILE_NAME" /></translation>
 <translation id="8138880386467279117">Tàctil</translation>
 <translation id="8153880621934657047">No sou dins la taula.</translation>
-<translation id="8161114871611868169">Secció de comentaris</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{ratlla baixa}other{# ratlles baixes}}</translation>
 <translation id="8179976553408161302">Retorn</translation>
 <translation id="8184828902145951186">fila</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_cs.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_cs.xtb
index fea7cbc..d1d03c2 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_cs.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_cs.xtb
@@ -384,7 +384,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{zpětná uvozovka}few{# zpětné uvozovky}many{# backticks}other{# zpětných uvozovek}}</translation>
 <translation id="3650317109285159359">zaškrt pol nabíd</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dolar}few{# znaky dolar}many{# dollar signs}other{# znaků dolar}}</translation>
-<translation id="3658742229777143148">Verze</translation>
 <translation id="3659787053479271466">upoz</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, seznam</translation>
 <translation id="3681531118904532409">Papájová</translation>
@@ -1103,7 +1102,6 @@
 <translation id="812886159861361726">Bylo zastaveno stahování souboru <ph name="FILE_NAME" /></translation>
 <translation id="8138880386467279117">Dotykové</translation>
 <translation id="8153880621934657047">Mimo tabulku.</translation>
-<translation id="8161114871611868169">Sekce komentářů</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{podtržítko}few{# podtržítka}many{# underscores}other{# podtržítek}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">řádek</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_da.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_da.xtb
index 7f4480f9..1df78923 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_da.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_da.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{accent grave}one{# accent graver}other{# accent graver}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dollar}one{# dollartegn}other{# dollartegn}}</translation>
-<translation id="3658742229777143148">Revision</translation>
 <translation id="3659787053479271466">advar</translation>
 <translation id="3665563998540286755">Listefeltet <ph name="VALUE" /></translation>
 <translation id="3681531118904532409">Lys varm orange</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">Download af <ph name="FILE_NAME" /> er stoppet</translation>
 <translation id="8138880386467279117">Berøring</translation>
 <translation id="8153880621934657047">Ikke i tabel.</translation>
-<translation id="8161114871611868169">Kommentarsektion</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{understregning}one{# understregninger}other{# understregninger}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">rk</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_de.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_de.xtb
index 7ddfc79..f73caa74 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_de.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_de.xtb
@@ -384,7 +384,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{Backtick}other{# Backticks}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{Dollarzeichen}other{# Dollarzeichen}}</translation>
-<translation id="3658742229777143148">Überarbeitung</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, Listenfeld</translation>
 <translation id="3681531118904532409">Helles Orangegelb</translation>
@@ -1103,7 +1102,6 @@
 <translation id="812886159861361726">Download von "<ph name="FILE_NAME" />" angehalten</translation>
 <translation id="8138880386467279117">Berühren</translation>
 <translation id="8153880621934657047">Nicht in der Tabelle</translation>
-<translation id="8161114871611868169">Abschnitt für Kommentare</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{Unterstrich}other{# Unterstriche}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">Zeile</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_el.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_el.xtb
index 463661b..070ab4f 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_el.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_el.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{βαρεία}other{# βαρείες}}</translation>
 <translation id="3650317109285159359">πλαίσιο επιλογής στοιχείου μενού</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{σύμβολο δολαρίου}other{# σύμβολα δολαρίου}}</translation>
-<translation id="3658742229777143148">Αναθεώρηση</translation>
 <translation id="3659787053479271466">ειδοποίηση</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, πλαίσιο λίστας</translation>
 <translation id="3681531118904532409">Ανοιχτό παπάγιας</translation>
@@ -1105,7 +1104,6 @@
 <translation id="812886159861361726">Η λήψη του αρχείου <ph name="FILE_NAME" /> σταμάτησε</translation>
 <translation id="8138880386467279117">Άγγιγμα</translation>
 <translation id="8153880621934657047">Όχι μέσα στον πίνακα.</translation>
-<translation id="8161114871611868169">Ενότητα σχολίων</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{σύμβολο υπογράμμισης}other{# σύμβολα υπογράμμισης}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">σειρά</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_en-GB.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_en-GB.xtb
index 8518b16..51340b19 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_en-GB.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_en-GB.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{backtick}other{# backticks}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dollar}other{# dollar signs}}</translation>
-<translation id="3658742229777143148">Revision</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, list box</translation>
 <translation id="3681531118904532409">Papaya Whip</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">Download stopped <ph name="FILE_NAME" /></translation>
 <translation id="8138880386467279117">Tap</translation>
 <translation id="8153880621934657047">Not inside table.</translation>
-<translation id="8161114871611868169">Comment section</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{underscore}other{# underscores}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">row</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_es-419.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_es-419.xtb
index a1a78a5d2..018b0ae 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_es-419.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_es-419.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{comilla simple}other{# comillas simples}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dólar}other{# signos de dólar}}</translation>
-<translation id="3658742229777143148">Revisión</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, cuadro de lista</translation>
 <translation id="3681531118904532409">Fusta de papaya</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">Se detuvo la descarga <ph name="FILE_NAME" /></translation>
 <translation id="8138880386467279117">Táctil</translation>
 <translation id="8153880621934657047">No está dentro de la tabla.</translation>
-<translation id="8161114871611868169">Sección de comentarios</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{guion bajo}other{# guiones bajos}}</translation>
 <translation id="8179976553408161302">Intro</translation>
 <translation id="8184828902145951186">fila</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_es.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_es.xtb
index e093632f..b1ba4e9 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_es.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_es.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{comilla simple}other{# comillas simples}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dólar}other{# símbolos de dólar}}</translation>
-<translation id="3658742229777143148">Revisión</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, cuadro de lista</translation>
 <translation id="3681531118904532409">Papaya</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">Se ha parado la descarga de <ph name="FILE_NAME" /></translation>
 <translation id="8138880386467279117">Táctil</translation>
 <translation id="8153880621934657047">No está dentro de la tabla.</translation>
-<translation id="8161114871611868169">Sección de comentarios</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{guion bajo}other{# guiones bajos}}</translation>
 <translation id="8179976553408161302">Intro</translation>
 <translation id="8184828902145951186">fila</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_et.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_et.xtb
index 4e64ed6..fb474409 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_et.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_et.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{graavis}other{# graavist}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dollar}other{# dollarimärki}}</translation>
-<translation id="3658742229777143148">Redaktsioon</translation>
 <translation id="3659787053479271466">alarm</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, loendiboks</translation>
 <translation id="3681531118904532409">Papaiaoranž</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">Allalaadimine katkes: <ph name="FILE_NAME" /></translation>
 <translation id="8138880386467279117">Puudutage valikut</translation>
 <translation id="8153880621934657047">Ei ole tabelis.</translation>
-<translation id="8161114871611868169">Kommentaaride jaotis</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{alljoon}other{# alljoont}}</translation>
 <translation id="8179976553408161302">Sisestusklahv</translation>
 <translation id="8184828902145951186">rida</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_eu.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_eu.xtb
index 3e0b04bf..6e1a7f0 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_eu.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_eu.xtb
@@ -384,7 +384,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{azentu kamutsa}other{# azentu kamuts}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dolar ikur}other{# dolar ikur}}</translation>
-<translation id="3658742229777143148">Zuzenketa</translation>
 <translation id="3659787053479271466">alerta</translation>
 <translation id="3665563998540286755"><ph name="VALUE" /> zerrenda-koadroa</translation>
 <translation id="3681531118904532409">Papaia-kolorekoa</translation>
@@ -1103,7 +1102,6 @@
 <translation id="812886159861361726">Utzi zaio <ph name="FILE_NAME" /> deskargatzeari</translation>
 <translation id="8138880386467279117">Ukipena</translation>
 <translation id="8153880621934657047">Ez dago taula barruan.</translation>
-<translation id="8161114871611868169">Iruzkinen atala</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{azpimarra}other{# azpimarra}}</translation>
 <translation id="8179976553408161302">Sartu</translation>
 <translation id="8184828902145951186">err</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_fa.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_fa.xtb
index 5da6bec..a114aca 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_fa.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_fa.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{نقل قول وارونه}one{# نقل قول وارونه}other{# نقل قول وارونه}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{علامت دلار}one{# علامت دلار}other{# علامت دلار}}</translation>
-<translation id="3658742229777143148">ویرایش</translation>
 <translation id="3659787053479271466">هشدار</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />، کادر فهرست</translation>
 <translation id="3681531118904532409">هلویی روشن</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">بارگیری <ph name="FILE_NAME" /> متوقف شد</translation>
 <translation id="8138880386467279117">لمس</translation>
 <translation id="8153880621934657047">خارج از جدول</translation>
-<translation id="8161114871611868169">بخش نظرات</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{زیرخط}one{# زیرخط}other{# زیرخط}}</translation>
 <translation id="8179976553408161302">ورود</translation>
 <translation id="8184828902145951186">ردیف</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_fi.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_fi.xtb
index cda8320..257497c 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_fi.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_fi.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{aksenttimerkki}other{# aksenttimerkkiä}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dollari}other{# dollarimerkkiä}}</translation>
-<translation id="3658742229777143148">Päivitetty versio</translation>
 <translation id="3659787053479271466">ilm.</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, luetteloruutu</translation>
 <translation id="3681531118904532409">Papaija</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">Tiedoston <ph name="FILE_NAME" /> lataus loppui</translation>
 <translation id="8138880386467279117">Kosketus</translation>
 <translation id="8153880621934657047">Et ole taulukossa.</translation>
-<translation id="8161114871611868169">Kommenttiosio</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{alaviiva}other{# alaviivaa}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">rivi</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_fil.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_fil.xtb
index 8254447..bdb0f4a 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_fil.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_fil.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{backtick}one{# backtick}other{# na backtick}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dollar}one{# dollar sign}other{# na dollar sign}}</translation>
-<translation id="3658742229777143148">Rebisyon</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, kahon ng listahan</translation>
 <translation id="3681531118904532409">Papaya Whip</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">Hininto ang pag-download ng <ph name="FILE_NAME" /></translation>
 <translation id="8138880386467279117">Pindutin</translation>
 <translation id="8153880621934657047">Wala sa loob ng talahanayan.</translation>
-<translation id="8161114871611868169">Seksyon ng komento</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{underscore}one{# underscore}other{# na underscore}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">row</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_fr-CA.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_fr-CA.xtb
index 718ff92..e6c499e 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_fr-CA.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_fr-CA.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{apostrophe inversée}one{# apostrophe inversée}other{# apostrophes inversées}}</translation>
 <translation id="3650317109285159359">case à cocher d'élément de menu</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{symbole de dollar}one{# symbole de dollar}other{# symboles de dollar}}</translation>
-<translation id="3658742229777143148">Révision</translation>
 <translation id="3659787053479271466">alerte</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, zone de liste</translation>
 <translation id="3681531118904532409">Chair clair</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">Le téléchargement du fichier <ph name="FILE_NAME" /> a été arrêté</translation>
 <translation id="8138880386467279117">Tactile</translation>
 <translation id="8153880621934657047">Vous n'êtes pas dans un tableau.</translation>
-<translation id="8161114871611868169">Section des commentaires</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{trait de soulignement}one{# trait de soulignement}other{# traits de soulignement}}</translation>
 <translation id="8179976553408161302">Entrée</translation>
 <translation id="8184828902145951186">ligne</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_fr.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_fr.xtb
index 81e3f58..edae0bed 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_fr.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_fr.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{apostrophe inversée}one{# apostrophe inversée}other{# apostrophes inversées}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dollar}one{# dollar}other{# dollars}}</translation>
-<translation id="3658742229777143148">Révision</translation>
 <translation id="3659787053479271466">alerte</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, zone de liste.</translation>
 <translation id="3681531118904532409">Chair clair</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">Le téléchargement du fichier <ph name="FILE_NAME" /> est arrêté</translation>
 <translation id="8138880386467279117">Tactile</translation>
 <translation id="8153880621934657047">Hors du tableau</translation>
-<translation id="8161114871611868169">Section de commentaires</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{trait de soulignement}one{# trait de soulignement}other{# traits de soulignement}}</translation>
 <translation id="8179976553408161302">Entrée</translation>
 <translation id="8184828902145951186">ligne</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_gl.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_gl.xtb
index a90959a..56ef46e 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_gl.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_gl.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{acento grave}other{# acentos graves}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dólar}other{# signos do dólar}}</translation>
-<translation id="3658742229777143148">Revisión</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" /> (caixa de lista)</translation>
 <translation id="3681531118904532409">Batido de papaia</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">Detívose a descarga de <ph name="FILE_NAME" /></translation>
 <translation id="8138880386467279117">Tocar</translation>
 <translation id="8153880621934657047">Ningunha táboa interior.</translation>
-<translation id="8161114871611868169">Sección de comentarios</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{guión baixo}other{# guións baixos}}</translation>
 <translation id="8179976553408161302">Intro</translation>
 <translation id="8184828902145951186">fila</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_gu.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_gu.xtb
index cf290f89..17de8a29 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_gu.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_gu.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{બેકટિક}one{# બેકટિક}other{# બેકટિક}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{ડૉલર}one{# ડૉલરની નિશાની}other{# ડૉલરની નિશાની}}</translation>
-<translation id="3658742229777143148">પુનરાવર્તન</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, સૂચિ બૉક્સ</translation>
 <translation id="3681531118904532409">પપાયા વ્હિપ</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726"><ph name="FILE_NAME" />નું ડાઉનલોડ રોક્યું</translation>
 <translation id="8138880386467279117">ટચ કરો</translation>
 <translation id="8153880621934657047">કોષ્ટકની અંદર નથી</translation>
-<translation id="8161114871611868169">કૉમેન્ટ વિભાગ</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{અંડરસ્કોર}one{# અંડરસ્કોર}other{# અંડરસ્કોર}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">પંક્તિ</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_hi.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_hi.xtb
index 40a8b96..5e57e904c 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_hi.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_hi.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{बैकटिक}one{# बैकटिक}other{# बैकटिक}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{डॉलर}one{# डॉलर चिह्न}other{# डॉलर चिह्न}}</translation>
-<translation id="3658742229777143148">पुनरीक्षण</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, सूची बॉक्‍स</translation>
 <translation id="3681531118904532409">पपाया विप जैसा रंग</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">डाउनलोड बंद हो गया <ph name="FILE_NAME" /></translation>
 <translation id="8138880386467279117">स्पर्श करें</translation>
 <translation id="8153880621934657047">टेबल में नहीं है.</translation>
-<translation id="8161114871611868169">टिप्पणियों वाला सेक्शन</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{अंडरस्कोर}one{# अंडरस्कोर}other{# अंडरस्कोर}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">पंक्ति</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_hr.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_hr.xtb
index 1d1c74b8..16917e3f 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_hr.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_hr.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{zatvoreni jednostruki navodnik}one{# zatvoreni jednostruki navodnik}few{# zatvorena jednostruka navodnika}other{# zatvorenih jednostrukih navodnika}}</translation>
 <translation id="3650317109285159359">ptvrdstizb</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{znak dolara}one{# znak dolara}few{# znaka dolara}other{# znakova dolara}}</translation>
-<translation id="3658742229777143148">Izmjena</translation>
 <translation id="3659787053479271466">upoz</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, okvir s popisom</translation>
 <translation id="3681531118904532409">Papaja</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">Zaustavljeno je preuzimanje datoteke <ph name="FILE_NAME" /></translation>
 <translation id="8138880386467279117">Dodir</translation>
 <translation id="8153880621934657047">Niste unutar tablice.</translation>
-<translation id="8161114871611868169">Odjeljak komentara</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{donja crta}one{# donja crta}few{# donje crte}other{# donjih crta}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">redak</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_hu.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_hu.xtb
index 2f5f852..a63abffe 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_hu.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_hu.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{egyszeres nyitó idézőjel}other{# egyszeres nyitó idézőjel}}</translation>
 <translation id="3650317109285159359">jelölőnégyzet menüelem</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dollárjel}other{# dollárjel}}</translation>
-<translation id="3658742229777143148">Ellenőrzés</translation>
 <translation id="3659787053479271466">riaszt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, lista</translation>
 <translation id="3681531118904532409">Papajahab</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">A következő letöltése leállítva: <ph name="FILE_NAME" /></translation>
 <translation id="8138880386467279117">Érintés</translation>
 <translation id="8153880621934657047">Nem táblázatban van.</translation>
-<translation id="8161114871611868169">Megjegyzések szakasza</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{alulvonás}other{# alulvonás}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">sor</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_hy.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_hy.xtb
index 51a23ad..1f15e69b 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_hy.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_hy.xtb
@@ -384,7 +384,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{հակադարձ ապաթարց}one{# հակադարձ ապաթարց}other{# հակադարձ ապաթարց}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{դոլար}one{# դոլարի նշան}other{# դոլարի նշան}}</translation>
-<translation id="3658742229777143148">Տարբերակ</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, ցուցակ</translation>
 <translation id="3681531118904532409">Խամրած ծիրանագույն</translation>
@@ -1103,7 +1102,6 @@
 <translation id="812886159861361726">«<ph name="FILE_NAME" />» ֆայլի ներբեռնումը դադարեցվեց</translation>
 <translation id="8138880386467279117">Հպէկրան</translation>
 <translation id="8153880621934657047">Աղյուսակի ներսում չեք:</translation>
-<translation id="8161114871611868169">Մեկնաբանությունների բաժին</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{ընդգծում}one{# ընդգծում}other{# ընդգծում}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">տող</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_id.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_id.xtb
index 364f586..32e92bc 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_id.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_id.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{petik satu}other{# petik satu}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dolar}other{# tanda dolar}}</translation>
-<translation id="3658742229777143148">Revisi</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, kotak daftar</translation>
 <translation id="3681531118904532409">Papaya Whip</translation>
@@ -1022,7 +1021,6 @@
 <translation id="812886159861361726">Download <ph name="FILE_NAME" /> dihentikan</translation>
 <translation id="8138880386467279117">Sentuh</translation>
 <translation id="8153880621934657047">Tidak ada di dalam tabel.</translation>
-<translation id="8161114871611868169">Bagian komentar</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{garis bawah}other{# garis bawah}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">baris</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_is.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_is.xtb
index 7de1b53..4a011ed 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_is.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_is.xtb
@@ -384,7 +384,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{högg}one{# högg}other{# högg}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dollari}one{# dollaramerki}other{# dollaramerki}}</translation>
-<translation id="3658742229777143148">Endurskoðun</translation>
 <translation id="3659787053479271466">viðvörun</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, listareitur</translation>
 <translation id="3681531118904532409">Fölappelsínugulur</translation>
@@ -1103,7 +1102,6 @@
 <translation id="812886159861361726">Niðurhal stöðvað <ph name="FILE_NAME" /></translation>
 <translation id="8138880386467279117">Snerting</translation>
 <translation id="8153880621934657047">Ekki í töflu.</translation>
-<translation id="8161114871611868169">Athugasemdahluti</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{undirstrik}one{# undirstrik}other{# undirstrik}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">lína</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_it.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_it.xtb
index 150cf70..343f65e 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_it.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_it.xtb
@@ -384,7 +384,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{apice inverso}other{# apici inversi}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dollaro}other{# simboli dollaro}}</translation>
-<translation id="3658742229777143148">Revisione</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, casella di riepilogo</translation>
 <translation id="3681531118904532409">Panna papaya</translation>
@@ -1103,7 +1102,6 @@
 <translation id="812886159861361726">Download di <ph name="FILE_NAME" /> interrotto</translation>
 <translation id="8138880386467279117">Touch</translation>
 <translation id="8153880621934657047">Non sei all'interno della tabella.</translation>
-<translation id="8161114871611868169">Sezione dei commenti</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{carattere di sottolineatura}other{# caratteri di sottolineatura}}</translation>
 <translation id="8179976553408161302">Invio</translation>
 <translation id="8184828902145951186">riga</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_iw.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_iw.xtb
index e3ed385..5967aa092 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_iw.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_iw.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{סימן הטעמה משני (`)}two{# סימני הטעמה משניים (`)}many{# סימני הטעמה משניים (`)}other{# סימני הטעמה משניים (`)}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{דולר}two{# סימני דולר}many{# סימני דולר}other{# סימני דולר}}</translation>
-<translation id="3658742229777143148">גרסה קודמת</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, תיבת רשימה</translation>
 <translation id="3681531118904532409">וניל פפאיה</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">ההורדה של <ph name="FILE_NAME" /> נפסקה</translation>
 <translation id="8138880386467279117">מגע</translation>
 <translation id="8153880621934657047">לא בתוך טבלה.</translation>
-<translation id="8161114871611868169">קטע התגובות</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{קו תחתון}two{# סימני קו תחתון}many{# סימני קו תחתון}other{# סימני קו תחתון}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">שורה</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ja.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ja.xtb
index 5e3ad23..f510df3 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ja.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ja.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{バッククォート}other{# 個のバッククォート}}</translation>
 <translation id="3650317109285159359">メニュー項目のチェックボックス</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{ドル}other{# 個のドル記号}}</translation>
-<translation id="3658742229777143148">変更履歴</translation>
 <translation id="3659787053479271466">アラート</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />、リスト ボックス</translation>
 <translation id="3681531118904532409">パパイヤ ウィップ</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726"><ph name="FILE_NAME" /> のダウンロードを停止しました</translation>
 <translation id="8138880386467279117">タップ</translation>
 <translation id="8153880621934657047">表の中ではありません。</translation>
-<translation id="8161114871611868169">コメント セクション</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{アンダースコア}other{# 個のアンダースコア}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">行</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ka.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ka.xtb
index c2d6b63..02499c2b 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ka.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ka.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{შესრულება}other{# შესრულებები}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{დოლარი}other{# დოლარის ნიშნები}}</translation>
-<translation id="3658742229777143148">რედაქცია</translation>
 <translation id="3659787053479271466">გაფრთხილებ</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, სიის უჯრა</translation>
 <translation id="3681531118904532409">პაპაიის ყლორტისფერი</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">ჩამოტვირთვა შეწყდა <ph name="FILE_NAME" /></translation>
 <translation id="8138880386467279117">შეხებითი</translation>
 <translation id="8153880621934657047">ცხრილში არ არის.</translation>
-<translation id="8161114871611868169">კომენტარების სექცია</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{ქვეტირე}other{# ქვეტირეები}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">მწკრივი</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_kk.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_kk.xtb
index 4299eb0e..37d334a 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_kk.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_kk.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{кері құсбелгі}other{# кері құсбелгі}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{доллар}other{# доллар белгісі}}</translation>
-<translation id="3658742229777143148">Қарап шығу</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, тізім терезесі</translation>
 <translation id="3681531118904532409">Қауын түстес сары</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726"><ph name="FILE_NAME" /> файлын жүктеп алу тоқтатылды</translation>
 <translation id="8138880386467279117">Сенсорлық экранға арналған</translation>
 <translation id="8153880621934657047">Кестенің ішінде емес.</translation>
-<translation id="8161114871611868169">Пікір бөлімі</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{астыңғы сызық}other{# астыңғы сызық}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">жол</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_km.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_km.xtb
index 2da733b1..8a42dfa5 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_km.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_km.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{សញ្ញាបន្តក់ថយក្រោយ}other{# សញ្ញាបន្តក់ថយក្រោយ}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{ដុល្លារ}other{# សញ្ញាដុល្លារ}}</translation>
-<translation id="3658742229777143148">កំណែប្រែ</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" /> ប្រអប់បញ្ជី</translation>
 <translation id="3681531118904532409">លឿងខ្ចី</translation>
@@ -1105,7 +1104,6 @@
 <translation id="812886159861361726">បាន​បញ្ឈប់​ការទាញយក <ph name="FILE_NAME" /></translation>
 <translation id="8138880386467279117">ប៉ះ</translation>
 <translation id="8153880621934657047">មិនមែននៅក្នុងតារាងទេ។</translation>
-<translation id="8161114871611868169">ផ្នែកមតិ</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{សញ្ញាគូសបន្ទាត់ពីក្រោម}other{# សញ្ញាគូសបន្ទាត់ពីក្រោម}}</translation>
 <translation id="8179976553408161302">បញ្ចូល</translation>
 <translation id="8184828902145951186">ជួរដេក</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_kn.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_kn.xtb
index c3e6cd1b..d24cdce 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_kn.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_kn.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{ಬ್ಯಾಕ್‌ಟಿಕ್}one{# ಬ್ಯಾಕ್‌ಟಿಕ್‌ಗಳು}other{# ಬ್ಯಾಕ್‌ಟಿಕ್‌ಗಳು}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{ಡಾಲರ್}one{# ಡಾಲರ್ ಚಿಹ್ನೆಗಳು}other{# ಡಾಲರ್ ಚಿಹ್ನೆಗಳು}}</translation>
-<translation id="3658742229777143148">ಪರಿಷ್ಕರಣೆ</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, ಪಟ್ಟಿಯ ಬಾಕ್ಸ್</translation>
 <translation id="3681531118904532409">ಪಪಾಯ ವಿಪ್</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">ಡೌನ್‌ಲೋಡ್ ಸ್ಥಗಿತಗೊಂಡಿದೆ <ph name="FILE_NAME" /></translation>
 <translation id="8138880386467279117">ಸ್ಪರ್ಶಿಸಿ</translation>
 <translation id="8153880621934657047">ಕೋಷ್ಟಕದ ಒಳಗೆ ಇಲ್ಲ.</translation>
-<translation id="8161114871611868169">ಕಾಮೆಂಟ್ ವಿಭಾಗ</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{ಅಂಡರ್‌ಸ್ಕೋರ್}one{# ಅಂಡರ್‌ಸ್ಕೋರ್‌ಗಳು}other{# ಅಂಡರ್‌ಸ್ಕೋರ್‌ಗಳು}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">ಸಾಲು</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ko.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ko.xtb
index 396acee..7e354b8 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ko.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ko.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{백틱 기호}other{백틱 기호 #개}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{달러 기호}other{달러 기호 #개}}</translation>
-<translation id="3658742229777143148">개정</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, 목록 상자</translation>
 <translation id="3681531118904532409">파파야 윕</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726"><ph name="FILE_NAME" /> 다운로드가 중지되었습니다</translation>
 <translation id="8138880386467279117">터치</translation>
 <translation id="8153880621934657047">표 내부가 아닙니다.</translation>
-<translation id="8161114871611868169">댓글 섹션</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{밑줄}other{밑줄 기호 #개}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">행</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ky.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ky.xtb
index 14b1a85e..93f987f 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ky.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ky.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{гравис}other{# гравис}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{доллар}other{# доллар белгиси}}</translation>
-<translation id="3658742229777143148">Карап чыгуу</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, тизме кутусу</translation>
 <translation id="3681531118904532409">Папайя түсүндөй саргыч ыраң</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726"><ph name="FILE_NAME" /> файлын жүктөп алуу токтотулду</translation>
 <translation id="8138880386467279117">Тийип коюу</translation>
 <translation id="8153880621934657047">Жадыбалдын ичинде эмес.</translation>
-<translation id="8161114871611868169">Пикир бөлүмү</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{төмөнкү сызык}other{# төмөнкү сызык}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">сап</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_lo.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_lo.xtb
index 806ba39..d3248ef 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_lo.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_lo.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{ເຄື່ອງໝາຍ (`)}other{# ເຄື່ອງໝາຍ (`)}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{​ໂດ​ລາ}other{# ສັນຍາລັກໂດລາ}}</translation>
-<translation id="3658742229777143148">ການ​ດັດ​ແກ້</translation>
 <translation id="3659787053479271466">ການເຕືອນ</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, ກ່ອງລາຍການ</translation>
 <translation id="3681531118904532409">ສີຊົມພູປາປາຢາວິບ</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">ຢຸດການດາວໂຫຼດໄວ້ແລ້ວ <ph name="FILE_NAME" /></translation>
 <translation id="8138880386467279117">ແຕະ</translation>
 <translation id="8153880621934657047">ບໍ່​ຢູ່ພາຍໃນຕາ​ຕະ​ລາງ​ພາຍ​ໃນ​.</translation>
-<translation id="8161114871611868169">ພາກສ່ວນຄຳເຫັນ</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{ ເສັ້ນຂີດຢູ່ກ້ອງ}other{ # ເສັ້ນຂີດຢູ່ກ້ອງ}}</translation>
 <translation id="8179976553408161302">ປ້ອນເຂົ້າ</translation>
 <translation id="8184828902145951186">ແຖວ</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_lt.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_lt.xtb
index aacc47b..c20cfb71 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_lt.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_lt.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{gravis}one{# gravis}few{# graviai}many{# backticks}other{# gravių}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dolerio ženklas}one{# dolerio ženklas}few{# dolerio ženklai}many{# dollar signs}other{# dolerio ženklų}}</translation>
-<translation id="3658742229777143148">Peržiūrėtas ir pataisytas leidimas</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, sąrašo laukelis</translation>
 <translation id="3681531118904532409">Švelni persikų spalva</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">„<ph name="FILE_NAME" />“ atsisiuntimas sustabdytas</translation>
 <translation id="8138880386467279117">Jutiklinis</translation>
 <translation id="8153880621934657047">Ne lentelės viduje.</translation>
-<translation id="8161114871611868169">Komentarų skiltis</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{apatinis brūkšnys}one{# apatinis brūkšnys}few{# apatiniai brūkšniai}many{# underscores}other{# apatinių brūkšnių}}</translation>
 <translation id="8179976553408161302">Įvesti</translation>
 <translation id="8184828902145951186">eil.</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_lv.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_lv.xtb
index c8c61d2..cc5b58d 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_lv.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_lv.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{gravis}zero{# gravju}one{# gravis}other{# gravji}}</translation>
 <translation id="3650317109285159359">izvēlnes vienumu izvēles rūtiņa</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dolāra zīme}zero{# dolāra zīmju}one{# dolāra zīme}other{# dolāra zīmes}}</translation>
-<translation id="3658742229777143148">Pārskatīšana</translation>
 <translation id="3659787053479271466">brīdinājums</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, sarakstlodziņš</translation>
 <translation id="3681531118904532409">Gaiša papaju</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">Faila “<ph name="FILE_NAME" />” lejupielāde apturēta</translation>
 <translation id="8138880386467279117">Pieskāriens</translation>
 <translation id="8153880621934657047">Nav tabulas iekšpusē.</translation>
-<translation id="8161114871611868169">Komentāru sadaļa</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{pasvītra}zero{# pasvītru}one{# pasvītra}other{# pasvītras}}</translation>
 <translation id="8179976553408161302">Ievadīt</translation>
 <translation id="8184828902145951186">rinda</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_mk.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_mk.xtb
index 6aca882..2363ddd 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_mk.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_mk.xtb
@@ -386,7 +386,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{обратен знак}one{# обратен знак}other{# обратни знаци}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{долар}one{# знак за долар}other{# знаци за долар}}</translation>
-<translation id="3658742229777143148">Ревизија</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, поле за списоци</translation>
 <translation id="3681531118904532409">Боја на крем од папаја</translation>
@@ -1105,7 +1104,6 @@
 <translation id="812886159861361726">Преземањето на <ph name="FILE_NAME" /> запре</translation>
 <translation id="8138880386467279117">Допир</translation>
 <translation id="8153880621934657047">Не е во табела.</translation>
-<translation id="8161114871611868169">Дел со коментари</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{долна црта}one{# долна црта}other{# долни црти}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">ред</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ml.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ml.xtb
index 558f2a04..f51e531c 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ml.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ml.xtb
@@ -384,7 +384,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{ബാക്ക്‌ടിക്ക്}other{# ബാക്ക്‌ടിക്കുകൾ}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{ഡോളർ}other{# ഡോളർ ചിഹ്നങ്ങൾ}}</translation>
-<translation id="3658742229777143148">പുനരവലോകനം</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, ലിസ്റ്റ് ബോക്സ്</translation>
 <translation id="3681531118904532409">പപ്പായ വിപ്പ്</translation>
@@ -1103,7 +1102,6 @@
 <translation id="812886159861361726"><ph name="FILE_NAME" /> ഡൗൺലോഡ് നിർത്തി</translation>
 <translation id="8138880386467279117">സ്‌പർശിക്കുക</translation>
 <translation id="8153880621934657047">പട്ടികയ്‌ക്കുള്ളിലല്ല.</translation>
-<translation id="8161114871611868169">കമന്റ് വിഭാഗം</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{അടിവര}other{# അടിവരകൾ}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">വരി</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_mn.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_mn.xtb
index aa34455..d078d7d 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_mn.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_mn.xtb
@@ -384,7 +384,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{ тодорхойлох сүүлийн тэмдэг}other{# тодорхойлох сүүлийн тэмдэгүүд}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{ доллар}other{ # долларын тэмдэгтүүд}}</translation>
-<translation id="3658742229777143148">Засвар хийгдсэн</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" /> жагсаалтын хайрцаг</translation>
 <translation id="3681531118904532409">Бага зэргийн бор туяатай цайвар ягаан</translation>
@@ -1103,7 +1102,6 @@
 <translation id="812886159861361726"><ph name="FILE_NAME" />-г татахыг зогсоолоо</translation>
 <translation id="8138880386467279117">Мэдрэгч</translation>
 <translation id="8153880621934657047">Хүснэгт дотор бус</translation>
-<translation id="8161114871611868169">Сэтгэгдэл бичих хэсэг</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{доогуур зураас}other{# доогуур зураасууд}}</translation>
 <translation id="8179976553408161302">Нэвтрэх</translation>
 <translation id="8184828902145951186">мөр</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_mr.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_mr.xtb
index b6f8feb..1511d1b 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_mr.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_mr.xtb
@@ -384,7 +384,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{बॅकटिक}other{# बॅकटिक}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{डॉलर}other{# डॉलर चिन्हे}}</translation>
-<translation id="3658742229777143148">पुनरावृत्ती</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, सूची बॉक्स</translation>
 <translation id="3681531118904532409">हलका गुलाबी</translation>
@@ -1103,7 +1102,6 @@
 <translation id="812886159861361726"><ph name="FILE_NAME" /> चे डाउनलोड थांबले</translation>
 <translation id="8138880386467279117">स्पर्श करा</translation>
 <translation id="8153880621934657047">सारणीमध्ये नाही.</translation>
-<translation id="8161114871611868169">टिप्पणी विभाग</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{अंडरस्कोअर}other{# अंडरस्कोअर}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">पंक्ती</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ms.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ms.xtb
index b7e0dcb..5c4d78c 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ms.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ms.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{tanda belakang}other{# tanda belakang}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dolar}other{# tanda dolar}}</translation>
-<translation id="3658742229777143148">Semakan</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755">Kotak senarai, <ph name="VALUE" /></translation>
 <translation id="3681531118904532409">Air Betik</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">Muat turun <ph name="FILE_NAME" /> dihentikan</translation>
 <translation id="8138880386467279117">Sentuh</translation>
 <translation id="8153880621934657047">Bukan dalam jadual.</translation>
-<translation id="8161114871611868169">Bahagian ulasan</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{garis bawah}other{# garis bawah}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">baris</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_my.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_my.xtb
index 83d5657a..e1b1f04 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_my.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_my.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{backtick}other{# backticks}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{ဒေါ်လာ}other{# ဒေါ်လာ သင်္ကေတများ}}</translation>
-<translation id="3658742229777143148">ပြင်ဆင်ချက်</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />၊ စာရင်း အကွက်</translation>
 <translation id="3681531118904532409">သင်္ဘာသီး ခရင်မ်</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726"><ph name="FILE_NAME" /> ဒေါင်းလုဒ် ရပ်ထားသည်</translation>
 <translation id="8138880386467279117">ထိပါ</translation>
 <translation id="8153880621934657047">အတွင်း ဇယား မဟုတ်ပါ။</translation>
-<translation id="8161114871611868169">မှတ်ချက်ကဏ္ဍ</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{မျဉ်းသားမှု}other{# မျဉ်းသားမှုများ}}</translation>
 <translation id="8179976553408161302">အင်တာ</translation>
 <translation id="8184828902145951186">လိုင်း</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ne.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ne.xtb
index 0d67dcb..560b151 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ne.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ne.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{ब्याकटिक}other{# ब्याकटिकहरू}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{ डलर}other{ # डलर संकेतहरू}}</translation>
-<translation id="3658742229777143148">संशोधन</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" /> , सूची बक्स</translation>
 <translation id="3681531118904532409">मेवा जस्तो पहेँलो</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726"><ph name="FILE_NAME" /> डाउनलोड रोकियो</translation>
 <translation id="8138880386467279117">स्पर्श</translation>
 <translation id="8153880621934657047">तालिका भित्र होइन ।</translation>
-<translation id="8161114871611868169">टिप्पणीको खण्ड</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{ अन्डरस्कोर}other{ # अन्डरस्कोरहरू}}</translation>
 <translation id="8179976553408161302">प्रविष्टि गर्नुहोस्</translation>
 <translation id="8184828902145951186">पङ्क्ति</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_nl.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_nl.xtb
index 4c9c0a5..ebb312d 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_nl.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_nl.xtb
@@ -384,7 +384,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{accent grave}other{# accents grave}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dollarteken}other{# dollartekens}}</translation>
-<translation id="3658742229777143148">Revisie</translation>
 <translation id="3659787053479271466">waarschuwing</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, keuzelijst</translation>
 <translation id="3681531118904532409">Papayacréme</translation>
@@ -1102,7 +1101,6 @@
 <translation id="812886159861361726">Download van <ph name="FILE_NAME" /> is gestopt</translation>
 <translation id="8138880386467279117">Touch</translation>
 <translation id="8153880621934657047">Niet in tabel.</translation>
-<translation id="8161114871611868169">Reactiegedeelte</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{underscore}other{# underscores}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">rij</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_no.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_no.xtb
index 9f6ab6f4..3db61d4 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_no.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_no.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{venstreaksent}other{# venstreaksenter}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dollar}other{# dollartegn}}</translation>
-<translation id="3658742229777143148">Versjon</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, listefelt</translation>
 <translation id="3681531118904532409">Papayakrem</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">Nedlastingen av <ph name="FILE_NAME" /> er stanset</translation>
 <translation id="8138880386467279117">Berøring</translation>
 <translation id="8153880621934657047">Ikke inne i tabellen.</translation>
-<translation id="8161114871611868169">Kommentardel</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{understrek}other{# understreker}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">rad</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_or.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_or.xtb
index efdb6e5..dd189f87 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_or.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_or.xtb
@@ -384,7 +384,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{ବ୍ୟାକ୍‍ଟିକ୍}other{#ଟି ବ୍ୟାକ୍‍ଟିକ୍}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{ଡଲାର୍}other{#ଟି ଡଲାର୍ ଚିହ୍ନ}}</translation>
-<translation id="3658742229777143148">ପୁନରାବୃତ୍ତି</translation>
 <translation id="3659787053479271466">ସତର୍କ</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, ତାଲିକା ବାକ୍ସ</translation>
 <translation id="3681531118904532409">ପପୟା ହ୍ୱିପ୍</translation>
@@ -1103,7 +1102,6 @@
 <translation id="812886159861361726"><ph name="FILE_NAME" /> ଡାଉନ୍‌ଲୋଡ୍ ହେବା ବନ୍ଦ ହୋଇଗଲା</translation>
 <translation id="8138880386467279117">ସ୍ପର୍ଶ</translation>
 <translation id="8153880621934657047">ଟେବଲ୍ ମଧ୍ୟରେ ନାହିଁ।</translation>
-<translation id="8161114871611868169">ମନ୍ତବ୍ୟ ବିଭାଗ</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{ଟି ଅଣ୍ଡରସ୍କୋର୍‌}other{#ଟି ଅଣ୍ଡରସ୍କୋର୍‌}}</translation>
 <translation id="8179976553408161302">ପ୍ରବେଶ</translation>
 <translation id="8184828902145951186">ଧାଡ଼ି</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_pa.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_pa.xtb
index a21603d..ae42202 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_pa.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_pa.xtb
@@ -384,7 +384,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{ਬੈਕਟਿਕ}one{# ਬੈਕਟਿਕਸ}other{# ਬੈਕਟਿਕਸ}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{ਡਾਲਰ}one{# ਡਾਲਰ ਚਿੰਨ੍ਹ}other{# ਡਾਲਰ ਚਿੰਨ੍ਹ}}</translation>
-<translation id="3658742229777143148">ਸੁਧਾਈ</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, ਸੂਚੀ ਬੌਕਸ</translation>
 <translation id="3681531118904532409">ਬਡਮੋਤੀਆ</translation>
@@ -1103,7 +1102,6 @@
 <translation id="812886159861361726"><ph name="FILE_NAME" /> ਦਾ ਡਾਊਨਲੋਡ ਬੰਦ ਕੀਤਾ ਗਿਆ</translation>
 <translation id="8138880386467279117">ਸਪੱਰਸ਼ ਕਰੋ</translation>
 <translation id="8153880621934657047">ਸਾਰਨੀ ਅੰਦਰ ਨਹੀਂ।</translation>
-<translation id="8161114871611868169">ਟਿੱਪਣੀ ਸੈਕਸ਼ਨ</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{ਅੰਡਰਸਕੋਰ}one{# ਅੰਡਰਸਕੋਰ}other{# ਅੰਡਰਸਕੋਰ}}</translation>
 <translation id="8179976553408161302">ਦਰਜ ਕਰੋ</translation>
 <translation id="8184828902145951186">ਕਤਾਰ</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_pl.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_pl.xtb
index 69678113..cabce159 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_pl.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_pl.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{grawis}few{# grawisy}many{# grawisów}other{# backticks}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dolar}few{# znaki dolara}many{# znaków dolara}other{# dollar signs}}</translation>
-<translation id="3658742229777143148">Wersja</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, pole listy</translation>
 <translation id="3681531118904532409">Papaja</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">Zatrzymano pobieranie pliku <ph name="FILE_NAME" /></translation>
 <translation id="8138880386467279117">Kliknij</translation>
 <translation id="8153880621934657047">Poza tabelą.</translation>
-<translation id="8161114871611868169">Sekcja komentarzy</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{podkreślenie}few{# znaki podkreślenia}many{# znaków podkreślenia}other{# underscores}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">wiersz</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_pt-BR.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_pt-BR.xtb
index 734ac12..bc7c00d 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_pt-BR.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_pt-BR.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{acento grave}one{# acentos graves}other{# acentos graves}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{cifrão}one{# indicadores de cifrão}other{# indicadores de cifrão}}</translation>
-<translation id="3658742229777143148">Revisão</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755">Caixa de listagem <ph name="VALUE" /></translation>
 <translation id="3681531118904532409">Papaia</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">Download de <ph name="FILE_NAME" /> interrompido</translation>
 <translation id="8138880386467279117">Tocar</translation>
 <translation id="8153880621934657047">Não está dentro da tabela.</translation>
-<translation id="8161114871611868169">Seção de comentários</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{sublinhado}one{# sublinhados}other{# sublinhados}}</translation>
 <translation id="8179976553408161302">Entrar</translation>
 <translation id="8184828902145951186">linha</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_pt-PT.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_pt-PT.xtb
index e8a571c..7fd48af 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_pt-PT.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_pt-PT.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{acento grave}other{# acentos graves}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dólar}other{# sinais de dólar}}</translation>
-<translation id="3658742229777143148">Revisão</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, caixa de lista</translation>
 <translation id="3681531118904532409">Papaia</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">A transferência do ficheiro <ph name="FILE_NAME" /> foi interrompida</translation>
 <translation id="8138880386467279117">Tocar</translation>
 <translation id="8153880621934657047">Não está dentro da tabela.</translation>
-<translation id="8161114871611868169">Secção de comentários</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{sublinhado}other{# sublinhados}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">linha</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ro.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ro.xtb
index 9c00b81c..0d315ef 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ro.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ro.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{ghilimea simplă}few{# ghilimele simple}other{# de ghilimele simple}}</translation>
 <translation id="3650317109285159359">casetă de selectare element meniu</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dolar}few{# semne dolar}other{# de semne dolar}}</translation>
-<translation id="3658742229777143148">Versiune</translation>
 <translation id="3659787053479271466">alertă</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, casetă listă</translation>
 <translation id="3681531118904532409">Roz deschis</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">Descărcarea fișierului <ph name="FILE_NAME" /> s-a oprit</translation>
 <translation id="8138880386467279117">Tactil</translation>
 <translation id="8153880621934657047">Nu vă aflați în interiorul tabelului.</translation>
-<translation id="8161114871611868169">Secțiunea de comentarii</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{caracter de subliniere}few{# caractere de subliniere}other{# de caractere de subliniere}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">rând</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ru.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ru.xtb
index ffc38db..9e044811 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ru.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ru.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{обратная кавычка}one{# обратная кавычка}few{# обратные кавычки}many{# обратных кавычек}other{# backticks}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{знак доллара}one{# знак доллара}few{# знака доллара}many{# знаков доллара}other{# dollar signs}}</translation>
-<translation id="3658742229777143148">Версия</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755">Список, <ph name="VALUE" /></translation>
 <translation id="3681531118904532409">Папайя со взбитыми сливками</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">Скачивание файла <ph name="FILE_NAME" /> остановлено</translation>
 <translation id="8138880386467279117">Нажмите</translation>
 <translation id="8153880621934657047">Ошибка. Перейдите в таблицу.</translation>
-<translation id="8161114871611868169">Раздел комментариев</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{символ подчеркивания}one{# символ подчеркивания}few{# символа подчеркивания}many{# символов подчеркивания}other{# underscores}}</translation>
 <translation id="8179976553408161302">ВВОД</translation>
 <translation id="8184828902145951186">стрк</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_si.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_si.xtb
index 43019e4..5a236af 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_si.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_si.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{පසුටිකය}one{# පසුටික්}other{# පසුටික්}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{ඩොලරය}one{# ඩොලර ලකුණු}other{# ඩොලර ලකුණු}}</translation>
-<translation id="3658742229777143148">පුනරීක්ශණය</translation>
 <translation id="3659787053479271466">අවදි</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, ලැයිස්තු කොටුව</translation>
 <translation id="3681531118904532409">ගස් ලබු නැටි</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726"><ph name="FILE_NAME" /> බාගැනීම නැවැත්විය</translation>
 <translation id="8138880386467279117">ස්පර්ශය</translation>
 <translation id="8153880621934657047">වගුව තුළ නොවේ..</translation>
-<translation id="8161114871611868169">අදහස් කොටස</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{යටි ඉර}one{# යටි ඉරි}other{# යටි ඉරි}}</translation>
 <translation id="8179976553408161302">ඇතුළු කරන්න</translation>
 <translation id="8184828902145951186">පේළි</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_sk.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_sk.xtb
index ed52aba5..fa17a05 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_sk.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_sk.xtb
@@ -384,7 +384,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{obrátený dĺžeň}few{# obrátené dĺžne}many{# backticks}other{# obrátených dĺžňov}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dolár}few{# znaky dolára}many{# dollar signs}other{# znakov dolára}}</translation>
-<translation id="3658742229777143148">Verzia</translation>
 <translation id="3659787053479271466">upozornenie</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, zoznamové pole</translation>
 <translation id="3681531118904532409">Papájová</translation>
@@ -1103,7 +1102,6 @@
 <translation id="812886159861361726">Sťahovanie súboru <ph name="FILE_NAME" /> bolo zastavené</translation>
 <translation id="8138880386467279117">Klepnúť</translation>
 <translation id="8153880621934657047">Mimo tabuľky</translation>
-<translation id="8161114871611868169">Sekcia komentárov</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{podčiarkovník}few{# podčiarkovníky}many{# underscores}other{# podčiarkovníkov}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">riadok</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_sl.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_sl.xtb
index 5e2d1078..a8596c9 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_sl.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_sl.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{znak za krativec}one{# znak za krativec}two{# znaka za krativec}few{# znaki za krativec}other{# znakov za krativec}}</translation>
 <translation id="3650317109285159359">potokelmen</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{znak za dolar}one{# znak za dolar}two{# znaka za dolar}few{# znaki za dolar}other{# znakov za dolar}}</translation>
-<translation id="3658742229777143148">Različica</translation>
 <translation id="3659787053479271466">opoz</translation>
 <translation id="3665563998540286755">Polje s seznamom z vrednostjo <ph name="VALUE" /></translation>
 <translation id="3681531118904532409">Marelična</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">Prenos je ustavljen (<ph name="FILE_NAME" />)</translation>
 <translation id="8138880386467279117">Dotik</translation>
 <translation id="8153880621934657047">Zunaj tabele.</translation>
-<translation id="8161114871611868169">Razdelek s komentarji</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{podčrtaj}one{# podčrtaj}two{# podčrtaja}few{# podčrtaji}other{# podčrtajev}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">vrstica</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_sq.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_sq.xtb
index ccc6a14..5b27dad 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_sq.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_sq.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{thonjëza njëshe}other{# thonjëza njëshe}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dollar}other{# shenja dollari}}</translation>
-<translation id="3658742229777143148">Rishikim</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, kutia e listës</translation>
 <translation id="3681531118904532409">Papaja e rrahur</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">Shkarkimi i <ph name="FILE_NAME" /> ndaloi</translation>
 <translation id="8138880386467279117">Prek</translation>
 <translation id="8153880621934657047">Jo brenda tabelës.</translation>
-<translation id="8161114871611868169">Seksioni i komenteve</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{nënvizim}other{# nënvizime}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">rreshti</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_sr.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_sr.xtb
index ad786f5..8f589a1 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_sr.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_sr.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{обрнути полунаводник}one{# обрнути полунаводник}few{# обрнута полунаводника}other{# обрнутих полунаводника}}</translation>
 <translation id="3650317109285159359">поље за потврду ставке менија</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{знак за долар}one{# знак за долар}few{# знака за долар}other{# знакова за долар}}</translation>
-<translation id="3658742229777143148">Ревизија</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, оквир листе</translation>
 <translation id="3681531118904532409">Бледа розенаранџаста</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">Преузимање је заустављено <ph name="FILE_NAME" /></translation>
 <translation id="8138880386467279117">За додирни екран</translation>
 <translation id="8153880621934657047">Нисте унутар табеле.</translation>
-<translation id="8161114871611868169">Одељак са коментарима</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{доња црта}one{# доња црта}few{# доње црте}other{# доњих црта}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">ред</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_sv.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_sv.xtb
index 2e861b4a..81e2ccf 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_sv.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_sv.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{grav accent}other{# grav accent-tecken}}</translation>
 <translation id="3650317109285159359">menyalternativ med kryssruta</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dollartecken}other{# dollartecken}}</translation>
-<translation id="3658742229777143148">Version</translation>
 <translation id="3659787053479271466">varning</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, listruta</translation>
 <translation id="3681531118904532409">Papayakrämorange</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">Nedladdningen stoppades <ph name="FILE_NAME" /></translation>
 <translation id="8138880386467279117">Trycka</translation>
 <translation id="8153880621934657047">Inte i tabellen.</translation>
-<translation id="8161114871611868169">Kommentarsfält</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{understreck}other{# understreck}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">rad</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_sw.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_sw.xtb
index ae5e44a..58625b5 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_sw.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_sw.xtb
@@ -384,7 +384,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{kingo`ngo}other{ving`ong`o #}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dola}other{alama # za dola}}</translation>
-<translation id="3658742229777143148">Marekebisho</translation>
 <translation id="3659787053479271466">arifa</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, kisanduku cha orodha</translation>
 <translation id="3681531118904532409">Nyekundu Iliyofifia</translation>
@@ -1103,7 +1102,6 @@
 <translation id="812886159861361726">Imeacha kupakua <ph name="FILE_NAME" /></translation>
 <translation id="8138880386467279117">Skrini za kugusa</translation>
 <translation id="8153880621934657047">Haimo ndani ya jedwali.</translation>
-<translation id="8161114871611868169">Sehemu ya maoni</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{kistari cha chini}other{vistari # vya chini}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">safu mlalo</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ta.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ta.xtb
index ea8d5471..4266aff0 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ta.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ta.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{பேக்டிக்}other{# பேக்டிக்குகள்}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{டாலர் குறி}other{# டாலர் குறிகள்}}</translation>
-<translation id="3658742229777143148">மீள்திருத்தங்கள்</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, பட்டியல் பெட்டி</translation>
 <translation id="3681531118904532409">பப்பாயா விப்</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726"><ph name="FILE_NAME" /> கோப்பின் பதிவிறக்கம் நிறுத்தப்பட்டது</translation>
 <translation id="8138880386467279117">தொடுதல்</translation>
 <translation id="8153880621934657047">அட்டவணையின் உள்ளே கிடையாது.</translation>
-<translation id="8161114871611868169">கருத்துப் பிரிவு</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{அடிக்கோடு}other{# அடிக்கோடுகள்}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">வரிசை</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_te.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_te.xtb
index 7411fc9c..8916ea4a 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_te.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_te.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{బ్యాక్‌టిక్ గుర్తు}other{# బ్యాక్‌టిక్ గుర్తులు}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{డాలర్ గుర్తు}other{# డాలర్ గుర్తులు}}</translation>
-<translation id="3658742229777143148">పునర్విమర్శ</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, జాబితా పెట్టె</translation>
 <translation id="3681531118904532409">బొప్పాయి పసుపు రంగు</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726"><ph name="FILE_NAME" /> డౌన్‌లోడ్ ఆపివేయబడింది</translation>
 <translation id="8138880386467279117">స్పర్శ</translation>
 <translation id="8153880621934657047">లోపల పట్టిక కాదు.</translation>
-<translation id="8161114871611868169">కామెంట్‌ విభాగం</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{అండర్‌స్కోర్ గుర్తు}other{# అండర్‌స్కోర్ గుర్తులు}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">అడ్డు</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_th.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_th.xtb
index ab21dcb..d7ef799c 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_th.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_th.xtb
@@ -384,7 +384,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{เครื่องหมายแบ็กทิก}other{# เครื่องหมายแบ็กทิก}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{เครื่องหมายดอลลาร์}other{# เครื่องหมายดอลลาร์}}</translation>
-<translation id="3658742229777143148">การแก้ไข</translation>
 <translation id="3659787053479271466">การแจ้งเตือน</translation>
 <translation id="3665563998540286755">ช่องรายการ <ph name="VALUE" /></translation>
 <translation id="3681531118904532409">สีชมพูพาพายาวิป</translation>
@@ -1103,7 +1102,6 @@
 <translation id="812886159861361726">หยุดดาวน์โหลด <ph name="FILE_NAME" /> แล้ว</translation>
 <translation id="8138880386467279117">การแตะ</translation>
 <translation id="8153880621934657047">ไม่ได้อยู่ในตาราง</translation>
-<translation id="8161114871611868169">ส่วนความคิดเห็น</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{เครื่องหมายขีดล่าง}other{# เครื่องหมายขีดล่าง}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">แถว</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_tr.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_tr.xtb
index 037133c..6165f6bd 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_tr.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_tr.xtb
@@ -384,7 +384,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{aksan işareti}other{# aksan işareti}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dolar işareti}other{# dolar işareti}}</translation>
-<translation id="3658742229777143148">Düzeltme</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, liste kutusu</translation>
 <translation id="3681531118904532409">Papaya Rengi</translation>
@@ -1103,7 +1102,6 @@
 <translation id="812886159861361726"><ph name="FILE_NAME" /> dosyasını indirme işlemi durduruldu</translation>
 <translation id="8138880386467279117">Dokunma</translation>
 <translation id="8153880621934657047">Tablonun içinde değil.</translation>
-<translation id="8161114871611868169">Yorum bölümü</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{alt çizgi}other{# alt çizgi}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">satır</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_uk.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_uk.xtb
index b948654..41414f8c 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_uk.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_uk.xtb
@@ -384,7 +384,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{зворотний апостроф}one{# зворотний апостроф}few{# зворотні апострофи}many{# зворотних апострофів}other{# backticks}}</translation>
 <translation id="3650317109285159359">прапорець пункту меню</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{долар}one{# символ долара}few{# символи долара}many{# символів долара}other{# dollar signs}}</translation>
-<translation id="3658742229777143148">Редакція</translation>
 <translation id="3659787053479271466">сповіщення</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, вікно списку</translation>
 <translation id="3681531118904532409">Паросток папаї</translation>
@@ -1103,7 +1102,6 @@
 <translation id="812886159861361726">Завантаження файлу <ph name="FILE_NAME" /> припинено</translation>
 <translation id="8138880386467279117">Торкнутися</translation>
 <translation id="8153880621934657047">Не всередині таблиці.</translation>
-<translation id="8161114871611868169">Розділ із коментарями</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{підкреслення}one{# підкреслення}few{# підкреслення}many{# підкреслень}other{# underscores}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">рядок</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ur.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ur.xtb
index d77fc31..9f16631 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ur.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_ur.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{بیک ٹک}other{# بیک ٹکس}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{ڈالر}other{# ڈالر کے نشانات}}</translation>
-<translation id="3658742229777143148">نظرثانی</translation>
 <translation id="3659787053479271466">الرٹ</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />، فہرست باکس</translation>
 <translation id="3681531118904532409">بھورا مائل ہلکا نارنجی</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">ڈاؤن لوڈ رک گیا <ph name="FILE_NAME" /></translation>
 <translation id="8138880386467279117">ٹچ کریں</translation>
 <translation id="8153880621934657047">کوئی اندرونی ٹیبل نہیں ہے۔</translation>
-<translation id="8161114871611868169">تبصرہ سیکشن</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{انڈر اسکور}other{# انڈر اسکورز}}</translation>
 <translation id="8179976553408161302">انٹر</translation>
 <translation id="8184828902145951186">قطار</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_uz.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_uz.xtb
index c34c9be6..c7db9e9 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_uz.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_uz.xtb
@@ -384,7 +384,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{teskari tutuq belgisi}other{# ta teskari tutuq belgisi}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dollar belgisi}other{# ta dollar belgisi}}</translation>
-<translation id="3658742229777143148">Versiya</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, ro‘yxat bandi</translation>
 <translation id="3681531118904532409">Pardozrang</translation>
@@ -1102,7 +1101,6 @@
 <translation id="812886159861361726"><ph name="FILE_NAME" /> faylini yuklab olish toʻxtatildi</translation>
 <translation id="8138880386467279117">Teginish</translation>
 <translation id="8153880621934657047">Xatolik yuz berdi. Jadvalga o‘ting.</translation>
-<translation id="8161114871611868169">Fikrlar boʻlimi</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{tagiga chizish belgisi}other{# ta tagiga chizish belgisi}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">qator</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_vi.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_vi.xtb
index 5e57ad86..e49f772 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_vi.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_vi.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{dấu huyền}other{# dấu huyền}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{dấu đô la}other{# dấu đô la}}</translation>
-<translation id="3658742229777143148">Bản sửa đổi</translation>
 <translation id="3659787053479271466">alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, hộp danh sách</translation>
 <translation id="3681531118904532409">Màu đu đủ</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">Đã dừng tải <ph name="FILE_NAME" /> xuống</translation>
 <translation id="8138880386467279117">Cảm ứng</translation>
 <translation id="8153880621934657047">Không phải bên trong bảng.</translation>
-<translation id="8161114871611868169">Phần nhận xét</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{dấu gạch dưới}other{# dấu gạch dưới}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">hàng</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_zh-CN.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_zh-CN.xtb
index 30e5d1c5..92d0ed9 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_zh-CN.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_zh-CN.xtb
@@ -384,7 +384,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{1个反撇号}other{#个反撇号}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{1个美元符号}other{#个美元符号}}</translation>
-<translation id="3658742229777143148">修订版本</translation>
 <translation id="3659787053479271466">提醒</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />,列表框</translation>
 <translation id="3681531118904532409">蕃木瓜色</translation>
@@ -1103,7 +1102,6 @@
 <translation id="812886159861361726">“<ph name="FILE_NAME" />”已停止下载</translation>
 <translation id="8138880386467279117">触摸</translation>
 <translation id="8153880621934657047">不在表格内。</translation>
-<translation id="8161114871611868169">“评论”部分</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{1个下划线}other{#个下划线}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">行</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_zh-HK.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_zh-HK.xtb
index e69e5ad..e1c02b5 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_zh-HK.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_zh-HK.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{1 個反引號}other{# 個反引號}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{1 個貨幣符號}other{# 個貨幣符號}}</translation>
-<translation id="3658742229777143148">修訂</translation>
 <translation id="3659787053479271466">通知</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />,清單方塊</translation>
 <translation id="3681531118904532409">蕃木瓜色</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">「<ph name="FILE_NAME" />」停咗下載</translation>
 <translation id="8138880386467279117">輕觸</translation>
 <translation id="8153880621934657047">不在表格內。</translation>
-<translation id="8161114871611868169">留言部分</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{1 個底線}other{# 個底線}}</translation>
 <translation id="8179976553408161302">Enter 鍵</translation>
 <translation id="8184828902145951186">列</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_zh-TW.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_zh-TW.xtb
index 7126d3f..ac424859 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_zh-TW.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_zh-TW.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{反引號}other{# 個反引號}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{美元}other{# 個美元符號}}</translation>
-<translation id="3658742229777143148">修訂版本</translation>
 <translation id="3659787053479271466">警示</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />,清單方塊</translation>
 <translation id="3681531118904532409">番木瓜色</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">已停止下載「<ph name="FILE_NAME" />」</translation>
 <translation id="8138880386467279117">輕觸</translation>
 <translation id="8153880621934657047">不在表格內。</translation>
-<translation id="8161114871611868169">評論部分</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{底線}other{# 個底線}}</translation>
 <translation id="8179976553408161302">Enter</translation>
 <translation id="8184828902145951186">列</translation>
diff --git a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_zu.xtb b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_zu.xtb
index 92f9d84..df10dfa 100644
--- a/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_zu.xtb
+++ b/chrome/browser/resources/chromeos/accessibility/chromevox/strings/chromevox_strings_zu.xtb
@@ -385,7 +385,6 @@
 <translation id="3646890046000188562">{COUNT,plural, =1{i-backtick}one{# ama-backtick}other{# ama-backtick}}</translation>
 <translation id="3650317109285159359">chkmnuitm</translation>
 <translation id="3655855170848725876">{COUNT,plural, =1{idola}one{# izimpawu zedola}other{# izimpawu zedola}}</translation>
-<translation id="3658742229777143148">Isibuyekezo</translation>
 <translation id="3659787053479271466">i-alrt</translation>
 <translation id="3665563998540286755"><ph name="VALUE" />, ibhokisi lohlu</translation>
 <translation id="3681531118904532409">I-Papaya Whip</translation>
@@ -1104,7 +1103,6 @@
 <translation id="812886159861361726">Ukulandwa kumisiwe ku-<ph name="FILE_NAME" /></translation>
 <translation id="8138880386467279117">Thinta</translation>
 <translation id="8153880621934657047">Ithebula elingekho ngaphakathi.</translation>
-<translation id="8161114871611868169">Isigaba samazwana</translation>
 <translation id="817440585505441544">{COUNT,plural, =1{i-underscore}one{# ama-underscore}other{# ama-underscore}}</translation>
 <translation id="8179976553408161302">Faka</translation>
 <translation id="8184828902145951186">umugqa</translation>
diff --git a/chrome/browser/resources/chromeos/add_supervision/add_supervision.js b/chrome/browser/resources/chromeos/add_supervision/add_supervision.js
index 3edff02..56ec2d6 100644
--- a/chrome/browser/resources/chromeos/add_supervision/add_supervision.js
+++ b/chrome/browser/resources/chromeos/add_supervision/add_supervision.js
@@ -34,7 +34,8 @@
 }
 
 const addSupervisionHandler =
-    addSupervision.mojom.AddSupervisionHandler.getRemote();
+    addSupervision.mojom.AddSupervisionHandler.getRemote(
+        /*useBrowserInterfaceBroker=*/ true);
 
 Polymer({
   is: 'add-supervision-ui',
diff --git a/chrome/browser/resources/chromeos/add_supervision/add_supervision_api_server.js b/chrome/browser/resources/chromeos/add_supervision/add_supervision_api_server.js
index fc3b60d..41f7824 100644
--- a/chrome/browser/resources/chromeos/add_supervision/add_supervision_api_server.js
+++ b/chrome/browser/resources/chromeos/add_supervision/add_supervision_api_server.js
@@ -30,7 +30,8 @@
     super(webviewElement, METHOD_LIST, targetURL, originURLPrefix);
 
     this.addSupervisionHandler_ =
-        addSupervision.mojom.AddSupervisionHandler.getRemote();
+        addSupervision.mojom.AddSupervisionHandler.getRemote(
+            /*useBrowserInterfaceBroker=*/ true);
 
     this.registerMethod('logOut', this.logOut.bind(this));
     this.registerMethod(
diff --git a/chrome/browser/resources/chromeos/camera/BUILD.gn b/chrome/browser/resources/chromeos/camera/BUILD.gn
index 66a2b93..7558236a 100644
--- a/chrome/browser/resources/chromeos/camera/BUILD.gn
+++ b/chrome/browser/resources/chromeos/camera/BUILD.gn
@@ -229,6 +229,7 @@
 
 copy("chrome_camera_app_views") {
   sources = [
+    "src/views/background.html",
     "src/views/main.html",
   ]
 
diff --git a/chrome/browser/resources/chromeos/camera/src/images/camera_focus_aim.svg b/chrome/browser/resources/chromeos/camera/src/images/camera_focus_aim.svg
index 758b23a..a57e9e9 100644
--- a/chrome/browser/resources/chromeos/camera/src/images/camera_focus_aim.svg
+++ b/chrome/browser/resources/chromeos/camera/src/images/camera_focus_aim.svg
@@ -48,7 +48,7 @@
         }
       }
       #outer_circle_focus_outlines_scale_x {
-        animation: 1.001s forwards outer_circle_focus_outlines_scale_x_animation;
+        animation: .29s forwards outer_circle_focus_outlines_scale_x_animation;
       }
       @keyframes outer_circle_focus_outlines_scale_y_animation {
         0% {
@@ -64,7 +64,7 @@
         }
       }
       #outer_circle_focus_outlines_scale_y {
-        animation: 1.001s forwards outer_circle_focus_outlines_scale_y_animation;
+        animation: .29s forwards outer_circle_focus_outlines_scale_y_animation;
       }
       @keyframes outer_circle_focus_outlines_animation {
         0% {
@@ -80,7 +80,7 @@
         }
       }
       #outer_circle_focus_outlines {
-        animation: 3.67s forwards outer_circle_focus_outlines_animation;
+        animation: 1.09s forwards outer_circle_focus_outlines_animation;
       }
       @keyframes inner_circle_focus_outlines_scale_x_animation {
         0% {
@@ -92,7 +92,7 @@
         }
       }
       #inner_circle_focus_outlines_scale_x {
-        animation: 1.001s forwards inner_circle_focus_outlines_scale_x_animation;
+        animation: .29s forwards inner_circle_focus_outlines_scale_x_animation;
       }
       @keyframes inner_circle_focus_outlines_scale_y_animation {
         0% {
@@ -104,7 +104,7 @@
         }
       }
       #inner_circle_focus_outlines_scale_y {
-        animation: 1.001s forwards inner_circle_focus_outlines_scale_y_animation;
+        animation: .29s forwards inner_circle_focus_outlines_scale_y_animation;
       }
       @keyframes inner_circle_focus_outlines_animation {
         0% {
@@ -120,7 +120,7 @@
         }
       }
       #inner_circle_focus_outlines {
-        animation: 2.002s forwards inner_circle_focus_outlines_animation;
+        animation: .58s forwards inner_circle_focus_outlines_animation;
       }
     </style>
 </svg>
diff --git a/chrome/browser/resources/chromeos/camera/src/js/views/camera/review_result.js b/chrome/browser/resources/chromeos/camera/src/js/views/camera/review_result.js
index c43118f..dd4aa32 100644
--- a/chrome/browser/resources/chromeos/camera/src/js/views/camera/review_result.js
+++ b/chrome/browser/resources/chromeos/camera/src/js/views/camera/review_result.js
@@ -95,6 +95,9 @@
       return;
     }
     cca.state.set('playing-result-video', true);
+    if (document.activeElement === this.playResultVideoButton_) {
+      this.confirmResultButton_.focus();
+    }
     this.reviewVideoResult_.play();
   }
 
@@ -148,7 +151,7 @@
     this.reviewVideoResult_.src = fileEntry.toURL();
     cca.state.set('review-video-result', true);
     cca.state.set('review-result', true);
-    this.playResultVideoButton_.focus();
+    this.confirmResultButton_.focus();
 
     return new Promise((resolve) => {
       this.resolveOpen_ = resolve;
diff --git a/chrome/browser/resources/chromeos/login/hd-iron-icon.html b/chrome/browser/resources/chromeos/login/hd-iron-icon.html
index b9a670a..7b53fab 100644
--- a/chrome/browser/resources/chromeos/login/hd-iron-icon.html
+++ b/chrome/browser/resources/chromeos/login/hd-iron-icon.html
@@ -16,15 +16,19 @@
     1x and 2x icons:
       'icon1x' - a name of icon from material design set to show on button.
       'icon2x' - a name of icon from material design set to show on button.
+    1x and 2x sources:
+      'src1x' - A direct source to a file. For example, a SVG file.
+      'src2x' - A direct source to a file. For example, a SVG file.
+
 -->
 <dom-module id="hd-iron-icon">
   <template>
     <style include="iron-flex iron-flex-alignment iron-positioning"></style>
     <link rel="stylesheet" href="oobe_iron_flex_layout_fix.css">
     <link rel="stylesheet" href="hd-iron-icon.css">
-    <div class="flex layout vertical">
-      <iron-icon id="icon1x" icon="[[icon1x]]"></iron-icon>
-      <iron-icon id="icon2x" icon="[[icon2x]]"></iron-icon>
+    <div class="flex layout vertical" aria-hidden="true">
+      <iron-icon id="icon1x" icon="[[icon1x]]" src="[[src1x]]"></iron-icon>
+      <iron-icon id="icon2x" icon="[[icon2x]]" src="[[src2x]]"></iron-icon>
     </div>
   </template>
 </dom-module>
diff --git a/chrome/browser/resources/chromeos/login/hd-iron-icon.js b/chrome/browser/resources/chromeos/login/hd-iron-icon.js
index 76c8966..137745f 100644
--- a/chrome/browser/resources/chromeos/login/hd-iron-icon.js
+++ b/chrome/browser/resources/chromeos/login/hd-iron-icon.js
@@ -8,5 +8,7 @@
   properties: {
     icon1x: String,
     icon2x: String,
+    src1x: String,
+    src2x: String,
   },
 });
diff --git a/chrome/browser/resources/chromeos/login/sync_consent.html b/chrome/browser/resources/chromeos/login/sync_consent.html
index 2379395..e465863c 100644
--- a/chrome/browser/resources/chromeos/login/sync_consent.html
+++ b/chrome/browser/resources/chromeos/login/sync_consent.html
@@ -25,10 +25,10 @@
       </h1>
       <div slot="footer" class="layout vertical">
         <div class="overview-list-item flex layout horizontal center">
-          <img srcset="chrome://oobe/logo_24px-1x.svg 1x,
-                       chrome://oobe/logo_24px-2x.svg 2x"
-              class="overview-list-item-icon">
-          </img>
+          <hd-iron-icon class="overview-list-item-icon"
+              src1x="chrome://oobe/logo_24px-1x.svg"
+              src2x="chrome://oobe/logo_24px-2x.svg">
+          </hd-iron-icon>
           <div class="overview-list-item-text flex layout vertical
               center-justified">
             <div role="heading" aria-level="2" class="overview-list-item-title"
diff --git a/chrome/browser/resources/chromeos/machine_learning/machine_learning_internals.js b/chrome/browser/resources/chromeos/machine_learning/machine_learning_internals.js
index 8e36bac..2dc01b6 100644
--- a/chrome/browser/resources/chromeos/machine_learning/machine_learning_internals.js
+++ b/chrome/browser/resources/chromeos/machine_learning/machine_learning_internals.js
@@ -16,7 +16,8 @@
       /**
        * @type {!chromeos.machineLearning.mojom.PageHandlerRemote}
        */
-      this.pageHandler = chromeos.machineLearning.mojom.PageHandler.getRemote();
+      this.pageHandler = chromeos.machineLearning.mojom.PageHandler.getRemote(
+          /*useBrowserInterfaceBroker=*/ true);
       /**
        * @private {!Map<BuiltinModelId,
        *     !chromeos.machineLearning.mojom.GraphExecutorRemote>}
diff --git a/chrome/browser/resources/discards/discards.js b/chrome/browser/resources/discards/discards.js
index 9d8a957..4615451 100644
--- a/chrome/browser/resources/discards/discards.js
+++ b/chrome/browser/resources/discards/discards.js
@@ -11,7 +11,8 @@
    */
   export function getOrCreateDetailsProvider() {
     if (!discardsDetailsProvider) {
-      discardsDetailsProvider = discards.mojom.DetailsProvider.getRemote();
+      discardsDetailsProvider = discards.mojom.DetailsProvider.getRemote(
+          /*useBrowserInterfaceBroker=*/ true);
     }
     return discardsDetailsProvider;
   }
diff --git a/chrome/browser/resources/discards/graph_tab_template.js b/chrome/browser/resources/discards/graph_tab_template.js
index d4ce2f9..c110079 100644
--- a/chrome/browser/resources/discards/graph_tab_template.js
+++ b/chrome/browser/resources/discards/graph_tab_template.js
@@ -94,7 +94,8 @@
 
   /** @override */
   ready: function() {
-    this.graphDump_ = discards.mojom.GraphDump.getRemote();
+    this.graphDump_ =
+        discards.mojom.GraphDump.getRemote(/*useBrowserInterfaceBroker=*/ true);
   },
 
   /** @override */
diff --git a/chrome/browser/resources/downloads/browser_proxy.js b/chrome/browser/resources/downloads/browser_proxy.js
index d607f35f..9af1d67 100644
--- a/chrome/browser/resources/downloads/browser_proxy.js
+++ b/chrome/browser/resources/downloads/browser_proxy.js
@@ -15,7 +15,8 @@
     /** @type {downloads.mojom.PageHandlerRemote} */
     this.handler = new downloads.mojom.PageHandlerRemote();
 
-    const factory = downloads.mojom.PageHandlerFactory.getRemote();
+    const factory = downloads.mojom.PageHandlerFactory.getRemote(
+        /*useBrowserInterfaceBroker=*/ true);
     factory.createPageHandler(
         this.callbackRouter.$.bindNewPipeAndPassRemote(),
         this.handler.$.bindNewPipeAndPassReceiver());
diff --git a/chrome/browser/resources/engagement/site_engagement.js b/chrome/browser/resources/engagement/site_engagement.js
index 39454c3..2a38451a 100644
--- a/chrome/browser/resources/engagement/site_engagement.js
+++ b/chrome/browser/resources/engagement/site_engagement.js
@@ -25,7 +25,8 @@
 };
 
 function initialize() {
-  engagementDetailsProvider = mojom.SiteEngagementDetailsProvider.getRemote();
+  engagementDetailsProvider = mojom.SiteEngagementDetailsProvider.getRemote(
+      /*useBrowserInterfaceBroker=*/ true);
 
   /** @type {?HTMLElement} */
   const engagementTableBody = $('engagement-table-body');
diff --git a/chrome/browser/resources/explore_sites_internals/explore_sites_internals.js b/chrome/browser/resources/explore_sites_internals/explore_sites_internals.js
index 5b9f456..a1ed0da 100644
--- a/chrome/browser/resources/explore_sites_internals/explore_sites_internals.js
+++ b/chrome/browser/resources/explore_sites_internals/explore_sites_internals.js
@@ -84,7 +84,8 @@
 
 document.addEventListener('DOMContentLoaded', function() {
   // Setup backend mojo.
-  pageHandler = exploreSitesInternals.mojom.PageHandler.getRemote();
+  pageHandler = exploreSitesInternals.mojom.PageHandler.getRemote(
+      /*useBrowserInterfaceBroker=*/ true);
   updatePageWithProperties();
 
   // Set up event listeners.
diff --git a/chrome/browser/resources/interventions_internals/index.js b/chrome/browser/resources/interventions_internals/index.js
index c417033d..ddcd933 100644
--- a/chrome/browser/resources/interventions_internals/index.js
+++ b/chrome/browser/resources/interventions_internals/index.js
@@ -696,7 +696,8 @@
     if (window.testPageHandler) {
       pageHandler = window.testPageHandler;
     } else {
-      pageHandler = mojom.InterventionsInternalsPageHandler.getRemote();
+      pageHandler = mojom.InterventionsInternalsPageHandler.getRemote(
+          /*useBrowserInterfaceBroker=*/ true);
 
       // Set up client side mojo interface.
       pageImpl = new InterventionsInternalPageImpl();
diff --git a/chrome/browser/resources/local_ntp/externs.js b/chrome/browser/resources/local_ntp/externs.js
index b3cd6dd..dff2b81 100644
--- a/chrome/browser/resources/local_ntp/externs.js
+++ b/chrome/browser/resources/local_ntp/externs.js
@@ -111,7 +111,8 @@
  *     ConvertPromoDataToDict()
  * @typedef {{promoHtml: (string|undefined),
  *            promoLogUrl: (string|undefined),
- *            promoId: (string|undefined)}}
+ *            promoId: (string|undefined),
+ *            canOpenExtensionsPage: boolean}}
  */
 let promo;
 
@@ -392,6 +393,15 @@
 window.chrome.embeddedSearch.newTabPage.blocklistPromo;
 
 /**
+ * @param {number} button
+ * @param {boolean} altKey
+ * @param {boolean} ctrlKey
+ * @param {boolean} metaKey
+ * @param {boolean} shiftKey
+ */
+window.chrome.embeddedSearch.newTabPage.openExtensionsPage;
+
+/**
  * Embedded Search API methods defined in
  * chrome/renderer/searchbox/searchbox_extension.cc:
  *  SearchBoxBindings::GetObjectTemplateBuilder()
diff --git a/chrome/browser/resources/local_ntp/local_ntp.js b/chrome/browser/resources/local_ntp/local_ntp.js
index 213a298..3386e70e 100644
--- a/chrome/browser/resources/local_ntp/local_ntp.js
+++ b/chrome/browser/resources/local_ntp/local_ntp.js
@@ -392,6 +392,15 @@
 }
 
 /**
+ * Converts an Array of color components into 8-digit Hex format "#RRGGBBAA".
+ * @param {Array<number>} color Array of rgba color components.
+ * @return {string} CSS color in 8-digit Hex format.
+ */
+function convertToHexColor(color) {
+  return '#' + assert(color).map(c => c.toString(16).padStart(2, '0')).join('');
+}
+
+/**
  * Returns a timeout that can be executed early. Calls back true if this was
  * an early execution, false otherwise.
  * @param {!Function} timeout The timeout function. Requires a boolean param.
@@ -661,6 +670,12 @@
   const iconUrl = new URL('chrome-search://ntpicon/');
   iconUrl.searchParams.set('show_fallback_monogram', 'false');
   iconUrl.searchParams.set('size', '24@' + window.devicePixelRatio + 'x');
+  // The fallback color must match that of .clock-icon and .search-icon
+  iconUrl.searchParams.set(
+      'color',
+      convertToHexColor(
+          configData.realboxMatchOmniboxTheme ? getNtpTheme().searchBox.icon :
+                                                [117, 117, 117, 255]));
   iconUrl.searchParams.set('url', url);
   return iconUrl.toString();
 }
@@ -1013,7 +1028,13 @@
 
   const link = promoContainer.querySelector('a');
   if (link) {
-    link.onclick = function() {
+    link.onclick = e => {
+      const url = new URL(link.href);
+      if (promo.canOpenExtensionsPage && url.origin == 'chrome://extensions') {
+        ntpApiHandle.openExtensionsPage(
+            e.button, e.altKey, e.ctrlKey, e.metaKey, e.shiftKey);
+        e.preventDefault();
+      }
       ntpApiHandle.logEvent(LOG_TYPE.NTP_MIDDLE_SLOT_PROMO_LINK_CLICKED);
     };
   }
diff --git a/chrome/browser/resources/media/media_engagement.js b/chrome/browser/resources/media/media_engagement.js
index d56ef21..990ae16 100644
--- a/chrome/browser/resources/media/media_engagement.js
+++ b/chrome/browser/resources/media/media_engagement.js
@@ -188,7 +188,8 @@
 }
 
 document.addEventListener('DOMContentLoaded', function() {
-  detailsProvider = media.mojom.MediaEngagementScoreDetailsProvider.getRemote();
+  detailsProvider = media.mojom.MediaEngagementScoreDetailsProvider.getRemote(
+      /*useBrowserInterfaceBroker=*/ true);
   updateEngagementTable();
 
   engagementTableBody = $('engagement-table-body');
diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resources/settings/BUILD.gn
index e01cd90..bd30bff9 100644
--- a/chrome/browser/resources/settings/BUILD.gn
+++ b/chrome/browser/resources/settings/BUILD.gn
@@ -107,15 +107,10 @@
   if (is_chromeos) {
     deps += [
       "android_apps_page:closure_compile",
-      "bluetooth_page:closure_compile",
       "chromeos:closure_compile",
-      "crostini_page:closure_compile",
-      "date_time_page:closure_compile",
       "device_page:closure_compile",
-      "internet_page:closure_compile",
       "multidevice_page:closure_compile",
       "parental_controls_page:closure_compile",
-      "plugin_vm_page:closure_compile",
     ]
   }
 }
diff --git a/chrome/browser/resources/settings/basic_page/basic_page.html b/chrome/browser/resources/settings/basic_page/basic_page.html
index 8b4e1a8..4faf387 100644
--- a/chrome/browser/resources/settings/basic_page/basic_page.html
+++ b/chrome/browser/resources/settings/basic_page/basic_page.html
@@ -21,12 +21,6 @@
 <link rel="import" href="chrome://resources/cr_elements/cr_icon_button/cr_icon_button.html">
 <link rel="import" href="../android_apps_page/android_apps_browser_proxy.html">
 <link rel="import" href="../android_apps_page/android_apps_page.html">
-<link rel="import" href="../bluetooth_page/bluetooth_page.html">
-<link rel="import" href="../crostini_page/crostini_page.html">
-<link rel="import" href="../plugin_vm_page/plugin_vm_page.html">
-<link rel="import" href="../device_page/device_page.html">
-<link rel="import" href="../internet_page/internet_page.html">
-<link rel="import" href="../multidevice_page/multidevice_page.html">
 <link rel="import" href="../prefs/prefs_behavior.html">
 </if>
 
@@ -129,30 +123,6 @@
           <div id="secondaryUserIcon"></div>
           <div class="flex">$i18n{secondaryUserBannerText}</div>
         </div>
-        <template is="dom-if" if="[[showPage_(pageVisibility.internet)]]"
-            restamp>
-          <settings-section page-title="$i18n{internetPageTitle}"
-              section="internet">
-            <settings-internet-page prefs="{{prefs}}">
-            </settings-internet-page>
-          </settings-section>
-        </template>
-        <template is="dom-if" if="[[showPage_(pageVisibility.bluetooth)]]"
-            restamp>
-          <settings-section page-title="$i18n{bluetoothPageTitle}"
-              section="bluetooth">
-            <settings-bluetooth-page prefs="{{prefs}}">
-            </settings-bluetooth-page>
-          </settings-section>
-        </template>
-        <template is="dom-if" if="[[showPage_(pageVisibility.multidevice)]]"
-            restamp>
-          <settings-section page-title="$i18n{multidevicePageTitle}"
-              section="multidevice">
-            <settings-multidevice-page prefs="{{prefs}}">
-            </settings-multidevice-page>
-          </settings-section>
-        </template>
 </if>
         <template is="dom-if" if="[[showChangePassword]]" restamp>
           <settings-section section="changePassword">
@@ -194,16 +164,6 @@
             </settings-appearance-page>
           </settings-section>
         </template>
-<if expr="chromeos">
-        <template is="dom-if" if="[[showPage_(pageVisibility.device)]]" restamp>
-          <settings-section page-title="$i18n{devicePageTitle}"
-              section="device">
-            <settings-device-page prefs="{{prefs}}"
-                show-crostini="[[showCrostini]]">
-            </settings-device-page>
-          </settings-section>
-        </template>
-</if>
         <settings-section page-title="$i18n{searchPageTitle}"
             section="search">
           <settings-search-page prefs="{{prefs}}"></settings-search-page>
@@ -219,21 +179,6 @@
             </settings-android-apps-page>
           </settings-section>
         </template>
-        <template is="dom-if" if="[[showCrostini]]" restamp>
-          <settings-section page-title="$i18n{crostiniPageTitle}"
-              section="crostini">
-            <settings-crostini-page prefs="{{prefs}}"
-                allow-crostini="[[allowCrostini_]]">
-            </settings-crostini-page>
-          </settings-section>
-        </template>
-        <template is="dom-if" if="[[showPluginVm]]" restamp>
-          <settings-section page-title="$i18n{pluginVmPageTitle}"
-              section="pluginVm">
-            <settings-plugin-vm-page prefs="{{prefs}}">
-            </settings-plugin-vm-page>
-          </settings-section>
-        </template>
 </if>
 <if expr="not chromeos">
         <template is="dom-if" if="[[showPage_(pageVisibility.defaultBrowser)]]"
@@ -273,17 +218,6 @@
           <div id="advancedPage" hidden$="[[!showAdvancedPage_(
               currentRoute_, inSearchMode, hasExpandedSection_,
               advancedToggleExpanded)]]">
-<if expr="chromeos">
-            <template is="dom-if" if="[[showPage_(pageVisibility.dateTime)]]"
-                restamp>
-              <settings-section page-title="$i18n{dateTimePageTitle}"
-                  section="dateTime">
-                <settings-date-time-page prefs="{{prefs}}"
-                    page-visibility="[[pageVisibility.dateTime]]">
-                </settings-date-time-page>
-              </settings-section>
-            </template>
-</if>
             <template is="dom-if" if="[[showPrivacyPageAndRedesign_(
                 pageVisibility.privacy, 'ADVANCED')]]" restamp>
               <settings-section page-title="$i18n{privacyPageTitle}"
diff --git a/chrome/browser/resources/settings/basic_page/basic_page.js b/chrome/browser/resources/settings/basic_page/basic_page.js
index 2e0fdd2..44037e3 100644
--- a/chrome/browser/resources/settings/basic_page/basic_page.js
+++ b/chrome/browser/resources/settings/basic_page/basic_page.js
@@ -46,10 +46,6 @@
     // <if expr="chromeos">
     showAndroidApps: Boolean,
 
-    showCrostini: Boolean,
-
-    allowCrostini_: Boolean,
-
     havePlayStoreApp: Boolean,
     // </if>
 
@@ -146,9 +142,6 @@
   attached: function() {
     this.currentRoute_ = settings.getCurrentRoute();
 
-    this.allowCrostini_ = loadTimeData.valueExists('allowCrostini') &&
-        loadTimeData.getBoolean('allowCrostini');
-
     this.addWebUIListener('change-password-visibility', visibility => {
       this.showChangePassword = visibility;
     });
diff --git a/chrome/browser/resources/settings/bluetooth_page/bluetooth_device_list_item.html b/chrome/browser/resources/settings/bluetooth_page/bluetooth_device_list_item.html
deleted file mode 100644
index 41dbfe63..0000000
--- a/chrome/browser/resources/settings/bluetooth_page/bluetooth_device_list_item.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<link rel="import" href="chrome://resources/html/polymer.html">
-
-<link rel="import" href="chrome://resources/cr_elements/cr_action_menu/cr_action_menu.html">
-<link rel="import" href="chrome://resources/cr_elements/cr_icon_button/cr_icon_button.html">
-<link rel="import" href="chrome://resources/cr_elements/icons.html">
-<link rel="import" href="chrome://resources/html/i18n_behavior.html">
-<link rel="import" href="chrome://resources/polymer/v1_0/iron-icon/iron-icon.html">
-<link rel="import" href="../chromeos/os_icons.html">
-<link rel="import" href="../icons.html">
-<link rel="import" href="../settings_shared_css.html">
-
-<dom-module id="bluetooth-device-list-item">
-  <template>
-    <style include="settings-shared">
-      .name[connected] {
-        font-weight: 500;
-      }
-
-      .state[connected] {
-        color: var(--google-green-500);
-      }
-    </style>
-    <div class="list-item">
-      <iron-icon id="deviceIcon" icon="[[getDeviceIcon_(device)]]">
-      </iron-icon>
-      <div class="middle">
-        <div class="name" connected$="[[device.connected]]" aria-hidden="true">
-          [[getDeviceName_(device)]]
-        </div>
-        <div class="state secondary" connected$="[[device.connected]]"
-            hidden$="[[!hasConnectionStatusText_(device)]]">
-          [[getConnectionStatusText_(device)]]
-        </div>
-      </div>
-      <div hidden$="[[!device.paired]]">
-        <cr-icon-button class="icon-more-vert" on-click="onMenuButtonTap_"
-            tabindex$="[[tabindex]]" title="$i18n{moreActions}"
-            on-keydown="ignoreEnterKey_"></cr-icon-button>
-        <cr-action-menu id="dotsMenu" role-description="$i18n{menu}">
-          <button class="dropdown-item"
-              on-click="onConnectActionTap_">
-            [[getConnectActionText_(device.connected)]]
-          </button>
-          <button class="dropdown-item" on-click="onRemoveTap_">
-            $i18n{bluetoothRemove}
-          </button>
-        </cr-action-menu>
-      </div>
-    </div>
-  </template>
-  <script src="bluetooth_device_list_item.js"></script>
-</dom-module>
diff --git a/chrome/browser/resources/settings/chromeos/BUILD.gn b/chrome/browser/resources/settings/chromeos/BUILD.gn
index 834a6a7..934181a 100644
--- a/chrome/browser/resources/settings/chromeos/BUILD.gn
+++ b/chrome/browser/resources/settings/chromeos/BUILD.gn
@@ -72,7 +72,11 @@
 
 group("closure_compile") {
   deps = [
-    "localized_string_with_link:closure_compile",
+    "bluetooth_page:closure_compile",
+    "crostini_page:closure_compile",
+    "date_time_page:closure_compile",
+    "internet_page:closure_compile",
+    "localized_link:closure_compile",
     "os_a11y_page:closure_compile",
     "os_apps_page:closure_compile",
     "os_files_page:closure_compile",
@@ -87,5 +91,6 @@
     "os_settings_page:closure_compile",
     "os_settings_ui:closure_compile",
     "personalization_page:closure_compile",
+    "plugin_vm_page:closure_compile",
   ]
 }
diff --git a/chrome/browser/resources/settings/bluetooth_page/BUILD.gn b/chrome/browser/resources/settings/chromeos/bluetooth_page/BUILD.gn
similarity index 87%
rename from chrome/browser/resources/settings/bluetooth_page/BUILD.gn
rename to chrome/browser/resources/settings/chromeos/bluetooth_page/BUILD.gn
index 6cc32f17..052f949c 100644
--- a/chrome/browser/resources/settings/bluetooth_page/BUILD.gn
+++ b/chrome/browser/resources/settings/chromeos/bluetooth_page/BUILD.gn
@@ -15,9 +15,9 @@
 js_library("bluetooth_page") {
   deps = [
     ":bluetooth_system_on_extensions",
-    "..:route",
-    "../prefs:prefs_behavior",
-    "../settings_page:settings_animated_pages",
+    "../..:route",
+    "../../prefs:prefs_behavior",
+    "../../settings_page:settings_animated_pages",
     "//ui/webui/resources/js:assert",
     "//ui/webui/resources/js:i18n_behavior",
   ]
@@ -34,11 +34,12 @@
 js_library("bluetooth_subpage") {
   deps = [
     ":bluetooth_system_on_extensions",
-    "..:route",
+    "../..:route",
     "//ui/webui/resources/cr_components/chromeos:bluetooth_dialog",
     "//ui/webui/resources/cr_elements:cr_scrollable_behavior",
     "//ui/webui/resources/js:assert",
     "//ui/webui/resources/js:i18n_behavior",
+    "//ui/webui/resources/js:list_property_update_behavior",
   ]
   externs_list = [
     "$externs_path/bluetooth.js",
@@ -55,6 +56,7 @@
     ":bluetooth_system_on_extensions",
     "//ui/webui/resources/cr_elements/cr_action_menu:cr_action_menu",
     "//ui/webui/resources/js:i18n_behavior",
+    "//ui/webui/resources/js/cr/ui:focus_row_behavior",
   ]
   externs_list = [ "$externs_path/bluetooth.js" ]
 }
diff --git a/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_device_list_item.html b/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_device_list_item.html
new file mode 100644
index 0000000..586773f
--- /dev/null
+++ b/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_device_list_item.html
@@ -0,0 +1,69 @@
+<link rel="import" href="chrome://resources/html/polymer.html">
+
+<link rel="import" href="chrome://resources/cr_elements/cr_action_menu/cr_action_menu.html">
+<link rel="import" href="chrome://resources/cr_elements/cr_icon_button/cr_icon_button.html">
+<link rel="import" href="chrome://resources/cr_elements/icons.html">
+<link rel="import" href="chrome://resources/html/i18n_behavior.html">
+<link rel="import" href="chrome://resources/html/cr/ui/focus_row_behavior.html">
+<link rel="import" href="chrome://resources/polymer/v1_0/iron-icon/iron-icon.html">
+<link rel="import" href="../../chromeos/os_icons.html">
+<link rel="import" href="../../icons.html">
+<link rel="import" href="../../settings_shared_css.html">
+
+<dom-module id="bluetooth-device-list-item">
+  <template>
+    <style include="settings-shared">
+      .name[connected] {
+        font-weight: 500;
+      }
+
+      .state[connected] {
+        color: var(--google-green-500);
+      }
+    </style>
+    <div focus-row-container>
+      <div class="list-item"
+          focus-row-control
+          focus-type="rowWrapper"
+          aria-label$="[[ariaLabel]]"
+          role="button"
+          selectable
+          on-keydown="onKeyDown_"
+          on-click="onClick_">
+        <iron-icon id="deviceIcon" icon="[[getDeviceIcon_(device)]]">
+        </iron-icon>
+        <div class="middle">
+          <div class="name"
+              connected$="[[device.connected]]"
+              aria-hidden="true">
+            [[getDeviceName_(device)]]
+          </div>
+          <div class="state secondary"
+              connected$="[[device.connected]]"
+              hidden$="[[!hasConnectionStatusText_(device)]]">
+            [[getConnectionStatusText_(device)]]
+          </div>
+        </div>
+        <div hidden$="[[!device.paired]]">
+          <cr-icon-button id="menuButton"
+              class="icon-more-vert"
+              focus-row-control
+              focus-type="menuButton"
+              on-click="onMenuButtonTap_"
+              tabindex$="[[tabindex]]"
+              title="$i18n{moreActions}"
+              on-keydown="ignoreEnterKey_"></cr-icon-button>
+        </div>
+      </div>
+    </div>
+    <cr-action-menu id="dotsMenu" role-description="$i18n{menu}">
+      <button class="dropdown-item" on-click="onConnectActionTap_">
+        [[getConnectActionText_(device.connected)]]
+      </button>
+      <button class="dropdown-item" on-click="onRemoveTap_">
+        $i18n{bluetoothRemove}
+      </button>
+    </cr-action-menu>
+  </template>
+  <script src="bluetooth_device_list_item.js"></script>
+</dom-module>
diff --git a/chrome/browser/resources/settings/bluetooth_page/bluetooth_device_list_item.js b/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_device_list_item.js
similarity index 90%
rename from chrome/browser/resources/settings/bluetooth_page/bluetooth_device_list_item.js
rename to chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_device_list_item.js
index 50d2393a..d636ca6 100644
--- a/chrome/browser/resources/settings/bluetooth_page/bluetooth_device_list_item.js
+++ b/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_device_list_item.js
@@ -9,7 +9,7 @@
 Polymer({
   is: 'bluetooth-device-list-item',
 
-  behaviors: [I18nBehavior],
+  behaviors: [I18nBehavior, cr.ui.FocusRowBehavior],
 
   properties: {
     /**
@@ -27,7 +27,6 @@
     ariaLabel: {
       type: String,
       notify: true,
-      reflectToAttribute: true,
       computed: 'getAriaLabel_(device)',
     },
   },
@@ -44,6 +43,34 @@
     }
   },
 
+  /** @private */
+  tryConnect_: function() {
+    if (!this.isDisconnected_(this.device)) {
+      return;
+    }
+
+    this.fire('device-event', {
+      action: 'connect',
+      device: this.device,
+    });
+  },
+
+  /** @private */
+  onClick_: function() {
+    this.tryConnect_();
+  },
+
+  /**
+   * @param {!KeyboardEvent} e
+   * @private
+   */
+  onKeyDown_: function(e) {
+    if (e.key == 'Enter' || e.key == ' ') {
+      this.tryConnect_();
+      e.preventDefault();
+    }
+  },
+
   /**
    * @param {!Event} event
    * @private
diff --git a/chrome/browser/resources/settings/bluetooth_page/bluetooth_page.html b/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_page.html
similarity index 89%
rename from chrome/browser/resources/settings/bluetooth_page/bluetooth_page.html
rename to chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_page.html
index c1f57fd..ae25afee 100644
--- a/chrome/browser/resources/settings/bluetooth_page/bluetooth_page.html
+++ b/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_page.html
@@ -5,13 +5,13 @@
 <link rel="import" href="chrome://resources/cr_elements/icons.html">
 <link rel="import" href="chrome://resources/cr_elements/policy/cr_policy_pref_indicator.html">
 <link rel="import" href="chrome://resources/html/i18n_behavior.html">
-<link rel="import" href="../chromeos/os_icons.html">
-<link rel="import" href="../i18n_setup.html">
-<link rel="import" href="../prefs/prefs.html">
-<link rel="import" href="../prefs/prefs_behavior.html">
-<link rel="import" href="../settings_page/settings_animated_pages.html">
-<link rel="import" href="../settings_page/settings_subpage.html">
-<link rel="import" href="../settings_shared_css.html">
+<link rel="import" href="../../chromeos/os_icons.html">
+<link rel="import" href="../../i18n_setup.html">
+<link rel="import" href="../../prefs/prefs.html">
+<link rel="import" href="../../prefs/prefs_behavior.html">
+<link rel="import" href="../../settings_page/settings_animated_pages.html">
+<link rel="import" href="../../settings_page/settings_subpage.html">
+<link rel="import" href="../../settings_shared_css.html">
 <link rel="import" href="bluetooth_subpage.html">
 
 <dom-module id="settings-bluetooth-page">
diff --git a/chrome/browser/resources/settings/bluetooth_page/bluetooth_page.js b/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_page.js
similarity index 100%
rename from chrome/browser/resources/settings/bluetooth_page/bluetooth_page.js
rename to chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_page.js
diff --git a/chrome/browser/resources/settings/bluetooth_page/bluetooth_subpage.html b/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_subpage.html
similarity index 82%
rename from chrome/browser/resources/settings/bluetooth_page/bluetooth_subpage.html
rename to chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_subpage.html
index e0143c54..dfe398ce 100644
--- a/chrome/browser/resources/settings/bluetooth_page/bluetooth_subpage.html
+++ b/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_subpage.html
@@ -4,11 +4,12 @@
 <link rel="import" href="chrome://resources/cr_elements/cr_scrollable_behavior.html">
 <link rel="import" href="chrome://resources/cr_elements/cr_toggle/cr_toggle.html">
 <link rel="import" href="chrome://resources/html/i18n_behavior.html">
+<link rel="import" href="chrome://resources/html/list_property_update_behavior.html">
 <link rel="import" href="chrome://resources/polymer/v1_0/iron-list/iron-list.html">
 <link rel="import" href="chrome://resources/polymer/v1_0/paper-spinner/paper-spinner-lite.html">
-<link rel="import" href="../i18n_setup.html">
-<link rel="import" href="../icons.html">
-<link rel="import" href="../settings_shared_css.html">
+<link rel="import" href="../../i18n_setup.html">
+<link rel="import" href="../../icons.html">
+<link rel="import" href="../../settings_shared_css.html">
 <link rel="import" href="bluetooth_device_list_item.html">
 
 <dom-module id="settings-bluetooth-subpage">
@@ -60,18 +61,21 @@
       </div>
     </div>
     <div id="noPairedDevices" class="list-frame settings-box-text"
-        hidden="[[!showNoDevices_(bluetoothToggleState, pairedDeviceList_)]]">
+        hidden="[[!showNoDevices_(bluetoothToggleState, pairedDeviceList_,
+            pairedDeviceList_.splices)]]">
       $i18n{bluetoothNoDevices}
     </div>
     <div id="pairedContainer" class="container"
         scrollable on-device-event="onDeviceEvent_"
-        hidden="[[!showDevices_(bluetoothToggleState, pairedDeviceList_)]]">
+        hidden="[[!showDevices_(bluetoothToggleState, pairedDeviceList_,
+            pairedDeviceList_.splices)]]">
       <iron-list id="pairedDevices" items="[[pairedDeviceList_]]"
-          selection-enabled selected-item="{{selectedPairedItem_}}"
-          scroll-target="pairedContainer" class="cr-separators">
+          scroll-target="pairedContainer" class="cr-separators" preserve-focus>
         <template>
           <bluetooth-device-list-item actionable device="[[item]]"
-              first$="[[!index]]" tabindex$="[[tabIndex]]">
+              first$="[[!index]]" tabindex$="[[tabIndex]]"
+              focus-row-index="[[index]]" iron-list-tab-index="[[tabIndex]]"
+              last-focused="{{lastFocused_}}" list-blurred="{{listBlurred_}}">
           </bluetooth-device-list-item>
         </template>
       </iron-list>
@@ -86,15 +90,16 @@
       </paper-spinner-lite>
     </div>
     <div id="noUnpairedDevices" class="list-frame settings-box-text"
-        hidden="[[!showNoDevices_(bluetoothToggleState, unpairedDeviceList_)]]">
+        hidden="[[!showNoDevices_(bluetoothToggleState, unpairedDeviceList_,
+            unpairedDeviceList_.splices)]]">
       $i18n{bluetoothNoDevicesFound}
     </div>
     <div id="unpairedContainer" class="container"
         scrollable on-device-event="onDeviceEvent_"
-        hidden="[[!showDevices_(bluetoothToggleState, unpairedDeviceList_)]]">
+        hidden="[[!showDevices_(bluetoothToggleState, unpairedDeviceList_,
+            unpairedDeviceList_.splices)]]">
       <iron-list id="unpairedDevices" class="cr-separators"
-          items="[[unpairedDeviceList_]]"
-          selection-enabled selected-item="{{selectedUnpairedItem_}}"
+          preserve-focus items="[[unpairedDeviceList_]]"
           scroll-target="unpairedContainer">
         <template>
           <bluetooth-device-list-item actionable device="[[item]]"
diff --git a/chrome/browser/resources/settings/bluetooth_page/bluetooth_subpage.js b/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_subpage.js
similarity index 90%
rename from chrome/browser/resources/settings/bluetooth_page/bluetooth_subpage.js
rename to chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_subpage.js
index 4dddcaff..4dddc0a 100644
--- a/chrome/browser/resources/settings/bluetooth_page/bluetooth_subpage.js
+++ b/chrome/browser/resources/settings/chromeos/bluetooth_page/bluetooth_subpage.js
@@ -20,6 +20,7 @@
   behaviors: [
     I18nBehavior,
     CrScrollableBehavior,
+    ListPropertyUpdateBehavior,
     settings.RouteObserverBehavior,
   ],
 
@@ -70,16 +71,6 @@
     },
 
     /**
-     * Reflects the iron-list selecteditem property.
-     * @type {!chrome.bluetooth.Device}
-     * @private
-     */
-    selectedPairedItem_: {
-      type: Object,
-      observer: 'selectedPairedItemChanged_',
-    },
-
-    /**
      * The ordered list of unpaired bluetooth devices.
      * @type {!Array<!chrome.bluetooth.Device>}
      */
@@ -91,15 +82,6 @@
     },
 
     /**
-     * Reflects the iron-list selecteditem property.
-     * @type {!chrome.bluetooth.Device}
-     */
-    selectedUnpairedItem_: {
-      type: Object,
-      observer: 'selectedUnpairedItemChanged_',
-    },
-
-    /**
      * Whether or not the dialog is shown.
      * @private
      */
@@ -155,6 +137,17 @@
       value: null,
     },
 
+    /**
+     * Used by FocusRowBehavior to track the last focused element on a row.
+     * @private
+     */
+    lastFocused_: Object,
+
+    /**
+     * Used by FocusRowBehavior to track if the list has been blurred.
+     * @private
+     */
+    listBlurred_: Boolean,
   },
 
   observers: [
@@ -202,21 +195,17 @@
 
   /** @private */
   deviceListChanged_: function() {
-    this.saveScroll(this.$.pairedDevices);
-    this.saveScroll(this.$.unpairedDevices);
-
-    this.pairedDeviceList_ = this.getUpdatedDeviceList_(
-      this.pairedDeviceList_,
-      this.deviceList_.filter(d => d.paired || d.connecting));
-    this.unpairedDeviceList_ = this.getUpdatedDeviceList_(
-      this.unpairedDeviceList_,
-      this.deviceList_.filter(d => !(d.paired || d.connecting)));
-
-    this.$.pairedDevices.fire('iron-resize');
-    this.$.unpairedDevices.fire('iron-resize');
+    this.updateList(
+        'pairedDeviceList_', item => item.address,
+        this.getUpdatedDeviceList_(
+            this.pairedDeviceList_,
+            this.deviceList_.filter(d => d.paired || d.connecting)));
+    this.updateList(
+        'unpairedDeviceList_', item => item.address,
+        this.getUpdatedDeviceList_(
+            this.unpairedDeviceList_,
+            this.deviceList_.filter(d => !(d.paired || d.connecting))));
     this.updateScrollableContents();
-    this.restoreScroll(this.$.unpairedDevices);
-    this.restoreScroll(this.$.pairedDevices);
   },
 
   /**
@@ -256,20 +245,6 @@
   },
 
   /** @private */
-  selectedPairedItemChanged_: function() {
-    if (this.selectedPairedItem_) {
-      this.connectDevice_(this.selectedPairedItem_);
-    }
-  },
-
-  /** @private */
-  selectedUnpairedItemChanged_: function() {
-    if (this.selectedUnpairedItem_) {
-      this.connectDevice_(this.selectedUnpairedItem_);
-    }
-  },
-
-  /** @private */
   updateDiscovery_: function() {
     if (!this.adapterState || !this.adapterState.powered) {
       return;
@@ -508,9 +483,8 @@
       }
 
       this.refreshBluetoothList_();
-      this.updateTimerId_ =
-        window.setInterval(this.refreshBluetoothList_.bind(this),
-                           this.listUpdateFrequencyMs);
+      this.updateTimerId_ = window.setInterval(
+          this.refreshBluetoothList_.bind(this), this.listUpdateFrequencyMs);
       this.discoveryStartTimestampMs_ = Date.now();
       return;
     }
diff --git a/chrome/browser/resources/settings/crostini_page/BUILD.gn b/chrome/browser/resources/settings/chromeos/crostini_page/BUILD.gn
similarity index 86%
rename from chrome/browser/resources/settings/crostini_page/BUILD.gn
rename to chrome/browser/resources/settings/chromeos/crostini_page/BUILD.gn
index 68c42047..aeb8b4f 100644
--- a/chrome/browser/resources/settings/crostini_page/BUILD.gn
+++ b/chrome/browser/resources/settings/chromeos/crostini_page/BUILD.gn
@@ -19,7 +19,7 @@
 js_library("crostini_arc_adb") {
   deps = [
     ":crostini_browser_proxy",
-    "..:route",
+    "../..:route",
     "//ui/webui/resources/cr_elements/policy:cr_policy_indicator",
     "//ui/webui/resources/js:i18n_behavior",
     "//ui/webui/resources/js:web_ui_listener_behavior",
@@ -42,8 +42,8 @@
 js_library("crostini_page") {
   deps = [
     ":crostini_browser_proxy",
-    "..:route",
-    "../prefs:prefs_behavior",
+    "../..:route",
+    "../../prefs:prefs_behavior",
     "//ui/webui/resources/js:i18n_behavior",
   ]
   externs_list = [ "$externs_path/settings_private.js" ]
@@ -52,15 +52,15 @@
 js_library("crostini_shared_paths") {
   deps = [
     ":crostini_browser_proxy",
-    "..:route",
-    "../prefs:prefs_behavior",
+    "../..:route",
+    "../../prefs:prefs_behavior",
   ]
 }
 
 js_library("crostini_shared_usb_devices") {
   deps = [
     ":crostini_browser_proxy",
-    "..:route",
+    "../..:route",
     "//ui/webui/resources/js:web_ui_listener_behavior",
   ]
 }
@@ -68,8 +68,8 @@
 js_library("crostini_subpage") {
   deps = [
     ":crostini_browser_proxy",
-    "..:route",
-    "..:route_origin_behavior",
-    "../prefs:prefs_behavior",
+    "../..:route",
+    "../..:route_origin_behavior",
+    "../../prefs:prefs_behavior",
   ]
 }
diff --git a/chrome/browser/resources/settings/crostini_page/crostini_arc_adb.html b/chrome/browser/resources/settings/chromeos/crostini_page/crostini_arc_adb.html
similarity index 94%
rename from chrome/browser/resources/settings/crostini_page/crostini_arc_adb.html
rename to chrome/browser/resources/settings/chromeos/crostini_page/crostini_arc_adb.html
index d10a880..9f1dad8 100644
--- a/chrome/browser/resources/settings/crostini_page/crostini_arc_adb.html
+++ b/chrome/browser/resources/settings/chromeos/crostini_page/crostini_arc_adb.html
@@ -6,8 +6,8 @@
 <link rel="import" href="chrome://resources/html/web_ui_listener_behavior.html">
 <link rel="import" href="crostini_browser_proxy.html">
 <link rel="import" href="crostini_arc_adb_confirmation_dialog.html">
-<link rel="import" href="../i18n_setup.html">
-<link rel="import" href="../settings_shared_css.html">
+<link rel="import" href="../../i18n_setup.html">
+<link rel="import" href="../../settings_shared_css.html">
 
 <dom-module id="settings-crostini-arc-adb">
   <template>
diff --git a/chrome/browser/resources/settings/crostini_page/crostini_arc_adb.js b/chrome/browser/resources/settings/chromeos/crostini_page/crostini_arc_adb.js
similarity index 100%
rename from chrome/browser/resources/settings/crostini_page/crostini_arc_adb.js
rename to chrome/browser/resources/settings/chromeos/crostini_page/crostini_arc_adb.js
diff --git a/chrome/browser/resources/settings/crostini_page/crostini_arc_adb_confirmation_dialog.html b/chrome/browser/resources/settings/chromeos/crostini_page/crostini_arc_adb_confirmation_dialog.html
similarity index 95%
rename from chrome/browser/resources/settings/crostini_page/crostini_arc_adb_confirmation_dialog.html
rename to chrome/browser/resources/settings/chromeos/crostini_page/crostini_arc_adb_confirmation_dialog.html
index 664f85c..4ecdb98 100644
--- a/chrome/browser/resources/settings/crostini_page/crostini_arc_adb_confirmation_dialog.html
+++ b/chrome/browser/resources/settings/chromeos/crostini_page/crostini_arc_adb_confirmation_dialog.html
@@ -4,7 +4,7 @@
 <link rel="import" href="chrome://resources/cr_elements/cr_dialog/cr_dialog.html">
 <link rel="import" href="chrome://resources/html/i18n_behavior.html">
 <link rel="import" href="crostini_browser_proxy.html">
-<link rel="import" href="../settings_shared_css.html">
+<link rel="import" href="../../settings_shared_css.html">
 
 <dom-module id="settings-crostini-arc-adb-confirmation-dialog">
   <template>
diff --git a/chrome/browser/resources/settings/crostini_page/crostini_arc_adb_confirmation_dialog.js b/chrome/browser/resources/settings/chromeos/crostini_page/crostini_arc_adb_confirmation_dialog.js
similarity index 100%
rename from chrome/browser/resources/settings/crostini_page/crostini_arc_adb_confirmation_dialog.js
rename to chrome/browser/resources/settings/chromeos/crostini_page/crostini_arc_adb_confirmation_dialog.js
diff --git a/chrome/browser/resources/settings/crostini_page/crostini_browser_proxy.html b/chrome/browser/resources/settings/chromeos/crostini_page/crostini_browser_proxy.html
similarity index 100%
rename from chrome/browser/resources/settings/crostini_page/crostini_browser_proxy.html
rename to chrome/browser/resources/settings/chromeos/crostini_page/crostini_browser_proxy.html
diff --git a/chrome/browser/resources/settings/crostini_page/crostini_browser_proxy.js b/chrome/browser/resources/settings/chromeos/crostini_page/crostini_browser_proxy.js
similarity index 100%
rename from chrome/browser/resources/settings/crostini_page/crostini_browser_proxy.js
rename to chrome/browser/resources/settings/chromeos/crostini_page/crostini_browser_proxy.js
diff --git a/chrome/browser/resources/settings/crostini_page/crostini_export_import.html b/chrome/browser/resources/settings/chromeos/crostini_page/crostini_export_import.html
similarity index 93%
rename from chrome/browser/resources/settings/crostini_page/crostini_export_import.html
rename to chrome/browser/resources/settings/chromeos/crostini_page/crostini_export_import.html
index 43c4d73d..e2846ca0 100644
--- a/chrome/browser/resources/settings/crostini_page/crostini_export_import.html
+++ b/chrome/browser/resources/settings/chromeos/crostini_page/crostini_export_import.html
@@ -5,8 +5,8 @@
 <link rel="import" href="chrome://resources/html/web_ui_listener_behavior.html">
 <link rel="import" href="crostini_browser_proxy.html">
 <link rel="import" href="crostini_import_confirmation_dialog.html">
-<link rel="import" href="../i18n_setup.html">
-<link rel="import" href="../settings_shared_css.html">
+<link rel="import" href="../../i18n_setup.html">
+<link rel="import" href="../../settings_shared_css.html">
 
 <dom-module id="settings-crostini-export-import">
   <template>
diff --git a/chrome/browser/resources/settings/crostini_page/crostini_export_import.js b/chrome/browser/resources/settings/chromeos/crostini_page/crostini_export_import.js
similarity index 100%
rename from chrome/browser/resources/settings/crostini_page/crostini_export_import.js
rename to chrome/browser/resources/settings/chromeos/crostini_page/crostini_export_import.js
diff --git a/chrome/browser/resources/settings/crostini_page/crostini_import_confirmation_dialog.html b/chrome/browser/resources/settings/chromeos/crostini_page/crostini_import_confirmation_dialog.html
similarity index 94%
rename from chrome/browser/resources/settings/crostini_page/crostini_import_confirmation_dialog.html
rename to chrome/browser/resources/settings/chromeos/crostini_page/crostini_import_confirmation_dialog.html
index 4351e857..e5e65a5 100644
--- a/chrome/browser/resources/settings/crostini_page/crostini_import_confirmation_dialog.html
+++ b/chrome/browser/resources/settings/chromeos/crostini_page/crostini_import_confirmation_dialog.html
@@ -4,7 +4,7 @@
 <link rel="import" href="chrome://resources/cr_elements/cr_dialog/cr_dialog.html">
 <link rel="import" href="chrome://resources/html/i18n_behavior.html">
 <link rel="import" href="crostini_browser_proxy.html">
-<link rel="import" href="../settings_shared_css.html">
+<link rel="import" href="../../settings_shared_css.html">
 
 <dom-module id="settings-crostini-import-confirmation-dialog">
   <template>
diff --git a/chrome/browser/resources/settings/crostini_page/crostini_import_confirmation_dialog.js b/chrome/browser/resources/settings/chromeos/crostini_page/crostini_import_confirmation_dialog.js
similarity index 100%
rename from chrome/browser/resources/settings/crostini_page/crostini_import_confirmation_dialog.js
rename to chrome/browser/resources/settings/chromeos/crostini_page/crostini_import_confirmation_dialog.js
diff --git a/chrome/browser/resources/settings/crostini_page/crostini_page.html b/chrome/browser/resources/settings/chromeos/crostini_page/crostini_page.html
similarity index 92%
rename from chrome/browser/resources/settings/crostini_page/crostini_page.html
rename to chrome/browser/resources/settings/chromeos/crostini_page/crostini_page.html
index 0c53e4c..7171760 100644
--- a/chrome/browser/resources/settings/crostini_page/crostini_page.html
+++ b/chrome/browser/resources/settings/chromeos/crostini_page/crostini_page.html
@@ -4,11 +4,11 @@
 <link rel="import" href="chrome://resources/cr_elements/cr_icon_button/cr_icon_button.html">
 <link rel="import" href="chrome://resources/cr_elements/policy/cr_policy_indicator.html">
 <link rel="import" href="chrome://resources/html/i18n_behavior.html">
-<link rel="import" href="../i18n_setup.html">
-<link rel="import" href="../prefs/prefs_behavior.html">
-<link rel="import" href="../settings_page/settings_animated_pages.html">
-<link rel="import" href="../settings_page/settings_subpage.html">
-<link rel="import" href="../settings_shared_css.html">
+<link rel="import" href="../../i18n_setup.html">
+<link rel="import" href="../../prefs/prefs_behavior.html">
+<link rel="import" href="../../settings_page/settings_animated_pages.html">
+<link rel="import" href="../../settings_page/settings_subpage.html">
+<link rel="import" href="../../settings_shared_css.html">
 <link rel="import" href="crostini_arc_adb.html">
 <link rel="import" href="crostini_browser_proxy.html">
 <link rel="import" href="crostini_export_import.html">
diff --git a/chrome/browser/resources/settings/crostini_page/crostini_page.js b/chrome/browser/resources/settings/chromeos/crostini_page/crostini_page.js
similarity index 100%
rename from chrome/browser/resources/settings/crostini_page/crostini_page.js
rename to chrome/browser/resources/settings/chromeos/crostini_page/crostini_page.js
diff --git a/chrome/browser/resources/settings/crostini_page/crostini_shared_paths.html b/chrome/browser/resources/settings/chromeos/crostini_page/crostini_shared_paths.html
similarity index 88%
rename from chrome/browser/resources/settings/crostini_page/crostini_shared_paths.html
rename to chrome/browser/resources/settings/chromeos/crostini_page/crostini_shared_paths.html
index 62fd01c..eb61e53 100644
--- a/chrome/browser/resources/settings/crostini_page/crostini_shared_paths.html
+++ b/chrome/browser/resources/settings/chromeos/crostini_page/crostini_shared_paths.html
@@ -3,9 +3,9 @@
 <link rel="import" href="chrome://resources/cr_elements/cr_icon_button/cr_icon_button.html">
 <link rel="import" href="chrome://resources/html/i18n_behavior.html">
 <link rel="import" href="crostini_browser_proxy.html">
-<link rel="import" href="../i18n_setup.html">
-<link rel="import" href="../prefs/prefs_behavior.html">
-<link rel="import" href="../settings_shared_css.html">
+<link rel="import" href="../../i18n_setup.html">
+<link rel="import" href="../../prefs/prefs_behavior.html">
+<link rel="import" href="../../settings_shared_css.html">
 
 <dom-module id="settings-crostini-shared-paths">
   <template>
diff --git a/chrome/browser/resources/settings/crostini_page/crostini_shared_paths.js b/chrome/browser/resources/settings/chromeos/crostini_page/crostini_shared_paths.js
similarity index 100%
rename from chrome/browser/resources/settings/crostini_page/crostini_shared_paths.js
rename to chrome/browser/resources/settings/chromeos/crostini_page/crostini_shared_paths.js
diff --git a/chrome/browser/resources/settings/crostini_page/crostini_shared_usb_devices.html b/chrome/browser/resources/settings/chromeos/crostini_page/crostini_shared_usb_devices.html
similarity index 95%
rename from chrome/browser/resources/settings/crostini_page/crostini_shared_usb_devices.html
rename to chrome/browser/resources/settings/chromeos/crostini_page/crostini_shared_usb_devices.html
index e1490cf..1eabd3d9 100644
--- a/chrome/browser/resources/settings/crostini_page/crostini_shared_usb_devices.html
+++ b/chrome/browser/resources/settings/chromeos/crostini_page/crostini_shared_usb_devices.html
@@ -2,7 +2,7 @@
 
 <link rel="import" href="chrome://resources/html/web_ui_listener_behavior.html">
 <link rel="import" href="chrome://resources/cr_elements/cr_toggle/cr_toggle.html">
-<link rel="import" href="../settings_shared_css.html">
+<link rel="import" href="../../settings_shared_css.html">
 
 <dom-module id="settings-crostini-shared-usb-devices">
   <template>
diff --git a/chrome/browser/resources/settings/crostini_page/crostini_shared_usb_devices.js b/chrome/browser/resources/settings/chromeos/crostini_page/crostini_shared_usb_devices.js
similarity index 100%
rename from chrome/browser/resources/settings/crostini_page/crostini_shared_usb_devices.js
rename to chrome/browser/resources/settings/chromeos/crostini_page/crostini_shared_usb_devices.js
diff --git a/chrome/browser/resources/settings/crostini_page/crostini_subpage.html b/chrome/browser/resources/settings/chromeos/crostini_page/crostini_subpage.html
similarity index 91%
rename from chrome/browser/resources/settings/crostini_page/crostini_subpage.html
rename to chrome/browser/resources/settings/chromeos/crostini_page/crostini_subpage.html
index 88e6999..73a52f7 100644
--- a/chrome/browser/resources/settings/crostini_page/crostini_subpage.html
+++ b/chrome/browser/resources/settings/chromeos/crostini_page/crostini_subpage.html
@@ -4,12 +4,12 @@
 <link rel="import" href="chrome://resources/cr_elements/cr_link_row/cr_link_row.html">
 <link rel="import" href="chrome://resources/html/i18n_behavior.html">
 <link rel="import" href="crostini_browser_proxy.html">
-<link rel="import" href="../i18n_setup.html">
-<link rel="import" href="../prefs/prefs_behavior.html">
-<link rel="import" href="../route.html">
-<link rel="import" href="../route_origin_behavior.html">
+<link rel="import" href="../../i18n_setup.html">
+<link rel="import" href="../../prefs/prefs_behavior.html">
+<link rel="import" href="../../route.html">
+<link rel="import" href="../../route_origin_behavior.html">
 <link rel="import" href="chrome://resources/html/web_ui_listener_behavior.html">
-<link rel="import" href="../settings_shared_css.html">
+<link rel="import" href="../../settings_shared_css.html">
 
 <dom-module id="settings-crostini-subpage">
   <template>
diff --git a/chrome/browser/resources/settings/crostini_page/crostini_subpage.js b/chrome/browser/resources/settings/chromeos/crostini_page/crostini_subpage.js
similarity index 100%
rename from chrome/browser/resources/settings/crostini_page/crostini_subpage.js
rename to chrome/browser/resources/settings/chromeos/crostini_page/crostini_subpage.js
diff --git a/chrome/browser/resources/settings/date_time_page/BUILD.gn b/chrome/browser/resources/settings/chromeos/date_time_page/BUILD.gn
similarity index 86%
rename from chrome/browser/resources/settings/date_time_page/BUILD.gn
rename to chrome/browser/resources/settings/chromeos/date_time_page/BUILD.gn
index 60ec09b..3f82262 100644
--- a/chrome/browser/resources/settings/date_time_page/BUILD.gn
+++ b/chrome/browser/resources/settings/chromeos/date_time_page/BUILD.gn
@@ -18,8 +18,8 @@
     ":date_time_types",
     ":timezone_selector",
     ":timezone_subpage",
-    "..:route",
-    "../prefs:prefs_behavior",
+    "../..:route",
+    "../../prefs:prefs_behavior",
     "//ui/webui/resources/cr_elements/policy:cr_policy_indicator_behavior",
     "//ui/webui/resources/js:cr",
     "//ui/webui/resources/js:i18n_behavior",
@@ -37,8 +37,8 @@
 js_library("timezone_selector") {
   deps = [
     ":date_time_types",
-    "../controls:settings_dropdown_menu",
-    "../prefs:prefs_behavior",
+    "../../controls:settings_dropdown_menu",
+    "../../prefs:prefs_behavior",
     "//ui/webui/resources/js:cr",
     "//ui/webui/resources/js:i18n_behavior",
   ]
@@ -48,7 +48,7 @@
   deps = [
     ":date_time_types",
     ":timezone_selector",
-    "../prefs:prefs_behavior",
+    "../../prefs:prefs_behavior",
     "//ui/webui/resources/js:cr",
   ]
 }
diff --git a/chrome/browser/resources/settings/date_time_page/date_time_page.html b/chrome/browser/resources/settings/chromeos/date_time_page/date_time_page.html
similarity index 90%
rename from chrome/browser/resources/settings/date_time_page/date_time_page.html
rename to chrome/browser/resources/settings/chromeos/date_time_page/date_time_page.html
index b44e357..97edd2b 100644
--- a/chrome/browser/resources/settings/date_time_page/date_time_page.html
+++ b/chrome/browser/resources/settings/chromeos/date_time_page/date_time_page.html
@@ -4,12 +4,12 @@
 <link rel="import" href="chrome://resources/html/cr.html">
 <link rel="import" href="chrome://resources/html/i18n_behavior.html">
 <link rel="import" href="chrome://resources/html/web_ui_listener_behavior.html">
-<link rel="import" href="../controls/settings_toggle_button.html">
-<link rel="import" href="../i18n_setup.html">
-<link rel="import" href="../prefs/prefs_behavior.html">
-<link rel="import" href="../route.html">
-<link rel="import" href="../settings_page/settings_subpage.html">
-<link rel="import" href="../settings_shared_css.html">
+<link rel="import" href="../../controls/settings_toggle_button.html">
+<link rel="import" href="../../i18n_setup.html">
+<link rel="import" href="../../prefs/prefs_behavior.html">
+<link rel="import" href="../../route.html">
+<link rel="import" href="../../settings_page/settings_subpage.html">
+<link rel="import" href="../../settings_shared_css.html">
 <link rel="import" href="date_time_types.html">
 <link rel="import" href="timezone_selector.html">
 <link rel="import" href="timezone_subpage.html">
diff --git a/chrome/browser/resources/settings/date_time_page/date_time_page.js b/chrome/browser/resources/settings/chromeos/date_time_page/date_time_page.js
similarity index 100%
rename from chrome/browser/resources/settings/date_time_page/date_time_page.js
rename to chrome/browser/resources/settings/chromeos/date_time_page/date_time_page.js
diff --git a/chrome/browser/resources/settings/date_time_page/date_time_types.html b/chrome/browser/resources/settings/chromeos/date_time_page/date_time_types.html
similarity index 100%
rename from chrome/browser/resources/settings/date_time_page/date_time_types.html
rename to chrome/browser/resources/settings/chromeos/date_time_page/date_time_types.html
diff --git a/chrome/browser/resources/settings/date_time_page/date_time_types.js b/chrome/browser/resources/settings/chromeos/date_time_page/date_time_types.js
similarity index 100%
rename from chrome/browser/resources/settings/date_time_page/date_time_types.js
rename to chrome/browser/resources/settings/chromeos/date_time_page/date_time_types.js
diff --git a/chrome/browser/resources/settings/date_time_page/timezone_selector.html b/chrome/browser/resources/settings/chromeos/date_time_page/timezone_selector.html
similarity index 88%
rename from chrome/browser/resources/settings/date_time_page/timezone_selector.html
rename to chrome/browser/resources/settings/chromeos/date_time_page/timezone_selector.html
index dd6c68405..860c2c1 100644
--- a/chrome/browser/resources/settings/date_time_page/timezone_selector.html
+++ b/chrome/browser/resources/settings/chromeos/date_time_page/timezone_selector.html
@@ -1,10 +1,10 @@
 <link rel="import" href="chrome://resources/html/polymer.html">
 
 <link rel="import" href="chrome://resources/html/i18n_behavior.html">
-<link rel="import" href="../controls/settings_dropdown_menu.html">
-<link rel="import" href="../i18n_setup.html">
-<link rel="import" href="../prefs/prefs_behavior.html">
-<link rel="import" href="../settings_shared_css.html">
+<link rel="import" href="../../controls/settings_dropdown_menu.html">
+<link rel="import" href="../../i18n_setup.html">
+<link rel="import" href="../../prefs/prefs_behavior.html">
+<link rel="import" href="../../settings_shared_css.html">
 <link rel="import" href="date_time_types.html">
 
 <dom-module id="timezone-selector">
diff --git a/chrome/browser/resources/settings/date_time_page/timezone_selector.js b/chrome/browser/resources/settings/chromeos/date_time_page/timezone_selector.js
similarity index 98%
rename from chrome/browser/resources/settings/date_time_page/timezone_selector.js
rename to chrome/browser/resources/settings/chromeos/date_time_page/timezone_selector.js
index 2ee33b7..6a7417e 100644
--- a/chrome/browser/resources/settings/date_time_page/timezone_selector.js
+++ b/chrome/browser/resources/settings/chromeos/date_time_page/timezone_selector.js
@@ -57,7 +57,8 @@
 
   /**
    * True if getTimeZones request was sent to Chrome, but result is not
-   * yet received. */
+   * yet received.
+   */
   getTimeZonesRequestSent_: false,
 
   /**
@@ -67,7 +68,7 @@
    * @suppress {missingProperties} Property finally never defined on
    */
   maybeGetTimeZoneList_: function(perUserTimeZoneMode) {
-    if (typeof(perUserTimeZoneMode) !== 'undefined') {
+    if (typeof (perUserTimeZoneMode) !== 'undefined') {
       /* This method is called as observer. Skip if if current mode does not
        * match expected.
        */
diff --git a/chrome/browser/resources/settings/date_time_page/timezone_subpage.html b/chrome/browser/resources/settings/chromeos/date_time_page/timezone_subpage.html
similarity index 87%
rename from chrome/browser/resources/settings/date_time_page/timezone_subpage.html
rename to chrome/browser/resources/settings/chromeos/date_time_page/timezone_subpage.html
index 2ee6c25..2018b0d8 100644
--- a/chrome/browser/resources/settings/date_time_page/timezone_subpage.html
+++ b/chrome/browser/resources/settings/chromeos/date_time_page/timezone_subpage.html
@@ -1,10 +1,10 @@
 <link rel="import" href="chrome://resources/html/polymer.html">
 
-<link rel="import" href="../controls/controlled_radio_button.html">
-<link rel="import" href="../controls/settings_radio_group.html">
-<link rel="import" href="../prefs/prefs.html">
-<link rel="import" href="../prefs/prefs_behavior.html">
-<link rel="import" href="../settings_shared_css.html">
+<link rel="import" href="../../controls/controlled_radio_button.html">
+<link rel="import" href="../../controls/settings_radio_group.html">
+<link rel="import" href="../../prefs/prefs.html">
+<link rel="import" href="../../prefs/prefs_behavior.html">
+<link rel="import" href="../../settings_shared_css.html">
 <link rel="import" href="date_time_types.html">
 <link rel="import" href="timezone_selector.html">
 
diff --git a/chrome/browser/resources/settings/date_time_page/timezone_subpage.js b/chrome/browser/resources/settings/chromeos/date_time_page/timezone_subpage.js
similarity index 100%
rename from chrome/browser/resources/settings/date_time_page/timezone_subpage.js
rename to chrome/browser/resources/settings/chromeos/date_time_page/timezone_subpage.js
diff --git a/chrome/browser/resources/settings/internet_page/BUILD.gn b/chrome/browser/resources/settings/chromeos/internet_page/BUILD.gn
similarity index 94%
rename from chrome/browser/resources/settings/internet_page/BUILD.gn
rename to chrome/browser/resources/settings/chromeos/internet_page/BUILD.gn
index 6eca744..46efedd 100644
--- a/chrome/browser/resources/settings/internet_page/BUILD.gn
+++ b/chrome/browser/resources/settings/chromeos/internet_page/BUILD.gn
@@ -23,8 +23,8 @@
   deps = [
     ":internet_config",
     ":internet_page_browser_proxy",
-    "..:route",
-    "../settings_page:settings_animated_pages",
+    "../..:route",
+    "../../settings_page:settings_animated_pages",
     "//chromeos/services/network_config/public/mojom:mojom_js_library_for_compile",
     "//ui/webui/resources/cr_components/chromeos/network:mojo_interface_provider",
     "//ui/webui/resources/cr_components/chromeos/network:network_listener_behavior",
@@ -48,7 +48,7 @@
 
 js_library("internet_config") {
   deps = [
-    "..:route",
+    "../..:route",
     "//ui/webui/resources/cr_components/chromeos/network:network_config",
     "//ui/webui/resources/cr_elements/cr_dialog:cr_dialog",
     "//ui/webui/resources/js:assert",
@@ -63,7 +63,7 @@
   deps = [
     ":internet_page_browser_proxy",
     ":tether_connection_dialog",
-    "..:route",
+    "../..:route",
     "//ui/webui/resources/cr_components/chromeos/network:network_listener_behavior",
     "//ui/webui/resources/cr_elements/policy:cr_policy_network_behavior_mojo",
     "//ui/webui/resources/js:assert",
@@ -90,8 +90,8 @@
 js_library("internet_subpage") {
   deps = [
     ":internet_page_browser_proxy",
-    "..:route",
-    "..:route_origin_behavior",
+    "../..:route",
+    "../..:route_origin_behavior",
     "//ui/webui/resources/cr_components/chromeos/network:network_listener_behavior",
     "//ui/webui/resources/cr_components/chromeos/network:onc_mojo",
     "//ui/webui/resources/cr_elements/policy:cr_policy_network_behavior_mojo",
@@ -104,9 +104,9 @@
 
 js_library("network_proxy_section") {
   deps = [
-    "..:route",
-    "../controls:settings_checkbox",
-    "../prefs:prefs_behavior",
+    "../..:route",
+    "../../controls:settings_checkbox",
+    "../../prefs:prefs_behavior",
     "//ui/webui/resources/cr_components/chromeos/network:network_proxy",
     "//ui/webui/resources/cr_components/chromeos/network:onc_mojo",
     "//ui/webui/resources/cr_elements/policy:cr_policy_network_behavior_mojo",
diff --git a/chrome/browser/resources/settings/internet_page/OWNERS b/chrome/browser/resources/settings/chromeos/internet_page/OWNERS
similarity index 100%
rename from chrome/browser/resources/settings/internet_page/OWNERS
rename to chrome/browser/resources/settings/chromeos/internet_page/OWNERS
diff --git a/chrome/browser/resources/settings/internet_page/internet_config.html b/chrome/browser/resources/settings/chromeos/internet_page/internet_config.html
similarity index 100%
rename from chrome/browser/resources/settings/internet_page/internet_config.html
rename to chrome/browser/resources/settings/chromeos/internet_page/internet_config.html
diff --git a/chrome/browser/resources/settings/internet_page/internet_config.js b/chrome/browser/resources/settings/chromeos/internet_page/internet_config.js
similarity index 100%
rename from chrome/browser/resources/settings/internet_page/internet_config.js
rename to chrome/browser/resources/settings/chromeos/internet_page/internet_config.js
diff --git a/chrome/browser/resources/settings/internet_page/internet_detail_page.html b/chrome/browser/resources/settings/chromeos/internet_page/internet_detail_page.html
similarity index 97%
rename from chrome/browser/resources/settings/internet_page/internet_detail_page.html
rename to chrome/browser/resources/settings/chromeos/internet_page/internet_detail_page.html
index 39a7a8d..72d4195 100644
--- a/chrome/browser/resources/settings/internet_page/internet_detail_page.html
+++ b/chrome/browser/resources/settings/chromeos/internet_page/internet_detail_page.html
@@ -21,11 +21,11 @@
 <link rel="import" href="chrome://resources/polymer/v1_0/iron-flex-layout/iron-flex-layout-classes.html">
 <link rel="import" href="chrome://resources/polymer/v1_0/iron-icon/iron-icon.html">
 <link rel="import" href="chrome://resources/polymer/v1_0/paper-spinner/paper-spinner-lite.html">
-<link rel="import" href="../controls/controlled_button.html">
-<link rel="import" href="../controls/settings_toggle_button.html">
-<link rel="import" href="../i18n_setup.html">
-<link rel="import" href="../prefs/prefs.html">
-<link rel="import" href="../route.html">
+<link rel="import" href="../../controls/controlled_button.html">
+<link rel="import" href="../../controls/settings_toggle_button.html">
+<link rel="import" href="../../i18n_setup.html">
+<link rel="import" href="../../prefs/prefs.html">
+<link rel="import" href="../../route.html">
 <link rel="import" href="internet_page_browser_proxy.html">
 <link rel="import" href="internet_shared_css.html">
 <link rel="import" href="network_proxy_section.html">
diff --git a/chrome/browser/resources/settings/internet_page/internet_detail_page.js b/chrome/browser/resources/settings/chromeos/internet_page/internet_detail_page.js
similarity index 100%
rename from chrome/browser/resources/settings/internet_page/internet_detail_page.js
rename to chrome/browser/resources/settings/chromeos/internet_page/internet_detail_page.js
diff --git a/chrome/browser/resources/settings/internet_page/internet_known_networks_page.html b/chrome/browser/resources/settings/chromeos/internet_page/internet_known_networks_page.html
similarity index 98%
rename from chrome/browser/resources/settings/internet_page/internet_known_networks_page.html
rename to chrome/browser/resources/settings/chromeos/internet_page/internet_known_networks_page.html
index 8d7e0956..2829dc11 100644
--- a/chrome/browser/resources/settings/internet_page/internet_known_networks_page.html
+++ b/chrome/browser/resources/settings/chromeos/internet_page/internet_known_networks_page.html
@@ -6,7 +6,7 @@
 <link rel="import" href="chrome://resources/cr_elements/cr_link_row/cr_link_row.html">
 <link rel="import" href="chrome://resources/cr_elements/icons.html">
 <link rel="import" href="chrome://resources/cr_elements/policy/cr_policy_network_behavior_mojo.html">
-<link rel="import" href="../settings_shared_css.html">
+<link rel="import" href="../../settings_shared_css.html">
 
 <dom-module id="settings-internet-known-networks-page">
   <template>
diff --git a/chrome/browser/resources/settings/internet_page/internet_known_networks_page.js b/chrome/browser/resources/settings/chromeos/internet_page/internet_known_networks_page.js
similarity index 100%
rename from chrome/browser/resources/settings/internet_page/internet_known_networks_page.js
rename to chrome/browser/resources/settings/chromeos/internet_page/internet_known_networks_page.js
diff --git a/chrome/browser/resources/settings/internet_page/internet_page.html b/chrome/browser/resources/settings/chromeos/internet_page/internet_page.html
similarity index 93%
rename from chrome/browser/resources/settings/internet_page/internet_page.html
rename to chrome/browser/resources/settings/chromeos/internet_page/internet_page.html
index 9e8ad49b..3525301 100644
--- a/chrome/browser/resources/settings/internet_page/internet_page.html
+++ b/chrome/browser/resources/settings/chromeos/internet_page/internet_page.html
@@ -9,13 +9,13 @@
 <link rel="import" href="chrome://resources/html/i18n_behavior.html">
 <link rel="import" href="chrome://resources/html/web_ui_listener_behavior.html">
 <link rel="import" href="chrome://resources/polymer/v1_0/iron-icon/iron-icon.html">
-<link rel="import" href="../chromeos/os_settings_icons_css.html">
-<link rel="import" href="../i18n_setup.html">
-<link rel="import" href="../prefs/prefs.html">
-<link rel="import" href="../route.html">
-<link rel="import" href="../settings_page/settings_animated_pages.html">
-<link rel="import" href="../settings_page/settings_subpage.html">
-<link rel="import" href="../settings_shared_css.html">
+<link rel="import" href="../../chromeos/os_settings_icons_css.html">
+<link rel="import" href="../../i18n_setup.html">
+<link rel="import" href="../../prefs/prefs.html">
+<link rel="import" href="../../route.html">
+<link rel="import" href="../../settings_page/settings_animated_pages.html">
+<link rel="import" href="../../settings_page/settings_subpage.html">
+<link rel="import" href="../../settings_shared_css.html">
 <link rel="import" href="internet_config.html">
 <link rel="import" href="internet_detail_page.html">
 <link rel="import" href="internet_known_networks_page.html">
diff --git a/chrome/browser/resources/settings/internet_page/internet_page.js b/chrome/browser/resources/settings/chromeos/internet_page/internet_page.js
similarity index 100%
rename from chrome/browser/resources/settings/internet_page/internet_page.js
rename to chrome/browser/resources/settings/chromeos/internet_page/internet_page.js
diff --git a/chrome/browser/resources/settings/internet_page/internet_page_browser_proxy.html b/chrome/browser/resources/settings/chromeos/internet_page/internet_page_browser_proxy.html
similarity index 100%
rename from chrome/browser/resources/settings/internet_page/internet_page_browser_proxy.html
rename to chrome/browser/resources/settings/chromeos/internet_page/internet_page_browser_proxy.html
diff --git a/chrome/browser/resources/settings/internet_page/internet_page_browser_proxy.js b/chrome/browser/resources/settings/chromeos/internet_page/internet_page_browser_proxy.js
similarity index 100%
rename from chrome/browser/resources/settings/internet_page/internet_page_browser_proxy.js
rename to chrome/browser/resources/settings/chromeos/internet_page/internet_page_browser_proxy.js
diff --git a/chrome/browser/resources/settings/internet_page/internet_shared_css.html b/chrome/browser/resources/settings/chromeos/internet_page/internet_shared_css.html
similarity index 91%
rename from chrome/browser/resources/settings/internet_page/internet_shared_css.html
rename to chrome/browser/resources/settings/chromeos/internet_page/internet_shared_css.html
index 4f48902..acb8f9b 100644
--- a/chrome/browser/resources/settings/internet_page/internet_shared_css.html
+++ b/chrome/browser/resources/settings/chromeos/internet_page/internet_shared_css.html
@@ -1,5 +1,5 @@
 <link rel="import" href="chrome://resources/cr_elements/shared_vars_css.html">
-<link rel="import" href="../settings_shared_css.html">
+<link rel="import" href="../../settings_shared_css.html">
 
 <!-- Common styles for Internet settings. -->
 <dom-module id="internet-shared">
diff --git a/chrome/browser/resources/settings/internet_page/internet_subpage.html b/chrome/browser/resources/settings/chromeos/internet_page/internet_subpage.html
similarity index 96%
rename from chrome/browser/resources/settings/internet_page/internet_subpage.html
rename to chrome/browser/resources/settings/chromeos/internet_page/internet_subpage.html
index 4c3490e..9070b63d 100644
--- a/chrome/browser/resources/settings/internet_page/internet_subpage.html
+++ b/chrome/browser/resources/settings/chromeos/internet_page/internet_subpage.html
@@ -12,11 +12,11 @@
 <link rel="import" href="chrome://resources/polymer/v1_0/iron-flex-layout/iron-flex-layout-classes.html">
 <link rel="import" href="chrome://resources/polymer/v1_0/iron-icon/iron-icon.html">
 <link rel="import" href="internet_page_browser_proxy.html">
-<link rel="import" href="../chromeos/os_settings_icons_css.html">
-<link rel="import" href="../i18n_setup.html">
-<link rel="import" href="../route.html">
-<link rel="import" href="../route_origin_behavior.html">
-<link rel="import" href="../settings_shared_css.html">
+<link rel="import" href="../../chromeos/os_settings_icons_css.html">
+<link rel="import" href="../../i18n_setup.html">
+<link rel="import" href="../../route.html">
+<link rel="import" href="../../route_origin_behavior.html">
+<link rel="import" href="../../settings_shared_css.html">
 
 <dom-module id="settings-internet-subpage">
   <template>
diff --git a/chrome/browser/resources/settings/internet_page/internet_subpage.js b/chrome/browser/resources/settings/chromeos/internet_page/internet_subpage.js
similarity index 100%
rename from chrome/browser/resources/settings/internet_page/internet_subpage.js
rename to chrome/browser/resources/settings/chromeos/internet_page/internet_subpage.js
diff --git a/chrome/browser/resources/settings/internet_page/network_proxy_section.html b/chrome/browser/resources/settings/chromeos/internet_page/network_proxy_section.html
similarity index 92%
rename from chrome/browser/resources/settings/internet_page/network_proxy_section.html
rename to chrome/browser/resources/settings/chromeos/internet_page/network_proxy_section.html
index f44b433..94c3ce8 100644
--- a/chrome/browser/resources/settings/internet_page/network_proxy_section.html
+++ b/chrome/browser/resources/settings/chromeos/internet_page/network_proxy_section.html
@@ -10,11 +10,11 @@
 <link rel="import" href="chrome://resources/html/cr/ui/focus_without_ink.html">
 <link rel="import" href="chrome://resources/html/i18n_behavior.html">
 <link rel="import" href="chrome://resources/polymer/v1_0/iron-flex-layout/iron-flex-layout-classes.html">
-<link rel="import" href="../controls/extension_controlled_indicator.html">
-<link rel="import" href="../controls/settings_toggle_button.html">
-<link rel="import" href="../i18n_setup.html">
-<link rel="import" href="../prefs/prefs_behavior.html">
-<link rel="import" href="../settings_vars_css.html">
+<link rel="import" href="../../controls/extension_controlled_indicator.html">
+<link rel="import" href="../../controls/settings_toggle_button.html">
+<link rel="import" href="../../i18n_setup.html">
+<link rel="import" href="../../prefs/prefs_behavior.html">
+<link rel="import" href="../../settings_vars_css.html">
 <link rel="import" href="internet_shared_css.html">
 
 <dom-module id="network-proxy-section">
diff --git a/chrome/browser/resources/settings/internet_page/network_proxy_section.js b/chrome/browser/resources/settings/chromeos/internet_page/network_proxy_section.js
similarity index 100%
rename from chrome/browser/resources/settings/internet_page/network_proxy_section.js
rename to chrome/browser/resources/settings/chromeos/internet_page/network_proxy_section.js
diff --git a/chrome/browser/resources/settings/internet_page/network_summary.html b/chrome/browser/resources/settings/chromeos/internet_page/network_summary.html
similarity index 100%
rename from chrome/browser/resources/settings/internet_page/network_summary.html
rename to chrome/browser/resources/settings/chromeos/internet_page/network_summary.html
diff --git a/chrome/browser/resources/settings/internet_page/network_summary.js b/chrome/browser/resources/settings/chromeos/internet_page/network_summary.js
similarity index 100%
rename from chrome/browser/resources/settings/internet_page/network_summary.js
rename to chrome/browser/resources/settings/chromeos/internet_page/network_summary.js
diff --git a/chrome/browser/resources/settings/internet_page/network_summary_item.html b/chrome/browser/resources/settings/chromeos/internet_page/network_summary_item.html
similarity index 98%
rename from chrome/browser/resources/settings/internet_page/network_summary_item.html
rename to chrome/browser/resources/settings/chromeos/internet_page/network_summary_item.html
index 3344065..6cf33ef 100644
--- a/chrome/browser/resources/settings/internet_page/network_summary_item.html
+++ b/chrome/browser/resources/settings/chromeos/internet_page/network_summary_item.html
@@ -10,7 +10,7 @@
 <link rel="import" href="chrome://resources/cr_elements/shared_vars_css.html">
 <link rel="import" href="chrome://resources/html/i18n_behavior.html">
 <link rel="import" href="chrome://resources/polymer/v1_0/iron-collapse/iron-collapse.html">
-<link rel="import" href="../settings_page/settings_subpage.html">
+<link rel="import" href="../../settings_page/settings_subpage.html">
 
 <dom-module id="network-summary-item">
   <template>
diff --git a/chrome/browser/resources/settings/internet_page/network_summary_item.js b/chrome/browser/resources/settings/chromeos/internet_page/network_summary_item.js
similarity index 99%
rename from chrome/browser/resources/settings/internet_page/network_summary_item.js
rename to chrome/browser/resources/settings/chromeos/internet_page/network_summary_item.js
index b9118267..e8cf779 100644
--- a/chrome/browser/resources/settings/internet_page/network_summary_item.js
+++ b/chrome/browser/resources/settings/chromeos/internet_page/network_summary_item.js
@@ -182,12 +182,12 @@
     if (this.deviceIsEnabled_(deviceState)) {
       return false;
     }
+    if (deviceState.simAbsent) {
+      return true;
+    }
     if (!deviceState.simLockStatus) {
       return false;
     }
-    if (deviceState.simLockStatus.simAbsent) {
-      return true;
-    }
     const simLockType = deviceState.simLockStatus.lockType;
     return simLockType == 'sim-pin' || simLockType == 'sim-puk';
   },
diff --git a/chrome/browser/resources/settings/internet_page/tether_connection_dialog.html b/chrome/browser/resources/settings/chromeos/internet_page/tether_connection_dialog.html
similarity index 96%
rename from chrome/browser/resources/settings/internet_page/tether_connection_dialog.html
rename to chrome/browser/resources/settings/chromeos/internet_page/tether_connection_dialog.html
index e723405..f0789a15 100644
--- a/chrome/browser/resources/settings/internet_page/tether_connection_dialog.html
+++ b/chrome/browser/resources/settings/chromeos/internet_page/tether_connection_dialog.html
@@ -5,9 +5,9 @@
 <link rel="import" href="chrome://resources/cr_elements/shared_vars_css.html">
 <link rel="import" href="chrome://resources/polymer/v1_0/iron-flex-layout/iron-flex-layout-classes.html">
 <link rel="import" href="chrome://resources/polymer/v1_0/iron-icon/iron-icon.html">
-<link rel="import" href="../chromeos/os_icons.html">
-<link rel="import" href="../route.html">
-<link rel="import" href="../settings_shared_css.html">
+<link rel="import" href="../../chromeos/os_icons.html">
+<link rel="import" href="../../route.html">
+<link rel="import" href="../../settings_shared_css.html">
 
 <dom-module id="tether-connection-dialog">
   <template>
diff --git a/chrome/browser/resources/settings/internet_page/tether_connection_dialog.js b/chrome/browser/resources/settings/chromeos/internet_page/tether_connection_dialog.js
similarity index 100%
rename from chrome/browser/resources/settings/internet_page/tether_connection_dialog.js
rename to chrome/browser/resources/settings/chromeos/internet_page/tether_connection_dialog.js
diff --git a/chrome/browser/resources/settings/chromeos/lazy_load.html b/chrome/browser/resources/settings/chromeos/lazy_load.html
index e6f6001..61860e5 100644
--- a/chrome/browser/resources/settings/chromeos/lazy_load.html
+++ b/chrome/browser/resources/settings/chromeos/lazy_load.html
@@ -1,7 +1,7 @@
 <html>
 <head></head>
 <body>
-  <link rel="import" href="../date_time_page/date_time_page.html">
+  <link rel="import" href="date_time_page/date_time_page.html">
   <link rel="import" href="os_a11y_page/os_a11y_page.html">
   <link rel="import" href="os_files_page/os_files_page.html">
   <link rel="import" href="os_languages_page/os_languages_section.html">
diff --git a/chrome/browser/resources/settings/chromeos/localized_string_with_link/BUILD.gn b/chrome/browser/resources/settings/chromeos/localized_link/BUILD.gn
similarity index 80%
rename from chrome/browser/resources/settings/chromeos/localized_string_with_link/BUILD.gn
rename to chrome/browser/resources/settings/chromeos/localized_link/BUILD.gn
index cc8765b..092ab03 100644
--- a/chrome/browser/resources/settings/chromeos/localized_string_with_link/BUILD.gn
+++ b/chrome/browser/resources/settings/chromeos/localized_link/BUILD.gn
@@ -6,11 +6,11 @@
 
 js_type_check("closure_compile") {
   deps = [
-    ":localized_string_with_link",
+    ":localized_link",
   ]
 }
 
-js_library("localized_string_with_link") {
+js_library("localized_link") {
   deps = [
     "//ui/webui/resources/js:assert",
   ]
diff --git a/chrome/browser/resources/settings/chromeos/localized_string_with_link/localized_string_with_link.html b/chrome/browser/resources/settings/chromeos/localized_link/localized_link.html
similarity index 68%
rename from chrome/browser/resources/settings/chromeos/localized_string_with_link/localized_string_with_link.html
rename to chrome/browser/resources/settings/chromeos/localized_link/localized_link.html
index a282a31..407a785 100644
--- a/chrome/browser/resources/settings/chromeos/localized_string_with_link/localized_string_with_link.html
+++ b/chrome/browser/resources/settings/chromeos/localized_link/localized_link.html
@@ -1,14 +1,14 @@
 <link rel="import" href="chrome://resources/html/polymer.html">
+
 <link rel="import" href="chrome://resources/html/assert.html">
 <link rel="import" href="../../settings_shared_css.html">
 
-<dom-module id="localized-string-with-link">
+<dom-module id="settings-localized-link">
   <template>
-    <style include="settings-shared">
-    </style>
+    <style include="settings-shared"></style>
     <div id="container"
         inner-h-t-m-l="[[getAriaLabelledContent_(localizedString, linkUrl)]]">
     </div>
   </template>
-  <script src="localized_string_with_link.js"></script>
+  <script src="localized_link.js"></script>
 </dom-module>
diff --git a/chrome/browser/resources/settings/chromeos/localized_string_with_link/localized_string_with_link.js b/chrome/browser/resources/settings/chromeos/localized_link/localized_link.js
similarity index 88%
rename from chrome/browser/resources/settings/chromeos/localized_string_with_link/localized_string_with_link.js
rename to chrome/browser/resources/settings/chromeos/localized_link/localized_link.js
index f3954e1..8f5ece6 100644
--- a/chrome/browser/resources/settings/chromeos/localized_string_with_link/localized_string_with_link.js
+++ b/chrome/browser/resources/settings/chromeos/localized_link/localized_link.js
@@ -3,7 +3,7 @@
 // found in the LICENSE file.
 
 /**
- * @fileoverview 'localized-string-with-link' takes a localized string that
+ * @fileoverview 'settings-localized-link' takes a localized string that
  * contains exactly one anchor tag, and labels the string contained within the
  * anchor tag with the entire localized string. The string should not be bound
  * by element tags. The string should not contain any elements other than the
@@ -16,7 +16,7 @@
  */
 
 Polymer({
-  is: 'localized-string-with-link',
+  is: 'settings-localized-link',
 
   properties: {
     /**
@@ -68,13 +68,13 @@
         ariaLabelledByIds.push(node.id);
         return;
       }
-      // All nodes except text nodes and an element anchor node are not allowed.
-      assertNotReached('localized-string-with-link has invalid node types');
+      // Only text and <a> nodes are allowed.
+      assertNotReached('settings-localized-link has invalid node types');
     });
 
     const anchorTags = tempEl.getElementsByTagName('a');
     assert(anchorTags.length == 1,
-        'localized-string-with-link should contain exactly one anchor tag');
+        'settings-localized-link should contain exactly one anchor tag');
     anchorTags[0].setAttribute('aria-labelledby', ariaLabelledByIds.join(' '));
 
     if (linkUrl != '') {
diff --git a/chrome/browser/resources/settings/chromeos/os_people_page/os_sync_browser_proxy.js b/chrome/browser/resources/settings/chromeos/os_people_page/os_sync_browser_proxy.js
index 50dadf9..ec4b9d8 100644
--- a/chrome/browser/resources/settings/chromeos/os_people_page/os_sync_browser_proxy.js
+++ b/chrome/browser/resources/settings/chromeos/os_people_page/os_sync_browser_proxy.js
@@ -9,23 +9,19 @@
 cr.exportPath('settings');
 
 /**
- * User preferences for OS sync. 'Enforced' means the user cannot disable the
- * type. For example, a type might be forced on for supervised user accounts.
- * 'Registered' means the user has the option to select a type. For example, a
- * type might not be registered due to a feature flag being disabled.
+ * User preferences for OS sync. 'Registered' means the user has the option to
+ * select a type. For example, a type might not be registered due to a feature
+ * flag being disabled.
  * @see components/sync/driver/sync_service.h
  *
  * TODO(jamescook): Encryption options.
  *
  * @typedef {{
- *   osPreferencesEnforced: boolean,
+ *   osAppsRegistered: boolean,
+ *   osAppsSynced: boolean,
  *   osPreferencesRegistered: boolean,
  *   osPreferencesSynced: boolean,
- *   printersEnforced: boolean,
- *   printersRegistered: boolean,
- *   printersSynced: boolean,
  *   syncAllOsDataTypes: boolean,
- *   wifiConfigurationsEnforced: boolean,
  *   wifiConfigurationsRegistered: boolean,
  *   wifiConfigurationsSynced: boolean,
  * }}
diff --git a/chrome/browser/resources/settings/chromeos/os_people_page/os_sync_controls.html b/chrome/browser/resources/settings/chromeos/os_people_page/os_sync_controls.html
index 5577edd..a59e5e19 100644
--- a/chrome/browser/resources/settings/chromeos/os_people_page/os_sync_controls.html
+++ b/chrome/browser/resources/settings/chromeos/os_people_page/os_sync_controls.html
@@ -66,75 +66,39 @@
     <div class="list-frame" id="sync-data-types">
       <div class="list-item" hidden="[[!osSyncPrefs.osAppsRegistered]]">
         <div id="osAppsCheckboxLabel"
-            label-disabled$="[[isDataTypeToggleDisabled_(
-                osSyncFeatureEnabled,
-                osSyncPrefs.syncAllOsTypes,
-                osSyncPrefs.osAppsEnforced)]]">
+            label-disabled$="[[areDataTypeTogglesDisabled_]]">
           $i18n{syncOsAppsCheckboxLabel}
         </div>
         <cr-toggle id="osAppsControl"
             checked="{{osSyncPrefs.osAppsSynced}}"
             on-change="onSingleSyncDataTypeChanged_"
-            disabled="[[isDataTypeToggleDisabled_(
-                osSyncFeatureEnabled,
-                osSyncPrefs.syncAllOsTypes,
-                osSyncPrefs.osAppsEnforced)]]"
+            disabled="[[areDataTypeTogglesDisabled_]]"
             aria-labelledby="osAppsCheckboxLabel">
         </cr-toggle>
       </div>
 
       <div class="list-item" hidden="[[!osSyncPrefs.osPreferencesRegistered]]">
         <div id="osSettingsCheckboxLabel"
-            label-disabled$="[[isDataTypeToggleDisabled_(
-                osSyncFeatureEnabled,
-                osSyncPrefs.syncAllOsTypes,
-                osSyncPrefs.osPreferencesEnforced)]]">
+            label-disabled$="[[areDataTypeTogglesDisabled_]]">
           $i18n{syncOsSettingsCheckboxLabel}
         </div>
         <cr-toggle id="osPreferencesControl"
             checked="{{osSyncPrefs.osPreferencesSynced}}"
             on-change="onSingleSyncDataTypeChanged_"
-            disabled="[[isDataTypeToggleDisabled_(
-                osSyncFeatureEnabled,
-                osSyncPrefs.syncAllOsTypes,
-                osSyncPrefs.osPreferencesEnforced)]]"
+            disabled="[[areDataTypeTogglesDisabled_]]"
             aria-labelledby="osSettingsCheckboxLabel">
         </cr-toggle>
       </div>
 
-      <div class="list-item" hidden="[[!osSyncPrefs.printersRegistered]]">
-        <div id="printersCheckboxLabel"
-            label-disabled$="[[isDataTypeToggleDisabled_(
-                osSyncFeatureEnabled,
-                osSyncPrefs.syncAllOsTypes,
-                osSyncPrefs.printersEnforced)]]">
-          $i18n{syncPrintersCheckboxLabel}
-        </div>
-        <cr-toggle checked="{{osSyncPrefs.printersSynced}}"
-            on-change="onSingleSyncDataTypeChanged_"
-            disabled="[[isDataTypeToggleDisabled_(
-                osSyncFeatureEnabled,
-                osSyncPrefs.syncAllOsTypes,
-                osSyncPrefs.printersEnforced)]]"
-            aria-labelledby="printersCheckboxLabel">
-        </cr-toggle>
-      </div>
-
       <div class="list-item"
            hidden="[[!osSyncPrefs.wifiConfigurationsRegistered]]">
         <div id="wifiConfigurationsCheckboxLabel"
-            label-disabled$="[[isDataTypeToggleDisabled_(
-                osSyncFeatureEnabled,
-                osSyncPrefs.syncAllOsTypes,
-                osSyncPrefs.wifiConfigurationsEnforced)]]">
+            label-disabled$="[[areDataTypeTogglesDisabled_]]">
           $i18n{wifiConfigurationsCheckboxLabel}
         </div>
         <cr-toggle checked="{{osSyncPrefs.wifiConfigurationsSynced}}"
             on-change="onSingleSyncDataTypeChanged_"
-            disabled="[[isDataTypeToggleDisabled_(
-                osSyncFeatureEnabled,
-                osSyncPrefs.syncAllOsTypes,
-                osSyncPrefs.wifiConfigurationsEnforced)]]"
+            disabled="[[areDataTypeTogglesDisabled_]]"
             aria-labelledby="wifiConfigurationsCheckboxLabel">
         </cr-toggle>
       </div>
diff --git a/chrome/browser/resources/settings/chromeos/os_people_page/os_sync_controls.js b/chrome/browser/resources/settings/chromeos/os_people_page/os_sync_controls.js
index 7870d1c6..6c590d7 100644
--- a/chrome/browser/resources/settings/chromeos/os_people_page/os_sync_controls.js
+++ b/chrome/browser/resources/settings/chromeos/os_people_page/os_sync_controls.js
@@ -12,7 +12,6 @@
 const SyncPrefsIndividualDataTypes = [
   'osAppsSynced',
   'osPreferencesSynced',
-  'printersSynced',
   'wifiConfigurationsSynced',
 ];
 
@@ -50,6 +49,14 @@
      * @type {settings.OsSyncPrefs|undefined}
      */
     osSyncPrefs: Object,
+
+    /** @private */
+    areDataTypeTogglesDisabled_: {
+      type: Boolean,
+      value: true,
+      computed: `computeDataTypeTogglesDisabled_(osSyncFeatureEnabled,
+          osSyncPrefs.syncAllOsTypes)`,
+    },
   },
 
   /** @private {?settings.OsSyncBrowserProxy} */
@@ -161,14 +168,12 @@
   },
 
   /**
-   * @param {boolean} syncFeatureEnabled
-   * @param {boolean} syncAllOsTypes
-   * @param {boolean} enforced
-   * @return {boolean} Whether a sync data type toggle should be disabled.
+   * @return {boolean} Whether the sync data type toggles should be disabled.
+   * @private
    */
-  isDataTypeToggleDisabled_: function(
-      syncFeatureEnabled, syncAllOsTypes, enforced) {
-    return !syncFeatureEnabled || syncAllOsTypes || !!enforced;
+  computeDataTypeTogglesDisabled_: function() {
+    return !this.osSyncFeatureEnabled ||
+        (this.osSyncPrefs !== undefined && this.osSyncPrefs.syncAllOsTypes);
   },
 
   /**
diff --git a/chrome/browser/resources/settings/chromeos/os_settings_page/os_settings_page.html b/chrome/browser/resources/settings/chromeos/os_settings_page/os_settings_page.html
index 1f553b62..8f5f85b 100644
--- a/chrome/browser/resources/settings/chromeos/os_settings_page/os_settings_page.html
+++ b/chrome/browser/resources/settings/chromeos/os_settings_page/os_settings_page.html
@@ -15,12 +15,12 @@
 <link rel="import" href="../../settings_page_css.html">
 <link rel="import" href="../../android_apps_page/android_apps_browser_proxy.html">
 <link rel="import" href="../../android_apps_page/android_apps_page.html">
-<link rel="import" href="../../bluetooth_page/bluetooth_page.html">
-<link rel="import" href="../../crostini_page/crostini_page.html">
-<link rel="import" href="../../plugin_vm_page/plugin_vm_page.html">
+<link rel="import" href="../bluetooth_page/bluetooth_page.html">
+<link rel="import" href="../crostini_page/crostini_page.html">
+<link rel="import" href="../plugin_vm_page/plugin_vm_page.html">
 <link rel="import" href="../../prefs/prefs_behavior.html">
 <link rel="import" href="../../device_page/device_page.html">
-<link rel="import" href="../../internet_page/internet_page.html">
+<link rel="import" href="../internet_page/internet_page.html">
 <link rel="import" href="../../multidevice_page/multidevice_page.html">
 
 <dom-module id="os-settings-page">
diff --git a/chrome/browser/resources/settings/plugin_vm_page/BUILD.gn b/chrome/browser/resources/settings/chromeos/plugin_vm_page/BUILD.gn
similarity index 92%
rename from chrome/browser/resources/settings/plugin_vm_page/BUILD.gn
rename to chrome/browser/resources/settings/chromeos/plugin_vm_page/BUILD.gn
index 4f0b8f1b..764cb05 100644
--- a/chrome/browser/resources/settings/plugin_vm_page/BUILD.gn
+++ b/chrome/browser/resources/settings/chromeos/plugin_vm_page/BUILD.gn
@@ -21,7 +21,7 @@
 
 js_library("plugin_vm_page") {
   deps = [
-    "..:route",
+    "../..:route",
     "//ui/webui/resources/js:i18n_behavior",
   ]
   externs_list = [ "$externs_path/settings_private.js" ]
@@ -30,12 +30,12 @@
 js_library("plugin_vm_shared_paths") {
   deps = [
     ":plugin_vm_browser_proxy",
-    "..:route",
+    "../..:route",
   ]
 }
 
 js_library("plugin_vm_subpage") {
   deps = [
-    "..:route",
+    "../..:route",
   ]
 }
diff --git a/chrome/browser/resources/settings/plugin_vm_page/plugin_vm_browser_proxy.html b/chrome/browser/resources/settings/chromeos/plugin_vm_page/plugin_vm_browser_proxy.html
similarity index 100%
rename from chrome/browser/resources/settings/plugin_vm_page/plugin_vm_browser_proxy.html
rename to chrome/browser/resources/settings/chromeos/plugin_vm_page/plugin_vm_browser_proxy.html
diff --git a/chrome/browser/resources/settings/plugin_vm_page/plugin_vm_browser_proxy.js b/chrome/browser/resources/settings/chromeos/plugin_vm_page/plugin_vm_browser_proxy.js
similarity index 100%
rename from chrome/browser/resources/settings/plugin_vm_page/plugin_vm_browser_proxy.js
rename to chrome/browser/resources/settings/chromeos/plugin_vm_page/plugin_vm_browser_proxy.js
diff --git a/chrome/browser/resources/settings/plugin_vm_page/plugin_vm_page.html b/chrome/browser/resources/settings/chromeos/plugin_vm_page/plugin_vm_page.html
similarity index 86%
rename from chrome/browser/resources/settings/plugin_vm_page/plugin_vm_page.html
rename to chrome/browser/resources/settings/chromeos/plugin_vm_page/plugin_vm_page.html
index da63fe19..e8bc6604 100644
--- a/chrome/browser/resources/settings/plugin_vm_page/plugin_vm_page.html
+++ b/chrome/browser/resources/settings/chromeos/plugin_vm_page/plugin_vm_page.html
@@ -2,10 +2,10 @@
 
 <link rel="import" href="chrome://resources/cr_elements/cr_link_row/cr_link_row.html">
 <link rel="import" href="chrome://resources/html/i18n_behavior.html">
-<link rel="import" href="../i18n_setup.html">
-<link rel="import" href="../settings_page/settings_animated_pages.html">
-<link rel="import" href="../settings_page/settings_subpage.html">
-<link rel="import" href="../settings_shared_css.html">
+<link rel="import" href="../../i18n_setup.html">
+<link rel="import" href="../../settings_page/settings_animated_pages.html">
+<link rel="import" href="../../settings_page/settings_subpage.html">
+<link rel="import" href="../../settings_shared_css.html">
 <link rel="import" href="plugin_vm_shared_paths.html">
 <link rel="import" href="plugin_vm_subpage.html">
 
diff --git a/chrome/browser/resources/settings/plugin_vm_page/plugin_vm_page.js b/chrome/browser/resources/settings/chromeos/plugin_vm_page/plugin_vm_page.js
similarity index 100%
rename from chrome/browser/resources/settings/plugin_vm_page/plugin_vm_page.js
rename to chrome/browser/resources/settings/chromeos/plugin_vm_page/plugin_vm_page.js
diff --git a/chrome/browser/resources/settings/plugin_vm_page/plugin_vm_shared_paths.html b/chrome/browser/resources/settings/chromeos/plugin_vm_page/plugin_vm_shared_paths.html
similarity index 95%
rename from chrome/browser/resources/settings/plugin_vm_page/plugin_vm_shared_paths.html
rename to chrome/browser/resources/settings/chromeos/plugin_vm_page/plugin_vm_shared_paths.html
index 25e651ce2..a0e696f 100644
--- a/chrome/browser/resources/settings/plugin_vm_page/plugin_vm_shared_paths.html
+++ b/chrome/browser/resources/settings/chromeos/plugin_vm_page/plugin_vm_shared_paths.html
@@ -2,7 +2,7 @@
 
 <link rel="import" href="chrome://resources/cr_elements/cr_icon_button/cr_icon_button.html">
 <link rel="import" href="plugin_vm_browser_proxy.html">
-<link rel="import" href="../settings_shared_css.html">
+<link rel="import" href="../../settings_shared_css.html">
 
 <dom-module id="settings-plugin-vm-shared-paths">
   <template>
diff --git a/chrome/browser/resources/settings/plugin_vm_page/plugin_vm_shared_paths.js b/chrome/browser/resources/settings/chromeos/plugin_vm_page/plugin_vm_shared_paths.js
similarity index 100%
rename from chrome/browser/resources/settings/plugin_vm_page/plugin_vm_shared_paths.js
rename to chrome/browser/resources/settings/chromeos/plugin_vm_page/plugin_vm_shared_paths.js
diff --git a/chrome/browser/resources/settings/plugin_vm_page/plugin_vm_subpage.html b/chrome/browser/resources/settings/chromeos/plugin_vm_page/plugin_vm_subpage.html
similarity index 86%
rename from chrome/browser/resources/settings/plugin_vm_page/plugin_vm_subpage.html
rename to chrome/browser/resources/settings/chromeos/plugin_vm_page/plugin_vm_subpage.html
index 4a99bc09..395abb3 100644
--- a/chrome/browser/resources/settings/plugin_vm_page/plugin_vm_subpage.html
+++ b/chrome/browser/resources/settings/chromeos/plugin_vm_page/plugin_vm_subpage.html
@@ -1,8 +1,8 @@
 <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="../settings_shared_css.html">
-<link rel="import" href="../controls/settings_toggle_button.html">
+<link rel="import" href="../../settings_shared_css.html">
+<link rel="import" href="../../controls/settings_toggle_button.html">
 
 <dom-module id="settings-plugin-vm-subpage">
   <template>
diff --git a/chrome/browser/resources/settings/plugin_vm_page/plugin_vm_subpage.js b/chrome/browser/resources/settings/chromeos/plugin_vm_page/plugin_vm_subpage.js
similarity index 100%
rename from chrome/browser/resources/settings/plugin_vm_page/plugin_vm_subpage.js
rename to chrome/browser/resources/settings/chromeos/plugin_vm_page/plugin_vm_subpage.js
diff --git a/chrome/browser/resources/settings/clear_browsing_data_dialog/BUILD.gn b/chrome/browser/resources/settings/clear_browsing_data_dialog/BUILD.gn
index 42b76c66..1c2cefee 100644
--- a/chrome/browser/resources/settings/clear_browsing_data_dialog/BUILD.gn
+++ b/chrome/browser/resources/settings/clear_browsing_data_dialog/BUILD.gn
@@ -22,7 +22,8 @@
 js_library("clear_browsing_data_dialog") {
   deps = [
     ":clear_browsing_data_browser_proxy",
-    "../device_page:keyboard",
+    "..:route",
+    "../controls:settings_dropdown_menu",
     "../people_page:sync_browser_proxy",
     "//third_party/polymer/v1_0/components-chromium/iron-pages:iron-pages-extracted",
     "//third_party/polymer/v1_0/components-chromium/iron-resizable-behavior:iron-resizable-behavior-extracted",
diff --git a/chrome/browser/resources/settings/device_page/BUILD.gn b/chrome/browser/resources/settings/device_page/BUILD.gn
index dde049d22..2abcbe19 100644
--- a/chrome/browser/resources/settings/device_page/BUILD.gn
+++ b/chrome/browser/resources/settings/device_page/BUILD.gn
@@ -40,7 +40,7 @@
 js_library("pointers") {
   deps = [
     ":device_page_browser_proxy",
-    "../chromeos/localized_string_with_link:localized_string_with_link",
+    "../chromeos/localized_link:localized_link",
     "../controls:settings_toggle_button",
   ]
 }
@@ -143,7 +143,7 @@
   deps = [
     "..:route",
     "..:route_origin_behavior",
-    "../chromeos/localized_string_with_link:localized_string_with_link",
+    "../chromeos/localized_link:localized_link",
     "//ui/webui/resources/js:assert",
     "//ui/webui/resources/js:load_time_data",
     "//ui/webui/resources/js:web_ui_listener_behavior",
diff --git a/chrome/browser/resources/settings/device_page/pointers.html b/chrome/browser/resources/settings/device_page/pointers.html
index 5a37293..9304c57 100644
--- a/chrome/browser/resources/settings/device_page/pointers.html
+++ b/chrome/browser/resources/settings/device_page/pointers.html
@@ -2,7 +2,7 @@
 
 <link rel="import" href="chrome://resources/cr_elements/cr_radio_button/cr_radio_button.html">
 <link rel="import" href="chrome://resources/cr_elements/shared_vars_css.html">
-<link rel="import" href="../chromeos/localized_string_with_link/localized_string_with_link.html">
+<link rel="import" href="../chromeos/localized_link/localized_link.html">
 <link rel="import" href="../controls/settings_radio_group.html">
 <link rel="import" href="../controls/settings_slider.html">
 <link rel="import" href="../controls/settings_toggle_button.html">
@@ -101,10 +101,10 @@
               $i18n{traditionalScrollLabel}
             </cr-radio-button>
             <cr-radio-button name="true">
-              <localized-string-with-link
+              <settings-localized-link
                   localized-string="$i18n{naturalScrollLabel}"
                   link-url="$i18n{naturalScrollLearnMoreLink}">
-              </localized-string-with-link>
+              </settings-localized-link>
             </cr-radio-button>
           </settings-radio-group>
         </div>
diff --git a/chrome/browser/resources/settings/device_page/storage_external.html b/chrome/browser/resources/settings/device_page/storage_external.html
index 59a6102c..143a9f2 100644
--- a/chrome/browser/resources/settings/device_page/storage_external.html
+++ b/chrome/browser/resources/settings/device_page/storage_external.html
@@ -3,7 +3,7 @@
 <link rel="import" href="chrome://resources/html/assert.html">
 <link rel="import" href="chrome://resources/html/i18n_behavior.html">
 <link rel="import" href="storage_external_entry.html">
-<link rel="import" href="../chromeos/localized_string_with_link/localized_string_with_link.html">
+<link rel="import" href="../chromeos/localized_link/localized_link.html">
 <link rel="import" href="../prefs/prefs.html">
 <link rel="import" href="../settings_shared_css.html">
 
@@ -16,10 +16,10 @@
 
     </style>
     <div class="settings-box first">
-      <localized-string-with-link
+      <settings-localized-link
           localized-string=
               "[[i18nAdvanced('storageAndroidAppsExternalDrivesNote')]]">
-      </localized-string-with-link>
+      </settings-localized-link>
     </div>
     <h2>[[computeStorageListHeader_(externalStorages_)]]</h2>
     <iron-list id="removableDevices" preserve-focus
diff --git a/chrome/browser/resources/settings/lazy_load.html b/chrome/browser/resources/settings/lazy_load.html
index 0e2daeb..57ed5ea 100644
--- a/chrome/browser/resources/settings/lazy_load.html
+++ b/chrome/browser/resources/settings/lazy_load.html
@@ -37,10 +37,6 @@
   <link rel="import" href="printing_page/printing_page.html">
   <link rel="import" href="reset_page/reset_page.html">
 
-<if expr="chromeos">
-  <link rel="import" href="date_time_page/date_time_page.html">
-</if>
-
 <if expr="not chromeos">
   <link rel="import" href="system_page/system_page.html">
 </if>
diff --git a/chrome/browser/resources/settings/os_settings_resources.grd b/chrome/browser/resources/settings/os_settings_resources.grd
index 6b85a575..b70faaa 100644
--- a/chrome/browser/resources/settings/os_settings_resources.grd
+++ b/chrome/browser/resources/settings/os_settings_resources.grd
@@ -12,11 +12,11 @@
   </outputs>
   <release seq="1">
     <structures>
-      <structure name="IDR_OS_SETTINGS_LOCALIZED_STRING_WITH_LINK_JS"
-                 file="chromeos/localized_string_with_link/localized_string_with_link.js"
+      <structure name="IDR_OS_SETTINGS_LOCALIZED_LINK_JS"
+                 file="chromeos/localized_link/localized_link.js"
                  type="chrome_html" />
-      <structure name="IDR_OS_SETTINGS_LOCALIZED_STRING_WITH_LINK_HTML"
-                 file="chromeos/localized_string_with_link/localized_string_with_link.html"
+      <structure name="IDR_OS_SETTINGS_LOCALIZED_LINK_HTML"
+                 file="chromeos/localized_link/localized_link.html"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_A11Y_PAGE_JS"
                  file="chromeos/os_a11y_page/os_a11y_page.js"
@@ -1165,143 +1165,143 @@
                  preprocess="true"
                  allowexternalscript="true" />
       <structure name="IDR_OS_SETTINGS_CROSTINI_PAGE_HTML"
-                 file="crostini_page/crostini_page.html"
+                 file="chromeos/crostini_page/crostini_page.html"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_CROSTINI_PAGE_JS"
-                 file="crostini_page/crostini_page.js"
+                 file="chromeos/crostini_page/crostini_page.js"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_CROSTINI_SUBPAGE_HTML"
-                 file="crostini_page/crostini_subpage.html"
+                 file="chromeos/crostini_page/crostini_subpage.html"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_CROSTINI_SUBPAGE_JS"
-                 file="crostini_page/crostini_subpage.js"
+                 file="chromeos/crostini_page/crostini_subpage.js"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_CROSTINI_ARC_ADB_HTML"
-                 file="crostini_page/crostini_arc_adb.html"
+                 file="chromeos/crostini_page/crostini_arc_adb.html"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_CROSTINI_ARC_ADB_JS"
-                 file="crostini_page/crostini_arc_adb.js"
+                 file="chromeos/crostini_page/crostini_arc_adb.js"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_CROSTINI_ARC_ADB_CONFIRMATION_DIALOG_HTML"
-                 file="crostini_page/crostini_arc_adb_confirmation_dialog.html"
+                 file="chromeos/crostini_page/crostini_arc_adb_confirmation_dialog.html"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_CROSTINI_ARC_ADB_CONFIRMATION_DIALOG_JS"
-                 file="crostini_page/crostini_arc_adb_confirmation_dialog.js"
+                 file="chromeos/crostini_page/crostini_arc_adb_confirmation_dialog.js"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_CROSTINI_EXPORT_IMPORT_HTML"
-                 file="crostini_page/crostini_export_import.html"
+                 file="chromeos/crostini_page/crostini_export_import.html"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_CROSTINI_EXPORT_IMPORT_JS"
-                 file="crostini_page/crostini_export_import.js"
+                 file="chromeos/crostini_page/crostini_export_import.js"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_CROSTINI_SHARED_PATHS_HTML"
-                 file="crostini_page/crostini_shared_paths.html"
+                 file="chromeos/crostini_page/crostini_shared_paths.html"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_CROSTINI_SHARED_PATHS_JS"
-                 file="crostini_page/crostini_shared_paths.js"
+                 file="chromeos/crostini_page/crostini_shared_paths.js"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_CROSTINI_SHARED_USB_DEVICES_HTML"
-                 file="crostini_page/crostini_shared_usb_devices.html"
+                 file="chromeos/crostini_page/crostini_shared_usb_devices.html"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_CROSTINI_SHARED_USB_DEVICES_JS"
-                 file="crostini_page/crostini_shared_usb_devices.js"
+                 file="chromeos/crostini_page/crostini_shared_usb_devices.js"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_CROSTINI_BROWSER_PROXY_JS"
-                 file="crostini_page/crostini_browser_proxy.js"
+                 file="chromeos/crostini_page/crostini_browser_proxy.js"
                  type="chrome_html"
                  preprocess="true"
                  allowexternalscript="true" />
       <structure name="IDR_OS_SETTINGS_CROSTINI_BROWSER_PROXY_HTML"
-                 file="crostini_page/crostini_browser_proxy.html"
+                 file="chromeos/crostini_page/crostini_browser_proxy.html"
                  type="chrome_html"
                  preprocess="true"
                  allowexternalscript="true" />
       <structure name="IDR_SETTINGS_CROSTINI_IMPORT_CONFIRMATION_DIALOG_HTML"
-                 file="crostini_page/crostini_import_confirmation_dialog.html"
+                 file="chromeos/crostini_page/crostini_import_confirmation_dialog.html"
                  type="chrome_html" />
       <structure name="IDR_SETTINGS_CROSTINI_IMPORT_CONFIRMATION_DIALOG_JS"
-                 file="crostini_page/crostini_import_confirmation_dialog.js"
+                 file="chromeos/crostini_page/crostini_import_confirmation_dialog.js"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_BLUETOOTH_DEVICE_LIST_ITEM_HTML"
-                 file="bluetooth_page/bluetooth_device_list_item.html"
+                 file="chromeos/bluetooth_page/bluetooth_device_list_item.html"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_BLUETOOTH_DEVICE_LIST_ITEM_JS"
-                 file="bluetooth_page/bluetooth_device_list_item.js"
+                 file="chromeos/bluetooth_page/bluetooth_device_list_item.js"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_BLUETOOTH_PAGE_HTML"
-                 file="bluetooth_page/bluetooth_page.html"
+                 file="chromeos/bluetooth_page/bluetooth_page.html"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_BLUETOOTH_PAGE_JS"
-                 file="bluetooth_page/bluetooth_page.js"
+                 file="chromeos/bluetooth_page/bluetooth_page.js"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_BLUETOOTH_SUBPAGE_HTML"
-                 file="bluetooth_page/bluetooth_subpage.html"
+                 file="chromeos/bluetooth_page/bluetooth_subpage.html"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_BLUETOOTH_SUBPAGE_JS"
-                 file="bluetooth_page/bluetooth_subpage.js"
+                 file="chromeos/bluetooth_page/bluetooth_subpage.js"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_DATE_TIME_PAGE_HTML"
-                 file="date_time_page/date_time_page.html"
+                 file="chromeos/date_time_page/date_time_page.html"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_DATE_TIME_PAGE_JS"
-                 file="date_time_page/date_time_page.js"
+                 file="chromeos/date_time_page/date_time_page.js"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_DATE_TIME_TYPES_HTML"
-                 file="date_time_page/date_time_types.html"
+                 file="chromeos/date_time_page/date_time_types.html"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_DATE_TIME_TYPES_JS"
-                 file="date_time_page/date_time_types.js"
+                 file="chromeos/date_time_page/date_time_types.js"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_TIMEZONE_SELECTOR_HTML"
-                 file="date_time_page/timezone_selector.html"
+                 file="chromeos/date_time_page/timezone_selector.html"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_TIMEZONE_SELECTOR_JS"
-                 file="date_time_page/timezone_selector.js"
+                 file="chromeos/date_time_page/timezone_selector.js"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_TIMEZONE_SUBPAGE_HTML"
-                 file="date_time_page/timezone_subpage.html"
+                 file="chromeos/date_time_page/timezone_subpage.html"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_TIMEZONE_SUBPAGE_JS"
-                 file="date_time_page/timezone_subpage.js"
+                 file="chromeos/date_time_page/timezone_subpage.js"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_INTERNET_CONFIG_HTML"
-                 file="internet_page/internet_config.html"
+                 file="chromeos/internet_page/internet_config.html"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_INTERNET_CONFIG_JS"
-                 file="internet_page/internet_config.js"
+                 file="chromeos/internet_page/internet_config.js"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_INTERNET_DETAIL_PAGE_HTML"
-                 file="internet_page/internet_detail_page.html"
+                 file="chromeos/internet_page/internet_detail_page.html"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_INTERNET_DETAIL_PAGE_JS"
-                 file="internet_page/internet_detail_page.js"
+                 file="chromeos/internet_page/internet_detail_page.js"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_INTERNET_KNOWN_NETWORKS_PAGE_HTML"
-                 file="internet_page/internet_known_networks_page.html"
+                 file="chromeos/internet_page/internet_known_networks_page.html"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_INTERNET_KNOWN_NETWORKS_PAGE_JS"
-                 file="internet_page/internet_known_networks_page.js"
+                 file="chromeos/internet_page/internet_known_networks_page.js"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_INTERNET_PAGE_BROWSER_PROXY_HTML"
-                 file="internet_page/internet_page_browser_proxy.html"
+                 file="chromeos/internet_page/internet_page_browser_proxy.html"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_INTERNET_PAGE_BROWSER_PROXY_JS"
-                 file="internet_page/internet_page_browser_proxy.js"
+                 file="chromeos/internet_page/internet_page_browser_proxy.js"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_INTERNET_PAGE_HTML"
-                 file="internet_page/internet_page.html"
+                 file="chromeos/internet_page/internet_page.html"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_INTERNET_PAGE_JS"
-                 file="internet_page/internet_page.js"
+                 file="chromeos/internet_page/internet_page.js"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_INTERNET_SHARED_CSS_HTML"
-                 file="internet_page/internet_shared_css.html"
+                 file="chromeos/internet_page/internet_shared_css.html"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_INTERNET_SUBPAGE_HTML"
-                 file="internet_page/internet_subpage.html"
+                 file="chromeos/internet_page/internet_subpage.html"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_INTERNET_SUBPAGE_JS"
-                 file="internet_page/internet_subpage.js"
+                 file="chromeos/internet_page/internet_subpage.js"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_MULTIDEVICE_BROWSER_PROXY_HTML"
                  file="multidevice_page/multidevice_browser_proxy.html"
@@ -1364,28 +1364,28 @@
                  file="multidevice_page/multidevice_tether_item.js"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_NETWORK_PROXY_SECTION_HTML"
-                 file="internet_page/network_proxy_section.html"
+                 file="chromeos/internet_page/network_proxy_section.html"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_NETWORK_PROXY_SECTION_JS"
-                 file="internet_page/network_proxy_section.js"
+                 file="chromeos/internet_page/network_proxy_section.js"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_NETWORK_SUMMARY_HTML"
-                 file="internet_page/network_summary.html"
+                 file="chromeos/internet_page/network_summary.html"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_NETWORK_SUMMARY_JS"
-                 file="internet_page/network_summary.js"
+                 file="chromeos/internet_page/network_summary.js"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_NETWORK_SUMMARY_ITEM_HTML"
-                 file="internet_page/network_summary_item.html"
+                 file="chromeos/internet_page/network_summary_item.html"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_NETWORK_SUMMARY_ITEM_JS"
-                 file="internet_page/network_summary_item.js"
+                 file="chromeos/internet_page/network_summary_item.js"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_TETHER_CONNECTION_DIALOG_HTML"
-                 file="internet_page/tether_connection_dialog.html"
+                 file="chromeos/internet_page/tether_connection_dialog.html"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_TETHER_CONNECTION_DIALOG_JS"
-                 file="internet_page/tether_connection_dialog.js"
+                 file="chromeos/internet_page/tether_connection_dialog.js"
                  type="chrome_html" />
       <structure name="IDR_SETTINGS_PARENTAL_CONTROLS_BROWSER_PROXY_HTML"
                  file="parental_controls_page/parental_controls_browser_proxy.html"
@@ -1496,29 +1496,29 @@
                  file="people_page/fingerprint_browser_proxy.html"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_PLUGIN_VM_PAGE_HTML"
-                 file="plugin_vm_page/plugin_vm_page.html"
+                 file="chromeos/plugin_vm_page/plugin_vm_page.html"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_PLUGIN_VM_PAGE_JS"
-                 file="plugin_vm_page/plugin_vm_page.js"
+                 file="chromeos/plugin_vm_page/plugin_vm_page.js"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_PLUGIN_VM_SHARED_PATHS_HTML"
-                 file="plugin_vm_page/plugin_vm_shared_paths.html"
+                 file="chromeos/plugin_vm_page/plugin_vm_shared_paths.html"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_PLUGIN_VM_SHARED_PATHS_JS"
-                 file="plugin_vm_page/plugin_vm_shared_paths.js"
+                 file="chromeos/plugin_vm_page/plugin_vm_shared_paths.js"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_PLUGIN_VM_SUBPAGE_HTML"
-                 file="plugin_vm_page/plugin_vm_subpage.html"
+                 file="chromeos/plugin_vm_page/plugin_vm_subpage.html"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_PLUGIN_VM_SUBPAGE_JS"
-                 file="plugin_vm_page/plugin_vm_subpage.js"
+                 file="chromeos/plugin_vm_page/plugin_vm_subpage.js"
                  type="chrome_html" />
       <structure name="IDR_OS_SETTINGS_PLUGIN_VM_BROWSER_PROXY_JS"
-                 file="plugin_vm_page/plugin_vm_browser_proxy.js"
+                 file="chromeos/plugin_vm_page/plugin_vm_browser_proxy.js"
                  type="chrome_html"
                  allowexternalscript="true" />
       <structure name="IDR_OS_SETTINGS_PLUGIN_VM_BROWSER_PROXY_HTML"
-                 file="plugin_vm_page/plugin_vm_browser_proxy.html"
+                 file="chromeos/plugin_vm_page/plugin_vm_browser_proxy.html"
                  type="chrome_html"
                  allowexternalscript="true" />
       <structure name="IDR_OS_SETTINGS_USERS_PAGE_ADD_USER_DIALOG_JS"
diff --git a/chrome/browser/resources/settings/people_page/sync_browser_proxy.js b/chrome/browser/resources/settings/people_page/sync_browser_proxy.js
index e9043c8..34f3a96 100644
--- a/chrome/browser/resources/settings/people_page/sync_browser_proxy.js
+++ b/chrome/browser/resources/settings/people_page/sync_browser_proxy.js
@@ -63,41 +63,32 @@
  * C++ and JS. Its naming and structure is not optimal, but changing it would
  * require changes to the C++ handler, which is already functional.
  * @typedef {{
- *   appsEnforced: boolean,
  *   appsRegistered: boolean,
  *   appsSynced: boolean,
- *   autofillEnforced: boolean,
  *   autofillRegistered: boolean,
  *   autofillSynced: boolean,
- *   bookmarksEnforced: boolean,
  *   bookmarksRegistered: boolean,
  *   bookmarksSynced: boolean,
  *   encryptAllData: boolean,
  *   encryptAllDataAllowed: boolean,
  *   enterPassphraseBody: (string|undefined),
- *   extensionsEnforced: boolean,
  *   extensionsRegistered: boolean,
  *   extensionsSynced: boolean,
  *   fullEncryptionBody: string,
  *   passphrase: (string|undefined),
  *   passphraseRequired: boolean,
- *   passwordsEnforced: boolean,
  *   passwordsRegistered: boolean,
  *   passwordsSynced: boolean,
  *   paymentsIntegrationEnabled: boolean,
- *   preferencesEnforced: boolean,
  *   preferencesRegistered: boolean,
  *   preferencesSynced: boolean,
  *   setNewPassphrase: (boolean|undefined),
  *   syncAllDataTypes: boolean,
- *   tabsEnforced: boolean,
  *   tabsRegistered: boolean,
  *   tabsSynced: boolean,
- *   themesEnforced: boolean,
  *   themesRegistered: boolean,
  *   themesSynced: boolean,
  *   trustedVaultKeysRequired: boolean,
- *   typedUrlsEnforced: boolean,
  *   typedUrlsRegistered: boolean,
  *   typedUrlsSynced: boolean,
  * }}
diff --git a/chrome/browser/resources/settings/people_page/sync_controls.html b/chrome/browser/resources/settings/people_page/sync_controls.html
index 2946664..383a705 100644
--- a/chrome/browser/resources/settings/people_page/sync_controls.html
+++ b/chrome/browser/resources/settings/people_page/sync_controls.html
@@ -41,8 +41,7 @@
         </div>
         <cr-toggle checked="{{syncPrefs.appsSynced}}"
             on-change="onSingleSyncDataTypeChanged_"
-            disabled="[[shouldSyncCheckboxBeDisabled_(
-                syncPrefs.syncAllDataTypes, syncPrefs.appsEnforced)]]"
+            disabled="[[syncPrefs.syncAllDataTypes]]"
             aria-labelledby="appCheckboxLabel">
         </cr-toggle>
       </div>
@@ -53,8 +52,7 @@
         </div>
         <cr-toggle checked="{{syncPrefs.bookmarksSynced}}"
             on-change="onSingleSyncDataTypeChanged_"
-            disabled="[[shouldSyncCheckboxBeDisabled_(
-                syncPrefs.syncAllDataTypes, syncPrefs.bookmarksEnforced)]]"
+            disabled="[[syncPrefs.syncAllDataTypes]]"
             aria-labelledby="bookmarksCheckboxLabel">
         </cr-toggle>
       </div>
@@ -65,8 +63,7 @@
         </div>
         <cr-toggle checked="{{syncPrefs.extensionsSynced}}"
             on-change="onSingleSyncDataTypeChanged_"
-            disabled="[[shouldSyncCheckboxBeDisabled_(
-                syncPrefs.syncAllDataTypes, syncPrefs.extensionsEnforced)]]"
+            disabled="[[syncPrefs.syncAllDataTypes]]"
             aria-labelledby="extensionsCheckboxLabel">
         </cr-toggle>
       </div>
@@ -80,8 +77,7 @@
         <cr-toggle id="historyToggle"
             checked="{{syncPrefs.typedUrlsSynced}}"
             on-change="onTypedUrlsDataTypeChanged_"
-            disabled="[[shouldSyncCheckboxBeDisabled_(
-                syncPrefs.syncAllDataTypes, syncPrefs.typedUrlsEnforced)]]"
+            disabled="[[syncPrefs.syncAllDataTypes]]"
             aria-labelledby="historyCheckboxLabel">
         </cr-toggle>
       </div>
@@ -92,9 +88,7 @@
         </div>
         <cr-toggle checked="{{syncPrefs.preferencesSynced}}"
             on-change="onSingleSyncDataTypeChanged_"
-            disabled="[[shouldSyncCheckboxBeDisabled_(
-                syncPrefs.syncAllDataTypes,
-                syncPrefs.preferencesEnforced)]]"
+            disabled="[[syncPrefs.syncAllDataTypes]]"
             aria-labelledby="settingsCheckboxLabel">
         </cr-toggle>
       </div>
@@ -105,8 +99,7 @@
         </div>
         <cr-toggle checked="{{syncPrefs.themesSynced}}"
             on-change="onSingleSyncDataTypeChanged_"
-            disabled="[[shouldSyncCheckboxBeDisabled_(
-                syncPrefs.syncAllDataTypes, syncPrefs.themesEnforced)]]"
+            disabled="[[syncPrefs.syncAllDataTypes]]"
             aria-labelledby="themesAndWallpapersCheckboxLabel">
         </cr-toggle>
       </div>
@@ -117,8 +110,7 @@
         </div>
         <cr-toggle checked="{{syncPrefs.tabsSynced}}"
             on-change="onSingleSyncDataTypeChanged_"
-            disabled="[[shouldSyncCheckboxBeDisabled_(
-                syncPrefs.syncAllDataTypes, syncPrefs.tabsEnforced)]]"
+            disabled="[[syncPrefs.syncAllDataTypes]]"
             aria-labelledby="openTabsCheckboxLabel">
         </cr-toggle>
       </div>
@@ -129,8 +121,7 @@
         </div>
         <cr-toggle checked="{{syncPrefs.passwordsSynced}}"
             on-change="onSingleSyncDataTypeChanged_"
-            disabled="[[shouldSyncCheckboxBeDisabled_(
-                syncPrefs.syncAllDataTypes, syncPrefs.passwordsEnforced)]]"
+            disabled="[[syncPrefs.syncAllDataTypes]]"
             aria-labelledby="passwordsCheckboxLabel">
         </cr-toggle>
       </div>
@@ -143,8 +134,7 @@
              Payments integration. -->
         <cr-toggle checked="{{syncPrefs.autofillSynced}}"
             on-change="onAutofillDataTypeChanged_"
-            disabled="[[shouldSyncCheckboxBeDisabled_(
-                syncPrefs.syncAllDataTypes, syncPrefs.autofillEnforced)]]"
+            disabled="[[syncPrefs.syncAllDataTypes]]"
             aria-labelledby="autofillCheckboxLabel">
         </cr-toggle>
       </div>
diff --git a/chrome/browser/resources/settings/people_page/sync_controls.js b/chrome/browser/resources/settings/people_page/sync_controls.js
index acccef1..37c61e18 100644
--- a/chrome/browser/resources/settings/people_page/sync_controls.js
+++ b/chrome/browser/resources/settings/people_page/sync_controls.js
@@ -151,15 +151,6 @@
 
   /**
    * @param {boolean} syncAllDataTypes
-   * @param {boolean} enforced
-   * @return {boolean} Whether the sync checkbox should be disabled.
-   */
-  shouldSyncCheckboxBeDisabled_: function(syncAllDataTypes, enforced) {
-    return syncAllDataTypes || enforced;
-  },
-
-  /**
-   * @param {boolean} syncAllDataTypes
    * @param {boolean} autofillSynced
    * @return {boolean} Whether the sync checkbox should be disabled.
    */
diff --git a/chrome/browser/resources/settings/settings_resources.grd b/chrome/browser/resources/settings/settings_resources.grd
index e6fb4e6..4335ae9 100644
--- a/chrome/browser/resources/settings/settings_resources.grd
+++ b/chrome/browser/resources/settings/settings_resources.grd
@@ -547,11 +547,11 @@
                    type="chrome_html" />
       </if>
       <if expr="chromeos">
-        <structure name="IDR_SETTINGS_LOCALIZED_STRING_WITH_LINK_JS"
-                   file="chromeos/localized_string_with_link/localized_string_with_link.js"
+        <structure name="IDR_SETTINGS_LOCALIZED_LINK_JS"
+                   file="chromeos/localized_link/localized_link.js"
                    type="chrome_html" />
-        <structure name="IDR_SETTINGS_LOCALIZED_STRING_WITH_LINK_HTML"
-                   file="chromeos/localized_string_with_link/localized_string_with_link.html"
+        <structure name="IDR_SETTINGS_LOCALIZED_LINK_HTML"
+                   file="chromeos/localized_link/localized_link.html"
                    type="chrome_html" />
         <structure name="IDR_SETTINGS_DEVICE_BROWSER_PROXY_HTML"
                    file="device_page/device_page_browser_proxy.html"
@@ -559,90 +559,6 @@
         <structure name="IDR_SETTINGS_DEVICE_BROWSER_PROXY_JS"
                    file="device_page/device_page_browser_proxy.js"
                    type="chrome_html" />
-        <structure name="IDR_SETTINGS_DEVICE_DISPLAY_HTML"
-                   file="device_page/display.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_DEVICE_DISPLAY_JS"
-                   file="device_page/display.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_DEVICE_DISPLAY_LAYOUT_HTML"
-                   file="device_page/display_layout.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_DEVICE_DISPLAY_LAYOUT_JS"
-                   file="device_page/display_layout.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_DEVICE_DISPLAY_OVERSCAN_DIALOG_HTML"
-                   file="device_page/display_overscan_dialog.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_DEVICE_DISPLAY_OVERSCAN_DIALOG_JS"
-                   file="device_page/display_overscan_dialog.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_DEVICE_KEYBOARD_HTML"
-                   file="device_page/keyboard.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_DEVICE_KEYBOARD_JS"
-                   file="device_page/keyboard.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_DEVICE_POWER_HTML"
-                   file="device_page/power.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_DEVICE_POWER_JS"
-                   file="device_page/power.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_DEVICE_STORAGE_HTML"
-                   file="device_page/storage.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_DEVICE_STORAGE_JS"
-                   file="device_page/storage.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_DEVICE_STORAGE_EXTERNAL_ENTRY_HTML"
-                   file="device_page/storage_external_entry.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_DEVICE_STORAGE_EXTERNAL_ENTRY_JS"
-                   file="device_page/storage_external_entry.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_DEVICE_STORAGE_EXTERNAL_HTML"
-                   file="device_page/storage_external.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_DEVICE_STORAGE_EXTERNAL_JS"
-                   file="device_page/storage_external.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_DEVICE_STYLUS_HTML"
-                   file="device_page/stylus.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_DEVICE_STYLUS_JS"
-                   file="device_page/stylus.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_DEVICE_PAGE_HTML"
-                   file="device_page/device_page.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_DEVICE_PAGE_JS"
-                   file="device_page/device_page.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_DEVICE_POINTERS_HTML"
-                   file="device_page/pointers.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_DEVICE_POINTERS_JS"
-                   file="device_page/pointers.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_DEVICE_DRAG_BEHAVIOR_HTML"
-                   file="device_page/drag_behavior.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_DEVICE_DRAG_BEHAVIOR_JS"
-                   file="device_page/drag_behavior.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_DEVICE_LAYOUT_BEHAVIOR_HTML"
-                   file="device_page/layout_behavior.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_DEVICE_LAYOUT_BEHAVIOR_JS"
-                   file="device_page/layout_behavior.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_DEVICE_NIGHT_LIGHT_SLIDER_HTML"
-                   file="device_page/night_light_slider.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_DEVICE_NIGHT_LIGHT_SLIDER_JS"
-                   file="device_page/night_light_slider.js"
-                   type="chrome_html" />
       </if>
       <structure name="IDR_SETTINGS_DOWNLOADS_BROWSER_PROXY_HTML"
                  file="downloads_page/downloads_browser_proxy.html"
@@ -1377,145 +1293,6 @@
                    type="chrome_html"
                    preprocess="true"
                    allowexternalscript="true" />
-        <structure name="IDR_SETTINGS_CROSTINI_PAGE_HTML"
-                   file="crostini_page/crostini_page.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_CROSTINI_PAGE_JS"
-                   file="crostini_page/crostini_page.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_CROSTINI_SUBPAGE_HTML"
-                   file="crostini_page/crostini_subpage.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_CROSTINI_SUBPAGE_JS"
-                   file="crostini_page/crostini_subpage.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_CROSTINI_ARC_ADB_HTML"
-                   file="crostini_page/crostini_arc_adb.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_CROSTINI_ARC_ADB_JS"
-                   file="crostini_page/crostini_arc_adb.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_CROSTINI_ARC_ADB_CONFIRMATION_DIALOG_HTML"
-                   file="crostini_page/crostini_arc_adb_confirmation_dialog.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_CROSTINI_ARC_ADB_CONFIRMATION_DIALOG_JS"
-                   file="crostini_page/crostini_arc_adb_confirmation_dialog.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_CROSTINI_EXPORT_IMPORT_HTML"
-                   file="crostini_page/crostini_export_import.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_CROSTINI_EXPORT_IMPORT_JS"
-                   file="crostini_page/crostini_export_import.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_CROSTINI_SHARED_PATHS_HTML"
-                   file="crostini_page/crostini_shared_paths.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_CROSTINI_SHARED_PATHS_JS"
-                   file="crostini_page/crostini_shared_paths.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_CROSTINI_SHARED_USB_DEVICES_HTML"
-                   file="crostini_page/crostini_shared_usb_devices.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_CROSTINI_SHARED_USB_DEVICES_JS"
-                   file="crostini_page/crostini_shared_usb_devices.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_CROSTINI_BROWSER_PROXY_JS"
-                   file="crostini_page/crostini_browser_proxy.js"
-                   type="chrome_html"
-                   preprocess="true"
-                   allowexternalscript="true" />
-        <structure name="IDR_SETTINGS_CROSTINI_BROWSER_PROXY_HTML"
-                   file="crostini_page/crostini_browser_proxy.html"
-                   type="chrome_html"
-                   preprocess="true"
-                   allowexternalscript="true" />
-        <structure name="IDR_SETTINGS_CROSTINI_IMPORT_CONFIRMATION_DIALOG_HTML"
-                   file="crostini_page/crostini_import_confirmation_dialog.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_CROSTINI_IMPORT_CONFIRMATION_DIALOG_JS"
-                   file="crostini_page/crostini_import_confirmation_dialog.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_BLUETOOTH_DEVICE_LIST_ITEM_HTML"
-                   file="bluetooth_page/bluetooth_device_list_item.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_BLUETOOTH_DEVICE_LIST_ITEM_JS"
-                   file="bluetooth_page/bluetooth_device_list_item.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_BLUETOOTH_PAGE_HTML"
-                   file="bluetooth_page/bluetooth_page.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_BLUETOOTH_PAGE_JS"
-                   file="bluetooth_page/bluetooth_page.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_BLUETOOTH_SUBPAGE_HTML"
-                   file="bluetooth_page/bluetooth_subpage.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_BLUETOOTH_SUBPAGE_JS"
-                   file="bluetooth_page/bluetooth_subpage.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_DATE_TIME_PAGE_HTML"
-                   file="date_time_page/date_time_page.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_DATE_TIME_PAGE_JS"
-                   file="date_time_page/date_time_page.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_DATE_TIME_TYPES_HTML"
-                   file="date_time_page/date_time_types.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_DATE_TIME_TYPES_JS"
-                   file="date_time_page/date_time_types.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_TIMEZONE_SELECTOR_HTML"
-                   file="date_time_page/timezone_selector.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_TIMEZONE_SELECTOR_JS"
-                   file="date_time_page/timezone_selector.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_TIMEZONE_SUBPAGE_HTML"
-                   file="date_time_page/timezone_subpage.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_TIMEZONE_SUBPAGE_JS"
-                   file="date_time_page/timezone_subpage.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_INTERNET_CONFIG_HTML"
-                   file="internet_page/internet_config.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_INTERNET_CONFIG_JS"
-                   file="internet_page/internet_config.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_INTERNET_DETAIL_PAGE_HTML"
-                   file="internet_page/internet_detail_page.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_INTERNET_DETAIL_PAGE_JS"
-                   file="internet_page/internet_detail_page.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_INTERNET_KNOWN_NETWORKS_PAGE_HTML"
-                   file="internet_page/internet_known_networks_page.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_INTERNET_KNOWN_NETWORKS_PAGE_JS"
-                   file="internet_page/internet_known_networks_page.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_INTERNET_PAGE_BROWSER_PROXY_HTML"
-                   file="internet_page/internet_page_browser_proxy.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_INTERNET_PAGE_BROWSER_PROXY_JS"
-                   file="internet_page/internet_page_browser_proxy.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_INTERNET_PAGE_HTML"
-                   file="internet_page/internet_page.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_INTERNET_PAGE_JS"
-                   file="internet_page/internet_page.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_INTERNET_SHARED_CSS_HTML"
-                   file="internet_page/internet_shared_css.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_INTERNET_SUBPAGE_HTML"
-                   file="internet_page/internet_subpage.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_INTERNET_SUBPAGE_JS"
-                   file="internet_page/internet_subpage.js"
-                   type="chrome_html" />
         <structure name="IDR_SETTINGS_MULTIDEVICE_BROWSER_PROXY_HTML"
                    file="multidevice_page/multidevice_browser_proxy.html"
                    type="chrome_html" />
@@ -1528,72 +1305,6 @@
         <structure name="IDR_SETTINGS_MULTIDEVICE_CONSTANTS_JS"
                    file="multidevice_page/multidevice_constants.js"
                    type="chrome_html" />
-        <structure name="IDR_SETTINGS_MULTIDEVICE_FEATURE_BEHAVIOR_HTML"
-                   file="multidevice_page/multidevice_feature_behavior.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_MULTIDEVICE_FEATURE_BEHAVIOR_JS"
-                   file="multidevice_page/multidevice_feature_behavior.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_MULTIDEVICE_FEATURE_ITEM_HTML"
-                   file="multidevice_page/multidevice_feature_item.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_MULTIDEVICE_FEATURE_ITEM_JS"
-                   file="multidevice_page/multidevice_feature_item.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_MULTIDEVICE_FEATURE_TOGGLE_HTML"
-                   file="multidevice_page/multidevice_feature_toggle.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_MULTIDEVICE_FEATURE_TOGGLE_JS"
-                   file="multidevice_page/multidevice_feature_toggle.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_MULTIDEVICE_PAGE_HTML"
-                   file="multidevice_page/multidevice_page.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_MULTIDEVICE_PAGE_JS"
-                   file="multidevice_page/multidevice_page.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_MULTIDEVICE_RADIO_BUTTON_HTML"
-                   file="multidevice_page/multidevice_radio_button.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_MULTIDEVICE_RADIO_BUTTON_JS"
-                   file="multidevice_page/multidevice_radio_button.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_MULTIDEVICE_SMARTLOCK_SUBPAGE_HTML"
-                   file="multidevice_page/multidevice_smartlock_subpage.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_MULTIDEVICE_SMARTLOCK_SUBPAGE_JS"
-                   file="multidevice_page/multidevice_smartlock_subpage.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_MULTIDEVICE_SUBPAGE_HTML"
-                   file="multidevice_page/multidevice_subpage.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_MULTIDEVICE_SUBPAGE_JS"
-                   file="multidevice_page/multidevice_subpage.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_MULTIDEVICE_TETHER_ITEM_HTML"
-                   file="multidevice_page/multidevice_tether_item.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_MULTIDEVICE_TETHER_ITEM_JS"
-                   file="multidevice_page/multidevice_tether_item.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_NETWORK_PROXY_SECTION_HTML"
-                   file="internet_page/network_proxy_section.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_NETWORK_PROXY_SECTION_JS"
-                   file="internet_page/network_proxy_section.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_NETWORK_SUMMARY_HTML"
-                   file="internet_page/network_summary.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_NETWORK_SUMMARY_JS"
-                   file="internet_page/network_summary.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_NETWORK_SUMMARY_ITEM_HTML"
-                   file="internet_page/network_summary_item.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_NETWORK_SUMMARY_ITEM_JS"
-                   file="internet_page/network_summary_item.js"
-                   type="chrome_html" />
         <structure name="IDR_SETTINGS_PARENTAL_CONTROLS_BROWSER_PROXY_HTML"
                    file="parental_controls_page/parental_controls_browser_proxy.html"
                    type="chrome_html" />
@@ -1606,12 +1317,6 @@
         <structure name="IDR_SETTINGS_PARENTAL_CONTROLS_PAGE_JS"
                    file="parental_controls_page/parental_controls_page.js"
                    type="chrome_html" />
-        <structure name="IDR_SETTINGS_TETHER_CONNECTION_DIALOG_HTML"
-                   file="internet_page/tether_connection_dialog.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_TETHER_CONNECTION_DIALOG_JS"
-                   file="internet_page/tether_connection_dialog.js"
-                   type="chrome_html" />
         <structure name="IDR_SETTINGS_PEOPLE_PAGE_ACCOUNT_MANAGER_HTML"
                    file="people_page/account_manager.html"
                    type="chrome_html"/>
@@ -1708,34 +1413,6 @@
         <structure name="IDR_SETTINGS_PEOPLE_FINGERPRINT_BROWSER_PROXY_HTML"
                    file="people_page/fingerprint_browser_proxy.html"
                    type="chrome_html" />
-       <structure name="IDR_SETTINGS_PLUGIN_VM_PAGE_HTML"
-                   file="plugin_vm_page/plugin_vm_page.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_PLUGIN_VM_PAGE_JS"
-                   file="plugin_vm_page/plugin_vm_page.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_PLUGIN_VM_SHARED_PATHS_HTML"
-                   file="plugin_vm_page/plugin_vm_shared_paths.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_PLUGIN_VM_SHARED_PATHS_JS"
-                   file="plugin_vm_page/plugin_vm_shared_paths.js"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_PLUGIN_VM_SUBPAGE_HTML"
-                   file="plugin_vm_page/plugin_vm_subpage.html"
-                   type="chrome_html" />
-        <structure name="IDR_SETTINGS_PLUGIN_VM_SUBPAGE_JS"
-                   file="plugin_vm_page/plugin_vm_subpage.js"
-                   type="chrome_html" />
-         <structure name="IDR_SETTINGS_PLUGIN_VM_BROWSER_PROXY_JS"
-                   file="plugin_vm_page/plugin_vm_browser_proxy.js"
-                   type="chrome_html"
-                   preprocess="true"
-                   allowexternalscript="true" />
-        <structure name="IDR_SETTINGS_PLUGIN_VM_BROWSER_PROXY_HTML"
-                   file="plugin_vm_page/plugin_vm_browser_proxy.html"
-                   type="chrome_html"
-                   preprocess="true"
-                   allowexternalscript="true" />
         <structure name="IDR_SETTINGS_USERS_PAGE_ADD_USER_DIALOG_JS"
                    file="people_page/users_add_user_dialog.js"
                    type="chrome_html" />
diff --git a/chrome/browser/safe_browsing/BUILD.gn b/chrome/browser/safe_browsing/BUILD.gn
index 0f60694..cb47cfd 100644
--- a/chrome/browser/safe_browsing/BUILD.gn
+++ b/chrome/browser/safe_browsing/BUILD.gn
@@ -143,6 +143,8 @@
         "cloud_content_scanning/binary_upload_service.h",
         "cloud_content_scanning/deep_scanning_dialog_delegate.cc",
         "cloud_content_scanning/deep_scanning_dialog_delegate.h",
+        "cloud_content_scanning/deep_scanning_dialog_views.cc",
+        "cloud_content_scanning/deep_scanning_dialog_views.h",
         "cloud_content_scanning/deep_scanning_utils.cc",
         "cloud_content_scanning/deep_scanning_utils.h",
         "cloud_content_scanning/multipart_uploader.cc",
diff --git a/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_dialog_delegate.cc b/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_dialog_delegate.cc
index 07a525f8..b357e1b 100644
--- a/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_dialog_delegate.cc
+++ b/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_dialog_delegate.cc
@@ -21,6 +21,7 @@
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/extensions/api/safe_browsing_private/safe_browsing_private_event_router.h"
 #include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_dialog_views.h"
 #include "chrome/browser/safe_browsing/dm_token_utils.h"
 #include "chrome/browser/safe_browsing/download_protection/check_client_download_request.h"
 #include "chrome/grit/generated_resources.h"
@@ -251,19 +252,7 @@
 
 DeepScanningDialogDelegate::~DeepScanningDialogDelegate() = default;
 
-base::string16 DeepScanningDialogDelegate::GetTitle() {
-  return l10n_util::GetStringUTF16(IDS_DEEP_SCANNING_DIALOG_TITLE);
-}
-
-base::string16 DeepScanningDialogDelegate::GetDialogMessage() {
-  return l10n_util::GetStringUTF16(IDS_DEEP_SCANNING_DIALOG_MESSAGE);
-}
-
-int DeepScanningDialogDelegate::GetDialogButtons() const {
-  return ui::DIALOG_BUTTON_CANCEL;
-}
-
-void DeepScanningDialogDelegate::OnCanceled() {
+void DeepScanningDialogDelegate::Cancel() {
   if (callback_.is_null())
     return;
 
@@ -384,7 +373,7 @@
   if (show_ui) {
     DeepScanningDialogDelegate* delegate_ptr = delegate.get();
     delegate_ptr->dialog_ =
-        TabModalConfirmDialog::Create(std::move(delegate), web_contents);
+        new DeepScanningDialogViews(std::move(delegate), web_contents);
     return;
   }
 
@@ -414,8 +403,7 @@
     Data data,
     CompletionCallback callback,
     base::Optional<DeepScanAccessPoint> access_point)
-    : TabModalConfirmDialogDelegate(web_contents),
-      web_contents_(web_contents),
+    : web_contents_(web_contents),
       data_(std::move(data)),
       callback_(std::move(callback)),
       access_point_(access_point) {
@@ -609,7 +597,7 @@
   if (!dialog_)
     return false;
 
-  dialog_->CancelTabModalDialog();
+  dialog_->CancelDialogIfShowing();
   return true;
 }
 
diff --git a/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_dialog_delegate.h b/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_dialog_delegate.h
index 4c8aabd..9393714 100644
--- a/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_dialog_delegate.h
+++ b/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_dialog_delegate.h
@@ -29,6 +29,8 @@
 
 namespace safe_browsing {
 
+class DeepScanningDialogViews;
+
 extern const base::Feature kDeepScanningOfUploadsUI;
 
 // A tab modal dialog delegate that informs the user of a background deep
@@ -57,7 +59,7 @@
 //     safe_browsing::DeepScanningDialogDelegate::ShowForWebContents(
 //         contents, std::move(data), base::BindOnce(...));
 //   }
-class DeepScanningDialogDelegate : public TabModalConfirmDialogDelegate {
+class DeepScanningDialogDelegate {
  public:
   // Used as an input to ShowForWebContents() to describe what data needs
   // deeper scanning.  Any members can be empty.
@@ -130,13 +132,11 @@
   DeepScanningDialogDelegate(const DeepScanningDialogDelegate&) = delete;
   DeepScanningDialogDelegate& operator=(const DeepScanningDialogDelegate&) =
       delete;
-  ~DeepScanningDialogDelegate() override;
+  virtual ~DeepScanningDialogDelegate();
 
-  // TabModelConfirmDialogDelegate implementation.
-  base::string16 GetTitle() override;
-  base::string16 GetDialogMessage() override;
-  int GetDialogButtons() const override;
-  void OnCanceled() override;
+  // Called when the user decides to cancel the file upload. This will stop the
+  // upload to Chrome since the scan wasn't allowed to complete.
+  void Cancel();
 
   // Returns true if the deep scanning feature is enabled in the upload
   // direction via enterprise policies.  If the appropriate enterprise policies
@@ -262,7 +262,7 @@
   CompletionCallback callback_;
 
   // Pointer to UI when enabled.
-  TabModalConfirmDialog* dialog_ = nullptr;
+  DeepScanningDialogViews* dialog_ = nullptr;
 
   // Access point to use to record UMA metrics. base::nullopt implies no metrics
   // are to be recorded.
diff --git a/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_dialog_views.cc b/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_dialog_views.cc
new file mode 100644
index 0000000..1c6b00bd
--- /dev/null
+++ b/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_dialog_views.cc
@@ -0,0 +1,104 @@
+// Copyright (c) 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 "chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_dialog_views.h"
+
+#include <memory>
+
+#include "base/task/post_task.h"
+#include "chrome/browser/ui/views/chrome_layout_provider.h"
+#include "chrome/grit/generated_resources.h"
+#include "components/constrained_window/constrained_window_views.h"
+#include "components/strings/grit/components_strings.h"
+#include "content/public/browser/browser_task_traits.h"
+#include "ui/base/l10n/l10n_util.h"
+#include "ui/views/controls/message_box_view.h"
+
+namespace safe_browsing {
+
+namespace {
+
+constexpr base::TimeDelta kInitialUIDelay =
+    base::TimeDelta::FromMilliseconds(200);
+
+}  // namespace
+
+DeepScanningDialogViews::DeepScanningDialogViews(
+    std::unique_ptr<DeepScanningDialogDelegate> delegate,
+    content::WebContents* web_contents)
+    : delegate_(std::move(delegate)) {
+  DialogDelegate::set_button_label(ui::DIALOG_BUTTON_CANCEL,
+                                   l10n_util::GetStringUTF16(IDS_CANCEL));
+  DialogDelegate::set_default_button(ui::DIALOG_BUTTON_CANCEL);
+
+  views::MessageBoxView::InitParams init_params(
+      l10n_util::GetStringUTF16(IDS_DEEP_SCANNING_DIALOG_MESSAGE));
+  init_params.inter_row_vertical_spacing =
+      ChromeLayoutProvider::Get()->GetDistanceMetric(
+          views::DISTANCE_UNRELATED_CONTROL_VERTICAL);
+  message_box_view_ = new views::MessageBoxView(init_params);
+
+  // Show the dialog after a delay in case the response is fast enough.
+  base::PostDelayedTask(
+      FROM_HERE, {content::BrowserThread::UI},
+      base::BindOnce(&DeepScanningDialogViews::Show,
+                     weak_ptr_factory_.GetWeakPtr(), web_contents),
+      kInitialUIDelay);
+}
+
+int DeepScanningDialogViews::GetDialogButtons() const {
+  return ui::DIALOG_BUTTON_CANCEL;
+}
+
+base::string16 DeepScanningDialogViews::GetWindowTitle() const {
+  return l10n_util::GetStringUTF16(IDS_DEEP_SCANNING_DIALOG_TITLE);
+}
+
+bool DeepScanningDialogViews::Cancel() {
+  delegate_->Cancel();
+  return true;
+}
+
+bool DeepScanningDialogViews::ShouldShowCloseButton() const {
+  return false;
+}
+
+views::View* DeepScanningDialogViews::GetContentsView() {
+  return message_box_view_;
+}
+
+views::Widget* DeepScanningDialogViews::GetWidget() {
+  return message_box_view_->GetWidget();
+}
+
+const views::Widget* DeepScanningDialogViews::GetWidget() const {
+  return message_box_view_->GetWidget();
+}
+
+void DeepScanningDialogViews::DeleteDelegate() {
+  delete this;
+}
+
+ui::ModalType DeepScanningDialogViews::GetModalType() const {
+  return ui::MODAL_TYPE_CHILD;
+}
+
+void DeepScanningDialogViews::CancelDialogIfShowing() {
+  if (shown_) {
+    DialogDelegate::CancelDialog();
+  } else {
+    // The UI not being shown means |message_box_view_| has to be freed here.
+    delete message_box_view_;
+    delete this;
+  }
+}
+
+void DeepScanningDialogViews::Show(content::WebContents* web_contents) {
+  constrained_window::ShowWebModalDialogViews(this, web_contents);
+  shown_ = true;
+}
+
+DeepScanningDialogViews::~DeepScanningDialogViews() = default;
+
+}  // namespace safe_browsing
diff --git a/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_dialog_views.h b/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_dialog_views.h
new file mode 100644
index 0000000..4335c67
--- /dev/null
+++ b/chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_dialog_views.h
@@ -0,0 +1,66 @@
+// Copyright (c) 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 CHROME_BROWSER_SAFE_BROWSING_CLOUD_CONTENT_SCANNING_DEEP_SCANNING_DIALOG_VIEWS_H_
+#define CHROME_BROWSER_SAFE_BROWSING_CLOUD_CONTENT_SCANNING_DEEP_SCANNING_DIALOG_VIEWS_H_
+
+#include <memory>
+
+#include "base/memory/weak_ptr.h"
+#include "chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_dialog_delegate.h"
+#include "ui/views/window/dialog_delegate.h"
+
+namespace content {
+class WebContents;
+}  // namespace content
+
+namespace views {
+class MessageBoxView;
+class Widget;
+}  // namespace views
+
+namespace safe_browsing {
+
+// Dialog shown for Deep Scanning to offer the possibility of cancelling the
+// upload to the user.
+class DeepScanningDialogViews : public views::DialogDelegate {
+ public:
+  DeepScanningDialogViews(std::unique_ptr<DeepScanningDialogDelegate> delegate,
+                          content::WebContents* web_contents);
+
+  // views::DialogDelegate:
+  int GetDialogButtons() const override;
+  base::string16 GetWindowTitle() const override;
+  bool Cancel() override;
+  bool ShouldShowCloseButton() const override;
+
+  // views::WidgetDelegate:
+  views::View* GetContentsView() override;
+  views::Widget* GetWidget() override;
+  const views::Widget* GetWidget() const override;
+  void DeleteDelegate() override;
+  ui::ModalType GetModalType() const override;
+
+  // Cancels the dialog if it is showing, and simply delete it from memory if it
+  // is not. This method will always result in |this| being deleted.
+  void CancelDialogIfShowing();
+
+ private:
+  ~DeepScanningDialogViews() override;
+
+  // Show the dialog. Sets |shown_| to true.
+  void Show(content::WebContents* web_contents);
+
+  std::unique_ptr<DeepScanningDialogDelegate> delegate_;
+
+  views::MessageBoxView* message_box_view_;
+
+  bool shown_ = false;
+
+  base::WeakPtrFactory<DeepScanningDialogViews> weak_ptr_factory_{this};
+};
+
+}  // namespace safe_browsing
+
+#endif  // CHROME_BROWSER_SAFE_BROWSING_CLOUD_CONTENT_SCANNING_DEEP_SCANNING_DIALOG_VIEWS_H_
diff --git a/chrome/browser/search/chrome_colors/chrome_colors_service.cc b/chrome/browser/search/chrome_colors/chrome_colors_service.cc
index bff4c5e..b608b1ee 100644
--- a/chrome/browser/search/chrome_colors/chrome_colors_service.cc
+++ b/chrome/browser/search/chrome_colors/chrome_colors_service.cc
@@ -10,15 +10,6 @@
 #include "chrome/common/search/generated_colors_info.h"
 #include "chrome/common/search/selected_colors_info.h"
 
-namespace {
-
-// Records whether current theme changes are confirmed or reverted.
-void RecordChangesConfirmedHistogram(bool confirmed) {
-  UMA_HISTOGRAM_BOOLEAN("ChromeColors.ChangesConfirmed", confirmed);
-}
-
-}  // namespace
-
 namespace chrome_colors {
 
 ChromeColorsService::ChromeColorsService(Profile* profile)
@@ -88,7 +79,6 @@
     return;
   prev_theme_reinstaller_ = nullptr;
   dialog_tab_ = nullptr;
-  RecordChangesConfirmedHistogram(true);
 }
 
 void ChromeColorsService::RevertThemeChangesWithReason(RevertReason reason) {
@@ -96,8 +86,6 @@
     prev_theme_reinstaller_->Reinstall();
     prev_theme_reinstaller_ = nullptr;
     dialog_tab_ = nullptr;
-    UMA_HISTOGRAM_ENUMERATION("ChromeColors.RevertReason", reason);
-    RecordChangesConfirmedHistogram(false);
   }
 }
 
diff --git a/chrome/browser/search/local_ntp_source.cc b/chrome/browser/search/local_ntp_source.cc
index 5a48f99..6ab0cf28 100644
--- a/chrome/browser/search/local_ntp_source.cc
+++ b/chrome/browser/search/local_ntp_source.cc
@@ -402,7 +402,7 @@
     dict.SetString("promoHtml", promo->promo_html);
     dict.SetString("promoLogUrl", promo->promo_log_url.spec());
     dict.SetString("promoId", promo->promo_id);
-    dict.SetBoolean("canOpenPrivilegedLinks", promo->can_open_privileged_links);
+    dict.SetBoolean("canOpenExtensionsPage", promo->can_open_extensions_page);
   }
 
   std::string js;
diff --git a/chrome/browser/search/ntp_icon_source.cc b/chrome/browser/search/ntp_icon_source.cc
index 1017e57..91b445b 100644
--- a/chrome/browser/search/ntp_icon_source.cc
+++ b/chrome/browser/search/ntp_icon_source.cc
@@ -36,6 +36,7 @@
 #include "components/suggestions/proto/suggestions.pb.h"
 #include "components/suggestions/suggestions_service.h"
 #include "content/public/browser/storage_partition.h"
+#include "extensions/common/image_util.h"
 #include "net/base/escape.h"
 #include "net/base/url_util.h"
 #include "skia/ext/image_operations.h"
@@ -63,6 +64,9 @@
 
 const char kShowFallbackMonogramParam[] = "show_fallback_monogram";
 
+// The requested color of the icon in 8-digit Hex format (e.g., #757575FF).
+const char kColorParam[] = "color";
+
 // The requested size of the icon.
 const char kSizeParam[] = "size";
 
@@ -88,6 +92,9 @@
   // The URL for which the icon is being requested.
   GURL url;
 
+  // The requested color of the icon in 8-digit Hex format (e.g., #757575FF).
+  std::string color_rgba = "";
+
   // The size of the requested icon in dip.
   int size_in_dip = 0;
 
@@ -125,6 +132,8 @@
     std::string key = it.GetKey();
     if (key == kShowFallbackMonogramParam) {
       parsed.show_fallback_monogram = it.GetUnescapedValue() != "false";
+    } else if (key == kColorParam) {
+      parsed.color_rgba = it.GetUnescapedValue();
     } else if (key == kSizeParam) {
       std::vector<std::string> pieces =
           base::SplitString(it.GetUnescapedValue(), "@", base::TRIM_WHITESPACE,
@@ -165,11 +174,13 @@
   NtpIconRequest(content::URLDataSource::GotDataCallback cb,
                  const GURL& path,
                  int icon_size_in_pixels,
+                 std::string color_rgba,
                  float scale,
                  bool show_fallback_monogram)
       : callback(std::move(cb)),
         path(path),
         icon_size_in_pixels(icon_size_in_pixels),
+        color_rgba(color_rgba),
         device_scale_factor(scale),
         show_fallback_monogram(show_fallback_monogram) {}
 
@@ -181,6 +192,7 @@
   content::URLDataSource::GotDataCallback callback;
   GURL path;
   int icon_size_in_pixels;
+  std::string color_rgba;
   float device_scale_factor;
   bool show_fallback_monogram;
 };
@@ -213,7 +225,7 @@
     int icon_size_in_pixels =
         std::ceil(parsed.size_in_dip * parsed.device_scale_factor);
     NtpIconRequest request(std::move(callback), parsed.url, icon_size_in_pixels,
-                           parsed.device_scale_factor,
+                           parsed.color_rgba, parsed.device_scale_factor,
                            parsed.show_fallback_monogram);
 
     // Check if the requested URL is part of the prepopulated pages (currently,
@@ -402,7 +414,14 @@
       const auto resized = gfx::ImageSkiaOperations::CreateResizedImage(
           scaled_image, skia::ImageOperations::RESIZE_BEST,
           gfx::Size(fallback_size, fallback_size));
-      DrawFavicon(*resized.bitmap(), &canvas, icon_size);
+      auto bitmap = *resized.bitmap();
+
+      SkColor color = 0;
+      if (extensions::image_util::ParseHexColorString(request.color_rgba,
+                                                      &color)) {
+        bitmap = SkBitmapOperations::CreateColorMask(bitmap, color);
+      }
+      DrawFavicon(bitmap, &canvas, icon_size);
     } else {
       DrawFavicon(favicon, &canvas, icon_size);
     }
diff --git a/chrome/browser/search/promos/promo_data.h b/chrome/browser/search/promos/promo_data.h
index 77ff267..7d02987 100644
--- a/chrome/browser/search/promos/promo_data.h
+++ b/chrome/browser/search/promos/promo_data.h
@@ -29,8 +29,9 @@
   // The unique identifier for this promo. May be empty.
   std::string promo_id;
 
-  // Allow the promo to open chrome:// links
-  bool can_open_privileged_links = false;
+  // Allow the promo to open chrome://extensions for the extensions checkup
+  // experiment.
+  bool can_open_extensions_page = false;
 };
 
 bool operator==(const PromoData& lhs, const PromoData& rhs);
diff --git a/chrome/browser/search/promos/promo_service.cc b/chrome/browser/search/promos/promo_service.cc
index c68b82de..94722f9 100644
--- a/chrome/browser/search/promos/promo_service.cc
+++ b/chrome/browser/search/promos/promo_service.cc
@@ -191,7 +191,7 @@
   std::string promo_message = l10n_util::GetStringUTF8(promo_idr);
   std::string promo_html = base::StrCat({"<div>", promo_message, "</div>"});
   checkup_promo.promo_html = promo_html;
-  checkup_promo.can_open_privileged_links = true;
+  checkup_promo.can_open_extensions_page = true;
   PromoDataLoaded(Status::OK_WITH_PROMO, checkup_promo);
 }
 
diff --git a/chrome/browser/search/promos/promo_service_unittest.cc b/chrome/browser/search/promos/promo_service_unittest.cc
index 1ff7f93..8008b22 100644
--- a/chrome/browser/search/promos/promo_service_unittest.cc
+++ b/chrome/browser/search/promos/promo_service_unittest.cc
@@ -22,7 +22,6 @@
 #include "components/prefs/scoped_user_pref_update.h"
 #include "components/signin/public/identity_manager/identity_test_environment.h"
 #include "content/public/test/browser_task_environment.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "extensions/common/extension.h"
 #include "extensions/common/extension_builder.h"
 #include "extensions/common/extension_features.h"
@@ -356,7 +355,7 @@
   promo.promo_html =
       "<div>" + l10n_util::GetStringUTF8(IDS_EXTENSIONS_PROMO_PERFORMANCE) +
       "</div>";
-  promo.can_open_privileged_links = true;
+  promo.can_open_extensions_page = true;
 
   EXPECT_EQ(service()->promo_data(), promo);
   EXPECT_EQ(service()->promo_status(), PromoService::Status::OK_WITH_PROMO);
diff --git a/chrome/browser/sessions/session_restore.cc b/chrome/browser/sessions/session_restore.cc
index 2c08d7a..d47c860 100644
--- a/chrome/browser/sessions/session_restore.cc
+++ b/chrome/browser/sessions/session_restore.cc
@@ -642,10 +642,15 @@
     params.initial_bounds = bounds;
 
 #if defined(OS_CHROMEOS)
+    // We only store trusted app windows, so we also create them as trusted.
     if (type == Browser::Type::TYPE_APP) {
-      const bool trusted_source = true;  // We only store trusted app windows.
-      params = Browser::CreateParams::CreateForApp(app_name, trusted_source,
-                                                   bounds, profile_, false);
+      params = Browser::CreateParams::CreateForApp(
+          app_name, /*trusted_source=*/true, bounds, profile_,
+          /*user_gesture=*/false);
+    } else if (type == Browser::Type::TYPE_APP_POPUP) {
+      params = Browser::CreateParams::CreateForAppPopup(
+          app_name, /*trusted_source=*/true, bounds, profile_,
+          /*user_gesture=*/false);
     }
 #endif
 
diff --git a/chrome/browser/sessions/session_restore_browsertest_chromeos.cc b/chrome/browser/sessions/session_restore_browsertest_chromeos.cc
index 2203eb4..f9e80a6b 100644
--- a/chrome/browser/sessions/session_restore_browsertest_chromeos.cc
+++ b/chrome/browser/sessions/session_restore_browsertest_chromeos.cc
@@ -27,8 +27,8 @@
 #include "ui/wm/core/wm_core_switches.h"
 
 namespace {
-const char* test_app_popup_name1 = "TestApp1";
-const char* test_app_popup_name2 = "TestApp2";
+const char* test_app_name1 = "TestApp1";
+const char* test_app_name2 = "TestApp2";
 }
 
 class SessionRestoreTestChromeOS : public InProcessBrowserTest {
@@ -67,12 +67,18 @@
     return false;
   }
 
-  Browser::CreateParams CreateParamsForApp(const std::string name,
+  Browser::CreateParams CreateParamsForApp(const std::string& name,
                                            bool trusted) {
     return Browser::CreateParams::CreateForApp(name, trusted, gfx::Rect(),
                                                profile(), true);
   }
 
+  Browser::CreateParams CreateParamsForAppPopup(const std::string& name,
+                                                bool trusted) {
+    return Browser::CreateParams::CreateForAppPopup(name, trusted, gfx::Rect(),
+                                                    profile(), true);
+  }
+
   // Turn on session restore before we restart.
   void TurnOnSessionRestore() {
     SessionStartupPref::SetStartupPref(
@@ -112,13 +118,13 @@
 }
 
 IN_PROC_BROWSER_TEST_F(SessionRestoreTestChromeOS, PRE_RestoreAppsV1) {
-  // Create a trusted app popup.
-  CreateBrowserWithParams(CreateParamsForApp(test_app_popup_name1, true));
-  // Create a second trusted app with two popup windows.
-  CreateBrowserWithParams(CreateParamsForApp(test_app_popup_name2, true));
-  CreateBrowserWithParams(CreateParamsForApp(test_app_popup_name2, true));
-  // Create a third untrusted (child) app3 popup. This should not get restored.
-  CreateBrowserWithParams(CreateParamsForApp(test_app_popup_name2, false));
+  // Create a trusted app.
+  CreateBrowserWithParams(CreateParamsForApp(test_app_name1, true));
+  // Create a second trusted app with two windows.
+  CreateBrowserWithParams(CreateParamsForApp(test_app_name2, true));
+  CreateBrowserWithParams(CreateParamsForApp(test_app_name2, true));
+  // Create a third untrusted (child) app3. This should not get restored.
+  CreateBrowserWithParams(CreateParamsForApp(test_app_name2, false));
 
   TurnOnSessionRestore();
 }
@@ -129,9 +135,37 @@
   size_t app2_count = 0;
   for (auto* browser : *BrowserList::GetInstance()) {
     ++total_count;
-    if (browser->app_name() == test_app_popup_name1)
+    if (browser->app_name() == test_app_name1)
       ++app1_count;
-    if (browser->app_name() == test_app_popup_name2)
+    if (browser->app_name() == test_app_name2)
+      ++app2_count;
+  }
+  EXPECT_EQ(1u, app1_count);
+  EXPECT_EQ(2u, app2_count);   // Only the trusted app windows are restored.
+  EXPECT_EQ(4u, total_count);  // Default browser() + 3 app windows
+}
+
+IN_PROC_BROWSER_TEST_F(SessionRestoreTestChromeOS, PRE_RestoreAppsPopup) {
+  // Create a trusted app popup.
+  CreateBrowserWithParams(CreateParamsForAppPopup(test_app_name1, true));
+  // Create a second trusted app popup with two windows.
+  CreateBrowserWithParams(CreateParamsForAppPopup(test_app_name2, true));
+  CreateBrowserWithParams(CreateParamsForAppPopup(test_app_name2, true));
+  // Create a third untrusted (child) app popup. This should not get restored.
+  CreateBrowserWithParams(CreateParamsForAppPopup(test_app_name2, false));
+
+  TurnOnSessionRestore();
+}
+
+IN_PROC_BROWSER_TEST_F(SessionRestoreTestChromeOS, RestoreAppsPopup) {
+  size_t total_count = 0;
+  size_t app1_count = 0;
+  size_t app2_count = 0;
+  for (auto* browser : *BrowserList::GetInstance()) {
+    ++total_count;
+    if (browser->app_name() == test_app_name1)
+      ++app1_count;
+    if (browser->app_name() == test_app_name2)
       ++app2_count;
   }
   EXPECT_EQ(1u, app1_count);
@@ -166,31 +200,49 @@
       CreateBrowserWithParams(Browser::CreateParams(profile(), true));
   browser2->window()->Maximize();
 
-  // Create two app popup windows and maximize the second one.
+  // Create two app windows and maximize the second one.
   Browser* app_browser1 =
-      CreateBrowserWithParams(CreateParamsForApp(test_app_popup_name1, true));
+      CreateBrowserWithParams(CreateParamsForApp(test_app_name1, true));
   Browser* app_browser2 =
-      CreateBrowserWithParams(CreateParamsForApp(test_app_popup_name1, true));
+      CreateBrowserWithParams(CreateParamsForApp(test_app_name2, true));
   app_browser2->window()->Maximize();
 
+  // Create two app popup windows and maximize the second one.
+  Browser* app_popup_browser1 =
+      CreateBrowserWithParams(CreateParamsForAppPopup(test_app_name1, true));
+  Browser* app_popup_browser2 =
+      CreateBrowserWithParams(CreateParamsForAppPopup(test_app_name2, true));
+  app_popup_browser2->window()->Maximize();
+
   EXPECT_FALSE(browser()->window()->IsMaximized());
   EXPECT_TRUE(browser2->window()->IsMaximized());
   EXPECT_FALSE(app_browser1->window()->IsMaximized());
   EXPECT_TRUE(app_browser2->window()->IsMaximized());
+  EXPECT_FALSE(app_popup_browser1->window()->IsMaximized());
+  EXPECT_TRUE(app_popup_browser2->window()->IsMaximized());
 
   TurnOnSessionRestore();
 }
 
 IN_PROC_BROWSER_TEST_F(SessionRestoreTestChromeOS, RestoreMaximized) {
   size_t total_count = 0;
-  size_t maximized_count = 0;
+  size_t app1_maximized_count = 0;
+  size_t app2_maximized_count = 0;
+  size_t total_maximized_count = 0;
   for (auto* browser : *BrowserList::GetInstance()) {
     ++total_count;
-    if (browser->window()->IsMaximized())
-      ++maximized_count;
+    if (browser->window()->IsMaximized()) {
+      ++total_maximized_count;
+      if (browser->app_name() == test_app_name1)
+        ++app1_maximized_count;
+      if (browser->app_name() == test_app_name2)
+        ++app2_maximized_count;
+    }
   }
-  EXPECT_EQ(4u, total_count);
-  EXPECT_EQ(2u, maximized_count);
+  EXPECT_EQ(6u, total_count);
+  EXPECT_EQ(0u, app1_maximized_count);
+  EXPECT_EQ(2u, app2_maximized_count);  // One TYPE_APP + One TYPE_APP_POPUP
+  EXPECT_EQ(3u, total_maximized_count);
 }
 
 // Test for crash when restoring minimized windows. http://crbug.com/679513.
diff --git a/chrome/browser/sessions/session_service.cc b/chrome/browser/sessions/session_service.cc
index ff609216..96ec21e 100644
--- a/chrome/browser/sessions/session_service.cc
+++ b/chrome/browser/sessions/session_service.cc
@@ -585,8 +585,9 @@
 bool SessionService::ShouldRestoreWindowOfType(
     sessions::SessionWindow::WindowType window_type) const {
 #if defined(OS_CHROMEOS)
-  // Restore app popups for ChromeOS alone.
-  if (window_type == sessions::SessionWindow::TYPE_APP)
+  // Restore apps and app popups for ChromeOS alone.
+  if (window_type == sessions::SessionWindow::TYPE_APP ||
+      window_type == sessions::SessionWindow::TYPE_APP_POPUP)
     return true;
 #endif
 
diff --git a/chrome/browser/sessions/session_service_utils.cc b/chrome/browser/sessions/session_service_utils.cc
index 1556bca..0c1297e 100644
--- a/chrome/browser/sessions/session_service_utils.cc
+++ b/chrome/browser/sessions/session_service_utils.cc
@@ -15,6 +15,8 @@
       return sessions::SessionWindow::TYPE_APP;
     case Browser::TYPE_DEVTOOLS:
       return sessions::SessionWindow::TYPE_DEVTOOLS;
+    case Browser::TYPE_APP_POPUP:
+      return sessions::SessionWindow::TYPE_APP_POPUP;
   }
   NOTREACHED();
   return sessions::SessionWindow::TYPE_NORMAL;
@@ -31,6 +33,8 @@
       return Browser::TYPE_APP;
     case sessions::SessionWindow::TYPE_DEVTOOLS:
       return Browser::TYPE_DEVTOOLS;
+    case sessions::SessionWindow::TYPE_APP_POPUP:
+      return Browser::TYPE_APP_POPUP;
   }
   NOTREACHED();
   return Browser::TYPE_NORMAL;
diff --git a/chrome/browser/sharing/sharing_message_sender.cc b/chrome/browser/sharing/sharing_message_sender.cc
index df37043..f141b02 100644
--- a/chrome/browser/sharing/sharing_message_sender.cc
+++ b/chrome/browser/sharing/sharing_message_sender.cc
@@ -80,6 +80,7 @@
 
   LogSharingDeviceLastUpdatedAge(
       message_type, base::Time::Now() - device.last_updated_timestamp());
+  LogSharingVersionComparison(message_type, device.chrome_version());
 
   message.set_sender_guid(local_device_info->guid());
   message.set_sender_device_name(
diff --git a/chrome/browser/sharing/sharing_metrics.cc b/chrome/browser/sharing/sharing_metrics.cc
index 4d54182..73537bd 100644
--- a/chrome/browser/sharing/sharing_metrics.cc
+++ b/chrome/browser/sharing/sharing_metrics.cc
@@ -6,7 +6,9 @@
 
 #include "base/metrics/histogram_functions.h"
 #include "base/strings/strcat.h"
+#include "base/strings/string_number_conversions.h"
 #include "chrome/browser/sharing/sharing_device_registration_result.h"
+#include "components/version_info/version_info.h"
 
 namespace {
 const char* GetEnumStringValue(SharingFeatureName feature) {
@@ -56,6 +58,18 @@
   }
   return chrome_browser_sharing::MessageType_Name(message_type);
 }
+
+// Major Chrome version comparison with the receiver device.
+// These values are logged to UMA. Entries should not be renumbered and numeric
+// values should never be reused. Please keep in sync with
+// "SharingMajorVersionComparison" in enums.xml.
+enum class SharingMajorVersionComparison {
+  kUnknown = 0,
+  kSenderIsLower = 1,
+  kSame = 2,
+  kSenderIsHigher = 3,
+  kMaxValue = kSenderIsHigher,
+};
 }  // namespace
 
 chrome_browser_sharing::MessageType SharingPayloadCaseToMessageType(
@@ -220,6 +234,36 @@
       hours);
 }
 
+void LogSharingVersionComparison(
+    chrome_browser_sharing::MessageType message_type,
+    const std::string& receiver_version) {
+  int sender_major = 0;
+  base::StringToInt(version_info::GetMajorVersionNumber(), &sender_major);
+
+  // The |receiver_version| has optional modifiers e.g. "1.2.3.4 canary" so we
+  // do not parse it with base::Version.
+  int receiver_major = 0;
+  base::StringToInt(receiver_version, &receiver_major);
+
+  SharingMajorVersionComparison result;
+  if (sender_major == 0 || sender_major == INT_MIN || sender_major == INT_MAX ||
+      receiver_major == 0 || receiver_major == INT_MIN ||
+      receiver_major == INT_MAX) {
+    result = SharingMajorVersionComparison::kUnknown;
+  } else if (sender_major < receiver_major) {
+    result = SharingMajorVersionComparison::kSenderIsLower;
+  } else if (sender_major == receiver_major) {
+    result = SharingMajorVersionComparison::kSame;
+  } else {
+    result = SharingMajorVersionComparison::kSenderIsHigher;
+  }
+  constexpr char kBase[] = "Sharing.MajorVersionComparison";
+  base::UmaHistogramEnumeration(kBase, result);
+  base::UmaHistogramEnumeration(
+      base::StrCat({kBase, ".", MessageTypeToMessageSuffix(message_type)}),
+      result);
+}
+
 void LogSharingDialogShown(SharingFeatureName feature, SharingDialogType type) {
   base::UmaHistogramEnumeration(
       base::StrCat({"Sharing.", GetEnumStringValue(feature), "DialogShown"}),
diff --git a/chrome/browser/sharing/sharing_metrics.h b/chrome/browser/sharing/sharing_metrics.h
index 7820bfb..dffaa908 100644
--- a/chrome/browser/sharing/sharing_metrics.h
+++ b/chrome/browser/sharing/sharing_metrics.h
@@ -111,6 +111,15 @@
     chrome_browser_sharing::MessageType message_type,
     base::TimeDelta age);
 
+// Logs to UMA the comparison of the major version of Chrome on this
+// (the sender) device and the receiver device. Logged when a message is sent.
+// The |receiver_version| should be a dotted version number with optional
+// modifiers e.g. "1.2.3.4 canary" as generated by
+// version_info::GetVersionStringWithModifier.
+void LogSharingVersionComparison(
+    chrome_browser_sharing::MessageType message_type,
+    const std::string& receiver_version);
+
 // Logs to UMA the |type| of dialog shown for sharing feature.
 void LogSharingDialogShown(SharingFeatureName feature, SharingDialogType type);
 
diff --git a/chrome/browser/ssl/security_state_model_android.cc b/chrome/browser/ssl/security_state_model_android.cc
index 4773af3d..c830eab 100644
--- a/chrome/browser/ssl/security_state_model_android.cc
+++ b/chrome/browser/ssl/security_state_model_android.cc
@@ -9,7 +9,6 @@
 #include "chrome/browser/ssl/security_state_tab_helper.h"
 #include "components/security_state/core/security_state.h"
 #include "content/public/browser/web_contents.h"
-#include "content/public/common/origin_util.h"
 #include "url/gurl.h"
 
 using base::android::ConvertJavaStringToUTF16;
@@ -30,21 +29,7 @@
 }
 
 // static
-jboolean JNI_SecurityStateModel_IsSchemeCryptographic(
-    JNIEnv* env,
-    const JavaParamRef<jstring>& jurl) {
-  GURL url(ConvertJavaStringToUTF16(env, jurl));
-  return url.is_valid() && url.SchemeIsCryptographic();
-}
-
-// static
-jboolean JNI_SecurityStateModel_ShouldDowngradeNeutralStyling(
-    JNIEnv* env,
-    jint jsecurity_level,
-    const JavaParamRef<jstring>& jurl) {
-  GURL url(ConvertJavaStringToUTF16(env, jurl));
-  auto security_level =
-      static_cast<security_state::SecurityLevel>(jsecurity_level);
-  return security_state::ShouldDowngradeNeutralStyling(
-      security_level, url, base::BindRepeating(&content::IsOriginSecure));
+jboolean JNI_SecurityStateModel_ShouldShowDangerTriangleForWarningLevel(
+    JNIEnv* env) {
+  return security_state::ShouldShowDangerTriangleForWarningLevel();
 }
diff --git a/chrome/browser/ssl/security_state_tab_helper_browsertest.cc b/chrome/browser/ssl/security_state_tab_helper_browsertest.cc
index 9cb8234..13934963 100644
--- a/chrome/browser/ssl/security_state_tab_helper_browsertest.cc
+++ b/chrome/browser/ssl/security_state_tab_helper_browsertest.cc
@@ -610,8 +610,9 @@
 };
 
 IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest, HttpPage) {
-  ui_test_utils::NavigateToURL(
-      browser(), embedded_test_server()->GetURL("/ssl/google.html"));
+  GURL http_url =
+      GetURLWithNonLocalHostname(embedded_test_server(), "/ssl/google.html");
+  ui_test_utils::NavigateToURL(browser(), http_url);
   content::WebContents* contents =
       browser()->tab_strip_model()->GetActiveWebContents();
   ASSERT_TRUE(contents);
@@ -621,7 +622,7 @@
   ASSERT_TRUE(helper);
   std::unique_ptr<security_state::VisibleSecurityState> visible_security_state =
       helper->GetVisibleSecurityState();
-  EXPECT_EQ(security_state::NONE, helper->GetSecurityLevel());
+  EXPECT_EQ(security_state::WARNING, helper->GetSecurityLevel());
   EXPECT_FALSE(security_state::IsSHA1InChain(*visible_security_state));
   EXPECT_FALSE(visible_security_state->displayed_mixed_content);
   EXPECT_FALSE(visible_security_state->ran_mixed_content);
@@ -1109,6 +1110,32 @@
       true /* expect cert status error */);
 }
 
+// Tests that the security style of HTTP pages is set properly.
+IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest, SecurityStyleForHttpPage) {
+  content::WebContents* contents =
+      browser()->tab_strip_model()->GetActiveWebContents();
+  ASSERT_TRUE(contents);
+
+  SecurityStyleTestObserver observer(contents);
+
+  SecurityStateTabHelper* helper =
+      SecurityStateTabHelper::FromWebContents(contents);
+  ASSERT_TRUE(helper);
+
+  GURL http_url =
+      GetURLWithNonLocalHostname(embedded_test_server(), "/title1.html");
+  ui_test_utils::NavigateToURL(browser(), http_url);
+  EXPECT_EQ(security_state::WARNING, helper->GetSecurityLevel());
+  EXPECT_EQ(0u, observer.latest_explanations().neutral_explanations.size());
+  // The below expectation is based on the feature flag set in the field trial
+  // testing config.
+  EXPECT_EQ(GetSecurityStyleForHttp(), observer.latest_security_style());
+
+  content::NavigationEntry* entry = contents->GetController().GetVisibleEntry();
+  ASSERT_TRUE(entry);
+  EXPECT_EQ(content::SSLStatus::NORMAL_CONTENT, entry->GetSSL().content_status);
+}
+
 // Tests that the security level of data: URLs is always downgraded to
 // WARNING.
 IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest,
@@ -1665,9 +1692,7 @@
 
   GURL mixed_content_url(https_server_.GetURL(replacement_path));
   ui_test_utils::NavigateToURL(browser(), mixed_content_url);
-  // The below expectation is based on the feature flag set in the field trial
-  // testing config.
-  EXPECT_EQ(GetSecurityStyleForHttp(), observer.latest_security_style());
+  EXPECT_EQ(blink::SecurityStyle::kNeutral, observer.latest_security_style());
 
   const content::SecurityStyleExplanations& mixed_content_explanation =
       observer.latest_explanations();
diff --git a/chrome/browser/supervised_user/supervised_user_service.cc b/chrome/browser/supervised_user/supervised_user_service.cc
index e778b70..09307d4 100644
--- a/chrome/browser/supervised_user/supervised_user_service.cc
+++ b/chrome/browser/supervised_user/supervised_user_service.cc
@@ -921,14 +921,6 @@
 }
 #endif  // BUILDFLAG(ENABLE_EXTENSIONS)
 
-syncer::UserSelectableTypeSet SupervisedUserService::GetForcedTypes() const {
-  if (!ProfileIsSupervised())
-    return syncer::UserSelectableTypeSet();
-
-  return {syncer::UserSelectableType::kExtensions,
-          syncer::UserSelectableType::kApps};
-}
-
 bool SupervisedUserService::IsEncryptEverythingAllowed() const {
   return !active_;
 }
diff --git a/chrome/browser/supervised_user/supervised_user_service.h b/chrome/browser/supervised_user/supervised_user_service.h
index 1c39ab0..004b043b 100644
--- a/chrome/browser/supervised_user/supervised_user_service.h
+++ b/chrome/browser/supervised_user/supervised_user_service.h
@@ -155,7 +155,6 @@
   void Shutdown() override;
 
   // SyncTypePreferenceProvider implementation:
-  syncer::UserSelectableTypeSet GetForcedTypes() const override;
   bool IsEncryptEverythingAllowed() const override;
 
 #if !defined(OS_ANDROID)
diff --git a/chrome/browser/sync/chrome_sync_client.cc b/chrome/browser/sync/chrome_sync_client.cc
index fc7e5d3..55477d7 100644
--- a/chrome/browser/sync/chrome_sync_client.cc
+++ b/chrome/browser/sync/chrome_sync_client.cc
@@ -122,6 +122,7 @@
 #include "chrome/browser/chromeos/printing/printers_sync_bridge.h"
 #include "chrome/browser/chromeos/printing/synced_printers_manager.h"
 #include "chrome/browser/chromeos/printing/synced_printers_manager_factory.h"
+#include "chrome/browser/chromeos/sync/app_settings_model_type_controller.h"
 #include "chrome/browser/chromeos/sync/apps_model_type_controller.h"
 #include "chrome/browser/chromeos/sync/os_sync_model_type_controller.h"
 #include "chrome/browser/chromeos/sync/os_syncable_service_model_type_controller.h"
@@ -369,13 +370,7 @@
   // App setting sync is enabled by default.  Register unless explicitly
   // disabled.
   if (!disabled_types.Has(syncer::APP_SETTINGS)) {
-    // TODO(https://crbug.com/1031549): Run in transport-mode on Chrome OS with
-    // SplitSettingsSync.
-    controllers.push_back(std::make_unique<ExtensionSettingModelTypeController>(
-        syncer::APP_SETTINGS, model_type_store_factory,
-        extensions::settings_sync_util::GetSyncableServiceProvider(
-            profile_, syncer::APP_SETTINGS),
-        dump_stack, profile_));
+    controllers.push_back(CreateAppSettingsModelTypeController(sync_service));
   }
 
   // Web Apps sync is disabled by default.
@@ -383,12 +378,7 @@
       base::FeatureList::IsEnabled(features::kDesktopPWAsUSS) &&
       web_app::WebAppProvider::Get(profile_)) {
     if (!disabled_types.Has(syncer::WEB_APPS)) {
-      // TODO(https://crbug.com/1031549): Run in transport-mode on Chrome OS
-      // with SplitSettingsSync.
-      controllers.push_back(std::make_unique<syncer::ModelTypeController>(
-          syncer::WEB_APPS,
-          std::make_unique<syncer::ForwardingModelTypeControllerDelegate>(
-              GetControllerDelegateForModelType(syncer::WEB_APPS).get())));
+      controllers.push_back(CreateWebAppsModelTypeController(sync_service));
     }
   }
 #endif  // BUILDFLAG(ENABLE_EXTENSIONS)
@@ -715,6 +705,49 @@
       syncer::APPS, GetModelTypeStoreService()->GetStoreFactory(),
       GetSyncableServiceForType(syncer::APPS), GetDumpStackClosure(), profile_);
 }
+
+std::unique_ptr<syncer::ModelTypeController>
+ChromeSyncClient::CreateAppSettingsModelTypeController(
+    syncer::SyncService* sync_service) {
+#if defined(OS_CHROMEOS)
+  if (chromeos::features::IsSplitSettingsSyncEnabled()) {
+    return std::make_unique<AppSettingsModelTypeController>(
+        GetModelTypeStoreService()->GetStoreFactory(),
+        extensions::settings_sync_util::GetSyncableServiceProvider(
+            profile_, syncer::APP_SETTINGS),
+        GetDumpStackClosure(), profile_, sync_service);
+  }
+  // Fall through.
+#endif
+  return std::make_unique<ExtensionSettingModelTypeController>(
+      syncer::APP_SETTINGS, GetModelTypeStoreService()->GetStoreFactory(),
+      extensions::settings_sync_util::GetSyncableServiceProvider(
+          profile_, syncer::APP_SETTINGS),
+      GetDumpStackClosure(), profile_);
+}
+
+std::unique_ptr<syncer::ModelTypeController>
+ChromeSyncClient::CreateWebAppsModelTypeController(
+    syncer::SyncService* sync_service) {
+  syncer::ModelTypeControllerDelegate* delegate =
+      GetControllerDelegateForModelType(syncer::WEB_APPS).get();
+#if defined(OS_CHROMEOS)
+  if (chromeos::features::IsSplitSettingsSyncEnabled()) {
+    // Use the same delegate in full-sync and transport-only modes.
+    return std::make_unique<OsSyncModelTypeController>(
+        syncer::WEB_APPS,
+        /*delegate_for_full_sync_mode=*/
+        std::make_unique<ForwardingModelTypeControllerDelegate>(delegate),
+        /*delegate_for_transport_mode=*/
+        std::make_unique<ForwardingModelTypeControllerDelegate>(delegate),
+        profile_->GetPrefs(), sync_service);
+  }
+  // Fall through.
+#endif
+  return std::make_unique<syncer::ModelTypeController>(
+      syncer::WEB_APPS,
+      std::make_unique<ForwardingModelTypeControllerDelegate>(delegate));
+}
 #endif  // BUILDFLAG(ENABLE_EXTENSIONS)
 
 }  // namespace browser_sync
diff --git a/chrome/browser/sync/chrome_sync_client.h b/chrome/browser/sync/chrome_sync_client.h
index ab6efec..33b48101 100644
--- a/chrome/browser/sync/chrome_sync_client.h
+++ b/chrome/browser/sync/chrome_sync_client.h
@@ -71,6 +71,14 @@
   // Creates the ModelTypeController for syncer::APPS.
   std::unique_ptr<syncer::ModelTypeController> CreateAppsModelTypeController(
       syncer::SyncService* sync_service);
+
+  // Creates the ModelTypeController for syncer::APP_SETTINGS.
+  std::unique_ptr<syncer::ModelTypeController>
+  CreateAppSettingsModelTypeController(syncer::SyncService* sync_service);
+
+  // Creates the ModelTypeController for syncer::WEB_APPS.
+  std::unique_ptr<syncer::ModelTypeController> CreateWebAppsModelTypeController(
+      syncer::SyncService* sync_service);
 #endif  // BUILDFLAG(ENABLE_EXTENSIONS)
 
   Profile* const profile_;
diff --git a/chrome/browser/sync/glue/extension_setting_model_type_controller.h b/chrome/browser/sync/glue/extension_setting_model_type_controller.h
index 75f07bd..47ef250 100644
--- a/chrome/browser/sync/glue/extension_setting_model_type_controller.h
+++ b/chrome/browser/sync/glue/extension_setting_model_type_controller.h
@@ -5,8 +5,6 @@
 #ifndef CHROME_BROWSER_SYNC_GLUE_EXTENSION_SETTING_MODEL_TYPE_CONTROLLER_H_
 #define CHROME_BROWSER_SYNC_GLUE_EXTENSION_SETTING_MODEL_TYPE_CONTROLLER_H_
 
-#include <string>
-
 #include "base/callback_forward.h"
 #include "base/macros.h"
 #include "components/sync/driver/non_ui_syncable_service_based_model_type_controller.h"
@@ -15,6 +13,9 @@
 
 namespace browser_sync {
 
+// A ModelTypeController that processes extension data on the extensions
+// background thread.
+// NOTE: Chrome OS uses a fork of this class for APP_SETTINGS.
 class ExtensionSettingModelTypeController
     : public syncer::NonUiSyncableServiceBasedModelTypeController {
  public:
diff --git a/chrome/browser/sync/profile_sync_service_factory.cc b/chrome/browser/sync/profile_sync_service_factory.cc
index fc79843..360ed3a 100644
--- a/chrome/browser/sync/profile_sync_service_factory.cc
+++ b/chrome/browser/sync/profile_sync_service_factory.cc
@@ -27,6 +27,7 @@
 #include "chrome/browser/password_manager/account_storage/account_password_store_factory.h"
 #include "chrome/browser/password_manager/password_store_factory.h"
 #include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/profiles/profile_manager.h"
 #include "chrome/browser/search_engines/template_url_service_factory.h"
 #include "chrome/browser/security_events/security_event_recorder_factory.h"
 #include "chrome/browser/signin/about_signin_internals_factory.h"
@@ -309,6 +310,20 @@
 }
 
 // static
+std::vector<const syncer::SyncService*>
+ProfileSyncServiceFactory::GetAllSyncServices() {
+  std::vector<Profile*> profiles =
+      g_browser_process->profile_manager()->GetLoadedProfiles();
+  std::vector<const syncer::SyncService*> sync_services;
+  for (Profile* profile : profiles) {
+    if (HasSyncService(profile)) {
+      sync_services.push_back(GetForProfile(profile));
+    }
+  }
+  return sync_services;
+}
+
+// static
 void ProfileSyncServiceFactory::SetSyncClientFactoryForTest(
     SyncClientFactory* client_factory) {
   client_factory_ = client_factory;
diff --git a/chrome/browser/sync/profile_sync_service_factory.h b/chrome/browser/sync/profile_sync_service_factory.h
index 2e2f416a0..16ec4aa 100644
--- a/chrome/browser/sync/profile_sync_service_factory.h
+++ b/chrome/browser/sync/profile_sync_service_factory.h
@@ -6,6 +6,7 @@
 #define CHROME_BROWSER_SYNC_PROFILE_SYNC_SERVICE_FACTORY_H_
 
 #include <memory>
+#include <vector>
 
 #include "base/macros.h"
 #include "components/keyed_service/content/browser_context_keyed_service_factory.h"
@@ -48,6 +49,10 @@
   // Overrides how the SyncClient is created for testing purposes.
   static void SetSyncClientFactoryForTest(SyncClientFactory* client_factory);
 
+  // Iterates over all profiles that have been loaded so far and extract their
+  // SyncService if present. Returned pointers are guaranteed to be not null.
+  static std::vector<const syncer::SyncService*> GetAllSyncServices();
+
  private:
   friend struct base::DefaultSingletonTraits<ProfileSyncServiceFactory>;
 
diff --git a/chrome/browser/sync/test/integration/bookmarks_helper.cc b/chrome/browser/sync/test/integration/bookmarks_helper.cc
index 5ee50d8..7ac015a78 100644
--- a/chrome/browser/sync/test/integration/bookmarks_helper.cc
+++ b/chrome/browser/sync/test/integration/bookmarks_helper.cc
@@ -30,7 +30,6 @@
 #include "chrome/browser/bookmarks/bookmark_model_factory.h"
 #include "chrome/browser/bookmarks/managed_bookmark_service_factory.h"
 #include "chrome/browser/favicon/favicon_service_factory.h"
-#include "chrome/browser/history/history_service_factory.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/sync/test/integration/profile_sync_service_harness.h"
 #include "chrome/browser/sync/test/integration/sync_datatype_helper.h"
@@ -42,9 +41,6 @@
 #include "components/bookmarks/managed/managed_bookmark_service.h"
 #include "components/favicon/core/favicon_service.h"
 #include "components/favicon_base/favicon_util.h"
-#include "components/history/core/browser/history_db_task.h"
-#include "components/history/core/browser/history_service.h"
-#include "components/history/core/browser/history_types.h"
 #include "components/sync/driver/profile_sync_service.h"
 #include "components/sync/test/fake_server/entity_builder_factory.h"
 #include "content/public/test/test_utils.h"
@@ -99,23 +95,6 @@
                                 pixel_size);
 }
 
-// History task which signals an event.
-class SignalEventTask : public history::HistoryDBTask {
- public:
-  explicit SignalEventTask(base::WaitableEvent* done) : done_(done) {}
-
-  bool RunOnDBThread(history::HistoryBackend* backend,
-                     history::HistoryDatabase* db) override {
-    done_->Signal();
-    return true;
-  }
-
-  void DoneRunOnMainThread() override {}
-
- private:
-  base::WaitableEvent* done_;
-};
-
 // Helper class used to wait for changes to take effect on the favicon of a
 // particular bookmark node in a particular bookmark model.
 class FaviconChangeObserver : public bookmarks::BookmarkModelObserver {
@@ -170,12 +149,6 @@
   DISALLOW_COPY_AND_ASSIGN(FaviconChangeObserver);
 };
 
-// A collection of URLs for which we have added favicons. Since loading a
-// favicon is an asynchronous operation and doesn't necessarily invoke a
-// callback, this collection is used to determine if we must wait for a URL's
-// favicon to load or not.
-std::set<GURL>* urls_with_favicons_ = nullptr;
-
 // Returns the number of nodes of node type |node_type| in |model| whose
 // titles match the string |title|.
 size_t CountNodesWithTitlesMatching(BookmarkModel* model,
@@ -254,21 +227,16 @@
 // nullopt if the favicon is still loading.
 base::Optional<FaviconData> GetFaviconData(BookmarkModel* model,
                                            const BookmarkNode* node) {
-  // If a favicon wasn't explicitly set for a particular URL, simply return its
-  // blank favicon.
-  if (!urls_with_favicons_ ||
-      urls_with_favicons_->find(node->url()) == urls_with_favicons_->end()) {
-    return FaviconData();
-  }
-  // If a favicon was explicitly set, we may need to wait for it to be loaded
-  // via BookmarkModel::GetFavicon(), which is an asynchronous operation.
+  // We may need to wait for the favicon to be loaded via
+  // BookmarkModel::GetFavicon(), which is an asynchronous operation.
   if (!node->is_favicon_loaded()) {
     model->GetFavicon(node);
     // Favicon still loading, no data available just yet.
     return base::nullopt;
   }
 
-  // Favicon loaded: return actual image.
+  // Favicon loaded: return actual image, if there is one (the no-favicon case
+  // is also considered loaded).
   return FaviconData(model->GetFavicon(node),
                      node->icon_url() ? *node->icon_url() : GURL());
 }
@@ -343,51 +311,21 @@
   model->GetFavicon(node);
 }
 
-// Wait for all currently scheduled tasks on the history thread for all
-// profiles to complete and any notifications sent to the UI thread to have
-// finished processing.
-void WaitForHistoryToProcessPendingTasks() {
-  // Skip waiting for history to complete for tests without favicons.
-  if (!urls_with_favicons_)
-    return;
-
-  std::vector<Profile*> profiles_which_need_to_wait;
-  if (sync_datatype_helper::test()->use_verifier())
-    profiles_which_need_to_wait.push_back(
-        sync_datatype_helper::test()->verifier());
-  for (int i = 0; i < sync_datatype_helper::test()->num_clients(); ++i)
-    profiles_which_need_to_wait.push_back(
-        sync_datatype_helper::test()->GetProfile(i));
-
-  for (size_t i = 0; i < profiles_which_need_to_wait.size(); ++i) {
-    Profile* profile = profiles_which_need_to_wait[i];
-    history::HistoryService* history_service =
-        HistoryServiceFactory::GetForProfileWithoutCreating(profile);
-    base::WaitableEvent done(base::WaitableEvent::ResetPolicy::AUTOMATIC,
-                             base::WaitableEvent::InitialState::NOT_SIGNALED);
-    base::CancelableTaskTracker task_tracker;
-    // Post a task that signals |done|. Since tasks run in posting order, all
-    // previously posted tasks have run when |done| is signaled.
-    history_service->ScheduleDBTask(
-        FROM_HERE, std::make_unique<SignalEventTask>(&done), &task_tracker);
-    done.Wait();
-  }
-  // Wait such that any notifications broadcast from one of the history threads
-  // to the UI thread are processed.
-  content::RunAllPendingInMessageLoop();
-}
-
 // Checks if the favicon in |node_a| from |model_a| matches that of |node_b|
 // from |model_b|. Returns true if they match.
 bool FaviconsMatch(BookmarkModel* model_a,
                    BookmarkModel* model_b,
                    const BookmarkNode* node_a,
                    const BookmarkNode* node_b) {
+  DCHECK(!node_a->is_folder());
+  DCHECK(!node_b->is_folder());
+
   base::Optional<FaviconData> favicon_data_a = GetFaviconData(model_a, node_a);
   base::Optional<FaviconData> favicon_data_b = GetFaviconData(model_b, node_b);
 
   // If either of the two favicons is still loading, let's return false now
-  // because observers will get notified when the load completes.
+  // because observers will get notified when the load completes. Note that even
+  // the lack of favicon is considered a loaded favicon.
   if (!favicon_data_a.has_value() || !favicon_data_b.has_value())
     return false;
 
@@ -449,7 +387,6 @@
 // terms of the data model and favicon. Returns true if they both match.
 // Note: Some peripheral fields like creation times are allowed to mismatch.
 bool BookmarkModelsMatch(BookmarkModel* model_a, BookmarkModel* model_b) {
-  bool ret_val = true;
   ui::TreeNodeIterator<const BookmarkNode> iterator_a(
       model_a->root_node(), base::Bind(&NodeCantBeSynced, model_a->client()));
   ui::TreeNodeIterator<const BookmarkNode> iterator_b(
@@ -461,13 +398,19 @@
       return false;
     }
     const BookmarkNode* node_b = iterator_b.Next();
-    ret_val = ret_val && NodesMatch(node_a, node_b);
-    if (node_a->is_folder() || node_b->is_folder())
+    if (!NodesMatch(node_a, node_b)) {
+      LOG(ERROR) << "Nodes do not match";
+      return false;
+    }
+    if (node_a->is_folder() || node_b->is_folder()) {
       continue;
-    ret_val = ret_val && FaviconsMatch(model_a, model_b, node_a, node_b);
+    }
+    if (!FaviconsMatch(model_a, model_b, node_a, node_b)) {
+      LOG(ERROR) << "Favicons do not match";
+      return false;
+    }
   }
-  ret_val = ret_val && (!iterator_b.has_next());
-  return ret_val;
+  return !iterator_b.has_next();
 }
 
 // Finds the node in the verifier bookmark model that corresponds to
@@ -513,6 +456,15 @@
   return all_nodes;
 }
 
+void TriggerAllFaviconLoading(BookmarkModel* model) {
+  for (const BookmarkNode* node : GetAllBookmarkNodes(model)) {
+    if (!node->is_favicon_loaded()) {
+      // GetFavicon() kicks off the loading.
+      model->GetFavicon(node);
+    }
+  }
+}
+
 }  // namespace
 
 BookmarkModel* GetBookmarkModel(int index) {
@@ -657,9 +609,6 @@
       << "Profile " << profile;
   ASSERT_EQ(BookmarkNode::URL, node->type()) << "Node " << node->GetTitle()
                                              << " must be a url.";
-  if (urls_with_favicons_ == nullptr)
-    urls_with_favicons_ = new std::set<GURL>();
-  urls_with_favicons_->insert(node->url());
   if (sync_datatype_helper::test()->use_verifier()) {
     const BookmarkNode* v_node = nullptr;
     FindNodeInVerifier(model, node, &v_node);
@@ -683,7 +632,6 @@
       << "Profile " << profile;
   ASSERT_EQ(BookmarkNode::URL, node->type()) << "Node " << node->GetTitle()
                                              << " must be a url.";
-  ASSERT_EQ(1u, urls_with_favicons_->count(node->url()));
 
   if (sync_datatype_helper::test()->use_verifier()) {
     const BookmarkNode* v_node = nullptr;
@@ -691,8 +639,6 @@
     ExpireFaviconImpl(sync_datatype_helper::test()->verifier(), node);
   }
   ExpireFaviconImpl(sync_datatype_helper::test()->GetProfile(profile), node);
-
-  WaitForHistoryToProcessPendingTasks();
 }
 
 void CheckFaviconExpired(int profile, const GURL& icon_url) {
@@ -751,8 +697,6 @@
   }
   DeleteFaviconMappingsImpl(sync_datatype_helper::test()->GetProfile(profile),
                             node, favicon_source);
-
-  WaitForHistoryToProcessPendingTasks();
 }
 
 const BookmarkNode* SetURL(int profile,
@@ -859,11 +803,6 @@
 }
 
 bool AllModelsMatchVerifier() {
-  // Ensure that all tasks have finished processing on the history thread
-  // and that any notifications the history thread may have sent have been
-  // processed before comparing models.
-  WaitForHistoryToProcessPendingTasks();
-
   for (int i = 0; i < sync_datatype_helper::test()->num_clients(); ++i) {
     if (!ModelMatchesVerifier(i)) {
       LOG(ERROR) << "Model " << i << " does not match the verifier.";
@@ -879,11 +818,6 @@
 }
 
 bool AllModelsMatch() {
-  // Ensure that all tasks have finished processing on the history thread
-  // and that any notifications the history thread may have sent have been
-  // processed before comparing models.
-  WaitForHistoryToProcessPendingTasks();
-
   for (int i = 1; i < sync_datatype_helper::test()->num_clients(); ++i) {
     if (!ModelsMatch(0, i)) {
       LOG(ERROR) << "Model " << i << " does not match Model 0.";
@@ -1146,53 +1080,30 @@
   cb_.Run();
 }
 
-BookmarksMatchChecker::BookmarksMatchChecker()
-    : MultiClientStatusChangeChecker(
-          sync_datatype_helper::test()->GetSyncServices()) {}
+BookmarkModelStatusChangeChecker::BookmarkModelStatusChangeChecker() = default;
 
-bool BookmarksMatchChecker::IsExitConditionSatisfied(std::ostream* os) {
-  *os << "Waiting for matching models";
-  return AllModelsMatch();
+BookmarkModelStatusChangeChecker::~BookmarkModelStatusChangeChecker() {
+  for (const auto& model_and_observer : observers_) {
+    model_and_observer.first->RemoveObserver(model_and_observer.second.get());
+  }
 }
 
-BookmarksMatchVerifierChecker::BookmarksMatchVerifierChecker()
-    : MultiClientStatusChangeChecker(
-          sync_datatype_helper::test()->GetSyncServices()) {}
-
-bool BookmarksMatchVerifierChecker::IsExitConditionSatisfied(std::ostream* os) {
-  *os << "Waiting for model to match verifier";
-  return AllModelsMatchVerifier();
+void BookmarkModelStatusChangeChecker::Observe(
+    bookmarks::BookmarkModel* model) {
+  auto observer =
+      std::make_unique<AnyBookmarkChangeObserver>(base::BindRepeating(
+          &SingleBookmarkModelStatusChangeChecker::PostCheckExitCondition,
+          weak_ptr_factory_.GetWeakPtr()));
+  model->AddObserver(observer.get());
+  observers_.emplace_back(model, std::move(observer));
 }
 
-SingleBookmarkModelStatusChangeChecker::SingleBookmarkModelStatusChangeChecker(
-    int profile_index)
-    : profile_index_(profile_index),
-      bookmark_model_(GetBookmarkModel(profile_index)) {
-  observer_ = std::make_unique<AnyBookmarkChangeObserver>(base::BindRepeating(
-      &SingleBookmarkModelStatusChangeChecker::PostCheckExitCondition,
-      weak_ptr_factory_.GetWeakPtr()));
-  bookmark_model_->AddObserver(observer_.get());
-}
-
-SingleBookmarkModelStatusChangeChecker::
-    ~SingleBookmarkModelStatusChangeChecker() {
-  bookmark_model_->RemoveObserver(observer_.get());
-}
-
-int SingleBookmarkModelStatusChangeChecker::profile_index() const {
-  return profile_index_;
-}
-
-BookmarkModel* SingleBookmarkModelStatusChangeChecker::bookmark_model() const {
-  return bookmark_model_;
-}
-
-void SingleBookmarkModelStatusChangeChecker::CheckExitCondition() {
+void BookmarkModelStatusChangeChecker::CheckExitCondition() {
   pending_check_exit_condition_ = false;
   StatusChangeChecker::CheckExitCondition();
 }
 
-void SingleBookmarkModelStatusChangeChecker::PostCheckExitCondition() {
+void BookmarkModelStatusChangeChecker::PostCheckExitCondition() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 
   if (pending_check_exit_condition_) {
@@ -1206,9 +1117,64 @@
   // that the checker doesn't immediately kick in while bookmarks are modified.
   base::SequencedTaskRunnerHandle::Get()->PostTask(
       FROM_HERE,
-      base::BindRepeating(
-          &SingleBookmarkModelStatusChangeChecker::CheckExitCondition,
-          weak_ptr_factory_.GetWeakPtr()));
+      base::BindRepeating(&BookmarkModelStatusChangeChecker::CheckExitCondition,
+                          weak_ptr_factory_.GetWeakPtr()));
+}
+
+BookmarksMatchChecker::BookmarksMatchChecker() {
+  for (int i = 0; i < sync_datatype_helper::test()->num_clients(); ++i) {
+    Observe(GetBookmarkModel(i));
+  }
+}
+
+bool BookmarksMatchChecker::IsExitConditionSatisfied(std::ostream* os) {
+  *os << "Waiting for matching models";
+  return AllModelsMatch();
+}
+
+bool BookmarksMatchChecker::Wait() {
+  for (int i = 0; i < sync_datatype_helper::test()->num_clients(); ++i) {
+    TriggerAllFaviconLoading(GetBookmarkModel(i));
+  }
+  return BookmarkModelStatusChangeChecker::Wait();
+}
+
+BookmarksMatchVerifierChecker::BookmarksMatchVerifierChecker() {
+  Observe(GetVerifierBookmarkModel());
+  for (int i = 0; i < sync_datatype_helper::test()->num_clients(); ++i) {
+    Observe(GetBookmarkModel(i));
+  }
+}
+
+bool BookmarksMatchVerifierChecker::IsExitConditionSatisfied(std::ostream* os) {
+  *os << "Waiting for model to match verifier";
+  return AllModelsMatchVerifier();
+}
+
+bool BookmarksMatchVerifierChecker::Wait() {
+  TriggerAllFaviconLoading(GetVerifierBookmarkModel());
+  for (int i = 0; i < sync_datatype_helper::test()->num_clients(); ++i) {
+    TriggerAllFaviconLoading(GetBookmarkModel(i));
+  }
+  return BookmarkModelStatusChangeChecker::Wait();
+}
+
+SingleBookmarkModelStatusChangeChecker::SingleBookmarkModelStatusChangeChecker(
+    int profile_index)
+    : profile_index_(profile_index),
+      bookmark_model_(GetBookmarkModel(profile_index)) {
+  Observe(bookmark_model_);
+}
+
+SingleBookmarkModelStatusChangeChecker::
+    ~SingleBookmarkModelStatusChangeChecker() = default;
+
+int SingleBookmarkModelStatusChangeChecker::profile_index() const {
+  return profile_index_;
+}
+
+BookmarkModel* SingleBookmarkModelStatusChangeChecker::bookmark_model() const {
+  return bookmark_model_;
 }
 
 SingleBookmarksModelMatcherChecker::SingleBookmarksModelMatcherChecker(
diff --git a/chrome/browser/sync/test/integration/bookmarks_helper.h b/chrome/browser/sync/test/integration/bookmarks_helper.h
index 5729ae2..ee6081f 100644
--- a/chrome/browser/sync/test/integration/bookmarks_helper.h
+++ b/chrome/browser/sync/test/integration/bookmarks_helper.h
@@ -310,27 +310,54 @@
   const base::RepeatingClosure cb_;
 };
 
+// Base class used for checkers that verify the state of an arbitrary number
+// of BookmarkModel instances.
+class BookmarkModelStatusChangeChecker : public StatusChangeChecker {
+ public:
+  BookmarkModelStatusChangeChecker();
+  ~BookmarkModelStatusChangeChecker() override;
+
+  BookmarkModelStatusChangeChecker(const BookmarkModelStatusChangeChecker&) =
+      delete;
+  BookmarkModelStatusChangeChecker& operator=(
+      const BookmarkModelStatusChangeChecker&) = delete;
+
+ protected:
+  void Observe(bookmarks::BookmarkModel* model);
+
+  // StatusChangeChecker override.
+  void CheckExitCondition() override;
+
+ private:
+  // Equivalent of CheckExitCondition() that instead posts a task in the current
+  // task runner.
+  void PostCheckExitCondition();
+
+  SEQUENCE_CHECKER(sequence_checker_);
+
+  std::vector<std::pair<bookmarks::BookmarkModel*,
+                        std::unique_ptr<AnyBookmarkChangeObserver>>>
+      observers_;
+
+  bool pending_check_exit_condition_ = false;
+  base::WeakPtrFactory<BookmarkModelStatusChangeChecker> weak_ptr_factory_{
+      this};
+};
+
 // Checker used to block until bookmarks match on all clients.
-class BookmarksMatchChecker : public MultiClientStatusChangeChecker {
+class BookmarksMatchChecker : public BookmarkModelStatusChangeChecker {
  public:
   BookmarksMatchChecker();
 
   // StatusChangeChecker implementation.
   bool IsExitConditionSatisfied(std::ostream* os) override;
-};
-
-// Checker used to block until bookmarks match the verifier bookmark model.
-class BookmarksMatchVerifierChecker : public MultiClientStatusChangeChecker {
- public:
-  BookmarksMatchVerifierChecker();
-
-  // StatusChangeChecker implementation.
-  bool IsExitConditionSatisfied(std::ostream* os) override;
+  bool Wait() override;
 };
 
 // Base class used for checkers that verify the state of a single BookmarkModel
 // instance.
-class SingleBookmarkModelStatusChangeChecker : public StatusChangeChecker {
+class SingleBookmarkModelStatusChangeChecker
+    : public BookmarkModelStatusChangeChecker {
  public:
   explicit SingleBookmarkModelStatusChangeChecker(int profile_index);
   ~SingleBookmarkModelStatusChangeChecker() override;
@@ -344,22 +371,19 @@
   int profile_index() const;
   bookmarks::BookmarkModel* bookmark_model() const;
 
-  // StatusChangeChecker override.
-  void CheckExitCondition() override;
-
  private:
-  // Equivalent of CheckExitCondition() that instead posts a task in the current
-  // task runner.
-  void PostCheckExitCondition();
-
-  SEQUENCE_CHECKER(sequence_checker_);
-
   const int profile_index_;
   bookmarks::BookmarkModel* bookmark_model_;
-  std::unique_ptr<AnyBookmarkChangeObserver> observer_;
-  bool pending_check_exit_condition_ = false;
-  base::WeakPtrFactory<SingleBookmarkModelStatusChangeChecker>
-      weak_ptr_factory_{this};
+};
+
+// Checker used to block until bookmarks match the verifier bookmark model.
+class BookmarksMatchVerifierChecker : public BookmarkModelStatusChangeChecker {
+ public:
+  BookmarksMatchVerifierChecker();
+
+  // StatusChangeChecker implementation.
+  bool IsExitConditionSatisfied(std::ostream* os) override;
+  bool Wait() override;
 };
 
 // Generic status change checker that waits until a predicate as defined by
diff --git a/chrome/browser/sync/test/integration/single_client_app_settings_sync_test.cc b/chrome/browser/sync/test/integration/single_client_app_settings_sync_test.cc
new file mode 100644
index 0000000..fdd06f7
--- /dev/null
+++ b/chrome/browser/sync/test/integration/single_client_app_settings_sync_test.cc
@@ -0,0 +1,67 @@
+// 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 "chrome/browser/sync/test/integration/sync_test.h"
+#include "components/sync/base/model_type.h"
+#include "components/sync/base/user_selectable_type.h"
+#include "components/sync/driver/profile_sync_service.h"
+#include "components/sync/driver/sync_user_settings.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+#if defined(OS_CHROMEOS)
+#include "chrome/browser/sync/test/integration/os_sync_test.h"
+#include "chromeos/constants/chromeos_features.h"
+#endif
+
+using syncer::UserSelectableType;
+using syncer::UserSelectableTypeSet;
+
+namespace {
+
+#if defined(OS_CHROMEOS)
+// Chrome OS syncs apps as an OS type.
+class SingleClientAppSettingsOsSyncTest : public OsSyncTest {
+ public:
+  SingleClientAppSettingsOsSyncTest() : OsSyncTest(SINGLE_CLIENT) {}
+  ~SingleClientAppSettingsOsSyncTest() override = default;
+};
+
+IN_PROC_BROWSER_TEST_F(SingleClientAppSettingsOsSyncTest,
+                       DisablingOsSyncFeatureDisablesDataType) {
+  ASSERT_TRUE(chromeos::features::IsSplitSettingsSyncEnabled());
+  ASSERT_TRUE(SetupSync());
+  syncer::ProfileSyncService* service = GetSyncService(0);
+  syncer::SyncUserSettings* settings = service->GetUserSettings();
+
+  EXPECT_TRUE(settings->GetOsSyncFeatureEnabled());
+  EXPECT_TRUE(service->GetActiveDataTypes().Has(syncer::APP_SETTINGS));
+
+  settings->SetOsSyncFeatureEnabled(false);
+  EXPECT_FALSE(settings->GetOsSyncFeatureEnabled());
+  EXPECT_FALSE(service->GetActiveDataTypes().Has(syncer::APP_SETTINGS));
+}
+
+#else   // !defined(OS_CHROMEOS)
+
+// See also TwoClientExtensionSettingsAndAppSettingsSyncTest.
+class SingleClientAppSettingsSyncTest : public SyncTest {
+ public:
+  SingleClientAppSettingsSyncTest() : SyncTest(SINGLE_CLIENT) {}
+  ~SingleClientAppSettingsSyncTest() override = default;
+};
+
+IN_PROC_BROWSER_TEST_F(SingleClientAppSettingsSyncTest, Basics) {
+  ASSERT_TRUE(SetupSync());
+  syncer::ProfileSyncService* service = GetSyncService(0);
+  syncer::SyncUserSettings* settings = service->GetUserSettings();
+  EXPECT_TRUE(settings->GetSelectedTypes().Has(UserSelectableType::kApps));
+  EXPECT_TRUE(service->GetActiveDataTypes().Has(syncer::APP_SETTINGS));
+
+  settings->SetSelectedTypes(false, UserSelectableTypeSet());
+  EXPECT_FALSE(settings->GetSelectedTypes().Has(UserSelectableType::kApps));
+  EXPECT_FALSE(service->GetActiveDataTypes().Has(syncer::APP_SETTINGS));
+}
+#endif  // defined(OS_CHROMEOS)
+
+}  // namespace
diff --git a/chrome/browser/sync/test/integration/single_client_bookmarks_sync_test.cc b/chrome/browser/sync/test/integration/single_client_bookmarks_sync_test.cc
index 6217c91..1c03c3b 100644
--- a/chrome/browser/sync/test/integration/single_client_bookmarks_sync_test.cc
+++ b/chrome/browser/sync/test/integration/single_client_bookmarks_sync_test.cc
@@ -35,6 +35,7 @@
 using bookmarks_helper::AddFolder;
 using bookmarks_helper::AddURL;
 using bookmarks_helper::BookmarksGUIDChecker;
+using bookmarks_helper::BookmarksMatchVerifierChecker;
 using bookmarks_helper::BookmarksTitleChecker;
 using bookmarks_helper::BookmarksUrlChecker;
 using bookmarks_helper::CheckHasNoFavicon;
@@ -131,7 +132,7 @@
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
   ASSERT_TRUE(
       UpdatedProgressMarkerChecker(GetSyncService(kSingleProfileIndex)).Wait());
-  ASSERT_TRUE(ModelMatchesVerifier(kSingleProfileIndex));
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   //  Ultimately we want to end up with the following model; but this test is
   //  more about the journey than the destination.
@@ -163,7 +164,7 @@
   // Wait for the bookmark position change to sync.
   ASSERT_TRUE(
       UpdatedProgressMarkerChecker(GetSyncService(kSingleProfileIndex)).Wait());
-  ASSERT_TRUE(ModelMatchesVerifier(kSingleProfileIndex));
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   const BookmarkNode* porsche = AddURL(
       kSingleProfileIndex, bar, 2, "Porsche", GURL("http://www.porsche.com"));
@@ -176,7 +177,7 @@
   // Wait for the rearranged hierarchy to sync.
   ASSERT_TRUE(
       UpdatedProgressMarkerChecker(GetSyncService(kSingleProfileIndex)).Wait());
-  ASSERT_TRUE(ModelMatchesVerifier(kSingleProfileIndex));
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   ASSERT_EQ(1, tier1_a_url0->parent()->GetIndexOf(tier1_a_url0));
   Move(kSingleProfileIndex, tier1_a_url0, bar, bar->children().size());
@@ -201,7 +202,7 @@
   // Wait for the title change to sync.
   ASSERT_TRUE(
       UpdatedProgressMarkerChecker(GetSyncService(kSingleProfileIndex)).Wait());
-  ASSERT_TRUE(ModelMatchesVerifier(kSingleProfileIndex));
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   ASSERT_EQ(tier1_a_url0->id(), top->children().back()->id());
   Remove(kSingleProfileIndex, top, top->children().size() - 1);
@@ -221,7 +222,7 @@
   // Wait for newly added bookmarks to sync.
   ASSERT_TRUE(
       UpdatedProgressMarkerChecker(GetSyncService(kSingleProfileIndex)).Wait());
-  ASSERT_TRUE(ModelMatchesVerifier(kSingleProfileIndex));
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   // Only verify FakeServer data if FakeServer is being used.
   // TODO(pvalenzuela): Use this style of verification in more tests once it is
@@ -268,7 +269,7 @@
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
   ASSERT_TRUE(
       UpdatedProgressMarkerChecker(GetSyncService(kSingleProfileIndex)).Wait());
-  EXPECT_TRUE(ModelMatchesVerifier(kSingleProfileIndex));
+  EXPECT_TRUE(BookmarksMatchVerifierChecker().Wait());
 }
 
 IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest, InjectedBookmark) {
@@ -300,7 +301,7 @@
   ui::SetSupportedScaleFactors(supported_scale_factors);
 
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(ModelMatchesVerifier(kSingleProfileIndex));
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   const GURL page_url("http://www.google.com");
   const GURL icon_url("http://www.google.com/favicon.ico");
@@ -318,7 +319,7 @@
 
   ASSERT_TRUE(
       UpdatedProgressMarkerChecker(GetSyncService(kSingleProfileIndex)).Wait());
-  ASSERT_TRUE(ModelMatchesVerifier(kSingleProfileIndex));
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   scoped_refptr<base::RefCountedMemory> original_favicon_bytes =
       original_favicon.As1xPNGBytes();
@@ -336,7 +337,7 @@
 // from the local database.
 IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest, DeleteFaviconFromSync) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(ModelMatchesVerifier(kSingleProfileIndex));
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   const GURL page_url("http://www.google.com");
   const GURL icon_url("http://www.google.com/favicon.ico");
@@ -345,7 +346,7 @@
              bookmarks_helper::FROM_UI);
   ASSERT_TRUE(
       UpdatedProgressMarkerChecker(GetSyncService(kSingleProfileIndex)).Wait());
-  ASSERT_TRUE(ModelMatchesVerifier(kSingleProfileIndex));
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   // Simulate receiving a favicon deletion from sync.
   DeleteFaviconMappings(kSingleProfileIndex, bookmark,
@@ -353,7 +354,7 @@
 
   ASSERT_TRUE(
       UpdatedProgressMarkerChecker(GetSyncService(kSingleProfileIndex)).Wait());
-  ASSERT_TRUE(ModelMatchesVerifier(kSingleProfileIndex));
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   CheckHasNoFavicon(kSingleProfileIndex, page_url);
   EXPECT_TRUE(
@@ -408,7 +409,7 @@
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
   ASSERT_TRUE(
       UpdatedProgressMarkerChecker(GetSyncService(kSingleProfileIndex)).Wait());
-  ASSERT_TRUE(ModelMatchesVerifier(kSingleProfileIndex));
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   // Remove all bookmarks and wait for sync completion.
   RemoveAll(kSingleProfileIndex);
@@ -418,7 +419,7 @@
   EXPECT_TRUE(GetOtherNode(kSingleProfileIndex)->children().empty());
   EXPECT_TRUE(GetBookmarkBarNode(kSingleProfileIndex)->children().empty());
   // Verify model matches verifier.
-  ASSERT_TRUE(ModelMatchesVerifier(kSingleProfileIndex));
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 }
 
 IN_PROC_BROWSER_TEST_P(SingleClientBookmarksSyncTest, DownloadDeletedBookmark) {
@@ -723,7 +724,6 @@
                             /*index=*/0, "title", GURL("http://www.url.com")));
   ASSERT_TRUE(
       UpdatedProgressMarkerChecker(GetSyncService(kSingleProfileIndex)).Wait());
-  EXPECT_TRUE(ModelMatchesVerifier(kSingleProfileIndex));
 
   // There should have been one creation and no deletions.
   EXPECT_EQ(
diff --git a/chrome/browser/sync/test/integration/single_client_standalone_transport_sync_test.cc b/chrome/browser/sync/test/integration/single_client_standalone_transport_sync_test.cc
index ffceac0f..30abb12 100644
--- a/chrome/browser/sync/test/integration/single_client_standalone_transport_sync_test.cc
+++ b/chrome/browser/sync/test/integration/single_client_standalone_transport_sync_test.cc
@@ -21,6 +21,7 @@
 
 #if defined(OS_CHROMEOS)
 #include "chrome/browser/sync/test/integration/os_sync_test.h"
+#include "chrome/common/chrome_features.h"
 #include "chromeos/constants/chromeos_features.h"
 #include "components/browser_sync/browser_sync_switches.h"
 #endif
@@ -297,9 +298,11 @@
 class SingleClientStandaloneTransportOsSyncTest : public OsSyncTest {
  public:
   SingleClientStandaloneTransportOsSyncTest() : OsSyncTest(SINGLE_CLIENT) {
-    // Enable the Wi-Fi type and don't auto-start browser sync.
+    // Don't auto-start browser sync. Enable in-development types.
     scoped_features_.InitWithFeatures(
-        {switches::kSyncWifiConfigurations, switches::kSyncManualStartChromeOS},
+        {switches::kSyncManualStartChromeOS,
+         features::kDesktopPWAsWithoutExtensions, features::kDesktopPWAsUSS,
+         switches::kSyncWifiConfigurations},
         {});
   }
   ~SingleClientStandaloneTransportOsSyncTest() override = default;
@@ -329,11 +332,13 @@
   // OS data types synced by the transport layer are active.
   syncer::ModelTypeSet active_types = service->GetActiveDataTypes();
   EXPECT_TRUE(active_types.Has(syncer::APP_LIST));
+  EXPECT_TRUE(active_types.Has(syncer::APP_SETTINGS));
   EXPECT_TRUE(active_types.Has(syncer::APPS));
   EXPECT_TRUE(active_types.Has(syncer::ARC_PACKAGE));
   EXPECT_TRUE(active_types.Has(syncer::OS_PREFERENCES));
   EXPECT_TRUE(active_types.Has(syncer::OS_PRIORITY_PREFERENCES));
   EXPECT_TRUE(active_types.Has(syncer::PRINTERS));
+  EXPECT_TRUE(active_types.Has(syncer::WEB_APPS));
   EXPECT_TRUE(active_types.Has(syncer::WIFI_CONFIGURATIONS));
 
   // Verify that a few browser non-transport-mode types are not active.
@@ -363,11 +368,13 @@
   // OS data types synced by the transport layer are not active.
   syncer::ModelTypeSet active_types = service->GetActiveDataTypes();
   EXPECT_FALSE(active_types.Has(syncer::APP_LIST));
+  EXPECT_FALSE(active_types.Has(syncer::APP_SETTINGS));
   EXPECT_FALSE(active_types.Has(syncer::APPS));
   EXPECT_FALSE(active_types.Has(syncer::ARC_PACKAGE));
   EXPECT_FALSE(active_types.Has(syncer::OS_PREFERENCES));
   EXPECT_FALSE(active_types.Has(syncer::OS_PRIORITY_PREFERENCES));
   EXPECT_FALSE(active_types.Has(syncer::PRINTERS));
+  EXPECT_FALSE(active_types.Has(syncer::WEB_APPS));
   EXPECT_FALSE(active_types.Has(syncer::WIFI_CONFIGURATIONS));
 
   // Browser non-transport-mode types are active.
diff --git a/chrome/browser/sync/test/integration/single_client_wallet_sync_test.cc b/chrome/browser/sync/test/integration/single_client_wallet_sync_test.cc
index ce7005dc4..241e2f2 100644
--- a/chrome/browser/sync/test/integration/single_client_wallet_sync_test.cc
+++ b/chrome/browser/sync/test/integration/single_client_wallet_sync_test.cc
@@ -20,6 +20,7 @@
 #include "components/autofill/core/browser/autofill_metrics.h"
 #include "components/autofill/core/browser/data_model/autofill_metadata.h"
 #include "components/autofill/core/browser/data_model/credit_card.h"
+#include "components/autofill/core/browser/data_model/credit_card_cloud_token_data.h"
 #include "components/autofill/core/browser/field_types.h"
 #include "components/autofill/core/browser/payments/payments_customer_data.h"
 #include "components/autofill/core/browser/personal_data_manager.h"
@@ -41,12 +42,15 @@
 using autofill::AutofillMetrics;
 using autofill::AutofillProfile;
 using autofill::CreditCard;
+using autofill::CreditCardCloudTokenData;
 using autofill::data_util::TruncateUTF8;
 using base::ASCIIToUTF16;
 using testing::Contains;
+using wallet_helper::CreateDefaultSyncCreditCardCloudTokenData;
 using wallet_helper::CreateDefaultSyncPaymentsCustomerData;
 using wallet_helper::CreateDefaultSyncWalletAddress;
 using wallet_helper::CreateDefaultSyncWalletCard;
+using wallet_helper::CreateSyncCreditCardCloudTokenData;
 using wallet_helper::CreateSyncPaymentsCustomerData;
 using wallet_helper::CreateSyncWalletAddress;
 using wallet_helper::CreateSyncWalletCard;
@@ -61,6 +65,7 @@
 using wallet_helper::GetWalletDataModelTypeState;
 using wallet_helper::kDefaultBillingAddressID;
 using wallet_helper::kDefaultCardID;
+using wallet_helper::kDefaultCreditCardCloudTokenDataID;
 using wallet_helper::kDefaultCustomerID;
 using wallet_helper::UnmaskServerCard;
 
@@ -190,6 +195,17 @@
 }
 #endif
 
+std::vector<std::unique_ptr<autofill::CreditCardCloudTokenData>>
+GetCreditCardCloudTokenData(
+    scoped_refptr<autofill::AutofillWebDataService> service) {
+  AutofillWebDataServiceConsumer<
+      std::vector<std::unique_ptr<CreditCardCloudTokenData>>>
+      consumer;
+  service->GetCreditCardCloudTokenData(&consumer);
+  consumer.Wait();
+  return std::move(consumer.result());
+}
+
 }  // namespace
 
 class SingleClientWalletSyncTest : public SyncTest {
@@ -381,7 +397,8 @@
 IN_PROC_BROWSER_TEST_F(SingleClientWalletSyncTest, ClearOnDisableSync) {
   GetFakeServer()->SetWalletData({CreateDefaultSyncWalletAddress(),
                                   CreateDefaultSyncWalletCard(),
-                                  CreateDefaultSyncPaymentsCustomerData()});
+                                  CreateDefaultSyncPaymentsCustomerData(),
+                                  CreateDefaultSyncCreditCardCloudTokenData()});
   ASSERT_TRUE(SetupSync());
 
   autofill::PersonalDataManager* pdm = GetPersonalDataManager(0);
@@ -390,6 +407,7 @@
   // Make sure the data & metadata is in the DB.
   ASSERT_EQ(1uL, pdm->GetServerProfiles().size());
   ASSERT_EQ(1uL, pdm->GetCreditCards().size());
+  ASSERT_EQ(1uL, pdm->GetCreditCardCloudTokenData().size());
   ASSERT_EQ(kDefaultCustomerID, pdm->GetPaymentsCustomerData()->customer_id);
   ASSERT_EQ(1U, GetServerCardsMetadata(0).size());
   ASSERT_EQ(1U, GetServerAddressesMetadata(0).size());
@@ -401,6 +419,7 @@
   EXPECT_EQ(0uL, pdm->GetServerProfiles().size());
   EXPECT_EQ(0uL, pdm->GetCreditCards().size());
   EXPECT_EQ(nullptr, pdm->GetPaymentsCustomerData());
+  EXPECT_EQ(0uL, pdm->GetCreditCardCloudTokenData().size());
   EXPECT_EQ(0U, GetServerCardsMetadata(0).size());
   EXPECT_EQ(0U, GetServerAddressesMetadata(0).size());
 
@@ -416,6 +435,7 @@
   EXPECT_EQ(1uL, pdm->GetServerProfiles().size());
   EXPECT_EQ(1uL, pdm->GetCreditCards().size());
   EXPECT_EQ(kDefaultCustomerID, pdm->GetPaymentsCustomerData()->customer_id);
+  EXPECT_EQ(1uL, pdm->GetCreditCardCloudTokenData().size());
   EXPECT_EQ(1U, GetServerCardsMetadata(0).size());
   EXPECT_EQ(1U, GetServerAddressesMetadata(0).size());
 }
@@ -425,7 +445,8 @@
 IN_PROC_BROWSER_TEST_F(SingleClientWalletSyncTest, ClearOnStopSync) {
   GetFakeServer()->SetWalletData({CreateDefaultSyncWalletAddress(),
                                   CreateDefaultSyncWalletCard(),
-                                  CreateDefaultSyncPaymentsCustomerData()});
+                                  CreateDefaultSyncPaymentsCustomerData(),
+                                  CreateDefaultSyncCreditCardCloudTokenData()});
   ASSERT_TRUE(SetupSync());
 
   autofill::PersonalDataManager* pdm = GetPersonalDataManager(0);
@@ -435,6 +456,7 @@
   ASSERT_EQ(1uL, pdm->GetServerProfiles().size());
   ASSERT_EQ(1uL, pdm->GetCreditCards().size());
   ASSERT_EQ(kDefaultCustomerID, pdm->GetPaymentsCustomerData()->customer_id);
+  ASSERT_EQ(1uL, pdm->GetCreditCardCloudTokenData().size());
   ASSERT_EQ(1U, GetServerCardsMetadata(0).size());
   ASSERT_EQ(1U, GetServerAddressesMetadata(0).size());
 
@@ -445,6 +467,7 @@
   EXPECT_EQ(0uL, pdm->GetServerProfiles().size());
   EXPECT_EQ(0uL, pdm->GetCreditCards().size());
   EXPECT_EQ(nullptr, pdm->GetPaymentsCustomerData());
+  EXPECT_EQ(0uL, pdm->GetCreditCardCloudTokenData().size());
   EXPECT_EQ(0U, GetServerCardsMetadata(0).size());
   EXPECT_EQ(0U, GetServerAddressesMetadata(0).size());
 
@@ -456,6 +479,7 @@
   EXPECT_EQ(1uL, pdm->GetServerProfiles().size());
   EXPECT_EQ(1uL, pdm->GetCreditCards().size());
   EXPECT_EQ(kDefaultCustomerID, pdm->GetPaymentsCustomerData()->customer_id);
+  EXPECT_EQ(1uL, pdm->GetCreditCardCloudTokenData().size());
   EXPECT_EQ(1U, GetServerCardsMetadata(0).size());
   EXPECT_EQ(1U, GetServerAddressesMetadata(0).size());
 }
@@ -466,7 +490,8 @@
 IN_PROC_BROWSER_TEST_F(SingleClientWalletSyncTest, ClearOnSignOut) {
   GetFakeServer()->SetWalletData({CreateDefaultSyncWalletAddress(),
                                   CreateDefaultSyncWalletCard(),
-                                  CreateDefaultSyncPaymentsCustomerData()});
+                                  CreateDefaultSyncPaymentsCustomerData(),
+                                  CreateDefaultSyncCreditCardCloudTokenData()});
   ASSERT_TRUE(SetupSync());
 
   autofill::PersonalDataManager* pdm = GetPersonalDataManager(0);
@@ -476,6 +501,7 @@
   ASSERT_EQ(1uL, pdm->GetServerProfiles().size());
   ASSERT_EQ(1uL, pdm->GetCreditCards().size());
   ASSERT_EQ(kDefaultCustomerID, pdm->GetPaymentsCustomerData()->customer_id);
+  ASSERT_EQ(1uL, pdm->GetCreditCardCloudTokenData().size());
   ASSERT_EQ(1U, GetServerCardsMetadata(0).size());
   ASSERT_EQ(1U, GetServerAddressesMetadata(0).size());
 
@@ -486,6 +512,7 @@
   EXPECT_EQ(0uL, pdm->GetServerProfiles().size());
   EXPECT_EQ(0uL, pdm->GetCreditCards().size());
   EXPECT_EQ(nullptr, pdm->GetPaymentsCustomerData());
+  EXPECT_EQ(0uL, pdm->GetCreditCardCloudTokenData().size());
   EXPECT_EQ(0U, GetServerCardsMetadata(0).size());
   EXPECT_EQ(0U, GetServerAddressesMetadata(0).size());
 }
@@ -499,7 +526,8 @@
       {CreateSyncWalletCard(/*name=*/"card-1", /*last_four=*/"0001",
                             kDefaultBillingAddressID),
        CreateSyncWalletAddress(/*name=*/"address-1", /*company=*/"Company-1"),
-       CreateDefaultSyncPaymentsCustomerData()});
+       CreateDefaultSyncPaymentsCustomerData(),
+       CreateSyncCreditCardCloudTokenData(/*cloud_token_data_id=*/"data-1")});
   ASSERT_TRUE(SetupSync());
 
   // Make sure the data is in the DB.
@@ -513,13 +541,18 @@
   EXPECT_EQ("Company-1", TruncateUTF8(base::UTF16ToUTF8(
                              profiles[0]->GetRawInfo(autofill::COMPANY_NAME))));
   EXPECT_EQ(kDefaultCustomerID, pdm->GetPaymentsCustomerData()->customer_id);
+  std::vector<CreditCardCloudTokenData*> cloud_token_data =
+      pdm->GetCreditCardCloudTokenData();
+  ASSERT_EQ(1uL, cloud_token_data.size());
+  EXPECT_EQ("data-1", cloud_token_data[0]->instrument_token);
 
   // Put some completely new data in the sync server.
   ASSERT_TRUE(SetWalletDataInFakeServerAndWaitForUpdates(
       {CreateSyncWalletCard(/*name=*/"new-card", /*last_four=*/"0002",
                             kDefaultBillingAddressID),
        CreateSyncWalletAddress(/*name=*/"new-address", /*company=*/"Company-2"),
-       CreateSyncPaymentsCustomerData(/*customer_id=*/"newid")}));
+       CreateSyncPaymentsCustomerData(/*customer_id=*/"newid"),
+       CreateSyncCreditCardCloudTokenData(/*cloud_token_data_id=*/"data-2")}));
 
   // Make sure only the new data is present.
   cards = pdm->GetCreditCards();
@@ -530,6 +563,9 @@
   EXPECT_EQ("Company-2", TruncateUTF8(base::UTF16ToUTF8(
                              profiles[0]->GetRawInfo(autofill::COMPANY_NAME))));
   EXPECT_EQ("newid", pdm->GetPaymentsCustomerData()->customer_id);
+  cloud_token_data = pdm->GetCreditCardCloudTokenData();
+  ASSERT_EQ(1uL, cloud_token_data.size());
+  EXPECT_EQ("data-2", cloud_token_data[0]->instrument_token);
 }
 
 // Wallet is not using incremental updates. The server either sends a non-empty
@@ -540,7 +576,8 @@
       {CreateSyncWalletCard(/*name=*/"card-1", /*last_four=*/"0001",
                             kDefaultBillingAddressID),
        CreateSyncWalletAddress(/*name=*/"address-1", /*company=*/"Company-1"),
-       CreateDefaultSyncPaymentsCustomerData()});
+       CreateDefaultSyncPaymentsCustomerData(),
+       CreateSyncCreditCardCloudTokenData("data-1")});
   ASSERT_TRUE(SetupSync());
 
   // Make sure the card is in the DB.
@@ -554,6 +591,10 @@
   EXPECT_EQ("Company-1", TruncateUTF8(base::UTF16ToUTF8(
                              profiles[0]->GetRawInfo(autofill::COMPANY_NAME))));
   EXPECT_EQ(kDefaultCustomerID, pdm->GetPaymentsCustomerData()->customer_id);
+  std::vector<CreditCardCloudTokenData*> cloud_token_data =
+      pdm->GetCreditCardCloudTokenData();
+  ASSERT_EQ(1uL, cloud_token_data.size());
+  EXPECT_EQ("data-1", cloud_token_data[0]->instrument_token);
 
   // Trigger a sync and wait for the new data to arrive.
   ASSERT_TRUE(TriggerGetUpdatesAndWait());
@@ -570,6 +611,9 @@
   EXPECT_EQ("Company-1", TruncateUTF8(base::UTF16ToUTF8(
                              profiles[0]->GetRawInfo(autofill::COMPANY_NAME))));
   EXPECT_EQ(kDefaultCustomerID, pdm->GetPaymentsCustomerData()->customer_id);
+  cloud_token_data = pdm->GetCreditCardCloudTokenData();
+  ASSERT_EQ(1uL, cloud_token_data.size());
+  EXPECT_EQ("data-1", cloud_token_data[0]->instrument_token);
 }
 
 // Check on top of EmptyUpdatesAreIgnored that the new progress marker is stored
@@ -580,7 +624,8 @@
       {CreateSyncWalletCard(/*name=*/"card-1", /*last_four=*/"0001",
                             kDefaultBillingAddressID),
        CreateSyncWalletAddress(/*name=*/"address-1", /*company=*/"Company-1"),
-       CreateDefaultSyncPaymentsCustomerData()});
+       CreateDefaultSyncPaymentsCustomerData(),
+       CreateDefaultSyncCreditCardCloudTokenData()});
   ASSERT_TRUE(SetupSync());
 
   sync_pb::ModelTypeState state_before = GetWalletDataModelTypeState(0);
@@ -607,7 +652,8 @@
       {CreateSyncWalletCard(/*name=*/"card-1", /*last_four=*/"0001",
                             kDefaultBillingAddressID),
        CreateSyncWalletAddress(/*name=*/"address-1", /*company=*/"Company-1"),
-       CreateDefaultSyncPaymentsCustomerData()});
+       CreateDefaultSyncPaymentsCustomerData(),
+       CreateSyncCreditCardCloudTokenData("data-1")});
   ASSERT_TRUE(SetupSync());
 
   // Refresh the pdm so that it gets data from autofill table.
@@ -623,13 +669,14 @@
   ASSERT_EQ(1uL, profiles.size());
   pdm->RecordUseOf(*profiles[0]);
 
-  // Keep the same data (only change the customer data to force the FakeServer
-  // to send the full update).
+  // Keep the same data (only change the customer data and the cloud token to
+  // force the FakeServer to send the full update).
   ASSERT_TRUE(SetWalletDataInFakeServerAndWaitForUpdates(
       {CreateSyncWalletCard(/*name=*/"card-1", /*last_four=*/"0001",
                             kDefaultBillingAddressID),
        CreateSyncWalletAddress(/*name=*/"address-1", /*company=*/"Company-1"),
-       CreateSyncPaymentsCustomerData("different")}));
+       CreateSyncPaymentsCustomerData("different"),
+       CreateSyncCreditCardCloudTokenData("data-2")}));
 
   // Refresh the pdm so that it gets cards from autofill table.
   RefreshAndWaitForOnPersonalDataChanged(pdm);
@@ -643,6 +690,10 @@
   EXPECT_EQ("Company-1", TruncateUTF8(base::UTF16ToUTF8(
                              profiles[0]->GetRawInfo(autofill::COMPANY_NAME))));
   EXPECT_EQ("different", pdm->GetPaymentsCustomerData()->customer_id);
+  std::vector<CreditCardCloudTokenData*> cloud_token_data =
+      pdm->GetCreditCardCloudTokenData();
+  ASSERT_EQ(1uL, cloud_token_data.size());
+  EXPECT_EQ("data-2", cloud_token_data[0]->instrument_token);
 
   // Test that the non-default metadata values stayed around.
   std::map<std::string, AutofillMetadata> cards_metadata =
@@ -671,7 +722,8 @@
       {CreateSyncWalletCard(/*name=*/"card-1", /*last_four=*/"0002",
                             kDefaultBillingAddressID),
        CreateSyncWalletAddress(/*name=*/"address-1", /*company=*/"Company-2"),
-       CreateDefaultSyncPaymentsCustomerData()});
+       CreateDefaultSyncPaymentsCustomerData(),
+       CreateSyncCreditCardCloudTokenData("data-1")});
   ASSERT_TRUE(SetupSync());
 
   // Refresh the pdm so that it gets data from autofill table.
@@ -693,7 +745,8 @@
       {CreateSyncWalletCard(/*name=*/"card-1", /*last_four=*/"0001",
                             kDefaultBillingAddressID),
        CreateSyncWalletAddress(/*name=*/"address-1", /*company=*/"Company-1"),
-       CreateSyncPaymentsCustomerData("different")}));
+       CreateSyncPaymentsCustomerData("different"),
+       CreateSyncCreditCardCloudTokenData("data-2")}));
 
   // Refresh the pdm so that it gets cards from autofill table.
   RefreshAndWaitForOnPersonalDataChanged(pdm);
@@ -706,6 +759,10 @@
   ASSERT_EQ(1uL, profiles.size());
   EXPECT_EQ("Company-1", TruncateUTF8(base::UTF16ToUTF8(
                              profiles[0]->GetRawInfo(autofill::COMPANY_NAME))));
+  std::vector<CreditCardCloudTokenData*> cloud_token_data =
+      pdm->GetCreditCardCloudTokenData();
+  ASSERT_EQ(1uL, cloud_token_data.size());
+  EXPECT_EQ("data-2", cloud_token_data[0]->instrument_token);
 
   // Test that the non-default metadata values stayed around.
   std::map<std::string, AutofillMetadata> cards_metadata =
@@ -774,7 +831,8 @@
                        DISABLED_ClearOnDisableWalletSync) {
   GetFakeServer()->SetWalletData({CreateDefaultSyncWalletAddress(),
                                   CreateDefaultSyncWalletCard(),
-                                  CreateDefaultSyncPaymentsCustomerData()});
+                                  CreateDefaultSyncPaymentsCustomerData(),
+                                  CreateDefaultSyncCreditCardCloudTokenData()});
   ASSERT_TRUE(SetupSync());
 
   autofill::PersonalDataManager* pdm = GetPersonalDataManager(0);
@@ -784,6 +842,7 @@
   ASSERT_EQ(1uL, pdm->GetServerProfiles().size());
   ASSERT_EQ(1uL, pdm->GetCreditCards().size());
   ASSERT_EQ(kDefaultCustomerID, pdm->GetPaymentsCustomerData()->customer_id);
+  ASSERT_EQ(1uL, pdm->GetCreditCardCloudTokenData().size());
   ASSERT_EQ(1U, GetServerCardsMetadata(0).size());
   ASSERT_EQ(1U, GetServerAddressesMetadata(0).size());
 
@@ -795,6 +854,7 @@
   EXPECT_EQ(0uL, pdm->GetServerProfiles().size());
   EXPECT_EQ(0uL, pdm->GetCreditCards().size());
   EXPECT_EQ(nullptr, pdm->GetPaymentsCustomerData());
+  EXPECT_EQ(0uL, pdm->GetCreditCardCloudTokenData().size());
   EXPECT_EQ(0U, GetServerCardsMetadata(0).size());
   EXPECT_EQ(0U, GetServerAddressesMetadata(0).size());
 }
@@ -805,7 +865,8 @@
                        ClearOnDisableWalletAutofill) {
   GetFakeServer()->SetWalletData({CreateDefaultSyncWalletAddress(),
                                   CreateDefaultSyncWalletCard(),
-                                  CreateDefaultSyncPaymentsCustomerData()});
+                                  CreateDefaultSyncPaymentsCustomerData(),
+                                  CreateDefaultSyncCreditCardCloudTokenData()});
   ASSERT_TRUE(SetupSync());
 
   autofill::PersonalDataManager* pdm = GetPersonalDataManager(0);
@@ -815,6 +876,7 @@
   ASSERT_EQ(1uL, pdm->GetServerProfiles().size());
   ASSERT_EQ(1uL, pdm->GetCreditCards().size());
   ASSERT_EQ(kDefaultCustomerID, pdm->GetPaymentsCustomerData()->customer_id);
+  ASSERT_EQ(1uL, pdm->GetCreditCardCloudTokenData().size());
   ASSERT_EQ(1U, GetServerCardsMetadata(0).size());
   ASSERT_EQ(1U, GetServerAddressesMetadata(0).size());
 
@@ -827,6 +889,7 @@
   EXPECT_EQ(0uL, pdm->GetServerProfiles().size());
   EXPECT_EQ(0uL, pdm->GetCreditCards().size());
   EXPECT_EQ(nullptr, pdm->GetPaymentsCustomerData());
+  EXPECT_EQ(0uL, pdm->GetCreditCardCloudTokenData().size());
   EXPECT_EQ(0U, GetServerCardsMetadata(0).size());
   EXPECT_EQ(0U, GetServerAddressesMetadata(0).size());
 }
@@ -862,6 +925,11 @@
   wallet_helper::SetPaymentsCustomerData(
       0, autofill::PaymentsCustomerData(/*customer_id=*/kDefaultCustomerID));
 
+  // Add a cloud token data on the client.
+  CreditCardCloudTokenData data;
+  data.instrument_token = "data-1";
+  wallet_helper::SetCreditCardCloudTokenData(0, {data});
+
   // Refresh the pdm so that it gets data from autofill table.
   RefreshAndWaitForOnPersonalDataChanged(pdm);
 
@@ -879,10 +947,16 @@
   // Make sure the customer data was added correctly.
   EXPECT_EQ(kDefaultCustomerID, pdm->GetPaymentsCustomerData()->customer_id);
 
-  // Add a new card from the server and sync it down.
+  // Make sure the cloud token data was added correctly.
+  std::vector<CreditCardCloudTokenData*> cloud_token_data =
+      pdm->GetCreditCardCloudTokenData();
+  ASSERT_EQ(1uL, cloud_token_data.size());
+  EXPECT_EQ("data-1", cloud_token_data[0]->instrument_token);
+
+  // Add new data to the server and sync it down.
   ASSERT_TRUE(SetWalletDataInFakeServerAndWaitForUpdates(
-      {CreateDefaultSyncWalletCard(),
-       CreateDefaultSyncPaymentsCustomerData()}));
+      {CreateDefaultSyncWalletCard(), CreateDefaultSyncPaymentsCustomerData(),
+       CreateSyncCreditCardCloudTokenData("data-2")}));
 
   // The only card present on the client should be the one from the server.
   cards = pdm->GetCreditCards();
@@ -895,6 +969,12 @@
 
   // The PaymentsCustomerData should still be there.
   EXPECT_EQ(kDefaultCustomerID, pdm->GetPaymentsCustomerData()->customer_id);
+
+  // The only cloud token present on the client should be the one from the
+  // server.
+  cloud_token_data = pdm->GetCreditCardCloudTokenData();
+  ASSERT_EQ(1uL, cloud_token_data.size());
+  EXPECT_EQ("data-2", cloud_token_data[0]->instrument_token);
 }
 
 // Wallet data present on the client should be cleared in favor of the new data
@@ -927,6 +1007,11 @@
   wallet_helper::SetPaymentsCustomerData(
       0, autofill::PaymentsCustomerData(/*customer_id=*/kDefaultCustomerID));
 
+  // Add CreditCardCloudTokenData on the client.
+  CreditCardCloudTokenData data;
+  data.instrument_token = "data-1";
+  wallet_helper::SetCreditCardCloudTokenData(0, {data});
+
   // Refresh the pdm so that it gets cards from autofill table.
   RefreshAndWaitForOnPersonalDataChanged(pdm);
 
@@ -944,10 +1029,17 @@
   // Make sure the customer data was added correctly.
   EXPECT_EQ(kDefaultCustomerID, pdm->GetPaymentsCustomerData()->customer_id);
 
+  // Make sure the credit card cloud token data was added correctly.
+  std::vector<CreditCardCloudTokenData*> cloud_token_data =
+      pdm->GetCreditCardCloudTokenData();
+  ASSERT_EQ(1uL, cloud_token_data.size());
+  EXPECT_EQ("data-1", cloud_token_data[0]->instrument_token);
+
   // Add a new profile and new customer data from the server and sync them down.
   ASSERT_TRUE(SetWalletDataInFakeServerAndWaitForUpdates(
       {CreateDefaultSyncWalletAddress(),
-       CreateSyncPaymentsCustomerData(/*customer_id=*/"newid")}));
+       CreateSyncPaymentsCustomerData(/*customer_id=*/"newid"),
+       CreateSyncCreditCardCloudTokenData("data-2")}));
 
   // The only profile present on the client should be the one from the server.
   profiles = pdm->GetServerProfiles();
@@ -961,6 +1053,11 @@
 
   // Payments customer data should be updated.
   EXPECT_EQ("newid", pdm->GetPaymentsCustomerData()->customer_id);
+
+  // Credit card cloud token data should be updated.
+  cloud_token_data = pdm->GetCreditCardCloudTokenData();
+  ASSERT_EQ(1uL, cloud_token_data.size());
+  EXPECT_EQ("data-2", cloud_token_data[0]->instrument_token);
 }
 
 // Tests that a local billing address id set on a card on the client should not
@@ -1161,8 +1258,9 @@
                        SwitchesFromAccountToProfileStorageOnSyncOptIn) {
   ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
 
-  GetFakeServer()->SetWalletData(
-      {CreateDefaultSyncWalletCard(), CreateDefaultSyncPaymentsCustomerData()});
+  GetFakeServer()->SetWalletData({CreateDefaultSyncWalletCard(),
+                                  CreateDefaultSyncPaymentsCustomerData(),
+                                  CreateDefaultSyncCreditCardCloudTokenData()});
 
   // Set up Sync in transport mode for a non-primary account.
   secondary_account_helper::SignInSecondaryAccount(
@@ -1191,6 +1289,8 @@
   EXPECT_EQ(0U, GetServerCards(profile_data).size());
   EXPECT_NE(nullptr, GetPaymentsCustomerData(account_data).get());
   EXPECT_EQ(nullptr, GetPaymentsCustomerData(profile_data).get());
+  EXPECT_EQ(1U, GetCreditCardCloudTokenData(account_data).size());
+  EXPECT_EQ(0U, GetCreditCardCloudTokenData(profile_data).size());
 
   // Simulate the user opting in to full Sync: Make the account primary, and
   // set first-time setup to complete.
@@ -1218,6 +1318,8 @@
   EXPECT_EQ(1U, GetServerCards(profile_data).size());
   EXPECT_EQ(nullptr, GetPaymentsCustomerData(account_data).get());
   EXPECT_NE(nullptr, GetPaymentsCustomerData(profile_data).get());
+  EXPECT_EQ(0U, GetCreditCardCloudTokenData(account_data).size());
+  EXPECT_EQ(1U, GetCreditCardCloudTokenData(profile_data).size());
 }
 
 IN_PROC_BROWSER_TEST_F(
@@ -1225,7 +1327,8 @@
     SwitchesFromAccountToProfileStorageOnSyncOptInWithAdvancedSetup) {
   ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
 
-  GetFakeServer()->SetWalletData({CreateDefaultSyncWalletCard()});
+  GetFakeServer()->SetWalletData({CreateDefaultSyncWalletCard(),
+                                  CreateDefaultSyncCreditCardCloudTokenData()});
 
   // Set up Sync in transport mode for a non-primary account.
   secondary_account_helper::SignInSecondaryAccount(
@@ -1252,6 +1355,8 @@
   // in the profile storage (persisted).
   EXPECT_EQ(1U, GetServerCards(account_data).size());
   EXPECT_EQ(0U, GetServerCards(profile_data).size());
+  EXPECT_EQ(1U, GetCreditCardCloudTokenData(account_data).size());
+  EXPECT_EQ(0U, GetCreditCardCloudTokenData(profile_data).size());
 
   // Simulate the user opting in to full Sync: First, make the account primary.
   secondary_account_helper::MakeAccountPrimary(profile(), "user@email.com");
@@ -1289,6 +1394,8 @@
   // The card should now be in the profile storage (persisted).
   EXPECT_EQ(0U, GetServerCards(account_data).size());
   EXPECT_EQ(1U, GetServerCards(profile_data).size());
+  EXPECT_EQ(0U, GetCreditCardCloudTokenData(account_data).size());
+  EXPECT_EQ(1U, GetCreditCardCloudTokenData(profile_data).size());
 }
 #endif  // !defined(OS_CHROMEOS)
 
@@ -1308,7 +1415,8 @@
                        SwitchesBetweenAccountAndProfileStorageOnTogglingSync) {
   ASSERT_TRUE(SetupClients()) << "SetupClients() failed.";
 
-  GetFakeServer()->SetWalletData({CreateDefaultSyncWalletCard()});
+  GetFakeServer()->SetWalletData({CreateDefaultSyncWalletCard(),
+                                  CreateDefaultSyncCreditCardCloudTokenData()});
 
   // STEP 1. Set up Sync in full feature mode.
   ASSERT_TRUE(GetClient(0)->SetupSync());
@@ -1333,6 +1441,8 @@
   // in the account storage (ephemeral).
   EXPECT_EQ(0U, GetServerCards(account_data).size());
   EXPECT_EQ(1U, GetServerCards(profile_data).size());
+  EXPECT_EQ(0U, GetCreditCardCloudTokenData(account_data).size());
+  EXPECT_EQ(1U, GetCreditCardCloudTokenData(profile_data).size());
 
   // STEP 2. Turn off Sync-the-feature temporarily (e.g. the Sync feature toggle
   // on Android), i.e. leave the Sync data around.
@@ -1358,6 +1468,8 @@
   // to always clear its data when Sync is turned off.
   EXPECT_EQ(1U, GetServerCards(account_data).size());
   EXPECT_EQ(0U, GetServerCards(profile_data).size());
+  EXPECT_EQ(1U, GetCreditCardCloudTokenData(account_data).size());
+  EXPECT_EQ(0U, GetCreditCardCloudTokenData(profile_data).size());
 
   // STEP 3. Turn Sync-the-feature on again.
   GetSyncService(0)->GetUserSettings()->SetSyncRequested(true);
@@ -1379,6 +1491,8 @@
   // And the card should be in the profile i.e. persistent storage again.
   EXPECT_EQ(0U, GetServerCards(account_data).size());
   EXPECT_EQ(1U, GetServerCards(profile_data).size());
+  EXPECT_EQ(0U, GetCreditCardCloudTokenData(account_data).size());
+  EXPECT_EQ(1U, GetCreditCardCloudTokenData(profile_data).size());
 
   // STEP 4. Turn off Sync-the-feature again, but this time clear data.
   GetSyncService(0)->StopAndClear();
@@ -1400,6 +1514,8 @@
   // The card should now be in the account storage (ephemeral).
   EXPECT_EQ(1U, GetServerCards(account_data).size());
   EXPECT_EQ(0U, GetServerCards(profile_data).size());
+  EXPECT_EQ(1U, GetCreditCardCloudTokenData(account_data).size());
+  EXPECT_EQ(0U, GetCreditCardCloudTokenData(profile_data).size());
 
   // STEP 5. Turn Sync-the-feature on again.
   GetSyncService(0)->GetUserSettings()->SetSyncRequested(true);
@@ -1423,4 +1539,6 @@
   // And the card should be in the profile i.e. persistent storage again.
   EXPECT_EQ(0U, GetServerCards(account_data).size());
   EXPECT_EQ(1U, GetServerCards(profile_data).size());
+  EXPECT_EQ(0U, GetCreditCardCloudTokenData(account_data).size());
+  EXPECT_EQ(1U, GetCreditCardCloudTokenData(profile_data).size());
 }
diff --git a/chrome/browser/sync/test/integration/single_client_web_apps_sync_test.cc b/chrome/browser/sync/test/integration/single_client_web_apps_sync_test.cc
new file mode 100644
index 0000000..a6c3343
--- /dev/null
+++ b/chrome/browser/sync/test/integration/single_client_web_apps_sync_test.cc
@@ -0,0 +1,83 @@
+// 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 "chrome/browser/sync/test/integration/sync_test.h"
+#include "chrome/common/chrome_features.h"
+#include "components/sync/base/model_type.h"
+#include "components/sync/base/user_selectable_type.h"
+#include "components/sync/driver/profile_sync_service.h"
+#include "components/sync/driver/sync_user_settings.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+#if defined(OS_CHROMEOS)
+#include "chrome/browser/sync/test/integration/os_sync_test.h"
+#include "chromeos/constants/chromeos_features.h"
+#endif
+
+using syncer::UserSelectableType;
+using syncer::UserSelectableTypeSet;
+
+namespace {
+
+#if defined(OS_CHROMEOS)
+// Chrome OS syncs apps as an OS type.
+class SingleClientWebAppsOsSyncTest : public OsSyncTest {
+ public:
+  SingleClientWebAppsOsSyncTest() : OsSyncTest(SINGLE_CLIENT) {
+    features_.InitWithFeatures(
+        {features::kDesktopPWAsWithoutExtensions, features::kDesktopPWAsUSS},
+        {});
+  }
+  ~SingleClientWebAppsOsSyncTest() override = default;
+
+ private:
+  base::test::ScopedFeatureList features_;
+};
+
+IN_PROC_BROWSER_TEST_F(SingleClientWebAppsOsSyncTest,
+                       DisablingOsSyncFeatureDisablesDataType) {
+  ASSERT_TRUE(chromeos::features::IsSplitSettingsSyncEnabled());
+  ASSERT_TRUE(SetupSync());
+  syncer::ProfileSyncService* service = GetSyncService(0);
+  syncer::SyncUserSettings* settings = service->GetUserSettings();
+
+  EXPECT_TRUE(settings->GetOsSyncFeatureEnabled());
+  EXPECT_TRUE(service->GetActiveDataTypes().Has(syncer::WEB_APPS));
+
+  settings->SetOsSyncFeatureEnabled(false);
+  EXPECT_FALSE(settings->GetOsSyncFeatureEnabled());
+  EXPECT_FALSE(service->GetActiveDataTypes().Has(syncer::WEB_APPS));
+}
+
+#else   // !defined(OS_CHROMEOS)
+
+// See also TwoClientWebAppsSyncTest.
+class SingleClientWebAppsSyncTest : public SyncTest {
+ public:
+  SingleClientWebAppsSyncTest() : SyncTest(SINGLE_CLIENT) {
+    features_.InitWithFeatures(
+        {features::kDesktopPWAsWithoutExtensions, features::kDesktopPWAsUSS},
+        {});
+  }
+  ~SingleClientWebAppsSyncTest() override = default;
+
+ private:
+  base::test::ScopedFeatureList features_;
+};
+
+IN_PROC_BROWSER_TEST_F(SingleClientWebAppsSyncTest,
+                       DisablingSelectedTypeDisablesModelType) {
+  ASSERT_TRUE(SetupSync());
+  syncer::ProfileSyncService* service = GetSyncService(0);
+  syncer::SyncUserSettings* settings = service->GetUserSettings();
+  ASSERT_TRUE(settings->GetSelectedTypes().Has(UserSelectableType::kApps));
+  EXPECT_TRUE(service->GetActiveDataTypes().Has(syncer::WEB_APPS));
+
+  settings->SetSelectedTypes(false, UserSelectableTypeSet());
+  ASSERT_FALSE(settings->GetSelectedTypes().Has(UserSelectableType::kApps));
+  EXPECT_FALSE(service->GetActiveDataTypes().Has(syncer::WEB_APPS));
+}
+#endif  // defined(OS_CHROMEOS)
+
+}  // namespace
diff --git a/chrome/browser/sync/test/integration/two_client_bookmarks_sync_test.cc b/chrome/browser/sync/test/integration/two_client_bookmarks_sync_test.cc
index ed48372..f43537e 100644
--- a/chrome/browser/sync/test/integration/two_client_bookmarks_sync_test.cc
+++ b/chrome/browser/sync/test/integration/two_client_bookmarks_sync_test.cc
@@ -103,7 +103,7 @@
 
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, Sanity) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   GURL google_url("http://www.google.com");
   ASSERT_NE(nullptr, AddURL(0, "Google", google_url));
@@ -133,7 +133,7 @@
 
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SimultaneousURLChanges) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   GURL initial_url("http://www.google.com");
   GURL second_url("http://www.google.com/abc");
@@ -154,7 +154,7 @@
 
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SC_AddFirstFolder) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   ASSERT_NE(nullptr, AddFolder(0, kGenericFolderName));
   ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
@@ -163,7 +163,7 @@
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
                        SC_Add3FoldersInShuffledOrder) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   ASSERT_NE(nullptr, AddFolder(0, 0, IndexedFolderName(0)));
   ASSERT_NE(nullptr, AddFolder(0, 1, IndexedFolderName(2)));
@@ -174,7 +174,7 @@
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
                        SC_AddFirstBMWithoutFavicon) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   ASSERT_NE(nullptr, AddURL(0, kGenericURLTitle, GURL(kGenericURL)));
   ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
@@ -182,7 +182,7 @@
 
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SC_AddFirstBMWithFavicon) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
   const GURL page_url(kGenericURL);
   const GURL icon_url("http://www.google.com/favicon.ico");
 
@@ -213,7 +213,7 @@
   const GURL icon_url2("http://www.google.com/favicon2.ico");
 
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   const BookmarkNode* bookmark0 = AddURL(0, kGenericURLTitle, page_url);
   ASSERT_NE(nullptr, bookmark0);
@@ -250,7 +250,7 @@
   const GURL icon_url("http://www.google.com/favicon.ico");
 
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   const BookmarkNode* bookmark0 = AddURL(0, kGenericURLTitle, page_url);
   ASSERT_NE(bookmark0, nullptr);
@@ -291,7 +291,7 @@
   const GURL icon_url("http://www.google.com/favicon.ico");
 
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   const BookmarkNode* bookmark01 = AddURL(0, kGenericURLTitle, page_url1);
   ASSERT_NE(nullptr, bookmark01);
@@ -322,7 +322,7 @@
   const GURL icon_url("http://www.google.com/favicon.ico");
 
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   const BookmarkNode* bookmark0 = AddURL(0, kGenericURLTitle, page_url);
   ASSERT_NE(nullptr, bookmark0);
@@ -348,7 +348,7 @@
 
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SC_AddNonHTTPBMs) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   ASSERT_NE(nullptr,
             AddURL(0, "FTP UR", GURL("ftp://user:password@host:1234/path")));
@@ -358,7 +358,7 @@
 
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SC_AddFirstBMUnderFolder) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   const BookmarkNode* folder = AddFolder(0, kGenericFolderName);
   ASSERT_NE(nullptr, folder);
@@ -369,7 +369,7 @@
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
                        SC_AddSeveralBMsUnderBMBarAndOtherBM) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   for (size_t i = 0; i < 20; ++i) {
     std::string title = IndexedURLTitle(i);
@@ -382,7 +382,7 @@
 
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SC_AddSeveralBMsAndFolders) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   for (size_t i = 0; i < 15; ++i) {
     if (base::RandDouble() > 0.6) {
@@ -413,7 +413,7 @@
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
                        SC_DuplicateBMWithDifferentURLSameName) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   GURL url0 = GURL(IndexedURL(0));
   GURL url1 = GURL(IndexedURL(1));
@@ -426,7 +426,7 @@
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
                        SC_DuplicateBookmarksWithSameURL) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   std::string title0 = IndexedURLTitle(0);
   std::string title1 = IndexedURLTitle(1);
@@ -437,7 +437,7 @@
 
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SC_RenameBMName) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   std::string title = IndexedURLTitle(1);
   const BookmarkNode* bookmark = AddURL(0, title, GURL(kGenericURL));
@@ -451,7 +451,7 @@
 
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SC_RenameBMURL) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   GURL url = GURL(IndexedURL(1));
   const BookmarkNode* bookmark = AddURL(0, kGenericURLTitle, url);
@@ -467,7 +467,7 @@
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
                        SC_TwiceRenamingBookmarkName) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   std::string title = IndexedURLTitle(1);
   const BookmarkNode* bookmark = AddURL(0, title, GURL(kGenericURL));
@@ -486,7 +486,7 @@
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
                        SC_TwiceRenamingBookmarkURL) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   GURL url = GURL(IndexedURL(1));
   const BookmarkNode* bookmark = AddURL(0, kGenericURLTitle, url);
@@ -503,7 +503,7 @@
 
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SC_RenameBMFolder) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   std::string title = IndexedFolderName(1);
   const BookmarkNode* folder = AddFolder(0, title);
@@ -517,7 +517,7 @@
 
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SC_RenameEmptyBMFolder) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   std::string title = IndexedFolderName(1);
   const BookmarkNode* folder = AddFolder(0, title);
@@ -531,7 +531,7 @@
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
                        SC_RenameBMFolderWithLongHierarchy) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   std::string title = IndexedFolderName(1);
   const BookmarkNode* folder = AddFolder(0, title);
@@ -556,7 +556,7 @@
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
                        SC_RenameBMFolderThatHasParentAndChildren) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   const BookmarkNode* folder = AddFolder(0, kGenericFolderName);
   ASSERT_NE(nullptr, folder);
@@ -586,7 +586,7 @@
 
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SC_RenameBMNameAndURL) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   GURL url = GURL(IndexedURL(1));
   std::string title = IndexedURLTitle(1);
@@ -605,7 +605,7 @@
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
                        SC_DeleteBMEmptyAccountAfterwards) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   ASSERT_NE(nullptr, AddURL(0, kGenericURLTitle, GURL(kGenericURL)));
   ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
@@ -617,7 +617,7 @@
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
                        SC_DelBMNonEmptyAccountAfterwards) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   for (size_t i = 0; i < 20; ++i) {
     std::string title = IndexedURLTitle(i);
@@ -633,7 +633,7 @@
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
                        SC_DelFirstBMUnderBMFoldNonEmptyFoldAfterwards) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   const BookmarkNode* folder = AddFolder(0, kGenericFolderName);
   ASSERT_NE(nullptr, folder);
@@ -651,7 +651,7 @@
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
                        SC_DelLastBMUnderBMFoldNonEmptyFoldAfterwards) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   const BookmarkNode* folder = AddFolder(0, kGenericFolderName);
   ASSERT_NE(nullptr, folder);
@@ -669,7 +669,7 @@
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
                        SC_DelMiddleBMUnderBMFoldNonEmptyFoldAfterwards) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   const BookmarkNode* folder = AddFolder(0, kGenericFolderName);
   ASSERT_NE(nullptr, folder);
@@ -687,7 +687,7 @@
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
                        SC_DelBMsUnderBMFoldEmptyFolderAfterwards) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   const BookmarkNode* folder = AddFolder(0, kGenericFolderName);
   ASSERT_NE(nullptr, folder);
@@ -706,7 +706,7 @@
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
                        SC_DelEmptyBMFoldEmptyAccountAfterwards) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   ASSERT_NE(nullptr, AddFolder(0, kGenericFolderName));
   ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
@@ -718,7 +718,7 @@
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
                        SC_DelEmptyBMFoldNonEmptyAccountAfterwards) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   ASSERT_NE(nullptr, AddFolder(0, kGenericFolderName));
   for (size_t i = 1; i < 15; ++i) {
@@ -740,7 +740,7 @@
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
                        SC_DelBMFoldWithBMsNonEmptyAccountAfterwards) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   ASSERT_NE(nullptr, AddURL(0, kGenericURLTitle, GURL(kGenericURL)));
   const BookmarkNode* folder = AddFolder(0, 1, kGenericFolderName);
@@ -769,7 +769,7 @@
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
                        SC_DelBMFoldWithBMsAndBMFoldsNonEmptyACAfterwards) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   ASSERT_NE(nullptr, AddURL(0, kGenericURLTitle, GURL(kGenericURL)));
   const BookmarkNode* folder = AddFolder(0, 1, kGenericFolderName);
@@ -817,7 +817,7 @@
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
                        SC_DelBMFoldWithParentAndChildrenBMsAndBMFolds) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   const BookmarkNode* folder = AddFolder(0, kGenericFolderName);
   ASSERT_NE(nullptr, folder);
@@ -847,7 +847,7 @@
 
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SC_ReverseTheOrderOfTwoBMs) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   GURL url0 = GURL(IndexedURL(0));
   GURL url1 = GURL(IndexedURL(1));
@@ -865,7 +865,7 @@
 
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SC_ReverseTheOrderOf10BMs) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   for (size_t i = 0; i < 10; ++i) {
     std::string title = IndexedURLTitle(i);
@@ -881,7 +881,7 @@
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
                        SC_MovingBMsFromBMBarToBMFolder) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   ASSERT_NE(nullptr, AddURL(0, kGenericURLTitle, GURL(kGenericURL)));
   const BookmarkNode* folder = AddFolder(0, 1, kGenericFolderName);
@@ -897,14 +897,14 @@
   for (size_t i = 0; i < num_bookmarks_to_move; ++i) {
     Move(0, GetBookmarkBarNode(0)->children()[2].get(), folder, i);
     ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
-    ASSERT_TRUE(AllModelsMatchVerifier());
+    ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
   }
 }
 
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
                        SC_MovingBMsFromBMFoldToBMBar) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   ASSERT_NE(nullptr, AddURL(0, kGenericURLTitle, GURL(kGenericURL)));
   const BookmarkNode* folder = AddFolder(0, 1, kGenericFolderName);
@@ -920,14 +920,14 @@
   for (size_t i = 0; i < num_bookmarks_to_move; ++i) {
     Move(0, folder->children().front().get(), GetBookmarkBarNode(0), i);
     ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1)));
-    ASSERT_TRUE(AllModelsMatchVerifier());
+    ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
   }
 }
 
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
                        SC_MovingBMsFromParentBMFoldToChildBMFold) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   const BookmarkNode* folder = AddFolder(0, kGenericFolderName);
   ASSERT_NE(nullptr, folder);
@@ -956,7 +956,7 @@
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
                        SC_MovingBMsFromChildBMFoldToParentBMFold) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   const BookmarkNode* folder = AddFolder(0, kGenericFolderName);
   ASSERT_NE(nullptr, folder);
@@ -984,7 +984,7 @@
 
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SC_HoistBMs10LevelUp) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   const BookmarkNode* folder = GetBookmarkBarNode(0);
   const BookmarkNode* folder_L0 = nullptr;
@@ -1022,7 +1022,7 @@
 // Flaky. http://crbug.com/107744.
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SC_SinkBMs10LevelDown) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   const BookmarkNode* folder = GetBookmarkBarNode(0);
   const BookmarkNode* folder_L0 = nullptr;
@@ -1060,7 +1060,7 @@
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
                        SC_SinkEmptyBMFold5LevelsDown) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   const BookmarkNode* folder = GetBookmarkBarNode(0);
   const BookmarkNode* folder_L5 = nullptr;
@@ -1088,7 +1088,7 @@
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
                        SC_SinkNonEmptyBMFold5LevelsDown) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   const BookmarkNode* folder = GetBookmarkBarNode(0);
   const BookmarkNode* folder_L5 = nullptr;
@@ -1120,7 +1120,7 @@
 
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, SC_HoistFolder5LevelsUp) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   const BookmarkNode* folder = GetBookmarkBarNode(0);
   const BookmarkNode* folder_L5 = nullptr;
@@ -1154,7 +1154,7 @@
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
                        SC_ReverseTheOrderOfTwoBMFolders) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   for (size_t i = 0; i < 2; ++i) {
     std::string title = IndexedFolderName(i);
@@ -1175,7 +1175,7 @@
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
                        SC_ReverseTheOrderOfTenBMFolders) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   for (size_t i = 0; i < 10; ++i) {
     std::string title = IndexedFolderName(i);
@@ -1196,7 +1196,7 @@
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
                        MC_BiDirectionalPushAddingBM) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   DisableVerifier();
   for (size_t i = 0; i < 2; ++i) {
@@ -1214,7 +1214,7 @@
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
                        MC_BiDirectionalPush_AddingSameBMs) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   // Note: When a racy commit is done with identical bookmarks, it is possible
   // for duplicates to exist after sync completes. See http://crbug.com/19769.
@@ -1232,7 +1232,7 @@
                        MC_BootStrapEmptyStateEverywhere) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
   ASSERT_TRUE(AwaitQuiescence());
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 }
 
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
@@ -1566,7 +1566,7 @@
 
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, DisableBookmarks) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   ASSERT_TRUE(
       GetClient(1)->DisableSyncForType(syncer::UserSelectableType::kBookmarks));
@@ -1581,7 +1581,7 @@
 
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, DisableSync) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   ASSERT_TRUE(GetClient(1)->DisableSyncForAllDatatypes());
   ASSERT_NE(nullptr, AddFolder(0, IndexedFolderName(0)));
@@ -1784,7 +1784,7 @@
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
                        FirstClientEnablesEncryptionWithPassSecondChanges) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   // Add initial bookmarks.
   ASSERT_NE(nullptr, AddURL(0, 0, IndexedURLTitle(0), GURL(IndexedURL(0))));
@@ -1825,7 +1825,7 @@
 // order is).
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, RacyPositionChanges) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   // Add initial bookmarks.
   size_t num_bookmarks = 5;
@@ -1835,7 +1835,7 @@
 
   // Once we make diverging changes the verifer is helpless.
   ASSERT_TRUE(AwaitQuiescence());
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
   DisableVerifier();
 
   // Make changes on client 0.
@@ -1884,7 +1884,7 @@
 // and ensure both clients receive the bookmark.
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest, CreateSyncedBookmarks) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   fake_server_->InjectEntity(syncer::PersistentPermanentEntity::CreateNew(
       syncer::BOOKMARKS, "synced_bookmarks", "Synced Bookmarks",
@@ -1908,7 +1908,7 @@
 IN_PROC_BROWSER_TEST_P(TwoClientBookmarksSyncTest,
                        BookmarkAllNodesRemovedEvent) {
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   // Starting state:
   // other_node
@@ -1967,7 +1967,7 @@
 
   // Set up sync.
   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
-  ASSERT_TRUE(AllModelsMatchVerifier());
+  ASSERT_TRUE(BookmarksMatchVerifierChecker().Wait());
 
   // Verify that there are no managed bookmarks at startup in either profile.
   // The Managed Bookmarks folder should not be visible at this stage.
diff --git a/chrome/browser/sync/test/integration/two_client_extension_settings_and_app_settings_sync_test.cc b/chrome/browser/sync/test/integration/two_client_extension_settings_and_app_settings_sync_test.cc
index 0d13481..7a14c12 100644
--- a/chrome/browser/sync/test/integration/two_client_extension_settings_and_app_settings_sync_test.cc
+++ b/chrome/browser/sync/test/integration/two_client_extension_settings_and_app_settings_sync_test.cc
@@ -12,6 +12,11 @@
 #include "chrome/browser/sync/test/integration/sync_datatype_helper.h"
 #include "chrome/browser/sync/test/integration/sync_test.h"
 
+#if defined(OS_CHROMEOS)
+#include "chrome/browser/sync/test/integration/os_sync_test.h"
+#include "chromeos/constants/chromeos_features.h"
+#endif
+
 namespace {
 
 using apps_helper::InstallAppForAllProfiles;
@@ -210,4 +215,30 @@
                InstallAppForAllProfiles(1), InstallAppForAllProfiles(2));
 }
 
+#if defined(OS_CHROMEOS)
+// Tests for SplitSettingsSync, which uses a different ModelTypeController for
+// syncer::APP_SETTINGS.
+class TwoClientAppSettingsOsSyncTest : public OsSyncTest {
+ public:
+  TwoClientAppSettingsOsSyncTest() : OsSyncTest(TWO_CLIENT) {}
+  ~TwoClientAppSettingsOsSyncTest() override = default;
+};
+
+IN_PROC_BROWSER_TEST_F(TwoClientAppSettingsOsSyncTest,
+                       AppsStartWithSameSettings) {
+  ASSERT_TRUE(chromeos::features::IsSplitSettingsSyncEnabled());
+  ASSERT_TRUE(SetupClients());
+  ASSERT_PRED3(StartWithSameSettingsTest, InstallAppForAllProfiles(0),
+               InstallAppForAllProfiles(1), InstallAppForAllProfiles(2));
+}
+
+IN_PROC_BROWSER_TEST_F(TwoClientAppSettingsOsSyncTest,
+                       AppsStartWithDifferentSettings) {
+  ASSERT_TRUE(chromeos::features::IsSplitSettingsSyncEnabled());
+  ASSERT_TRUE(SetupClients());
+  ASSERT_PRED3(StartWithDifferentSettingsTest, InstallAppForAllProfiles(0),
+               InstallAppForAllProfiles(1), InstallAppForAllProfiles(2));
+}
+#endif  // defined(OS_CHROMEOS)
+
 }  // namespace
diff --git a/chrome/browser/sync/test/integration/wallet_helper.cc b/chrome/browser/sync/test/integration/wallet_helper.cc
index d7995627..75f4358 100644
--- a/chrome/browser/sync/test/integration/wallet_helper.cc
+++ b/chrome/browser/sync/test/integration/wallet_helper.cc
@@ -28,6 +28,7 @@
 using autofill::AutofillTable;
 using autofill::AutofillWebDataService;
 using autofill::CreditCard;
+using autofill::CreditCardCloudTokenData;
 using autofill::PaymentsCustomerData;
 using autofill::PersonalDataManager;
 using autofill::data_util::TruncateUTF8;
@@ -188,6 +189,14 @@
       ->SetPaymentsCustomerData(&customer_data);
 }
 
+void SetCreditCardCloudTokenDataOnDBSequence(
+    AutofillWebDataService* wds,
+    const std::vector<CreditCardCloudTokenData>& cloud_token_data) {
+  DCHECK(wds->GetDBTaskRunner()->RunsTasksInCurrentSequence());
+  AutofillTable::FromWebDatabase(wds->GetDatabase())
+      ->SetCreditCardCloudTokenData(cloud_token_data);
+}
+
 void GetServerCardsMetadataOnDBSequence(
     AutofillWebDataService* wds,
     std::map<std::string, AutofillMetadata>* cards_metadata) {
@@ -222,6 +231,7 @@
 const char kDefaultAddressID[] = "wallet address ID";
 const char kDefaultCustomerID[] = "deadbeef";
 const char kDefaultBillingAddressID[] = "billing address entity ID";
+const char kDefaultCreditCardCloudTokenDataID[] = "cloud token data ID";
 
 PersonalDataManager* GetPersonalDataManager(int index) {
   return autofill::PersonalDataManagerFactory::GetForProfile(
@@ -267,6 +277,15 @@
   WaitForCurrentTasksToComplete(wds->GetDBTaskRunner());
 }
 
+void SetCreditCardCloudTokenData(
+    int profile,
+    const std::vector<autofill::CreditCardCloudTokenData>& cloud_token_data) {
+  scoped_refptr<AutofillWebDataService> wds = GetProfileWebDataService(profile);
+  wds->GetDBTaskRunner()->PostTask(
+      FROM_HERE, base::BindOnce(&SetCreditCardCloudTokenDataOnDBSequence,
+                                base::Unretained(wds.get()), cloud_token_data));
+}
+
 void UpdateServerCardMetadata(int profile, const CreditCard& credit_card) {
   scoped_refptr<AutofillWebDataService> wds = GetProfileWebDataService(profile);
   wds->UpdateServerCardMetadata(credit_card);
@@ -438,6 +457,28 @@
   return result;
 }
 
+sync_pb::SyncEntity CreateSyncCreditCardCloudTokenData(
+    const std::string& cloud_token_data_id) {
+  sync_pb::SyncEntity entity;
+  entity.set_name(cloud_token_data_id);
+  entity.set_id_string(cloud_token_data_id);
+  entity.set_version(0);  // Will be overridden by the fake server.
+  entity.set_ctime(12345);
+  entity.set_mtime(12345);
+  sync_pb::AutofillWalletSpecifics* wallet_specifics =
+      entity.mutable_specifics()->mutable_autofill_wallet();
+  wallet_specifics->set_type(
+      sync_pb::AutofillWalletSpecifics::CREDIT_CARD_CLOUD_TOKEN_DATA);
+  sync_pb::WalletCreditCardCloudTokenData* cloud_token_data =
+      wallet_specifics->mutable_cloud_token_data();
+  cloud_token_data->set_instrument_token(cloud_token_data_id);
+  return entity;
+}
+
+sync_pb::SyncEntity CreateDefaultSyncCreditCardCloudTokenData() {
+  return CreateSyncCreditCardCloudTokenData(kDefaultCreditCardCloudTokenDataID);
+}
+
 void ExpectDefaultCreditCardValues(const CreditCard& card) {
   EXPECT_EQ(CreditCard::MASKED_SERVER_CARD, card.record_type());
   EXPECT_EQ(kDefaultCardID, card.server_id());
diff --git a/chrome/browser/sync/test/integration/wallet_helper.h b/chrome/browser/sync/test/integration/wallet_helper.h
index 7f983495..17d7f54 100644
--- a/chrome/browser/sync/test/integration/wallet_helper.h
+++ b/chrome/browser/sync/test/integration/wallet_helper.h
@@ -20,8 +20,9 @@
 class AutofillProfile;
 class AutofillWebDataService;
 class CreditCard;
-class PersonalDataManager;
+struct CreditCardCloudTokenData;
 struct PaymentsCustomerData;
+class PersonalDataManager;
 }  // namespace autofill
 
 namespace sync_pb {
@@ -35,6 +36,7 @@
 extern const char kDefaultAddressID[];
 extern const char kDefaultCustomerID[];
 extern const char kDefaultBillingAddressID[];
+extern const char kDefaultCreditCardCloudTokenDataID[];
 
 // Used to access the personal data manager within a particular sync profile.
 autofill::PersonalDataManager* GetPersonalDataManager(int index)
@@ -60,6 +62,10 @@
     int profile,
     const autofill::PaymentsCustomerData& customer_data);
 
+void SetCreditCardCloudTokenData(
+    int profile,
+    const std::vector<autofill::CreditCardCloudTokenData>& cloud_token_data);
+
 void UpdateServerCardMetadata(int profile,
                               const autofill::CreditCard& credit_card);
 
@@ -100,6 +106,10 @@
 sync_pb::SyncEntity CreateSyncWalletAddress(const std::string& name,
                                             const std::string& company);
 
+sync_pb::SyncEntity CreateSyncCreditCardCloudTokenData(
+    const std::string& cloud_token_data_id);
+sync_pb::SyncEntity CreateDefaultSyncCreditCardCloudTokenData();
+
 // TODO(sebsg): Instead add a function to create a card, and one to inject in
 // the server. Then compare the cards directly.
 void ExpectDefaultCreditCardValues(const autofill::CreditCard& card);
diff --git a/chrome/browser/sync_file_system/drive_backend/callback_helper_unittest.cc b/chrome/browser/sync_file_system/drive_backend/callback_helper_unittest.cc
index 17865a6..fffb679 100644
--- a/chrome/browser/sync_file_system/drive_backend/callback_helper_unittest.cc
+++ b/chrome/browser/sync_file_system/drive_backend/callback_helper_unittest.cc
@@ -30,7 +30,7 @@
   *called = true;
 }
 
-void VerifyCalledOnTaskRunner(base::TaskRunner* task_runner,
+void VerifyCalledOnTaskRunner(base::SingleThreadTaskRunner* task_runner,
                               bool* called) {
   ASSERT_TRUE(called);
   ASSERT_TRUE(task_runner);
diff --git a/chrome/browser/themes/browser_theme_pack.cc b/chrome/browser/themes/browser_theme_pack.cc
index 03889e2f..1cb2bdf 100644
--- a/chrome/browser/themes/browser_theme_pack.cc
+++ b/chrome/browser/themes/browser_theme_pack.cc
@@ -807,8 +807,6 @@
 void BrowserThemePack::BuildFromColor(SkColor color, BrowserThemePack* pack) {
   DCHECK(!pack->is_valid());
 
-  SCOPED_UMA_HISTOGRAM_TIMER("AutogeneratedTheme.ColorGenerationTime");
-
   pack->InitEmptyPack();
 
   // Init |source_images_| only here as other code paths initialize it
diff --git a/chrome/browser/touch_to_fill/android/internal/java/res/layout/touch_to_fill_fill_button.xml b/chrome/browser/touch_to_fill/android/internal/java/res/layout/touch_to_fill_fill_button.xml
index b4f79b4..48443a4 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/res/layout/touch_to_fill_fill_button.xml
+++ b/chrome/browser/touch_to_fill/android/internal/java/res/layout/touch_to_fill_fill_button.xml
@@ -12,7 +12,7 @@
     android:layout_marginBottom="16dp"
     android:minHeight="48dp"
     android:gravity="center"
-    android:text="@string/touch_to_fill_confirm"
+    android:text="@string/touch_to_fill_continue"
     android:background="@drawable/touch_to_fill_credential_background"
     android:ellipsize="end"
     android:singleLine="true"
diff --git a/chrome/browser/touch_to_fill/android/internal/java/res/layout/touch_to_fill_header_item.xml b/chrome/browser/touch_to_fill/android/internal/java/res/layout/touch_to_fill_header_item.xml
index dad84e4..01fb6ef8 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/res/layout/touch_to_fill_header_item.xml
+++ b/chrome/browser/touch_to_fill/android/internal/java/res/layout/touch_to_fill_header_item.xml
@@ -19,10 +19,10 @@
         app:srcCompat="@drawable/touch_to_fill_header_image" />
 
     <org.chromium.ui.widget.TextViewWithLeading
+        android:id="@+id/touch_to_fill_sheet_title"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_gravity="center_horizontal"
-        android:text="@string/touch_to_fill_sheet_title"
         android:textAppearance="@style/TextAppearance.BlackHeadline" />
 
     <org.chromium.ui.widget.TextViewWithLeading
diff --git a/chrome/browser/touch_to_fill/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/TouchToFillMediator.java b/chrome/browser/touch_to_fill/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/TouchToFillMediator.java
index 9c8f426..b1da7437 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/TouchToFillMediator.java
+++ b/chrome/browser/touch_to_fill/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/TouchToFillMediator.java
@@ -11,6 +11,7 @@
 import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.FIELD_TRIAL_PARAM_SHOW_CONFIRMATION_BUTTON;
 import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.HeaderProperties.FORMATTED_URL;
 import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.HeaderProperties.ORIGIN_SECURE;
+import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.HeaderProperties.SINGLE_CREDENTIAL;
 import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.ON_CLICK_MANAGE;
 import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.SHEET_ITEMS;
 import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.VISIBLE;
@@ -70,6 +71,7 @@
 
         sheetItems.add(new ListItem(TouchToFillProperties.ItemType.HEADER,
                 new PropertyModel.Builder(HeaderProperties.ALL_KEYS)
+                        .with(SINGLE_CREDENTIAL, credentials.size() == 1)
                         .with(FORMATTED_URL,
                                 UrlFormatter.formatUrlForSecurityDisplayOmitScheme(url))
                         .with(ORIGIN_SECURE, isOriginSecure)
diff --git a/chrome/browser/touch_to_fill/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/TouchToFillProperties.java b/chrome/browser/touch_to_fill/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/TouchToFillProperties.java
index d263e05..6e849211 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/TouchToFillProperties.java
+++ b/chrome/browser/touch_to_fill/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/TouchToFillProperties.java
@@ -85,12 +85,14 @@
      * Properties defined here reflect the visible state of the header in the TouchToFill sheet.
      */
     static class HeaderProperties {
+        static final PropertyModel.ReadableBooleanPropertyKey SINGLE_CREDENTIAL =
+                new PropertyModel.ReadableBooleanPropertyKey("single_credential");
         static final PropertyModel.ReadableObjectPropertyKey<String> FORMATTED_URL =
                 new PropertyModel.ReadableObjectPropertyKey<>("formatted_url");
         static final PropertyModel.ReadableBooleanPropertyKey ORIGIN_SECURE =
                 new PropertyModel.ReadableBooleanPropertyKey("origin_secure");
 
-        static final PropertyKey[] ALL_KEYS = {FORMATTED_URL, ORIGIN_SECURE};
+        static final PropertyKey[] ALL_KEYS = {SINGLE_CREDENTIAL, FORMATTED_URL, ORIGIN_SECURE};
 
         private HeaderProperties() {}
     }
diff --git a/chrome/browser/touch_to_fill/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/TouchToFillViewBinder.java b/chrome/browser/touch_to_fill/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/TouchToFillViewBinder.java
index f33efdc..ed6a8028 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/TouchToFillViewBinder.java
+++ b/chrome/browser/touch_to_fill/android/internal/java/src/org/chromium/chrome/browser/touch_to_fill/TouchToFillViewBinder.java
@@ -11,6 +11,7 @@
 import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.DISMISS_HANDLER;
 import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.HeaderProperties.FORMATTED_URL;
 import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.HeaderProperties.ORIGIN_SECURE;
+import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.HeaderProperties.SINGLE_CREDENTIAL;
 import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.ON_CLICK_MANAGE;
 import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.SHEET_ITEMS;
 import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.VISIBLE;
@@ -22,6 +23,8 @@
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import androidx.annotation.StringRes;
+
 import org.chromium.chrome.browser.favicon.FaviconUtils;
 import org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.CredentialProperties;
 import org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.ItemType;
@@ -167,7 +170,16 @@
      * @param key The {@link PropertyKey} which changed.
      */
     private static void bindHeaderView(PropertyModel model, View view, PropertyKey key) {
-        if (key == FORMATTED_URL || key == ORIGIN_SECURE) {
+        if (key == SINGLE_CREDENTIAL || key == FORMATTED_URL || key == ORIGIN_SECURE) {
+            TextView sheetTitleText = view.findViewById(R.id.touch_to_fill_sheet_title);
+            @StringRes
+            int titleStringId;
+            if (model.get(SINGLE_CREDENTIAL)) {
+                titleStringId = R.string.touch_to_fill_sheet_title_single;
+            } else {
+                titleStringId = R.string.touch_to_fill_sheet_title;
+            }
+            sheetTitleText.setText(view.getContext().getString(titleStringId));
             TextView sheetSubtitleText = view.findViewById(R.id.touch_to_fill_sheet_subtitle);
             if (model.get(ORIGIN_SECURE)) {
                 sheetSubtitleText.setText(model.get(FORMATTED_URL));
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/android_touch_to_fill_strings.grd b/chrome/browser/touch_to_fill/android/internal/java/strings/android_touch_to_fill_strings.grd
index 2dc237ae..189b6ec 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/android_touch_to_fill_strings.grd
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/android_touch_to_fill_strings.grd
@@ -144,6 +144,9 @@
   <release allow_pseudo="false" seq="1">
     <messages fallback_to_english="true">
       <!-- Touch To Fill -->
+      <message name="IDS_TOUCH_TO_FILL_SHEET_TITLE_SINGLE" desc="Header for Touch To Fill sheet where users only have a single credential to fill into a form to.">
+        Continue with account
+      </message>
       <message name="IDS_TOUCH_TO_FILL_SHEET_TITLE" desc="Header for Touch To Fill sheet where users can pick a credential to fill into a form to.">
         Choose an account
       </message>
@@ -165,8 +168,8 @@
       <message name="IDS_MANAGE_PASSWORDS" desc="Title of the button at the end of a touch to fill sheet that will open the password preferences when tapped.">
         Manage passwords
       </message>
-      <message name="IDS_TOUCH_TO_FILL_CONFIRM" desc="Title of the button that confirms filling the only available set of credentials.">
-        Use password
+      <message name="IDS_TOUCH_TO_FILL_CONTINUE" desc="Title of the button that continues filling with the only available set of credentials.">
+        Continue
       </message>
     </messages>
   </release>
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/android_touch_to_fill_strings_grd/IDS_TOUCH_TO_FILL_CONFIRM.png.sha1 b/chrome/browser/touch_to_fill/android/internal/java/strings/android_touch_to_fill_strings_grd/IDS_TOUCH_TO_FILL_CONFIRM.png.sha1
deleted file mode 100644
index 4e51696..0000000
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/android_touch_to_fill_strings_grd/IDS_TOUCH_TO_FILL_CONFIRM.png.sha1
+++ /dev/null
@@ -1 +0,0 @@
-87f2113fe6c9f26027a09a62e4bb0e7d21532e33
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/android_touch_to_fill_strings_grd/IDS_TOUCH_TO_FILL_CONTINUE.png.sha1 b/chrome/browser/touch_to_fill/android/internal/java/strings/android_touch_to_fill_strings_grd/IDS_TOUCH_TO_FILL_CONTINUE.png.sha1
new file mode 100644
index 0000000..5812fd1
--- /dev/null
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/android_touch_to_fill_strings_grd/IDS_TOUCH_TO_FILL_CONTINUE.png.sha1
@@ -0,0 +1 @@
+98f90cf832f4676079203a41654c08a0f111f23a
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/android_touch_to_fill_strings_grd/IDS_TOUCH_TO_FILL_SHEET_TITLE_SINGLE.png.sha1 b/chrome/browser/touch_to_fill/android/internal/java/strings/android_touch_to_fill_strings_grd/IDS_TOUCH_TO_FILL_SHEET_TITLE_SINGLE.png.sha1
new file mode 100644
index 0000000..5812fd1
--- /dev/null
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/android_touch_to_fill_strings_grd/IDS_TOUCH_TO_FILL_SHEET_TITLE_SINGLE.png.sha1
@@ -0,0 +1 @@
+98f90cf832f4676079203a41654c08a0f111f23a
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_af.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_af.xtb
index eb786ac..68bdc4e0 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_af.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_af.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="af">
 <translation id="1717486229951421299">Lys eiebewyse wat met aanraking ingevul moet word, is teen halwe hoogte oopgemaak.</translation>
 <translation id="207576718733492531">Lys eiebewyse wat met aanraking ingevul moet word, is toegemaak.</translation>
+<translation id="2359808026110333948">Gaan voort</translation>
 <translation id="2410754283952462441">Kies 'n rekening</translation>
 <translation id="3399357656427473483">Lys eiebewyse wat met aanraking ingevul moet word.</translation>
-<translation id="4634124774493850572">Gebruik wagwoord</translation>
 <translation id="5441504010984421144">Lys eiebewyse wat met aanraking ingevul moet word, is teen volle hoogte oopgemaak.</translation>
 <translation id="5624120631404540903">Bestuur wagwoorde</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_am.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_am.xtb
index 05f5cd7..4ef7764 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_am.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_am.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="am">
 <translation id="1717486229951421299">በግማሽ ቁመት ላይ ሲነካ የሚሞሉ የመግቢያ ማስረጃዎች ዝርዝር።</translation>
 <translation id="207576718733492531">ሲነካ የሚሞሉ የመግቢያ ማስረጃዎች ተዘግቷል።</translation>
+<translation id="2359808026110333948">ቀጥል</translation>
 <translation id="2410754283952462441">አንድ መለያ ይምረጡ</translation>
 <translation id="3399357656427473483">ሲነካ የሚሞሉ የመግቢያ ማስረጃዎች ዝርዝር።</translation>
-<translation id="4634124774493850572">የይለፍ ቃል ይጠቀሙ</translation>
 <translation id="5441504010984421144">በሙሉ ቁመት ላይ ሲነካ የሚሞሉ የመግቢያ ማስረጃዎች ዝርዝር።</translation>
 <translation id="5624120631404540903">የይለፍ ቃሎችን አስተዳድር</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ar.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ar.xtb
index f7d1fab..ca2a2d0f 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ar.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ar.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="ar">
 <translation id="1717486229951421299">تم فتح قائمة بيانات الاعتماد التي يتم ملؤها باللمس على طول النصف السفلي من الشاشة.</translation>
 <translation id="207576718733492531">تم إغلاق قائمة بيانات الاعتماد التي يتم ملؤها باللمس.</translation>
+<translation id="2359808026110333948">متابعة</translation>
 <translation id="2410754283952462441">اختيار حساب</translation>
 <translation id="3399357656427473483">قائمة ببيانات الاعتماد التي يتم ملؤها باللمس</translation>
-<translation id="4634124774493850572">استخدام كلمة المرور</translation>
 <translation id="5441504010984421144">تم فتح قائمة بيانات الاعتماد التي يجب ملؤها باللمس على طول الشاشة.</translation>
 <translation id="5624120631404540903">إدارة كلمات المرور</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_as.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_as.xtb
index e697e4e3..b358b98 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_as.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_as.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="as">
 <translation id="1717486229951421299">স্পৰ্শ কৰিলে পূৰ হ’বলগীয়া ক্ৰিডেনশ্বিয়েলৰ সূচীখন অৰ্ধ উচ্চতাত খোল খাইছে।</translation>
 <translation id="207576718733492531">স্পৰ্শ কৰিলে পূৰ হ’বলগীয়া ক্ৰিডেনশ্বিয়েলৰ সূচীখন বন্ধ কৰা আছে।</translation>
+<translation id="2359808026110333948">অব্যাহত ৰাখক</translation>
 <translation id="2410754283952462441">কোনো একাউণ্ট বাছনি কৰক</translation>
 <translation id="3399357656427473483">স্পৰ্শ কৰিলে পূৰ হ’বলগীয়া ক্ৰিডেনশ্বিয়েলৰ সূচী।</translation>
-<translation id="4634124774493850572">পাছৱৰ্ড দিয়ক</translation>
 <translation id="5441504010984421144">স্পৰ্শ কৰিলে পূৰ হ’বলগীয়া ক্ৰিডেনশ্বিয়েলৰ সূচীখন সম্পূৰ্ণ উচ্চতাত খোল খাইছে।</translation>
 <translation id="5624120631404540903">পাছৱৰ্ড সলনি কৰক</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_az.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_az.xtb
index 64b18fa..9f78b43e 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_az.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_az.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="az">
 <translation id="1717486229951421299">Yarı hündürlükdə açılan toxunuşla doldurulacaq kredensialların siyahısı.</translation>
 <translation id="207576718733492531">Toxunuşla doldurulacaq kredensialların siyahısı bağlıdır.</translation>
+<translation id="2359808026110333948">Davam edin</translation>
 <translation id="2410754283952462441">Hesab seçin</translation>
 <translation id="3399357656427473483">Toxunuşla doldurulacaq kredensialların siyahısı.</translation>
-<translation id="4634124774493850572">Parol istifadə edin</translation>
 <translation id="5441504010984421144">Tam hündürlükdə açılan toxunuşla doldurulacaq kredensialların siyahısı.</translation>
 <translation id="5624120631404540903">Parolları idarə edin</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_be.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_be.xtb
index 82f1b2d0..c83a56f 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_be.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_be.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="be">
 <translation id="1717486229951421299">Спіс уліковых даных, якія трэба ўнесці па націсканні, адкрыты на палову экрана.</translation>
 <translation id="207576718733492531">Спіс уліковых даных, якія трэба ўнесці па націсканні, закрыты.</translation>
+<translation id="2359808026110333948">Працягнуць</translation>
 <translation id="2410754283952462441">Выберыце ўліковы запіс</translation>
 <translation id="3399357656427473483">Спіс уліковых даных, якія трэба ўнесці па націсканні.</translation>
-<translation id="4634124774493850572">Выкарыстаць пароль</translation>
 <translation id="5441504010984421144">Спіс уліковых даных, якія трэба ўнесці па націсканні, адкрыты на ўвесь экран.</translation>
 <translation id="5624120631404540903">Кіраваць паролямі</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_bg.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_bg.xtb
index a7b3412..109da59 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_bg.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_bg.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="bg">
 <translation id="1717486229951421299">Списъкът с идентификационни данни, които да бъдат попълнени при докосване, е отворен на половината височина.</translation>
 <translation id="207576718733492531">Списъкът с идентификационни данни, които да бъдат попълнени при докосване, е затворен.</translation>
+<translation id="2359808026110333948">Напред</translation>
 <translation id="2410754283952462441">Изберете профил</translation>
 <translation id="3399357656427473483">Списък с идентификационни данни, които да бъдат попълнени при докосване.</translation>
-<translation id="4634124774493850572">Използване на паролата</translation>
 <translation id="5441504010984421144">Списъкът с идентификационни данни, които да бъдат попълнени при докосване, е отворен на пълната височина.</translation>
 <translation id="5624120631404540903">Управление на паролите</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_bn.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_bn.xtb
index b099b29e..9e49eb7 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_bn.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_bn.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="bn">
 <translation id="1717486229951421299">টাচ করে পূরণ করা যাবে এমন ক্রেডেনশিয়ালের তালিকা হাফ স্ক্রিন জুড়ে খুলেছে।</translation>
 <translation id="207576718733492531">টাচ করে পূরণ করা যাবে এমন ক্রেডেনশিয়ালের তালিকা বন্ধ রয়েছে।</translation>
+<translation id="2359808026110333948">চালিয়ে যান</translation>
 <translation id="2410754283952462441">একটি অ্যাকাউন্ট বেছে নিন</translation>
 <translation id="3399357656427473483">টাচ করে পূরণ করা যাবে এমন ক্রেডেনশিয়ালের তালিকা।</translation>
-<translation id="4634124774493850572">পাসওয়ার্ড ব্যবহার করুন</translation>
 <translation id="5441504010984421144">টাচ করে পূরণ করা যাবে এমন ক্রেডেনশিয়ালের তালিকা ফুল স্ক্রিন জুড়ে খুলেছে।</translation>
 <translation id="5624120631404540903">পাসওয়ার্ডগুলি পরিচালনা করুন</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_bs.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_bs.xtb
index de8a241..70aeecd 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_bs.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_bs.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="bs">
 <translation id="1717486229951421299">Lista akreditiva za popunjavanje dodirom je otvorena na pola visine.</translation>
 <translation id="207576718733492531">Lista akreditiva za popunjavanje dodirom je zatvorena.</translation>
+<translation id="2359808026110333948">Nastavi</translation>
 <translation id="2410754283952462441">Odaberite račun</translation>
 <translation id="3399357656427473483">Lista akreditiva za popunjavanje dodirom.</translation>
-<translation id="4634124774493850572">Koristi lozinku</translation>
 <translation id="5441504010984421144">Lista akreditiva za popunjavanje dodirom je otvorena na cijelom ekranu.</translation>
 <translation id="5624120631404540903">Upravljajte lozinkama</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ca.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ca.xtb
index 13f9c08..5c78417 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ca.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ca.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="ca">
 <translation id="1717486229951421299">La llista de credencials que s'emplenaran amb un toc està oberta i ocupa la meitat inferior de la pantalla.</translation>
 <translation id="207576718733492531">La llista de credencials que s'emplenaran amb un toc està tancada.</translation>
+<translation id="2359808026110333948">Continua</translation>
 <translation id="2410754283952462441">Tria un compte</translation>
 <translation id="3399357656427473483">Llista de credencials que s'emplenaran amb un toc.</translation>
-<translation id="4634124774493850572">Fes servir la contrasenya</translation>
 <translation id="5441504010984421144">La llista de credencials que s'emplenaran amb un toc està oberta i ocupa tota la pantalla.</translation>
 <translation id="5624120631404540903">Gestiona les contrasenyes</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_cs.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_cs.xtb
index 89700bd..6a8f30f 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_cs.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_cs.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="cs">
 <translation id="1717486229951421299">Seznam identifikačních údajů k vyplnění při klepnutí je otevřený na polovinu výšky.</translation>
 <translation id="207576718733492531">Seznam identifikačních údajů k vyplnění při klepnutí je zavřený.</translation>
+<translation id="2359808026110333948">Pokračovat</translation>
 <translation id="2410754283952462441">Vyberte účet</translation>
 <translation id="3399357656427473483">Seznam identifikačních údajů k vyplnění při klepnutí.</translation>
-<translation id="4634124774493850572">Použít heslo</translation>
 <translation id="5441504010984421144">Seznam identifikačních údajů k vyplnění při klepnutí je otevřený na celou výšku.</translation>
 <translation id="5624120631404540903">Spravovat hesla</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_da.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_da.xtb
index 97183cb..f2bcbbf6 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_da.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_da.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="da">
 <translation id="1717486229951421299">Listen over loginoplysninger, der udfyldes ved berøring, er åbnet i halv højde.</translation>
 <translation id="207576718733492531">Listen over loginoplysninger, der udfyldes ved berøring, er lukket.</translation>
+<translation id="2359808026110333948">Fortsæt</translation>
 <translation id="2410754283952462441">Vælg en konto</translation>
 <translation id="3399357656427473483">Liste over loginoplysninger, der udfyldes ved berøring.</translation>
-<translation id="4634124774493850572">Brug adgangskode</translation>
 <translation id="5441504010984421144">Listen over loginoplysninger, der udfyldes ved berøring, er åbnet i fuld højde.</translation>
 <translation id="5624120631404540903">Administrer adgangskoder</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_de.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_de.xtb
index 2900fc1..5bc8d43 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_de.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_de.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="de">
 <translation id="1717486229951421299">Die Liste der Anmeldedaten, die bei Berührung ausgefüllt werden, ist halb geöffnet.</translation>
 <translation id="207576718733492531">Die Liste der Anmeldedaten, die bei Berührung ausgefüllt werden, ist geschlossen.</translation>
+<translation id="2359808026110333948">Weiter</translation>
 <translation id="2410754283952462441">Konto auswählen</translation>
 <translation id="3399357656427473483">Die Liste der Anmeldedaten, die bei Berührung ausgefüllt werden, ist geöffnet.</translation>
-<translation id="4634124774493850572">Passwort verwenden</translation>
 <translation id="5441504010984421144">Die Liste der Anmeldedaten, die bei Berührung ausgefüllt werden, ist ganz geöffnet.</translation>
 <translation id="5624120631404540903">Passwörter verwalten</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_el.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_el.xtb
index 6fd3905..5c7c2e16 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_el.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_el.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="el">
 <translation id="1717486229951421299">Η λίστα με τα διαπιστευτήρια για συμπλήρωση μέσω αφής είναι ανοιχτή στο κάτω μισό της οθόνης.</translation>
 <translation id="207576718733492531">Η λίστα με τα διαπιστευτήρια για συμπλήρωση μέσω αφής είναι κλειστή.</translation>
+<translation id="2359808026110333948">Συνέχεια</translation>
 <translation id="2410754283952462441">Επιλέξτε λογαριασμό</translation>
 <translation id="3399357656427473483">Η λίστα με τα διαπιστευτήρια για συμπλήρωση μέσω αφής.</translation>
-<translation id="4634124774493850572">Χρήση κωδικού πρόσβασης</translation>
 <translation id="5441504010984421144">Η λίστα με τα διαπιστευτήρια για συμπλήρωση μέσω αφής είναι ανοιχτή σε όλη την οθόνη.</translation>
 <translation id="5624120631404540903">Διαχείριση κωδικών πρόσβασης</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_en-GB.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_en-GB.xtb
index 5f96405..a963b4a 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_en-GB.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_en-GB.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="en-GB">
 <translation id="1717486229951421299">List of credentials to be filled in on touch opened at half height.</translation>
 <translation id="207576718733492531">List of credentials to be filled in on touch is closed.</translation>
+<translation id="2359808026110333948">Continue</translation>
 <translation id="2410754283952462441">Choose an account</translation>
 <translation id="3399357656427473483">List of credentials to be filled in on touch.</translation>
-<translation id="4634124774493850572">Use password</translation>
 <translation id="5441504010984421144">List of credentials to be filled in on touch opened at full height.</translation>
 <translation id="5624120631404540903">Manage passwords</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_es-419.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_es-419.xtb
index 9194d718..dca7ee3 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_es-419.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_es-419.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="es-419">
 <translation id="1717486229951421299">La lista de credenciales que se debe tocar para completar está abierta a media altura.</translation>
 <translation id="207576718733492531">La lista de credenciales que se debe tocar para completar está cerrada.</translation>
+<translation id="2359808026110333948">Continuar</translation>
 <translation id="2410754283952462441">Elegir una cuenta</translation>
 <translation id="3399357656427473483">Lista de credenciales que se debe tocar para completar.</translation>
-<translation id="4634124774493850572">Usar contraseña</translation>
 <translation id="5441504010984421144">La lista de credenciales que se debe tocar para completar está totalmente abierta.</translation>
 <translation id="5624120631404540903">Administrar contraseñas</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_es.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_es.xtb
index 252f7eb..8307f1fc 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_es.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_es.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="es">
 <translation id="1717486229951421299">La lista de credenciales que puedes rellenar con un toque está abierta y ocupa la mitad inferior de la pantalla.</translation>
 <translation id="207576718733492531">La lista de credenciales que puedes rellenar con un toque está cerrada.</translation>
+<translation id="2359808026110333948">Continuar</translation>
 <translation id="2410754283952462441">Elegir una cuenta</translation>
 <translation id="3399357656427473483">Lista de credenciales que puedes rellenar con un toque.</translation>
-<translation id="4634124774493850572">Utilizar contraseña</translation>
 <translation id="5441504010984421144">La lista de credenciales que puedes rellenar con un toque está abierta y ocupa toda la pantalla.</translation>
 <translation id="5624120631404540903">Administrar contraseñas</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_et.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_et.xtb
index 3376692..96fcc9b 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_et.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_et.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="et">
 <translation id="1717486229951421299">Loend mandaatidest, mis tuleb puudutusega täita, on avatud poolele kõrgusele.</translation>
 <translation id="207576718733492531">Loend mandaatidest, mis tuleb puudutusega täita, on suletud.</translation>
+<translation id="2359808026110333948">Jätka</translation>
 <translation id="2410754283952462441">Konto valimine</translation>
 <translation id="3399357656427473483">Loend mandaatidest, mis tuleb puudutusega täita.</translation>
-<translation id="4634124774493850572">Kasuta parooli</translation>
 <translation id="5441504010984421144">Loend mandaatidest, mis tuleb puudutusega täita, on avatud täiskõrgusele.</translation>
 <translation id="5624120631404540903">Paroolide haldamine</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_eu.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_eu.xtb
index 89ecbbe..ccb4ac91 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_eu.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_eu.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="eu">
 <translation id="1717486229951421299">Ukitzean bete beharreko kredentzialen zerrenda altuera erdian dago irekita.</translation>
 <translation id="207576718733492531">Ukitzean bete beharreko kredentzialen zerrenda itxita dago.</translation>
+<translation id="2359808026110333948">Jarraitu</translation>
 <translation id="2410754283952462441">Aukeratu kontu bat</translation>
 <translation id="3399357656427473483">Ukitzean bete beharreko kredentzialen zerrenda.</translation>
-<translation id="4634124774493850572">Erabili pasahitza</translation>
 <translation id="5441504010984421144">Ukitzean bete beharreko kredentzialen zerrenda altuera osoan dago irekita.</translation>
 <translation id="5624120631404540903">Kudeatu pasahitzak</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_fa.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_fa.xtb
index 02f3796..3d5b8f017 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_fa.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_fa.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="fa">
 <translation id="1717486229951421299">فهرست اطلاعات کاربری که باید با لمس کردن تکمیل شود، به‌صورت نیمه باز شده است.</translation>
 <translation id="207576718733492531">فهرست اطلاعات کاربری که باید با لمس کردن تکمیل شود بسته شده است.</translation>
+<translation id="2359808026110333948">ادامه</translation>
 <translation id="2410754283952462441">انتخاب حساب</translation>
 <translation id="3399357656427473483">فهرست اطلاعات کاربری که باید با لمس کردن تکمیل شود.</translation>
-<translation id="4634124774493850572">استفاده از گذرواژه</translation>
 <translation id="5441504010984421144">فهرست اطلاعات کاربری که باید با لمس کردن تکمیل شود کاملاً باز شد.</translation>
 <translation id="5624120631404540903">مدیریت گذرواژه‌ها</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_fi.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_fi.xtb
index 1b046d30..ee2ebf5 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_fi.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_fi.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="fi">
 <translation id="1717486229951421299">Kosketuksella täytettävien kirjautumistietojen lista avattu puolen näytön korkeudella.</translation>
 <translation id="207576718733492531">Kosketuksella täytettävien kirjautumistietojen lista on suljettu.</translation>
+<translation id="2359808026110333948">Jatka</translation>
 <translation id="2410754283952462441">Valitse tili</translation>
 <translation id="3399357656427473483">Kosketuksella täytettävien kirjautumistietojen lista</translation>
-<translation id="4634124774493850572">Käytä salasanaa</translation>
 <translation id="5441504010984421144">Kosketuksella täytettävien kirjautumistietojen lista avattu koko näytön korkeudella.</translation>
 <translation id="5624120631404540903">Hallitse salasanoja</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_fil.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_fil.xtb
index 29e412c..4e05f4b 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_fil.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_fil.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="fil">
 <translation id="1717486229951421299">Nakabukas nang kalahati ang taas ang listahan ng mga kredensyal na pupunan kapag pinindot.</translation>
 <translation id="207576718733492531">Nakasara ang listahan ng mga kredensyal na pupunan kapag pinindot.</translation>
+<translation id="2359808026110333948">Magpatuloy</translation>
 <translation id="2410754283952462441">Pumili ng account</translation>
 <translation id="3399357656427473483">Listahan ng mga kredensyal na pupunan kapag pinindot.</translation>
-<translation id="4634124774493850572">Gamitin ang password</translation>
 <translation id="5441504010984421144">Nakabukas nang buo ang taas ang listahan ng mga kredensyal na pupunan kapag pinindot.</translation>
 <translation id="5624120631404540903">Pamahalaan ang mga password</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_fr-CA.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_fr-CA.xtb
index 450c70e..31eda47 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_fr-CA.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_fr-CA.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="fr-CA">
 <translation id="1717486229951421299">La liste d'authentifiants à remplir au toucher est ouverte à la mi-hauteur.</translation>
 <translation id="207576718733492531">La liste d'authentifiants à remplir au toucher est fermée.</translation>
+<translation id="2359808026110333948">Continuer</translation>
 <translation id="2410754283952462441">Choisir un compte</translation>
 <translation id="3399357656427473483">Liste d'authentifiants à remplir au toucher.</translation>
-<translation id="4634124774493850572">Utiliser le mot de passe</translation>
 <translation id="5441504010984421144">La liste d'authentifiants à remplir au toucher est ouverte à la pleine hauteur.</translation>
 <translation id="5624120631404540903">Gérer les mots de passe</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_fr.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_fr.xtb
index 0f006a7..077316a 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_fr.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_fr.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="fr">
 <translation id="1717486229951421299">La liste des identifiants à renseigner de façon tactile est ouverte à mi-hauteur.</translation>
 <translation id="207576718733492531">La liste des identifiants à renseigner de façon tactile est fermée.</translation>
+<translation id="2359808026110333948">Continuer</translation>
 <translation id="2410754283952462441">Sélectionner un compte</translation>
 <translation id="3399357656427473483">Liste des identifiants à renseigner de façon tactile.</translation>
-<translation id="4634124774493850572">Utiliser le mot de passe</translation>
 <translation id="5441504010984421144">La liste des identifiants à renseigner de façon tactile est ouverte à hauteur maximale.</translation>
 <translation id="5624120631404540903">Gérer les mots de passe</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_gl.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_gl.xtb
index dc9e41c..9921de8 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_gl.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_gl.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="gl">
 <translation id="1717486229951421299">A lista de credenciais que se completarán ao tocar está aberta ata a metade da pantalla.</translation>
 <translation id="207576718733492531">A lista de credenciais que se completarán ao tocar está pechada.</translation>
+<translation id="2359808026110333948">Continuar</translation>
 <translation id="2410754283952462441">Escolle unha conta</translation>
 <translation id="3399357656427473483">A lista de credenciais que se completarán ao tocar.</translation>
-<translation id="4634124774493850572">Usar contrasinal</translation>
 <translation id="5441504010984421144">A lista de credenciais que se completarán ao tocar está aberta a pantalla completa.</translation>
 <translation id="5624120631404540903">Xestionar contrasinais</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_gu.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_gu.xtb
index 4722bcf..c3948e9 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_gu.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_gu.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="gu">
 <translation id="1717486229951421299">Touch પર લૉગ ઇન વિગતો ભરવાની સૂચિ અડધી ઊંચાઈએ ખૂલી.</translation>
 <translation id="207576718733492531">Touch પર લૉગ ઇન વિગતો ભરવાની સૂચિ બંધ છે.</translation>
+<translation id="2359808026110333948">આગળ વધો</translation>
 <translation id="2410754283952462441">એકાઉન્ટ પસંદ કરો</translation>
 <translation id="3399357656427473483">Touch પર લૉગ ઇન વિગતો ભરવાની સૂચિ.</translation>
-<translation id="4634124774493850572">પાસવર્ડનો ઉપયોગ કરો</translation>
 <translation id="5441504010984421144">Touch પર લૉગ ઇન વિગતો ભરવાની સૂચિ સંપૂર્ણ ઊંચાઈએ ખૂલી.</translation>
 <translation id="5624120631404540903">પાસવર્ડ્સનું સંચાલન કરો</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_hi.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_hi.xtb
index 08d6b3d..92b6ed2 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_hi.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_hi.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="hi">
 <translation id="1717486229951421299">टच करके भरी जाने वाली क्रेडेंशियल की सूची आधी स्क्रीन में खुली हुई है.</translation>
 <translation id="207576718733492531">टच करके भरी जाने वाली क्रेडेंशियल की सूची बंद है.</translation>
+<translation id="2359808026110333948">जारी रखें</translation>
 <translation id="2410754283952462441">कोई खाता चुनें</translation>
 <translation id="3399357656427473483">टच करके भरी जाने वाली क्रेडेंशियल की सूची.</translation>
-<translation id="4634124774493850572">पासवर्ड का इस्तेमाल करें</translation>
 <translation id="5441504010984421144">टच करके भरी जाने वाली क्रेडेंशियल की सूची पूरी स्क्रीन में खुली हुई है.</translation>
 <translation id="5624120631404540903">पासवर्ड प्रबंधित करें</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_hr.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_hr.xtb
index 5fc4d61d9..5f0bc9f 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_hr.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_hr.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="hr">
 <translation id="1717486229951421299">Popis vjerodajnica za unos dodirom otvoren je na pola visine.</translation>
 <translation id="207576718733492531">Popis vjerodajnica za unos dodirom zatvoren je.</translation>
+<translation id="2359808026110333948">Nastavi</translation>
 <translation id="2410754283952462441">Odabir računa</translation>
 <translation id="3399357656427473483">Popis vjerodajnica za unos dodirom.</translation>
-<translation id="4634124774493850572">Upotrijebi zaporku</translation>
 <translation id="5441504010984421144">Popis vjerodajnica za unos dodirom otvoren je preko cijelog zaslona.</translation>
 <translation id="5624120631404540903">Upravljanje zaporkama</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_hu.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_hu.xtb
index 010fbfa..07027b5 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_hu.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_hu.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="hu">
 <translation id="1717486229951421299">Az érintéssel kitöltendő hitelesítő adatok listája félmagasságban megnyitva.</translation>
 <translation id="207576718733492531">Az érintéssel kitölthető hitelesítési adatok listája be van zárva.</translation>
+<translation id="2359808026110333948">Tovább</translation>
 <translation id="2410754283952462441">Válasszon fiókot</translation>
 <translation id="3399357656427473483">Az érintéssel kitöltendő hitelesítő adatok listája.</translation>
-<translation id="4634124774493850572">Jelszó használata</translation>
 <translation id="5441504010984421144">Az érintéssel kitöltendő hitelesítő adatok listája teljes magasságban megnyitva.</translation>
 <translation id="5624120631404540903">Jelszavak kezelése</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_hy.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_hy.xtb
index 01183aee..67c7209d 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_hy.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_hy.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="hy">
 <translation id="1717486229951421299">Մուտքի տվյալները, որոնք պետք է լրացվեն հպումով, ցուցադրված են էկրանի կեսով:</translation>
 <translation id="207576718733492531">Մուտքի տվյալները, որոնք պետք է լրացվեն հպումով, ցուցադրված չեն։</translation>
+<translation id="2359808026110333948">Շարունակել</translation>
 <translation id="2410754283952462441">Ընտրեք հաշիվ</translation>
 <translation id="3399357656427473483">Մուտքի տվյալները, որոնք պետք է լրացվեն հպման ժամանակ։</translation>
-<translation id="4634124774493850572">Օգտագործել գաղտնաբառը</translation>
 <translation id="5441504010984421144">Մուտքի տվյալները, որոնք պետք է լրացվեն հպումով, ցուցադրված են ամբողջ էկրանով:</translation>
 <translation id="5624120631404540903">Կառավարել գաղտնաբառերը</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_id.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_id.xtb
index 67aa94c..6e5885c4 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_id.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_id.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="id">
 <translation id="1717486229951421299">Daftar kredensial yang terisi dengan gestur sentuhan sedang terbuka setengah.</translation>
 <translation id="207576718733492531">Daftar kredensial yang terisi dengan gestur sentuhan sedang tertutup.</translation>
+<translation id="2359808026110333948">Lanjutkan</translation>
 <translation id="2410754283952462441">Pilih akun</translation>
 <translation id="3399357656427473483">Daftar kredensial yang terisi dengan gestur sentuhan.</translation>
-<translation id="4634124774493850572">Gunakan sandi</translation>
 <translation id="5441504010984421144">Daftar kredensial yang terisi dengan gestur sentuhan sedang terbuka sepenuhnya.</translation>
 <translation id="5624120631404540903">Kelola sandi</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_is.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_is.xtb
index bc7b943b..4d5308c2 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_is.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_is.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="is">
 <translation id="1717486229951421299">Listi yfir innskráningarupplýsingar sem eru færðar inn við snertingu opinn í hálfri hæð.</translation>
 <translation id="207576718733492531">Listi yfir innskráningarupplýsingar sem eru færðar inn við snertingu er lokaður.</translation>
+<translation id="2359808026110333948">Halda áfram</translation>
 <translation id="2410754283952462441">Veldu reikning</translation>
 <translation id="3399357656427473483">Listi yfir innskráningarupplýsingar sem eru færðar inn við snertingu.</translation>
-<translation id="4634124774493850572">Nota aðgangsorð</translation>
 <translation id="5441504010984421144">Listi yfir innskráningarupplýsingar sem eru færðar inn við snertingu opinn í fullri hæð.</translation>
 <translation id="5624120631404540903">Stjórna aðgangsorðum</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_it.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_it.xtb
index 8893f4a..38ac3b9 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_it.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_it.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="it">
 <translation id="1717486229951421299">Elenco di credenziali da compilare con il tocco aperte nella metà inferiore dello schermo.</translation>
 <translation id="207576718733492531">L'elenco di credenziali da compilare con il tocco è chiuso.</translation>
+<translation id="2359808026110333948">Continua</translation>
 <translation id="2410754283952462441">Scegli un account</translation>
 <translation id="3399357656427473483">Elenco di credenziali da compilare con il tocco.</translation>
-<translation id="4634124774493850572">Utilizza password</translation>
 <translation id="5441504010984421144">Elenco di credenziali da compilare con il tocco aperte a schermo intero.</translation>
 <translation id="5624120631404540903">Gestisci password</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_iw.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_iw.xtb
index 97b568d0..6917cf7 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_iw.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_iw.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="iw">
 <translation id="1717486229951421299">רשימת פרטי הכניסה למילוי במגע פתוחה בחצי מגובה המסך.</translation>
 <translation id="207576718733492531">רשימת פרטי הכניסה למילוי במגע סגורה.</translation>
+<translation id="2359808026110333948">המשך</translation>
 <translation id="2410754283952462441">בחירת חשבון</translation>
 <translation id="3399357656427473483">רשימת פרטי הכניסה למילוי במגע.</translation>
-<translation id="4634124774493850572">שימוש בסיסמה</translation>
 <translation id="5441504010984421144">רשימת פרטי הכניסה למילוי במגע פתוחה בגובה המלא של המסך.</translation>
 <translation id="5624120631404540903">נהל סיסמאות</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ja.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ja.xtb
index e193fe1a..b6af48f 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ja.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ja.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="ja">
 <translation id="1717486229951421299">タップ操作で入力する認証情報のリストが画面の下半分に表示されています。</translation>
 <translation id="207576718733492531">タップ操作で入力する認証情報のリストは閉じています。</translation>
+<translation id="2359808026110333948">続行</translation>
 <translation id="2410754283952462441">アカウントの選択</translation>
 <translation id="3399357656427473483">タップ操作で入力する認証情報のリスト。</translation>
-<translation id="4634124774493850572">パスワードを使用</translation>
 <translation id="5441504010984421144">タップ操作で入力する認証情報のリストが画面全体に表示されています。</translation>
 <translation id="5624120631404540903">パスワードを管理</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ka.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ka.xtb
index a8a9813..a340ede 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ka.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ka.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="ka">
 <translation id="1717486229951421299">შეხებისას შესავსები ავტორიზაციის მონაცემების სია გახსნილია ნახევარ სიმაღლეზე.</translation>
 <translation id="207576718733492531">შეხებისას შესავსები ავტორიზაციის მონაცემების სია დახურულია.</translation>
+<translation id="2359808026110333948">გაგრძელება</translation>
 <translation id="2410754283952462441">აირჩიეთ ანგარიში</translation>
 <translation id="3399357656427473483">შეხებისას შესავსები ავტორიზაციის მონაცემების სია.</translation>
-<translation id="4634124774493850572">პაროლის გამოყენება</translation>
 <translation id="5441504010984421144">შეხებისას შესავსები ავტორიზაციის მონაცემების სია გახსნილია სრულ სიმაღლეზე.</translation>
 <translation id="5624120631404540903">პაროლების მართვა</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_kk.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_kk.xtb
index f3bb7bcd..60132923 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_kk.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_kk.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="kk">
 <translation id="1717486229951421299">Түрту арқылы толтырылатын тіркелу деректерінің тізімі жарты экранға ашылған.</translation>
 <translation id="207576718733492531">Түрту арқылы толтырылатын тіркелу деректерінің тізімі жабық.</translation>
+<translation id="2359808026110333948">Жалғастыру</translation>
 <translation id="2410754283952462441">Есептік жазба таңдау</translation>
 <translation id="3399357656427473483">Түрту арқылы толтырылатын тіркелу деректері тізімі.</translation>
-<translation id="4634124774493850572">Құпия сөзді пайдалану</translation>
 <translation id="5441504010984421144">Түрту арқылы толтырылатын тіркелу деректері тізімі толық экранға ашылған.</translation>
 <translation id="5624120631404540903">Құпия сөздерді басқару</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_km.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_km.xtb
index e2a268f..84a3eb0 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_km.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_km.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="km">
 <translation id="1717486229951421299">​បញ្ជី​ព័ត៌មាន​ផ្ទៀងផ្ទាត់ ដែលត្រូវ​បំពេញដោយ​ការប៉ះត្រូវបានបើកពាក់កណ្ដាល​អេក្រង់។</translation>
 <translation id="207576718733492531">បញ្ជី​ព័ត៌មាន​ផ្ទៀងផ្ទាត់ ដែលត្រូវ​បំពេញ​ដោយ​ការប៉ះ​ត្រូវបានបិទ។</translation>
+<translation id="2359808026110333948">បន្ត</translation>
 <translation id="2410754283952462441">ជ្រើសរើស​គណនី</translation>
 <translation id="3399357656427473483">បញ្ជី​ព័ត៌មាន​ផ្ទៀងផ្ទាត់ ដែលត្រូវ​បំពេញ​ដោយការប៉ះ។</translation>
-<translation id="4634124774493850572">ប្រើពាក្យសម្ងាត់​</translation>
 <translation id="5441504010984421144">បញ្ជី​ព័ត៌មាន​ផ្ទៀងផ្ទាត់ ដែលត្រូវ​បំពេញ​ដោយ​ការប៉ះ​ត្រូវបាន​បើក​ពេញ​អេក្រង់។</translation>
 <translation id="5624120631404540903">គ្រប់គ្រងពាក្យសម្ងាត់</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_kn.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_kn.xtb
index 8bd0d5c..7aa7937 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_kn.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_kn.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="kn">
 <translation id="1717486229951421299">ಸ್ಪರ್ಶಿಸಿ ಭರ್ತಿಮಾಡುವ ರುಜುವಾತುಗಳ ಪಟ್ಟಿಯನ್ನು ಅರ್ಧ ಎತ್ತರದಲ್ಲಿ ತೆರೆಯಲಾಗಿದೆ.</translation>
 <translation id="207576718733492531">ಸ್ಪರ್ಶಿಸಿ ಭರ್ತಿಮಾಡುವ ರುಜುವಾತುಗಳ ಪಟ್ಟಿಯನ್ನು ಮುಚ್ಚಲಾಗಿದೆ.</translation>
+<translation id="2359808026110333948">ಮುಂದುವರೆಸಿ</translation>
 <translation id="2410754283952462441">ಖಾತೆಯೊಂದನ್ನು ಆರಿಸಿ</translation>
 <translation id="3399357656427473483">ಸ್ಪರ್ಶಿಸಿ ಭರ್ತಿಮಾಡುವ ರುಜುವಾತುಗಳ ಪಟ್ಟಿ.</translation>
-<translation id="4634124774493850572">ಪಾಸ್‌ವರ್ಡ್ ಬಳಸಿ</translation>
 <translation id="5441504010984421144">ಸ್ಪರ್ಶಿಸಿ ಭರ್ತಿಮಾಡುವ ರುಜುವಾತುಗಳ ಪಟ್ಟಿಯನ್ನು ಸಂಪೂರ್ಣ ಎತ್ತರದಲ್ಲಿ ತೆರೆಯಲಾಗಿದೆ.</translation>
 <translation id="5624120631404540903">ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಿ</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ko.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ko.xtb
index 42b66d59..1df5896 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ko.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ko.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="ko">
 <translation id="1717486229951421299">터치 시 작성되는 사용자 인증 정보 목록이 절반 높이로 열렸습니다.</translation>
 <translation id="207576718733492531">터치 시 작성되는 사용자 인증 정보 목록이 닫혔습니다.</translation>
+<translation id="2359808026110333948">계속</translation>
 <translation id="2410754283952462441">계정 선택</translation>
 <translation id="3399357656427473483">터치 시 작성되는 사용자 인증 정보 목록입니다.</translation>
-<translation id="4634124774493850572">비밀번호 사용</translation>
 <translation id="5441504010984421144">터치 시 작성되는 사용자 인증 정보 목록이 전체 높이로 열렸습니다.</translation>
 <translation id="5624120631404540903">비밀번호 관리</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ky.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ky.xtb
index fb81540..994a5d30 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ky.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ky.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="ky">
 <translation id="1717486229951421299">Эсептик дайындардын басып коюп толтурула турган тизмеси жарымына чейин ачылды.</translation>
 <translation id="207576718733492531">Эсептик дайындардын басып коюп толтурула турган тизмеси жабык.</translation>
+<translation id="2359808026110333948">Улантуу</translation>
 <translation id="2410754283952462441">Аккаунт тандоо</translation>
 <translation id="3399357656427473483">Эсептик дайындардын басып коюп толтурула турган тизмеси.</translation>
-<translation id="4634124774493850572">Сырсөздү колдонуу</translation>
 <translation id="5441504010984421144">Эсептик дайындардын басып коюп толтурула турган тизмеси толугу менен ачылды.</translation>
 <translation id="5624120631404540903">Сырсөздөрдү башкаруу</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_lo.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_lo.xtb
index dd9b738..8c7039b 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_lo.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_lo.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="lo">
 <translation id="1717486229951421299">ລາຍການຂໍ້ມູນປະຈຳຕົວທີ່ຈະຕື່ມເມື່ອແຕະເປີດຢູ່ລະດັບລວງສູງເຄິ່ງຈໍ.</translation>
 <translation id="207576718733492531">ລາຍການຂໍ້ມູນປະຈຳຕົວທີ່ຕ້ອງຕື່ມເມື່ອແຕະປິດຢູ່.</translation>
+<translation id="2359808026110333948">ສືບຕໍ່</translation>
 <translation id="2410754283952462441">ເລືອກໜຶ່ງບັນຊີ</translation>
 <translation id="3399357656427473483">ລາຍການຂໍ້ມູນປະຈຳຕົວທີ່ຕ້ອງຕື່ມເມື່ອແຕະ.</translation>
-<translation id="4634124774493850572">ໃຊ້ລະຫັດຜ່ານ</translation>
 <translation id="5441504010984421144">ລາຍການຂໍ້ມູນປະຈຳຕົວທີ່ຈະຕື່ມເມື່ອແຕະເປີດຢູ່ລະດັບລວງສູງເຕັມຈໍ.</translation>
 <translation id="5624120631404540903">ຈັດການລະ​ຫັດ​ຜ່ານ​</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_lt.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_lt.xtb
index ed67a88..28ca8454 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_lt.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_lt.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="lt">
 <translation id="1717486229951421299">Prisijungimo duomenų, kuriuos galima užpildyti palietus, sąrašas atidarytas per pusę ekrano aukščio.</translation>
 <translation id="207576718733492531">Prisijungimo duomenų, kuriuos galima užpildyti palietus, sąrašas uždarytas.</translation>
+<translation id="2359808026110333948">Tęskite</translation>
 <translation id="2410754283952462441">Pasirinkite paskyrą</translation>
 <translation id="3399357656427473483">Prisijungimo duomenų, kuriuos galima užpildyti palietus, sąrašas.</translation>
-<translation id="4634124774493850572">Naudoti slaptažodį</translation>
 <translation id="5441504010984421144">Prisijungimo duomenų, kuriuos galima užpildyti palietus, sąrašas atidarytas per visą ekrano aukštį.</translation>
 <translation id="5624120631404540903">Tvarkyti slaptažodžius</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_lv.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_lv.xtb
index f58000fa..640cc03cb 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_lv.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_lv.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="lv">
 <translation id="1717486229951421299">Pieskaroties aizpildāmo akreditācijas datu saraksts ir atvērts pusekrāna augstumā.</translation>
 <translation id="207576718733492531">Pieskaroties aizpildāmo akreditācijas datu saraksts ir aizvērts.</translation>
+<translation id="2359808026110333948">Turpināt</translation>
 <translation id="2410754283952462441">Konta izvēle</translation>
 <translation id="3399357656427473483">Pieskaroties aizpildāmo akreditācijas datu saraksts.</translation>
-<translation id="4634124774493850572">Izmantot paroli</translation>
 <translation id="5441504010984421144">Pieskaroties aizpildāmo akreditācijas datu saraksts ir atvērts pilna ekrāna augstumā.</translation>
 <translation id="5624120631404540903">Pārvaldīt paroles</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_mk.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_mk.xtb
index 58818403..b4de26e6c 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_mk.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_mk.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="mk">
 <translation id="1717486229951421299">Списокот со акредитиви што се пополнуваат со допир е отворен на половина екран.</translation>
 <translation id="207576718733492531">Списокот со акредитиви што се пополнуваат со допир е затворен.</translation>
+<translation id="2359808026110333948">Продолжи</translation>
 <translation id="2410754283952462441">Изберете сметка</translation>
 <translation id="3399357656427473483">Список со акредитиви што се пополнуваат со допир.</translation>
-<translation id="4634124774493850572">Употреби ја лозинката</translation>
 <translation id="5441504010984421144">Списокот со акредитиви што се пополнуваат со допир е отворен на цел екран.</translation>
 <translation id="5624120631404540903">Управувај со лозинки</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ml.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ml.xtb
index ae0acde..79c0abb 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ml.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ml.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="ml">
 <translation id="1717486229951421299">ടച്ച് ചെയ്യുമ്പോൾ പൂരിപ്പിക്കേണ്ട ക്രെഡൻഷ്യലുകളുടെ ലിസ്റ്റ് പകുതി ഉയരത്തിൽ തുറന്നിരിക്കുന്നു.</translation>
 <translation id="207576718733492531">ടച്ച് ചെയ്യുമ്പോൾ പൂരിപ്പിക്കേണ്ട ക്രെഡൻഷ്യലുകളുടെ ലിസ്റ്റ് അടച്ചിരിക്കുന്നു.</translation>
+<translation id="2359808026110333948">തുടരുക</translation>
 <translation id="2410754283952462441">ഒരു അക്കൗണ്ട് തിരഞ്ഞെടുക്കൂ</translation>
 <translation id="3399357656427473483">ടച്ച് ചെയ്യുമ്പോൾ പൂരിപ്പിക്കേണ്ട ക്രെഡൻ‍ഷ്യലുകളുടെ ലിസ്‌റ്റ്.</translation>
-<translation id="4634124774493850572">പാസ്‌വേഡ് ഉപയോഗിക്കുക</translation>
 <translation id="5441504010984421144">ടച്ച് ചെയ്യുമ്പോൾ പൂരിപ്പിക്കേണ്ട ക്രെഡൻഷ്യലുകളുടെ ലിസ്റ്റ് പൂർണ്ണ ഉയരത്തിൽ തുറന്നിരിക്കുന്നു.</translation>
 <translation id="5624120631404540903">പാസ്‌വേഡുകൾ നിയന്ത്രിക്കുക</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_mn.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_mn.xtb
index d19129b0..3201ad4 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_mn.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_mn.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="mn">
 <translation id="1717486229951421299">Хүрэхэд гүйцээж бөглөх мандат үнэмлэхийн жагсаалтыг хагас өндрөөр нээлээ.</translation>
 <translation id="207576718733492531">Хүрэхэд гүйцээж бөглөх мандат үнэмлэхийн жагсаалт хаалттай байна.</translation>
+<translation id="2359808026110333948">Цааш</translation>
 <translation id="2410754283952462441">Бүртгэл сонгох</translation>
 <translation id="3399357656427473483">Хүрэхэд гүйцээж бөглөх мандат үнэмлэхийн жагсаалт.</translation>
-<translation id="4634124774493850572">Нууц үг ашиглах</translation>
 <translation id="5441504010984421144">Хүрэхэд гүйцээж бөглөх мандат үнэмлэхийн жагсаалтыг бүтэн өндрөөр нээлээ.</translation>
 <translation id="5624120631404540903">Нууц үгийг удирдах</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_mr.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_mr.xtb
index 91a4ce8..ecf26e0f 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_mr.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_mr.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="mr">
 <translation id="1717486229951421299">स्पर्श करून भरायची असलेली क्रेडेंशियलची सूची अर्ध्या भागावर उघडली आहे.</translation>
 <translation id="207576718733492531">स्पर्श करून भरायची असलेली क्रेडेंशियलची सूची बंद आहे.</translation>
+<translation id="2359808026110333948">सुरू ठेवा</translation>
 <translation id="2410754283952462441">एक खाते निवडा</translation>
 <translation id="3399357656427473483">स्पर्श करून भरायची असलेली क्रेडेंशियलची सूची.</translation>
-<translation id="4634124774493850572">पासवर्ड वापरा</translation>
 <translation id="5441504010984421144">स्पर्श करून भरायची असलेली क्रेडेंशियलची सूची संपूर्ण भागावर उघडली आहे.</translation>
 <translation id="5624120631404540903">पासवर्ड व्यवस्थापित करा</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ms.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ms.xtb
index 4a959a63..ece5c0c2 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ms.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ms.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="ms">
 <translation id="1717486229951421299">Senarai bukti kelayakan untuk diisi apabila disentuh, dibuka pada ketinggian separuh.</translation>
 <translation id="207576718733492531">Senarai bukti kelayakan untuk diisi apabila disentuh telah ditutup.</translation>
+<translation id="2359808026110333948">Teruskan</translation>
 <translation id="2410754283952462441">Pilih akaun</translation>
 <translation id="3399357656427473483">Senarai bukti kelayakan untuk diisi apabila disentuh.</translation>
-<translation id="4634124774493850572">Gunakan kata laluan</translation>
 <translation id="5441504010984421144">Senarai bukti kelayakan untuk diisi apabila disentuh, dibuka pada ketinggian penuh.</translation>
 <translation id="5624120631404540903">Urus kata laluan</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_my.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_my.xtb
index c66191d..169a2d8e 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_my.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_my.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="my">
 <translation id="1717486229951421299">ထိလိုက်သည့်အခါ ဖြည့်ရန်အတွက် အထောက်အထားများ၏ စာရင်းကို မြင်ကွင်းတစ်ဝက်ဖြင့်ထားသည်။</translation>
 <translation id="207576718733492531">ထိတွေ့သည့်အခါ ဖြည့်ရန် အထောက်အထားစာရင်းကို ပိတ်ထားသည်။</translation>
+<translation id="2359808026110333948">ဆက်လုပ်ရန်</translation>
 <translation id="2410754283952462441">အကောင့်တစ်ခု ရွေးပါ</translation>
 <translation id="3399357656427473483">ထိလိုက်သည့်အခါ ဖြည့်ရန်အတွက် အထောက်အထားများ၏ စာရင်း</translation>
-<translation id="4634124774493850572">စကားဝှက်ကို အသုံးပြုရန်</translation>
 <translation id="5441504010984421144">ထိလိုက်သည့်အခါ ဖြည့်ရန်အတွက် အထောက်အထားများ၏ စာရင်းကို မြင်ကွင်းအပြည့်ဖြင့်ထားသည်။</translation>
 <translation id="5624120631404540903">စကားဝှက်များကို စီမံကွပ်ကဲရန်</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ne.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ne.xtb
index e9f7e5ff..0d076b0 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ne.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ne.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="ne">
 <translation id="1717486229951421299">छुँदाखेरि भरिने प्रमाणहरूको सूची आधा उचाइमा खोलिएको छ।</translation>
 <translation id="207576718733492531">छुँदाखेरि भरिने प्रमाणहरूको सूची बन्द छ।</translation>
+<translation id="2359808026110333948">जारी राख्नुहोस्</translation>
 <translation id="2410754283952462441">कुनै खाता छान्नुहोस्</translation>
 <translation id="3399357656427473483">छुँदाखेरि भरिने प्रमाणहरूको सूची।</translation>
-<translation id="4634124774493850572">पासवर्ड प्रयोग गर्नुहोस्</translation>
 <translation id="5441504010984421144">छुँदाखेरि भरिने प्रमाणहरूको सूची पूर्ण उचाइमा खोलिएको छ।</translation>
 <translation id="5624120631404540903">पासवर्डहरू व्यवस्थापन गर्नुहोस्</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_nl.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_nl.xtb
index 2c5fadf9..44ad4f3 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_nl.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_nl.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="nl">
 <translation id="1717486229951421299">De lijst met gegevens die moeten worden ingevuld als je tikt, is op halve hoogte geopend.</translation>
 <translation id="207576718733492531">De lijst met gegevens die moeten worden ingevuld als je tikt, is gesloten.</translation>
+<translation id="2359808026110333948">Doorgaan</translation>
 <translation id="2410754283952462441">Een account selecteren</translation>
 <translation id="3399357656427473483">De lijst met gegevens die moeten worden ingevuld als je tikt.</translation>
-<translation id="4634124774493850572">Wachtwoord gebruiken</translation>
 <translation id="5441504010984421144">De lijst met gegevens die moeten worden ingevuld als je tikt, is op volledige hoogte geopend.</translation>
 <translation id="5624120631404540903">Wachtwoorden beheren</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_no.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_no.xtb
index dcc57a2..06b36f88 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_no.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_no.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="no">
 <translation id="1717486229951421299">Listen over legitimasjon som kan fylles ut ved å trykke, er åpnet i halv høyde.</translation>
 <translation id="207576718733492531">Listen over legitimasjon som kan fylles ut ved å trykke, er lukket.</translation>
+<translation id="2359808026110333948">Fortsett</translation>
 <translation id="2410754283952462441">Velg en konto</translation>
 <translation id="3399357656427473483">Listen over legitimasjon som kan fylles ut ved å trykke.</translation>
-<translation id="4634124774493850572">Bruk passord</translation>
 <translation id="5441504010984421144">Listen over legitimasjon som kan fylles ut ved å trykke, er åpnet i full høyde.</translation>
 <translation id="5624120631404540903">Administrer passord</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_or.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_or.xtb
index dfd66e0a..d19ae93 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_or.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_or.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="or">
 <translation id="1717486229951421299">ଅଧା ସ୍କ୍ରିନ୍‍‍ରେ ଖୋଲିଥିବା Touchରେ ପୂରଣ ହେବାକୁ ଥିବା କ୍ରେଡେନ୍‍ସିଆଲ୍‍ଗୁଡ଼ିକର ତାଲିକା।</translation>
 <translation id="207576718733492531">Touchରେ ପୂରଣ ହେବାକୁ ଥିବା କ୍ରେଡେନ୍‍ସିଆଲ୍‍ଗୁଡ଼ିକର ତାଲିକାକୁ ବନ୍ଦ କରିଦିଆଯାଇଛି।</translation>
+<translation id="2359808026110333948">ଜାରି ରଖନ୍ତୁ</translation>
 <translation id="2410754283952462441">ଗୋଟିଏ ଆକାଉଣ୍ଟ ବାଛନ୍ତୁ</translation>
 <translation id="3399357656427473483">Touchରେ ପୂରଣ ହେବାକୁ ଥିବା କ୍ରେଡେନ୍‍ସିଆଲ୍‍ଗୁଡ଼ିକର ତାଲିକା।</translation>
-<translation id="4634124774493850572">ପାସ୍‌ୱର୍ଡ ବ୍ୟବହାର କରନ୍ତୁ</translation>
 <translation id="5441504010984421144">ପୂର୍ଣ୍ଣ ସ୍କ୍ରିନ୍‍‍ରେ ଖୋଲିଥିବା Touchରେ ପୂରଣ ହେବାକୁ ଥିବା କ୍ରେଡେନ୍‍ସିଆଲ୍‍ଗୁଡ଼ିକର ତାଲିକା।</translation>
 <translation id="5624120631404540903">ପାସ୍‌ୱର୍ଡଗୁଡ଼ିକୁ ପରିଚାଳନା କରନ୍ତୁ</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_pa.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_pa.xtb
index a5b07cbe..08a8edf 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_pa.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_pa.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="pa">
 <translation id="1717486229951421299">ਸਪਰਸ਼ ਕਰਕੇ ਭਰੇ ਜਾਣ ਵਾਲੇ ਕ੍ਰੀਡੈਂਸ਼ੀਅਲਾਂ ਦੀ ਸੂਚੀ ਅੱਧੀ ਉਚਾਈ ਤੱਕ ਖੁੱਲ੍ਹੀ ਹੋਈ ਹੈ।</translation>
 <translation id="207576718733492531">ਸਪਰਸ਼ ਕਰਕੇ ਭਰੇ ਜਾਣ ਵਾਲੇ ਕ੍ਰੀਡੈਂਸ਼ੀਅਲਾਂ ਦੀ ਸੂਚੀ ਬੰਦ ਹੈ।</translation>
+<translation id="2359808026110333948">ਜਾਰੀ ਰੱਖੋ</translation>
 <translation id="2410754283952462441">ਕੋਈ ਖਾਤਾ ਚੁਣੋ</translation>
 <translation id="3399357656427473483">ਸਪਰਸ਼ ਕਰਕੇ ਭਰੇ ਜਾਣ ਵਾਲੇ ਕ੍ਰੀਡੈਂਸ਼ੀਅਲਾਂ ਦੀ ਸੂਚੀ</translation>
-<translation id="4634124774493850572">ਪਾਸਵਰਡ ਵਰਤੋ</translation>
 <translation id="5441504010984421144">ਸਪਰਸ਼ ਕਰਕੇ ਭਰੇ ਜਾਣ ਵਾਲੇ ਕ੍ਰੀਡੈਂਸ਼ੀਅਲਾਂ ਦੀ ਸੂਚੀ ਪੂਰੀ ਉਚਾਈ ਤੱਕ ਖੁੱਲ੍ਹੀ ਹੋਈ ਹੈ।</translation>
 <translation id="5624120631404540903">ਪਾਸਵਰਡ ਵਿਵਸਥਿਤ ਕਰੋ</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_pl.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_pl.xtb
index 59d74ab..ef8e10e 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_pl.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_pl.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="pl">
 <translation id="1717486229951421299">Lista uprawnień do wypełnienia po kliknięciu jest otwarta do połowy wysokości.</translation>
 <translation id="207576718733492531">Lista uprawnień do wypełnienia po kliknięciu jest zamknięta.</translation>
+<translation id="2359808026110333948">Dalej</translation>
 <translation id="2410754283952462441">Wybierz konto</translation>
 <translation id="3399357656427473483">Lista uprawnień do wypełnienia po kliknięciu.</translation>
-<translation id="4634124774493850572">Użyj hasła</translation>
 <translation id="5441504010984421144">Lista uprawnień do wypełnienia po kliknięciu jest otwarta na całą wysokość.</translation>
 <translation id="5624120631404540903">Zarządzaj hasłami</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_pt-BR.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_pt-BR.xtb
index a737afe..996ff50 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_pt-BR.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_pt-BR.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="pt-BR">
 <translation id="1717486229951421299">Lista de credenciais a serem preenchidas por toque aberta na metade da altura.</translation>
 <translation id="207576718733492531">A lista de credenciais a serem preenchidas por toque está fechada.</translation>
+<translation id="2359808026110333948">Continuar</translation>
 <translation id="2410754283952462441">Escolher uma conta</translation>
 <translation id="3399357656427473483">Lista de credenciais a serem preenchidas por toque.</translation>
-<translation id="4634124774493850572">Usar senha</translation>
 <translation id="5441504010984421144">Lista de credenciais a serem preenchidas por toque aberta no tamanho máximo.</translation>
 <translation id="5624120631404540903">Gerenciar senhas</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_pt-PT.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_pt-PT.xtb
index c8df4ac..4e00831 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_pt-PT.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_pt-PT.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="pt-PT">
 <translation id="1717486229951421299">Lista de credenciais a preencher com o toque aberta a meia altura.</translation>
 <translation id="207576718733492531">A lista de credenciais a preencher com o toque está fechada.</translation>
+<translation id="2359808026110333948">Continuar</translation>
 <translation id="2410754283952462441">Selecione uma conta</translation>
 <translation id="3399357656427473483">Lista de credenciais a preencher com o toque.</translation>
-<translation id="4634124774493850572">Utilizar palavra-passe</translation>
 <translation id="5441504010984421144">Lista de credenciais a preencher com o toque aberta em ecrã cheio.</translation>
 <translation id="5624120631404540903">Gerir palavras-passe</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ro.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ro.xtb
index fc743ec..c43ca01 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ro.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ro.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="ro">
 <translation id="1717486229951421299">Lista datelor de conectare care trebuie completate la atingere este deschisă la jumătate din înălțime.</translation>
 <translation id="207576718733492531">Lista datelor de conectare care trebuie completate la atingere s-a închis.</translation>
+<translation id="2359808026110333948">Continuă</translation>
 <translation id="2410754283952462441">Alege un cont</translation>
 <translation id="3399357656427473483">Lista datelor de conectare care trebuie completate la atingere.</translation>
-<translation id="4634124774493850572">Folosește parola</translation>
 <translation id="5441504010984421144">Lista datelor de conectare care trebuie completate la atingere este deschisă la înălțimea completă.</translation>
 <translation id="5624120631404540903">Gestionați parolele</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ru.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ru.xtb
index 0da242d5..a1326e2 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ru.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ru.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="ru">
 <translation id="1717486229951421299">Список учетных данных, которые можно ввести прикосновением, развернут на половину экрана.</translation>
 <translation id="207576718733492531">Список учетных данных, которые можно ввести прикосновением, закрыт.</translation>
+<translation id="2359808026110333948">Продолжить</translation>
 <translation id="2410754283952462441">Выберите аккаунт</translation>
 <translation id="3399357656427473483">Список учетных данных, которые можно ввести прикосновением.</translation>
-<translation id="4634124774493850572">Использовать пароль</translation>
 <translation id="5441504010984421144">Список учетных данных, которые можно ввести прикосновением, развернут на весь экран.</translation>
 <translation id="5624120631404540903">Настройки паролей</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_si.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_si.xtb
index 826b1646..a3b7032 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_si.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_si.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="si">
 <translation id="1717486229951421299">ස්පර්ශය මත පිරවිය යුතු අක්තපත්‍ර ලැයිස්තුව අඩ උසින් විවෘත වී ඇත.</translation>
 <translation id="207576718733492531">ස්පර්ශය මත පිරවිය යුතු අක්තපත්‍ර ලැයිස්තුව වසා ඇත.</translation>
+<translation id="2359808026110333948">කරගෙන යන්න</translation>
 <translation id="2410754283952462441">ගිණුමක් තෝරා ගන්න</translation>
 <translation id="3399357656427473483">ස්පර්ශය මත පිරවිය යුතු අක්තපත්‍ර ලැයිස්තුව.</translation>
-<translation id="4634124774493850572">මුරපදය භාවිත කරන්න</translation>
 <translation id="5441504010984421144">ස්පර්ශය මත පිරවිය යුතු අක්තපත්‍ර ලැයිස්තුව පූර්ණ උසින් විවෘත වී ඇත.</translation>
 <translation id="5624120631404540903">මුරපද පාලනය</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sk.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sk.xtb
index 39e14fb..9c2303a 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sk.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sk.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="sk">
 <translation id="1717486229951421299">Zoznam prihlasovacích údajov na vyplnenie po klepnutí je otvorený na polovičnú výšku.</translation>
 <translation id="207576718733492531">Zoznam prihlasovacích údajov na vyplnenie po klepnutí je zatvorený.</translation>
+<translation id="2359808026110333948">Pokračovať</translation>
 <translation id="2410754283952462441">Výber účtu</translation>
 <translation id="3399357656427473483">Zoznam prihlasovacích údajov na vyplnenie po klepnutí.</translation>
-<translation id="4634124774493850572">Použiť heslo</translation>
 <translation id="5441504010984421144">Zoznam prihlasovacích údajov na vyplnenie po klepnutí je otvorený na úplnú výšku.</translation>
 <translation id="5624120631404540903">Správa hesiel</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sl.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sl.xtb
index 59822ef..cf0f900 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sl.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sl.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="sl">
 <translation id="1717486229951421299">Seznam poverilnic, ki naj se izpolnijo ob dotiku, odprt pri polovični višini.</translation>
 <translation id="207576718733492531">Seznam poverilnic, ki naj se izpolnijo ob dotiku, je zaprt.</translation>
+<translation id="2359808026110333948">Naprej</translation>
 <translation id="2410754283952462441">Izbira računa</translation>
 <translation id="3399357656427473483">Seznam poverilnic, ki naj se izpolnijo ob dotiku.</translation>
-<translation id="4634124774493850572">Uporabi geslo</translation>
 <translation id="5441504010984421144">Seznam poverilnic, ki naj se izpolnijo ob dotiku, odprt pri polni višini.</translation>
 <translation id="5624120631404540903">Upravljanje gesel</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sq.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sq.xtb
index ac9126d..d2fa5c27 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sq.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sq.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="sq">
 <translation id="1717486229951421299">Lista e kredencialeve për t'u plotësuar me prekje është hapur në gjysmë lartësi.</translation>
 <translation id="207576718733492531">Lista e kredencialeve për t'u plotësuar me prekje është mbyllur.</translation>
+<translation id="2359808026110333948">Vazhdo</translation>
 <translation id="2410754283952462441">Zgjidh një llogari</translation>
 <translation id="3399357656427473483">Lista e kredencialeve për t'u plotësuar me prekje.</translation>
-<translation id="4634124774493850572">Përdor fjalëkalimin</translation>
 <translation id="5441504010984421144">Lista e kredencialeve për t'u plotësuar me prekje është hapur në lartësi të plotë.</translation>
 <translation id="5624120631404540903">Menaxho fjalëkalimet</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sr.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sr.xtb
index 533846e7..166048f 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sr.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sr.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="sr">
 <translation id="1717486229951421299">Листа акредитива који треба да се унесу на додир се отворила до половине екрана.</translation>
 <translation id="207576718733492531">Листа акредитива који треба да се унесу на додир је затворена.</translation>
+<translation id="2359808026110333948">Наставите</translation>
 <translation id="2410754283952462441">Изаберите налог</translation>
 <translation id="3399357656427473483">Листа акредитива који треба да се унесу на додир.</translation>
-<translation id="4634124774493850572">Користи лозинку</translation>
 <translation id="5441504010984421144">Листа акредитива који треба да се унесу на додир се отворила на целом екрану,</translation>
 <translation id="5624120631404540903">Управљај лозинкама</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sv.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sv.xtb
index a04537e..98bc438 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sv.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sv.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="sv">
 <translation id="1717486229951421299">Listan över användaruppgifter som ska fyllas i med ett tryck har öppnats över halva skärmen.</translation>
 <translation id="207576718733492531">Listan över användaruppgifter som ska fyllas i med ett tryck är stängd.</translation>
+<translation id="2359808026110333948">Fortsätt</translation>
 <translation id="2410754283952462441">Välj ett konto</translation>
 <translation id="3399357656427473483">Lista över användaruppgifter som ska fyllas i med ett tryck.</translation>
-<translation id="4634124774493850572">Använd lösenordet</translation>
 <translation id="5441504010984421144">Listan över användaruppgifter som ska fyllas i med ett tryck har öppnats över hela skärmen.</translation>
 <translation id="5624120631404540903">Hantera lösenord</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sw.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sw.xtb
index 573570de..fed0967f 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sw.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_sw.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="sw">
 <translation id="1717486229951421299">Orodha ya vitambulisho vya kujaza kwa kugusa imefunguliwa kwenye nusu ya skrini.</translation>
 <translation id="207576718733492531">Orodha ya vitambulisho vya kujaza kwa kugusa imefungwa.</translation>
+<translation id="2359808026110333948">Endelea</translation>
 <translation id="2410754283952462441">Chagua akaunti</translation>
 <translation id="3399357656427473483">Orodha ya vitambulisho vya kujaza kwa kugusa.</translation>
-<translation id="4634124774493850572">Tumia nenosiri</translation>
 <translation id="5441504010984421144">Orodha ya vitambulisho vya kujaza kwa kugusa imefunguliwa kwenye skrini nzima.</translation>
 <translation id="5624120631404540903">Dhibiti manenosiri</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ta.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ta.xtb
index 40053a4..ef5d6c5 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ta.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ta.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="ta">
 <translation id="1717486229951421299">தொட்டால் நிரப்பப்பட வேண்டிய அனுமதிச் சான்றுகளின் பட்டியல் பாதித் திரையில் திறக்கப்பட்டுள்ளது.</translation>
 <translation id="207576718733492531">தொட்டால் நிரப்பப்பட வேண்டிய அனுமதிச் சான்றுகளின் பட்டியல் மூடப்பட்டுள்ளது.</translation>
+<translation id="2359808026110333948">தொடர்க</translation>
 <translation id="2410754283952462441">கணக்கைத் தேர்வு செய்யவும்</translation>
 <translation id="3399357656427473483">தொட்டால் நிரப்பப்பட வேண்டிய அனுமதிச் சான்றுகளின் பட்டியல்.</translation>
-<translation id="4634124774493850572">கடவுச்சொல்லைப் பயன்படுத்து</translation>
 <translation id="5441504010984421144">தொட்டால் நிரப்பப்பட வேண்டிய அனுமதிச் சான்றுகளின் பட்டியல் முழுத் திரையில் திறக்கப்பட்டுள்ளது.</translation>
 <translation id="5624120631404540903">கடவுச்சொற்களை நிர்வகி</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_te.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_te.xtb
index 602244bf..b8a27bb 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_te.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_te.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="te">
 <translation id="1717486229951421299">'టచ్ చేసి నింపాల్సిన ఆధారాల జాబితా' సగం ఎత్తులో తెరవబడింది.</translation>
 <translation id="207576718733492531">'టచ్ చేసి నింపాల్సిన ఆధారాల జాబితా' మూసివేయబడింది.</translation>
+<translation id="2359808026110333948">కొనసాగించు</translation>
 <translation id="2410754283952462441">ఖాతాను ఎంచుకోండి</translation>
 <translation id="3399357656427473483">'ట‌చ్ చేసి నింపాల్సిన ఆధారాల జాబితా'.</translation>
-<translation id="4634124774493850572">పాస్‌వర్డ్‌ను ఉపయోగించు</translation>
 <translation id="5441504010984421144">'ట‌చ్ చేసి నింపాల్సిన ఆధారాల జాబితా' పూర్తి ఎత్తులో తెరవబడింది.</translation>
 <translation id="5624120631404540903">పాస్‌వర్డ్‌లను నిర్వహించండి</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_th.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_th.xtb
index 584006f..e0b41cd 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_th.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_th.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="th">
 <translation id="1717486229951421299">รายการข้อมูลเข้าสู่ระบบที่จะกรอกเมื่อแตะเปิดอยู่ที่ระดับความสูงครึ่งหนึ่งของหน้าจอ</translation>
 <translation id="207576718733492531">รายการข้อมูลเข้าสู่ระบบที่จะกรอกเมื่อแตะปิดอยู่</translation>
+<translation id="2359808026110333948">ต่อไป</translation>
 <translation id="2410754283952462441">เลือกบัญชี</translation>
 <translation id="3399357656427473483">รายการข้อมูลเข้าสู่ระบบที่จะกรอกเมื่อแตะ</translation>
-<translation id="4634124774493850572">ใช้รหัสผ่าน</translation>
 <translation id="5441504010984421144">รายการข้อมูลเข้าสู่ระบบที่จะกรอกเมื่อแตะเปิดอยู่ที่ระดับความสูงเต็มหน้าจอ</translation>
 <translation id="5624120631404540903">จัดการรหัสผ่าน</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_tr.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_tr.xtb
index 259bb261..64e31bd 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_tr.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_tr.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="tr">
 <translation id="1717486229951421299">Dokunarak doldurulacak kimlik bilgisi listesi ekranın yarısında açıldı.</translation>
 <translation id="207576718733492531">Dokunarak doldurulacak kimlik bilgisi listesi kapatıldı.</translation>
+<translation id="2359808026110333948">Devam et</translation>
 <translation id="2410754283952462441">Bir hesap seçin</translation>
 <translation id="3399357656427473483">Dokunarak doldurulacak kimlik bilgisi listesi.</translation>
-<translation id="4634124774493850572">Şifre kullan</translation>
 <translation id="5441504010984421144">Dokunarak doldurulacak kimlik bilgisi listesi tam ekranda açıldı.</translation>
 <translation id="5624120631404540903">Şifreleri yönet</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_uk.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_uk.xtb
index e765049..bff3c95e 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_uk.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_uk.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="uk">
 <translation id="1717486229951421299">Список облікових даних, які вставляються дотиком, відкрито на половину висоти екрана.</translation>
 <translation id="207576718733492531">Список облікових даних, які вставляються дотиком, закритий.</translation>
+<translation id="2359808026110333948">Продовжити</translation>
 <translation id="2410754283952462441">Виберіть обліковий запис</translation>
 <translation id="3399357656427473483">Список облікових даних, які вставляються дотиком.</translation>
-<translation id="4634124774493850572">Прийняти пароль</translation>
 <translation id="5441504010984421144">Список облікових даних, які вставляються дотиком, відкрито на всю висоту екрана.</translation>
 <translation id="5624120631404540903">Керувати паролями</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ur.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ur.xtb
index 36c675d..3c05d9d 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ur.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_ur.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="ur">
 <translation id="1717486229951421299">ٹچ پر پُر کی جانے والی اسناد کی فہرست نصف اونچائی پر کھلی ہوئی ہے۔</translation>
 <translation id="207576718733492531">ٹچ پر پُر کی جانے والی اسناد کی فہرست بند ہے۔</translation>
+<translation id="2359808026110333948">جاری رکھیں</translation>
 <translation id="2410754283952462441">اکاؤنٹ منتخب کریں</translation>
 <translation id="3399357656427473483">ٹچ پر پُر کی جانے والی اسناد کی فہرست۔</translation>
-<translation id="4634124774493850572">پاس ورڈ استعمال کریں</translation>
 <translation id="5441504010984421144">ٹچ پر پُر کی جانے والی اسناد کی فہرست مکمل اونچائی پر کھلی ہوئی ہے۔</translation>
 <translation id="5624120631404540903">پاس ورڈز کا نظم کریں</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_uz.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_uz.xtb
index e603831..0a055e058 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_uz.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_uz.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="uz">
 <translation id="1717486229951421299">Teginib kiritiladigan login va parollar yarim hajmda ochildi.</translation>
 <translation id="207576718733492531">Teginib kiritiladigan login va parollar roʻyxati yopiq.</translation>
+<translation id="2359808026110333948">Davom etish</translation>
 <translation id="2410754283952462441">Hisobni tanlang</translation>
 <translation id="3399357656427473483">Teginib kiritiladigan login va parollar roʻyxati.</translation>
-<translation id="4634124774493850572">Paroldan foydalanish</translation>
 <translation id="5441504010984421144">Teginib kiritiladigan login va parollar toʻliq hajmda ochildi.</translation>
 <translation id="5624120631404540903">Sozlash</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_vi.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_vi.xtb
index b6b28a9..1d67c756 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_vi.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_vi.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="vi">
 <translation id="1717486229951421299">Danh sách thông tin đăng nhập mà bạn có thể chạm để điền đã được mở ở nửa dưới của màn hình.</translation>
 <translation id="207576718733492531">Danh sách thông tin đăng nhập mà bạn có thể chạm để điền đã bị đóng.</translation>
+<translation id="2359808026110333948">Tiếp tục</translation>
 <translation id="2410754283952462441">Chọn một tài khoản</translation>
 <translation id="3399357656427473483">Danh sách các thông tin đăng nhập mà bạn có thể chạm để điền.</translation>
-<translation id="4634124774493850572">Sử dụng mật khẩu</translation>
 <translation id="5441504010984421144">Danh sách các thông tin xác thực mà bạn có thể chạm để điền đã được mở ở toàn độ cao.</translation>
 <translation id="5624120631404540903">Quản lý mật khẩu</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_zh-CN.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_zh-CN.xtb
index 8f33e3a..18d68a0 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_zh-CN.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_zh-CN.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="zh-CN">
 <translation id="1717486229951421299">轻触即可填充的凭据的列表已半屏打开。</translation>
 <translation id="207576718733492531">轻触即可填充的凭据的列表已关闭。</translation>
+<translation id="2359808026110333948">继续</translation>
 <translation id="2410754283952462441">选择帐号</translation>
 <translation id="3399357656427473483">轻触即可填充的凭据的列表。</translation>
-<translation id="4634124774493850572">使用密码</translation>
 <translation id="5441504010984421144">轻触即可填充的凭据的列表已全屏打开。</translation>
 <translation id="5624120631404540903">管理密码</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_zh-HK.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_zh-HK.xtb
index 751120d..ca44a81 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_zh-HK.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_zh-HK.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="zh-HK">
 <translation id="1717486229951421299">㩒一下先可以填嘅憑證清單宜家顯示喺畫面下半部。</translation>
 <translation id="207576718733492531">㩒一下先可以填嘅憑證清單閂咗。</translation>
+<translation id="2359808026110333948">繼續</translation>
 <translation id="2410754283952462441">選擇帳戶</translation>
 <translation id="3399357656427473483">㩒一下先可以填嘅憑證清單。</translation>
-<translation id="4634124774493850572">使用密碼</translation>
 <translation id="5441504010984421144">㩒一下先可以填嘅憑證清單,宜家顯示喺成個畫面。</translation>
 <translation id="5624120631404540903">管理密碼</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_zh-TW.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_zh-TW.xtb
index 68a9c94..fdc6ffa0 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_zh-TW.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_zh-TW.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="zh-TW">
 <translation id="1717486229951421299">輕觸即可填入的憑證清單已開啟,顯示在畫面下半部。</translation>
 <translation id="207576718733492531">輕觸即可填入的憑證清單已關閉。</translation>
+<translation id="2359808026110333948">繼續</translation>
 <translation id="2410754283952462441">選擇帳戶</translation>
 <translation id="3399357656427473483">輕觸即可填入的憑證清單。</translation>
-<translation id="4634124774493850572">使用密碼</translation>
 <translation id="5441504010984421144">輕觸即可填入的憑證清單已開啟,顯示於整個畫面。</translation>
 <translation id="5624120631404540903">管理密碼</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_zu.xtb b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_zu.xtb
index d5998af2..b3ae5d2 100644
--- a/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_zu.xtb
+++ b/chrome/browser/touch_to_fill/android/internal/java/strings/translations/android_touch_to_fill_strings_zu.xtb
@@ -3,9 +3,9 @@
 <translationbundle lang="zu">
 <translation id="1717486229951421299">Uhlu lokuqinisekisa elizogcwaliswa ekuthintweni livulwe ngobude obuhhafu.</translation>
 <translation id="207576718733492531">Uhlu lokuqinisekisa oluzogcwaliswa ekuthinteni luvaliwe.</translation>
+<translation id="2359808026110333948">Qhubeka</translation>
 <translation id="2410754283952462441">Khetha i-akhawunti</translation>
 <translation id="3399357656427473483">Uhlu lokuqinisekisa oluzogcwaliswa ekuthinteni.</translation>
-<translation id="4634124774493850572">Sebenzisa iphasiwedi</translation>
 <translation id="5441504010984421144">Uhlu lokuqinisekisa oluzogcwaliswa ekuthinteni livulwe ngobude obugcwele.</translation>
 <translation id="5624120631404540903">Phatha amaphasiwedi</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/chrome/browser/touch_to_fill/android/javatests/src/org/chromium/chrome/browser/touch_to_fill/TouchToFillViewTest.java b/chrome/browser/touch_to_fill/android/javatests/src/org/chromium/chrome/browser/touch_to_fill/TouchToFillViewTest.java
index 289cbd0..64c053f 100644
--- a/chrome/browser/touch_to_fill/android/javatests/src/org/chromium/chrome/browser/touch_to_fill/TouchToFillViewTest.java
+++ b/chrome/browser/touch_to_fill/android/javatests/src/org/chromium/chrome/browser/touch_to_fill/TouchToFillViewTest.java
@@ -17,6 +17,7 @@
 import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.CredentialProperties.ON_CLICK_LISTENER;
 import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.HeaderProperties.FORMATTED_URL;
 import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.HeaderProperties.ORIGIN_SECURE;
+import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.HeaderProperties.SINGLE_CREDENTIAL;
 import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.ON_CLICK_MANAGE;
 import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.SHEET_ITEMS;
 import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.VISIBLE;
@@ -108,6 +109,48 @@
 
     @Test
     @MediumTest
+    public void testSingleCredentialTitleDisplayed() {
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            mModel.get(SHEET_ITEMS)
+                    .add(new MVCListAdapter.ListItem(TouchToFillProperties.ItemType.HEADER,
+                            new PropertyModel.Builder(HeaderProperties.ALL_KEYS)
+                                    .with(SINGLE_CREDENTIAL, true)
+                                    .with(FORMATTED_URL, "www.example.org")
+                                    .with(ORIGIN_SECURE, true)
+                                    .build()));
+            mModel.set(VISIBLE, true);
+        });
+        pollUiThread(() -> getBottomSheetState() == BottomSheetController.SheetState.HALF);
+        TextView title =
+                mTouchToFillView.getContentView().findViewById(R.id.touch_to_fill_sheet_title);
+
+        assertThat(title.getText(),
+                is(getActivity().getString(R.string.touch_to_fill_sheet_title_single)));
+    }
+
+    @Test
+    @MediumTest
+    public void testMultiCredentialTitleDisplayed() {
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            mModel.get(SHEET_ITEMS)
+                    .add(new MVCListAdapter.ListItem(TouchToFillProperties.ItemType.HEADER,
+                            new PropertyModel.Builder(HeaderProperties.ALL_KEYS)
+                                    .with(SINGLE_CREDENTIAL, false)
+                                    .with(FORMATTED_URL, "www.example.org")
+                                    .with(ORIGIN_SECURE, true)
+                                    .build()));
+            mModel.set(VISIBLE, true);
+        });
+        pollUiThread(() -> getBottomSheetState() == BottomSheetController.SheetState.HALF);
+        TextView title =
+                mTouchToFillView.getContentView().findViewById(R.id.touch_to_fill_sheet_title);
+
+        assertThat(
+                title.getText(), is(getActivity().getString(R.string.touch_to_fill_sheet_title)));
+    }
+
+    @Test
+    @MediumTest
     public void testSecureSubtitleUrlDisplayed() {
         TestThreadUtils.runOnUiThreadBlocking(() -> {
             mModel.get(SHEET_ITEMS)
diff --git a/chrome/browser/touch_to_fill/android/junit/src/org/chromium/chrome/browser/touch_to_fill/TouchToFillControllerTest.java b/chrome/browser/touch_to_fill/android/junit/src/org/chromium/chrome/browser/touch_to_fill/TouchToFillControllerTest.java
index 8e9142a..5f6a87d9 100644
--- a/chrome/browser/touch_to_fill/android/junit/src/org/chromium/chrome/browser/touch_to_fill/TouchToFillControllerTest.java
+++ b/chrome/browser/touch_to_fill/android/junit/src/org/chromium/chrome/browser/touch_to_fill/TouchToFillControllerTest.java
@@ -22,6 +22,7 @@
 import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.DISMISS_HANDLER;
 import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.HeaderProperties.FORMATTED_URL;
 import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.HeaderProperties.ORIGIN_SECURE;
+import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.HeaderProperties.SINGLE_CREDENTIAL;
 import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.ON_CLICK_MANAGE;
 import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.SHEET_ITEMS;
 import static org.chromium.chrome.browser.touch_to_fill.TouchToFillProperties.VISIBLE;
@@ -128,6 +129,17 @@
         mMediator.showCredentials(TEST_URL, true, Arrays.asList(ANA, CARL, BOB));
         ListModel<MVCListAdapter.ListItem> itemList = mModel.get(SHEET_ITEMS);
         assertThat(itemList.get(0).type, is(ItemType.HEADER));
+        assertThat(itemList.get(0).model.get(SINGLE_CREDENTIAL), is(false));
+        assertThat(
+                itemList.get(0).model.get(FORMATTED_URL), is(formatForSecurityDisplay(TEST_URL)));
+        assertThat(itemList.get(0).model.get(ORIGIN_SECURE), is(true));
+    }
+    @Test
+    public void testShowCredentialWithSingleEntryCreatesHeader() {
+        mMediator.showCredentials(TEST_URL, true, Arrays.asList(ANA));
+        ListModel<MVCListAdapter.ListItem> itemList = mModel.get(SHEET_ITEMS);
+        assertThat(itemList.get(0).type, is(ItemType.HEADER));
+        assertThat(itemList.get(0).model.get(SINGLE_CREDENTIAL), is(true));
         assertThat(
                 itemList.get(0).model.get(FORMATTED_URL), is(formatForSecurityDisplay(TEST_URL)));
         assertThat(itemList.get(0).model.get(ORIGIN_SECURE), is(true));
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
index 430ef525..86a05df6 100644
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -1001,6 +1001,9 @@
       <message name="IDS_WEBSITE_SETTINGS_ADD_SITE_DESCRIPTION_COOKIES_BLOCK" desc="The description for the block Cookies for website dialog.">
        Block cookies for a specific site.
       </message>
+      <message name="IDS_WEBSITE_SETTINGS_THIRD_PARTY_COOKIES_EXCEPTION_LABEL" desc="The label for site exceptions that affect third party cookies.">
+       All cookies, on this site only
+      </message>
       <message name="IDS_WEBSITE_SETTINGS_ADD_SITE_DESCRIPTION_SOUND_ALLOW" desc="The description for the allow sound for website dialog.">
         Allow sound for a specific site.
       </message>
@@ -1193,8 +1196,8 @@
       <message name="IDS_WEBSITE_NOTIFICATION_SETTINGS" desc="Accessibility string for the notification settings">
         Open notification settings
       </message>
-      <message name="IDS_WEBSITE_SETTINGS_EMBEDDED_IN" desc="String used to indicate the embedder origin of a site">
-        Embedded in <ph name="WEBSITE_URL">%1$s<ex>google.com</ex></ph>
+      <message name="IDS_WEBSITE_SETTINGS_EMBEDDED_ON" desc="String used to indicate the embedder origin of a site">
+        Embedded on <ph name="WEBSITE_URL">%1$s<ex>google.com</ex></ph>
       </message>
 
       <!-- Single site settings -->
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_WEBSITE_SETTINGS_THIRD_PARTY_COOKIES_EXCEPTION_LABEL.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_WEBSITE_SETTINGS_THIRD_PARTY_COOKIES_EXCEPTION_LABEL.png.sha1
new file mode 100644
index 0000000..7e36da65
--- /dev/null
+++ b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_WEBSITE_SETTINGS_THIRD_PARTY_COOKIES_EXCEPTION_LABEL.png.sha1
@@ -0,0 +1 @@
+5d36736598e01f51e1896d108fdc33e326cff806
\ No newline at end of file
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_af.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_af.xtb
index 53805b5..ab14922 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_af.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_af.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Sien gewilde webwerwe deur op die "Topwerwe"-knoppie te tik</translation>
 <translation id="1173894706177603556">Hernoem</translation>
 <translation id="1178581264944972037">Laat wag</translation>
-<translation id="118069123878619799">- jou fisieke kenmerke, soos lengte</translation>
 <translation id="1181037720776840403">Verwyder</translation>
 <translation id="1188239144602654184">Gaan by AR in</translation>
 <translation id="1197267115302279827">Skuif boekmerke</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Aflaai is onderbreek</translation>
 <translation id="1386674309198842382"><ph name="LAST_UPDATED" /> dae gelede aktief</translation>
 <translation id="1397811292916898096">Soek met <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Ingebed in <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">“Moenie naspoor nie”</translation>
 <translation id="1407135791313364759">Maak alles oop</translation>
 <translation id="1409426117486808224">Vereenvoudigde aansig vir oop oortjies</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> items is uitgevee</translation>
 <translation id="2536728043171574184">Bekyk tans 'n vanlyn kopie van hierdie bladsy</translation>
 <translation id="2537178555904266562">Kon nie wagwoorde sinkroniseer nie</translation>
+<translation id="2537296579376733324">Alle webkoekies, net op hierdie werf</translation>
 <translation id="2546283357679194313">Webkoekies en werfdata</translation>
 <translation id="2567385386134582609">PRENT</translation>
 <translation id="257088987046510401">Temas</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Versteek wagwoord</translation>
 <translation id="4570913071927164677">Besonderhede</translation>
 <translation id="4572422548854449519">Meld by 'n bestuurde rekening aan</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# minuut gelede}other{# minute gelede}}</translation>
 <translation id="4587589328781138893">Werwe</translation>
 <translation id="4594952190837476234">Hierdie vanlyn bladsy is van <ph name="CREATION_TIME" /> af en kan van die aanlyn weergawe verskil.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# uur gelede}other{# uur gelede}}</translation>
 <translation id="5810288467834065221">Kopiereg <ph name="YEAR" /> Google LLC. Alle regte voorbehou.</translation>
 <translation id="5817918615728894473">Bind saam</translation>
-<translation id="5819762621475381970">- die uitleg van jou vertrek</translation>
 <translation id="583281660410589416">Onbekend</translation>
 <translation id="5833984609253377421">Deel skakel</translation>
 <translation id="5836192821815272682">Laai tans Chrome-opdatering af …</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb
index 0aed566..a7c5dc7 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_am.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">የ«ከፍተኛ ጣቢያዎች» አዝራሩን መታ በማድረግ ታዋቂ ድር ጣቢያዎችን ይመልከቱ</translation>
 <translation id="1173894706177603556">ዳግም ሰይም</translation>
 <translation id="1178581264944972037">ለአፍታ አቁም</translation>
-<translation id="118069123878619799">- እንደ ቁመት ያሉ የእርስዎ አካላዊ ባህሪያት</translation>
 <translation id="1181037720776840403">አስወግድ</translation>
 <translation id="1188239144602654184">AR ያስገቡ</translation>
 <translation id="1197267115302279827">ዕልባቶችን ውሰድ</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">የሚወርደው ላፍታ ቆሟል</translation>
 <translation id="1386674309198842382">ገባሪ ከ<ph name="LAST_UPDATED" /> ቀናት በፊት</translation>
 <translation id="1397811292916898096">በ<ph name="PRODUCT_NAME" /> ይፈልጉ</translation>
-<translation id="1404122904123200417">በ<ph name="WEBSITE_URL" /> ውስጥ ተካትቷል</translation>
 <translation id="1406000523432664303">«አትከታተል»</translation>
 <translation id="1407135791313364759">ሁሉንም ክፈት</translation>
 <translation id="1409426117486808224">ለክፍት ትሮች የተቃለለ እይታ</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> ንጥሎች ተሰርዟል</translation>
 <translation id="2536728043171574184">የዚህን ገጽ የመስመር ውጭ ቅጂ በመመልከት ላይ</translation>
 <translation id="2537178555904266562">የይለፍ ቃሎችን ማስመር ላይ ስሕተት</translation>
+<translation id="2537296579376733324">ሁሉም ኩኪዎች፣ በዚህ ጣቢያ ላይ ብቻ</translation>
 <translation id="2546283357679194313">ኩኪዎች እና የጣቢያ ውሂብ</translation>
 <translation id="2567385386134582609">ምስል</translation>
 <translation id="257088987046510401">ገፅታዎች </translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">የይለፍ ቃል ደብቅ</translation>
 <translation id="4570913071927164677">ዝርዝሮች</translation>
 <translation id="4572422548854449519">ወደ የሚተዳደር መለያ ይግቡ</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{ከ# ደቂቃ በፊት}one{ከ# ደቂቃዎች በፊት}other{ከ# ደቂቃዎች በፊት}}</translation>
 <translation id="4587589328781138893">ጣቢያዎች</translation>
 <translation id="4594952190837476234">ይህ የ<ph name="CREATION_TIME" />  የመስመር ውጭ ገጽ ከመስመር ላይ ስሪቱ የተለየ ሊሆን ይችላል።</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{ከ# ሰዓት በፊት}one{ከ# ሰዓቶች በፊት}other{ከ# ሰዓቶች በፊት}}</translation>
 <translation id="5810288467834065221">የቅጂ መብት <ph name="YEAR" /> Google LLC. ሁሉም መብቶች በህግ የተጠበቁ ናቸው።</translation>
 <translation id="5817918615728894473">አጣምር</translation>
-<translation id="5819762621475381970">- የክፍልዎ አቀማመጥ</translation>
 <translation id="583281660410589416">ያልታወቀ </translation>
 <translation id="5833984609253377421">አገናኝ አጋራ</translation>
 <translation id="5836192821815272682">Chrome ዝማኔን በማውረድ ላይ…</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb
index 2a247e5a..ce3242a 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ar.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">عرض مواقع الويب الشائعة من خلال النقر على الزر "أهم المواقع"</translation>
 <translation id="1173894706177603556">إعادة تسمية</translation>
 <translation id="1178581264944972037">الإيقاف مؤقتًا</translation>
-<translation id="118069123878619799">- سماتك البدنية، مثل الطول</translation>
 <translation id="1181037720776840403">إزالة</translation>
 <translation id="1188239144602654184">إطلاق الواقع المعزّز</translation>
 <translation id="1197267115302279827">نقل الإشارات المرجعية</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">تم إيقاف التنزيل مؤقتًا</translation>
 <translation id="1386674309198842382">نشط قبل <ph name="LAST_UPDATED" /> من الأيام</translation>
 <translation id="1397811292916898096">البحث باستخدام <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">متضمّن في <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">"عدم التعقب"</translation>
 <translation id="1407135791313364759">فتح الكل</translation>
 <translation id="1409426117486808224">عرض مبسَّط لعلامات التبويب المفتوحة</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547">تم حذف <ph name="NUMBER_OF_ITEMS" /> من العناصر</translation>
 <translation id="2536728043171574184">عرض نسخة بلا اتصال من هذه الصفحة</translation>
 <translation id="2537178555904266562">حدث خطأ أثناء مزامنة كلمات المرور</translation>
+<translation id="2537296579376733324">جميع ملفات تعريف الارتباط، في هذا الموقع الإلكتروني فقط</translation>
 <translation id="2546283357679194313">ملفات تعريف الارتباط وبيانات المواقع</translation>
 <translation id="2567385386134582609">صورة</translation>
 <translation id="257088987046510401">المظاهر</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">إخفاء كلمة المرور</translation>
 <translation id="4570913071927164677">التفاصيل</translation>
 <translation id="4572422548854449519">تسجيل الدخول إلى الحساب المدار</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{قبل دقيقة واحدة (#)}zero{قبل # دقيقة}two{قبل دقيقتين (#)}few{قبل # دقائق}many{قبل # دقيقة}other{قبل # دقيقة}}</translation>
 <translation id="4587589328781138893">المواقع</translation>
 <translation id="4594952190837476234">تم إنشاء هذه الصفحة المتوفّرة بلا اتصال بالإنترنت في <ph name="CREATION_TIME" />، وقد تختلف عن النسخة المتوفِّرة على الإنترنت.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{قبل ساعة واحدة (#)}zero{قبل # ساعة}two{قبل ساعتين (#)}few{قبل # ساعات}many{قبل # ساعة}other{قبل # ساعة}}</translation>
 <translation id="5810288467834065221">‏حقوق الطبع والنشر لعام <ph name="YEAR" /> لشركة Google LLC. جميع الحقوق محفوظة.</translation>
 <translation id="5817918615728894473">إقران</translation>
-<translation id="5819762621475381970">- شكل غرفتك</translation>
 <translation id="583281660410589416">غير معروف</translation>
 <translation id="5833984609253377421">مشاركة الرابط</translation>
 <translation id="5836192821815272682">‏جارٍ تنزيل تحديث Chrome…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">مسح جميع البيانات</translation>
 <translation id="6545864417968258051">البحث عن بلوتوث</translation>
 <translation id="6560414384669816528">‏البحث باستخدام Sogou</translation>
+<translation id="656065428026159829">عرض المزيد</translation>
 <translation id="6566259936974865419">‏لقد وفر Chrome لك <ph name="GIGABYTES" /> غيغابايت</translation>
 <translation id="6573096386450695060">السماح دومًا</translation>
 <translation id="6573431926118603307">‏ستظهر هنا علامات التبويب التي فتحتها في Chrome من أجهزتك الأخرى.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">‏لبدء المزامنة، يُرجى تفعيل "مزامنة بيانات Chrome".</translation>
 <translation id="729975465115245577">لا يتضمن جهازك تطبيقًا لتخزين ملف كلمات المرور.</translation>
 <translation id="7302081693174882195">التفاصيل: تم الترتيب بحسب مقدار البيانات المحفوظة</translation>
+<translation id="7302486331832100261">أنت تحظر الإشعارات عادةً. للسماح بها، يُرجى النقر على "التفاصيل".</translation>
 <translation id="7328017930301109123">‏في الوضع البسيط، يُحمِّل Chrome الصفحات بشكلٍ أسرع ويستخدم بيانات أقل بنسبة تصل إلى 60 بالمائة.</translation>
 <translation id="7333031090786104871">لا تزال عملية إضافة موقع الويب السابق جارية</translation>
 <translation id="7352939065658542140">فيديو</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb
index 940f2be..8fb0ad76 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_as.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">"শীর্ষ ছাইটসমূহ" বুটামটো টিপি জনপ্ৰিয় ৱেবছাইটসমূহ চাওক</translation>
 <translation id="1173894706177603556">নতুন নাম দিয়ক</translation>
 <translation id="1178581264944972037">পজ কৰক</translation>
-<translation id="118069123878619799">- আপোনাৰ শাৰীৰিক বৈশিষ্ট্যসমূহ, যেনে উচ্চতা</translation>
 <translation id="1181037720776840403">আঁতৰাওক</translation>
 <translation id="1188239144602654184">AR আৰম্ভ কৰক</translation>
 <translation id="1197267115302279827">বুকমার্কসমূহ আঁতৰাওক</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">ডাইনল’ড পজ কৰা হৈছে</translation>
 <translation id="1386674309198842382"><ph name="LAST_UPDATED" />দিনৰ পূৰ্বে সক্ৰিয় আছিল</translation>
 <translation id="1397811292916898096"><ph name="PRODUCT_NAME" />ৰ জৰিয়তে সন্ধান কৰক</translation>
-<translation id="1404122904123200417"><ph name="WEBSITE_URL" />ত এম্বেড কৰা আছে</translation>
 <translation id="1406000523432664303">“ট্ৰেক নকৰিব”</translation>
 <translation id="1407135791313364759">সকলো খোলক</translation>
 <translation id="1409426117486808224">খোলা টেবৰ বাবে সৰলীকৃত ভিউ</translation>
@@ -214,6 +212,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> টা সমল মচা হ’ল</translation>
 <translation id="2536728043171574184">এই পৃষ্ঠাটোৰ এটা অফলাইন প্ৰতিলিপি চাই আছে</translation>
 <translation id="2537178555904266562">পাছৱৰ্ডসমূহ ছিংক কৰাত আসোঁৱাহ হৈছে</translation>
+<translation id="2537296579376733324">সকলোবোৰ কুকি, কেৱল এইটো ছাইটত থকা</translation>
 <translation id="2546283357679194313">কুকি আৰু ছাইট ডেটা</translation>
 <translation id="2567385386134582609">প্ৰতিচ্ছবি</translation>
 <translation id="257088987046510401">থীম</translation>
@@ -471,6 +470,7 @@
 <translation id="4565377596337484307">পাছৱৰ্ড লুকুৱাওক</translation>
 <translation id="4570913071927164677">সবিশেষ</translation>
 <translation id="4572422548854449519">পৰিচালিত একাউণ্টত ছাইন ইন কৰক</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# মিনিট পূর্বে}one{# মিনিট পূর্বে}other{# মিনিট পূর্বে}}</translation>
 <translation id="4587589328781138893">ছাইটবোৰ</translation>
 <translation id="4594952190837476234">এই অফলাইন পৃষ্ঠাটো <ph name="CREATION_TIME" />ৰ আৰু এই পৃষ্ঠাটো অনলাইন সংস্কৰণতকৈ বেলেগ হ’ব পাৰে।</translation>
@@ -651,7 +651,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{#ঘণ্টা পূৰ্বে}one{#ঘণ্টা পূৰ্বে}other{#ঘণ্টা পূৰ্বে}}</translation>
 <translation id="5810288467834065221">স্বত্বাধিকাৰ <ph name="YEAR" /> Google Inc। সর্বস্বত্ব সংৰক্ষিত।</translation>
 <translation id="5817918615728894473">যোৰা লগাওক</translation>
-<translation id="5819762621475381970">- আপোনাৰ কোঠাৰ লে’আউটটো</translation>
 <translation id="583281660410589416">অজ্ঞাত</translation>
 <translation id="5833984609253377421">লিংক শ্বেয়াৰ কৰক</translation>
 <translation id="5836192821815272682">Chromeৰ আপডে’ট ডাউনল’ড কৰি থকা হৈছে…</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_az.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_az.xtb
index a8608c4..e5903170 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_az.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_az.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">"Popluyar saytlar" seçiminə klikləyin və məşhur saytlara baxın</translation>
 <translation id="1173894706177603556">Adını dəyişin</translation>
 <translation id="1178581264944972037">Durdurun</translation>
-<translation id="118069123878619799">- boy kimi fiziki göstəriciləriniz</translation>
 <translation id="1181037720776840403">Silin</translation>
 <translation id="1188239144602654184">AR-ə başlayın</translation>
 <translation id="1197267115302279827">Əlfəcinləri köçürün</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Endirmə durduruldu</translation>
 <translation id="1386674309198842382"><ph name="LAST_UPDATED" /> gün əvvəl aktiv olub</translation>
 <translation id="1397811292916898096"><ph name="PRODUCT_NAME" /> ilə axtarın</translation>
-<translation id="1404122904123200417"><ph name="WEBSITE_URL" /> linkinə yerləşdirilib</translation>
 <translation id="1406000523432664303">İzləməyin</translation>
 <translation id="1407135791313364759">Hamısını açın</translation>
 <translation id="1409426117486808224">Açıq tablar üçün sadələşdirilmiş görünüş</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> element silindi</translation>
 <translation id="2536728043171574184">Bu səhifənin oflayn nüsxəsinə baxılır</translation>
 <translation id="2537178555904266562">Parolları sinxronlaşdıran zaman xəta baş verdi</translation>
+<translation id="2537296579376733324">Ancaq bu saytda, bütün kukilər</translation>
 <translation id="2546283357679194313">Kukilər və sayt datası</translation>
 <translation id="2567385386134582609">ŞƏKİL</translation>
 <translation id="257088987046510401">Temalar</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Parolu gizlədin</translation>
 <translation id="4570913071927164677">Ətraflı</translation>
 <translation id="4572422548854449519">İdarə olunan hesablara daxil olun</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# dəqiqə öncə}other{# dəqiqə öncə}}</translation>
 <translation id="4587589328781138893">Saytlar</translation>
 <translation id="4594952190837476234">Bu səhifə <ph name="CREATION_TIME" /> tarixində yaradılıb və onlayn versiyadan fərqli ola bilər.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# saat öncə}other{# saat öncə}}</translation>
 <translation id="5810288467834065221">Müəllif hüquqları <ph name="YEAR" /> Google MMC. Bütün hüquqlar qorunur.</translation>
 <translation id="5817918615728894473">Cütləndirin</translation>
-<translation id="5819762621475381970">- otağınızın tərtibatı</translation>
 <translation id="583281660410589416">Naməlum</translation>
 <translation id="5833984609253377421">Linki paylaşın</translation>
 <translation id="5836192821815272682">Chrome Güncəlləməsi Endirilir…</translation>
@@ -751,6 +750,7 @@
 <translation id="6545017243486555795">Bütün Datanı Silin</translation>
 <translation id="6545864417968258051">Bluetooth skanı</translation>
 <translation id="6560414384669816528">Sogou ilə axtarış</translation>
+<translation id="656065428026159829">Daha çoxuna baxın</translation>
 <translation id="6566259936974865419">Chrome <ph name="GIGABYTES" /> GB qədər yaddaşa qənaət etdi</translation>
 <translation id="6573096386450695060">Həmişə icazə verin</translation>
 <translation id="6573431926118603307">Başqa cihaz ilə Chrome'da açdığınız panellər burada görünəcək.</translation>
@@ -847,6 +847,7 @@
 <translation id="7293171162284876153">Sinxronizasiyanı başlatmaq üçün "Chrome datasını sinxronizasiya edin" seçimini aktiv edin.</translation>
 <translation id="729975465115245577">Cihazda parollar faylını saxlamaq üçün tətbiq yoxdur.</translation>
 <translation id="7302081693174882195">Məlumat: Yadda saxlanmış data həcminə görə çeşidlənib</translation>
+<translation id="7302486331832100261">Adətən bildirişləri bloklayırsınız. İcazə vermək üçün Detallar seçiminə toxunun.</translation>
 <translation id="7328017930301109123">Layt rejimində Chrome səhifələri daha tez yükləyir və dataya 60 faizədək qənaət edir.</translation>
 <translation id="7333031090786104871">Əvvəlki sayt hələ əlavə olunur</translation>
 <translation id="7352939065658542140">VİDEO</translation>
@@ -1014,7 +1015,7 @@
 <translation id="8487700953926739672">Oflayn olaraq əlçatan</translation>
 <translation id="8489271220582375723">Tarixçə səhifəsini açın</translation>
 <translation id="8493948351860045254">Yaddaşı boşaldın</translation>
-<translation id="8497726226069778601">Burada...hələ heç nə yoxdur</translation>
+<translation id="8497726226069778601">Burada baxmağa heçnə yoxdur... hələki</translation>
 <translation id="8503559462189395349">Chrome Parolları</translation>
 <translation id="8503813439785031346">İstifadəçi adı</translation>
 <translation id="8514477925623180633">Chrome'da saxlanılan parolları eksport edin</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_be.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_be.xtb
index 4d76d93..d875fa6 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_be.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_be.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Праглядайце папулярныя вэб-сайты, націснуўшы кнопку "Топ сайтаў"</translation>
 <translation id="1173894706177603556">Перайменаваць</translation>
 <translation id="1178581264944972037">Прыпыніць</translation>
-<translation id="118069123878619799">– вашы фізічныя характарыстыкі, такія як рост</translation>
 <translation id="1181037720776840403">Выдаліць</translation>
 <translation id="1188239144602654184">Пачаць сеанс AR</translation>
 <translation id="1197267115302279827">Перамясціць закладкі</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Спампоўка прыпынена</translation>
 <translation id="1386674309198842382">Апошнія дзеянні: <ph name="LAST_UPDATED" /> сут таму</translation>
 <translation id="1397811292916898096">Шукаць з дапамогай <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Убудавана ў вэб-сайт <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">"Не адсочваць"</translation>
 <translation id="1407135791313364759">Адкрыць усе</translation>
 <translation id="1409426117486808224">Спрошчаны выгляд адкрытых укладак</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547">Выдалена элементаў: <ph name="NUMBER_OF_ITEMS" /></translation>
 <translation id="2536728043171574184">Вы праглядаеце пазасеткавую копію гэтай старонкі</translation>
 <translation id="2537178555904266562">Памылка пры сінхранізацыі пароляў</translation>
+<translation id="2537296579376733324">Усе файлы cookie, толькі на гэтым сайце</translation>
 <translation id="2546283357679194313">Файлы сookie і даныя сайтаў</translation>
 <translation id="2567385386134582609">ВІДАРЫС</translation>
 <translation id="257088987046510401">Тэмы</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Схаваць пароль</translation>
 <translation id="4570913071927164677">Падрабязныя звесткі</translation>
 <translation id="4572422548854449519">Увайдзіце ва ўліковы запіс пад кіраваннем</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{1 хвіліну таму}one{# хвіліну таму}few{# хвіліны таму}many{# хвілін таму}other{# хвіліны таму}}</translation>
 <translation id="4587589328781138893">Сайты</translation>
 <translation id="4594952190837476234">Гэта пазасеткавая старонка створана <ph name="CREATION_TIME" /> і можа адрознівацца ад сваёй інтэрнэт-версіі.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# гадзіну таму}one{# гадзіну таму}few{# гадзіны таму}many{# гадзін таму}other{# гадзіны таму}}</translation>
 <translation id="5810288467834065221">© <ph name="YEAR" /> Google LLC. Усе правы абароненыя.</translation>
 <translation id="5817918615728894473">Спалучыць</translation>
-<translation id="5819762621475381970">– планіроўку вашага пакоя</translation>
 <translation id="583281660410589416">Невядома</translation>
 <translation id="5833984609253377421">Абагуліць спасылку</translation>
 <translation id="5836192821815272682">Спампоўваецца абнаўленне Chrome…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Ачысціць усе даныя</translation>
 <translation id="6545864417968258051">Пошук прылад Bluetooth</translation>
 <translation id="6560414384669816528">Пошук праз Sogou</translation>
+<translation id="656065428026159829">Яшчэ</translation>
 <translation id="6566259936974865419">Chrome сэканоміў вам <ph name="GIGABYTES" /> ГБ</translation>
 <translation id="6573096386450695060">Заўсёды дазваляць</translation>
 <translation id="6573431926118603307">Тут з'явяцца ўкладкі, адкрытыя вамі ў браўзеры Chrome на іншых прыладах.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Каб пачаць сінхранізацыю, уключыце "Сінхранізацыю даных Chrome".</translation>
 <translation id="729975465115245577">На вашай прыладзе няма праграмы для захоўвання файла з паролямі.</translation>
 <translation id="7302081693174882195">Падрабязныя звесткі: Адсартавана па аб'ёме захаваных даных</translation>
+<translation id="7302486331832100261">Звычайна вы блакіруеце апавяшчэнні. Каб дазволіць іх, націсніце "Падрабязнасці".</translation>
 <translation id="7328017930301109123">У спрошчаным рэжыме Chrome загружае старонкі хутчэй і зніжае выкарыстанне трафіка максімум на 60 працэнтаў.</translation>
 <translation id="7333031090786104871">Ідзе дадаванне папярэдняга сайта</translation>
 <translation id="7352939065658542140">ВІДЭА</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb
index 1a10f707..4b88dda9 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bg.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Вижте популярните уебсайтове, като докоснете бутона „Водещи сайтове“</translation>
 <translation id="1173894706177603556">Преименуване</translation>
 <translation id="1178581264944972037">Пауза</translation>
-<translation id="118069123878619799">– физическите ви черти, като ръст;</translation>
 <translation id="1181037720776840403">Премахване</translation>
 <translation id="1188239144602654184">Стартиране на AR</translation>
 <translation id="1197267115302279827">Преместване на отметки</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Изтеглянето е на пауза</translation>
 <translation id="1386674309198842382">Активно преди <ph name="LAST_UPDATED" /> дни</translation>
 <translation id="1397811292916898096">Търсене чрез <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Вградено в(ъв) <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">Заявка „Do Not Track“</translation>
 <translation id="1407135791313364759">Отваряне на всички</translation>
 <translation id="1409426117486808224">Опростен изглед на отворените раздели</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547">Изтрихте <ph name="NUMBER_OF_ITEMS" /> елемента</translation>
 <translation id="2536728043171574184">Преглеждате офлайн копие на страницата</translation>
 <translation id="2537178555904266562">Грешка при синхронизирането на паролите</translation>
+<translation id="2537296579376733324">Всички „бисквитки“, само на този сайт</translation>
 <translation id="2546283357679194313">„Бисквитки“ и данни за сайтове</translation>
 <translation id="2567385386134582609">ИЗОБРАЖЕНИЕ</translation>
 <translation id="257088987046510401">Теми</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Скриване на паролата</translation>
 <translation id="4570913071927164677">Подробности</translation>
 <translation id="4572422548854449519">Вход в управляван профил</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{преди # минута}other{преди # минути}}</translation>
 <translation id="4587589328781138893">Сайтове</translation>
 <translation id="4594952190837476234">Тази офлайн страница е от <ph name="CREATION_TIME" /> и може да се различава от онлайн версията.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{преди # час}other{преди # часа}}</translation>
 <translation id="5810288467834065221">Авторски права <ph name="YEAR" /> г. Google LLC. Всички права запазени.</translation>
 <translation id="5817918615728894473">Сдвояване</translation>
-<translation id="5819762621475381970">– плана на стаята ви.</translation>
 <translation id="583281660410589416">Неизвестно</translation>
 <translation id="5833984609253377421">Споделяне на връзката</translation>
 <translation id="5836192821815272682">Актуализацията на Chrome се изтегля…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Изчистване на всички данни</translation>
 <translation id="6545864417968258051">Сканиране за устройства с Bluetooth</translation>
 <translation id="6560414384669816528">Търсене със Sogou</translation>
+<translation id="656065428026159829">Вижте още</translation>
 <translation id="6566259936974865419">Chrome ви спести <ph name="GIGABYTES" /> ГБ</translation>
 <translation id="6573096386450695060">Разрешаване винаги</translation>
 <translation id="6573431926118603307">Тук ще се показват разделите, които сте отворили в Chrome на другите си устройства.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">За да стартирате синхронизирането, включете „Синхронизиране на данните ви в Chrome“.</translation>
 <translation id="729975465115245577">На устройството ви няма приложение за съхраняване на файла с паролите.</translation>
 <translation id="7302081693174882195">Подробности: сортирани по количество спестени данни</translation>
+<translation id="7302486331832100261">Обикновено блокирате известията. За да разрешите, докоснете „Подробности“.</translation>
 <translation id="7328017930301109123">В олекотения режим на Chrome страниците се зареждат по-бързо и се използват до 60 процента по-малко данни.</translation>
 <translation id="7333031090786104871">Още се добавя предишният сайт</translation>
 <translation id="7352939065658542140">ВИДЕОКЛИП</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb
index f4ada42..88c3dc3 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bn.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">"সেরা সাইট" বোতামে ট্যাপ করে জনপ্রিয় ওয়েবসাইটগুলি দেখুন</translation>
 <translation id="1173894706177603556">পুনঃনামকরণ</translation>
 <translation id="1178581264944972037">বিরতি</translation>
-<translation id="118069123878619799">- আপনার শারীরিক বৈশিষ্ট্য, যেমন উচ্চতা</translation>
 <translation id="1181037720776840403">সরান</translation>
 <translation id="1188239144602654184">এ আর সেশন শুরু করুন</translation>
 <translation id="1197267115302279827">বুকমার্কগুলি সরান</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">ডাউনলোড পজ করা আছে</translation>
 <translation id="1386674309198842382"><ph name="LAST_UPDATED" /> দিন আগে ব্যবহার করা হয়েছে</translation>
 <translation id="1397811292916898096"><ph name="PRODUCT_NAME" /> এর সাহায্যে খুঁজুন</translation>
-<translation id="1404122904123200417">এর মধ্যে এম্বেড করা হয়েছে <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">"ট্র্যাক করবেন না"</translation>
 <translation id="1407135791313364759">সব খুলুন</translation>
 <translation id="1409426117486808224">খোলা ট্যাবের জন্য সরলীকৃত ভিউ</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" />টি আইটেম মোছা হয়েছে</translation>
 <translation id="2536728043171574184">এই পৃষ্ঠার একটি অফলাইন কপি দেখছেন</translation>
 <translation id="2537178555904266562">পাসওয়ার্ড সিঙ্ক করতে সমস্যা হচ্ছে</translation>
+<translation id="2537296579376733324">সব কুকি, শুধু এই সাইটে</translation>
 <translation id="2546283357679194313">কুকিজ ও সাইট ডেটা</translation>
 <translation id="2567385386134582609">ইমেজ</translation>
 <translation id="257088987046510401">থিমসমূহ</translation>
@@ -474,6 +473,7 @@
 <translation id="4565377596337484307">পাসওয়ার্ড লুকান</translation>
 <translation id="4570913071927164677">বিবরণ</translation>
 <translation id="4572422548854449519">ম্যানেজ করা অ্যাকাউন্টে সাইন-ইন করুন</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# মিনিট আগে}one{# মিনিট আগে}other{# মিনিট আগে}}</translation>
 <translation id="4587589328781138893">সাইটগুলি</translation>
 <translation id="4594952190837476234">এই অফলাইন পৃষ্ঠাটি <ph name="CREATION_TIME" />-এ তৈরি করা হয়েছিল এবং এটি অনলাইন ভার্সনের থেকে আলাদা হতে পারে।</translation>
@@ -654,7 +654,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# ঘণ্টা আগে}one{# ঘণ্টা আগে}other{# ঘণ্টা আগে}}</translation>
 <translation id="5810288467834065221">কপিরাইট <ph name="YEAR" /> Google LLC সব স্বত্ব সংরক্ষিত আছে।</translation>
 <translation id="5817918615728894473">যুক্ত করুন</translation>
-<translation id="5819762621475381970">- আপনার রুমের লেআউট</translation>
 <translation id="583281660410589416">অজানা</translation>
 <translation id="5833984609253377421">লিঙ্ক শেয়ার করুন</translation>
 <translation id="5836192821815272682">Chrome-এর আপডেট ডাউনলোড করা হচ্ছে…</translation>
@@ -755,6 +754,7 @@
 <translation id="6545017243486555795">সমস্ত ডেটা সাফ করুন</translation>
 <translation id="6545864417968258051">ব্লুটুথ স্ক্যানিং</translation>
 <translation id="6560414384669816528">Sogou দিয়ে খুঁজুন</translation>
+<translation id="656065428026159829">আরও দেখুন</translation>
 <translation id="6566259936974865419">Chrome আপনার জন্য <ph name="GIGABYTES" /> জিবি বাঁচিয়ে দিয়েছে</translation>
 <translation id="6573096386450695060">সর্বদা অনুমতি দিন</translation>
 <translation id="6573431926118603307">আপনার অন্য ডিভাইসগুলিতে Chrome এ আপনি যে ট্যাবগুলি খুলেছেন সেগুলি এখানে দেখা যাবে।</translation>
@@ -851,6 +851,7 @@
 <translation id="7293171162284876153">সিঙ্ক চালু করতে "আপনার Chrome ডেটা সিঙ্ক করুন" বিকল্পটি চালু করুন।</translation>
 <translation id="729975465115245577">পাসওয়ার্ড ফাইল সেভ করার জন্য আপনার ডিভাইসে কোনও অ্যাপ নেই।</translation>
 <translation id="7302081693174882195">বিবরণ: সেভ করা ডেটার পরিমাণ অনুযায়ী সাজানো হয়েছে</translation>
+<translation id="7302486331832100261">আপনি সাধারণত বিজ্ঞপ্তি ব্লক করেন। অনুমতি দিতে, 'বিবরণ' বিকল্পে ক্লিক করুন।</translation>
 <translation id="7328017930301109123">লাইট মোডে, Chrome আরও দ্রুত পৃষ্ঠা লোড করে এবং ৬০ শতাংশ পর্যন্ত কম ডেটা ব্যবহার করে।</translation>
 <translation id="7333031090786104871">এখনও পূর্বের সাইট যোগ করছে</translation>
 <translation id="7352939065658542140">ভিডিও</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bs.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bs.xtb
index 402c3b4..249c1be 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_bs.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_bs.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Dodirnite dugme "Popularno" i pristupite popularnim web lokacijama</translation>
 <translation id="1173894706177603556">Promijeni naziv</translation>
 <translation id="1178581264944972037">Pauziraj</translation>
-<translation id="118069123878619799">– vaše fizičke osobine, kao što je visina</translation>
 <translation id="1181037720776840403">Ukloni</translation>
 <translation id="1188239144602654184">Pristupi AR-u</translation>
 <translation id="1197267115302279827">Premjesti oznake</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Preuzimanje je pauzirano</translation>
 <translation id="1386674309198842382">Aktivan prije <ph name="LAST_UPDATED" /> dana</translation>
 <translation id="1397811292916898096">Pretražite pomoću proizvoda <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Ugrađeno u <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">"Bez praćenja"</translation>
 <translation id="1407135791313364759">Otvori sve</translation>
 <translation id="1409426117486808224">Pojednostavljeni prikaz za otvaranje kartica</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547">Broj izbrisanih stavki: <ph name="NUMBER_OF_ITEMS" /></translation>
 <translation id="2536728043171574184">Gledate kopiju ove stranice van mreže</translation>
 <translation id="2537178555904266562">Greška prilikom sinhroniziranja lozinki</translation>
+<translation id="2537296579376733324">Svi kolačići, isključivo na ovoj web lokaciji</translation>
 <translation id="2546283357679194313">Kolačići i podaci web lokacije</translation>
 <translation id="2567385386134582609">SLIKA</translation>
 <translation id="257088987046510401">Teme</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Sakrij lozinku</translation>
 <translation id="4570913071927164677">Detalji</translation>
 <translation id="4572422548854449519">Prijava na upravljani račun</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{prije # minute}one{prije # minute}few{prije # minute}other{prije # minuta}}</translation>
 <translation id="4587589328781138893">Web lokacije</translation>
 <translation id="4594952190837476234">Stranica van mreže je od <ph name="CREATION_TIME" /> i može se razlikovati od verzije koja je na mreži.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{Prije # sat}one{Prije # sat}few{Prije # sata}other{Prije # sati}}</translation>
 <translation id="5810288467834065221">Autorska prava <ph name="YEAR" />. Google LLC. Sva prava zadržana.</translation>
 <translation id="5817918615728894473">Upari</translation>
-<translation id="5819762621475381970">– raspored stvari u vašoj sobi</translation>
 <translation id="583281660410589416">Nepoznato</translation>
 <translation id="5833984609253377421">Dijeli link</translation>
 <translation id="5836192821815272682">Preuzimanje ažuriranja Chromea…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Obriši sve podatke</translation>
 <translation id="6545864417968258051">Skeniranje Bluetootha</translation>
 <translation id="6560414384669816528">Pretražite pomoću usluge Sogou</translation>
+<translation id="656065428026159829">Prikaži više</translation>
 <translation id="6566259936974865419">Chrome vam je sačuvao <ph name="GIGABYTES" /> GB</translation>
 <translation id="6573096386450695060">Uvijek dozvoli</translation>
 <translation id="6573431926118603307">Kartice koje ste otvorili u Chromeu na drugim uređajima prikazat će se ovdje.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Da pokrenete sinhroniziranje, uključite "Sinhroniziranje Chrome podataka"</translation>
 <translation id="729975465115245577">Na vašem uređaju nema aplikacije za pohranjivanje fajlova s lozinkama.</translation>
 <translation id="7302081693174882195">Detalji: Poredano po količini ušteđenih podataka</translation>
+<translation id="7302486331832100261">Obično blokirate obavještenja. Da dozvolite, dodirnite Detalji.</translation>
 <translation id="7328017930301109123">U jednostavnom načinu rada, Chrome učitava stranice brže i koristi do 60 procenata manje podataka.</translation>
 <translation id="7333031090786104871">Prethodna web lokacija se još uvijek dodaje</translation>
 <translation id="7352939065658542140">VIDEOZAPIS</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb
index d1a5023..dc5e432e 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ca.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Toca el botó Llocs populars per veure les tendències en llocs web</translation>
 <translation id="1173894706177603556">Canvia el nom</translation>
 <translation id="1178581264944972037">Posa en pausa</translation>
-<translation id="118069123878619799">- els teus trets físics, com ara l'alçada</translation>
 <translation id="1181037720776840403">Suprimeix</translation>
 <translation id="1188239144602654184">Entra a la realitat augmentada</translation>
 <translation id="1197267115302279827">Mou les adreces d'interès</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">La baixada s'ha posat en pausa</translation>
 <translation id="1386674309198842382">Actiu fa <ph name="LAST_UPDATED" /> dies</translation>
 <translation id="1397811292916898096">Cerca amb <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Inserit a <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">No segueixis</translation>
 <translation id="1407135791313364759">Obre-les totes</translation>
 <translation id="1409426117486808224">Visualització simplificada de les pestanyes obertes</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> elements suprimits</translation>
 <translation id="2536728043171574184">S'està mostrant una còpia sense connexió d'aquesta pàgina</translation>
 <translation id="2537178555904266562">S'ha produït un error en sincronitzar les contrasenyes</translation>
+<translation id="2537296579376733324">Totes les galetes, només en aquest lloc web</translation>
 <translation id="2546283357679194313">Dades de llocs web i galetes</translation>
 <translation id="2567385386134582609">IMATGE</translation>
 <translation id="257088987046510401">Temes</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Oculta la contrasenya</translation>
 <translation id="4570913071927164677">Detalls</translation>
 <translation id="4572422548854449519">Inicia la sessió al compte gestionat</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{fa # minut}other{fa # minuts}}</translation>
 <translation id="4587589328781138893">Llocs web</translation>
 <translation id="4594952190837476234">Aquesta pàgina sense connexió és del dia <ph name="CREATION_TIME" /> i pot ser diferent de la versió en línia.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{fa # hora}other{fa # hores}}</translation>
 <translation id="5810288467834065221">Copyright <ph name="YEAR" /> Google LLC. Tots els drets reservats.</translation>
 <translation id="5817918615728894473">Vincula</translation>
-<translation id="5819762621475381970">- la distribució de la teva habitació</translation>
 <translation id="583281660410589416">Desconegut</translation>
 <translation id="5833984609253377421">Comparteix l'enllaç</translation>
 <translation id="5836192821815272682">S'està baixant l'actualització de Chrome…</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb
index 9ce6466..451f55d 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Populární weby zobrazíte klepnutím na tlačítko Top weby</translation>
 <translation id="1173894706177603556">Přejmenovat</translation>
 <translation id="1178581264944972037">Pozastavit</translation>
-<translation id="118069123878619799">– vaše fyzické vlastnosti, například výšku,</translation>
 <translation id="1181037720776840403">Odebrat</translation>
 <translation id="1188239144602654184">Spustit rozšířenou realitu</translation>
 <translation id="1197267115302279827">Přesunutí záložek</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Stahování pozastaveno</translation>
 <translation id="1386674309198842382">Aktivní před tímto počtem dní: <ph name="LAST_UPDATED" /></translation>
 <translation id="1397811292916898096">Hledat pomocí vyhledávače <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Vloženo do <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">Do Not Track (Nesledovat)</translation>
 <translation id="1407135791313364759">Otevřít vše</translation>
 <translation id="1409426117486808224">Zjednodušené zobrazení otevřených karet</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547">Byly smazány položky (celkem <ph name="NUMBER_OF_ITEMS" />)</translation>
 <translation id="2536728043171574184">Prohlížíte offline kopii stránky</translation>
 <translation id="2537178555904266562">Při synchronizaci došlo k chybě</translation>
+<translation id="2537296579376733324">Všechny soubory cookie, pouze na tomto webu</translation>
 <translation id="2546283357679194313">Soubory cookie a data webových stránek</translation>
 <translation id="2567385386134582609">OBRÁZEK</translation>
 <translation id="257088987046510401">Motivy</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Skrýt heslo</translation>
 <translation id="4570913071927164677">Podrobnosti</translation>
 <translation id="4572422548854449519">Přihlaste se ke spravovanému účtu</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{před # minutou}few{před # minutami}many{před # minuty}other{před # minutami}}</translation>
 <translation id="4587589328781138893">Weby</translation>
 <translation id="4594952190837476234">Tato offline stránka je z <ph name="CREATION_TIME" /> a může se od online verze lišit.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{před # hodinou}few{před # hodinami}many{před # hodiny}other{před # hodinami}}</translation>
 <translation id="5810288467834065221">Copyright <ph name="YEAR" /> Google LLC. Všechna práva vyhrazena.</translation>
 <translation id="5817918615728894473">Spárovat</translation>
-<translation id="5819762621475381970">– rozvržení vaší místnosti.</translation>
 <translation id="583281660410589416">Neznámé</translation>
 <translation id="5833984609253377421">Sdílet odkaz</translation>
 <translation id="5836192821815272682">Stahování aktualizace Chromu…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Vymazat všechna data</translation>
 <translation id="6545864417968258051">Vyhledávání Bluetooth</translation>
 <translation id="6560414384669816528">Vyhledávat pomocí Sogou</translation>
+<translation id="656065428026159829">Zobrazit další</translation>
 <translation id="6566259936974865419">Chrome vám ušetřil <ph name="GIGABYTES" /> GB</translation>
 <translation id="6573096386450695060">Vždy povolit</translation>
 <translation id="6573431926118603307">Zde se objeví karty, které jste otevřeli v Chromu ve svých ostatních zařízeních.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Chcete-li synchronizaci spustit, zapněte přepínač Synchronizovat data prohlížeče Chrome.</translation>
 <translation id="729975465115245577">V zařízení není žádná aplikace, pomocí které by soubor s hesly bylo možné uložit.</translation>
 <translation id="7302081693174882195">Podrobnosti: Seřazeno podle množství uspořených dat</translation>
+<translation id="7302486331832100261">Obvykle oznámení blokujete. Chcete-li je povolit, klepněte na Podrobnosti.</translation>
 <translation id="7328017930301109123">Ve zjednodušeném režimu načítá Chrome stránky rychleji a používá až o 60 procent méně dat.</translation>
 <translation id="7333031090786104871">Předchozí web se stále přidává</translation>
 <translation id="7352939065658542140">VIDEO</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb
index 348447d..e2ee922 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_da.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Se populære websites ved at trykke på knappen "Topwebsites"</translation>
 <translation id="1173894706177603556">Omdøb</translation>
 <translation id="1178581264944972037">Pause</translation>
-<translation id="118069123878619799">– dine fysiske træk som f.eks. højde</translation>
 <translation id="1181037720776840403">Fjern</translation>
 <translation id="1188239144602654184">Start AR</translation>
 <translation id="1197267115302279827">Flyt bogmærker</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Download er sat på pause</translation>
 <translation id="1386674309198842382">Aktiv for <ph name="LAST_UPDATED" /> dage siden</translation>
 <translation id="1397811292916898096">Søg med <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Integreret i <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">"Do Not Track"</translation>
 <translation id="1407135791313364759">Åbn alle</translation>
 <translation id="1409426117486808224">Enkel visning af åbne faner</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> elementer blev slettet</translation>
 <translation id="2536728043171574184">Du ser en offlinekopi af denne side</translation>
 <translation id="2537178555904266562">Adgangskoderne kunne ikke synkroniseres</translation>
+<translation id="2537296579376733324">Alle cookies, kun på dette website</translation>
 <translation id="2546283357679194313">Cookies og websitedata</translation>
 <translation id="2567385386134582609">BILLEDE</translation>
 <translation id="257088987046510401">Temaer</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Skjul adgangskode</translation>
 <translation id="4570913071927164677">Info</translation>
 <translation id="4572422548854449519">Log ind på mangerstyret konto</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{For # minut siden}one{For # minut siden}other{For # minutter siden}}</translation>
 <translation id="4587589328781138893">Websites</translation>
 <translation id="4594952190837476234">Denne offlineside er fra <ph name="CREATION_TIME" /> og kan afvige fra onlineversionen.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{For 1 time siden}one{For # time siden}other{For # timer siden}}</translation>
 <translation id="5810288467834065221">Copyright <ph name="YEAR" /> Google LLC. Alle rettigheder forbeholdes.</translation>
 <translation id="5817918615728894473">Start parring</translation>
-<translation id="5819762621475381970">– layoutet af dit rum</translation>
 <translation id="583281660410589416">Ukendt</translation>
 <translation id="5833984609253377421">Del link</translation>
 <translation id="5836192821815272682">Downloader Chrome-opdateringen…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Ryd alle data</translation>
 <translation id="6545864417968258051">Bluetooth-scanning</translation>
 <translation id="6560414384669816528">Søg via Sogou</translation>
+<translation id="656065428026159829">Se mere</translation>
 <translation id="6566259936974865419">Chrome har sparet dig <ph name="GIGABYTES" /> GB</translation>
 <translation id="6573096386450695060">Tillad altid</translation>
 <translation id="6573431926118603307">Faner, du har åbnet i Chrome på dine andre enheder, vises her.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Aktivér "Synkroniser dine Chrome-data" for starte synkroniseringen.</translation>
 <translation id="729975465115245577">Der er ikke nogen app på din enhed, hvor filen med adgangskoder kan gemmes.</translation>
 <translation id="7302081693174882195">Info: Sorteret efter mængden af sparede data</translation>
+<translation id="7302486331832100261">Du blokerer som regel notifikationer. Tryk på Oplysninger for at give tilladelse.</translation>
 <translation id="7328017930301109123">Chrome indlæser sider hurtigere og bruger op til 60 procent mindre data i Lite-tilstand.</translation>
 <translation id="7333031090786104871">Det forrige website er stadig ved at blive tilføjet</translation>
 <translation id="7352939065658542140">VIDEO</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb
index 8af7eab..453f893 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_de.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Tippen Sie auf die Schaltfläche "Top-Websites", um beliebte Websites zu sehen</translation>
 <translation id="1173894706177603556">Umbenennen</translation>
 <translation id="1178581264944972037">Anhalten</translation>
-<translation id="118069123878619799">– physische Merkmale wie Ihre Größe</translation>
 <translation id="1181037720776840403">Entfernen</translation>
 <translation id="1188239144602654184">AR-Sitzung starten</translation>
 <translation id="1197267115302279827">Lesezeichen verschieben</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Download angehalten</translation>
 <translation id="1386674309198842382">Vor <ph name="LAST_UPDATED" /> Tagen aktiv</translation>
 <translation id="1397811292916898096">Mit <ph name="PRODUCT_NAME" /> suchen</translation>
-<translation id="1404122904123200417">Eingebettet in <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">"Do Not Track"</translation>
 <translation id="1407135791313364759">Alle öffnen</translation>
 <translation id="1409426117486808224">Vereinfachte Ansicht für geöffnete Tabs</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> Einträge gelöscht</translation>
 <translation id="2536728043171574184">Eine Offline-Kopie dieser Seite wird angezeigt.</translation>
 <translation id="2537178555904266562">Fehler beim Synchronisieren von Passwörtern</translation>
+<translation id="2537296579376733324">Alle Cookies, nur auf dieser Website</translation>
 <translation id="2546283357679194313">Cookies und Websitedaten</translation>
 <translation id="2567385386134582609">BILD</translation>
 <translation id="257088987046510401">Designs</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Passwort ausblenden</translation>
 <translation id="4570913071927164677">Details</translation>
 <translation id="4572422548854449519">In verwaltetem Konto anmelden</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{vor # Minute}other{vor # Minuten}}</translation>
 <translation id="4587589328781138893">Websites</translation>
 <translation id="4594952190837476234">Diese Offlineseite ist vom <ph name="CREATION_TIME" /> und unterscheidet sich gegebenenfalls von der Onlineversion.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{Vor # Stunde}other{Vor # Stunden}}</translation>
 <translation id="5810288467834065221">Copyright <ph name="YEAR" /> Google LLC Alle Rechte vorbehalten.</translation>
 <translation id="5817918615728894473">Koppeln</translation>
-<translation id="5819762621475381970">– der Grundriss Ihres Zimmers</translation>
 <translation id="583281660410589416">Unbekannt</translation>
 <translation id="5833984609253377421">Link teilen</translation>
 <translation id="5836192821815272682">Chrome-Update wird heruntergeladen…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Alle Daten löschen</translation>
 <translation id="6545864417968258051">Bluetooth-Suche</translation>
 <translation id="6560414384669816528">Suche mit Sogou</translation>
+<translation id="656065428026159829">Mehr anzeigen</translation>
 <translation id="6566259936974865419">Dank Chrome haben Sie <ph name="GIGABYTES" /> GB eingespart</translation>
 <translation id="6573096386450695060">Immer zulassen</translation>
 <translation id="6573431926118603307">Hier werden Tabs angezeigt, die Sie auf Ihren anderen Geräten in Chrome geöffnet haben.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Aktivieren Sie "Chrome-Daten synchronisieren", um die Synchronisierung zu starten.</translation>
 <translation id="729975465115245577">Auf Ihrem Gerät befindet sich keine App zum Speichern der Passwortdatei.</translation>
 <translation id="7302081693174882195">Details: Nach der Menge der gespeicherten Daten sortiert</translation>
+<translation id="7302486331832100261">Normalerweise blockieren Sie Benachrichtigungen. Sie können auf Details tippen, um sie zuzulassen.</translation>
 <translation id="7328017930301109123">Im Lite-Modus werden Seiten schneller in Chrome geladen und es werden bis zu 60 Prozent weniger Daten verbraucht.</translation>
 <translation id="7333031090786104871">Vorherige Website wird noch hinzugefügt</translation>
 <translation id="7352939065658542140">VIDEO</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb
index 0b3fadba..d04fecc 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_el.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Δείτε δημοφιλείς ιστοτόπους πατώντας το κουμπί "Κορυφαίοι ιστότοποι"</translation>
 <translation id="1173894706177603556">Μετονομασία</translation>
 <translation id="1178581264944972037">Παύση</translation>
-<translation id="118069123878619799">- τα φυσικά χαρακτηριστικά σας, όπως το ύψος σας</translation>
 <translation id="1181037720776840403">Κατάργηση</translation>
 <translation id="1188239144602654184">Έναρξη AR</translation>
 <translation id="1197267115302279827">Μετακίνηση σελιδοδεικτών</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Η λήψη διακόπηκε προσωρινά.</translation>
 <translation id="1386674309198842382">Ενεργή <ph name="LAST_UPDATED" /> ημέρες πριν</translation>
 <translation id="1397811292916898096">Αναζήτηση με <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Ενσωματωμένο σε <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">"Να μην γίνεται εντοπισμός"</translation>
 <translation id="1407135791313364759">Άνοιγμα όλων</translation>
 <translation id="1409426117486808224">Απλοποιημένη προβολή για ανοικτές καρτέλες</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547">Διαγράφηκαν <ph name="NUMBER_OF_ITEMS" /> στοιχεία</translation>
 <translation id="2536728043171574184">Προβολή ενός αντιγράφου αυτής της σελίδας εκτός σύνδεσης</translation>
 <translation id="2537178555904266562">Σφάλμα κατά τον συγχρονισμό των κωδικών πρόσβασης</translation>
+<translation id="2537296579376733324">Όλα τα cookie, μόνο σε αυτόν τον ιστότοπο</translation>
 <translation id="2546283357679194313">Cookie και δεδομένα ιστότοπου</translation>
 <translation id="2567385386134582609">ΕΙΚΟΝΑ</translation>
 <translation id="257088987046510401">Θέματα</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Απόκρυψη κωδικού πρόσβασης</translation>
 <translation id="4570913071927164677">Λεπτομέρειες</translation>
 <translation id="4572422548854449519">Συνδεθείτε στον διαχειριζόμενο λογαριασμό</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{Πριν από # λεπτό}other{Πριν από # λεπτά}}</translation>
 <translation id="4587589328781138893">Ιστότοποι</translation>
 <translation id="4594952190837476234">Αυτή η σελίδα εκτός σύνδεσης δημιουργήθηκε στις <ph name="CREATION_TIME" /> και μπορεί να διαφέρει από την έκδοση στο διαδίκτυο.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{Πριν από # ώρα}other{Πριν από # ώρες}}</translation>
 <translation id="5810288467834065221">Πνευματικά δικαιώματα <ph name="YEAR" /> Google LLC. Με την επιφύλαξη παντός δικαιώματος.</translation>
 <translation id="5817918615728894473">Σύζευξη</translation>
-<translation id="5819762621475381970">- τη διάταξη του δωματίου σας</translation>
 <translation id="583281660410589416">Άγνωστο</translation>
 <translation id="5833984609253377421">Κοινοποίηση συνδέσμου</translation>
 <translation id="5836192821815272682">Λήψη Ενημέρωσης Chrome…</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb
index 0acabc9..8eed9886 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_en-GB.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">See popular websites by tapping the 'Top sites' button</translation>
 <translation id="1173894706177603556">Rename</translation>
 <translation id="1178581264944972037">Pause</translation>
-<translation id="118069123878619799">- your physical features, such as height</translation>
 <translation id="1181037720776840403">Remove</translation>
 <translation id="1188239144602654184">Enter AR</translation>
 <translation id="1197267115302279827">Move bookmarks</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Download paused</translation>
 <translation id="1386674309198842382">Active <ph name="LAST_UPDATED" /> days ago</translation>
 <translation id="1397811292916898096">Search with <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Embedded in <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">‘Do Not Track’</translation>
 <translation id="1407135791313364759">Open all</translation>
 <translation id="1409426117486808224">Simplified view for open tabs</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> items deleted</translation>
 <translation id="2536728043171574184">Viewing an offline copy of this page</translation>
 <translation id="2537178555904266562">Error syncing passwords</translation>
+<translation id="2537296579376733324">All cookies, on this site only</translation>
 <translation id="2546283357679194313">Cookies and site data</translation>
 <translation id="2567385386134582609">IMAGE</translation>
 <translation id="257088987046510401">Themes</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Hide password</translation>
 <translation id="4570913071927164677">Details</translation>
 <translation id="4572422548854449519">Sign in to managed account</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# minute ago}other{# minutes ago}}</translation>
 <translation id="4587589328781138893">Sites</translation>
 <translation id="4594952190837476234">This offline page is from <ph name="CREATION_TIME" /> and may differ from the online version.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# hour ago}other{# hours ago}}</translation>
 <translation id="5810288467834065221">Copyright <ph name="YEAR" /> Google LLC. All rights reserved.</translation>
 <translation id="5817918615728894473">Pair</translation>
-<translation id="5819762621475381970">- the layout of your room</translation>
 <translation id="583281660410589416">Unknown</translation>
 <translation id="5833984609253377421">Share link</translation>
 <translation id="5836192821815272682">Downloading Chrome Update…</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb
index 71e6d07..94ef927b 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es-419.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Presiona el botón "Populares" para ver los sitios web más conocidos</translation>
 <translation id="1173894706177603556">Cambiar nombre</translation>
 <translation id="1178581264944972037">Detener</translation>
-<translation id="118069123878619799">- tus rasgos físicos, como la estatura</translation>
 <translation id="1181037720776840403">Quitar</translation>
 <translation id="1188239144602654184">Ingresar a la RA</translation>
 <translation id="1197267115302279827">Mover favoritos</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Descarga detenida</translation>
 <translation id="1386674309198842382">Activo hace <ph name="LAST_UPDATED" /> días</translation>
 <translation id="1397811292916898096">Buscar con <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Incorporado en <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">No realizar seguimiento</translation>
 <translation id="1407135791313364759">Abrir todas</translation>
 <translation id="1409426117486808224">Vista simplificada para las pestañas abiertas</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> elementos borrados</translation>
 <translation id="2536728043171574184">Visualizando una copia sin conexión de la página</translation>
 <translation id="2537178555904266562">Se produjo un error al sincronizar las contraseñas</translation>
+<translation id="2537296579376733324">Todas las cookies, solo en este sitio</translation>
 <translation id="2546283357679194313">Datos de sitios y cookies</translation>
 <translation id="2567385386134582609">IMAGEN</translation>
 <translation id="257088987046510401">Temas</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Ocultar contraseña</translation>
 <translation id="4570913071927164677">Detalles</translation>
 <translation id="4572422548854449519">Acceder a una cuenta administrada</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{Hace # minuto}other{Hace # minutos}}</translation>
 <translation id="4587589328781138893">Sitios</translation>
 <translation id="4594952190837476234">Esta página sin conexión se creó el <ph name="CREATION_TIME" /> y es posible que sea diferente con respecto a la versión en línea.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{Hace # hora}other{Hace # horas}}</translation>
 <translation id="5810288467834065221">Copyright <ph name="YEAR" /> Google LLC. Todos los derechos reservados.</translation>
 <translation id="5817918615728894473">Sincronizar</translation>
-<translation id="5819762621475381970">- la disposición de tu habitación</translation>
 <translation id="583281660410589416">Desconocido</translation>
 <translation id="5833984609253377421">Compartir vínculo</translation>
 <translation id="5836192821815272682">Descargando la actualización de Chrome…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Borrar todos los datos</translation>
 <translation id="6545864417968258051">Búsqueda de dispositivos Bluetooth</translation>
 <translation id="6560414384669816528">Buscar con Sogou</translation>
+<translation id="656065428026159829">Ver más</translation>
 <translation id="6566259936974865419">Chrome te permitió ahorrar <ph name="GIGABYTES" /> gigabytes</translation>
 <translation id="6573096386450695060">Permitir siempre</translation>
 <translation id="6573431926118603307">Aquí aparecerán las pestañas que abriste en Chrome en tus otros dispositivos.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Para comenzar la sincronización, activa "Sincroniza tus datos de Chrome".</translation>
 <translation id="729975465115245577">Tu dispositivo no tiene una app que pueda almacenar el archivo de contraseñas.</translation>
 <translation id="7302081693174882195">Detalles: Ordenados por cantidad de datos ahorrados</translation>
+<translation id="7302486331832100261">Por lo general, bloqueas las notificaciones. Para permitirlas, presiona Detalles.</translation>
 <translation id="7328017930301109123">En el modo lite, Chrome carga las páginas más rápido y usa hasta un 60 por ciento menos de datos.</translation>
 <translation id="7333031090786104871">Aún se está agregando el sitio anterior</translation>
 <translation id="7352939065658542140">VIDEO</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb
index e5aace11..9c3de15 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_es.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Toca el botón Populares para ver los sitios web más populares</translation>
 <translation id="1173894706177603556">Cambiar nombre</translation>
 <translation id="1178581264944972037">Pausar</translation>
-<translation id="118069123878619799">- tus rasgos físicos, como tu altura</translation>
 <translation id="1181037720776840403">Quitar</translation>
 <translation id="1188239144602654184">Acceder a RA</translation>
 <translation id="1197267115302279827">Mover marcadores</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Descarga en pausa</translation>
 <translation id="1386674309198842382">Activo hace <ph name="LAST_UPDATED" /> días</translation>
 <translation id="1397811292916898096">Buscar con <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Insertado en <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">No hacer seguimiento</translation>
 <translation id="1407135791313364759">Abrir todas</translation>
 <translation id="1409426117486808224">Vista simplificada de las pestañas abiertas</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> elementos eliminados</translation>
 <translation id="2536728043171574184">Viendo una copia sin conexión de esta página</translation>
 <translation id="2537178555904266562">No se han podido sincronizar las contraseñas</translation>
+<translation id="2537296579376733324">Todas las cookies, solo en este sitio web</translation>
 <translation id="2546283357679194313">Cookies y datos de sitios</translation>
 <translation id="2567385386134582609">IMAGEN</translation>
 <translation id="257088987046510401">Temas</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Ocultar contraseña</translation>
 <translation id="4570913071927164677">Detalles</translation>
 <translation id="4572422548854449519">Inicia sesión en la cuenta gestionada</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{Hace # minuto}other{Hace # minutos}}</translation>
 <translation id="4587589328781138893">Sitios web</translation>
 <translation id="4594952190837476234">Esta página sin conexión se creó el <ph name="CREATION_TIME" /> y puede ser distinta de la versión online.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{Hace # hora}other{Hace # horas}}</translation>
 <translation id="5810288467834065221">Copyright <ph name="YEAR" /> Google LLC. Todos los derechos reservados.</translation>
 <translation id="5817918615728894473">Vincular</translation>
-<translation id="5819762621475381970">- la distribución de tu habitación</translation>
 <translation id="583281660410589416">Desconocido</translation>
 <translation id="5833984609253377421">Compartir enlace</translation>
 <translation id="5836192821815272682">Descargando actualización de Chrome…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Borrar todos los datos</translation>
 <translation id="6545864417968258051">Búsqueda de dispositivos Bluetooth</translation>
 <translation id="6560414384669816528">Realizar búsquedas con Sogou</translation>
+<translation id="656065428026159829">Ver más</translation>
 <translation id="6566259936974865419">Chrome te ha permitido ahorrar <ph name="GIGABYTES" /> GB</translation>
 <translation id="6573096386450695060">Permitir siempre</translation>
 <translation id="6573431926118603307">Aquí aparecen las pestañas que hayas abierto en Chrome en otros dispositivos.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Para iniciar la sincronización, activa "Sincronizar tus datos de Chrome".</translation>
 <translation id="729975465115245577">Tu dispositivo no tiene ninguna aplicación para almacenar el archivo de contraseñas.</translation>
 <translation id="7302081693174882195">Detalles: ordenados por cantidad de datos ahorrados</translation>
+<translation id="7302486331832100261">Normalmente bloqueas todas las notificaciones. Para permitirlas, toca Detalles.</translation>
 <translation id="7328017930301109123">En el modo básico, Chrome carga las páginas más rápido y reduce el uso de datos hasta un 60 por ciento.</translation>
 <translation id="7333031090786104871">Aún se está añadiendo el sitio web anterior</translation>
 <translation id="7352939065658542140">VÍDEO</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb
index dc55663..83ef9ca 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_et.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Vaadake populaarseid veebisaite, puudutades nuppu „Popid saidid”</translation>
 <translation id="1173894706177603556">Muuda nime</translation>
 <translation id="1178581264944972037">Peata</translation>
-<translation id="118069123878619799">– teie füüsilised omadused, nt pikkus</translation>
 <translation id="1181037720776840403">Eemalda</translation>
 <translation id="1188239144602654184">Sisene AR-i</translation>
 <translation id="1197267115302279827">Teisalda järjehoidjad</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Allalaadimine peatatud</translation>
 <translation id="1386674309198842382">Aktiivne <ph name="LAST_UPDATED" /> päeva tagasi</translation>
 <translation id="1397811292916898096">Otsi teenusega <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Manustatud saidile <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">„Ära jälgi”</translation>
 <translation id="1407135791313364759">Ava kõik</translation>
 <translation id="1409426117486808224">Avatud vahelehtede lihtsustatud vaade</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> üksust kustutati</translation>
 <translation id="2536728043171574184">Kuvatakse on lehe võrguühenduseta koopia</translation>
 <translation id="2537178555904266562">Viga paroolide sünkroonimisel</translation>
+<translation id="2537296579376733324">Kõik küpsisefailid, ainult sellel saidil</translation>
 <translation id="2546283357679194313">Küpsised ja saidiandmed</translation>
 <translation id="2567385386134582609">KUJUTIS</translation>
 <translation id="257088987046510401">Teemad</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Peida parool</translation>
 <translation id="4570913071927164677">Üksikasjad</translation>
 <translation id="4572422548854449519">Logige hallatud kontole sisse</translation>
+<translation id="4574741712540401491">• <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# minut tagasi}other{# minutit tagasi}}</translation>
 <translation id="4587589328781138893">Saidid</translation>
 <translation id="4594952190837476234">Võrguühenduseta leht loodi <ph name="CREATION_TIME" /> ja see võib veebiversioonist erineda.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# tund tagasi}other{# tundi tagasi}}</translation>
 <translation id="5810288467834065221">Autoriõigus <ph name="YEAR" /> Google LLC. Kõik õigused on kaitstud.</translation>
 <translation id="5817918615728894473">Seo</translation>
-<translation id="5819762621475381970">– teie ruumi paigutus</translation>
 <translation id="583281660410589416">Tundmatu</translation>
 <translation id="5833984609253377421">Jaga linki</translation>
 <translation id="5836192821815272682">Chrome'i värskenduse allalaadimine …</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Kustuta kõik andmed</translation>
 <translation id="6545864417968258051">Bluetoothi otsimine</translation>
 <translation id="6560414384669816528">Otsi teenusega Sogou</translation>
+<translation id="656065428026159829">Kuva rohkem</translation>
 <translation id="6566259936974865419">Chrome aitas teil säästa <ph name="GIGABYTES" /> GB andmemahtu</translation>
 <translation id="6573096386450695060">Luba alati</translation>
 <translation id="6573431926118603307">Siin kuvatakse teie teistes seadmetes Chrome'is avatud vahelehed.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Sünkroonimise alustamiseks lülitage sisse valik „Chrome'i andmete sünkroonimine”.</translation>
 <translation id="729975465115245577">Seadmes pole sünkroonimiseks piisavalt salvestusruumi.</translation>
 <translation id="7302081693174882195">Üksikasjad: sorditud säästetud andmemahu alusel</translation>
+<translation id="7302486331832100261">Tavaliselt blokeerite märguanded. Lubamiseks puudutage valikut Üksikasjad.</translation>
 <translation id="7328017930301109123">Lihtsustatud režiimis laadib Chrome lehti kiiremini ja kasutab kuni 60 protsenti vähem andmemahtu.</translation>
 <translation id="7333031090786104871">Eelmist saiti alles lisatakse</translation>
 <translation id="7352939065658542140">VIDEO</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb
index 14a4a3a..02a361b 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_eu.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Sakatu "Webgune nagusiak" botoia webgune ezagunak ikusteko</translation>
 <translation id="1173894706177603556">Aldatu izena</translation>
 <translation id="1178581264944972037">Pausatu</translation>
-<translation id="118069123878619799">- Zure ezaugarri fisikoak (esaterako, altuera).</translation>
 <translation id="1181037720776840403">Kendu</translation>
 <translation id="1188239144602654184">Sartu errealitate areagotuan</translation>
 <translation id="1197267115302279827">Mugitu laster-markak</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Pausatu da deskarga</translation>
 <translation id="1386674309198842382">Aktibo duela <ph name="LAST_UPDATED" /> egun</translation>
 <translation id="1397811292916898096">Egin bilaketak <ph name="PRODUCT_NAME" /> zerbitzuarekin</translation>
-<translation id="1404122904123200417"><ph name="WEBSITE_URL" /> URLan kapsulatuta</translation>
 <translation id="1406000523432664303">"Ez jarraitu"</translation>
 <translation id="1407135791313364759">Ireki guztiak</translation>
 <translation id="1409426117486808224">Irekitako fitxen ikuspegi sinplifikatua</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547">Ezabatu dira <ph name="NUMBER_OF_ITEMS" /> elementu</translation>
 <translation id="2536728043171574184">Orriaren konexiorik gabeko kopia ikusten ari zara</translation>
 <translation id="2537178555904266562">Errore bat gertatu da pasahitzak sinkronizatzean</translation>
+<translation id="2537296579376733324">Cookie guztiak, baina webgune honetan soilik</translation>
 <translation id="2546283357679194313">Cookieak eta webgune-datuak</translation>
 <translation id="2567385386134582609">IRUDIA</translation>
 <translation id="257088987046510401">Gaiak</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Ezkutatu pasahitza</translation>
 <translation id="4570913071927164677">Xehetasunak</translation>
 <translation id="4572422548854449519">Hasi saioa kontu kudeatuan</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{Duela # minutu}other{Duela # minutu}}</translation>
 <translation id="4587589328781138893">Webguneak</translation>
 <translation id="4594952190837476234">Konexiorik gabe erabiltzeko orri hau <ph name="CREATION_TIME" /> datan sortu zen. Ondorioz, baliteke sareko bertsioarekin bat ez etortzea.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{Duela # ordu}other{Duela # ordu}}</translation>
 <translation id="5810288467834065221">Copyright <ph name="YEAR" /> Google LLC. Eskubide guztiak erreserbatuta.</translation>
 <translation id="5817918615728894473">Parekatu</translation>
-<translation id="5819762621475381970">- Gelaren diseinua.</translation>
 <translation id="583281660410589416">Ezezaguna</translation>
 <translation id="5833984609253377421">Partekatu esteka</translation>
 <translation id="5836192821815272682">Chrome-ren eguneratzea deskargatzen…</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
index bea61e00..ead76f9 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fa.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">با ضربه زدن روی دکمه «سایت‌های برتر»، وب‌سایت‌های پرطرفدار را ببینید</translation>
 <translation id="1173894706177603556">تغییر نام</translation>
 <translation id="1178581264944972037">مکث</translation>
-<translation id="118069123878619799">ویژگی‌های ظاهری شما، مانند قد</translation>
 <translation id="1181037720776840403">حذف</translation>
 <translation id="1188239144602654184">‏وارد شدن به AR</translation>
 <translation id="1197267115302279827">انتقال نشانک‌ها</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">بارگیری موقتاً متوقف شد</translation>
 <translation id="1386674309198842382">آخرین فعالیت: <ph name="LAST_UPDATED" /> روز قبل</translation>
 <translation id="1397811292916898096">جستجو با <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">جاسازی‌شده در <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">«ردیابی نشود»</translation>
 <translation id="1407135791313364759">باز کردن همه</translation>
 <translation id="1409426117486808224">نمای ساده‌شده برای برگه‌های باز</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> مورد حذف شد</translation>
 <translation id="2536728043171574184">مشاهده یک کپی آفلاین از این صفحه</translation>
 <translation id="2537178555904266562">خطا در همگام‌سازی گذرواژه‌ها</translation>
+<translation id="2537296579376733324">همه کوکی‌ها، تنها در این سایت</translation>
 <translation id="2546283357679194313">کوکی‌ها و داده‌های سایت</translation>
 <translation id="2567385386134582609">تصویر</translation>
 <translation id="257088987046510401">طرح‌‌های قسمت</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">عدم نمایش گذرواژه</translation>
 <translation id="4570913071927164677">جزئیات</translation>
 <translation id="4572422548854449519">به حساب مدیریت‌شده وارد شوید</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# دقیقه قبل}one{# دقیقه قبل}other{# دقیقه قبل}}</translation>
 <translation id="4587589328781138893">سایت‌ها</translation>
 <translation id="4594952190837476234">این صفحه آفلاین مربوط به تاریخ <ph name="CREATION_TIME" /> است و ممکن است با نسخه آنلاین متفاوت باشد.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{۱ ساعت قبل}one{# ساعت قبل}other{# ساعت قبل}}</translation>
 <translation id="5810288467834065221">‏حق نسخه‌برداری <ph name="YEAR" /> Google LLC.‎ کلیه حقوق محفوظ است.</translation>
 <translation id="5817918615728894473">مرتبط‌سازی</translation>
-<translation id="5819762621475381970">- چیدمان اتاق شما</translation>
 <translation id="583281660410589416">ناشناس</translation>
 <translation id="5833984609253377421">اشتراک‌گذاری پیوند</translation>
 <translation id="5836192821815272682">‏درحال بارگیری به‌روزرسانی Chrome…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">پاک کردن همه داده‌ها</translation>
 <translation id="6545864417968258051">اسکن کردن بلوتوث</translation>
 <translation id="6560414384669816528">‏جستجو با Sogou</translation>
+<translation id="656065428026159829">موارد بیشتر</translation>
 <translation id="6566259936974865419">‏Chrome‏ <ph name="GIGABYTES" /> گیگابایت از داده‌های شما را ذخیره کرده است</translation>
 <translation id="6573096386450695060">همیشه مجاز</translation>
 <translation id="6573431926118603307">‏برگه‌هایی که در دستگاه‌های دیگر در Chrome باز کرده‌اید، در اینجا نمایان می‌شوند.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">‏برای شروع همگام‌سازی، «همگام‌سازی داده‌های Chrome» را روشن کنید.</translation>
 <translation id="729975465115245577">دستگاه شما برنامه‌ای برای ذخیره فایل گذرواژه‌ها ندارد.</translation>
 <translation id="7302081693174882195">جزئیات: مرتب‌شده براساس مقدار داده صرفه‌جویی‌شده</translation>
+<translation id="7302486331832100261">معمولاً اعلان‌ها را مسدود می‌کنید. برای مجاز کردن، روی «جزئیات» ضربه بزنید.</translation>
 <translation id="7328017930301109123">‏در «حالت ساده»، Chrome صفحه‌ها را سریع‌تر بار می‌کند و تا ۶۰ درصد مصرف داده را کاهش می‌دهد.</translation>
 <translation id="7333031090786104871">همچنان درحال افزودن سایت قبلی</translation>
 <translation id="7352939065658542140">ویدیو</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb
index 7309d9a..3ee8de0 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fi.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Katso suositut sivustot napauttamalla Suosituimmat sivustot ‑painiketta</translation>
 <translation id="1173894706177603556">Muuta nimeä</translation>
 <translation id="1178581264944972037">Tauko</translation>
-<translation id="118069123878619799">– fyysisiä piirteitäsi, kuten pituutesi</translation>
 <translation id="1181037720776840403">Poista</translation>
 <translation id="1188239144602654184">Lisää AR</translation>
 <translation id="1197267115302279827">Siirrä kirjanmerkkejä</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Lataus keskeytettiin.</translation>
 <translation id="1386674309198842382">Aktiivinen <ph name="LAST_UPDATED" /> päivää sitten</translation>
 <translation id="1397811292916898096">Hae nimellä <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Upotettu osoitteeseen <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">Do Not Track</translation>
 <translation id="1407135791313364759">Avaa kaikki</translation>
 <translation id="1409426117486808224">Yksinkertaisempi avoimien välilehtien näkymä</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> kohdetta poistettu</translation>
 <translation id="2536728043171574184">Näkyvissä on sivun offline-versio.</translation>
 <translation id="2537178555904266562">Salasanojen synkronointivirhe</translation>
+<translation id="2537296579376733324">Kaikki evästeet, vain tällä sivustolla</translation>
 <translation id="2546283357679194313">Evästeet ja sivustotiedot</translation>
 <translation id="2567385386134582609">KUVA</translation>
 <translation id="257088987046510401">Teemat</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Piilota salasana</translation>
 <translation id="4570913071927164677">Tiedot</translation>
 <translation id="4572422548854449519">Kirjaudu hallinnoidulle tilille</translation>
+<translation id="4574741712540401491">• <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# minuutti sitten}other{# minuuttia sitten}}</translation>
 <translation id="4587589328781138893">Sivustot</translation>
 <translation id="4594952190837476234">Offline-sivu vastaa tilannetta <ph name="CREATION_TIME" /> ja saattaa poiketa nykyisestä verkkoversiosta.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# tunti sitten}other{# tuntia sitten}}</translation>
 <translation id="5810288467834065221">Copyright <ph name="YEAR" /> Google LLC. Kaikki oikeudet pidätetään.</translation>
 <translation id="5817918615728894473">Muodosta laitepari</translation>
-<translation id="5819762621475381970">– huoneesi asettelun.</translation>
 <translation id="583281660410589416">Tuntematon</translation>
 <translation id="5833984609253377421">Jaa linkki</translation>
 <translation id="5836192821815272682">Ladataan Chrome-päivitystä…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Poista kaikki tiedot</translation>
 <translation id="6545864417968258051">Bluetooth-haku</translation>
 <translation id="6560414384669816528">Käytä Sogouta</translation>
+<translation id="656065428026159829">Katso lisää</translation>
 <translation id="6566259936974865419">Chrome on säästänyt <ph name="GIGABYTES" /> Gt tilaa</translation>
 <translation id="6573096386450695060">Salli aina</translation>
 <translation id="6573431926118603307">Muilla laitteilla Chromessa avaamasi välilehdet näytetään täällä.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Aloita synkronointi ottamalla Chrome-datan synkronointi käyttöön.</translation>
 <translation id="729975465115245577">Laitteella ei ole sovellusta, johon salasanatiedoston voisi tallentaa.</translation>
 <translation id="7302081693174882195">Lisätiedot: Lajiteltu säästetyn datan mukaan</translation>
+<translation id="7302486331832100261">Estät yleensä ilmoitukset. Voit sallia ne valitsemalla Tiedot.</translation>
 <translation id="7328017930301109123">Yksinkertaistetussa tilassa Chrome lataa sivuja nopeammin ja käyttää jopa 60 prosenttia vähemmän dataa.</translation>
 <translation id="7333031090786104871">Edellisen sivuston lisääminen kesken</translation>
 <translation id="7352939065658542140">VIDEO</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb
index b7382dc6..d030549d 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fil.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Tingnan ang mga sikat na website sa pamamagitan ng pag-tap sa button na "Mga nangungunang site"</translation>
 <translation id="1173894706177603556">Pangalanang muli</translation>
 <translation id="1178581264944972037">I-pause</translation>
-<translation id="118069123878619799">- iyong mga pisikal na katangian, gaya ng tangkad</translation>
 <translation id="1181037720776840403">Alisin</translation>
 <translation id="1188239144602654184">Pumasok sa AR</translation>
 <translation id="1197267115302279827">Ilipat ang mga bookmark</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Na-pause ang pag-download</translation>
 <translation id="1386674309198842382">Aktibo <ph name="LAST_UPDATED" /> (na) araw ang nakalipas</translation>
 <translation id="1397811292916898096">Maghanap gamit ang <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Naka-embed sa <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">“Huwag Subaybayan”</translation>
 <translation id="1407135791313364759">Buksan lahat</translation>
 <translation id="1409426117486808224">Pinasimpleng view para sa mga bukas na tab</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> (na) item ang na-delete</translation>
 <translation id="2536728043171574184">Tinitingnan ang isang offline na kopya ng page na ito</translation>
 <translation id="2537178555904266562">Nagka-error sa pag-sync ng mga password</translation>
+<translation id="2537296579376733324">Lahat ng cookies, sa site na ito lang</translation>
 <translation id="2546283357679194313">Cookies at data ng site</translation>
 <translation id="2567385386134582609">LARAWAN</translation>
 <translation id="257088987046510401">Mga tema</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Itago ang password</translation>
 <translation id="4570913071927164677">Mga Detalye</translation>
 <translation id="4572422548854449519">Mag-sign in sa pinamamahalaang account</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# minuto ang nakalipas}one{# minuto ang nakalipas}other{# na minuto ang nakalipas}}</translation>
 <translation id="4587589328781138893">Mga Site</translation>
 <translation id="4594952190837476234">Naka-offline ang page na ito mula noong <ph name="CREATION_TIME" /> at maaaring iba ito sa online na bersyon.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# oras ang nakalipas}one{# oras ang nakalipas}other{# na oras ang nakalipas}}</translation>
 <translation id="5810288467834065221">Copyright <ph name="YEAR" /> Google LLC. Nakalaan ang lahat ng karapatan.</translation>
 <translation id="5817918615728894473">Ipares</translation>
-<translation id="5819762621475381970">- layout ng iyong kuwarto</translation>
 <translation id="583281660410589416">Hindi-alam</translation>
 <translation id="5833984609253377421">Ibahagi ang link</translation>
 <translation id="5836192821815272682">Dina-download ang Update sa Chrome…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">I-clear ang Lahat ng Data</translation>
 <translation id="6545864417968258051">Pag-scan ng Bluetooth</translation>
 <translation id="6560414384669816528">Maghanap gamit ang Sogou</translation>
+<translation id="656065428026159829">Tumingin pa</translation>
 <translation id="6566259936974865419">Nag-save ang Chrome ng <ph name="GIGABYTES" /> GB para sa iyo</translation>
 <translation id="6573096386450695060">Payagan sa lahat ng oras</translation>
 <translation id="6573431926118603307">Dito lalabas ang mga nabuksan mong tab sa Chrome sa iba mo pang mga device.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Para simulan ang pag-sync, i-on ang "I-sync ang iyong data sa Chrome."</translation>
 <translation id="729975465115245577">Walang app sa iyong device upang ma-store ang file ng mga password.</translation>
 <translation id="7302081693174882195">Mga detalye: Pinagbukud-bukod ayon sa laki ng natipid na data</translation>
+<translation id="7302486331832100261">Kadalasan mong bina-block ang mga notification. Para payagan, i-tap ang Mga Detalye.</translation>
 <translation id="7328017930301109123">Sa Lite mode, mas mabilis na nilo-load ng Chrome ang mga page at mas kaunti nang 60 porsyento ang ginagamit nitong data.</translation>
 <translation id="7333031090786104871">Nagdaragdag pa rin ng nakaraang site</translation>
 <translation id="7352939065658542140">VIDEO</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr-CA.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr-CA.xtb
index a7ce27c..5fec1fa 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr-CA.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr-CA.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Affichez des sites Web populaires en touchant le bouton « Sites populaires »</translation>
 <translation id="1173894706177603556">Renommer</translation>
 <translation id="1178581264944972037">Interrompre</translation>
-<translation id="118069123878619799">- Vos caractéristiques physiques, comme votre taille</translation>
 <translation id="1181037720776840403">Supprimer</translation>
 <translation id="1188239144602654184">Démarrer la RA</translation>
 <translation id="1197267115302279827">Déplacer les favoris</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Téléchargement interrompu</translation>
 <translation id="1386674309198842382">Actif il y a <ph name="LAST_UPDATED" /> jours</translation>
 <translation id="1397811292916898096">Rechercher avec <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Intégré sur <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">« Ne pas faire le suivi »</translation>
 <translation id="1407135791313364759">Tout ouvrir</translation>
 <translation id="1409426117486808224">Affichage simplifié pour les onglets ouverts</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> éléments supprimés</translation>
 <translation id="2536728043171574184">Affichage d’une copie hors ligne de cette page en cours</translation>
 <translation id="2537178555904266562">Erreur lors de la synchronisation des mots de passe</translation>
+<translation id="2537296579376733324">Tous les témoins, sur ce site seulement</translation>
 <translation id="2546283357679194313">Témoins et données de site</translation>
 <translation id="2567385386134582609">IMAGE</translation>
 <translation id="257088987046510401">Thèmes</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Masquer le mot de passe</translation>
 <translation id="4570913071927164677">Détails</translation>
 <translation id="4572422548854449519">Connectez-vous à un compte géré</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{Il y a # minute}one{Il y a # minute}other{Il y a # minutes}}</translation>
 <translation id="4587589328781138893">Sites</translation>
 <translation id="4594952190837476234">Cette page hors connexion a été créée le <ph name="CREATION_TIME" /> et peut différer de la version en ligne.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{Il y a # heure}one{Il y a # heure}other{Il y a # heures}}</translation>
 <translation id="5810288467834065221">© <ph name="YEAR" /> Google LLC. Tous droits réservés.</translation>
 <translation id="5817918615728894473">Associer</translation>
-<translation id="5819762621475381970">- La disposition de votre pièce</translation>
 <translation id="583281660410589416">Inconnu</translation>
 <translation id="5833984609253377421">Partager le lien</translation>
 <translation id="5836192821815272682">Téléchargement de la mise à jour de Chrome en cours…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Effacer toutes les données</translation>
 <translation id="6545864417968258051">Recherche d'appareils Bluetooth</translation>
 <translation id="6560414384669816528">Utiliser Sogou pour les recherches</translation>
+<translation id="656065428026159829">En voir plus</translation>
 <translation id="6566259936974865419">Chrome vous a fait économiser <ph name="GIGABYTES" /> Go</translation>
 <translation id="6573096386450695060">Toujours autoriser</translation>
 <translation id="6573431926118603307">Les onglets déjà ouverts dans Chrome sur vos autres appareils s'afficheront ici.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Pour démarrer la synchronisation, activez l'option « Synchroniser vos données Chrome ».</translation>
 <translation id="729975465115245577">Votre appareil ne dispose pas d'une application pour stocker le fichier de mots de passe.</translation>
 <translation id="7302081693174882195">Détails : triés par quantité de données enregistrées</translation>
+<translation id="7302486331832100261">Vous bloquez habituellement les notifications. Pour les autoriser, touchez Détails.</translation>
 <translation id="7328017930301109123">En mode simplifié, Chrome charge les pages plus vite et utilise jusqu'à 60 pour cent moins de données.</translation>
 <translation id="7333031090786104871">Ajout du site précédent toujours en cours…</translation>
 <translation id="7352939065658542140">VIDÉO</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb
index 0198b8ac..ee1970b 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_fr.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Appuyez sur le bouton "Sites populaires" pour afficher les sites Web les plus visités</translation>
 <translation id="1173894706177603556">Renommer</translation>
 <translation id="1178581264944972037">Suspendre</translation>
-<translation id="118069123878619799">- vos caractéristiques physiques, telles que votre taille ;</translation>
 <translation id="1181037720776840403">Supprimer</translation>
 <translation id="1188239144602654184">Lancer</translation>
 <translation id="1197267115302279827">Déplacer les favoris</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Téléchargement suspendu</translation>
 <translation id="1386674309198842382">Actif il y a <ph name="LAST_UPDATED" /> jours</translation>
 <translation id="1397811292916898096">Rechercher avec <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Intégration sur <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">Interdire le suivi</translation>
 <translation id="1407135791313364759">Tout ouvrir</translation>
 <translation id="1409426117486808224">Vue simplifiée pour les onglets ouverts</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> éléments supprimés</translation>
 <translation id="2536728043171574184">Affichage d'une copie hors connexion de la page</translation>
 <translation id="2537178555904266562">Erreur lors de la synchronisation des mots de passe</translation>
+<translation id="2537296579376733324">Tous les cookies (sur ce site uniquement)</translation>
 <translation id="2546283357679194313">Cookies et données de site</translation>
 <translation id="2567385386134582609">IMAGE</translation>
 <translation id="257088987046510401">Thèmes</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Masquer le mot de passe</translation>
 <translation id="4570913071927164677">Détails</translation>
 <translation id="4572422548854449519">Se connecter à un compte géré</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{Il y a # minute}one{Il y a # minute}other{Il y a # minutes}}</translation>
 <translation id="4587589328781138893">Sites</translation>
 <translation id="4594952190837476234">Cette page hors connexion date du <ph name="CREATION_TIME" /> et peut différer de la version en ligne.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{Il y a # heure}one{Il y a # heure}other{Il y a # heures}}</translation>
 <translation id="5810288467834065221">© <ph name="YEAR" /> Google LLC. Tous droits réservés.</translation>
 <translation id="5817918615728894473">Associer</translation>
-<translation id="5819762621475381970">- la disposition de la pièce.</translation>
 <translation id="583281660410589416">Inconnu</translation>
 <translation id="5833984609253377421">Partager le lien</translation>
 <translation id="5836192821815272682">Téléchargement de la mise à jour de Chrome…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Supprimer toutes les données</translation>
 <translation id="6545864417968258051">Recherche Bluetooth</translation>
 <translation id="6560414384669816528">Rechercher avec Sogou</translation>
+<translation id="656065428026159829">Voir plus</translation>
 <translation id="6566259936974865419">Chrome vous a permis de gagner <ph name="GIGABYTES" /> Go</translation>
 <translation id="6573096386450695060">Toujours autoriser</translation>
 <translation id="6573431926118603307">Les onglets que vous avez ouverts dans Chrome sur vos autres appareils s'affichent ici.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Pour lancer la synchronisation, activez l'option "Synchroniser vos données Chrome".</translation>
 <translation id="729975465115245577">Aucune application n'est installée sur votre appareil pour stocker le fichier de mots de passe.</translation>
 <translation id="7302081693174882195">Détails : tri effectué par volume de données enregistrées</translation>
+<translation id="7302486331832100261">Les notifications sont bloquées par défaut. Pour les autoriser, appuyez sur "Détails".</translation>
 <translation id="7328017930301109123">En mode simplifié, Chrome charge les pages plus rapidement et consomme jusqu'à 60 pour cent de données en moins.</translation>
 <translation id="7333031090786104871">L'ajout du site précédent est toujours en cours</translation>
 <translation id="7352939065658542140">VIDÉO</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gl.xtb
index 2967524..6ab74ec 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gl.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gl.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Para descubrir sitios web populares, toca o botón Populares</translation>
 <translation id="1173894706177603556">Cambiar o nome</translation>
 <translation id="1178581264944972037">Pausar</translation>
-<translation id="118069123878619799">- as túas características físicas, como a altura</translation>
 <translation id="1181037720776840403">Eliminar</translation>
 <translation id="1188239144602654184">Iniciar realidade aumentada</translation>
 <translation id="1197267115302279827">Mover marcadores</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Pausouse a descarga</translation>
 <translation id="1386674309198842382">Dispositivo activo hai <ph name="LAST_UPDATED" />días</translation>
 <translation id="1397811292916898096">Buscar con <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Inserido en <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">Non facer seguimento</translation>
 <translation id="1407135791313364759">Abrir todo</translation>
 <translation id="1409426117486808224">Vista simplificada de pestanas abertas</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> elementos eliminados</translation>
 <translation id="2536728043171574184">Visualización dunha copia sen conexión desta páxina</translation>
 <translation id="2537178555904266562">Produciuse un erro ao sincronizar os contrasinais</translation>
+<translation id="2537296579376733324">Todas as cookies, só neste sitio</translation>
 <translation id="2546283357679194313">Cookies e datos dos sitios</translation>
 <translation id="2567385386134582609">IMAXE</translation>
 <translation id="257088987046510401">Temas</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Ocultar contrasinal</translation>
 <translation id="4570913071927164677">Detalles</translation>
 <translation id="4572422548854449519">Inicia sesión nunha conta xestionada</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{Hai # minuto}other{Hai # minutos}}</translation>
 <translation id="4587589328781138893">Sitios</translation>
 <translation id="4594952190837476234">Esta páxina sen conexión creouse o <ph name="CREATION_TIME" /> e pode ser diferente da versión en liña.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{Hai # hora}other{Hai # horas}}</translation>
 <translation id="5810288467834065221">Copyright <ph name="YEAR" /> Google LLC. Todos os dereitos reservados.</translation>
 <translation id="5817918615728894473">Sincronizar</translation>
-<translation id="5819762621475381970">- a distribución do teu cuarto</translation>
 <translation id="583281660410589416">Descoñecido</translation>
 <translation id="5833984609253377421">Compartir ligazón</translation>
 <translation id="5836192821815272682">Descargando actualización de Chrome…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Borrar todos os datos</translation>
 <translation id="6545864417968258051">Busca de dispositivos Bluetooth</translation>
 <translation id="6560414384669816528">Buscar con Sogou</translation>
+<translation id="656065428026159829">Ver máis</translation>
 <translation id="6566259936974865419">Chrome permitiuche aforrar <ph name="GIGABYTES" /> GB</translation>
 <translation id="6573096386450695060">Permitir sempre</translation>
 <translation id="6573431926118603307">Aquí aparecerán as pestanas que abrises en Chrome noutros dispositivos.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Para iniciar a sincronización, activa a opción Sincronizar os teus datos de Chrome.</translation>
 <translation id="729975465115245577">O dispositivo non ten unha aplicación para almacenar o ficheiro de contrasinais.</translation>
 <translation id="7302081693174882195">Detalles: filas ordenadas por cantidade de datos aforrados</translation>
+<translation id="7302486331832100261">Adoitas bloquear as notificacións. Para permitilas, toca Detalles.</translation>
 <translation id="7328017930301109123">No modo básico, Chrome carga as páxinas máis rápido e usa un 60 por cento menos de datos.</translation>
 <translation id="7333031090786104871">Aínda se está engadindo o sitio anterior</translation>
 <translation id="7352939065658542140">VÍDEO</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb
index fdc78fc..af10a3c7 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_gu.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">"લોકપ્રિય સાઇટ" બટન પર ટૅપ કરીને લોકપ્રિય વેબસાઇટ જુઓ</translation>
 <translation id="1173894706177603556">નામ બદલો</translation>
 <translation id="1178581264944972037">થોભો</translation>
-<translation id="118069123878619799">- તમારા શારીરિક લક્ષણો, જેમ કે ઊંચાઈ</translation>
 <translation id="1181037720776840403">કાઢી નાખો</translation>
 <translation id="1188239144602654184">AR દાખલ કરો</translation>
 <translation id="1197267115302279827">બુકમાર્ક્સ ખસેડો</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">ડાઉનલોડ થોભાવ્યું</translation>
 <translation id="1386674309198842382"><ph name="LAST_UPDATED" /> દિવસ પહેલાં સક્રિય હતું</translation>
 <translation id="1397811292916898096"><ph name="PRODUCT_NAME" /> વડે શોધો</translation>
-<translation id="1404122904123200417"><ph name="WEBSITE_URL" /> માં એમ્બેડ કર્યું</translation>
 <translation id="1406000523432664303">“ટ્રેક કરશો નહીં”</translation>
 <translation id="1407135791313364759">બધું ખોલો</translation>
 <translation id="1409426117486808224">ખુલ્લી ટૅબ માટે સરળ દૃશ્ય</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> આઇટમ કાઢી નાખી</translation>
 <translation id="2536728043171574184">આ પેજની ઓફલાઇન કૉપિ જોઈ રહ્યા છે</translation>
 <translation id="2537178555904266562">પાસવર્ડ સિંક કરવામાં ભૂલ આવી</translation>
+<translation id="2537296579376733324">માત્ર આ સાઇટની બધી કુકી</translation>
 <translation id="2546283357679194313">કૂકીઝ અને સાઇટ ડેટા</translation>
 <translation id="2567385386134582609">છબી</translation>
 <translation id="257088987046510401">થીમ્સ</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">પાસવર્ડ છુપાવો</translation>
 <translation id="4570913071927164677">વિગતો</translation>
 <translation id="4572422548854449519">મેનેજ એકાઉન્ટમાં સાઇન ઇન કરો</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# મિનિટ પહેલાં}one{# મિનિટ પહેલાં}other{# મિનિટ પહેલાં}}</translation>
 <translation id="4587589328781138893">સાઇટ</translation>
 <translation id="4594952190837476234">આ ઑફલાઇન પેજ <ph name="CREATION_TIME" /> ના રોજનું છે અને તે ઑનલાઇન વર્ઝનથી અલગ હોઈ શકે છે.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# કલાક પહેલાં}one{# કલાક પહેલાં}other{# કલાક પહેલાં}}</translation>
 <translation id="5810288467834065221">કૉપિરાઇટ <ph name="YEAR" /> Google LLC. સર્વાધિકાર સુરક્ષિત.</translation>
 <translation id="5817918615728894473">જોડી કરો</translation>
-<translation id="5819762621475381970">- તમારા રૂમનો લેઆઉટ</translation>
 <translation id="583281660410589416">અજ્ઞાત</translation>
 <translation id="5833984609253377421">લિંક શેર કરો</translation>
 <translation id="5836192821815272682">Chrome અપડેટ ડાઉનલોડ કરી રહ્યાં છીએ…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">બધો ડેટા સાફ કરો</translation>
 <translation id="6545864417968258051">બ્લૂટૂથ સ્કૅનિંગ</translation>
 <translation id="6560414384669816528">Sogou થી શોધો</translation>
+<translation id="656065428026159829">વધુ જુઓ</translation>
 <translation id="6566259936974865419">Chrome એ તમારો <ph name="GIGABYTES" /> GB બચાવ્યો</translation>
 <translation id="6573096386450695060">હંમેશાં મંજૂરી આપો</translation>
 <translation id="6573431926118603307">તમારા અન્ય ઉપકરણો પર તમે Chrome માં ખોલેલા ટૅબ્સ અહીં દેખાશે.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">સિંક શરુ કરવા માટે, "તમારો Chromeનો ડેટા સિંક કરો" ચાલુ કરો.</translation>
 <translation id="729975465115245577">તમારા ઉપકરણ પાસે પાસવર્ડ ફાઇલને સ્ટોર કરવા માટેની ઍપ નથી.</translation>
 <translation id="7302081693174882195">વિગતો: સાચવેલ ડેટાની માત્રા દ્વારા સૉર્ટ કરેલ</translation>
+<translation id="7302486331832100261">તમે સામાન્ય રીતે નોટિફિકેશનને બ્લૉક કરો છો. મંજૂરી આપવા માટે, વિગતો પર ટૅપ કરો.</translation>
 <translation id="7328017930301109123">લાઇટ મોડમાં, Chrome પેજને વધુ ઝડપથી લોડ કરે છે અને તે 60 ટકા ઓછા ડેટાનો ઉપયોગ કરે છે.</translation>
 <translation id="7333031090786104871">હજીપણ પાછલી સાઇટ ઉમેરી રહ્યાં છે</translation>
 <translation id="7352939065658542140">વીડિયો</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb
index ec13ca0..660f796 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hi.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">"मुख्य साइटें" बटन पर टैप करके लोकप्रिय साइटें देखें</translation>
 <translation id="1173894706177603556">नाम बदलें</translation>
 <translation id="1178581264944972037">रोकें</translation>
-<translation id="118069123878619799">- आपकी शारीरिक विशेषता, जैसे कि आपकी लंबाई</translation>
 <translation id="1181037720776840403">हटाएं</translation>
 <translation id="1188239144602654184">ऑगमेंटेड रिएलिटी (AR) सत्र शुरू करें</translation>
 <translation id="1197267115302279827">बुकमार्क ले जाएं</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">डाउनलोड रोका गया</translation>
 <translation id="1386674309198842382"><ph name="LAST_UPDATED" />दिन पहले सिंक किया गया</translation>
 <translation id="1397811292916898096"><ph name="PRODUCT_NAME" /> के ज़रिए खोजें</translation>
-<translation id="1404122904123200417"><ph name="WEBSITE_URL" /> में एम्बेड किया गया है</translation>
 <translation id="1406000523432664303">“नज़र न रखें”</translation>
 <translation id="1407135791313364759">सभी बुकमार्क खोलें</translation>
 <translation id="1409426117486808224">खुले टैब के लिए सरल बनाया गया व्यू</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> आइटम मिटाए गए</translation>
 <translation id="2536728043171574184">इस पृष्‍ठ की ऑफ़लाइन कॉपी देख रहे हैं</translation>
 <translation id="2537178555904266562">पासवर्ड सिंक करने में गड़बड़ी हुई</translation>
+<translation id="2537296579376733324">सिर्फ़ इस साइट की सभी कुकी</translation>
 <translation id="2546283357679194313">कुकी और साइट डेटा</translation>
 <translation id="2567385386134582609">इमेज</translation>
 <translation id="257088987046510401">थीम</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">पासवर्ड छिपाएं</translation>
 <translation id="4570913071927164677">विवरण</translation>
 <translation id="4572422548854449519">प्रबंधित खाते में साइन इन करें</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# मिनट पहले}one{# मिनट पहले}other{# मिनट पहले}}</translation>
 <translation id="4587589328781138893">साइटें</translation>
 <translation id="4594952190837476234">यह पेज <ph name="CREATION_TIME" /> का है और यह ऑनलाइन वर्शन से अलग हो सकता है.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# घंटा पहले}one{# घंटे पहले}other{# घंटे पहले}}</translation>
 <translation id="5810288467834065221">कॉपीराइट <ph name="YEAR" /> Google LLC. सर्वाधिकार सुरक्षित.</translation>
 <translation id="5817918615728894473">युग्‍मित करें</translation>
-<translation id="5819762621475381970">- आपके कमरे का लेआउट</translation>
 <translation id="583281660410589416">अज्ञात</translation>
 <translation id="5833984609253377421">लिंक शेयर करें</translation>
 <translation id="5836192821815272682">Chrome का अपडेट डाउनलोड हो रहा है…</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb
index 1245347..6621325e 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hr.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Dodirom na gumb "Najpopularnije web-lokacije" pogledajte popularne web-lokacije</translation>
 <translation id="1173894706177603556">Preimenuj</translation>
 <translation id="1178581264944972037">Pauziraj</translation>
-<translation id="118069123878619799">– vaše fizičke značajke, primjerice visinu</translation>
 <translation id="1181037720776840403">Ukloni</translation>
 <translation id="1188239144602654184">Pokreni AR</translation>
 <translation id="1197267115302279827">Premjesti oznake</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Preuzimanje je pauzirano</translation>
 <translation id="1386674309198842382">Aktivan prije <ph name="LAST_UPDATED" /> dana</translation>
 <translation id="1397811292916898096">Pretraživanje pomoću usluge <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Ugrađeno u <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">"Nemoj pratiti"</translation>
 <translation id="1407135791313364759">Otvori sve</translation>
 <translation id="1409426117486808224">Pojednostavljeni prikaz za otvorene kartice</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547">Broj izbrisanih stavki: <ph name="NUMBER_OF_ITEMS" /></translation>
 <translation id="2536728043171574184">Prikaz izvanmrežne kopije stranice</translation>
 <translation id="2537178555904266562">Pogreška prilikom sinkronizacije zaporki</translation>
+<translation id="2537296579376733324">Svi kolačići, samo na ovoj web-lokaciji</translation>
 <translation id="2546283357679194313">Kolačići i podaci o web-lokacijama</translation>
 <translation id="2567385386134582609">SLIKA</translation>
 <translation id="257088987046510401">Teme</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Sakrij zaporku</translation>
 <translation id="4570913071927164677">Pojedinosti</translation>
 <translation id="4572422548854449519">Prijava na upravljani račun</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{prije # minute}one{prije # minute}few{prije # minute}other{prije # minuta}}</translation>
 <translation id="4587589328781138893">Web-lokacije</translation>
 <translation id="4594952190837476234">Ova offline stranica nastala je <ph name="CREATION_TIME" /> i možda se razlikuje od online verzije.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{prije # sata}one{prije # sata}few{prije # sata}other{prije # sati}}</translation>
 <translation id="5810288467834065221">Autorska prava <ph name="YEAR" />. Google LLC. Sva prava pridržana.</translation>
 <translation id="5817918615728894473">Upari</translation>
-<translation id="5819762621475381970">– izgled vaše sobe</translation>
 <translation id="583281660410589416">Nepoznato</translation>
 <translation id="5833984609253377421">Dijeli vezu</translation>
 <translation id="5836192821815272682">Preuzimanje ažuriranja Chromea…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Izbriši sve podatke</translation>
 <translation id="6545864417968258051">Traženje Bluetootha</translation>
 <translation id="6560414384669816528">Pretražujte na usluzi Sogou</translation>
+<translation id="656065428026159829">Prikaži više</translation>
 <translation id="6566259936974865419">Chrome vam je uštedio <ph name="GIGABYTES" /> GB</translation>
 <translation id="6573096386450695060">Dopusti uvijek</translation>
 <translation id="6573431926118603307">Ovdje će se prikazati kartice koje ste otvorili u Chromeu na svojim ostalim uređajima.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Da biste pokrenuli sinkronizaciju, uključite postavku "Sinkroniziraj podatke s Chromea".</translation>
 <translation id="729975465115245577">Vaš uređaj nema aplikaciju za spremanje datoteke zaporki.</translation>
 <translation id="7302081693174882195">Pojedinosti: poredano prema količini ušteđenih podataka</translation>
+<translation id="7302486331832100261">Uglavnom blokirate obavijesti. Da biste dopustili, kliknite Pojedinosti.</translation>
 <translation id="7328017930301109123">U Jednostavnom načinu Chrome učitava stranice brže i smanjuje podatkovni promet do 60 posto.</translation>
 <translation id="7333031090786104871">I dalje se dodaje prethodna web-lokacija</translation>
 <translation id="7352939065658542140">VIDEOZAPIS</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb
index da5a4415..63da835d 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hu.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">A „Népszerűek” gombra koppintva megtekintheti a népszerű webhelyeket</translation>
 <translation id="1173894706177603556">Átnevezés</translation>
 <translation id="1178581264944972037">Szünet</translation>
-<translation id="118069123878619799">– az Ön fizikai jellemzőiről, például a magasságáról;</translation>
 <translation id="1181037720776840403">Eltávolítás</translation>
 <translation id="1188239144602654184">AR indítása</translation>
 <translation id="1197267115302279827">Könyvjelzők áthelyezése</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">A letöltés szünetel</translation>
 <translation id="1386674309198842382"><ph name="LAST_UPDATED" /> napja volt aktív</translation>
 <translation id="1397811292916898096">Keresés a(z) <ph name="PRODUCT_NAME" /> keresőmotorral</translation>
-<translation id="1404122904123200417">Beágyazva itt: <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">„Nincs nyomon követés”</translation>
 <translation id="1407135791313364759">Összes megnyitása</translation>
 <translation id="1409426117486808224">A megnyitott lapok egyszerűsített nézete</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> elem törölve</translation>
 <translation id="2536728043171574184">Az oldal offline példányának megtekintése</translation>
 <translation id="2537178555904266562">Hiba történt a jelszavak szinkronizálásakor</translation>
+<translation id="2537296579376733324">Az összes cookie, csak ezen a webhelyen</translation>
 <translation id="2546283357679194313">Cookie-k és webhelyadatok</translation>
 <translation id="2567385386134582609">KÉP</translation>
 <translation id="257088987046510401">Témák</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Jelszó elrejtése</translation>
 <translation id="4570913071927164677">Részletek</translation>
 <translation id="4572422548854449519">Bejelentkezés a kezelt fiókba</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# perce}other{# perce}}</translation>
 <translation id="4587589328781138893">Webhelyek</translation>
 <translation id="4594952190837476234">Az offline oldal létrehozási ideje: <ph name="CREATION_TIME" />. Az oldal eltérhet az online változattól.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# órája}other{# órája}}</translation>
 <translation id="5810288467834065221">Copyright <ph name="YEAR" /> Google LLC. Minden jog fenntartva.</translation>
 <translation id="5817918615728894473">Párosítás</translation>
-<translation id="5819762621475381970">– a szoba elrendezéséről.</translation>
 <translation id="583281660410589416">Ismeretlen</translation>
 <translation id="5833984609253377421">Link megosztása</translation>
 <translation id="5836192821815272682">A Chrome frissítésének letöltése…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Összes adat törlése</translation>
 <translation id="6545864417968258051">Bluetooth-alapú keresés</translation>
 <translation id="6560414384669816528">Keresés a Sogou használatával</translation>
+<translation id="656065428026159829">Továbbiak megjelenítése</translation>
 <translation id="6566259936974865419">A Chrome megspórolt Önnek <ph name="GIGABYTES" /> GB-ot</translation>
 <translation id="6573096386450695060">Engedélyezés mindig</translation>
 <translation id="6573431926118603307">A más eszközökön futó Chrome böngészőben megnyitott lapok itt jelennek meg.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">A szinkronizálás megkezdéséhez kapcsolja be a „Chrome-adatok szinkronizálása” beállítást.</translation>
 <translation id="729975465115245577">Az eszközön nincs olyan alkalmazás, amely tárolni tudja a jelszavakat tartalmazó fájlt.</translation>
 <translation id="7302081693174882195">Részletek: Megtakarított adatmennyiség szerinti rendezés</translation>
+<translation id="7302486331832100261">Ön általában letiltja az értesítéseket. Az engedélyezéshez koppintson a Részletek elemre.</translation>
 <translation id="7328017930301109123">Lite módban a Chrome gyorsabban betölti az oldalakat, és akár 60 százalékkal kisebb adatforgalmat generál.</translation>
 <translation id="7333031090786104871">Az előző webhely hozzáadása még folyamatban van</translation>
 <translation id="7352939065658542140">VIDEÓ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hy.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hy.xtb
index b553a58..3822f15 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_hy.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_hy.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Սեղմեք «Կայքերի ընտրանի» կոճակը և դիտեք թոփ կայքերը</translation>
 <translation id="1173894706177603556">Վերանվանել</translation>
 <translation id="1178581264944972037">Դադար</translation>
-<translation id="118069123878619799">– ձեր ֆիզիկական բնութագրերը, օրինակ՝ հասակը,</translation>
 <translation id="1181037720776840403">Ջնջել</translation>
 <translation id="1188239144602654184">Սկսել AR աշխատաշրջանը</translation>
 <translation id="1197267115302279827">Տեղափոխել էջանիշները</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Ներբեռնումը դադարեցվել է</translation>
 <translation id="1386674309198842382">Ակտիվ է եղել <ph name="LAST_UPDATED" /> օր առաջ</translation>
 <translation id="1397811292916898096">Որոնում <ph name="PRODUCT_NAME" />-ում</translation>
-<translation id="1404122904123200417">Ներկառուցված <ph name="WEBSITE_URL" /> կայքում</translation>
 <translation id="1406000523432664303">«Չհետևել»</translation>
 <translation id="1407135791313364759">Բացել բոլորը</translation>
 <translation id="1409426117486808224">Բաց ներդիրների պարզեցված դիտակերպ</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> տարր ջնջվեց</translation>
 <translation id="2536728043171574184">Դուք դիտում եք տվյալ էջի անցանց պատճենը</translation>
 <translation id="2537178555904266562">Չհաջողվեց համաժամացնել գաղտնաբառերը</translation>
+<translation id="2537296579376733324">Բոլոր քուքիները, միայն այս կայքում</translation>
 <translation id="2546283357679194313">Cookie ֆայլեր և կայքի տվյալներ</translation>
 <translation id="2567385386134582609">ՊԱՏԿԵՐ</translation>
 <translation id="257088987046510401">Թեմաներ</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Թաքցնել գաղտնաբառը</translation>
 <translation id="4570913071927164677">Մանրամասներ</translation>
 <translation id="4572422548854449519">Մուտք գործեք կառավարվող հաշիվ</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# րոպե առաջ}one{# minutes ago}other{# րոպե առաջ}}</translation>
 <translation id="4587589328781138893">Կայքեր</translation>
 <translation id="4594952190837476234">Այս էջը պահվել է <ph name="CREATION_TIME" />-ին, և կարող է տարբերվել առցանց տարբերակից։</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# ժամ առաջ}one{# hours ago}other{# ժամ առաջ}}</translation>
 <translation id="5810288467834065221">© Google LLC <ph name="YEAR" />։ Բոլոր իրավունքները պահպանված են:</translation>
 <translation id="5817918615728894473">Զուգակցել</translation>
-<translation id="5819762621475381970">– ձեր սենյակի դասավորությունը:</translation>
 <translation id="583281660410589416">Անհայտ</translation>
 <translation id="5833984609253377421">Կիսվել հղումով</translation>
 <translation id="5836192821815272682">Ներբեռնվում է Chrome-ի նոր տարբերակը…</translation>
@@ -690,7 +689,7 @@
 <translation id="6111020039983847643">օգտագործվել է</translation>
 <translation id="6112702117600201073">Էջի թարմացում</translation>
 <translation id="6127379762771434464">Տարրը հեռացվեց</translation>
-<translation id="6140912465461743537">Երկիր/Տարածաշրջան</translation>
+<translation id="6140912465461743537">Երկիր/տարածաշրջան</translation>
 <translation id="614940544461990577">Փորձեք՝</translation>
 <translation id="6154478581116148741">Այս սարքից ձեր գաղտնաբառերն արտահանելու համար կարգավորումներում միացրեք էկրանի կողպումը։</translation>
 <translation id="6159335304067198720"><ph name="PERCENT" /> տվյալների խնայում</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Մաքրել բոլոր տվյալները</translation>
 <translation id="6545864417968258051">Bluetooth սարքերի որոնում</translation>
 <translation id="6560414384669816528">Որոնել Sogou որոնման համակարգով</translation>
+<translation id="656065428026159829">Տեսնել ավելին</translation>
 <translation id="6566259936974865419">Chrome-ը խնայել է <ph name="GIGABYTES" /> ԳԲ տարածք</translation>
 <translation id="6573096386450695060">Միշտ թույլատրել</translation>
 <translation id="6573431926118603307">Ձեր մյուս սարքերում Chrome-ով բացված ներդիրները կտեսնեք այստեղ:</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Սկսելու համար միացրեք «Համաժամացնել Chrome-ի տվյալները» կարգավորումը:</translation>
 <translation id="729975465115245577">Ձեր սարքը գաղտնաբառերի ֆայլ պահելու հավելված չունի:</translation>
 <translation id="7302081693174882195">Տեղեկություններ․ տեսակավորված է ըստ պահված տվյալների ծավալի</translation>
+<translation id="7302486331832100261">Դուք սովորաբար արգելափակում եք ծանուցումները։ Թույլատրելու համար սեղմեք «Մանրամասներ»։</translation>
 <translation id="7328017930301109123">Lite ռեժիմում Chrome-ն ավելի արագ է բեռնում էջերը և օգտագործում է մինչև 60 տոկոս պակաս թրաֆիկ:</translation>
 <translation id="7333031090786104871">Դեռ նախորդ կայքն է ավելացվում</translation>
 <translation id="7352939065658542140">ՏԵՍԱՆՅՈՒԹ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb
index dfd8b30..2ba993a 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_id.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Lihat situs populer dengan mengetuk tombol "Situs populer"</translation>
 <translation id="1173894706177603556">Ganti nama</translation>
 <translation id="1178581264944972037">Jeda</translation>
-<translation id="118069123878619799">- fitur fisik Anda, seperti tinggi badan</translation>
 <translation id="1181037720776840403">Hapus</translation>
 <translation id="1188239144602654184">Mulai AR</translation>
 <translation id="1197267115302279827">Pindahkan bookmark</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Download dijeda</translation>
 <translation id="1386674309198842382">Aktif <ph name="LAST_UPDATED" /> hari lalu</translation>
 <translation id="1397811292916898096">Telusuri dengan <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Tersemat dalam <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">“Jangan Lacak”</translation>
 <translation id="1407135791313364759">Buka semua</translation>
 <translation id="1409426117486808224">Tampilan sederhana untuk tab yang terbuka</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> item dihapus</translation>
 <translation id="2536728043171574184">Melihat salinan offline halaman ini</translation>
 <translation id="2537178555904266562">Terjadi error saat menyinkronkan sandi</translation>
+<translation id="2537296579376733324">Semua cookie, hanya di situs ini</translation>
 <translation id="2546283357679194313">Cookie dan data situs</translation>
 <translation id="2567385386134582609">GAMBAR</translation>
 <translation id="257088987046510401">Tema</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Sembunyikan sandi</translation>
 <translation id="4570913071927164677">Detail</translation>
 <translation id="4572422548854449519">Login ke akun terkelola</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# menit yang lalu}other{# menit yang lalu}}</translation>
 <translation id="4587589328781138893">Situs</translation>
 <translation id="4594952190837476234">Halaman offline ini dibuat pada <ph name="CREATION_TIME" /> dan mungkin berbeda dengan versi onlinenya.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# jam yang lalu}other{# jam yang lalu}}</translation>
 <translation id="5810288467834065221">Hak cipta <ph name="YEAR" /> Google LLC. Semua hak dilindungi undang-undang.</translation>
 <translation id="5817918615728894473">Sandingkan</translation>
-<translation id="5819762621475381970">- tata letak ruangan Anda</translation>
 <translation id="583281660410589416">Tidak dikenal</translation>
 <translation id="5833984609253377421">Bagikan link</translation>
 <translation id="5836192821815272682">Mendownload Update Chrome…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Hapus Semua Data</translation>
 <translation id="6545864417968258051">Pemindaian Bluetooth</translation>
 <translation id="6560414384669816528">Menelusuri menggunakan Sogou</translation>
+<translation id="656065428026159829">Lihat lainnya</translation>
 <translation id="6566259936974865419">Chrome telah menghemat <ph name="GIGABYTES" /> GB</translation>
 <translation id="6573096386450695060">Selalu izinkan</translation>
 <translation id="6573431926118603307">Tab yang telah dibuka di Chrome pada perangkat lainnya akan muncul di sini.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Untuk memulai sinkronisasi, aktifkan "Sinkronkan data Chrome Anda".</translation>
 <translation id="729975465115245577">Perangkat Anda tidak memiliki aplikasi untuk menyimpan file sandi.</translation>
 <translation id="7302081693174882195">Detail: Diurutkan menurut jumlah kuota yang dihemat</translation>
+<translation id="7302486331832100261">Anda biasanya memblokir notifikasi. Untuk mengizinkan, ketuk Detail.</translation>
 <translation id="7328017930301109123">Dalam mode Ringan, Chrome memuat halaman lebih cepat dan menghemat data hingga 60 persen.</translation>
 <translation id="7333031090786104871">Masih menambahkan situs sebelumnya</translation>
 <translation id="7352939065658542140">VIDEO</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb
index dd897e6..19ad3d7 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_is.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Sjáðu vinsæl vefsvæði með því að ýta á hnappinn „Vinsælast“</translation>
 <translation id="1173894706177603556">Endurnefna</translation>
 <translation id="1178581264944972037">Gera hlé</translation>
-<translation id="118069123878619799">- líkamleg einkenni þín, eins og hæð</translation>
 <translation id="1181037720776840403">Fjarlægja</translation>
 <translation id="1188239144602654184">Fara inn í AR</translation>
 <translation id="1197267115302279827">Færa bókamerki</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Gert var hlé á niðurhali</translation>
 <translation id="1386674309198842382">Virkt fyrir <ph name="LAST_UPDATED" /> dögum</translation>
 <translation id="1397811292916898096">Leita með <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Fellt inn á <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">„Ekki rekja“</translation>
 <translation id="1407135791313364759">Opna alla</translation>
 <translation id="1409426117486808224">Einfaldað yfirlit fyrir opna flipa</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> atriðum eytt</translation>
 <translation id="2536728043171574184">Skoðar ótengt afrit af þessari síðu</translation>
 <translation id="2537178555904266562">Villa við að samstilla aðgangsorð</translation>
+<translation id="2537296579376733324">Öll fótspor, aðeins á þessu vefsvæði</translation>
 <translation id="2546283357679194313">Fótspor og gögn vefsvæða</translation>
 <translation id="2567385386134582609">MYND</translation>
 <translation id="257088987046510401">Þemu</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Fela aðgangsorð</translation>
 <translation id="4570913071927164677">Nánar</translation>
 <translation id="4572422548854449519">Innskráning á stýrðan reikning</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{Fyrir # mínútu}one{Fyrir # mínútu}other{Fyrir # mínútum}}</translation>
 <translation id="4587589328781138893">Svæði</translation>
 <translation id="4594952190837476234">Þessi síða án nettengingar er frá <ph name="CREATION_TIME" /> og hún gæti verið frábrugðin útgáfunni sem er á netinu.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{Fyrir # klukkustund}one{Fyrir # klukkustund}other{Fyrir # klukkustundum}}</translation>
 <translation id="5810288467834065221">Höfundarréttur <ph name="YEAR" /> Google LLC. Öll réttindi áskilin.</translation>
 <translation id="5817918615728894473">Para</translation>
-<translation id="5819762621475381970">- útlit herbergisins sem þú ert í</translation>
 <translation id="583281660410589416">Óþekkt</translation>
 <translation id="5833984609253377421">Deila tengli</translation>
 <translation id="5836192821815272682">Sækir Chrome uppfærslu…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Hreinsa öll gögn</translation>
 <translation id="6545864417968258051">Bluetooth-leit</translation>
 <translation id="6560414384669816528">Leita með Sogou</translation>
+<translation id="656065428026159829">Sjá meira</translation>
 <translation id="6566259936974865419">Chrome hefur sparað þér <ph name="GIGABYTES" /> GB</translation>
 <translation id="6573096386450695060">Leyfa alltaf</translation>
 <translation id="6573431926118603307">Flipar sem þú hefur opnað í Chrome í öðrum tækjum birtast hér.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Til að hefja samstillingu skaltu kveikja á „Samstilla gögnin þín í Chrome“.</translation>
 <translation id="729975465115245577">Í tækinu er ekkert forrit sem getur vistað aðgangsorðaskrána.</translation>
 <translation id="7302081693174882195">Upplýsingar: Raðað eftir gagnasparnaði</translation>
+<translation id="7302486331832100261">Þú lokar yfirleitt á tilkynningar. Ýttu á „Upplýsingar“ til að leyfa þær.</translation>
 <translation id="7328017930301109123">Í léttútgáfu hleður Chrome síðum hraðar og notar allt að 60 prósentum minna gagnamagn.</translation>
 <translation id="7333031090786104871">Er enn að bæta fyrra vefsvæði við</translation>
 <translation id="7352939065658542140">MYNDSKEIÐ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb
index 716c6609..4e858d05 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_it.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Scopri i siti web più visitati toccando il pulsante "Siti principali"</translation>
 <translation id="1173894706177603556">Rinomina</translation>
 <translation id="1178581264944972037">Pausa</translation>
-<translation id="118069123878619799">- dati sulle tue caratteristiche fisiche, come l'altezza</translation>
 <translation id="1181037720776840403">Rimuovi</translation>
 <translation id="1188239144602654184">Entra in AR</translation>
 <translation id="1197267115302279827">Sposta i Preferiti</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Download sospeso</translation>
 <translation id="1386674309198842382">Attivo <ph name="LAST_UPDATED" /> giorni fa</translation>
 <translation id="1397811292916898096">Cerca con <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Incorporato in <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">Non tenere traccia</translation>
 <translation id="1407135791313364759">Apri tutte</translation>
 <translation id="1409426117486808224">Visualizzazione semplificata delle schede aperte</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> elementi eliminati</translation>
 <translation id="2536728043171574184">È visualizzata una copia offline della pagina</translation>
 <translation id="2537178555904266562">Errore durante la sincronizzazione delle password</translation>
+<translation id="2537296579376733324">Tutti i cookie, solo su questo sito</translation>
 <translation id="2546283357679194313">Cookie e dati dei siti</translation>
 <translation id="2567385386134582609">IMMAGINE</translation>
 <translation id="257088987046510401">Temi</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Nascondi password</translation>
 <translation id="4570913071927164677">Dettagli</translation>
 <translation id="4572422548854449519">Accedi all'account gestito</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# minuto fa}other{# minuti fa}}</translation>
 <translation id="4587589328781138893">Siti</translation>
 <translation id="4594952190837476234">Questa pagina offline risale al giorno <ph name="CREATION_TIME" /> e potrebbe essere diversa dalla versione online.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# ora fa}other{# ore fa}}</translation>
 <translation id="5810288467834065221">Copyright <ph name="YEAR" /> Google LLC Tutti i diritti riservati.</translation>
 <translation id="5817918615728894473">Accoppia</translation>
-<translation id="5819762621475381970">- dati sulla struttura della tua stanza</translation>
 <translation id="583281660410589416">Sconosciuto</translation>
 <translation id="5833984609253377421">Condividi link</translation>
 <translation id="5836192821815272682">Download dell'aggiornamento di Chrome…</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb
index 8359c9f..d81988d 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_iw.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">הקשה על הלחצן "אתרים נבחרים" תציג אתרים פופולריים</translation>
 <translation id="1173894706177603556">שנה שם</translation>
 <translation id="1178581264944972037">השהה</translation>
-<translation id="118069123878619799">- התכונות הפיזיות שלך, כמו גובה.</translation>
 <translation id="1181037720776840403">הסרה</translation>
 <translation id="1188239144602654184">‏כניסה ל-AR</translation>
 <translation id="1197267115302279827">העבר סימניות</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">ההורדה הושהתה</translation>
 <translation id="1386674309198842382">פעילות אחרונה: לפני <ph name="LAST_UPDATED" /> ימים</translation>
 <translation id="1397811292916898096">חיפוש באמצעות <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">מוטבע ב-<ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">‏'לא לעקוב (DNT)'</translation>
 <translation id="1407135791313364759">פתח הכל</translation>
 <translation id="1409426117486808224">תצוגה פשוטה של כרטיסיות פתוחות</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> פריטים נמחקו</translation>
 <translation id="2536728043171574184">מציג העתק לא מקוון של עמוד זה</translation>
 <translation id="2537178555904266562">אירעה שגיאה בסנכרון הסיסמאות</translation>
+<translation id="2537296579376733324">‏כל קובצי ה-cookie, באתר זה בלבד</translation>
 <translation id="2546283357679194313">‏נתוני אתר וקובצי Cookie</translation>
 <translation id="2567385386134582609">תמונה</translation>
 <translation id="257088987046510401">ערכות נושא</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">הסתר סיסמה</translation>
 <translation id="4570913071927164677">פרטים</translation>
 <translation id="4572422548854449519">כניסה אל חשבון מנוהל</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{לפני דקה}two{לפני # דקות}many{לפני # דקות}other{לפני # דקות}}</translation>
 <translation id="4587589328781138893">אתרים</translation>
 <translation id="4594952190837476234">הדף הלא מקוון הזה נוצר ב-<ph name="CREATION_TIME" /> ויכול להיות שהגירסה המקוונת שלו שונה.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{לפני שעה}two{לפני שעתיים}many{לפני # שעות}other{לפני # שעות}}</translation>
 <translation id="5810288467834065221">‏Copyright <ph name="YEAR" /> Google LLC.‎ כל הזכויות שמורות.</translation>
 <translation id="5817918615728894473">התאם</translation>
-<translation id="5819762621475381970">- מבנה החדר שלך.</translation>
 <translation id="583281660410589416">לא ידוע</translation>
 <translation id="5833984609253377421">שיתוף קישור</translation>
 <translation id="5836192821815272682">‏מוריד עדכון של Chrome…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">נקה את כל הנתונים</translation>
 <translation id="6545864417968258051">‏סריקת Bluetooth</translation>
 <translation id="6560414384669816528">‏השתמש ב-Sogou לחיפוש</translation>
+<translation id="656065428026159829">אפשרויות נוספות</translation>
 <translation id="6566259936974865419">‏Chrome חסך לך ‎<ph name="GIGABYTES" /> GB</translation>
 <translation id="6573096386450695060">אני רוצה לאפשר תמיד</translation>
 <translation id="6573431926118603307">‏כרטיסיות שפתחת ב-Chrome במכשירים האחרים שלך יופיעו כאן.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">‏כדי להתחיל לסנכרן צריך להפעיל את האפשרות "סנכרון הנתונים מ-Chrome".</translation>
 <translation id="729975465115245577">אין במכשיר אפליקציה לאחסון קובץ הסיסמאות.</translation>
 <translation id="7302081693174882195">פרטים: מיון לפי נפח הנתונים שנחסכו</translation>
+<translation id="7302486331832100261">הבחירה שלך היא בדרך כלל לחסום התראות. כדי לאפשר את ההתראות, ניתן להקיש על 'פרטים'.</translation>
 <translation id="7328017930301109123">‏במצב טעינה מהירה, Chrome טוען דפים מהר יותר ומפחית את השימוש בנתונים בשיעור של עד 60 אחוזים.</translation>
 <translation id="7333031090786104871">עדיין מוסיף את האתר הקודם</translation>
 <translation id="7352939065658542140">סרטון</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb
index b44ec91..6bfee61 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ja.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">人気のウェブサイトを表示するには、[上位のサイト] ボタンをタップします</translation>
 <translation id="1173894706177603556">名前を変更</translation>
 <translation id="1178581264944972037">一時停止</translation>
-<translation id="118069123878619799">- あなたの身体的特徴(身長など)</translation>
 <translation id="1181037720776840403">削除</translation>
 <translation id="1188239144602654184">AR を開始</translation>
 <translation id="1197267115302279827">ブックマークを移動</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">ダウンロードを一時停止しました</translation>
 <translation id="1386674309198842382">最終同期: <ph name="LAST_UPDATED" /> 日前</translation>
 <translation id="1397811292916898096"><ph name="PRODUCT_NAME" /> で検索</translation>
-<translation id="1404122904123200417">埋め込み先: <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">「トラッキング拒否」</translation>
 <translation id="1407135791313364759">すべて開く</translation>
 <translation id="1409426117486808224">開いているタブの簡易表示</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" />件の項目を削除しました</translation>
 <translation id="2536728043171574184">このページのオフライン コピーを表示しています</translation>
 <translation id="2537178555904266562">パスワードの同期中にエラーが発生しました</translation>
+<translation id="2537296579376733324">すべての Cookie(このサイトのみ)</translation>
 <translation id="2546283357679194313">Cookie とサイトデータ</translation>
 <translation id="2567385386134582609">画像</translation>
 <translation id="257088987046510401">テーマ</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">パスワードを表示しない</translation>
 <translation id="4570913071927164677">詳細</translation>
 <translation id="4572422548854449519">管理対象アカウントにログイン</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# 分前}other{# 分前}}</translation>
 <translation id="4587589328781138893">サイト</translation>
 <translation id="4594952190837476234">このオフライン ページは <ph name="CREATION_TIME" /> 時点のものであり、オンライン版とは異なる可能性があります。</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# 時間前}other{# 時間前}}</translation>
 <translation id="5810288467834065221">Copyright <ph name="YEAR" /> Google LLC. All rights reserved.</translation>
 <translation id="5817918615728894473">ペア設定</translation>
-<translation id="5819762621475381970">- あなたの部屋のレイアウト</translation>
 <translation id="583281660410589416">不明</translation>
 <translation id="5833984609253377421">リンクを共有</translation>
 <translation id="5836192821815272682">Chrome のアップデートをダウンロードしています…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">すべてのデータを削除</translation>
 <translation id="6545864417968258051">Bluetooth のスキャン</translation>
 <translation id="6560414384669816528">Sogou で検索します</translation>
+<translation id="656065428026159829">もっと見る</translation>
 <translation id="6566259936974865419">Chrome で <ph name="GIGABYTES" /> GB の容量を節約しました</translation>
 <translation id="6573096386450695060">常に許可</translation>
 <translation id="6573431926118603307">他のデバイスの Chrome で開いているタブがここに表示されます。</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">同期を開始するには、[Chrome データを同期] をオンにしてください。</translation>
 <translation id="729975465115245577">お使いのデバイスにはパスワード ファイルを保存するためのアプリがインストールされていません。</translation>
 <translation id="7302081693174882195">詳細: データ節約量の順</translation>
+<translation id="7302486331832100261">通知はデフォルトでブロックされています。許可するには [詳細] をタップしてください。</translation>
 <translation id="7328017930301109123">ライトモードを使用すると、Chrome でページの読み込みが高速化され、データ使用量も最大 60 パーセント抑えることができます。</translation>
 <translation id="7333031090786104871">前のサイトを追加中です</translation>
 <translation id="7352939065658542140">動画</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ka.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ka.xtb
index 716ee44..30648f2 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ka.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ka.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">იხილეთ პოპულარული ვებსაიტები „ტოპ-საიტების“ ღილაკზე შეხებით</translation>
 <translation id="1173894706177603556">სახელის შეცვლა</translation>
 <translation id="1178581264944972037">პაუზა</translation>
-<translation id="118069123878619799">— თქვენი ფიზიკური მონაცემები, როგორიცაა სიმაღლე</translation>
 <translation id="1181037720776840403">ამოშლა</translation>
 <translation id="1188239144602654184">AR-ში შესვლა</translation>
 <translation id="1197267115302279827">სანიშნეების გადატანა</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">ჩამოტვირთვა დაპაუზებულია</translation>
 <translation id="1386674309198842382">აქტიური იყო <ph name="LAST_UPDATED" /> დღის წინ</translation>
 <translation id="1397811292916898096"><ph name="PRODUCT_NAME" />-ით ძიება</translation>
-<translation id="1404122904123200417">ჩასმული <ph name="WEBSITE_URL" />-ში</translation>
 <translation id="1406000523432664303">„არ ადევნო თვალი“</translation>
 <translation id="1407135791313364759">ყველას გახსნა</translation>
 <translation id="1409426117486808224">გამარტივებული ხედი გახსნილი ჩანართებისთვის</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> ერთეული წაიშალა</translation>
 <translation id="2536728043171574184">თქვენ ამ გვერდის ხაზგარეშე ასლს ნახულობთ</translation>
 <translation id="2537178555904266562">შეცდომა პაროლების სინქრონიზაციისას</translation>
+<translation id="2537296579376733324">ყველა ქუქი-ჩანაწერი, მხოლოდ ამ საიტზე</translation>
 <translation id="2546283357679194313">ქუქი-ფაილები და საიტის მონაცემები</translation>
 <translation id="2567385386134582609">სურათი</translation>
 <translation id="257088987046510401">თემები</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">პაროლის დამალვა</translation>
 <translation id="4570913071927164677">დეტალები</translation>
 <translation id="4572422548854449519">მართულ ანგარიშში შესვლა</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# წუთის წინ}other{# წუთის წინ}}</translation>
 <translation id="4587589328781138893">საიტები</translation>
 <translation id="4594952190837476234">ეს ხაზგარეშე გვერდი თარიღდება <ph name="CREATION_TIME" />-ით და შეიძლება განსხვავდებოდეს ონლაინ-ვერსიისგან.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# საათის წინ}other{# საათის წინ}}</translation>
 <translation id="5810288467834065221">© <ph name="YEAR" />, Google LLC. ყველა უფლება დაცულია.</translation>
 <translation id="5817918615728894473">დაწყვილება</translation>
-<translation id="5819762621475381970">— თქვენი ოთახის განლაგება</translation>
 <translation id="583281660410589416">უცნობი</translation>
 <translation id="5833984609253377421">ბმულის გაზიარება</translation>
 <translation id="5836192821815272682">მიმდინარეობს Chrome-ის განახლების ჩამოტვირთვა…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">ყველა მონაცემის გასუფთავება</translation>
 <translation id="6545864417968258051">Bluetooth სკანირება</translation>
 <translation id="6560414384669816528">ძიების Sogou-ს მეშვეობით განხორციელება</translation>
+<translation id="656065428026159829">მეტის ნახვა</translation>
 <translation id="6566259936974865419">Chrome-ის მეშვეობით თქვენ <ph name="GIGABYTES" /> გბაიტი დაზოგეთ</translation>
 <translation id="6573096386450695060">ყოველთვის დაშვება</translation>
 <translation id="6573431926118603307">სხვა მოწყობილობებზე თქვენ მიერ Chrome-ით გახსნილი ჩანართები აქ გამოჩნდება.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">სიქრონიზაციის დასაწყებად ჩართეთ „თქვენი Chrome მონაცემების სინქრონიზაციის“ პარამეტრი.</translation>
 <translation id="729975465115245577">თქვენს მოწყობილობაზე არ არის აპი, რომელიც შეძლებს პაროლების ფაილის შენახვას.</translation>
 <translation id="7302081693174882195">დეტალები: დალაგებულია დაზოგილი მონაცემების მიხედვით</translation>
+<translation id="7302486331832100261">როგორც წესი, თქვენ ბლოკავთ შეტყობინებებს. დასაშვებად შეხებით აირჩიეთ „დეტალები“.</translation>
 <translation id="7328017930301109123">Lite რეჟიმში Chrome უფრო სწრაფად ტვირთავს გვერდებს და 60 პროცენტით ნაკლებ ტრაფიკს მოიხმარს.</translation>
 <translation id="7333031090786104871">ჯერ კიდევ მიმდინარეობს წინა საიტის დამატება</translation>
 <translation id="7352939065658542140">ვიდეო</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_kk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_kk.xtb
index b78fedb..e847948 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_kk.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_kk.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">"Танымал сайт" түймесін түрту арқылы танымал веб-сайттарды көріңіз.</translation>
 <translation id="1173894706177603556">Атын өзгерту</translation>
 <translation id="1178581264944972037">Кідірту</translation>
-<translation id="118069123878619799">– бойыңыз сияқты физикалық сипаттар;</translation>
 <translation id="1181037720776840403">Өшіру</translation>
 <translation id="1188239144602654184">AR режиміне кіру</translation>
 <translation id="1197267115302279827">Бетбелгілерді жылжыту</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Жүктеу кідіртілді</translation>
 <translation id="1386674309198842382"><ph name="LAST_UPDATED" /> күн бұрын қосылған.</translation>
 <translation id="1397811292916898096"><ph name="PRODUCT_NAME" /> арқылы іздеу</translation>
-<translation id="1404122904123200417"><ph name="WEBSITE_URL" /> мекенжайына ендірілген</translation>
 <translation id="1406000523432664303">"Бақыламау"</translation>
 <translation id="1407135791313364759">Барлығын ашу</translation>
 <translation id="1409426117486808224">Ашық қойындылардың қарапайым көрінісі</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> элемент жойылды.</translation>
 <translation id="2536728043171574184">Бұл беттің желіден тыс күйдегі көшірмесі көрсетілуде</translation>
 <translation id="2537178555904266562">Құпия сөздерді синхрондау кезінде қате шықты</translation>
+<translation id="2537296579376733324">Барлық cookie файлдары осы сайтта ғана бар.</translation>
 <translation id="2546283357679194313">Cookie файлдары және торап деректері</translation>
 <translation id="2567385386134582609">КЕСКІН</translation>
 <translation id="257088987046510401">Тақырыптар</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Құпия сөзді жасыру</translation>
 <translation id="4570913071927164677">Мәліметтер</translation>
 <translation id="4572422548854449519">Басқарылатын есептік жазбаға кіру</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# минут бұрын}other{# минут бұрын}}</translation>
 <translation id="4587589328781138893">Сайттар</translation>
 <translation id="4594952190837476234">Бұл офлайн бет <ph name="CREATION_TIME" /> күні жасалған, сондықтан онлайн нұсқасынан өзгеше болуы мүмкін.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# сағат бұрын}other{# сағат бұрын}}</translation>
 <translation id="5810288467834065221">Copyright <ph name="YEAR" /> Google LLC. Барлық құқықтары қорғалған.</translation>
 <translation id="5817918615728894473">Жұптау</translation>
-<translation id="5819762621475381970">– бөлменің жобасы.</translation>
 <translation id="583281660410589416">Белгісіз</translation>
 <translation id="5833984609253377421">Сілтемені бөлісу</translation>
 <translation id="5836192821815272682">Chrome браузерінің жаңа нұсқасы жүктеп алынуда…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Барлық деректерді өшіру</translation>
 <translation id="6545864417968258051">Bluetooth құрылғыларын іздеу</translation>
 <translation id="6560414384669816528">Sogou қызметімен іздеу</translation>
+<translation id="656065428026159829">Басқаларын көру</translation>
 <translation id="6566259936974865419">Chrome <ph name="GIGABYTES" /> ГБ деректі сақтады</translation>
 <translation id="6573096386450695060">Әрқашан рұқсат беру</translation>
 <translation id="6573431926118603307">Басқа құрылғыларда Chrome браузерінен ашылған қойындылар осы жерде шығады.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Синхрондауды бастау үшін "Chrome деректерін синхрондау" параметрін қосыңыз.</translation>
 <translation id="729975465115245577">Құрылғыңызда құпия сөздер файлын сақтайтын қолданба орнатылмаған.</translation>
 <translation id="7302081693174882195">Мәліметтер: сақталған деректер көлемі бойынша сұрыпталды</translation>
+<translation id="7302486331832100261">Әдетте хабарландыруларға тыйым саласыз. Рұқсат беру үшін "Мәліметтер" түймесін түртіңіз.</translation>
 <translation id="7328017930301109123">Lite режимінде Chrome беттерді жылдамырақ жүктейді және трафикті 60 пайызға дейін аз жұмсайды.</translation>
 <translation id="7333031090786104871">Алдыңғы сайт әлі енгізілуде</translation>
 <translation id="7352939065658542140">БЕЙНЕ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_km.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_km.xtb
index 085707f..2129096 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_km.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_km.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">មើល​គេហទំព័រ​ពេញនិយម ដោយ​ចុច​ប៊ូតុង "គេហទំព័រ​ពេញនិយម"</translation>
 <translation id="1173894706177603556">ប្តូរឈ្មោះ</translation>
 <translation id="1178581264944972037">ផ្អាក</translation>
-<translation id="118069123878619799">- លក្ខណៈ​ពិសេស​ផ្នែករាងកាយ​របស់អ្នក ដូចជា​កម្ពស់​ជាដើម</translation>
 <translation id="1181037720776840403">ដកចេញ</translation>
 <translation id="1188239144602654184">ចូល AR</translation>
 <translation id="1197267115302279827">ផ្លាស់ទីចំណាំ</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">បានផ្អាកការទាញយក</translation>
 <translation id="1386674309198842382">ដំណើរការ <ph name="LAST_UPDATED" /> ថ្ងៃ​មុន</translation>
 <translation id="1397811292916898096">ស្វែងរក​ដោយ​ប្រើ <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">បានបង្កប់នៅក្នុង <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">“កុំតាមដាន”</translation>
 <translation id="1407135791313364759">បើកទាំងអស់</translation>
 <translation id="1409426117486808224">ទិដ្ឋភាព​សាមញ្ញ​សម្រាប់​ផ្ទាំង​បើក</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547">បានលុបធាតុ <ph name="NUMBER_OF_ITEMS" /></translation>
 <translation id="2536728043171574184">កំពុងមើលច្បាប់ចម្លងនៃទំព័រនេះនៅក្រៅបណ្តាញ</translation>
 <translation id="2537178555904266562">មានបញ្ហា​ក្នុងការ​ធ្វើសមកាលកម្ម​ពាក្យសម្ងាត់</translation>
+<translation id="2537296579376733324">ខូគីទាំងអស់ នៅលើគេហទំព័រនេះតែប៉ុណ្ណោះ</translation>
 <translation id="2546283357679194313">ខុកឃី និងទិន្នន័យគេហទំព័រ</translation>
 <translation id="2567385386134582609">រូបភាព</translation>
 <translation id="257088987046510401">ធីម</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">លាក់​ពាក្យ​សម្ងាត់</translation>
 <translation id="4570913071927164677">ព័ត៌មាន​លម្អិត</translation>
 <translation id="4572422548854449519">ចូលទៅគណនីដែលបានគ្រប់គ្រង</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# នាទីមុន}other{# នាទីមុន}}</translation>
 <translation id="4587589328781138893">ទំព័រ</translation>
 <translation id="4594952190837476234">ទំព័រ​សម្រាប់​ប្រើពេលគ្មានអ៊ីនធឺណិតនេះ​បង្កើតឡើងនៅថ្ងៃទី <ph name="CREATION_TIME" /> ហើយ​វាអាច​ខុស​ពី​កំណែ​សម្រាប់​ប្រើពេលមានអ៊ីនធឺណិត។</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# ម៉ោងមុន}other{# ម៉ោងមុន}}</translation>
 <translation id="5810288467834065221">រក្សា​សិទ្ធិ <ph name="YEAR" /> Google LLC ។ រក្សាសិទ្ធិ​គ្រប់យ៉ាង។</translation>
 <translation id="5817918615728894473">ផ្គូផ្គង</translation>
-<translation id="5819762621475381970">- ប្លង់​បន្ទប់​របស់អ្នក</translation>
 <translation id="583281660410589416">មិនស្គាល់</translation>
 <translation id="5833984609253377421">ចែក​រំលែក​តំណ</translation>
 <translation id="5836192821815272682">កំពុងទាញយក​កំណែថ្មី Chrome …</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb
index 95eaf2f..6706a76 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_kn.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">"ಉನ್ನತ ಸೈಟ್‌ಗಳು" ಬಟನ್ ಟ್ಯಾಪ್ ಮಾಡುವ ಮೂಲಕ ಜನಪ್ರಿಯ ವೆಬ್‌ಸೈಟ್‌ಗಳನ್ನು ನೋಡಿ</translation>
 <translation id="1173894706177603556">ಮರುಹೆಸರಿಸು</translation>
 <translation id="1178581264944972037">ವಿರಾಮ</translation>
-<translation id="118069123878619799">- ನಿಮ್ಮ ಭೌತಿಕ ಗುಣಲಕ್ಷಣಗಳು, ಉದಾ. ಎತ್ತರ ಇತ್ಯಾದಿ</translation>
 <translation id="1181037720776840403">ತೆಗೆದುಹಾಕು</translation>
 <translation id="1188239144602654184">AR ಅನ್ನು ನಮೂದಿಸಿ</translation>
 <translation id="1197267115302279827">ಬುಕ್‌ಮಾರ್ಕ್‌ಗಳನ್ನು ಚಲಿಸಿ</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">ಡೌನ್‌ಲೋಡ್ ವಿರಾಮಗೊಳಿಸಲಾಗಿದೆ</translation>
 <translation id="1386674309198842382"><ph name="LAST_UPDATED" /> ದಿನಗಳ ಹಿಂದೆ ಸಕ್ರಿಯ</translation>
 <translation id="1397811292916898096"><ph name="PRODUCT_NAME" /> ಮೂಲಕ ಹುಡುಕಿ</translation>
-<translation id="1404122904123200417"><ph name="WEBSITE_URL" /> ರಲ್ಲಿ ಎಂಬೆಡ್ ಮಾಡಲಾಗಿದೆ</translation>
 <translation id="1406000523432664303">“ಟ್ರ್ಯಾಕ್ ಮಾಡಬೇಡಿ”</translation>
 <translation id="1407135791313364759">ಎಲ್ಲವನ್ನೂ ತೆರೆಯಿರಿ</translation>
 <translation id="1409426117486808224">ತೆರೆದ ಟ್ಯಾಬ್‌ಗಳಿಗಾಗಿ ಸರಳೀಕೃತ ವೀಕ್ಷಣೆ</translation>
@@ -216,6 +214,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> ಐಟಂಗಳನ್ನು ಅಳಿಸಲಾಗಿದೆ</translation>
 <translation id="2536728043171574184">ಈ ಪುಟದ ಆಫ್‌ಲೈನ್ ನಕಲನ್ನು ವೀಕ್ಷಿಸಲಾಗುತ್ತಿದೆ</translation>
 <translation id="2537178555904266562">ಪಾಸ್‌ವರ್ಡ್‌ಗಳನ್ನು ಸಿಂಕ್ ಮಾಡುವಾಗ ದೋಷ ಉಂಟಾಗಿದೆ</translation>
+<translation id="2537296579376733324">ಎಲ್ಲಾ ಕುಕೀಗಳು, ಈ ಸೈಟ್‌ನಲ್ಲಿ ಮಾತ್ರ</translation>
 <translation id="2546283357679194313">ಕುಕೀಗಳು ಮತ್ತು ಸೈಟ್ ಡೇಟಾ</translation>
 <translation id="2567385386134582609">ಚಿತ್ರ</translation>
 <translation id="257088987046510401">ಥೀಮ್‌ಗಳು</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">ಪಾಸ್‌ವರ್ಡ್ ಮರೆಮಾಡಿ</translation>
 <translation id="4570913071927164677">ವಿವರಗಳು</translation>
 <translation id="4572422548854449519">ನಿರ್ವಹಿಸಲ್ಪಟ್ಟ ಖಾತೆಗೆ ಸೈನ್ ಇನ್ ಮಾಡಿ</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# ನಿಮಿಷದ ಹಿಂದೆ}one{# ನಿಮಿಷಗಳ ಹಿಂದೆ}other{# ನಿಮಿಷಗಳ ಹಿಂದೆ}}</translation>
 <translation id="4587589328781138893">ಸೈಟ್‌ಗಳು</translation>
 <translation id="4594952190837476234">ಈ ಆಫ್‍ಲೈನ್ ಪುಟವನ್ನು <ph name="CREATION_TIME" /> ರಂದು ರಚಿಸಲಾಗಿದೆ ಮತ್ತು ಇದು ಆನ್‌ಲೈನ್ ಆವೃತ್ತಿಗಿಂತ ಭಿನ್ನವಾಗಿರಬಹುದು.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# ಗಂಟೆಯ ಹಿಂದೆ}one{# ಗಂಟೆಗಳ ಹಿಂದೆ}other{# ಗಂಟೆಗಳ ಹಿಂದೆ}}</translation>
 <translation id="5810288467834065221">ಕೃತಿಸ್ವಾಮ್ಯ <ph name="YEAR" /> Google LLC. ಎಲ್ಲ ಹಕ್ಕುಗಳನ್ನು ಕಾಯ್ದಿರಿಸಲಾಗಿದೆ.</translation>
 <translation id="5817918615728894473">ಜೋಡಿಸು</translation>
-<translation id="5819762621475381970">- ನಿಮ್ಮ ರೂಮ್‌ನ ವಿನ್ಯಾಸ</translation>
 <translation id="583281660410589416">ಅಪರಿಚಿತ</translation>
 <translation id="5833984609253377421">ಲಿಂಕ್ ಹಂಚಿಕೊಳ್ಳಿ</translation>
 <translation id="5836192821815272682">Chrome ಅಪ್‌ಡೇಟ್ ಡೌನ್‌ಲೋಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">ಎಲ್ಲಾ ಡೇಟಾ ತೆರವುಗೊಳಿಸು</translation>
 <translation id="6545864417968258051">ಬ್ಲೂಟೂತ್ ಸ್ಕ್ಯಾನಿಂಗ್</translation>
 <translation id="6560414384669816528">Sogou ಜೊತೆಗೆ ಹುಡುಕಿ</translation>
+<translation id="656065428026159829">ಇನ್ನಷ್ಟು ನೋಡಿ</translation>
 <translation id="6566259936974865419">ನಿಮ್ಮ <ph name="GIGABYTES" /> GB ಅನ್ನು Chrome ಉಳಿಸಿದೆ</translation>
 <translation id="6573096386450695060">ಯಾವಾಗಲೂ ಅನುಮತಿಸಿ</translation>
 <translation id="6573431926118603307">ನಿಮ್ಮ ಇತರ ಸಾಧನಗಳಲ್ಲಿನ Chrome ನಲ್ಲಿ ನೀವು ತೆರೆದಿರುವಂತಹ ಟ್ಯಾಬ್‌ಗಳು ಇಲ್ಲಿ ಗೋಚರಿಸುತ್ತವೆ.</translation>
@@ -850,6 +850,7 @@
 <translation id="7293171162284876153">ಸಿಂಕ್ ಪ್ರಾರಂಭಿಸಲು, "ನಿಮ್ಮ Chrome ಡೇಟಾ ಸಿಂಕ್ ಮಾಡಿ" ಆಯ್ಕೆಯನ್ನು ಆನ್ ಮಾಡಿ.</translation>
 <translation id="729975465115245577">ನಿಮ್ಮ ಸಾಧನವು ಪಾಸ್‌ವರ್ಡ್‌ ಫೈಲ್ ಅನ್ನು ಸಂಗ್ರಹಿಸಿಡಲು ಅಪ್ಲಿಕೇಶನ್‌ ಅನ್ನು ಹೊಂದಿಲ್ಲ.</translation>
 <translation id="7302081693174882195">ವಿವರಗಳು: ಉಳಿಸಿದ ಡೇಟಾ ಪ್ರಮಾಣದ ಆಧಾರದಲ್ಲಿ ವಿಂಗಡಿಸಲಾಗಿದೆ</translation>
+<translation id="7302486331832100261">ನೀವು ಸಾಮಾನ್ಯವಾಗಿ ಅಧಿಸೂಚನೆಗಳನ್ನು ನಿರ್ಬಂಧಿಸುತ್ತೀರಿ. ಅನುಮತಿಸಲು, ವಿವರಗಳನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ.</translation>
 <translation id="7328017930301109123">ಲೈಟ್ ಮೋಡ್‍ನಲ್ಲಿ, Chrome ವೇಗವಾಗಿ ಪುಟಗಳನ್ನು ಲೋಡ್ ಮಾಡುತ್ತದೆ, ಮತ್ತು ಡೇಟಾವನ್ನು ಸುಮಾರು ಶೇಕಡಾ 60 ರಷ್ಟು ಕಡಿಮೆ ಬಳಸುತ್ತದೆ.</translation>
 <translation id="7333031090786104871">ಇನ್ನೂ ಹಿಂದಿನ ಸೈಟ್ ಅನ್ನು ಸೇರಿಸಲಾಗುತ್ತಿದೆ</translation>
 <translation id="7352939065658542140">ವೀಡಿಯೊ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb
index f8deb167..ee920ec6 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ko.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">'인기 사이트' 버튼을 탭하여 인기 웹사이트를 확인하세요.</translation>
 <translation id="1173894706177603556">이름 바꾸기</translation>
 <translation id="1178581264944972037">일시중지</translation>
-<translation id="118069123878619799">- 키와 같은 신체적 특징</translation>
 <translation id="1181037720776840403">삭제</translation>
 <translation id="1188239144602654184">AR 입력</translation>
 <translation id="1197267115302279827">북마크 이동</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">다운로드 일시중지됨</translation>
 <translation id="1386674309198842382"><ph name="LAST_UPDATED" />일 전 동기화됨</translation>
 <translation id="1397811292916898096"><ph name="PRODUCT_NAME" />에서 검색</translation>
-<translation id="1404122904123200417"><ph name="WEBSITE_URL" />에 포함됨</translation>
 <translation id="1406000523432664303">'추적 안함'</translation>
 <translation id="1407135791313364759">모두 열기</translation>
 <translation id="1409426117486808224">열린 탭 간단히 보기</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" />개 항목 삭제함</translation>
 <translation id="2536728043171574184">이 페이지의 오프라인 사본 보는 중</translation>
 <translation id="2537178555904266562">비밀번호 동기화 중 오류</translation>
+<translation id="2537296579376733324">모든 쿠키, 이 사이트에서만</translation>
 <translation id="2546283357679194313">쿠키 및 사이트 데이터</translation>
 <translation id="2567385386134582609">이미지</translation>
 <translation id="257088987046510401">테마</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">비밀번호 감추기</translation>
 <translation id="4570913071927164677">세부정보</translation>
 <translation id="4572422548854449519">관리 계정에 로그인</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{#분 전}other{#분 전}}</translation>
 <translation id="4587589328781138893">사이트</translation>
 <translation id="4594952190837476234">이 오프라인 페이지는 <ph name="CREATION_TIME" />에 생성되었으며 온라인 버전과 다를 수 있습니다.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{#시간 전}other{#시간 전}}</translation>
 <translation id="5810288467834065221">Copyright <ph name="YEAR" /> Google LLC. All rights reserved.</translation>
 <translation id="5817918615728894473">페어링</translation>
-<translation id="5819762621475381970">- 방 안의 구조</translation>
 <translation id="583281660410589416">알 수 없음</translation>
 <translation id="5833984609253377421">링크 공유</translation>
 <translation id="5836192821815272682">Chrome 업데이트 다운로드 중…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">모든 데이터 삭제</translation>
 <translation id="6545864417968258051">블루투스 검색</translation>
 <translation id="6560414384669816528">Sogou로 검색</translation>
+<translation id="656065428026159829">더보기</translation>
 <translation id="6566259936974865419">Chrome을 통해 <ph name="GIGABYTES" />GB를 절약했습니다.</translation>
 <translation id="6573096386450695060">항상 허용</translation>
 <translation id="6573431926118603307">다른 기기의 Chrome에서 연 탭이 여기에 표시됩니다.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">동기화를 시작하려면 'Chrome 데이터 동기화'를 사용 설정하세요.</translation>
 <translation id="729975465115245577">기기에 비밀번호 파일을 저장할 수 있는 앱이 없습니다.</translation>
 <translation id="7302081693174882195">세부정보: 저장된 데이터 양에 따라 정렬</translation>
+<translation id="7302486331832100261">기본적으로 알림을 차단하는 중입니다. 허용하려면 '세부정보'를 탭하세요.</translation>
 <translation id="7328017930301109123">Chrome의 라이트 모드를 사용하면 페이지가 더 빠르게 로드되고 데이터가 최대 60퍼센트 절약됩니다.</translation>
 <translation id="7333031090786104871">아직 이전 사이트 추가 중</translation>
 <translation id="7352939065658542140">동영상</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb
index ca5b440..a5af08e 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ky.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">"Мыкты шаарлар" баскычын басып, таанымал вебсайттарды көрүңүз</translation>
 <translation id="1173894706177603556">Атын өзгөртүү</translation>
 <translation id="1178581264944972037">Бир азга токтотуу</translation>
-<translation id="118069123878619799">- боюңуз сыяктуу физикалык мүнөздөмөлөрүңүз</translation>
 <translation id="1181037720776840403">Алып салуу</translation>
 <translation id="1188239144602654184">AR режимине кирүү</translation>
 <translation id="1197267115302279827">Кыстармаларды жылдыруу</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Жүктөп алуу тындырылды</translation>
 <translation id="1386674309198842382"><ph name="LAST_UPDATED" /> күн мурун жигердүү болгон</translation>
 <translation id="1397811292916898096"><ph name="PRODUCT_NAME" /> аркылуу издөө</translation>
-<translation id="1404122904123200417"><ph name="WEBSITE_URL" /> кыналган</translation>
 <translation id="1406000523432664303">Байкоо салынбасын</translation>
 <translation id="1407135791313364759">Баарын ачуу</translation>
 <translation id="1409426117486808224">Ачык өтмөктөр үчүн жөнөкөйлөштүрүлгөн көрүнүш</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> нерсе жок кылынды</translation>
 <translation id="2536728043171574184">Бул барактын оффлайндагы көчүрмөсү көрсөтүлүүдө</translation>
 <translation id="2537178555904266562">Сырсөздөрдү шайкештирүүдө ката кетти</translation>
+<translation id="2537296579376733324">Бардык cookie файлдары, бул сайтта гана</translation>
 <translation id="2546283357679194313">Кукилер жана сайттын дайындары</translation>
 <translation id="2567385386134582609">СҮРӨТ</translation>
 <translation id="257088987046510401">Темалар</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Сырсөздү жашыруу</translation>
 <translation id="4570913071927164677">Чоо-жайы</translation>
 <translation id="4572422548854449519">Башкарылган каттоо эсебине кириңиз</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# мүнөт мурун}other{# мүнөт мурун}}</translation>
 <translation id="4587589328781138893">Сайттар</translation>
 <translation id="4594952190837476234">Бул оффлайн режиминдеги баракча <ph name="CREATION_TIME" /> сакталган жана онлайн версиясынан айырмаланышы мүмкүн.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# саат мурун}other{# саат мурун}}</translation>
 <translation id="5810288467834065221">© Google LLC, <ph name="YEAR" /> Баардык укуктар корголгон.</translation>
 <translation id="5817918615728894473">Жупташтыруу</translation>
-<translation id="5819762621475381970">- бөлмөңүздүн көрүнүшү</translation>
 <translation id="583281660410589416">Белгисиз</translation>
 <translation id="5833984609253377421">Шилтеме менен бөлүшүү</translation>
 <translation id="5836192821815272682">Chrome жаңыртуусу жүктөлүп алынууда…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Бардык дайындарды тазалоо</translation>
 <translation id="6545864417968258051">Bluetooth түзмөктөрүн издөө</translation>
 <translation id="6560414384669816528">Sogou менен издөө</translation>
+<translation id="656065428026159829">Дагы көрүү</translation>
 <translation id="6566259936974865419">Chrome сизге <ph name="GIGABYTES" /> Гб үнөмдөп берди</translation>
 <translation id="6573096386450695060">Дайым уруксат берүү</translation>
 <translation id="6573431926118603307">Башка түзмөктөрүңүздөн Chrome аркылуу ачылган өтмөктөр ушул жерден көрүнөт.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Шайкештирүүнү баштоо үчүн, "Chrome дайындарын шайкештирүүнү" күйгүзүңүз.</translation>
 <translation id="729975465115245577">Түзмөгүңүздө сырсөздөрдүн файлын сактай турган колдонмо жок экен.</translation>
 <translation id="7302081693174882195">Кошумча маалымат: Үнөмдөлгөн трафик боюнча иргелди</translation>
+<translation id="7302486331832100261">Адатта билдирмелерди өчүрөсүз. Уруксат берүү үчүн "Чоо-жайын" таптап коюңуз.</translation>
 <translation id="7328017930301109123">Жөнөкөй режимде Chrome барактарды ылдамыраак жүктөп, 60 пайызга чейин азыраак трафик сарптайт.</translation>
 <translation id="7333031090786104871">Мурунку сайт дагы эле кошулуп жатат</translation>
 <translation id="7352939065658542140">ВИДЕО</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb
index 9195a32..9203456 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lo.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">ເບິ່ງເວັບໄຊຍອດນິຍົມໂດຍການແຕະປຸ່ມ "ເວັບໄຊຍອດນິຍົມ"</translation>
 <translation id="1173894706177603556">ໃສ່ຊື່ໃໝ່</translation>
 <translation id="1178581264944972037">ຢຸດຊົ່ວຄາວ</translation>
-<translation id="118069123878619799">- ລັກສະນະຮ່າງກາຍຂອງທ່ານ ເຊັ່ນ: ລວງສູງ</translation>
 <translation id="1181037720776840403">ລຶບອອກ</translation>
 <translation id="1188239144602654184">ເຂົ້າຫາ AR</translation>
 <translation id="1197267115302279827">ຍ້າຍ​ບຸກ​ມາກ​ສ໌</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">ຢຸດການດາວໂຫລດໄວ້ຊົ່ວຄາວແລ້ວ</translation>
 <translation id="1386674309198842382">ເປີດໃຊ້ເມື່ອ <ph name="LAST_UPDATED" /> ມື້ກ່ອນ</translation>
 <translation id="1397811292916898096">ຊອກຫາດ້ວຍ <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">ຝັງ​ຢູ່​ໃນ <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">“ຢ່າ​ຕິດຕາມ”</translation>
 <translation id="1407135791313364759">ເປີດ​ທັງ​ຫມົດ</translation>
 <translation id="1409426117486808224">ມຸມມອງງ່າຍດາຍສຳລັບແຖບທີ່ເປີດຢູ່</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547">ລຶບ <ph name="NUMBER_OF_ITEMS" /> ລາຍ​ການ​​ແລ້ວ</translation>
 <translation id="2536728043171574184">ກຳ​ລັງ​ເຂົ້າ​ເບິ່ງ​ສຳ​ເນົາ​ອັອບ​ລາຍ​ຂອງ​ໜ້າ​ນີ້</translation>
 <translation id="2537178555904266562">ເກີດຄວາມຜິດພາດໃນການຊິ້ງຂໍ້ມູນລະຫັດຜ່ານ</translation>
+<translation id="2537296579376733324">ຄຸກກີ້ທັງໝົດ, ໃນເວັບໄຊນີ້ເທົ່ານັ້ນ</translation>
 <translation id="2546283357679194313">ຄຸກກີ້ ແລະຂໍ້ມູນເວັບໄຊທ໌...</translation>
 <translation id="2567385386134582609">ຮູບ</translation>
 <translation id="257088987046510401">ເທມ</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">ເຊື່ອງລະຫັດຜ່ານ</translation>
 <translation id="4570913071927164677">ລາຍລະອຽດ</translation>
 <translation id="4572422548854449519">ເຂົ້າສູ່ລະບົບບັນຊີທີ່ມີການຈັດການ</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# ນາທີກ່ອນນີ້}other{# ນາທີກ່ອນນີ້}}</translation>
 <translation id="4587589328781138893">ເວັບໄຊ</translation>
 <translation id="4594952190837476234">ໜ້າອອບລາຍນີ້ມາຈາກ <ph name="CREATION_TIME" /> ແລະ ອາດຈະແຕກຕ່າງຈາກເວີຊັນອອນລາຍ.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# ຊົ່ວໂມງກ່ອນນີ້}other{# ຊົ່ວໂມງກ່ອນນີ້}}</translation>
 <translation id="5810288467834065221">ລິຂະສິດ <ph name="YEAR" /> Google LLC. ສະຫງວນລິຂະສິດ.</translation>
 <translation id="5817918615728894473">ຈັບ​ຄູ່</translation>
-<translation id="5819762621475381970">- ແຜນຜັງຂອງຫ້ອງຂອງທ່ານ</translation>
 <translation id="583281660410589416">ບໍ່​ຮູ້ຈັກ</translation>
 <translation id="5833984609253377421">ແບ່ງປັນລິ້ງ</translation>
 <translation id="5836192821815272682">ກຳລັງດາວໂຫຼດການອັບເດດ Chrome…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">ລຶບລ້າງທຸກຂໍ້ມູນ</translation>
 <translation id="6545864417968258051">ການສະແກນ Bluetooth</translation>
 <translation id="6560414384669816528">ຊອກຫາດ້ວຍ Sogou</translation>
+<translation id="656065428026159829">ເບິ່ງເພີ່ມເຕີມ</translation>
 <translation id="6566259936974865419">Chrome ຊ່ວຍທ່ານປະຢັດໄດ້ <ph name="GIGABYTES" /> GB</translation>
 <translation id="6573096386450695060">ອະນຸຍາດທຸກເທື່ອ</translation>
 <translation id="6573431926118603307">ແຖບທີ່ທ່ານໄດ້ເປີດໃນ Chrome ຢູ່ໃນອຸປະກອນອື່ນຂອງທ່ານຈະປາກົດຢູ່ບ່ອນນີ້.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">ເພື່ອເລີ່ມການຊິ້ງຂໍ້ມູນ, ກະລຸນາເປີດ "ຊິ້ງຂໍ້ມູນ Chrome ຂອງທ່ານ".</translation>
 <translation id="729975465115245577">ອຸປະກອນຂອງທ່ານບໍ່ມີແອັບເພື່ອເກັບໄຟລ໌ລະຫັດຜ່ານໄວ້.</translation>
 <translation id="7302081693174882195">ລາຍລະອຽດ: ຮຽງລຳດັບຕາມປະລິມານຂໍ້ມູນທີ່ບັນທຶກໄວ້</translation>
+<translation id="7302486331832100261">ໂດຍປົກກະຕິແລ້ວທ່ານບລັອກການແຈ້ງເຕືອນ. ເພື່ອອະນຸຍາດ, ກະລຸນາແຕະລາຍລະອຽດ.</translation>
 <translation id="7328017930301109123">ໃນໂໝດ Lite, Chrome ໂຫຼດໜ້າເວັບໄດ້ໄວກວ່າ ແລະ ປະຢັດອິນເຕີເນັດໄດ້ສູງສຸດ 60 ເປີເຊັນ.</translation>
 <translation id="7333031090786104871">ຍັງກຳລັງເພີ່ມເວັບໄຊກ່ອນໜ້ານີ້ຢູ່</translation>
 <translation id="7352939065658542140">ວິດີໂອ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb
index e94517c..94c8529 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lt.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Žr. populiarias svetaines palietę mygtuką „Populiariausios svetainės“</translation>
 <translation id="1173894706177603556">Pervadinti</translation>
 <translation id="1178581264944972037">Pristabdyti</translation>
-<translation id="118069123878619799">- jūsų fizines savybes, pavyzdžiui, ūgį;</translation>
 <translation id="1181037720776840403">Pašalinti</translation>
 <translation id="1188239144602654184">Įveskite AR</translation>
 <translation id="1197267115302279827">Perkelti žymes</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Atsisiuntimas pristabdytas</translation>
 <translation id="1386674309198842382">Aktyvus prieš <ph name="LAST_UPDATED" /> d.</translation>
 <translation id="1397811292916898096">Paieška su „<ph name="PRODUCT_NAME" />“</translation>
-<translation id="1404122904123200417">Įterpta į <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">Funkcija „Nestebėti“</translation>
 <translation id="1407135791313364759">Atidaryti viską</translation>
 <translation id="1409426117486808224">Supaprastinta atidarytų skirtukų peržiūra</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547">Ištrinta elementų: <ph name="NUMBER_OF_ITEMS" /></translation>
 <translation id="2536728043171574184">Žiūrima neprisijungus naudojama šio puslapio kopija</translation>
 <translation id="2537178555904266562">Sinchronizuojant slaptažodžius įvyko klaida</translation>
+<translation id="2537296579376733324">Visi slapukai, tik svetainėje</translation>
 <translation id="2546283357679194313">Slapukai ir svetainės duomenys</translation>
 <translation id="2567385386134582609">VAIZDAS</translation>
 <translation id="257088987046510401">Temos</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Slėpti slaptažodį</translation>
 <translation id="4570913071927164677">Išsami informacija</translation>
 <translation id="4572422548854449519">Prisijungimas prie tvarkomos paskyros</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{Prieš 1 minutę}one{Prieš # minutę}few{Prieš # minutes}many{Prieš # minutės}other{Prieš # minučių}}</translation>
 <translation id="4587589328781138893">Svetainės</translation>
 <translation id="4594952190837476234">Šis neprisijungus naudojamas puslapis sukurtas <ph name="CREATION_TIME" />, todėl gali skirtis nuo prisijungus pateiktos versijos.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{Prieš 1 valandą}one{Prieš # valandą}few{Prieš # valandas}many{Prieš # valandos}other{Prieš # valandų}}</translation>
 <translation id="5810288467834065221">Autorių teisės „Google LLC.“, <ph name="YEAR" /> m. Visos teisės saugomos.</translation>
 <translation id="5817918615728894473">Susieti</translation>
-<translation id="5819762621475381970">- patalpos išdėstymą;</translation>
 <translation id="583281660410589416">Nežinoma</translation>
 <translation id="5833984609253377421">Bendrinti nuorodą</translation>
 <translation id="5836192821815272682">Atsisiunčiamas „Chrome“ naujinys…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Išvalyti visus duomenis</translation>
 <translation id="6545864417968258051">„Bluetooth“ nuskaitymas</translation>
 <translation id="6560414384669816528">Atlikti paiešką naudojant „Sogou“</translation>
+<translation id="656065428026159829">Žr. daugiau</translation>
 <translation id="6566259936974865419">„Chrome“ sutaupė jums <ph name="GIGABYTES" /> GB</translation>
 <translation id="6573096386450695060">Visada leisti</translation>
 <translation id="6573431926118603307">Čia bus rodomi kituose įrenginiuose atidaryti „Chrome“ skirtukai.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Norėdami pradėti sinchronizuoti, įjunkite parinktį „Chrome“ duomenų sinchronizavimas“.</translation>
 <translation id="729975465115245577">Įrenginyje nėra slaptažodžių failo saugojimo programos.</translation>
 <translation id="7302081693174882195">Išsami informacija: surūšiuota pagal išsaugotų duomenų kiekį</translation>
+<translation id="7302486331832100261">Įprastai blokuojate pranešimus. Norėdami leisti, palieskite „Išsami informacija“.</translation>
 <translation id="7328017930301109123">Kai įjungtas supaprastintasis režimas, sistemoje „Chrome“ puslapiai įkeliami sparčiau ir naudojama iki 60 proc. mažiau duomenų.</translation>
 <translation id="7333031090786104871">Vis dar pridedama ankstesnė svetainė</translation>
 <translation id="7352939065658542140">VAIZDO ĮRAŠAS</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb
index d02e773..ebd7d52 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_lv.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Lai skatītu populāras tīmekļa vietnes, pieskarieties pogai “Populāras”</translation>
 <translation id="1173894706177603556">Pārdēvēt</translation>
 <translation id="1178581264944972037">Pauzēt</translation>
-<translation id="118069123878619799">- jūsu fiziskās īpašības, piemēram, garums;</translation>
 <translation id="1181037720776840403">Noņemt</translation>
 <translation id="1188239144602654184">Ievadīt PR</translation>
 <translation id="1197267115302279827">Pārvietot grāmatzīmes</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Lejupielāde pārtraukta</translation>
 <translation id="1386674309198842382">Aktīvs pirms <ph name="LAST_UPDATED" /> dienām</translation>
 <translation id="1397811292916898096">Meklēt, izmantojot meklētājprogramu <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Iegults vietnē <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">“Nesekot”</translation>
 <translation id="1407135791313364759">Atvērt visas</translation>
 <translation id="1409426117486808224">Vienkāršots atvērtu ciļņu skatījums</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> vienumi tika izdzēsti</translation>
 <translation id="2536728043171574184">Skata šīs lapas kopiju bezsaistē</translation>
 <translation id="2537178555904266562">Sinhronizējot paroles, radās kūda</translation>
+<translation id="2537296579376733324">Visas sīkfaili, tikai šajā vietnē.</translation>
 <translation id="2546283357679194313">Sīkfaili un vietņu dati</translation>
 <translation id="2567385386134582609">ATTĒLS</translation>
 <translation id="257088987046510401">Motīvi</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Slēpt paroli</translation>
 <translation id="4570913071927164677">Detalizēta informācija</translation>
 <translation id="4572422548854449519">Pierakstīšanās pārvaldītā kontā</translation>
+<translation id="4574741712540401491">• <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{pirms # minūtes}zero{pirms # minūtēm}one{pirms # minūtes}other{pirms # minūtēm}}</translation>
 <translation id="4587589328781138893">Vietnes</translation>
 <translation id="4594952190837476234">Šī lapas bezsaistes versija (izveidota: <ph name="CREATION_TIME" />) var atšķirties no tiešsaistes versijas.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{pirms # stundas}zero{pirms # stundām}one{pirms # stundas}other{pirms # stundām}}</translation>
 <translation id="5810288467834065221">Autortiesības: <ph name="YEAR" /> Google LLC. Visas tiesības paturētas.</translation>
 <translation id="5817918615728894473">Savienot pārī</translation>
-<translation id="5819762621475381970">- jūsu telpas izkārtojums.</translation>
 <translation id="583281660410589416">Nezināms</translation>
 <translation id="5833984609253377421">Kopīgot saiti</translation>
 <translation id="5836192821815272682">Lejupielādē Chrome atjauninājumu…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Notīrīt visus datus</translation>
 <translation id="6545864417968258051">Bluetooth meklēšana</translation>
 <translation id="6560414384669816528">Meklēšana, izmantojot Sogou</translation>
+<translation id="656065428026159829">Skatīt vairāk</translation>
 <translation id="6566259936974865419">Pārlūkā Chrome esat ietaupījis <ph name="GIGABYTES" /> GB.</translation>
 <translation id="6573096386450695060">Vienmēr atļaut</translation>
 <translation id="6573431926118603307">Šeit būs redzamas cilnes, kuras esat atvēris pārlūkā Chrome citās ierīcēs.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Lai sāktu sinhronizāciju, ieslēdziet iestatījumu “Jūsu Chrome datu sinhronizācija”.</translation>
 <translation id="729975465115245577">Ierīcē nav lietotnes, kurā uzglabāt paroļu failu.</translation>
 <translation id="7302081693174882195">Detalizēta informācija: kārtota pēc ietaupīto datu apjoma</translation>
+<translation id="7302486331832100261">Parasti jūs bloķējat paziņojumus. Lai tos atļautu, pieskarieties vienumam Detalizēta informācija.</translation>
 <translation id="7328017930301109123">Vienkāršotajā režīmā Chrome ielādē lapas ātrāk un patērē pat par 60 procentiem mazāk datu.</translation>
 <translation id="7333031090786104871">Joprojām notiek iepriekšējās vietnes pievienošana</translation>
 <translation id="7352939065658542140">VIDEOKLIPS</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mk.xtb
index e0fef07..428b098 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mk.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mk.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Допрете го копчето „Популарни“ за да ги разгледате популарните веб-сајтови</translation>
 <translation id="1173894706177603556">Преименувај</translation>
 <translation id="1178581264944972037">Пауза</translation>
-<translation id="118069123878619799">- вашите физички карактеристики, како висината</translation>
 <translation id="1181037720776840403">Отстрани</translation>
 <translation id="1188239144602654184">Влези во AR</translation>
 <translation id="1197267115302279827">Премести обележувачи</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Преземањето е паузирано</translation>
 <translation id="1386674309198842382">Активен пред <ph name="LAST_UPDATED" /> дена</translation>
 <translation id="1397811292916898096">Пребарувајте со <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Вградено во <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">„Не ме следи“</translation>
 <translation id="1407135791313364759">Отвори ги сите</translation>
 <translation id="1409426117486808224">Поедноставен приказ за отворени картички</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547">Избришани се <ph name="NUMBER_OF_ITEMS" /> ставки</translation>
 <translation id="2536728043171574184">Се прикажува офлајн копија на страницата</translation>
 <translation id="2537178555904266562">Грешка при синхронизирање на лозинките</translation>
+<translation id="2537296579376733324">Сите колачиња, само на овој сајт</translation>
 <translation id="2546283357679194313">Колачиња и податоци од сајтот</translation>
 <translation id="2567385386134582609">СЛИКА</translation>
 <translation id="257088987046510401">Теми</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Сокриј ја лозинката</translation>
 <translation id="4570913071927164677">Детали</translation>
 <translation id="4572422548854449519">Најавете се на управувана сметка</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{Пред # минута}one{Пред # минута}other{Пред # минути}}</translation>
 <translation id="4587589328781138893">Сајтови</translation>
 <translation id="4594952190837476234">Офлајн страницава е од <ph name="CREATION_TIME" /> и може да се разликува од онлајн верзијата.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{Пред # час}one{Пред # час}other{Пред # часа}}</translation>
 <translation id="5810288467834065221">Авторски права <ph name="YEAR" /> Google LLC. Сите права се задржани.</translation>
 <translation id="5817918615728894473">Спари</translation>
-<translation id="5819762621475381970">- распоредот на вашата соба</translation>
 <translation id="583281660410589416">Непознат</translation>
 <translation id="5833984609253377421">Сподели го линкот</translation>
 <translation id="5836192821815272682">Се презема ажурирање на Chrome…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Избриши ги сите податоци</translation>
 <translation id="6545864417968258051">Скенирање за Bluetooth</translation>
 <translation id="6560414384669816528">Пребарување со Sogou</translation>
+<translation id="656065428026159829">Прикажи повеќе</translation>
 <translation id="6566259936974865419">Chrome ви заштеди <ph name="GIGABYTES" /> гб</translation>
 <translation id="6573096386450695060">Секогаш дозволувај</translation>
 <translation id="6573431926118603307">Картичките што сте ги отвориле во Chrome на другите уреди ќе се појават тука.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">За да започне синхронизацијата, вклучете „Синхронизирајте ги податоците од Chrome“.</translation>
 <translation id="729975465115245577">Уредот нема апликација за складирање на датотеката со лозинки.</translation>
 <translation id="7302081693174882195">Детали: подредени по количината на зачувани податоци</translation>
+<translation id="7302486331832100261">Вообичаено ги блокирате известувањата. За да ги дозволите, допрете „Детали“.</translation>
 <translation id="7328017930301109123">Во Lite-режим, Chrome побрзо ги вчитува страниците и користи до 60 проценти помалку интернет.</translation>
 <translation id="7333031090786104871">Сè уште се додава претходниот сајт</translation>
 <translation id="7352939065658542140">ВИДЕО</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb
index 8d9785c9..0705af5 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ml.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">"മികച്ച സൈറ്റുകൾ" ബട്ടൺ ടാപ്പ് ചെയ്‌ത് ജനപ്രിയ വെബ്‌സൈറ്റുകൾ കാണുക</translation>
 <translation id="1173894706177603556">പേരുമാറ്റുക</translation>
 <translation id="1178581264944972037">അല്പംനിര്‍ത്തൂ</translation>
-<translation id="118069123878619799">- ഉയരം പോലുള്ള, നിങ്ങളുടെ ശാരീരിക സവിശേഷതകൾ</translation>
 <translation id="1181037720776840403">നീക്കംചെയ്യൂ</translation>
 <translation id="1188239144602654184">AR ആരംഭിക്കുക</translation>
 <translation id="1197267115302279827">ബു‌ക്ക്‌മാർക്കുകൾ നീക്കുക</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">ഡൗൺലോഡ് താൽക്കാലികമായി നിർത്തി</translation>
 <translation id="1386674309198842382"><ph name="LAST_UPDATED" /> ദിവസം മുമ്പ് സജീവമായിരുന്നു</translation>
 <translation id="1397811292916898096"><ph name="PRODUCT_NAME" /> ഉപയോഗിച്ച് തിരയുക</translation>
-<translation id="1404122904123200417"><ph name="WEBSITE_URL" /> എന്നതിൽ ഉൾപ്പെടുത്തി</translation>
 <translation id="1406000523432664303">“ട്രാക്ക് ചെയ്യരുത്”</translation>
 <translation id="1407135791313364759">എല്ലാം തുറക്കുക</translation>
 <translation id="1409426117486808224">തുറന്ന ടാബുകൾക്കായി ലളിതവൽക്കരിച്ച കാഴ്ച</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> ഇനങ്ങൾ ഇല്ലാതാക്കി</translation>
 <translation id="2536728043171574184">ഈ പേജിന്റെ ഒരു ഓഫ്‌ലൈൻ പതിപ്പ് കാണുന്നു</translation>
 <translation id="2537178555904266562">പാസ്‌വേഡുകൾ സമന്വയിപ്പിക്കുന്നതിൽ പിശക്</translation>
+<translation id="2537296579376733324">എല്ലാ കുക്കികളും, ഈ സൈറ്റിൽ മാത്രം</translation>
 <translation id="2546283357679194313">കുക്കികളും സൈറ്റ് ഡാറ്റയും</translation>
 <translation id="2567385386134582609">ചിത്രം</translation>
 <translation id="257088987046510401">തീമുകള്‍‌</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">പാസ്‌വേഡ് മറയ്ക്കുക</translation>
 <translation id="4570913071927164677">വിശദാംശങ്ങൾ</translation>
 <translation id="4572422548854449519">മാനേജ് ചെയ്‌ത അക്കൗണ്ടിലേക്ക് സൈൻ ഇൻ ചെയ്യുക</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# മിനിറ്റ് മുമ്പ്}other{# മിനിറ്റ് മുമ്പ്}}</translation>
 <translation id="4587589328781138893">സൈറ്റുകള്‍</translation>
 <translation id="4594952190837476234">ഈ ഓഫ്‌ലൈൻ പേജ് <ph name="CREATION_TIME" /> -ന് സൃഷ്‌ടിച്ചതാണ്, അതിനാൽ ഓൺലൈൻ പതിപ്പിൽ നിന്ന് വ്യത്യസ്തമായിരിക്കാം.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# മണിക്കൂര്‍ മുമ്പ്}other{# മണിക്കൂര്‍ മുമ്പ്}}</translation>
 <translation id="5810288467834065221">പകർപ്പവകാശം <ph name="YEAR" /> Google LLC. എല്ലാ അവകാശങ്ങളും നിക്ഷിപ്‍തം.</translation>
 <translation id="5817918615728894473">ജോടിയാക്കുക</translation>
-<translation id="5819762621475381970">- നിങ്ങളുടെ റൂമിന്റെ ലേഔട്ട്</translation>
 <translation id="583281660410589416">അജ്ഞാതം</translation>
 <translation id="5833984609253377421">ലിങ്ക് പങ്കിടുക</translation>
 <translation id="5836192821815272682">Chrome അപ്‌ഡേറ്റ് ഡൗൺലോഡ് ചെയ്യുന്നു…</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mn.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mn.xtb
index 0d820c93..2e614e1 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mn.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mn.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">"Шилдэг сайтууд" товчлуурыг товшин, түгээмэл хэрэглэгддэг вэб сайтыг харна уу</translation>
 <translation id="1173894706177603556">Нэр солих</translation>
 <translation id="1178581264944972037">Түр зогсоох</translation>
-<translation id="118069123878619799">- таны биеийн онцлог, жишээлбэл, өндөр</translation>
 <translation id="1181037720776840403">Хасах</translation>
 <translation id="1188239144602654184">AR оруулна уу</translation>
 <translation id="1197267115302279827">Хавчуургыг шилжүүлэх</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Таталтыг түр зогсоосон</translation>
 <translation id="1386674309198842382"><ph name="LAST_UPDATED" /> өдрийн өмнөөс идэвхтэй</translation>
 <translation id="1397811292916898096"><ph name="PRODUCT_NAME" />-р хайх</translation>
-<translation id="1404122904123200417"><ph name="WEBSITE_URL" />-д оруулсан</translation>
 <translation id="1406000523432664303">“Бүү дага”</translation>
 <translation id="1407135791313364759">Бүгдийг нээ</translation>
 <translation id="1409426117486808224">Нээлттэй чихтэй хуудасны хялбаршуулсан харагдац</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> зүйлийг устгасан</translation>
 <translation id="2536728043171574184">Энэ хуудсын офлайн хуулбарыг харж байна</translation>
 <translation id="2537178555904266562">Нууц үгийг синк хийхэд алдаа гарлаа</translation>
+<translation id="2537296579376733324">Бүх күүки, зөвхөн энэ сайт дээр</translation>
 <translation id="2546283357679194313">Cookies болон сайтын дата</translation>
 <translation id="2567385386134582609">ЗУРАГ</translation>
 <translation id="257088987046510401">Themes</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Нууц үгийг нуух</translation>
 <translation id="4570913071927164677">Дэлгэрэнгүй</translation>
 <translation id="4572422548854449519">Удирдсан бүртгэл рүү нэвтэрнэ үү</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# минутын өмнө}other{# минутын өмнө}}</translation>
 <translation id="4587589328781138893">Сайт</translation>
 <translation id="4594952190837476234">Энэ офлайн хуудсыг <ph name="CREATION_TIME" />-с харуулж байгаа бөгөөд онлайн хувилбараас өөр байж болзошгүй.</translation>
@@ -651,7 +651,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# цагийн өмнө}other{# цагийн өмнө}}</translation>
 <translation id="5810288467834065221">Зохиогчийн эрх <ph name="YEAR" /> Google ХХК. Бүх эрх хуулиар хамгаалагдсан.</translation>
 <translation id="5817918615728894473">Холбох</translation>
-<translation id="5819762621475381970">- таны өрөөний төлөвлөлт</translation>
 <translation id="583281660410589416">Үл мэдэгдэх</translation>
 <translation id="5833984609253377421">Холбоосыг хуваалцах</translation>
 <translation id="5836192821815272682">Chrome-н шинэчлэлтийг татаж байна…</translation>
@@ -752,6 +751,7 @@
 <translation id="6545017243486555795">Бүх өгөгдлийг устгах</translation>
 <translation id="6545864417968258051">Bluetooth скан хийх</translation>
 <translation id="6560414384669816528">Sogou-р хайх</translation>
+<translation id="656065428026159829">Дэлгэрэнгүй үзэх</translation>
 <translation id="6566259936974865419">Chrome <ph name="GIGABYTES" /> гигабайтыг хэмнэсэн</translation>
 <translation id="6573096386450695060">Байнга зөвшөөрөх</translation>
 <translation id="6573431926118603307">Таны бусад төхөөрөмжөөрөө Chrome-д нээсэн чихтэй хуудас энд харагдах болно.</translation>
@@ -848,6 +848,7 @@
 <translation id="7293171162284876153">Синк хийж эхлэхийн тулд "Chrome-н өгөгдлөө синк хийх" гэснийг асаана уу.</translation>
 <translation id="729975465115245577">Таны төхөөрөмжид нууц үгийн файлыг хадгалах апп байхгүй байна.</translation>
 <translation id="7302081693174882195">Дэлгэрэнгүй: Хэмнэсэн датаны хэмжээгээр нь эрэмбэлсэн</translation>
+<translation id="7302486331832100261">Та ихэвчлэн мэдэгдлийг хориглодог. Зөвшөөрөхийн тулд Дэлгэрэнгүй мэдээлэл дээр товшино уу.</translation>
 <translation id="7328017930301109123">Lite горимд байх үед Chrome хуудсыг илүү хурдан ачаалж, 60 хувь хүртэлх бага дата ашигладаг.</translation>
 <translation id="7333031090786104871">Өмнөх сайтыг нэмж байна</translation>
 <translation id="7352939065658542140">ВИДЕО</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb
index 50b32ec..42ef6d70 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_mr.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">"टॉप साइट" बटणावर टॅप करून लोकप्रिय वेबसाइट पाहा</translation>
 <translation id="1173894706177603556">नाव बदला</translation>
 <translation id="1178581264944972037">विराम द्या</translation>
-<translation id="118069123878619799">- तुमची शारीरिक वैशिष्‍ट्ये जसे की, उंची</translation>
 <translation id="1181037720776840403">काढून टाका</translation>
 <translation id="1188239144602654184">AR सुरू करा</translation>
 <translation id="1197267115302279827">बुकर्माक हलवा</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">डाउनलोडला विराम दिला</translation>
 <translation id="1386674309198842382"><ph name="LAST_UPDATED" /> दिवसांपूर्वी ॲक्टिव्ह होते</translation>
 <translation id="1397811292916898096"><ph name="PRODUCT_NAME" /> सह शोधा</translation>
-<translation id="1404122904123200417"><ph name="WEBSITE_URL" /> मध्ये एम्बेड केले</translation>
 <translation id="1406000523432664303">“Do Not Track”</translation>
 <translation id="1407135791313364759">सर्व उघडा</translation>
 <translation id="1409426117486808224">उघड्या टॅबसाठी सोपा केलेला व्ह्यू</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> आयटम हटवले</translation>
 <translation id="2536728043171574184">या पेजची ऑफलाइन प्रत पाहत आहे</translation>
 <translation id="2537178555904266562">पासवर्ड सिंक करताना एरर</translation>
+<translation id="2537296579376733324">सर्व कुकी, फक्त या साइटवर</translation>
 <translation id="2546283357679194313">कुकीज आणि साइट डेटा</translation>
 <translation id="2567385386134582609">इमेज</translation>
 <translation id="257088987046510401">थीम</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">पासवर्ड लपवा</translation>
 <translation id="4570913071927164677">तपशील</translation>
 <translation id="4572422548854449519">व्यवस्थापित केलेल्या खात्यामध्ये साइन इन करा</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# मिनिटापूर्वी}other{# मिनिटांपूर्वी}}</translation>
 <translation id="4587589328781138893">साइट</translation>
 <translation id="4594952190837476234">हे <ph name="CREATION_TIME" /> पासूनचे ऑफलाइन पेज आहे आणि ऑनलाइन आवृत्तीपेक्षा वेगळे असू शकते.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# तासापूर्वी}other{# तासांपूर्वी}}</translation>
 <translation id="5810288467834065221">कॉपीराइट <ph name="YEAR" /> Google LLC. सर्व हक्क राखीव.</translation>
 <translation id="5817918615728894473">जोडा</translation>
-<translation id="5819762621475381970">- तुमच्या रूमचा लेआउट</translation>
 <translation id="583281660410589416">अज्ञात</translation>
 <translation id="5833984609253377421">लिंक शेअर करा</translation>
 <translation id="5836192821815272682">Chrome अपडेट डाउनलोड करत आहे…</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb
index b7bb9c2..711cc3e 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ms.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Lihat tapak web popular dengan mengetik butang "Tapak popular"</translation>
 <translation id="1173894706177603556">Namakan semula</translation>
 <translation id="1178581264944972037">Jeda</translation>
-<translation id="118069123878619799">- ciri fizikal anda, seperti ketinggian</translation>
 <translation id="1181037720776840403">Alih keluar</translation>
 <translation id="1188239144602654184">Masuk ke AR</translation>
 <translation id="1197267115302279827">Alihkan penanda halaman</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Muat turun dijeda</translation>
 <translation id="1386674309198842382">Aktif <ph name="LAST_UPDATED" /> hari lalu</translation>
 <translation id="1397811292916898096">Cari dengan <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Dibenamkan dalam <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">“Jangan Kesan”</translation>
 <translation id="1407135791313364759">Buka semua</translation>
 <translation id="1409426117486808224">Paparan ringkas bagi tab terbuka</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> item dipadamkan</translation>
 <translation id="2536728043171574184">Melihat salinan luar talian halaman ini</translation>
 <translation id="2537178555904266562">Ralat semasa menyegerakkan kata laluan</translation>
+<translation id="2537296579376733324">Semua kuki, pada tapak ini sahaja</translation>
 <translation id="2546283357679194313">Kuki dan data tapak</translation>
 <translation id="2567385386134582609">IMEJ</translation>
 <translation id="257088987046510401">Tema</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Sembunyikan kata laluan</translation>
 <translation id="4570913071927164677">Butiran</translation>
 <translation id="4572422548854449519">Log masuk ke akaun terurus</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# minit yang lalu}other{# minit yang lalu}}</translation>
 <translation id="4587589328781138893">Tapak</translation>
 <translation id="4594952190837476234">Halaman luar talian ini dari <ph name="CREATION_TIME" /> dan mungkin berbeza daripada versi dalam talian.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# jam yang lalu}other{# jam yang lalu}}</translation>
 <translation id="5810288467834065221">Hak Cipta <ph name="YEAR" /> Google LLC. Hak cipta terpelihara.</translation>
 <translation id="5817918615728894473">Gandingkan</translation>
-<translation id="5819762621475381970">- reka letak bilik anda</translation>
 <translation id="583281660410589416">Tidak diketahui</translation>
 <translation id="5833984609253377421">Kongsi pautan</translation>
 <translation id="5836192821815272682">Memuat Turun Kemas Kini Chrome…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Hapuskan Semua Data</translation>
 <translation id="6545864417968258051">Pengimbasan Bluetooth</translation>
 <translation id="6560414384669816528">Cari dengan Sogou</translation>
+<translation id="656065428026159829">Lihat lagi</translation>
 <translation id="6566259936974865419">Chrome telah menjimatkan data anda sebanyak <ph name="GIGABYTES" /> GB</translation>
 <translation id="6573096386450695060">Sentiasa benarkan</translation>
 <translation id="6573431926118603307">Tab yang telah anda buka dalam Chrome pada peranti anda yang lain akan dipaparkan di sini.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Untuk memulakan penyegerakan, hidupkan "Segerakkan data Chrome anda".</translation>
 <translation id="729975465115245577">Peranti anda tiada apl untuk menyimpan fail kata laluan.</translation>
 <translation id="7302081693174882195">Butiran: Diisih mengikut jumlah penjimatan data</translation>
+<translation id="7302486331832100261">Anda biasanya menyekat pemberitahuan. Untuk membenarkan, ketik Butiran.</translation>
 <translation id="7328017930301109123">Dalam mod Ringkas, Chrome memuatkan halaman lebih pantas dan mengurangkan penggunaan data sehingga 60 peratus.</translation>
 <translation id="7333031090786104871">Masih menambahkan tapak yang terdahulu</translation>
 <translation id="7352939065658542140">VIDEO</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_my.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_my.xtb
index 9b0e873..e94ce9a 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_my.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_my.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">"ထိပ်တန်း ဝဘ်ဆိုက်များ" ခလုတ်ကို တို့ခြင်းဖြင့် လူကြိုက်များသော ဝဘ်ဆိုက်များ ကြည့်ရန်</translation>
 <translation id="1173894706177603556">အမည်ပြောင်းရန်</translation>
 <translation id="1178581264944972037">ဆိုင်းငံ့ထားရန်</translation>
-<translation id="118069123878619799">- အရပ်ကဲ့သို့ သင်၏ ပုံပန်းသဏ္ဌာန်</translation>
 <translation id="1181037720776840403">ဖယ်ရှားရန်</translation>
 <translation id="1188239144602654184">AR သို့ ဝင်ရန်</translation>
 <translation id="1197267115302279827">မှတ်သားချက်များကို ရွှေ့မည်</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">ဒေါင်းလုဒ်လုပ်မှု ဆိုင်းငံ့ထားသည်</translation>
 <translation id="1386674309198842382">ပြီးခဲ့သော <ph name="LAST_UPDATED" /> ရက်က အသုံးပြုထားသည်</translation>
 <translation id="1397811292916898096"><ph name="PRODUCT_NAME" /> ဖြင့် ရှာပါ</translation>
-<translation id="1404122904123200417"><ph name="WEBSITE_URL" /> တွင် မြှုပ်ထားခဲ့၏</translation>
 <translation id="1406000523432664303">'ခြေရာမခံပါနှင့်'</translation>
 <translation id="1407135791313364759">အားလုံး ဖွင့်ရန်</translation>
 <translation id="1409426117486808224">တဘ်ဖွင့်ခြင်းများအတွက် ရိုးရှင်းသည့် မြင်ကွင်း</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> ခုဖျက်ပြီးပြီ</translation>
 <translation id="2536728043171574184">ဤစာမျက်နှာ၏ အော့ဖ်လိုင်း မိတ္တူကို ကြည့်ရှုနေ</translation>
 <translation id="2537178555904266562">စကားဝှက်များကို စင့်ခ်လုပ်ရာတွင် အမှားအယွင်းရှိနေသည်</translation>
+<translation id="2537296579376733324">ကွတ်ကီးအားလုံး၊ ဤဝဘ်ဆိုက်တွင် ရှိသည်များသာ</translation>
 <translation id="2546283357679194313">ကူကီးများ နှင့် ဆိုက် ဒေတာ</translation>
 <translation id="2567385386134582609">ဓာတ်ပုံ</translation>
 <translation id="257088987046510401">အပြင်အဆင်များ</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">စကားဝှက်ကို ဖျောက်ရန်</translation>
 <translation id="4570913071927164677">အသေးစိတ်</translation>
 <translation id="4572422548854449519">စီမံခန့်ခွဲထားသည့်အကောင့်သို့ လက်မှတ်ထိုးဝင်ပါ</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{လွန်ခဲ့သည့် # မိနစ်က}other{ လွန်ခဲ့သည့် # မိနစ်က}}</translation>
 <translation id="4587589328781138893">ဝဘ်ဆိုက်များ</translation>
 <translation id="4594952190837476234">ဤအော့ဖ်လိုင်း စာမျက်နှာသည် <ph name="CREATION_TIME" /> က ဖြစ်ပြီး အွန်လိုင်းဗားရှင်းနှင့် ကွဲပြားနိုင်ပါသည်။</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{လွန်ခဲ့သည့် # နာရီက}other{လွန်ခဲ့သည့် # နာရီက}}</translation>
 <translation id="5810288467834065221">မူပိုင် <ph name="YEAR" /> Google LLC. မူပိုင်ခွင့်အားလုံး ယူထားသည်။</translation>
 <translation id="5817918615728894473">တွဲချိတ်ပါ</translation>
-<translation id="5819762621475381970">- သင့်အခန်း၏ အပြင်အဆင်</translation>
 <translation id="583281660410589416">မသိရ</translation>
 <translation id="5833984609253377421">လင့်ခ်ကို မျှဝေရန်</translation>
 <translation id="5836192821815272682">Chrome အပ်ဒိတ် ဒေါင်းလုဒ်လုပ်နေသည်…</translation>
@@ -752,6 +751,7 @@
 <translation id="6545017243486555795">ဒေတာများအားလုံးကိုရှင်းလင်းရန်</translation>
 <translation id="6545864417968258051">ဘလူးတုသ် ရှာဖွေခြင်း</translation>
 <translation id="6560414384669816528">Sogou ဖြင့် ရှာဖွေပါ</translation>
+<translation id="656065428026159829">နောက်ထပ်ကြည့်ရန်</translation>
 <translation id="6566259936974865419">Chrome သည် သင့်အတွက် <ph name="GIGABYTES" /> ဂစ်ဂါဘိုက် ချွေတာပေးထားပါသည်</translation>
 <translation id="6573096386450695060">အမြဲခွင့်ပြုရန်</translation>
 <translation id="6573431926118603307">အခြားစက်ပစ္စည်းများပေါ်ရှိ Chrome တွင်ဖွင့်ထားသော တဘ်များသည် ဤနေရာတွင် ပေါ်လာပါမည်။</translation>
@@ -848,6 +848,7 @@
 <translation id="7293171162284876153">စင့်ခ် စတင်ရန်အတွက် "သင်၏ Chrome ဒေတာ စင့်ခ်လုပ်ပါ" ကို ဖွင့်ပါ။</translation>
 <translation id="729975465115245577">သင့်စက်ပစ္စည်းတွင် စကားဝှက်ဖိုင်ကို သိမ်းရန် အက်ပ်မရှိပါ။</translation>
 <translation id="7302081693174882195">အသေးစိတ်များ− သိမ်းဆည်းထားသည့် ဒေတာပမာဏအလိုက် စီထားသည်</translation>
+<translation id="7302486331832100261">ပုံမှန်အားဖြင့် သင်သည် အကြောင်းကြားချက်များကို ပိတ်ထားသည်။ ခွင့်ပြုရန် 'အသေးစိတ်များ' ကို တို့ပါ။</translation>
 <translation id="7328017930301109123">'အပေါ့စားမုဒ်' တွင် Chrome သည် စာမျက်နှာများကို ပိုမိုမြန်ဆန်စွာဖွင့်ပြီး ဒေတာကို ၆၀ ရာခိုင်နှုန်းအထိ လျှော့သုံးပါသည်။</translation>
 <translation id="7333031090786104871">ယခင်ဆိုက်ကို ထည့်သွင်းနေဆဲဖြစ်သည်</translation>
 <translation id="7352939065658542140">ဗီဒီယို</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb
index f244232..b605641 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ne.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">"शीर्ष साइटहरू" नामक बटनमा ट्याप गरी लोकप्रिय वेबसाइटहरू हेर्नुहोस्</translation>
 <translation id="1173894706177603556">पुन: नामाकरण गर्नुहोस्</translation>
 <translation id="1178581264944972037">पज गर्नुहोस्</translation>
-<translation id="118069123878619799">- उचाइ जस्ता तपाईंको शारीरिक विशेषता</translation>
 <translation id="1181037720776840403">हटाउनुहोस्</translation>
 <translation id="1188239144602654184">AR को सत्र सुरु गर्नुहोस्</translation>
 <translation id="1197267115302279827">बुकमार्कहरू सार्नुहोस्</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">डाउनलोड रोकिएको छ</translation>
 <translation id="1386674309198842382"><ph name="LAST_UPDATED" /> दिनअघि सक्रिय</translation>
 <translation id="1397811292916898096"><ph name="PRODUCT_NAME" /> मार्फत खोज्नुहोस्</translation>
-<translation id="1404122904123200417"><ph name="WEBSITE_URL" /> मा एम्बेड भएको</translation>
 <translation id="1406000523432664303">“ट्रयाक नगर्नुहोस्”</translation>
 <translation id="1407135791313364759">सबै खोल्नुहोस्</translation>
 <translation id="1409426117486808224">खुला ट्याबहरूका लागि सरलीकृत दृश्य</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> वस्तुहरू मेटाइए</translation>
 <translation id="2536728043171574184">यो पृष्ठको एक अफलाइन प्रतिलिपि हेर्दै</translation>
 <translation id="2537178555904266562">पासवर्डहरू सिंक गर्ने क्रममा त्रुटि भयो</translation>
+<translation id="2537296579376733324">सबै कुकीहरू, यो साइटमा मात्र</translation>
 <translation id="2546283357679194313">कुकीहरू र साइट डाटा</translation>
 <translation id="2567385386134582609">छवि</translation>
 <translation id="257088987046510401">थिमहरू</translation>
@@ -471,6 +470,7 @@
 <translation id="4565377596337484307">पासवर्ड लुकाउनुहोस्</translation>
 <translation id="4570913071927164677">विवरणहरू</translation>
 <translation id="4572422548854449519">व्यवस्थापन गरिएको खातामा साइन इन गर्नुहोस्</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# मिनेटअघि}other{# मिनेटअघि}}</translation>
 <translation id="4587589328781138893">साइटहरू</translation>
 <translation id="4594952190837476234">यो पृष्ठ <ph name="CREATION_TIME" /> मा सिर्जना गरिएको हुँदा अनलाइन संस्करणभन्दा भिन्न हुन सक्छ।</translation>
@@ -651,7 +651,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# घन्टा अघि}other{# घन्टा अघि}}</translation>
 <translation id="5810288467834065221">प्रतिलिपि अधिकार <ph name="YEAR" /> Google LLC। सर्वाधिकार सुरक्षित।</translation>
 <translation id="5817918615728894473">जोडा  बनाउनुहोस्</translation>
-<translation id="5819762621475381970">- तपाईंको कोठाको प्रारूप</translation>
 <translation id="583281660410589416">अज्ञात</translation>
 <translation id="5833984609253377421">लिंक आदान प्रदान गर्नुहोस्</translation>
 <translation id="5836192821815272682">Chrome को अद्यावधिक डाउनलोड गर्दै…</translation>
@@ -752,6 +751,7 @@
 <translation id="6545017243486555795">सबै डेटा खाली गर्नुहोस्</translation>
 <translation id="6545864417968258051">ब्लुटुथ स्क्यान गर्दै</translation>
 <translation id="6560414384669816528">Sogou मार्फत खोजी गर्नुहोस्</translation>
+<translation id="656065428026159829">थप हेर्नुहोस्</translation>
 <translation id="6566259936974865419">Chrome ले तपाईंको <ph name="GIGABYTES" /> जि.बि. बचाएको छ</translation>
 <translation id="6573096386450695060">सधैँ अनुमति दिनुहोस्</translation>
 <translation id="6573431926118603307">तपाईँले आफ्ना अन्य यन्त्रहरूमा Chrome मा खोल्नुभएका ट्याबहरू यहाँ देखिनेछन्।</translation>
@@ -848,6 +848,7 @@
 <translation id="7293171162284876153">सिंक गर्ने कार्य सुरु गर्न "Chrome को आफ्नो डेटा सिंक गर्नुहोस्"।</translation>
 <translation id="729975465115245577">तपाईंको यन्त्रमा पासवर्डहरूको फाइल भण्डारण गर्ने कुनै अनुप्रयोग छैन।</translation>
 <translation id="7302081693174882195">विवरणहरू: बचत गरिएको डेटाको मात्राअनुसार क्रमबद्ध गरिएको</translation>
+<translation id="7302486331832100261">तपाईं सामान्यतया सूचनाहरूमाथि रोक लगाउनुहुन्छ। अनुमति दिन विवरणहरूमा ट्याप गर्नुहोस्।</translation>
 <translation id="7328017930301109123">लाइट मोडमा हुँदा Chrome ले पृष्ठहरू अझ छिटो लोड गर्नुका साथै ६० प्रतिशतसम्म कम डेटा प्रयोग गर्छ।</translation>
 <translation id="7333031090786104871">अघिल्लो साइट अझै थपिँदै</translation>
 <translation id="7352939065658542140">भिडियो</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb
index 5aae4170..776b713 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_nl.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Bekijk populaire websites door op de knop Topsites te tikken</translation>
 <translation id="1173894706177603556">Naam wijzigen</translation>
 <translation id="1178581264944972037">Onderbreken</translation>
-<translation id="118069123878619799">- je fysieke kenmerken, zoals je lengte</translation>
 <translation id="1181037720776840403">Verwijderen</translation>
 <translation id="1188239144602654184">AR starten</translation>
 <translation id="1197267115302279827">Bladwijzers verplaatsen</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Download onderbroken</translation>
 <translation id="1386674309198842382"><ph name="LAST_UPDATED" /> dagen geleden actief</translation>
 <translation id="1397811292916898096">Zoeken met <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Ingesloten in <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">Niet bijhouden</translation>
 <translation id="1407135791313364759">Alles openen</translation>
 <translation id="1409426117486808224">Vereenvoudigde weergave voor geopende tabbladen</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> items verwijderd</translation>
 <translation id="2536728043171574184">Een offline exemplaar van deze pagina bekijken</translation>
 <translation id="2537178555904266562">Fout bij synchroniseren van wachtwoorden</translation>
+<translation id="2537296579376733324">Alle cookies, alleen op deze site</translation>
 <translation id="2546283357679194313">Cookies en sitegegevens</translation>
 <translation id="2567385386134582609">AFBEELDING</translation>
 <translation id="257088987046510401">Thema's</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Wachtwoord verbergen</translation>
 <translation id="4570913071927164677">Details</translation>
 <translation id="4572422548854449519">Inloggen bij een beheerd account</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# minuut geleden}other{# minuten geleden}}</translation>
 <translation id="4587589328781138893">Sites</translation>
 <translation id="4594952190837476234">Deze offline pagina is van <ph name="CREATION_TIME" /> en kan afwijken van de online versie.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# uur geleden}other{# uur geleden}}</translation>
 <translation id="5810288467834065221">Copyright <ph name="YEAR" /> Google LLC. Alle rechten voorbehouden.</translation>
 <translation id="5817918615728894473">Koppelen</translation>
-<translation id="5819762621475381970">- de indeling van je kamer</translation>
 <translation id="583281660410589416">Onbekend</translation>
 <translation id="5833984609253377421">Link delen</translation>
 <translation id="5836192821815272682">Chrome-update downloaden…</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb
index 9eeb842..29aec53 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_no.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Se populære nettsteder ved å trykke på «Populært»-knappen</translation>
 <translation id="1173894706177603556">Gi nytt navn</translation>
 <translation id="1178581264944972037">Stans midlertidig</translation>
-<translation id="118069123878619799">– fysiske kjennetegn, som hvor høy du er</translation>
 <translation id="1181037720776840403">Fjern</translation>
 <translation id="1188239144602654184">Start utvidet virkelighet</translation>
 <translation id="1197267115302279827">Flytt bokmerker</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Nedlastingen er satt på pause</translation>
 <translation id="1386674309198842382">Aktiv for <ph name="LAST_UPDATED" /> dager siden</translation>
 <translation id="1397811292916898096">Søk med <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Innbygd i <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">«Ingen sporing»</translation>
 <translation id="1407135791313364759">Åpne alle</translation>
 <translation id="1409426117486808224">Forenklet visning for åpne faner</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547">Slettet <ph name="NUMBER_OF_ITEMS" /> elementer</translation>
 <translation id="2536728043171574184">Ser på en lokalt lagret versjon av denne siden</translation>
 <translation id="2537178555904266562">Feil under synkronisering av passord</translation>
+<translation id="2537296579376733324">Alle informasjonskapsler, kun på dette nettstedet</translation>
 <translation id="2546283357679194313">Informasjonskapsler og data fra nettsteder</translation>
 <translation id="2567385386134582609">BILDE</translation>
 <translation id="257088987046510401">Temaer</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Skjul passord</translation>
 <translation id="4570913071927164677">Detaljer</translation>
 <translation id="4572422548854449519">Logg på en administrert konto</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{for # minutt siden}other{for # minutter siden}}</translation>
 <translation id="4587589328781138893">Nettsteder</translation>
 <translation id="4594952190837476234">Denne siden uten nett er fra <ph name="CREATION_TIME" /> og kan avvike fra nettversjonen.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{for # time siden}other{for # timer siden}}</translation>
 <translation id="5810288467834065221">Copyright <ph name="YEAR" /> Google LLC. Med enerett.</translation>
 <translation id="5817918615728894473">Koble sammen</translation>
-<translation id="5819762621475381970">– hvordan rommet ditt ser ut</translation>
 <translation id="583281660410589416">Ukjent</translation>
 <translation id="5833984609253377421">Del en link</translation>
 <translation id="5836192821815272682">Laster ned en Chrome-oppdatering …</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Slett alle data</translation>
 <translation id="6545864417968258051">Bluetooth-skanning</translation>
 <translation id="6560414384669816528">Søk med Sogou</translation>
+<translation id="656065428026159829">Se mer</translation>
 <translation id="6566259936974865419">Chrome har spart deg for <ph name="GIGABYTES" /> GB</translation>
 <translation id="6573096386450695060">Tillat alltid</translation>
 <translation id="6573431926118603307">Faner du har åpnet i Chrome på de andre enhetene dine, vises her.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">For å starte synkronisering, slå på «Synkroniser Chrome-dataene dine».</translation>
 <translation id="729975465115245577">Enheten din har ingen app som kan lagre passordfilen.</translation>
 <translation id="7302081693174882195">Informasjon: Sortert etter mengden data som er lagret</translation>
+<translation id="7302486331832100261">Du blokkerer vanligvis varsler. For å tillate dette trykker du på Detaljer.</translation>
 <translation id="7328017930301109123">I forenklet modus laster Chrome inn sider raskere og bruker opptil 60 prosent mindre data.</translation>
 <translation id="7333031090786104871">Holder fortsatt på å legge til det forrige nettstedet</translation>
 <translation id="7352939065658542140">VIDEO</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_or.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_or.xtb
index adc75bd..a0dfc24 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_or.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_or.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">"ଶ୍ରେଷ୍ଠ ସାଇଟ୍‍ଗୁଡ଼ିକ" ବଟନ୍ ଟାପ୍ କରି ଲୋକପ୍ରିୟ ୱେବ୍‌ସାଇଟ୍‌ଗୁଡ଼ିକ ଦେଖନ୍ତୁ</translation>
 <translation id="1173894706177603556">ରିନେମ୍ କରନ୍ତୁ</translation>
 <translation id="1178581264944972037">ବିରତି</translation>
-<translation id="118069123878619799">- ଆପଣଙ୍କର ଶାରୀରିକ ବୈଶିଷ୍ଟ୍ୟ, ଯେପରି ଉଚ୍ଚତା</translation>
 <translation id="1181037720776840403">ଅପସାରଣ</translation>
 <translation id="1188239144602654184">AR ଲେଖନ୍ତୁ</translation>
 <translation id="1197267115302279827">ବୁକ୍‍ମାର୍କଗୁଡ଼ିକ ଘୁଞ୍ଚାନ୍ତୁ</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">ଡାଉନ୍‌ଲୋଡ୍ ବିରତ ହୋଇଛି</translation>
 <translation id="1386674309198842382"><ph name="LAST_UPDATED" /> ଦିନ ପୂର୍ବେ ସକ୍ରିୟ ଥିଲା</translation>
 <translation id="1397811292916898096"><ph name="PRODUCT_NAME" /> ମାଧ୍ୟମରେ ସନ୍ଧାନ କରନ୍ତୁ</translation>
-<translation id="1404122904123200417"><ph name="WEBSITE_URL" />ରେ ଏମ୍ବେଡ୍ ହୋଇଛି:</translation>
 <translation id="1406000523432664303">“ଟ୍ରାକ୍ କରନ୍ତୁ ନାହିଁ”</translation>
 <translation id="1407135791313364759">ସବୁ ଖୋଲନ୍ତୁ</translation>
 <translation id="1409426117486808224">ଖୋଲାଥିବା ଟାବ୍‍ଗୁଡ଼ିକ ପାଇଁ ସରଳୀକୃତ ଦୃଶ୍ୟ</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" />ଟି ଆଇଟମ୍‌ ଡିଲିଟ୍‍ ହୋ‍ଇଛି</translation>
 <translation id="2536728043171574184">ଏହି ପୃଷ୍ଠାର ଏକ ଅଫ୍‌ଲାଇନ୍‌ କପି ଦେଖୁଛି</translation>
 <translation id="2537178555904266562">ପାସ୍‌ୱାର୍ଡଗୁଡ଼ିକ ସିଙ୍କ୍ କରିବା ସମୟରେ ତ୍ରୁଟି</translation>
+<translation id="2537296579376733324">କେବଳ ଏହି ସାଇଟ୍‌ରେ ସମସ୍ତ କୁକୀ ଅଛି</translation>
 <translation id="2546283357679194313">କୁକିସ୍ ଏବଂ ସାଇଟ୍ ଡାଟା</translation>
 <translation id="2567385386134582609">ଛବି</translation>
 <translation id="257088987046510401">ଥିମ୍</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">ପାସୱାର୍ଡ୍ ଲୁଚାନ୍ତୁ</translation>
 <translation id="4570913071927164677">ବିବରଣୀ</translation>
 <translation id="4572422548854449519">ପରିଚାଳିତ ଆକାଉଣ୍ଟରେ ସାଇନ୍‌ ଇନ୍‌ କରନ୍ତୁ</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# ମିନିଟ୍‌ ପୂର୍ବେ}other{#ମିନିଟ୍ ପୂର୍ବେ}}</translation>
 <translation id="4587589328781138893">ସାଇଟଗୁଡ଼ିକ</translation>
 <translation id="4594952190837476234">ଏହି ପୃଷ୍ଠା <ph name="CREATION_TIME" />ର ଅଟେ ଏବଂ ଅନ୍‌ଲାଇନ୍ ସଂସ୍କରଣ ଠାରୁ ଅଲଗା ହୋଇପାରେ।</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# ଘଣ୍ଟା ପୂର୍ବେ}other{# ଘଣ୍ଟା ପୂର୍ବେ}}</translation>
 <translation id="5810288467834065221">କପିରାଇଟ୍ <ph name="YEAR" /> Google LLC। ସର୍ବସ୍ୱତ୍ୱ ସଂରକ୍ଷିତ।</translation>
 <translation id="5817918615728894473">ପେୟାର୍ କରନ୍ତୁ</translation>
-<translation id="5819762621475381970">- ଆପଣଙ୍କ ରୁମ୍‍ର ଲେଆଉଟ୍</translation>
 <translation id="583281660410589416">ଅଜ୍ଞାତ</translation>
 <translation id="5833984609253377421">ଲିଙ୍କ ସେୟାର୍‌ କରନ୍ତୁ</translation>
 <translation id="5836192821815272682">Chrome ଅପ୍‌ଡେଟ୍ ଡାଉନ୍‌ଲୋଡ୍ ହେଉଛି…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">ସମସ୍ତ ଡାଟା ଖାଲି କରନ୍ତୁ</translation>
 <translation id="6545864417968258051">ବ୍ଲୁଟୁଥ୍ ସ୍କାନିଂ</translation>
 <translation id="6560414384669816528">Sogouରେ ସନ୍ଧାନ କରନ୍ତୁ</translation>
+<translation id="656065428026159829">ଅଧିକ ଦେଖନ୍ତୁ</translation>
 <translation id="6566259936974865419">Chrome ଆପଣଙ୍କର <ph name="GIGABYTES" /> GB ସେଭ୍ କରିଛି</translation>
 <translation id="6573096386450695060">ସର୍ବଦା ଅନୁମତି ଦିଅନ୍ତୁ</translation>
 <translation id="6573431926118603307">ଏଠାରେ ଆପଣଙ୍କର ଅନ୍ୟ ଡିଭାଇସ୍‌ର Chromeରେ ଯେଉଁ ଟାବ୍‌ ଖୋଲିଛନ୍ତି ତାହା ଦେଖାଯିବ।</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">ସିଙ୍କ ଆରମ୍ଭ କରିବାକୁ, "ଆପଣଙ୍କ Chrome ଡାଟା ସିଙ୍କ କରନ୍ତୁ"କୁ ଚାଲୁ କରନ୍ତୁ।</translation>
 <translation id="729975465115245577">ପାସ୍‌ୱର୍ଡ ଫାଇଲ୍ ଷ୍ଟୋର୍ କରିବା ପାଇଁ ଆପଣଙ୍କ ଡିଭାଇସ୍‍‍‍‍‍ରେ ଆପ୍ ନାହିଁ।</translation>
 <translation id="7302081693174882195">ବିବରଣୀ: ସେଭ୍ କରାଯାଇଥିବା ଡାଟାର ପରିଣାମ ଅନୁଯାୟୀ କ୍ରମବଦ୍ଧ କରାଯାଇଛି</translation>
+<translation id="7302486331832100261">ଆପଣ ସାଧାରଣତଃ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ବ୍ଲକ୍ କରନ୍ତି। ଅନୁମତି ଦେବା ପାଇଁ, ବିବରଣୀରେ ଟାପ୍ କରନ୍ତୁ।</translation>
 <translation id="7328017930301109123">ଲାଇଟ୍ ମୋଡ୍‌ରେ, Chrome ପୃଷ୍ଠାଗୁଡ଼ିକୁ ଦ୍ରୁତତର ଭାବରେ ଲୋଡ୍ କରେ ଏବଂ 60 ପ୍ରତିଶତ ପର୍ଯ୍ୟନ୍ତ କମ୍ ଡାଟା ବ୍ୟବହାର କରେ।</translation>
 <translation id="7333031090786104871">ପୂର୍ବର ସାଇଟ୍‍ ଏବେ ମଧ୍ୟ ଯୋଗ କରୁଛି</translation>
 <translation id="7352939065658542140">ଭିଡିଓ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pa.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pa.xtb
index 852b917..df5e623 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pa.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pa.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">"ਪ੍ਰਮੁੱਖ ਸਾਈਟਾਂ" ਬਟਨ 'ਤੇ ਟੈਪ ਕਰਕੇ ਪ੍ਰਸਿੱਧ ਵੈੱਬਸਾਈਟਾਂ ਦੇਖੋ</translation>
 <translation id="1173894706177603556">ਮੁੜ-ਨਾਮਕਰਨ ਕਰੋ</translation>
 <translation id="1178581264944972037">ਰੋਕੋ</translation>
-<translation id="118069123878619799">- ਤੁਹਾਡੀਆਂ ਸਰੀਰਕ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ, ਜਿਵੇਂ ਕਿ ਲੰਬਾਈ</translation>
 <translation id="1181037720776840403">ਹਟਾਓ</translation>
 <translation id="1188239144602654184">AR ਵਿੱਚ ਦਾਖਲ ਹੋਵੋ</translation>
 <translation id="1197267115302279827">ਬੁੱਕਮਾਰਕਾਂ ਨੂੰ ਮੂਵ ਕਰੋ</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">ਡਾਊਨਲੋਡ ਰੋਕਿਆ ਗਿਆ</translation>
 <translation id="1386674309198842382"><ph name="LAST_UPDATED" /> ਦਿਨ ਪਹਿਲਾਂ ਕਿਰਿਆਸ਼ੀਲ</translation>
 <translation id="1397811292916898096"><ph name="PRODUCT_NAME" /> ਨਾਲ ਖੋਜੋ</translation>
-<translation id="1404122904123200417"><ph name="WEBSITE_URL" /> ਵਿੱਚ ਜੋੜਿਆ</translation>
 <translation id="1406000523432664303">‘ਟਰੈਕ ਨਾ ਕਰੋ’</translation>
 <translation id="1407135791313364759">ਸਾਰੇ ਖੋਲ੍ਹੋ</translation>
 <translation id="1409426117486808224">ਖੁੱਲ੍ਹੀਆਂ ਟੈਬਾਂ ਲਈ ਸਰਲੀਕਿਰਤ ਦ੍ਰਿਸ਼</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> ਆਈਟਮਾਂ ਮਿਟਾਈਆਂ ਗਈਆਂ</translation>
 <translation id="2536728043171574184">ਇਸ ਪੰਨੇ ਦੀ ਇੱਕ ਆਫ਼ਲਾਈਨ ਕਾਪੀ ਦੇਖ ਰਿਹਾ ਹੈ</translation>
 <translation id="2537178555904266562">ਪਾਸਵਰਡਾਂ ਦੇ ਸਮਕਾਲੀਕਰਨ ਕਰਨ ਦੌਰਾਨ ਗੜਬੜ ਹੋਈ</translation>
+<translation id="2537296579376733324">ਸਾਰੀਆਂ ਕੁਕੀਜ਼, ਸਿਰਫ਼ ਇਸ ਸਾਈਟ 'ਤੇ</translation>
 <translation id="2546283357679194313">ਕੁਕੀਜ਼ ਅਤੇ ਸਾਈਟ ਡਾਟਾ</translation>
 <translation id="2567385386134582609">ਇਮੇਜ</translation>
 <translation id="257088987046510401">ਵਿਸ਼ੇ</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">ਪਾਸਵਰਡ ਲੁਕਾਓ</translation>
 <translation id="4570913071927164677">ਵੇਰਵੇ</translation>
 <translation id="4572422548854449519">ਪ੍ਰਬੰਧਿਤ ਕੀਤੇ ਖਾਤੇ ਵਿੱਚ ਸਾਈਨ-ਇਨ ਕਰੋ</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# ਮਿੰਟ ਪਹਿਲਾਂ}one{# ਮਿੰਟ ਪਹਿਲਾਂ}other{# ਮਿੰਟ ਪਹਿਲਾਂ}}</translation>
 <translation id="4587589328781138893">ਸਾਈਟਾਂ</translation>
 <translation id="4594952190837476234">ਇਹ ਆਫ਼ਲਾਈਨ ਪੰਨਾ <ph name="CREATION_TIME" /> ਦਾ ਹੈ ਅਤੇ ਆਨਲਾਈਨ ਵਰਜਨ ਤੋਂ ਵੱਖਰਾ ਹੋ ਸਕਦਾ ਹੈ।</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# ਘੰਟਾ ਪਹਿਲਾਂ}one{# ਘੰਟੇ ਪਹਿਲਾਂ}other{# ਘੰਟੇ ਪਹਿਲਾਂ}}</translation>
 <translation id="5810288467834065221">ਕਾਪੀਰਾਈਟ <ph name="YEAR" /> Google LLC. ਸਾਰੇ ਹੱਕ ਰਾਖਵੇਂ ਹਨ।</translation>
 <translation id="5817918615728894473">ਜੋੜਾ</translation>
-<translation id="5819762621475381970">- ਤੁਹਾਡੇ ਕਮਰੇ ਦਾ ਖਾਕਾ</translation>
 <translation id="583281660410589416">ਅਗਿਆਤ</translation>
 <translation id="5833984609253377421">ਲਿੰਕ ਸਾਂਝਾ ਕਰੋ</translation>
 <translation id="5836192821815272682">Chrome ਅੱਪਡੇਟ ਡਾਊਨਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb
index 0d71275..1f0df26 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pl.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Zobacz najpopularniejsze strony, klikając przycisk „Popularne”</translation>
 <translation id="1173894706177603556">Zmień nazwę</translation>
 <translation id="1178581264944972037">Wstrzymaj</translation>
-<translation id="118069123878619799">– Twoje cechy fizyczne, np wzrost;</translation>
 <translation id="1181037720776840403">Usuń</translation>
 <translation id="1188239144602654184">Włącz AR</translation>
 <translation id="1197267115302279827">Przenieś zakładki</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Pobieranie wstrzymane</translation>
 <translation id="1386674309198842382">Aktywność <ph name="LAST_UPDATED" /> dni temu</translation>
 <translation id="1397811292916898096">Szukaj w <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Umieszczone na <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">„Bez śledzenia”</translation>
 <translation id="1407135791313364759">Otwórz wszystkie</translation>
 <translation id="1409426117486808224">Uproszczony widok otwartych kart</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547">Usunięte elementy: <ph name="NUMBER_OF_ITEMS" /></translation>
 <translation id="2536728043171574184">Oglądasz kopię offline tej strony</translation>
 <translation id="2537178555904266562">Błąd podczas synchronizowania haseł</translation>
+<translation id="2537296579376733324">Wszystkie pliki cookie, tylko w tej witrynie</translation>
 <translation id="2546283357679194313">Pliki cookie i dane stron</translation>
 <translation id="2567385386134582609">OBRAZ</translation>
 <translation id="257088987046510401">Motywy</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Ukryj hasło</translation>
 <translation id="4570913071927164677">Szczegóły</translation>
 <translation id="4572422548854449519">Zaloguj się na konto zarządzane</translation>
+<translation id="4574741712540401491">• <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# minutę temu}few{# minuty temu}many{# minut temu}other{# minuty temu}}</translation>
 <translation id="4587589328781138893">Witryny</translation>
 <translation id="4594952190837476234">Ta strona offline jest z <ph name="CREATION_TIME" /> i może różnić się od wersji online.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# godzinę temu}few{# godziny temu}many{# godzin temu}other{# godziny temu}}</translation>
 <translation id="5810288467834065221">Copyright <ph name="YEAR" /> Google LLC. Wszelkie prawa zastrzeżone.</translation>
 <translation id="5817918615728894473">Sparuj</translation>
-<translation id="5819762621475381970">– układ Twojego pokoju.</translation>
 <translation id="583281660410589416">Nieznany</translation>
 <translation id="5833984609253377421">Udostępnij link</translation>
 <translation id="5836192821815272682">Pobieram aktualizację Chrome…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Wyczyść wszystkie dane</translation>
 <translation id="6545864417968258051">Skanowanie Bluetooth</translation>
 <translation id="6560414384669816528">Szukaj w Sogou</translation>
+<translation id="656065428026159829">Pokaż więcej</translation>
 <translation id="6566259936974865419">Chrome pozwolił Ci zaoszczędzić <ph name="GIGABYTES" /> GB</translation>
 <translation id="6573096386450695060">Zawsze zezwalaj</translation>
 <translation id="6573431926118603307">Tutaj wyświetlą się karty otwarte w Chrome na innych urządzeniach.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Aby rozpocząć synchronizację, włącz „Synchronizuj dane Chrome”.</translation>
 <translation id="729975465115245577">Na urządzeniu nie ma aplikacji umożliwiającej zapisanie pliku z hasłami.</translation>
 <translation id="7302081693174882195">Szczegóły: posortowane według zaoszczędzonych danych</translation>
+<translation id="7302486331832100261">Zazwyczaj blokujesz powiadomienia. Aby na nie zezwolić, kliknij Szczegóły.</translation>
 <translation id="7328017930301109123">Chrome szybciej ładuje strony w wersji uproszczonej, przesyłając nawet o 60 procent mniej danych.</translation>
 <translation id="7333031090786104871">Nadal dodaję poprzednią stronę</translation>
 <translation id="7352939065658542140">FILM</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb
index e316783..9b2cd13 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-BR.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Toque no botão "Sites famosos" para ver os sites muito acessados</translation>
 <translation id="1173894706177603556">Renomear</translation>
 <translation id="1178581264944972037">Pausar</translation>
-<translation id="118069123878619799">- suas características físicas, como altura;</translation>
 <translation id="1181037720776840403">Remover</translation>
 <translation id="1188239144602654184">Entrar na RA</translation>
 <translation id="1197267115302279827">Mover favoritos</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Download pausado</translation>
 <translation id="1386674309198842382">Ativado há <ph name="LAST_UPDATED" /> dias</translation>
 <translation id="1397811292916898096">Pesquisar com o <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Incorporado em <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">"Não rastrear"</translation>
 <translation id="1407135791313364759">Abrir todas</translation>
 <translation id="1409426117486808224">Versão simplificada das guias abertas</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547">Itens excluídos: <ph name="NUMBER_OF_ITEMS" /></translation>
 <translation id="2536728043171574184">Vendo uma cópia off-line desta página</translation>
 <translation id="2537178555904266562">Erro ao sincronizar senhas</translation>
+<translation id="2537296579376733324">Todos os cookies, apenas neste site</translation>
 <translation id="2546283357679194313">Cookies e dados do site</translation>
 <translation id="2567385386134582609">IMAGEM</translation>
 <translation id="257088987046510401">Temas</translation>
@@ -473,6 +472,7 @@
 <translation id="4565377596337484307">Ocultar senha</translation>
 <translation id="4570913071927164677">Detalhes</translation>
 <translation id="4572422548854449519">Fazer login em conta gerenciada</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# minuto atrás}one{# minutos atrás}other{# minutos atrás}}</translation>
 <translation id="4587589328781138893">Sites</translation>
 <translation id="4594952190837476234">Esta página off-line é de <ph name="CREATION_TIME" /> e pode ser diferente da versão on-line.</translation>
@@ -653,7 +653,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# hora atrás}one{# horas atrás}other{# horas atrás}}</translation>
 <translation id="5810288467834065221">Copyright <ph name="YEAR" /> Google LLC. Todos os direitos reservados.</translation>
 <translation id="5817918615728894473">Parear</translation>
-<translation id="5819762621475381970">- o layout do ambiente.</translation>
 <translation id="583281660410589416">Desconhecido</translation>
 <translation id="5833984609253377421">Compartilhar link</translation>
 <translation id="5836192821815272682">Fazendo o download da atualização do Chrome…</translation>
@@ -754,6 +753,7 @@
 <translation id="6545017243486555795">Limpar todos os dados</translation>
 <translation id="6545864417968258051">Verificação de Bluetooth</translation>
 <translation id="6560414384669816528">Pesquisar usando o Sogou</translation>
+<translation id="656065428026159829">Ver mais</translation>
 <translation id="6566259936974865419">O Chrome economizou <ph name="GIGABYTES" /> GB</translation>
 <translation id="6573096386450695060">Sempre permitir</translation>
 <translation id="6573431926118603307">As guias que você abriu no Chrome nos seus outros dispositivos serão exibidas aqui.</translation>
@@ -850,6 +850,7 @@
 <translation id="7293171162284876153">Para iniciar a sincronização, ative a opção "Sincronizar seus dados do Chrome".</translation>
 <translation id="729975465115245577">Seu dispositivo não tem um app para armazenar o arquivo de senhas.</translation>
 <translation id="7302081693174882195">Detalhes: classificados pela quantidade de dados economizados</translation>
+<translation id="7302486331832100261">Você geralmente bloqueia notificações. Para permitir, toque em "Detalhes".</translation>
 <translation id="7328017930301109123">Com o Modo Lite, as páginas são carregadas mais rapidamente no Chrome, e há uma economia de dados de até 60 por cento.</translation>
 <translation id="7333031090786104871">Ainda adicionando o site anterior</translation>
 <translation id="7352939065658542140">VÍDEO</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb
index 8b1fe457..4ab75a8 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_pt-PT.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Veja Websites populares ao tocar no botão "Principais sites"</translation>
 <translation id="1173894706177603556">Mudar nome</translation>
 <translation id="1178581264944972037">Pausa</translation>
-<translation id="118069123878619799">- As suas caraterísticas físicas, como a altura</translation>
 <translation id="1181037720776840403">Remover</translation>
 <translation id="1188239144602654184">Aceder à realidade aumentada</translation>
 <translation id="1197267115302279827">Mover marcadores</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Transferência interrompida</translation>
 <translation id="1386674309198842382">Ativo há <ph name="LAST_UPDATED" /> dias</translation>
 <translation id="1397811292916898096">Pesquisar com o <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Incorporado em <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">"Não monitorizar"</translation>
 <translation id="1407135791313364759">Abrir tudo</translation>
 <translation id="1409426117486808224">Vista simplificada dos separadores abertos</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> itens eliminados</translation>
 <translation id="2536728043171574184">Visualização de uma cópia offline desta página</translation>
 <translation id="2537178555904266562">Erro ao sincronizar as palavras-passe.</translation>
+<translation id="2537296579376733324">Todos os cookies, apenas neste site</translation>
 <translation id="2546283357679194313">Cookies e dados de Web sites</translation>
 <translation id="2567385386134582609">IMAGEM</translation>
 <translation id="257088987046510401">Temas</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Ocultar palavra-passe</translation>
 <translation id="4570913071927164677">Detalhes</translation>
 <translation id="4572422548854449519">Iniciar sessão na conta gerida</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{Há # minuto}other{Há # minutos}}</translation>
 <translation id="4587589328781138893">Sites</translation>
 <translation id="4594952190837476234">Esta página foi criada a <ph name="CREATION_TIME" /> e pode ser diferente da versão online.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{Há # hora}other{Há # horas}}</translation>
 <translation id="5810288467834065221">Copyright <ph name="YEAR" /> Google LLC. Todos os direitos reservados.</translation>
 <translation id="5817918615728894473">Sincronizar</translation>
-<translation id="5819762621475381970">- A disposição da divisão</translation>
 <translation id="583281660410589416">Desconhecido</translation>
 <translation id="5833984609253377421">Partilhar link</translation>
 <translation id="5836192821815272682">A transferir a atualização do Chrome…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Limpar todos os dados</translation>
 <translation id="6545864417968258051">Procura de Bluetooth</translation>
 <translation id="6560414384669816528">Pesquisar com o Sogou</translation>
+<translation id="656065428026159829">Ver mais</translation>
 <translation id="6566259936974865419">O Chrome permitiu-lhe poupar <ph name="GIGABYTES" /> GB</translation>
 <translation id="6573096386450695060">Permitir sempre</translation>
 <translation id="6573431926118603307">Os separadores que abriu no Chrome nos seus outros dispositivos são apresentados aqui.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Para iniciar a sincronização, ative a opção "Sincronizar dados do Chrome".</translation>
 <translation id="729975465115245577">O dispositivo não tem uma aplicação para armazenar o ficheiro de palavras-passe.</translation>
 <translation id="7302081693174882195">Detalhes: ordenado por quantidade de dados guardados</translation>
+<translation id="7302486331832100261">Normalmente, bloqueia as notificações. Para permitir, toque em Detalhes.</translation>
 <translation id="7328017930301109123">No Modo Lite, o Chrome carrega páginas mais rapidamente e utiliza até menos 60 por cento de dados.</translation>
 <translation id="7333031090786104871">Ainda a adicionar o site anterior…</translation>
 <translation id="7352939065658542140">VÍDEO</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb
index efd916b..7ce166f 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ro.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Vezi site-uri populare atingând butonul „Site-uri de top”</translation>
 <translation id="1173894706177603556">Redenumește</translation>
 <translation id="1178581264944972037">Întrerupe</translation>
-<translation id="118069123878619799">- trăsăturile tale fizice, cum ar fi înălțimea;</translation>
 <translation id="1181037720776840403">Elimină</translation>
 <translation id="1188239144602654184">Intră în RA</translation>
 <translation id="1197267115302279827">Mută marcaje</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Descărcare întreruptă</translation>
 <translation id="1386674309198842382">Activ acum <ph name="LAST_UPDATED" /> zile</translation>
 <translation id="1397811292916898096">Caută folosind <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Încorporat în <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">„Nu urmări”</translation>
 <translation id="1407135791313364759">Deschideți-le pe toate</translation>
 <translation id="1409426117486808224">Afișare simplificată pentru filele deschise</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547">Elemente șterse: <ph name="NUMBER_OF_ITEMS" /></translation>
 <translation id="2536728043171574184">Se afișează o versiune offline a acestei pagini</translation>
 <translation id="2537178555904266562">Eroare la sincronizarea parolelor</translation>
+<translation id="2537296579376733324">Toate cookie-urile, doar pe acest site</translation>
 <translation id="2546283357679194313">Cookie-uri și date privind site-ul</translation>
 <translation id="2567385386134582609">IMAGINE</translation>
 <translation id="257088987046510401">Teme</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Ascunde parola</translation>
 <translation id="4570913071927164677">Detalii</translation>
 <translation id="4572422548854449519">Conectează-te la contul gestionat</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{Acum # minut}few{Acum # minute}other{Acum # de minute}}</translation>
 <translation id="4587589328781138893">Site-uri</translation>
 <translation id="4594952190837476234">Această pagină offline este din data de <ph name="CREATION_TIME" /> și poate fi diferită de versiunea online.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{Acum # oră}few{Acum # ore}other{Acum # de ore}}</translation>
 <translation id="5810288467834065221">Drept de autor <ph name="YEAR" /> Google LLC. Toate drepturile rezervate.</translation>
 <translation id="5817918615728894473">Asociază</translation>
-<translation id="5819762621475381970">- aspectul camerei în care te afli;</translation>
 <translation id="583281660410589416">Necunoscut</translation>
 <translation id="5833984609253377421">Trimite linkul</translation>
 <translation id="5836192821815272682">Se descarcă actualizarea Chrome…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Șterge toate datele</translation>
 <translation id="6545864417968258051">Căutare Bluetooth</translation>
 <translation id="6560414384669816528">Caută cu Sogou</translation>
+<translation id="656065428026159829">Vezi mai multe</translation>
 <translation id="6566259936974865419">Chrome a economisit <ph name="GIGABYTES" /> GB</translation>
 <translation id="6573096386450695060">Permite întotdeauna</translation>
 <translation id="6573431926118603307">Filele deschise în Chrome pe alte dispozitive vor apărea aici.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Pentru a porni sincronizarea, activează „Sincronizează datele din Chrome”.</translation>
 <translation id="729975465115245577">Dispozitivul nu are o aplicație pentru stocarea fișierului parolelor.</translation>
 <translation id="7302081693174882195">Detalii: sortate după volumul de date salvate</translation>
+<translation id="7302486331832100261">De obicei blochezi notificările. Ca să le permiți, atinge Detalii.</translation>
 <translation id="7328017930301109123">În modul Lite, Chrome încarcă mai repede paginile și folosește cu până la 60 de procente mai puține date.</translation>
 <translation id="7333031090786104871">Încă se adaugă site-ul anterior</translation>
 <translation id="7352939065658542140">VIDEOCLIP</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb
index 5ea7539..2a2ad11 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ru.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Чтобы перейти к списку популярных сайтов, нажмите кнопку "Топ сайтов"</translation>
 <translation id="1173894706177603556">Переименовать</translation>
 <translation id="1178581264944972037">Пауза</translation>
-<translation id="118069123878619799">– получить представление о параметрах вашего тела, например о росте;</translation>
 <translation id="1181037720776840403">Удалить</translation>
 <translation id="1188239144602654184">Начать</translation>
 <translation id="1197267115302279827">Переместить закладки</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Скачивание приостановлено.</translation>
 <translation id="1386674309198842382">Последние действия: <ph name="LAST_UPDATED" /> дн. назад</translation>
 <translation id="1397811292916898096">Поиск в <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Встроено в <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">Запрет отслеживания</translation>
 <translation id="1407135791313364759">Открыть все</translation>
 <translation id="1409426117486808224">Упрощенный просмотр открытых вкладок</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547">Удалено записей: <ph name="NUMBER_OF_ITEMS" /></translation>
 <translation id="2536728043171574184">Офлайн-копия страницы</translation>
 <translation id="2537178555904266562">Не удалось синхронизировать пароли.</translation>
+<translation id="2537296579376733324">Все файлы cookie только на этом сайте</translation>
 <translation id="2546283357679194313">Файлы сookie и данные сайтов</translation>
 <translation id="2567385386134582609">ИЗОБРАЖЕНИЕ</translation>
 <translation id="257088987046510401">Темы</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Скрыть пароль</translation>
 <translation id="4570913071927164677">Подробнее…</translation>
 <translation id="4572422548854449519">Войдите в управляемый аккаунт</translation>
+<translation id="4574741712540401491">• <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# минуту назад}one{# минуту назад}few{# минуты назад}many{# минут назад}other{# минуты назад}}</translation>
 <translation id="4587589328781138893">Сайты</translation>
 <translation id="4594952190837476234">Офлайн-версия страницы сохранена <ph name="CREATION_TIME" />. Она может отличаться от онлайн-версии.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# час назад}one{# час назад}few{# часа назад}many{# часов назад}other{# часа назад}}</translation>
 <translation id="5810288467834065221">© Google LLC, <ph name="YEAR" />. Все права защищены.</translation>
 <translation id="5817918615728894473">Подключить</translation>
-<translation id="5819762621475381970">– узнать планировку комнаты, в которой вы находитесь.</translation>
 <translation id="583281660410589416">Неизвестно</translation>
 <translation id="5833984609253377421">Отправить ссылку</translation>
 <translation id="5836192821815272682">Скачивание обновлений для Chrome…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Удалить все данные</translation>
 <translation id="6545864417968258051">Поиск Bluetooth-устройств</translation>
 <translation id="6560414384669816528">Поиск в Sogou</translation>
+<translation id="656065428026159829">Ещё</translation>
 <translation id="6566259936974865419">Благодаря Chrome вы сэкономили <ph name="GIGABYTES" /> ГБ свободного места</translation>
 <translation id="6573096386450695060">Разрешать всегда</translation>
 <translation id="6573431926118603307">Здесь появятся вкладки, открытые в Chrome на других устройствах.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Чтобы начать ее, нажмите "Синхронизировать данные Chrome".</translation>
 <translation id="729975465115245577">На устройстве не установлено приложение для хранения файлов паролей.</translation>
 <translation id="7302081693174882195">Сортировка по объему сэкономленного трафика</translation>
+<translation id="7302486331832100261">Обычно вы блокируете уведомления. Чтобы разрешить их показ, нажмите "Подробнее".</translation>
 <translation id="7328017930301109123">В упрощенном режиме Chrome быстрее загружает страницы и экономит до 60 процентов трафика.</translation>
 <translation id="7333031090786104871">Предыдущий сайт ещё не добавлен</translation>
 <translation id="7352939065658542140">ВИДЕО</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_si.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_si.xtb
index 9b27945..e68c9067b 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_si.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_si.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">"ඉහළම වෙබ් අඩවි" බොත්තමට තට්ටු කිරීමෙන් ජනප්‍රිය වෙබ් අඩවි බලන්න</translation>
 <translation id="1173894706177603556">ප්‍රතිනම්</translation>
 <translation id="1178581264944972037">විරාමය</translation>
-<translation id="118069123878619799">- උස වැනි ඔබේ ශාරීරික ලක්‍ෂණ</translation>
 <translation id="1181037720776840403">ඉවත් කරන්න</translation>
 <translation id="1188239144602654184">AR ඇතුළත් කරන්න</translation>
 <translation id="1197267115302279827">පිටුසන් ගෙන යන්න</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">බාගැනීම විරාමයි</translation>
 <translation id="1386674309198842382">දින <ph name="LAST_UPDATED" /> කට පෙර ක්‍රියාත්මකයි</translation>
 <translation id="1397811292916898096"><ph name="PRODUCT_NAME" /> සමඟ සොයන්න</translation>
-<translation id="1404122904123200417"><ph name="WEBSITE_URL" /> හි කාවද්දන්න</translation>
 <translation id="1406000523432664303">“හඹා නොයන්න”</translation>
 <translation id="1407135791313364759">සියල්ල විවෘත කරන්න</translation>
 <translation id="1409426117486808224">විවෘත ටැබ් සඳහා සරල දසුනක්</translation>
@@ -88,7 +86,7 @@
 <translation id="1620510694547887537">කැමරාව</translation>
 <translation id="1623104350909869708">මෙම පිටුව අමතර දෙබස්කවුළු සෑදීම වළක්වන්න</translation>
 <translation id="1628019612362412531">{NUM_SELECTED,plural, =1{තෝරාගත් අයිතම 1ක් ඉවත් කරන්න}one{තෝරාගත් අයිතම #ක් ඉවත් කරන්න}other{තෝරාගත් අයිතම #ක් ඉවත් කරන්න}}</translation>
-<translation id="164269334534774161">ඔබ <ph name="CREATION_TIME" /> වෙතින් මෙම පිටුසනෙහි නොබැඳි පිටපතක් බලමින්</translation>
+<translation id="164269334534774161">ඔබ <ph name="CREATION_TIME" /> වෙතින් මෙම පිටුසනෙහි නොබැඳි පිටපතක් බලමින්</translation>
 <translation id="1644574205037202324">ඉතිහාසය</translation>
 <translation id="1647391597548383849">ඔබේ කැමරාව වෙත ප්‍රවේශ වන්න</translation>
 <translation id="1660204651932907780">අඩවිවලට ශබ්දය වාදනය කිරීමට ඉඩ දෙන්න (නිර්දේශිතයි)</translation>
@@ -213,8 +211,9 @@
 <translation id="2523184218357549926">Google වෙත ඔබ පිවිසෙන පිටු URL යවයි</translation>
 <translation id="2532336938189706096">ජාල දර්ශනය</translation>
 <translation id="2534155362429831547">අයිතම <ph name="NUMBER_OF_ITEMS" />ක් මකන ලදි</translation>
-<translation id="2536728043171574184">මෙම පිටුවෙහි නොබැඳි පිටපතක් බලමින්</translation>
+<translation id="2536728043171574184">මෙම පිටුවෙහි නොබැඳි පිටපතක් බලමින්</translation>
 <translation id="2537178555904266562">මුරපද සමමුහු කිරීමේ දෝෂයකි</translation>
+<translation id="2537296579376733324">කුකී සියල්ල, මේ වෙබ් අඩවියේ පමණයි</translation>
 <translation id="2546283357679194313">කුකීස් සහ අඩවි දත්ත</translation>
 <translation id="2567385386134582609">රූපය</translation>
 <translation id="257088987046510401">තේමා</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">මුරපදය සඟවන්න</translation>
 <translation id="4570913071927164677">විස්තර</translation>
 <translation id="4572422548854449519">කළමනාකරණය කරන ලද ගිණුමට පිරීම</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{මිනිත්තු #කට පෙර}one{මිනිත්තු #කට පෙර}other{මිනිත්තු #කට පෙර}}</translation>
 <translation id="4587589328781138893">අඩවි</translation>
 <translation id="4594952190837476234">මෙම නොබැඳි පිටුව <ph name="CREATION_TIME" /> වෙතින් වන අතර සබැඳි අනුවාදයෙන් වෙනස් විය හැකිය.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{පැය #කට පෙර}one{පැය #කට පෙර}other{පැය #කට පෙර}}</translation>
 <translation id="5810288467834065221">ප්‍රකාශන හිමිකම <ph name="YEAR" /> Google LLC. සියලුම හිමිකම් ඇවිරිණි.</translation>
 <translation id="5817918615728894473">යුගල කරන්න</translation>
-<translation id="5819762621475381970">- ඔබේ කාමරයේ වින්‍යාසය</translation>
 <translation id="583281660410589416">නොදනී</translation>
 <translation id="5833984609253377421">සබැඳිය බෙදා ගන්න</translation>
 <translation id="5836192821815272682">Chrome යාවත්කාලීනය බාගැනීම…</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb
index 21f119f..45f55c7 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sk.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Klepnutím na tlačidlo Hlavné weby zobrazíte obľúbené webové stránky</translation>
 <translation id="1173894706177603556">Premenovať</translation>
 <translation id="1178581264944972037">Pozastaviť</translation>
-<translation id="118069123878619799">– vašich fyzických vlastnostiach, napríklad výške</translation>
 <translation id="1181037720776840403">Odstrániť</translation>
 <translation id="1188239144602654184">Spustiť VR</translation>
 <translation id="1197267115302279827">Presunúť záložky</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Sťahovanie bolo pozastavené</translation>
 <translation id="1386674309198842382">Aktívne pred <ph name="LAST_UPDATED" /> dňami</translation>
 <translation id="1397811292916898096">Hľadať pomocou vyhľadávača <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Vložené na webe <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">Nesledovať</translation>
 <translation id="1407135791313364759">Otvoriť všetko</translation>
 <translation id="1409426117486808224">Jednoduché zobrazenie otvorených kariet</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547">Odstránené položky: <ph name="NUMBER_OF_ITEMS" /></translation>
 <translation id="2536728043171574184">Zobrazuje sa offline kópia tejto stránky</translation>
 <translation id="2537178555904266562">Chyba pri synchronizovaní hesiel</translation>
+<translation id="2537296579376733324">Všetky súbory cookie, iba na tomto webe</translation>
 <translation id="2546283357679194313">Súbory cookie a dáta webov</translation>
 <translation id="2567385386134582609">OBRÁZOK</translation>
 <translation id="257088987046510401">Motívy</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Skryť heslo</translation>
 <translation id="4570913071927164677">Podrobnosti</translation>
 <translation id="4572422548854449519">Prihlásenie do spravovaného účtu</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{pred # minútou}few{pred # minútami}many{pred # minútou}other{pred # minútami}}</translation>
 <translation id="4587589328781138893">Weby</translation>
 <translation id="4594952190837476234">Táto offline stránka je z <ph name="CREATION_TIME" /> a líši sa od online verzie.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{pred # hodinou}few{pred # hodinami}many{pred # hodinou}other{pred # hodinami}}</translation>
 <translation id="5810288467834065221">Copyright <ph name="YEAR" /> Google LLC. Všetky práva vyhradené.</translation>
 <translation id="5817918615728894473">Párovať</translation>
-<translation id="5819762621475381970">– rozložení vašej miestnosti</translation>
 <translation id="583281660410589416">Neznáme</translation>
 <translation id="5833984609253377421">Zdieľať odkaz</translation>
 <translation id="5836192821815272682">Sťahuje sa aktualizácia Chromu…</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb
index 4c5c090..fac9f8b 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sl.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Oglejte si priljubljena spletna mesta z dotikom gumba »Najb. prilj.«</translation>
 <translation id="1173894706177603556">Preimenuj</translation>
 <translation id="1178581264944972037">Prekini</translation>
-<translation id="118069123878619799">– vaše fizične poteze, na primer višina,</translation>
 <translation id="1181037720776840403">Odstrani</translation>
 <translation id="1188239144602654184">Začni RR</translation>
 <translation id="1197267115302279827">Premakni zavihke</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Prenos je zaustavljen</translation>
 <translation id="1386674309198842382">Aktivna pred toliko dnevi: <ph name="LAST_UPDATED" /></translation>
 <translation id="1397811292916898096">Iskanje z iskalnikom <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Vdelano v URL <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">»Ne sledi«</translation>
 <translation id="1407135791313364759">Odpri vse</translation>
 <translation id="1409426117486808224">Poenostavljen pogled za odprte zavihke</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547">Št. izbrisanih elementov: <ph name="NUMBER_OF_ITEMS" /></translation>
 <translation id="2536728043171574184">Ogled kopije te strani za način brez povezave.</translation>
 <translation id="2537178555904266562">Napaka pri sinhronizaciji gesel</translation>
+<translation id="2537296579376733324">Vsi piškotki, samo na tem spletnem mestu</translation>
 <translation id="2546283357679194313">Piškotki in podatki o spletnih mestih</translation>
 <translation id="2567385386134582609">SLIKA</translation>
 <translation id="257088987046510401">Teme</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Skrij geslo</translation>
 <translation id="4570913071927164677">Podrobnosti</translation>
 <translation id="4572422548854449519">Prijava v upravljani račun</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{Pred # minuto}one{Pred # minuto}two{Pred # minutama}few{Pred # minutami}other{Pred # minutami}}</translation>
 <translation id="4587589328781138893">Spletna mesta</translation>
 <translation id="4594952190837476234">Ta stran brez povezave je bila ustvarjena <ph name="CREATION_TIME" /> in se morda razlikuje od spletne različice.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{Pred # uro}one{Pred # uro}two{Pred # urama}few{Pred # urami}other{Pred # urami}}</translation>
 <translation id="5810288467834065221">Copyright <ph name="YEAR" /> Google LLC. Vse pravice pridržane.</translation>
 <translation id="5817918615728894473">Seznani</translation>
-<translation id="5819762621475381970">– tloris sobe.</translation>
 <translation id="583281660410589416">Neznano</translation>
 <translation id="5833984609253377421">Deli povezavo z drugimi</translation>
 <translation id="5836192821815272682">Prenašanje posodobitve za Chrome …</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Izbris vseh podatkov</translation>
 <translation id="6545864417968258051">Iskanje naprav Bluetooth</translation>
 <translation id="6560414384669816528">Iskanje z iskalnikom Sogou</translation>
+<translation id="656065428026159829">Prikaži več</translation>
 <translation id="6566259936974865419">S Chromom ste prihranili <ph name="GIGABYTES" /> GB</translation>
 <translation id="6573096386450695060">Vedno dovoli</translation>
 <translation id="6573431926118603307">Zavihki, ki ste jih odprli v Chromu v drugih napravah, bodo prikazani tukaj.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Če želite začeti sinhronizacijo, vklopite »Sinhronizacija podatkov v Chromu«.</translation>
 <translation id="729975465115245577">V napravi ni aplikacije za shranjevanje datoteke z gesli.</translation>
 <translation id="7302081693174882195">Podrobnosti: razvrščeno po količini prihranjenih podatkov</translation>
+<translation id="7302486331832100261">Obvestila običajno blokirate. Če želite to omogočiti, se dotaknite Podrobnosti.</translation>
 <translation id="7328017930301109123">Chrome v lahkem načinu naloži strani hitreje in uporabi do 60 odstotkov manj podatkov.</translation>
 <translation id="7333031090786104871">Dodajanje prejšnjega spletnega mesta še vedno poteka</translation>
 <translation id="7352939065658542140">VIDEOPOSNETEK</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sq.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sq.xtb
index af0d766..7e54b03 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sq.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sq.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Shiko sajte uebi të mirënjohura duke trokitur te butoni "Sajtet kryesore"</translation>
 <translation id="1173894706177603556">Riemërto</translation>
 <translation id="1178581264944972037">Pauzë</translation>
-<translation id="118069123878619799">- karakteristikat e tua fizike, si gjatësia</translation>
 <translation id="1181037720776840403">Hiq</translation>
 <translation id="1188239144602654184">Hyr në AR</translation>
 <translation id="1197267115302279827">Zhvendos faqeshënuesit</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Shkarkimi u ndërpre</translation>
 <translation id="1386674309198842382">Aktiv <ph name="LAST_UPDATED" /> ditë më parë</translation>
 <translation id="1397811292916898096">Kërko me <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Integruar në <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">"Mos gjurmo"</translation>
 <translation id="1407135791313364759">Hapi të gjitha</translation>
 <translation id="1409426117486808224">Pamje e thjeshtuar për skedat e hapura</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> artikuj të fshirë</translation>
 <translation id="2536728043171574184">Po shikon një kopje jashtë linje të kësaj faqeje</translation>
 <translation id="2537178555904266562">Gabim gjatë sinkronizimit të fjalëkalimeve</translation>
+<translation id="2537296579376733324">Të gjitha kukit, vetëm në këtë sajt</translation>
 <translation id="2546283357679194313">Kukit dhe të dhënat e faqes</translation>
 <translation id="2567385386134582609">IMAZHI</translation>
 <translation id="257088987046510401">Temat</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Fshih fjalëkalimin</translation>
 <translation id="4570913071927164677">Detajet</translation>
 <translation id="4572422548854449519">Identifikohu në llogarinë e menaxhuar</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# minutë më parë}other{# minuta më parë}}</translation>
 <translation id="4587589328781138893">Sajtet</translation>
 <translation id="4594952190837476234">Kjo faqe jashtë linje është nga <ph name="CREATION_TIME" /> dhe mund të ndryshojë nga versioni në linjë.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# orë më parë}other{# orë më parë}}</translation>
 <translation id="5810288467834065221">Të drejtat e autorit <ph name="YEAR" /> Google LLC. Të gjitha të drejtat e rezervuara.</translation>
 <translation id="5817918615728894473">Çifto</translation>
-<translation id="5819762621475381970">- struktura e dhomës</translation>
 <translation id="583281660410589416">E panjohur</translation>
 <translation id="5833984609253377421">Ndaj lidhjen</translation>
 <translation id="5836192821815272682">Po shkarkon përditësimin e Chrome…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Pastro të gjitha të dhënat</translation>
 <translation id="6545864417968258051">Skanimi për Bluetooth</translation>
 <translation id="6560414384669816528">Kërko me Sogou</translation>
+<translation id="656065428026159829">Shiko më shumë</translation>
 <translation id="6566259936974865419">Chrome të ka kursyer <ph name="GIGABYTES" /> GB</translation>
 <translation id="6573096386450695060">Lejo gjithmonë</translation>
 <translation id="6573431926118603307">Skedat që ke hapur në Chrome në pajisjet e tjera do të shfaqen këtu.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Për të nisur sinkronizimin, aktivizo "Sinkronizo të dhënat e tua të Chrome".</translation>
 <translation id="729975465115245577">Pajisja jote nuk ka një aplikacion për të ruajtur skedarin e fjalëkalimeve.</translation>
 <translation id="7302081693174882195">Detajet: Renditur sipas sasisë së të dhënave të ruajtura</translation>
+<translation id="7302486331832100261">Ti i bllokon zakonisht njoftimet. Për t'i lejuar, trokit te "Detajet".</translation>
 <translation id="7328017930301109123">Në "Modalitetin e lehtë", Chrome i ngarkon faqet më shpejt dhe përdor deri në 60 përqind më pak të dhëna.</translation>
 <translation id="7333031090786104871">Ende po shtohet sajti i mëparshëm</translation>
 <translation id="7352939065658542140">VIDEO</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb
index 9c1afa0..616ece4 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sr.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Додирните дугме „Најпопуларнији веб-сајтови“ и видите те веб-сајтове</translation>
 <translation id="1173894706177603556">Преименуј</translation>
 <translation id="1178581264944972037">Паузирај</translation>
-<translation id="118069123878619799">– ваше физичке особине, попут висине</translation>
 <translation id="1181037720776840403">Уклони</translation>
 <translation id="1188239144602654184">Уђи у ПР</translation>
 <translation id="1197267115302279827">Премести обележиваче</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Преузимање је паузирано</translation>
 <translation id="1386674309198842382">Последња активност: пре <ph name="LAST_UPDATED" /> дан/а</translation>
 <translation id="1397811292916898096">Претражите помоћу: <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Уграђено је у сајт <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">„Не прати“</translation>
 <translation id="1407135791313364759">Отвори све</translation>
 <translation id="1409426117486808224">Поједностављен приказ отворених картица</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547">Избрисаних ставки: <ph name="NUMBER_OF_ITEMS" /></translation>
 <translation id="2536728043171574184">Прегледате офлајн копију ове странице</translation>
 <translation id="2537178555904266562">Дошло је до грешке при синхронизовању лозинки</translation>
+<translation id="2537296579376733324">Сви колачићи, само на овом сајту</translation>
 <translation id="2546283357679194313">Колачићи и подаци о сајтовима</translation>
 <translation id="2567385386134582609">СЛИКА</translation>
 <translation id="257088987046510401">Теме</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Сакриј лозинку</translation>
 <translation id="4570913071927164677">Детаљи</translation>
 <translation id="4572422548854449519">Пријавите се на налог којим се управља</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{Пре # минута}one{Пре # минута}few{Пре # минута}other{Пре # минута}}</translation>
 <translation id="4587589328781138893">Сајтови</translation>
 <translation id="4594952190837476234">Ова офлајн страница је од <ph name="CREATION_TIME" /> и може да се разликује од онлајн верзије.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{Пре # сата}one{Пре # сата}few{Пре # сата}other{Пре # сати}}</translation>
 <translation id="5810288467834065221">Ауторска права <ph name="YEAR" />. Google LLC. Сва права задржана.</translation>
 <translation id="5817918615728894473">Упари</translation>
-<translation id="5819762621475381970">– изглед ваше собе</translation>
 <translation id="583281660410589416">Непознато</translation>
 <translation id="5833984609253377421">Дели линк</translation>
 <translation id="5836192821815272682">Преузима се ажурирање за Chrome…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Обриши све податке</translation>
 <translation id="6545864417968258051">Bluetooth скенирање</translation>
 <translation id="6560414384669816528">Претрага помоћу Sogou-а</translation>
+<translation id="656065428026159829">Прикажи још</translation>
 <translation id="6566259936974865419">Chrome вам је уштедео <ph name="GIGABYTES" /> GB</translation>
 <translation id="6573096386450695060">Увек дозволи</translation>
 <translation id="6573431926118603307">Овде ће се приказати картице које отворите у Chrome-у на другим уређајима.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Да бисте покренули синхронизацију, укључите опцију „Синхронизујте Chrome податке“.</translation>
 <translation id="729975465115245577">Уређај нема апликацију за чување датотеке са лозинкама.</translation>
 <translation id="7302081693174882195">Детаљи: сортирано према количини уштеђених података</translation>
+<translation id="7302486331832100261">Обично блокирате обавештења. Да бисте их дозволили, додирните Детаљи.</translation>
 <translation id="7328017930301109123">У Lite режиму Chrome учитава странице брже и користи и до 60 процената мање података.</translation>
 <translation id="7333031090786104871">Још увек додајемо претходни сајт</translation>
 <translation id="7352939065658542140">ВИДЕО</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb
index 497b56f..ef967a40 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sv.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Visa populära webbplatser genom att trycka på Populärt</translation>
 <translation id="1173894706177603556">Ändra namn</translation>
 <translation id="1178581264944972037">Paus</translation>
-<translation id="118069123878619799">– din fysiska egenskaper, t.ex. hur lång du är</translation>
 <translation id="1181037720776840403">Ta bort</translation>
 <translation id="1188239144602654184">Starta AR</translation>
 <translation id="1197267115302279827">Flytta bokmärken</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Nedladdningen har pausats</translation>
 <translation id="1386674309198842382">Aktiv för <ph name="LAST_UPDATED" /> dagar sedan</translation>
 <translation id="1397811292916898096">Sök med <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Inbäddad i <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">Do Not Track</translation>
 <translation id="1407135791313364759">Öppna alla</translation>
 <translation id="1409426117486808224">Förenklad vy för öppna flikar</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> objekt har tagits bort</translation>
 <translation id="2536728043171574184">En offlinekopia av sidan visas</translation>
 <translation id="2537178555904266562">Det gick inte att synkronisera lösenord</translation>
+<translation id="2537296579376733324">Alla cookies, endast på den här webbplatsen</translation>
 <translation id="2546283357679194313">Cookies och webbplatsdata</translation>
 <translation id="2567385386134582609">BILD</translation>
 <translation id="257088987046510401">Teman</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Dölj lösenord</translation>
 <translation id="4570913071927164677">Information</translation>
 <translation id="4572422548854449519">Logga in på hanterat konto</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{för # minut sedan}other{för # minuter sedan}}</translation>
 <translation id="4587589328781138893">Webbplatser</translation>
 <translation id="4594952190837476234">Den här offlinesidan sparades <ph name="CREATION_TIME" /> och kan skilja sig från onlineversionen.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{för # timme sedan}other{för # timmar sedan}}</translation>
 <translation id="5810288467834065221">Copyright <ph name="YEAR" /> Google LLC. Med ensamrätt.</translation>
 <translation id="5817918615728894473">Koppla</translation>
-<translation id="5819762621475381970">– hur ditt rum ser ut</translation>
 <translation id="583281660410589416">Okänd</translation>
 <translation id="5833984609253377421">Dela länk</translation>
 <translation id="5836192821815272682">Uppdatering för Chrome laddas ned …</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Rensa all data</translation>
 <translation id="6545864417968258051">Bluetooth-sökning</translation>
 <translation id="6560414384669816528">Sök med Sogou</translation>
+<translation id="656065428026159829">Visa fler</translation>
 <translation id="6566259936974865419">Du har sparat <ph name="GIGABYTES" /> GB med Chrome</translation>
 <translation id="6573096386450695060">Tillåt alltid</translation>
 <translation id="6573431926118603307">Här visas flikar som du har öppnat i Chrome på andra enheter.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Starta synkroniseringen genom att aktivera Synkronisera data i Chrome.</translation>
 <translation id="729975465115245577">Det finns ingen app som kan spara lösenordsfilen på enheten.</translation>
 <translation id="7302081693174882195">Mer information: Sorterad efter databesparing</translation>
+<translation id="7302486331832100261">Du brukar blockera aviseringar. Tryck på Info om du vill tillåta dem.</translation>
 <translation id="7328017930301109123">I begränsat läge läses sidorna in snabbare och dataförbrukningen minskar med upp till 60 procent.</translation>
 <translation id="7333031090786104871">Processen pågår fortfarande för den förra webbplatsen</translation>
 <translation id="7352939065658542140">VIDEO</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb
index eddea5fa..24b5cbc 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_sw.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Ona tovuti maarufu kwa kugusa kitufe cha "Tovuti maarufu"</translation>
 <translation id="1173894706177603556">Ipe jina jipya</translation>
 <translation id="1178581264944972037">Sitisha</translation>
-<translation id="118069123878619799">- sifa zako za kimwili, kama vile urefu</translation>
 <translation id="1181037720776840403">Ondoa</translation>
 <translation id="1188239144602654184">Weka Uhalisia Ulioboreshwa</translation>
 <translation id="1197267115302279827">Sogeza alamisho</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Upakuaji umesitishwa</translation>
 <translation id="1386674309198842382">Ilitumika siku <ph name="LAST_UPDATED" /> zilizopita</translation>
 <translation id="1397811292916898096">Tafuta kwa <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Imepachikwa katika <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">“Usifuatilie”</translation>
 <translation id="1407135791313364759">Fungua zote</translation>
 <translation id="1409426117486808224">Mwonekano uliorahisishwa kwa ajili ya vichupo vilivyofunguliwa</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547">Umefuta vipengee <ph name="NUMBER_OF_ITEMS" /></translation>
 <translation id="2536728043171574184">Unaangalia nakala ya nje ya mtandao ya ukurasa huu</translation>
 <translation id="2537178555904266562">Hitilafu imetokea wakati wa kusawazisha manenosiri</translation>
+<translation id="2537296579376733324">Vidakuzi vyote kwenye tovuti hii pekee</translation>
 <translation id="2546283357679194313">Data ya vidakuzi na tovuti</translation>
 <translation id="2567385386134582609">PICHA</translation>
 <translation id="257088987046510401">Mandhari</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Ficha nenosiri</translation>
 <translation id="4570913071927164677">Maelezo</translation>
 <translation id="4572422548854449519">Ingia katika akaunti zinazodhibitiwa</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{Dakika # iliyopita}other{Dakika # zilizopita}}</translation>
 <translation id="4587589328781138893">Tovuti</translation>
 <translation id="4594952190837476234">Ukurasa huu wa nje ya mtandao umetoka <ph name="CREATION_TIME" /> na huenda ukatofautiana na toleo lililo mtandaoni.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{Saa # iliyopita}other{Saa # zilizopita}}</translation>
 <translation id="5810288467834065221">Hakimiliki <ph name="YEAR" /> Google LLC. Haki zote zimehifadhiwa.</translation>
 <translation id="5817918615728894473">Oanisha</translation>
-<translation id="5819762621475381970">- muundo wa chumba chako</translation>
 <translation id="583281660410589416">Haijulikani</translation>
 <translation id="5833984609253377421">Shiriki kiungo</translation>
 <translation id="5836192821815272682">Inapakua Sasisho la Chrome…</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb
index aa193f4..a1e8f63 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ta.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">"பிரபலமானவை" பட்டனைத் தட்டி பிரபல இணையதளங்களைப் பாருங்கள்</translation>
 <translation id="1173894706177603556">மறுபெயரிடு</translation>
 <translation id="1178581264944972037">இடைநிறுத்து</translation>
-<translation id="118069123878619799">- உங்களின் உயரம் போன்ற உடல் அமைப்பு விவரங்கள்</translation>
 <translation id="1181037720776840403">அகற்று</translation>
 <translation id="1188239144602654184">ARரில் நுழைக</translation>
 <translation id="1197267115302279827">புத்தகக்குறிகளை நகர்த்து</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">பதிவிறக்கம் இடைநிறுத்தப்பட்டது</translation>
 <translation id="1386674309198842382"><ph name="LAST_UPDATED" /> நாட்களுக்கு முன் பயன்படுத்தியுள்ளார்</translation>
 <translation id="1397811292916898096"><ph name="PRODUCT_NAME" /> மூலம் தேடுக</translation>
-<translation id="1404122904123200417"><ph name="WEBSITE_URL" /> இல் உட்பொதிக்கப்பட்டது</translation>
 <translation id="1406000523432664303">'கண்காணிக்க வேண்டாம்'</translation>
 <translation id="1407135791313364759">எல்லாவற்றையும் திற</translation>
 <translation id="1409426117486808224">திறக்கப்பட்டுள்ள தாவல்களுக்கான எளிதாக்கப்பட்ட காட்சி</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> வரலாற்று உள்ளடக்கங்கள் நீக்கப்பட்டன</translation>
 <translation id="2536728043171574184">இந்தப் பக்கத்தின் ஆஃப்லைன் நகலைப் பார்க்கிறீர்கள்</translation>
 <translation id="2537178555904266562">கடவுச்சொற்களை ஒத்திசைப்பதில் பிழை</translation>
+<translation id="2537296579376733324">இந்த இணையதளத்திற்கு மட்டுமான குக்கீகள் அனைத்தும்</translation>
 <translation id="2546283357679194313">குக்கீகளும் தள தரவும்</translation>
 <translation id="2567385386134582609">படம்</translation>
 <translation id="257088987046510401">தீம்கள்</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">கடவுச்சொல்லை மறைக்கும்</translation>
 <translation id="4570913071927164677">விவரங்கள்</translation>
 <translation id="4572422548854449519">நிர்வகிக்கப்படும் கணக்கில் உள்நுழையவும்</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# நிமிடத்திற்கு முன்பு}other{# நிமிடங்களுக்கு முன்பு}}</translation>
 <translation id="4587589328781138893">தளங்கள்</translation>
 <translation id="4594952190837476234"><ph name="CREATION_TIME" /> அன்று இந்த ஆஃப்லைன் பக்கம் உருவாக்கப்பட்டது. இது ஆன்லைன் பதிப்பிலிருந்து வேறுபடலாம்.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# மணிநேரம் முன்பு}other{# மணிநேரம் முன்பு}}</translation>
 <translation id="5810288467834065221">பதிப்புரிமை <ph name="YEAR" /> Google LLC. அனைத்து உரிமைகளும் பாதுகாக்கப்பட்டுள்ளன.</translation>
 <translation id="5817918615728894473">இணை</translation>
-<translation id="5819762621475381970">- உங்கள் அறையின் தளவமைப்பு</translation>
 <translation id="583281660410589416">தெரியாதது</translation>
 <translation id="5833984609253377421">இணைப்பைப் பகிர்</translation>
 <translation id="5836192821815272682">Chrome புதுப்பிப்பைப் பதிவிறக்குகிறது…</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb
index 29f3f126..7a5abc0c 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_te.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">"టాప్ సైట్‌లు" బటన్‌పై నొక్కడం ద్వారా ప్రసిద్ధ వెబ్‌సైట్‌లను చూడండి</translation>
 <translation id="1173894706177603556">పేరుమార్చు</translation>
 <translation id="1178581264944972037">పాజ్ చేయి</translation>
-<translation id="118069123878619799">- మీ ఎత్తు వంటి భౌతిక లక్షణాలు</translation>
 <translation id="1181037720776840403">తీసివేయి</translation>
 <translation id="1188239144602654184">ARలోకి ప్రవేశించు</translation>
 <translation id="1197267115302279827">బుక్‌మార్క్‌లను తరలించు</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">డౌన్‌లోడ్ పాజ్ చేయబడింది</translation>
 <translation id="1386674309198842382"><ph name="LAST_UPDATED" /> రోజుల క్రితం యాక్టివ్‌గా ఉంది</translation>
 <translation id="1397811292916898096"><ph name="PRODUCT_NAME" />తో వెతకండి</translation>
-<translation id="1404122904123200417"><ph name="WEBSITE_URL" />లో పొందుపరచబడింది</translation>
 <translation id="1406000523432664303">“ట్రాక్ చేయవద్దు”</translation>
 <translation id="1407135791313364759">అన్నీ తెరువు</translation>
 <translation id="1409426117486808224">తెరిచిన ట్యాబ్‌ల కోసం సరళమైన వీక్షణ</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> అంశాలు తొలగించబడ్డాయి</translation>
 <translation id="2536728043171574184">ఈ పేజీ ఆఫ్‌లైన్ కాపీని వీక్షిస్తున్నారు</translation>
 <translation id="2537178555904266562">పాస్‌వర్డ్‌లను సింక్ చేయడంలో ఎర్రర్ ఏర్పడింది</translation>
+<translation id="2537296579376733324">అన్ని కుక్కీలు, కేవలం ఈ సైట్‌లో మాత్రమే</translation>
 <translation id="2546283357679194313">కుక్కీలు మరియు సైట్ డేటా</translation>
 <translation id="2567385386134582609">చిత్రం</translation>
 <translation id="257088987046510401">థీమ్‌లు</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">పాస్‌వర్డ్‌ను దాచిపెట్టు</translation>
 <translation id="4570913071927164677">వివరాలు</translation>
 <translation id="4572422548854449519">నిర్వాహిత ఖాతాకు సైన్ ఇన్ చేయండి</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# నిమిషం క్రితం}other{# నిమిషాల క్రితం}}</translation>
 <translation id="4587589328781138893">సైట్‌లు</translation>
 <translation id="4594952190837476234">ఈ ఆఫ్‌లైన్ పేజీ <ph name="CREATION_TIME" />కి చెందినది మరియు ఆన్‌లైన్ వెర్షన్ వేరుగా ఉండవచ్చు.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# గంట క్రితం}other{# గంటల క్రితం}}</translation>
 <translation id="5810288467834065221">కాపీరైట్ <ph name="YEAR" /> Google LLC. సర్వ హక్కులు ప్రత్యేకించబడ్డాయి.</translation>
 <translation id="5817918615728894473">జత చేయి</translation>
-<translation id="5819762621475381970">- మీ గది యొక్క లేఅవుట్</translation>
 <translation id="583281660410589416">తెలియని</translation>
 <translation id="5833984609253377421">లింక్‌ను షేర్ చేయి</translation>
 <translation id="5836192821815272682">Chrome అప్‌డేట్‌ను డౌన్‌లోడ్ చేస్తోంది…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">మొత్తం డేటాను తీసివేయి</translation>
 <translation id="6545864417968258051">బ్లూటూత్ స్కానింగ్</translation>
 <translation id="6560414384669816528">Sogouతో వెతకండి</translation>
+<translation id="656065428026159829">మరిన్ని చూడండి</translation>
 <translation id="6566259936974865419">Chrome మీకు <ph name="GIGABYTES" /> GB ఆదా చేసింది</translation>
 <translation id="6573096386450695060">ఎల్లప్పుడూ అనుమతించు</translation>
 <translation id="6573431926118603307">మీరు మీ ఇతర పరికరాల్లోని Chromeలో తెరిచిన ట్యాబ్‌లు ఇక్కడ చూపబడతాయి.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">సింక్‌ను మొదలుపెట్టడానికి, "మీ Chrome డేటాను సింక్ చేయడం" ఆన్ చేయండి</translation>
 <translation id="729975465115245577">పాస్‌వర్డ్‌ల ఫైల్‌ను నిల్వ చేయడానికి మీ పరికరంలో యాప్ లేదు.</translation>
 <translation id="7302081693174882195">వివరాలు: సేవ్ చేసిన డేటా మొత్తం ద్వారా క్రమీకరించబడ్డాయి</translation>
+<translation id="7302486331832100261">మీరు సాధారణంగా నోటిఫికేషన్‌లను బ్లాక్ చేస్తుంటారు. అనుమతించడానికి, వివరాలును నొక్కండి.</translation>
 <translation id="7328017930301109123">లైట్ మోడ్‌లో, Chrome పేజీలను వేగంగా లోడ్ చేస్తుంది, అలాగే 60 శాతం తక్కువ డేటాను ఉపయోగిస్తుంది.</translation>
 <translation id="7333031090786104871">ఇంకా మునుపటి సైట్‌ను జోడిస్తోంది</translation>
 <translation id="7352939065658542140">వీడియో</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb
index 62916b4..973f35e 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_th.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">ดูเว็บไซต์ยอดนิยมโดยการแตะปุ่ม "เว็บไซต์อันดับสูงสุด"</translation>
 <translation id="1173894706177603556">เปลี่ยนชื่อ</translation>
 <translation id="1178581264944972037">หยุดชั่วคราว</translation>
-<translation id="118069123878619799">- ลักษณะทางกายภาพของคุณ เช่น ส่วนสูง</translation>
 <translation id="1181037720776840403">นำออก</translation>
 <translation id="1188239144602654184">เริ่ม AR</translation>
 <translation id="1197267115302279827">ย้ายบุ๊กมาร์ก</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">หยุดดาวน์โหลดไว้ชั่วคราว</translation>
 <translation id="1386674309198842382">ใช้งานเมื่อ <ph name="LAST_UPDATED" /> วันที่ผ่านมา</translation>
 <translation id="1397811292916898096">ค้นหาด้วย <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">ฝังอยู่ใน <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">“ไม่ติดตาม”</translation>
 <translation id="1407135791313364759">เปิดทั้งหมด</translation>
 <translation id="1409426117486808224">มุมมองอย่างง่ายสำหรับแท็บที่เปิดไว้</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547">ลบแล้ว <ph name="NUMBER_OF_ITEMS" /> รายการ</translation>
 <translation id="2536728043171574184">ดูสำเนาแบบออฟไลน์ของหน้านี้</translation>
 <translation id="2537178555904266562">เกิดข้อผิดพลาดในการซิงค์รหัสผ่าน</translation>
+<translation id="2537296579376733324">คุกกี้ทั้งหมดในเว็บไซต์นี้เท่านั้น</translation>
 <translation id="2546283357679194313">คุกกี้และข้อมูลเว็บไซต์</translation>
 <translation id="2567385386134582609">รูปภาพ</translation>
 <translation id="257088987046510401">ธีม</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">ซ่อนรหัสผ่าน</translation>
 <translation id="4570913071927164677">รายละเอียด</translation>
 <translation id="4572422548854449519">ลงชื่อเข้าใช้บัญชีที่มีการจัดการ</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# นาทีที่ผ่านมา}other{# นาทีที่ผ่านมา}}</translation>
 <translation id="4587589328781138893">เว็บไซต์</translation>
 <translation id="4594952190837476234">หน้าเว็บออฟไลน์นี้สร้างเมื่อวันที่ <ph name="CREATION_TIME" /> และอาจแตกต่างไปจากเวอร์ชันออนไลน์</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# ชั่วโมงที่ผ่านมา}other{# ชั่วโมงที่ผ่านมา}}</translation>
 <translation id="5810288467834065221">ลิขสิทธิ์ <ph name="YEAR" /> Google LLC สงวนลิขสิทธิ์</translation>
 <translation id="5817918615728894473">จับคู่</translation>
-<translation id="5819762621475381970">- เลย์เอาต์ของห้อง</translation>
 <translation id="583281660410589416">ไม่รู้จัก</translation>
 <translation id="5833984609253377421">แชร์ลิงก์</translation>
 <translation id="5836192821815272682">กำลังดาวน์โหลดอัปเดต Chrome…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">ล้างข้อมูลทั้งหมด</translation>
 <translation id="6545864417968258051">การสแกนหาบลูทูธ</translation>
 <translation id="6560414384669816528">ค้นหาด้วย Sogou</translation>
+<translation id="656065428026159829">ดูเพิ่มเติม</translation>
 <translation id="6566259936974865419">Chrome ได้ประหยัดพื้นที่ให้คุณไป <ph name="GIGABYTES" /> GB</translation>
 <translation id="6573096386450695060">อนุญาตเสมอ</translation>
 <translation id="6573431926118603307">แท็บที่คุณเปิดไว้ใน Chrome ในอุปกรณ์เครื่องอื่นๆ จะปรากฏที่นี่</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">หากต้องการเริ่มซิงค์ ให้เปิด "ซิงค์ข้อมูล Chrome"</translation>
 <translation id="729975465115245577">อุปกรณ์ของคุณไม่มีแอปไว้จัดเก็บไฟล์รหัสผ่าน</translation>
 <translation id="7302081693174882195">รายละเอียด: จัดเรียงตามปริมาณเน็ตมือถือที่ประหยัดได้</translation>
+<translation id="7302486331832100261">คุณมักจะบล็อกการแจ้งเตือน หากต้องการอนุญาต ให้แตะ "รายละเอียด"</translation>
 <translation id="7328017930301109123">ในโหมด Lite เบราว์เซอร์ Chrome จะโหลดหน้าเว็บได้เร็วขึ้นและใช้เน็ตน้อยลงสูงสุดถึง 60 เปอร์เซ็นต์</translation>
 <translation id="7333031090786104871">ยังเพิ่มไซต์ก่อนหน้าอยู่</translation>
 <translation id="7352939065658542140">วิดีโอ</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb
index 67b8082..b7ef2a6 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">"Popüler siteler" düğmesine dokunarak popüler web sitelerini görün</translation>
 <translation id="1173894706177603556">Yeniden adlandır</translation>
 <translation id="1178581264944972037">Duraklat</translation>
-<translation id="118069123878619799">- boyunuz gibi fiziksel özellikleriniz</translation>
 <translation id="1181037720776840403">Kaldır</translation>
 <translation id="1188239144602654184">AR'ye gir</translation>
 <translation id="1197267115302279827">Yer işaretlerini taşı</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">İndirme işlemi duraklatıldı</translation>
 <translation id="1386674309198842382"><ph name="LAST_UPDATED" /> gün önce etkindi</translation>
 <translation id="1397811292916898096"><ph name="PRODUCT_NAME" /> ile ara</translation>
-<translation id="1404122904123200417"><ph name="WEBSITE_URL" /> sitesinde yerleşik</translation>
 <translation id="1406000523432664303">“Do Not Track”</translation>
 <translation id="1407135791313364759">Tümünü aç</translation>
 <translation id="1409426117486808224">Açık sekmeler için basitleştirilmiş görünüm</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> öğe silindi</translation>
 <translation id="2536728043171574184">Bu sayfanın çevrimdışı bir kopyası görüntüleniyor</translation>
 <translation id="2537178555904266562">Şifreler senkronize edilirken hata oluştu</translation>
+<translation id="2537296579376733324">Tüm çerezler, yalnızca bu sitedekiler</translation>
 <translation id="2546283357679194313">Çerezler ve site verileri</translation>
 <translation id="2567385386134582609">IMAGE</translation>
 <translation id="257088987046510401">Temalar</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Şifreyi gizle</translation>
 <translation id="4570913071927164677">Ayrıntılar</translation>
 <translation id="4572422548854449519">Yönetilen hesapta oturum açın</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# dakika önce}other{# dakika önce}}</translation>
 <translation id="4587589328781138893">Siteler</translation>
 <translation id="4594952190837476234">Bu çevrimdışı sayfa <ph name="CREATION_TIME" /> tarihli olup web'deki sürümden farklı olabilir.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# saat önce}other{# saat önce}}</translation>
 <translation id="5810288467834065221">Telif hakkı <ph name="YEAR" /> Google LLC. Tüm hakları saklıdır.</translation>
 <translation id="5817918615728894473">Eşle</translation>
-<translation id="5819762621475381970">- odanızın düzeni</translation>
 <translation id="583281660410589416">Bilinmiyor</translation>
 <translation id="5833984609253377421">Bağlantıyı paylaş</translation>
 <translation id="5836192821815272682">Chrome Güncellemesi indiriliyor…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Tüm Verileri Temizle</translation>
 <translation id="6545864417968258051">Bluetooth taraması</translation>
 <translation id="6560414384669816528">Sogou ile arama</translation>
+<translation id="656065428026159829">Daha fazla göster</translation>
 <translation id="6566259936974865419">Chrome <ph name="GIGABYTES" /> GB tasarruf sağladı</translation>
 <translation id="6573096386450695060">Her zaman izin ver</translation>
 <translation id="6573431926118603307">Diğer cihazlarınızda Chrome ile açtığınız sekmeler burada görünür.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Senkronizasyonu başlatmak için "Chrome verilerimi senkronize et" ayarını etkinleştirin.</translation>
 <translation id="729975465115245577">Cihazınızda şifreler dosyasını depolayacak bir uygulama yok.</translation>
 <translation id="7302081693174882195">Ayrıntılar: Tasarruf edilen veri miktarına göre sıralı</translation>
+<translation id="7302486331832100261">Genelde bildirimleri engelliyorsunuz. İzin vermek için Ayrıntılar'a dokunun.</translation>
 <translation id="7328017930301109123">Chrome, Basit modda sayfaları daha hızlı yükler ve yüzde 60'a kadar daha az veri kullanır.</translation>
 <translation id="7333031090786104871">Önceki siteyi ekleme işlemi devam ediyor.</translation>
 <translation id="7352939065658542140">VİDEO</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb
index e561ca4..d3445eb1 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uk.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Натисніть кнопку "Популярні сайти", щоб переглянути їх.</translation>
 <translation id="1173894706177603556">Перейменувати</translation>
 <translation id="1178581264944972037">Пауза</translation>
-<translation id="118069123878619799">- ваші фізичні характеристики, такі як зріст;</translation>
 <translation id="1181037720776840403">Видалити</translation>
 <translation id="1188239144602654184">Почати сеанс у режимі доповненої реальності</translation>
 <translation id="1197267115302279827">Перемістити закладки</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Завантаження призупинено</translation>
 <translation id="1386674309198842382">У мережі <ph name="LAST_UPDATED" /> дн. тому</translation>
 <translation id="1397811292916898096">Шукати в <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Вбудовано на сайті <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">"Не відстежувати"</translation>
 <translation id="1407135791313364759">Відкрити все</translation>
 <translation id="1409426117486808224">Спрощений перегляд відкритих вкладок</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547">Видалено елементів: <ph name="NUMBER_OF_ITEMS" /></translation>
 <translation id="2536728043171574184">Перегляд копії сторінки в режимі офлайн</translation>
 <translation id="2537178555904266562">Не вдалося синхронізувати паролі</translation>
+<translation id="2537296579376733324">Усі файли cookie, лише на цьому сайті</translation>
 <translation id="2546283357679194313">Файли cookie та дані із сайтів</translation>
 <translation id="2567385386134582609">ЗОБРАЖЕННЯ</translation>
 <translation id="257088987046510401">Теми</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Сховати пароль</translation>
 <translation id="4570913071927164677">Деталі</translation>
 <translation id="4572422548854449519">Увійдіть у керований обліковий запис</translation>
+<translation id="4574741712540401491">• <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# хвилину тому}one{# хвилину тому}few{# хвилини тому}many{# хвилин тому}other{# хвилини тому}}</translation>
 <translation id="4587589328781138893">Сайти</translation>
 <translation id="4594952190837476234">Цю сторінку створено <ph name="CREATION_TIME" />. Вона може відрізнятися від онлайн-версії.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# годину тому}one{# годину тому}few{# години тому}many{# годин тому}other{# години тому}}</translation>
 <translation id="5810288467834065221">Авторське право <ph name="YEAR" /> Google LLC. Усі права захищено.</translation>
 <translation id="5817918615728894473">Підключити</translation>
-<translation id="5819762621475381970">- вигляд вашої кімнати.</translation>
 <translation id="583281660410589416">Невідомий</translation>
 <translation id="5833984609253377421">Поділитися посиланням</translation>
 <translation id="5836192821815272682">Завантажується оновлення Chrome…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Видалити всі дані</translation>
 <translation id="6545864417968258051">Пошук пристроїв Bluetooth</translation>
 <translation id="6560414384669816528">Шукати за допомогою Sogou</translation>
+<translation id="656065428026159829">Показати більше</translation>
 <translation id="6566259936974865419">Chrome заощадив <ph name="GIGABYTES" /> ГБ</translation>
 <translation id="6573096386450695060">Завжди дозволяти</translation>
 <translation id="6573431926118603307">Тут відображатимуться вкладки, відкриті в Chrome на інших ваших пристроях.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Щоб почати синхронізацію, увімкніть параметр "Синхронізувати дані Chrome".</translation>
 <translation id="729975465115245577">На пристрої немає додатка для зберігання файлу з паролями.</translation>
 <translation id="7302081693174882195">Деталі: відсортовано за кількістю заощадженого трафіку</translation>
+<translation id="7302486331832100261">Зазвичай ви блокуєте сповіщення. Щоб дозволити, натисніть "Деталі".</translation>
 <translation id="7328017930301109123">У спрощеному режимі Chrome завантажує сторінки швидше та використовує на 60 відсотків менше трафіку.</translation>
 <translation id="7333031090786104871">Попередній сайт ще додається</translation>
 <translation id="7352939065658542140">ВІДЕО</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb
index b5658883..29ff8b7 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_ur.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">"سر فہرست سائٹس" بٹن پر تھپتھپا کر مقبول ویب سائٹس دیکھیں</translation>
 <translation id="1173894706177603556">نام بدلیں</translation>
 <translation id="1178581264944972037">موقوف کریں</translation>
-<translation id="118069123878619799">- آپ کی جسمانی خصوصیات، جیسے کہ قد</translation>
 <translation id="1181037720776840403">ہٹائیں</translation>
 <translation id="1188239144602654184">‏AR میں داخل ہوں</translation>
 <translation id="1197267115302279827">بُک مارکس منتقل کریں</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">ڈاؤن لوڈ موقوف ہوگیا</translation>
 <translation id="1386674309198842382"><ph name="LAST_UPDATED" /> دن پہلے فعال تھا</translation>
 <translation id="1397811292916898096"><ph name="PRODUCT_NAME" /> کے ساتھ تلاش کریں</translation>
-<translation id="1404122904123200417"><ph name="WEBSITE_URL" /> میں سرایت کردہ</translation>
 <translation id="1406000523432664303">"ٹریک نہ کریں"</translation>
 <translation id="1407135791313364759">سبھی کو کھولیں</translation>
 <translation id="1409426117486808224">کھلے ٹیبز کیلئے سادہ منظر</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> آئٹمز حذف ہو گئے</translation>
 <translation id="2536728043171574184">اس صفحہ کی ایک آف لائن کاپی دیکھی جا رہی ہے</translation>
 <translation id="2537178555904266562">پاس ورڈز کی مطابقت پذیری کرنے میں خرابی</translation>
+<translation id="2537296579376733324">تمام کوکیز، صرف اس سائٹ پر</translation>
 <translation id="2546283357679194313">کوکیز اور سائٹ ڈیٹا</translation>
 <translation id="2567385386134582609">تصویر</translation>
 <translation id="257088987046510401">تھیمز</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">پاس ورڈ چھپائیں</translation>
 <translation id="4570913071927164677">تفاصیل</translation>
 <translation id="4572422548854449519">نظم کردہ اکاؤنٹ میں سائن ان کریں</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# منٹ پہلے}other{# منٹ پہلے}}</translation>
 <translation id="4587589328781138893">سائٹیں</translation>
 <translation id="4594952190837476234">یہ آف لائن صفحہ <ph name="CREATION_TIME" /> کا ہے اور آن لائن ورژن سے مختلف ہو سکتا ہے۔</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# گھنٹہ پہلے}other{# گھنٹے پہلے}}</translation>
 <translation id="5810288467834065221">‏کاپی رائٹ<ph name="YEAR" /> Google LLC۔ جملہ حقوق محفوظ ہیں۔</translation>
 <translation id="5817918615728894473">جوڑا بنائيں</translation>
-<translation id="5819762621475381970">- آپ کے کمرے کا لے آؤٹ</translation>
 <translation id="583281660410589416">نامعلوم</translation>
 <translation id="5833984609253377421">لنک کا اشتراک کریں</translation>
 <translation id="5836192821815272682">‏Chrome اپ ڈیٹ ڈاؤن لوڈ ہو رہا ہے…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">سبھی ڈیٹا صاف کریں</translation>
 <translation id="6545864417968258051">بلوٹوتھ اسکیننگ</translation>
 <translation id="6560414384669816528">‏Sogou کے ساتھ تلاش کریں</translation>
+<translation id="656065428026159829">مزید دیکھیں</translation>
 <translation id="6566259936974865419">‏Chrome نے آپ کا <ph name="GIGABYTES" /> GB بچایا ہے</translation>
 <translation id="6573096386450695060">ہمیشہ اجازت دیں</translation>
 <translation id="6573431926118603307">‏اپنے دیگر آلات پر Chrome میں آپ نے جو ٹیبز کھولے ہیں وہ یہاں ظاہر ہوں گے۔</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">‏مطابقت پذیری شروع کرنے کے لیے، "اپنے Chrome ڈیٹا کو مطابقت پذیر بنائیں" کو آن کریں۔</translation>
 <translation id="729975465115245577">آپ کے آلہ میں پاسورڈز کی فائل کو اسٹور کرنے والی ایپ نہیں ہے۔</translation>
 <translation id="7302081693174882195">تفصیلات: محفوظ کردہ ڈیٹا کی مقدار کے لحاظ سے ترتیب دیا گیا</translation>
+<translation id="7302486331832100261">آپ عام طور پر اطلاعات کو مسدود کرتے ہیں۔ اجازت دینے کے لیے، تفصیلات پر تھپتھپائیں۔</translation>
 <translation id="7328017930301109123">‏لائٹ موڈ میں، Chrome صفحات کو زیادہ تیزی سے لوڈ کرتا ہے اور60 فیصد تک کم ڈیٹا استعمال کرتا ہے۔</translation>
 <translation id="7333031090786104871">ابھی بھی سابقہ سائٹ شامل کی جا رہی ہے</translation>
 <translation id="7352939065658542140">ویڈیو</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uz.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uz.xtb
index 3d09ea3..90ced4f 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_uz.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_uz.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Mashhur saytlarni chiqarish uchun “Top saytlar” tugmasini bosing</translation>
 <translation id="1173894706177603556">Qayta nomlash</translation>
 <translation id="1178581264944972037">Pauza</translation>
-<translation id="118069123878619799">- boʻy kabi jismoniy xususiyatlaringiz</translation>
 <translation id="1181037720776840403">Olib tashlash</translation>
 <translation id="1188239144602654184">Virtual reallikka kirish</translation>
 <translation id="1197267115302279827">Xatcho‘plarni ko‘chirib o‘tkazish</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Yuklab olish pauza qilindi.</translation>
 <translation id="1386674309198842382"><ph name="LAST_UPDATED" /> kun oldin onlayn edi</translation>
 <translation id="1397811292916898096"><ph name="PRODUCT_NAME" /> orqali qidirish</translation>
-<translation id="1404122904123200417"><ph name="WEBSITE_URL" /> saytida o‘rnatilgan</translation>
 <translation id="1406000523432664303">“Kuzatilmasin”</translation>
 <translation id="1407135791313364759">Barchasini ochish</translation>
 <translation id="1409426117486808224">Ochiq varaqlarni ko‘rish uchun oddiy rejim</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> ta element oʻchirib tashlandi</translation>
 <translation id="2536728043171574184">Bu sahifaning oflayn nusxasi ko‘rilmoqda</translation>
 <translation id="2537178555904266562">Parollar sinxronlanmadi</translation>
+<translation id="2537296579376733324">Barcha cookie fayllar, faqat shu saytda</translation>
 <translation id="2546283357679194313">Cookie fayllari va sayt ma’lumotlari</translation>
 <translation id="2567385386134582609">TASVIR</translation>
 <translation id="257088987046510401">Mavzular</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Parolni berkitish</translation>
 <translation id="4570913071927164677">Tafsilotlar</translation>
 <translation id="4572422548854449519">Tobe hisobga kirish</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# daqiqa oldin}other{# daqiqa oldin}}</translation>
 <translation id="4587589328781138893">Sites</translation>
 <translation id="4594952190837476234">Bu sahifa saytning <ph name="CREATION_TIME" /> kunidagi nusxasi va onlayn versiyasidan farq qilishi mumkin.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# soat oldin}other{# soat oldin}}</translation>
 <translation id="5810288467834065221">© Google LLC, <ph name="YEAR" /> Barcha huquqlar himoyalangan.</translation>
 <translation id="5817918615728894473">Ulanish</translation>
-<translation id="5819762621475381970">- xonangiz dizayni</translation>
 <translation id="583281660410589416">Noma’lum</translation>
 <translation id="5833984609253377421">Havolani ulashish</translation>
 <translation id="5836192821815272682">Chrome yangilanishi yuklab olinmoqda…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Barcha ma’lumotlarni tozalash</translation>
 <translation id="6545864417968258051">Bluetooth qurilmalarni qidirish</translation>
 <translation id="6560414384669816528">Sogou orqali qidirib ko‘ring</translation>
+<translation id="656065428026159829">Yana</translation>
 <translation id="6566259936974865419">Chrome <ph name="GIGABYTES" /> GB tejab qoldi</translation>
 <translation id="6573096386450695060">Har doim ruxsat berilsin</translation>
 <translation id="6573431926118603307">Boshqa qurilmalaringizda ochilgan Chrome sahifalari shu yerda ko‘rsatiladi.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Sinxronlashni boshlash uchun “Chrome axborotini sinxronlash” tugmasini bosing.</translation>
 <translation id="729975465115245577">Qurilmangizda parollarni saqlovchi ilova yo‘q.</translation>
 <translation id="7302081693174882195">Tafsilot: Tejalgan trafik asosida saralandi</translation>
+<translation id="7302486331832100261">Odatda bildirishnomalarni bloklaysiz. Ruxsat berish uchun Tafsilotlar ustiga bosing.</translation>
 <translation id="7328017930301109123">Lite rejimida Chrome sahifalarni tezroq yuklaydi va 60 foizgacha trafik tejaydi.</translation>
 <translation id="7333031090786104871">Avvalgi sayt qo‘shilmoqda</translation>
 <translation id="7352939065658542140">VIDEO</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb
index 42c3a6a9..975bdcc 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_vi.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Xem các trang web phổ biến bằng cách nhấn vào nút "Trang web hàng đầu"</translation>
 <translation id="1173894706177603556">Đổi tên</translation>
 <translation id="1178581264944972037">Tạm dừng</translation>
-<translation id="118069123878619799">– đặc điểm hình thể của bạn, chẳng hạn như chiều cao</translation>
 <translation id="1181037720776840403">Xóa</translation>
 <translation id="1188239144602654184">Chuyển sang thực tế tăng cường</translation>
 <translation id="1197267115302279827">Di chuyển dấu trang</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Đã tạm dừng quá trình tải xuống</translation>
 <translation id="1386674309198842382">Hoạt động <ph name="LAST_UPDATED" /> ngày trước</translation>
 <translation id="1397811292916898096">Tìm kiếm bằng <ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Được nhúng trong <ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">“Không theo dõi”</translation>
 <translation id="1407135791313364759">Mở tất cả</translation>
 <translation id="1409426117486808224">Chế độ xem đơn giản cho tab đang mở</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547">Đã xóa <ph name="NUMBER_OF_ITEMS" /> mục</translation>
 <translation id="2536728043171574184">Xem bản sao ngoại tuyến của trang này</translation>
 <translation id="2537178555904266562">Lỗi khi đồng bộ hóa mật khẩu</translation>
+<translation id="2537296579376733324">Tất cả cookie, chỉ trên trang web này</translation>
 <translation id="2546283357679194313">Cookie và dữ liệu trang web</translation>
 <translation id="2567385386134582609">HÌNH ẢNH</translation>
 <translation id="257088987046510401">Chủ đề</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Ẩn mật khẩu</translation>
 <translation id="4570913071927164677">Chi tiết</translation>
 <translation id="4572422548854449519">Đăng nhập vào tài khoản được quản lý</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# phút trước}other{# phút trước}}</translation>
 <translation id="4587589328781138893">Trang web</translation>
 <translation id="4594952190837476234">Trang ngoại tuyến này được tạo từ lúc <ph name="CREATION_TIME" /> và có thể khác với phiên bản trực tuyến.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# giờ trước}other{# giờ trước}}</translation>
 <translation id="5810288467834065221">Bản quyền <ph name="YEAR" /> Google LLC. Mọi quyền được bảo lưu.</translation>
 <translation id="5817918615728894473">Ghép nối</translation>
-<translation id="5819762621475381970">– cách bài trí phòng của bạn</translation>
 <translation id="583281660410589416">Không xác định</translation>
 <translation id="5833984609253377421">Chia sẻ liên kết</translation>
 <translation id="5836192821815272682">Đang tải Bản cập nhật Chrome…</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb
index 08ffd3f4..e24a51b 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-CN.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">点按“热门网站”按钮可查看热门网站</translation>
 <translation id="1173894706177603556">重命名</translation>
 <translation id="1178581264944972037">暂停</translation>
-<translation id="118069123878619799">- 您的身体特征,例如身高</translation>
 <translation id="1181037720776840403">删除</translation>
 <translation id="1188239144602654184">进入 AR 会话</translation>
 <translation id="1197267115302279827">移动书签</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">已暂停下载</translation>
 <translation id="1386674309198842382"><ph name="LAST_UPDATED" /> 天前曾有活动</translation>
 <translation id="1397811292916898096">使用 <ph name="PRODUCT_NAME" /> 进行搜索</translation>
-<translation id="1404122904123200417">嵌入位置:<ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">“不跟踪”</translation>
 <translation id="1407135791313364759">全部打开</translation>
 <translation id="1409426117486808224">使用简化版视图查看打开的标签页</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547">删除了 <ph name="NUMBER_OF_ITEMS" /> 项</translation>
 <translation id="2536728043171574184">正在查看此网页的离线副本</translation>
 <translation id="2537178555904266562">同步密码时出错</translation>
+<translation id="2537296579376733324">所有 Cookie,仅限在此网站上</translation>
 <translation id="2546283357679194313">Cookie 和网站数据</translation>
 <translation id="2567385386134582609">图片</translation>
 <translation id="257088987046510401">主题背景</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">隐藏密码</translation>
 <translation id="4570913071927164677">详情</translation>
 <translation id="4572422548854449519">请登录受管理的帐号</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# 分钟前}other{# 分钟前}}</translation>
 <translation id="4587589328781138893">网站</translation>
 <translation id="4594952190837476234">此离线网页是在 <ph name="CREATION_TIME" />创建的,可能与在线版本有所不同。</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# 小时前}other{# 小时前}}</translation>
 <translation id="5810288467834065221">版权所有 <ph name="YEAR" /> Google LLC. 保留所有权利。</translation>
 <translation id="5817918615728894473">配对</translation>
-<translation id="5819762621475381970">- 您房间的布局</translation>
 <translation id="583281660410589416">未知</translation>
 <translation id="5833984609253377421">分享链接</translation>
 <translation id="5836192821815272682">正在下载 Chrome 更新…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">清除所有数据</translation>
 <translation id="6545864417968258051">蓝牙扫描</translation>
 <translation id="6560414384669816528">改用搜狗搜索</translation>
+<translation id="656065428026159829">查看更多</translation>
 <translation id="6566259936974865419">Chrome 已为您保存的数据量:<ph name="GIGABYTES" /> GB</translation>
 <translation id="6573096386450695060">一律允许</translation>
 <translation id="6573431926118603307">您在其他设备上的 Chrome 中打开的标签页将列在此处。</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">要开始同步,请开启“同步 Chrome 数据”。</translation>
 <translation id="729975465115245577">您的设备上没有可以存储密码文件的应用。</translation>
 <translation id="7302081693174882195">详细信息:按已节省的数据流量排序</translation>
+<translation id="7302486331832100261">您通常会屏蔽通知。要允许显示通知,请点按“详细信息”。</translation>
 <translation id="7328017930301109123">在精简模式下,Chrome 可更快速地加载网页,并可节省多达百分之 60 的流量。</translation>
 <translation id="7333031090786104871">仍在添加先前的网站</translation>
 <translation id="7352939065658542140">视频</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb
index d69ce2d5..1d3740e5 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-HK.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">輕按「熱門網站」按鈕,即可查看熱門網站</translation>
 <translation id="1173894706177603556">重新命名</translation>
 <translation id="1178581264944972037">暫停</translation>
-<translation id="118069123878619799">- 您的身體特徵,例如身高</translation>
 <translation id="1181037720776840403">移除</translation>
 <translation id="1188239144602654184">啟動 AR</translation>
 <translation id="1197267115302279827">移動書籤</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">已暫停下載</translation>
 <translation id="1386674309198842382">曾於 <ph name="LAST_UPDATED" /> 天前在線</translation>
 <translation id="1397811292916898096">使用 <ph name="PRODUCT_NAME" /> 搜尋內容</translation>
-<translation id="1404122904123200417">內嵌位置:<ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">「不追蹤」</translation>
 <translation id="1407135791313364759">全部開啟</translation>
 <translation id="1409426117486808224">使用簡化檢視模式查看開啟的分頁</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547">已刪除 <ph name="NUMBER_OF_ITEMS" /> 個項目</translation>
 <translation id="2536728043171574184">正在瀏覽此網頁的離線版本</translation>
 <translation id="2537178555904266562">同步處理密碼時發生錯誤</translation>
+<translation id="2537296579376733324">所有 Cookies,僅限此網站</translation>
 <translation id="2546283357679194313">Cookie 和網站數據</translation>
 <translation id="2567385386134582609">圖片</translation>
 <translation id="257088987046510401">主題背景</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">隱藏密碼</translation>
 <translation id="4570913071927164677">詳細資料</translation>
 <translation id="4572422548854449519">登入受管理的帳戶</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# 分鐘前}other{# 分鐘前}}</translation>
 <translation id="4587589328781138893">網站</translation>
 <translation id="4594952190837476234">此離線網頁在 <ph name="CREATION_TIME" />建立,且可能與網上版本不同。</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# 小時前}other{# 小時前}}</translation>
 <translation id="5810288467834065221">版權所有 <ph name="YEAR" /> Google LLC。保留所有權利。</translation>
 <translation id="5817918615728894473">配對</translation>
-<translation id="5819762621475381970">- 您的房間配置</translation>
 <translation id="583281660410589416">不明</translation>
 <translation id="5833984609253377421">分享連結</translation>
 <translation id="5836192821815272682">正在下載 Chrome 更新…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">清除所有資料</translation>
 <translation id="6545864417968258051">藍牙掃瞄</translation>
 <translation id="6560414384669816528">使用「搜狗」搜尋內容</translation>
+<translation id="656065428026159829">顯示更多</translation>
 <translation id="6566259936974865419">Chrome 已為您節省 <ph name="GIGABYTES" /> GB</translation>
 <translation id="6573096386450695060">一律允許</translation>
 <translation id="6573431926118603307">您在其他裝置上開啟的 Chrome 分頁會在這裡顯示。</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">如要開始同步處理,請開啟「同步處理 Chrome 資料」。</translation>
 <translation id="729975465115245577">裝置沒有可儲存密碼檔案的應用程式。</translation>
 <translation id="7302081693174882195">詳情:依節省數據量排序</translation>
+<translation id="7302486331832100261">你通常會封鎖通知。如要允許通知,請輕觸 [詳細資料]。</translation>
 <translation id="7328017930301109123">「精簡模式」可加快 Chrome 載入網頁的速度,並節省高達百分之 60 的數據用量。</translation>
 <translation id="7333031090786104871">仍在新增先前的網站</translation>
 <translation id="7352939065658542140">影片</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb
index 8165b30..4f9b74bc 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zh-TW.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">輕觸 [熱門網站] 按鈕,即可查看熱門網站</translation>
 <translation id="1173894706177603556">重新命名</translation>
 <translation id="1178581264944972037">暫停</translation>
-<translation id="118069123878619799">- 你的身體特徵,例如身高</translation>
 <translation id="1181037720776840403">移除</translation>
 <translation id="1188239144602654184">啟動 AR</translation>
 <translation id="1197267115302279827">移動書籤</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">已暫停下載</translation>
 <translation id="1386674309198842382">上次使用時間:<ph name="LAST_UPDATED" /> 天前</translation>
 <translation id="1397811292916898096">使用 <ph name="PRODUCT_NAME" /> 搜尋</translation>
-<translation id="1404122904123200417">內嵌位置:<ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">「不追蹤」</translation>
 <translation id="1407135791313364759">全部開啟</translation>
 <translation id="1409426117486808224">使用簡易檢視模式查看開啟的分頁</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547">已刪除 <ph name="NUMBER_OF_ITEMS" /> 個項目</translation>
 <translation id="2536728043171574184">目前瀏覽的是這個網頁的離線複本</translation>
 <translation id="2537178555904266562">同步密碼時發生錯誤</translation>
+<translation id="2537296579376733324">所有 Cookies,僅限這個網站</translation>
 <translation id="2546283357679194313">Cookie 和網站資料</translation>
 <translation id="2567385386134582609">圖片</translation>
 <translation id="257088987046510401">主題</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">隱藏密碼</translation>
 <translation id="4570913071927164677">詳細資料</translation>
 <translation id="4572422548854449519">登入受管理的帳戶</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# 分鐘前}other{# 分鐘前}}</translation>
 <translation id="4587589328781138893">網站</translation>
 <translation id="4594952190837476234">這個離線版網頁是於 <ph name="CREATION_TIME" />建立,可能會和線上版本有所不同。</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# 小時前}other{# 小時前}}</translation>
 <translation id="5810288467834065221">Copyright <ph name="YEAR" /> Google LLC. 保留所有權利。</translation>
 <translation id="5817918615728894473">配對</translation>
-<translation id="5819762621475381970">- 你的房間配置</translation>
 <translation id="583281660410589416">未知</translation>
 <translation id="5833984609253377421">分享連結</translation>
 <translation id="5836192821815272682">正在下載 Chrome 更新…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">清除所有資料</translation>
 <translation id="6545864417968258051">藍牙掃描</translation>
 <translation id="6560414384669816528">使用 Sogou 搜尋</translation>
+<translation id="656065428026159829">顯示更多</translation>
 <translation id="6566259936974865419">Chrome 為你節省了 <ph name="GIGABYTES" /> GB</translation>
 <translation id="6573096386450695060">一律允許</translation>
 <translation id="6573431926118603307">您在其他裝置上透過 Chrome 開啟的分頁會顯示在這裡。</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">如要開始同步處理,請開啟「同步處理你的 Chrome 資料」。</translation>
 <translation id="729975465115245577">你的裝置沒有可儲存密碼檔案的應用程式。</translation>
 <translation id="7302081693174882195">詳細資料:依儲存資料量排序</translation>
+<translation id="7302486331832100261">你通常會封鎖通知。如要允許通知,請輕觸 [詳細資料]。</translation>
 <translation id="7328017930301109123">使用精簡模式時,Chrome 可加快網頁載入速度,並可節省多達百分之 60 的數據用量。</translation>
 <translation id="7333031090786104871">仍在新增先前的網站</translation>
 <translation id="7352939065658542140">影片</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb
index 96b6e0e..5ea551c 100644
--- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb
+++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_zu.xtb
@@ -24,7 +24,6 @@
 <translation id="1171770572613082465">Bona amawebhusayithi adumile ngokuthepha inkinobho yokuthi "Amasayithi aphezulu"</translation>
 <translation id="1173894706177603556">Qamba kabusha</translation>
 <translation id="1178581264944972037">Misa isikhashana</translation>
-<translation id="118069123878619799">- izici zakho zomzimba, njengobude</translation>
 <translation id="1181037720776840403">Susa</translation>
 <translation id="1188239144602654184">Faka i-AR</translation>
 <translation id="1197267115302279827">Hambisa amabhukhimakhi</translation>
@@ -62,7 +61,6 @@
 <translation id="1384959399684842514">Ukulayisha kumiswe isikhashana</translation>
 <translation id="1386674309198842382">Isebenze ezinsukwini ezingu-<ph name="LAST_UPDATED" /> ezedlule</translation>
 <translation id="1397811292916898096">Sesha nge-<ph name="PRODUCT_NAME" /></translation>
-<translation id="1404122904123200417">Linamathiselwe ku-<ph name="WEBSITE_URL" /></translation>
 <translation id="1406000523432664303">'Ungalandeleli'</translation>
 <translation id="1407135791313364759">Vula konke</translation>
 <translation id="1409426117486808224">Ukubuka okwenziwe lula kumathebhu avuliwe</translation>
@@ -215,6 +213,7 @@
 <translation id="2534155362429831547"><ph name="NUMBER_OF_ITEMS" /> izinto ezisusiwe</translation>
 <translation id="2536728043171574184">Kubukwa ikhophi engaxhunyiwe kwi-inthanethi yaleli khasi</translation>
 <translation id="2537178555904266562">Iphutha ukuvumelanisa amaphasiwedi</translation>
+<translation id="2537296579376733324">Onke amakhukhi, kuleli sayithi kuphela</translation>
 <translation id="2546283357679194313">Amakhukhi nedatha yesayithi</translation>
 <translation id="2567385386134582609">ISITHOMBE</translation>
 <translation id="257088987046510401">Amatimu</translation>
@@ -472,6 +471,7 @@
 <translation id="4565377596337484307">Fihla iphasiwedi</translation>
 <translation id="4570913071927164677">Imininingwane</translation>
 <translation id="4572422548854449519">Ngena ngemvume ku-akhawunti ephethwe</translation>
+<translation id="4574741712540401491">•  <ph name="LIST_ITEM_TEXT" /></translation>
 <translation id="4583164079174244168">{MINUTES,plural, =1{# iminithi eledlule}one{# amaminithi adlule}other{# amaminithi adlule}}</translation>
 <translation id="4587589328781138893">Amasayithi</translation>
 <translation id="4594952190837476234">Leli khasi elingaxhunyiwe kwi-inthanethi livele ngo-<ph name="CREATION_TIME" /> futhi lingahluka kusukela kunguqulo eku-inthanethi.</translation>
@@ -652,7 +652,6 @@
 <translation id="5809361687334836369">{HOURS,plural, =1{# ihora eledlule}one{# amahora adlule}other{# amahora adlule}}</translation>
 <translation id="5810288467834065221">© <ph name="YEAR" /> Google LLC. Wonke amalungelo agodliwe.</translation>
 <translation id="5817918615728894473">Banqa</translation>
-<translation id="5819762621475381970">- isendlalelo segumbi lakho</translation>
 <translation id="583281660410589416">Akwaziwa</translation>
 <translation id="5833984609253377421">Yabelana ngesixhumanisi</translation>
 <translation id="5836192821815272682">Ilanda isibuyekezo se-Chrome…</translation>
@@ -753,6 +752,7 @@
 <translation id="6545017243486555795">Sula yonke idatha</translation>
 <translation id="6545864417968258051">Ukuskena kwe-Bluetooth</translation>
 <translation id="6560414384669816528">Isesha nge-Sogou</translation>
+<translation id="656065428026159829">Bona okwengeziwe</translation>
 <translation id="6566259936974865419">I-Chrome ikulondolozele okungu-<ph name="GIGABYTES" /> GB</translation>
 <translation id="6573096386450695060">Vumela njalo</translation>
 <translation id="6573431926118603307">Amathebhu owavule ku-Chrome kwamanye amadivayisi akho azovela lapha.</translation>
@@ -849,6 +849,7 @@
 <translation id="7293171162284876153">Ukuze uqale ukuvumelanisa, vula idatha yokuthi "Vumelanisa i-Chrome yakho".</translation>
 <translation id="729975465115245577">Idivayisi yakho ayinalo uhlelo lokusebenza lokulondoloza ifayela yephasiwedi.</translation>
 <translation id="7302081693174882195">Imininingwane: Ihlungwe ngenani ledatha elilondoloziwe</translation>
+<translation id="7302486331832100261">Uvamise ukuvimba izaziso. Ukuze uvumele, thepha imininingwane.</translation>
 <translation id="7328017930301109123">Kumodi elula, i-Chrome ilayisha amakhasi ngokushesha futhi isebenzisa kufikela kudatha encane ngokungu-60 wamaphesenti.</translation>
 <translation id="7333031090786104871">Isangeza isayithi langaphambilini</translation>
 <translation id="7352939065658542140">IVIDIYO</translation>
diff --git a/chrome/browser/ui/ash/accessibility/accessibility_controller_client_unittest.cc b/chrome/browser/ui/ash/accessibility/accessibility_controller_client_unittest.cc
index fb3a27eb..efa1560 100644
--- a/chrome/browser/ui/ash/accessibility/accessibility_controller_client_unittest.cc
+++ b/chrome/browser/ui/ash/accessibility/accessibility_controller_client_unittest.cc
@@ -10,7 +10,6 @@
 #include "chrome/browser/ui/ash/accessibility/fake_accessibility_controller.h"
 #include "chromeos/audio/chromeos_sounds.h"
 #include "content/public/test/browser_task_environment.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "ui/accessibility/ax_enums.mojom.h"
 
@@ -75,7 +74,6 @@
 
  private:
   content::BrowserTaskEnvironment task_environment_;
-  content::TestServiceManagerContext context_;
 
   DISALLOW_COPY_AND_ASSIGN(AccessibilityControllerClientTest);
 };
diff --git a/chrome/browser/ui/ash/accessibility/fake_accessibility_controller.h b/chrome/browser/ui/ash/accessibility/fake_accessibility_controller.h
index e955bbb..d4a1246 100644
--- a/chrome/browser/ui/ash/accessibility/fake_accessibility_controller.h
+++ b/chrome/browser/ui/ash/accessibility/fake_accessibility_controller.h
@@ -9,12 +9,6 @@
 #include "base/macros.h"
 
 // Fake implementation of ash's mojo AccessibilityController interface.
-//
-// This fake registers itself to ServiceManager on construction and deregisters
-// on destruction.
-//
-// Note: A ServiceManagerConnection must be initialized before constructing this
-// object. Consider using content::TestServiceManagerContext on your tests.
 class FakeAccessibilityController : ash::AccessibilityController {
  public:
   FakeAccessibilityController();
diff --git a/chrome/browser/ui/ash/assistant/proactive_suggestions_client_impl.cc b/chrome/browser/ui/ash/assistant/proactive_suggestions_client_impl.cc
index ec0c918..0ec85f0 100644
--- a/chrome/browser/ui/ash/assistant/proactive_suggestions_client_impl.cc
+++ b/chrome/browser/ui/ash/assistant/proactive_suggestions_client_impl.cc
@@ -108,9 +108,9 @@
     const TabStripModelChange& change,
     const TabStripSelectionChange& selection) {
   // When the currently active browser tab changes, that indicates there has
-  // been a change in the active contents.
+  // been a change in the active contents so we need to update active state.
   if (selection.active_tab_changed())
-    SetActiveContents(tab_strip_model->GetActiveWebContents());
+    UpdateActiveState();
 }
 
 void ProactiveSuggestionsClientImpl::DidStartNavigation(
@@ -161,6 +161,11 @@
 
   active_browser_ = browser;
 
+  // We observe the tab strip associated with the active browser so as to detect
+  // changes to the currently active tab.
+  if (active_browser_)
+    active_browser_->tab_strip_model()->AddObserver(this);
+
   // We need to update active state to conditionally observe the active browser.
   UpdateActiveState();
 }
@@ -220,8 +225,6 @@
     return;
   }
 
-  auto* tab_strip_model = active_browser_->tab_strip_model();
-
   // We never observe browsers that are off the record and we never observe
   // browsers when the Assistant feature is not allowed. We also don't observe
   // the browser when the user has disabled either Assistant or screen context
@@ -232,15 +235,10 @@
       !ash::AssistantState::Get()->settings_enabled().value_or(false) ||
       !ash::AssistantState::Get()->context_enabled().value_or(false) ||
       !IsHistorySyncEnabledWithoutPassphrase(profile_)) {
-    tab_strip_model->RemoveObserver(this);
     SetActiveContents(nullptr);
     return;
   }
 
-  // We observe the tab strip associated with the active browser so as to detect
-  // changes to the currently active tab.
-  tab_strip_model->AddObserver(this);
-
-  // Perform an initial sync of the active contents.
-  SetActiveContents(tab_strip_model->GetActiveWebContents());
+  // Perform a sync of the active contents.
+  SetActiveContents(active_browser_->tab_strip_model()->GetActiveWebContents());
 }
diff --git a/chrome/browser/ui/ash/drag_to_overview_interactive_uitest.cc b/chrome/browser/ui/ash/drag_to_overview_interactive_uitest.cc
index 2811e88..61f7343 100644
--- a/chrome/browser/ui/ash/drag_to_overview_interactive_uitest.cc
+++ b/chrome/browser/ui/ash/drag_to_overview_interactive_uitest.cc
@@ -142,7 +142,8 @@
   DISALLOW_COPY_AND_ASSIGN(DragToOverviewTest);
 };
 
-IN_PROC_BROWSER_TEST_F(DragToOverviewTest, DragWindow) {
+// TODO(https://crbug.com/1031526) flaky test
+IN_PROC_BROWSER_TEST_F(DragToOverviewTest, DISABLED_DragWindow) {
   BrowserView* browser_view = BrowserView::GetBrowserViewForBrowser(browser());
   aura::Window* browser_window = browser_view->GetWidget()->GetNativeWindow();
   gfx::Rect browser_screen_bounds = browser_window->GetBoundsInScreen();
diff --git a/chrome/browser/ui/ash/keyboard/chrome_keyboard_controller_client_test_helper.cc b/chrome/browser/ui/ash/keyboard/chrome_keyboard_controller_client_test_helper.cc
index 9bd6b0f..7b073f1 100644
--- a/chrome/browser/ui/ash/keyboard/chrome_keyboard_controller_client_test_helper.cc
+++ b/chrome/browser/ui/ash/keyboard/chrome_keyboard_controller_client_test_helper.cc
@@ -13,7 +13,6 @@
 #include "base/bind.h"
 #include "base/callback.h"
 #include "chrome/browser/profiles/profile.h"
-#include "services/service_manager/public/cpp/connector.h"
 
 class ChromeKeyboardControllerClientTestHelper::FakeKeyboardController
     : public ash::KeyboardController {
diff --git a/chrome/browser/ui/ash/keyboard/chrome_keyboard_controller_client_test_helper.h b/chrome/browser/ui/ash/keyboard/chrome_keyboard_controller_client_test_helper.h
index 9f9ef645..08e10d6 100644
--- a/chrome/browser/ui/ash/keyboard/chrome_keyboard_controller_client_test_helper.h
+++ b/chrome/browser/ui/ash/keyboard/chrome_keyboard_controller_client_test_helper.h
@@ -13,7 +13,6 @@
 class Profile;
 
 // Helper for tests depending on ChromeKeyboardControllerClient.
-// Tests must include a content::TestServiceManagerContext instance.
 class ChromeKeyboardControllerClientTestHelper {
  public:
   // Use this for tests using ChromeAshTestBase. TODO(stevenjb): Update tests to
diff --git a/chrome/browser/ui/ash/launcher/app_service_app_window_arc_tracker.cc b/chrome/browser/ui/ash/launcher/app_service_app_window_arc_tracker.cc
index 1fcf5c5..520381a7 100644
--- a/chrome/browser/ui/ash/launcher/app_service_app_window_arc_tracker.cc
+++ b/chrome/browser/ui/ash/launcher/app_service_app_window_arc_tracker.cc
@@ -120,6 +120,10 @@
       user_manager::UserManager::Get()->GetPrimaryUser()->GetAccountId());
 }
 
+void AppServiceAppWindowArcTracker::OnWindowDestroying(aura::Window* window) {
+  app_service_controller_->UnregisterWindow(window);
+}
+
 void AppServiceAppWindowArcTracker::OnAppStatesChanged(
     const std::string& app_id,
     const ArcAppListPrefs::AppInfo& app_info) {
diff --git a/chrome/browser/ui/ash/launcher/app_service_app_window_arc_tracker.h b/chrome/browser/ui/ash/launcher/app_service_app_window_arc_tracker.h
index c6372d7..611bc36 100644
--- a/chrome/browser/ui/ash/launcher/app_service_app_window_arc_tracker.h
+++ b/chrome/browser/ui/ash/launcher/app_service_app_window_arc_tracker.h
@@ -51,6 +51,9 @@
   // Invoked by controller to notify |window| visibility is changing.
   void OnWindowVisibilityChanging(aura::Window* window);
 
+  // Invoked by controller to notify |window| is destroying.
+  void OnWindowDestroying(aura::Window* window);
+
   // ArcAppListPrefs::Observer:
   void OnAppStatesChanged(const std::string& app_id,
                           const ArcAppListPrefs::AppInfo& app_info) override;
diff --git a/chrome/browser/ui/ash/launcher/app_service_app_window_crostini_tracker.cc b/chrome/browser/ui/ash/launcher/app_service_app_window_crostini_tracker.cc
index 410f072..5c148c35 100644
--- a/chrome/browser/ui/ash/launcher/app_service_app_window_crostini_tracker.cc
+++ b/chrome/browser/ui/ash/launcher/app_service_app_window_crostini_tracker.cc
@@ -5,6 +5,9 @@
 #include "chrome/browser/ui/ash/launcher/app_service_app_window_crostini_tracker.h"
 
 #include "ash/public/cpp/multi_user_window_manager.h"
+#include "ash/public/cpp/shelf_model.h"
+#include "base/containers/flat_tree.h"
+#include "base/time/time.h"
 #include "chrome/browser/chromeos/crostini/crostini_force_close_watcher.h"
 #include "chrome/browser/chromeos/crostini/crostini_registry_service.h"
 #include "chrome/browser/chromeos/crostini/crostini_registry_service_factory.h"
@@ -12,6 +15,8 @@
 #include "chrome/browser/chromeos/plugin_vm/plugin_vm_util.h"
 #include "chrome/browser/chromeos/profiles/profile_helper.h"
 #include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/ash/launcher/app_service_app_window_launcher_controller.h"
+#include "chrome/browser/ui/ash/launcher/app_service_app_window_launcher_item_controller.h"
 #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h"
 #include "chrome/browser/ui/ash/launcher/shelf_spinner_controller.h"
 #include "chrome/browser/ui/ash/multi_user/multi_user_window_manager_helper.h"
@@ -19,15 +24,22 @@
 #include "chrome/browser/ui/browser_finder.h"
 #include "chrome/common/chrome_features.h"
 #include "components/arc/arc_util.h"
+#include "components/exo/permission.h"
 #include "components/exo/shell_surface_util.h"
 #include "components/user_manager/user_manager.h"
 #include "ui/aura/window.h"
+#include "ui/base/base_window.h"
 #include "ui/display/display.h"
 #include "ui/display/screen.h"
 #include "ui/wm/core/window_util.h"
 
 namespace {
 
+// Time allowed for apps to self-activate after launch, see
+// go/crostini-self-activate for details.
+constexpr base::TimeDelta kSelfActivationTimeout =
+    base::TimeDelta::FromSeconds(5);
+
 void MoveWindowFromOldDisplayToNewDisplay(aura::Window* window,
                                           display::Display& old_display,
                                           display::Display& new_display) {
@@ -52,8 +64,9 @@
 
 }  // namespace
 
-AppServiceAppWindowCrostiniTracker::AppServiceAppWindowCrostiniTracker() =
-    default;
+AppServiceAppWindowCrostiniTracker::AppServiceAppWindowCrostiniTracker(
+    AppServiceAppWindowLauncherController* app_service_controller)
+    : app_service_controller_(app_service_controller) {}
 
 AppServiceAppWindowCrostiniTracker::~AppServiceAppWindowCrostiniTracker() =
     default;
@@ -137,18 +150,44 @@
 }
 
 void AppServiceAppWindowCrostiniTracker::OnWindowDestroying(
-    const std::string& app_id) {
+    const std::string& app_id,
+    aura::Window* window) {
   if (app_id != app_id_to_restart_)
     return;
   crostini::LaunchCrostiniApp(ChromeLauncherController::instance()->profile(),
                               app_id, display_id_to_restart_in_);
   app_id_to_restart_.clear();
+
+  base::EraseIf(activation_permissions_, [&window](const auto& element) {
+    return element.first == window;
+  });
 }
 
 void AppServiceAppWindowCrostiniTracker::OnAppLaunchRequested(
     const std::string& app_id,
     int64_t display_id) {
   crostini_app_display_.Register(app_id, display_id);
+  // Remove the old permissions and add a permission for every window the app
+  // currently has open.
+  activation_permissions_.clear();
+  ash::ShelfModel* model = app_service_controller_->owner()->shelf_model();
+  if (model->ItemIndexByAppID(app_id) >=
+      static_cast<int>(model->items().size()))
+    return;
+  AppWindowLauncherItemController* launcher_item_controller =
+      model->GetAppWindowLauncherItemController(
+          model->items()[model->ItemIndexByAppID(app_id)].id);
+  // Apps run for the first time won't have a launcher controller yet, return
+  // early because they won't have windows either so permissions aren't
+  // necessary.
+  if (!launcher_item_controller)
+    return;
+  for (ui::BaseWindow* app_window : launcher_item_controller->windows()) {
+    activation_permissions_.emplace(
+        app_window->GetNativeWindow(),
+        exo::GrantPermissionToActivate(app_window->GetNativeWindow(),
+                                       kSelfActivationTimeout));
+  }
 }
 
 void AppServiceAppWindowCrostiniTracker::Restart(const ash::ShelfID& shelf_id,
diff --git a/chrome/browser/ui/ash/launcher/app_service_app_window_crostini_tracker.h b/chrome/browser/ui/ash/launcher/app_service_app_window_crostini_tracker.h
index 0ebb88a..8cce99c 100644
--- a/chrome/browser/ui/ash/launcher/app_service_app_window_crostini_tracker.h
+++ b/chrome/browser/ui/ash/launcher/app_service_app_window_crostini_tracker.h
@@ -6,17 +6,25 @@
 #define CHROME_BROWSER_UI_ASH_LAUNCHER_APP_SERVICE_APP_WINDOW_CROSTINI_TRACKER_H_
 
 #include "ash/public/cpp/shelf_types.h"
+#include "base/containers/flat_map.h"
 #include "chrome/browser/ui/ash/launcher/crostini_app_display.h"
 
+class AppServiceAppWindowLauncherController;
+
 namespace aura {
 class Window;
 }
 
+namespace exo {
+class Permission;
+}
+
 // AppServiceAppWindowCrostiniTracker is used to handle Crostini app window
 // special cases, e.g. CrostiniAppDisplay, Crostini shelf app id, etc.
 class AppServiceAppWindowCrostiniTracker {
  public:
-  AppServiceAppWindowCrostiniTracker();
+  explicit AppServiceAppWindowCrostiniTracker(
+      AppServiceAppWindowLauncherController* app_service_controller);
   ~AppServiceAppWindowCrostiniTracker();
 
   AppServiceAppWindowCrostiniTracker(
@@ -26,7 +34,7 @@
 
   void OnWindowVisibilityChanging(aura::Window* window,
                                   const std::string& shelf_app_id);
-  void OnWindowDestroying(const std::string& app_id);
+  void OnWindowDestroying(const std::string& app_id, aura::Window* window);
 
   // A Crostini app with |app_id| is requested to launch on display with
   // |display_id|.
@@ -41,8 +49,15 @@
   void RegisterCrostiniWindowForForceClose(aura::Window* window,
                                            const std::string& app_name);
 
+  AppServiceAppWindowLauncherController* const app_service_controller_;
+
   CrostiniAppDisplay crostini_app_display_;
 
+  // Permission objects that allow this controller to manage which application
+  // windows can activate themselves.
+  base::flat_map<aura::Window*, std::unique_ptr<exo::Permission>>
+      activation_permissions_;
+
   // These two member variables track an app restart request. When
   // app_id_to_restart_ is not empty the controller observes that app and
   // relaunches it when all of its windows are closed.
diff --git a/chrome/browser/ui/ash/launcher/app_service_app_window_launcher_controller.cc b/chrome/browser/ui/ash/launcher/app_service_app_window_launcher_controller.cc
index f1b40ad9..d6cf82f 100644
--- a/chrome/browser/ui/ash/launcher/app_service_app_window_launcher_controller.cc
+++ b/chrome/browser/ui/ash/launcher/app_service_app_window_launcher_controller.cc
@@ -42,7 +42,8 @@
     arc_tracker_ = std::make_unique<AppServiceAppWindowArcTracker>(this);
 
   if (crostini::CrostiniFeatures::Get()->IsUIAllowed(owner->profile()))
-    crostini_tracker_ = std::make_unique<AppServiceAppWindowCrostiniTracker>();
+    crostini_tracker_ =
+        std::make_unique<AppServiceAppWindowCrostiniTracker>(this);
 }
 
 AppServiceAppWindowLauncherController::
@@ -199,10 +200,19 @@
   if (app_window_it == aura_window_to_app_window_.end())
     return;
 
+  // Note, for ARC apps, window may be recreated in some cases, so do not close
+  // controller on window destroying. Controller will be closed onTaskDestroyed
+  // event which is generated when actual task is destroyed.
+  if (arc_tracker_ && arc::GetWindowTaskId(window) != arc::kNoTaskId) {
+    arc_tracker_->OnWindowDestroying(window);
+    aura_window_to_app_window_.erase(app_window_it);
+    return;
+  }
+
   RemoveAppWindowFromShelf(app_window_it->second.get());
 
   if (!shelf_id.IsNull() && crostini_tracker_)
-    crostini_tracker_->OnWindowDestroying(shelf_id.app_id);
+    crostini_tracker_->OnWindowDestroying(shelf_id.app_id, window);
 
   aura_window_to_app_window_.erase(app_window_it);
 }
diff --git a/chrome/browser/ui/ash/session_controller_client_impl_unittest.cc b/chrome/browser/ui/ash/session_controller_client_impl_unittest.cc
index bc414ed..a8a4025 100644
--- a/chrome/browser/ui/ash/session_controller_client_impl_unittest.cc
+++ b/chrome/browser/ui/ash/session_controller_client_impl_unittest.cc
@@ -36,7 +36,6 @@
 #include "components/user_manager/scoped_user_manager.h"
 #include "components/user_manager/user_manager.h"
 #include "content/public/test/browser_task_environment.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "net/cert/x509_certificate.h"
 #include "net/test/cert_test_util.h"
 #include "net/test/test_data_directory.h"
@@ -191,7 +190,6 @@
   }
 
   content::BrowserTaskEnvironment task_environment_;
-  content::TestServiceManagerContext context_;
   std::unique_ptr<TestingProfileManager> profile_manager_;
   std::unique_ptr<AssistantClient> assistant_client_;
   session_manager::SessionManager session_manager_;
diff --git a/chrome/browser/ui/ash/test_login_screen.h b/chrome/browser/ui/ash/test_login_screen.h
index 8cd4ea1..1d5765e6 100644
--- a/chrome/browser/ui/ash/test_login_screen.h
+++ b/chrome/browser/ui/ash/test_login_screen.h
@@ -18,12 +18,6 @@
 }
 
 // Test implementation of ash's mojo LoginScreen interface.
-//
-// Registers itself to ServiceManager on construction and deregisters
-// on destruction.
-//
-// Note: A ServiceManagerConnection must be initialized before constructing this
-// object. Consider using content::TestServiceManagerContext on your tests.
 class TestLoginScreen : public ash::LoginScreen {
  public:
   TestLoginScreen();
diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc
index d1e6253..c36f5846 100644
--- a/chrome/browser/ui/browser.cc
+++ b/chrome/browser/ui/browser.cc
@@ -345,7 +345,8 @@
 Browser::CreateParams::CreateParams(const CreateParams& other) = default;
 
 // static
-Browser::CreateParams Browser::CreateParams::CreateForApp(
+Browser::CreateParams Browser::CreateParams::CreateForAppBase(
+    bool is_popup,
     const std::string& app_name,
     bool trusted_source,
     const gfx::Rect& window_bounds,
@@ -353,7 +354,8 @@
     bool user_gesture) {
   DCHECK(!app_name.empty());
 
-  CreateParams params(TYPE_APP, profile, user_gesture);
+  CreateParams params(is_popup ? Type::TYPE_APP_POPUP : Type::TYPE_APP, profile,
+                      user_gesture);
   params.app_name = app_name;
   params.trusted_source = trusted_source;
   params.initial_bounds = window_bounds;
@@ -362,6 +364,28 @@
 }
 
 // static
+Browser::CreateParams Browser::CreateParams::CreateForApp(
+    const std::string& app_name,
+    bool trusted_source,
+    const gfx::Rect& window_bounds,
+    Profile* profile,
+    bool user_gesture) {
+  return CreateForAppBase(false, app_name, trusted_source, window_bounds,
+                          profile, user_gesture);
+}
+
+// static
+Browser::CreateParams Browser::CreateParams::CreateForAppPopup(
+    const std::string& app_name,
+    bool trusted_source,
+    const gfx::Rect& window_bounds,
+    Profile* profile,
+    bool user_gesture) {
+  return CreateForAppBase(true, app_name, trusted_source, window_bounds,
+                          profile, user_gesture);
+}
+
+// static
 Browser::CreateParams Browser::CreateParams::CreateForDevTools(
     Profile* profile) {
   CreateParams params(TYPE_DEVTOOLS, profile, true);
@@ -709,7 +733,8 @@
   // If there is no title and this is an app, fall back on the app name. This
   // ensures that the native window gets a title which is important for a11y,
   // for example the window selector uses the Aura window title.
-  if (title.empty() && (is_type_app() || is_type_devtools()) &&
+  if (title.empty() &&
+      (is_type_app() || is_type_app_popup() || is_type_devtools()) &&
       include_app_name) {
     return base::UTF8ToUTF16(
         app_controller_ ? app_controller_->GetAppShortName() : app_name());
@@ -824,7 +849,7 @@
 
   bool notify_restore_service = is_type_normal() && tab_strip_model_->count();
 #if defined(USE_AURA) || defined(OS_MACOSX)
-  notify_restore_service |= is_type_app();
+  notify_restore_service |= is_type_app() || is_type_app_popup();
 #endif
 
   if (tab_restore_service && notify_restore_service)
@@ -1795,7 +1820,7 @@
   if (window_->IsFullscreen())
     return blink::mojom::DisplayMode::kFullscreen;
 
-  if (is_type_app() || is_type_devtools())
+  if (is_type_app() || is_type_devtools() || is_type_app_popup())
     return blink::mojom::DisplayMode::kStandalone;
 
   return blink::mojom::DisplayMode::kBrowser;
@@ -2753,6 +2778,7 @@
     case TYPE_NORMAL:
       return NormalBrowserSupportsWindowFeature(feature, check_can_support);
     case TYPE_POPUP:
+    case TYPE_APP_POPUP:
       return PopupBrowserSupportsWindowFeature(feature, check_can_support);
     case TYPE_APP:
       // TODO(crbug.com/992834): Change to TYPE_WEB_APP.
diff --git a/chrome/browser/ui/browser.h b/chrome/browser/ui/browser.h
index 73a31f7..28415c0 100644
--- a/chrome/browser/ui/browser.h
+++ b/chrome/browser/ui/browser.h
@@ -128,6 +128,10 @@
     TYPE_APP,
     // Devtools browser.
     TYPE_DEVTOOLS,
+    // App popup browser. It behaves like an app browser (e.g. it should have an
+    // AppBrowserController) but looks like a popup (e.g. it never has a tab
+    // strip).
+    TYPE_APP_POPUP,
     // If you add a new type, consider updating the test
     // BrowserTest.StartMaximized.
   };
@@ -188,6 +192,12 @@
                                      Profile* profile,
                                      bool user_gesture);
 
+    static CreateParams CreateForAppPopup(const std::string& app_name,
+                                          bool trusted_source,
+                                          const gfx::Rect& window_bounds,
+                                          Profile* profile,
+                                          bool user_gesture);
+
     static CreateParams CreateForDevTools(Profile* profile);
 
     // The browser type.
@@ -228,8 +238,15 @@
     friend class Browser;
     friend class WindowSizerAshTest;
 
+    static CreateParams CreateForAppBase(bool is_popup,
+                                         const std::string& app_name,
+                                         bool trusted_source,
+                                         const gfx::Rect& window_bounds,
+                                         Profile* profile,
+                                         bool user_gesture);
+
     // The application name that is also the name of the window to the shell.
-    // Do not set this value directly, use CreateForApp.
+    // Do not set this value directly, use CreateForApp/CreateForAppPopup.
     // This name will be set for:
     // 1) v1 applications launched via an application shortcut or extension API.
     // 2) undocked devtool windows.
@@ -585,13 +602,16 @@
   bool is_type_normal() const { return type_ == TYPE_NORMAL; }
   bool is_type_popup() const { return type_ == TYPE_POPUP; }
   bool is_type_app() const { return type_ == TYPE_APP; }
+  bool is_type_app_popup() const { return type_ == TYPE_APP_POPUP; }
   bool is_type_devtools() const { return type_ == TYPE_DEVTOOLS; }
   // TODO(crbug.com/990158): |deprecated_is_app()| is added for backwards
   // compatibility for previous callers to |is_app()| which returned true when
-  // |app_name_| is non-empty.  This includes TYPE_APP and TYPE_DEVTOOLS.
-  // Existing callers should change to use the appropriate is_type_* functions.
+  // |app_name_| is non-empty.  This includes TYPE_APP, TYPE_DEVTOOLS and
+  // TYPE_APP_POPUP. Existing callers should change to use the appropriate
+  // is_type_* functions.
   bool deprecated_is_app() const {
-    return type_ == TYPE_APP || type_ == TYPE_DEVTOOLS;
+    return type_ == TYPE_APP || type_ == TYPE_DEVTOOLS ||
+           type_ == TYPE_APP_POPUP;
   }
 
   // True when the mouse cursor is locked.
diff --git a/chrome/browser/ui/browser_browsertest.cc b/chrome/browser/ui/browser_browsertest.cc
index edff5989..d17a197 100644
--- a/chrome/browser/ui/browser_browsertest.cc
+++ b/chrome/browser/ui/browser_browsertest.cc
@@ -1581,7 +1581,9 @@
       Browser::CreateParams(Browser::TYPE_POPUP, browser()->profile(), true),
       Browser::CreateParams::CreateForApp("app_name", true, gfx::Rect(),
                                           browser()->profile(), true),
-      Browser::CreateParams::CreateForDevTools(browser()->profile())};
+      Browser::CreateParams::CreateForDevTools(browser()->profile()),
+      Browser::CreateParams::CreateForAppPopup("app_name", true, gfx::Rect(),
+                                               browser()->profile(), true)};
   for (size_t i = 0; i < base::size(params); ++i) {
     params[i].initial_show_state = ui::SHOW_STATE_MAXIMIZED;
     AddBlankTabAndShow(new Browser(params[i]));
@@ -1596,7 +1598,9 @@
       Browser::CreateParams(Browser::TYPE_POPUP, browser()->profile(), true),
       Browser::CreateParams::CreateForApp("app_name", true, gfx::Rect(),
                                           browser()->profile(), true),
-      Browser::CreateParams::CreateForDevTools(browser()->profile())};
+      Browser::CreateParams::CreateForDevTools(browser()->profile()),
+      Browser::CreateParams::CreateForAppPopup("app_name", true, gfx::Rect(),
+                                               browser()->profile(), true)};
   for (size_t i = 0; i < base::size(params); ++i) {
     params[i].initial_show_state = ui::SHOW_STATE_MINIMIZED;
     AddBlankTabAndShow(new Browser(params[i]));
diff --git a/chrome/browser/ui/extensions/application_launch.cc b/chrome/browser/ui/extensions/application_launch.cc
index 3ef2ce8..3e4498d 100644
--- a/chrome/browser/ui/extensions/application_launch.cc
+++ b/chrome/browser/ui/extensions/application_launch.cc
@@ -391,8 +391,16 @@
 
   // TODO(erg): AppLaunchParams should pass through the user_gesture from the
   // extension system here.
-  Browser::CreateParams browser_params(Browser::CreateParams::CreateForApp(
-      app_name, true /* trusted_source */, initial_bounds, profile, true));
+  Browser::CreateParams browser_params(
+      params.disposition == WindowOpenDisposition::NEW_POPUP
+          ? Browser::CreateParams::CreateForAppPopup(app_name,
+                                                     /*trusted_source=*/true,
+                                                     initial_bounds, profile,
+                                                     /*user_gesture=*/true)
+          : Browser::CreateParams::CreateForApp(app_name,
+                                                /*trusted_source=*/true,
+                                                initial_bounds, profile,
+                                                /*user_gesture=*/true));
 
   browser_params.initial_show_state =
       DetermineWindowShowState(profile, params.container, extension);
@@ -400,12 +408,11 @@
   return new Browser(browser_params);
 }
 
-WebContents* ShowApplicationWindow(Profile* profile,
-                                   const apps::AppLaunchParams& params,
-                                   const GURL& default_url,
-                                   Browser* browser,
-                                   WindowOpenDisposition disposition) {
-  const Extension* const extension = GetExtension(profile, params);
+WebContents* NavigateApplicationWindow(Browser* browser,
+                                       const apps::AppLaunchParams& params,
+                                       const GURL& default_url,
+                                       WindowOpenDisposition disposition) {
+  const Extension* const extension = GetExtension(browser->profile(), params);
   ui::PageTransition transition =
       (extension ? ui::PAGE_TRANSITION_AUTO_BOOKMARK
                  : ui::PAGE_TRANSITION_AUTO_TOPLEVEL);
@@ -414,7 +421,7 @@
 
   if (extension && extension->from_bookmark()) {
     web_app::FileHandlerManager& file_handler_manager =
-        web_app::WebAppProviderBase::GetProviderBase(profile)
+        web_app::WebAppProviderBase::GetProviderBase(browser->profile())
             ->file_handler_manager();
     url = file_handler_manager
               .GetMatchingFileHandlerURL(params.app_id, params.launch_files)
@@ -427,8 +434,14 @@
 
   WebContents* web_contents = nav_params.navigated_or_inserted_contents;
 
+  // TODO(https://crbug.com/1034361):
+  // Once WebAppBrowserController implements TabInserted and TabRemoved, remove
+  // the following call.
   extensions::HostedAppBrowserController::SetAppPrefsForWebContents(
       browser->app_controller(), web_contents);
+
+  // TODO(https://crbug.com/1032443):
+  // Eventually move this to browser_navigator.cc: CreateTargetContents().
   if (extension && extension->from_bookmark()) {
     web_app::WebAppTabHelper* tab_helper =
         web_app::WebAppTabHelper::FromWebContents(web_contents);
@@ -436,17 +449,6 @@
     tab_helper->SetAppId(extension->id());
   }
 
-  browser->window()->Show();
-
-  // TODO(jcampan): http://crbug.com/8123 we should not need to set the initial
-  //                focus explicitly.
-  web_contents->SetInitialFocus();
-
-  if (base::FeatureList::IsEnabled(blink::features::kFileHandlingAPI)) {
-    web_launch::WebLaunchFilesHelper::SetLaunchPaths(web_contents, url,
-                                                     params.launch_files);
-  }
-
   return web_contents;
 }
 
@@ -454,8 +456,16 @@
                                    const apps::AppLaunchParams& params,
                                    const GURL& url) {
   Browser* browser = CreateApplicationWindow(profile, params, url);
-  return ShowApplicationWindow(profile, params, url, browser,
-                               WindowOpenDisposition::NEW_FOREGROUND_TAB);
+  WebContents* web_contents = NavigateApplicationWindow(
+      browser, params, url, WindowOpenDisposition::NEW_FOREGROUND_TAB);
+
+  if (base::FeatureList::IsEnabled(blink::features::kFileHandlingAPI)) {
+    web_launch::WebLaunchFilesHelper::SetLaunchPaths(
+        web_contents, web_contents->GetURL(), params.launch_files);
+  }
+
+  browser->window()->Show();
+  return web_contents;
 }
 
 void OpenApplicationWithReenablePrompt(Profile* profile,
diff --git a/chrome/browser/ui/extensions/application_launch.h b/chrome/browser/ui/extensions/application_launch.h
index 2de8b1a..3baed70 100644
--- a/chrome/browser/ui/extensions/application_launch.h
+++ b/chrome/browser/ui/extensions/application_launch.h
@@ -35,12 +35,12 @@
                                  const apps::AppLaunchParams& params,
                                  const GURL& url);
 
-// Show the application window that's already created.
-content::WebContents* ShowApplicationWindow(Profile* profile,
-                                            const apps::AppLaunchParams& params,
-                                            const GURL& url,
-                                            Browser* browser,
-                                            WindowOpenDisposition disposition);
+// Navigate application window to application url, but do not show it yet.
+content::WebContents* NavigateApplicationWindow(
+    Browser* browser,
+    const apps::AppLaunchParams& params,
+    const GURL& url,
+    WindowOpenDisposition disposition);
 
 // Open the application in a way specified by |params| in a new window.
 content::WebContents* OpenApplicationWindow(Profile* profile,
diff --git a/chrome/browser/ui/global_media_controls/media_notification_service_unittest.cc b/chrome/browser/ui/global_media_controls/media_notification_service_unittest.cc
index 0f49aae..ba6d8be 100644
--- a/chrome/browser/ui/global_media_controls/media_notification_service_unittest.cc
+++ b/chrome/browser/ui/global_media_controls/media_notification_service_unittest.cc
@@ -10,6 +10,7 @@
 #include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/unguessable_token.h"
+#include "build/build_config.h"
 #include "chrome/browser/media/router/media_router_factory.h"
 #include "chrome/browser/media/router/test/mock_media_router.h"
 #include "chrome/browser/ui/global_media_controls/cast_media_notification_provider.h"
@@ -602,7 +603,13 @@
       1);
 }
 
-TEST_F(MediaNotificationServiceCastTest, CountCastSessionsAsActive) {
+// TODO(https://crbug.com/1034406) Flaky on Mac10.12
+#if defined(OS_MACOSX)
+#define MAYBE_CountCastSessionsAsActive DISABLED_CountCastSessionsAsActive
+#else
+#define MAYBE_CountCastSessionsAsActive CountCastSessionsAsActive
+#endif
+TEST_F(MediaNotificationServiceCastTest, MAYBE_CountCastSessionsAsActive) {
   media_router::MediaRoute media_route("id",
                                        media_router::MediaSource("source_id"),
                                        "sink_id", "description", true, true);
diff --git a/chrome/browser/ui/search/local_ntp_promos_browsertest.cc b/chrome/browser/ui/search/local_ntp_promos_browsertest.cc
index 9d1d1aaa0..5cdefce 100644
--- a/chrome/browser/ui/search/local_ntp_promos_browsertest.cc
+++ b/chrome/browser/ui/search/local_ntp_promos_browsertest.cc
@@ -202,10 +202,10 @@
 // Tests are disabled until we implement a way to navigate to chrome scheme
 // links from the NTP.
 IN_PROC_BROWSER_TEST_F(LocalNTPPromoTest,
-                       DISABLED_PromoWithPriviligedLinkAndPermission) {
+                       PromoWithExtensionsLinkAndPermission) {
   PromoData promo;
   promo.promo_html = "<div><a href=\"chrome://extensions\">promo</a></div>";
-  promo.can_open_privileged_links = true;
+  promo.can_open_extensions_page = true;
   promo_service()->SetupWithPromo(promo);
 
   base::HistogramTester histograms;
@@ -243,8 +243,7 @@
   histograms.ExpectTotalCount("NewTabPage.Promos.ShownTime", 1);
 }
 
-IN_PROC_BROWSER_TEST_F(LocalNTPPromoTest,
-                       DISABLED_PromoWithPriviligedLinkNoPermission) {
+IN_PROC_BROWSER_TEST_F(LocalNTPPromoTest, PromoWithExtensionsLinkNoPermission) {
   PromoData promo;
   promo.promo_html = "<div><a href=\"chrome://extensions\">promo</a></div>";
   promo_service()->SetupWithPromo(promo);
diff --git a/chrome/browser/ui/search/search_ipc_router.cc b/chrome/browser/ui/search/search_ipc_router.cc
index 9c4cb08..bf1c824 100644
--- a/chrome/browser/ui/search/search_ipc_router.cc
+++ b/chrome/browser/ui/search/search_ipc_router.cc
@@ -487,6 +487,18 @@
   delegate_->BlocklistPromo(promo_id);
 }
 
+void SearchIPCRouter::OpenExtensionsPage(double button,
+                                         bool alt_key,
+                                         bool ctrl_key,
+                                         bool meta_key,
+                                         bool shift_key) {
+  if (!policy_->ShouldProcessOpenExtensionsPage()) {
+    return;
+  }
+
+  delegate_->OpenExtensionsPage(button, alt_key, ctrl_key, meta_key, shift_key);
+}
+
 void SearchIPCRouter::OpenAutocompleteMatch(
     uint8_t line,
     const GURL& url,
diff --git a/chrome/browser/ui/search/search_ipc_router.h b/chrome/browser/ui/search/search_ipc_router.h
index 7e52d7e..0e3c3c3a6 100644
--- a/chrome/browser/ui/search/search_ipc_router.h
+++ b/chrome/browser/ui/search/search_ipc_router.h
@@ -163,6 +163,12 @@
 
     virtual void BlocklistPromo(const std::string& promo_id) = 0;
 
+    virtual void OpenExtensionsPage(double button,
+                                    bool alt_key,
+                                    bool ctrl_key,
+                                    bool meta_key,
+                                    bool shift_key) = 0;
+
     virtual void OpenAutocompleteMatch(uint8_t line,
                                        const GURL& url,
                                        bool are_matches_showing,
@@ -216,6 +222,7 @@
     virtual bool ShouldProcessQueryAutocomplete(bool is_active_tab) = 0;
     virtual bool ShouldProcessStopAutocomplete() = 0;
     virtual bool ShouldProcessBlocklistPromo() = 0;
+    virtual bool ShouldProcessOpenExtensionsPage() = 0;
     virtual bool ShouldProcessOpenAutocompleteMatch(bool is_active_tab) = 0;
     virtual bool ShouldProcessDeleteAutocompleteMatch() = 0;
   };
@@ -330,6 +337,11 @@
                          bool prevent_inline_autocomplete) override;
   void StopAutocomplete(bool clear_result) override;
   void BlocklistPromo(const std::string& promo_id) override;
+  void OpenExtensionsPage(double button,
+                          bool alt_key,
+                          bool ctrl_key,
+                          bool meta_key,
+                          bool shift_key) override;
   void OpenAutocompleteMatch(uint8_t line,
                              const GURL& url,
                              bool are_matches_showing,
diff --git a/chrome/browser/ui/search/search_ipc_router_policy_impl.cc b/chrome/browser/ui/search/search_ipc_router_policy_impl.cc
index c111c9e6..94184f8 100644
--- a/chrome/browser/ui/search/search_ipc_router_policy_impl.cc
+++ b/chrome/browser/ui/search/search_ipc_router_policy_impl.cc
@@ -150,6 +150,10 @@
   return !is_incognito_ && search::IsInstantNTP(web_contents_);
 }
 
+bool SearchIPCRouterPolicyImpl::ShouldProcessOpenExtensionsPage() {
+  return !is_incognito_ && search::IsInstantNTP(web_contents_);
+}
+
 bool SearchIPCRouterPolicyImpl::ShouldProcessOpenAutocompleteMatch(
     bool is_active_tab) {
   return is_active_tab && !is_incognito_ && search::IsInstantNTP(web_contents_);
diff --git a/chrome/browser/ui/search/search_ipc_router_policy_impl.h b/chrome/browser/ui/search/search_ipc_router_policy_impl.h
index 286ddedb..6751296d 100644
--- a/chrome/browser/ui/search/search_ipc_router_policy_impl.h
+++ b/chrome/browser/ui/search/search_ipc_router_policy_impl.h
@@ -58,6 +58,7 @@
   bool ShouldProcessQueryAutocomplete(bool is_active_tab) override;
   bool ShouldProcessStopAutocomplete() override;
   bool ShouldProcessBlocklistPromo() override;
+  bool ShouldProcessOpenExtensionsPage() override;
   bool ShouldProcessOpenAutocompleteMatch(bool is_active_tab) override;
   bool ShouldProcessDeleteAutocompleteMatch() override;
 
diff --git a/chrome/browser/ui/search/search_ipc_router_unittest.cc b/chrome/browser/ui/search/search_ipc_router_unittest.cc
index e7905ce..7bf6daa 100644
--- a/chrome/browser/ui/search/search_ipc_router_unittest.cc
+++ b/chrome/browser/ui/search/search_ipc_router_unittest.cc
@@ -109,6 +109,12 @@
                     bool prevent_inline_autocomplete));
   MOCK_METHOD1(StopAutocomplete, void(bool clear_result));
   MOCK_METHOD1(BlocklistPromo, void(const std::string& promo_id));
+  MOCK_METHOD5(OpenExtensionsPage,
+               void(double button,
+                    bool alt_key,
+                    bool ctrl_key,
+                    bool meta_key,
+                    bool shift_key));
   MOCK_METHOD9(OpenAutocompleteMatch,
                void(uint8_t line,
                     const GURL& url,
@@ -157,6 +163,7 @@
   MOCK_METHOD1(ShouldProcessQueryAutocomplete, bool(bool));
   MOCK_METHOD0(ShouldProcessStopAutocomplete, bool());
   MOCK_METHOD0(ShouldProcessBlocklistPromo, bool());
+  MOCK_METHOD0(ShouldProcessOpenExtensionsPage, bool());
   MOCK_METHOD1(ShouldProcessOpenAutocompleteMatch, bool(bool));
   MOCK_METHOD0(ShouldProcessDeleteAutocompleteMatch, bool());
 };
diff --git a/chrome/browser/ui/search/search_tab_helper.cc b/chrome/browser/ui/search/search_tab_helper.cc
index 2ecc78f..8f0869f 100644
--- a/chrome/browser/ui/search/search_tab_helper.cc
+++ b/chrome/browser/ui/search/search_tab_helper.cc
@@ -753,6 +753,23 @@
   promo_service->BlocklistPromo(promo_id);
 }
 
+void SearchTabHelper::OpenExtensionsPage(double button,
+                                         bool alt_key,
+                                         bool ctrl_key,
+                                         bool meta_key,
+                                         bool shift_key) {
+  if (!search::DefaultSearchProviderIsGoogle(profile()))
+    return;
+  bool middle_button = (button == 1.0);
+  WindowOpenDisposition disposition = ui::DispositionFromClick(
+      middle_button, alt_key, ctrl_key, meta_key, shift_key);
+  if (button > 1)
+    disposition = WindowOpenDisposition::NEW_FOREGROUND_TAB;
+  web_contents_->OpenURL(content::OpenURLParams(
+      GURL(chrome::kChromeUIExtensionsURL), content::Referrer(), disposition,
+      ui::PAGE_TRANSITION_LINK, false));
+}
+
 void SearchTabHelper::OpenAutocompleteMatch(
     uint8_t line,
     const GURL& url,
diff --git a/chrome/browser/ui/search/search_tab_helper.h b/chrome/browser/ui/search/search_tab_helper.h
index b1c4f52..760b242c 100644
--- a/chrome/browser/ui/search/search_tab_helper.h
+++ b/chrome/browser/ui/search/search_tab_helper.h
@@ -143,6 +143,11 @@
   void DeleteAutocompleteMatch(uint8_t line) override;
   void StopAutocomplete(bool clear_result) override;
   void BlocklistPromo(const std::string& promo_id) override;
+  void OpenExtensionsPage(double button,
+                          bool alt_key,
+                          bool ctrl_key,
+                          bool meta_key,
+                          bool shift_key) override;
   void OpenAutocompleteMatch(uint8_t line,
                              const GURL& url,
                              bool are_matches_showing,
diff --git a/chrome/browser/ui/settings_window_manager_browsertest_chromeos.cc b/chrome/browser/ui/settings_window_manager_browsertest_chromeos.cc
index ad61c1c..750f461 100644
--- a/chrome/browser/ui/settings_window_manager_browsertest_chromeos.cc
+++ b/chrome/browser/ui/settings_window_manager_browsertest_chromeos.cc
@@ -5,7 +5,6 @@
 #include <stddef.h>
 
 #include "base/macros.h"
-#include "base/test/scoped_feature_list.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/browser_finder.h"
 #include "chrome/browser/ui/browser_list.h"
@@ -50,30 +49,20 @@
 
 }  // namespace
 
-class SettingsWindowManagerTest : public InProcessBrowserTest,
-                                  public ::testing::WithParamInterface<bool> {
+class SettingsWindowManagerTest : public InProcessBrowserTest {
  public:
   SettingsWindowManagerTest()
       : settings_manager_(chrome::SettingsWindowManager::GetInstance()) {
     settings_manager_->AddObserver(&observer_);
-    if (EnableSystemWebApps())
-      scoped_feature_list_.InitAndEnableFeature(features::kSystemWebApps);
-    else
-      scoped_feature_list_.InitAndDisableFeature(features::kSystemWebApps);
   }
 
   void SetUpOnMainThread() override {
-    if (!EnableSystemWebApps())
-      return;
-
     // Install the Settings App.
     web_app::WebAppProvider::Get(browser()->profile())
         ->system_web_app_manager()
         .InstallSystemAppsForTesting();
   }
 
-  bool EnableSystemWebApps() { return GetParam(); }
-
   ~SettingsWindowManagerTest() override {
     settings_manager_->RemoveObserver(&observer_);
   }
@@ -98,12 +87,11 @@
  protected:
   chrome::SettingsWindowManager* settings_manager_;
   SettingsWindowTestObserver observer_;
-  base::test::ScopedFeatureList scoped_feature_list_;
 
   DISALLOW_COPY_AND_ASSIGN(SettingsWindowManagerTest);
 };
 
-IN_PROC_BROWSER_TEST_P(SettingsWindowManagerTest, OpenSettingsWindow) {
+IN_PROC_BROWSER_TEST_F(SettingsWindowManagerTest, OpenSettingsWindow) {
   // Open a settings window.
   settings_manager_->ShowOSSettings(browser()->profile());
   Browser* settings_browser =
@@ -120,20 +108,17 @@
   EXPECT_EQ(1u, observer_.new_settings_count());
 
   // Launching via application_launch.h should also dedupe to the same browser.
-  if (EnableSystemWebApps()) {
-    web_app::AppId settings_app_id = *web_app::GetAppIdForSystemWebApp(
-        browser()->profile(), web_app::SystemAppType::SETTINGS);
-    content::WebContents* contents = OpenApplication(
-        browser()->profile(),
-        apps::AppLaunchParams(
-            settings_app_id,
-            apps::mojom::LaunchContainer::kLaunchContainerWindow,
-            WindowOpenDisposition::NEW_WINDOW,
-            apps::mojom::AppLaunchSource::kSourceCommandLine));
-    EXPECT_EQ(contents,
-              settings_browser->tab_strip_model()->GetActiveWebContents());
-    EXPECT_EQ(1u, observer_.new_settings_count());
-  }
+  web_app::AppId settings_app_id = *web_app::GetAppIdForSystemWebApp(
+      browser()->profile(), web_app::SystemAppType::SETTINGS);
+  content::WebContents* contents = OpenApplication(
+      browser()->profile(),
+      apps::AppLaunchParams(
+          settings_app_id, apps::mojom::LaunchContainer::kLaunchContainerWindow,
+          WindowOpenDisposition::NEW_WINDOW,
+          apps::mojom::AppLaunchSource::kSourceCommandLine));
+  EXPECT_EQ(contents,
+            settings_browser->tab_strip_model()->GetActiveWebContents());
+  EXPECT_EQ(1u, observer_.new_settings_count());
 
   // Close the settings window.
   CloseBrowserSynchronously(settings_browser);
@@ -149,7 +134,7 @@
   CloseBrowserSynchronously(settings_browser2);
 }
 
-IN_PROC_BROWSER_TEST_P(SettingsWindowManagerTest, OpenChromePages) {
+IN_PROC_BROWSER_TEST_F(SettingsWindowManagerTest, OpenChromePages) {
   EXPECT_EQ(1u, chrome::GetTotalBrowserCount());
 
   // History should open in the existing browser window.
@@ -200,14 +185,14 @@
   base::test::ScopedFeatureList feature_list_;
 };
 
-IN_PROC_BROWSER_TEST_P(SettingsWindowManagerTestWithSplitSettings,
+IN_PROC_BROWSER_TEST_F(SettingsWindowManagerTestWithSplitSettings,
                        OpenAboutPageSplitSettings) {
   // About should open settings window when split settings feature flag is on.
   chrome::ShowAboutChrome(browser());
   EXPECT_EQ(1u, chrome::GetTotalBrowserCount());
 }
 
-IN_PROC_BROWSER_TEST_P(SettingsWindowManagerTestWithoutSplitSettings,
+IN_PROC_BROWSER_TEST_F(SettingsWindowManagerTestWithoutSplitSettings,
                        OpenAboutPage) {
   // About should open a new browser window when split settings feature flag is
   // off.
@@ -215,7 +200,7 @@
   EXPECT_EQ(2u, chrome::GetTotalBrowserCount());
 }
 
-IN_PROC_BROWSER_TEST_P(SettingsWindowManagerTestWithSplitSettings,
+IN_PROC_BROWSER_TEST_F(SettingsWindowManagerTestWithSplitSettings,
                        SplitSettings) {
   EXPECT_EQ(1u, chrome::GetTotalBrowserCount());
 
@@ -246,8 +231,3 @@
   chrome::ShowSettingsSubPage(browser(), chrome::kAutofillSubPage);
   EXPECT_EQ(1u, chrome::GetTotalBrowserCount());
 }
-
-INSTANTIATE_TEST_SUITE_P(
-    All,
-    SettingsWindowManagerTest,
-    ::testing::Bool());
diff --git a/chrome/browser/ui/settings_window_manager_chromeos.cc b/chrome/browser/ui/settings_window_manager_chromeos.cc
index 30a33b7..5d1ec1a 100644
--- a/chrome/browser/ui/settings_window_manager_chromeos.cc
+++ b/chrome/browser/ui/settings_window_manager_chromeos.cc
@@ -70,7 +70,7 @@
   if (web_app::SystemWebAppManager::IsEnabled()) {
     bool did_create;
     Browser* browser = web_app::LaunchSystemWebApp(
-        profile, web_app::SystemAppType::SETTINGS, gurl, &did_create);
+        profile, web_app::SystemAppType::SETTINGS, gurl, false, &did_create);
     ShowSettingsOnCurrentDesktop(browser);
     // Only notify if we created a new browser.
     if (!did_create || !browser)
diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc
index 512f2d38..03e6599 100644
--- a/chrome/browser/ui/tab_helpers.cc
+++ b/chrome/browser/ui/tab_helpers.cc
@@ -92,8 +92,7 @@
 #include "components/history/core/browser/top_sites.h"
 #include "components/offline_pages/buildflags/buildflags.h"
 #include "components/password_manager/core/browser/password_manager.h"
-#include "components/performance_manager/performance_manager_tab_helper.h"
-#include "components/performance_manager/public/performance_manager.h"
+#include "components/performance_manager/embedder/performance_manager_registry.h"
 #include "components/subresource_filter/core/browser/subresource_filter_features.h"
 #include "components/tracing/common/tracing_switches.h"
 #include "components/ukm/content/source_url_recorder.h"
@@ -381,9 +380,9 @@
   if (base::FeatureList::IsEnabled(media::kUseMediaHistoryStore))
     MediaHistoryContentsObserver::CreateForWebContents(web_contents);
 
-  if (performance_manager::PerformanceManager::IsAvailable()) {
-    performance_manager::PerformanceManagerTabHelper::CreateForWebContents(
-        web_contents);
+  if (auto* performance_manager_registry =
+          performance_manager::PerformanceManagerRegistry::GetInstance()) {
+    performance_manager_registry->CreatePageNodeForWebContents(web_contents);
   }
 
   // TODO(siggi): Remove this once the Resource Coordinator refactoring is done.
diff --git a/chrome/browser/ui/ui_features.cc b/chrome/browser/ui/ui_features.cc
index c347bfd..6edc6f8 100644
--- a/chrome/browser/ui/ui_features.cc
+++ b/chrome/browser/ui/ui_features.cc
@@ -9,7 +9,7 @@
 // Enables an animated avatar button (also called identity pill). See
 // https://crbug.com/967317
 const base::Feature kAnimatedAvatarButton{"AnimatedAvatarButton",
-                                          base::FEATURE_DISABLED_BY_DEFAULT};
+                                          base::FEATURE_ENABLED_BY_DEFAULT};
 // Enables an animated avatar button on the sign-in trigger. This feature is
 // guarded by kAnimatedAvatarButton and serves as a kill-switch. See
 // https://crbug.com/967317
@@ -43,7 +43,7 @@
 // Enables the new version of the profile menu(aka user menu).
 // https://crbug.com/966388
 const base::Feature kProfileMenuRevamp{"ProfileMenuRevamp",
-                                       base::FEATURE_DISABLED_BY_DEFAULT};
+                                       base::FEATURE_ENABLED_BY_DEFAULT};
 
 // Enables a more prominent active tab title in dark mode to aid with
 // accessibility.
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc
index 882bafa3..70dcea8e 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc
+++ b/chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc
@@ -176,7 +176,6 @@
         DISTANCE_RELATED_LABEL_HORIZONTAL_LIST));
     views::InstallPillHighlightPathGenerator(this);
     SetInkDropMode(InkDropMode::ON);
-    set_has_ink_drop_action_on_click(true);
     set_ink_drop_visible_opacity(kToolbarInkDropVisibleOpacity);
     show_animation_ = std::make_unique<gfx::SlideAnimation>(this);
     if (!animations_enabled) {
diff --git a/chrome/browser/ui/views/desktop_capture/desktop_media_list_view.cc b/chrome/browser/ui/views/desktop_capture/desktop_media_list_view.cc
index 303a9fa..a82bfa4 100644
--- a/chrome/browser/ui/views/desktop_capture/desktop_media_list_view.cc
+++ b/chrome/browser/ui/views/desktop_capture/desktop_media_list_view.cc
@@ -43,7 +43,8 @@
   // windows without Browser association as apps.
   // Technically dev tool is actually a special app, but we would like to
   // display product logo for it, because intuitively it is internal to browser.
-  bool is_app = !browser || browser->is_type_app();
+  bool is_app =
+      !browser || browser->is_type_app() || browser->is_type_app_popup();
   int idr = is_app ? IDR_APP_DEFAULT_ICON : IDR_PRODUCT_LOGO_32;
 
   ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
diff --git a/chrome/browser/ui/views/download/download_danger_prompt_views.cc b/chrome/browser/ui/views/download/download_danger_prompt_views.cc
index 7b98574..2183806 100644
--- a/chrome/browser/ui/views/download/download_danger_prompt_views.cc
+++ b/chrome/browser/ui/views/download/download_danger_prompt_views.cc
@@ -235,6 +235,7 @@
             IDS_PROMPT_DOWNLOAD_CHANGES_SETTINGS,
             download_->GetFileNameToReportUser().LossyDisplayName());
       }
+      case download::DOWNLOAD_DANGER_TYPE_PROMPT_FOR_SCANNING:
       case download::DOWNLOAD_DANGER_TYPE_SENSITIVE_CONTENT_WARNING:
       case download::DOWNLOAD_DANGER_TYPE_SENSITIVE_CONTENT_BLOCK:
       case download::DOWNLOAD_DANGER_TYPE_DEEP_SCANNED_SAFE:
diff --git a/chrome/browser/ui/views/download/download_item_view.cc b/chrome/browser/ui/views/download/download_item_view.cc
index 38d8c54..100edb1 100644
--- a/chrome/browser/ui/views/download/download_item_view.cc
+++ b/chrome/browser/ui/views/download/download_item_view.cc
@@ -1079,6 +1079,7 @@
       return gfx::CreateVectorIcon(vector_icons::kErrorIcon, GetErrorIconSize(),
                                    gfx::kGoogleGrey600);
 
+    case download::DOWNLOAD_DANGER_TYPE_PROMPT_FOR_SCANNING:
     case download::DOWNLOAD_DANGER_TYPE_DEEP_SCANNED_SAFE:
     case download::DOWNLOAD_DANGER_TYPE_DEEP_SCANNED_OPENED_DANGEROUS:
     case download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS:
diff --git a/chrome/browser/ui/views/extensions/pwa_confirmation_bubble_view.cc b/chrome/browser/ui/views/extensions/pwa_confirmation_bubble_view.cc
index 592ecc68..efa92e031 100644
--- a/chrome/browser/ui/views/extensions/pwa_confirmation_bubble_view.cc
+++ b/chrome/browser/ui/views/extensions/pwa_confirmation_bubble_view.cc
@@ -183,8 +183,10 @@
   if (g_auto_accept_pwa_for_testing)
     g_bubble_->AcceptDialog();
 
-  icon->Update();
-  DCHECK(icon->GetVisible());
+  if (icon) {
+    icon->Update();
+    DCHECK(icon->GetVisible());
+  }
 }
 
 void SetAutoAcceptPWAInstallConfirmationForTesting(bool auto_accept) {
diff --git a/chrome/browser/ui/views/extensions/pwa_confirmation_bubble_view_browsertest.cc b/chrome/browser/ui/views/extensions/pwa_confirmation_bubble_view_browsertest.cc
new file mode 100644
index 0000000..8e3ec6d
--- /dev/null
+++ b/chrome/browser/ui/views/extensions/pwa_confirmation_bubble_view_browsertest.cc
@@ -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.
+
+#include "base/bind_helpers.h"
+#include "base/macros.h"
+#include "base/strings/utf_string_conversions.h"
+#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/browser_dialogs.h"
+#include "chrome/browser/ui/web_applications/test/web_app_browsertest_util.h"
+#include "chrome/browser/web_applications/components/web_app_helpers.h"
+#include "chrome/common/web_application_info.h"
+#include "chrome/test/base/in_process_browser_test.h"
+
+using PWAConfirmationBubbleViewBrowserTest = InProcessBrowserTest;
+
+IN_PROC_BROWSER_TEST_F(PWAConfirmationBubbleViewBrowserTest,
+                       ShowBubbleInPWAWindow) {
+  auto app_info = std::make_unique<WebApplicationInfo>();
+  app_info->title = base::UTF8ToUTF16("Test app");
+  app_info->app_url = GURL("https://example.com");
+  Profile* profile = browser()->profile();
+  web_app::AppId app_id = web_app::InstallWebApp(profile, std::move(app_info));
+  Browser* browser = web_app::LaunchWebAppBrowser(profile, app_id);
+
+  app_info = std::make_unique<WebApplicationInfo>();
+  app_info->title = base::UTF8ToUTF16("Test app 2");
+  app_info->app_url = GURL("https://example2.com");
+  app_info->open_as_window = true;
+  // Tests that we don't crash when showing the install prompt in a PWA window.
+  chrome::ShowPWAInstallBubble(
+      browser->tab_strip_model()->GetActiveWebContents(), std::move(app_info),
+      base::DoNothing());
+}
diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc
index 760f674..00e9c915 100644
--- a/chrome/browser/ui/views/frame/browser_view.cc
+++ b/chrome/browser/ui/views/frame/browser_view.cc
@@ -2106,7 +2106,7 @@
     return rb.GetImageNamed(override_window_icon_resource_id).AsImageSkia();
 #endif
 
-  if (browser_->deprecated_is_app())
+  if (browser_->deprecated_is_app() || browser_->is_type_popup())
     return browser_->GetCurrentPageIcon().AsImageSkia();
 
   return gfx::ImageSkia();
diff --git a/chrome/browser/ui/views/frame/browser_view_unittest.cc b/chrome/browser/ui/views/frame/browser_view_unittest.cc
index e3f0f6a..e10175b8 100644
--- a/chrome/browser/ui/views/frame/browser_view_unittest.cc
+++ b/chrome/browser/ui/views/frame/browser_view_unittest.cc
@@ -23,7 +23,6 @@
 #include "chrome/test/base/browser_with_test_window_test.h"
 #include "chrome/test/base/testing_profile_manager.h"
 #include "components/version_info/channel.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "ui/base/accelerators/accelerator.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/gfx/scrollbar_size.h"
@@ -55,32 +54,7 @@
 
 }  // namespace
 
-class BrowserViewTest : public TestWithBrowserView {
- public:
-  BrowserViewTest() = default;
-  ~BrowserViewTest() override = default;
-
-  void SetUp() override {
-    TestWithBrowserView::SetUp();
-    test_service_manager_context_ =
-        std::make_unique<content::TestServiceManagerContext>();
-  }
-
-  void TearDown() override {
-    // Must be reset before browser thread teardown.
-    test_service_manager_context_.reset();
-    TestWithBrowserView::TearDown();
-  }
-
- private:
-  // WebContentsImpl accesses
-  // content::ServiceManagerConnection::GetForProcess(), so we must make sure it
-  // is instantiated.
-  std::unique_ptr<content::TestServiceManagerContext>
-      test_service_manager_context_;
-
-  DISALLOW_COPY_AND_ASSIGN(BrowserViewTest);
-};
+using BrowserViewTest = TestWithBrowserView;
 
 // Test basic construction and initialization.
 TEST_F(BrowserViewTest, BrowserView) {
diff --git a/chrome/browser/ui/views/frame/desktop_browser_frame_aura_linux.cc b/chrome/browser/ui/views/frame/desktop_browser_frame_aura_linux.cc
index 7f972678..6081799 100644
--- a/chrome/browser/ui/views/frame/desktop_browser_frame_aura_linux.cc
+++ b/chrome/browser/ui/views/frame/desktop_browser_frame_aura_linux.cc
@@ -35,7 +35,7 @@
   // windows and e.g app windows.
   const Browser& browser = *browser_view()->browser();
   params.wm_class_name =
-      browser.is_type_app()
+      (browser.is_type_app() || browser.is_type_app_popup())
           ? shell_integration_linux::GetWMClassFromAppName(browser.app_name())
           // This window is a hosted app or v1 packaged app.
           // NOTE: v2 packaged app windows are created by
diff --git a/chrome/browser/ui/views/frame/top_controls_slide_controller_chromeos_browsertest.cc b/chrome/browser/ui/views/frame/top_controls_slide_controller_chromeos_browsertest.cc
index 41e7ff4..95dadd5a 100644
--- a/chrome/browser/ui/views/frame/top_controls_slide_controller_chromeos_browsertest.cc
+++ b/chrome/browser/ui/views/frame/top_controls_slide_controller_chromeos_browsertest.cc
@@ -290,13 +290,16 @@
 
   void OpenUrlAtIndex(const GURL& url, int index) {
     AddTabAtIndex(index, url, ui::PAGE_TRANSITION_TYPED);
-    TabNonEmptyPaintWaiter waiter(
-        browser()->tab_strip_model()->GetActiveWebContents());
+    auto* active_contents = browser_view()->GetActiveWebContents();
+    EXPECT_TRUE(content::WaitForLoadStop(active_contents));
+    TabNonEmptyPaintWaiter waiter(active_contents);
     waiter.Wait();
   }
 
   void ToggleTabletMode() {
+    TopControlsShownRatioWaiter waiter{test_controller_};
     ash::ShellTestApi().SetTabletModeEnabledForTest(!GetTabletModeEnabled());
+    waiter.WaitForRatio(1.f);
   }
 
   bool GetTabletModeEnabled() const {
@@ -477,9 +480,8 @@
       browser_view->GetActiveWebContents()));
 }
 
-// TODO(https://crbug.com/1033650) flaky on linux-chromeos-rel.
 IN_PROC_BROWSER_TEST_F(TopControlsSlideControllerTest,
-                       DISABLED_EnabledOnlyForTabletNonImmersiveModes) {
+                       EnabledOnlyForTabletNonImmersiveModes) {
   EXPECT_FALSE(GetTabletModeEnabled());
   AddBlankTabAndShow(browser());
   // For a normal browser, the controller is created.
@@ -618,6 +620,7 @@
   // Navigate to our test scrollable page.
   ui_test_utils::NavigateToURL(
       browser(), embedded_test_server()->GetURL("/top_controls_scroll.html"));
+  EXPECT_TRUE(content::WaitForLoadStop(browser_view()->GetActiveWebContents()));
   TabNonEmptyPaintWaiter paint_waiter(
       browser()->tab_strip_model()->GetActiveWebContents());
   paint_waiter.Wait();
@@ -1118,9 +1121,7 @@
   }
 }
 
-// TODO(https://crbug.com/1033651) flaky on linux-chromeos-rel.
-IN_PROC_BROWSER_TEST_F(TopControlsSlideControllerTest,
-                       DISABLED_TestPermissionBubble) {
+IN_PROC_BROWSER_TEST_F(TopControlsSlideControllerTest, TestPermissionBubble) {
   ToggleTabletMode();
   ASSERT_TRUE(GetTabletModeEnabled());
   EXPECT_TRUE(top_controls_slide_controller()->IsEnabled());
@@ -1169,9 +1170,7 @@
                                TopChromeShownState::kFullyHidden);
 }
 
-// TODO(https://crbug.com/1033648) flaky on linux-chromeos-rel.
-IN_PROC_BROWSER_TEST_F(TopControlsSlideControllerTest,
-                       DISABLED_TestToggleChromeVox) {
+IN_PROC_BROWSER_TEST_F(TopControlsSlideControllerTest, TestToggleChromeVox) {
   ToggleTabletMode();
   ASSERT_TRUE(GetTabletModeEnabled());
   EXPECT_TRUE(top_controls_slide_controller()->IsEnabled());
@@ -1205,7 +1204,6 @@
       active_contents);
   chromeos::AccessibilityManager::Get()->EnableSpokenFeedback(false);
   compositor_frame_waiter.WaitForAnyFrameSubmission();
-  content::WaitForResizeComplete(active_contents);
   EXPECT_FALSE(
       chromeos::AccessibilityManager::Get()->IsSpokenFeedbackEnabled());
   EXPECT_FLOAT_EQ(top_controls_slide_controller()->GetShownRatio(), 1.f);
diff --git a/chrome/browser/ui/views/location_bar/content_setting_image_view.cc b/chrome/browser/ui/views/location_bar/content_setting_image_view.cc
index 12dc29f..8db29526 100644
--- a/chrome/browser/ui/views/location_bar/content_setting_image_view.cc
+++ b/chrome/browser/ui/views/location_bar/content_setting_image_view.cc
@@ -226,7 +226,7 @@
 
 void ContentSettingImageView::OnWidgetDestroying(views::Widget* widget) {
   if (indicator_promo_ && indicator_promo_->GetWidget() == widget) {
-    GetInkDrop()->SetFocused(false);
+    SetHighlighted(false);
     observer_.Remove(widget);
     indicator_promo_ = nullptr;
     // The highlighted icon needs to be recolored.
@@ -262,7 +262,7 @@
         IDS_NOTIFICATIONS_QUIET_PERMISSION_NEW_REQUEST_PROMO, promo_width,
         base::nullopt, base::nullopt);
 
-    GetInkDrop()->SetFocused(true);
+    SetHighlighted(true);
     observer_.Add(indicator_promo_->GetWidget());
     SchedulePaint();
     content_setting_image_model_->SetPromoWasShown(web_contents);
diff --git a/chrome/browser/ui/views/location_bar/cookie_controls_bubble_view.cc b/chrome/browser/ui/views/location_bar/cookie_controls_bubble_view.cc
index 6692ecd8..f58ea543 100644
--- a/chrome/browser/ui/views/location_bar/cookie_controls_bubble_view.cc
+++ b/chrome/browser/ui/views/location_bar/cookie_controls_bubble_view.cc
@@ -19,6 +19,7 @@
 #include "ui/gfx/text_utils.h"
 #include "ui/views/background.h"
 #include "ui/views/bubble/bubble_frame_view.h"
+#include "ui/views/bubble/tooltip_icon.h"
 #include "ui/views/controls/image_view.h"
 #include "ui/views/controls/link.h"
 #include "ui/views/layout/box_layout.h"
@@ -40,6 +41,17 @@
   return link;
 }
 
+std::unique_ptr<views::TooltipIcon> CreateInfoIcon() {
+  auto explanation_tooltip = std::make_unique<views::TooltipIcon>(
+      l10n_util::GetStringUTF16(IDS_COOKIE_CONTROLS_HELP));
+  explanation_tooltip->set_bubble_width(
+      ChromeLayoutProvider::Get()->GetDistanceMetric(
+          DISTANCE_BUBBLE_PREFERRED_WIDTH));
+  explanation_tooltip->set_anchor_point_arrow(
+      views::BubbleBorder::Arrow::TOP_RIGHT);
+  return explanation_tooltip;
+}
+
 }  // namespace
 
 // static
@@ -99,7 +111,6 @@
     CookieControlsController* controller)
     : LocationBarBubbleDelegateView(anchor_view, web_contents),
       controller_(controller) {
-  not_working_link_ = DialogDelegate::SetExtraView(CreateNotWorkingLink(this));
   observer_.Add(controller);
 }
 
@@ -111,11 +122,7 @@
     return;
   }
 
-  DialogModelChanged();
   GetBubbleFrameView()->UpdateWindowTitle();
-
-
-  not_working_link_->SetVisible(false);
   text_->SetVisible(false);
   header_view_->SetVisible(false);
 
@@ -123,6 +130,7 @@
     text_->SetVisible(true);
     text_->SetText(
         l10n_util::GetStringUTF16(IDS_COOKIE_CONTROLS_NOT_WORKING_DESCRIPTION));
+    extra_view_ = SetExtraView(CreateInfoIcon());
   } else if (status_ == CookieControlsController::Status::kEnabled) {
     header_view_->SetVisible(true);
     header_view_->SetImage(
@@ -131,7 +139,7 @@
     text_->SetVisible(true);
     text_->SetText(
         l10n_util::GetStringUTF16(IDS_COOKIE_CONTROLS_BLOCKED_MESSAGE));
-    not_working_link_->SetVisible(true);
+    extra_view_ = SetExtraView(CreateNotWorkingLink(this));
     blocked_cookies_.reset();
   } else {
     DCHECK_EQ(status_, CookieControlsController::Status::kDisabledForSite);
@@ -139,7 +147,10 @@
     header_view_->SetImage(
         ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
             IDR_COOKIE_BLOCKING_OFF_HEADER));
+    if (extra_view_)
+      extra_view_->SetVisible(false);
   }
+  DialogModelChanged();
   Layout();
 
   // The show_disable_cookie_blocking_ui_ state has a different title
@@ -268,7 +279,6 @@
 
 void CookieControlsBubbleView::LinkClicked(views::Link* source,
                                            int event_flags) {
-  DCHECK_EQ(source, not_working_link_);
   DCHECK_EQ(status_, CookieControlsController::Status::kEnabled);
   base::RecordAction(UserMetricsAction("CookieControls.Bubble.NotWorking"));
   // Don't go through the controller as this is an intermediary state that
diff --git a/chrome/browser/ui/views/location_bar/cookie_controls_bubble_view.h b/chrome/browser/ui/views/location_bar/cookie_controls_bubble_view.h
index 1eaad6b..2293d420 100644
--- a/chrome/browser/ui/views/location_bar/cookie_controls_bubble_view.h
+++ b/chrome/browser/ui/views/location_bar/cookie_controls_bubble_view.h
@@ -84,7 +84,7 @@
 
   views::ImageView* header_view_ = nullptr;
   views::Label* text_ = nullptr;
-  views::Link* not_working_link_ = nullptr;
+  views::View* extra_view_ = nullptr;
 
   ScopedObserver<CookieControlsController, CookieControlsView> observer_{this};
 
diff --git a/chrome/browser/ui/views/tabs/tab.cc b/chrome/browser/ui/views/tabs/tab.cc
index 4223a89..8371be54 100644
--- a/chrome/browser/ui/views/tabs/tab.cc
+++ b/chrome/browser/ui/views/tabs/tab.cc
@@ -214,7 +214,6 @@
   close_button_ = new TabCloseButton(
       this, base::BindRepeating(&TabController::OnMouseEventInTab,
                                 base::Unretained(controller_)));
-  close_button_->set_has_ink_drop_action_on_click(true);
   AddChildView(close_button_);
 
   tab_close_button_observer_ = std::make_unique<TabCloseButtonObserver>(
diff --git a/chrome/browser/ui/views/toolbar/toolbar_action_view.cc b/chrome/browser/ui/views/toolbar/toolbar_action_view.cc
index d1dec3c..8c8734f 100644
--- a/chrome/browser/ui/views/toolbar/toolbar_action_view.cc
+++ b/chrome/browser/ui/views/toolbar/toolbar_action_view.cc
@@ -59,7 +59,6 @@
       view_controller_(view_controller),
       delegate_(delegate) {
   SetInkDropMode(InkDropMode::ON);
-  set_has_ink_drop_action_on_click(true);
   set_hide_ink_drop_when_showing_context_menu(false);
   set_show_ink_drop_when_hot_tracked(true);
   SetID(VIEW_ID_BROWSER_ACTION);
diff --git a/chrome/browser/ui/views/toolbar/toolbar_button.cc b/chrome/browser/ui/views/toolbar/toolbar_button.cc
index 4ce020f..b07a3568 100644
--- a/chrome/browser/ui/views/toolbar/toolbar_button.cc
+++ b/chrome/browser/ui/views/toolbar/toolbar_button.cc
@@ -71,7 +71,6 @@
       tab_strip_model_(tab_strip_model),
       trigger_menu_on_long_press_(trigger_menu_on_long_press),
       highlight_color_animation_(this) {
-  set_has_ink_drop_action_on_click(true);
   set_context_menu_controller(this);
 
   if (base::FeatureList::IsEnabled(views::kInstallableInkDropFeature)) {
diff --git a/chrome/browser/ui/views/toolbar/toolbar_ink_drop_util.cc b/chrome/browser/ui/views/toolbar/toolbar_ink_drop_util.cc
index fe9b98b..cd8832a 100644
--- a/chrome/browser/ui/views/toolbar/toolbar_ink_drop_util.cc
+++ b/chrome/browser/ui/views/toolbar/toolbar_ink_drop_util.cc
@@ -92,7 +92,6 @@
 }
 
 void ConfigureInkDropForToolbar(views::Button* host) {
-  host->set_has_ink_drop_action_on_click(true);
   InstallToolbarButtonHighlightPathGenerator(host);
   host->SetInkDropMode(views::InkDropHostView::InkDropMode::ON);
   host->set_ink_drop_visible_opacity(kToolbarInkDropVisibleOpacity);
diff --git a/chrome/browser/ui/views/web_apps/bookmark_app_uninstall_dialog_browsertest.cc b/chrome/browser/ui/views/web_apps/bookmark_app_uninstall_dialog_browsertest.cc
index 5490659..c668e63 100644
--- a/chrome/browser/ui/views/web_apps/bookmark_app_uninstall_dialog_browsertest.cc
+++ b/chrome/browser/ui/views/web_apps/bookmark_app_uninstall_dialog_browsertest.cc
@@ -145,15 +145,15 @@
 
     dialog_ = web_app::WebAppUninstallDialog::Create(
         browser()->profile(), browser()->window()->GetNativeWindow());
+
+    base::RunLoop run_loop;
+    dialog_->SetDialogShownCallbackForTesting(run_loop.QuitClosure());
+
     dialog_->ConfirmUninstall(extension_->id(), base::DoNothing());
 
-    // The dialog shows when an icon update happens, run all pending messages to
-    // make sure that the widget exists and is showing at the end of this call.
-    base::RunLoop().RunUntilIdle();
+    run_loop.Run();
   }
 
-  void RunTest() { ShowAndVerifyUi(); }
-
  private:
   void TearDownOnMainThread() override {
     // Dialog holds references to the profile, so it needs to tear down before
@@ -165,8 +165,7 @@
   std::unique_ptr<web_app::WebAppUninstallDialog> dialog_;
 };
 
-// TODO(https://crbug.com/1033751): Flaking on all platforms.
 IN_PROC_BROWSER_TEST_F(BookmarkAppUninstallDialogViewInteractiveBrowserTest,
-                       DISABLED_InvokeUi_ManualUninstall) {
-  RunTest();
+                       InvokeUi_ManualUninstall) {
+  ShowAndVerifyUi();
 }
diff --git a/chrome/browser/ui/views/web_apps/web_app_uninstall_dialog_view.cc b/chrome/browser/ui/views/web_apps/web_app_uninstall_dialog_view.cc
index a1916b9..7fb1f5d 100644
--- a/chrome/browser/ui/views/web_apps/web_app_uninstall_dialog_view.cc
+++ b/chrome/browser/ui/views/web_apps/web_app_uninstall_dialog_view.cc
@@ -227,6 +227,11 @@
                              weak_ptr_factory_.GetWeakPtr()));
 }
 
+void WebAppUninstallDialogViews::SetDialogShownCallbackForTesting(
+    base::OnceClosure callback) {
+  dialog_shown_callback_for_testing_ = std::move(callback);
+}
+
 void WebAppUninstallDialogViews::OnAllIconsRead(
     std::map<SquareSizePx, SkBitmap> icon_bitmaps) {
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
@@ -240,6 +245,9 @@
                                                 std::move(icon_bitmaps));
 
   constrained_window::CreateBrowserModalDialogViews(view_, parent_)->Show();
+
+  if (dialog_shown_callback_for_testing_)
+    std::move(dialog_shown_callback_for_testing_).Run();
 }
 
 void WebAppUninstallDialogViews::OnWebAppUninstalled(
diff --git a/chrome/browser/ui/views/web_apps/web_app_uninstall_dialog_view.h b/chrome/browser/ui/views/web_apps/web_app_uninstall_dialog_view.h
index 63bb06d..fe51a29 100644
--- a/chrome/browser/ui/views/web_apps/web_app_uninstall_dialog_view.h
+++ b/chrome/browser/ui/views/web_apps/web_app_uninstall_dialog_view.h
@@ -93,11 +93,10 @@
       delete;
   ~WebAppUninstallDialogViews() override;
 
-  // Starts the process of showing a confirmation UI, which is split into two.
-  // 1) Set off a 'load icon' task.
-  // 2) Handle the load icon response and show the UI (OnAllIconsRead).
+  // web_app::WebAppUninstallDialog:
   void ConfirmUninstall(const web_app::AppId& app_id,
                         OnWebAppUninstallDialogClosed closed_callback) override;
+  void SetDialogShownCallbackForTesting(base::OnceClosure callback) override;
 
   void UninstallStarted();
   void CallCallback(bool uninstalled);
@@ -115,6 +114,8 @@
   // The callback we will call Accepted/Canceled on after confirmation dialog.
   OnWebAppUninstallDialogClosed closed_callback_;
 
+  base::OnceClosure dialog_shown_callback_for_testing_;
+
   // Tracks whether |parent_| got destroyed.
   std::unique_ptr<NativeWindowTracker> parent_window_tracker_;
 
diff --git a/chrome/browser/ui/web_applications/app_browser_controller.cc b/chrome/browser/ui/web_applications/app_browser_controller.cc
index 3c83cb6..ed8f9bbb 100644
--- a/chrome/browser/ui/web_applications/app_browser_controller.cc
+++ b/chrome/browser/ui/web_applications/app_browser_controller.cc
@@ -187,7 +187,8 @@
   // Show titlebar toolbar for Terminal System App, but not other system apps.
   // TODO(crbug.com/846546): Generalise this as a SystemWebApp capability.
   if (IsForSystemWebApp()) {
-    return GetAppIdForSystemWebApp(browser()->profile(),
+    return !browser_->is_type_app_popup() &&
+           GetAppIdForSystemWebApp(browser()->profile(),
                                    SystemAppType::TERMINAL) == GetAppId();
   }
   // Show for all other apps.
diff --git a/chrome/browser/ui/web_applications/system_web_app_ui_utils.cc b/chrome/browser/ui/web_applications/system_web_app_ui_utils.cc
index a448aac..b815e57 100644
--- a/chrome/browser/ui/web_applications/system_web_app_ui_utils.cc
+++ b/chrome/browser/ui/web_applications/system_web_app_ui_utils.cc
@@ -26,14 +26,17 @@
 #include "chrome/browser/web_applications/components/web_app_helpers.h"
 #include "chrome/browser/web_applications/system_web_app_manager.h"
 #include "chrome/browser/web_applications/web_app_provider.h"
+#include "chrome/browser/web_launch/web_launch_files_helper.h"
 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h"
 #include "content/public/browser/web_contents.h"
 #include "content/public/browser/web_ui_data_source.h"
 #include "extensions/browser/extension_registry.h"
 #include "extensions/common/extension.h"
+#include "third_party/blink/public/common/features.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/base/resource/resource_bundle.h"
 #include "ui/base/template_expressions.h"
+#include "ui/base/window_open_disposition.h"
 #include "ui/display/types/display_constants.h"
 
 namespace web_app {
@@ -57,6 +60,7 @@
 Browser* LaunchSystemWebApp(Profile* profile,
                             SystemAppType app_type,
                             const GURL& url,
+                            bool is_popup,
                             bool* did_create) {
   if (did_create)
     *did_create = false;
@@ -75,6 +79,8 @@
   apps::AppLaunchParams params = CreateAppLaunchParamsWithEventFlags(
       profile, extension, 0, extensions::AppLaunchSource::kSourceChromeInternal,
       display::kInvalidDisplayId);
+  if (is_popup)
+    params.disposition = WindowOpenDisposition::NEW_POPUP;
   params.override_url = url;
 
   return LaunchSystemWebApp(profile, app_type, url, params, did_create);
@@ -91,34 +97,35 @@
 
   DCHECK_EQ(params.app_id, *GetAppIdForSystemWebApp(profile, app_type));
 
-  if (did_create)
-    *did_create = false;
-
-  // TODO(https://crbug.com/1027030): Better understand and improve SWA launch
-  // behavior. Early exit here skips logic in ShowApplicationWindow.
+  // Make sure we have a browser for app.
   Browser* browser = nullptr;
   if (provider->system_web_app_manager().IsSingleWindow(app_type)) {
     browser = FindSystemWebAppBrowser(profile, app_type);
   }
-
-  if (browser) {
-    content::WebContents* web_contents =
-        browser->tab_strip_model()->GetWebContentsAt(0);
-    if (web_contents && web_contents->GetURL() == url) {
-      browser->window()->Show();
-      return browser;
-    }
-  }
-
   if (!browser) {
+    browser = CreateApplicationWindow(profile, params, url);
     if (did_create)
       *did_create = true;
-    browser = CreateApplicationWindow(profile, params, url);
+  } else {
+    if (did_create)
+      *did_create = false;
   }
 
-  ShowApplicationWindow(profile, params, url, browser,
-                        WindowOpenDisposition::CURRENT_TAB);
+  // Navigate application window to application's |url| if necessary.
+  content::WebContents* web_contents =
+      browser->tab_strip_model()->GetWebContentsAt(0);
+  if (!web_contents || web_contents->GetURL() != url) {
+    web_contents = NavigateApplicationWindow(
+        browser, params, url, WindowOpenDisposition::CURRENT_TAB);
+  }
 
+  // Send launch files.
+  if (base::FeatureList::IsEnabled(blink::features::kFileHandlingAPI)) {
+    web_launch::WebLaunchFilesHelper::SetLaunchPaths(
+        web_contents, web_contents->GetURL(), params.launch_files);
+  }
+
+  browser->window()->Show();
   return browser;
 }
 
diff --git a/chrome/browser/ui/web_applications/system_web_app_ui_utils.h b/chrome/browser/ui/web_applications/system_web_app_ui_utils.h
index 78e442b..25237f375 100644
--- a/chrome/browser/ui/web_applications/system_web_app_ui_utils.h
+++ b/chrome/browser/ui/web_applications/system_web_app_ui_utils.h
@@ -33,9 +33,13 @@
 // Launches a System App to the given URL, reusing any existing window for the
 // app. Returns the browser for the System App, or nullptr if launch/focus
 // failed. |did_create| will reflect whether a new window was created if passed.
+//
+// TODO(calamity) Separate this into LaunchSystemWebApp and
+// LaunchSystemWebAppPopup.
 Browser* LaunchSystemWebApp(Profile* profile,
                             SystemAppType app_type,
                             const GURL& url = GURL(),
+                            bool is_popup = false,
                             bool* did_create = nullptr);
 Browser* LaunchSystemWebApp(Profile* profile,
                             SystemAppType app_type,
diff --git a/chrome/browser/ui/web_applications/web_app_browsertest.cc b/chrome/browser/ui/web_applications/web_app_browsertest.cc
index c817284..dd20f20 100644
--- a/chrome/browser/ui/web_applications/web_app_browsertest.cc
+++ b/chrome/browser/ui/web_applications/web_app_browsertest.cc
@@ -61,7 +61,8 @@
   }
 }
 
-IN_PROC_BROWSER_TEST_P(WebAppBrowserTest, HasMinimalUiButtons) {
+// Flaky. http://crbug.com/1034029
+IN_PROC_BROWSER_TEST_P(WebAppBrowserTest, DISABLED_HasMinimalUiButtons) {
   int index = 0;
   auto has_buttons = [this, &index](DisplayMode display_mode,
                                     bool open_as_window) -> bool {
diff --git a/chrome/browser/ui/web_applications/web_app_engagement_browsertest.cc b/chrome/browser/ui/web_applications/web_app_engagement_browsertest.cc
index bc5acd4..5f27c57 100644
--- a/chrome/browser/ui/web_applications/web_app_engagement_browsertest.cc
+++ b/chrome/browser/ui/web_applications/web_app_engagement_browsertest.cc
@@ -363,7 +363,8 @@
   ExpectLaunchCounts(tester, /*windowLaunches=*/3, /*tabLaunches=*/0);
 }
 
-IN_PROC_BROWSER_TEST_P(WebAppEngagementBrowserTest, ManyUserApps) {
+// Flaky. http://crbug.com/1034028
+IN_PROC_BROWSER_TEST_P(WebAppEngagementBrowserTest, DISABLED_ManyUserApps) {
   base::HistogramTester tester;
 
   // More than 3 user-installed apps:
diff --git a/chrome/browser/ui/web_applications/web_app_launch_manager.cc b/chrome/browser/ui/web_applications/web_app_launch_manager.cc
index 1910d62e..6f56c2b 100644
--- a/chrome/browser/ui/web_applications/web_app_launch_manager.cc
+++ b/chrome/browser/ui/web_applications/web_app_launch_manager.cc
@@ -49,47 +49,14 @@
   return new Browser(browser_params);
 }
 
-void SetWebAppPrefsForWebContents(content::WebContents* web_contents) {
-  web_contents->GetMutableRendererPrefs()->can_accept_load_drops = false;
-  web_contents->SyncRendererPrefs();
-  web_contents->NotifyPreferencesChanged();
-}
-
-content::WebContents* ShowWebApplicationWindow(
-    const apps::AppLaunchParams& params,
-    const GURL& default_url,
+content::WebContents* NavigateWebApplicationWindow(
     Browser* browser,
+    const GURL& url,
     WindowOpenDisposition disposition) {
-  web_app::FileHandlerManager& file_handler_manager =
-      web_app::WebAppProviderBase::GetProviderBase(browser->profile())
-          ->file_handler_manager();
-  const GURL url =
-      file_handler_manager
-          .GetMatchingFileHandlerURL(params.app_id, params.launch_files)
-          .value_or(default_url);
-
   NavigateParams nav_params(browser, url, ui::PAGE_TRANSITION_AUTO_BOOKMARK);
   nav_params.disposition = disposition;
   Navigate(&nav_params);
-
-  content::WebContents* web_contents =
-      nav_params.navigated_or_inserted_contents;
-
-  SetWebAppPrefsForWebContents(web_contents);
-
-  WebAppTabHelper* tab_helper = WebAppTabHelper::FromWebContents(web_contents);
-  DCHECK(tab_helper);
-  tab_helper->SetAppId(params.app_id);
-
-  browser->window()->Show();
-  web_contents->SetInitialFocus();
-
-  if (base::FeatureList::IsEnabled(blink::features::kFileHandlingAPI)) {
-    web_launch::WebLaunchFilesHelper::SetLaunchPaths(web_contents, url,
-                                                     params.launch_files);
-  }
-
-  return web_contents;
+  return nav_params.navigated_or_inserted_contents;
 }
 
 }  // namespace
@@ -107,9 +74,15 @@
   if (params.container == apps::mojom::LaunchContainer::kLaunchContainerWindow)
     RecordAppWindowLaunch(profile(), params.app_id);
 
-  const GURL url = params.override_url.is_empty()
-                       ? provider_->registrar().GetAppLaunchURL(params.app_id)
-                       : params.override_url;
+  web_app::FileHandlerManager& file_handler_manager =
+      provider_->file_handler_manager();
+
+  const GURL url =
+      params.override_url.is_empty()
+          ? file_handler_manager
+                .GetMatchingFileHandlerURL(params.app_id, params.launch_files)
+                .value_or(provider_->registrar().GetAppLaunchURL(params.app_id))
+          : params.override_url;
 
   // System Web Apps go through their own launch path.
   base::Optional<SystemAppType> system_app_type =
@@ -122,8 +95,21 @@
 
   Browser* browser = CreateWebApplicationWindow(profile(), params.app_id);
 
-  content::WebContents* web_contents = ShowWebApplicationWindow(
-      params, url, browser, WindowOpenDisposition::NEW_FOREGROUND_TAB);
+  content::WebContents* web_contents = NavigateWebApplicationWindow(
+      browser, url, WindowOpenDisposition::NEW_FOREGROUND_TAB);
+
+  // TODO(https://crbug.com/1032443):
+  // Eventually move this to browser_navigator.cc: CreateTargetContents().
+  WebAppTabHelper* tab_helper = WebAppTabHelper::FromWebContents(web_contents);
+  DCHECK(tab_helper);
+  tab_helper->SetAppId(params.app_id);
+
+  if (base::FeatureList::IsEnabled(blink::features::kFileHandlingAPI)) {
+    web_launch::WebLaunchFilesHelper::SetLaunchPaths(web_contents, url,
+                                                     params.launch_files);
+  }
+
+  browser->window()->Show();
 
   // TODO(crbug.com/1014328): Populate WebApp metrics instead of Extensions.
 
diff --git a/chrome/browser/ui/web_applications/web_app_uninstall_dialog.h b/chrome/browser/ui/web_applications/web_app_uninstall_dialog.h
index d97da0f..64ac142 100644
--- a/chrome/browser/ui/web_applications/web_app_uninstall_dialog.h
+++ b/chrome/browser/ui/web_applications/web_app_uninstall_dialog.h
@@ -39,6 +39,8 @@
       const AppId& app_id,
       OnWebAppUninstallDialogClosed closed_callback) = 0;
 
+  virtual void SetDialogShownCallbackForTesting(base::OnceClosure callback) = 0;
+
  protected:
   WebAppUninstallDialog() = default;
 };
diff --git a/chrome/browser/ui/webui/bluetooth_internals/bluetooth_internals_ui.cc b/chrome/browser/ui/webui/bluetooth_internals/bluetooth_internals_ui.cc
index 6f8ab24..912e21c 100644
--- a/chrome/browser/ui/webui/bluetooth_internals/bluetooth_internals_ui.cc
+++ b/chrome/browser/ui/webui/bluetooth_internals/bluetooth_internals_ui.cc
@@ -39,14 +39,13 @@
 
   Profile* profile = Profile::FromWebUI(web_ui);
   content::WebUIDataSource::Add(profile, html_source);
-  AddHandlerToRegistry(
-      base::BindRepeating(&BluetoothInternalsUI::BindBluetoothInternalsHandler,
-                          base::Unretained(this)));
 }
 
+WEB_UI_CONTROLLER_TYPE_IMPL(BluetoothInternalsUI)
+
 BluetoothInternalsUI::~BluetoothInternalsUI() {}
 
-void BluetoothInternalsUI::BindBluetoothInternalsHandler(
+void BluetoothInternalsUI::BindInterface(
     mojo::PendingReceiver<mojom::BluetoothInternalsHandler> receiver) {
   page_handler_ =
       std::make_unique<BluetoothInternalsHandler>(std::move(receiver));
diff --git a/chrome/browser/ui/webui/bluetooth_internals/bluetooth_internals_ui.h b/chrome/browser/ui/webui/bluetooth_internals/bluetooth_internals_ui.h
index 2a69c29..0b09770 100644
--- a/chrome/browser/ui/webui/bluetooth_internals/bluetooth_internals_ui.h
+++ b/chrome/browser/ui/webui/bluetooth_internals/bluetooth_internals_ui.h
@@ -18,12 +18,16 @@
   explicit BluetoothInternalsUI(content::WebUI* web_ui);
   ~BluetoothInternalsUI() override;
 
- private:
-  void BindBluetoothInternalsHandler(
+  // Instantiates the implementor of the mojom::BluetoothInternalsHandler mojo
+  // interface passing the pending receiver that will be internally bound.
+  void BindInterface(
       mojo::PendingReceiver<mojom::BluetoothInternalsHandler> receiver);
 
+ private:
   std::unique_ptr<BluetoothInternalsHandler> page_handler_;
 
+  WEB_UI_CONTROLLER_TYPE_DECL();
+
   DISALLOW_COPY_AND_ASSIGN(BluetoothInternalsUI);
 };
 
diff --git a/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_ui.cc b/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_ui.cc
index 3dc48ab..621e632 100644
--- a/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_ui.cc
+++ b/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_ui.cc
@@ -149,14 +149,12 @@
 
 AddSupervisionUI::AddSupervisionUI(content::WebUI* web_ui)
     : ui::MojoWebUIController(web_ui) {
-  // Register the Mojo API handler.
-  AddHandlerToRegistry(base::BindRepeating(
-      &AddSupervisionUI::BindAddSupervisionHandler, base::Unretained(this)));
-
   // Set up the basic page framework.
   SetUpResources();
 }
 
+WEB_UI_CONTROLLER_TYPE_IMPL(AddSupervisionUI)
+
 AddSupervisionUI::~AddSupervisionUI() = default;
 
 // AddSupervisionHandler::Delegate:
@@ -179,7 +177,7 @@
   test_identity_manager_ = identity_manager;
 }
 
-void AddSupervisionUI::BindAddSupervisionHandler(
+void AddSupervisionUI::BindInterface(
     mojo::PendingReceiver<add_supervision::mojom::AddSupervisionHandler>
         receiver) {
   signin::IdentityManager* identity_manager =
diff --git a/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_ui.h b/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_ui.h
index 1a62fcb6..63ea7f5f 100644
--- a/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_ui.h
+++ b/chrome/browser/ui/webui/chromeos/add_supervision/add_supervision_ui.h
@@ -75,10 +75,13 @@
 
   static void SetUpForTest(signin::IdentityManager* identity_manager);
 
- private:
-  void BindAddSupervisionHandler(
+  // Instantiates the implementor of the mojom::AddSupervisionHandler mojo
+  // interface passing the pending receiver that will be internally bound.
+  void BindInterface(
       mojo::PendingReceiver<add_supervision::mojom::AddSupervisionHandler>
           receiver);
+
+ private:
   void SetUpResources();
   GURL GetAddSupervisionURL();
 
@@ -90,6 +93,8 @@
   static signin::IdentityManager* test_identity_manager_;
   bool allow_non_google_url_for_tests_ = false;
 
+  WEB_UI_CONTROLLER_TYPE_DECL();
+
   DISALLOW_COPY_AND_ASSIGN(AddSupervisionUI);
 };
 
diff --git a/chrome/browser/ui/webui/chromeos/machine_learning/machine_learning_internals_ui.cc b/chrome/browser/ui/webui/chromeos/machine_learning/machine_learning_internals_ui.cc
index 18ff22f..ace92dd 100644
--- a/chrome/browser/ui/webui/chromeos/machine_learning/machine_learning_internals_ui.cc
+++ b/chrome/browser/ui/webui/chromeos/machine_learning/machine_learning_internals_ui.cc
@@ -49,14 +49,13 @@
   source->SetDefaultResource(IDR_MACHINE_LEARNING_INTERNALS_HTML);
 
   content::WebUIDataSource::Add(Profile::FromWebUI(web_ui), source);
-  AddHandlerToRegistry(base::BindRepeating(
-      &MachineLearningInternalsUI::BindMachineLearningInternalsPageHandler,
-      base::Unretained(this)));
 }
 
+WEB_UI_CONTROLLER_TYPE_IMPL(MachineLearningInternalsUI)
+
 MachineLearningInternalsUI::~MachineLearningInternalsUI() = default;
 
-void MachineLearningInternalsUI::BindMachineLearningInternalsPageHandler(
+void MachineLearningInternalsUI::BindInterface(
     mojo::PendingReceiver<mojom::PageHandler> receiver) {
   page_handler_ = std::make_unique<MachineLearningInternalsPageHandler>(
       std::move(receiver));
diff --git a/chrome/browser/ui/webui/chromeos/machine_learning/machine_learning_internals_ui.h b/chrome/browser/ui/webui/chromeos/machine_learning/machine_learning_internals_ui.h
index da44a73..860aba1 100644
--- a/chrome/browser/ui/webui/chromeos/machine_learning/machine_learning_internals_ui.h
+++ b/chrome/browser/ui/webui/chromeos/machine_learning/machine_learning_internals_ui.h
@@ -23,12 +23,15 @@
   explicit MachineLearningInternalsUI(content::WebUI* web_ui);
   ~MachineLearningInternalsUI() override;
 
- private:
-  void BindMachineLearningInternalsPageHandler(
-      mojo::PendingReceiver<mojom::PageHandler> receiver);
+  // Instantiates the implementor of the mojom::PageHandler mojo interface
+  // passing the pending receiver that will be internally bound.
+  void BindInterface(mojo::PendingReceiver<mojom::PageHandler> receiver);
 
+ private:
   std::unique_ptr<MachineLearningInternalsPageHandler> page_handler_;
 
+  WEB_UI_CONTROLLER_TYPE_DECL();
+
   DISALLOW_COPY_AND_ASSIGN(MachineLearningInternalsUI);
 };
 
diff --git a/chrome/browser/ui/webui/chromeos/sync/os_sync_handler.cc b/chrome/browser/ui/webui/chromeos/sync/os_sync_handler.cc
index 829bb24..744d42d 100644
--- a/chrome/browser/ui/webui/chromeos/sync/os_sync_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/sync/os_sync_handler.cc
@@ -155,9 +155,6 @@
     std::string type_name = syncer::GetUserSelectableOsTypeName(type);
     args.SetBoolean(type_name + "Registered", registered_types.Has(type));
     args.SetBoolean(type_name + "Synced", selected_types.Has(type));
-    // TODO(crbug.com/1020236): Add SyncUserSettings::GetForcedOsTypes() if we
-    // decide to support Apps sync for supervised users.
-    args.SetBoolean(type_name + "Enforced", false);
   }
   FireWebUIListener("os-sync-prefs-changed", base::Value(feature_enabled_),
                     args);
diff --git a/chrome/browser/ui/webui/chromeos/sync/os_sync_handler_unittest.cc b/chrome/browser/ui/webui/chromeos/sync/os_sync_handler_unittest.cc
index 649e0f2..3634394f 100644
--- a/chrome/browser/ui/webui/chromeos/sync/os_sync_handler_unittest.cc
+++ b/chrome/browser/ui/webui/chromeos/sync/os_sync_handler_unittest.cc
@@ -46,8 +46,6 @@
   result.SetBoolean("osAppsSynced", types.Has(UserSelectableOsType::kOsApps));
   result.SetBoolean("osPreferencesSynced",
                     types.Has(UserSelectableOsType::kOsPreferences));
-  result.SetBoolean("printersSynced",
-                    types.Has(UserSelectableOsType::kPrinters));
   result.SetBoolean("wifiConfigurationsSynced",
                     types.Has(UserSelectableOsType::kWifiConfigurations));
   return result;
@@ -74,8 +72,6 @@
             types.Has(UserSelectableOsType::kOsApps));
   CheckBool(dictionary, "osPreferencesSynced",
             types.Has(UserSelectableOsType::kOsPreferences));
-  CheckBool(dictionary, "printersSynced",
-            types.Has(UserSelectableOsType::kPrinters));
   CheckBool(dictionary, "wifiConfigurationsSynced",
             types.Has(UserSelectableOsType::kWifiConfigurations));
 }
@@ -287,7 +283,6 @@
   CheckBool(dictionary, "syncAllOsTypes", true);
   CheckBool(dictionary, "osAppsRegistered", true);
   CheckBool(dictionary, "osPreferencesRegistered", true);
-  CheckBool(dictionary, "printersRegistered", true);
   CheckBool(dictionary, "wifiConfigurationsRegistered", true);
   CheckConfigDataTypeArguments(dictionary, SYNC_ALL_OS_TYPES,
                                UserSelectableOsTypeSet::All());
diff --git a/chrome/browser/ui/webui/discards/discards_ui.cc b/chrome/browser/ui/webui/discards/discards_ui.cc
index e270478c..af50bb5 100644
--- a/chrome/browser/ui/webui/discards/discards_ui.cc
+++ b/chrome/browser/ui/webui/discards/discards_ui.cc
@@ -435,24 +435,21 @@
       profile, std::make_unique<FaviconSource>(
                    profile, chrome::FaviconUrlFormat::kFavicon2));
 
-  AddHandlerToRegistry(base::BindRepeating(
-      &DiscardsUI::BindDiscardsDetailsProvider, base::Unretained(this)));
-  AddHandlerToRegistry(base::BindRepeating(
-      &DiscardsUI::BindDiscardsGraphDumpProvider, base::Unretained(this)));
-
   data_store_inspector_ = resource_coordinator::
       LocalSiteCharacteristicsDataStoreInspector::GetForProfile(profile);
 }
 
+WEB_UI_CONTROLLER_TYPE_IMPL(DiscardsUI)
+
 DiscardsUI::~DiscardsUI() {}
 
-void DiscardsUI::BindDiscardsDetailsProvider(
+void DiscardsUI::BindInterface(
     mojo::PendingReceiver<discards::mojom::DetailsProvider> receiver) {
   ui_handler_ = std::make_unique<DiscardsDetailsProviderImpl>(
       data_store_inspector_, std::move(receiver));
 }
 
-void DiscardsUI::BindDiscardsGraphDumpProvider(
+void DiscardsUI::BindInterface(
     mojo::PendingReceiver<discards::mojom::GraphDump> receiver) {
   if (performance_manager::PerformanceManager::IsAvailable()) {
     // Forward the interface receiver directly to the service.
diff --git a/chrome/browser/ui/webui/discards/discards_ui.h b/chrome/browser/ui/webui/discards/discards_ui.h
index fa360e2f..a19e29e1 100644
--- a/chrome/browser/ui/webui/discards/discards_ui.h
+++ b/chrome/browser/ui/webui/discards/discards_ui.h
@@ -23,16 +23,23 @@
   explicit DiscardsUI(content::WebUI* web_ui);
   ~DiscardsUI() override;
 
- private:
-  void BindDiscardsDetailsProvider(
+  // Instantiates the implementor of the mojom::DetailsProvider mojo
+  // interface passing the pending receiver that will be internally bound.
+  void BindInterface(
       mojo::PendingReceiver<discards::mojom::DetailsProvider> receiver);
-  void BindDiscardsGraphDumpProvider(
+
+  // Instantiates the implementor of the mojom::GraphDump mojo
+  // interface passing the pending receiver that will be internally bound.
+  void BindInterface(
       mojo::PendingReceiver<discards::mojom::GraphDump> receiver);
 
+ private:
   std::unique_ptr<discards::mojom::DetailsProvider> ui_handler_;
   resource_coordinator::LocalSiteCharacteristicsDataStoreInspector*
       data_store_inspector_;
 
+  WEB_UI_CONTROLLER_TYPE_DECL();
+
   DISALLOW_COPY_AND_ASSIGN(DiscardsUI);
 };
 
diff --git a/chrome/browser/ui/webui/downloads/downloads_list_tracker.cc b/chrome/browser/ui/webui/downloads/downloads_list_tracker.cc
index 5b689666..f51828c 100644
--- a/chrome/browser/ui/webui/downloads/downloads_list_tracker.cc
+++ b/chrome/browser/ui/webui/downloads/downloads_list_tracker.cc
@@ -75,6 +75,7 @@
       return "DEEP_SCANNED_SAFE";
     case download::DOWNLOAD_DANGER_TYPE_DEEP_SCANNED_OPENED_DANGEROUS:
       return "DEEP_SCANNED_OPENED_DANGEROUS";
+    case download::DOWNLOAD_DANGER_TYPE_PROMPT_FOR_SCANNING:
     case download::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS:
     case download::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT:
     case download::DOWNLOAD_DANGER_TYPE_USER_VALIDATED:
diff --git a/chrome/browser/ui/webui/downloads/downloads_ui.cc b/chrome/browser/ui/webui/downloads/downloads_ui.cc
index ef593e91..d6128c7 100644
--- a/chrome/browser/ui/webui/downloads/downloads_ui.cc
+++ b/chrome/browser/ui/webui/downloads/downloads_ui.cc
@@ -185,11 +185,10 @@
   ManagedUIHandler::Initialize(web_ui, source);
   content::WebUIDataSource::Add(profile, source);
   content::URLDataSource::Add(profile, std::make_unique<ThemeSource>(profile));
-
-  AddHandlerToRegistry(base::BindRepeating(&DownloadsUI::BindPageHandlerFactory,
-                                           base::Unretained(this)));
 }
 
+WEB_UI_CONTROLLER_TYPE_IMPL(DownloadsUI)
+
 DownloadsUI::~DownloadsUI() = default;
 
 // static
@@ -199,7 +198,7 @@
       IDR_DOWNLOADS_FAVICON, scale_factor);
 }
 
-void DownloadsUI::BindPageHandlerFactory(
+void DownloadsUI::BindInterface(
     mojo::PendingReceiver<downloads::mojom::PageHandlerFactory> receiver) {
   page_factory_receiver_.reset();
 
diff --git a/chrome/browser/ui/webui/downloads/downloads_ui.h b/chrome/browser/ui/webui/downloads/downloads_ui.h
index ccb71d1..0d3e2d6 100644
--- a/chrome/browser/ui/webui/downloads/downloads_ui.h
+++ b/chrome/browser/ui/webui/downloads/downloads_ui.h
@@ -30,10 +30,12 @@
   static base::RefCountedMemory* GetFaviconResourceBytes(
       ui::ScaleFactor scale_factor);
 
- private:
-  void BindPageHandlerFactory(
+  // Instantiates the implementor of the mojom::PageHandlerFactory mojo
+  // interface passing the pending receiver that will be internally bound.
+  void BindInterface(
       mojo::PendingReceiver<downloads::mojom::PageHandlerFactory> receiver);
 
+ private:
   // downloads::mojom::PageHandlerFactory:
   void CreatePageHandler(
       mojo::PendingRemote<downloads::mojom::Page> page,
@@ -44,6 +46,8 @@
   mojo::Receiver<downloads::mojom::PageHandlerFactory> page_factory_receiver_{
       this};
 
+  WEB_UI_CONTROLLER_TYPE_DECL();
+
   DISALLOW_COPY_AND_ASSIGN(DownloadsUI);
 };
 
diff --git a/chrome/browser/ui/webui/engagement/site_engagement_ui.cc b/chrome/browser/ui/webui/engagement/site_engagement_ui.cc
index 3468493..98898584 100644
--- a/chrome/browser/ui/webui/engagement/site_engagement_ui.cc
+++ b/chrome/browser/ui/webui/engagement/site_engagement_ui.cc
@@ -91,15 +91,13 @@
       IDR_SITE_ENGAGEMENT_DETAILS_MOJOM_LITE_JS);
   source->SetDefaultResource(IDR_SITE_ENGAGEMENT_HTML);
   content::WebUIDataSource::Add(Profile::FromWebUI(web_ui), source.release());
-
-  AddHandlerToRegistry(
-      base::BindRepeating(&SiteEngagementUI::BindSiteEngagementDetailsProvider,
-                          base::Unretained(this)));
 }
 
+WEB_UI_CONTROLLER_TYPE_IMPL(SiteEngagementUI)
+
 SiteEngagementUI::~SiteEngagementUI() {}
 
-void SiteEngagementUI::BindSiteEngagementDetailsProvider(
+void SiteEngagementUI::BindInterface(
     mojo::PendingReceiver<mojom::SiteEngagementDetailsProvider> receiver) {
   ui_handler_ = std::make_unique<SiteEngagementDetailsProviderImpl>(
       Profile::FromWebUI(web_ui()), std::move(receiver));
diff --git a/chrome/browser/ui/webui/engagement/site_engagement_ui.h b/chrome/browser/ui/webui/engagement/site_engagement_ui.h
index 119a1229..5ccf2cd6 100644
--- a/chrome/browser/ui/webui/engagement/site_engagement_ui.h
+++ b/chrome/browser/ui/webui/engagement/site_engagement_ui.h
@@ -16,12 +16,16 @@
   explicit SiteEngagementUI(content::WebUI* web_ui);
   ~SiteEngagementUI() override;
 
- private:
-  void BindSiteEngagementDetailsProvider(
+  // Instantiates the implementor of the mojom::SiteEngagementDetailsProvider
+  // mojo interface passing the pending receiver that will be internally bound.
+  void BindInterface(
       mojo::PendingReceiver<mojom::SiteEngagementDetailsProvider> receiver);
 
+ private:
   std::unique_ptr<mojom::SiteEngagementDetailsProvider> ui_handler_;
 
+  WEB_UI_CONTROLLER_TYPE_DECL();
+
   DISALLOW_COPY_AND_ASSIGN(SiteEngagementUI);
 };
 
diff --git a/chrome/browser/ui/webui/explore_sites_internals/explore_sites_internals_ui.cc b/chrome/browser/ui/webui/explore_sites_internals/explore_sites_internals_ui.cc
index 803dc70..5dd6fa5 100644
--- a/chrome/browser/ui/webui/explore_sites_internals/explore_sites_internals_ui.cc
+++ b/chrome/browser/ui/webui/explore_sites_internals/explore_sites_internals_ui.cc
@@ -35,17 +35,13 @@
   explore_sites_service_ =
       ExploreSitesServiceFactory::GetForBrowserContext(profile);
   content::WebUIDataSource::Add(profile, source);
-  // "BindExploreSitesInternalsPageHandler" will be invoked by
-  // explore_sites_internals.js, which is only possible while this object is
-  // alive, so this base::Unretained is safe.
-  AddHandlerToRegistry(base::BindRepeating(
-      &ExploreSitesInternalsUI::BindExploreSitesInternalsPageHandler,
-      base::Unretained(this)));
 }
 
+WEB_UI_CONTROLLER_TYPE_IMPL(ExploreSitesInternalsUI)
+
 ExploreSitesInternalsUI::~ExploreSitesInternalsUI() {}
 
-void ExploreSitesInternalsUI::BindExploreSitesInternalsPageHandler(
+void ExploreSitesInternalsUI::BindInterface(
     mojo::PendingReceiver<explore_sites_internals::mojom::PageHandler>
         receiver) {
   page_handler_ = std::make_unique<ExploreSitesInternalsPageHandler>(
diff --git a/chrome/browser/ui/webui/explore_sites_internals/explore_sites_internals_ui.h b/chrome/browser/ui/webui/explore_sites_internals/explore_sites_internals_ui.h
index 87fa86d0..eabb68e0 100644
--- a/chrome/browser/ui/webui/explore_sites_internals/explore_sites_internals_ui.h
+++ b/chrome/browser/ui/webui/explore_sites_internals/explore_sites_internals_ui.h
@@ -23,14 +23,18 @@
   explicit ExploreSitesInternalsUI(content::WebUI* web_ui);
   ~ExploreSitesInternalsUI() override;
 
- private:
-  void BindExploreSitesInternalsPageHandler(
+  // Instantiates the implementor of the mojom::PageHandler mojo
+  // interface passing the pending receiver that will be internally bound.
+  void BindInterface(
       mojo::PendingReceiver<explore_sites_internals::mojom::PageHandler>
           receiver);
 
+ private:
   std::unique_ptr<ExploreSitesInternalsPageHandler> page_handler_;
   ExploreSitesService* explore_sites_service_;
 
+  WEB_UI_CONTROLLER_TYPE_DECL();
+
   DISALLOW_COPY_AND_ASSIGN(ExploreSitesInternalsUI);
 };
 
diff --git a/chrome/browser/ui/webui/interventions_internals/interventions_internals_ui.cc b/chrome/browser/ui/webui/interventions_internals/interventions_internals_ui.cc
index 46f11383..b8bdba5 100644
--- a/chrome/browser/ui/webui/interventions_internals/interventions_internals_ui.cc
+++ b/chrome/browser/ui/webui/interventions_internals/interventions_internals_ui.cc
@@ -57,14 +57,13 @@
   }
   content::WebUIDataSource::Add(profile, GetSource());
   previews_ui_service_ = previews_service->previews_ui_service();
-  AddHandlerToRegistry(base::BindRepeating(
-      &InterventionsInternalsUI::BindInterventionsInternalsPageHandler,
-      base::Unretained(this)));
 }
 
+WEB_UI_CONTROLLER_TYPE_IMPL(InterventionsInternalsUI)
+
 InterventionsInternalsUI::~InterventionsInternalsUI() {}
 
-void InterventionsInternalsUI::BindInterventionsInternalsPageHandler(
+void InterventionsInternalsUI::BindInterface(
     mojo::PendingReceiver<mojom::InterventionsInternalsPageHandler> receiver) {
   DCHECK(previews_ui_service_);
   page_handler_ = std::make_unique<InterventionsInternalsPageHandler>(
diff --git a/chrome/browser/ui/webui/interventions_internals/interventions_internals_ui.h b/chrome/browser/ui/webui/interventions_internals/interventions_internals_ui.h
index 97143b0..7707aa4b 100644
--- a/chrome/browser/ui/webui/interventions_internals/interventions_internals_ui.h
+++ b/chrome/browser/ui/webui/interventions_internals/interventions_internals_ui.h
@@ -21,15 +21,19 @@
   explicit InterventionsInternalsUI(content::WebUI* web_ui);
   ~InterventionsInternalsUI() override;
 
- private:
-  void BindInterventionsInternalsPageHandler(
+  // Instantiates implementor of the mojom::InterventionsInternalsPageHandler
+  // mojo interface passing the pending receiver that will be internally bound.
+  void BindInterface(
       mojo::PendingReceiver<mojom::InterventionsInternalsPageHandler> receiver);
 
+ private:
   // The PreviewsUIService associated with this UI.
   previews::PreviewsUIService* previews_ui_service_;
 
   std::unique_ptr<InterventionsInternalsPageHandler> page_handler_;
 
+  WEB_UI_CONTROLLER_TYPE_DECL();
+
   DISALLOW_COPY_AND_ASSIGN(InterventionsInternalsUI);
 };
 
diff --git a/chrome/browser/ui/webui/media/media_engagement_ui.cc b/chrome/browser/ui/webui/media/media_engagement_ui.cc
index 726b0b65..a4b0040c 100644
--- a/chrome/browser/ui/webui/media/media_engagement_ui.cc
+++ b/chrome/browser/ui/webui/media/media_engagement_ui.cc
@@ -151,14 +151,13 @@
       IDR_MEDIA_ENGAGEMENT_SCORE_DETAILS_MOJOM_LITE_JS);
   source->SetDefaultResource(IDR_MEDIA_ENGAGEMENT_HTML);
   content::WebUIDataSource::Add(Profile::FromWebUI(web_ui), source.release());
-  AddHandlerToRegistry(base::BindRepeating(
-      &MediaEngagementUI::BindMediaEngagementScoreDetailsProvider,
-      base::Unretained(this)));
 }
 
+WEB_UI_CONTROLLER_TYPE_IMPL(MediaEngagementUI)
+
 MediaEngagementUI::~MediaEngagementUI() = default;
 
-void MediaEngagementUI::BindMediaEngagementScoreDetailsProvider(
+void MediaEngagementUI::BindInterface(
     mojo::PendingReceiver<media::mojom::MediaEngagementScoreDetailsProvider>
         receiver) {
   ui_handler_ = std::make_unique<MediaEngagementScoreDetailsProviderImpl>(
diff --git a/chrome/browser/ui/webui/media/media_engagement_ui.h b/chrome/browser/ui/webui/media/media_engagement_ui.h
index 51d367b..94d0207 100644
--- a/chrome/browser/ui/webui/media/media_engagement_ui.h
+++ b/chrome/browser/ui/webui/media/media_engagement_ui.h
@@ -18,14 +18,18 @@
   explicit MediaEngagementUI(content::WebUI* web_ui);
   ~MediaEngagementUI() override;
 
- private:
-  void BindMediaEngagementScoreDetailsProvider(
+  // Instantiates the implementor of the MediaEngagementScoreDetailsProvider
+  // mojo interface passing the pending receiver that will be internally bound.
+  void BindInterface(
       mojo::PendingReceiver<media::mojom::MediaEngagementScoreDetailsProvider>
           receiver);
 
+ private:
   std::unique_ptr<media::mojom::MediaEngagementScoreDetailsProvider>
       ui_handler_;
 
+  WEB_UI_CONTROLLER_TYPE_DECL();
+
   DISALLOW_COPY_AND_ASSIGN(MediaEngagementUI);
 };
 
diff --git a/chrome/browser/ui/webui/print_preview/print_preview_handler_unittest.cc b/chrome/browser/ui/webui/print_preview/print_preview_handler_unittest.cc
index 4e58527f..5b8918b 100644
--- a/chrome/browser/ui/webui/print_preview/print_preview_handler_unittest.cc
+++ b/chrome/browser/ui/webui/print_preview/print_preview_handler_unittest.cc
@@ -314,12 +314,12 @@
       // locale code sync up correctly.
       browser_process->SetApplicationLocale(locale);
       base::test::ScopedRestoreICUDefaultLocale scoped_locale(locale);
-      base::testing::ResetFormatters();
+      base::ResetFormattersForTesting();
       handler()->HandleGetInitialSettings(list_args.get());
     }
     // Reset again now that |scoped_locale| has been destroyed.
     browser_process->SetApplicationLocale(original_locale);
-    base::testing::ResetFormatters();
+    base::ResetFormattersForTesting();
 
     // In response to get initial settings, the initial settings are sent back.
     ASSERT_EQ(1u, web_ui()->call_data().size());
diff --git a/chrome/browser/ui/webui/settings/people_handler.cc b/chrome/browser/ui/webui/settings/people_handler.cc
index 6dc8e03..49740b0 100644
--- a/chrome/browser/ui/webui/settings/people_handler.cc
+++ b/chrome/browser/ui/webui/settings/people_handler.cc
@@ -964,13 +964,10 @@
       sync_user_settings->GetRegisteredSelectableTypes();
   const syncer::UserSelectableTypeSet selected_types =
       sync_user_settings->GetSelectedTypes();
-  const syncer::UserSelectableTypeSet enforced_types =
-      sync_user_settings->GetForcedTypes();
   for (syncer::UserSelectableType type : syncer::UserSelectableTypeSet::All()) {
     const std::string type_name = syncer::GetUserSelectableTypeName(type);
     args.SetBoolean(type_name + "Registered", registered_types.Has(type));
     args.SetBoolean(type_name + "Synced", selected_types.Has(type));
-    args.SetBoolean(type_name + "Enforced", enforced_types.Has(type));
   }
   args.SetBoolean("syncAllDataTypes",
                   sync_user_settings->IsSyncEverythingEnabled());
diff --git a/chrome/browser/updates/update_notification_info.cc b/chrome/browser/updates/update_notification_info.cc
new file mode 100644
index 0000000..e3d2ab5fa
--- /dev/null
+++ b/chrome/browser/updates/update_notification_info.cc
@@ -0,0 +1,21 @@
+// 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 "chrome/browser/updates/update_notification_info.h"
+
+namespace updates {
+
+UpdateNotificationInfo::UpdateNotificationInfo() = default;
+
+UpdateNotificationInfo::UpdateNotificationInfo(
+    const UpdateNotificationInfo& other) = default;
+
+bool UpdateNotificationInfo::operator==(
+    const UpdateNotificationInfo& other) const {
+  return title == other.title && message == other.message;
+}
+
+UpdateNotificationInfo::~UpdateNotificationInfo() = default;
+
+}  // namespace updates
diff --git a/chrome/browser/updates/update_notification_info.h b/chrome/browser/updates/update_notification_info.h
new file mode 100644
index 0000000..8594d6f
--- /dev/null
+++ b/chrome/browser/updates/update_notification_info.h
@@ -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.
+
+#ifndef CHROME_BROWSER_UPDATES_UPDATE_NOTIFICATION_INFO_H_
+#define CHROME_BROWSER_UPDATES_UPDATE_NOTIFICATION_INFO_H_
+
+#include "base/strings/string16.h"
+
+namespace updates {
+
+// Contains data used to schedule an update notification.
+struct UpdateNotificationInfo {
+  UpdateNotificationInfo();
+  UpdateNotificationInfo(const UpdateNotificationInfo& other);
+  bool operator==(const UpdateNotificationInfo& other) const;
+  ~UpdateNotificationInfo();
+
+  // The title of the notification.
+  base::string16 title;
+
+  // The body text of the notification.
+  base::string16 message;
+};
+
+}  // namespace updates
+
+#endif  // CHROME_BROWSER_UPDATES_UPDATE_NOTIFICATION_INFO_H_
diff --git a/chrome/browser/updates/update_notification_service.h b/chrome/browser/updates/update_notification_service.h
index cf2987f5..8fffa64 100644
--- a/chrome/browser/updates/update_notification_service.h
+++ b/chrome/browser/updates/update_notification_service.h
@@ -10,18 +10,16 @@
 #include "base/macros.h"
 #include "components/keyed_service/core/keyed_service.h"
 
-namespace notifications {
-struct NotificationData;
-}  // namespace notifications
-
 namespace updates {
 
+struct UpdateNotificationInfo;
+
 // Service to schedule update notification via
 // notifications::NotificationScheduleService.
 class UpdateNotificationService : public KeyedService {
  public:
   // Try yo schedule an update notification.
-  virtual void Schedule(notifications::NotificationData data) = 0;
+  virtual void Schedule(UpdateNotificationInfo data) = 0;
 
   ~UpdateNotificationService() override = default;
 
diff --git a/chrome/browser/updates/update_notification_service_bridge.cc b/chrome/browser/updates/update_notification_service_bridge.cc
index 7d4d011..09f3614 100644
--- a/chrome/browser/updates/update_notification_service_bridge.cc
+++ b/chrome/browser/updates/update_notification_service_bridge.cc
@@ -12,6 +12,7 @@
 #include "chrome/browser/notifications/scheduler/public/notification_params.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/profiles/profile_android.h"
+#include "chrome/browser/updates/update_notification_info.h"
 #include "chrome/browser/updates/update_notification_service.h"
 #include "chrome/browser/updates/update_notification_service_factory.h"
 
@@ -31,7 +32,7 @@
   Profile* profile = ProfileAndroid::FromProfileAndroid(j_profile);
   auto* update_notification_service =
       UpdateNotificationServiceFactory::GetForBrowserContext(profile);
-  notifications::NotificationData data;
+  UpdateNotificationInfo data;
   data.title = ConvertJavaStringToUTF16(env, j_title);
   data.message = ConvertJavaStringToUTF16(env, j_message);
   update_notification_service->Schedule(std::move(data));
diff --git a/chrome/browser/updates/update_notification_service_impl.cc b/chrome/browser/updates/update_notification_service_impl.cc
index e5afa27..a4ae6b6 100644
--- a/chrome/browser/updates/update_notification_service_impl.cc
+++ b/chrome/browser/updates/update_notification_service_impl.cc
@@ -15,8 +15,19 @@
 #include "chrome/browser/notifications/scheduler/public/notification_schedule_service.h"
 #include "chrome/browser/notifications/scheduler/public/schedule_service_utils.h"
 #include "chrome/browser/updates/update_notification_config.h"
+#include "chrome/browser/updates/update_notification_info.h"
 
 namespace updates {
+namespace {
+
+void BuildNotificationData(const updates::UpdateNotificationInfo& data,
+                           notifications::NotificationData* out) {
+  DCHECK(out);
+  out->title = data.title;
+  out->message = data.message;
+}
+
+}  // namespace
 
 // Maximum number of update notification should be cached in scheduler.
 constexpr int kNumMaxNotificationsLimit = 1;
@@ -28,8 +39,7 @@
 
 UpdateNotificationServiceImpl::~UpdateNotificationServiceImpl() = default;
 
-void UpdateNotificationServiceImpl::Schedule(
-    notifications::NotificationData data) {
+void UpdateNotificationServiceImpl::Schedule(UpdateNotificationInfo data) {
   schedule_service_->GetClientOverview(
       notifications::SchedulerClientType::kChromeUpdate,
       base::BindOnce(&UpdateNotificationServiceImpl::OnClientOverviewQueried,
@@ -37,7 +47,7 @@
 }
 
 void UpdateNotificationServiceImpl::OnClientOverviewQueried(
-    notifications::NotificationData data,
+    UpdateNotificationInfo data,
     notifications::ClientOverview overview) {
   int num_scheduled_notifs = overview.num_scheduled_notifications;
 
@@ -50,9 +60,11 @@
         notifications::SchedulerClientType::kChromeUpdate);
   }
 
+  notifications::NotificationData notification_data;
+  BuildNotificationData(data, &notification_data);
   auto params = std::make_unique<notifications::NotificationParams>(
-      notifications::SchedulerClientType::kChromeUpdate, std::move(data),
-      BuildScheduleParams());
+      notifications::SchedulerClientType::kChromeUpdate,
+      std::move(notification_data), BuildScheduleParams());
   schedule_service_->Schedule(std::move(params));
 }
 
diff --git a/chrome/browser/updates/update_notification_service_impl.h b/chrome/browser/updates/update_notification_service_impl.h
index f7f584bf2..ed1b368 100644
--- a/chrome/browser/updates/update_notification_service_impl.h
+++ b/chrome/browser/updates/update_notification_service_impl.h
@@ -13,7 +13,6 @@
 
 namespace notifications {
 struct ClientOverview;
-struct NotificationData;
 class NotificationScheduleService;
 struct ScheduleParams;
 }  // namespace notifications
@@ -21,6 +20,7 @@
 namespace updates {
 
 struct UpdateNotificationConfig;
+struct UpdateNotificationInfo;
 
 class UpdateNotificationServiceImpl : public UpdateNotificationService {
  public:
@@ -30,11 +30,11 @@
 
  private:
   // UpdateNotificationService implementation.
-  void Schedule(notifications::NotificationData data) override;
+  void Schedule(UpdateNotificationInfo data) override;
 
   // Called after querying the |ClientOverview| struct from scheduler system
   // completed.
-  void OnClientOverviewQueried(notifications::NotificationData data,
+  void OnClientOverviewQueried(UpdateNotificationInfo data,
                                notifications::ClientOverview overview);
 
   // Build notification ScheduleParams for update notification.
diff --git a/chrome/browser/util/android/java/src/org/chromium/chrome/browser/util/AccessibilityUtil.java b/chrome/browser/util/android/java/src/org/chromium/chrome/browser/util/AccessibilityUtil.java
index 5695b15..1520c4e2 100644
--- a/chrome/browser/util/android/java/src/org/chromium/chrome/browser/util/AccessibilityUtil.java
+++ b/chrome/browser/util/android/java/src/org/chromium/chrome/browser/util/AccessibilityUtil.java
@@ -11,6 +11,9 @@
 import android.os.Build;
 import android.view.accessibility.AccessibilityManager;
 
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+
 import org.chromium.base.ActivityState;
 import org.chromium.base.ApplicationStatus;
 import org.chromium.base.ApplicationStatus.ActivityStateListener;
@@ -114,4 +117,14 @@
         }
         return false;
     }
+
+    /**
+     * Set whether the device has accessibility enabled. Should be reset back to null after the test
+     * has finished.
+     * @param isEnabled whether the device has accessibility enabled.
+     */
+    @VisibleForTesting
+    public static void setAccessibilityEnabledForTesting(@Nullable Boolean isEnabled) {
+        sIsAccessibilityEnabled = isEnabled;
+    }
 }
diff --git a/chrome/browser/web_applications/components/web_app_file_handler_registration_win.cc b/chrome/browser/web_applications/components/web_app_file_handler_registration_win.cc
index 4349043d..3dd6ebae 100644
--- a/chrome/browser/web_applications/components/web_app_file_handler_registration_win.cc
+++ b/chrome/browser/web_applications/components/web_app_file_handler_registration_win.cc
@@ -60,10 +60,7 @@
   base::string16 utf16_app_name = base::UTF8ToUTF16(app_name);
   base::FilePath icon_path =
       web_app::internals::GetIconFilePath(web_app_path, utf16_app_name);
-  // TODO(davidbienvenu): use kChromePwaLauncherExecutable once
-  // https://crrev.com/c/1815220 lands.
-  base::FilePath pwa_launcher_path =
-      GetChromeProxyPath().DirName().AppendASCII("chrome_pwa_launcher.exe");
+  base::FilePath pwa_launcher_path = GetChromePwaLauncherPath();
   base::FilePath sanitized_app_name = internals::GetSanitizedFileName(
       utf16_app_name + STRING16_LITERAL(".exe"));
   // TODO(jessemckenna): Do we need to do anything differently for Win7, e.g.,
diff --git a/chrome/browser/web_applications/components/web_app_file_handler_registration_win_unittest.cc b/chrome/browser/web_applications/components/web_app_file_handler_registration_win_unittest.cc
index ad7643e..608fcd6 100644
--- a/chrome/browser/web_applications/components/web_app_file_handler_registration_win_unittest.cc
+++ b/chrome/browser/web_applications/components/web_app_file_handler_registration_win_unittest.cc
@@ -78,9 +78,7 @@
         registry_override_.OverrideRegistry(HKEY_CURRENT_USER));
     // Until the CL to create the shim app is submitted, create it by
     // hand. TODO(davidbienvenu): Remove this once cl/1815220 lands.
-    base::FilePath web_app_shim_path =
-        GetChromeProxyPath().DirName().AppendASCII("chrome_pwa_launcher.exe");
-    base::File app_shim(web_app_shim_path, base::File::FLAG_CREATE);
+    base::File app_shim(GetChromePwaLauncherPath(), base::File::FLAG_CREATE);
   }
 
   Profile* profile() { return &profile_; }
diff --git a/chrome/browser/web_applications/components/web_app_shortcut_win.cc b/chrome/browser/web_applications/components/web_app_shortcut_win.cc
index bd735e2c..cdbd9f6 100644
--- a/chrome/browser/web_applications/components/web_app_shortcut_win.cc
+++ b/chrome/browser/web_applications/components/web_app_shortcut_win.cc
@@ -44,6 +44,9 @@
 constexpr base::FilePath::CharType kChromeProxyExecutable[] =
     FILE_PATH_LITERAL("chrome_proxy.exe");
 
+constexpr base::FilePath::CharType kChromePwaLauncherExecutable[] =
+    FILE_PATH_LITERAL("chrome_pwa_launcher.exe");
+
 // Calculates checksum of an icon family using MD5.
 // The checksum is derived from all of the icons in the family.
 void GetImageCheckSum(const gfx::ImageFamily& image, base::MD5Digest* digest) {
@@ -357,6 +360,12 @@
   return chrome_dir.Append(kChromeProxyExecutable);
 }
 
+base::FilePath GetChromePwaLauncherPath() {
+  base::FilePath chrome_dir;
+  CHECK(base::PathService::Get(base::DIR_EXE, &chrome_dir));
+  return chrome_dir.Append(kChromePwaLauncherExecutable);
+}
+
 namespace internals {
 
 void OnShortcutInfoLoadedForSetRelaunchDetails(
diff --git a/chrome/browser/web_applications/components/web_app_shortcut_win.h b/chrome/browser/web_applications/components/web_app_shortcut_win.h
index 7c4aee76..f642a3b 100644
--- a/chrome/browser/web_applications/components/web_app_shortcut_win.h
+++ b/chrome/browser/web_applications/components/web_app_shortcut_win.h
@@ -13,6 +13,8 @@
 
 base::FilePath GetChromeProxyPath();
 
+base::FilePath GetChromePwaLauncherPath();
+
 namespace internals {
 
 // Returns the Windows user-level shortcut paths that are specified in
diff --git a/chrome/browser/web_applications/extensions/system_web_app_manager_browsertest.cc b/chrome/browser/web_applications/extensions/system_web_app_manager_browsertest.cc
index 6704fec..e3dbb7e8 100644
--- a/chrome/browser/web_applications/extensions/system_web_app_manager_browsertest.cc
+++ b/chrome/browser/web_applications/extensions/system_web_app_manager_browsertest.cc
@@ -239,6 +239,22 @@
       ->OpenApplication(params);
 }
 
+content::EvalJsResult EvalJs(content::WebContents* web_contents,
+                             const std::string& script) {
+  // Set world_id = 1 to bypass Content Security Policy restriction.
+  return content::EvalJs(web_contents, script,
+                         content::EXECUTE_SCRIPT_DEFAULT_OPTIONS,
+                         1 /*world_id*/);
+}
+
+::testing::AssertionResult ExecJs(content::WebContents* web_contents,
+                                  const std::string& script) {
+  // Set world_id = 1 to bypass Content Security Policy restriction.
+  return content::ExecJs(web_contents, script,
+                         content::EXECUTE_SCRIPT_DEFAULT_OPTIONS,
+                         1 /*world_id*/);
+}
+
 // Test that System Apps install correctly with a manifest.
 IN_PROC_BROWSER_TEST_F(SystemWebAppManagerBrowserTest, Install) {
   const extensions::Extension* app = GetExtensionForAppBrowser(
@@ -299,30 +315,57 @@
   ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_directory.GetPath(),
                                              &temp_file_path));
 
-  params.launch_files = {temp_file_path};
-
   const GURL& launch_url = WebAppProvider::Get(browser()->profile())
                                ->registrar()
                                .GetAppLaunchURL(params.app_id);
+
+  // First launch.
+  params.launch_files = {temp_file_path};
   content::TestNavigationObserver navigation_observer(launch_url);
   navigation_observer.StartWatchingNewWebContents();
-
   content::WebContents* web_contents =
       OpenApplication(browser()->profile(), params);
-
   navigation_observer.Wait();
 
-  auto result =
-      content::EvalJs(web_contents,
-                      "new Promise(resolve => {"
-                      "  launchQueue.setConsumer(launchParams => {"
-                      "    resolve(launchParams.files.length);"
-                      "  });"
-                      "});",
-                      content::EXECUTE_SCRIPT_DEFAULT_OPTIONS, 1 /*world_id*/);
+  // Set up a Promise that resolves to launchParams, when launchQueue's consumer
+  // callback is called.
+  EXPECT_TRUE(ExecJs(web_contents,
+                     "window.launchParamsPromise = new Promise(resolve => {"
+                     "  window.resolveLaunchParamsPromise = resolve;"
+                     "});"
+                     "launchQueue.setConsumer(launchParams => {"
+                     "  window.resolveLaunchParamsPromise(launchParams);"
+                     "});"));
 
-  // Files array should be populated with one file.
-  EXPECT_EQ(1, result.value.GetInt());
+  // Check launch files are correct.
+  EXPECT_EQ(temp_file_path.BaseName().AsUTF8Unsafe(),
+            EvalJs(web_contents,
+                   "window.launchParamsPromise.then("
+                   "  launchParams => launchParams.files[0].name);"));
+
+  // Reset the Promise to get second launchParams.
+  EXPECT_TRUE(ExecJs(web_contents,
+                     "window.launchParamsPromise = new Promise(resolve => {"
+                     "  window.resolveLaunchParamsPromise = resolve;"
+                     "});"));
+
+  // Second Launch.
+  base::FilePath temp_file_path2;
+  ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_directory.GetPath(),
+                                             &temp_file_path2));
+  params.launch_files = {temp_file_path2};
+  content::WebContents* web_contents2 =
+      OpenApplication(browser()->profile(), params);
+
+  // WebContents* should be the same because we are passing launchParams to the
+  // opened application.
+  EXPECT_EQ(web_contents, web_contents2);
+
+  // Second launch_files are passed to the opened application.
+  EXPECT_EQ(temp_file_path2.BaseName().AsUTF8Unsafe(),
+            EvalJs(web_contents,
+                   "window.launchParamsPromise.then("
+                   "  launchParams => launchParams.files[0].name)"));
 }
 
 }  // namespace web_app
diff --git a/chrome/browser/webauth_interactive_uitest.cc b/chrome/browser/webauth_interactive_uitest.cc
index 91cdbc2..8cfb560 100644
--- a/chrome/browser/webauth_interactive_uitest.cc
+++ b/chrome/browser/webauth_interactive_uitest.cc
@@ -17,7 +17,6 @@
 #include "components/network_session_configurator/common/network_switches.h"
 #include "content/public/browser/authenticator_environment.h"
 #include "content/public/test/browser_test_utils.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "device/fido/virtual_fido_device_factory.h"
 #include "net/dns/mock_host_resolver.h"
 #include "net/test/embedded_test_server/embedded_test_server.h"
diff --git a/chrome/common/mac/app_shim.mojom b/chrome/common/mac/app_shim.mojom
index f7a8d1f..ddf445f9 100644
--- a/chrome/common/mac/app_shim.mojom
+++ b/chrome/common/mac/app_shim.mojom
@@ -36,15 +36,6 @@
   kFailedValidation,
 };
 
-enum AppShimFocusType {
-  // Just focus the app.
-  kNormal,
-  // Focus the app or launch it if it has no windows open.
-  kReopen,
-  // Open the given file in the app.
-  kOpenFiles,
-};
-
 enum AppShimAttentionType {
   // Removes any active attention request.
   kCancel,
@@ -95,11 +86,12 @@
 // Interface through which the a process communicates to the browser process.
 interface AppShimHost {
   // Sent when the user has indicated a desire to focus the app, either by
-  // clicking on the app's icon in the dock or by selecting it with Cmd+Tab. In
-  // response, Chrome brings the app's windows to the foreground, or relaunches
-  // if the focus type indicates a reopen and there are no open windows.
-  FocusApp(AppShimFocusType focus_type,
-           array<mojo_base.mojom.FilePath> files);
+  // clicking on the app's icon in the dock or by selecting it with Cmd+Tab.
+  FocusApp();
+
+  // Sent when files are opened by the app (e.g, by opening in Finder, or by
+  // dragging on to the app in the dock).
+  FilesOpened(array<mojo_base.mojom.FilePath> files);
 
   // Called when a profile is selected from the profiles menu.
   ProfileSelectedFromMenu(mojo_base.mojom.FilePath profile_path);
diff --git a/chrome/common/search.mojom b/chrome/common/search.mojom
index dfcd1b4a3..8e45404 100644
--- a/chrome/common/search.mojom
+++ b/chrome/common/search.mojom
@@ -184,6 +184,14 @@
   // Called when a user dismisses a promo.
   BlocklistPromo(string promo_id);
 
+  // Handles navigation to chrome://extensions by calling the browser to
+  // complete the navigation for the extensions checkup middle slot promo.
+  OpenExtensionsPage(double button,
+                     bool alt_key,
+                     bool ctrl_key,
+                     bool meta_key,
+                     bool shift_key);
+
   // Handles navigation to an autocomplete match (i.e. an item in the realbox's
   // list of matches). Note: |url| is passed solely to verify that the browser
   // and renderer are in sync; don't trust this content or use it for anything
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_ar.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_ar.xtb
index 56398b28..6fb4e63 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_ar.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_ar.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">‏إدخال كلمة مرور Windows</translation>
 <translation id="7357241217513796177">يُرجى التأكُّد من اتصالك بالشبكة وإعادة المحاولة.</translation>
 <translation id="7536769223115622137">إضافة حساب العمل</translation>
+<translation id="7811865856574012727">قيّد المشرف تسجيل دخول الجهاز إلى النطاقات التالية: <ph name="EMAIL_DOMAINS" />. يُرجى إعادة المحاولة باستخدام حساب عمل صالح.</translation>
 <translation id="7856245195110636219">‏تتعذّر المتابعة بدون إدخال كلمة مرور Windows الحالية. يُرجى التواصل مع مشرف النظام.</translation>
 <translation id="8639729688781680518">‏نسيت كلمة مرور Windows</translation>
 <translation id="866458870819756755">تعذَّر إنشاء مستخدم.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_az.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_az.xtb
index 4b8afddd..6f8a05a 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_az.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_az.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Windows Parolunu Daxil Edin</translation>
 <translation id="7357241217513796177">Şəbəkə bağlantısını yoxlayın və yenidən cəhd edin.</translation>
 <translation id="7536769223115622137">İş hesabı əlavə edin</translation>
+<translation id="7811865856574012727">Administrator aşağıdakı domenlərə cihaz girişini məhdudlaşdırıb: <ph name="EMAIL_DOMAINS" />. Doğru iş hesabı ilə yenidən cəhd edin.</translation>
 <translation id="7856245195110636219">Cari Windows parolunu daxil etmədən davam etmək mümkün deyil. Sistem administratoru ilə əlaqə saxlayın.</translation>
 <translation id="8639729688781680518">Windows Parolunu Unutmuşam</translation>
 <translation id="866458870819756755">Hesab yaradılmadı.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_be.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_be.xtb
index a3c126f..f46b727 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_be.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_be.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Увесці пароль Windows</translation>
 <translation id="7357241217513796177">Праверце падключэнне да сеткі і паўтарыце спробу.</translation>
 <translation id="7536769223115622137">Дадаць працоўны ўліковы запіс</translation>
+<translation id="7811865856574012727">Адміністратар дазволіў уваход на прыладзе толькі з выкарыстаннем наступных даменаў: <ph name="EMAIL_DOMAINS" />. Паўтарыце спробу, выкарыстоўваючы сапраўдны працоўны ўліковы запіс.</translation>
 <translation id="7856245195110636219">Не ўдалося працягнуць без уводу бягучага пароля Windows. Звярніцеся да сістэмнага адміністратара.</translation>
 <translation id="8639729688781680518">Не памятаю пароль Windows</translation>
 <translation id="866458870819756755">Не ўдалося стварыць карыстальніка.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_bg.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_bg.xtb
index 923790d..0d569d4 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_bg.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_bg.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Въвеждане на паролата за Windows</translation>
 <translation id="7357241217513796177">Проверете дали имате връзка с мрежата и опитайте отново.</translation>
 <translation id="7536769223115622137">Добавяне на служебен профил</translation>
+<translation id="7811865856574012727">Администраторът ви е ограничил влизането в устройствата до следните домейни: <ph name="EMAIL_DOMAINS" />. Опитайте отново посредством валиден служебен профил.</translation>
 <translation id="7856245195110636219">За да продължите, трябва да въведете текущата парола за Windows. Моля, свържете се със системния администратор.</translation>
 <translation id="8639729688781680518">Забравена парола за Windows</translation>
 <translation id="866458870819756755">Създаването на потребител не бе успешно.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_bn.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_bn.xtb
index 2f2cbab..706f737e 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_bn.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_bn.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Windows-এর পাসওয়ার্ড লিখুন</translation>
 <translation id="7357241217513796177">নেটওয়ার্ক কানেকশন আছে কিনা দেখে নিয়ে আবার চেষ্টা করুন।</translation>
 <translation id="7536769223115622137">কাজের অ্যাকাউন্ট যোগ করুন</translation>
+<translation id="7811865856574012727">আপনার অ্যাডমিনিস্ট্রেটর নিচে উল্লেখ করা ডোমেনে ডিভাইস সাইন-ইনে বিধিনিষেধ আরোপ করেছেন: <ph name="EMAIL_DOMAINS" />। সঠিক অফিস অ্যাকাউন্ট ব্যবহার করে আবার চেষ্টা করুন।</translation>
 <translation id="7856245195110636219">Windows-এর বর্তমান পাসওয়ার্ড না দিয়ে এগিয়ে যাওয়া যাবে না। সিস্টেম অ্যাডমিনিস্ট্রেটরের সাথে যোগাযোগ করুন।</translation>
 <translation id="8639729688781680518">Windows-এর পাসওয়ার্ড ভুলে গেছেন</translation>
 <translation id="866458870819756755">ব্যবহারকারী তৈরি করা যায়নি।</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_bs.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_bs.xtb
index 52cd6f12..e75f9a2 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_bs.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_bs.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Unesite lozinku za Windows</translation>
 <translation id="7357241217513796177">Provjerite imate li mrežnu vezu i pokušajte ponovo.</translation>
 <translation id="7536769223115622137">Dodaj poslovni račun</translation>
+<translation id="7811865856574012727">Vaš administrator je ograničio prijavu uređaja na sljedeće domene: <ph name="EMAIL_DOMAINS" />. Pokušajte ponovo s važećim poslovnim računom.</translation>
 <translation id="7856245195110636219">Nije moguće nastaviti bez unošenja trenutne lozinke za Windows. Obratite se administratoru sistema.</translation>
 <translation id="8639729688781680518">Zaboravili ste lozinku za Windows</translation>
 <translation id="866458870819756755">Korisnik nije kreiran.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_cs.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_cs.xtb
index 058299e7..027bf78a 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_cs.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_cs.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Zadejte heslo účtu Windows</translation>
 <translation id="7357241217513796177">Zkontrolujte, zda jste připojeni k síti a zkuste to znovu.</translation>
 <translation id="7536769223115622137">Přidat pracovní účet</translation>
+<translation id="7811865856574012727">Administrátor omezil přihlášení zařízení na následující domény: <ph name="EMAIL_DOMAINS" />. Zkuste to znovu pomocí platného pracovního účtu.</translation>
 <translation id="7856245195110636219">Bez zadání aktuálního hesla účtu Windows nelze pokračovat. Kontaktujte administrátora systému.</translation>
 <translation id="8639729688781680518">Zapomněl(a) jsem heslo účtu Windows</translation>
 <translation id="866458870819756755">Uživatele se nepodařilo vytvořit.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_da.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_da.xtb
index 1e14dc8d..472915d 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_da.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_da.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Angiv adgangskoden til Windows</translation>
 <translation id="7357241217513796177">Sørg for, at du har forbindelse til et netværk, og prøv igen.</translation>
 <translation id="7536769223115622137">Tilføj arbejdskonto</translation>
+<translation id="7811865856574012727">Din administrator har begrænset login på enheder for følgende domæner: <ph name="EMAIL_DOMAINS" />. Prøv igen ved hjælp af en gyldig arbejdskonto.</translation>
 <translation id="7856245195110636219">Det er ikke muligt at fortsætte, før den aktuelle adgangskode til Windows angives. Kontakt en systemadministrator.</translation>
 <translation id="8639729688781680518">Glemt adgangskode til Windows</translation>
 <translation id="866458870819756755">En bruger kunne ikke oprettes.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_de.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_de.xtb
index 6d8d2d6a..2a469cd 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_de.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_de.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Windows-Passwort eingeben</translation>
 <translation id="7357241217513796177">Sorgen Sie dafür, dass Sie eine Netzwerkverbindung haben, und versuchen Sie es dann noch einmal.</translation>
 <translation id="7536769223115622137">Arbeitskonto hinzufügen</translation>
+<translation id="7811865856574012727">Ihr Administrator hat die Geräteanmeldung auf die folgenden Domains beschränkt: <ph name="EMAIL_DOMAINS" />. Versuchen Sie es noch einmal mit einem gültigen Arbeitskonto.</translation>
 <translation id="7856245195110636219">Fortfahren ohne Eingabe des aktuellen Windows-Passworts nicht möglich. Bitte setzen Sie sich mit einem Systemadministrator in Verbindung.</translation>
 <translation id="8639729688781680518">Windows-Passwort vergessen</translation>
 <translation id="866458870819756755">Ein Nutzer konnte nicht erstellt werden.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_es-419.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_es-419.xtb
index 240f6e3..cace1fd 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_es-419.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_es-419.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Ingresa la contraseña de Windows</translation>
 <translation id="7357241217513796177">Asegúrate de tener una conexión de red y vuelve a intentarlo.</translation>
 <translation id="7536769223115622137">Agregar cuenta de trabajo</translation>
+<translation id="7811865856574012727">El administrador restringió el acceso en el dispositivo a los siguientes dominios: <ph name="EMAIL_DOMAINS" />. Vuelve a intentarlo con una cuenta de trabajo válida.</translation>
 <translation id="7856245195110636219">Para continuar, deberás ingresar la contraseña actual de Windows. Comunícate con un administrador del sistema.</translation>
 <translation id="8639729688781680518">Olvidé la contraseña de Windows</translation>
 <translation id="866458870819756755">No se pudo crear el usuario.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_es.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_es.xtb
index 68f6fd9..527bf32e 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_es.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_es.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Introduce la contraseña de Windows</translation>
 <translation id="7357241217513796177">Comprueba que tengas una conexión de red y vuelve a intentarlo.</translation>
 <translation id="7536769223115622137">Añadir cuenta de trabajo</translation>
+<translation id="7811865856574012727">El administrador ha restringido el inicio de sesión con el dispositivo en los siguientes dominios: <ph name="EMAIL_DOMAINS" />. Inténtalo de nuevo usando una cuenta de trabajo válida.</translation>
 <translation id="7856245195110636219">No se puede continuar sin introducir la contraseña actual de Windows. Ponte en contacto con el administrador del sistema.</translation>
 <translation id="8639729688781680518">He olvidado la contraseña de Windows</translation>
 <translation id="866458870819756755">No se ha podido crear el usuario.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_et.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_et.xtb
index bb12354..5eb21f4 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_et.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_et.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Sisestage Windowsi parool</translation>
 <translation id="7357241217513796177">Kontrollige võrguühendust ja proovige uuesti.</translation>
 <translation id="7536769223115622137">Lisa töökonto</translation>
+<translation id="7811865856574012727">Administraator piiras järgmiste domeenide jaoks seadmesse sisselogimist: <ph name="EMAIL_DOMAINS" />. Proovige kasutada kehtivat töökontot.</translation>
 <translation id="7856245195110636219">Ei saa jätkata enne, kui sisestatakse praegune Windowsi parool. Võtke ühendust süsteemiadministraatoriga.</translation>
 <translation id="8639729688781680518">Unustasin Windowsi parooli</translation>
 <translation id="866458870819756755">Kasutajat ei saanud luua.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_fa.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_fa.xtb
index 8b7bf51..05587ce 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_fa.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_fa.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">‏گذرواژه Windows را وارد کنید</translation>
 <translation id="7357241217513796177">مطمئن شوید اتصال شبکه دارید و دوباره امتحان کنید.</translation>
 <translation id="7536769223115622137">افزودن حساب کاری</translation>
+<translation id="7811865856574012727">سرپرستتان ورود دستگاه به سیستم دامنه‌های زیر را محدود کرده است: <ph name="EMAIL_DOMAINS" />. بااستفاده از حساب کاری معتبری دوباره امتحان کنید.</translation>
 <translation id="7856245195110636219">‏بدون وارد کردن گذرواژه کنونی Windows امکان ادامه نیست. لطفاً با سرپرست سیستم تماس بگیرید.</translation>
 <translation id="8639729688781680518">‏فراموش کردن گذرواژه Windows</translation>
 <translation id="866458870819756755">کاربر ایجاد نشد.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_fi.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_fi.xtb
index 2f32ddd..7ae9ed5c 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_fi.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_fi.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Lisää Windows-salasana</translation>
 <translation id="7357241217513796177">Varmista, että käytössäsi on verkkoyhteys, ja yritä uudelleen.</translation>
 <translation id="7536769223115622137">Lisää työtili</translation>
+<translation id="7811865856574012727">Järjestelmänvalvoja on rajoittanut laitteella kirjautumista näihin verkkotunnuksiin: <ph name="EMAIL_DOMAINS" />. Yritä uudelleen toimivalla työtilillä.</translation>
 <translation id="7856245195110636219">Jatkaminen ei onnistu lisäämättä nykyistä Windows-salasanaa. Ota yhteyttä järjestelmänvalvojaan.</translation>
 <translation id="8639729688781680518">Unohdin Windows-salasanan</translation>
 <translation id="866458870819756755">Käyttäjän luominen epäonnistui.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_fil.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_fil.xtb
index 6408d326..5d5229f 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_fil.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_fil.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Ilagay ang Password sa Windows</translation>
 <translation id="7357241217513796177">Tiyaking mayroon kang koneksyon sa network at subukang muli.</translation>
 <translation id="7536769223115622137">Magdagdag ng account sa trabaho</translation>
+<translation id="7811865856574012727">Pinaghigpitan ng iyong administrator ang pag-sign in ng device sa mga sumusunod na domain: <ph name="EMAIL_DOMAINS" />. Subukan ulit gamit ang valid na account sa trabaho.</translation>
 <translation id="7856245195110636219">Hindi makapagpatuloy nang hindi inilalagay ang kasalukuyang password sa Windows. Makipag-ugnayan sa isang system administrator.</translation>
 <translation id="8639729688781680518">Nakalimutan ang Password sa Windows</translation>
 <translation id="866458870819756755">Hindi makagawa ng user.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_fr-CA.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_fr-CA.xtb
index 137e812..205d7c9 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_fr-CA.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_fr-CA.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Entrer votre mot de passe Windows</translation>
 <translation id="7357241217513796177">Assurez-vous que vous disposez d'une connexion réseau et réessayez.</translation>
 <translation id="7536769223115622137">Ajouter un compte professionnel</translation>
+<translation id="7811865856574012727">Votre administrateur a restreint la connexion d'appareil aux domaines suivants : <ph name="EMAIL_DOMAINS" />. Réessayez en utilisant un compte professionnel valide.</translation>
 <translation id="7856245195110636219">Pour continuer, vous devez entrer le mot de passe Windows actuel. Veuillez communiquer avec un administrateur système.</translation>
 <translation id="8639729688781680518">Mot de passe Windows oublié</translation>
 <translation id="866458870819756755">Impossible de créer l'utilisateur.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_fr.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_fr.xtb
index a27c8cb..b1d3d308 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_fr.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_fr.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Saisissez votre mot de passe Windows</translation>
 <translation id="7357241217513796177">Vérifiez que vous disposez bien d'une connexion réseau, puis réessayez.</translation>
 <translation id="7536769223115622137">Ajouter un compte professionnel</translation>
+<translation id="7811865856574012727">Votre administrateur n'a autorisé la connexion à l'appareil qu'avec les domaines suivants : <ph name="EMAIL_DOMAINS" />. Réessayez à l'aide d'un compte professionnel valide.</translation>
 <translation id="7856245195110636219">Impossible de continuer sans saisir le mot de passe Windows actuel. Veuillez contacter un administrateur système.</translation>
 <translation id="8639729688781680518">Vous avez oublié votre mot de passe Windows ?</translation>
 <translation id="866458870819756755">Impossible de créer le compte utilisateur.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_gl.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_gl.xtb
index c3de426..6878d3d 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_gl.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_gl.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Introduce o contrasinal de Windows</translation>
 <translation id="7357241217513796177">Asegúrate de ter conexión de rede e téntao de novo.</translation>
 <translation id="7536769223115622137">Engadir conta do traballo</translation>
+<translation id="7811865856574012727">O teu administrador restrinxiu o inicio de sesión no dispositivo nos seguintes dominios: <ph name="EMAIL_DOMAINS" />. Téntao de novo cunha conta do traballo válida.</translation>
 <translation id="7856245195110636219">Non se pode continuar sen introducir o contrasinal actual de Windows. Ponte en contacto cun administrador do sistema.</translation>
 <translation id="8639729688781680518">Esquecín o contrasinal de Windows</translation>
 <translation id="866458870819756755">Non se puido crear un usuario.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_gu.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_gu.xtb
index ebbba67f..1ff10d73 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_gu.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_gu.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Windows પાસવર્ડ દાખલ કરો</translation>
 <translation id="7357241217513796177">તમારી પાસે નેટવર્ક કનેક્શન છે તેની ખાતરી કરો અને ફરીથી પ્રયાસ કરો.</translation>
 <translation id="7536769223115622137">કાર્ય એકાઉન્ટ ઉમેરો</translation>
+<translation id="7811865856574012727">તમારા વ્યવસ્થાપક દ્વારા નીચેના ડોમેનમાં ડિવાઇસના સાઇન ઇન પર પ્રતિબંધ મૂકવામાં આવ્યો છે: <ph name="EMAIL_DOMAINS" />. ઑફિસના માન્ય એકાઉન્ટનો ઉપયોગ કરીને ફરી પ્રયાસ કરો.</translation>
 <translation id="7856245195110636219">Windowsનો હાલનો પાસવર્ડ દાખલ કર્યા વિના આગળ વધી શકતા નથી. કૃપા કરીને સિસ્ટમ વ્યવસ્થાપકનો સંપર્ક કરો.</translation>
 <translation id="8639729688781680518">Windows પાસવર્ડ ભૂલી ગયા</translation>
 <translation id="866458870819756755">વપરાશકર્તા બનાવી શકાયો નથી.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_hr.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_hr.xtb
index 43ceca88..93987a2 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_hr.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_hr.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Unesite zaporku za Windows</translation>
 <translation id="7357241217513796177">Provjerite mrežnu vezu i pokušajte ponovo.</translation>
 <translation id="7536769223115622137">Dodaj radni račun</translation>
+<translation id="7811865856574012727">Vaš administrator ograničio je prijavu uređaja na sljedećim domenama: <ph name="EMAIL_DOMAINS" />. Pokušajte ponovo putem valjanog poslovnog računa.</translation>
 <translation id="7856245195110636219">Ne možete nastaviti bez unošenja trenutačne zaporke za Windows. Obratite se administratoru sustava.</translation>
 <translation id="8639729688781680518">Zaboravili ste zaporku za Windows</translation>
 <translation id="866458870819756755">Izrada korisnika nije uspjela</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_hu.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_hu.xtb
index d20b8c9..7c3f45ac 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_hu.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_hu.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Adja meg Windows-jelszavát</translation>
 <translation id="7357241217513796177">Győződjön meg róla, hogy rendelkezik hálózati kapcsolattal, majd próbálja újra.</translation>
 <translation id="7536769223115622137">Munkahelyi fiók hozzáadása</translation>
+<translation id="7811865856574012727">Az adminisztrátor a következő domainekre korlátozta a bejelentkezést az eszközön: <ph name="EMAIL_DOMAINS" />. Próbálja újra érvényes munkahelyi fiókkal.</translation>
 <translation id="7856245195110636219">A jelenlegi Windows-jelszó megadása nélkül nem lehet továbblépni. Forduljon a rendszergazdához.</translation>
 <translation id="8639729688781680518">Elfelejtett Windows-jelszó</translation>
 <translation id="866458870819756755">Nem sikerült létrehozni a felhasználót.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_hy.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_hy.xtb
index d03a45b..776bef0 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_hy.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_hy.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Մուտքագրեք Windows-ի գաղտնաբառը</translation>
 <translation id="7357241217513796177">Ստուգեք կապը և նորից փորձեք:</translation>
 <translation id="7536769223115622137">Ավելացնել աշխատանքային հաշիվ</translation>
+<translation id="7811865856574012727">Ձեր ադմինիստրատորը սահմանափակել է հաշվի մուտքը սարքից հետևյալ տիրույթներում՝ <ph name="EMAIL_DOMAINS" />։ Նորից փորձեք՝ օգտագործելով վավեր աշխատանքային հաշիվ։</translation>
 <translation id="7856245195110636219">Հնարավոր չէ շարունակել առանց Windows-ի ընթացիկ գաղտնաբառը մուտքագրելու։ Կապվեք ձեր համակարգի ադմինիստրատորի հետ:</translation>
 <translation id="8639729688781680518">Մոռացե՞լ եք գաղտնաբառը</translation>
 <translation id="866458870819756755">Չհաջողվեց ստեղծել օգտատիրոջ պրոֆիլ։</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_id.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_id.xtb
index 0582b01..ba84e61e 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_id.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_id.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Masukkan Sandi Windows</translation>
 <translation id="7357241217513796177">Pastikan Anda memiliki sambungan jaringan, lalu coba lagi.</translation>
 <translation id="7536769223115622137">Tambahkan akun kerja</translation>
+<translation id="7811865856574012727">Administrator telah membatasi login perangkat untuk domain berikut: <ph name="EMAIL_DOMAINS" />. Coba lagi menggunakan akun kerja yang valid.</translation>
 <translation id="7856245195110636219">Tidak dapat melanjutkan tanpa memasukkan sandi Windows saat ini. Harap hubungi administrator sistem Anda.</translation>
 <translation id="8639729688781680518">Lupa Sandi Windows</translation>
 <translation id="866458870819756755">Tidak dapat membuat pengguna.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_is.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_is.xtb
index 4a2f2d2..c9b7db4 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_is.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_is.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Slá inn aðgangsorð Windows</translation>
 <translation id="7357241217513796177">Gakktu úr skugga um að þú sért með nettengingu og reyndu svo aftur.</translation>
 <translation id="7536769223115622137">Bæta vinnureikningi við</translation>
+<translation id="7811865856574012727">Stjórnandi þinn hefur takmarkað innskráningu tækisins við eftirfarandi lén: <ph name="EMAIL_DOMAINS" />. Reyndu aftur með gildum vinnureikningi.</translation>
 <translation id="7856245195110636219">Ekki er hægt að halda áfram nema núverandi Windows aðgangsorð sé slegið inn. Hafðu samband við kerfisstjóra.</translation>
 <translation id="8639729688781680518">Gleymt Windows-aðgangsorð</translation>
 <translation id="866458870819756755">Ekki tókst að búa til notanda.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_iw.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_iw.xtb
index 16de45d..0422571 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_iw.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_iw.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">‏הקלדת הסיסמה של Windows</translation>
 <translation id="7357241217513796177">צריך לבדוק אם יש חיבור לרשת ואז אפשר לנסות שוב.</translation>
 <translation id="7536769223115622137">הוספה של חשבון לצורכי עבודה</translation>
+<translation id="7811865856574012727">מנהל המערכת הגביל את הכניסה באמצעות מכשירים לדומיינים הבאים: <ph name="EMAIL_DOMAINS" />. יש לנסות שוב באמצעות חשבון חוקי לצורכי עבודה.</translation>
 <translation id="7856245195110636219">‏לא ניתן להמשיך בלי להזין את הסיסמה העדכנית של Windows. צריך לפנות אל מנהל מערכת.</translation>
 <translation id="8639729688781680518">‏שכחתי את הסיסמה של Windows</translation>
 <translation id="866458870819756755">לא ניתן היה ליצור משתמש.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_ja.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_ja.xtb
index c7ef566e..27b5d367 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_ja.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_ja.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Windows のパスワードを入力</translation>
 <translation id="7357241217513796177">ネットワークに接続していることを確認してから、もう一度お試しください。</translation>
 <translation id="7536769223115622137">仕事用アカウントを追加</translation>
+<translation id="7811865856574012727">管理者が、デバイスへのログインを次のドメインに制限しています: <ph name="EMAIL_DOMAINS" />。有効な仕事用アカウントを使用して、もう一度お試しください。</translation>
 <translation id="7856245195110636219">続行するには現在の Windows パスワードを入力する必要があります。システム管理者にお問い合わせください。</translation>
 <translation id="8639729688781680518">Windows パスワードをお忘れの場合</translation>
 <translation id="866458870819756755">ユーザーを作成できませんでした。</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_ka.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_ka.xtb
index ab2f64f..6ab0919 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_ka.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_ka.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">შეიყვანეთ Windows-ის პაროლი</translation>
 <translation id="7357241217513796177">დარწმუნდით, რომ დაკავშირებული ხართ ქსელთან და ცადეთ ხელახლა.</translation>
 <translation id="7536769223115622137">სამსახურის ანგარიშის დამატება</translation>
+<translation id="7811865856574012727">თქვენმა ადმინისტრატორმა შეზღუდა მოწყობილობიდან შესვლა შემდეგ დომენებზე: <ph name="EMAIL_DOMAINS" />. ცადეთ ხელახლა სამსახურის სწორი ანგარიშის გამოყენებით.</translation>
 <translation id="7856245195110636219">Windows-ის ამჟამინდელი პაროლის შეყვანის გარეშე გაგრძელება ვერ მოხერხდება. დაუკავშირდით სისტემის ადმინისტრატორს.</translation>
 <translation id="8639729688781680518">დამავიწყდა Windows-ის პაროლი</translation>
 <translation id="866458870819756755">მომხმარებლის შექმნა ვერ მოხერხდა.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_kk.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_kk.xtb
index ebb59fa8..1a2ca64 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_kk.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_kk.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Windows құпия сөзін енгізіңіз.</translation>
 <translation id="7357241217513796177">Желі байланысын тексеріп, әрекетті қайталап көріңіз.</translation>
 <translation id="7536769223115622137">Жұмыс есептік жазбасын енгізу</translation>
+<translation id="7811865856574012727">Әкімші осы құрылғыда мына домендерге кіруге тыйым салды: <ph name="EMAIL_DOMAINS" />. Жарамды жұмыс есептік жазбасы арқылы әрекетті қайталап көріңіз.</translation>
 <translation id="7856245195110636219">Қолданыстағы Windows құпия сөзін енгізбей жалғастыру мүмкін болмады. Жүйе әкімшісіне хабарласыңыз.</translation>
 <translation id="8639729688781680518">Windows құпия сөзін ұмытып қалдым.</translation>
 <translation id="866458870819756755">Пайдаланушы жасалмады.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_kn.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_kn.xtb
index 2024a76..bfc83cb 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_kn.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_kn.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Windows ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ನಮೂದಿಸಿ</translation>
 <translation id="7357241217513796177">ನೀವು ನೆಟ್‌‌ವರ್ಕ್ ಸಂಪರ್ಕವನ್ನು ಹೊಂದಿರುವಿರಾ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ ಹಾಗೂ ಮತ್ತೊಮ್ಮೆ ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="7536769223115622137">ಕೆಲಸದ ಖಾತೆಯನ್ನು ಸೇರಿಸಿ</translation>
+<translation id="7811865856574012727">ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ಈ ಕೆಳಗಿನ ಡೊಮೇನ್‌ಗಳಿಗೆ ಸಾಧನ ಸೈನ್-ಇನ್ ಅನ್ನು ನಿರ್ಬಂಧಿಸಿದ್ದಾರೆ: <ph name="EMAIL_DOMAINS" />. ಮಾನ್ಯವಾದ ಕೆಲಸದ ಖಾತೆಯೊಂದನ್ನು ಬಳಸಿಕೊಂಡು ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.</translation>
 <translation id="7856245195110636219">ಪ್ರಸ್ತುತ Windows ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ನಮೂದಿಸದೆಯೇ ಮುಂದುವರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ದಯವಿಟ್ಟು ನಿಮ್ಮ ಸಿಸ್ಟಂ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ.</translation>
 <translation id="8639729688781680518">Windows ಪಾಸ್‌ವರ್ಡ್ ಮರೆತು ಹೋಗಿದೆ</translation>
 <translation id="866458870819756755">ಬಳಕೆದಾರರೊಬ್ಬರನ್ನು ರಚಿಸಲಾಗಲಿಲ್ಲ.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_ko.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_ko.xtb
index ee8ad1c0..29cd185 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_ko.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_ko.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Windows 비밀번호 입력</translation>
 <translation id="7357241217513796177">네트워크 연결을 확인한 후 다시 시도해 주세요.</translation>
 <translation id="7536769223115622137">직장 계정 추가</translation>
+<translation id="7811865856574012727">관리자가 기기에서 다음 도메인에 로그인하지 못하도록 제한했습니다. <ph name="EMAIL_DOMAINS" /> 올바른 직장 계정을 사용하여 다시 시도해 보세요.</translation>
 <translation id="7856245195110636219">계속하려면 현재 Windows 비밀번호를 입력해야 합니다. 시스템 관리자에게 문의해 보세요.</translation>
 <translation id="8639729688781680518">Windows 비밀번호를 잊어버림</translation>
 <translation id="866458870819756755">사용자를 만들 수 없습니다.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_ky.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_ky.xtb
index 188b052..7a77603 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_ky.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_ky.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Windows'тун сырсөзүн киргизүү</translation>
 <translation id="7357241217513796177">Тармакка туташып турганыңызды текшерип, кайра аракет кылыңыз.</translation>
 <translation id="7536769223115622137">Жумуш аккаунтун кошуу</translation>
+<translation id="7811865856574012727">Администраторуңуз төмөнкү домендерге түзмөктөн кирүүнү чектеп койду: <ph name="EMAIL_DOMAINS" />. Жарамдуу жумуш аккаунту менен кайра аракет кылып көрүңүз.</translation>
 <translation id="7856245195110636219">Windows'тун учурдагы сырсөзүн киргизмейинче улантууга болбойт. Тутум администраторуна кайрылыңыз.</translation>
 <translation id="8639729688781680518">Windows сырсөзүн унутуп калдым</translation>
 <translation id="866458870819756755">Колдонуучу түзүлбөй калды.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_lo.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_lo.xtb
index 82f6a47..98dec52 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_lo.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_lo.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">ປ້ອນລະຫັດຜ່ານ Windows</translation>
 <translation id="7357241217513796177">ກະລຸນາກວດໃຫ້ແນ່ໃຈວ່າທ່ານມີການເຊື່ອມຕໍ່ເຄືອຂ່າຍ ແລ້ວລອງອີກຄັ້ງ.</translation>
 <translation id="7536769223115622137">ເພີ່ມບັນຊີບ່ອນເຮັດວຽກ</translation>
+<translation id="7811865856574012727">ຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານໄດ້ຈຳກັດບໍ່ໃຫ້ອຸປະກອນເຂົ້າສູ່ລະບົບໂດເມນຕໍ່ໄປນີ້ເທົ່ານັ້ນ: <ph name="EMAIL_DOMAINS" />. ລອງໃໝ່ໂດຍໃຊ້ບັນຊີບ່ອນເຮັດວຽກທີ່ຖືກຕ້ອງ.</translation>
 <translation id="7856245195110636219">ບໍ່ສາມາດສືບຕໍ່ໂດຍບໍ່ໄດ້ປ້ອນລະຫັດຜ່ານ Windows ປັດຈຸບັນ. ກະລຸນາຕິດຕໍ່ຜູ້ເບິ່ງແຍງລະບົບ.</translation>
 <translation id="8639729688781680518">ລືມລະຫັດຜ່ານ Windows</translation>
 <translation id="866458870819756755">ບໍ່ສາມາດສ້າງຜູ້ໃຊ້ໄດ້.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_lt.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_lt.xtb
index 2467cc9..21a79164 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_lt.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_lt.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Įveskite „Windows“ slaptažodį</translation>
 <translation id="7357241217513796177">Įsitikinkite, kad yra tinklo ryšys, ir bandykite dar kartą.</translation>
 <translation id="7536769223115622137">Pridėti darbo paskyrą</translation>
+<translation id="7811865856574012727">Administratorius apribojo įrenginio prisijungimą prie šių domenų: <ph name="EMAIL_DOMAINS" />. Bandykite dar kartą naudodami tinkamą darbo paskyrą.</translation>
 <translation id="7856245195110636219">Negalima tęsti neįvedus dabartinio „Windows“ slaptažodžio. Susisiekite su sistemos administratoriumi.</translation>
 <translation id="8639729688781680518">Pamiršti „Windows“ slaptažodį</translation>
 <translation id="866458870819756755">Nepavyko sukurti naudotojo.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_lv.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_lv.xtb
index a8ba255d..eca6925 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_lv.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_lv.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Ievadīt Windows paroli</translation>
 <translation id="7357241217513796177">Pārbaudiet, vai ir izveidots tīkla savienojums, un mēģiniet vēlreiz.</translation>
 <translation id="7536769223115622137">Pievienot darba kontu</translation>
+<translation id="7811865856574012727">Jūsu administrators ir ierobežojis ierīces pierakstīšanos šādos domēnos: <ph name="EMAIL_DOMAINS" />. Mēģiniet vēlreiz, izmantojot derīgu darba kontu.</translation>
 <translation id="7856245195110636219">Nevar turpināt darbu, neievadot pašreizējo Windows paroli. Lūdzu, sazinieties ar sistēmas administratoru.</translation>
 <translation id="8639729688781680518">Aizmirsu Windows paroli</translation>
 <translation id="866458870819756755">Nevarēja izveidot lietotāju.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_mk.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_mk.xtb
index 708a1d03..7e02942 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_mk.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_mk.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Внесете лозинка за Windows</translation>
 <translation id="7357241217513796177">Проверете дали имате интернет-врска и обидете се повторно.</translation>
 <translation id="7536769223115622137">Додајте работна сметка</translation>
+<translation id="7811865856574012727">Администраторот го ограничил најавувањето од уредот на следниве домени: <ph name="EMAIL_DOMAINS" />. Обидете се повторно со важечка работна сметка.</translation>
 <translation id="7856245195110636219">Не може да продолжите без да ја внесете тековната лозинка за Windows. Контактирајте со администраторот на системот.</translation>
 <translation id="8639729688781680518">Ја заборавивте лозинката за Windows?</translation>
 <translation id="866458870819756755">Не можеше да се создаде корисник.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_mn.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_mn.xtb
index 7c874ef8..6700896 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_mn.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_mn.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Windows-н нууц үгийг оруулах</translation>
 <translation id="7357241217513796177">Сүлжээнд холбогдсон эсэхээ шалгаад, дахин оролдоно уу.</translation>
 <translation id="7536769223115622137">Ажлын бүртгэл нэмэх</translation>
+<translation id="7811865856574012727">Таны администратор дараах домэйнд нэвтрэхийг төхөөрөмжид хязгаарласан: <ph name="EMAIL_DOMAINS" />. Хүчинтэй ажлын бүртгэл ашиглан дахин оролдоно уу.</translation>
 <translation id="7856245195110636219">Үргэлжлүүлэхийн тулд Windows-н одоогийн нууц үгийг оруулах шаардлагатай. Системийн админтай холбогдоно уу.</translation>
 <translation id="8639729688781680518">Windows-н нууц үгээ мартсан</translation>
 <translation id="866458870819756755">Хэрэглэгчийг үүсгэж чадсангүй.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_ms.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_ms.xtb
index 87cfe38..3862d13 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_ms.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_ms.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Masukkan Kata Laluan Windows</translation>
 <translation id="7357241217513796177">Pastikan anda mempunyai sambungan rangkaian dan cuba lagi.</translation>
 <translation id="7536769223115622137">Tambahkan akaun kerja</translation>
+<translation id="7811865856574012727">Pentadbir anda telah mengehadkan log masuk peranti ke domain berikut: <ph name="EMAIL_DOMAINS" />. Cuba lagi menggunakan akaun kerja yang sah.</translation>
 <translation id="7856245195110636219">Tidak dapat meneruskan tanpa memasukkan kata laluan semasa Windows. Sila hubungi pentadbir sistem.</translation>
 <translation id="8639729688781680518">Terlupa Kata Laluan Windows</translation>
 <translation id="866458870819756755">Pengguna tidak dapat dibuat.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_my.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_my.xtb
index 6c1139b..c0498e6 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_my.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_my.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Windows စကားဝှက် ထည့်ပါ</translation>
 <translation id="7357241217513796177">ကွန်ရက်ချိတ်ဆက်မှု ရှိမရှိသေချာစေပြီး ထပ်စမ်းကြည့်ပါ။</translation>
 <translation id="7536769223115622137">အလုပ်သုံး အကောင့် ထည့်ရန်</translation>
+<translation id="7811865856574012727">သင့်စီမံခန့်ခွဲသူသည် အောက်ပါဒိုမိန်းများသို့ စက်ပစ္စည်းဖြင့် လက်မှတ်ထိုးဝင်ခြင်းကို ကန့်သတ်ထားသည်- <ph name="EMAIL_DOMAINS" />။ မှန်ကန်သည့် အလုပ်သုံးအကောင့်ကို အသုံးပြု၍ ထပ်စမ်းကြည့်ပါ။</translation>
 <translation id="7856245195110636219">လက်ရှိ Windows စကားဝှက်ကို မထည့်သွင်းဘဲ ရှေ့ဆက်၍မရပါ။ စက်စနစ် စီမံခန့်ခွဲသူကို ဆက်သွယ်ပါ။</translation>
 <translation id="8639729688781680518">Windows စကားဝှက် မေ့နေသည်</translation>
 <translation id="866458870819756755">အသုံးပြုသူအသစ် ပြုလုပ်၍မရပါ။</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_ne.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_ne.xtb
index d62f732..11e0af83 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_ne.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_ne.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Windows को पासवर्ड प्रविष्टि गर्नुहोस्</translation>
 <translation id="7357241217513796177">आफू इन्टरनेटमा जोडिएको कुरा सुनिश्चित गरी फेरि प्रयास गर्नुहोस्।</translation>
 <translation id="7536769223115622137">कार्य खाता थप्नुहोस्</translation>
+<translation id="7811865856574012727">तपाईंका प्रशासकले निम्न डोमेनहरूमा यन्त्रमा साइन इन गर्ने सुविधामाथि प्रतिबन्ध लगाउनुभएको छ: <ph name="EMAIL_DOMAINS" />। मान्य कार्य खाता प्रयोग गरी फेरि प्रयास गर्नुहोस्।</translation>
 <translation id="7856245195110636219">हालको Windows को पासवर्ड प्रविष्टि नगरी जारी राख्न सकिएन। कृपया प्रणालीका प्रशासकसँग सम्पर्क गर्नुहोस्।</translation>
 <translation id="8639729688781680518">Windows को पासवर्ड सम्झना छैन</translation>
 <translation id="866458870819756755">प्रयोगकर्ता सिर्जना गर्न सकिएन।</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_no.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_no.xtb
index ff3786d8..22fbacd 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_no.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_no.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Skriv inn Windows-passordet</translation>
 <translation id="7357241217513796177">Sørg for at du er koblet til et nettverk, og prøv på nytt.</translation>
 <translation id="7536769223115622137">Legg til jobbkonto</translation>
+<translation id="7811865856574012727">Administratoren har begrenset enhetspålogging til disse domenene: <ph name="EMAIL_DOMAINS" />. Prøv på nytt med en gyldig arbeidskonto.</translation>
 <translation id="7856245195110636219">Kan ikke fortsette uten at du skriver inn det nåværende Windows-passordet. Kontakt en systemadministrator.</translation>
 <translation id="8639729688781680518">Jeg har glemt Windows-passordet</translation>
 <translation id="866458870819756755">Kunne ikke opprette bruker.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_or.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_or.xtb
index 88ec076..c554207 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_or.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_or.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Windowsର ପାସ୍‌ୱାର୍ଡ ଲେଖନ୍ତୁ</translation>
 <translation id="7357241217513796177">ଆପଣଙ୍କର ଗୋଟିଏ ନେଟ୍‍ୱର୍କ ସଂଯୋଗ ଥିବା ସୁନିଶ୍ଚିତ କରନ୍ତୁ ଏବଂ ପୁଣି ଥରେ ଚେଷ୍ଟା କରନ୍ତୁ।</translation>
 <translation id="7536769223115622137">କାର୍ଯ୍ୟ ଆକାଉଣ୍ଟ ଯୋଗ କରନ୍ତୁ</translation>
+<translation id="7811865856574012727">ଆପଣଙ୍କର ଆଡ୍‍ମିନିଷ୍ଟ୍ରେଟର୍ ନିମ୍ନୋକ୍ତ ଡୋମେନ୍‍ଗୁଡ଼ିକରେ ଡିଭାଇସ୍‍ର ସାଇନ୍-ଇନ୍‍କୁ ପ୍ରତିବନ୍ଧିତ କରିଛନ୍ତି: <ph name="EMAIL_DOMAINS" />। ଏକ ବୈଧ କାର୍ଯ୍ୟ ଆକାଉଣ୍ଟ ବ୍ୟବହାର କରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।</translation>
 <translation id="7856245195110636219">ବର୍ତ୍ତମାନର Windowsରେ ପାସ୍‌ୱାର୍ଡ ନଲେଖି ଜାରି ରଖିବାରେ ଅକ୍ଷମ। ଦୟାକରି କୌଣସି ସିଷ୍ଟମ୍ ଆଡ୍‌ମିନିଷ୍ଟ୍ରେଟର୍‌ଙ୍କୁ ଯୋଗାଯୋଗ କରନ୍ତୁ।</translation>
 <translation id="8639729688781680518">Windows ପାସ୍‌ୱାର୍ଡ ଭୁଲି ଯାଇଛନ୍ତି</translation>
 <translation id="866458870819756755">ଜଣେ ଉପଯୋଗକର୍ତ୍ତା ତିଆରି ହୋଇପାରିଲା ନାହିଁ।</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_pl.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_pl.xtb
index d2ff668..30e8f4f0 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_pl.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_pl.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Wpisz hasło do Windows</translation>
 <translation id="7357241217513796177">Upewnij się, że masz połączenie sieciowe, i spróbuj ponownie.</translation>
 <translation id="7536769223115622137">Dodaj konto do pracy</translation>
+<translation id="7811865856574012727">Administrator ograniczył logowanie na urządzeniu do tych domen: <ph name="EMAIL_DOMAINS" />. Spróbuj ponownie, używając odpowiedniego konta do pracy.</translation>
 <translation id="7856245195110636219">Nie można przejść dalej bez wpisania obecnego hasła do Windows. Skontaktuj się z administratorem systemu.</translation>
 <translation id="8639729688781680518">Nie pamiętam hasła do Windows</translation>
 <translation id="866458870819756755">Nie udało się utworzyć użytkownika.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_pt-BR.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_pt-BR.xtb
index 40afefc..0a47d77 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_pt-BR.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_pt-BR.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Insira a senha do Windows</translation>
 <translation id="7357241217513796177">Verifique se você tem uma conexão de rede e tente novamente.</translation>
 <translation id="7536769223115622137">Adicionar conta de trabalho</translation>
+<translation id="7811865856574012727">O administrador restringiu o login no dispositivo para os seguintes domínios: <ph name="EMAIL_DOMAINS" />. Tente novamente usando uma conta de trabalho válida.</translation>
 <translation id="7856245195110636219">Não é possível continuar sem inserir a senha atual do Windows. Entre em contato com um administrador do sistema.</translation>
 <translation id="8639729688781680518">Esqueci minha senha do Windows</translation>
 <translation id="866458870819756755">Não foi possível criar um usuário.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_pt-PT.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_pt-PT.xtb
index dd9a7c7..4b8b73fd 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_pt-PT.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_pt-PT.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Introduzir palavra-passe do Windows</translation>
 <translation id="7357241217513796177">Certifique-se de que tem uma ligação de rede e tente novamente.</translation>
 <translation id="7536769223115622137">Adicionar conta profissional</translation>
+<translation id="7811865856574012727">O seu administrador restringiu o início de sessão do dispositivo aos seguintes domínios: <ph name="EMAIL_DOMAINS" />. Tente novamente através de uma conta profissional válida.</translation>
 <translation id="7856245195110636219">Não é possível continuar sem introduzir a palavra-passe atual do Windows. Contacte um administrador do sistema.</translation>
 <translation id="8639729688781680518">Esqueci-me da palavra-passe do Windows</translation>
 <translation id="866458870819756755">Não foi possível criar um utilizador.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_ro.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_ro.xtb
index ac99ce1..77b77e0 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_ro.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_ro.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Introdu parola pentru Windows</translation>
 <translation id="7357241217513796177">Asigură-te că ai o conexiune la rețea și încearcă din nou.</translation>
 <translation id="7536769223115622137">Adaugă contul de serviciu</translation>
+<translation id="7811865856574012727">Administratorul a restricționat conectarea dispozitivului la următoarele domenii: <ph name="EMAIL_DOMAINS" />. Încearcă din nou folosind un cont de serviciu valid.</translation>
 <translation id="7856245195110636219">Nu se mai poate continua fără introducerea parolei pentru Windows actuale. Contactează un administrator de sistem.</translation>
 <translation id="8639729688781680518">Am uitat parola pentru Windows</translation>
 <translation id="866458870819756755">Nu s-a putut crea un utilizator.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_ru.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_ru.xtb
index 4df9ca23..a24fb18 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_ru.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_ru.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Введите пароль Windows</translation>
 <translation id="7357241217513796177">Проверьте подключение к сети и повторите попытку.</translation>
 <translation id="7536769223115622137">Добавить рабочий аккаунт</translation>
+<translation id="7811865856574012727">Администратор ограничил доступ на этом устройстве к следующим доменам: <ph name="EMAIL_DOMAINS" />. Повторите попытку, используя действительный рабочий аккаунт.</translation>
 <translation id="7856245195110636219">Для продолжения необходимо ввести текущий пароль Windows. Обратитесь к системному администратору.</translation>
 <translation id="8639729688781680518">Забыли пароль?</translation>
 <translation id="866458870819756755">Не удалось создать пользователя.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_sl.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_sl.xtb
index 83b8df9..eb79556f 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_sl.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_sl.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Vnesite geslo za Windows</translation>
 <translation id="7357241217513796177">Prepričajte se, da imate omrežno povezavo, in poskusite znova.</translation>
 <translation id="7536769223115622137">Dodajanje službenega računa</translation>
+<translation id="7811865856574012727">Skrbnik je omejil prijavo naprave na te domene: <ph name="EMAIL_DOMAINS" />. Poskusite znova z veljavnim službenim računom.</translation>
 <translation id="7856245195110636219">Če ne vnesete gesla za Windows, ne morete nadaljevati. Obrnite se na skrbnika sistema.</translation>
 <translation id="8639729688781680518">Pozabljeno geslo za Windows</translation>
 <translation id="866458870819756755">Uporabnika ni bilo mogoče ustvariti.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_sq.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_sq.xtb
index afe8b5f..55d1b93 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_sq.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_sq.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Fut fjalëkalimin e Windows</translation>
 <translation id="7357241217513796177">Sigurohu që ke një lidhje interneti dhe provo përsëri.</translation>
 <translation id="7536769223115622137">Shto llogarinë e punës</translation>
+<translation id="7811865856574012727">Administratori yt ka kufizuar identifikimin e pajisjes në domenet e mëposhtme: <ph name="EMAIL_DOMAINS" />. Provo përsëri duke përdorur një llogari të vlefshme pune.</translation>
 <translation id="7856245195110636219">Nuk mund të vazhdojë pa futur fjalëkalimin aktual të Windows. Kontakto me një administrator të sistemit.</translation>
 <translation id="8639729688781680518">Harrova fjalëkalimin e Windows</translation>
 <translation id="866458870819756755">Nuk mund të krijohej një përdorues.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_sr.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_sr.xtb
index 95720178..58b3c14 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_sr.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_sr.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Унесите лозинку за Windows</translation>
 <translation id="7357241217513796177">Уверите се да сте повезани на мрежу и пробајте поново.</translation>
 <translation id="7536769223115622137">Додајте пословни налог</translation>
+<translation id="7811865856574012727">Администратор је ограничио пријављивање на уређају на следеће домене: <ph name="EMAIL_DOMAINS" />. Пробајте поново помоћу важећег пословног налога.</translation>
 <translation id="7856245195110636219">Не можете да наставите ако не унесете лозинку за Windows. Контактирајте администратора система.</translation>
 <translation id="8639729688781680518">Заборавили сте лозинку за Windows</translation>
 <translation id="866458870819756755">Прављење корисника није успело.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_sv.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_sv.xtb
index d0f44417..07e1ca7a 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_sv.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_sv.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Ange lösenord för Windows</translation>
 <translation id="7357241217513796177">Kontrollera nätverksanslutningen och försök igen.</translation>
 <translation id="7536769223115622137">Lägg till jobbkonto</translation>
+<translation id="7811865856574012727">Adminstratören har begränsat enhetsinloggning till följande domäner: <ph name="EMAIL_DOMAINS" />. Testa igen med ett giltigt jobbkonto.</translation>
 <translation id="7856245195110636219">Det går inte att fortsätta utan att ange det nuvarande lösenordet för Windows. Kontakta systemadministratören.</translation>
 <translation id="8639729688781680518">Jag har glömt lösenordet för Windows</translation>
 <translation id="866458870819756755">Det gick inte att skapa en användare.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_te.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_te.xtb
index a5382aa7..6dea9d15 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_te.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_te.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Windows పాస్‌వర్డ్‌ను నమోదు చేయండి</translation>
 <translation id="7357241217513796177">మీకు నెట్‌వర్క్ కనెక్షన్ ఉందని నిర్ధారించుకుని, ఆపై మళ్లీ ప్రయత్నించండి.</translation>
 <translation id="7536769223115622137">కార్యాలయ ఖాతాను జోడించు</translation>
+<translation id="7811865856574012727">మీ నిర్వాహకుడు ఈ క్రింది డొమైన్‌లకు పరికర సైన్-ఇన్‌ను పరిమితం చేశారు: <ph name="EMAIL_DOMAINS" />. చెల్లుబాటు అయ్యే కార్యాలయ ఖాతాను ఉపయోగించి మళ్లీ ప్రయత్నించండి.</translation>
 <translation id="7856245195110636219">ప్రస్తుత Windows పాస్‌వర్డ్‌ను నమోదు చేయకుండా ముందుకు కొనసాగించడం సాధ్యపడదు. దయచేసి సిస్టమ్ నిర్వాహకులను సంప్రదించండి.</translation>
 <translation id="8639729688781680518">Windows పాస్‌వర్డ్‌ను మర్చిపోయాను</translation>
 <translation id="866458870819756755">వినియోగదారుని సృష్టించడం సాధ్యం కాలేదు.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_th.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_th.xtb
index a47c512e..2f4f5c8f 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_th.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_th.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">ป้อนรหัสผ่าน Windows</translation>
 <translation id="7357241217513796177">ตรวจสอบว่าคุณมีการเชื่อมต่อเครือข่าย และลองอีกครั้ง</translation>
 <translation id="7536769223115622137">เพิ่มบัญชีงาน</translation>
+<translation id="7811865856574012727">ผู้ดูแลระบบของคุณจำกัดไม่ให้อุปกรณ์ลงชื่อเข้าใช้ในโดเมนต่อไปนี้ <ph name="EMAIL_DOMAINS" /> ลองอีกครั้งโดยใช้บัญชีงานที่ใช้ได้</translation>
 <translation id="7856245195110636219">ดำเนินการต่อไม่ได้หากไม่ป้อนรหัสผ่านปัจจุบันของ Windows โปรดติดต่อผู้ดูแลระบบ</translation>
 <translation id="8639729688781680518">ลืมรหัสผ่าน Windows</translation>
 <translation id="866458870819756755">สร้างผู้ใช้ไม่ได้</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_tr.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_tr.xtb
index d64ff87..7b1d61fb 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_tr.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_tr.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Windows Şifresini Girin</translation>
 <translation id="7357241217513796177">Ağ bağlantınız olduğundan emin olup tekrar deneyin.</translation>
 <translation id="7536769223115622137">İş hesabı ekle</translation>
+<translation id="7811865856574012727">Yöneticiniz cihaz oturum açmayı aşağıdaki alan adlarıyla kısıtladı: <ph name="EMAIL_DOMAINS" />. Geçerli bir iş hesabı kullanarak tekrar deneyin.</translation>
 <translation id="7856245195110636219">Geçerli Windows şifresi girilmeden devam edilemiyor. Lütfen sistem yöneticisiyle iletişim kurun.</translation>
 <translation id="8639729688781680518">Windows Şifresini Unuttum</translation>
 <translation id="866458870819756755">Kullanıcı oluşturulamadı.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_uk.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_uk.xtb
index ba7de72..28c2a3f2 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_uk.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_uk.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Введіть пароль Windows</translation>
 <translation id="7357241217513796177">Переконайтеся, що з’єднання з мережею встановлено, і повторіть спробу.</translation>
 <translation id="7536769223115622137">Додати корпоративний обліковий запис</translation>
+<translation id="7811865856574012727">Адміністратор обмежив вхід на пристрій таким доменам: <ph name="EMAIL_DOMAINS" />. Спробуйте скористатися дійсним корпоративним обліковим записом.</translation>
 <translation id="7856245195110636219">Неможливо продовжити, якщо не ввести поточний пароль Windows. Зв’яжіться із системним адміністратором.</translation>
 <translation id="8639729688781680518">Не пам’ятаю пароль Windows</translation>
 <translation id="866458870819756755">Не вдалося створити користувача.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_ur.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_ur.xtb
index aa38df2..5bc3d96 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_ur.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_ur.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">‏Windows کا پاس ورڈ درج کریں</translation>
 <translation id="7357241217513796177">اس بات کو یقینی بنائیں کہ آپ کے پاس نیٹ ورک کنکشن ہے اور دوبارہ کوشش کریں۔</translation>
 <translation id="7536769223115622137">دفتری اکاؤنٹ شامل کریں</translation>
+<translation id="7811865856574012727">آپ کے منتظم نے درج ذیل ڈومینز میں آلہ کے سائن ان کو محدود کر دیا ہے: <ph name="EMAIL_DOMAINS" />۔ درست دفتری اکاؤنٹ کے ذریعے دوبارہ آزمائیں۔</translation>
 <translation id="7856245195110636219">‏Windows کا موجودہ پاس ورڈ درج کئے بغیر جاری رکھنے سے قاصر۔ براہ کرم سسٹم کے منتظم سے رابطہ کریں۔</translation>
 <translation id="8639729688781680518">‏Windows کا پاس ورڈ بھول گئے ہیں</translation>
 <translation id="866458870819756755">صارف تخلیق نہیں کیا جا سکا۔</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_uz.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_uz.xtb
index ce040b1..c26fafa 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_uz.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_uz.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Windows parolini kiriting</translation>
 <translation id="7357241217513796177">Internet bilan aloqani tekshiring va qaytadan urining.</translation>
 <translation id="7536769223115622137">Ishchi hisob kiritish</translation>
+<translation id="7811865856574012727">Administrator quyidagi domenlarga shu qurilmada kirishni taqiqlagan: <ph name="EMAIL_DOMAINS" />. Yaroqli ish hisobingiz bilan qayta urining.</translation>
 <translation id="7856245195110636219">Davom etish uchun Windows paroli kiritilishi lozim. Tizim administratoriga murojaat qiling.</translation>
 <translation id="8639729688781680518">Windows paroli esimdan chiqdi</translation>
 <translation id="866458870819756755">Foydalanuvchi yaratilmadi.</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_zh-CN.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_zh-CN.xtb
index da3c72c..7a7865b 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_zh-CN.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_zh-CN.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">输入 Windows 密码</translation>
 <translation id="7357241217513796177">请确保您已连接到网络,然后重试。</translation>
 <translation id="7536769223115622137">添加工作帐号</translation>
+<translation id="7811865856574012727">您的管理员只允许在以下网域中注册的帐号登录此设备:<ph name="EMAIL_DOMAINS" />。请使用有效的工作帐号重试。</translation>
 <translation id="7856245195110636219">若不输入当前的 Windows 密码,便无法继续。请与系统管理员联系。</translation>
 <translation id="8639729688781680518">忘记了 Windows 密码</translation>
 <translation id="866458870819756755">无法创建用户。</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_zh-HK.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_zh-HK.xtb
index d9ad670..d450a53 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_zh-HK.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_zh-HK.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">輸入 Windows 密碼</translation>
 <translation id="7357241217513796177">請確定您已連接網絡,然後再試一次。</translation>
 <translation id="7536769223115622137">新增公司帳戶</translation>
+<translation id="7811865856574012727">你的系統管理員已限制裝置登入下列網域:<ph name="EMAIL_DOMAINS" />。請使用有效的公司帳戶再試一次。</translation>
 <translation id="7856245195110636219">必須輸入目前的 Windows 密碼才能繼續操作。請聯絡系統管理員。</translation>
 <translation id="8639729688781680518">忘記 Windows 密碼</translation>
 <translation id="866458870819756755">無法建立使用者。</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_zh-TW.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_zh-TW.xtb
index 0bf6c6d..3f0ba0d 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_zh-TW.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_zh-TW.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">輸入 Windows 密碼</translation>
 <translation id="7357241217513796177">請確認你已連上網路,然後再試一次。</translation>
 <translation id="7536769223115622137">新增公司帳戶</translation>
+<translation id="7811865856574012727">你的系統管理員已限制裝置登入下列網域:<ph name="EMAIL_DOMAINS" />。請使用有效的公司帳戶再試一次。</translation>
 <translation id="7856245195110636219">必須輸入目前的 Windows 密碼才能繼續操作。請與系統管理員聯絡。</translation>
 <translation id="8639729688781680518">忘記 Windows 密碼</translation>
 <translation id="866458870819756755">無法建立使用者。</translation>
diff --git a/chrome/credential_provider/gaiacp/strings/gaia_resources_zu.xtb b/chrome/credential_provider/gaiacp/strings/gaia_resources_zu.xtb
index d08c909..65695b06 100644
--- a/chrome/credential_provider/gaiacp/strings/gaia_resources_zu.xtb
+++ b/chrome/credential_provider/gaiacp/strings/gaia_resources_zu.xtb
@@ -25,6 +25,7 @@
 <translation id="7209941495304122410">Faka iphasiwedi ye-Windows</translation>
 <translation id="7357241217513796177">Qiniseksa ukuthi unoxhumo lenethiwekhi, bese uyazama futhi.</translation>
 <translation id="7536769223115622137">Engeza i-akhawunti yomsebenzi</translation>
+<translation id="7811865856574012727">Umlawuli wakho ukhawulele ukungena ngemvume kwedivayisi kuzizinda ezilandelayo: <ph name="EMAIL_DOMAINS" />. Zama futhi usebenzisa i-akhawunti yomsebenzi evumelekile.</translation>
 <translation id="7856245195110636219">Ayikwazi ukuqhubeka ngaphandle kokufaka iphasiwedi ye-Windows yamanje. Sicela uxhumane nomlawuli wesistimu.</translation>
 <translation id="8639729688781680518">Khohlwa iphasiwedi ye-Windows</translation>
 <translation id="866458870819756755">Umsebenzisi akakwazanga ukudalwa.</translation>
diff --git a/chrome/renderer/net/net_error_helper.cc b/chrome/renderer/net/net_error_helper.cc
index 16d1f3b..0feaef8 100644
--- a/chrome/renderer/net/net_error_helper.cc
+++ b/chrome/renderer/net/net_error_helper.cc
@@ -282,7 +282,8 @@
       static_cast<int>(content::ResourceType::kSubResource);
 
   blink::WebLocalFrame* frame = render_frame()->GetWebFrame();
-  resource_request->site_for_cookies = frame->GetDocument().SiteForCookies();
+  resource_request->site_for_cookies =
+      net::SiteForCookies::FromUrl(frame->GetDocument().SiteForCookies());
   // The security origin of the error page should exist and be opaque.
   DCHECK(!frame->GetDocument().GetSecurityOrigin().IsNull());
   DCHECK(frame->GetDocument().GetSecurityOrigin().IsOpaque());
diff --git a/chrome/renderer/searchbox/searchbox.cc b/chrome/renderer/searchbox/searchbox.cc
index a19a40b..f6f698e 100644
--- a/chrome/renderer/searchbox/searchbox.cc
+++ b/chrome/renderer/searchbox/searchbox.cc
@@ -455,6 +455,15 @@
   embedded_search_service_->BlocklistPromo(promo_id);
 }
 
+void SearchBox::OpenExtensionsPage(double button,
+                                   bool alt_key,
+                                   bool ctrl_key,
+                                   bool meta_key,
+                                   bool shift_key) {
+  embedded_search_service_->OpenExtensionsPage(button, alt_key, ctrl_key,
+                                               meta_key, shift_key);
+}
+
 void SearchBox::OpenAutocompleteMatch(uint8_t line,
                                       const GURL& url,
                                       bool are_matches_showing,
diff --git a/chrome/renderer/searchbox/searchbox.h b/chrome/renderer/searchbox/searchbox.h
index 7c35235a..9c70d59 100644
--- a/chrome/renderer/searchbox/searchbox.h
+++ b/chrome/renderer/searchbox/searchbox.h
@@ -207,6 +207,14 @@
   // Called when a user dismisses a promo.
   void BlocklistPromo(const std::string& promo_id);
 
+  // Handles navigation to the chrome://extensions page by calling the browser
+  // to do the navigation.
+  void OpenExtensionsPage(double button,
+                          bool alt_key,
+                          bool ctrl_key,
+                          bool meta_key,
+                          bool shift_key);
+
   // Handles navigation to privileged (i.e. chrome://) URLs by calling the
   // browser to do the navigation.
   void OpenAutocompleteMatch(uint8_t line,
diff --git a/chrome/renderer/searchbox/searchbox_extension.cc b/chrome/renderer/searchbox/searchbox_extension.cc
index 9730690..2cf0ef4 100644
--- a/chrome/renderer/searchbox/searchbox_extension.cc
+++ b/chrome/renderer/searchbox/searchbox_extension.cc
@@ -811,6 +811,11 @@
   static void RevertThemeChanges();
   static void ConfirmThemeChanges();
   static void BlocklistPromo(const std::string& promo_id);
+  static void OpenExtensionsPage(double button,
+                                 bool alt_key,
+                                 bool ctrl_key,
+                                 bool meta_key,
+                                 bool shift_key);
   static v8::Local<v8::Value> GetColorsInfo(v8::Isolate* isolate);
 
   DISALLOW_COPY_AND_ASSIGN(NewTabPageBindings);
@@ -886,7 +891,8 @@
       .SetMethod("confirmThemeChanges",
                  &NewTabPageBindings::ConfirmThemeChanges)
       .SetMethod("getColorsInfo", &NewTabPageBindings::GetColorsInfo)
-      .SetMethod("blocklistPromo", &NewTabPageBindings::BlocklistPromo);
+      .SetMethod("blocklistPromo", &NewTabPageBindings::BlocklistPromo)
+      .SetMethod("openExtensionsPage", &NewTabPageBindings::OpenExtensionsPage);
 }
 
 // static
@@ -1302,8 +1308,6 @@
   if (!search_box)
     return;
   search_box->ApplyDefaultTheme();
-  content::RenderThread::Get()->RecordAction(
-      base::UserMetricsAction("ChromeColors_DefaultApplied"));
 }
 
 // static
@@ -1313,8 +1317,6 @@
     return;
   search_box->ApplyDefaultTheme();
   search_box->ConfirmThemeChanges();
-  content::RenderThread::Get()->RecordAction(
-      base::UserMetricsAction("ChromeColors_ThemeUninstalled"));
 }
 
 // static
@@ -1325,15 +1327,9 @@
   if (!search_box || !value->IsArray())
     return;
   SkColor color;
-  if (ArrayToSkColor(isolate, value.As<v8::Array>(), &color)) {
-    search_box->ApplyAutogeneratedTheme(color);
-    content::RenderThread::Get()->RecordAction(
-        base::UserMetricsAction("ChromeColors_ColorApplied"));
-    if (id > 0 && id < static_cast<int>(chrome_colors::kNumColorsInfo)) {
-      UMA_HISTOGRAM_ENUMERATION("ChromeColors.AppliedColor", id,
-                                chrome_colors::kNumColorsInfo);
-    }
-  }
+  if (!ArrayToSkColor(isolate, value.As<v8::Array>(), &color))
+    return;
+  search_box->ApplyAutogeneratedTheme(color);
 }
 
 // static
@@ -1378,6 +1374,18 @@
   search_box->BlocklistPromo(promo_id);
 }
 
+void NewTabPageBindings::OpenExtensionsPage(double button,
+                                            bool alt_key,
+                                            bool ctrl_key,
+                                            bool meta_key,
+                                            bool shift_key) {
+  SearchBox* search_box = GetSearchBoxForCurrentContext();
+  if (!search_box)
+    return;
+  search_box->OpenExtensionsPage(button, alt_key, ctrl_key, meta_key,
+                                 shift_key);
+}
+
 }  // namespace
 
 // static
diff --git a/chrome/services/cups_proxy/test/run_all_unittests.cc b/chrome/services/cups_proxy/test/run_all_unittests.cc
index c74b0dbb..a663f94 100644
--- a/chrome/services/cups_proxy/test/run_all_unittests.cc
+++ b/chrome/services/cups_proxy/test/run_all_unittests.cc
@@ -13,7 +13,8 @@
 int main(int argc, char** argv) {
   cups_proxy::LibCupsTestSuite test_suite(argc, argv);
   mojo::core::Init();
-  return base::LaunchUnitTests(argc, argv,
-                               base::Bind(&cups_proxy::LibCupsTestSuite::Run,
-                                          base::Unretained(&test_suite)));
+  return base::LaunchUnitTests(
+      argc, argv,
+      base::BindOnce(&cups_proxy::LibCupsTestSuite::Run,
+                     base::Unretained(&test_suite)));
 }
diff --git a/chrome/services/file_util/public/cpp/sandboxed_dmg_analyzer_mac.cc b/chrome/services/file_util/public/cpp/sandboxed_dmg_analyzer_mac.cc
index e1c6c9e4..acca455f 100644
--- a/chrome/services/file_util/public/cpp/sandboxed_dmg_analyzer_mac.cc
+++ b/chrome/services/file_util/public/cpp/sandboxed_dmg_analyzer_mac.cc
@@ -16,13 +16,13 @@
 SandboxedDMGAnalyzer::SandboxedDMGAnalyzer(
     const base::FilePath& dmg_file,
     const uint64_t max_size,
-    const ResultCallback& callback,
+    ResultCallback callback,
     mojo::PendingRemote<chrome::mojom::FileUtilService> service)
     : file_path_(dmg_file),
       max_size_(max_size),
-      callback_(callback),
+      callback_(std::move(callback)),
       service_(std::move(service)) {
-  DCHECK(callback);
+  DCHECK(callback_);
   service_->BindSafeArchiveAnalyzer(
       remote_analyzer_.BindNewPipeAndPassReceiver());
   remote_analyzer_.set_disconnect_handler(base::BindOnce(
@@ -70,9 +70,9 @@
 void SandboxedDMGAnalyzer::ReportFileFailure() {
   DCHECK(!content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
 
-  base::PostTask(
-      FROM_HERE, {content::BrowserThread::UI},
-      base::BindOnce(callback_, safe_browsing::ArchiveAnalyzerResults()));
+  base::PostTask(FROM_HERE, {content::BrowserThread::UI},
+                 base::BindOnce(std::move(callback_),
+                                safe_browsing::ArchiveAnalyzerResults()));
 }
 
 void SandboxedDMGAnalyzer::AnalyzeFile(base::File file) {
@@ -87,5 +87,5 @@
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
   remote_analyzer_.reset();
-  callback_.Run(results);
+  std::move(callback_).Run(results);
 }
diff --git a/chrome/services/file_util/public/cpp/sandboxed_dmg_analyzer_mac.h b/chrome/services/file_util/public/cpp/sandboxed_dmg_analyzer_mac.h
index de4f41e2..e577817 100644
--- a/chrome/services/file_util/public/cpp/sandboxed_dmg_analyzer_mac.h
+++ b/chrome/services/file_util/public/cpp/sandboxed_dmg_analyzer_mac.h
@@ -26,12 +26,12 @@
     : public base::RefCountedThreadSafe<SandboxedDMGAnalyzer> {
  public:
   using ResultCallback =
-      base::Callback<void(const safe_browsing::ArchiveAnalyzerResults&)>;
+      base::OnceCallback<void(const safe_browsing::ArchiveAnalyzerResults&)>;
 
   SandboxedDMGAnalyzer(
       const base::FilePath& dmg_file,
       const uint64_t max_size,
-      const ResultCallback& callback,
+      ResultCallback callback,
       mojo::PendingRemote<chrome::mojom::FileUtilService> service);
 
   // Starts the analysis. Must be called on the UI thread.
@@ -61,7 +61,7 @@
   const uint64_t max_size_;
 
   // Callback invoked on the UI thread with the file analyze results.
-  const ResultCallback callback_;
+  ResultCallback callback_;
 
   // Remote interfaces to the file util service. Only used from the UI thread.
   mojo::Remote<chrome::mojom::FileUtilService> service_;
diff --git a/chrome/services/file_util/public/cpp/sandboxed_dmg_analyzer_mac_unittest.cc b/chrome/services/file_util/public/cpp/sandboxed_dmg_analyzer_mac_unittest.cc
index c0adb2df..f59934e 100644
--- a/chrome/services/file_util/public/cpp/sandboxed_dmg_analyzer_mac_unittest.cc
+++ b/chrome/services/file_util/public/cpp/sandboxed_dmg_analyzer_mac_unittest.cc
@@ -59,22 +59,22 @@
   // store a copy of an analyzer's results and then run a closure.
   class ResultsGetter {
    public:
-    ResultsGetter(const base::Closure& next_closure,
+    ResultsGetter(base::OnceClosure next_closure,
                   safe_browsing::ArchiveAnalyzerResults* results)
-        : next_closure_(next_closure), results_(results) {}
+        : next_closure_(std::move(next_closure)), results_(results) {}
 
     SandboxedDMGAnalyzer::ResultCallback GetCallback() {
-      return base::Bind(&ResultsGetter::ResultsCallback,
-                        base::Unretained(this));
+      return base::BindOnce(&ResultsGetter::ResultsCallback,
+                            base::Unretained(this));
     }
 
    private:
     void ResultsCallback(const safe_browsing::ArchiveAnalyzerResults& results) {
       *results_ = results;
-      next_closure_.Run();
+      std::move(next_closure_).Run();
     }
 
-    base::Closure next_closure_;
+    base::OnceClosure next_closure_;
     safe_browsing::ArchiveAnalyzerResults* results_;
 
     DISALLOW_COPY_AND_ASSIGN(ResultsGetter);
diff --git a/chrome/services/file_util/public/cpp/sandboxed_rar_analyzer.cc b/chrome/services/file_util/public/cpp/sandboxed_rar_analyzer.cc
index a0a9e46..307ffca8 100644
--- a/chrome/services/file_util/public/cpp/sandboxed_rar_analyzer.cc
+++ b/chrome/services/file_util/public/cpp/sandboxed_rar_analyzer.cc
@@ -18,12 +18,12 @@
 
 SandboxedRarAnalyzer::SandboxedRarAnalyzer(
     const base::FilePath& rar_file_path,
-    const ResultCallback& callback,
+    ResultCallback callback,
     mojo::PendingRemote<chrome::mojom::FileUtilService> service)
     : file_path_(rar_file_path),
-      callback_(callback),
+      callback_(std::move(callback)),
       service_(std::move(service)) {
-  DCHECK(callback);
+  DCHECK(callback_);
   DCHECK(!file_path_.value().empty());
   service_->BindSafeArchiveAnalyzer(
       remote_analyzer_.BindNewPipeAndPassReceiver());
@@ -56,7 +56,7 @@
     const safe_browsing::ArchiveAnalyzerResults& results) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
   remote_analyzer_.reset();
-  callback_.Run(results);
+  std::move(callback_).Run(results);
 }
 
 void SandboxedRarAnalyzer::PrepareFileToAnalyze() {
@@ -96,9 +96,9 @@
 }
 
 void SandboxedRarAnalyzer::ReportFileFailure() {
-  base::PostTask(
-      FROM_HERE, {content::BrowserThread::UI},
-      base::BindOnce(callback_, safe_browsing::ArchiveAnalyzerResults()));
+  base::PostTask(FROM_HERE, {content::BrowserThread::UI},
+                 base::BindOnce(std::move(callback_),
+                                safe_browsing::ArchiveAnalyzerResults()));
 }
 
 std::string SandboxedRarAnalyzer::DebugString() const {
diff --git a/chrome/services/file_util/public/cpp/sandboxed_rar_analyzer.h b/chrome/services/file_util/public/cpp/sandboxed_rar_analyzer.h
index 20d9e3b..0ef5430a 100644
--- a/chrome/services/file_util/public/cpp/sandboxed_rar_analyzer.h
+++ b/chrome/services/file_util/public/cpp/sandboxed_rar_analyzer.h
@@ -24,12 +24,12 @@
 class SandboxedRarAnalyzer
     : public base::RefCountedThreadSafe<SandboxedRarAnalyzer> {
  public:
-  using ResultCallback = base::RepeatingCallback<void(
-      const safe_browsing::ArchiveAnalyzerResults&)>;
+  using ResultCallback =
+      base::OnceCallback<void(const safe_browsing::ArchiveAnalyzerResults&)>;
 
   SandboxedRarAnalyzer(
       const base::FilePath& rar_file_path,
-      const ResultCallback& callback,
+      ResultCallback callback,
       mojo::PendingRemote<chrome::mojom::FileUtilService> service);
 
   // Starts the analysis. Must be called on the UI thread.
@@ -60,7 +60,7 @@
   const base::FilePath file_path_;
 
   // Callback invoked on the UI thread with the file analyze results.
-  const ResultCallback callback_;
+  ResultCallback callback_;
 
   // Remote interfaces to the file util service. Only used from the UI thread.
   mojo::Remote<chrome::mojom::FileUtilService> service_;
diff --git a/chrome/services/file_util/public/cpp/sandboxed_zip_analyzer.cc b/chrome/services/file_util/public/cpp/sandboxed_zip_analyzer.cc
index 962a7a0..e29a3bf 100644
--- a/chrome/services/file_util/public/cpp/sandboxed_zip_analyzer.cc
+++ b/chrome/services/file_util/public/cpp/sandboxed_zip_analyzer.cc
@@ -16,10 +16,12 @@
 
 SandboxedZipAnalyzer::SandboxedZipAnalyzer(
     const base::FilePath& zip_file,
-    const ResultCallback& callback,
+    ResultCallback callback,
     mojo::PendingRemote<chrome::mojom::FileUtilService> service)
-    : file_path_(zip_file), callback_(callback), service_(std::move(service)) {
-  DCHECK(callback);
+    : file_path_(zip_file),
+      callback_(std::move(callback)),
+      service_(std::move(service)) {
+  DCHECK(callback_);
   service_->BindSafeArchiveAnalyzer(
       remote_analyzer_.BindNewPipeAndPassReceiver());
   remote_analyzer_.set_disconnect_handler(base::BindOnce(
@@ -69,9 +71,9 @@
 }
 
 void SandboxedZipAnalyzer::ReportFileFailure() {
-  base::PostTask(
-      FROM_HERE, {content::BrowserThread::UI},
-      base::BindOnce(callback_, safe_browsing::ArchiveAnalyzerResults()));
+  base::PostTask(FROM_HERE, {content::BrowserThread::UI},
+                 base::BindOnce(std::move(callback_),
+                                safe_browsing::ArchiveAnalyzerResults()));
 }
 
 void SandboxedZipAnalyzer::AnalyzeFile(base::File file, base::File temp_file) {
@@ -86,5 +88,5 @@
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
 
   remote_analyzer_.reset();
-  callback_.Run(results);
+  std::move(callback_).Run(results);
 }
diff --git a/chrome/services/file_util/public/cpp/sandboxed_zip_analyzer.h b/chrome/services/file_util/public/cpp/sandboxed_zip_analyzer.h
index 74cc44a5..6caffea 100644
--- a/chrome/services/file_util/public/cpp/sandboxed_zip_analyzer.h
+++ b/chrome/services/file_util/public/cpp/sandboxed_zip_analyzer.h
@@ -26,11 +26,11 @@
     : public base::RefCountedThreadSafe<SandboxedZipAnalyzer> {
  public:
   using ResultCallback =
-      base::Callback<void(const safe_browsing::ArchiveAnalyzerResults&)>;
+      base::OnceCallback<void(const safe_browsing::ArchiveAnalyzerResults&)>;
 
   SandboxedZipAnalyzer(
       const base::FilePath& zip_file,
-      const ResultCallback& callback,
+      ResultCallback callback,
       mojo::PendingRemote<chrome::mojom::FileUtilService> service);
 
   // Starts the analysis. Must be called on the UI thread.
@@ -57,7 +57,7 @@
   const base::FilePath file_path_;
 
   // Callback invoked on the UI thread with the file analyze results.
-  const ResultCallback callback_;
+  ResultCallback callback_;
 
   // Remote interfaces to the file util service. Only used from the UI thread.
   mojo::Remote<chrome::mojom::FileUtilService> service_;
diff --git a/chrome/services/file_util/public/cpp/sandboxed_zip_analyzer_unittest.cc b/chrome/services/file_util/public/cpp/sandboxed_zip_analyzer_unittest.cc
index 8f1002c9..78d3976 100644
--- a/chrome/services/file_util/public/cpp/sandboxed_zip_analyzer_unittest.cc
+++ b/chrome/services/file_util/public/cpp/sandboxed_zip_analyzer_unittest.cc
@@ -47,26 +47,26 @@
   // store a copy of an analyzer's results and then run a closure.
   class ResultsGetter {
    public:
-    ResultsGetter(const base::Closure& quit_closure,
+    ResultsGetter(base::OnceClosure quit_closure,
                   safe_browsing::ArchiveAnalyzerResults* results)
-        : quit_closure_(quit_closure), results_(results) {
+        : quit_closure_(std::move(quit_closure)), results_(results) {
       DCHECK(results);
       results->success = false;
     }
 
     SandboxedZipAnalyzer::ResultCallback GetCallback() {
-      return base::Bind(&ResultsGetter::OnZipAnalyzerResults,
-                        base::Unretained(this));
+      return base::BindOnce(&ResultsGetter::OnZipAnalyzerResults,
+                            base::Unretained(this));
     }
 
    private:
     void OnZipAnalyzerResults(
         const safe_browsing::ArchiveAnalyzerResults& results) {
       *results_ = results;
-      quit_closure_.Run();
+      std::move(quit_closure_).Run();
     }
 
-    base::Closure quit_closure_;
+    base::OnceClosure quit_closure_;
     safe_browsing::ArchiveAnalyzerResults* results_;
 
     DISALLOW_COPY_AND_ASSIGN(ResultsGetter);
diff --git a/chrome/services/local_search_service/index_impl_unittest.cc b/chrome/services/local_search_service/index_impl_unittest.cc
index f70a50c..e74bc7c 100644
--- a/chrome/services/local_search_service/index_impl_unittest.cc
+++ b/chrome/services/local_search_service/index_impl_unittest.cc
@@ -17,6 +17,7 @@
 #include "chrome/services/local_search_service/index_impl.h"
 #include "chrome/services/local_search_service/public/mojom/local_search_service.mojom-test-utils.h"
 #include "chrome/services/local_search_service/public/mojom/types.mojom.h"
+#include "chrome/services/local_search_service/test_utils.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace local_search_service {
@@ -29,54 +30,6 @@
 constexpr bool kDefaultUseWeightedRatio = true;
 constexpr bool kDefaultUseEditDistance = false;
 
-// TODO(1018613): another cl is moving these test functions to a util file.
-// Consolidate after the cl is landed.
-// The following helper functions call the async functions and check results.
-void GetSizeAndCheck(mojom::Index* index, uint64_t expected_num_items) {
-  DCHECK(index);
-  uint64_t num_items = 0;
-  mojom::IndexAsyncWaiter(index).GetSize(&num_items);
-  EXPECT_EQ(num_items, expected_num_items);
-}
-
-void AddOrUpdateAndCheck(mojom::Index* index,
-                         std::vector<mojom::DataPtr> data) {
-  DCHECK(index);
-  mojom::IndexAsyncWaiter(index).AddOrUpdate(std::move(data));
-}
-
-void FindAndCheck(mojom::Index* index,
-                  std::string query,
-                  int32_t max_latency_in_ms,
-                  int32_t max_results,
-                  mojom::ResponseStatus expected_status,
-                  const std::vector<std::string>& expected_result_ids) {
-  DCHECK(index);
-
-  mojom::IndexAsyncWaiter async_waiter(index);
-  mojom::ResponseStatus status = mojom::ResponseStatus::UNKNOWN_ERROR;
-  base::Optional<std::vector<::local_search_service::mojom::ResultPtr>> results;
-  async_waiter.Find(query, max_latency_in_ms, max_results, &status, &results);
-
-  EXPECT_EQ(status, expected_status);
-
-  if (results) {
-    // If results are returned, check size and values match the expected.
-    EXPECT_EQ(results->size(), expected_result_ids.size());
-    for (size_t i = 0; i < results->size(); ++i) {
-      EXPECT_EQ((*results)[i]->id, expected_result_ids[i]);
-      // Scores should be non-increasing.
-      if (i < results->size() - 1) {
-        EXPECT_GE((*results)[i]->score, (*results)[i + 1]->score);
-      }
-    }
-    return;
-  }
-
-  // If no results are returned, expected ids should be empty.
-  EXPECT_TRUE(expected_result_ids.empty());
-}
-
 void SetSearchParamsAndCheck(mojom::Index* index,
                              mojom::SearchParamsPtr search_params) {
   DCHECK(index);
diff --git a/chrome/services/local_search_service/test_utils.cc b/chrome/services/local_search_service/test_utils.cc
index a35860c..f42bf97 100644
--- a/chrome/services/local_search_service/test_utils.cc
+++ b/chrome/services/local_search_service/test_utils.cc
@@ -63,6 +63,10 @@
     EXPECT_EQ(results->size(), expected_result_ids.size());
     for (size_t i = 0; i < results->size(); ++i) {
       EXPECT_EQ((*results)[i]->id, expected_result_ids[i]);
+      // Scores should be non-increasing.
+      if (i < results->size() - 1) {
+        EXPECT_GE((*results)[i]->score, (*results)[i + 1]->score);
+      }
     }
     return;
   }
diff --git a/chrome/services/media_gallery_util/media_metadata_parser.cc b/chrome/services/media_gallery_util/media_metadata_parser.cc
index 9c9de4b..81b6478 100644
--- a/chrome/services/media_gallery_util/media_metadata_parser.cc
+++ b/chrome/services/media_gallery_util/media_metadata_parser.cc
@@ -90,7 +90,7 @@
   DCHECK(metadata);
   DCHECK(attached_images);
 
-  callback.Run(std::move(metadata), *attached_images);
+  std::move(callback).Run(std::move(metadata), *attached_images);
 }
 
 bool IsSupportedMetadataMimetype(const std::string& mime_type) {
@@ -113,10 +113,10 @@
 
 MediaMetadataParser::~MediaMetadataParser() = default;
 
-void MediaMetadataParser::Start(const MetadataCallback& callback) {
+void MediaMetadataParser::Start(MetadataCallback callback) {
   if (!IsSupportedMetadataMimetype(mime_type_)) {
-    callback.Run(chrome::mojom::MediaMetadata::New(),
-                 std::vector<metadata::AttachedImage>());
+    std::move(callback).Run(chrome::mojom::MediaMetadata::New(),
+                            std::vector<metadata::AttachedImage>());
     return;
   }
 
@@ -129,6 +129,6 @@
       media_thread_->task_runner().get(), FROM_HERE,
       base::BindOnce(&ParseAudioVideoMetadata, source_.get(),
                      get_attached_images_, mime_type_, images),
-      base::BindOnce(&FinishParseAudioVideoMetadata, callback,
+      base::BindOnce(&FinishParseAudioVideoMetadata, std::move(callback),
                      base::Owned(images)));
 }
diff --git a/chrome/services/media_gallery_util/media_metadata_parser.h b/chrome/services/media_gallery_util/media_metadata_parser.h
index 8a1bff24..f36b9b681 100644
--- a/chrome/services/media_gallery_util/media_metadata_parser.h
+++ b/chrome/services/media_gallery_util/media_metadata_parser.h
@@ -28,10 +28,9 @@
 // so we sandbox potentially dangerous operations on user-provided data.
 class MediaMetadataParser {
  public:
-  typedef base::Callback<void(
+  using MetadataCallback = base::OnceCallback<void(
       chrome::mojom::MediaMetadataPtr metadata,
-      const std::vector<metadata::AttachedImage>& attached_images)>
-      MetadataCallback;
+      const std::vector<metadata::AttachedImage>& attached_images)>;
 
   MediaMetadataParser(std::unique_ptr<media::DataSource> source,
                       const std::string& mime_type,
@@ -40,7 +39,7 @@
   ~MediaMetadataParser();
 
   // |callback| is called on same message loop.
-  void Start(const MetadataCallback& callback);
+  void Start(MetadataCallback callback);
 
  private:
   // Only accessed on |media_thread_| from this class.
diff --git a/chrome/services/media_gallery_util/media_parser.cc b/chrome/services/media_gallery_util/media_parser.cc
index 54cfdead..59fb93c5 100644
--- a/chrome/services/media_gallery_util/media_parser.cc
+++ b/chrome/services/media_gallery_util/media_parser.cc
@@ -43,8 +43,8 @@
       std::make_unique<IPCDataSource>(std::move(media_data_source), total_size);
   MediaMetadataParser* parser = new MediaMetadataParser(
       std::move(source), mime_type, get_attached_images);
-  parser->Start(base::Bind(&ParseMediaMetadataDone, base::Passed(&callback),
-                           base::Owned(parser)));
+  parser->Start(base::BindOnce(&ParseMediaMetadataDone, std::move(callback),
+                               base::Owned(parser)));
 }
 
 void MediaParser::CheckMediaFile(base::TimeDelta decode_time,
diff --git a/chrome/services/media_gallery_util/public/cpp/media_gallery_util_browsertest.cc b/chrome/services/media_gallery_util/public/cpp/media_gallery_util_browsertest.cc
index 9a05de9..8cf1426 100644
--- a/chrome/services/media_gallery_util/public/cpp/media_gallery_util_browsertest.cc
+++ b/chrome/services/media_gallery_util/public/cpp/media_gallery_util_browsertest.cc
@@ -40,7 +40,7 @@
 
   void OnConnectionError() override { std::move(quit_loop_).Run(); }
 
-  base::Closure quit_loop_;
+  base::OnceClosure quit_loop_;
 };
 
 }  // namespace
@@ -54,7 +54,7 @@
 
   base::RunLoop run_loop;
   media_parser->GetCpuInfo(base::BindOnce(
-      [](base::Closure quit_closure, int64_t libyuv_cpu_flags,
+      [](base::OnceClosure quit_closure, int64_t libyuv_cpu_flags,
          int64_t ffmpeg_cpu_flags) {
         int64_t expected_ffmpeg_cpu_flags = 0;
 #if BUILDFLAG(ENABLE_FFMPEG)
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 34ce5e6..4df17f1 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -131,8 +131,6 @@
     "base/search_test_utils.h",
     "base/test_launcher_utils.cc",
     "base/test_launcher_utils.h",
-    "base/test_service_manager_listener.cc",
-    "base/test_service_manager_listener.h",
     "base/test_switches.cc",
     "base/test_switches.h",
     "base/testing_browser_process.cc",
@@ -1840,6 +1838,7 @@
         "../browser/safe_browsing/settings_reset_prompt/settings_reset_prompt_test_utils.cc",
         "../browser/safe_browsing/settings_reset_prompt/settings_reset_prompt_test_utils.h",
         "../browser/ui/views/extensions/extension_dialog_browsertest.cc",
+        "../browser/ui/views/extensions/pwa_confirmation_bubble_view_browsertest.cc",
         "../browser/ui/web_applications/test/bookmark_app_navigation_browsertest.cc",
         "../browser/ui/web_applications/test/bookmark_app_navigation_browsertest.h",
       ]
@@ -6102,6 +6101,7 @@
       "../browser/sync/test/integration/enable_disable_test.cc",
       "../browser/sync/test/integration/local_sync_test.cc",
       "../browser/sync/test/integration/migration_test.cc",
+      "../browser/sync/test/integration/single_client_app_settings_sync_test.cc",
       "../browser/sync/test/integration/single_client_apps_sync_test.cc",
       "../browser/sync/test/integration/single_client_autofill_profile_sync_test.cc",
       "../browser/sync/test/integration/single_client_bookmarks_sync_test.cc",
@@ -6125,6 +6125,7 @@
       "../browser/sync/test/integration/single_client_user_consents_sync_test.cc",
       "../browser/sync/test/integration/single_client_user_events_sync_test.cc",
       "../browser/sync/test/integration/single_client_wallet_sync_test.cc",
+      "../browser/sync/test/integration/single_client_web_apps_sync_test.cc",
       "../browser/sync/test/integration/sync_auth_test.cc",
       "../browser/sync/test/integration/sync_errors_test.cc",
       "../browser/sync/test/integration/sync_exponential_backoff_test.cc",
@@ -6490,6 +6491,7 @@
     testonly = true
     deps = [
       "//third_party/catapult:telemetry_chrome_test_support",
+      "//tools/metrics:metrics_python_tests",
     ]
     data = [
       # TODO(kbr): refactor the telemetry dependencies more cleanly.
diff --git a/chrome/test/base/test_service_manager_listener.cc b/chrome/test/base/test_service_manager_listener.cc
deleted file mode 100644
index 7c1bea6..0000000
--- a/chrome/test/base/test_service_manager_listener.cc
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/test/base/test_service_manager_listener.h"
-
-#include "base/run_loop.h"
-#include "content/public/browser/browser_thread.h"
-#include "content/public/browser/system_connector.h"
-#include "mojo/public/cpp/bindings/remote.h"
-#include "services/service_manager/public/cpp/connector.h"
-
-TestServiceManagerListener::TestServiceManagerListener() : receiver_(this) {}
-
-TestServiceManagerListener::~TestServiceManagerListener() {}
-
-void TestServiceManagerListener::Init() {
-  DCHECK(!receiver_.is_bound());
-  // Register a listener on the ServiceManager to track when services are
-  // started.
-  mojo::Remote<service_manager::mojom::ServiceManager> service_manager;
-  content::GetSystemConnector()->Connect(
-      service_manager::mojom::kServiceName,
-      service_manager.BindNewPipeAndPassReceiver());
-  mojo::PendingRemote<service_manager::mojom::ServiceManagerListener>
-      listener_remote;
-  receiver_.Bind(listener_remote.InitWithNewPipeAndPassReceiver());
-  service_manager->AddListener(std::move(listener_remote));
-}
-
-void TestServiceManagerListener::WaitUntilServiceStarted(
-    const std::string& service_name) {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-  DCHECK(!on_service_event_loop_closure_);
-  DCHECK(service_name_.empty());
-  service_name_ = service_name;
-  base::RunLoop run_loop;
-  on_service_event_loop_closure_ = run_loop.QuitClosure();
-  run_loop.Run();
-  on_service_event_loop_closure_.Reset();
-}
-
-uint32_t TestServiceManagerListener::GetServiceStartCount(
-    const std::string& service_name) const {
-  auto iter = service_start_counters_.find(service_name);
-  return iter == service_start_counters_.end() ? 0 : iter->second;
-}
-
-void TestServiceManagerListener::OnInit(
-    std::vector<service_manager::mojom::RunningServiceInfoPtr>
-        running_services) {}
-
-void TestServiceManagerListener::OnServiceCreated(
-    service_manager::mojom::RunningServiceInfoPtr service) {}
-
-void TestServiceManagerListener::OnServiceStarted(
-    const service_manager::Identity& identity,
-    uint32_t pid) {
-  DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-
-  service_start_counters_[identity.name()]++;
-
-  if (identity.name() != service_name_)
-    return;
-
-  service_name_.clear();
-  std::move(on_service_event_loop_closure_).Run();
-}
-
-void TestServiceManagerListener::OnServicePIDReceived(
-    const service_manager::Identity& identity,
-    uint32_t pid) {}
-
-void TestServiceManagerListener::OnServiceFailedToStart(
-    const service_manager::Identity& identity) {}
-
-void TestServiceManagerListener::OnServiceStopped(
-    const service_manager::Identity& identity) {}
diff --git a/chrome/test/base/test_service_manager_listener.h b/chrome/test/base/test_service_manager_listener.h
deleted file mode 100644
index 6e1f7bd..0000000
--- a/chrome/test/base/test_service_manager_listener.h
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_TEST_BASE_TEST_SERVICE_MANAGER_LISTENER_H_
-#define CHROME_TEST_BASE_TEST_SERVICE_MANAGER_LISTENER_H_
-
-#include <cstdint>
-#include <map>
-#include <string>
-#include <vector>
-
-#include "base/callback_forward.h"
-#include "base/macros.h"
-#include "mojo/public/cpp/bindings/receiver.h"
-#include "services/service_manager/public/mojom/service_manager.mojom.h"
-
-namespace service_manager {
-class Identity;
-}
-
-// This class lets us wait for services to be started and tracks how many times
-// a service was started.
-class TestServiceManagerListener
-    : public service_manager::mojom::ServiceManagerListener {
- public:
-  TestServiceManagerListener();
-  ~TestServiceManagerListener() override;
-
-  // Must be called once before the other public methods can be used.
-  void Init();
-
-  void WaitUntilServiceStarted(const std::string& service_name);
-  uint32_t GetServiceStartCount(const std::string& service_name) const;
-
- private:
-  // service_manager::mojom::ServiceManagerListener implementation:
-  void OnInit(std::vector<service_manager::mojom::RunningServiceInfoPtr>
-                  running_services) override;
-  void OnServiceCreated(
-      service_manager::mojom::RunningServiceInfoPtr service) override;
-  void OnServiceStarted(const service_manager::Identity& identity,
-                        uint32_t pid) override;
-  void OnServicePIDReceived(const service_manager::Identity& identity,
-                            uint32_t pid) override;
-  void OnServiceFailedToStart(
-      const service_manager::Identity& identity) override;
-  void OnServiceStopped(const service_manager::Identity& identity) override;
-
-  base::Closure on_service_event_loop_closure_;
-  std::string service_name_;
-  std::map<std::string, uint32_t> service_start_counters_;
-
-  mojo::Receiver<service_manager::mojom::ServiceManagerListener> receiver_;
-
-  DISALLOW_COPY_AND_ASSIGN(TestServiceManagerListener);
-};
-
-#endif  // CHROME_TEST_BASE_TEST_SERVICE_MANAGER_LISTENER_H_
diff --git a/chrome/test/chromedriver/chrome/web_view_impl.cc b/chrome/test/chromedriver/chrome/web_view_impl.cc
index ae17c22..8a9ae8b 100644
--- a/chrome/test/chromedriver/chrome/web_view_impl.cc
+++ b/chrome/test/chromedriver/chrome/web_view_impl.cc
@@ -623,20 +623,10 @@
     params.SetInteger("timestamp", current_time);
     std::string type = GetAsString(event.type);
     params.SetString("type", type);
-    if (type == "touchStart" || type == "touchMove") {
-      point_list->Append(GenerateTouchPoint(event));
-    } else {
-      if (touch_count < events.size() || touch_points_.size() > 1)
-        params.SetString("type", "touchMove");
-    }
+    if (type == "touchCancel")
+      continue;
 
-    for (auto point = touch_points_.begin(); point != touch_points_.end();
-         ++point) {
-      if (point->first != event.id) {
-        point_list->Append(GenerateTouchPoint(point->second));
-      }
-    }
-    touch_points_[event.id] = event;
+    point_list->Append(GenerateTouchPoint(event));
     params.Set("touchPoints", std::move(point_list));
 
     if (async_dispatch_events || touch_count < events.size()) {
@@ -648,9 +638,6 @@
     if (status.IsError())
       return status;
 
-    if (type != "touchStart" && type != "touchMove") {
-      touch_points_.erase(event.id);
-    }
     touch_count++;
   }
   return Status(kOk);
diff --git a/chrome/test/chromedriver/chrome/web_view_impl.h b/chrome/test/chromedriver/chrome/web_view_impl.h
index a3d6c8f..c666d0a 100644
--- a/chrome/test/chromedriver/chrome/web_view_impl.h
+++ b/chrome/test/chromedriver/chrome/web_view_impl.h
@@ -216,7 +216,6 @@
   std::unique_ptr<HeapSnapshotTaker> heap_snapshot_taker_;
   std::unique_ptr<DebuggerTracker> debugger_;
   std::unique_ptr<CastTracker> cast_tracker_;
-  base::flat_map<int, TouchEvent> touch_points_;
 };
 
 // Responsible for locking a WebViewImpl and its associated data structure to
diff --git a/chrome/test/data/android/render_tests/StatusViewRenderTest.status_view_verbose_padding_with_dse_icon.Nexus_5-19.png.sha1 b/chrome/test/data/android/render_tests/StatusViewRenderTest.status_view_verbose_padding_with_dse_icon.Nexus_5-19.png.sha1
index d7804ab..2a21fc0 100644
--- a/chrome/test/data/android/render_tests/StatusViewRenderTest.status_view_verbose_padding_with_dse_icon.Nexus_5-19.png.sha1
+++ b/chrome/test/data/android/render_tests/StatusViewRenderTest.status_view_verbose_padding_with_dse_icon.Nexus_5-19.png.sha1
@@ -1 +1 @@
-ad7cde95affb6d160c8510d07755f81ae2be2c1d
\ No newline at end of file
+6b1298f352e2fd819cba056417008a8ecbffeec6
\ No newline at end of file
diff --git a/chrome/test/data/android/render_tests/StatusViewRenderTest.status_view_verbose_padding_with_dse_icon.Nexus_5X-23.png.sha1 b/chrome/test/data/android/render_tests/StatusViewRenderTest.status_view_verbose_padding_with_dse_icon.Nexus_5X-23.png.sha1
index 4c07e41..4f8d0255 100644
--- a/chrome/test/data/android/render_tests/StatusViewRenderTest.status_view_verbose_padding_with_dse_icon.Nexus_5X-23.png.sha1
+++ b/chrome/test/data/android/render_tests/StatusViewRenderTest.status_view_verbose_padding_with_dse_icon.Nexus_5X-23.png.sha1
@@ -1 +1 @@
-e53ccabd6a719e511d703f960d1e9081554a5df0
\ No newline at end of file
+88ded67364374371bad308486f1a37e9e1a31e88
\ No newline at end of file
diff --git a/chrome/test/data/policy/policy_test_cases.json b/chrome/test/data/policy/policy_test_cases.json
index 546c042..0b0b569 100644
--- a/chrome/test/data/policy/policy_test_cases.json
+++ b/chrome/test/data/policy/policy_test_cases.json
@@ -4798,6 +4798,8 @@
 
   "ReportDeviceBoardStatus": {},
 
+  "ReportDeviceCpuInfo": {},
+
   "ReportUploadFrequency": {},
 
   "DeviceAllowNewUsers": {},
diff --git a/chrome/test/data/webui/bluetooth_internals_browsertest.js b/chrome/test/data/webui/bluetooth_internals_browsertest.js
index 8d3cdb3..21b01070 100644
--- a/chrome/test/data/webui/bluetooth_internals_browsertest.js
+++ b/chrome/test/data/webui/bluetooth_internals_browsertest.js
@@ -189,7 +189,8 @@
 
     window.setupFn = () => {
       this.internalsHandlerInterceptor = new MojoInterfaceInterceptor(
-          mojom.BluetoothInternalsHandler.$interfaceName);
+          mojom.BluetoothInternalsHandler.$interfaceName, 'context',
+          /*useBrowserInterfaceBroker=*/ true);
       this.internalsHandlerInterceptor.oninterfacerequest = (e) => {
         this.internalsHandler = new TestBluetoothInternalsHandler(e.handle);
 
diff --git a/chrome/test/data/webui/cr_elements/cr_elements_browsertest.js b/chrome/test/data/webui/cr_elements/cr_elements_browsertest.js
index cd19e22..5b870129 100644
--- a/chrome/test/data/webui/cr_elements/cr_elements_browsertest.js
+++ b/chrome/test/data/webui/cr_elements/cr_elements_browsertest.js
@@ -286,7 +286,7 @@
   __proto__: CrElementsBrowserTest.prototype,
 
   /** @override */
-  browsePreload: 'chrome://settings/internet_page/internet_page.html',
+  browsePreload: 'chrome://os-settings/internet_page/internet_page.html',
 
   /** @override */
   extraLibraries: CrElementsBrowserTest.prototype.extraLibraries.concat([
@@ -309,7 +309,7 @@
   __proto__: CrElementsBrowserTest.prototype,
 
   /** @override */
-  browsePreload: 'chrome://settings/internet_page/internet_page.html',
+  browsePreload: 'chrome://os-settings/internet_page/internet_page.html',
 
   /** @override */
   extraLibraries: CrElementsBrowserTest.prototype.extraLibraries.concat([
diff --git a/chrome/test/data/webui/settings/chromeos/device_page_tests.js b/chrome/test/data/webui/settings/chromeos/device_page_tests.js
index def5350..f39eed0 100644
--- a/chrome/test/data/webui/settings/chromeos/device_page_tests.js
+++ b/chrome/test/data/webui/settings/chromeos/device_page_tests.js
@@ -591,7 +591,7 @@
         const naturalScrollOff =
             pointersPage.$$('cr-radio-button[name="false"]');
         const naturalScrollOn = pointersPage.$$('cr-radio-button[name="true"]');
-        const a = naturalScrollOn.querySelector('localized-string-with-link')
+        const a = naturalScrollOn.querySelector('settings-localized-link')
                       .$.container.querySelector('a');
 
         // Prevent actually opening a link, which would block test.
diff --git a/chrome/test/data/webui/settings/chromeos/localized_string_with_link_test.js b/chrome/test/data/webui/settings/chromeos/localized_link_test.js
similarity index 66%
rename from chrome/test/data/webui/settings/chromeos/localized_string_with_link_test.js
rename to chrome/test/data/webui/settings/chromeos/localized_link_test.js
index 7972205..654f7d94 100644
--- a/chrome/test/data/webui/settings/chromeos/localized_string_with_link_test.js
+++ b/chrome/test/data/webui/settings/chromeos/localized_link_test.js
@@ -2,31 +2,30 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-suite('localized-string-with-link', function() {
+suite('localized_link', function() {
   let localizedStringWithLink;
 
-  function GetLocalizedStringWithLinkElementHtml(
-      localizedString, linkUrl = '') {
-    return `<localized-string-with-link localized-string="${localizedString}"` +
-        ` link-url="${linkUrl}"></localized-string-with-link>`;
+  function GetLocalizedStringWithLinkElementHtml(localizedString, linkUrl) {
+    return `<settings-localized-link localized-string="${localizedString}"` +
+        ` link-url="${linkUrl}"></settings-localized-link>`;
   }
 
   test('LinkFirst', function() {
     document.body.innerHTML =
-        GetLocalizedStringWithLinkElementHtml(`<a>first link</a> then text`);
+        GetLocalizedStringWithLinkElementHtml(`<a>first link</a>then text`, ``);
     localizedStringWithLink =
-        document.body.querySelector('localized-string-with-link');
+        document.body.querySelector('settings-localized-link');
     assertEquals(
         localizedStringWithLink.$.container.innerHTML,
         `<a id="id0" aria-labelledby="id0 id1">first link</a>` +
-            `<span id="id1" aria-hidden="true"> then text</span>`);
+            `<span id="id1" aria-hidden="true">then text</span>`);
   });
 
   test('TextLinkText', function() {
     document.body.innerHTML = GetLocalizedStringWithLinkElementHtml(
-        `first text <a>then link</a> then more text`);
+        `first text <a>then link</a> then more text`, ``);
     localizedStringWithLink =
-        document.body.querySelector('localized-string-with-link');
+        document.body.querySelector('settings-localized-link');
     assertEquals(
         localizedStringWithLink.$.container.innerHTML,
         `<span id="id0" aria-hidden="true">first text </span>` +
@@ -36,12 +35,12 @@
 
   test('LinkLast', function() {
     document.body.innerHTML =
-        GetLocalizedStringWithLinkElementHtml(`first text <a>then link</a>`);
+        GetLocalizedStringWithLinkElementHtml(`first text<a>then link</a>`, ``);
     localizedStringWithLink =
-        document.body.querySelector('localized-string-with-link');
+        document.body.querySelector('settings-localized-link');
     assertEquals(
         localizedStringWithLink.$.container.innerHTML,
-        `<span id="id0" aria-hidden="true">first text </span>` +
+        `<span id="id0" aria-hidden="true">first text</span>` +
             `<a id="id1" aria-labelledby="id0 id1">then link</a>`);
   });
 
@@ -49,7 +48,7 @@
     document.body.innerHTML = GetLocalizedStringWithLinkElementHtml(
         `<a>populated link</a>`, `http://google.com`);
     localizedStringWithLink =
-        document.body.querySelector('localized-string-with-link');
+        document.body.querySelector('settings-localized-link');
     assertEquals(
         localizedStringWithLink.$.container.innerHTML,
         `<a id="id0" aria-labelledby="id0" href="http://google.com" ` +
@@ -58,9 +57,9 @@
 
   test('PrepopulatedLink', function() {
     document.body.innerHTML = GetLocalizedStringWithLinkElementHtml(
-        `<a href='http://google.com'>pre-populated link</a>`);
+        `<a href='http://google.com'>pre-populated link</a>`, ``);
     localizedStringWithLink =
-        document.body.querySelector('localized-string-with-link');
+        document.body.querySelector('settings-localized-link');
     assertEquals(
         localizedStringWithLink.$.container.innerHTML,
         `<a href="http://google.com" id="id0" aria-labelledby="id0">` +
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 3c52604..494494b 100644
--- a/chrome/test/data/webui/settings/chromeos/os_settings_browsertest.js
+++ b/chrome/test/data/webui/settings/chromeos/os_settings_browsertest.js
@@ -46,23 +46,22 @@
   }
 };
 
-// Tests for the localized-string-with-link element.
+// Tests for the settings-localized-link element.
 // eslint-disable-next-line no-var
-var LocalizedStringWithLinkTest = class extends OSSettingsBrowserTest {
+var SettingsLocalizedLinkTest = class extends OSSettingsBrowserTest {
   get browsePreload() {
-    return super.browsePreload +
-        'chromeos/localized_string_with_link/localized_string_with_link.html';
+    return super.browsePreload + 'chromeos/localized_link/localized_link.html';
   }
 
   /** @override */
   get extraLibraries() {
     return super.extraLibraries.concat([
-      'localized_string_with_link_test.js',
+      'localized_link_test.js',
     ]);
   }
 };
 
-TEST_F('LocalizedStringWithLinkTest', 'AllJsTests', () => {
+TEST_F('SettingsLocalizedLinkTest', 'AllJsTests', () => {
   mocha.run();
 });
 
@@ -314,7 +313,7 @@
 var OSSettingsBluetoothPageTest = class extends OSSettingsBrowserTest {
   /** @override */
   get browsePreload() {
-    return super.browsePreload + 'bluetooth_page/bluetooth_page.html';
+    return super.browsePreload + 'chromeos/bluetooth_page/bluetooth_page.html';
   }
 
   /** @override */
@@ -339,7 +338,7 @@
 var OSSettingsCrostiniPageTest = class extends OSSettingsBrowserTest {
   /** @override */
   get browsePreload() {
-    return super.browsePreload + 'crostini_page/crostini_page.html';
+    return super.browsePreload + 'chromeos/crostini_page/crostini_page.html';
   }
 
   /** @override */
@@ -366,7 +365,7 @@
 var OSSettingsDateTimePageTest = class extends OSSettingsBrowserTest {
   /** @override */
   get browsePreload() {
-    return super.browsePreload + 'date_time_page/date_time_page.html';
+    return super.browsePreload + 'chromeos/date_time_page/date_time_page.html';
   }
 
   /** @override */
@@ -487,7 +486,8 @@
 var OSSettingsInternetDetailPageTest = class extends OSSettingsBrowserTest {
   /** @override */
   get browsePreload() {
-    return super.browsePreload + 'internet_page/internet_detail_page.html';
+    return super.browsePreload +
+        'chromeos/internet_page/internet_detail_page.html';
   }
 
   /** @override */
@@ -512,7 +512,7 @@
 var OSSettingsInternetPageTest = class extends OSSettingsBrowserTest {
   /** @override */
   get browsePreload() {
-    return super.browsePreload + 'internet_page/internet_page.html';
+    return super.browsePreload + 'chromeos/internet_page/internet_page.html';
   }
 
   /** @override */
@@ -537,7 +537,7 @@
 var OSSettingsInternetSubpageTest = class extends OSSettingsBrowserTest {
   /** @override */
   get browsePreload() {
-    return super.browsePreload + 'internet_page/internet_subpage.html';
+    return super.browsePreload + 'chromeos/internet_page/internet_subpage.html';
   }
 
   /** @override */
@@ -907,7 +907,7 @@
 var OSSettingsPluginVmPageTest = class extends OSSettingsBrowserTest {
   /** @override */
   get browsePreload() {
-    return super.browsePreload + 'plugin_vm_page/plugin_vm_page.html';
+    return super.browsePreload + 'chromeos/plugin_vm_page/plugin_vm_page.html';
   }
 
   /** @override */
diff --git a/chrome/test/data/webui/settings/chromeos/os_sync_controls_test.js b/chrome/test/data/webui/settings/chromeos/os_sync_controls_test.js
index 4578675a..3041b46 100644
--- a/chrome/test/data/webui/settings/chromeos/os_sync_controls_test.js
+++ b/chrome/test/data/webui/settings/chromeos/os_sync_controls_test.js
@@ -41,17 +41,11 @@
  */
 function getOsSyncPrefs(syncAll) {
   return {
-    osAppsEnforced: false,
     osAppsRegistered: true,
     osAppsSynced: syncAll,
-    osPreferencesEnforced: false,
     osPreferencesRegistered: true,
     osPreferencesSynced: syncAll,
-    printersEnforced: false,
-    printersRegistered: true,
-    printersSynced: syncAll,
     syncAllOsTypes: syncAll,
-    wifiConfigurationsEnforced: false,
     wifiConfigurationsRegistered: true,
     wifiConfigurationsSynced: syncAll,
   };
diff --git a/chrome/test/data/webui/settings/sync_test_util.js b/chrome/test/data/webui/settings/sync_test_util.js
index 4524bd0f..a9c64b2 100644
--- a/chrome/test/data/webui/settings/sync_test_util.js
+++ b/chrome/test/data/webui/settings/sync_test_util.js
@@ -9,40 +9,31 @@
    */
   function getSyncAllPrefs() {
     return {
-      appsEnforced: false,
       appsRegistered: true,
       appsSynced: true,
-      autofillEnforced: false,
       autofillRegistered: true,
       autofillSynced: true,
-      bookmarksEnforced: false,
       bookmarksRegistered: true,
       bookmarksSynced: true,
       encryptAllData: false,
       encryptAllDataAllowed: true,
       enterPassphraseBody: 'Enter custom passphrase.',
-      extensionsEnforced: false,
       extensionsRegistered: true,
       extensionsSynced: true,
       fullEncryptionBody: '',
       passphrase: '',
       passphraseRequired: false,
-      passwordsEnforced: false,
       passwordsRegistered: true,
       passwordsSynced: true,
       paymentsIntegrationEnabled: true,
-      preferencesEnforced: false,
       preferencesRegistered: true,
       preferencesSynced: true,
       setNewPassphrase: false,
       syncAllDataTypes: true,
-      tabsEnforced: false,
       tabsRegistered: true,
       tabsSynced: true,
-      themesEnforced: false,
       themesRegistered: true,
       themesSynced: true,
-      typedUrlsEnforced: false,
       typedUrlsRegistered: true,
       typedUrlsSynced: true,
     };
diff --git a/chrome/test/ppapi/ppapi_browsertest.cc b/chrome/test/ppapi/ppapi_browsertest.cc
index b7e6a40..0ae739e11 100644
--- a/chrome/test/ppapi/ppapi_browsertest.cc
+++ b/chrome/test/ppapi/ppapi_browsertest.cc
@@ -769,8 +769,10 @@
  public:
   explicit MockNetworkContext(
       TCPFailureType tcp_failure_type,
+      Browser* browser,
       mojo::PendingReceiver<network::mojom::NetworkContext> receiver)
       : tcp_failure_type_(tcp_failure_type),
+        browser_(browser),
         receiver_(this, std::move(receiver)) {}
 
   ~MockNetworkContext() override {}
@@ -824,6 +826,11 @@
                    network::mojom::ResolveHostParametersPtr optional_parameters,
                    mojo::PendingRemote<network::mojom::ResolveHostClient>
                        pending_response_client) override {
+    EXPECT_EQ(browser_->tab_strip_model()
+                  ->GetActiveWebContents()
+                  ->GetMainFrame()
+                  ->GetNetworkIsolationKey(),
+              network_isolation_key);
     mojo::Remote<network::mojom::ResolveHostClient> response_client(
         std::move(pending_response_client));
     response_client->OnComplete(net::OK, net::ResolveErrorInfo(net::OK),
@@ -832,6 +839,7 @@
 
  private:
   TCPFailureType tcp_failure_type_;
+  Browser* const browser_;
 
   std::vector<std::unique_ptr<MockTCPServerSocket>> server_sockets_;
   std::vector<std::unique_ptr<MockTCPBoundSocket>> bound_sockets_;
@@ -848,7 +856,8 @@
   do {                                                                        \
     mojo::Remote<network::mojom::NetworkContext> network_context_proxy;       \
     MockNetworkContext network_context(                                       \
-        failure_type, network_context_proxy.BindNewPipeAndPassReceiver());    \
+        failure_type, browser(),                                              \
+        network_context_proxy.BindNewPipeAndPassReceiver());                  \
     ppapi::SetPepperTCPNetworkContextForTesting(network_context_proxy.get()); \
     RunTestViaHTTP(LIST_TEST(test_name));                                     \
     ppapi::SetPepperTCPNetworkContextForTesting(nullptr);                     \
diff --git a/chrome/updater/BUILD.gn b/chrome/updater/BUILD.gn
index d60e81ca..a3e01141 100644
--- a/chrome/updater/BUILD.gn
+++ b/chrome/updater/BUILD.gn
@@ -19,6 +19,9 @@
       "//chrome/updater/mac",
     ]
   }
+  if (is_win || is_mac) {
+    deps += [ "//chrome/updater/tools:tools" ]
+  }
 }
 
 # Conditional build is needed, otherwise the analyze script on Linux
@@ -114,5 +117,9 @@
         "//chrome/updater/mac:updater_tests",
       ]
     }
+
+    if (is_win || is_mac) {
+      deps += [ "//chrome/updater/tools:unittest" ]
+    }
   }
 }
diff --git a/chrome/updater/tools/BUILD.gn b/chrome/updater/tools/BUILD.gn
new file mode 100644
index 0000000..4cdb1f3
--- /dev/null
+++ b/chrome/updater/tools/BUILD.gn
@@ -0,0 +1,52 @@
+# 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("//testing/test.gni")
+
+group("tools") {
+  deps = [
+    ":certificate_tag",
+  ]
+}
+
+source_set("certificate_tag_lib") {
+  sources = [
+    "certificate_tag.cc",
+    "certificate_tag.h",
+  ]
+
+  # TODO(sorin): clean up the unused constant definitions after the code is
+  # complete and before closing crbug.com/1031734.
+  cflags_cc = [ "-Wno-unused-const-variable" ]
+
+  deps = [
+    "//base",
+  ]
+}
+
+executable("certificate_tag") {
+  sources = [
+    "main.cc",
+  ]
+
+  deps = [
+    ":certificate_tag_lib",
+    "//base",
+  ]
+}
+
+source_set("unittest") {
+  testonly = true
+
+  sources = [
+    "certificate_tag_unittest.cc",
+  ]
+
+  deps = [
+    ":certificate_tag_lib",
+    "//base",
+    "//base/test:test_support",
+    "//testing/gtest",
+  ]
+}
diff --git a/chrome/updater/tools/certificate_tag.cc b/chrome/updater/tools/certificate_tag.cc
new file mode 100644
index 0000000..08dcfa5
--- /dev/null
+++ b/chrome/updater/tools/certificate_tag.cc
@@ -0,0 +1,180 @@
+// 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 "chrome/updater/tools/certificate_tag.h"
+
+#include <algorithm>
+#include <iostream>
+#include <iterator>
+#include <utility>
+
+#include "base/logging.h"
+#include "base/time/time.h"
+
+namespace updater {
+namespace tools {
+namespace {
+
+// The number of bits in the RSA modulus of the key.
+constexpr int kRsaKeyBits = 2048;
+
+// kNotBeforeTime and kNotAfterTime are the validity period of the
+// certificate. They are deliberately set so that they are already expired.
+constexpr char kNotBeforeTime[] = "Mon Jan 1 10:00:00 UTC 2013";
+constexpr char kNotAfterTime[] = "Mon Apr 1 10:00:00 UTC 2013";
+
+// The structures here were taken from "Microsoft Portable Executable and
+// Common Object File Format Specification".
+constexpr int fileHeaderSize = 20;
+
+// FileHeader represents the IMAGE_FILE_HEADER structure (the COFF header
+// format) from
+// https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-image_file_header.
+struct FileHeader {
+  uint16_t machine;
+  uint16_t number_of_sections;
+  uint32_t time_date_stamp;
+  uint32_t pointer_for_symbol_table;
+  uint32_t number_of_symbols;
+  uint16_t size_of_optional_header;
+  uint16_t characteristics;
+};
+
+// OptionalHeader represents the IMAGE_OPTIONAL_HEADER structure from
+// https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-image_optional_header32.
+struct OptionalHeader {
+  uint16_t magic;
+  uint8_t major_linker_version;
+  uint8_t minor_linker_version;
+  uint32_t size_of_code;
+  uint32_t size_of_initialized_data;
+  uint32_t size_of_uninitialized_data;
+  uint32_t address_of_entry_point;
+  uint32_t base_of_code;
+};
+
+// DataDirectory represents the IMAGE_DATA_DIRECTORY structure from
+// https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-image_data_directory.
+struct dataDirectory {
+  uint32_t virtual_address;
+  uint32_t size;
+};
+
+// A subset of the known COFF "characteristic" flags found in
+// fileHeader.Characteristics.
+constexpr int kCoffCharacteristicExecutableImage = 2;
+constexpr int kCoffCharacteristicDLL = 0x2000;
+constexpr int kPE32Magic = 0x10b;
+constexpr int kPE32PlusMagic = 0x20b;
+
+// Certificate constants. See
+// https://docs.microsoft.com/en-us/windows/win32/api/wintrust/ns-wintrust-win_certificate.
+// Despite MSDN claiming that 0x100 is the only, current revision - in practice
+// it is 0x200.
+constexpr int kAttributeCertificateRevision = 0x200;
+constexpr int kAttributeCertificateTypePKCS7SignedData = 2;
+constexpr int kCertificateTableIndex = 4;
+
+}  // namespace
+
+Binary::Binary() = default;
+Binary::~Binary() = default;
+
+bool ParseUnixTime(const char* time_string, base::Time* parsed_time) {
+  return base::Time::FromUTCString(time_string, parsed_time);
+}
+
+std::vector<uint8_t> AppendedTag(const Binary& bin) {
+  const bool is_all_zero =
+      std::all_of(std::begin(bin.appended_tag), std::end(bin.appended_tag),
+                  [](uint8_t i) { return i == 0; });
+  if (is_all_zero && bin.appended_tag.size() < 8)
+    return {};
+  return bin.appended_tag;
+}
+
+std::vector<uint8_t> RemoveAppendedTag(const Binary& bin) {
+  const auto appended_tag = AppendedTag(bin);
+  if (appended_tag.empty())
+    std::cerr << "authenticodetag: no appended tag found";
+  return BuildBinary(bin, bin.asn1_data, {});
+}
+
+std::vector<uint8_t> SetAppendedTag(const Binary& bin,
+                                    const std::vector<uint8_t>& tag_contents) {
+  return BuildBinary(bin, bin.asn1_data, tag_contents);
+}
+
+int GetAttributeCertificates(const std::vector<uint8_t>& contents,
+                             size_t* offset,
+                             size_t* size,
+                             size_t* cert_size_offset) {
+  // TODO(agl): implement this. crbug.com/1031734.
+  NOTREACHED();
+  return -1;
+}
+
+int ProcessAttributeCertificates(
+    const std::vector<uint8_t>& attribute_certificates,
+    std::vector<uint8_t>* asn1_data,
+    std::vector<uint8_t>* appended_tag) {
+  // TODO(agl): implement this. crbug.com/1031734.
+  NOTREACHED();
+  return -1;
+}
+
+std::vector<uint8_t> SetSuperfluousCertTag(const Binary& bin,
+                                           const std::vector<uint8_t>& tag) {
+  // TODO(agl): implement this. crbug.com/1031734.
+  NOTREACHED();
+  return {};
+}
+
+std::vector<uint8_t> BuildBinary(const Binary& bin,
+                                 const std::vector<uint8_t>& asn1_data,
+                                 const std::vector<uint8_t>& tag) {
+  // TODO(agl): implement this. crbug.com/1031734.
+  NOTREACHED();
+  return {};
+}
+
+std::tuple<std::unique_ptr<Binary>, int /*err*/> NewBinary(
+    const std::vector<uint8_t>& contents) {
+  size_t offset = 0;
+  size_t size = 0;
+  size_t cert_size_offset;
+  int err =
+      GetAttributeCertificates(contents, &offset, &size, &cert_size_offset);
+  if (err) {
+    std::cerr << "authenticodetag: error parsing headers: " << err;
+    std::make_tuple(nullptr, err);
+  }
+
+  const std::vector<uint8_t> attribute_certificates{&contents[offset],
+                                                    &contents[offset + size]};
+  std::vector<uint8_t> asn1_data;
+  std::vector<uint8_t> appended_tag;
+  err = ProcessAttributeCertificates(attribute_certificates, &asn1_data,
+                                     &appended_tag);
+  if (err) {
+    std::cerr
+        << "authenticodetag: error parsing attribute certificate section: "
+        << err;
+    std::make_tuple(nullptr, err);
+  }
+
+  // TODO(agl): ASN1 unmarshaling magic here. crbug.com/1031734.
+
+  auto binary = std::make_unique<Binary>();
+  binary->contents = contents;
+  binary->attr_cert_offset = offset;
+  binary->cert_size_offset = cert_size_offset;
+  binary->asn1_data = std::move(asn1_data);
+  binary->appended_tag = std::move(appended_tag);
+
+  return std::make_tuple(std::move(binary), 0);
+}
+
+}  // namespace tools
+}  // namespace updater
diff --git a/chrome/updater/tools/certificate_tag.h b/chrome/updater/tools/certificate_tag.h
new file mode 100644
index 0000000..41709244
--- /dev/null
+++ b/chrome/updater/tools/certificate_tag.h
@@ -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.
+
+#ifndef CHROME_UPDATER_TOOLS_CERTIFICATE_TAG_H_
+#define CHROME_UPDATER_TOOLS_CERTIFICATE_TAG_H_
+
+#include <cstdint>
+#include <memory>
+#include <tuple>
+#include <vector>
+
+namespace base {
+class Time;
+}
+
+namespace updater {
+namespace tools {
+
+struct SignedData;
+
+// Binary represents a PE binary.
+struct Binary {
+  Binary();
+  ~Binary();
+  Binary(const Binary&) = delete;
+  Binary& operator=(const Binary&) = delete;
+
+  // The full file.
+  std::vector<uint8_t> contents;
+
+  // The offset to the attribute certificates table.
+  size_t attr_cert_offset = 0;
+
+  // The offset to the size of the attribute certificates table.
+  size_t cert_size_offset = 0;
+
+  // The PKCS#7, SignedData in DER form.
+  std::vector<uint8_t> asn1_data;
+
+  // The appended tag, if any.
+  std::vector<uint8_t> appended_tag;
+
+  // The parsed, SignedData structure.
+  SignedData* signed_data = nullptr;
+};
+
+bool ParseUnixTime(const char* time_string, base::Time* parsed_time);
+
+std::tuple<std::unique_ptr<Binary>, int /*err*/> NewBinary(
+    std::vector<uint8_t> contents);
+std::vector<uint8_t> BuildBinary(const Binary& bin,
+                                 const std::vector<uint8_t>& asn1_data,
+                                 const std::vector<uint8_t>& tag);
+
+int ProcessAttributeCertificates(
+    const std::vector<uint8_t>& attribute_certificates,
+    std::vector<uint8_t>* asn1_data,
+    std::vector<uint8_t>* appended_tag);
+
+std::vector<uint8_t> AppendedTag(const Binary& bin);
+std::vector<uint8_t> RemoveAppendedTag(const Binary& bin);
+std::vector<uint8_t> SetAppendedTag(const Binary& bin,
+                                    const std::vector<uint8_t>& tag_contents);
+
+// SetSuperfluousCertTag returns a PE binary based on bin, but where the
+// superfluous certificate contains the given tag data.
+std::vector<uint8_t> SetSuperfluousCertTag(const Binary& bin,
+                                           const std::vector<uint8_t>& tag);
+}  // namespace tools
+}  // namespace updater
+
+#endif  // CHROME_UPDATER_TOOLS_CERTIFICATE_TAG_H_
diff --git a/chrome/updater/tools/certificate_tag_unittest.cc b/chrome/updater/tools/certificate_tag_unittest.cc
new file mode 100644
index 0000000..855066d
--- /dev/null
+++ b/chrome/updater/tools/certificate_tag_unittest.cc
@@ -0,0 +1,30 @@
+// 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 "chrome/updater/tools/certificate_tag.h"
+#include "base/time/time.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace updater {
+namespace tools {
+
+TEST(UpdaterCertificateTagTests, ParseUnixTime) {
+  base::Time time;
+  EXPECT_TRUE(ParseUnixTime("Mon Jan 1 10:00:00 UTC 2013", &time));
+  base::Time::Exploded exploded;
+  time.UTCExplode(&exploded);
+  time.UTCExplode(&exploded);
+  EXPECT_EQ(2013, exploded.year);
+  EXPECT_EQ(1, exploded.month);
+  EXPECT_EQ(2, exploded.day_of_week);
+  EXPECT_EQ(10, exploded.hour);
+  EXPECT_EQ(0, exploded.minute);
+  EXPECT_EQ(0, exploded.second);
+
+  // Tests parsing an invalid date string.
+  EXPECT_FALSE(ParseUnixTime("Mon Jan 101 10:00:00 UTC 2013", &time));
+}
+
+}  // namespace tools
+}  // namespace updater
diff --git a/chrome/updater/tools/main.cc b/chrome/updater/tools/main.cc
new file mode 100644
index 0000000..9acd3c0
--- /dev/null
+++ b/chrome/updater/tools/main.cc
@@ -0,0 +1,291 @@
+// 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 <cstdint>
+#include <cstdlib>
+#include <iostream>
+#include <string>
+#include <tuple>
+#include <utility>
+#include <vector>
+
+#include "base/command_line.h"
+#include "base/files/file_path.h"
+#include "base/files/file_util.h"
+#include "base/logging.h"
+#include "base/stl_util.h"
+#include "base/strings/string_number_conversions.h"
+#include "base/strings/string_util.h"
+#include "base/strings/stringprintf.h"
+#include "chrome/updater/tools/certificate_tag.h"
+
+namespace updater {
+namespace tools {
+namespace {
+
+// Command line switches.
+// If set, any appended tag is dumped to stdout.
+const char kDumpAppendedTagSwitch[] = "dump-appended-tag";
+
+// If set, any appended tag is removed and the binary rewritten.
+const char kRemoveAppendedTagSwitch[] = "remove-appended-tag";
+
+// If set, this flag contains a filename from which the contents of the appended
+// tag will be saved.
+const char kLoadAppendedTagSwitch[] = "load-appended-tag";
+
+// If set, this flag contains a string and a superfluous certificate tag with
+// that value will be set and the binary rewritten. If the string begins
+// with '0x' then it will be interpreted as hex.
+const char kSetSuperfluousCertTagSwitch[] = "set-superfluous-cert-tag";
+
+// A superfluous cert tag will be padded with zeros to at least this number of
+// bytes.
+const char kPaddedLengthSwitch[] = "padded-length";
+
+// If set to a filename, the PKCS7 data from the original binary will be written
+// to that file.
+const char kSavePKCS7Switch[] = "save-pkcs7";
+
+// If set, the updated binary is written to this file. Otherwise the binary is
+// updated in place.
+const char kOutFilenameSwitch[] = "out";
+
+struct CommandLineArguments {
+  CommandLineArguments();
+  ~CommandLineArguments();
+
+  // Dumps tag to stdout.
+  bool dump_appended_tag = false;
+
+  // Removes the tag from the binary.
+  bool remove_appended_tag = false;
+
+  // Reads and outputs the tag from the binary to stdout or the output file.
+  base::FilePath load_appended_tag;
+
+  // Sets the certificate from bytes.
+  std::string set_superfluous_cert_tag;
+
+  // Minimum Length of the padded area in the certificate.
+  int padded_length = 0;
+
+  // Specifies the filename to save the PKCS7 data into.
+  base::FilePath save_PKCS7;
+
+  // Specifies the input file (which may be the same as the output file).
+  base::FilePath in_filename;
+
+  // Specifies the file name for the output of operations.
+  base::FilePath out_filename;
+};
+
+CommandLineArguments::CommandLineArguments() = default;
+CommandLineArguments::~CommandLineArguments() = default;
+
+void PrintUsageAndExit(const base::CommandLine* cmdline) {
+  std::cerr << "Usage: " << cmdline->GetProgram().MaybeAsASCII()
+            << " [flags] binary.exe";
+  std::exit(255);
+}
+
+void HandleError(int error) {
+  std::cerr << "Error: " << error;
+  std::exit(1);
+}
+
+CommandLineArguments ParseCommandLineArgs() {
+  CommandLineArguments args;
+  base::CommandLine::Init(0, nullptr);
+  auto* cmdline = base::CommandLine::ForCurrentProcess();
+  if (cmdline->argv().size() == 1 || cmdline->GetArgs().size() != 1)
+    PrintUsageAndExit(cmdline);
+
+  args.in_filename = base::FilePath{cmdline->GetArgs()[0]};
+
+  args.dump_appended_tag = cmdline->HasSwitch(kDumpAppendedTagSwitch);
+  cmdline->RemoveSwitch(kDumpAppendedTagSwitch);
+
+  args.remove_appended_tag = cmdline->HasSwitch(kRemoveAppendedTagSwitch);
+  cmdline->RemoveSwitch(kRemoveAppendedTagSwitch);
+
+  args.load_appended_tag = cmdline->GetSwitchValuePath(kLoadAppendedTagSwitch);
+  cmdline->RemoveSwitch(kLoadAppendedTagSwitch);
+
+  args.set_superfluous_cert_tag =
+      cmdline->GetSwitchValueASCII(kSetSuperfluousCertTagSwitch);
+  cmdline->RemoveSwitch(kSetSuperfluousCertTagSwitch);
+
+  args.padded_length = [cmdline]() {
+    int retval = 0;
+    if (base::StringToInt(cmdline->GetSwitchValueASCII(kPaddedLengthSwitch),
+                          &retval)) {
+      std::cerr << "Invalid command line argument: "
+                << cmdline->GetSwitchValueASCII(kPaddedLengthSwitch);
+      std::exit(EXIT_FAILURE);
+    }
+    return retval;
+  }();
+  cmdline->RemoveSwitch(kPaddedLengthSwitch);
+
+  args.save_PKCS7 = cmdline->GetSwitchValuePath(kSavePKCS7Switch);
+  cmdline->RemoveSwitch(kSavePKCS7Switch);
+
+  args.out_filename = cmdline->GetSwitchValuePath(kOutFilenameSwitch);
+  cmdline->RemoveSwitch(kOutFilenameSwitch);
+
+  const auto unknown_switches = cmdline->GetSwitches();
+  if (!unknown_switches.empty()) {
+    std::cerr << "Unknown command line switch: "
+              << unknown_switches.begin()->first << std::endl;
+    PrintUsageAndExit(cmdline);
+  }
+
+  return args;
+}
+
+int CertificateTagMain() {
+  const auto args = ParseCommandLineArgs();
+  return 0;
+
+  const base::FilePath in_filename = args.in_filename;
+  const base::FilePath out_filename =
+      args.out_filename.empty() ? args.in_filename : args.out_filename;
+
+  int64_t in_filename_size = 0;
+  if (!base::GetFileSize(in_filename, &in_filename_size))
+    HandleError(logging::GetLastSystemErrorCode());
+
+  std::vector<uint8_t> contents(in_filename_size);
+  if (base::ReadFile(in_filename, reinterpret_cast<char*>(&contents.front()),
+                     contents.size()) == -1) {
+    HandleError(logging::GetLastSystemErrorCode());
+  }
+
+  std::unique_ptr<tools::Binary> bin;
+  int err = 0;
+  std::tie(bin, err) = NewBinary(contents);
+  if (err)
+    HandleError(err);
+
+  bool did_something = false;
+
+  if (!args.save_PKCS7.empty()) {
+    if (base::WriteFile(args.save_PKCS7,
+                        reinterpret_cast<char*>(&bin->asn1_data.front()),
+                        bin->asn1_data.size()) == -1) {
+      std::cerr << "Error while writing file: "
+                << logging::GetLastSystemErrorCode();
+      std::exit(1);
+    }
+    did_something = true;
+  }
+
+  if (args.dump_appended_tag) {
+    const auto appended_tag = AppendedTag(*bin);
+    if (appended_tag.empty())
+      std::cerr << "No appended string found";
+    else
+      std::cout << base::HexEncode(appended_tag.data(), appended_tag.size());
+    did_something = true;
+  }
+
+  if (args.remove_appended_tag) {
+    auto contents = RemoveAppendedTag(*bin);
+    if (contents.empty()) {
+      std::cerr << "Error while removing appended tag";
+      std::exit(1);
+    }
+    if (base::WriteFile(out_filename,
+                        reinterpret_cast<char*>(&contents.front()),
+                        contents.size()) == -1) {
+      std::cerr << "Error while writing file: "
+                << logging::GetLastSystemErrorCode();
+      std::exit(1);
+    }
+    did_something = true;
+  }
+
+  if (!args.load_appended_tag.empty()) {
+    int64_t file_size = 0;
+    if (!base::GetFileSize(args.load_appended_tag, &file_size))
+      HandleError(logging::GetLastSystemErrorCode());
+
+    std::vector<uint8_t> tag_contents(file_size);
+    if (base::ReadFile(args.load_appended_tag,
+
+                       reinterpret_cast<char*>(&tag_contents.front()),
+                       tag_contents.size()) == -1) {
+      std::cerr << "Error while reading file: "
+                << logging::GetLastSystemErrorCode();
+      std::exit(1);
+    }
+
+    auto contents = SetAppendedTag(*bin, tag_contents);
+    if (base::WriteFile(out_filename,
+                        reinterpret_cast<char*>(&contents.front()),
+                        contents.size()) == -1) {
+      std::cerr << "Error while writing updated file: "
+                << logging::GetLastSystemErrorCode();
+      std::exit(1);
+    }
+    did_something = true;
+  }
+
+  if (!args.set_superfluous_cert_tag.empty()) {
+    constexpr char kPrefix[] = "0x";
+    std::vector<uint8_t> tag_contents;
+    if (base::StartsWith(args.set_superfluous_cert_tag, kPrefix,
+                         base::CompareCase::INSENSITIVE_ASCII)) {
+      if (!base::HexStringToBytes(
+              {std::begin(args.set_superfluous_cert_tag) + base::size(kPrefix),
+               std::end(args.set_superfluous_cert_tag)},
+              &tag_contents)) {
+        std::cerr << "Failed to parse tag contents from command line";
+        std::exit(1);
+      }
+    } else {
+      tag_contents.assign(args.set_superfluous_cert_tag.begin(),
+                          args.set_superfluous_cert_tag.end());
+    }
+
+    if (tag_contents.size() < args.padded_length)
+      tag_contents.resize(0);
+
+    auto contents = SetSuperfluousCertTag(*bin, tag_contents);
+    if (contents.empty()) {
+      std::cerr << "Error while setting superfluous certificate tag.";
+      std::exit(1);
+    }
+    if (base::WriteFile(out_filename,
+                        reinterpret_cast<char*>(&contents.front()),
+                        contents.size()) == -1) {
+      std::cerr << "Error while writing updated file "
+                << logging::GetLastSystemErrorCode();
+      std::exit(1);
+    }
+    did_something = true;
+  }
+
+  if (did_something) {
+    // By default, print basic information.
+    auto appended_tag = AppendedTag(*bin);
+    if (appended_tag.empty()) {
+      std::cout << "No appended tag";
+    } else {
+      std::cout << "Appended tag included, " << appended_tag.size()
+                << " bytes.";
+    }
+  }
+
+  return EXIT_SUCCESS;
+}
+
+}  // namespace
+}  // namespace tools
+}  // namespace updater
+
+int main() {
+  return updater::tools::CertificateTagMain();
+}
diff --git a/chrome/updater/win/install_app.cc b/chrome/updater/win/install_app.cc
index afc9d052..8d719f7f 100644
--- a/chrome/updater/win/install_app.cc
+++ b/chrome/updater/win/install_app.cc
@@ -436,7 +436,7 @@
 
   // Provides an execution environment for the UI code. Typically, it runs
   // a single task which is the UI run loop.
-  scoped_refptr<base::TaskRunner> ui_task_runner_;
+  scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_;
 
   // The run loop associated with the updater main thread.
   base::RunLoop runloop_;
diff --git a/chromecast/browser/cast_extension_url_loader_factory.cc b/chromecast/browser/cast_extension_url_loader_factory.cc
index be9b86aa..1fb7b177 100644
--- a/chromecast/browser/cast_extension_url_loader_factory.cc
+++ b/chromecast/browser/cast_extension_url_loader_factory.cc
@@ -221,7 +221,7 @@
 
   network::ResourceRequest new_request(request);
   new_request.url = GURL(cast_url);
-  new_request.site_for_cookies = new_request.url;
+  new_request.site_for_cookies = net::SiteForCookies::FromUrl(new_request.url);
 
   // Force a redirect to the new URL but without changing where the webpage
   // thinks it is.
diff --git a/chromecast/browser/cast_web_service.cc b/chromecast/browser/cast_web_service.cc
index 521d211f..8825987 100644
--- a/chromecast/browser/cast_web_service.cc
+++ b/chromecast/browser/cast_web_service.cc
@@ -19,6 +19,7 @@
 #include "chromecast/browser/cast_web_view_factory.h"
 #include "chromecast/chromecast_buildflags.h"
 #include "content/public/browser/browser_context.h"
+#include "content/public/browser/gpu_utils.h"
 #include "content/public/browser/media_session.h"
 #include "content/public/browser/site_instance.h"
 #include "content/public/browser/storage_partition.h"
@@ -112,6 +113,10 @@
           base::Passed(std::move(callback))));
 }
 
+void CastWebService::StopGpuProcess(base::OnceClosure callback) const {
+  content::StopGpuProcess(std::move(callback));
+}
+
 void CastWebService::OwnerDestroyed(CastWebView* web_view) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   content::WebContents* web_contents = web_view->web_contents();
diff --git a/chromecast/browser/cast_web_service.h b/chromecast/browser/cast_web_service.h
index 85666f26..fb6328a 100644
--- a/chromecast/browser/cast_web_service.h
+++ b/chromecast/browser/cast_web_service.h
@@ -57,6 +57,7 @@
   // |callback| is called when data deletion is done or at least the deletion
   // is scheduled.
   void ClearLocalStorage(base::OnceClosure callback);
+  void StopGpuProcess(base::OnceClosure callback) const;
 
  private:
   void OwnerDestroyed(CastWebView* web_view);
diff --git a/chromecast/browser/webview/proto/webview.proto b/chromecast/browser/webview/proto/webview.proto
index b34a4435..e0932c0 100644
--- a/chromecast/browser/webview/proto/webview.proto
+++ b/chromecast/browser/webview/proto/webview.proto
@@ -171,46 +171,8 @@
 }
 
 message NavigationRequestEvent {
-  // The URL the frame is navigating to. This may change during the navigation
-  // when encountering a server redirect.
   string url = 1;
-
-  // Whether the navigation is taking place in the main frame or in a subframe.
-  // This remains constant over the navigation lifetime.
   bool is_for_main_frame = 2;
-
-  //  False for browser-initiated navigations, including:
-  //  * any navigation initiated from the omnibox
-  //  * navigations via suggestions in browser UI
-  //  * navigations via browser UI: Ctrl-R, refresh/forward/back/home buttons
-  //  * using window.history.forward() or window.history.back()
-  //  * any other "explicit" URL navigations, e.g. bookmarks
-  bool is_renderer_initiated = 3;
-
-  // Whether the navigation happened without changing document. Examples of
-  // same document navigations are:
-  // * reference fragment navigations
-  // * pushState/replaceState
-  // * same page history navigation
-  bool is_same_document = 4;
-
-  // Whether the navigation was initiated by a user gesture. Note that this
-  // will be false for browser-initiated navigations.
-  bool has_user_gesture = 5;
-
-  // The previous main frame URL that the user was on. This may be empty if
-  // there was no last committed entry.
-  string previous_url = 6;
-
-  // true if this navigation was initiated by a link click.
-  bool was_initiated_by_link_click = 7;
-
-  // Whether the navigation has encountered a server redirect or not.
-  bool was_server_redirect = 8;
-
-  // Whether the navigation is done using HTTP POST method. This may change
-  // during the navigation (e.g. after encountering a server redirect).
-  bool is_post = 9;
 }
 
 enum NavigationDecision {
diff --git a/chromecast/browser/webview/web_content_controller.cc b/chromecast/browser/webview/web_content_controller.cc
index f162bd7..9aa361b 100644
--- a/chromecast/browser/webview/web_content_controller.cc
+++ b/chromecast/browser/webview/web_content_controller.cc
@@ -205,6 +205,7 @@
                 &root_relative_event, contents->GetNativeView())) {
           return;
         }
+        evt.set_may_cause_scrolling(root_relative_event.may_cause_scrolling());
 
         handler->OnTouchEvent(&evt);
 
diff --git a/chromecast/browser/webview/webview_controller.cc b/chromecast/browser/webview/webview_controller.cc
index 61ae29b..8d83a468 100644
--- a/chromecast/browser/webview/webview_controller.cc
+++ b/chromecast/browser/webview/webview_controller.cc
@@ -123,29 +123,14 @@
   }
 }
 
-void WebviewController::SendNavigationEvent(
-    WebviewNavigationThrottle* throttle,
-    content::NavigationHandle* navigation_handle) {
+void WebviewController::SendNavigationEvent(WebviewNavigationThrottle* throttle,
+                                            const GURL& gurl,
+                                            bool is_in_main_frame) {
   DCHECK(!current_navigation_throttle_);
-  DCHECK(navigation_handle);
   std::unique_ptr<webview::WebviewResponse> response =
       std::make_unique<webview::WebviewResponse>();
-  auto* navigation_event = response->mutable_navigation_event();
-
-  navigation_event->set_url(navigation_handle->GetURL().GetContent());
-  navigation_event->set_is_for_main_frame(navigation_handle->IsInMainFrame());
-  navigation_event->set_is_renderer_initiated(
-      navigation_handle->IsRendererInitiated());
-  navigation_event->set_is_same_document(navigation_handle->IsSameDocument());
-  navigation_event->set_has_user_gesture(navigation_handle->HasUserGesture());
-  navigation_event->set_previous_url(
-      navigation_handle->GetPreviousURL().GetContent());
-  navigation_event->set_was_server_redirect(
-      navigation_handle->WasServerRedirect());
-  navigation_event->set_is_post(navigation_handle->IsPost());
-  navigation_event->set_was_initiated_by_link_click(
-      navigation_handle->WasInitiatedByLinkClick());
-
+  response->mutable_navigation_event()->set_url(gurl.spec());
+  response->mutable_navigation_event()->set_is_for_main_frame(is_in_main_frame);
   current_navigation_throttle_ = throttle;
   client_->EnqueueSend(std::move(response));
 }
diff --git a/chromecast/browser/webview/webview_controller.h b/chromecast/browser/webview/webview_controller.h
index ccf1b4d2d..daa2eda1 100644
--- a/chromecast/browser/webview/webview_controller.h
+++ b/chromecast/browser/webview/webview_controller.h
@@ -53,10 +53,9 @@
   // Close the page. This will cause a stopped response to eventually be sent.
   void ClosePage();
 
-  // Dispatch a navigation request event with the information supplied in the
-  // navigation handle.
   void SendNavigationEvent(WebviewNavigationThrottle* throttle,
-                           content::NavigationHandle* navigation_handle);
+                           const GURL& url,
+                           bool is_in_main_frame);
 
  protected:
   content::WebContents* GetWebContents() override;
diff --git a/chromecast/browser/webview/webview_navigation_throttle.cc b/chromecast/browser/webview/webview_navigation_throttle.cc
index 254159a..1bfaa5c 100644
--- a/chromecast/browser/webview/webview_navigation_throttle.cc
+++ b/chromecast/browser/webview/webview_navigation_throttle.cc
@@ -15,13 +15,15 @@
     content::NavigationHandle* handle,
     WebviewController* controller)
     : NavigationThrottle(handle),
+      url_(handle->GetURL()),
+      is_in_main_frame_(handle->IsInMainFrame()),
       controller_(controller) {}
 
 WebviewNavigationThrottle::~WebviewNavigationThrottle() = default;
 
 content::NavigationThrottle::ThrottleCheckResult
 WebviewNavigationThrottle::WillStartRequest() {
-  controller_->SendNavigationEvent(this, navigation_handle());
+  controller_->SendNavigationEvent(this, url_, is_in_main_frame_);
 
   return content::NavigationThrottle::DEFER;
 }
diff --git a/chromecast/browser/webview/webview_navigation_throttle.h b/chromecast/browser/webview/webview_navigation_throttle.h
index 50cf02b..53d9e7b2 100644
--- a/chromecast/browser/webview/webview_navigation_throttle.h
+++ b/chromecast/browser/webview/webview_navigation_throttle.h
@@ -34,6 +34,8 @@
  private:
   scoped_refptr<base::SequencedTaskRunner> response_task_runner_;
 
+  const GURL url_;
+  bool is_in_main_frame_;
   WebviewController* controller_;
 
   DISALLOW_COPY_AND_ASSIGN(WebviewNavigationThrottle);
diff --git a/chromecast/build/tests/cast_test.gni b/chromecast/build/tests/cast_test.gni
index d62b5f81..dfead10f 100644
--- a/chromecast/build/tests/cast_test.gni
+++ b/chromecast/build/tests/cast_test.gni
@@ -504,8 +504,7 @@
 #
 template("cast_test_deps_archive") {
   assert(defined(invoker.output), "$target_name needs 'output'")
-  assert(defined(invoker.deps_list_path),
-         "$target_name needs 'deps_list_path'")
+  assert(defined(invoker.deps_list_path), "$target_name needs 'deps_list_path'")
 
   deps = invoker.deps
 
@@ -514,7 +513,7 @@
 
     script = "//chromecast/tools/build/package_test_deps.py"
     outputs = [
-      invoker.output
+      invoker.output,
     ]
 
     # Generate a comma separated list of filters.
diff --git a/chromecast/common/extensions_api/BUILD.gn b/chromecast/common/extensions_api/BUILD.gn
index 08dec751b..7469d44 100644
--- a/chromecast/common/extensions_api/BUILD.gn
+++ b/chromecast/common/extensions_api/BUILD.gn
@@ -19,8 +19,8 @@
   "braille_display_private.idl",
   "command_line_private.json",
   "history.json",
-  "identity.idl",
   "i18n.json",
+  "identity.idl",
   "notifications.idl",
   "settings_private.idl",
   "tabs.json",
diff --git a/chromecast/media/cma/backend/audio_decoder_for_mixer.cc b/chromecast/media/cma/backend/audio_decoder_for_mixer.cc
index 592c824..8bd6e85 100644
--- a/chromecast/media/cma/backend/audio_decoder_for_mixer.cc
+++ b/chromecast/media/cma/backend/audio_decoder_for_mixer.cc
@@ -582,6 +582,7 @@
 
 void AudioDecoderForMixer::OnEosPlayed() {
   DCHECK(task_runner_->BelongsToCurrentThread());
+  CheckBufferComplete();
   delegate_->OnEndOfStream();
 }
 
diff --git a/chromecast/media/cma/backend/desktop/BUILD.gn b/chromecast/media/cma/backend/desktop/BUILD.gn
index 8f994d6f..e1b2a73 100644
--- a/chromecast/media/cma/backend/desktop/BUILD.gn
+++ b/chromecast/media/cma/backend/desktop/BUILD.gn
@@ -26,14 +26,12 @@
   ]
   if (enable_video_with_mixed_audio) {
     deps += [
-      "//chromecast/media/cma/backend/alsa:volume_control",
-      "//chromecast/media/cma/backend:null_video",
       "//chromecast/media/cma/backend:for_mixer_audio",
+      "//chromecast/media/cma/backend:null_video",
+      "//chromecast/media/cma/backend/alsa:volume_control",
       "//chromecast/media/cma/backend/video:av_sync_video",
     ]
   } else {
-    sources += [
-      "volume_control_desktop.cc",
-    ]
+    sources += [ "volume_control_desktop.cc" ]
   }
 }
diff --git a/chromecast/media/cma/pipeline/BUILD.gn b/chromecast/media/cma/pipeline/BUILD.gn
index 9e04865..0b3dd86 100644
--- a/chromecast/media/cma/pipeline/BUILD.gn
+++ b/chromecast/media/cma/pipeline/BUILD.gn
@@ -2,9 +2,9 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-import("//chromecast/chromecast.gni")
 import("//build/buildflag_header.gni")
 import("//build/config/chromecast_build.gni")
+import("//chromecast/chromecast.gni")
 
 declare_args() {
   # Set true to use accurate but more expensive method for GetMediaTime().
diff --git a/chromecast/ui/BUILD.gn b/chromecast/ui/BUILD.gn
index 367682c..5540fc3 100644
--- a/chromecast/ui/BUILD.gn
+++ b/chromecast/ui/BUILD.gn
@@ -2,26 +2,78 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+import("//build/config/ui.gni")
+
 import("//chromecast/chromecast.gni")
 import("//components/vector_icons/vector_icons.gni")
 
-cast_source_set("media_control_ui") {
+cast_source_set("public") {
   sources = [
-    "media_control_ui.cc",
-    "media_control_ui.h",
+    "media_overlay.h",
   ]
 
   deps = [
-    ":vector_icons",
     "//base",
-    "//chromecast/base",
-    "//chromecast/graphics",
-    "//chromecast/ui/mojom",
-    "//ui/aura:aura",
-    "//ui/views",
   ]
 }
 
+cast_source_set("aura_components") {
+  sources = [
+    "aura_components.h",
+  ]
+
+  deps = [
+    ":public",
+  ]
+
+  if (use_aura) {
+    sources += [ "aura_components.cc" ]
+
+    deps += [ ":media_overlay" ]
+  } else {
+    sources += [ "aura_components_dummy.cc" ]
+  }
+}
+
+if (use_aura) {
+  cast_source_set("media_control_ui") {
+    sources = [
+      "media_control_ui.cc",
+      "media_control_ui.h",
+    ]
+
+    deps = [
+      ":vector_icons",
+      "//base",
+      "//chromecast/base",
+      "//chromecast/graphics",
+      "//chromecast/ui/mojom",
+      "//ui/aura",
+      "//ui/views",
+    ]
+  }
+
+  cast_source_set("media_overlay") {
+    sources = [
+      "media_overlay_impl.cc",
+      "media_overlay_impl.h",
+    ]
+
+    deps = [
+      ":public",
+      "//base",
+      "//chromecast/app:resources",
+      "//chromecast/base",
+      "//chromecast/graphics",
+      "//chromecast/media/cma/pipeline",
+      "//chromecast/ui/mojom",
+      "//media",
+      "//ui/aura",
+      "//ui/views",
+    ]
+  }
+}
+
 # Rules for generating vector icon source files.
 # Adapted from //components/vector_icons/BUILD.gn
 
diff --git a/chromecast/ui/DEPS b/chromecast/ui/DEPS
index c93cf39..787bc7a 100644
--- a/chromecast/ui/DEPS
+++ b/chromecast/ui/DEPS
@@ -1,7 +1,11 @@
 include_rules = [
+  "+chromecast/app",
   "+chromecast/graphics",
+  "+chromecast/media/cma/pipeline",
+  "+media/base",
   "+mojo/public",
   "+ui/aura",
+  "+ui/base",
   "+ui/gfx",
   "+ui/views",
 ]
diff --git a/chromecast/ui/aura_components.cc b/chromecast/ui/aura_components.cc
new file mode 100644
index 0000000..04cb093a
--- /dev/null
+++ b/chromecast/ui/aura_components.cc
@@ -0,0 +1,16 @@
+// 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 "chromecast/ui/aura_components.h"
+
+#include "chromecast/ui/media_overlay_impl.h"
+
+namespace chromecast {
+
+AuraComponents::AuraComponents(CastWindowManager* cast_window_manager)
+    : media_overlay_(std::make_unique<MediaOverlayImpl>(cast_window_manager)) {}
+
+AuraComponents::~AuraComponents() = default;
+
+}  // namespace chromecast
diff --git a/chromecast/ui/aura_components.h b/chromecast/ui/aura_components.h
new file mode 100644
index 0000000..f618e98
--- /dev/null
+++ b/chromecast/ui/aura_components.h
@@ -0,0 +1,36 @@
+// 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 CHROMECAST_UI_AURA_COMPONENTS_H_
+#define CHROMECAST_UI_AURA_COMPONENTS_H_
+
+#include <memory>
+
+#include "chromecast/ui/media_overlay.h"
+
+namespace chromecast {
+
+class CastWindowManager;
+
+// Collection of Cast platform objects which only have valid implementations on
+// Aura platforms. All getters to this class will return nullptr on non-Aura
+// platforms.
+//
+// This class helps avoid usage of "#if defined(USE_AURA)" macros by using pure
+// virtual interfaces to wrap Aura-specific code. Clients to these interfaces
+// can therefore be written in a platform-agnostic way.
+class AuraComponents {
+ public:
+  explicit AuraComponents(CastWindowManager* cast_window_manager);
+  ~AuraComponents();
+
+  MediaOverlay* media_overlay() const { return media_overlay_.get(); }
+
+ private:
+  std::unique_ptr<MediaOverlay> media_overlay_;
+};
+
+}  // namespace chromecast
+
+#endif  // CHROMECAST_UI_AURA_COMPONENTS_H_
diff --git a/chromecast/ui/aura_components_dummy.cc b/chromecast/ui/aura_components_dummy.cc
new file mode 100644
index 0000000..8c36aaf
--- /dev/null
+++ b/chromecast/ui/aura_components_dummy.cc
@@ -0,0 +1,14 @@
+// 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 "chromecast/ui/aura_components.h"
+
+namespace chromecast {
+
+AuraComponents::AuraComponents(CastWindowManager* cast_window_manager)
+    : media_overlay_(nullptr) {}
+
+AuraComponents::~AuraComponents() = default;
+
+}  // namespace chromecast
diff --git a/chromecast/ui/media_overlay.h b/chromecast/ui/media_overlay.h
new file mode 100644
index 0000000..c855ae89
--- /dev/null
+++ b/chromecast/ui/media_overlay.h
@@ -0,0 +1,36 @@
+// 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 CHROMECAST_UI_MEDIA_OVERLAY_H_
+#define CHROMECAST_UI_MEDIA_OVERLAY_H_
+
+#include "base/strings/string16.h"
+
+namespace chromecast {
+
+// MediaOverlay is responsible for displaying information to the user about
+// media playback, such as the volume level, and notifications about volume
+// control limitations.
+class MediaOverlay {
+ public:
+  class Controller {
+   public:
+    // Notifies the controller that the media is rendering in surround-sound.
+    virtual void SetSurroundSoundInUse(bool in_use) = 0;
+  };
+
+  virtual ~MediaOverlay() = default;
+
+  virtual void SetController(Controller* controller) = 0;
+
+  // Displays a brief toast to the user.
+  virtual void ShowMessage(const base::string16& message) = 0;
+
+  // Shows the volume bar for a given |volume|.
+  virtual void ShowVolumeBar(float volume) = 0;
+};
+
+}  // namespace chromecast
+
+#endif  // CHROMECAST_UI_MEDIA_OVERLAY_H_
diff --git a/chromecast/ui/media_overlay_impl.cc b/chromecast/ui/media_overlay_impl.cc
new file mode 100644
index 0000000..37c39d0
--- /dev/null
+++ b/chromecast/ui/media_overlay_impl.cc
@@ -0,0 +1,217 @@
+// 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 "chromecast/ui/media_overlay_impl.h"
+
+#include <utility>
+
+#include "base/single_thread_task_runner.h"
+#include "base/strings/string_number_conversions.h"
+#include "base/strings/utf_string_conversions.h"
+#include "base/threading/thread_task_runner_handle.h"
+#include "base/time/time.h"
+#include "chromecast/app/grit/shell_resources.h"
+#include "chromecast/graphics/cast_window_manager.h"
+#include "media/base/audio_decoder_config.h"
+#include "ui/aura/window.h"
+#include "ui/base/resource/resource_bundle.h"
+#include "ui/gfx/color_utils.h"
+#include "ui/gfx/image/image_skia.h"
+#include "ui/views/background.h"
+#include "ui/views/border.h"
+#include "ui/views/controls/image_view.h"
+#include "ui/views/controls/label.h"
+#include "ui/views/controls/progress_bar.h"
+#include "ui/views/layout/box_layout.h"
+#include "ui/views/layout/layout_provider.h"
+#include "ui/views/view.h"
+#include "ui/views/widget/widget.h"
+
+namespace chromecast {
+
+namespace {
+
+constexpr SkColor kBackgroundColor = SkColorSetA(SK_ColorBLACK, 200);
+constexpr int kElementSpacing = 16;
+constexpr int kVolumeBarHeight = 16;
+constexpr int kVolumePopupPadding = 16;
+constexpr int kVolumePopupBottomInset = 32;
+constexpr base::TimeDelta kUiHideDelay = base::TimeDelta::FromSeconds(3);
+
+}  // namespace
+
+MediaOverlayImpl::MediaOverlayImpl(CastWindowManager* window_manager)
+    : window_manager_(window_manager),
+      layout_provider_(std::make_unique<views::LayoutProvider>()),
+      ui_task_runner_(base::ThreadTaskRunnerHandle::Get()),
+      controller_(nullptr),
+      volume_icon_image_(ui::ResourceBundle::GetSharedInstance().GetImageNamed(
+          IDR_CAST_SHELL_SPEAKER_ICON)),
+      toast_font_list_(gfx::FontList("Helvetica, 28px")),
+      weak_factory_(this) {
+  DCHECK(window_manager_);
+
+  gfx::Rect window_bounds = window_manager_->GetRootWindow()->bounds();
+  auto container_view = std::make_unique<views::View>();
+  auto layout = std::make_unique<views::BoxLayout>(
+      views::BoxLayout::Orientation::kVertical,
+      gfx::Insets(0, window_bounds.width() / 4, kVolumePopupBottomInset,
+                  window_bounds.width() / 4),
+      0);
+  layout->set_main_axis_alignment(views::BoxLayout::MainAxisAlignment::kEnd);
+  layout->set_cross_axis_alignment(
+      views::BoxLayout::CrossAxisAlignment::kStretch);
+  container_view->SetLayoutManager(std::move(layout));
+
+  AddToast(container_view.get());
+  AddVolumeBar(container_view.get());
+
+  overlay_widget_ =
+      CreateOverlayWidget(window_bounds, std::move(container_view));
+  overlay_widget_->Show();
+  volume_panel_->SetVisible(false);
+  toast_label_->SetVisible(false);
+
+  media::MediaPipelineObserver::AddObserver(this);
+}
+
+MediaOverlayImpl::~MediaOverlayImpl() {
+  media::MediaPipelineObserver::RemoveObserver(this);
+}
+
+void MediaOverlayImpl::AddVolumeBar(views::View* container) {
+  std::unique_ptr<views::ImageView> volume_icon =
+      std::make_unique<views::ImageView>();
+  volume_icon->SetImage(volume_icon_image_.ToImageSkia());
+  volume_icon->SetImageSize(gfx::Size(25, 19));
+
+  volume_bar_ = new views::ProgressBar(kVolumeBarHeight, false);
+  volume_bar_->SetBackgroundColor(kBackgroundColor);
+
+  volume_panel_ = new views::View();
+  auto layout = std::make_unique<views::BoxLayout>(
+      views::BoxLayout::Orientation::kHorizontal,
+      gfx::Insets(kVolumePopupPadding), kElementSpacing);
+  auto* layout_ptr = volume_panel_->SetLayoutManager(std::move(layout));
+  layout_ptr->set_cross_axis_alignment(
+      views::BoxLayout::CrossAxisAlignment::kCenter);
+  volume_panel_->SetBackground(views::CreateSolidBackground(kBackgroundColor));
+  volume_panel_->AddChildView(volume_icon.release());
+  volume_panel_->AddChildView(volume_bar_);
+  layout_ptr->SetFlexForView(volume_bar_, 1);
+
+  container->AddChildView(volume_panel_);
+}
+
+void MediaOverlayImpl::AddToast(views::View* container) {
+  toast_label_ = new views::Label(base::UTF8ToUTF16(""));
+  toast_label_->SetFontList(toast_font_list_);
+  toast_label_->SetHorizontalAlignment(gfx::HorizontalAlignment::ALIGN_CENTER);
+
+  // Background color of the label is set to auto-compute the best
+  // constrasting color for the displayed text. If the background color is not
+  // opaque, we need to take into account the color underneath, which in worst
+  // case scenario will be white
+  toast_label_->SetBackgroundColor(
+      color_utils::GetResultingPaintColor(kBackgroundColor, SK_ColorWHITE));
+  toast_label_->SetBackground(views::CreateSolidBackground(kBackgroundColor));
+  toast_label_->SetBorder(
+      views::CreateEmptyBorder(gfx::Insets(kVolumePopupPadding)));
+  toast_label_->SetMultiLine(true);
+
+  container->AddChildView(toast_label_);
+}
+
+void MediaOverlayImpl::SetController(Controller* controller) {
+  controller_ = controller;
+  NotifyController();
+}
+
+void MediaOverlayImpl::ShowMessage(const base::string16& message) {
+  if (!ui_task_runner_->BelongsToCurrentThread()) {
+    ui_task_runner_->PostTask(
+        FROM_HERE, base::BindOnce(&MediaOverlayImpl::ShowMessage,
+                                  weak_factory_.GetWeakPtr(), message));
+    return;
+  }
+  ShowToast(message);
+}
+
+void MediaOverlayImpl::ShowVolumeBar(float volume) {
+  if (!ui_task_runner_->BelongsToCurrentThread()) {
+    ui_task_runner_->PostTask(
+        FROM_HERE, base::BindOnce(&MediaOverlayImpl::ShowVolumeBar,
+                                  weak_factory_.GetWeakPtr(), volume));
+    return;
+  }
+
+  volume_bar_->SetValue(volume);
+  volume_panel_->SetVisible(true);
+  overlay_widget_->GetContentsView()->Layout();
+
+  volume_widget_timer_.Start(FROM_HERE, kUiHideDelay, this,
+                             &MediaOverlayImpl::HideVolumeWidget);
+}
+
+void MediaOverlayImpl::HideVolumeWidget() {
+  volume_panel_->SetVisible(false);
+}
+
+void MediaOverlayImpl::ShowToast(const base::string16& text) {
+  toast_label_->SetText(text);
+  toast_label_->SizeToFit(volume_panel_->bounds().width());
+  toast_label_->SetVisible(true);
+  overlay_widget_->GetContentsView()->Layout();
+
+  toast_visible_timer_.Start(FROM_HERE, kUiHideDelay, this,
+                             &MediaOverlayImpl::HideToast);
+}
+
+void MediaOverlayImpl::HideToast() {
+  toast_label_->SetVisible(false);
+}
+
+std::unique_ptr<views::Widget> MediaOverlayImpl::CreateOverlayWidget(
+    const gfx::Rect& bounds,
+    std::unique_ptr<views::View> content_view) {
+  std::unique_ptr<views::Widget> widget = std::make_unique<views::Widget>();
+
+  views::Widget::InitParams params(views::Widget::InitParams::TYPE_POPUP);
+  params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+  params.context = window_manager_->GetRootWindow();
+  params.opacity = views::Widget::InitParams::WindowOpacity::kTranslucent;
+  params.bounds = bounds;
+  params.accept_events = false;
+
+  widget->Init(std::move(params));
+  widget->SetContentsView(content_view.release());
+  window_manager_->SetZOrder(widget->GetNativeView(), mojom::ZOrder::VOLUME);
+
+  return widget;
+}
+
+void MediaOverlayImpl::OnAudioPipelineInitialized(
+    media::MediaPipelineImpl* pipeline,
+    const ::media::AudioDecoderConfig& config) {
+  if (config.codec() == ::media::AudioCodec::kCodecAC3 ||
+      config.codec() == ::media::AudioCodec::kCodecEAC3 ||
+      config.codec() == ::media::AudioCodec::kCodecMpegHAudio) {
+    passthrough_pipelines_.insert(pipeline);
+  }
+
+  NotifyController();
+}
+
+void MediaOverlayImpl::OnPipelineDestroyed(media::MediaPipelineImpl* pipeline) {
+  passthrough_pipelines_.erase(pipeline);
+  NotifyController();
+}
+
+void MediaOverlayImpl::NotifyController() {
+  if (!controller_)
+    return;
+  controller_->SetSurroundSoundInUse(!passthrough_pipelines_.empty());
+}
+
+}  // namespace chromecast
diff --git a/chromecast/ui/media_overlay_impl.h b/chromecast/ui/media_overlay_impl.h
new file mode 100644
index 0000000..7579ad95
--- /dev/null
+++ b/chromecast/ui/media_overlay_impl.h
@@ -0,0 +1,92 @@
+// 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 CHROMECAST_UI_MEDIA_OVERLAY_IMPL_H_
+#define CHROMECAST_UI_MEDIA_OVERLAY_IMPL_H_
+
+#include <memory>
+
+#include "base/containers/flat_set.h"
+#include "base/memory/scoped_refptr.h"
+#include "base/memory/weak_ptr.h"
+#include "base/single_thread_task_runner.h"
+#include "base/strings/string16.h"
+#include "base/timer/timer.h"
+#include "chromecast/graphics/cast_window_manager.h"
+#include "chromecast/media/cma/pipeline/media_pipeline_observer.h"
+#include "chromecast/ui/media_overlay.h"
+#include "ui/gfx/font_list.h"
+#include "ui/gfx/geometry/rect.h"
+#include "ui/gfx/image/image.h"
+
+namespace views {
+class Label;
+class LayoutProvider;
+class ProgressBar;
+class View;
+class Widget;
+}  // namespace views
+
+namespace chromecast {
+
+class CastWindowManager;
+
+class MediaOverlayImpl : public MediaOverlay,
+                         public media::MediaPipelineObserver {
+ public:
+  explicit MediaOverlayImpl(CastWindowManager* window_manager);
+  ~MediaOverlayImpl() override;
+
+  MediaOverlayImpl(const MediaOverlayImpl&) = delete;
+  MediaOverlayImpl& operator=(const MediaOverlayImpl&) = delete;
+
+  // MediaOverlay implementation:
+  void SetController(Controller* controller) override;
+  void ShowMessage(const base::string16& message) override;
+  void ShowVolumeBar(float volume) override;
+
+  // media::MediaPipelineObserver implementation
+  void OnAudioPipelineInitialized(
+      media::MediaPipelineImpl* pipeline,
+      const ::media::AudioDecoderConfig& config) override;
+  void OnPipelineDestroyed(media::MediaPipelineImpl* pipeline) override;
+
+ private:
+  void NotifyController();
+
+  void AddVolumeBar(views::View* container);
+  void AddToast(views::View* container);
+
+  void HideVolumeWidget();
+
+  void ShowToast(const base::string16& text);
+  void HideToast();
+
+  std::unique_ptr<views::Widget> CreateOverlayWidget(
+      const gfx::Rect& bounds,
+      std::unique_ptr<views::View> content_view);
+
+  CastWindowManager* const window_manager_;
+  const std::unique_ptr<views::LayoutProvider> layout_provider_;
+  const scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_;
+  base::flat_set<media::MediaPipelineImpl*> passthrough_pipelines_;
+  Controller* controller_;
+
+  views::View* volume_panel_;
+  views::ProgressBar* volume_bar_;
+  base::OneShotTimer volume_widget_timer_;
+  const gfx::Image volume_icon_image_;
+
+  views::Label* toast_label_;
+  base::OneShotTimer toast_visible_timer_;
+  const gfx::FontList toast_font_list_;
+
+  std::unique_ptr<views::Widget> overlay_widget_;
+
+  base::WeakPtrFactory<MediaOverlayImpl> weak_factory_;
+};
+
+}  // namespace chromecast
+
+#endif  // CHROMECAST_UI_MEDIA_OVERLAY_IMPL_H_
diff --git a/chromeos/components/help_app_ui/BUILD.gn b/chromeos/components/help_app_ui/BUILD.gn
index 938d09ed7..9ae3e2e 100644
--- a/chromeos/components/help_app_ui/BUILD.gn
+++ b/chromeos/components/help_app_ui/BUILD.gn
@@ -21,6 +21,7 @@
     "//chromeos/resources:help_app_bundle_resources",
     "//chromeos/resources:help_app_resources",
     "//content/public/browser",
+    "//ui/resources:webui_resources_grd_grit",
     "//ui/webui",
   ]
 }
diff --git a/chromeos/components/help_app_ui/DEPS b/chromeos/components/help_app_ui/DEPS
index 5ecfaaea..8b2618ea 100644
--- a/chromeos/components/help_app_ui/DEPS
+++ b/chromeos/components/help_app_ui/DEPS
@@ -2,5 +2,6 @@
   # Do not add chrome here (use a delegate instead).
   "+chromeos/grit/chromeos_help_app_resources.h",
   "+content/public/browser",
+  "+ui/resources/grit/webui_resources.h",
   "+ui/webui",
 ]
diff --git a/chromeos/components/help_app_ui/help_app_guest_ui.cc b/chromeos/components/help_app_ui/help_app_guest_ui.cc
index 94643c2..21b309d 100644
--- a/chromeos/components/help_app_ui/help_app_guest_ui.cc
+++ b/chromeos/components/help_app_ui/help_app_guest_ui.cc
@@ -4,11 +4,13 @@
 
 #include "chromeos/components/help_app_ui/help_app_guest_ui.h"
 
+#include "base/system/sys_info.h"
 #include "chromeos/components/help_app_ui/url_constants.h"
 #include "chromeos/grit/chromeos_help_app_bundle_resources.h"
 #include "chromeos/grit/chromeos_help_app_bundle_resources_map.h"
 #include "chromeos/grit/chromeos_help_app_resources.h"
 #include "content/public/browser/web_ui_data_source.h"
+#include "ui/resources/grit/webui_resources.h"
 
 namespace chromeos {
 
@@ -18,6 +20,7 @@
       content::WebUIDataSource::Create(kChromeUIHelpAppGuestHost);
   source->AddResourcePath("app.html", IDR_HELP_APP_APP_HTML);
   source->AddResourcePath("bootstrap.js", IDR_HELP_APP_BOOTSTRAP_JS);
+  source->AddResourcePath("load_time_data.js", IDR_WEBUI_JS_LOAD_TIME_DATA);
 
   // Add all resources from chromeos_media_app_bundle.pak.
   for (size_t i = 0; i < kChromeosHelpAppBundleResourcesSize; i++) {
@@ -25,6 +28,10 @@
                             kChromeosHelpAppBundleResources[i].value);
   }
 
+  // Add strings that can be pulled in.
+  source->AddString("boardName", base::SysInfo::GetLsbReleaseBoard());
+  source->UseStringsJs();
+
   // TODO(crbug.com/1023700): Better solution before launch.
   source->DisableDenyXFrameOptions();
   return source;
diff --git a/chromeos/components/help_app_ui/resources/app.html b/chromeos/components/help_app_ui/resources/app.html
index 8fea815..93259ad 100644
--- a/chromeos/components/help_app_ui/resources/app.html
+++ b/chromeos/components/help_app_ui/resources/app.html
@@ -8,4 +8,6 @@
     margin: 0;
   }
 </style>
+<script src="/load_time_data.js"></script>
+<script src="/strings.js"></script>
 <script src="/bootstrap.js"></script>
diff --git a/chromeos/components/power/dark_resume_controller.cc b/chromeos/components/power/dark_resume_controller.cc
index e07b0dd..f53fea8b 100644
--- a/chromeos/components/power/dark_resume_controller.cc
+++ b/chromeos/components/power/dark_resume_controller.cc
@@ -6,7 +6,6 @@
 #include <utility>
 
 #include "mojo/public/cpp/bindings/pending_remote.h"
-#include "services/device/public/mojom/constants.mojom.h"
 #include "services/device/public/mojom/wake_lock_provider.mojom.h"
 
 namespace chromeos {
diff --git a/chromeos/components/quick_answers/BUILD.gn b/chromeos/components/quick_answers/BUILD.gn
index 3a81280..3160dc088 100644
--- a/chromeos/components/quick_answers/BUILD.gn
+++ b/chromeos/components/quick_answers/BUILD.gn
@@ -19,6 +19,8 @@
     "search_result_parsers/translation_result_parser.h",
     "search_result_parsers/unit_conversion_result_parser.cc",
     "search_result_parsers/unit_conversion_result_parser.h",
+    "utils/quick_answers_metrics.cc",
+    "utils/quick_answers_metrics.h",
   ]
   deps = [
     "//ash/public/cpp",
diff --git a/chromeos/components/quick_answers/quick_answers_model.h b/chromeos/components/quick_answers/quick_answers_model.h
index 71deb28..d4291a4 100644
--- a/chromeos/components/quick_answers/quick_answers_model.h
+++ b/chromeos/components/quick_answers/quick_answers_model.h
@@ -10,16 +10,31 @@
 namespace chromeos {
 namespace quick_answers {
 
+// The status of loading quick answers.
+// These values are persisted to logs. Entries should not be renumbered and
+// numeric values should never be reused.
+// Note: Enums labels are at |QuickAnswersLoadStatus|.
+enum class LoadStatus {
+  kSuccess = 0,
+  kNetworkError = 1,
+  kNoResult = 2,
+  kMaxValue = kNoResult,
+};
+
 // The type of the result. Valid values are map to the search result types.
 // Please see go/1ns-doc for more detail.
+// These values are persisted to logs. Entries should not be renumbered and
+// numeric values should never be reused.
+// Note: Enums labels are at |QuickAnswersResultType|.
 enum class ResultType {
   kDefinitionResult = 5493,
   kTranslationResult = 6613,
-  kUnitConvertionResult = 13668,
+  kUnitConversionResult = 13668,
 };
 
 // Structure to describe a quick answer.
 struct QuickAnswer {
+  ResultType result_type;
   std::string primary_answer;
   std::string secondary_answer;
 };
diff --git a/chromeos/components/quick_answers/search_result_loader.cc b/chromeos/components/quick_answers/search_result_loader.cc
index 9bc16a1b5..e56ace1 100644
--- a/chromeos/components/quick_answers/search_result_loader.cc
+++ b/chromeos/components/quick_answers/search_result_loader.cc
@@ -8,6 +8,7 @@
 
 #include "base/json/json_writer.h"
 #include "chromeos/components/quick_answers/quick_answers_model.h"
+#include "chromeos/components/quick_answers/utils/quick_answers_metrics.h"
 #include "net/base/escape.h"
 #include "net/base/url_util.h"
 #include "services/network/public/cpp/resource_request.h"
@@ -119,6 +120,7 @@
   loader_ = network::SimpleURLLoader::Create(std::move(resource_request),
                                              kNetworkTrafficAnnotationTag);
 
+  fetch_start_time_ = base::TimeTicks::Now();
   loader_->DownloadToStringOfUnboundedSizeUntilCrashAndDie(
       network_loader_factory_,
       base::BindOnce(&SearchResultLoader::OnSimpleURLLoaderComplete,
@@ -127,16 +129,33 @@
 
 void SearchResultLoader::OnSimpleURLLoaderComplete(
     std::unique_ptr<std::string> response_body) {
+  base::TimeDelta duration = base::TimeTicks::Now() - fetch_start_time_;
+
   if (!response_body || loader_->NetError() != net::OK ||
       !loader_->ResponseInfo() || !loader_->ResponseInfo()->headers) {
+    RecordLoadingStatus(LoadStatus::kNetworkError, duration);
     std::move(complete_callback_).Run(/*quick_answer=*/nullptr);
     return;
   }
 
   search_response_parser_ =
-      std::make_unique<SearchResponseParser>(std::move(complete_callback_));
+      std::make_unique<SearchResponseParser>(base::BindOnce(
+          &SearchResultLoader::OnResultParserComplete, base::Unretained(this)));
   search_response_parser_->ProcessResponse(std::move(response_body));
 }
 
+void SearchResultLoader::OnResultParserComplete(
+    std::unique_ptr<QuickAnswer> quick_answer) {
+  // Record quick answer result.
+  base::TimeDelta duration = base::TimeTicks::Now() - fetch_start_time_;
+  if (!quick_answer) {
+    RecordLoadingStatus(LoadStatus::kNoResult, duration);
+  } else {
+    RecordLoadingStatus(LoadStatus::kSuccess, duration);
+    RecordResult(quick_answer->result_type, duration);
+  }
+  std::move(complete_callback_).Run(std::move(quick_answer));
+}
+
 }  // namespace quick_answers
 }  // namespace chromeos
diff --git a/chromeos/components/quick_answers/search_result_loader.h b/chromeos/components/quick_answers/search_result_loader.h
index a0609590..c19e5ec 100644
--- a/chromeos/components/quick_answers/search_result_loader.h
+++ b/chromeos/components/quick_answers/search_result_loader.h
@@ -45,11 +45,15 @@
 
  private:
   void OnSimpleURLLoaderComplete(std::unique_ptr<std::string> response_body);
+  void OnResultParserComplete(std::unique_ptr<QuickAnswer> quick_answer);
 
   std::unique_ptr<SearchResponseParser> search_response_parser_;
   network::mojom::URLLoaderFactory* network_loader_factory_;
   std::unique_ptr<network::SimpleURLLoader> loader_;
   CompleteCallback complete_callback_;
+
+  // Time when the query is issued.
+  base::TimeTicks fetch_start_time_;
 };
 
 }  // namespace quick_answers
diff --git a/chromeos/components/quick_answers/search_result_parsers/definition_result_parser.cc b/chromeos/components/quick_answers/search_result_parsers/definition_result_parser.cc
index cc23edc..39676cc 100644
--- a/chromeos/components/quick_answers/search_result_parsers/definition_result_parser.cc
+++ b/chromeos/components/quick_answers/search_result_parsers/definition_result_parser.cc
@@ -54,6 +54,7 @@
     return false;
   }
 
+  quick_answer->result_type = ResultType::kDefinitionResult;
   quick_answer->primary_answer = *definition;
   quick_answer->secondary_answer = base::StringPrintf(
       kPhoneticsResultTemplate, query_term->c_str(), phonetics->c_str());
diff --git a/chromeos/components/quick_answers/search_result_parsers/definition_result_parser_unittest.cc b/chromeos/components/quick_answers/search_result_parsers/definition_result_parser_unittest.cc
index 81ccb3d3..ab94790 100644
--- a/chromeos/components/quick_answers/search_result_parsers/definition_result_parser_unittest.cc
+++ b/chromeos/components/quick_answers/search_result_parsers/definition_result_parser_unittest.cc
@@ -78,6 +78,7 @@
                             "incapable of being fully explored or understood.");
   QuickAnswer quick_answer;
   EXPECT_TRUE(parser_->Parse(&result, &quick_answer));
+  EXPECT_EQ(ResultType::kDefinitionResult, quick_answer.result_type);
   EXPECT_EQ("incapable of being fully explored or understood.",
             quick_answer.primary_answer);
   EXPECT_EQ("unfathomable · /ˌənˈfaT͟Həməb(ə)/", quick_answer.secondary_answer);
diff --git a/chromeos/components/quick_answers/search_result_parsers/result_parser.cc b/chromeos/components/quick_answers/search_result_parsers/result_parser.cc
index 8f5eb65..a25ac9e 100644
--- a/chromeos/components/quick_answers/search_result_parsers/result_parser.cc
+++ b/chromeos/components/quick_answers/search_result_parsers/result_parser.cc
@@ -42,7 +42,7 @@
       return std::make_unique<DefinitionResultParser>();
     case ResultType::kTranslationResult:
       return std::make_unique<TranslationResultParser>();
-    case ResultType::kUnitConvertionResult:
+    case ResultType::kUnitConversionResult:
       return std::make_unique<UnitConversionResultParser>();
       // TODO(llin): Add other result parsers.
   }
diff --git a/chromeos/components/quick_answers/search_result_parsers/result_parser_unittest.cc b/chromeos/components/quick_answers/search_result_parsers/result_parser_unittest.cc
index cba208c..bb46f638 100644
--- a/chromeos/components/quick_answers/search_result_parsers/result_parser_unittest.cc
+++ b/chromeos/components/quick_answers/search_result_parsers/result_parser_unittest.cc
@@ -27,7 +27,7 @@
 
 TEST_F(ResultParserFactoryTest, SupportedType) {
   EXPECT_NE(nullptr, parser_factory_->Create(
-                         static_cast<int>(ResultType::kUnitConvertionResult)));
+                         static_cast<int>(ResultType::kUnitConversionResult)));
 }
 
 TEST_F(ResultParserFactoryTest, UnsupportedType) {
diff --git a/chromeos/components/quick_answers/search_result_parsers/translation_result_parser.cc b/chromeos/components/quick_answers/search_result_parsers/translation_result_parser.cc
index ef90a6ec..0b52210 100644
--- a/chromeos/components/quick_answers/search_result_parsers/translation_result_parser.cc
+++ b/chromeos/components/quick_answers/search_result_parsers/translation_result_parser.cc
@@ -48,6 +48,7 @@
     return false;
   }
 
+  quick_answer->result_type = ResultType::kTranslationResult;
   quick_answer->primary_answer = *translated_text;
   quick_answer->secondary_answer =
       base::StringPrintf(kSourceTextTemplate, source_text->c_str(),
diff --git a/chromeos/components/quick_answers/search_result_parsers/translation_result_parser_unittest.cc b/chromeos/components/quick_answers/search_result_parsers/translation_result_parser_unittest.cc
index aa27d29..f7e679a 100644
--- a/chromeos/components/quick_answers/search_result_parsers/translation_result_parser_unittest.cc
+++ b/chromeos/components/quick_answers/search_result_parsers/translation_result_parser_unittest.cc
@@ -41,6 +41,7 @@
   QuickAnswer quick_answer;
 
   EXPECT_TRUE(parser_->Parse(&result, &quick_answer));
+  EXPECT_EQ(ResultType::kTranslationResult, quick_answer.result_type);
   EXPECT_EQ("ox\\xC3\\xADgeno", quick_answer.primary_answer);
   EXPECT_EQ("oxygen (English)", quick_answer.secondary_answer);
 }
diff --git a/chromeos/components/quick_answers/search_result_parsers/unit_conversion_result_parser.cc b/chromeos/components/quick_answers/search_result_parsers/unit_conversion_result_parser.cc
index ef4eadd2..09e8ca9 100644
--- a/chromeos/components/quick_answers/search_result_parsers/unit_conversion_result_parser.cc
+++ b/chromeos/components/quick_answers/search_result_parsers/unit_conversion_result_parser.cc
@@ -29,6 +29,7 @@
     return false;
   }
 
+  quick_answer->result_type = ResultType::kUnitConversionResult;
   quick_answer->primary_answer = *dest;
   return true;
 }
diff --git a/chromeos/components/quick_answers/search_result_parsers/unit_conversion_result_parser_unittest.cc b/chromeos/components/quick_answers/search_result_parsers/unit_conversion_result_parser_unittest.cc
index 9d45af9e..bde0af79 100644
--- a/chromeos/components/quick_answers/search_result_parsers/unit_conversion_result_parser_unittest.cc
+++ b/chromeos/components/quick_answers/search_result_parsers/unit_conversion_result_parser_unittest.cc
@@ -40,6 +40,7 @@
   QuickAnswer quick_answer;
 
   EXPECT_TRUE(parser_->Parse(&result, &quick_answer));
+  EXPECT_EQ(ResultType::kUnitConversionResult, quick_answer.result_type);
   EXPECT_EQ("9.84252 inch", quick_answer.primary_answer);
   EXPECT_TRUE(quick_answer.secondary_answer.empty());
 }
diff --git a/chromeos/components/quick_answers/utils/quick_answers_metrics.cc b/chromeos/components/quick_answers/utils/quick_answers_metrics.cc
new file mode 100644
index 0000000..bb68f0e2
--- /dev/null
+++ b/chromeos/components/quick_answers/utils/quick_answers_metrics.cc
@@ -0,0 +1,68 @@
+// 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 "chromeos/components/quick_answers/utils/quick_answers_metrics.h"
+
+#include "base/metrics/histogram_functions.h"
+#include "base/strings/stringprintf.h"
+#include "base/time/time.h"
+
+namespace chromeos {
+namespace quick_answers {
+
+namespace {
+const char kQuickAnswerResult[] = "QuickAnswers.Result";
+const char kQuickAnswerLoadingStatus[] = "QuickAnswers.Loading.Status";
+const char kQuickAnswerLoadingDuration[] = "QuickAnswers.Loading.Duration";
+const char kDurationSuffix[] = ".Duration";
+
+std::string ResultTypeToString(ResultType result_type) {
+  switch (result_type) {
+    case ResultType::kDefinitionResult:
+      return ".Definition";
+    case ResultType::kTranslationResult:
+      return ".Translation";
+    case ResultType::kUnitConversionResult:
+      return ".UnitConversion";
+    default:
+      NOTREACHED() << "Invalid ResultType.";
+      return ".Unknown";
+  }
+}
+
+void RecordTypeAndDuration(const std::string& prefix,
+                           ResultType result_type,
+                           const base::TimeDelta duration,
+                           bool is_medium_bucketization) {
+  // Record by result type.
+  base::UmaHistogramSparse(prefix, static_cast<int>(result_type));
+
+  // Record sliced by duration.
+  const std::string duration_histogram = prefix + kDurationSuffix;
+  if (is_medium_bucketization) {
+    base::UmaHistogramMediumTimes(duration_histogram, duration);
+  } else {
+    base::UmaHistogramTimes(duration_histogram, duration);
+  }
+
+  // Record sliced by duration and result type.
+  const std::string result_type_histogram_name =
+      duration_histogram + ResultTypeToString(result_type);
+  base::UmaHistogramMediumTimes(result_type_histogram_name.c_str(), duration);
+}
+
+}  // namespace
+
+void RecordResult(ResultType result_type, const base::TimeDelta duration) {
+  RecordTypeAndDuration(kQuickAnswerResult, result_type, duration,
+                        /*is_medium_bucketization=*/false);
+}
+
+void RecordLoadingStatus(LoadStatus status, const base::TimeDelta duration) {
+  base::UmaHistogramEnumeration(kQuickAnswerLoadingStatus, status);
+  base::UmaHistogramTimes(kQuickAnswerLoadingDuration, duration);
+}
+
+}  // namespace quick_answers
+}  // namespace chromeos
\ No newline at end of file
diff --git a/chromeos/components/quick_answers/utils/quick_answers_metrics.h b/chromeos/components/quick_answers/utils/quick_answers_metrics.h
new file mode 100644
index 0000000..fb066ab
--- /dev/null
+++ b/chromeos/components/quick_answers/utils/quick_answers_metrics.h
@@ -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.
+
+#ifndef CHROMEOS_COMPONENTS_QUICK_ANSWERS_UTILS_QUICK_ANSWERS_METRICS_H_
+#define CHROMEOS_COMPONENTS_QUICK_ANSWERS_UTILS_QUICK_ANSWERS_METRICS_H_
+
+#include "chromeos/components/quick_answers/quick_answers_model.h"
+
+namespace base {
+
+class TimeDelta;
+
+}  // namespace base
+
+namespace chromeos {
+namespace quick_answers {
+
+// Record the status of loading quick answers with status and duration.
+void RecordLoadingStatus(LoadStatus status, const base::TimeDelta duration);
+
+// Record loading result with result type and network latency.
+void RecordResult(ResultType result_type, const base::TimeDelta duration);
+
+}  // namespace quick_answers
+}  // namespace chromeos
+
+#endif  // CHROMEOS_COMPONENTS_QUICK_ANSWERS_UTILS_QUICK_ANSWERS_METRICS_H_
diff --git a/chromeos/constants/chromeos_features.cc b/chromeos/constants/chromeos_features.cc
index 2fa8ac9..bc444c5 100644
--- a/chromeos/constants/chromeos_features.cc
+++ b/chromeos/constants/chromeos_features.cc
@@ -191,6 +191,10 @@
 // ChromeOS Media App. https://crbug.com/996088.
 const base::Feature kMediaApp{"MediaApp", base::FEATURE_DISABLED_BY_DEFAULT};
 
+// Enable or disable native typing for rule-based input methods.
+const base::Feature kNativeRuleBasedTyping{"NativeRuleBasedTyping",
+                                           base::FEATURE_DISABLED_BY_DEFAULT};
+
 // Controls whether to enable the Parental Controls section of settings.
 const base::Feature kParentalControlsSettings{
     "ChromeOSParentalControlsSettings", base::FEATURE_ENABLED_BY_DEFAULT};
diff --git a/chromeos/constants/chromeos_features.h b/chromeos/constants/chromeos_features.h
index ab11b59d..92d5160 100644
--- a/chromeos/constants/chromeos_features.h
+++ b/chromeos/constants/chromeos_features.h
@@ -90,6 +90,8 @@
 extern const base::Feature kInstantTethering;
 COMPONENT_EXPORT(CHROMEOS_CONSTANTS) extern const base::Feature kMediaApp;
 COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
+extern const base::Feature kNativeRuleBasedTyping;
+COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
 extern const base::Feature kParentalControlsSettings;
 COMPONENT_EXPORT(CHROMEOS_CONSTANTS) extern const base::Feature kQuickAnswers;
 COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
diff --git a/chromeos/dbus/blocking_method_caller_unittest.cc b/chromeos/dbus/blocking_method_caller_unittest.cc
index 12c709b..cdb4df45 100644
--- a/chromeos/dbus/blocking_method_caller_unittest.cc
+++ b/chromeos/dbus/blocking_method_caller_unittest.cc
@@ -11,7 +11,7 @@
 #include "base/callback.h"
 #include "base/logging.h"
 #include "base/memory/ref_counted.h"
-#include "base/task_runner.h"
+#include "base/single_thread_task_runner.h"
 #include "dbus/message.h"
 #include "dbus/mock_bus.h"
 #include "dbus/mock_object_proxy.h"
@@ -27,14 +27,20 @@
 
 namespace {
 
-class FakeTaskRunner : public base::TaskRunner {
+class FakeTaskRunner : public base::SingleThreadTaskRunner {
  public:
+  // base::SingleThreadTaskRunner:
   bool PostDelayedTask(const base::Location& from_here,
                        base::OnceClosure task,
                        base::TimeDelta delay) override {
     std::move(task).Run();
     return true;
   }
+  bool PostNonNestableDelayedTask(const base::Location& from_here,
+                                  base::OnceClosure task,
+                                  base::TimeDelta delay) override {
+    return PostDelayedTask(from_here, std::move(task), delay);
+  }
   bool RunsTasksInCurrentSequence() const override { return true; }
 
  protected:
diff --git a/chromeos/login/auth/cryptohome_authenticator.cc b/chromeos/login/auth/cryptohome_authenticator.cc
index bbbd32c..de45577 100644
--- a/chromeos/login/auth/cryptohome_authenticator.cc
+++ b/chromeos/login/auth/cryptohome_authenticator.cc
@@ -579,10 +579,10 @@
 }  // namespace
 
 CryptohomeAuthenticator::CryptohomeAuthenticator(
-    scoped_refptr<base::TaskRunner> task_runner,
+    scoped_refptr<base::SequencedTaskRunner> task_runner,
     AuthStatusConsumer* consumer)
     : Authenticator(consumer),
-      task_runner_(task_runner),
+      task_runner_(std::move(task_runner)),
       migrate_attempted_(false),
       remove_attempted_(false),
       resync_attempted_(false),
diff --git a/chromeos/login/auth/cryptohome_authenticator.h b/chromeos/login/auth/cryptohome_authenticator.h
index be1d9f1a..8fc7b654 100644
--- a/chromeos/login/auth/cryptohome_authenticator.h
+++ b/chromeos/login/auth/cryptohome_authenticator.h
@@ -13,8 +13,8 @@
 #include "base/gtest_prod_util.h"
 #include "base/macros.h"
 #include "base/optional.h"
+#include "base/sequenced_task_runner.h"
 #include "base/synchronization/lock.h"
-#include "base/task_runner.h"
 #include "chromeos/login/auth/auth_attempt_state.h"
 #include "chromeos/login/auth/auth_attempt_state_resolver.h"
 #include "chromeos/login/auth/authenticator.h"
@@ -102,7 +102,7 @@
     OFFLINE_NO_MOUNT = 26,  // Offline login failed due to missing cryptohome.
   };
 
-  CryptohomeAuthenticator(scoped_refptr<base::TaskRunner> task_runner,
+  CryptohomeAuthenticator(scoped_refptr<base::SequencedTaskRunner> task_runner,
                           AuthStatusConsumer* consumer);
 
   // Authenticator overrides.
@@ -266,7 +266,7 @@
   // an external authentication provider (i.e. GAIA extension).
   void ResolveLoginCompletionStatus();
 
-  scoped_refptr<base::TaskRunner> task_runner_;
+  scoped_refptr<base::SequencedTaskRunner> task_runner_;
 
   std::unique_ptr<AuthAttemptState> current_state_;
   bool migrate_attempted_;
diff --git a/chromeos/login/auth/login_performer.cc b/chromeos/login/auth/login_performer.cc
index bc1865f..d0ee3c98 100644
--- a/chromeos/login/auth/login_performer.cc
+++ b/chromeos/login/auth/login_performer.cc
@@ -29,10 +29,11 @@
 
 namespace chromeos {
 
-LoginPerformer::LoginPerformer(scoped_refptr<base::TaskRunner> task_runner,
-                               Delegate* delegate)
+LoginPerformer::LoginPerformer(
+    scoped_refptr<base::SequencedTaskRunner> task_runner,
+    Delegate* delegate)
     : delegate_(delegate),
-      task_runner_(task_runner),
+      task_runner_(std::move(task_runner)),
       last_login_failure_(AuthFailure::AuthFailureNone()) {}
 
 LoginPerformer::~LoginPerformer() {
diff --git a/chromeos/login/auth/login_performer.h b/chromeos/login/auth/login_performer.h
index 2334969..034b66ce 100644
--- a/chromeos/login/auth/login_performer.h
+++ b/chromeos/login/auth/login_performer.h
@@ -22,7 +22,7 @@
 class AccountId;
 
 namespace base {
-class TaskRunner;
+class SequencedTaskRunner;
 }
 
 namespace network {
@@ -63,7 +63,7 @@
     virtual void SetAuthFlowOffline(bool offline) = 0;
   };
 
-  LoginPerformer(scoped_refptr<base::TaskRunner> task_runner,
+  LoginPerformer(scoped_refptr<base::SequencedTaskRunner> task_runner,
                  Delegate* delegate);
   ~LoginPerformer() override;
 
@@ -209,7 +209,7 @@
   void DoPerformLogin(const UserContext& user_context,
                       AuthorizationMode auth_mode);
 
-  scoped_refptr<base::TaskRunner> task_runner_;
+  scoped_refptr<base::SequencedTaskRunner> task_runner_;
 
   // Used for logging in.
   scoped_refptr<Authenticator> authenticator_;
diff --git a/chromeos/network/onc/onc_translator_onc_to_shill.cc b/chromeos/network/onc/onc_translator_onc_to_shill.cc
index 6dc9b34a..20c1af49 100644
--- a/chromeos/network/onc/onc_translator_onc_to_shill.cc
+++ b/chromeos/network/onc/onc_translator_onc_to_shill.cc
@@ -53,8 +53,10 @@
   std::string cert_type;
   onc_object->GetStringWithoutPathExpansion(::onc::client_cert::kClientCertType,
                                             &cert_type);
-  if (cert_type != ::onc::client_cert::kPKCS11Id)
+  if (cert_type != ::onc::client_cert::kPKCS11Id) {
+    client_cert::SetEmptyShillProperties(config_type, shill_dictionary);
     return;
+  }
 
   std::string pkcs11_id;
   onc_object->GetStringWithoutPathExpansion(
diff --git a/chromeos/profiles/airmont.afdo.newest.txt b/chromeos/profiles/airmont.afdo.newest.txt
index c53f43c8..5d641b1 100644
--- a/chromeos/profiles/airmont.afdo.newest.txt
+++ b/chromeos/profiles/airmont.afdo.newest.txt
@@ -1 +1 @@
-chromeos-chrome-amd64-airmont-80-3945.66-1575889638-benchmark-80.0.3987.5-r1-redacted.afdo.xz
\ No newline at end of file
+chromeos-chrome-amd64-airmont-80-3987.0-1576496920-benchmark-80.0.3987.5-r1-redacted.afdo.xz
\ No newline at end of file
diff --git a/chromeos/profiles/broadwell.afdo.newest.txt b/chromeos/profiles/broadwell.afdo.newest.txt
index 1d220be..f94e64d 100644
--- a/chromeos/profiles/broadwell.afdo.newest.txt
+++ b/chromeos/profiles/broadwell.afdo.newest.txt
@@ -1 +1 @@
-chromeos-chrome-amd64-broadwell-80-3945.42-1575887938-benchmark-80.0.3987.5-r1-redacted.afdo.xz
\ No newline at end of file
+chromeos-chrome-amd64-broadwell-81-3945.83-1576492580-benchmark-80.0.3987.5-r1-redacted.afdo.xz
\ No newline at end of file
diff --git a/chromeos/profiles/orderfile.newest.txt b/chromeos/profiles/orderfile.newest.txt
index e09e07c1..eed9d160 100644
--- a/chromeos/profiles/orderfile.newest.txt
+++ b/chromeos/profiles/orderfile.newest.txt
@@ -1 +1 @@
-chromeos-chrome-orderfile-field-80-3945.42-1575283012-benchmark-80.0.3964.0-r2.orderfile.xz
\ No newline at end of file
+chromeos-chrome-orderfile-field-80-3945.66-1575891900-benchmark-80.0.3987.5-r1.orderfile.xz
\ No newline at end of file
diff --git a/chromeos/profiles/silvermont.afdo.newest.txt b/chromeos/profiles/silvermont.afdo.newest.txt
index 566b365..1fac362 100644
--- a/chromeos/profiles/silvermont.afdo.newest.txt
+++ b/chromeos/profiles/silvermont.afdo.newest.txt
@@ -1 +1 @@
-chromeos-chrome-amd64-silvermont-80-3945.66-1575891900-benchmark-80.0.3987.5-r1-redacted.afdo.xz
\ No newline at end of file
+chromeos-chrome-amd64-silvermont-80-3987.0-1576497572-benchmark-80.0.3987.5-r1-redacted.afdo.xz
\ No newline at end of file
diff --git a/chromeos/services/assistant/platform/power_manager_provider_impl_unittest.cc b/chromeos/services/assistant/platform/power_manager_provider_impl_unittest.cc
index 5e0f2cae..fd3a3d47 100644
--- a/chromeos/services/assistant/platform/power_manager_provider_impl_unittest.cc
+++ b/chromeos/services/assistant/platform/power_manager_provider_impl_unittest.cc
@@ -10,7 +10,6 @@
 #include "chromeos/dbus/power/fake_power_manager_client.h"
 #include "chromeos/services/assistant/test_support/fake_client.h"
 #include "services/device/public/cpp/test/test_wake_lock_provider.h"
-#include "services/device/public/mojom/constants.mojom.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace chromeos {
diff --git a/chromeos/services/assistant/service.cc b/chromeos/services/assistant/service.cc
index 890ee33..43ee2240 100644
--- a/chromeos/services/assistant/service.cc
+++ b/chromeos/services/assistant/service.cc
@@ -41,7 +41,6 @@
 #include "chromeos/services/assistant/assistant_settings_manager_impl.h"
 #include "chromeos/services/assistant/utils.h"
 #include "services/device/public/mojom/battery_monitor.mojom.h"
-#include "services/device/public/mojom/constants.mojom.h"
 #endif
 
 namespace chromeos {
diff --git a/chromeos/services/cros_healthd/public/mojom/OWNERS b/chromeos/services/cros_healthd/public/mojom/OWNERS
index c640525..24339e5 100644
--- a/chromeos/services/cros_healthd/public/mojom/OWNERS
+++ b/chromeos/services/cros_healthd/public/mojom/OWNERS
@@ -1,3 +1,7 @@
 per-file *.mojom=set noparent
 per-file *.mojom=file://ipc/SECURITY_OWNERS
-per-file *.mojom=file://chromeos/SECURITY_OWNERS
\ No newline at end of file
+per-file *.mojom=file://chromeos/SECURITY_OWNERS
+per-file *_mojom_traits*.*=set noparent
+per-file *_mojom_traits*.*=file://ipc/SECURITY_OWNERS
+per-file *.typemap=set noparent
+per-file *.typemap=file://ipc/SECURITY_OWNERS
\ No newline at end of file
diff --git a/chromeos/services/cros_healthd/public/mojom/cros_healthd_probe.typemap b/chromeos/services/cros_healthd/public/mojom/cros_healthd_probe.typemap
new file mode 100644
index 0000000..7989c37e
--- /dev/null
+++ b/chromeos/services/cros_healthd/public/mojom/cros_healthd_probe.typemap
@@ -0,0 +1,20 @@
+# 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.
+
+mojom = "//chromeos/services/cros_healthd/public/mojom/cros_healthd_probe.mojom"
+
+public_headers = [ "//components/policy/proto/device_management_backend.pb.h" ]
+
+traits_headers = [ "//chromeos/services/cros_healthd/public/mojom/cros_healthd_probe_mojom_traits.h" ]
+
+sources = [
+  "//chromeos/services/cros_healthd/public/mojom/cros_healthd_probe_mojom_traits.cc",
+  "//chromeos/services/cros_healthd/public/mojom/cros_healthd_probe_mojom_traits.h",
+]
+
+public_deps = [
+  "//components/policy/proto",
+]
+
+type_mappings = [ "chromeos.cros_healthd_probe.mojom.CpuArchitectureEnum=em::CpuInfo::Architecture" ]
diff --git a/chromeos/services/cros_healthd/public/mojom/cros_healthd_probe_mojom_traits.cc b/chromeos/services/cros_healthd/public/mojom/cros_healthd_probe_mojom_traits.cc
new file mode 100644
index 0000000..1771ba66
--- /dev/null
+++ b/chromeos/services/cros_healthd/public/mojom/cros_healthd_probe_mojom_traits.cc
@@ -0,0 +1,45 @@
+// 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 "chromeos/services/cros_healthd/public/mojom/cros_healthd_probe_mojom_traits.h"
+
+#include "base/logging.h"
+
+namespace em = enterprise_management;
+
+namespace mojo {
+
+chromeos::cros_healthd::mojom::CpuArchitectureEnum
+EnumTraits<chromeos::cros_healthd::mojom::CpuArchitectureEnum,
+           enterprise_management::CpuInfo::Architecture>::
+    ToMojom(enterprise_management::CpuInfo::Architecture input) {
+  switch (input) {
+    case enterprise_management::CpuInfo::ARCHITECTURE_UNSPECIFIED:
+      return chromeos::cros_healthd::mojom::CpuArchitectureEnum::kUnknown;
+    case enterprise_management::CpuInfo::X86_64:
+      return chromeos::cros_healthd::mojom::CpuArchitectureEnum::kX86_64;
+  }
+
+  NOTREACHED();
+  return chromeos::cros_healthd::mojom::CpuArchitectureEnum::kUnknown;
+}
+
+bool EnumTraits<chromeos::cros_healthd::mojom::CpuArchitectureEnum,
+                enterprise_management::CpuInfo::Architecture>::
+    FromMojom(chromeos::cros_healthd::mojom::CpuArchitectureEnum input,
+              enterprise_management::CpuInfo::Architecture* out) {
+  switch (input) {
+    case chromeos::cros_healthd::mojom::CpuArchitectureEnum::kUnknown:
+      *out = enterprise_management::CpuInfo::ARCHITECTURE_UNSPECIFIED;
+      return true;
+    case chromeos::cros_healthd::mojom::CpuArchitectureEnum::kX86_64:
+      *out = enterprise_management::CpuInfo::X86_64;
+      return true;
+  }
+
+  NOTREACHED();
+  return false;
+}
+
+}  // namespace mojo
diff --git a/chromeos/services/cros_healthd/public/mojom/cros_healthd_probe_mojom_traits.h b/chromeos/services/cros_healthd/public/mojom/cros_healthd_probe_mojom_traits.h
new file mode 100644
index 0000000..edf46e79
--- /dev/null
+++ b/chromeos/services/cros_healthd/public/mojom/cros_healthd_probe_mojom_traits.h
@@ -0,0 +1,27 @@
+// 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 CHROMEOS_SERVICES_CROS_HEALTHD_PUBLIC_MOJOM_CROS_HEALTHD_PROBE_MOJOM_TRAITS_H_
+#define CHROMEOS_SERVICES_CROS_HEALTHD_PUBLIC_MOJOM_CROS_HEALTHD_PROBE_MOJOM_TRAITS_H_
+
+#include "chromeos/services/cros_healthd/public/mojom/cros_healthd_probe.mojom.h"
+#include "components/policy/proto/device_management_backend.pb.h"
+#include "mojo/public/cpp/bindings/enum_traits.h"
+
+namespace mojo {
+
+template <>
+class EnumTraits<chromeos::cros_healthd::mojom::CpuArchitectureEnum,
+                 enterprise_management::CpuInfo::Architecture> {
+ public:
+  static chromeos::cros_healthd::mojom::CpuArchitectureEnum ToMojom(
+      enterprise_management::CpuInfo::Architecture input);
+  static bool FromMojom(
+      chromeos::cros_healthd::mojom::CpuArchitectureEnum input,
+      enterprise_management::CpuInfo::Architecture* out);
+};
+
+}  // namespace mojo
+
+#endif  // CHROMEOS_SERVICES_CROS_HEALTHD_PUBLIC_MOJOM_CROS_HEALTHD_PROBE_MOJOM_TRAITS_H_
diff --git a/chromeos/services/cros_healthd/public/mojom/typemaps.gni b/chromeos/services/cros_healthd/public/mojom/typemaps.gni
new file mode 100644
index 0000000..c82c3383
--- /dev/null
+++ b/chromeos/services/cros_healthd/public/mojom/typemaps.gni
@@ -0,0 +1,7 @@
+# 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.
+
+typemaps = [
+  "//chromeos/services/cros_healthd/public/mojom/cros_healthd_probe.typemap",
+]
diff --git a/chromeos/services/multidevice_setup/host_backend_delegate_impl.cc b/chromeos/services/multidevice_setup/host_backend_delegate_impl.cc
index 96e82ab..8882c9a2 100644
--- a/chromeos/services/multidevice_setup/host_backend_delegate_impl.cc
+++ b/chromeos/services/multidevice_setup/host_backend_delegate_impl.cc
@@ -14,6 +14,8 @@
 #include "chromeos/components/multidevice/logging/logging.h"
 #include "chromeos/components/multidevice/software_feature.h"
 #include "chromeos/components/multidevice/software_feature_state.h"
+#include "chromeos/constants/chromeos_features.h"
+#include "chromeos/services/device_sync/feature_status_change.h"
 #include "chromeos/services/multidevice_setup/eligible_host_devices_provider.h"
 #include "components/prefs/pref_registry_simple.h"
 #include "components/prefs/pref_service.h"
@@ -24,8 +26,8 @@
 
 namespace {
 
-// Name of the pref which stores the device ID of the host which is pending
-// being set on the back-end.
+// Name of the pref which stores the ID of the host which is pending being set
+// on the back-end.
 const char kPendingRequestHostIdPrefName[] =
     "multidevice_setup.pending_request_host_id";
 
@@ -41,6 +43,17 @@
 
 const char kNoHostForLogging[] = "[no host]";
 
+std::string GenerateDeviceIdString(multidevice::RemoteDeviceRef device) {
+  std::stringstream ss;
+  ss << "  Instance ID: "
+     << (device.instance_id().empty() ? "[empty]" : device.instance_id())
+     << "\n  Device ID: "
+     << (device.GetTruncatedDeviceIdForLogs().empty()
+             ? "[empty]"
+             : device.GetTruncatedDeviceIdForLogs());
+  return ss.str();
+}
+
 }  // namespace
 
 // static
@@ -109,8 +122,8 @@
     PA_LOG(WARNING) << "HostBackendDelegateImpl::"
                     << "AttemptToSetMultiDeviceHostOnBackend(): Tried to set a "
                     << "device as host, but that device is not an eligible "
-                    << "host. Device ID: "
-                    << host_device->GetTruncatedDeviceIdForLogs();
+                    << "host.\n"
+                    << GenerateDeviceIdString(*host_device);
     return;
   }
 
@@ -124,10 +137,17 @@
   // Stop the timer, since a new attempt is being started.
   timer_->Stop();
 
-  if (host_device)
-    SetPendingHostRequest(host_device->GetDeviceId());
-  else
+  if (host_device) {
+    // If an Instance ID is available, use that to identify the device;
+    // otherwise, use the encoded public key.
+    // TODO(https://crbug.com/1019206): When v1 DeviceSync is deprecated, only
+    // use Instance IDs since all devices are guaranteed to have one.
+    SetPendingHostRequest(host_device->instance_id().empty()
+                              ? host_device->GetDeviceId()
+                              : host_device->instance_id());
+  } else {
     SetPendingHostRequest(kPendingRemovalOfCurrentHost);
+  }
 
   AttemptNetworkRequest(false /* is_retry */);
 }
@@ -154,13 +174,23 @@
 
   // By this point, |pending_host_id_from_prefs| refers to a real device ID and
   // not one of the two sentinel values.
-  for (const auto& remote_device : device_sync_client_->GetSyncedDevices()) {
-    if (pending_host_id_from_prefs == remote_device.GetDeviceId())
-      return true;
-  }
+  if (FindDeviceById(pending_host_id_from_prefs))
+    return true;
 
   // If a request was pending for a specific host device, but that device is no
   // longer present on the user's account, there is no longer a pending request.
+  // TODO(https://crbug.com/936273): Track frequency of unrecognized host IDs.
+  // If the following scenarios occur before the pending host request completes,
+  // the persisted host ID will not be recognized, and the user will need to go
+  // through setup again:
+  //  * The device was actually removed from the user's account.
+  //  * Instance ID is persisted and v2 DeviceSync is rolled back.
+  //  * A public key is persisted, v1 DeviceSync is deprecated, and the v2
+  //    device data hasn't been decrypted.
+  //  * v1 and v2 DeviceSync are running in parallel, an Instance ID is
+  //    persisted, the device metadata is encrypted with a new group key,
+  //    resulting in v1 device data being used.
+  // We expect all of these scenarios to be very rare.
   SetPendingHostRequest(kNoPendingRequest);
   return false;
 }
@@ -170,26 +200,21 @@
   const std::string pending_host_id_from_prefs =
       pref_service_->GetString(kPendingRequestHostIdPrefName);
 
-  if (pending_host_id_from_prefs == kNoPendingRequest) {
-    PA_LOG(ERROR) << "HostBackendDelegateImpl::GetPendingHostRequest(): Tried "
-                  << "to get pending host request, but there was no pending "
-                  << "host request.";
-    NOTREACHED();
-  }
+  DCHECK_NE(pending_host_id_from_prefs, kNoPendingRequest)
+      << "HostBackendDelegateImpl::GetPendingHostRequest(): Tried "
+      << "to get pending host request, but there was no pending "
+      << "host request.";
 
   if (pending_host_id_from_prefs == kPendingRemovalOfCurrentHost)
     return base::nullopt;
 
-  for (const auto& remote_device : device_sync_client_->GetSyncedDevices()) {
-    if (pending_host_id_from_prefs == remote_device.GetDeviceId())
-      return remote_device;
-  }
+  base::Optional<multidevice::RemoteDeviceRef> pending_host =
+      FindDeviceById(pending_host_id_from_prefs);
+  DCHECK(pending_host)
+      << "HostBackendDelegateImpl::GetPendingHostRequest(): Tried to get "
+      << "pending host request, but the pending host ID was not present.";
 
-  PA_LOG(ERROR) << "HostBackendDelegateImpl::GetPendingHostRequest(): Tried to "
-                << "get pending host request, but the pending host ID was not "
-                << "present.";
-  NOTREACHED();
-  return base::nullopt;
+  return pending_host;
 }
 
 base::Optional<multidevice::RemoteDeviceRef>
@@ -215,14 +240,24 @@
   NotifyPendingHostRequestChange();
 }
 
-void HostBackendDelegateImpl::AttemptNetworkRequest(bool is_retry) {
-  if (!HasPendingHostRequest()) {
-    PA_LOG(ERROR) << "HostBackendDelegateImpl::AttemptNetworkRequest(): Tried "
-                  << "to attempt a network request, but there was no pending "
-                  << "host request.";
-    NOTREACHED();
+base::Optional<multidevice::RemoteDeviceRef>
+HostBackendDelegateImpl::FindDeviceById(const std::string& id) const {
+  DCHECK(!id.empty());
+  for (const auto& remote_device : device_sync_client_->GetSyncedDevices()) {
+    // TODO(https://crbug.com/1019206): When v1 DeviceSync is deprecated,
+    // only look up by Instance ID since all devices are guaranteed to have one.
+    if (id == remote_device.instance_id() || id == remote_device.GetDeviceId())
+      return remote_device;
   }
 
+  return base::nullopt;
+}
+
+void HostBackendDelegateImpl::AttemptNetworkRequest(bool is_retry) {
+  DCHECK(HasPendingHostRequest())
+      << "HostBackendDelegateImpl::AttemptNetworkRequest(): Tried to attempt a "
+      << "network request, but there was no pending host request.";
+
   base::Optional<multidevice::RemoteDeviceRef> pending_host_request =
       GetPendingHostRequest();
 
@@ -237,16 +272,36 @@
 
   PA_LOG(INFO) << "HostBackendDelegateImpl::AttemptNetworkRequest(): "
                << (is_retry ? "Retrying attempt" : "Attempting") << " to "
-               << (should_enable ? "enable" : "disable") << " the host with ID "
-               << device_to_set.GetTruncatedDeviceIdForLogs() << ".";
+               << (should_enable ? "enable" : "disable") << " the host.\n"
+               << GenerateDeviceIdString(device_to_set);
 
-  device_sync_client_->SetSoftwareFeatureState(
-      device_to_set.public_key(),
-      multidevice::SoftwareFeature::kBetterTogetherHost,
-      should_enable /* enabled */, should_enable /* is_exclusive */,
-      base::BindOnce(&HostBackendDelegateImpl::OnSetSoftwareFeatureStateResult,
-                     weak_ptr_factory_.GetWeakPtr(), device_to_set,
-                     should_enable));
+  // In order to avoid a race condition in mutating the BetterTogether host
+  // state on the CryptAuth backend, we are assuming that all SetFeatureStatus()
+  // and SetSoftwareFeatureState() requests are added to the same queue and
+  // processed in order. The DeviceSync service implementation guarantees this
+  // ordering.
+  // TODO(https://crbug.com/1019206): When v1 DeviceSync is deprecated, only use
+  // SetFeatureStatus since all devices are guaranteed to have an Instance ID.
+  if (!device_to_set.instance_id().empty()) {
+    device_sync_client_->SetFeatureStatus(
+        device_to_set.instance_id(),
+        multidevice::SoftwareFeature::kBetterTogetherHost,
+        should_enable ? device_sync::FeatureStatusChange::kEnableExclusively
+                      : device_sync::FeatureStatusChange::kDisable,
+        base::BindOnce(
+            &HostBackendDelegateImpl::OnSetHostNetworkRequestFinished,
+            weak_ptr_factory_.GetWeakPtr(), device_to_set, should_enable));
+
+  } else {
+    DCHECK(!device_to_set.public_key().empty());
+    device_sync_client_->SetSoftwareFeatureState(
+        device_to_set.public_key(),
+        multidevice::SoftwareFeature::kBetterTogetherHost,
+        should_enable /* enabled */, should_enable /* is_exclusive */,
+        base::BindOnce(
+            &HostBackendDelegateImpl::OnSetHostNetworkRequestFinished,
+            weak_ptr_factory_.GetWeakPtr(), device_to_set, should_enable));
+  }
 }
 
 void HostBackendDelegateImpl::OnNewDevicesSynced() {
@@ -255,17 +310,19 @@
   if (host_from_last_sync_ == host_from_sync)
     return;
 
-  std::string old_host_id =
-      host_from_last_sync_ ? host_from_last_sync_->GetTruncatedDeviceIdForLogs()
-                           : kNoHostForLogging;
-  std::string new_host_id = host_from_sync
-                                ? host_from_sync->GetTruncatedDeviceIdForLogs()
-                                : kNoHostForLogging;
+  std::string old_host_ids =
+      host_from_last_sync_
+          ? ('\n' + GenerateDeviceIdString(*host_from_last_sync_))
+          : kNoHostForLogging;
+  std::string new_host_ids =
+      host_from_sync ? ('\n' + GenerateDeviceIdString(*host_from_sync))
+                     : kNoHostForLogging;
 
   host_from_last_sync_ = host_from_sync;
   PA_LOG(VERBOSE) << "HostBackendDelegateImpl::OnNewDevicesSynced(): New host "
-                  << "device has been set. Old host device ID: " << old_host_id
-                  << ", New host device ID: " << new_host_id;
+                  << "device has been set."
+                  << "\nOld host IDs: " << old_host_ids
+                  << "\nNew host IDs: " << new_host_ids;
 
   // If there is a pending request and the new host fulfills that pending
   // request, there is no longer a pending request.
@@ -296,7 +353,7 @@
   return *it;
 }
 
-void HostBackendDelegateImpl::OnSetSoftwareFeatureStateResult(
+void HostBackendDelegateImpl::OnSetHostNetworkRequestFinished(
     multidevice::RemoteDeviceRef device_for_request,
     bool attempted_to_enable,
     device_sync::mojom::NetworkRequestResult result_code) {
@@ -304,11 +361,11 @@
       result_code == device_sync::mojom::NetworkRequestResult::kSuccess;
 
   std::stringstream ss;
-  ss << "HostBackendDelegateImpl::OnSetSoftwareFeatureStateResult(): "
+  ss << "HostBackendDelegateImpl::OnSetHostNetworkRequestFinished(): "
      << (success ? "Completed successful" : "Failure requesting") << " "
-     << "host change. Device ID: "
-     << device_for_request.GetTruncatedDeviceIdForLogs()
-     << ", Attempted to enable: " << (attempted_to_enable ? "true" : "false");
+     << "host change.\n"
+     << GenerateDeviceIdString(device_for_request)
+     << "\nAttempted to enable: " << (attempted_to_enable ? "true" : "false");
 
   if (success) {
     PA_LOG(VERBOSE) << ss.str();
diff --git a/chromeos/services/multidevice_setup/host_backend_delegate_impl.h b/chromeos/services/multidevice_setup/host_backend_delegate_impl.h
index 9814c1a..42e0eb8 100644
--- a/chromeos/services/multidevice_setup/host_backend_delegate_impl.h
+++ b/chromeos/services/multidevice_setup/host_backend_delegate_impl.h
@@ -73,11 +73,18 @@
   // Sets the pending host request. To signal that the request is to remove the
   // current host, pass kPendingRemovalOfCurrentHost. To signal that there is no
   // pending request, pass kNoPendingRequest.
-  void SetPendingHostRequest(const std::string& host_device_id);
+  void SetPendingHostRequest(const std::string& pending_host_id);
+
+  // Returns the device with either an Instance ID or encoded public key of |id|
+  // in the list of synced devices. If no such device exists, returns null.
+  // TODO(https://crbug.com/1019206): When v1 DeviceSync is deprecated,
+  // only look up by Instance ID since all devices are guaranteed to have one.
+  base::Optional<multidevice::RemoteDeviceRef> FindDeviceById(
+      const std::string& id) const;
 
   void AttemptNetworkRequest(bool is_retry);
   base::Optional<multidevice::RemoteDeviceRef> GetHostFromDeviceSync();
-  void OnSetSoftwareFeatureStateResult(
+  void OnSetHostNetworkRequestFinished(
       multidevice::RemoteDeviceRef device_for_request,
       bool attempted_to_enable,
       device_sync::mojom::NetworkRequestResult result_code);
diff --git a/chromeos/services/multidevice_setup/host_backend_delegate_impl_unittest.cc b/chromeos/services/multidevice_setup/host_backend_delegate_impl_unittest.cc
index e15c0d5..d221874 100644
--- a/chromeos/services/multidevice_setup/host_backend_delegate_impl_unittest.cc
+++ b/chromeos/services/multidevice_setup/host_backend_delegate_impl_unittest.cc
@@ -9,11 +9,13 @@
 #include "base/containers/flat_map.h"
 #include "base/macros.h"
 #include "base/optional.h"
+#include "base/test/scoped_feature_list.h"
 #include "base/timer/mock_timer.h"
 #include "base/unguessable_token.h"
 #include "chromeos/components/multidevice/remote_device_test_util.h"
 #include "chromeos/components/multidevice/software_feature.h"
 #include "chromeos/components/multidevice/software_feature_state.h"
+#include "chromeos/constants/chromeos_features.h"
 #include "chromeos/services/device_sync/public/cpp/fake_device_sync_client.h"
 #include "chromeos/services/multidevice_setup/fake_eligible_host_devices_provider.h"
 #include "chromeos/services/multidevice_setup/fake_host_backend_delegate.h"
@@ -31,11 +33,12 @@
 const char kPendingRemovalOfCurrentHost[] = "pendingRemovalOfCurrentHost";
 const char kNoPendingRequest[] = "";
 
-const size_t kNumTestDevices = 5;
+const size_t kNumTestDevices = 4;
 
 }  // namespace
 
-class MultiDeviceSetupHostBackendDelegateImplTest : public testing::Test {
+class MultiDeviceSetupHostBackendDelegateImplTest
+    : public ::testing::TestWithParam<bool> {
  protected:
   MultiDeviceSetupHostBackendDelegateImplTest()
       : test_devices_(
@@ -44,6 +47,17 @@
 
   // testing::Test:
   void SetUp() override {
+    // Tests are run once to simulate when only v1 DeviceSync is operational and
+    // once to simulate when only v2 DeviceSync is operational. In the former
+    // case, only public keys are needed for the host verifier, and in the
+    // latter case, only Instance IDs are needed.
+    for (multidevice::RemoteDeviceRef device : test_devices_) {
+      if (DoTestDevicesHaveInstanceIds())
+        GetMutableRemoteDevice(device)->public_key.clear();
+      else
+        GetMutableRemoteDevice(device)->instance_id.clear();
+    }
+
     fake_eligible_host_devices_provider_ =
         std::make_unique<FakeEligibleHostDevicesProvider>();
     fake_eligible_host_devices_provider_->set_eligible_host_devices(
@@ -58,7 +72,39 @@
     fake_device_sync_client_->set_synced_devices(test_devices_);
   }
 
-  void TearDown() override { delegate_->RemoveObserver(observer_.get()); }
+  void TearDown() override {
+    if (delegate_)
+      delegate_->RemoveObserver(observer_.get());
+  }
+
+  bool DoTestDevicesHaveInstanceIds() { return GetParam(); }
+
+  void SetFeatureFlags(bool use_v1_devicesync, bool use_v2_devicesync) {
+    ASSERT_TRUE(use_v1_devicesync || use_v2_devicesync);
+
+    std::vector<base::Feature> enabled_features;
+    std::vector<base::Feature> disabled_features;
+
+    // This flag has no direct effect of on the RemoteDeviceProvider; however,
+    // v2 Enrollment is a prerequisite for v2 DeviceSync.
+    enabled_features.push_back(chromeos::features::kCryptAuthV2Enrollment);
+
+    if (use_v1_devicesync) {
+      disabled_features.push_back(
+          chromeos::features::kCryptAuthV1DeviceSyncDeprecate);
+    } else {
+      enabled_features.push_back(
+          chromeos::features::kCryptAuthV1DeviceSyncDeprecate);
+    }
+
+    if (use_v2_devicesync) {
+      enabled_features.push_back(chromeos::features::kCryptAuthV2DeviceSync);
+    } else {
+      disabled_features.push_back(chromeos::features::kCryptAuthV2DeviceSync);
+    }
+
+    scoped_feature_list_.InitWithFeatures(enabled_features, disabled_features);
+  }
 
   void CreateDelegate(
       const base::Optional<multidevice::RemoteDeviceRef>& initial_host,
@@ -79,19 +125,27 @@
     delegate_->AddObserver(observer_.get());
   }
 
-  int GetSetSoftwareFeatureStateCallbackQueueSize() {
-    return fake_device_sync_client_
-        ->GetSetSoftwareFeatureStateCallbackQueueSize();
+  int GetSetHostNetworkRequestCallbackQueueSize() {
+    return DoTestDevicesHaveInstanceIds()
+               ? fake_device_sync_client_
+                     ->GetSetFeatureStatusCallbackQueueSize()
+               : fake_device_sync_client_
+                     ->GetSetSoftwareFeatureStateCallbackQueueSize();
   }
 
-  void InvokePendingSetSoftwareFeatureStateCallback(
+  void InvokePendingSetHostNetworkRequestCallback(
       device_sync::mojom::NetworkRequestResult result_code,
       bool expected_to_notify_observer_and_start_retry_timer) {
     size_t num_failure_events_before_call =
         observer_->num_failed_backend_requests();
 
-    fake_device_sync_client_->InvokePendingSetSoftwareFeatureStateCallback(
-        result_code);
+    if (DoTestDevicesHaveInstanceIds()) {
+      fake_device_sync_client_->InvokePendingSetFeatureStatusCallback(
+          result_code);
+    } else {
+      fake_device_sync_client_->InvokePendingSetSoftwareFeatureStateCallback(
+          result_code);
+    }
 
     if (expected_to_notify_observer_and_start_retry_timer) {
       EXPECT_EQ(num_failure_events_before_call + 1u,
@@ -181,7 +235,10 @@
     for (const auto& remote_device : test_devices_) {
       bool should_be_host =
           host_device != base::nullopt &&
-          host_device->GetDeviceId() == remote_device.GetDeviceId();
+          ((!remote_device.instance_id().empty() &&
+            host_device->instance_id() == remote_device.instance_id()) ||
+           (!remote_device.GetDeviceId().empty() &&
+            host_device->GetDeviceId() == remote_device.GetDeviceId()));
 
       GetMutableRemoteDevice(remote_device)
           ->software_features
@@ -223,16 +280,20 @@
 
   std::unique_ptr<HostBackendDelegate> delegate_;
 
+  base::test::ScopedFeatureList scoped_feature_list_;
+
   DISALLOW_COPY_AND_ASSIGN(MultiDeviceSetupHostBackendDelegateImplTest);
 };
 
-TEST_F(MultiDeviceSetupHostBackendDelegateImplTest, Success) {
+TEST_P(MultiDeviceSetupHostBackendDelegateImplTest, Success) {
+  SetFeatureFlags(!DoTestDevicesHaveInstanceIds() /* use_v1_devicesync */,
+                  DoTestDevicesHaveInstanceIds() /* use_v2_devicesync */);
   CreateDelegate(base::nullopt /* initial_host */);
 
   // Set device 0.
   AttemptToSetMultiDeviceHostOnBackend(test_devices()[0]);
-  EXPECT_EQ(1, GetSetSoftwareFeatureStateCallbackQueueSize());
-  InvokePendingSetSoftwareFeatureStateCallback(
+  EXPECT_EQ(1, GetSetHostNetworkRequestCallbackQueueSize());
+  InvokePendingSetHostNetworkRequestCallback(
       device_sync::mojom::NetworkRequestResult::kSuccess,
       false /* expected_to_notify_observer_and_start_retry_timer */);
   EXPECT_TRUE(delegate()->HasPendingHostRequest());
@@ -244,8 +305,8 @@
 
   // Remove device 0 such that there is no longer a host..
   AttemptToSetMultiDeviceHostOnBackend(base::nullopt);
-  EXPECT_EQ(1, GetSetSoftwareFeatureStateCallbackQueueSize());
-  InvokePendingSetSoftwareFeatureStateCallback(
+  EXPECT_EQ(1, GetSetHostNetworkRequestCallbackQueueSize());
+  InvokePendingSetHostNetworkRequestCallback(
       device_sync::mojom::NetworkRequestResult::kSuccess,
       false /* expected_to_notify_observer_and_start_retry_timer */);
   EXPECT_TRUE(delegate()->HasPendingHostRequest());
@@ -257,8 +318,8 @@
 
   // Set device 1.
   AttemptToSetMultiDeviceHostOnBackend(test_devices()[1]);
-  EXPECT_EQ(1, GetSetSoftwareFeatureStateCallbackQueueSize());
-  InvokePendingSetSoftwareFeatureStateCallback(
+  EXPECT_EQ(1, GetSetHostNetworkRequestCallbackQueueSize());
+  InvokePendingSetHostNetworkRequestCallback(
       device_sync::mojom::NetworkRequestResult::kSuccess,
       false /* expected_to_notify_observer_and_start_retry_timer */);
   EXPECT_TRUE(delegate()->HasPendingHostRequest());
@@ -269,13 +330,15 @@
   EXPECT_EQ(test_devices()[1], delegate()->GetMultiDeviceHostFromBackend());
 }
 
-TEST_F(MultiDeviceSetupHostBackendDelegateImplTest, Failure) {
+TEST_P(MultiDeviceSetupHostBackendDelegateImplTest, Failure) {
+  SetFeatureFlags(!DoTestDevicesHaveInstanceIds() /* use_v1_devicesync */,
+                  DoTestDevicesHaveInstanceIds() /* use_v2_devicesync */);
   CreateDelegate(base::nullopt /* initial_host */);
 
   // Attempt to set device 0, but fail.
   AttemptToSetMultiDeviceHostOnBackend(test_devices()[0]);
-  EXPECT_EQ(1, GetSetSoftwareFeatureStateCallbackQueueSize());
-  InvokePendingSetSoftwareFeatureStateCallback(
+  EXPECT_EQ(1, GetSetHostNetworkRequestCallbackQueueSize());
+  InvokePendingSetHostNetworkRequestCallback(
       device_sync::mojom::NetworkRequestResult::kOffline,
       true /* expected_to_notify_observer_and_start_retry_timer */);
   EXPECT_TRUE(delegate()->HasPendingHostRequest());
@@ -286,8 +349,8 @@
   mock_timer()->Fire();
 
   // Simulate another failure.
-  EXPECT_EQ(1, GetSetSoftwareFeatureStateCallbackQueueSize());
-  InvokePendingSetSoftwareFeatureStateCallback(
+  EXPECT_EQ(1, GetSetHostNetworkRequestCallbackQueueSize());
+  InvokePendingSetHostNetworkRequestCallback(
       device_sync::mojom::NetworkRequestResult::kOffline,
       true /* expected_to_notify_observer_and_start_retry_timer */);
   EXPECT_TRUE(delegate()->HasPendingHostRequest());
@@ -296,8 +359,8 @@
 
   // Attempt to set device 1, but fail.
   AttemptToSetMultiDeviceHostOnBackend(test_devices()[1]);
-  EXPECT_EQ(1, GetSetSoftwareFeatureStateCallbackQueueSize());
-  InvokePendingSetSoftwareFeatureStateCallback(
+  EXPECT_EQ(1, GetSetHostNetworkRequestCallbackQueueSize());
+  InvokePendingSetHostNetworkRequestCallback(
       device_sync::mojom::NetworkRequestResult::kOffline,
       true /* expected_to_notify_observer_and_start_retry_timer */);
   EXPECT_TRUE(delegate()->HasPendingHostRequest());
@@ -305,8 +368,11 @@
   EXPECT_EQ(base::nullopt, delegate()->GetMultiDeviceHostFromBackend());
 }
 
-TEST_F(MultiDeviceSetupHostBackendDelegateImplTest,
+TEST_P(MultiDeviceSetupHostBackendDelegateImplTest,
        StartWithDevice_SimultaneousRequests) {
+  SetFeatureFlags(!DoTestDevicesHaveInstanceIds() /* use_v1_devicesync */,
+                  DoTestDevicesHaveInstanceIds() /* use_v2_devicesync */);
+
   // Start with device 0 as the active host.
   CreateDelegate(test_devices()[0] /* initial_host */);
 
@@ -328,11 +394,15 @@
   EXPECT_EQ(test_devices()[3], delegate()->GetPendingHostRequest());
   EXPECT_EQ(test_devices()[0], delegate()->GetMultiDeviceHostFromBackend());
 
+  // Note: Below, we assume that the feature setting requests are processed in
+  // the order they are called. This is an assumption made in the
+  // HostBackendDelegate implementation.
+
   // Fire the callback for device 1, but have it fail. This is not expected to
   // notify the observer or start the retry timer, since the failure was for
   // device 1's request and device 3 is the pending host request.
-  EXPECT_EQ(3, GetSetSoftwareFeatureStateCallbackQueueSize());
-  InvokePendingSetSoftwareFeatureStateCallback(
+  EXPECT_EQ(3, GetSetHostNetworkRequestCallbackQueueSize());
+  InvokePendingSetHostNetworkRequestCallback(
       device_sync::mojom::NetworkRequestResult::kOffline,
       false /* expected_to_notify_observer_and_start_retry_timer */);
   EXPECT_TRUE(delegate()->HasPendingHostRequest());
@@ -342,8 +412,8 @@
   // Fire the callback for device 2, and have it succeed. This should affect the
   // value of GetMultiDeviceHostFromBackend(), but there should still be a
   // pending request for device 3.
-  EXPECT_EQ(2, GetSetSoftwareFeatureStateCallbackQueueSize());
-  InvokePendingSetSoftwareFeatureStateCallback(
+  EXPECT_EQ(2, GetSetHostNetworkRequestCallbackQueueSize());
+  InvokePendingSetHostNetworkRequestCallback(
       device_sync::mojom::NetworkRequestResult::kSuccess,
       false /* expected_to_notify_observer_and_start_retry_timer */);
   SimulateNewHostDevicesSynced(test_devices()[2] /* host_device_after_sync */,
@@ -353,8 +423,8 @@
   EXPECT_EQ(test_devices()[2], delegate()->GetMultiDeviceHostFromBackend());
 
   // Fire the callback for device 3, and have it succeed.
-  EXPECT_EQ(1, GetSetSoftwareFeatureStateCallbackQueueSize());
-  InvokePendingSetSoftwareFeatureStateCallback(
+  EXPECT_EQ(1, GetSetHostNetworkRequestCallbackQueueSize());
+  InvokePendingSetHostNetworkRequestCallback(
       device_sync::mojom::NetworkRequestResult::kSuccess,
       false /* expected_to_notify_observer_and_start_retry_timer */);
   SimulateNewHostDevicesSynced(test_devices()[3] /* host_device_after_sync */,
@@ -363,8 +433,10 @@
   EXPECT_EQ(test_devices()[3], delegate()->GetMultiDeviceHostFromBackend());
 }
 
-TEST_F(MultiDeviceSetupHostBackendDelegateImplTest,
+TEST_P(MultiDeviceSetupHostBackendDelegateImplTest,
        SimultaneousRequestsToSameDevice) {
+  SetFeatureFlags(!DoTestDevicesHaveInstanceIds() /* use_v1_devicesync */,
+                  DoTestDevicesHaveInstanceIds() /* use_v2_devicesync */);
   CreateDelegate(base::nullopt /* initial_host */);
 
   // Attempt to set device 0, but do not invoke the callback yet.
@@ -386,8 +458,8 @@
   EXPECT_EQ(base::nullopt, delegate()->GetMultiDeviceHostFromBackend());
 
   // Fire the first callback, which should successfully transition the host.
-  EXPECT_EQ(3, GetSetSoftwareFeatureStateCallbackQueueSize());
-  InvokePendingSetSoftwareFeatureStateCallback(
+  EXPECT_EQ(3, GetSetHostNetworkRequestCallbackQueueSize());
+  InvokePendingSetHostNetworkRequestCallback(
       device_sync::mojom::NetworkRequestResult::kSuccess,
       false /* expected_to_notify_observer_and_start_retry_timer */);
   SimulateNewHostDevicesSynced(test_devices()[0] /* host_device_after_sync */,
@@ -396,8 +468,8 @@
   EXPECT_EQ(test_devices()[0], delegate()->GetMultiDeviceHostFromBackend());
 
   // Fire the second callback, but have it fail. No state should be affected.
-  EXPECT_EQ(2, GetSetSoftwareFeatureStateCallbackQueueSize());
-  InvokePendingSetSoftwareFeatureStateCallback(
+  EXPECT_EQ(2, GetSetHostNetworkRequestCallbackQueueSize());
+  InvokePendingSetHostNetworkRequestCallback(
       device_sync::mojom::NetworkRequestResult::kOffline,
       false /* expected_to_notify_observer_and_start_retry_timer */);
   EXPECT_FALSE(delegate()->HasPendingHostRequest());
@@ -405,22 +477,24 @@
 
   // Fire the third callback, and have it succeed. Still, no state should be
   // affected.
-  EXPECT_EQ(1, GetSetSoftwareFeatureStateCallbackQueueSize());
-  InvokePendingSetSoftwareFeatureStateCallback(
+  EXPECT_EQ(1, GetSetHostNetworkRequestCallbackQueueSize());
+  InvokePendingSetHostNetworkRequestCallback(
       device_sync::mojom::NetworkRequestResult::kSuccess,
       false /* expected_to_notify_observer_and_start_retry_timer */);
   EXPECT_FALSE(delegate()->HasPendingHostRequest());
   EXPECT_EQ(test_devices()[0], delegate()->GetMultiDeviceHostFromBackend());
 }
 
-TEST_F(MultiDeviceSetupHostBackendDelegateImplTest,
+TEST_P(MultiDeviceSetupHostBackendDelegateImplTest,
        MultipleRequestsToSameDevice_FirstFail_ThenSucceed) {
+  SetFeatureFlags(!DoTestDevicesHaveInstanceIds() /* use_v1_devicesync */,
+                  DoTestDevicesHaveInstanceIds() /* use_v2_devicesync */);
   CreateDelegate(base::nullopt /* initial_host */);
 
   // Attempt to set device 0, but fail.
   AttemptToSetMultiDeviceHostOnBackend(test_devices()[0]);
-  EXPECT_EQ(1, GetSetSoftwareFeatureStateCallbackQueueSize());
-  InvokePendingSetSoftwareFeatureStateCallback(
+  EXPECT_EQ(1, GetSetHostNetworkRequestCallbackQueueSize());
+  InvokePendingSetHostNetworkRequestCallback(
       device_sync::mojom::NetworkRequestResult::kOffline,
       true /* expected_to_notify_observer_and_start_retry_timer */);
   EXPECT_TRUE(delegate()->HasPendingHostRequest());
@@ -431,8 +505,8 @@
   // AttemptToSetMultiDeviceHostOnBackend() again to trigger an immediate retry
   // without the timer.
   AttemptToSetMultiDeviceHostOnBackend(test_devices()[0]);
-  EXPECT_EQ(1, GetSetSoftwareFeatureStateCallbackQueueSize());
-  InvokePendingSetSoftwareFeatureStateCallback(
+  EXPECT_EQ(1, GetSetHostNetworkRequestCallbackQueueSize());
+  InvokePendingSetHostNetworkRequestCallback(
       device_sync::mojom::NetworkRequestResult::kSuccess,
       false /* expected_to_notify_observer_and_start_retry_timer */);
   EXPECT_TRUE(delegate()->HasPendingHostRequest());
@@ -443,16 +517,20 @@
   EXPECT_EQ(test_devices()[0], delegate()->GetMultiDeviceHostFromBackend());
 }
 
-TEST_F(MultiDeviceSetupHostBackendDelegateImplTest,
+TEST_P(MultiDeviceSetupHostBackendDelegateImplTest,
        InitialPendingRequestButNoInitialDevice) {
+  SetFeatureFlags(!DoTestDevicesHaveInstanceIds() /* use_v1_devicesync */,
+                  DoTestDevicesHaveInstanceIds() /* use_v2_devicesync */);
   CreateDelegate(
       base::nullopt /* initial_host */,
-      test_devices()[0].GetDeviceId() /* initial_pending_host_request */);
+      DoTestDevicesHaveInstanceIds()
+          ? test_devices()[0].instance_id()
+          : test_devices()[0].GetDeviceId() /* initial_pending_host_request */);
 
   // The delegate should have started a request as soon as it was created.
   // Simulate it succeeding.
-  EXPECT_EQ(1, GetSetSoftwareFeatureStateCallbackQueueSize());
-  InvokePendingSetSoftwareFeatureStateCallback(
+  EXPECT_EQ(1, GetSetHostNetworkRequestCallbackQueueSize());
+  InvokePendingSetHostNetworkRequestCallback(
       device_sync::mojom::NetworkRequestResult::kSuccess,
       false /* expected_to_notify_observer_and_start_retry_timer */);
   SimulateNewHostDevicesSynced(test_devices()[0] /* host_device_after_sync */,
@@ -461,16 +539,18 @@
   EXPECT_EQ(test_devices()[0], delegate()->GetMultiDeviceHostFromBackend());
 }
 
-TEST_F(MultiDeviceSetupHostBackendDelegateImplTest,
+TEST_P(MultiDeviceSetupHostBackendDelegateImplTest,
        InitialDeviceWithPendingRequestToRemoveIt) {
+  SetFeatureFlags(!DoTestDevicesHaveInstanceIds() /* use_v1_devicesync */,
+                  DoTestDevicesHaveInstanceIds() /* use_v2_devicesync */);
   CreateDelegate(
       test_devices()[0] /* initial_host */,
       kPendingRemovalOfCurrentHost /* initial_pending_host_request */);
 
   // The delegate should have started a request as soon as it was created.
   // Simulate it succeeding.
-  EXPECT_EQ(1, GetSetSoftwareFeatureStateCallbackQueueSize());
-  InvokePendingSetSoftwareFeatureStateCallback(
+  EXPECT_EQ(1, GetSetHostNetworkRequestCallbackQueueSize());
+  InvokePendingSetHostNetworkRequestCallback(
       device_sync::mojom::NetworkRequestResult::kSuccess,
       false /* expected_to_notify_observer_and_start_retry_timer */);
   SimulateNewHostDevicesSynced(base::nullopt /* host_device_after_sync */,
@@ -479,7 +559,9 @@
   EXPECT_EQ(base::nullopt, delegate()->GetMultiDeviceHostFromBackend());
 }
 
-TEST_F(MultiDeviceSetupHostBackendDelegateImplTest, ChangedFromOtherDevice) {
+TEST_P(MultiDeviceSetupHostBackendDelegateImplTest, ChangedFromOtherDevice) {
+  SetFeatureFlags(!DoTestDevicesHaveInstanceIds() /* use_v1_devicesync */,
+                  DoTestDevicesHaveInstanceIds() /* use_v2_devicesync */);
   CreateDelegate(base::nullopt /* initial_host */);
 
   // The device changed from another device (i.e.,
@@ -492,8 +574,10 @@
                                false /* expected_to_fulfill_pending_request */);
 }
 
-TEST_F(MultiDeviceSetupHostBackendDelegateImplTest,
+TEST_P(MultiDeviceSetupHostBackendDelegateImplTest,
        PendingRequestCanceledIfDeviceToSetNoLongerExists) {
+  SetFeatureFlags(!DoTestDevicesHaveInstanceIds() /* use_v1_devicesync */,
+                  DoTestDevicesHaveInstanceIds() /* use_v2_devicesync */);
   CreateDelegate(base::nullopt /* initial_host */,
                  "nonexistentDeviceId" /* initial_pending_host_request */);
 
@@ -502,8 +586,10 @@
   EXPECT_FALSE(delegate()->HasPendingHostRequest());
 }
 
-TEST_F(MultiDeviceSetupHostBackendDelegateImplTest,
+TEST_P(MultiDeviceSetupHostBackendDelegateImplTest,
        PendingRequestCanceledIfDeviceToRemoveNoLongerExists) {
+  SetFeatureFlags(!DoTestDevicesHaveInstanceIds() /* use_v1_devicesync */,
+                  DoTestDevicesHaveInstanceIds() /* use_v2_devicesync */);
   CreateDelegate(
       base::nullopt /* initial_host */,
       kPendingRemovalOfCurrentHost /* initial_pending_host_request */);
@@ -513,7 +599,10 @@
   EXPECT_FALSE(delegate()->HasPendingHostRequest());
 }
 
-TEST_F(MultiDeviceSetupHostBackendDelegateImplTest, TryToSetNonEligibleHost) {
+TEST_P(MultiDeviceSetupHostBackendDelegateImplTest, TryToSetNonEligibleHost) {
+  SetFeatureFlags(!DoTestDevicesHaveInstanceIds() /* use_v1_devicesync */,
+                  DoTestDevicesHaveInstanceIds() /* use_v2_devicesync */);
+
   // Make all test devices ineligible.
   fake_eligible_host_devices_provider()->set_eligible_host_devices(
       multidevice::RemoteDeviceRefList());
@@ -524,6 +613,83 @@
   EXPECT_EQ(0u, observer()->num_pending_host_request_changes());
 }
 
+// This tests additional logic for when v1 and v2 DeviceSync run in parallel.
+TEST_P(MultiDeviceSetupHostBackendDelegateImplTest, V1andV2DeviceSync) {
+  // Only run this test once, where device 0 has an Instance ID and device 1
+  // does not.
+  if (!DoTestDevicesHaveInstanceIds())
+    return;
+
+  SetFeatureFlags(true /* use_v1_devicesync */, true /* use_v2_devicesync */);
+
+  // Make device 1 a v1 DeviceSync device.
+  GetMutableRemoteDevice(test_devices()[1])->instance_id.clear();
+  GetMutableRemoteDevice(test_devices()[1])->public_key = "public_key";
+
+  CreateDelegate(base::nullopt /* initial_host */);
+
+  // Attempt to set device 0, which has an Instance ID, but do not invoke the
+  // callback yet. Device 0 is now the pending host.
+  AttemptToSetMultiDeviceHostOnBackend(test_devices()[0]);
+  EXPECT_TRUE(delegate()->HasPendingHostRequest());
+  EXPECT_EQ(test_devices()[0], delegate()->GetPendingHostRequest());
+  EXPECT_EQ(base::nullopt, delegate()->GetMultiDeviceHostFromBackend());
+  EXPECT_EQ(1,
+            fake_device_sync_client()->GetSetFeatureStatusCallbackQueueSize());
+
+  // Now, attempt to set device 1, which does not have an Instance ID. Device 1
+  // is now the pending host, but no SetSoftwareFeatureState call was made since
+  // the SetFeatureStatus() callback hasn't been invoked yet.
+  AttemptToSetMultiDeviceHostOnBackend(test_devices()[1]);
+  EXPECT_TRUE(delegate()->HasPendingHostRequest());
+  EXPECT_EQ(test_devices()[1], delegate()->GetPendingHostRequest());
+  EXPECT_EQ(base::nullopt, delegate()->GetMultiDeviceHostFromBackend());
+  EXPECT_EQ(
+      1,
+      fake_device_sync_client()->GetSetSoftwareFeatureStateCallbackQueueSize());
+
+  // Fire the callback for device 0 and have it succeed. This should affect the
+  // value of GetMultiDeviceHostFromBackend(); however, because device 0 is not
+  // the pending host, the observer should not be notified. Now that the device
+  // 0 request is finished, there should be a new request for device 1.
+  // Note: We are assuming that the feature setting requests are processed in
+  // the order they are called. This is an assumption made in the
+  // HostBackendDelegate implementation.
+  fake_device_sync_client()->InvokePendingSetFeatureStatusCallback(
+      device_sync::mojom::NetworkRequestResult::kSuccess);
+  EXPECT_EQ(0,
+            fake_device_sync_client()->GetSetFeatureStatusCallbackQueueSize());
+  EXPECT_EQ(
+      1,
+      fake_device_sync_client()->GetSetSoftwareFeatureStateCallbackQueueSize());
+  SimulateNewHostDevicesSynced(test_devices()[0] /* host_device_after_sync */,
+                               false /* expected_to_fulfill_pending_request */);
+  EXPECT_TRUE(delegate()->HasPendingHostRequest());
+  EXPECT_EQ(test_devices()[1], delegate()->GetPendingHostRequest());
+  EXPECT_EQ(test_devices()[0], delegate()->GetMultiDeviceHostFromBackend());
+
+  // Fire the callback for device 1, and have it succeed.
+  fake_device_sync_client()->InvokePendingSetSoftwareFeatureStateCallback(
+      device_sync::mojom::NetworkRequestResult::kSuccess);
+  EXPECT_EQ(0,
+            fake_device_sync_client()->GetSetFeatureStatusCallbackQueueSize());
+  EXPECT_EQ(
+      0,
+      fake_device_sync_client()->GetSetSoftwareFeatureStateCallbackQueueSize());
+  SimulateNewHostDevicesSynced(test_devices()[1] /* host_device_after_sync */,
+                               true /* expected_to_fulfill_pending_request */);
+  EXPECT_FALSE(delegate()->HasPendingHostRequest());
+  EXPECT_EQ(test_devices()[1], delegate()->GetMultiDeviceHostFromBackend());
+}
+
+// Runs tests twice; once for devices that all have Instance IDs and once for
+// devices that do not.
+// TODO(https://crbug.com/1019206): Remove when v1 DeviceSync is deprecated,
+// when all devices should have an Instance ID.
+INSTANTIATE_TEST_SUITE_P(All,
+                         MultiDeviceSetupHostBackendDelegateImplTest,
+                         ::testing::Bool());
+
 }  // namespace multidevice_setup
 
 }  // namespace chromeos
diff --git a/chromeos/settings/cros_settings_names.cc b/chromeos/settings/cros_settings_names.cc
index 6bf4742..090fca03 100644
--- a/chromeos/settings/cros_settings_names.cc
+++ b/chromeos/settings/cros_settings_names.cc
@@ -101,6 +101,10 @@
 // boot should be reported along with device policy requests.
 const char kReportDeviceBootMode[] = "cros.device_status.report_boot_mode";
 
+// A boolean pref that determines whether the device CPU information should be
+// included in status reports to the device management server.
+const char kReportDeviceCpuInfo[] = "cros.device_status.report_cpu_info";
+
 // A boolean pref that indicates whether the current location should be reported
 // along with device policy requests.
 const char kReportDeviceLocation[] = "cros.device_status.report_location";
diff --git a/chromeos/settings/cros_settings_names.h b/chromeos/settings/cros_settings_names.h
index 90a0cf9d..dd44f4dd 100644
--- a/chromeos/settings/cros_settings_names.h
+++ b/chromeos/settings/cros_settings_names.h
@@ -81,6 +81,7 @@
 COMPONENT_EXPORT(CHROMEOS_SETTINGS)
 extern const char kReportDeviceBoardStatus[];
 COMPONENT_EXPORT(CHROMEOS_SETTINGS) extern const char kReportDeviceBootMode[];
+COMPONENT_EXPORT(CHROMEOS_SETTINGS) extern const char kReportDeviceCpuInfo[];
 COMPONENT_EXPORT(CHROMEOS_SETTINGS) extern const char kReportDeviceLocation[];
 COMPONENT_EXPORT(CHROMEOS_SETTINGS)
 extern const char kReportDeviceNetworkInterfaces[];
diff --git a/chromeos/test/data/network/policy/shill_managed_wifi1.json b/chromeos/test/data/network/policy/shill_managed_wifi1.json
index 4a4cc69..f725c878 100644
--- a/chromeos/test/data/network/policy/shill_managed_wifi1.json
+++ b/chromeos/test/data/network/policy/shill_managed_wifi1.json
@@ -1,6 +1,9 @@
 {
+  "EAP.CertID": "",
   "EAP.EAP": "TLS",
   "EAP.Identity": "${LOGIN_ID}@my.domain.com",
+  "EAP.KeyID": "",
+  "EAP.PIN": "",
   "EAP.UseSystemCAs": true,
   "GUID": "policy2_wifi1",
   "Mode": "managed",
diff --git a/chromeos/test/data/network/policy/shill_policy_autoconnect_on_unconfigured_vpn.json b/chromeos/test/data/network/policy/shill_policy_autoconnect_on_unconfigured_vpn.json
index d14f3bc..76e99a6 100644
--- a/chromeos/test/data/network/policy/shill_policy_autoconnect_on_unconfigured_vpn.json
+++ b/chromeos/test/data/network/policy/shill_policy_autoconnect_on_unconfigured_vpn.json
@@ -8,6 +8,8 @@
   "Provider": {
     "Host": "vpn.my.domain.com",
     "OpenVPN.Password": "some password",
+    "OpenVPN.Pkcs11.ID": "",
+    "OpenVPN.Pkcs11.PIN": "",
     "OpenVPN.Port": "443",
     "OpenVPN.Proto": "udp",
     "OpenVPN.RemoteCertKU": "",
diff --git a/chromeos/test/data/network/policy/shill_policy_on_managed_vpn.json b/chromeos/test/data/network/policy/shill_policy_on_managed_vpn.json
index 4a3d2f9..0d71486d 100644
--- a/chromeos/test/data/network/policy/shill_policy_on_managed_vpn.json
+++ b/chromeos/test/data/network/policy/shill_policy_on_managed_vpn.json
@@ -7,6 +7,8 @@
   "Provider": {
     "Host": "vpn.my.domain.com",
     "OpenVPN.Password": "some password",
+    "OpenVPN.Pkcs11.ID": "",
+    "OpenVPN.Pkcs11.PIN": "",
     "OpenVPN.Port": "443",
     "OpenVPN.Proto": "udp",
     "OpenVPN.RemoteCertKU": "",
diff --git a/chromeos/test/data/network/shill_ethernet_with_eap.json b/chromeos/test/data/network/shill_ethernet_with_eap.json
index e5d44be..2e9f42b 100644
--- a/chromeos/test/data/network/shill_ethernet_with_eap.json
+++ b/chromeos/test/data/network/shill_ethernet_with_eap.json
@@ -1,6 +1,9 @@
 {
+  "EAP.CertID": "",
   "EAP.EAP":"TLS",
   "EAP.Identity":"abc ${LOGIN_ID}@my.domain.com",
+  "EAP.KeyID": "",
+  "EAP.PIN": "",
   "EAP.UseSystemCAs":true,
   "GUID":"guid",
   "SaveCredentials":true,
diff --git a/chromeos/test/data/network/shill_l2tpipsec.json b/chromeos/test/data/network/shill_l2tpipsec.json
index cc7b499..f9927c8 100644
--- a/chromeos/test/data/network/shill_l2tpipsec.json
+++ b/chromeos/test/data/network/shill_l2tpipsec.json
@@ -3,12 +3,15 @@
   "Name": "MyL2TPVPN",
   "Provider.Host": "some.host.org",
   "Provider.Type": "l2tpipsec",
+  "L2TPIPsec.ClientCertID": "",
+  "L2TPIPsec.ClientCertSlot": "",
+  "L2TPIPsec.LCPEchoDisabled": "true",
+  "L2TPIPsec.PIN": "",
   "L2TPIPsec.PSK": "some_preshared_key",
+  "L2TPIPsec.Password": "some password",
   "L2TPIPsec.TunnelGroup": "my_group",
   "L2TPIPsec.User": "some username",
   "L2TPIPsec.XauthPassword": "some xauth password",
   "L2TPIPsec.XauthUser": "some xauth username",
-  "L2TPIPsec.Password": "some password",
-  "L2TPIPsec.LCPEchoDisabled": "true",
   "SaveCredentials": true
 }
diff --git a/chromeos/test/data/network/shill_l2tpipsec_clientcert.json b/chromeos/test/data/network/shill_l2tpipsec_clientcert.json
index a740f34..a6ba4d54 100644
--- a/chromeos/test/data/network/shill_l2tpipsec_clientcert.json
+++ b/chromeos/test/data/network/shill_l2tpipsec_clientcert.json
@@ -1,10 +1,13 @@
 {
    "GUID": "guid",
+   "L2TPIPsec.ClientCertID": "",
+   "L2TPIPsec.ClientCertSlot": "",
+   "L2TPIPsec.LCPEchoDisabled": "true",
+   "L2TPIPsec.PIN": "",
    "L2TPIPsec.Password": "some password",
    "L2TPIPsec.User": "some username",
    "L2TPIPsec.XauthPassword": "some xauth password",
    "L2TPIPsec.XauthUser": "some xauth username",
-   "L2TPIPsec.LCPEchoDisabled": "true",
    "Name": "MyL2TPVPN",
    "Provider.Host": "some.host.org",
    "Provider.Type": "l2tpipsec",
diff --git a/chromeos/test/data/network/shill_openvpn.json b/chromeos/test/data/network/shill_openvpn.json
index 016bf38..c98ec42 100644
--- a/chromeos/test/data/network/shill_openvpn.json
+++ b/chromeos/test/data/network/shill_openvpn.json
@@ -14,6 +14,8 @@
   ],
   "OpenVPN.KeyDirection":"1",
   "OpenVPN.Token":"some OTP",
+  "OpenVPN.Pkcs11.ID": "",
+  "OpenVPN.Pkcs11.PIN": "",
   "OpenVPN.Port":"443",
   "OpenVPN.Proto":"udp",
   "OpenVPN.PushPeerInfo":"true",
diff --git a/chromeos/test/data/network/shill_openvpn_clientcert.json b/chromeos/test/data/network/shill_openvpn_clientcert.json
index 59aa87a..0400fbf 100644
--- a/chromeos/test/data/network/shill_openvpn_clientcert.json
+++ b/chromeos/test/data/network/shill_openvpn_clientcert.json
@@ -6,6 +6,8 @@
       "123.com"
    ],
    "OpenVPN.Password": "some password",
+   "OpenVPN.Pkcs11.ID": "",
+   "OpenVPN.Pkcs11.PIN": "",
    "OpenVPN.Port": "1234",
    "OpenVPN.Proto": "udp",
    "OpenVPN.TLSVersionMin": "1.2",
diff --git a/chromeos/test/data/network/shill_wifi_clientcert.json b/chromeos/test/data/network/shill_wifi_clientcert.json
index 65ab6cd..30e9f357 100644
--- a/chromeos/test/data/network/shill_wifi_clientcert.json
+++ b/chromeos/test/data/network/shill_wifi_clientcert.json
@@ -1,6 +1,9 @@
 {
+   "EAP.CertID": "",
    "EAP.EAP": "TLS",
    "EAP.Identity": "abc ${LOGIN_ID}@my.domain.com",
+   "EAP.KeyID": "",
+   "EAP.PIN": "",
    "EAP.UseProactiveKeyCaching": true,
    "EAP.UseSystemCAs": true,
    "GUID": "{77db0089-0bc8-4358-929c-123xcv}",
diff --git a/chromeos/test/data/network/shill_wifi_clientref.json b/chromeos/test/data/network/shill_wifi_clientref.json
index b04273b..9dd9a9f 100644
--- a/chromeos/test/data/network/shill_wifi_clientref.json
+++ b/chromeos/test/data/network/shill_wifi_clientref.json
@@ -1,6 +1,9 @@
 {
+   "EAP.CertID": "",
    "EAP.EAP": "TLS",
    "EAP.Identity": "${LOGIN_ID}@my.domain.com",
+   "EAP.KeyID": "",
+   "EAP.PIN": "",
    "EAP.UseSystemCAs": true,
    "GUID": "{77db0089-0bc8-4358-929c-123xcv}",
    "Mode": "managed",
diff --git a/chromeos/test/data/network/shill_wifi_eap_ttls.json b/chromeos/test/data/network/shill_wifi_eap_ttls.json
index a70ecd9..074ed12 100644
--- a/chromeos/test/data/network/shill_wifi_eap_ttls.json
+++ b/chromeos/test/data/network/shill_wifi_eap_ttls.json
@@ -1,7 +1,10 @@
 {
+   "EAP.CertID": "",
    "EAP.EAP": "TTLS",
    "EAP.Identity": "my_identity",
    "EAP.InnerEAP": "auth=MSCHAPV2",
+   "EAP.KeyID": "",
+   "EAP.PIN": "",
    "EAP.UseSystemCAs": true,
    "GUID": "{77db0089-0bc8-4358-929c-123xcv}",
    "Mode": "managed",
diff --git a/chromeos/test/data/network/shill_wifi_eap_ttls_with_hardcoded_password.json b/chromeos/test/data/network/shill_wifi_eap_ttls_with_hardcoded_password.json
index a782b1e..fc952cf3 100644
--- a/chromeos/test/data/network/shill_wifi_eap_ttls_with_hardcoded_password.json
+++ b/chromeos/test/data/network/shill_wifi_eap_ttls_with_hardcoded_password.json
@@ -1,9 +1,12 @@
 {
+   "EAP.CertID": "",
    "EAP.EAP": "TTLS",
    "EAP.Identity": "my_identity",
    "EAP.InnerEAP": "auth=MSCHAPV2",
-   "EAP.UseSystemCAs": true,
+   "EAP.KeyID": "",
+   "EAP.PIN": "",
    "EAP.Password": "my_password",
+   "EAP.UseSystemCAs": true,
    "GUID": "{77db0089-0bc8-4358-929c-123xcv}",
    "Mode": "managed",
    "SaveCredentials": true,
diff --git a/chromeos/test/data/network/shill_wifi_eap_ttls_with_password_variable.json b/chromeos/test/data/network/shill_wifi_eap_ttls_with_password_variable.json
index 1e6ef5c..73b6e4e 100644
--- a/chromeos/test/data/network/shill_wifi_eap_ttls_with_password_variable.json
+++ b/chromeos/test/data/network/shill_wifi_eap_ttls_with_password_variable.json
@@ -1,10 +1,13 @@
 {
+   "EAP.CertID": "",
    "EAP.EAP": "TTLS",
    "EAP.Identity": "my_identity",
    "EAP.InnerEAP": "auth=MSCHAPV2",
-   "EAP.UseSystemCAs": true,
+   "EAP.KeyID": "",
+   "EAP.PIN": "",
    "EAP.Password": "${PASSWORD}",
    "EAP.UseLoginPassword": true,
+   "EAP.UseSystemCAs": true,
    "GUID": "{77db0089-0bc8-4358-929c-123xcv}",
    "Mode": "managed",
    "SaveCredentials": true,
diff --git a/chromeos/test/data/network/shill_wifi_wep_8021x_clientcert.json b/chromeos/test/data/network/shill_wifi_wep_8021x_clientcert.json
index e4aadb4..3330f842 100644
--- a/chromeos/test/data/network/shill_wifi_wep_8021x_clientcert.json
+++ b/chromeos/test/data/network/shill_wifi_wep_8021x_clientcert.json
@@ -1,6 +1,9 @@
 {
+   "EAP.CertID": "",
    "EAP.EAP": "TLS",
    "EAP.Identity": "abc ${LOGIN_ID}@my.domain.com",
+   "EAP.KeyID": "",
+   "EAP.PIN": "",
    "EAP.UseProactiveKeyCaching": true,
    "EAP.UseSystemCAs": true,
    "GUID": "{77db0089-0bc8-4358-929c-123xcv}",
diff --git a/chromeos/test/data/network/translation_of_shill_ethernet_with_eap.onc b/chromeos/test/data/network/translation_of_shill_ethernet_with_eap.onc
index 888d3c8..d30a2f54 100644
--- a/chromeos/test/data/network/translation_of_shill_ethernet_with_eap.onc
+++ b/chromeos/test/data/network/translation_of_shill_ethernet_with_eap.onc
@@ -2,6 +2,8 @@
   "Ethernet":{
     "Authentication":"8021X",
     "EAP": {
+      "ClientCertPKCS11Id": "",
+      "ClientCertType": "PKCS11Id",
       "Identity": "abc ${LOGIN_ID}@my.domain.com",
       "Outer": "EAP-TLS",
       "SaveCredentials": true,
diff --git a/chromeos/test/data/network/translation_of_shill_wifi_clientcert.onc b/chromeos/test/data/network/translation_of_shill_wifi_clientcert.onc
index debc35e..ee0fae2 100644
--- a/chromeos/test/data/network/translation_of_shill_wifi_clientcert.onc
+++ b/chromeos/test/data/network/translation_of_shill_wifi_clientcert.onc
@@ -8,6 +8,8 @@
   "Type":"WiFi",
   "WiFi":{
     "EAP": {
+      "ClientCertPKCS11Id": "",
+      "ClientCertType": "PKCS11Id",
       "Identity": "abc ${LOGIN_ID}@my.domain.com",
       "Outer": "EAP-TLS",
       "SaveCredentials": true,
diff --git a/chromeos/test/data/network/translation_of_shill_wifi_eap_ttls.onc b/chromeos/test/data/network/translation_of_shill_wifi_eap_ttls.onc
index 09cec42..49bbdd5 100644
--- a/chromeos/test/data/network/translation_of_shill_wifi_eap_ttls.onc
+++ b/chromeos/test/data/network/translation_of_shill_wifi_eap_ttls.onc
@@ -5,6 +5,8 @@
   "WiFi": {
     "Security": "WPA-EAP",
     "EAP": {
+      "ClientCertPKCS11Id": "",
+      "ClientCertType": "PKCS11Id",
       "Outer": "EAP-TTLS",
       "Inner": "MSCHAPv2",
       "Identity": "my_identity",
diff --git a/chromeos/test/data/network/translation_of_shill_wifi_eap_ttls_with_hardcoded_password.onc b/chromeos/test/data/network/translation_of_shill_wifi_eap_ttls_with_hardcoded_password.onc
index 4c8148a2..99960bda 100644
--- a/chromeos/test/data/network/translation_of_shill_wifi_eap_ttls_with_hardcoded_password.onc
+++ b/chromeos/test/data/network/translation_of_shill_wifi_eap_ttls_with_hardcoded_password.onc
@@ -5,6 +5,8 @@
   "WiFi": {
     "Security": "WPA-EAP",
     "EAP": {
+      "ClientCertPKCS11Id": "",
+      "ClientCertType": "PKCS11Id",
       "Outer": "EAP-TTLS",
       "Inner": "MSCHAPv2",
       "Identity": "my_identity",
diff --git a/chromeos/test/data/network/translation_of_shill_wifi_eap_ttls_with_password_variable.onc b/chromeos/test/data/network/translation_of_shill_wifi_eap_ttls_with_password_variable.onc
index 396f009c..bd753d8 100644
--- a/chromeos/test/data/network/translation_of_shill_wifi_eap_ttls_with_password_variable.onc
+++ b/chromeos/test/data/network/translation_of_shill_wifi_eap_ttls_with_password_variable.onc
@@ -5,6 +5,8 @@
   "WiFi": {
     "Security": "WPA-EAP",
     "EAP": {
+      "ClientCertPKCS11Id": "",
+      "ClientCertType": "PKCS11Id",
       "Outer": "EAP-TTLS",
       "Inner": "MSCHAPv2",
       "Identity": "my_identity",
diff --git a/chromeos/test/data/network/translation_of_shill_wifi_wep_8021x_clientcert.onc b/chromeos/test/data/network/translation_of_shill_wifi_wep_8021x_clientcert.onc
index d66dea7..a43164a5 100644
--- a/chromeos/test/data/network/translation_of_shill_wifi_wep_8021x_clientcert.onc
+++ b/chromeos/test/data/network/translation_of_shill_wifi_wep_8021x_clientcert.onc
@@ -8,6 +8,8 @@
   "Type":"WiFi",
   "WiFi":{
     "EAP": {
+      "ClientCertPKCS11Id": "",
+      "ClientCertType": "PKCS11Id",
       "Identity": "abc ${LOGIN_ID}@my.domain.com",
       "Outer": "EAP-TLS",
       "SaveCredentials": true,
diff --git a/chromeos/tpm/tpm_token_info_getter_unittest.cc b/chromeos/tpm/tpm_token_info_getter_unittest.cc
index cd1c8ba..844ace2 100644
--- a/chromeos/tpm/tpm_token_info_getter_unittest.cc
+++ b/chromeos/tpm/tpm_token_info_getter_unittest.cc
@@ -57,7 +57,6 @@
     base::ThreadTaskRunnerHandle::Get()->PostTask(from_here, std::move(task));
     return true;
   }
-  bool RunsTasksInCurrentSequence() const override { return true; }
 
  protected:
   ~FakeTaskRunner() override = default;
diff --git a/components/arc/power/arc_power_bridge.cc b/components/arc/power/arc_power_bridge.cc
index ad5ba80..aff0da0 100644
--- a/components/arc/power/arc_power_bridge.cc
+++ b/components/arc/power/arc_power_bridge.cc
@@ -20,7 +20,6 @@
 #include "components/arc/session/arc_bridge_service.h"
 #include "content/public/browser/device_service.h"
 #include "mojo/public/cpp/bindings/remote.h"
-#include "services/device/public/mojom/constants.mojom.h"
 #include "services/device/public/mojom/wake_lock.mojom.h"
 #include "services/device/public/mojom/wake_lock_provider.mojom.h"
 #include "ui/display/manager/display_configurator.h"
diff --git a/components/autofill/core/browser/BUILD.gn b/components/autofill/core/browser/BUILD.gn
index 77d9436..30ab6ea 100644
--- a/components/autofill/core/browser/BUILD.gn
+++ b/components/autofill/core/browser/BUILD.gn
@@ -88,6 +88,8 @@
     "data_model/contact_info.h",
     "data_model/credit_card.cc",
     "data_model/credit_card.h",
+    "data_model/credit_card_cloud_token_data.cc",
+    "data_model/credit_card_cloud_token_data.h",
     "data_model/data_model_utils.cc",
     "data_model/data_model_utils.h",
     "data_model/form_group.cc",
diff --git a/components/autofill/core/browser/autofill_manager_unittest.cc b/components/autofill/core/browser/autofill_manager_unittest.cc
index c2e56f6..1762467 100644
--- a/components/autofill/core/browser/autofill_manager_unittest.cc
+++ b/components/autofill/core/browser/autofill_manager_unittest.cc
@@ -5472,7 +5472,7 @@
   }
 }
 
-// When a field contains fields with UPI/VPA values, a crowdsourcing vote should
+// When a field contains fields with UPI ID values, a crowdsourcing vote should
 // be uploaded.
 TEST_F(AutofillManagerTest, CrowdsourceUPIVPA) {
   std::vector<AutofillProfile> profiles;
diff --git a/components/autofill/core/browser/autofill_merge_unittest.cc b/components/autofill/core/browser/autofill_merge_unittest.cc
index e959975..39dbb96 100644
--- a/components/autofill/core/browser/autofill_merge_unittest.cc
+++ b/components/autofill/core/browser/autofill_merge_unittest.cc
@@ -276,15 +276,15 @@
 
       // Import the profile.
       std::unique_ptr<CreditCard> imported_credit_card;
-      base::Optional<std::string> unused_imported_vpa;
+      base::Optional<std::string> unused_imported_upi_id;
       form_data_importer_->ImportFormData(form_structure,
                                           true,  // address autofill enabled,
                                           true,  // credit card autofill enabled
                                           false,  // should return local card
                                           &imported_credit_card,
-                                          &unused_imported_vpa);
+                                          &unused_imported_upi_id);
       EXPECT_FALSE(imported_credit_card);
-      EXPECT_FALSE(unused_imported_vpa.has_value());
+      EXPECT_FALSE(unused_imported_upi_id.has_value());
 
       // Clear the |form| to start a new profile.
       form.fields.clear();
diff --git a/components/autofill/core/browser/autofill_metrics.cc b/components/autofill/core/browser/autofill_metrics.cc
index 48d40b37..78f477b 100644
--- a/components/autofill/core/browser/autofill_metrics.cc
+++ b/components/autofill/core/browser/autofill_metrics.cc
@@ -587,11 +587,6 @@
 }
 
 // static
-void AutofillMetrics::LogMaskedCardComparisonNetworksMatch(bool matches) {
-  UMA_HISTOGRAM_BOOLEAN("Autofill.MaskedCardComparisonNetworksMatch", matches);
-}
-
-// static
 void AutofillMetrics::LogCreditCardSaveNotOfferedDueToMaxStrikesMetric(
     SaveTypeMetric metric) {
   UMA_HISTOGRAM_ENUMERATION(
diff --git a/components/autofill/core/browser/autofill_metrics.h b/components/autofill/core/browser/autofill_metrics.h
index 3deb2bc..80ec20c 100644
--- a/components/autofill/core/browser/autofill_metrics.h
+++ b/components/autofill/core/browser/autofill_metrics.h
@@ -989,10 +989,6 @@
   static void LogSubmittedServerCardExpirationStatusMetric(
       SubmittedServerCardExpirationStatusMetric metric);
 
-  // When a masked card is compared with another card, logs whether the cards'
-  // networks match.
-  static void LogMaskedCardComparisonNetworksMatch(bool matches);
-
   // When credit card save is not offered (either at all on mobile or by simply
   // not showing the bubble on desktop), logs the occurrence.
   static void LogCreditCardSaveNotOfferedDueToMaxStrikesMetric(
diff --git a/components/autofill/core/browser/autofill_test_utils.cc b/components/autofill/core/browser/autofill_test_utils.cc
index 727f5b9..6ed9b48 100644
--- a/components/autofill/core/browser/autofill_test_utils.cc
+++ b/components/autofill/core/browser/autofill_test_utils.cc
@@ -470,6 +470,29 @@
   return credit_card;
 }
 
+CreditCardCloudTokenData GetCreditCardCloudTokenData1() {
+  CreditCardCloudTokenData data;
+  data.masked_card_id = "data1_id";
+  data.suffix = ASCIIToUTF16("1111");
+  data.exp_month = 1;
+  base::StringToInt(NextYear(), &data.exp_year);
+  data.card_art_url = "fake url 1";
+  data.instrument_token = "fake token 1";
+  return data;
+}
+
+CreditCardCloudTokenData GetCreditCardCloudTokenData2() {
+  CreditCardCloudTokenData data;
+  data.masked_card_id = "data2_id";
+  data.suffix = ASCIIToUTF16("2222");
+  data.exp_month = 2;
+  base::StringToInt(NextYear(), &data.exp_year);
+  data.exp_year += 1;
+  data.card_art_url = "fake url 2";
+  data.instrument_token = "fake token 2";
+  return data;
+}
+
 void SetProfileInfo(AutofillProfile* profile,
                     const char* first_name,
                     const char* middle_name,
diff --git a/components/autofill/core/browser/autofill_test_utils.h b/components/autofill/core/browser/autofill_test_utils.h
index db80cae..2597490 100644
--- a/components/autofill/core/browser/autofill_test_utils.h
+++ b/components/autofill/core/browser/autofill_test_utils.h
@@ -12,6 +12,7 @@
 #include "components/autofill/core/browser/autofill_field.h"
 #include "components/autofill/core/browser/data_model/autofill_profile.h"
 #include "components/autofill/core/browser/data_model/credit_card.h"
+#include "components/autofill/core/browser/data_model/credit_card_cloud_token_data.h"
 #include "components/autofill/core/browser/field_types.h"
 #include "components/autofill/core/browser/proto/server.pb.h"
 
@@ -142,6 +143,13 @@
 // card is not guaranteed to be valid/sane from a card validation standpoint.
 CreditCard GetRandomCreditCard(CreditCard::RecordType record_Type);
 
+// Returns a credit card cloud token data full of dummy info.
+CreditCardCloudTokenData GetCreditCardCloudTokenData1();
+
+// Returns a credit card cloud token data full of dummy info, different from the
+// one above.
+CreditCardCloudTokenData GetCreditCardCloudTokenData2();
+
 // A unit testing utility that is common to a number of the Autofill unit
 // tests.  |SetProfileInfo| provides a quick way to populate a profile with
 // c-strings.
diff --git a/components/autofill/core/browser/data_model/credit_card.cc b/components/autofill/core/browser/data_model/credit_card.cc
index 9a93b0f0..32b01528 100644
--- a/components/autofill/core/browser/data_model/credit_card.cc
+++ b/components/autofill/core/browser/data_model/credit_card.cc
@@ -625,15 +625,6 @@
   if (record_type() == MASKED_SERVER_CARD ||
       other.record_type() == MASKED_SERVER_CARD) {
     bool last_four_digits_match = LastFourDigits() == other.LastFourDigits();
-    // The below metric is logged because this function previously compared
-    // cards' last four digits and networks if one card was masked. It may be
-    // useful to know how often networks match when the last four digits match.
-    // It is expected that when two cards' last four digits are the same, their
-    // networks will almost always match, too.
-    if (last_four_digits_match) {
-      AutofillMetrics::LogMaskedCardComparisonNetworksMatch(
-          NetworkForDisplay() == other.NetworkForDisplay());
-    }
 
     bool months_match = expiration_month() == other.expiration_month() ||
                         expiration_month() == 0 ||
diff --git a/components/autofill/core/browser/data_model/credit_card_cloud_token_data.cc b/components/autofill/core/browser/data_model/credit_card_cloud_token_data.cc
new file mode 100644
index 0000000..6a45c22
--- /dev/null
+++ b/components/autofill/core/browser/data_model/credit_card_cloud_token_data.cc
@@ -0,0 +1,78 @@
+// 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/autofill/core/browser/data_model/credit_card_cloud_token_data.h"
+#include "components/autofill/core/browser/data_model/data_model_utils.h"
+
+namespace autofill {
+
+CreditCardCloudTokenData::CreditCardCloudTokenData() = default;
+
+CreditCardCloudTokenData::CreditCardCloudTokenData(
+    const CreditCardCloudTokenData& cloud_token_data) = default;
+
+CreditCardCloudTokenData::~CreditCardCloudTokenData() = default;
+
+bool CreditCardCloudTokenData::operator==(
+    const CreditCardCloudTokenData& other_data) const {
+  return Compare(other_data) == 0;
+}
+
+bool CreditCardCloudTokenData::operator!=(
+    const CreditCardCloudTokenData& other_data) const {
+  return Compare(other_data) != 0;
+}
+
+base::string16 CreditCardCloudTokenData::ExpirationMonthAsString() const {
+  return data_util::Expiration2DigitMonthAsString(exp_month);
+}
+
+base::string16 CreditCardCloudTokenData::Expiration2DigitYearAsString() const {
+  return data_util::Expiration2DigitYearAsString(exp_year);
+}
+
+base::string16 CreditCardCloudTokenData::Expiration4DigitYearAsString() const {
+  return data_util::Expiration4DigitYearAsString(exp_year);
+}
+
+void CreditCardCloudTokenData::SetExpirationMonthFromString(
+    const base::string16& month) {
+  data_util::ParseExpirationMonth(month, /*app_locale=*/std::string(),
+                                  &exp_month);
+}
+
+void CreditCardCloudTokenData::SetExpirationYearFromString(
+    const base::string16& year) {
+  data_util::ParseExpirationYear(year, &exp_year);
+}
+
+int CreditCardCloudTokenData::Compare(
+    const CreditCardCloudTokenData& other_data) const {
+  int comparison = masked_card_id.compare(other_data.masked_card_id);
+  if (comparison != 0)
+    return comparison;
+
+  comparison = suffix.compare(other_data.suffix);
+  if (comparison != 0)
+    return comparison;
+
+  comparison = Expiration2DigitYearAsString().compare(
+      other_data.Expiration2DigitYearAsString());
+  if (comparison != 0)
+    return comparison;
+
+  comparison =
+      ExpirationMonthAsString().compare(other_data.ExpirationMonthAsString());
+  if (comparison != 0)
+    return comparison;
+
+  comparison = card_art_url.compare(other_data.card_art_url);
+  if (comparison != 0)
+    return comparison;
+
+  comparison = instrument_token.compare(other_data.instrument_token);
+  return comparison;
+}
+
+}  // namespace autofill
diff --git a/components/autofill/core/browser/data_model/credit_card_cloud_token_data.h b/components/autofill/core/browser/data_model/credit_card_cloud_token_data.h
new file mode 100644
index 0000000..516fbbae
--- /dev/null
+++ b/components/autofill/core/browser/data_model/credit_card_cloud_token_data.h
@@ -0,0 +1,55 @@
+// 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 COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_CREDIT_CARD_CLOUD_TOKEN_DATA_H_
+#define COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_CREDIT_CARD_CLOUD_TOKEN_DATA_H_
+
+#include <string>
+
+#include "base/strings/string16.h"
+
+namespace autofill {
+
+// Represents all the cloud tokenization data related to the server credit card.
+struct CreditCardCloudTokenData {
+ public:
+  CreditCardCloudTokenData();
+  CreditCardCloudTokenData(const CreditCardCloudTokenData& cloud_token_data);
+  ~CreditCardCloudTokenData();
+
+  bool operator==(const CreditCardCloudTokenData&) const;
+  bool operator!=(const CreditCardCloudTokenData&) const;
+
+  base::string16 ExpirationMonthAsString() const;
+  base::string16 Expiration2DigitYearAsString() const;
+  base::string16 Expiration4DigitYearAsString() const;
+  void SetExpirationMonthFromString(const base::string16& month);
+  void SetExpirationYearFromString(const base::string16& year);
+
+  // Used by Autofill Wallet sync bridge to compute the difference between two
+  // CreditCardCloudTokenData.
+  int Compare(const CreditCardCloudTokenData& cloud_token_data) const;
+
+  // The id assigned by the server to uniquely identify this card.
+  std::string masked_card_id;
+
+  // The last 4-5 digits of the Cloud Primary Account Number (CPAN).
+  base::string16 suffix;
+
+  // The expiration month of the CPAN.
+  int exp_month = 0;
+
+  // The 4-digit expiration year of the CPAN.
+  int exp_year = 0;
+
+  // The URL of the card art to be displayed.
+  std::string card_art_url;
+
+  // The opaque identifier for the cloud token associated with the card.
+  std::string instrument_token;
+};
+
+}  // namespace autofill
+
+#endif  // COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_CREDIT_CARD_CLOUD_TOKEN_DATA_H_
diff --git a/components/autofill/core/browser/data_model/credit_card_unittest.cc b/components/autofill/core/browser/data_model/credit_card_unittest.cc
index c420cd5..2b668fe6 100644
--- a/components/autofill/core/browser/data_model/credit_card_unittest.cc
+++ b/components/autofill/core/browser/data_model/credit_card_unittest.cc
@@ -615,40 +615,6 @@
   EXPECT_FALSE(b.HasSameNumberAs(a));
 }
 
-TEST(CreditCardTest, HasSameNumberAs_LogMaskedCardComparisonNetworksMatch) {
-  CreditCard a(base::GenerateGUID(), std::string());
-  CreditCard b(base::GenerateGUID(), std::string());
-
-  a.set_record_type(CreditCard::MASKED_SERVER_CARD);
-  a.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("4111111111111111"));
-  a.SetNetworkForMaskedCard(kVisaCard);
-  // CreditCard b's network is set to kVisaCard because it starts with 4, so the
-  // two cards have the same network.
-  b.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("4111111111111111"));
-  base::HistogramTester histogram_tester;
-  EXPECT_TRUE(a.HasSameNumberAs(b));
-  histogram_tester.ExpectUniqueSample(
-      "Autofill.MaskedCardComparisonNetworksMatch", true, 1);
-}
-
-TEST(CreditCardTest,
-     HasSameNumberAs_LogMaskedCardComparisonNetworksDoNotMatch) {
-  CreditCard a(base::GenerateGUID(), std::string());
-  CreditCard b(base::GenerateGUID(), std::string());
-
-  a.set_record_type(CreditCard::MASKED_SERVER_CARD);
-  a.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("4111111111111111"));
-  a.SetNetworkForMaskedCard(kDiscoverCard);
-  // CreditCard b's network is set to kVisaCard because it starts with 4. The
-  // two cards have the same last four digits, but their networks are different,
-  // so this discrepancy should be logged.
-  b.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("4111111111111111"));
-  base::HistogramTester histogram_tester;
-  EXPECT_TRUE(a.HasSameNumberAs(b));
-  histogram_tester.ExpectUniqueSample(
-      "Autofill.MaskedCardComparisonNetworksMatch", false, 1);
-}
-
 TEST(CreditCardTest, Compare) {
   CreditCard a(base::GenerateGUID(), std::string());
   CreditCard b(base::GenerateGUID(), std::string());
diff --git a/components/autofill/core/browser/data_model/data_model_utils.cc b/components/autofill/core/browser/data_model/data_model_utils.cc
index 8edd3db..67391ee4 100644
--- a/components/autofill/core/browser/data_model/data_model_utils.cc
+++ b/components/autofill/core/browser/data_model/data_model_utils.cc
@@ -3,6 +3,7 @@
 // found in the LICENSE file.
 
 #include "components/autofill/core/browser/data_model/data_model_utils.h"
+
 #include "base/i18n/string_search.h"
 #include "base/i18n/unicodestring.h"
 #include "base/macros.h"
diff --git a/components/autofill/core/browser/form_data_importer.h b/components/autofill/core/browser/form_data_importer.h
index 62697d9d..5518b35 100644
--- a/components/autofill/core/browser/form_data_importer.h
+++ b/components/autofill/core/browser/form_data_importer.h
@@ -90,16 +90,16 @@
   // data. If the form contains credit card data already present in a local
   // credit card entry *and* |should_return_local_card| is true, the data is
   // stored into |imported_credit_card| so that we can prompt the user whether
-  // to upload it. If the form contains UPI/VPA data and
-  // |credit_card_autofill_enabled| is true, the VPA value will be stored into
-  // |imported_vpa|. Returns |true| if sufficient address or credit card data
+  // to upload it. If the form contains UPI data and
+  // |credit_card_autofill_enabled| is true, the UPI ID will be stored into
+  // |imported_upi_id|. Returns |true| if sufficient address or credit card data
   // was found. Exposed for testing.
   bool ImportFormData(const FormStructure& form,
                       bool profile_autofill_enabled,
                       bool credit_card_autofill_enabled,
                       bool should_return_local_card,
                       std::unique_ptr<CreditCard>* imported_credit_card,
-                      base::Optional<std::string>* imported_vpa);
+                      base::Optional<std::string>* imported_upi_id);
 
   // Go through the |form| fields and attempt to extract and import valid
   // address profiles. Returns true on extraction success of at least one
@@ -126,8 +126,8 @@
   CreditCard ExtractCreditCardFromForm(const FormStructure& form,
                                        bool* hasDuplicateFieldType);
 
-  // Go through the |form| fields and find a UPI/VPA value to import. The return
-  // value will be empty if no UPI ID was found.
+  // Go through the |form| fields and find a UPI ID to import. The return value
+  // will be empty if no UPI ID was found.
   base::Optional<std::string> ImportUpiId(const FormStructure& form);
 
   // Whether a dynamic change form is imported.
diff --git a/components/autofill/core/browser/form_data_importer_unittest.cc b/components/autofill/core/browser/form_data_importer_unittest.cc
index bcc5903..664d6ee 100644
--- a/components/autofill/core/browser/form_data_importer_unittest.cc
+++ b/components/autofill/core/browser/form_data_importer_unittest.cc
@@ -2137,11 +2137,12 @@
   FormStructure form_structure(form);
   form_structure.DetermineHeuristicTypes();
   std::unique_ptr<CreditCard> imported_credit_card;
-  base::Optional<std::string> imported_vpa;
+  base::Optional<std::string> imported_upi_id;
   EXPECT_TRUE(form_data_importer_->ImportFormData(
       form_structure, /*profile_autofill_enabled=*/true,
       /*credit_card_autofill_enabled=*/true,
-      /*should_return_local_card=*/true, &imported_credit_card, &imported_vpa));
+      /*should_return_local_card=*/true, &imported_credit_card,
+      &imported_upi_id));
   ASSERT_TRUE(imported_credit_card);
   // |imported_credit_card_record_type_| should be LOCAL_CARD because upload was
   // offered and the card is a local card already on the device.
@@ -2164,7 +2165,7 @@
       form_structure2, /*profile_autofill_enabled=*/true,
       /*credit_card_autofill_enabled=*/true,
       /*should_return_local_card=*/true, &imported_credit_card2,
-      &imported_vpa));
+      &imported_upi_id));
   ASSERT_TRUE(imported_credit_card2);
   // |imported_credit_card_record_type_| should be NEW_CARD because the imported
   // card is not already on the device.
@@ -2204,7 +2205,7 @@
       form_structure3, /*profile_autofill_enabled=*/true,
       /*credit_card_autofill_enabled=*/false,
       /*should_return_local_card=*/true, &imported_credit_card3,
-      &imported_vpa));
+      &imported_upi_id));
   // |imported_credit_card_record_type_| should be NO_CARD because no valid card
   // was imported from the form.
   ASSERT_TRUE(form_data_importer_->imported_credit_card_record_type_ ==
@@ -2224,11 +2225,12 @@
   FormStructure form_structure(form);
   form_structure.DetermineHeuristicTypes();
   std::unique_ptr<CreditCard> imported_credit_card;
-  base::Optional<std::string> imported_vpa;
+  base::Optional<std::string> imported_upi_id;
   EXPECT_TRUE(form_data_importer_->ImportFormData(
       form_structure, /*profile_autofill_enabled=*/true,
       /*credit_card_autofill_enabled=*/true,
-      /*should_return_local_card=*/true, &imported_credit_card, &imported_vpa));
+      /*should_return_local_card=*/true, &imported_credit_card,
+      &imported_upi_id));
   ASSERT_TRUE(imported_credit_card);
   // |imported_credit_card_record_type_| should be NEW_CARD because the imported
   // card is not already on the device.
@@ -2262,11 +2264,12 @@
   FormStructure form_structure(form);
   form_structure.DetermineHeuristicTypes();
   std::unique_ptr<CreditCard> imported_credit_card;
-  base::Optional<std::string> imported_vpa;
+  base::Optional<std::string> imported_upi_id;
   EXPECT_TRUE(form_data_importer_->ImportFormData(
       form_structure, /*profile_autofill_enabled=*/true,
       /*credit_card_autofill_enabled=*/true,
-      /*should_return_local_card=*/true, &imported_credit_card, &imported_vpa));
+      /*should_return_local_card=*/true, &imported_credit_card,
+      &imported_upi_id));
   ASSERT_TRUE(imported_credit_card);
   // |imported_credit_card_record_type_| should be LOCAL_CARD because upload was
   // offered and the card is a local card already on the device.
@@ -2300,11 +2303,12 @@
   FormStructure form_structure(form);
   form_structure.DetermineHeuristicTypes();
   std::unique_ptr<CreditCard> imported_credit_card;
-  base::Optional<std::string> imported_vpa;
+  base::Optional<std::string> imported_upi_id;
   EXPECT_FALSE(form_data_importer_->ImportFormData(
       form_structure, /*profile_autofill_enabled=*/true,
       /*credit_card_autofill_enabled=*/true,
-      /*should_return_local_card=*/true, &imported_credit_card, &imported_vpa));
+      /*should_return_local_card=*/true, &imported_credit_card,
+      &imported_upi_id));
   ASSERT_FALSE(imported_credit_card);
   // |imported_credit_card_record_type_| should be SERVER_CARD.
   ASSERT_TRUE(form_data_importer_->imported_credit_card_record_type_ ==
@@ -2337,11 +2341,12 @@
   FormStructure form_structure(form);
   form_structure.DetermineHeuristicTypes();
   std::unique_ptr<CreditCard> imported_credit_card;
-  base::Optional<std::string> imported_vpa;
+  base::Optional<std::string> imported_upi_id;
   EXPECT_FALSE(form_data_importer_->ImportFormData(
       form_structure, /*profile_autofill_enabled=*/true,
       /*credit_card_autofill_enabled=*/true,
-      /*should_return_local_card=*/true, &imported_credit_card, &imported_vpa));
+      /*should_return_local_card=*/true, &imported_credit_card,
+      &imported_upi_id));
   ASSERT_FALSE(imported_credit_card);
   // |imported_credit_card_record_type_| should be SERVER_CARD.
   ASSERT_TRUE(form_data_importer_->imported_credit_card_record_type_ ==
@@ -2361,11 +2366,12 @@
   FormStructure form_structure(form);
   form_structure.DetermineHeuristicTypes();
   std::unique_ptr<CreditCard> imported_credit_card;
-  base::Optional<std::string> imported_vpa;
+  base::Optional<std::string> imported_upi_id;
   EXPECT_FALSE(form_data_importer_->ImportFormData(
       form_structure, /*profile_autofill_enabled=*/true,
       /*credit_card_autofill_enabled=*/true,
-      /*should_return_local_card=*/true, &imported_credit_card, &imported_vpa));
+      /*should_return_local_card=*/true, &imported_credit_card,
+      &imported_upi_id));
   ASSERT_FALSE(imported_credit_card);
   // |imported_credit_card_record_type_| should be NO_CARD because no valid card
   // was successfully imported from the form.
@@ -2389,11 +2395,12 @@
   FormStructure form_structure(form);
   form_structure.DetermineHeuristicTypes();
   std::unique_ptr<CreditCard> imported_credit_card;
-  base::Optional<std::string> imported_vpa;
+  base::Optional<std::string> imported_upi_id;
   EXPECT_FALSE(form_data_importer_->ImportFormData(
       form_structure, /*profile_autofill_enabled=*/true,
       /*credit_card_autofill_enabled=*/true,
-      /*should_return_local_card=*/true, &imported_credit_card, &imported_vpa));
+      /*should_return_local_card=*/true, &imported_credit_card,
+      &imported_upi_id));
   ASSERT_FALSE(imported_credit_card);
   // |imported_credit_card_record_type_| should be NO_CARD because no valid card
   // was successfully imported from the form.
@@ -2417,11 +2424,12 @@
   FormStructure form_structure(form);
   form_structure.DetermineHeuristicTypes();
   std::unique_ptr<CreditCard> imported_credit_card;
-  base::Optional<std::string> imported_vpa;
+  base::Optional<std::string> imported_upi_id;
   EXPECT_TRUE(form_data_importer_->ImportFormData(
       form_structure, /*profile_autofill_enabled=*/true,
       /*credit_card_autofill_enabled=*/true,
-      /*should_return_local_card=*/true, &imported_credit_card, &imported_vpa));
+      /*should_return_local_card=*/true, &imported_credit_card,
+      &imported_upi_id));
   ASSERT_TRUE(imported_credit_card);
   // |imported_credit_card_record_type_| should be NEW_CARD because card was
   // successfully imported from the form via the expiration date fix flow.
@@ -2459,11 +2467,12 @@
   FormStructure form_structure(form);
   form_structure.DetermineHeuristicTypes();
   std::unique_ptr<CreditCard> imported_credit_card;
-  base::Optional<std::string> imported_vpa;
+  base::Optional<std::string> imported_upi_id;
   EXPECT_TRUE(form_data_importer_->ImportFormData(
       form_structure, /*profile_autofill_enabled=*/true,
       /*credit_card_autofill_enabled=*/true,
-      /*should_return_local_card=*/true, &imported_credit_card, &imported_vpa));
+      /*should_return_local_card=*/true, &imported_credit_card,
+      &imported_upi_id));
   ASSERT_FALSE(imported_credit_card);
   // |imported_credit_card_record_type_| should be NO_CARD because the form
   // doesn't have credit card section.
@@ -2507,13 +2516,13 @@
   FormStructure form_structure(form);
   form_structure.DetermineHeuristicTypes();
   std::unique_ptr<CreditCard> imported_credit_card;
-  base::Optional<std::string> imported_vpa;
+  base::Optional<std::string> imported_upi_id;
   EXPECT_TRUE(form_data_importer_->ImportFormData(
       form_structure,
       /*profile_autofill_enabled=*/true,
       /*credit_card_autofill_enabled=*/true,
       /*should_return_local_card=*/false, &imported_credit_card,
-      &imported_vpa));
+      &imported_upi_id));
   ASSERT_TRUE(imported_credit_card);
   personal_data_manager_->OnAcceptedLocalCreditCardSave(*imported_credit_card);
 
@@ -2595,13 +2604,13 @@
       .WillRepeatedly(QuitMessageLoop(&run_loop));
   EXPECT_CALL(personal_data_observer_, OnPersonalDataChanged())
       .Times(testing::AnyNumber());
-  base::Optional<std::string> imported_vpa;
+  base::Optional<std::string> imported_upi_id;
   // Still returns true because the credit card import was successful.
   EXPECT_TRUE(form_data_importer_->ImportFormData(
       form_structure, /*profile_autofill_enabled=*/true,
       /*credit_card_autofill_enabled=*/true,
       /*should_return_local_card=*/false, &imported_credit_card,
-      &imported_vpa));
+      &imported_upi_id));
   run_loop.Run();
 
   ASSERT_TRUE(imported_credit_card);
@@ -2656,12 +2665,12 @@
   FormStructure form_structure(form);
   form_structure.DetermineHeuristicTypes();
   std::unique_ptr<CreditCard> imported_credit_card;
-  base::Optional<std::string> imported_vpa;
+  base::Optional<std::string> imported_upi_id;
   EXPECT_TRUE(form_data_importer_->ImportFormData(
       form_structure, /*profile_autofill_enabled=*/false,
       /*credit_card_autofill_enabled=*/true,
       /*should_return_local_card=*/false, &imported_credit_card,
-      &imported_vpa));
+      &imported_upi_id));
   ASSERT_TRUE(imported_credit_card);
   personal_data_manager_->OnAcceptedLocalCreditCardSave(*imported_credit_card);
 
@@ -2714,13 +2723,13 @@
   FormStructure form_structure(form);
   form_structure.DetermineHeuristicTypes();
   std::unique_ptr<CreditCard> imported_credit_card;
-  base::Optional<std::string> imported_vpa;
+  base::Optional<std::string> imported_upi_id;
   EXPECT_TRUE(form_data_importer_->ImportFormData(
       form_structure,
       /*profile_autofill_enabled=*/true,
       /*credit_card_autofill_enabled=*/false,
       /*should_return_local_card=*/false, &imported_credit_card,
-      &imported_vpa));
+      &imported_upi_id));
   ASSERT_FALSE(imported_credit_card);
 
   WaitForOnPersonalDataChanged();
@@ -2776,13 +2785,13 @@
   FormStructure form_structure(form);
   form_structure.DetermineHeuristicTypes();
   std::unique_ptr<CreditCard> imported_credit_card;
-  base::Optional<std::string> imported_vpa;
+  base::Optional<std::string> imported_upi_id;
   EXPECT_FALSE(form_data_importer_->ImportFormData(
       form_structure,
       /*profile_autofill_enabled=*/false,
       /*credit_card_autofill_enabled=*/false,
       /*should_return_local_card=*/false, &imported_credit_card,
-      &imported_vpa));
+      &imported_upi_id));
   ASSERT_FALSE(imported_credit_card);
 
   // Test that addresses were not saved.
@@ -2835,12 +2844,12 @@
   FormStructure form_structure(form);
   form_structure.DetermineHeuristicTypes();
   std::unique_ptr<CreditCard> imported_credit_card;
-  base::Optional<std::string> imported_vpa;
+  base::Optional<std::string> imported_upi_id;
   EXPECT_FALSE(form_data_importer_->ImportFormData(
       form_structure, /*profile_autofill_enabled=*/true,
       /*credit_card_autofill_enabled=*/true,
       /*should_return_local_card=*/false, &imported_credit_card,
-      &imported_vpa));
+      &imported_upi_id));
   ASSERT_FALSE(imported_credit_card);
 }
 
@@ -2874,13 +2883,13 @@
   FormStructure form_structure(form);
   form_structure.DetermineHeuristicTypes();
   std::unique_ptr<CreditCard> imported_credit_card;
-  base::Optional<std::string> imported_vpa;
+  base::Optional<std::string> imported_upi_id;
   // Still returns true because the credit card import was successful.
   EXPECT_TRUE(form_data_importer_->ImportFormData(
       form_structure, /*profile_autofill_enabled=*/true,
       /*credit_card_autofill_enabled=*/true,
       /*should_return_local_card=*/false, &imported_credit_card,
-      &imported_vpa));
+      &imported_upi_id));
   ASSERT_TRUE(imported_credit_card);
   personal_data_manager_->OnAcceptedLocalCreditCardSave(*imported_credit_card);
 
@@ -2961,13 +2970,13 @@
   FormStructure form_structure(form);
   form_structure.DetermineHeuristicTypes();
   std::unique_ptr<CreditCard> imported_credit_card;
-  base::Optional<std::string> imported_vpa;
+  base::Optional<std::string> imported_upi_id;
   EXPECT_FALSE(form_data_importer_->ImportFormData(
       form_structure,
       /*profile_autofill_enabled=*/true,
       /*credit_card_autofill_enabled=*/true,
       /*should_return_local_card=*/false, &imported_credit_card,
-      &imported_vpa));
+      &imported_upi_id));
   EXPECT_FALSE(imported_credit_card);
 }
 
@@ -3008,13 +3017,13 @@
   FormStructure form_structure(form);
   form_structure.DetermineHeuristicTypes();
   std::unique_ptr<CreditCard> imported_credit_card;
-  base::Optional<std::string> imported_vpa;
+  base::Optional<std::string> imported_upi_id;
   EXPECT_FALSE(form_data_importer_->ImportFormData(
       form_structure,
       /*profile_autofill_enabled=*/true,
       /*credit_card_autofill_enabled=*/true,
       /*should_return_local_card=*/false, &imported_credit_card,
-      &imported_vpa));
+      &imported_upi_id));
   EXPECT_FALSE(imported_credit_card);
   histogram_tester.ExpectUniqueSample(
       "Autofill.SubmittedServerCardExpirationStatus",
@@ -3061,13 +3070,13 @@
   FormStructure form_structure(form);
   form_structure.DetermineHeuristicTypes();
   std::unique_ptr<CreditCard> imported_credit_card;
-  base::Optional<std::string> imported_vpa;
+  base::Optional<std::string> imported_upi_id;
   EXPECT_FALSE(form_data_importer_->ImportFormData(
       form_structure,
       /*profile_autofill_enabled=*/true,
       /*credit_card_autofill_enabled=*/true,
       /*should_return_local_card=*/false, &imported_credit_card,
-      &imported_vpa));
+      &imported_upi_id));
   EXPECT_FALSE(imported_credit_card);
 }
 
@@ -3111,13 +3120,13 @@
   FormStructure form_structure(form);
   form_structure.DetermineHeuristicTypes();
   std::unique_ptr<CreditCard> imported_credit_card;
-  base::Optional<std::string> imported_vpa;
+  base::Optional<std::string> imported_upi_id;
   EXPECT_FALSE(form_data_importer_->ImportFormData(
       form_structure,
       /*profile_autofill_enabled=*/true,
       /*credit_card_autofill_enabled=*/true,
       /*should_return_local_card=*/false, &imported_credit_card,
-      &imported_vpa));
+      &imported_upi_id));
   EXPECT_FALSE(imported_credit_card);
 }
 
@@ -3162,13 +3171,13 @@
   FormStructure form_structure(form);
   form_structure.DetermineHeuristicTypes();
   std::unique_ptr<CreditCard> imported_credit_card;
-  base::Optional<std::string> imported_vpa;
+  base::Optional<std::string> imported_upi_id;
   EXPECT_TRUE(form_data_importer_->ImportFormData(
       form_structure,
       /*profile_autofill_enabled=*/true,
       /*credit_card_autofill_enabled=*/true,
       /*should_return_local_card=*/false, &imported_credit_card,
-      &imported_vpa));
+      &imported_upi_id));
   EXPECT_TRUE(imported_credit_card);
 }
 
@@ -3210,13 +3219,13 @@
   FormStructure form_structure(form);
   form_structure.DetermineHeuristicTypes();
   std::unique_ptr<CreditCard> imported_credit_card;
-  base::Optional<std::string> imported_vpa;
+  base::Optional<std::string> imported_upi_id;
   EXPECT_FALSE(form_data_importer_->ImportFormData(
       form_structure,
       /*profile_autofill_enabled=*/true,
       /*credit_card_autofill_enabled=*/true,
       /*should_return_local_card=*/false, &imported_credit_card,
-      &imported_vpa));
+      &imported_upi_id));
   EXPECT_FALSE(imported_credit_card);
   histogram_tester.ExpectUniqueSample(
       "Autofill.SubmittedServerCardExpirationStatus",
@@ -3261,13 +3270,13 @@
   FormStructure form_structure(form);
   form_structure.DetermineHeuristicTypes();
   std::unique_ptr<CreditCard> imported_credit_card;
-  base::Optional<std::string> imported_vpa;
+  base::Optional<std::string> imported_upi_id;
   EXPECT_FALSE(form_data_importer_->ImportFormData(
       form_structure,
       /*profile_autofill_enabled=*/true,
       /*credit_card_autofill_enabled=*/true,
       /*should_return_local_card=*/false, &imported_credit_card,
-      &imported_vpa));
+      &imported_upi_id));
   EXPECT_FALSE(imported_credit_card);
   histogram_tester.ExpectUniqueSample(
       "Autofill.SubmittedServerCardExpirationStatus",
@@ -3313,12 +3322,12 @@
   FormStructure form_structure(form);
   form_structure.DetermineHeuristicTypes();
   std::unique_ptr<CreditCard> imported_credit_card;
-  base::Optional<std::string> imported_vpa;
+  base::Optional<std::string> imported_upi_id;
   EXPECT_FALSE(form_data_importer_->ImportFormData(
       form_structure, /*profile_autofill_enabled=*/true,
       /*credit_card_autofill_enabled=*/true,
       /*should_return_local_card=*/false, &imported_credit_card,
-      &imported_vpa));
+      &imported_upi_id));
   EXPECT_FALSE(imported_credit_card);
   histogram_tester.ExpectUniqueSample(
       "Autofill.SubmittedServerCardExpirationStatus",
@@ -3355,22 +3364,23 @@
   form.url = GURL("https://wwww.foo.com");
 
   FormFieldData field;
-  test::CreateTestFormField("VPA:", "vpa", "user@indianbank", "text", &field);
+  test::CreateTestFormField("UPI ID:", "upi_id", "user@indianbank", "text",
+                            &field);
   form.fields.push_back(field);
 
   FormStructure form_structure(form);
   form_structure.DetermineHeuristicTypes();
 
   std::unique_ptr<CreditCard> imported_credit_card;  // Discarded.
-  base::Optional<std::string> imported_vpa;
+  base::Optional<std::string> imported_upi_id;
 
   EXPECT_FALSE(form_data_importer_->ImportFormData(
       form_structure, /*profile_autofill_enabled=*/false,
       /*credit_card_autofill_enabled=*/false,
       /*should_return_local_card=*/false, &imported_credit_card,
-      &imported_vpa));
+      &imported_upi_id));
 
-  EXPECT_FALSE(imported_vpa.has_value());
+  EXPECT_FALSE(imported_upi_id.has_value());
 }
 
 TEST_F(FormDataImporterTest, ImportUpiIdIgnoreNonUpiId) {
diff --git a/components/autofill/core/browser/payments/upi_vpa_save_manager.cc b/components/autofill/core/browser/payments/upi_vpa_save_manager.cc
index 6d6fb83..a6f8019 100644
--- a/components/autofill/core/browser/payments/upi_vpa_save_manager.cc
+++ b/components/autofill/core/browser/payments/upi_vpa_save_manager.cc
@@ -28,7 +28,7 @@
                                                  bool accepted) {
   // TODO(crbug.com/986289) Add metrics.
   if (accepted)
-    personal_data_manager_->AddVPA(upi_id);
+    personal_data_manager_->AddUpiId(upi_id);
 }
 
 }  // namespace autofill
diff --git a/components/autofill/core/browser/personal_data_manager.cc b/components/autofill/core/browser/personal_data_manager.cc
index 0d3dade..2b8b7a5 100644
--- a/components/autofill/core/browser/personal_data_manager.cc
+++ b/components/autofill/core/browser/personal_data_manager.cc
@@ -316,6 +316,7 @@
 
   LoadProfiles();
   LoadCreditCards();
+  LoadCreditCardCloudTokenData();
   LoadPaymentsCustomerData();
 
   // Check if profile cleanup has already been performed this major version.
@@ -331,9 +332,7 @@
 PersonalDataManager::~PersonalDataManager() {
   CancelPendingLocalQuery(&pending_profiles_query_);
   CancelPendingLocalQuery(&pending_creditcards_query_);
-  CancelPendingServerQuery(&pending_server_profiles_query_);
-  CancelPendingServerQuery(&pending_server_creditcards_query_);
-  CancelPendingServerQuery(&pending_customer_data_query_);
+  CancelPendingServerQueries();
 }
 
 void PersonalDataManager::Shutdown() {
@@ -398,6 +397,7 @@
     std::unique_ptr<WDTypedResult> result) {
   DCHECK(pending_profiles_query_ || pending_server_profiles_query_ ||
          pending_creditcards_query_ || pending_server_creditcards_query_ ||
+         pending_server_creditcard_cloud_token_data_query_ ||
          pending_customer_data_query_);
 
   if (!result) {
@@ -410,6 +410,8 @@
       pending_server_creditcards_query_ = 0;
     else if (h == pending_server_profiles_query_)
       pending_server_profiles_query_ = 0;
+    else if (h == pending_server_creditcard_cloud_token_data_query_)
+      pending_server_creditcard_cloud_token_data_query_ = 0;
     else if (h == pending_customer_data_query_)
       pending_customer_data_query_ = 0;
   } else {
@@ -443,6 +445,13 @@
             ResetFullServerCards();
         }
         break;
+      case AUTOFILL_CLOUDTOKEN_RESULT:
+        DCHECK_EQ(h, pending_server_creditcard_cloud_token_data_query_)
+            << "received credit card cloud token data from invalid request.";
+        ReceiveLoadedDbValues(
+            h, result.get(), &pending_server_creditcard_cloud_token_data_query_,
+            &server_credit_card_cloud_token_data_);
+        break;
       case AUTOFILL_CUSTOMERDATA_RESULT:
         DCHECK_EQ(h, pending_customer_data_query_)
             << "received customer data from invalid request.";
@@ -464,6 +473,7 @@
   if (pending_profiles_query_ == 0 && pending_creditcards_query_ == 0 &&
       pending_server_profiles_query_ == 0 &&
       pending_server_creditcards_query_ == 0 &&
+      pending_server_creditcard_cloud_token_data_query_ == 0 &&
       pending_customer_data_query_ == 0 &&
       database_helper_->GetServerDatabase()) {
     // On initial data load, is_data_loaded_ will be false here.
@@ -649,11 +659,11 @@
   }
 }
 
-void PersonalDataManager::AddVPA(const std::string& vpa_id) {
-  DCHECK(!vpa_id.empty());
+void PersonalDataManager::AddUpiId(const std::string& upi_id) {
+  DCHECK(!upi_id.empty());
   if (is_off_the_record_ || !database_helper_->GetLocalDatabase())
     return;
-  database_helper_->GetLocalDatabase()->AddVPA(vpa_id);
+  database_helper_->GetLocalDatabase()->AddUpiId(upi_id);
 }
 
 void PersonalDataManager::AddProfile(const AutofillProfile& profile) {
@@ -882,6 +892,7 @@
   server_credit_cards_.clear();
   server_profiles_.clear();
   payments_customer_data_.reset();
+  server_credit_card_cloud_token_data_.clear();
 }
 
 void PersonalDataManager::ClearAllLocalData() {
@@ -1096,9 +1107,22 @@
   return payments_customer_data_ ? payments_customer_data_.get() : nullptr;
 }
 
+std::vector<CreditCardCloudTokenData*>
+PersonalDataManager::GetCreditCardCloudTokenData() const {
+  std::vector<CreditCardCloudTokenData*> result;
+  if (!IsAutofillWalletImportEnabled())
+    return result;
+
+  result.reserve(server_credit_card_cloud_token_data_.size());
+  for (const auto& data : server_credit_card_cloud_token_data_)
+    result.push_back(data.get());
+  return result;
+}
+
 void PersonalDataManager::Refresh() {
   LoadProfiles();
   LoadCreditCards();
+  LoadCreditCardCloudTokenData();
   LoadPaymentsCustomerData();
 }
 
@@ -1609,6 +1633,16 @@
   }
 }
 
+void PersonalDataManager::LoadCreditCardCloudTokenData() {
+  if (!database_helper_->GetServerDatabase())
+    return;
+
+  CancelPendingServerQuery(&pending_server_creditcard_cloud_token_data_query_);
+
+  pending_server_creditcard_cloud_token_data_query_ =
+      database_helper_->GetServerDatabase()->GetCreditCardCloudTokenData(this);
+}
+
 void PersonalDataManager::CancelPendingLocalQuery(
     WebDataServiceBase::Handle* handle) {
   if (*handle) {
@@ -1634,15 +1668,10 @@
 }
 
 void PersonalDataManager::CancelPendingServerQueries() {
-  if (pending_server_profiles_query_) {
-    CancelPendingServerQuery(&pending_server_profiles_query_);
-  }
-  if (pending_server_creditcards_query_) {
-    CancelPendingServerQuery(&pending_server_creditcards_query_);
-  }
-  if (pending_customer_data_query_) {
-    CancelPendingServerQuery(&pending_customer_data_query_);
-  }
+  CancelPendingServerQuery(&pending_server_profiles_query_);
+  CancelPendingServerQuery(&pending_server_creditcards_query_);
+  CancelPendingServerQuery(&pending_customer_data_query_);
+  CancelPendingServerQuery(&pending_server_creditcard_cloud_token_data_query_);
 }
 
 void PersonalDataManager::LoadPaymentsCustomerData() {
diff --git a/components/autofill/core/browser/personal_data_manager.h b/components/autofill/core/browser/personal_data_manager.h
index 9da95f2..adec5a0e 100644
--- a/components/autofill/core/browser/personal_data_manager.h
+++ b/components/autofill/core/browser/personal_data_manager.h
@@ -22,6 +22,7 @@
 #include "components/autofill/core/browser/autofill_profile_validator.h"
 #include "components/autofill/core/browser/data_model/autofill_profile.h"
 #include "components/autofill/core/browser/data_model/credit_card.h"
+#include "components/autofill/core/browser/data_model/credit_card_cloud_token_data.h"
 #include "components/autofill/core/browser/data_model/test_data_creator.h"
 #include "components/autofill/core/browser/field_types.h"
 #include "components/autofill/core/browser/payments/account_info_getter.h"
@@ -154,9 +155,9 @@
   std::string OnAcceptedLocalCreditCardSave(
       const CreditCard& imported_credit_card);
 
-  // Triggered when the user accepts saving a VPA value. Stores the |vpa_id| to
+  // Triggered when the user accepts saving a UPI ID. Stores the |upi_id| to
   // the database.
-  virtual void AddVPA(const std::string& vpa_id);
+  virtual void AddUpiId(const std::string& upi_id);
 
   // Adds |profile| to the web database.
   virtual void AddProfile(const AutofillProfile& profile);
@@ -251,6 +252,10 @@
   // Returns the Payments customer data. Returns nullptr if no data is present.
   virtual PaymentsCustomerData* GetPaymentsCustomerData() const;
 
+  // Returns the credit card cloud token data.
+  virtual std::vector<CreditCardCloudTokenData*> GetCreditCardCloudTokenData()
+      const;
+
   // Updates the validity states of |profiles| according to server validity map.
   void UpdateProfilesServerValidityMapsIfNeeded(
       const std::vector<AutofillProfile*>& profiles);
@@ -505,6 +510,9 @@
   // Loads the saved credit cards from the web database.
   virtual void LoadCreditCards();
 
+  // Loads the saved credit card cloud token data from the web database.
+  virtual void LoadCreditCardCloudTokenData();
+
   // Loads the payments customer data from the web database.
   virtual void LoadPaymentsCustomerData();
 
@@ -566,6 +574,10 @@
   std::vector<std::unique_ptr<CreditCard>> local_credit_cards_;
   std::vector<std::unique_ptr<CreditCard>> server_credit_cards_;
 
+  // Cached version of the CreditCardCloudTokenData obtained from the database.
+  std::vector<std::unique_ptr<CreditCardCloudTokenData>>
+      server_credit_card_cloud_token_data_;
+
   // When the manager makes a request from WebDataServiceBase, the database
   // is queried on another sequence, we record the query handle until we
   // get called back.  We store handles for both profile and credit card queries
@@ -574,6 +586,8 @@
   WebDataServiceBase::Handle pending_server_profiles_query_ = 0;
   WebDataServiceBase::Handle pending_creditcards_query_ = 0;
   WebDataServiceBase::Handle pending_server_creditcards_query_ = 0;
+  WebDataServiceBase::Handle pending_server_creditcard_cloud_token_data_query_ =
+      0;
   WebDataServiceBase::Handle pending_customer_data_query_ = 0;
 
   // The observers.
diff --git a/components/autofill/core/browser/test_personal_data_manager.cc b/components/autofill/core/browser/test_personal_data_manager.cc
index d2194be..25f2f4b 100644
--- a/components/autofill/core/browser/test_personal_data_manager.cc
+++ b/components/autofill/core/browser/test_personal_data_manager.cc
@@ -46,7 +46,7 @@
   return imported_credit_card.guid();
 }
 
-void TestPersonalDataManager::AddVPA(const std::string& profile) {
+void TestPersonalDataManager::AddUpiId(const std::string& profile) {
   num_times_save_upi_id_called_++;
 }
 
@@ -190,6 +190,19 @@
   }
 }
 
+void TestPersonalDataManager::LoadCreditCardCloudTokenData() {
+  pending_server_creditcard_cloud_token_data_query_ = 127;
+  {
+    std::vector<std::unique_ptr<CreditCardCloudTokenData>> cloud_token_data;
+    server_credit_card_cloud_token_data_.swap(cloud_token_data);
+    std::unique_ptr<WDTypedResult> result = std::make_unique<
+        WDResult<std::vector<std::unique_ptr<CreditCardCloudTokenData>>>>(
+        AUTOFILL_CLOUDTOKEN_RESULT, std::move(cloud_token_data));
+    OnWebDataServiceRequestDone(
+        pending_server_creditcard_cloud_token_data_query_, std::move(result));
+  }
+}
+
 bool TestPersonalDataManager::IsAutofillEnabled() const {
   return IsAutofillProfileEnabled() || IsAutofillCreditCardEnabled();
 }
diff --git a/components/autofill/core/browser/test_personal_data_manager.h b/components/autofill/core/browser/test_personal_data_manager.h
index 3dd2504b..5aa67fd4 100644
--- a/components/autofill/core/browser/test_personal_data_manager.h
+++ b/components/autofill/core/browser/test_personal_data_manager.h
@@ -34,7 +34,7 @@
       const AutofillProfile& imported_profile) override;
   std::string SaveImportedCreditCard(
       const CreditCard& imported_credit_card) override;
-  void AddVPA(const std::string& vpa) override;
+  void AddUpiId(const std::string& upi_id) override;
   void AddProfile(const AutofillProfile& profile) override;
   void UpdateProfile(const AutofillProfile& profile) override;
   void RemoveByGUID(const std::string& guid) override;
@@ -47,6 +47,7 @@
   void SetProfiles(std::vector<AutofillProfile>* profiles) override;
   void LoadProfiles() override;
   void LoadCreditCards() override;
+  void LoadCreditCardCloudTokenData() override;
   bool IsAutofillEnabled() const override;
   bool IsAutofillProfileEnabled() const override;
   bool IsAutofillCreditCardEnabled() const override;
diff --git a/components/autofill/core/browser/webdata/autofill_sync_bridge_test_util.cc b/components/autofill/core/browser/webdata/autofill_sync_bridge_test_util.cc
index ca2b11aa..cf205d4 100644
--- a/components/autofill/core/browser/webdata/autofill_sync_bridge_test_util.cc
+++ b/components/autofill/core/browser/webdata/autofill_sync_bridge_test_util.cc
@@ -58,4 +58,18 @@
   return wallet_specifics;
 }
 
+sync_pb::AutofillWalletSpecifics
+CreateAutofillWalletSpecificsForCreditCardCloudTokenData(
+    const std::string& client_tag) {
+  sync_pb::AutofillWalletSpecifics wallet_specifics;
+  wallet_specifics.set_type(
+      sync_pb::AutofillWalletSpecifics_WalletInfoType::
+          AutofillWalletSpecifics_WalletInfoType_CREDIT_CARD_CLOUD_TOKEN_DATA);
+
+  sync_pb::WalletCreditCardCloudTokenData* cloud_token_data_specifics =
+      wallet_specifics.mutable_cloud_token_data();
+  cloud_token_data_specifics->set_instrument_token(client_tag);
+  return wallet_specifics;
+}
+
 }  // namespace autofill
diff --git a/components/autofill/core/browser/webdata/autofill_sync_bridge_test_util.h b/components/autofill/core/browser/webdata/autofill_sync_bridge_test_util.h
index 6afdfd1..0440911 100644
--- a/components/autofill/core/browser/webdata/autofill_sync_bridge_test_util.h
+++ b/components/autofill/core/browser/webdata/autofill_sync_bridge_test_util.h
@@ -28,6 +28,10 @@
 CreateAutofillWalletSpecificsForPaymentsCustomerData(
     const std::string& client_tag);
 
+sync_pb::AutofillWalletSpecifics
+CreateAutofillWalletSpecificsForCreditCardCloudTokenData(
+    const std::string& client_tag);
+
 }  // namespace autofill
 
 #endif  // COMPONENTS_AUTOFILL_CORE_BROWSER_WEBDATA_AUTOFILL_SYNC_BRIDGE_TEST_UTIL_H_
diff --git a/components/autofill/core/browser/webdata/autofill_sync_bridge_util.cc b/components/autofill/core/browser/webdata/autofill_sync_bridge_util.cc
index f8128be4..1ad33b0 100644
--- a/components/autofill/core/browser/webdata/autofill_sync_bridge_util.cc
+++ b/components/autofill/core/browser/webdata/autofill_sync_bridge_util.cc
@@ -11,6 +11,7 @@
 #include "components/autofill/core/browser/autofill_data_util.h"
 #include "components/autofill/core/browser/data_model/autofill_profile.h"
 #include "components/autofill/core/browser/data_model/credit_card.h"
+#include "components/autofill/core/browser/data_model/credit_card_cloud_token_data.h"
 #include "components/autofill/core/browser/payments/payments_customer_data.h"
 #include "components/autofill/core/browser/webdata/autofill_table.h"
 #include "components/autofill/core/common/autofill_util.h"
@@ -137,6 +138,20 @@
   return PaymentsCustomerData{/*customer_id=*/customer_data.id()};
 }
 
+// Creates a CreditCardCloudTokenData object corresponding to the sync datatype
+// |cloud_token_data|.
+CreditCardCloudTokenData CloudTokenDataFromSpecifics(
+    const sync_pb::WalletCreditCardCloudTokenData& cloud_token_data) {
+  CreditCardCloudTokenData result;
+  result.masked_card_id = cloud_token_data.masked_card_id();
+  result.suffix = base::UTF8ToUTF16(cloud_token_data.suffix());
+  result.exp_month = cloud_token_data.exp_month();
+  result.exp_year = cloud_token_data.exp_year();
+  result.card_art_url = cloud_token_data.art_fife_url();
+  result.instrument_token = cloud_token_data.instrument_token();
+  return result;
+}
+
 }  // namespace
 
 std::string GetBase64EncodedId(const std::string& id) {
@@ -267,6 +282,33 @@
   mutable_customer_data->set_id(customer_data.customer_id);
 }
 
+void SetAutofillWalletSpecificsFromCreditCardCloudTokenData(
+    const CreditCardCloudTokenData& cloud_token_data,
+    sync_pb::AutofillWalletSpecifics* wallet_specifics,
+    bool enforce_utf8) {
+  wallet_specifics->set_type(
+      AutofillWalletSpecifics::CREDIT_CARD_CLOUD_TOKEN_DATA);
+
+  sync_pb::WalletCreditCardCloudTokenData* mutable_cloud_token_data =
+      wallet_specifics->mutable_cloud_token_data();
+
+  if (enforce_utf8) {
+    mutable_cloud_token_data->set_masked_card_id(
+        GetBase64EncodedId(cloud_token_data.masked_card_id));
+  } else {
+    mutable_cloud_token_data->set_masked_card_id(
+        cloud_token_data.masked_card_id);
+  }
+
+  mutable_cloud_token_data->set_suffix(
+      base::UTF16ToUTF8(cloud_token_data.suffix));
+  mutable_cloud_token_data->set_exp_month(cloud_token_data.exp_month);
+  mutable_cloud_token_data->set_exp_year(cloud_token_data.exp_year);
+  mutable_cloud_token_data->set_art_fife_url(cloud_token_data.card_art_url);
+  mutable_cloud_token_data->set_instrument_token(
+      cloud_token_data.instrument_token);
+}
+
 AutofillProfile ProfileFromSpecifics(
     const sync_pb::WalletPostalAddress& address) {
   AutofillProfile profile(AutofillProfile::SERVER_PROFILE, std::string());
@@ -336,7 +378,8 @@
     const syncer::EntityChangeList& entity_data,
     std::vector<CreditCard>* wallet_cards,
     std::vector<AutofillProfile>* wallet_addresses,
-    std::vector<PaymentsCustomerData>* customer_data) {
+    std::vector<PaymentsCustomerData>* customer_data,
+    std::vector<CreditCardCloudTokenData>* cloud_token_data) {
   std::map<std::string, std::string> ids;
 
   for (const std::unique_ptr<syncer::EntityChange>& change : entity_data) {
@@ -368,7 +411,8 @@
             CustomerDataFromSpecifics(autofill_specifics.customer_data()));
         break;
       case sync_pb::AutofillWalletSpecifics::CREDIT_CARD_CLOUD_TOKEN_DATA:
-        // TODO(crbug.com/1020740): Implement this type.
+        cloud_token_data->push_back(
+            CloudTokenDataFromSpecifics(autofill_specifics.cloud_token_data()));
         break;
       case sync_pb::AutofillWalletSpecifics::UNKNOWN:
         // Just ignore new entry types that the client doesn't know about.
diff --git a/components/autofill/core/browser/webdata/autofill_sync_bridge_util.h b/components/autofill/core/browser/webdata/autofill_sync_bridge_util.h
index d346a67..5f1d54a 100644
--- a/components/autofill/core/browser/webdata/autofill_sync_bridge_util.h
+++ b/components/autofill/core/browser/webdata/autofill_sync_bridge_util.h
@@ -16,6 +16,7 @@
 class AutofillProfile;
 class AutofillTable;
 class CreditCard;
+struct CreditCardCloudTokenData;
 struct PaymentsCustomerData;
 
 // Returns the specified |id| encoded in / decoded from base 64.
@@ -48,6 +49,13 @@
     const PaymentsCustomerData& customer_data,
     sync_pb::AutofillWalletSpecifics* wallet_specifics);
 
+// Sets the field of the |wallet_specifics| based on the specified
+// |cloud_token_data|. If |enforce_utf8|, ids are encoded into UTF-8.
+void SetAutofillWalletSpecificsFromCreditCardCloudTokenData(
+    const CreditCardCloudTokenData& cloud_token_data,
+    sync_pb::AutofillWalletSpecifics* wallet_specifics,
+    bool enforce_utf8 = false);
+
 // Creates an AutofillProfile from the specified |address| specifics.
 AutofillProfile ProfileFromSpecifics(
     const sync_pb::WalletPostalAddress& address);
@@ -69,7 +77,8 @@
     const ::syncer::EntityChangeList& entity_data,
     std::vector<CreditCard>* wallet_cards,
     std::vector<AutofillProfile>* wallet_addresses,
-    std::vector<PaymentsCustomerData>* customer_data);
+    std::vector<PaymentsCustomerData>* customer_data,
+    std::vector<CreditCardCloudTokenData>* cloud_token_data);
 
 }  // namespace autofill
 
diff --git a/components/autofill/core/browser/webdata/autofill_sync_bridge_util_unittest.cc b/components/autofill/core/browser/webdata/autofill_sync_bridge_util_unittest.cc
index 997d51b1..39e44a9a 100644
--- a/components/autofill/core/browser/webdata/autofill_sync_bridge_util_unittest.cc
+++ b/components/autofill/core/browser/webdata/autofill_sync_bridge_util_unittest.cc
@@ -9,6 +9,7 @@
 #include "base/strings/utf_string_conversions.h"
 #include "components/autofill/core/browser/data_model/autofill_profile.h"
 #include "components/autofill/core/browser/data_model/credit_card.h"
+#include "components/autofill/core/browser/data_model/credit_card_cloud_token_data.h"
 #include "components/autofill/core/browser/payments/payments_customer_data.h"
 #include "components/autofill/core/browser/test_autofill_clock.h"
 #include "components/autofill/core/browser/webdata/autofill_sync_bridge_test_util.h"
@@ -84,18 +85,26 @@
       SpecificsToEntity(CreateAutofillWalletSpecificsForPaymentsCustomerData(
                             /*specifics_id=*/"deadbeef"),
                         /*client_tag=*/"customer-deadbeef")));
+  entity_data.push_back(EntityChange::CreateAdd(
+      "data1", SpecificsToEntity(
+                   CreateAutofillWalletSpecificsForCreditCardCloudTokenData(
+                       /*specifics_id=*/"data1"),
+                   /*client_tag=*/"token-data1")));
 
   std::vector<CreditCard> wallet_cards;
   std::vector<AutofillProfile> wallet_addresses;
   std::vector<PaymentsCustomerData> customer_data;
+  std::vector<CreditCardCloudTokenData> cloud_token_data;
   PopulateWalletTypesFromSyncData(entity_data, &wallet_cards, &wallet_addresses,
-                                  &customer_data);
+                                  &customer_data, &cloud_token_data);
 
   ASSERT_EQ(1U, wallet_cards.size());
   ASSERT_EQ(1U, wallet_addresses.size());
 
   EXPECT_EQ("deadbeef", customer_data.back().customer_id);
 
+  EXPECT_EQ("data1", cloud_token_data.back().instrument_token);
+
   // Make sure the card's billing address id is equal to the address' server id.
   EXPECT_EQ(wallet_addresses.back().server_id(),
             wallet_cards.back().billing_address_id());
diff --git a/components/autofill/core/browser/webdata/autofill_table.cc b/components/autofill/core/browser/webdata/autofill_table.cc
index c6448b4..87459e2 100644
--- a/components/autofill/core/browser/webdata/autofill_table.cc
+++ b/components/autofill/core/browser/webdata/autofill_table.cc
@@ -26,6 +26,7 @@
 #include "components/autofill/core/browser/data_model/autofill_metadata.h"
 #include "components/autofill/core/browser/data_model/autofill_profile.h"
 #include "components/autofill/core/browser/data_model/credit_card.h"
+#include "components/autofill/core/browser/data_model/credit_card_cloud_token_data.h"
 #include "components/autofill/core/browser/geo/autofill_country.h"
 #include "components/autofill/core/browser/payments/payments_customer_data.h"
 #include "components/autofill/core/browser/personal_data_manager.h"
@@ -411,7 +412,8 @@
           InitServerCardMetadataTable() && InitServerAddressesTable() &&
           InitServerAddressMetadataTable() && InitAutofillSyncMetadataTable() &&
           InitModelTypeStateTable() && InitPaymentsCustomerDataTable() &&
-          InitPaymentsUPIVPATable());
+          InitPaymentsUPIVPATable() &&
+          InitServerCreditCardCloudTokenDataTable());
 }
 
 bool AutofillTable::IsSyncable() {
@@ -1608,6 +1610,72 @@
   transaction.Commit();
 }
 
+void AutofillTable::SetCreditCardCloudTokenData(
+    const std::vector<CreditCardCloudTokenData>& credit_card_cloud_token_data) {
+  sql::Transaction transaction(db_);
+  if (!transaction.Begin())
+    return;
+
+  // Deletes all old values.
+  sql::Statement delete_cloud_token(
+      db_->GetUniqueStatement("DELETE FROM server_card_cloud_token_data"));
+  delete_cloud_token.Run();
+
+  // Inserts new values.
+  sql::Statement insert_cloud_token(
+      db_->GetUniqueStatement("INSERT INTO server_card_cloud_token_data("
+                              "id,"                 // 0
+                              "suffix,"             // 1
+                              "exp_month,"          // 2
+                              "exp_year,"           // 3
+                              "card_art_url,"       // 4
+                              "instrument_token) "  // 5
+                              "VALUES (?,?,?,?,?,?)"));
+
+  for (const CreditCardCloudTokenData& data : credit_card_cloud_token_data) {
+    insert_cloud_token.BindString(0, data.masked_card_id);
+    insert_cloud_token.BindString16(1, data.suffix);
+    insert_cloud_token.BindString16(2, data.ExpirationMonthAsString());
+    insert_cloud_token.BindString16(3, data.Expiration4DigitYearAsString());
+    insert_cloud_token.BindString(4, data.card_art_url);
+    insert_cloud_token.BindString(5, data.instrument_token);
+    insert_cloud_token.Run();
+    insert_cloud_token.Reset(true);
+  }
+  transaction.Commit();
+}
+
+bool AutofillTable::GetCreditCardCloudTokenData(
+    std::vector<std::unique_ptr<CreditCardCloudTokenData>>*
+        credit_card_cloud_token_data) {
+  credit_card_cloud_token_data->clear();
+
+  sql::Statement s(
+      db_->GetUniqueStatement("SELECT "
+                              "id, "               // 0
+                              "suffix, "           // 1
+                              "exp_month, "        // 2
+                              "exp_year, "         // 3
+                              "card_art_url, "     // 4
+                              "instrument_token "  // 5
+                              "FROM server_card_cloud_token_data"));
+
+  while (s.Step()) {
+    int index = 0;
+    std::unique_ptr<CreditCardCloudTokenData> data =
+        std::make_unique<CreditCardCloudTokenData>();
+    data->masked_card_id = s.ColumnString(index++);
+    data->suffix = s.ColumnString16(index++);
+    data->SetExpirationMonthFromString(s.ColumnString16(index++));
+    data->SetExpirationYearFromString(s.ColumnString16(index++));
+    data->card_art_url = s.ColumnString(index++);
+    data->instrument_token = s.ColumnString(index++);
+    credit_card_cloud_token_data->push_back(std::move(data));
+  }
+
+  return s.Succeeded();
+}
+
 void AutofillTable::SetPaymentsCustomerData(
     const PaymentsCustomerData* customer_data) {
   sql::Transaction transaction(db_);
@@ -1641,15 +1709,15 @@
   return s.Succeeded();
 }
 
-bool AutofillTable::InsertVPA(const std::string& vpa) {
+bool AutofillTable::InsertUpiId(const std::string& upi_id) {
   sql::Transaction transaction(db_);
   if (!transaction.Begin())
     return false;
 
-  sql::Statement insert_vpa_statement(
+  sql::Statement insert_upi_id_statement(
       db_->GetUniqueStatement("INSERT INTO payments_upi_vpa (vpa) VALUES (?)"));
-  insert_vpa_statement.BindString(0, vpa);
-  insert_vpa_statement.Run();
+  insert_upi_id_statement.BindString(0, upi_id);
+  insert_upi_id_statement.Run();
 
   transaction.Commit();
 
@@ -1691,6 +1759,11 @@
   customer_data.Run();
   changed |= db_->GetLastChangeCount() > 0;
 
+  sql::Statement cloud_token_data(
+      db_->GetUniqueStatement("DELETE FROM server_card_cloud_token_data"));
+  cloud_token_data.Run();
+  changed |= db_->GetLastChangeCount() > 0;
+
   transaction.Commit();
   return changed;
 }
@@ -3138,4 +3211,20 @@
   return true;
 }
 
+bool AutofillTable::InitServerCreditCardCloudTokenDataTable() {
+  if (!db_->DoesTableExist("server_card_cloud_token_data")) {
+    if (!db_->Execute("CREATE TABLE server_card_cloud_token_data ( "
+                      "id VARCHAR, "
+                      "suffix VARCHAR, "
+                      "exp_month INTEGER DEFAULT 0, "
+                      "exp_year INTEGER DEFAULT 0, "
+                      "card_art_url VARCHAR, "
+                      "instrument_token VARCHAR)")) {
+      NOTREACHED();
+      return false;
+    }
+  }
+  return true;
+}
+
 }  // namespace autofill
diff --git a/components/autofill/core/browser/webdata/autofill_table.h b/components/autofill/core/browser/webdata/autofill_table.h
index ba29c015..69e95ee 100644
--- a/components/autofill/core/browser/webdata/autofill_table.h
+++ b/components/autofill/core/browser/webdata/autofill_table.h
@@ -35,6 +35,7 @@
 class AutofillTableEncryptor;
 class AutofillTableTest;
 class CreditCard;
+struct CreditCardCloudTokenData;
 struct FormFieldData;
 struct PaymentsCustomerData;
 
@@ -196,6 +197,20 @@
 //   unmask_date        The date this card was unmasked in units of
 //                      Time::ToInternalValue. Added in version 64.
 //
+// server_card_cloud_token_data
+//                      Stores data related to Cloud Primary Account Number
+//                      (CPAN) of server credit cards. Each card can have
+//                      multiple entries.
+//
+//   id                 The server ID, which matches an ID from the
+//                      masked_credit_cards table.
+//   suffix             Last 4-5 digits of the Cloud Primary Account Number.
+//   exp_month          Expiration month associated with the CPAN.
+//   exp_year           Four-digit Expiration year associated with the CPAN.
+//   card_art_url       URL of the card art to be displayed for CPAN.
+//   instrument_token   Opaque identifier for the cloud token associated with
+//                      the payment instrument.
+//
 // server_card_metadata
 //                      Metadata (currently, usage data) about server credit
 //                      cards. This will be synced.
@@ -279,7 +294,7 @@
 // payments_upi_vpa     Contains saved UPI/VPA payment data.
 //                      https://en.wikipedia.org/wiki/Unified_Payments_Interface
 //
-//   vpa_id             A string representing the VPA value.
+//   vpa_id             A string representing the UPI ID (a.k.a. VPA) value.
 
 class AutofillTable : public WebDatabaseTable,
                       public syncer::SyncMetadataStore {
@@ -432,6 +447,14 @@
   void SetServerCardsData(const std::vector<CreditCard>& credit_cards);
   void SetServerAddressesData(const std::vector<AutofillProfile>& profiles);
 
+  // Setters and getters related to the CreditCardCloudTokenData of server
+  // cards. Used by AutofillWalletSyncBridge to interact with the stored data.
+  void SetCreditCardCloudTokenData(const std::vector<CreditCardCloudTokenData>&
+                                       credit_card_cloud_token_data);
+  bool GetCreditCardCloudTokenData(
+      std::vector<std::unique_ptr<CreditCardCloudTokenData>>*
+          credit_card_cloud_token_data);
+
   // Setters and getters related to the Google Payments customer data.
   // Passing null to the setter will clear the data.
   void SetPaymentsCustomerData(const PaymentsCustomerData* customer_data);
@@ -440,8 +463,8 @@
   bool GetPaymentsCustomerData(
       std::unique_ptr<PaymentsCustomerData>* customer_data) const;
 
-  // Adds |vpa| to the saved VPA ids.
-  bool InsertVPA(const std::string& vpa);
+  // Adds |upi_id| to the saved UPI IDs.
+  bool InsertUpiId(const std::string& upi_id);
 
   // Deletes all data from the server card and profile tables. Returns true if
   // any data was deleted, false if not (so false means "commit not needed"
@@ -635,6 +658,7 @@
   bool InitModelTypeStateTable();
   bool InitPaymentsCustomerDataTable();
   bool InitPaymentsUPIVPATable();
+  bool InitServerCreditCardCloudTokenDataTable();
 
   std::unique_ptr<AutofillTableEncryptor> autofill_table_encryptor_;
 
diff --git a/components/autofill/core/browser/webdata/autofill_table_unittest.cc b/components/autofill/core/browser/webdata/autofill_table_unittest.cc
index 54444cb..17dc23e 100644
--- a/components/autofill/core/browser/webdata/autofill_table_unittest.cc
+++ b/components/autofill/core/browser/webdata/autofill_table_unittest.cc
@@ -25,6 +25,7 @@
 #include "components/autofill/core/browser/data_model/autofill_metadata.h"
 #include "components/autofill/core/browser/data_model/autofill_profile.h"
 #include "components/autofill/core/browser/data_model/credit_card.h"
+#include "components/autofill/core/browser/data_model/credit_card_cloud_token_data.h"
 #include "components/autofill/core/browser/payments/payments_customer_data.h"
 #include "components/autofill/core/browser/webdata/autofill_change.h"
 #include "components/autofill/core/browser/webdata/autofill_entry.h"
@@ -2628,6 +2629,42 @@
   EXPECT_EQ(input3, *output);
 }
 
+TEST_F(AutofillTableTest, SetGetCreditCardCloudData_OneTimeSet) {
+  std::vector<CreditCardCloudTokenData> inputs;
+  inputs.push_back(test::GetCreditCardCloudTokenData1());
+  inputs.push_back(test::GetCreditCardCloudTokenData2());
+  table_->SetCreditCardCloudTokenData(inputs);
+
+  std::vector<std::unique_ptr<CreditCardCloudTokenData>> outputs;
+  ASSERT_TRUE(table_->GetCreditCardCloudTokenData(&outputs));
+  EXPECT_EQ(outputs.size(), inputs.size());
+  EXPECT_EQ(0, outputs[0]->Compare(test::GetCreditCardCloudTokenData1()));
+  EXPECT_EQ(0, outputs[1]->Compare(test::GetCreditCardCloudTokenData2()));
+}
+
+TEST_F(AutofillTableTest, SetGetCreditCardCloudData_MultipleSet) {
+  std::vector<CreditCardCloudTokenData> inputs;
+  CreditCardCloudTokenData input1 = test::GetCreditCardCloudTokenData1();
+  inputs.push_back(input1);
+  table_->SetCreditCardCloudTokenData(inputs);
+
+  inputs.clear();
+  CreditCardCloudTokenData input2 = test::GetCreditCardCloudTokenData2();
+  inputs.push_back(input2);
+  table_->SetCreditCardCloudTokenData(inputs);
+
+  std::vector<std::unique_ptr<CreditCardCloudTokenData>> outputs;
+  ASSERT_TRUE(table_->GetCreditCardCloudTokenData(&outputs));
+  EXPECT_EQ(1u, outputs.size());
+  EXPECT_EQ(0, outputs[0]->Compare(test::GetCreditCardCloudTokenData2()));
+}
+
+TEST_F(AutofillTableTest, GetCreditCardCloudData_NoData) {
+  std::vector<std::unique_ptr<CreditCardCloudTokenData>> output;
+  ASSERT_TRUE(table_->GetCreditCardCloudTokenData(&output));
+  EXPECT_TRUE(output.empty());
+}
+
 const size_t kMaxCount = 2;
 struct GetFormValuesTestCase {
   const char* const field_suggestion[kMaxCount];
@@ -3000,8 +3037,8 @@
   EXPECT_FALSE(s_autofill_profile_phones.Step());
 }
 
-TEST_F(AutofillTableTest, VPA) {
-  EXPECT_TRUE(table_->InsertVPA("name@indianbank"));
+TEST_F(AutofillTableTest, UpiId) {
+  EXPECT_TRUE(table_->InsertUpiId("name@indianbank"));
 
   sql::Statement s_inspect(db_->GetSQLConnection()->GetUniqueStatement(
       "SELECT vpa FROM payments_upi_vpa"));
diff --git a/components/autofill/core/browser/webdata/autofill_wallet_sync_bridge.cc b/components/autofill/core/browser/webdata/autofill_wallet_sync_bridge.cc
index 8acae51b..2199b0d 100644
--- a/components/autofill/core/browser/webdata/autofill_wallet_sync_bridge.cc
+++ b/components/autofill/core/browser/webdata/autofill_wallet_sync_bridge.cc
@@ -14,6 +14,7 @@
 #include "components/autofill/core/browser/autofill_profile_sync_util.h"
 #include "components/autofill/core/browser/data_model/autofill_profile.h"
 #include "components/autofill/core/browser/data_model/credit_card.h"
+#include "components/autofill/core/browser/data_model/credit_card_cloud_token_data.h"
 #include "components/autofill/core/browser/payments/payments_customer_data.h"
 #include "components/autofill/core/browser/webdata/autofill_sync_bridge_util.h"
 #include "components/autofill/core/browser/webdata/autofill_table.h"
@@ -54,6 +55,11 @@
   return customer_data.customer_id;
 }
 
+std::string GetClientTagFromCreditCardCloudTokenData(
+    const CreditCardCloudTokenData& cloud_token_data) {
+  return cloud_token_data.instrument_token;
+}
+
 // Returns the storage key to be used for wallet data for the specified wallet
 // data |client_tag|.
 std::string GetStorageKeyForWalletDataClientTag(const std::string& client_tag) {
@@ -111,6 +117,24 @@
   return entity_data;
 }
 
+// Creates a EntityData object corresponding to the specified
+// |cloud_token_data|.
+std::unique_ptr<EntityData> CreateEntityDataFromCreditCardCloudTokenData(
+    const CreditCardCloudTokenData& cloud_token_data,
+    bool enforce_utf8) {
+  auto entity_data = std::make_unique<EntityData>();
+  entity_data->name =
+      "Server card cloud token data " +
+      GetBase64EncodedId(
+          GetClientTagFromCreditCardCloudTokenData(cloud_token_data));
+
+  AutofillWalletSpecifics* wallet_specifics =
+      entity_data->specifics.mutable_autofill_wallet();
+  SetAutofillWalletSpecificsFromCreditCardCloudTokenData(
+      cloud_token_data, wallet_specifics, enforce_utf8);
+  return entity_data;
+}
+
 }  // namespace
 
 // static
@@ -242,9 +266,11 @@
 
   std::vector<std::unique_ptr<AutofillProfile>> profiles;
   std::vector<std::unique_ptr<CreditCard>> cards;
+  std::vector<std::unique_ptr<CreditCardCloudTokenData>> cloud_token_data;
   std::unique_ptr<PaymentsCustomerData> customer_data;
   if (!GetAutofillTable()->GetServerProfiles(&profiles) ||
       !GetAutofillTable()->GetServerCreditCards(&cards) ||
+      !GetAutofillTable()->GetCreditCardCloudTokenData(&cloud_token_data) ||
       !GetAutofillTable()->GetPaymentsCustomerData(&customer_data)) {
     change_processor()->ReportError(
         {FROM_HERE, "Failed to load entries from table."});
@@ -262,6 +288,13 @@
         GetStorageKeyForWalletDataClientTag(GetClientTagFromCreditCard(*entry)),
         CreateEntityDataFromCard(*entry, enforce_utf8));
   }
+  for (const std::unique_ptr<CreditCardCloudTokenData>& entry :
+       cloud_token_data) {
+    batch->Put(
+        GetStorageKeyForWalletDataClientTag(
+            GetClientTagFromCreditCardCloudTokenData(*entry)),
+        CreateEntityDataFromCreditCardCloudTokenData(*entry, enforce_utf8));
+  }
 
   if (customer_data) {
     batch->Put(GetStorageKeyForWalletDataClientTag(
@@ -280,14 +313,17 @@
   std::vector<CreditCard> wallet_cards;
   std::vector<AutofillProfile> wallet_addresses;
   std::vector<PaymentsCustomerData> customer_data;
+  std::vector<CreditCardCloudTokenData> cloud_token_data;
   PopulateWalletTypesFromSyncData(entity_data, &wallet_cards, &wallet_addresses,
-                                  &customer_data);
+                                  &customer_data, &cloud_token_data);
 
-  wallet_data_changed |= SetPaymentsCustomerData(std::move(customer_data));
   wallet_data_changed |=
       SetWalletCards(std::move(wallet_cards), notify_metadata_bridge);
   wallet_data_changed |=
       SetWalletAddresses(std::move(wallet_addresses), notify_metadata_bridge);
+  wallet_data_changed |= SetPaymentsCustomerData(std::move(customer_data));
+  wallet_data_changed |=
+      SetCreditCardCloudTokenData(std::move(cloud_token_data));
 
   // Commit the transaction to make sure the data and the metadata with the
   // new progress marker is written down (especially on Android where we
@@ -394,6 +430,22 @@
   return false;
 }
 
+bool AutofillWalletSyncBridge::SetCreditCardCloudTokenData(
+    const std::vector<CreditCardCloudTokenData>& cloud_token_data) {
+  AutofillTable* table = GetAutofillTable();
+  std::vector<std::unique_ptr<CreditCardCloudTokenData>> existing_data;
+  table->GetCreditCardCloudTokenData(&existing_data);
+
+  if (ShouldResetAutofillWalletData(existing_data, cloud_token_data)) {
+    table->SetCreditCardCloudTokenData(cloud_token_data);
+    return true;
+  }
+  return false;
+}
+
+// TODO(crbug.com/1020740): Move the shared code for ComputeAutofillWalletDiff
+// and ShouldResetAutofillWalletData into a util function in
+// autofill_sync_bridge_util.*.
 template <class Item>
 AutofillWalletSyncBridge::AutofillWalletDiff<Item>
 AutofillWalletSyncBridge::ComputeAutofillWalletDiff(
@@ -461,6 +513,36 @@
   return result;
 }
 
+template <class Item>
+bool AutofillWalletSyncBridge::ShouldResetAutofillWalletData(
+    const std::vector<std::unique_ptr<Item>>& old_data,
+    const std::vector<Item>& new_data) {
+  std::vector<const Item*> old_ptrs;
+  old_ptrs.reserve(old_data.size());
+  for (const std::unique_ptr<Item>& old_item : old_data)
+    old_ptrs.push_back(old_item.get());
+  std::vector<const Item*> new_ptrs;
+  new_ptrs.reserve(new_data.size());
+  for (const Item& new_item : new_data)
+    new_ptrs.push_back(&new_item);
+
+  if (old_ptrs.size() != new_ptrs.size())
+    return true;
+
+  // Sort our vectors.
+  auto compare_less = [](const Item* lhs, const Item* rhs) {
+    return lhs->Compare(*rhs) < 0;
+  };
+  std::sort(old_ptrs.begin(), old_ptrs.end(), compare_less);
+  std::sort(new_ptrs.begin(), new_ptrs.end(), compare_less);
+
+  auto compare_equal = [](const Item* lhs, const Item* rhs) {
+    return lhs->Compare(*rhs) == 0;
+  };
+  return !std::equal(old_ptrs.begin(), old_ptrs.end(), new_ptrs.begin(),
+                     compare_equal);
+}
+
 AutofillTable* AutofillWalletSyncBridge::GetAutofillTable() {
   return AutofillTable::FromWebDatabase(web_data_backend_->GetDatabase());
 }
diff --git a/components/autofill/core/browser/webdata/autofill_wallet_sync_bridge.h b/components/autofill/core/browser/webdata/autofill_wallet_sync_bridge.h
index 2e99e2e..b731f28 100644
--- a/components/autofill/core/browser/webdata/autofill_wallet_sync_bridge.h
+++ b/components/autofill/core/browser/webdata/autofill_wallet_sync_bridge.h
@@ -25,6 +25,7 @@
 class AutofillWebDataBackend;
 class AutofillWebDataService;
 class CreditCard;
+struct CreditCardCloudTokenData;
 struct PaymentsCustomerData;
 
 // Sync bridge responsible for propagating local changes to the processor and
@@ -107,6 +108,12 @@
   bool SetWalletAddresses(std::vector<AutofillProfile> wallet_addresses,
                           bool notify_metadata_bridge);
 
+  // Sets |cloud_token_data| to this client and returns whether any change has
+  // been applied (i.e., whether |cloud_token_data| was different from the local
+  // data).
+  bool SetCreditCardCloudTokenData(
+      const std::vector<CreditCardCloudTokenData>& cloud_token_data);
+
   // Computes a "diff" (items added, items removed) of two vectors of items,
   // which should be either CreditCard or AutofillProfile. This is used for
   // three purposes:
@@ -119,6 +126,13 @@
       const std::vector<std::unique_ptr<Item>>& old_data,
       const std::vector<Item>& new_data);
 
+  // A simpler version of ComputeAutofillWalletDiff that only returns true if
+  // there is any difference.
+  template <class Item>
+  bool ShouldResetAutofillWalletData(
+      const std::vector<std::unique_ptr<Item>>& old_data,
+      const std::vector<Item>& new_data);
+
   // Returns the table associated with the |web_data_backend_|.
   AutofillTable* GetAutofillTable();
 
diff --git a/components/autofill/core/browser/webdata/autofill_wallet_sync_bridge_unittest.cc b/components/autofill/core/browser/webdata/autofill_wallet_sync_bridge_unittest.cc
index 6ff2c3a..69d194b 100644
--- a/components/autofill/core/browser/webdata/autofill_wallet_sync_bridge_unittest.cc
+++ b/components/autofill/core/browser/webdata/autofill_wallet_sync_bridge_unittest.cc
@@ -22,6 +22,7 @@
 #include "components/autofill/core/browser/data_model/autofill_metadata.h"
 #include "components/autofill/core/browser/data_model/autofill_profile.h"
 #include "components/autofill/core/browser/data_model/credit_card.h"
+#include "components/autofill/core/browser/data_model/credit_card_cloud_token_data.h"
 #include "components/autofill/core/browser/geo/country_names.h"
 #include "components/autofill/core/browser/payments/payments_customer_data.h"
 #include "components/autofill/core/browser/test_autofill_clock.h"
@@ -75,6 +76,7 @@
 const char kAddr1ClientTag[] = "YWRkcjHvv74=";
 const char kCard1ClientTag[] = "Y2FyZDHvv74=";
 const char kCustomerDataClientTag[] = "deadbeef";
+const char kCloudTokenDataClientTag[] = "token";
 
 const char kLocaleString[] = "en-US";
 const base::Time kJune2017 = base::Time::FromDoubleT(1497552271);
@@ -126,6 +128,19 @@
   return output.str();
 }
 
+std::string WalletCreditCardCloudTokenDataSpecificsAsDebugString(
+    const AutofillWalletSpecifics& specifics) {
+  std::ostringstream output;
+  output << "[masked_card_id: " << specifics.cloud_token_data().masked_card_id()
+         << ", suffix: " << specifics.cloud_token_data().suffix()
+         << ", exp_month: " << specifics.cloud_token_data().exp_month()
+         << ", exp_year: " << specifics.cloud_token_data().exp_year()
+         << ", card_art_url: " << specifics.cloud_token_data().art_fife_url()
+         << ", instrument_token: "
+         << specifics.cloud_token_data().instrument_token() << "]";
+  return output.str();
+}
+
 std::string AutofillWalletSpecificsAsDebugString(
     const AutofillWalletSpecifics& specifics) {
   switch (specifics.type()) {
@@ -140,8 +155,7 @@
       return "CustomerData";
     case sync_pb::AutofillWalletSpecifics_WalletInfoType::
         AutofillWalletSpecifics_WalletInfoType_CREDIT_CARD_CLOUD_TOKEN_DATA:
-      // TODO(crbug.com/1020740): Implement for this type.
-      return "CloudTokenData";
+      return WalletCreditCardCloudTokenDataSpecificsAsDebugString(specifics);
     case sync_pb::AutofillWalletSpecifics_WalletInfoType::
         AutofillWalletSpecifics_WalletInfoType_UNKNOWN:
       return "Unknown";
@@ -317,7 +331,7 @@
   DISALLOW_COPY_AND_ASSIGN(AutofillWalletSyncBridgeTest);
 };
 
-// The following 3 tests make sure client tags stay stable.
+// The following 4 tests make sure client tags stay stable.
 TEST_F(AutofillWalletSyncBridgeTest, GetClientTagForAddress) {
   AutofillWalletSpecifics specifics =
       CreateAutofillWalletSpecificsForAddress(kAddr1ClientTag);
@@ -340,7 +354,15 @@
             kCustomerDataClientTag);
 }
 
-// The following 3 tests make sure storage keys stay stable.
+TEST_F(AutofillWalletSyncBridgeTest, GetClientTagForCreditCardCloudTokenData) {
+  AutofillWalletSpecifics specifics =
+      CreateAutofillWalletSpecificsForCreditCardCloudTokenData(
+          kCloudTokenDataClientTag);
+  EXPECT_EQ(bridge()->GetClientTag(*SpecificsToEntity(specifics)),
+            kCloudTokenDataClientTag);
+}
+
+// The following 4 tests make sure storage keys stay stable.
 TEST_F(AutofillWalletSyncBridgeTest, GetStorageKeyForAddress) {
   AutofillWalletSpecifics specifics1 =
       CreateAutofillWalletSpecificsForAddress(kAddr1ClientTag);
@@ -363,6 +385,14 @@
             kCustomerDataClientTag);
 }
 
+TEST_F(AutofillWalletSyncBridgeTest, GetStorageKeyForCreditCardCloudTokenData) {
+  AutofillWalletSpecifics specifics4 =
+      CreateAutofillWalletSpecificsForCreditCardCloudTokenData(
+          kCloudTokenDataClientTag);
+  EXPECT_EQ(bridge()->GetStorageKey(*SpecificsToEntity(specifics4)),
+            kCloudTokenDataClientTag);
+}
+
 TEST_F(AutofillWalletSyncBridgeTest,
        GetAllDataForDebugging_ShouldReturnAllData) {
   AutofillProfile address1 = test::GetServerProfile();
@@ -373,6 +403,9 @@
   table()->SetServerCreditCards({card1, card2});
   PaymentsCustomerData customer_data{/*customer_id=*/kCustomerDataId};
   table()->SetPaymentsCustomerData(&customer_data);
+  CreditCardCloudTokenData data1 = test::GetCreditCardCloudTokenData1();
+  CreditCardCloudTokenData data2 = test::GetCreditCardCloudTokenData2();
+  table()->SetCreditCardCloudTokenData({data1, data2});
 
   AutofillWalletSpecifics profile_specifics1;
   SetAutofillWalletSpecificsFromServerProfile(address1, &profile_specifics1);
@@ -385,13 +418,45 @@
   AutofillWalletSpecifics customer_data_specifics;
   SetAutofillWalletSpecificsFromPaymentsCustomerData(customer_data,
                                                      &customer_data_specifics);
+  AutofillWalletSpecifics cloud_token_data_specifics1;
+  SetAutofillWalletSpecificsFromCreditCardCloudTokenData(
+      data1, &cloud_token_data_specifics1);
+  AutofillWalletSpecifics cloud_token_data_specifics2;
+  SetAutofillWalletSpecificsFromCreditCardCloudTokenData(
+      data2, &cloud_token_data_specifics2);
 
-  EXPECT_THAT(GetAllLocalData(),
-              UnorderedElementsAre(EqualsSpecifics(profile_specifics1),
-                                   EqualsSpecifics(profile_specifics2),
-                                   EqualsSpecifics(card_specifics1),
-                                   EqualsSpecifics(card_specifics2),
-                                   EqualsSpecifics(customer_data_specifics)));
+  EXPECT_THAT(
+      GetAllLocalData(),
+      UnorderedElementsAre(EqualsSpecifics(profile_specifics1),
+                           EqualsSpecifics(profile_specifics2),
+                           EqualsSpecifics(card_specifics1),
+                           EqualsSpecifics(card_specifics2),
+                           EqualsSpecifics(customer_data_specifics),
+                           EqualsSpecifics(cloud_token_data_specifics1),
+                           EqualsSpecifics(cloud_token_data_specifics2)));
+}
+
+// Tests that when multiple credit card cloud token data have the same masked
+// card id, the data can be obtained correctly.
+TEST_F(AutofillWalletSyncBridgeTest,
+       GetAllDataForDebugging_MultipleCloudTokenDataForOneCard) {
+  CreditCardCloudTokenData data1 = test::GetCreditCardCloudTokenData1();
+  CreditCardCloudTokenData data2 = test::GetCreditCardCloudTokenData2();
+  // Make the masked card ids for both data the same one.
+  data2.masked_card_id = data1.masked_card_id;
+  table()->SetCreditCardCloudTokenData({data1, data2});
+
+  AutofillWalletSpecifics cloud_token_data_specifics1;
+  SetAutofillWalletSpecificsFromCreditCardCloudTokenData(
+      data1, &cloud_token_data_specifics1);
+  AutofillWalletSpecifics cloud_token_data_specifics2;
+  SetAutofillWalletSpecificsFromCreditCardCloudTokenData(
+      data2, &cloud_token_data_specifics2);
+
+  EXPECT_THAT(
+      GetAllLocalData(),
+      UnorderedElementsAre(EqualsSpecifics(cloud_token_data_specifics1),
+                           EqualsSpecifics(cloud_token_data_specifics2)));
 }
 
 // Tests that when a new wallet card and new wallet address are sent by the
@@ -404,6 +469,9 @@
   table()->SetServerCreditCards({card1});
   PaymentsCustomerData customer_data{/*customer_id=*/kCustomerDataId};
   table()->SetPaymentsCustomerData(&customer_data);
+  CreditCardCloudTokenData cloud_token_data =
+      test::GetCreditCardCloudTokenData1();
+  table()->SetCreditCardCloudTokenData({cloud_token_data});
 
   // Create a different profile and a different card on the server.
   AutofillProfile address2 = test::GetServerProfile2();
@@ -415,6 +483,9 @@
   AutofillWalletSpecifics customer_data_specifics;
   SetAutofillWalletSpecificsFromPaymentsCustomerData(customer_data,
                                                      &customer_data_specifics);
+  AutofillWalletSpecifics cloud_token_data_specifics;
+  SetAutofillWalletSpecificsFromCreditCardCloudTokenData(
+      cloud_token_data, &cloud_token_data_specifics);
 
   EXPECT_CALL(*backend(), NotifyOfMultipleAutofillChanges());
   EXPECT_CALL(*backend(), CommitChanges());
@@ -426,17 +497,20 @@
               NotifyOfCreditCardChanged(AddChange(card2.server_id(), card2)));
   EXPECT_CALL(*backend(),
               NotifyOfCreditCardChanged(RemoveChange(card1.server_id())));
-  StartSyncing({profile_specifics2, card_specifics2, customer_data_specifics});
+  StartSyncing({profile_specifics2, card_specifics2, customer_data_specifics,
+                cloud_token_data_specifics});
 
   // This bridge does not store metadata, i.e. billing_address_id. Strip it
   // off so that the expectations below pass.
   card_specifics2.mutable_masked_card()->set_billing_address_id(std::string());
 
   // Only the server card should be present on the client.
-  EXPECT_THAT(GetAllLocalData(),
-              UnorderedElementsAre(EqualsSpecifics(profile_specifics2),
-                                   EqualsSpecifics(card_specifics2),
-                                   EqualsSpecifics(customer_data_specifics)));
+  EXPECT_THAT(
+      GetAllLocalData(),
+      UnorderedElementsAre(EqualsSpecifics(profile_specifics2),
+                           EqualsSpecifics(card_specifics2),
+                           EqualsSpecifics(customer_data_specifics),
+                           EqualsSpecifics(cloud_token_data_specifics)));
 }
 
 // Tests that in initial sync, no metrics are recorded for new addresses and
@@ -457,10 +531,16 @@
   AutofillWalletSpecifics customer_data_specifics;
   SetAutofillWalletSpecificsFromPaymentsCustomerData(customer_data,
                                                      &customer_data_specifics);
+  CreditCardCloudTokenData cloud_token_data =
+      test::GetCreditCardCloudTokenData1();
+  AutofillWalletSpecifics cloud_token_data_specifics;
+  SetAutofillWalletSpecificsFromCreditCardCloudTokenData(
+      cloud_token_data, &cloud_token_data_specifics);
 
   EXPECT_CALL(*backend(), NotifyOfMultipleAutofillChanges());
   EXPECT_CALL(*backend(), CommitChanges());
-  StartSyncing({profile_specifics, card_specifics, customer_data_specifics});
+  StartSyncing({profile_specifics, card_specifics, customer_data_specifics,
+                cloud_token_data_specifics});
 
   ExpectCountsOfWalletMetadataInDB(/*cards_count=*/0u, /*address_count=*/0u);
 
@@ -468,22 +548,28 @@
   // off so that the expectations below pass.
   card_specifics.mutable_masked_card()->set_billing_address_id(std::string());
 
-  EXPECT_THAT(GetAllLocalData(),
-              UnorderedElementsAre(EqualsSpecifics(profile_specifics),
-                                   EqualsSpecifics(card_specifics),
-                                   EqualsSpecifics(customer_data_specifics)));
+  EXPECT_THAT(
+      GetAllLocalData(),
+      UnorderedElementsAre(EqualsSpecifics(profile_specifics),
+                           EqualsSpecifics(card_specifics),
+                           EqualsSpecifics(customer_data_specifics),
+                           EqualsSpecifics(cloud_token_data_specifics)));
 }
 
 // Tests that when a new payments customer data is sent by the server, the
 // client only keeps the new data.
 TEST_F(AutofillWalletSyncBridgeTest, MergeSyncData_NewPaymentsCustomerData) {
-  // Create one profile, one card and one customer data entry on the client.
+  // Create one profile, one card, one customer data and one cloud token data
+  // entry on the client.
   AutofillProfile address = test::GetServerProfile();
   table()->SetServerProfiles({address});
   CreditCard card = test::GetMaskedServerCard();
   table()->SetServerCreditCards({card});
   PaymentsCustomerData customer_data1{/*customer_id=*/kCustomerDataId};
   table()->SetPaymentsCustomerData(&customer_data1);
+  CreditCardCloudTokenData cloud_token_data =
+      test::GetCreditCardCloudTokenData1();
+  table()->SetCreditCardCloudTokenData({cloud_token_data});
 
   // Create a different customer data entry on the server.
   AutofillWalletSpecifics profile_specifics;
@@ -494,18 +580,67 @@
   AutofillWalletSpecifics customer_data_specifics2;
   SetAutofillWalletSpecificsFromPaymentsCustomerData(customer_data2,
                                                      &customer_data_specifics2);
+  AutofillWalletSpecifics cloud_token_data_specifics;
+  SetAutofillWalletSpecificsFromCreditCardCloudTokenData(
+      cloud_token_data, &cloud_token_data_specifics);
 
   EXPECT_CALL(*backend(), NotifyOfMultipleAutofillChanges());
   EXPECT_CALL(*backend(), CommitChanges());
   EXPECT_CALL(*backend(), NotifyOfAutofillProfileChanged(_)).Times(0);
   EXPECT_CALL(*backend(), NotifyOfCreditCardChanged(_)).Times(0);
-  StartSyncing({profile_specifics, card_specifics, customer_data_specifics2});
+  StartSyncing({profile_specifics, card_specifics, customer_data_specifics2,
+                cloud_token_data_specifics});
 
   // Only the server card should be present on the client.
-  EXPECT_THAT(GetAllLocalData(),
-              UnorderedElementsAre(EqualsSpecifics(profile_specifics),
-                                   EqualsSpecifics(card_specifics),
-                                   EqualsSpecifics(customer_data_specifics2)));
+  EXPECT_THAT(
+      GetAllLocalData(),
+      UnorderedElementsAre(EqualsSpecifics(profile_specifics),
+                           EqualsSpecifics(card_specifics),
+                           EqualsSpecifics(customer_data_specifics2),
+                           EqualsSpecifics(cloud_token_data_specifics)));
+}
+
+// Tests that when a new credit card cloud token data is sent by the server,
+// the client only keeps the new data.
+TEST_F(AutofillWalletSyncBridgeTest, MergeSyncData_NewCloudTokenData) {
+  AutofillProfile address = test::GetServerProfile();
+  table()->SetServerProfiles({address});
+  CreditCard card = test::GetMaskedServerCard();
+  table()->SetServerCreditCards({card});
+  PaymentsCustomerData customer_data{/*customer_id=*/kCustomerDataId};
+  table()->SetPaymentsCustomerData(&customer_data);
+  CreditCardCloudTokenData cloud_token_data1 =
+      test::GetCreditCardCloudTokenData1();
+  table()->SetCreditCardCloudTokenData({cloud_token_data1});
+
+  // Create a different cloud token data entry on the server.
+  AutofillWalletSpecifics profile_specifics;
+  SetAutofillWalletSpecificsFromServerProfile(address, &profile_specifics);
+  AutofillWalletSpecifics card_specifics;
+  SetAutofillWalletSpecificsFromServerCard(card, &card_specifics);
+  AutofillWalletSpecifics customer_data_specifics;
+  SetAutofillWalletSpecificsFromPaymentsCustomerData(customer_data,
+                                                     &customer_data_specifics);
+  CreditCardCloudTokenData cloud_token_data2 =
+      test::GetCreditCardCloudTokenData2();
+  AutofillWalletSpecifics cloud_token_data_specifics2;
+  SetAutofillWalletSpecificsFromCreditCardCloudTokenData(
+      cloud_token_data2, &cloud_token_data_specifics2);
+
+  EXPECT_CALL(*backend(), NotifyOfMultipleAutofillChanges());
+  EXPECT_CALL(*backend(), CommitChanges());
+  EXPECT_CALL(*backend(), NotifyOfAutofillProfileChanged(_)).Times(0);
+  EXPECT_CALL(*backend(), NotifyOfCreditCardChanged(_)).Times(0);
+  StartSyncing({profile_specifics, card_specifics, customer_data_specifics,
+                cloud_token_data_specifics2});
+
+  // Only the new cloud token data should be present on the client.
+  EXPECT_THAT(
+      GetAllLocalData(),
+      UnorderedElementsAre(EqualsSpecifics(profile_specifics),
+                           EqualsSpecifics(card_specifics),
+                           EqualsSpecifics(customer_data_specifics),
+                           EqualsSpecifics(cloud_token_data_specifics2)));
 }
 
 // Tests that when the server sends no cards or address, the client should
@@ -532,10 +667,27 @@
   EXPECT_TRUE(GetAllLocalData().empty());
 }
 
-// Test that when the server sends the same address and card as the client has,
-// nothing changes on the client.
+// Tests that when the server sends no cloud token data, the client should
+// delete all it's existing cloud token data.
+TEST_F(AutofillWalletSyncBridgeTest, MergeSyncData_NoCloudTokenData) {
+  // Create one cloud token data on the client.
+  CreditCardCloudTokenData cloud_token_data =
+      test::GetCreditCardCloudTokenData1();
+  table()->SetCreditCardCloudTokenData({cloud_token_data});
+
+  EXPECT_CALL(*backend(), NotifyOfMultipleAutofillChanges());
+  EXPECT_CALL(*backend(), CommitChanges());
+  EXPECT_CALL(*backend(), NotifyOfAutofillProfileChanged(_)).Times(0);
+  EXPECT_CALL(*backend(), NotifyOfCreditCardChanged(_)).Times(0);
+  StartSyncing({});
+
+  EXPECT_TRUE(GetAllLocalData().empty());
+}
+
+// Tests that when the server sends the same data as the client has, nothing
+// changes on the client.
 TEST_F(AutofillWalletSyncBridgeTest,
-       MergeSyncData_SameWalletAddressAndCardAndCustomerData) {
+       MergeSyncData_SameWalletAddressAndCardAndCustomerDataAndCloudTokenData) {
   // Create one profile and one card on the client.
   AutofillProfile profile = test::GetServerProfile();
   table()->SetServerProfiles({profile});
@@ -543,6 +695,9 @@
   table()->SetServerCreditCards({card});
   PaymentsCustomerData customer_data{/*customer_id=*/kCustomerDataId};
   table()->SetPaymentsCustomerData(&customer_data);
+  CreditCardCloudTokenData cloud_token_data =
+      test::GetCreditCardCloudTokenData1();
+  table()->SetCreditCardCloudTokenData({cloud_token_data});
 
   // Create the same profile and card on the server.
   AutofillWalletSpecifics profile_specifics;
@@ -552,18 +707,24 @@
   AutofillWalletSpecifics customer_data_specifics;
   SetAutofillWalletSpecificsFromPaymentsCustomerData(customer_data,
                                                      &customer_data_specifics);
+  AutofillWalletSpecifics cloud_token_data_specifics;
+  SetAutofillWalletSpecificsFromCreditCardCloudTokenData(
+      cloud_token_data, &cloud_token_data_specifics);
 
   EXPECT_CALL(*backend(), NotifyOfMultipleAutofillChanges()).Times(0);
   // We still need to commit the updated progress marker on the client.
   EXPECT_CALL(*backend(), CommitChanges());
   EXPECT_CALL(*backend(), NotifyOfAutofillProfileChanged(_)).Times(0);
   EXPECT_CALL(*backend(), NotifyOfCreditCardChanged(_)).Times(0);
-  StartSyncing({profile_specifics, card_specifics, customer_data_specifics});
+  StartSyncing({profile_specifics, card_specifics, customer_data_specifics,
+                cloud_token_data_specifics});
 
-  EXPECT_THAT(GetAllLocalData(),
-              UnorderedElementsAre(EqualsSpecifics(profile_specifics),
-                                   EqualsSpecifics(card_specifics),
-                                   EqualsSpecifics(customer_data_specifics)));
+  EXPECT_THAT(
+      GetAllLocalData(),
+      UnorderedElementsAre(EqualsSpecifics(profile_specifics),
+                           EqualsSpecifics(card_specifics),
+                           EqualsSpecifics(customer_data_specifics),
+                           EqualsSpecifics(cloud_token_data_specifics)));
 }
 
 // Tests that when there are multiple changes happening at the same time, the
@@ -665,7 +826,7 @@
   EXPECT_FALSE(profile.language_code().empty());
 }
 
-// Test that all field values for a card sent form the server are copied on the
+// Test that all field values for a card sent from the server are copied on the
 // card on the client.
 TEST_F(AutofillWalletSyncBridgeTest, MergeSyncData_SetsAllWalletCardData) {
   // Create a card to be synced from the server.
@@ -708,6 +869,36 @@
   EXPECT_FALSE(card.bank_name().empty());
 }
 
+// Test that all field values for a cloud token data sent from the server are
+// copied on the client.
+TEST_F(AutofillWalletSyncBridgeTest, MergeSyncData_SetsAllCloudTokenData) {
+  CreditCardCloudTokenData cloud_token_data =
+      test::GetCreditCardCloudTokenData1();
+  AutofillWalletSpecifics cloud_token_data_specifics;
+  SetAutofillWalletSpecificsFromCreditCardCloudTokenData(
+      cloud_token_data, &cloud_token_data_specifics);
+
+  StartSyncing({cloud_token_data_specifics});
+
+  EXPECT_THAT(
+      GetAllLocalData(),
+      UnorderedElementsAre(EqualsSpecifics(cloud_token_data_specifics)));
+  std::vector<std::unique_ptr<CreditCardCloudTokenData>>
+      cloud_token_data_vector;
+  table()->GetCreditCardCloudTokenData(&cloud_token_data_vector);
+  ASSERT_EQ(1U, cloud_token_data_vector.size());
+
+  EXPECT_EQ(cloud_token_data.masked_card_id,
+            cloud_token_data_vector[0]->masked_card_id);
+  EXPECT_EQ(cloud_token_data.suffix, cloud_token_data_vector[0]->suffix);
+  EXPECT_EQ(cloud_token_data.exp_month, cloud_token_data_vector[0]->exp_month);
+  EXPECT_EQ(cloud_token_data.exp_year, cloud_token_data_vector[0]->exp_year);
+  EXPECT_EQ(cloud_token_data.card_art_url,
+            cloud_token_data_vector[0]->card_art_url);
+  EXPECT_EQ(cloud_token_data.instrument_token,
+            cloud_token_data_vector[0]->instrument_token);
+}
+
 TEST_F(AutofillWalletSyncBridgeTest, LoadMetadataCalled) {
   EXPECT_TRUE(table()->UpdateSyncMetadata(syncer::AUTOFILL_WALLET_DATA, "key",
                                           EntityMetadata()));
@@ -720,11 +911,14 @@
 }
 
 TEST_F(AutofillWalletSyncBridgeTest, ApplyStopSyncChanges_ClearAllData) {
-  // Create one profile and one card on the client.
+  // Create one profile, one card and one cloud token data on the client.
   AutofillProfile local_profile = test::GetServerProfile();
   table()->SetServerProfiles({local_profile});
   CreditCard local_card = test::GetMaskedServerCard();
   table()->SetServerCreditCards({local_card});
+  CreditCardCloudTokenData cloud_token_data =
+      test::GetCreditCardCloudTokenData1();
+  table()->SetCreditCardCloudTokenData({cloud_token_data});
 
   EXPECT_CALL(*backend(), CommitChanges());
   EXPECT_CALL(*backend(), NotifyOfMultipleAutofillChanges());
@@ -744,11 +938,14 @@
 }
 
 TEST_F(AutofillWalletSyncBridgeTest, ApplyStopSyncChanges_KeepData) {
-  // Create one profile and one card on the client.
+  // Create one profile, one card and one cloud token data on the client.
   AutofillProfile local_profile = test::GetServerProfile();
   table()->SetServerProfiles({local_profile});
   CreditCard local_card = test::GetMaskedServerCard();
   table()->SetServerCreditCards({local_card});
+  CreditCardCloudTokenData cloud_token_data =
+      test::GetCreditCardCloudTokenData1();
+  table()->SetCreditCardCloudTokenData({cloud_token_data});
 
   // We do not write to DB at all, so we should not commit any changes.
   EXPECT_CALL(*backend(), CommitChanges()).Times(0);
diff --git a/components/autofill/core/browser/webdata/autofill_webdata_backend_impl.cc b/components/autofill/core/browser/webdata/autofill_webdata_backend_impl.cc
index f7f343a..240119d0 100644
--- a/components/autofill/core/browser/webdata/autofill_webdata_backend_impl.cc
+++ b/components/autofill/core/browser/webdata/autofill_webdata_backend_impl.cc
@@ -10,6 +10,7 @@
 #include "base/single_thread_task_runner.h"
 #include "components/autofill/core/browser/data_model/autofill_profile.h"
 #include "components/autofill/core/browser/data_model/credit_card.h"
+#include "components/autofill/core/browser/data_model/credit_card_cloud_token_data.h"
 #include "components/autofill/core/browser/geo/autofill_country.h"
 #include "components/autofill/core/browser/payments/payments_customer_data.h"
 #include "components/autofill/core/browser/webdata/autofill_change.h"
@@ -525,11 +526,12 @@
   return WebDatabase::COMMIT_NEEDED;
 }
 
-WebDatabase::State AutofillWebDataBackendImpl::AddVPA(const std::string& vpa_id,
-                                                      WebDatabase* db) {
+WebDatabase::State AutofillWebDataBackendImpl::AddUpiId(
+    const std::string& upi_id,
+    WebDatabase* db) {
   DCHECK(owning_task_runner()->RunsTasksInCurrentSequence());
 
-  if (!AutofillTable::FromWebDatabase(db)->InsertVPA(vpa_id))
+  if (!AutofillTable::FromWebDatabase(db)->InsertUpiId(upi_id))
     return WebDatabase::COMMIT_NOT_NEEDED;
   return WebDatabase::COMMIT_NEEDED;
 }
@@ -543,6 +545,17 @@
       AUTOFILL_CUSTOMERDATA_RESULT, std::move(customer_data));
 }
 
+std::unique_ptr<WDTypedResult>
+AutofillWebDataBackendImpl::GetCreditCardCloudTokenData(WebDatabase* db) {
+  DCHECK(owning_task_runner()->RunsTasksInCurrentSequence());
+  std::vector<std::unique_ptr<CreditCardCloudTokenData>> cloud_token_data;
+  AutofillTable::FromWebDatabase(db)->GetCreditCardCloudTokenData(
+      &cloud_token_data);
+  return std::make_unique<
+      WDResult<std::vector<std::unique_ptr<CreditCardCloudTokenData>>>>(
+      AUTOFILL_CLOUDTOKEN_RESULT, std::move(cloud_token_data));
+}
+
 WebDatabase::State AutofillWebDataBackendImpl::ClearAllServerData(
     WebDatabase* db) {
   DCHECK(owning_task_runner()->RunsTasksInCurrentSequence());
diff --git a/components/autofill/core/browser/webdata/autofill_webdata_backend_impl.h b/components/autofill/core/browser/webdata/autofill_webdata_backend_impl.h
index 0dbb45d..1b58a8b 100644
--- a/components/autofill/core/browser/webdata/autofill_webdata_backend_impl.h
+++ b/components/autofill/core/browser/webdata/autofill_webdata_backend_impl.h
@@ -185,11 +185,14 @@
   WebDatabase::State UpdateServerAddressMetadata(const AutofillProfile& profile,
                                                  WebDatabase* db);
 
-  WebDatabase::State AddVPA(const std::string& vpa_id, WebDatabase* db);
+  WebDatabase::State AddUpiId(const std::string& upi_id, WebDatabase* db);
 
   // Returns the PaymentsCustomerData from the database.
   std::unique_ptr<WDTypedResult> GetPaymentsCustomerData(WebDatabase* db);
 
+  // Returns the CreditCardCloudTokenData from the database.
+  std::unique_ptr<WDTypedResult> GetCreditCardCloudTokenData(WebDatabase* db);
+
   WebDatabase::State ClearAllServerData(WebDatabase* db);
   WebDatabase::State ClearAllLocalData(WebDatabase* db);
 
diff --git a/components/autofill/core/browser/webdata/autofill_webdata_service.cc b/components/autofill/core/browser/webdata/autofill_webdata_service.cc
index 05cc3f7..3fd8c2c 100644
--- a/components/autofill/core/browser/webdata/autofill_webdata_service.cc
+++ b/components/autofill/core/browser/webdata/autofill_webdata_service.cc
@@ -228,9 +228,9 @@
            autofill_backend_, id));
 }
 
-void AutofillWebDataService::AddVPA(const std::string& vpa_id) {
-  wdbs_->ScheduleDBTask(FROM_HERE, Bind(&AutofillWebDataBackendImpl::AddVPA,
-                                        autofill_backend_, vpa_id));
+void AutofillWebDataService::AddUpiId(const std::string& upi_id) {
+  wdbs_->ScheduleDBTask(FROM_HERE, Bind(&AutofillWebDataBackendImpl::AddUpiId,
+                                        autofill_backend_, upi_id));
 }
 
 WebDataServiceBase::Handle AutofillWebDataService::GetPaymentsCustomerData(
@@ -242,6 +242,15 @@
       consumer);
 }
 
+WebDataServiceBase::Handle AutofillWebDataService::GetCreditCardCloudTokenData(
+    WebDataServiceConsumer* consumer) {
+  return wdbs_->ScheduleDBTaskWithResult(
+      FROM_HERE,
+      Bind(&AutofillWebDataBackendImpl::GetCreditCardCloudTokenData,
+           autofill_backend_),
+      consumer);
+}
+
 void AutofillWebDataService::ClearAllServerData() {
   wdbs_->ScheduleDBTask(
       FROM_HERE,
diff --git a/components/autofill/core/browser/webdata/autofill_webdata_service.h b/components/autofill/core/browser/webdata/autofill_webdata_service.h
index abb7a44..ef5169b 100644
--- a/components/autofill/core/browser/webdata/autofill_webdata_service.h
+++ b/components/autofill/core/browser/webdata/autofill_webdata_service.h
@@ -138,8 +138,8 @@
                               const base::string16& full_number);
   void MaskServerCreditCard(const std::string& id);
 
-  // Store a UPI/VPA value.
-  void AddVPA(const std::string& vpa_id);
+  // Store a UPI ID.
+  void AddUpiId(const std::string& upi_id);
 
   // Initiates the request for Payments customer data.  The method
   // OnWebDataServiceRequestDone of |consumer| gets called when the request is
@@ -148,6 +148,13 @@
   WebDataServiceBase::Handle GetPaymentsCustomerData(
       WebDataServiceConsumer* consumer);
 
+  // Initiates the request for server credit card cloud token data. The method
+  // OnWebDataServiceRequestDone of |consumer| gets called when the request is
+  // finished, with the cloud token data included in the argument |result|. The
+  // consumer owns the data.
+  WebDataServiceBase::Handle GetCreditCardCloudTokenData(
+      WebDataServiceConsumer* consumer);
+
   void ClearAllServerData();
   void ClearAllLocalData();
 
diff --git a/components/cast_channel/cast_message_handler.cc b/components/cast_channel/cast_message_handler.cc
index b34b5b1..f3a1f34 100644
--- a/components/cast_channel/cast_message_handler.cc
+++ b/components/cast_channel/cast_message_handler.cc
@@ -22,7 +22,7 @@
 constexpr base::TimeDelta kLaunchMaxTimeout = base::TimeDelta::FromMinutes(2);
 
 void ReportParseError(const std::string& error) {
-  DVLOG(2) << "Error parsing JSON message: " << error;
+  DVLOG(1) << "Error parsing JSON message: " << error;
 }
 
 }  // namespace
@@ -361,12 +361,15 @@
   if (request_id) {
     auto requests_it = pending_requests_.find(channel_id);
     if (requests_it != pending_requests_.end())
+      // You might think this method should return in this case, but there is at
+      // least one message type (RECEIVER_STATUS), that has a request ID but
+      // also needs to be handled by the registered observers.
       requests_it->second->HandlePendingRequest(*request_id, payload);
   }
 
   CastMessageType type = ParseMessageTypeFromPayload(payload);
   if (type == CastMessageType::kOther) {
-    DVLOG(2) << "Unknown message type: " << payload;
+    DVLOG(2) << "Unknown type in message: " << payload;
     return;
   }
 
diff --git a/components/cast_channel/cast_message_util.cc b/components/cast_channel/cast_message_util.cc
index 345e6e74..f0f54867 100644
--- a/components/cast_channel/cast_message_util.cc
+++ b/components/cast_channel/cast_message_util.cc
@@ -30,8 +30,9 @@
     {
         {CastMessageType::kPing, "PING"},
         {CastMessageType::kPong, "PONG"},
+        {CastMessageType::kRpc, "RPC"},
         {CastMessageType::kGetAppAvailability, "GET_APP_AVAILABILITY"},
-        {CastMessageType::kReceiverStatusRequest, "GET_STATUS"},
+        {CastMessageType::kGetStatus, "GET_STATUS"},
         {CastMessageType::kConnect, "CONNECT"},
         {CastMessageType::kCloseConnection, "CLOSE"},
         {CastMessageType::kBroadcast, "APPLICATION_BROADCAST"},
@@ -42,6 +43,15 @@
         {CastMessageType::kLaunchError, "LAUNCH_ERROR"},
         {CastMessageType::kOffer, "OFFER"},
         {CastMessageType::kAnswer, "ANSWER"},
+        {CastMessageType::kCapabilitiesResponse, "CAPABILITIES_RESPONSE"},
+        {CastMessageType::kStatusResponse, "STATUS_RESPONSE"},
+        {CastMessageType::kMultizoneStatus, "MULTIZONE_STATUS"},
+        {CastMessageType::kInvalidPlayerState, "INVALID_PLAYER_STATE"},
+        {CastMessageType::kLoadFailed, "LOAD_FAILED"},
+        {CastMessageType::kLoadCancelled, "LOAD_CANCELLED"},
+        {CastMessageType::kInvalidRequest, "INVALID_REQUEST"},
+        {CastMessageType::kPresentation, "PRESENTATION"},
+        {CastMessageType::kGetCapabilities, "GET_CAPABILITIES"},
         {CastMessageType::kOther},
     },
     CastMessageType::kMaxValue);
@@ -173,7 +183,7 @@
     lhs << "payload_utf8: " << rhs.payload_utf8();
   }
   if (rhs.has_payload_binary()) {
-    lhs << "payload_binary: ...";
+    lhs << "payload_binary: (" << rhs.payload_binary().size() << " bytes)";
   }
   lhs << "}";
   return lhs;
@@ -358,9 +368,9 @@
 CastMessage CreateReceiverStatusRequest(const std::string& source_id,
                                         int request_id) {
   Value dict(Value::Type::DICTIONARY);
-  dict.SetKey("type",
-              Value(EnumToString<CastMessageType,
-                                 CastMessageType::kReceiverStatusRequest>()));
+  dict.SetKey(
+      "type",
+      Value(EnumToString<CastMessageType, CastMessageType::kGetStatus>()));
   dict.SetKey("requestId", Value(request_id));
   return CreateCastMessage(kReceiverNamespace, dict, source_id,
                            kPlatformReceiverId);
diff --git a/components/cast_channel/cast_message_util.h b/components/cast_channel/cast_message_util.h
index 0346e13a..068211a 100644
--- a/components/cast_channel/cast_message_util.h
+++ b/components/cast_channel/cast_message_util.h
@@ -37,26 +37,60 @@
 
 // Cast application protocol message types.
 enum class CastMessageType {
+  // Heartbeat messages.
   kPing,
   kPong,
+
+  // RPC control/status messages used by Media Remoting. These occur at high
+  // frequency, up to dozens per second at times, and should not be logged.
+  kRpc,
+
   kGetAppAvailability,
-  kReceiverStatusRequest,
-  kConnect,          // Virtual connection request
-  kCloseConnection,  // Close virtual connection
-  kBroadcast,        // Application broadcast / precache
-  kLaunch,           // Session launch request
-  kStop,             // Session stop request
+  kGetStatus,
+
+  // Virtual connection request
+  kConnect,
+
+  // Close virtual connection
+  kCloseConnection,
+
+  // Application broadcast / precache
+  kBroadcast,
+
+  // Session launch request
+  kLaunch,
+
+  // Session stop request
+  kStop,
+
   kReceiverStatus,
   kMediaStatus,
+
+  // error from receiver
   kLaunchError,
+
   kOffer,
   kAnswer,
+  kCapabilitiesResponse,
+  kStatusResponse,
+
+  // The following values are part of the protocol but are not currently used.
+  kMultizoneStatus,
+  kInvalidPlayerState,
+  kLoadFailed,
+  kLoadCancelled,
+  kInvalidRequest,
+  kPresentation,
+  kGetCapabilities,
+
   kOther,  // Add new types above |kOther|.
   kMaxValue = kOther,
 };
 
 enum class V2MessageType {
+  // Request to modify the text tracks style or change the tracks status.
   kEditTracksInfo,
+
   kGetStatus,
   kLoad,
   kMediaGetStatus,
@@ -64,17 +98,39 @@
   kPause,
   kPlay,
   kPrecache,
+
+  // Inserts a list of new media items into the queue.
   kQueueInsert,
+
+  // Loads and optionally starts playback of a new queue of media items.
   kQueueLoad,
+
+  // Removes a list of items from the queue. If the remaining queue is empty,
+  // the media session will be terminated.
   kQueueRemove,
+
+  // Reorder a list of media items in the queue.
   kQueueReorder,
+
+  // Updates properties of the media queue, e.g. repeat mode, and properties of
+  // the existing items in the media queue.
   kQueueUpdate,
+
   kQueueNext,
   kQueuePrev,
   kSeek,
+
+  // Device set volume is also 'SET_VOLUME'. Thus, give this a different name.
+  // The message will be translate before being sent to the receiver.
   kSetVolume,
+
   kStop,
+
+  // Stop-media type is 'kStop', which collides with stop-session.
+  // Thus, give it a different name.  The message will be translate
+  // before being sent to the receiver.
   kStopMedia,
+
   kOther,  // Add new types above |kOther|.
   kMaxValue = kOther,
 };
diff --git a/components/crash/android/BUILD.gn b/components/crash/android/BUILD.gn
index a007800..f7e06e5 100644
--- a/components/crash/android/BUILD.gn
+++ b/components/crash/android/BUILD.gn
@@ -5,9 +5,9 @@
 import("//build/config/android/rules.gni")
 
 _jni_sources = [
+  "java/src/org/chromium/components/crash/CrashKeys.java",
   "java/src/org/chromium/components/crash/browser/ChildProcessCrashObserver.java",
   "java/src/org/chromium/components/crash/browser/PackagePaths.java",
-  "java/src/org/chromium/components/crash/CrashKeys.java",
 ]
 
 generate_jni("jni_headers") {
diff --git a/components/crash/content/app/crashpad_linux.cc b/components/crash/content/app/crashpad_linux.cc
index dd27c7742..c09535f02 100644
--- a/components/crash/content/app/crashpad_linux.cc
+++ b/components/crash/content/app/crashpad_linux.cc
@@ -14,6 +14,7 @@
 #include "base/path_service.h"
 #include "base/posix/global_descriptors.h"
 #include "base/strings/string_number_conversions.h"
+#include "base/strings/stringprintf.h"
 #include "build/branding_buildflags.h"
 #include "components/crash/content/app/crash_reporter_client.h"
 #include "components/crash/content/app/crash_switches.h"
@@ -158,6 +159,11 @@
 
 #if defined(OS_CHROMEOS)
     arguments.push_back("--use-cros-crash-reporter");
+
+    if (crash_reporter_client->IsRunningUnattended()) {
+      arguments.push_back(base::StringPrintf("--minidump-dir-for-tests=%s",
+                                             database_path.value().c_str()));
+    }
 #endif
 
     bool result =
diff --git a/components/cronet/android/cronet_url_request_context_adapter.cc b/components/cronet/android/cronet_url_request_context_adapter.cc
index b44eedc..58920413 100644
--- a/components/cronet/android/cronet_url_request_context_adapter.cc
+++ b/components/cronet/android/cronet_url_request_context_adapter.cc
@@ -350,7 +350,7 @@
   std::vector<uint8_t> data;
   if (!HistogramManager::GetInstance()->GetDeltas(&data))
     return ScopedJavaLocalRef<jbyteArray>();
-  return base::android::ToJavaByteArray(env, &data[0], data.size());
+  return base::android::ToJavaByteArray(env, data.data(), data.size());
 }
 
 }  // namespace cronet
diff --git a/components/cronet/ios/BUILD.gn b/components/cronet/ios/BUILD.gn
index 79db67c..2eef75e 100644
--- a/components/cronet/ios/BUILD.gn
+++ b/components/cronet/ios/BUILD.gn
@@ -49,8 +49,8 @@
   "//ios/net",
   "//ios/net:network_protocol",
   "//ios/web/common:user_agent",
-  "//ios/web/public/init:global_state",
   "//ios/web/init:global_state",
+  "//ios/web/public/init:global_state",
   "//net",
   "//url",
 ]
diff --git a/components/domain_reliability/monitor.cc b/components/domain_reliability/monitor.cc
index e155313d..5fb4cdb 100644
--- a/components/domain_reliability/monitor.cc
+++ b/components/domain_reliability/monitor.cc
@@ -28,22 +28,6 @@
 
 namespace {
 
-int URLRequestStatusToNetError(const net::URLRequestStatus& status) {
-  switch (status.status()) {
-    case net::URLRequestStatus::SUCCESS:
-      return net::OK;
-    case net::URLRequestStatus::IO_PENDING:
-      return net::ERR_IO_PENDING;
-    case net::URLRequestStatus::CANCELED:
-      return net::ERR_ABORTED;
-    case net::URLRequestStatus::FAILED:
-      return status.error();
-    default:
-      NOTREACHED();
-      return net::ERR_UNEXPECTED;
-  }
-}
-
 // Creates a new beacon based on |beacon_template| but fills in the status,
 // chrome_error, and server_ip fields based on the endpoint and result of
 // |attempt|.
@@ -159,17 +143,19 @@
 void DomainReliabilityMonitor::OnBeforeRedirect(net::URLRequest* request) {
   DCHECK(discard_uploads_set_);
 
-  // Record the redirect itself in addition to the final request.
-  OnRequestLegComplete(RequestInfo(*request));
+  // Record the redirect itself in addition to the final request. The fact that
+  // a redirect is being followed indicates success.
+  OnRequestLegComplete(RequestInfo(*request, net::OK));
 }
 
 void DomainReliabilityMonitor::OnCompleted(net::URLRequest* request,
-                                           bool started) {
+                                           bool started,
+                                           int net_error) {
   DCHECK(discard_uploads_set_);
 
   if (!started)
     return;
-  RequestInfo request_info(*request);
+  RequestInfo request_info(*request, net_error);
   OnRequestLegComplete(request_info);
 
   if (request_info.response_info.network_accessed) {
@@ -230,9 +216,10 @@
 DomainReliabilityMonitor::RequestInfo::RequestInfo() {}
 
 DomainReliabilityMonitor::RequestInfo::RequestInfo(
-    const net::URLRequest& request)
+    const net::URLRequest& request,
+    int net_error)
     : url(request.url()),
-      status(request.status()),
+      net_error(net_error),
       response_info(request.response_info()),
       load_flags(request.load_flags()),
       upload_depth(
@@ -264,7 +251,7 @@
   // that Domain Reliability is interested in.
   if (request.response_info.network_accessed)
     return true;
-  if (URLRequestStatusToNetError(request.status) != net::OK)
+  if (request.net_error != net::OK)
     return true;
   if (request.details.quic_port_migration_detected)
     return true;
@@ -288,8 +275,8 @@
   else
     response_code = -1;
 
-  net::ConnectionAttempt url_request_attempt(
-      request.remote_endpoint, URLRequestStatusToNetError(request.status));
+  net::ConnectionAttempt url_request_attempt(request.remote_endpoint,
+                                             request.net_error);
 
   DomainReliabilityBeacon beacon_template;
   if (request.response_info.connection_info !=
diff --git a/components/domain_reliability/monitor.h b/components/domain_reliability/monitor.h
index 7de6dbe..4d3fd21 100644
--- a/components/domain_reliability/monitor.h
+++ b/components/domain_reliability/monitor.h
@@ -30,7 +30,6 @@
 #include "net/base/network_change_notifier.h"
 #include "net/http/http_response_info.h"
 #include "net/socket/connection_attempts.h"
-#include "net/url_request/url_request_status.h"
 
 namespace base {
 class Value;
@@ -91,9 +90,10 @@
 
   // Should be called when |request| is complete. Will examine and possibly
   // log the (final) request. |started| should be true if the request was
-  // actually started before it was terminated. Must be called after
+  // actually started before it was terminated. |net_error| should be the
+  // final result of the network request. Must be called after
   // |SetDiscardUploads|.
-  void OnCompleted(net::URLRequest* request, bool started);
+  void OnCompleted(net::URLRequest* request, bool started, int net_error);
 
   // net::NetworkChangeNotifier::NetworkChangeObserver implementation:
   void OnNetworkChanged(
@@ -137,14 +137,14 @@
 
   struct DOMAIN_RELIABILITY_EXPORT RequestInfo {
     RequestInfo();
-    explicit RequestInfo(const net::URLRequest& request);
+    RequestInfo(const net::URLRequest& request, int net_error);
     RequestInfo(const RequestInfo& other);
     ~RequestInfo();
 
     static bool ShouldReportRequest(const RequestInfo& request);
 
     GURL url;
-    net::URLRequestStatus status;
+    int net_error;
     net::HttpResponseInfo response_info;
     int load_flags;
     net::LoadTimingInfo load_timing_info;
diff --git a/components/domain_reliability/monitor_unittest.cc b/components/domain_reliability/monitor_unittest.cc
index 92a216d0..50aa243 100644
--- a/components/domain_reliability/monitor_unittest.cc
+++ b/components/domain_reliability/monitor_unittest.cc
@@ -21,10 +21,10 @@
 #include "components/domain_reliability/google_configs.h"
 #include "components/domain_reliability/test_util.h"
 #include "net/base/load_flags.h"
+#include "net/base/net_errors.h"
 #include "net/http/http_response_headers.h"
 #include "net/http/http_util.h"
 #include "net/url_request/url_request_context_getter.h"
-#include "net/url_request/url_request_status.h"
 #include "net/url_request/url_request_test_util.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -70,7 +70,7 @@
 
   static RequestInfo MakeRequestInfo() {
     RequestInfo request;
-    request.status = net::URLRequestStatus();
+    request.net_error = net::OK;
     request.response_info.remote_endpoint =
         net::IPEndPoint(net::IPAddress(12, 34, 56, 78), 80);
     request.response_info.headers = MakeHttpResponseHeaders(
@@ -126,7 +126,7 @@
 
   RequestInfo request = MakeRequestInfo();
   request.url = GURL("http://example/");
-  request.status = net::URLRequestStatus::FromError(net::ERR_CONNECTION_RESET);
+  request.net_error = net::ERR_CONNECTION_RESET;
   request.response_info.headers = nullptr;
   OnRequestLegComplete(request);
 
@@ -187,8 +187,7 @@
 
   RequestInfo request = MakeRequestInfo();
   request.url = GURL("http://example/");
-  request.status =
-      net::URLRequestStatus::FromError(net::ERR_PROXY_CONNECTION_FAILED);
+  request.net_error = net::ERR_PROXY_CONNECTION_FAILED;
   OnRequestLegComplete(request);
 
   EXPECT_EQ(0u, CountQueuedBeacons(context));
@@ -200,7 +199,7 @@
 
   RequestInfo request = MakeRequestInfo();
   request.url = GURL("http://example/");
-  request.status = net::URLRequestStatus::FromError(net::ERR_CONNECTION_RESET);
+  request.net_error = net::ERR_CONNECTION_RESET;
   request.response_info.remote_endpoint =
       net::IPEndPoint(net::IPAddress(127, 0, 0, 1), 3128);
   request.response_info.was_fetched_via_proxy = true;
@@ -240,8 +239,7 @@
   RequestInfo request = MakeRequestInfo();
   request.url = GURL("http://example/");
   request.response_info.was_cached = true;
-  request.status =
-      net::URLRequestStatus::FromError(net::ERR_NAME_RESOLUTION_FAILED);
+  request.net_error = net::ERR_NAME_RESOLUTION_FAILED;
   OnRequestLegComplete(request);
 
   BeaconVector beacons;
@@ -263,7 +261,7 @@
   request.url = GURL("http://example/");
   request.load_flags =
       net::LOAD_DO_NOT_SAVE_COOKIES | net::LOAD_DO_NOT_SEND_COOKIES;
-  request.status = net::URLRequestStatus::FromError(net::ERR_CONNECTION_RESET);
+  request.net_error = net::ERR_CONNECTION_RESET;
   request.upload_depth = 1;
   OnRequestLegComplete(request);
 
@@ -303,7 +301,7 @@
   // Add a beacon.
   RequestInfo request = MakeRequestInfo();
   request.url = GURL("http://example/");
-  request.status = net::URLRequestStatus::FromError(net::ERR_CONNECTION_RESET);
+  request.net_error = net::ERR_CONNECTION_RESET;
   OnRequestLegComplete(request);
 
   // Make sure it was added.
@@ -326,16 +324,14 @@
       CreateAndAddContextForOrigin(origin1, false);
   RequestInfo request = MakeRequestInfo();
   request.url = origin1;
-  request.status =
-      net::URLRequestStatus::FromError(net::ERR_CONNECTION_RESET);
+  request.net_error = net::ERR_CONNECTION_RESET;
   OnRequestLegComplete(request);
 
   DomainReliabilityContext* context2 =
       CreateAndAddContextForOrigin(origin2, false);
   request = MakeRequestInfo();
   request.url = origin2;
-  request.status =
-      net::URLRequestStatus::FromError(net::ERR_CONNECTION_RESET);
+  request.net_error = net::ERR_CONNECTION_RESET;
   OnRequestLegComplete(request);
 
   // Delete the beacons for |origin1|.
@@ -389,7 +385,7 @@
 
   RequestInfo request = MakeRequestInfo();
   request.url = GURL("http://wildcard/");
-  request.status = net::URLRequestStatus::FromError(net::ERR_CONNECTION_RESET);
+  request.net_error = net::ERR_CONNECTION_RESET;
   OnRequestLegComplete(request);
 
   EXPECT_EQ(1u, CountQueuedBeacons(context));
@@ -401,7 +397,7 @@
 
   RequestInfo request = MakeRequestInfo();
   request.url = GURL("http://test.wildcard/");
-  request.status = net::URLRequestStatus::FromError(net::ERR_CONNECTION_RESET);
+  request.net_error = net::ERR_CONNECTION_RESET;
   OnRequestLegComplete(request);
 
   EXPECT_EQ(1u, CountQueuedBeacons(context));
@@ -413,7 +409,7 @@
 
   RequestInfo request = MakeRequestInfo();
   request.url = GURL("http://test.test.wildcard/");
-  request.status = net::URLRequestStatus::FromError(net::ERR_CONNECTION_RESET);
+  request.net_error = net::ERR_CONNECTION_RESET;
   OnRequestLegComplete(request);
 
   EXPECT_EQ(0u, CountQueuedBeacons(context));
@@ -427,7 +423,7 @@
 
   RequestInfo request = MakeRequestInfo();
   request.url = GURL("http://test.wildcard/");
-  request.status = net::URLRequestStatus::FromError(net::ERR_CONNECTION_RESET);
+  request.net_error = net::ERR_CONNECTION_RESET;
   OnRequestLegComplete(request);
 
   EXPECT_EQ(1u, CountQueuedBeacons(context1));
@@ -443,7 +439,7 @@
 
   RequestInfo request = MakeRequestInfo();
   request.url = GURL("http://test.wildcard/");
-  request.status = net::URLRequestStatus::FromError(net::ERR_CONNECTION_RESET);
+  request.net_error = net::ERR_CONNECTION_RESET;
   OnRequestLegComplete(request);
 
   EXPECT_EQ(1u, CountQueuedBeacons(context1));
diff --git a/components/download/internal/common/download_utils.cc b/components/download/internal/common/download_utils.cc
index ddc7b7c6..5789f75bd 100644
--- a/components/download/internal/common/download_utils.cc
+++ b/components/download/internal/common/download_utils.cc
@@ -268,7 +268,7 @@
         params->network_isolation_key();
   }
   request->do_not_prompt_for_login = params->do_not_prompt_for_login();
-  request->site_for_cookies = params->url();
+  request->site_for_cookies = net::SiteForCookies::FromUrl(params->url());
   request->referrer = params->referrer();
   request->referrer_policy = params->referrer_policy();
   request->is_main_frame = true;
diff --git a/components/download/public/common/download_danger_type.h b/components/download/public/common/download_danger_type.h
index 074a59a6e..575a8d7 100644
--- a/components/download/public/common/download_danger_type.h
+++ b/components/download/public/common/download_danger_type.h
@@ -72,6 +72,10 @@
   // opened by the user.
   DOWNLOAD_DANGER_TYPE_DEEP_SCANNED_OPENED_DANGEROUS = 16,
 
+  // The user is enrolled in the Advanced Protection Program, and the server has
+  // recommended this file be deep scanned.
+  DOWNLOAD_DANGER_TYPE_PROMPT_FOR_SCANNING = 17,
+
   // Memory space for histograms is determined by the max.
   // ALWAYS ADD NEW VALUES BEFORE THIS ONE.
   DOWNLOAD_DANGER_TYPE_MAX
diff --git a/components/exo/BUILD.gn b/components/exo/BUILD.gn
index fb2f86b..9704c816 100644
--- a/components/exo/BUILD.gn
+++ b/components/exo/BUILD.gn
@@ -304,9 +304,9 @@
     ]
 
     data_deps += [
-      "//ash/strings:ash_test_strings",
       "//ash/resources:ash_test_resources_100_percent",
       "//ash/resources:ash_test_resources_200_percent",
+      "//ash/strings:ash_test_strings",
     ]
   }
 }
diff --git a/components/exo/data_device_delegate.h b/components/exo/data_device_delegate.h
index 5b6918c..f6bb517 100644
--- a/components/exo/data_device_delegate.h
+++ b/components/exo/data_device_delegate.h
@@ -57,7 +57,7 @@
 
   // This should return true if |surface| is a valid target for this data
   // device. E.g. the surface is owned by the same client as the data device.
-  virtual bool CanAcceptDataEventsForSurface(Surface* surface) = 0;
+  virtual bool CanAcceptDataEventsForSurface(Surface* surface) const = 0;
 
  protected:
   virtual ~DataDeviceDelegate() {}
diff --git a/components/exo/data_device_unittest.cc b/components/exo/data_device_unittest.cc
index fa49f0b..8315408 100644
--- a/components/exo/data_device_unittest.cc
+++ b/components/exo/data_device_unittest.cc
@@ -90,7 +90,7 @@
   void OnSelection(const DataOffer& data_offer) override {
     events_.push_back(DataEvent::kSelection);
   }
-  bool CanAcceptDataEventsForSurface(Surface* surface) override {
+  bool CanAcceptDataEventsForSurface(Surface* surface) const override {
     return can_accept_data_events_for_surface_;
   }
 
diff --git a/components/exo/data_source.cc b/components/exo/data_source.cc
index e25c6df..153e7f467 100644
--- a/components/exo/data_source.cc
+++ b/components/exo/data_source.cc
@@ -302,4 +302,8 @@
   std::move(callback).Run(mime_type, std::move(output));
 }
 
+bool DataSource::CanBeDataSourceForCopy(Surface *surface) const {
+  return delegate_->CanAcceptDataEventsForSurface(surface);
+}
+
 }  // namespace exo
diff --git a/components/exo/data_source.h b/components/exo/data_source.h
index fb555ed..2182a67 100644
--- a/components/exo/data_source.h
+++ b/components/exo/data_source.h
@@ -11,6 +11,7 @@
 #include "base/containers/flat_set.h"
 #include "base/macros.h"
 #include "base/observer_list.h"
+#include "components/exo/surface.h"
 
 namespace exo {
 
@@ -78,6 +79,8 @@
   void ReadDataForTesting(const std::string& mime_type,
                           ReadDataCallback callback);
 
+  bool CanBeDataSourceForCopy(Surface *surface) const;
+
  private:
   // Reads data from the source. Then |callback| is invoked with read data. If
   // Cancelled() is invoked or DataSource is destroyed before completion,
diff --git a/components/exo/data_source_delegate.h b/components/exo/data_source_delegate.h
index 59614445..fceafe7 100644
--- a/components/exo/data_source_delegate.h
+++ b/components/exo/data_source_delegate.h
@@ -39,6 +39,10 @@
   // Called when the compositor selects one drag and drop action.
   virtual void OnAction(DndAction dnd_action) = 0;
 
+  // This should return true if |surface| is the source of this data source.
+  // E.g. the surface is owned by the same client as the data source.
+  virtual bool CanAcceptDataEventsForSurface(Surface* surface) const = 0;
+
  protected:
   virtual ~DataSourceDelegate() {}
 };
diff --git a/components/exo/data_source_unittest.cc b/components/exo/data_source_unittest.cc
index 44d52bba..924f176 100644
--- a/components/exo/data_source_unittest.cc
+++ b/components/exo/data_source_unittest.cc
@@ -41,6 +41,9 @@
   void OnDndDropPerformed() override {}
   void OnDndFinished() override {}
   void OnAction(DndAction dnd_action) override {}
+  bool CanAcceptDataEventsForSurface(Surface* surface) const override {
+    return true;
+  }
 };
 
 void CheckMimeType(const std::string& expected,
diff --git a/components/exo/display_unittest.cc b/components/exo/display_unittest.cc
index 0c5133f..6a2a24e9 100644
--- a/components/exo/display_unittest.cc
+++ b/components/exo/display_unittest.cc
@@ -216,7 +216,7 @@
                 const gfx::PointF& location) override {}
   void OnDrop() override {}
   void OnSelection(const DataOffer& data_offer) override {}
-  bool CanAcceptDataEventsForSurface(Surface* surface) override {
+  bool CanAcceptDataEventsForSurface(Surface* surface) const override {
     return false;
   }
 };
diff --git a/components/exo/pointer_unittest.cc b/components/exo/pointer_unittest.cc
index 4415897..bca8157 100644
--- a/components/exo/pointer_unittest.cc
+++ b/components/exo/pointer_unittest.cc
@@ -61,6 +61,9 @@
   void OnDndDropPerformed() override {}
   void OnDndFinished() override {}
   void OnAction(DndAction dnd_action) override {}
+  bool CanAcceptDataEventsForSurface(Surface* surface) const override {
+    return true;
+  }
 
   DISALLOW_COPY_AND_ASSIGN(TestDataSourceDelegate);
 };
diff --git a/components/exo/seat.cc b/components/exo/seat.cc
index a1d0591..4cd00bc5 100644
--- a/components/exo/seat.cc
+++ b/components/exo/seat.cc
@@ -93,6 +93,11 @@
 }
 
 void Seat::SetSelection(DataSource* source) {
+  Surface* focused_surface = GetFocusedSurface();
+  if (source && !source->CanBeDataSourceForCopy(focused_surface)) {
+    return;
+  }
+
   if (!source) {
     ui::Clipboard::GetForCurrentThread()->Clear(
         ui::ClipboardBuffer::kCopyPaste);
diff --git a/components/exo/seat_unittest.cc b/components/exo/seat_unittest.cc
index 8ff4fa0..da663ba 100644
--- a/components/exo/seat_unittest.cc
+++ b/components/exo/seat_unittest.cc
@@ -66,6 +66,9 @@
   void OnDndDropPerformed() override {}
   void OnDndFinished() override {}
   void OnAction(DndAction dnd_action) override {}
+  bool CanAcceptDataEventsForSurface(Surface* surface) const override {
+    return true;
+  }
 
   void SetData(std::vector<uint8_t> data) { data_ = std::move(data); }
 
diff --git a/components/exo/touch_unittest.cc b/components/exo/touch_unittest.cc
index 96a96cb..ce0df01 100644
--- a/components/exo/touch_unittest.cc
+++ b/components/exo/touch_unittest.cc
@@ -67,6 +67,9 @@
   void OnDndDropPerformed() override {}
   void OnDndFinished() override {}
   void OnAction(DndAction dnd_action) override {}
+  bool CanAcceptDataEventsForSurface(Surface* surface) const override {
+    return true;
+  }
 
   DISALLOW_COPY_AND_ASSIGN(TestDataSourceDelegate);
 };
diff --git a/components/exo/wayland/BUILD.gn b/components/exo/wayland/BUILD.gn
index 2f7e426..e07dc91 100644
--- a/components/exo/wayland/BUILD.gn
+++ b/components/exo/wayland/BUILD.gn
@@ -457,9 +457,9 @@
 
   if (is_chromeos) {
     data_deps += [
-      "//ash/strings:ash_test_strings",
       "//ash/resources:ash_test_resources_100_percent",
       "//ash/resources:ash_test_resources_200_percent",
+      "//ash/strings:ash_test_strings",
     ]
 
     deps += [
@@ -504,9 +504,9 @@
     ]
 
     data_deps += [
-      "//ash/strings:ash_test_strings",
       "//ash/resources:ash_test_resources_100_percent",
       "//ash/resources:ash_test_resources_200_percent",
+      "//ash/strings:ash_test_strings",
     ]
 
     deps += [ "//ash:test_support" ]
diff --git a/components/exo/wayland/wl_data_device_manager.cc b/components/exo/wayland/wl_data_device_manager.cc
index 846d794..b4ee13f4 100644
--- a/components/exo/wayland/wl_data_device_manager.cc
+++ b/components/exo/wayland/wl_data_device_manager.cc
@@ -79,11 +79,17 @@
 
 class WaylandDataSourceDelegate : public DataSourceDelegate {
  public:
-  explicit WaylandDataSourceDelegate(wl_resource* source)
-      : data_source_resource_(source) {}
+  explicit WaylandDataSourceDelegate(wl_client* client,
+                                     wl_resource* source)
+      : client_(client),
+        data_source_resource_(source) {}
 
   // Overridden from DataSourceDelegate:
   void OnDataSourceDestroying(DataSource* device) override { delete this; }
+  bool CanAcceptDataEventsForSurface(Surface* surface) const override {
+    return surface &&
+           wl_resource_get_client(GetSurfaceResource(surface)) == client_;
+  }
   void OnTarget(const base::Optional<std::string>& mime_type) override {
     wl_data_source_send_target(data_source_resource_,
                                mime_type ? mime_type->c_str() : nullptr);
@@ -122,6 +128,7 @@
   }
 
  private:
+  wl_client* const client_;
   wl_resource* const data_source_resource_;
 
   DISALLOW_COPY_AND_ASSIGN(WaylandDataSourceDelegate);
@@ -240,7 +247,7 @@
 
   // Overridden from DataDeviceDelegate:
   void OnDataDeviceDestroying(DataDevice* device) override { delete this; }
-  bool CanAcceptDataEventsForSurface(Surface* surface) override {
+  bool CanAcceptDataEventsForSurface(Surface* surface) const override {
     return surface &&
            wl_resource_get_client(GetSurfaceResource(surface)) == client_;
   }
@@ -362,8 +369,8 @@
   wl_resource* data_source_resource = wl_resource_create(
       client, &wl_data_source_interface, wl_resource_get_version(resource), id);
   SetImplementation(data_source_resource, &data_source_implementation,
-                    std::make_unique<DataSource>(
-                        new WaylandDataSourceDelegate(data_source_resource)));
+                    std::make_unique<DataSource>(new WaylandDataSourceDelegate(
+                        client, data_source_resource)));
 }
 
 void data_device_manager_get_data_device(wl_client* client,
diff --git a/components/feed/core/feed_networking_host.cc b/components/feed/core/feed_networking_host.cc
index 04c6848f..697a04c 100644
--- a/components/feed/core/feed_networking_host.cc
+++ b/components/feed/core/feed_networking_host.cc
@@ -229,7 +229,7 @@
   if (host_overridden_) {
     resource_request->credentials_mode =
         network::mojom::CredentialsMode::kInclude;
-    resource_request->site_for_cookies = url;
+    resource_request->site_for_cookies = net::SiteForCookies::FromUrl(url);
   }
 
   SetRequestHeaders(resource_request.get());
diff --git a/components/history/content/browser/download_conversions.cc b/components/history/content/browser/download_conversions.cc
index dd56472..cfe6d59 100644
--- a/components/history/content/browser/download_conversions.cc
+++ b/components/history/content/browser/download_conversions.cc
@@ -86,6 +86,8 @@
       return download::DOWNLOAD_DANGER_TYPE_DEEP_SCANNED_SAFE;
     case DownloadDangerType::DEEP_SCANNED_OPENED_DANGEROUS:
       return download::DOWNLOAD_DANGER_TYPE_DEEP_SCANNED_OPENED_DANGEROUS;
+    case DownloadDangerType::PROMPT_FOR_SCANNING:
+      return download::DOWNLOAD_DANGER_TYPE_PROMPT_FOR_SCANNING;
     case DownloadDangerType::INVALID:
       NOTREACHED();
       return download::DOWNLOAD_DANGER_TYPE_MAX;
@@ -131,6 +133,8 @@
       return DownloadDangerType::DEEP_SCANNED_SAFE;
     case download::DOWNLOAD_DANGER_TYPE_DEEP_SCANNED_OPENED_DANGEROUS:
       return DownloadDangerType::DEEP_SCANNED_OPENED_DANGEROUS;
+    case download::DOWNLOAD_DANGER_TYPE_PROMPT_FOR_SCANNING:
+      return DownloadDangerType::PROMPT_FOR_SCANNING;
 
     default:
       NOTREACHED();
diff --git a/components/history/core/browser/download_constants.h b/components/history/core/browser/download_constants.h
index 41c2bd8..9258b25 100644
--- a/components/history/core/browser/download_constants.h
+++ b/components/history/core/browser/download_constants.h
@@ -43,6 +43,7 @@
   SENSITIVE_CONTENT_BLOCK = 14,
   DEEP_SCANNED_SAFE = 15,
   DEEP_SCANNED_OPENED_DANGEROUS = 16,
+  PROMPT_FOR_SCANNING = 17,
 };
 
 // DownloadId represents the id of a DownloadRow into the DownloadDatabase.
diff --git a/components/history/core/browser/download_types.cc b/components/history/core/browser/download_types.cc
index 8a69cd4e..c79a736b 100644
--- a/components/history/core/browser/download_types.cc
+++ b/components/history/core/browser/download_types.cc
@@ -71,6 +71,7 @@
     case DownloadDangerType::SENSITIVE_CONTENT_BLOCK:
     case DownloadDangerType::DEEP_SCANNED_SAFE:
     case DownloadDangerType::DEEP_SCANNED_OPENED_DANGEROUS:
+    case DownloadDangerType::PROMPT_FOR_SCANNING:
       return static_cast<DownloadDangerType>(danger_type);
 
     case DownloadDangerType::INVALID:
@@ -126,6 +127,8 @@
     case DownloadDangerType::DEEP_SCANNED_OPENED_DANGEROUS:
       return stream
              << "history::DownloadDangerType::DEEP_SCANNED_OPENED_DANGEROUS";
+    case DownloadDangerType::PROMPT_FOR_SCANNING:
+      return stream << "history::DownloadDangerType::PROMPT_FOR_SCANNING";
   }
   NOTREACHED();
   return stream;
diff --git a/components/history/core/browser/top_sites_impl.cc b/components/history/core/browser/top_sites_impl.cc
index d214954..7dabe45 100644
--- a/components/history/core/browser/top_sites_impl.cc
+++ b/components/history/core/browser/top_sites_impl.cc
@@ -37,7 +37,7 @@
 namespace {
 
 void RunOrPostGetMostVisitedURLsCallback(
-    base::TaskRunner* task_runner,
+    base::SequencedTaskRunner* task_runner,
     const TopSitesImpl::GetMostVisitedURLsCallback& callback,
     const MostVisitedURLList& urls) {
   if (task_runner->RunsTasksInCurrentSequence())
diff --git a/components/invalidation/impl/fcm_invalidation_listener.cc b/components/invalidation/impl/fcm_invalidation_listener.cc
index 54a0036..f0436b9 100644
--- a/components/invalidation/impl/fcm_invalidation_listener.cc
+++ b/components/invalidation/impl/fcm_invalidation_listener.cc
@@ -59,6 +59,10 @@
   DoSubscriptionUpdate();
 }
 
+void FCMInvalidationListener::ClearInstanceIDToken() {
+  TokenReceived(std::string());
+}
+
 void FCMInvalidationListener::InvalidationReceived(
     const std::string& payload,
     const std::string& private_topic,
@@ -120,7 +124,13 @@
 void FCMInvalidationListener::TokenReceived(
     const std::string& instance_id_token) {
   instance_id_token_ = instance_id_token;
-  DoSubscriptionUpdate();
+  if (instance_id_token_.empty()) {
+    if (per_user_topic_registration_manager_) {
+      per_user_topic_registration_manager_->ClearInstanceIDToken();
+    }
+  } else {
+    DoSubscriptionUpdate();
+  }
 }
 
 void FCMInvalidationListener::Acknowledge(const invalidation::ObjectId& id,
diff --git a/components/invalidation/impl/fcm_invalidation_listener.h b/components/invalidation/impl/fcm_invalidation_listener.h
index 6f10397..79e0318 100644
--- a/components/invalidation/impl/fcm_invalidation_listener.h
+++ b/components/invalidation/impl/fcm_invalidation_listener.h
@@ -60,6 +60,12 @@
   // called at any time.
   void UpdateInterestedTopics(const Topics& topics);
 
+  // Called when the InstanceID token is revoked (usually because the InstanceID
+  // itself was deleted). Note that while this class receives new tokens
+  // internally (via FCMSyncNetworkChannel), the deletion flow is triggered
+  // externally, so it needs to be explicitly notified of token revocations.
+  void ClearInstanceIDToken();
+
   // AckHandler implementation.
   void Acknowledge(const invalidation::ObjectId& id,
                    const syncer::AckHandle& handle) override;
diff --git a/components/invalidation/impl/fcm_invalidation_service_base.cc b/components/invalidation/impl/fcm_invalidation_service_base.cc
index 2d400e38..c153403 100644
--- a/components/invalidation/impl/fcm_invalidation_service_base.cc
+++ b/components/invalidation/impl/fcm_invalidation_service_base.cc
@@ -226,9 +226,13 @@
 }
 
 void FCMInvalidationServiceBase::StopInvalidatorPermanently() {
-  StopInvalidator();
+  // Reset the client ID (aka InstanceID) *before* stopping, so that
+  // FCMInvalidationListener gets notified about the cleared ID (the listener
+  // gets destroyed during StopInvalidator()).
   if (!client_id_.empty())
     ResetClientID();
+
+  StopInvalidator();
 }
 
 void FCMInvalidationServiceBase::PopulateClientID() {
@@ -265,6 +269,12 @@
   // Also let the registrar (and its observers) know that the instance ID is
   // gone.
   invalidator_registrar_.UpdateInvalidatorInstanceId(std::string());
+
+  // This will also delete all Instance ID *tokens*; we need to let the
+  // FCMInvalidationListener know.
+  if (invalidation_listener_) {
+    invalidation_listener_->ClearInstanceIDToken();
+  }
 }
 
 void FCMInvalidationServiceBase::OnInstanceIDReceived(
@@ -287,9 +297,6 @@
   base::UmaHistogramEnumeration("FCMInvalidations.ResetClientIDStatus", result);
 
   diagnostic_info_.instance_id_cleared = base::Time::Now();
-
-  // TODO(crbug.com/1028761,crbug.com/1023813): This also deleted all Instance
-  // ID *tokens*; we need to let the FCMInvalidationListener know.
 }
 
 void FCMInvalidationServiceBase::DoUpdateSubscribedTopicsIfNeeded() {
diff --git a/components/invalidation/impl/fcm_invalidation_service_unittest.cc b/components/invalidation/impl/fcm_invalidation_service_unittest.cc
index 0d8be2f..9ec92a1 100644
--- a/components/invalidation/impl/fcm_invalidation_service_unittest.cc
+++ b/components/invalidation/impl/fcm_invalidation_service_unittest.cc
@@ -39,7 +39,6 @@
 using instance_id::InstanceID;
 using instance_id::InstanceIDDriver;
 using testing::_;
-using testing::StrictMock;
 
 namespace invalidation {
 
@@ -154,8 +153,9 @@
     identity_provider_ = std::make_unique<ProfileIdentityProvider>(
         identity_test_env_.identity_manager());
 
-    mock_instance_id_driver_ = std::make_unique<MockInstanceIDDriver>();
-    mock_instance_id_ = std::make_unique<MockInstanceID>();
+    mock_instance_id_driver_ =
+        std::make_unique<testing::NiceMock<MockInstanceIDDriver>>();
+    mock_instance_id_ = std::make_unique<testing::NiceMock<MockInstanceID>>();
     ON_CALL(*mock_instance_id_driver_, GetInstanceID(kApplicationName))
         .WillByDefault(testing::Return(mock_instance_id_.get()));
     ON_CALL(*mock_instance_id_, GetID(_))
diff --git a/components/invalidation/impl/invalidator_registrar_with_memory_unittest.cc b/components/invalidation/impl/invalidator_registrar_with_memory_unittest.cc
index f5317b2..4de0488 100644
--- a/components/invalidation/impl/invalidator_registrar_with_memory_unittest.cc
+++ b/components/invalidation/impl/invalidator_registrar_with_memory_unittest.cc
@@ -7,114 +7,253 @@
 #include <memory>
 
 #include "base/macros.h"
-#include "components/invalidation/impl/invalidator_test_template.h"
+#include "components/invalidation/impl/fake_invalidation_handler.h"
+#include "components/invalidation/public/invalidation.h"
+#include "components/invalidation/public/invalidation_util.h"
+#include "components/invalidation/public/invalidator_state.h"
 #include "components/invalidation/public/topic_invalidation_map.h"
 #include "components/prefs/testing_pref_service.h"
+#include "google/cacheinvalidation/include/types.h"
+#include "google/cacheinvalidation/types.pb.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace syncer {
 
 namespace {
 
-class RegistrarInvalidator : public Invalidator {
- public:
-  RegistrarInvalidator() {
-    InvalidatorRegistrarWithMemory::RegisterProfilePrefs(
-        pref_service_.registry());
-    registrar_ = std::make_unique<InvalidatorRegistrarWithMemory>(
-        &pref_service_, "sender_id", /*migrate_old_prefs=*/false);
-  }
-  ~RegistrarInvalidator() override {}
+// Initialize the invalidator, register a handler, register some topics for that
+// handler, and then unregister the handler, dispatching invalidations in
+// between. The handler should only see invalidations when it's registered and
+// its topics are registered.
+TEST(InvalidatorRegistrarWithMemoryTest, Basic) {
+  const invalidation::ObjectId id1(ipc::invalidation::ObjectSource::TEST, "a");
+  const invalidation::ObjectId id2(ipc::invalidation::ObjectSource::TEST, "b");
+  const invalidation::ObjectId id3(ipc::invalidation::ObjectSource::TEST, "c");
+  const invalidation::ObjectId id4(ipc::invalidation::ObjectSource::TEST, "d");
 
-  InvalidatorRegistrarWithMemory* GetRegistrar() { return registrar_.get(); }
+  TestingPrefServiceSimple pref_service;
+  InvalidatorRegistrarWithMemory::RegisterProfilePrefs(pref_service.registry());
 
-  // Invalidator implementation.
-  void RegisterHandler(InvalidationHandler* handler) override {
-    registrar_->RegisterHandler(handler);
+  auto invalidator = std::make_unique<InvalidatorRegistrarWithMemory>(
+      &pref_service, "sender_id", /*migrate_old_prefs=*/false);
+
+  FakeInvalidationHandler handler;
+  invalidator->RegisterHandler(&handler);
+
+  TopicInvalidationMap invalidation_map;
+  invalidation_map.Insert(Invalidation::Init(id1, 1, "1"));
+  invalidation_map.Insert(Invalidation::Init(id2, 2, "2"));
+  invalidation_map.Insert(Invalidation::Init(id3, 3, "3"));
+
+  // Should be ignored since no topics are registered to |handler|.
+  invalidator->DispatchInvalidationsToHandlers(invalidation_map);
+  EXPECT_EQ(0, handler.GetInvalidationCount());
+
+  EXPECT_TRUE(invalidator->UpdateRegisteredTopics(
+      &handler, ConvertIdsToTopics({id1, id2}, &handler)));
+
+  invalidator->UpdateInvalidatorState(INVALIDATIONS_ENABLED);
+  EXPECT_EQ(INVALIDATIONS_ENABLED, handler.GetInvalidatorState());
+
+  TopicInvalidationMap expected_invalidations;
+  expected_invalidations.Insert(Invalidation::Init(id1, 1, "1"));
+  expected_invalidations.Insert(Invalidation::Init(id2, 2, "2"));
+
+  invalidator->DispatchInvalidationsToHandlers(invalidation_map);
+  EXPECT_EQ(1, handler.GetInvalidationCount());
+  EXPECT_EQ(expected_invalidations,
+            ConvertObjectIdInvalidationMapToTopicInvalidationMap(
+                handler.GetLastInvalidationMap()));
+
+  // Remove id1, add id3.
+  EXPECT_TRUE(invalidator->UpdateRegisteredTopics(
+      &handler, ConvertIdsToTopics({id2, id3}, &handler)));
+
+  expected_invalidations = TopicInvalidationMap();
+  expected_invalidations.Insert(Invalidation::Init(id2, 2, "2"));
+  expected_invalidations.Insert(Invalidation::Init(id3, 3, "3"));
+
+  // Removed topic should not be notified, newly-added ones should.
+  invalidator->DispatchInvalidationsToHandlers(invalidation_map);
+  EXPECT_EQ(2, handler.GetInvalidationCount());
+  EXPECT_EQ(expected_invalidations,
+            ConvertObjectIdInvalidationMapToTopicInvalidationMap(
+                handler.GetLastInvalidationMap()));
+
+  invalidator->UpdateInvalidatorState(TRANSIENT_INVALIDATION_ERROR);
+  EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, handler.GetInvalidatorState());
+
+  invalidator->UpdateInvalidatorState(INVALIDATION_CREDENTIALS_REJECTED);
+  EXPECT_EQ(INVALIDATION_CREDENTIALS_REJECTED, handler.GetInvalidatorState());
+
+  invalidator->UnregisterHandler(&handler);
+
+  // Should be ignored since |handler| isn't registered anymore.
+  invalidator->DispatchInvalidationsToHandlers(invalidation_map);
+  EXPECT_EQ(2, handler.GetInvalidationCount());
+}
+
+// Register handlers and some topics for those handlers, register a handler with
+// no topics, and register a handler with some topics but unregister it. Then,
+// dispatch some invalidations. Handlers that are not registered should not get
+// invalidations, and the ones that have registered topics should receive
+// invalidations for those topics.
+TEST(InvalidatorRegistrarWithMemoryTest, MultipleHandlers) {
+  const invalidation::ObjectId id1(ipc::invalidation::ObjectSource::TEST, "a");
+  const invalidation::ObjectId id2(ipc::invalidation::ObjectSource::TEST, "b");
+  const invalidation::ObjectId id3(ipc::invalidation::ObjectSource::TEST, "c");
+  const invalidation::ObjectId id4(ipc::invalidation::ObjectSource::TEST, "d");
+
+  TestingPrefServiceSimple pref_service;
+  InvalidatorRegistrarWithMemory::RegisterProfilePrefs(pref_service.registry());
+
+  auto invalidator = std::make_unique<InvalidatorRegistrarWithMemory>(
+      &pref_service, "sender_id", /*migrate_old_prefs=*/false);
+
+  FakeInvalidationHandler handler1;
+  FakeInvalidationHandler handler2;
+  FakeInvalidationHandler handler3;
+  FakeInvalidationHandler handler4;
+
+  invalidator->RegisterHandler(&handler1);
+  invalidator->RegisterHandler(&handler2);
+  invalidator->RegisterHandler(&handler3);
+  invalidator->RegisterHandler(&handler4);
+
+  EXPECT_TRUE(invalidator->UpdateRegisteredTopics(
+      &handler1, ConvertIdsToTopics({id1, id2}, &handler1)));
+  EXPECT_TRUE(invalidator->UpdateRegisteredTopics(
+      &handler2, ConvertIdsToTopics({id3}, &handler2)));
+  // Don't register any IDs for handler3.
+  EXPECT_TRUE(invalidator->UpdateRegisteredTopics(
+      &handler4, ConvertIdsToTopics({id4}, &handler4)));
+
+  invalidator->UnregisterHandler(&handler4);
+
+  invalidator->UpdateInvalidatorState(INVALIDATIONS_ENABLED);
+  EXPECT_EQ(INVALIDATIONS_ENABLED, handler1.GetInvalidatorState());
+  EXPECT_EQ(INVALIDATIONS_ENABLED, handler2.GetInvalidatorState());
+  EXPECT_EQ(INVALIDATIONS_ENABLED, handler3.GetInvalidatorState());
+  EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, handler4.GetInvalidatorState());
+
+  TopicInvalidationMap invalidation_map;
+  invalidation_map.Insert(Invalidation::Init(id1, 1, "1"));
+  invalidation_map.Insert(Invalidation::Init(id2, 2, "2"));
+  invalidation_map.Insert(Invalidation::Init(id3, 3, "3"));
+  invalidation_map.Insert(Invalidation::Init(id4, 4, "4"));
+
+  invalidator->DispatchInvalidationsToHandlers(invalidation_map);
+
+  TopicInvalidationMap expected_invalidations1;
+  expected_invalidations1.Insert(Invalidation::Init(id1, 1, "1"));
+  expected_invalidations1.Insert(Invalidation::Init(id2, 2, "2"));
+
+  EXPECT_EQ(1, handler1.GetInvalidationCount());
+  EXPECT_EQ(expected_invalidations1,
+            ConvertObjectIdInvalidationMapToTopicInvalidationMap(
+                handler1.GetLastInvalidationMap()));
+
+  TopicInvalidationMap expected_invalidations2;
+  expected_invalidations2.Insert(Invalidation::Init(id3, 3, "3"));
+
+  EXPECT_EQ(1, handler2.GetInvalidationCount());
+  EXPECT_EQ(expected_invalidations2,
+            ConvertObjectIdInvalidationMapToTopicInvalidationMap(
+                handler2.GetLastInvalidationMap()));
+
+  EXPECT_EQ(0, handler3.GetInvalidationCount());
+  EXPECT_EQ(0, handler4.GetInvalidationCount());
+
+  invalidator->UpdateInvalidatorState(TRANSIENT_INVALIDATION_ERROR);
+  EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, handler1.GetInvalidatorState());
+  EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, handler2.GetInvalidatorState());
+  EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, handler3.GetInvalidatorState());
+  EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, handler4.GetInvalidatorState());
+
+  invalidator->UnregisterHandler(&handler3);
+  invalidator->UnregisterHandler(&handler2);
+  invalidator->UnregisterHandler(&handler1);
+}
+
+// Multiple registrations by different handlers on the same topic should
+// return false.
+TEST(InvalidatorRegistrarWithMemoryTest, MultipleRegistrations) {
+  const invalidation::ObjectId id1(ipc::invalidation::ObjectSource::TEST, "a");
+
+  TestingPrefServiceSimple pref_service;
+  InvalidatorRegistrarWithMemory::RegisterProfilePrefs(pref_service.registry());
+
+  auto invalidator = std::make_unique<InvalidatorRegistrarWithMemory>(
+      &pref_service, "sender_id", /*migrate_old_prefs=*/false);
+
+  FakeInvalidationHandler handler1;
+  FakeInvalidationHandler handler2;
+
+  invalidator->RegisterHandler(&handler1);
+  invalidator->RegisterHandler(&handler2);
+
+  // Registering both handlers for the same topic. First call should succeed,
+  // second should fail.
+  EXPECT_TRUE(invalidator->UpdateRegisteredTopics(
+      &handler1, ConvertIdsToTopics({id1}, &handler1)));
+  EXPECT_FALSE(invalidator->UpdateRegisteredTopics(
+      &handler2, ConvertIdsToTopics({id1}, &handler2)));
+
+  invalidator->UnregisterHandler(&handler2);
+  invalidator->UnregisterHandler(&handler1);
+}
+
+// Make sure that passing an empty set to UpdateRegisteredTopics clears the
+// corresponding entries for the handler.
+TEST(InvalidatorRegistrarWithMemoryTest, EmptySetUnregisters) {
+  const invalidation::ObjectId id1(ipc::invalidation::ObjectSource::TEST, "a");
+  const invalidation::ObjectId id2(ipc::invalidation::ObjectSource::TEST, "b");
+  const invalidation::ObjectId id3(ipc::invalidation::ObjectSource::TEST, "c");
+
+  TestingPrefServiceSimple pref_service;
+  InvalidatorRegistrarWithMemory::RegisterProfilePrefs(pref_service.registry());
+
+  auto invalidator = std::make_unique<InvalidatorRegistrarWithMemory>(
+      &pref_service, "sender_id", /*migrate_old_prefs=*/false);
+
+  FakeInvalidationHandler handler1;
+
+  // Control observer.
+  FakeInvalidationHandler handler2;
+
+  invalidator->RegisterHandler(&handler1);
+  invalidator->RegisterHandler(&handler2);
+
+  EXPECT_TRUE(invalidator->UpdateRegisteredTopics(
+      &handler1, ConvertIdsToTopics({id1, id2}, &handler1)));
+  EXPECT_TRUE(invalidator->UpdateRegisteredTopics(
+      &handler2, ConvertIdsToTopics({id3}, &handler2)));
+
+  // Unregister the topics for the first observer. It should not receive any
+  // further invalidations.
+  EXPECT_TRUE(invalidator->UpdateRegisteredTopics(&handler1, {}));
+
+  invalidator->UpdateInvalidatorState(INVALIDATIONS_ENABLED);
+  EXPECT_EQ(INVALIDATIONS_ENABLED, handler1.GetInvalidatorState());
+  EXPECT_EQ(INVALIDATIONS_ENABLED, handler2.GetInvalidatorState());
+
+  {
+    TopicInvalidationMap invalidation_map;
+    invalidation_map.Insert(Invalidation::Init(id1, 1, "1"));
+    invalidation_map.Insert(Invalidation::Init(id2, 2, "2"));
+    invalidation_map.Insert(Invalidation::Init(id3, 3, "3"));
+    invalidator->DispatchInvalidationsToHandlers(invalidation_map);
+    EXPECT_EQ(0, handler1.GetInvalidationCount());
+    EXPECT_EQ(1, handler2.GetInvalidationCount());
   }
 
-  bool UpdateRegisteredIds(InvalidationHandler* handler,
-                           const ObjectIdSet& ids) override {
-    return registrar_->UpdateRegisteredTopics(handler,
-                                              ConvertIdsToTopics(ids, handler));
-  }
+  invalidator->UpdateInvalidatorState(TRANSIENT_INVALIDATION_ERROR);
+  EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, handler1.GetInvalidatorState());
+  EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, handler2.GetInvalidatorState());
 
-  bool UpdateRegisteredIds(InvalidationHandler* handler,
-                           const Topics& ids) override {
-    NOTREACHED();
-    return false;
-  }
-
-  void UnregisterHandler(InvalidationHandler* handler) override {
-    registrar_->UnregisterHandler(handler);
-  }
-
-  InvalidatorState GetInvalidatorState() const override {
-    return registrar_->GetInvalidatorState();
-  }
-
-  void UpdateCredentials(const CoreAccountId& account_id,
-                         const std::string& token) override {
-    // Do nothing.
-  }
-
-  void RequestDetailedStatus(
-      base::Callback<void(const base::DictionaryValue&)> call) const override {
-    // Do nothing.
-  }
-
- private:
-  TestingPrefServiceSimple pref_service_;
-  std::unique_ptr<InvalidatorRegistrarWithMemory> registrar_;
-
-  DISALLOW_COPY_AND_ASSIGN(RegistrarInvalidator);
-};
-
-class RegistrarInvalidatorWithMemoryTestDelegate {
- public:
-  RegistrarInvalidatorWithMemoryTestDelegate() {}
-
-  ~RegistrarInvalidatorWithMemoryTestDelegate() { DestroyInvalidator(); }
-
-  void CreateInvalidator(const std::string& invalidator_client_id,
-                         const std::string& initial_state,
-                         const base::WeakPtr<InvalidationStateTracker>&
-                             invalidation_state_tracker) {
-    DCHECK(!invalidator_);
-    invalidator_ = std::make_unique<RegistrarInvalidator>();
-  }
-
-  RegistrarInvalidator* GetInvalidator() { return invalidator_.get(); }
-
-  void DestroyInvalidator() { invalidator_.reset(); }
-
-  void WaitForInvalidator() {
-    // Do nothing.
-  }
-
-  void TriggerOnInvalidatorStateChange(InvalidatorState state) {
-    invalidator_->GetRegistrar()->UpdateInvalidatorState(state);
-  }
-
-  void TriggerOnIncomingInvalidation(
-      const ObjectIdInvalidationMap& invalidation_map) {
-    TopicInvalidationMap topics_map;
-    std::vector<syncer::Invalidation> invalidations;
-    invalidation_map.GetAllInvalidations(&invalidations);
-    for (const auto& invalidation : invalidations) {
-      topics_map.Insert(invalidation);
-    }
-
-    invalidator_->GetRegistrar()->DispatchInvalidationsToHandlers(topics_map);
-  }
-
- private:
-  std::unique_ptr<RegistrarInvalidator> invalidator_;
-};
-
-INSTANTIATE_TYPED_TEST_SUITE_P(RegistrarInvalidatorWithMemoryTest,
-                               InvalidatorTest,
-                               RegistrarInvalidatorWithMemoryTestDelegate);
+  invalidator->UnregisterHandler(&handler2);
+  invalidator->UnregisterHandler(&handler1);
+}
 
 }  // namespace
 
diff --git a/components/invalidation/impl/per_user_topic_registration_manager.cc b/components/invalidation/impl/per_user_topic_registration_manager.cc
index 4656d21..24558332 100644
--- a/components/invalidation/impl/per_user_topic_registration_manager.cc
+++ b/components/invalidation/impl/per_user_topic_registration_manager.cc
@@ -146,21 +146,18 @@
 // static
 void PerUserTopicRegistrationManager::RegisterPrefs(
     PrefRegistrySimple* registry) {
-  registry->RegisterDictionaryPref(kTypeSubscribedForInvalidationsDeprecated);
-  registry->RegisterStringPref(kActiveRegistrationTokenDeprecated,
-                               std::string());
-
-  registry->RegisterDictionaryPref(kTypeSubscribedForInvalidations);
-  registry->RegisterDictionaryPref(kActiveRegistrationTokens);
+  // Same as RegisterProfilePrefs; see comment in the header.
+  RegisterProfilePrefs(registry);
 }
 
 // State of the instance ID token when subscription is requested.
 // Used by UMA histogram, so entries shouldn't be reordered or removed.
 enum class PerUserTopicRegistrationManager::TokenStateOnSubscriptionRequest {
   kTokenWasEmpty = 0,
-  kUnchangedToken = 1,
+  kTokenUnchanged = 1,
   kTokenChanged = 2,
-  kMaxValue = kTokenChanged,
+  kTokenCleared = 3,
+  kMaxValue = kTokenCleared,
 };
 
 struct PerUserTopicRegistrationManager::SubscriptionEntry {
@@ -277,9 +274,7 @@
     const std::string& instance_id_token) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   instance_id_token_ = instance_id_token;
-  base::UmaHistogramEnumeration(
-      "FCMInvalidations.TokenStateOnRegistrationRequest",
-      DropAllSavedSubscriptionsOnTokenChange());
+  DropAllSavedSubscriptionsOnTokenChange();
 
   for (const auto& topic : topics) {
     // If the topic isn't subscribed yet, schedule the subscription.
@@ -326,11 +321,20 @@
     }
   }
 
-  // Kick off the process of actually processing the (un)subscription we just
+  // Kick off the process of actually processing the (un)subscriptions we just
   // scheduled.
+  // TODO(crbug.com/1020117): Only do this if we actually scheduled anything,
+  // i.e. |pending_subscriptions_| is not empty.
   RequestAccessToken();
 }
 
+void PerUserTopicRegistrationManager::ClearInstanceIDToken() {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
+  instance_id_token_.clear();
+  DropAllSavedSubscriptionsOnTokenChange();
+}
+
 void PerUserTopicRegistrationManager::StartPendingSubscriptions() {
   for (const auto& pending_subscription : pending_subscriptions_) {
     StartPendingSubscriptionRequest(pending_subscription.first);
@@ -519,30 +523,48 @@
                           base::Unretained(this)));
 }
 
+void PerUserTopicRegistrationManager::DropAllSavedSubscriptionsOnTokenChange() {
+  TokenStateOnSubscriptionRequest outcome =
+      DropAllSavedSubscriptionsOnTokenChangeImpl();
+  base::UmaHistogramEnumeration(
+      "FCMInvalidations.TokenStateOnRegistrationRequest2", outcome);
+}
+
 PerUserTopicRegistrationManager::TokenStateOnSubscriptionRequest
-PerUserTopicRegistrationManager::DropAllSavedSubscriptionsOnTokenChange() {
+PerUserTopicRegistrationManager::DropAllSavedSubscriptionsOnTokenChangeImpl() {
   {
     DictionaryPrefUpdate token_update(pref_service_, kActiveRegistrationTokens);
-    std::string current_token;
-    token_update->GetString(project_id_, &current_token);
-    if (current_token.empty()) {
-      token_update->SetString(project_id_, instance_id_token_);
-      return TokenStateOnSubscriptionRequest::kTokenWasEmpty;
-    }
-    if (current_token == instance_id_token_) {
-      return TokenStateOnSubscriptionRequest::kUnchangedToken;
+    std::string previous_token;
+    token_update->GetString(project_id_, &previous_token);
+    if (previous_token == instance_id_token_) {
+      // Note: This includes the case where the token was and still is empty.
+      return TokenStateOnSubscriptionRequest::kTokenUnchanged;
     }
 
     token_update->SetString(project_id_, instance_id_token_);
+    if (previous_token.empty()) {
+      // If we didn't have a registration token before, we shouldn't have had
+      // any subscriptions either, so no need to drop them.
+      return TokenStateOnSubscriptionRequest::kTokenWasEmpty;
+    }
   }
 
+  // The token has been cleared or changed. In either case, clear all existing
+  // subscriptions since they won't be valid anymore. (No need to send
+  // unsubscribe requests - if the token was revoked, the server will drop the
+  // subscriptions anyway.)
   PerProjectDictionaryPrefUpdate update(pref_service_, project_id_);
   *update = base::Value(base::Value::Type::DICTIONARY);
   topic_to_private_topic_.clear();
   private_topic_to_topic_.clear();
-  return TokenStateOnSubscriptionRequest::kTokenChanged;
-  // TODO(crbug.com/1020117): Figure out if the unsubscribe request should be
-  // sent with the old token.
+  // Also cancel any pending subscription requests.
+  for (const auto& pending_subscription : pending_subscriptions_) {
+    pending_subscription.second->Cancel();
+  }
+  pending_subscriptions_.clear();
+  return instance_id_token_.empty()
+             ? TokenStateOnSubscriptionRequest::kTokenCleared
+             : TokenStateOnSubscriptionRequest::kTokenChanged;
 }
 
 void PerUserTopicRegistrationManager::NotifySubscriptionChannelStateChange(
diff --git a/components/invalidation/impl/per_user_topic_registration_manager.h b/components/invalidation/impl/per_user_topic_registration_manager.h
index f0e6523e..972ddbf 100644
--- a/components/invalidation/impl/per_user_topic_registration_manager.h
+++ b/components/invalidation/impl/per_user_topic_registration_manager.h
@@ -73,11 +73,20 @@
   static void RegisterProfilePrefs(PrefRegistrySimple* registry);
   static void RegisterPrefs(PrefRegistrySimple* registry);
 
-  virtual void UpdateSubscribedTopics(const Topics& topics,
-                                      const std::string& token);
-
   virtual void Init();
 
+  // Triggers subscription and/or unsubscription requests so that the set of
+  // subscribed topics matches |topics|. If the |instance_id_token| has changed,
+  // triggers re-subscription for all topics.
+  virtual void UpdateSubscribedTopics(const Topics& topics,
+                                      const std::string& instance_id_token);
+
+  // Called when the InstanceID token (previously passed to
+  // UpdateSubscribedTopics()) is deleted or revoked. Clears the cached token
+  // and any subscribed topics, since the subscriptions will not be valid
+  // anymore.
+  void ClearInstanceIDToken();
+
   // Classes interested in subscription channel state changes should implement
   // PerUserTopicRegistrationManager::Observer and register here.
   void AddObserver(Observer* observer);
@@ -121,7 +130,9 @@
   void OnAccessTokenRequestSucceeded(const std::string& access_token);
   void OnAccessTokenRequestFailed(GoogleServiceAuthError error);
 
-  TokenStateOnSubscriptionRequest DropAllSavedSubscriptionsOnTokenChange();
+  void DropAllSavedSubscriptionsOnTokenChange();
+  TokenStateOnSubscriptionRequest DropAllSavedSubscriptionsOnTokenChangeImpl();
+
   void NotifySubscriptionChannelStateChange(
       SubscriptionChannelState invalidator_state);
 
diff --git a/components/invalidation/impl/per_user_topic_registration_manager_unittest.cc b/components/invalidation/impl/per_user_topic_registration_manager_unittest.cc
index 1ba2966..ebdb1d5 100644
--- a/components/invalidation/impl/per_user_topic_registration_manager_unittest.cc
+++ b/components/invalidation/impl/per_user_topic_registration_manager_unittest.cc
@@ -11,6 +11,7 @@
 #include "base/run_loop.h"
 #include "base/stl_util.h"
 #include "base/strings/stringprintf.h"
+#include "base/test/metrics/histogram_tester.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/test/task_environment.h"
 #include "base/values.h"
@@ -203,7 +204,7 @@
   EXPECT_TRUE(per_user_topic_registration_manager->GetSubscribedTopicsForTest()
                   .empty());
 
-  // Empty response body should result in no succesfull registrations.
+  // Empty response body should result in no successful registrations.
   std::string response_body;
 
   url_loader_factory()->AddResponse(
@@ -517,4 +518,94 @@
   EXPECT_EQ(observed_state(), SubscriptionChannelState::ENABLED);
 }
 
+TEST_F(PerUserTopicRegistrationManagerTest, ShouldRecordTokenStateHistogram) {
+  const char kTokenStateHistogram[] =
+      "FCMInvalidations.TokenStateOnRegistrationRequest2";
+  enum class TokenStateOnSubscriptionRequest {
+    kTokenWasEmpty = 0,
+    kTokenUnchanged = 1,
+    kTokenChanged = 2,
+    kTokenCleared = 3,
+  };
+
+  const Topics topics = GetSequenceOfTopics(kInvalidationObjectIdsCount);
+  auto per_user_topic_registration_manager = BuildRegistrationManager();
+
+  // Subscribe to some topics (and provide an InstanceID token).
+  {
+    base::HistogramTester histograms;
+
+    AddCorrectSubscriptionResponce(/*private_topic=*/"", "original_token");
+    per_user_topic_registration_manager->UpdateSubscribedTopics(
+        topics, "original_token");
+    base::RunLoop().RunUntilIdle();
+
+    histograms.ExpectUniqueSample(
+        kTokenStateHistogram, TokenStateOnSubscriptionRequest::kTokenWasEmpty,
+        1);
+  }
+
+  ASSERT_EQ(TopicSetFromTopics(topics),
+            per_user_topic_registration_manager->GetSubscribedTopicsForTest());
+  ASSERT_TRUE(
+      per_user_topic_registration_manager->HaveAllRequestsFinishedForTest());
+
+  // Call UpdateSubscribedTopics again with the same token.
+  {
+    base::HistogramTester histograms;
+
+    per_user_topic_registration_manager->UpdateSubscribedTopics(
+        topics, "original_token");
+    base::RunLoop().RunUntilIdle();
+
+    histograms.ExpectUniqueSample(
+        kTokenStateHistogram, TokenStateOnSubscriptionRequest::kTokenUnchanged,
+        1);
+  }
+
+  // Topic subscriptions are unchanged.
+  ASSERT_EQ(TopicSetFromTopics(topics),
+            per_user_topic_registration_manager->GetSubscribedTopicsForTest());
+  ASSERT_TRUE(
+      per_user_topic_registration_manager->HaveAllRequestsFinishedForTest());
+
+  // Call UpdateSubscribedTopics again, but now with a different token.
+  {
+    base::HistogramTester histograms;
+
+    AddCorrectSubscriptionResponce(/*private_topic=*/"", "different_token");
+    per_user_topic_registration_manager->UpdateSubscribedTopics(
+        topics, "different_token");
+    base::RunLoop().RunUntilIdle();
+
+    histograms.ExpectUniqueSample(
+        kTokenStateHistogram, TokenStateOnSubscriptionRequest::kTokenChanged,
+        1);
+  }
+
+  // Topic subscriptions are still the same (all topics were re-subscribed).
+  ASSERT_EQ(TopicSetFromTopics(topics),
+            per_user_topic_registration_manager->GetSubscribedTopicsForTest());
+  ASSERT_TRUE(
+      per_user_topic_registration_manager->HaveAllRequestsFinishedForTest());
+
+  // Call ClearInstanceIDToken.
+  {
+    base::HistogramTester histograms;
+
+    per_user_topic_registration_manager->ClearInstanceIDToken();
+    base::RunLoop().RunUntilIdle();
+
+    histograms.ExpectUniqueSample(
+        kTokenStateHistogram, TokenStateOnSubscriptionRequest::kTokenCleared,
+        1);
+  }
+
+  // Topic subscriptions are gone now.
+  ASSERT_TRUE(per_user_topic_registration_manager->GetSubscribedTopicsForTest()
+                  .empty());
+  ASSERT_TRUE(
+      per_user_topic_registration_manager->HaveAllRequestsFinishedForTest());
+}
+
 }  // namespace syncer
diff --git a/components/language/content/browser/test_utils.h b/components/language/content/browser/test_utils.h
index 2ef0a80..39e5f56 100644
--- a/components/language/content/browser/test_utils.h
+++ b/components/language/content/browser/test_utils.h
@@ -7,7 +7,6 @@
 
 #include "mojo/public/cpp/bindings/pending_receiver.h"
 #include "mojo/public/cpp/bindings/receiver.h"
-#include "services/device/public/mojom/constants.mojom.h"
 #include "services/device/public/mojom/geolocation.mojom.h"
 #include "services/device/public/mojom/geoposition.mojom.h"
 #include "services/device/public/mojom/public_ip_address_geolocation_provider.mojom.h"
diff --git a/components/metrics/structured/structured_metrics_provider.cc b/components/metrics/structured/structured_metrics_provider.cc
index 2bdb49c9..a939049 100644
--- a/components/metrics/structured/structured_metrics_provider.cc
+++ b/components/metrics/structured/structured_metrics_provider.cc
@@ -8,13 +8,13 @@
 #include "base/values.h"
 #include "components/metrics/structured/event_base.h"
 #include "components/prefs/json_pref_store.h"
-#include "components/prefs/writeable_pref_store.h"
 
 namespace metrics {
 namespace structured {
 namespace {
 
 using ::metrics::ChromeUserMetricsExtension;
+using PrefReadError = ::PersistentPrefStore::PrefReadError;
 
 }  // namespace
 
@@ -22,6 +22,8 @@
 
 char StructuredMetricsProvider::kStorageFileName[] = "structured_metrics.json";
 
+// TODO(crbug.com/1016655): Add error and usage UMA metrics.
+
 StructuredMetricsProvider::StructuredMetricsProvider() = default;
 
 StructuredMetricsProvider::~StructuredMetricsProvider() {
@@ -29,7 +31,16 @@
     storage_->RemoveObserver(this);
 }
 
-// TODO(crbug.com/1016655): Add error and usage UMA metrics.
+StructuredMetricsProvider::PrefStoreErrorDelegate::PrefStoreErrorDelegate() =
+    default;
+
+StructuredMetricsProvider::PrefStoreErrorDelegate::~PrefStoreErrorDelegate() =
+    default;
+
+void StructuredMetricsProvider::PrefStoreErrorDelegate::OnError(
+    PrefReadError error) {
+  // TODO(crbug.com/1016655): Add error metrics.
+}
 
 void StructuredMetricsProvider::OnRecord(const EventBase& event) {
   // Records the information in |event|, to be logged to UMA on the next call to
@@ -50,13 +61,13 @@
   storage_ = new JsonPrefStore(
       profile_path.Append(StructuredMetricsProvider::kStorageFileName));
   storage_->AddObserver(this);
-  // TODO(crbug.com/1016655): Remove nullptr and add an error delegate to report
-  // error metrics.
-  storage_->ReadPrefsAsync(nullptr);
+
+  // |storage_| takes ownership of the error delegate.
+  storage_->ReadPrefsAsync(new PrefStoreErrorDelegate());
 }
 
-void StructuredMetricsProvider::OnInitializationCompleted(bool succeeded) {
-  if (!succeeded)
+void StructuredMetricsProvider::OnInitializationCompleted(const bool success) {
+  if (!success)
     return;
   DCHECK(!storage_->ReadOnly());
   initialized_ = true;
diff --git a/components/metrics/structured/structured_metrics_provider.h b/components/metrics/structured/structured_metrics_provider.h
index f025e080..ec57468d 100644
--- a/components/metrics/structured/structured_metrics_provider.h
+++ b/components/metrics/structured/structured_metrics_provider.h
@@ -14,6 +14,7 @@
 #include "base/memory/weak_ptr.h"
 #include "components/metrics/metrics_provider.h"
 #include "components/metrics/structured/recorder.h"
+#include "components/prefs/persistent_pref_store.h"
 #include "components/prefs/pref_store.h"
 
 class JsonPrefStore;
@@ -75,6 +76,17 @@
   friend class Recorder;
   friend class StructuredMetricsProviderTest;
 
+  // An error delegate called when |storage_| has finished reading prefs from
+  // disk.
+  class PrefStoreErrorDelegate : public PersistentPrefStore::ReadErrorDelegate {
+   public:
+    PrefStoreErrorDelegate();
+    ~PrefStoreErrorDelegate() override;
+
+    // PersistentPrefStore::ReadErrorDelegate:
+    void OnError(PersistentPrefStore::PrefReadError error) override;
+  };
+
   // metrics::MetricsProvider:
   void OnRecordingEnabled() override;
   void OnRecordingDisabled() override;
@@ -86,7 +98,7 @@
   void OnProfileAdded(const base::FilePath& profile_path) override;
 
   // PrefStore::Observer:
-  void OnInitializationCompleted(bool succeeded) override;
+  void OnInitializationCompleted(bool success) override;
   void OnPrefValueChanged(const std::string& key) override {}
 
   // Beyond this number of logging events between successive calls to
diff --git a/components/mirroring/service/message_dispatcher.cc b/components/mirroring/service/message_dispatcher.cc
index bfe02b6..190e5423 100644
--- a/components/mirroring/service/message_dispatcher.cc
+++ b/components/mirroring/service/message_dispatcher.cc
@@ -71,7 +71,7 @@
 void MessageDispatcher::Send(mojom::CastMessagePtr message) {
   if (message->message_namespace != mojom::kWebRtcNamespace &&
       message->message_namespace != mojom::kRemotingNamespace) {
-    DVLOG(2) << "Ignore message with unknown namespace = "
+    DVLOG(2) << "Ignoring message with unknown namespace = "
              << message->message_namespace;
     return;  // Ignore message with wrong namespace.
   }
diff --git a/components/module_installer/android/java/src/org/chromium/components/module_installer/builder/Module.java b/components/module_installer/android/java/src/org/chromium/components/module_installer/builder/Module.java
index 256f06e..f14fd56 100644
--- a/components/module_installer/android/java/src/org/chromium/components/module_installer/builder/Module.java
+++ b/components/module_installer/android/java/src/org/chromium/components/module_installer/builder/Module.java
@@ -6,7 +6,7 @@
 
 import androidx.annotation.VisibleForTesting;
 
-import org.chromium.base.BundleUtils;
+import org.chromium.base.BuildConfig;
 import org.chromium.base.StrictModeContext;
 import org.chromium.base.annotations.JNINamespace;
 import org.chromium.base.annotations.NativeMethods;
@@ -153,7 +153,7 @@
      * @return The module's {@link ModuleDescriptor}.
      */
     private static ModuleDescriptor loadModuleDescriptor(String name) {
-        if (!BundleUtils.isBundle()) {
+        if (!BuildConfig.IS_BUNDLE) {
             return new ModuleDescriptor() {
                 @Override
                 public String[] getLibraries() {
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 6c9ea53d..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,7 +4,7 @@
 
 package org.chromium.components.module_installer.engine;
 
-import org.chromium.base.BundleUtils;
+import org.chromium.base.BuildConfig;
 import org.chromium.base.CommandLine;
 
 /**
@@ -12,7 +12,7 @@
  */
 public class EngineFactory {
     public InstallEngine getEngine() {
-        if (!BundleUtils.isBundle()) {
+        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 682b149..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,7 +4,7 @@
 
 package org.chromium.components.module_installer.util;
 
-import org.chromium.base.BundleUtils;
+import org.chromium.base.BuildConfig;
 import org.chromium.base.annotations.MainDex;
 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 (!BundleUtils.isBundle()) 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 (!BundleUtils.isBundle()) 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 (!BundleUtils.isBundle()) 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 (!BundleUtils.isBundle()) return;
+        if (!BuildConfig.IS_BUNDLE) return;
 
         try (Timer timer = new Timer()) {
             SplitCompatInitializer.initApplication();
diff --git a/components/nacl/common/nacl_service.cc b/components/nacl/common/nacl_service.cc
index 8de72161..18331264 100644
--- a/components/nacl/common/nacl_service.cc
+++ b/components/nacl/common/nacl_service.cc
@@ -51,7 +51,7 @@
 }  // namespace
 
 NaClService::NaClService(
-    scoped_refptr<base::SequencedTaskRunner> ipc_task_runner)
+    scoped_refptr<base::SingleThreadTaskRunner> ipc_task_runner)
     : ipc_support_(std::move(ipc_task_runner),
                    mojo::core::ScopedIPCSupport::ShutdownPolicy::FAST) {}
 
diff --git a/components/nacl/common/nacl_service.h b/components/nacl/common/nacl_service.h
index 00b6bd4f..cbaa4a6 100644
--- a/components/nacl/common/nacl_service.h
+++ b/components/nacl/common/nacl_service.h
@@ -6,7 +6,7 @@
 #define COMPONENTS_NACL_COMMON_NACL_SERVICE_H_
 
 #include "base/memory/scoped_refptr.h"
-#include "base/sequenced_task_runner.h"
+#include "base/single_thread_task_runner.h"
 #include "mojo/core/embedder/scoped_ipc_support.h"
 #include "mojo/public/cpp/system/message_pipe.h"
 
@@ -15,7 +15,7 @@
 class NaClService {
  public:
   explicit NaClService(
-      scoped_refptr<base::SequencedTaskRunner> ipc_task_runner);
+      scoped_refptr<base::SingleThreadTaskRunner> ipc_task_runner);
   ~NaClService();
 
   // Returns a message pipe to use for the client endpoint of a legacy IPC
diff --git a/components/omnibox/browser/autocomplete_match.cc b/components/omnibox/browser/autocomplete_match.cc
index cfc18c04..0d2eff1 100644
--- a/components/omnibox/browser/autocomplete_match.cc
+++ b/components/omnibox/browser/autocomplete_match.cc
@@ -781,34 +781,6 @@
 }
 
 // static
-bool AutocompleteMatch::AllowedToBeDefault(const AutocompleteInput& input,
-                                           AutocompleteMatch& match) {
-  if (match.inline_autocompletion.empty())
-    return true;
-  if (input.prevent_inline_autocomplete())
-    return false;
-  if (input.text().empty() || !base::IsUnicodeWhitespace(input.text().back()))
-    return true;
-
-  // If we've reached here, the input ends in trailing whitespace. If the
-  // trailing whitespace prefixes |match.inline_autocompletion|, then allow the
-  // match to be default and remove the whitespace from
-  // |match.inline_autocompletion|.
-  size_t last_non_whitespace_pos =
-      input.text().find_last_not_of(base::kWhitespaceUTF16);
-  DCHECK_NE(last_non_whitespace_pos, std::string::npos);
-  auto whitespace_suffix = input.text().substr(last_non_whitespace_pos + 1);
-  if (base::StartsWith(match.inline_autocompletion, whitespace_suffix,
-                       base::CompareCase::SENSITIVE)) {
-    match.inline_autocompletion =
-        match.inline_autocompletion.substr(whitespace_suffix.size());
-    return true;
-  }
-
-  return false;
-}
-
-// static
 void AutocompleteMatch::LogSearchEngineUsed(
     const AutocompleteMatch& match,
     TemplateURLService* template_url_service) {
@@ -1076,6 +1048,33 @@
   return copy;
 }
 
+void AutocompleteMatch::SetAllowedToBeDefault(const AutocompleteInput& input) {
+  if (inline_autocompletion.empty())
+    allowed_to_be_default_match = true;
+  else if (input.prevent_inline_autocomplete())
+    allowed_to_be_default_match = false;
+  else if (input.text().empty() ||
+           !base::IsUnicodeWhitespace(input.text().back()))
+    allowed_to_be_default_match = true;
+  else {
+    // If we've reached here, the input ends in trailing whitespace. If the
+    // trailing whitespace prefixes |inline_autocompletion|, then allow the
+    // match to be default and remove the whitespace from
+    // |inline_autocompletion|.
+    size_t last_non_whitespace_pos =
+        input.text().find_last_not_of(base::kWhitespaceUTF16);
+    DCHECK_NE(last_non_whitespace_pos, std::string::npos);
+    auto whitespace_suffix = input.text().substr(last_non_whitespace_pos + 1);
+    if (base::StartsWith(inline_autocompletion, whitespace_suffix,
+                         base::CompareCase::SENSITIVE)) {
+      inline_autocompletion =
+          inline_autocompletion.substr(whitespace_suffix.size());
+      allowed_to_be_default_match = true;
+    } else
+      allowed_to_be_default_match = false;
+  }
+}
+
 void AutocompleteMatch::InlineTailPrefix(const base::string16& common_prefix) {
   // Prevent re-addition of prefix.
   if (type == AutocompleteMatchType::SEARCH_SUGGEST_TAIL &&
diff --git a/components/omnibox/browser/autocomplete_match.h b/components/omnibox/browser/autocomplete_match.h
index fa5cf86..5e13cdf 100644
--- a/components/omnibox/browser/autocomplete_match.h
+++ b/components/omnibox/browser/autocomplete_match.h
@@ -303,21 +303,6 @@
   // components are important (part of the match), and should not be trimmed.
   static url_formatter::FormatUrlTypes GetFormatTypes(bool preserve_scheme,
                                                       bool preserve_subdomain);
-
-  // Determines whether a particular match is allowed to be the default match
-  // by comparing |input.text| and |match.inline_autocompletion|. Therefore,
-  // |match.inline_autocompletion| should be set prior to invoking this method.
-  // Also considers trailing whitespace in the input, so the input should not be
-  // fixed up.
-  //
-  // Input "x" will allow default matches "x", "xy", and "x y".
-  // Input "x " will allow default matches "x" and "x y".
-  // Input "x  " will allow default match "x".
-  // Input "x y" will allow default match "x y".
-  // Input "x" with prevent_inline_autocomplete will allow default match "x".
-  static bool AllowedToBeDefault(const AutocompleteInput& input,
-                                 AutocompleteMatch& match);
-
   // Logs the search engine used to navigate to a search page or auto complete
   // suggestion. For direct URL navigations, nothing is logged.
   static void LogSearchEngineUsed(const AutocompleteMatch& match,
@@ -435,6 +420,19 @@
   // |swap_contents_and_description| for conditions they are swapped.
   AutocompleteMatch GetMatchWithContentsAndDescriptionPossiblySwapped() const;
 
+  // Determines whether this match is allowed to be the default match by
+  // comparing |input.text| and |inline_autocompletion|. Therefore,
+  // |inline_autocompletion| should be set prior to invoking this method. Also
+  // Also considers trailing whitespace in the input, so the input should not be
+  // fixed up. May trim trailing whitespaces from |inline_autocompletion|.
+  //
+  // Input "x" will allow default matches "x", "xy", and "x y".
+  // Input "x " will allow default matches "x" and "x y".
+  // Input "x  " will allow default match "x".
+  // Input "x y" will allow default match "x y".
+  // Input "x" with prevent_inline_autocomplete will allow default match "x".
+  void SetAllowedToBeDefault(const AutocompleteInput& input);
+
   // If this match is a tail suggestion, prepends the passed |common_prefix|.
   // If not, but the prefix matches the beginning of the suggestion, dims that
   // portion in the classification.
diff --git a/components/omnibox/browser/autocomplete_match_unittest.cc b/components/omnibox/browser/autocomplete_match_unittest.cc
index 4178c74..1789808 100644
--- a/components/omnibox/browser/autocomplete_match_unittest.cc
+++ b/components/omnibox/browser/autocomplete_match_unittest.cc
@@ -8,6 +8,7 @@
 
 #include <utility>
 
+#include "autocomplete_match.h"
 #include "base/stl_util.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/test/scoped_feature_list.h"
@@ -420,4 +421,59 @@
   EXPECT_EQ(500, search_what_you_typed.relevance);
   EXPECT_EQ(AutocompleteMatchType::SEARCH_HISTORY, suggest_match.type);
   EXPECT_EQ(AutocompleteMatchType::SEARCH_HISTORY, search_what_you_typed.type);
-}
\ No newline at end of file
+}
+
+TEST(AutocompleteMatchTest, SetAllowedToBeDefault) {
+  auto test = [](int caseI, const std::string input_text,
+                 bool input_prevent_inline_autocomplete,
+                 const std::string match_inline_autocompletion,
+                 const std::string expected_inline_autocompletion,
+                 bool expected_allowed_to_be_default_match) {
+    AutocompleteInput input(base::UTF8ToUTF16(input_text),
+                            metrics::OmniboxEventProto::OTHER,
+                            TestSchemeClassifier());
+    input.set_prevent_inline_autocomplete(input_prevent_inline_autocomplete);
+
+    AutocompleteMatch match;
+    match.inline_autocompletion =
+        base::UTF8ToUTF16(match_inline_autocompletion);
+
+    match.SetAllowedToBeDefault(input);
+
+    EXPECT_EQ(base::UTF16ToUTF8(match.inline_autocompletion).c_str(),
+              expected_inline_autocompletion)
+        << "case " << caseI;
+    EXPECT_EQ(match.allowed_to_be_default_match,
+              expected_allowed_to_be_default_match)
+        << "case " << caseI;
+  };
+
+  // Test all combinations of:
+  // 1) input text in ["goo", "goo ", "goo  "]
+  // 2) input prevent_inline_autocomplete in [false, true]
+  // 3) match inline_autocopmletion in ["", "gle.com", " gle.com", "  gle.com"]
+  test(1, "goo", false, "", "", true);
+  test(2, "goo", false, "gle.com", "gle.com", true);
+  test(3, "goo", false, " gle.com", " gle.com", true);
+  test(4, "goo", false, "  gle.com", "  gle.com", true);
+  test(5, "goo ", false, "", "", true);
+  test(6, "goo ", false, "gle.com", "gle.com", false);
+  test(7, "goo ", false, " gle.com", "gle.com", true);
+  test(8, "goo ", false, "  gle.com", " gle.com", true);
+  test(9, "goo  ", false, "", "", true);
+  test(10, "goo  ", false, "gle.com", "gle.com", false);
+  test(11, "goo  ", false, " gle.com", " gle.com", false);
+  test(12, "goo  ", false, "  gle.com", "gle.com", true);
+  test(13, "goo", true, "", "", true);
+  test(14, "goo", true, "gle.com", "gle.com", false);
+  test(15, "goo", true, " gle.com", " gle.com", false);
+  test(16, "goo", true, "  gle.com", "  gle.com", false);
+  test(17, "goo ", true, "", "", true);
+  test(18, "goo ", true, "gle.com", "gle.com", false);
+  test(19, "goo ", true, " gle.com", " gle.com", false);
+  test(20, "goo ", true, "  gle.com", "  gle.com", false);
+  test(21, "goo  ", true, "", "", true);
+  test(22, "goo  ", true, "gle.com", "gle.com", false);
+  test(23, "goo  ", true, " gle.com", " gle.com", false);
+  test(24, "goo  ", true, "  gle.com", "  gle.com", false);
+}
diff --git a/components/omnibox/browser/history_quick_provider.cc b/components/omnibox/browser/history_quick_provider.cc
index 8b69ef7e..eae7f3c2 100644
--- a/components/omnibox/browser/history_quick_provider.cc
+++ b/components/omnibox/browser/history_quick_provider.cc
@@ -272,8 +272,7 @@
   if (inline_autocomplete_offset != base::string16::npos) {
     match.inline_autocompletion =
         match.fill_into_edit.substr(inline_autocomplete_offset);
-    match.allowed_to_be_default_match =
-        AutocompleteMatch::AllowedToBeDefault(autocomplete_input_, match);
+    match.SetAllowedToBeDefault(autocomplete_input_);
   } else {
     auto title = match.description + base::UTF8ToUTF16(" - ") + match.contents;
     match.TryAutocompleteWithTitle(title, autocomplete_input_);
diff --git a/components/omnibox/browser/history_url_provider.cc b/components/omnibox/browser/history_url_provider.cc
index e8033ee..69fb919 100644
--- a/components/omnibox/browser/history_url_provider.cc
+++ b/components/omnibox/browser/history_url_provider.cc
@@ -1248,8 +1248,7 @@
     DCHECK(inline_autocomplete_offset <= match.fill_into_edit.length());
     match.inline_autocompletion =
         match.fill_into_edit.substr(inline_autocomplete_offset);
-    match.allowed_to_be_default_match =
-        AutocompleteMatch::AllowedToBeDefault(params.input_before_fixup, match);
+    match.SetAllowedToBeDefault(params.input_before_fixup);
   }
 
   const auto format_types = AutocompleteMatch::GetFormatTypes(
diff --git a/components/omnibox/browser/history_url_provider.h b/components/omnibox/browser/history_url_provider.h
index b8e9d39..8ecca65 100644
--- a/components/omnibox/browser/history_url_provider.h
+++ b/components/omnibox/browser/history_url_provider.h
@@ -120,8 +120,8 @@
   // live beyond the original query while it runs on the history thread.
   AutocompleteInput input;
   // |input_before_fixup| is needed for invoking
-  // |AutocompleteMatch::AllowedToBeDefault| which considers trailing input
-  // whitespaces which the fixed up |input| will have trimmed.
+  // |AutocompleteMatch::SetAllowedToBeDefault| which considers
+  // trailing input whitespaces which the fixed up |input| will have trimmed.
   AutocompleteInput input_before_fixup;
 
   // Set when "http://" should be trimmed from the beginning of the URLs.
diff --git a/components/omnibox/browser/location_bar_model_impl.cc b/components/omnibox/browser/location_bar_model_impl.cc
index 8bbc5e0..2717f7fc 100644
--- a/components/omnibox/browser/location_bar_model_impl.cc
+++ b/components/omnibox/browser/location_bar_model_impl.cc
@@ -186,24 +186,14 @@
   if (IsOfflinePage())
     return omnibox::kOfflinePinIcon;
 
-  GURL url = GetURL();
   security_state::SecurityLevel security_level = GetSecurityLevel();
   switch (security_level) {
     case security_state::NONE:
-      // Show a danger triangle icon on HTTPS pages with passive mixed content
-      // when kMarkHttpAsParameterDangerWarning is enabled.
-      if (security_state::ShouldDowngradeNeutralStyling(
-              security_level, url,
-              base::BindRepeating(&content::IsOriginSecure))) {
-        return omnibox::kNotSecureWarningIcon;
-      }
       return omnibox::kHttpIcon;
     case security_state::WARNING:
       // When kMarkHttpAsParameterDangerWarning is enabled, show a danger
-      // triangle icon unless the page has a non-HTTPS secure origin.
-      if (security_state::ShouldDowngradeNeutralStyling(
-              security_level, url,
-              base::BindRepeating(&content::IsOriginSecure))) {
+      // triangle icon.
+      if (security_state::ShouldShowDangerTriangleForWarningLevel()) {
         return omnibox::kNotSecureWarningIcon;
       }
       return omnibox::kHttpIcon;
diff --git a/components/omnibox/browser/location_bar_model_impl_unittest.cc b/components/omnibox/browser/location_bar_model_impl_unittest.cc
index 32fdc79c..8a7b20e5 100644
--- a/components/omnibox/browser/location_bar_model_impl_unittest.cc
+++ b/components/omnibox/browser/location_bar_model_impl_unittest.cc
@@ -11,8 +11,16 @@
 #include "components/omnibox/browser/location_bar_model_delegate.h"
 #include "components/omnibox/browser/test_omnibox_client.h"
 #include "components/omnibox/common/omnibox_features.h"
+#include "components/security_state/core/features.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "ui/gfx/color_palette.h"
+#include "ui/gfx/favicon_size.h"
+#include "ui/gfx/paint_vector_icon.h"
 #include "url/gurl.h"
+#if !defined(OS_ANDROID) && !defined(OS_IOS)
+#include "components/omnibox/browser/vector_icons.h"  // nogncheck
+#include "components/vector_icons/vector_icons.h"     // nogncheck
+#endif
 
 namespace {
 
@@ -222,4 +230,45 @@
   EXPECT_EQ(base::string16(), result);
 }
 
+#if !defined(OS_ANDROID) && !defined(OS_IOS)
+// Tests GetVectorIcon returns the correct security indicator icon when the
+// danger-warning experiment is disabled.
+TEST_F(LocationBarModelImplTest, GetVectorIcon_DefaultWarning) {
+  base::test::ScopedFeatureList scoped_feature_list;
+  scoped_feature_list.InitAndDisableFeature(
+      security_state::features::kMarkHttpAsFeature);
+
+  delegate()->SetSecurityLevel(security_state::SecurityLevel::WARNING);
+
+  gfx::ImageSkia expected_icon = gfx::CreateVectorIcon(
+      omnibox::kHttpIcon, gfx::kFaviconSize, gfx::kPlaceholderColor);
+
+  gfx::ImageSkia icon = gfx::CreateVectorIcon(
+      model()->GetVectorIcon(), gfx::kFaviconSize, gfx::kPlaceholderColor);
+
+  EXPECT_EQ(icon.bitmap(), expected_icon.bitmap());
+}
+
+// Tests GetVectorIcon returns the correct security indicator icon when the
+// danger-warning experiment is enabled.
+TEST_F(LocationBarModelImplTest, GetVectorIcon_DangerWarning) {
+  base::test::ScopedFeatureList scoped_feature_list;
+  scoped_feature_list.InitAndEnableFeatureWithParameters(
+      security_state::features::kMarkHttpAsFeature,
+      {{security_state::features::kMarkHttpAsFeatureParameterName,
+        security_state::features::kMarkHttpAsParameterDangerWarning}});
+
+  delegate()->SetSecurityLevel(security_state::SecurityLevel::WARNING);
+
+  gfx::ImageSkia expected_icon =
+      gfx::CreateVectorIcon(omnibox::kNotSecureWarningIcon, gfx::kFaviconSize,
+                            gfx::kPlaceholderColor);
+
+  gfx::ImageSkia icon = gfx::CreateVectorIcon(
+      model()->GetVectorIcon(), gfx::kFaviconSize, gfx::kPlaceholderColor);
+
+  EXPECT_EQ(icon.bitmap(), expected_icon.bitmap());
+}
+#endif  // !defined(OS_IOS)
+
 }  // namespace
diff --git a/components/omnibox/browser/remote_suggestions_service.cc b/components/omnibox/browser/remote_suggestions_service.cc
index 10de5a7..80459a3 100644
--- a/components/omnibox/browser/remote_suggestions_service.cc
+++ b/components/omnibox/browser/remote_suggestions_service.cc
@@ -120,7 +120,7 @@
   request->load_flags = net::LOAD_DO_NOT_SAVE_COOKIES;
   // Try to attach cookies for signed in user.
   request->attach_same_site_cookies = true;
-  request->site_for_cookies = suggest_url;
+  request->site_for_cookies = net::SiteForCookies::FromUrl(suggest_url);
   AddVariationHeaders(request.get());
   StartDownloadAndTransferLoader(std::move(request), std::string(),
                                  traffic_annotation, std::move(start_callback),
diff --git a/components/omnibox/browser/remote_suggestions_service_unittest.cc b/components/omnibox/browser/remote_suggestions_service_unittest.cc
index d8c79dee..520ba06 100644
--- a/components/omnibox/browser/remote_suggestions_service_unittest.cc
+++ b/components/omnibox/browser/remote_suggestions_service_unittest.cc
@@ -66,7 +66,8 @@
   RunAndWait();
   EXPECT_TRUE(resource_request.attach_same_site_cookies);
   EXPECT_EQ(net::LOAD_DO_NOT_SAVE_COOKIES, resource_request.load_flags);
-  EXPECT_EQ(resource_request.url, resource_request.site_for_cookies);
+  EXPECT_TRUE(resource_request.site_for_cookies.IsEquivalent(
+      net::SiteForCookies::FromUrl(resource_request.url)));
   const std::string kServiceUri = "https://www.google.com/complete/search";
   EXPECT_EQ(kServiceUri,
             resource_request.url.spec().substr(0, kServiceUri.size()));
diff --git a/components/omnibox/browser/shortcuts_provider.cc b/components/omnibox/browser/shortcuts_provider.cc
index d5d608e1..0ccff67 100644
--- a/components/omnibox/browser/shortcuts_provider.cc
+++ b/components/omnibox/browser/shortcuts_provider.cc
@@ -334,8 +334,7 @@
       if (inline_autocomplete_offset != base::string16::npos) {
         match.inline_autocompletion =
             match.fill_into_edit.substr(inline_autocomplete_offset);
-        match.allowed_to_be_default_match =
-            AutocompleteMatch::AllowedToBeDefault(input, match);
+        match.SetAllowedToBeDefault(input);
       }
     }
   }
diff --git a/components/omnibox/browser/titled_url_match_utils.cc b/components/omnibox/browser/titled_url_match_utils.cc
index a848a09..3b365e23 100644
--- a/components/omnibox/browser/titled_url_match_utils.cc
+++ b/components/omnibox/browser/titled_url_match_utils.cc
@@ -88,8 +88,7 @@
   if (inline_autocomplete_offset != base::string16::npos) {
     match.inline_autocompletion =
         match.fill_into_edit.substr(inline_autocomplete_offset);
-    match.allowed_to_be_default_match =
-        AutocompleteMatch::AllowedToBeDefault(input, match);
+    match.SetAllowedToBeDefault(input);
   } else {
     auto title = match.description + base::UTF8ToUTF16(" - ") + match.contents;
     match.TryAutocompleteWithTitle(title, input);
diff --git a/components/password_manager/core/browser/login_database.cc b/components/password_manager/core/browser/login_database.cc
index 7bd2227..0848cbb8 100644
--- a/components/password_manager/core/browser/login_database.cc
+++ b/components/password_manager/core/browser/login_database.cc
@@ -28,6 +28,7 @@
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "base/time/time.h"
+#include "base/trace_event/trace_event.h"
 #include "build/build_config.h"
 #include "components/autofill/core/common/password_form.h"
 #include "components/os_crypt/os_crypt.h"
@@ -700,6 +701,7 @@
 LoginDatabase::~LoginDatabase() = default;
 
 bool LoginDatabase::Init() {
+  TRACE_EVENT0("passwords", "LoginDatabase::Init");
   // Set pragmas for a small, private database (based on WebDatabase).
   db_.set_page_size(2048);
   db_.set_cache_size(32);
@@ -867,6 +869,7 @@
 
 void LoginDatabase::ReportMetrics(const std::string& sync_username,
                                   bool custom_passphrase_sync_enabled) {
+  TRACE_EVENT0("passwords", "LoginDatabase::ReportMetrics");
   sql::Statement s(db_.GetCachedStatement(
       SQL_FROM_HERE,
       "SELECT signon_realm, password_type, blacklisted_by_user,"
@@ -1142,6 +1145,7 @@
 
 PasswordStoreChangeList LoginDatabase::AddLogin(const PasswordForm& form,
                                                 AddLoginError* error) {
+  TRACE_EVENT0("passwords", "LoginDatabase::AddLogin");
   if (error) {
     *error = AddLoginError::kNone;
   }
@@ -1221,6 +1225,7 @@
 
 PasswordStoreChangeList LoginDatabase::UpdateLogin(const PasswordForm& form,
                                                    UpdateLoginError* error) {
+  TRACE_EVENT0("passwords", "LoginDatabase::UpdateLogin");
   if (error) {
     *error = UpdateLoginError::kNone;
   }
@@ -1306,6 +1311,7 @@
 
 bool LoginDatabase::RemoveLogin(const PasswordForm& form,
                                 PasswordStoreChangeList* changes) {
+  TRACE_EVENT0("passwords", "LoginDatabase::RemoveLogin");
   if (changes) {
     changes->clear();
   }
@@ -1340,6 +1346,7 @@
 
 bool LoginDatabase::RemoveLoginByPrimaryKey(int primary_key,
                                             PasswordStoreChangeList* changes) {
+  TRACE_EVENT0("passwords", "LoginDatabase::RemoveLoginByPrimaryKey");
   PasswordForm form;
   if (changes) {
     changes->clear();
@@ -1377,6 +1384,7 @@
     base::Time delete_begin,
     base::Time delete_end,
     PasswordStoreChangeList* changes) {
+  TRACE_EVENT0("passwords", "LoginDatabase::RemoveLoginsCreatedBetween");
   if (changes) {
     changes->clear();
   }
@@ -1415,6 +1423,7 @@
 }
 
 bool LoginDatabase::GetAutoSignInLogins(PrimaryKeyToFormMap* key_to_form_map) {
+  TRACE_EVENT0("passwords", "LoginDatabase::GetAutoSignInLogins");
   DCHECK(key_to_form_map);
   DCHECK(!autosignin_statement_.empty());
   key_to_form_map->clear();
@@ -1513,6 +1522,7 @@
 bool LoginDatabase::GetLogins(
     const PasswordStore::FormDigest& form,
     std::vector<std::unique_ptr<PasswordForm>>* forms) {
+  TRACE_EVENT0("passwords", "LoginDatabase::GetLogins");
   DCHECK(forms);
   forms->clear();
 
@@ -1600,6 +1610,7 @@
 bool LoginDatabase::GetLoginsByPassword(
     const base::string16& plain_text_password,
     std::vector<std::unique_ptr<autofill::PasswordForm>>* forms) {
+  TRACE_EVENT0("passwords", "LoginDatabase::GetLoginsByPassword");
   DCHECK(forms);
   forms->clear();
 
@@ -1630,6 +1641,7 @@
     const base::Time begin,
     const base::Time end,
     PrimaryKeyToFormMap* key_to_form_map) {
+  TRACE_EVENT0("passwords", "LoginDatabase::GetLoginsCreatedBetween");
   DCHECK(key_to_form_map);
   DCHECK(!created_statement_.empty());
   sql::Statement s(
@@ -1644,6 +1656,7 @@
 
 FormRetrievalResult LoginDatabase::GetAllLogins(
     PrimaryKeyToFormMap* key_to_form_map) {
+  TRACE_EVENT0("passwords", "LoginDatabase::GetAllLogins");
   DCHECK(key_to_form_map);
   key_to_form_map->clear();
 
@@ -1655,11 +1668,13 @@
 
 bool LoginDatabase::GetAutofillableLogins(
     std::vector<std::unique_ptr<PasswordForm>>* forms) {
+  TRACE_EVENT0("passwords", "LoginDatabase::GetAutofillableLogins");
   return GetAllLoginsWithBlacklistSetting(false, forms);
 }
 
 bool LoginDatabase::GetBlacklistLogins(
     std::vector<std::unique_ptr<PasswordForm>>* forms) {
+  TRACE_EVENT0("passwords", "LoginDatabase::GetBlacklistLogins");
   return GetAllLoginsWithBlacklistSetting(true, forms);
 }
 
@@ -1694,6 +1709,7 @@
 }
 
 bool LoginDatabase::DeleteAndRecreateDatabaseFile() {
+  TRACE_EVENT0("passwords", "LoginDatabase::DeleteAndRecreateDatabaseFile");
   DCHECK(db_.is_open());
   meta_table_.Reset();
   db_.Close();
@@ -1703,6 +1719,7 @@
 
 DatabaseCleanupResult LoginDatabase::DeleteUndecryptableLogins() {
 #if defined(OS_MACOSX) && !defined(OS_IOS)
+  TRACE_EVENT0("passwords", "LoginDatabase::DeleteUndecryptableLogins");
   // If the Keychain is unavailable, don't delete any logins.
   if (!OSCrypt::IsEncryptionAvailable()) {
     metrics_util::LogDeleteUndecryptableLoginsReturnValue(
@@ -1758,6 +1775,7 @@
 
 std::string LoginDatabase::GetEncryptedPassword(
     const PasswordForm& form) const {
+  TRACE_EVENT0("passwords", "LoginDatabase::GetEncryptedPassword");
   DCHECK(!encrypted_statement_.empty());
   sql::Statement s(
       db_.GetCachedStatement(SQL_FROM_HERE, encrypted_statement_.c_str()));
@@ -1776,6 +1794,7 @@
 }
 
 std::unique_ptr<syncer::MetadataBatch> LoginDatabase::GetAllSyncMetadata() {
+  TRACE_EVENT0("passwords", "LoginDatabase::GetAllSyncMetadata");
   std::unique_ptr<syncer::MetadataBatch> metadata_batch =
       GetAllSyncEntityMetadata();
   if (metadata_batch == nullptr) {
@@ -1793,6 +1812,7 @@
 }
 
 void LoginDatabase::DeleteAllSyncMetadata() {
+  TRACE_EVENT0("passwords", "LoginDatabase::DeleteAllSyncMetadata");
   ClearAllSyncMetadata(&db_);
 }
 
@@ -1800,6 +1820,7 @@
     syncer::ModelType model_type,
     const std::string& storage_key,
     const sync_pb::EntityMetadata& metadata) {
+  TRACE_EVENT0("passwords", "LoginDatabase::UpdateSyncMetadata");
   DCHECK_EQ(model_type, syncer::PASSWORDS);
 
   int storage_key_int = 0;
@@ -1829,6 +1850,7 @@
 
 bool LoginDatabase::ClearSyncMetadata(syncer::ModelType model_type,
                                       const std::string& storage_key) {
+  TRACE_EVENT0("passwords", "LoginDatabase::ClearSyncMetadata");
   DCHECK_EQ(model_type, syncer::PASSWORDS);
 
   int storage_key_int = 0;
@@ -1850,6 +1872,7 @@
 bool LoginDatabase::UpdateModelTypeState(
     syncer::ModelType model_type,
     const sync_pb::ModelTypeState& model_type_state) {
+  TRACE_EVENT0("passwords", "LoginDatabase::UpdateModelTypeState");
   DCHECK_EQ(model_type, syncer::PASSWORDS);
 
   // Make sure only one row is left by storing it in the entry with id=1
@@ -1864,6 +1887,7 @@
 }
 
 bool LoginDatabase::ClearModelTypeState(syncer::ModelType model_type) {
+  TRACE_EVENT0("passwords", "LoginDatabase::ClearModelTypeState");
   DCHECK_EQ(model_type, syncer::PASSWORDS);
 
   sql::Statement s(db_.GetCachedStatement(
@@ -1873,14 +1897,17 @@
 }
 
 bool LoginDatabase::BeginTransaction() {
+  TRACE_EVENT0("passwords", "LoginDatabase::BeginTransaction");
   return db_.BeginTransaction();
 }
 
 void LoginDatabase::RollbackTransaction() {
+  TRACE_EVENT0("passwords", "LoginDatabase::RollbackTransaction");
   db_.RollbackTransaction();
 }
 
 bool LoginDatabase::CommitTransaction() {
+  TRACE_EVENT0("passwords", "LoginDatabase::CommitTransaction");
   return db_.CommitTransaction();
 }
 
diff --git a/components/performance_manager/BUILD.gn b/components/performance_manager/BUILD.gn
index 58e2d9f7..91cede8a 100644
--- a/components/performance_manager/BUILD.gn
+++ b/components/performance_manager/BUILD.gn
@@ -5,6 +5,7 @@
 static_library("performance_manager") {
   sources = [
     "decorators/page_live_state_decorator.cc",
+    "embedder/performance_manager_registry.h",
     "frame_priority/boosting_vote_aggregator.cc",
     "frame_priority/frame_priority.cc",
     "frame_priority/max_vote_aggregator.cc",
@@ -45,6 +46,7 @@
     "performance_manager_impl.h",
     "performance_manager_lock_observer.cc",
     "performance_manager_lock_observer.h",
+    "performance_manager_registry.cc",
     "performance_manager_tab_helper.cc",
     "performance_manager_tab_helper.h",
     "process_node_source.cc",
diff --git a/components/performance_manager/embedder/performance_manager_registry.h b/components/performance_manager/embedder/performance_manager_registry.h
new file mode 100644
index 0000000..29be038
--- /dev/null
+++ b/components/performance_manager/embedder/performance_manager_registry.h
@@ -0,0 +1,69 @@
+// 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 COMPONENTS_PERFORMANCE_MANAGER_EMBEDDER_PERFORMANCE_MANAGER_REGISTRY_H_
+#define COMPONENTS_PERFORMANCE_MANAGER_EMBEDDER_PERFORMANCE_MANAGER_REGISTRY_H_
+
+#include <memory>
+
+namespace content {
+class RenderProcessHost;
+class WebContents;
+}  // namespace content
+
+namespace performance_manager {
+
+// Allows tracking of WebContents and RenderProcessHosts in the
+// PerformanceManager.
+//
+// A process that embeds the PerformanceManager should create a single instance
+// of this and notify it when WebContents or RenderProcessHosts are created.
+//
+// TearDown() must be called prior to destroying this object. This will schedule
+// deletion of PageNodes and ProcessNodes retained by this registry, even if the
+// associated WebContents and RenderProcessHosts still exist.
+//
+// This class can only be accessed on the main thread.
+class PerformanceManagerRegistry {
+ public:
+  virtual ~PerformanceManagerRegistry() = default;
+
+  PerformanceManagerRegistry(const PerformanceManagerRegistry&) = delete;
+  void operator=(const PerformanceManagerRegistry&) = delete;
+
+  // Creates a PerformanceManagerRegistry instance.
+  static std::unique_ptr<PerformanceManagerRegistry> Create();
+
+  // Returns the only instance of PerformanceManagerRegistry living in this
+  // process, or nullptr if there is none.
+  static PerformanceManagerRegistry* GetInstance();
+
+  // Must be invoked when a WebContents is created. Creates an associated
+  // PageNode in the PerformanceManager, if it doesn't already exist.
+  //
+  // Note: As of December 2019, this is called by the constructor of
+  // DevtoolsWindow on its main WebContents. It may be called again for the same
+  // WebContents by TabHelpers::AttachTabHelpers() when Devtools is docked.
+  // Hence the support for calling CreatePageNodeForWebContents() for a
+  // WebContents that already has a PageNode.
+  virtual void CreatePageNodeForWebContents(
+      content::WebContents* web_contents) = 0;
+
+  // Must be invoked when a RenderProcessHost is created. Creates an associated
+  // ProcessNode in the PerformanceManager, if it doesn't already exist.
+  virtual void CreateProcessNodeForRenderProcessHost(
+      content::RenderProcessHost* render_process_host) = 0;
+
+  // Must be invoked prior to destroying the object. Schedules deletion of
+  // PageNodes and ProcessNodes retained by this registry, even if the
+  // associated WebContents and RenderProcessHosts still exist.
+  virtual void TearDown() = 0;
+
+ protected:
+  PerformanceManagerRegistry() = default;
+};
+
+}  // namespace performance_manager
+
+#endif  // COMPONENTS_PERFORMANCE_MANAGER_EMBEDDER_PERFORMANCE_MANAGER_REGISTRY_H_
\ No newline at end of file
diff --git a/components/performance_manager/graph/policies/process_priority_policy_unittest.cc b/components/performance_manager/graph/policies/process_priority_policy_unittest.cc
index b8f3b902..a8dc498c 100644
--- a/components/performance_manager/graph/policies/process_priority_policy_unittest.cc
+++ b/components/performance_manager/graph/policies/process_priority_policy_unittest.cc
@@ -73,11 +73,6 @@
     // nodes involved.
     DeleteContents();
 
-    // The RenderProcessHosts seem to get leaked, or at least be still alive
-    // here, so explicitly detach from them in order to clean up the graph
-    // nodes.
-    RenderProcessUserData::DetachAndDestroyAll();
-
     PerformanceManagerTestHarness::TearDown();
   }
 
diff --git a/components/performance_manager/performance_manager_registry.cc b/components/performance_manager/performance_manager_registry.cc
new file mode 100644
index 0000000..926c4de
--- /dev/null
+++ b/components/performance_manager/performance_manager_registry.cc
@@ -0,0 +1,166 @@
+// 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/performance_manager/embedder/performance_manager_registry.h"
+
+#include "base/containers/flat_set.h"
+#include "base/sequence_checker.h"
+#include "base/stl_util.h"
+#include "components/performance_manager/performance_manager_tab_helper.h"
+#include "components/performance_manager/public/performance_manager.h"
+#include "components/performance_manager/render_process_user_data.h"
+#include "content/public/browser/render_process_host.h"
+
+namespace performance_manager {
+
+namespace {
+PerformanceManagerRegistry* g_instance = nullptr;
+}  // namespace
+
+// Not in anonymous namespace to allow friending.
+class PerformanceManagerRegistryImpl
+    : public PerformanceManagerRegistry,
+      public PerformanceManagerTabHelper::DestructionObserver,
+      public RenderProcessUserData::DestructionObserver {
+ public:
+  PerformanceManagerRegistryImpl();
+  ~PerformanceManagerRegistryImpl() override;
+
+  PerformanceManagerRegistryImpl(const PerformanceManagerRegistryImpl&) =
+      delete;
+  void operator=(const PerformanceManagerRegistryImpl&) = delete;
+
+  // PerformanceManagerRegistry:
+  void CreatePageNodeForWebContents(
+      content::WebContents* web_contents) override;
+  void CreateProcessNodeForRenderProcessHost(
+      content::RenderProcessHost* render_process_host) override;
+  void TearDown() override;
+
+  // PerformanceManagerTabHelper::DestructionObserver:
+  void OnPerformanceManagerTabHelperDestroying(
+      content::WebContents* web_contents) override;
+
+  // RenderProcessUserData::DestructionObserver:
+  void OnRenderProcessUserDataDestroying(
+      content::RenderProcessHost* render_process_host) override;
+
+ private:
+  SEQUENCE_CHECKER(sequence_checker_);
+
+  // Tracks WebContents and RenderProcessHost for which we have created user
+  // data. Used to destroy all user data when the registry is destroyed.
+  base::flat_set<content::WebContents*> web_contents_;
+  base::flat_set<content::RenderProcessHost*> render_process_hosts_;
+};
+
+PerformanceManagerRegistryImpl::PerformanceManagerRegistryImpl() {
+  DCHECK(!g_instance);
+  g_instance = this;
+
+  // The registry should be created after the PerformanceManager.
+  DCHECK(PerformanceManager::IsAvailable());
+}
+
+PerformanceManagerRegistryImpl::~PerformanceManagerRegistryImpl() {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  // TearDown() should have been invoked to reset |g_instance| and clear
+  // |web_contents_| and |render_process_user_data_| prior to destroying the
+  // registry.
+  DCHECK(!g_instance);
+  DCHECK(web_contents_.empty());
+  DCHECK(render_process_hosts_.empty());
+}
+
+void PerformanceManagerRegistryImpl::CreatePageNodeForWebContents(
+    content::WebContents* web_contents) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
+  auto result = web_contents_.insert(web_contents);
+  if (result.second) {
+    // Create a PerformanceManagerTabHelper if |web_contents| doesn't already
+    // have one. Support for multiple calls to CreatePageNodeForWebContents()
+    // with the same WebContents is required for Devtools -- see comment in
+    // header file.
+    PerformanceManagerTabHelper::CreateForWebContents(web_contents);
+    PerformanceManagerTabHelper* tab_helper =
+        PerformanceManagerTabHelper::FromWebContents(web_contents);
+    DCHECK(tab_helper);
+    tab_helper->SetDestructionObserver(this);
+  }
+}
+
+void PerformanceManagerRegistryImpl::CreateProcessNodeForRenderProcessHost(
+    content::RenderProcessHost* render_process_host) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
+  auto result = render_process_hosts_.insert(render_process_host);
+  if (result.second) {
+    // Create a RenderProcessUserData if |render_process_host| doesn't already
+    // have one.
+    RenderProcessUserData* user_data =
+        RenderProcessUserData::CreateForRenderProcessHost(render_process_host);
+    user_data->SetDestructionObserver(this);
+  }
+}
+
+void PerformanceManagerRegistryImpl::TearDown() {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
+  DCHECK_EQ(g_instance, this);
+  g_instance = nullptr;
+
+  // The registry should be torn down before the PerformanceManager.
+  DCHECK(PerformanceManager::IsAvailable());
+
+  for (auto* web_contents : web_contents_) {
+    PerformanceManagerTabHelper* tab_helper =
+        PerformanceManagerTabHelper::FromWebContents(web_contents);
+    DCHECK(tab_helper);
+    // Clear the destruction observer to avoid a nested notification.
+    tab_helper->SetDestructionObserver(nullptr);
+    // Destroy the tab helper.
+    tab_helper->TearDown();
+    web_contents->RemoveUserData(PerformanceManagerTabHelper::UserDataKey());
+  }
+  web_contents_.clear();
+
+  for (auto* render_process_host : render_process_hosts_) {
+    RenderProcessUserData* user_data =
+        RenderProcessUserData::GetForRenderProcessHost(render_process_host);
+    DCHECK(user_data);
+    // Clear the destruction observer to avoid a nested notification.
+    user_data->SetDestructionObserver(nullptr);
+    // Destroy the user data.
+    render_process_host->RemoveUserData(RenderProcessUserData::UserDataKey());
+  }
+  render_process_hosts_.clear();
+}
+
+void PerformanceManagerRegistryImpl::OnPerformanceManagerTabHelperDestroying(
+    content::WebContents* web_contents) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  const size_t num_removed = web_contents_.erase(web_contents);
+  DCHECK_EQ(1U, num_removed);
+}
+
+void PerformanceManagerRegistryImpl::OnRenderProcessUserDataDestroying(
+    content::RenderProcessHost* render_process_host) {
+  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+  const size_t num_removed = render_process_hosts_.erase(render_process_host);
+  DCHECK_EQ(1U, num_removed);
+}
+
+// static
+std::unique_ptr<PerformanceManagerRegistry>
+PerformanceManagerRegistry::Create() {
+  return std::make_unique<PerformanceManagerRegistryImpl>();
+}
+
+// static
+PerformanceManagerRegistry* PerformanceManagerRegistry::GetInstance() {
+  return g_instance;
+}
+
+}  // namespace performance_manager
diff --git a/components/performance_manager/performance_manager_tab_helper.cc b/components/performance_manager/performance_manager_tab_helper.cc
index 34836e90..668d27f 100644
--- a/components/performance_manager/performance_manager_tab_helper.cc
+++ b/components/performance_manager/performance_manager_tab_helper.cc
@@ -10,6 +10,7 @@
 
 #include "base/bind.h"
 #include "base/stl_util.h"
+#include "components/performance_manager/embedder/performance_manager_registry.h"
 #include "components/performance_manager/graph/frame_node_impl.h"
 #include "components/performance_manager/graph/page_node_impl.h"
 #include "components/performance_manager/graph/process_node_impl.h"
@@ -24,23 +25,6 @@
 
 namespace performance_manager {
 
-// static
-PerformanceManagerTabHelper* PerformanceManagerTabHelper::first_ = nullptr;
-
-// static
-void PerformanceManagerTabHelper::DetachAndDestroyAll() {
-  while (first_) {
-    PerformanceManagerTabHelper* helper = first_;
-    // Tear it down and detach it from the WebContents, which will
-    // delete it.
-    content::WebContents* web_contents = helper->web_contents();
-    DCHECK(web_contents);
-    helper->TearDown();
-    DCHECK(!helper->web_contents());
-    web_contents->RemoveUserData(UserDataKey());
-  }
-}
-
 PerformanceManagerTabHelper::PerformanceManagerTabHelper(
     content::WebContents* web_contents)
     : content::WebContentsObserver(web_contents),
@@ -60,29 +44,14 @@
     if (frame->IsRenderFrameCreated())
       RenderFrameCreated(frame);
   }
-
-  // Push this instance to the list.
-  next_ = first_;
-  if (next_)
-    next_->prev_ = this;
-  prev_ = nullptr;
-  first_ = this;
 }
 
 PerformanceManagerTabHelper::~PerformanceManagerTabHelper() {
   DCHECK(!page_node_);
   DCHECK(frames_.empty());
-  DCHECK_NE(this, first_);
-  DCHECK(!prev_);
-  DCHECK(!next_);
 }
 
 void PerformanceManagerTabHelper::TearDown() {
-  // Validate that this instance is in list of tab helpers.
-  DCHECK(first_ == this || next_ || prev_);
-  DCHECK_NE(this, next_);
-  DCHECK_NE(this, prev_);
-
   // Ship our page and frame nodes to the PerformanceManagerImpl for
   // incineration.
   std::vector<std::unique_ptr<NodeBase>> nodes;
@@ -103,27 +72,21 @@
   // Delete the page and its entire frame tree from the graph.
   performance_manager_->BatchDeleteNodes(std::move(nodes));
 
-  if (first_ == this) {
-    DCHECK(!prev_);
-    first_ = next_;
+  if (destruction_observer_) {
+    destruction_observer_->OnPerformanceManagerTabHelperDestroying(
+        web_contents());
   }
 
-  if (prev_) {
-    DCHECK_EQ(prev_->next_, this);
-    prev_->next_ = next_;
-  }
-
-  if (next_) {
-    DCHECK_EQ(next_->prev_, this);
-    next_->prev_ = prev_;
-  }
-  prev_ = nullptr;
-  next_ = nullptr;
-
   // Unsubscribe from the associated WebContents.
   Observe(nullptr);
 }
 
+void PerformanceManagerTabHelper::SetDestructionObserver(
+    DestructionObserver* destruction_observer) {
+  DCHECK(!destruction_observer || !destruction_observer_);
+  destruction_observer_ = destruction_observer;
+}
+
 void PerformanceManagerTabHelper::RenderFrameCreated(
     content::RenderFrameHost* render_frame_host) {
   DCHECK_NE(nullptr, render_frame_host);
@@ -137,9 +100,12 @@
     parent_frame_node = frames_[parent].get();
   }
 
-  // Ideally this would strictly be a "Get", but it is possible in tests for
-  // the the RenderProcessUserData to not have attached at this point.
-  auto* process_node = RenderProcessUserData::GetOrCreateForRenderProcessHost(
+  // Ideally, creation would not be required here, but it is possible in tests
+  // for the RenderProcessUserData to not have attached at this point.
+  PerformanceManagerRegistry::GetInstance()
+      ->CreateProcessNodeForRenderProcessHost(render_frame_host->GetProcess());
+
+  auto* process_node = RenderProcessUserData::GetForRenderProcessHost(
                            render_frame_host->GetProcess())
                            ->process_node();
 
diff --git a/components/performance_manager/performance_manager_tab_helper.h b/components/performance_manager/performance_manager_tab_helper.h
index 5dfff82..0953dce 100644
--- a/components/performance_manager/performance_manager_tab_helper.h
+++ b/components/performance_manager/performance_manager_tab_helper.h
@@ -35,13 +35,28 @@
       public content::WebContentsUserData<PerformanceManagerTabHelper>,
       public WebContentsProxyImpl {
  public:
-  // Detaches all instances from their WebContents and destroys them.
-  static void DetachAndDestroyAll();
+  // Observer interface to be notified when a PerformanceManagerTabHelper is
+  // being teared down.
+  class DestructionObserver {
+   public:
+    virtual ~DestructionObserver() = default;
+    virtual void OnPerformanceManagerTabHelperDestroying(
+        content::WebContents*) = 0;
+  };
 
   ~PerformanceManagerTabHelper() override;
 
   PageNodeImpl* page_node() { return page_node_.get(); }
 
+  // Registers an observer that is notified when the PerformanceManagerTabHelper
+  // is destroyed. Can only be set to non-nullptr if it was previously nullptr,
+  // and vice-versa.
+  void SetDestructionObserver(DestructionObserver* destruction_observer);
+
+  // Must be invoked prior to detaching a PerformanceManagerTabHelper from its
+  // WebContents.
+  void TearDown();
+
   // WebContentsObserver overrides.
   void RenderFrameCreated(content::RenderFrameHost* render_frame_host) override;
   void RenderFrameDeleted(content::RenderFrameHost* render_frame_host) override;
@@ -85,10 +100,14 @@
 
  private:
   friend class content::WebContentsUserData<PerformanceManagerTabHelper>;
+  friend class PerformanceManagerRegistryImpl;
   friend class WebContentsProxyImpl;
 
   explicit PerformanceManagerTabHelper(content::WebContents* web_contents);
-  void TearDown();
+
+  // Make CreateForWebContents private to restrict usage to
+  // PerformanceManagerRegistry.
+  using WebContentsUserData<PerformanceManagerTabHelper>::CreateForWebContents;
 
   // Post a task to run in the performance manager sequence. The |node| will be
   // passed as unretained, and the closure will be created with BindOnce.
@@ -119,15 +138,9 @@
   // Maps from RenderFrameHost to the associated PM node.
   std::map<content::RenderFrameHost*, std::unique_ptr<FrameNodeImpl>> frames_;
 
+  DestructionObserver* destruction_observer_ = nullptr;
   base::ObserverList<Observer, true, false> observers_;
 
-  // All instances are linked together in a doubly linked list to allow orderly
-  // destruction at browser shutdown time.
-  static PerformanceManagerTabHelper* first_;
-
-  PerformanceManagerTabHelper* next_ = nullptr;
-  PerformanceManagerTabHelper* prev_ = nullptr;
-
   WEB_CONTENTS_USER_DATA_KEY_DECL();
 
   base::WeakPtrFactory<PerformanceManagerTabHelper> weak_factory_{this};
diff --git a/components/performance_manager/performance_manager_tab_helper_unittest.cc b/components/performance_manager/performance_manager_tab_helper_unittest.cc
index 4c05c66f..48132fb2 100644
--- a/components/performance_manager/performance_manager_tab_helper_unittest.cc
+++ b/components/performance_manager/performance_manager_tab_helper_unittest.cc
@@ -38,11 +38,6 @@
     // nodes involved.
     DeleteContents();
 
-    // The RenderProcessHosts seem to get leaked, or at least be still alive
-    // here, so explicitly detach from them in order to clean up the graph
-    // nodes.
-    RenderProcessUserData::DetachAndDestroyAll();
-
     PerformanceManagerTestHarness::TearDown();
   }
 
diff --git a/components/performance_manager/performance_manager_test_harness.cc b/components/performance_manager/performance_manager_test_harness.cc
index 9f72fe0..3f8fe0d 100644
--- a/components/performance_manager/performance_manager_test_harness.cc
+++ b/components/performance_manager/performance_manager_test_harness.cc
@@ -5,6 +5,7 @@
 #include "components/performance_manager/performance_manager_test_harness.h"
 
 #include "base/bind_helpers.h"
+#include "components/performance_manager/embedder/performance_manager_registry.h"
 #include "components/performance_manager/performance_manager_tab_helper.h"
 
 namespace performance_manager {
@@ -16,10 +17,13 @@
 void PerformanceManagerTestHarness::SetUp() {
   Super::SetUp();
   perf_man_ = PerformanceManagerImpl::Create(base::DoNothing());
+  registry_ = PerformanceManagerRegistry::Create();
 }
 
 void PerformanceManagerTestHarness::TearDown() {
   // Have the performance manager destroy itself.
+  registry_->TearDown();
+  registry_.reset();
   PerformanceManagerImpl::Destroy(std::move(perf_man_));
   task_environment()->RunUntilIdle();
 
@@ -30,7 +34,7 @@
 PerformanceManagerTestHarness::CreateTestWebContents() {
   std::unique_ptr<content::WebContents> contents =
       Super::CreateTestWebContents();
-  PerformanceManagerTabHelper::CreateForWebContents(contents.get());
+  registry_->CreatePageNodeForWebContents(contents.get());
   return contents;
 }
 
diff --git a/components/performance_manager/performance_manager_test_harness.h b/components/performance_manager/performance_manager_test_harness.h
index 9436dbe..6a44afa 100644
--- a/components/performance_manager/performance_manager_test_harness.h
+++ b/components/performance_manager/performance_manager_test_harness.h
@@ -11,6 +11,8 @@
 
 namespace performance_manager {
 
+class PerformanceManagerRegistry;
+
 // A test harness that initializes PerformanceManagerImpl, plus the entire
 // RenderViewHost harness. Allows for creating full WebContents, and their
 // accompanying structures in the graph. The task environment is accessed
@@ -33,6 +35,7 @@
 
  private:
   std::unique_ptr<PerformanceManagerImpl> perf_man_;
+  std::unique_ptr<PerformanceManagerRegistry> registry_;
 
   DISALLOW_COPY_AND_ASSIGN(PerformanceManagerTestHarness);
 };
diff --git a/components/performance_manager/render_process_user_data.cc b/components/performance_manager/render_process_user_data.cc
index c095cdc..88dafa9 100644
--- a/components/performance_manager/render_process_user_data.cc
+++ b/components/performance_manager/render_process_user_data.cc
@@ -26,44 +26,26 @@
 
 }  // namespace
 
-RenderProcessUserData* RenderProcessUserData::first_ = nullptr;
-
 RenderProcessUserData::RenderProcessUserData(
     content::RenderProcessHost* render_process_host)
     : host_(render_process_host) {
   host_->AddObserver(this);
   process_node_ = PerformanceManagerImpl::GetInstance()->CreateProcessNode(
       RenderProcessHostProxy(host_->GetID()));
-
-  // Push this instance to the list.
-  next_ = first_;
-  if (next_)
-    next_->prev_ = this;
-  prev_ = nullptr;
-  first_ = this;
 }
 
 RenderProcessUserData::~RenderProcessUserData() {
   PerformanceManagerImpl::GetInstance()->DeleteNode(std::move(process_node_));
   host_->RemoveObserver(this);
 
-  if (first_ == this)
-    first_ = next_;
-
-  if (prev_) {
-    DCHECK_EQ(prev_->next_, this);
-    prev_->next_ = next_;
-  }
-  if (next_) {
-    DCHECK_EQ(next_->prev_, this);
-    next_->prev_ = prev_;
+  if (destruction_observer_) {
+    destruction_observer_->OnRenderProcessUserDataDestroying(host_);
   }
 }
 
 // static
-void RenderProcessUserData::DetachAndDestroyAll() {
-  while (first_)
-    first_->host_->RemoveUserData(kRenderProcessUserDataKey);
+const void* RenderProcessUserData::UserDataKey() {
+  return kRenderProcessUserDataKey;
 }
 
 // static
@@ -73,15 +55,19 @@
       host->GetUserData(kRenderProcessUserDataKey));
 }
 
+void RenderProcessUserData::SetDestructionObserver(
+    DestructionObserver* destruction_observer) {
+  DCHECK(!destruction_observer || !destruction_observer_);
+  destruction_observer_ = destruction_observer;
+}
+
 // static
-RenderProcessUserData* RenderProcessUserData::GetOrCreateForRenderProcessHost(
+RenderProcessUserData* RenderProcessUserData::CreateForRenderProcessHost(
     content::RenderProcessHost* host) {
-  auto* raw_user_data = GetForRenderProcessHost(host);
-  if (raw_user_data)
-    return raw_user_data;
+  DCHECK(!GetForRenderProcessHost(host));
   std::unique_ptr<RenderProcessUserData> user_data =
       base::WrapUnique(new RenderProcessUserData(host));
-  raw_user_data = user_data.get();
+  RenderProcessUserData* raw_user_data = user_data.get();
   host->SetUserData(kRenderProcessUserDataKey, std::move(user_data));
   return raw_user_data;
 }
diff --git a/components/performance_manager/render_process_user_data.h b/components/performance_manager/render_process_user_data.h
index 2045be66..1498edf3 100644
--- a/components/performance_manager/render_process_user_data.h
+++ b/components/performance_manager/render_process_user_data.h
@@ -26,22 +26,40 @@
 class RenderProcessUserData : public base::SupportsUserData::Data,
                               public content::RenderProcessHostObserver {
  public:
+  // Observer interface to be notified when a RenderProcessUserData is
+  // destroyed.
+  class DestructionObserver {
+   public:
+    virtual ~DestructionObserver() = default;
+    virtual void OnRenderProcessUserDataDestroying(
+        content::RenderProcessHost*) = 0;
+  };
+
   ~RenderProcessUserData() override;
 
+  static const void* UserDataKey();
+
   static RenderProcessUserData* GetForRenderProcessHost(
       content::RenderProcessHost* host);
-  static RenderProcessUserData* GetOrCreateForRenderProcessHost(
-      content::RenderProcessHost* host);
 
-  // Detaches all instances from their RenderProcessHosts and destroys them.
-  static void DetachAndDestroyAll();
+  // Registers an observer that is notified when the RenderProcessUserData is
+  // destroyed. Can only be set to non-nullptr if it was previously nullptr, and
+  // vice-versa.
+  void SetDestructionObserver(DestructionObserver* destruction_observer);
 
   ProcessNodeImpl* process_node() { return process_node_.get(); }
 
  private:
+  friend class PerformanceManagerRegistryImpl;
+
   explicit RenderProcessUserData(
       content::RenderProcessHost* render_process_host);
 
+  // Only PerformanceManagerRegistry is allowed to create a
+  // RenderProcessUserData.
+  static RenderProcessUserData* CreateForRenderProcessHost(
+      content::RenderProcessHost* host);
+
   // RenderProcessHostObserver overrides
   void RenderProcessReady(content::RenderProcessHost* host) override;
   void RenderProcessExited(
@@ -49,17 +67,12 @@
       const content::ChildProcessTerminationInfo& info) override;
   void RenderProcessHostDestroyed(content::RenderProcessHost* host) override;
 
-  // All instances are linked together in a doubly linked list to allow orderly
-  // destruction at browser shutdown time.
-  static RenderProcessUserData* first_;
-
-  RenderProcessUserData* prev_ = nullptr;
-  RenderProcessUserData* next_ = nullptr;
-
   content::RenderProcessHost* const host_;
 
   std::unique_ptr<ProcessNodeImpl> process_node_;
 
+  DestructionObserver* destruction_observer_ = nullptr;
+
   DISALLOW_COPY_AND_ASSIGN(RenderProcessUserData);
 };
 
diff --git a/components/policy/android/BUILD.gn b/components/policy/android/BUILD.gn
index 0c1e5c9..71fa3ef8 100644
--- a/components/policy/android/BUILD.gn
+++ b/components/policy/android/BUILD.gn
@@ -5,8 +5,8 @@
 import("//build/config/android/rules.gni")
 
 _jni_sources = [
-  "java/src/org/chromium/policy/PolicyConverter.java",
   "java/src/org/chromium/policy/CombinedPolicyProvider.java",
+  "java/src/org/chromium/policy/PolicyConverter.java",
 ]
 
 android_library("policy_java") {
diff --git a/components/policy/proto/chrome_device_policy.proto b/components/policy/proto/chrome_device_policy.proto
index 13349eca3..328eb5f 100644
--- a/components/policy/proto/chrome_device_policy.proto
+++ b/components/policy/proto/chrome_device_policy.proto
@@ -117,6 +117,7 @@
   optional bool report_power_status = 12 [default = false];
   optional bool report_storage_status = 13 [default = false];
   optional bool report_board_status = 14 [default = false];
+  optional bool report_cpu_info = 15 [default = false];
 
   // Frequency to report device status, default to 3 hours.
   optional int64 device_status_frequency = 9 [default = 10800000];
diff --git a/components/policy/proto/device_management_backend.proto b/components/policy/proto/device_management_backend.proto
index 2299bcd..dd98c88 100644
--- a/components/policy/proto/device_management_backend.proto
+++ b/components/policy/proto/device_management_backend.proto
@@ -983,6 +983,22 @@
   optional string vpd_sku_number = 1;
 }
 
+// Status of a single physical CPU.
+message CpuInfo {
+  // The CPU model name.
+  optional string model_name = 1;
+
+  // The CPU architecture.
+  enum Architecture {
+    ARCHITECTURE_UNSPECIFIED = 0;
+    X86_64 = 1;
+  }
+  optional Architecture architecture = 2;
+
+  // The max CPU clock speed in kHz.
+  optional uint32 max_clock_speed_khz = 3;
+}
+
 // Report device level status.
 message DeviceStatusReportRequest {
   reserved 4, 7, 13, 20;
@@ -1074,6 +1090,9 @@
 
   // Samples of free RAM [in bytes] (unreliable due to GC).
   repeated SystemFreeRamInfo system_ram_free_infos = 31;
+
+  // Information about a devices physical CPU(s).
+  repeated CpuInfo cpu_info = 32;
 }
 
 message OsUpdateStatus {
diff --git a/components/policy/resources/policy_templates.json b/components/policy/resources/policy_templates.json
index ea6411e..15f2418 100644
--- a/components/policy/resources/policy_templates.json
+++ b/components/policy/resources/policy_templates.json
@@ -848,6 +848,7 @@
         'ReportDeviceSessionStatus',
         'ReportDeviceOsUpdateStatus',
         'ReportDeviceBoardStatus',
+        'ReportDeviceCpuInfo',
         'ReportDevicePowerStatus',
         'ReportDeviceStorageStatus',
         'ReportUploadFrequency',
@@ -7740,6 +7741,28 @@
       'arc_support': 'This policy has no effect on the logging done by Android.',
     },
     {
+      'name': 'ReportDeviceCpuInfo',
+      'owners': ['file://components/policy/resources/OWNERS'],
+      'type': 'main',
+      'schema': { 'type': 'boolean' },
+      'supported_on': ['chrome_os:81-'],
+      'supported_chrome_os_management': ['google_cloud'],
+      'device_only': True,
+      'features': {
+        'dynamic_refresh': True,
+      },
+      'example_value': False,
+      'id': 656,
+      'caption': '''Report CPU info''',
+      'tags': ['admin-sharing'],
+      'desc': '''Report information for a device's CPU(s).
+
+      If the policy is set to false or left unset, the information will not be reported.
+      If set to true, the CPU model name, architecture, and maximum clock speed will be
+      reported for each CPU.''',
+      'arc_support': 'This policy has no effect on the logging done by Android.',
+    },
+    {
       'name': 'ReportUploadFrequency',
       'owners': ['file://components/policy/resources/OWNERS'],
       'type': 'int',
@@ -19663,6 +19686,7 @@
     'SupervisedUsersEnabled': 'supervised_users_settings.supervised_users_enabled',
     'DeviceStartUpFlags': 'start_up_flags.flags',
     'ReportDeviceBoardStatus': 'device_reporting.report_board_status',
+    'ReportDeviceCpuInfo': 'device_reporting.report_cpu_info',
     'ReportDeviceStorageStatus': 'device_reporting.report_storage_status',
     'ReportDevicePowerStatus': 'device_reporting.report_power_status',
     'DeviceOpenNetworkConfiguration': 'open_network_configuration.open_network_configuration',
@@ -20056,6 +20080,7 @@
         'ReportDeviceSessionStatus',
         'ReportDeviceOsUpdateStatus',
         'ReportDeviceBoardStatus',
+        'ReportDeviceCpuInfo',
         'ReportDevicePowerStatus',
         'ReportDeviceStorageStatus',
         'ReportUploadFrequency',
@@ -20129,6 +20154,6 @@
   ],
   'placeholders': [],
   'deleted_policy_ids': [412, 546, 562, 569, 578],
-  'highest_id_currently_used': 655,
+  'highest_id_currently_used': 656,
   'highest_atomic_group_id_currently_used': 38
 }
diff --git a/components/policy/resources/policy_templates_pt-BR.xtb b/components/policy/resources/policy_templates_pt-BR.xtb
index 9859e4a6..6f97ed7 100644
--- a/components/policy/resources/policy_templates_pt-BR.xtb
+++ b/components/policy/resources/policy_templates_pt-BR.xtb
@@ -431,7 +431,7 @@
 
           Se esta política for definida como "Tela cheia", a lupa estará sempre ativa no modo tela cheia na tela de login.
 
-          Se esta política for definida como "Dispositivo na base", a lupa estará sempre ativada no modo lupa ancorada na tela de login.
+          Se esta política for definida como "Dispositivo na base", a lupa estará sempre ativada no modo lupa em área fixa na tela de login.
 
           Se esta política for definida como "Nenhum", a lupa estará sempre desativada na tela de login.
 
@@ -1139,7 +1139,7 @@
 <translation id="267596348720209223">Especifica a codificação de caracteres suportados pelo mecanismo de pesquisa. Codificações são nomes de código da página como UTF-8, GB2312 e ISO-8859-1. Eles são testados na ordem fornecida. Esta política é opcional. Se não for definida, será utilizado o padrão, UTF-8. Esta política só é respeitada se a política "DefaultSearchProviderEnabled" estiver ativada.</translation>
 <translation id="268577405881275241">Ativar o recurso de proxy de compactação de dados</translation>
 <translation id="2693108589792503178">Configure o URL de alteração de senha.</translation>
-<translation id="2694143893026486692">Lupa ancorada ativada</translation>
+<translation id="2694143893026486692">Lupa em área fixa ativada</translation>
 <translation id="2694188263972877487">Configurar o tipo de download que o <ph name="PRODUCT_NAME" /> bloqueará totalmente sem permitir que os usuários substituam a decisão de segurança.
 
       Se você definir esta política, o <ph name="PRODUCT_NAME" /> impedirá certos tipos de downloads e não permitirá que o usuário ignore os avisos de segurança.
diff --git a/components/policy/resources/policy_templates_uk.xtb b/components/policy/resources/policy_templates_uk.xtb
index 0eff5a2..b421c64 100644
--- a/components/policy/resources/policy_templates_uk.xtb
+++ b/components/policy/resources/policy_templates_uk.xtb
@@ -2529,7 +2529,7 @@
 <translation id="4970855112942626932">Вимкнути вхід в обліковий запис у веб-переглядачі</translation>
 <translation id="4978405676361550165">Якщо налаштовано правило "OffHours", то вказані правила пристрою ігноруються (використовуйте стандартні налаштування цих правил) протягом визначених часових інтервалів. Chrome повторно застосовує правила пристрою під час кожної події, коли починається або закінчується період "OffHours". Користувач буде повідомлений і змушений вийти, коли закінчиться час "OffHours" і зміняться параметри правил пристрою (наприклад, коли користувач увійшов із недозволеного облікового запису).</translation>
 <translation id="4980635395568992380">Тип даних:</translation>
-<translation id="4980794848194997251">Це правило контролює обробку змішаного контенту (HTTP на сайтах HTTPS sites) у веб-переглядачі.
+<translation id="4980794848194997251">Це правило контролює обробку змішаного контенту (HTTP на сайтах HTTPS) у веб-переглядачі.
        Якщо для правила вибрано значення true або його не налаштовано, змішаний аудіо- й відеоконтент автоматично оновлюватиметься до HTTPS (тобто URL-адреса записуватиметься через HTTPS без резервного варіанту, якщо ресурс не доступний через протокол HTTPS), а в рядку URL-адреси змішаного контенту із зображеннями з'являтиметься застереження "Ненадійне".
        Якщо для нього вибрано значення false, аудіо- й відеоконтент не оновлюватиметься, а для зображень не з'являтиметься застереження.
        Це правило не впливає на інші типи змішаного контенту (крім аудіо, відео та зображень).</translation>
diff --git a/components/policy/resources/policy_templates_zh-CN.xtb b/components/policy/resources/policy_templates_zh-CN.xtb
index 98df23d..add5ac5 100644
--- a/components/policy/resources/policy_templates_zh-CN.xtb
+++ b/components/policy/resources/policy_templates_zh-CN.xtb
@@ -4635,13 +4635,13 @@
       如果已启用此设置或将此设置留空,则可以删除浏览和下载记录。
 
       如果停用了此设置,则不能删除浏览和下载记录。</translation>
-<translation id="8749803771700374502">已在拒绝列表中的各类打印机将被停用,因此用户将无法发现它们或获取它们的功能。
+<translation id="8749803771700374502">系统将无法发现拒绝列表中列出的各类打印机,并且无法获取它们的功能。 
 
-      将所有打印机类型都添加到拒绝列表中可有效地停用打印功能,因为没有任何可用来接收要打印的文档的目的地。
+      将所有打印机类型都添加到拒绝列表中可有效地停用打印功能,因为打印文件时,系统将无法找到可接收文件的目的地。
 
-      在拒绝列表中添加“<ph name="POLICY_ENUM_PRINTERTYPEDENYLIST_CLOUD" />”与将 <ph name="POLICY_CLOUDPRINTSUBMITENABLED" /> 政策设为 false 具有同样的效果。若要使 <ph name="CLOUD_PRINT_NAME" />目的地能被用户发现,则必须确保 <ph name="POLICY_CLOUDPRINTSUBMITENABLED" /> 政策设为 true 且拒绝列表中不含“<ph name="POLICY_ENUM_PRINTERTYPEDENYLIST_CLOUD" />”。
+      在拒绝列表中添加“<ph name="POLICY_ENUM_PRINTERTYPEDENYLIST_CLOUD" />”与将 <ph name="POLICY_CLOUDPRINTSUBMITENABLED" /> 政策设为 False 具有同样的效果。若希望系统能够发现 <ph name="CLOUD_PRINT_NAME" />目的地,则必须确保 <ph name="POLICY_CLOUDPRINTSUBMITENABLED" /> 政策设为 True 且拒绝列表中不含“<ph name="POLICY_ENUM_PRINTERTYPEDENYLIST_CLOUD" />”。
 
-      如果此政策未设置,或设为一个空列表,那么所有打印机类型都将能被用户发现。
+      如果此政策未设置,或设为一个空列表,那么系统将可以发现所有类型的打印机。
 
       基于扩展程序的打印机也称为打印提供程序目的地,包括 <ph name="PRODUCT_NAME" /> 扩展程序名下的所有目的地。
 
diff --git a/components/safe_browsing/password_protection/metrics_util.cc b/components/safe_browsing/password_protection/metrics_util.cc
index ac61553..c546fef 100644
--- a/components/safe_browsing/password_protection/metrics_util.cc
+++ b/components/safe_browsing/password_protection/metrics_util.cc
@@ -114,15 +114,14 @@
 
   bool is_gsuite_user =
       password_account_type.account_type() == ReusedPasswordAccountType::GSUITE;
+  bool is_gmail_user =
+      password_account_type.account_type() == ReusedPasswordAccountType::GMAIL;
   bool is_primary_account_password = password_account_type.is_account_syncing();
   if (is_primary_account_password) {
-    if (is_gsuite_user) {
-      UMA_HISTOGRAM_ENUMERATION(kGSuiteSyncPasswordEntryRequestOutcomeHistogram,
-                                outcome);
-    } else {
-      UMA_HISTOGRAM_ENUMERATION(kGmailSyncPasswordEntryRequestOutcomeHistogram,
-                                outcome);
-    }
+    base::UmaHistogramEnumeration(
+        is_gsuite_user ? kGSuiteSyncPasswordEntryRequestOutcomeHistogram
+                       : kGmailSyncPasswordEntryRequestOutcomeHistogram,
+        outcome);
     UMA_HISTOGRAM_ENUMERATION(kSyncPasswordEntryRequestOutcomeHistogram,
                               outcome);
   } else if (password_account_type.account_type() ==
@@ -133,14 +132,11 @@
              ReusedPasswordAccountType::SAVED_PASSWORD) {
     UMA_HISTOGRAM_ENUMERATION(kSavedPasswordEntryRequestOutcomeHistogram,
                               outcome);
-  } else {
-    if (is_gsuite_user) {
-      UMA_HISTOGRAM_ENUMERATION(
-          kGSuiteNonSyncPasswordEntryRequestOutcomeHistogram, outcome);
-    } else {
-      UMA_HISTOGRAM_ENUMERATION(
-          kGmailNonSyncPasswordEntryRequestOutcomeHistogram, outcome);
-    }
+  } else if (is_gsuite_user || is_gmail_user) {
+    base::UmaHistogramEnumeration(
+        is_gsuite_user ? kGSuiteNonSyncPasswordEntryRequestOutcomeHistogram
+                       : kGmailNonSyncPasswordEntryRequestOutcomeHistogram,
+        outcome);
     UMA_HISTOGRAM_ENUMERATION(kNonSyncPasswordEntryRequestOutcomeHistogram,
                               outcome);
   }
diff --git a/components/safe_browsing/password_protection/password_protection_request.cc b/components/safe_browsing/password_protection/password_protection_request.cc
index 637c808..2ac68ef 100644
--- a/components/safe_browsing/password_protection/password_protection_request.cc
+++ b/components/safe_browsing/password_protection/password_protection_request.cc
@@ -271,10 +271,7 @@
         LogSyncAccountType(reuse_event->sync_account_type());
       }
 
-      bool saved_password_experiment_on = base::FeatureList::IsEnabled(
-          safe_browsing::kPasswordProtectionForSavedPasswords);
-      if ((password_protection_service_->IsExtendedReporting() ||
-           saved_password_experiment_on) &&
+      if ((password_protection_service_->IsExtendedReporting()) &&
           !password_protection_service_->IsIncognito()) {
         for (const auto& domain : matching_domains_) {
           reuse_event->add_domains_matching_password(domain);
diff --git a/components/security_state/content/content_utils.cc b/components/security_state/content/content_utils.cc
index 7f246d2..6e31994 100644
--- a/components/security_state/content/content_utils.cc
+++ b/components/security_state/content/content_utils.cc
@@ -39,14 +39,12 @@
 // Note: This is a lossy operation. Not all of the policies that can be
 // expressed by a SecurityLevel can be expressed by a blink::SecurityStyle.
 blink::SecurityStyle SecurityLevelToSecurityStyle(
-    security_state::SecurityLevel security_level,
-    GURL url) {
+    security_state::SecurityLevel security_level) {
   switch (security_level) {
     case security_state::NONE:
+      return blink::SecurityStyle::kNeutral;
     case security_state::WARNING:
-      if (security_state::ShouldDowngradeNeutralStyling(
-              security_level, url,
-              base::BindRepeating(&content::IsOriginSecure)))
+      if (security_state::ShouldShowDangerTriangleForWarningLevel())
         return blink::SecurityStyle::kInsecure;
       return blink::SecurityStyle::kNeutral;
     case security_state::SECURE_WITH_POLICY_INSTALLED_CERT:
@@ -475,7 +473,7 @@
     const security_state::VisibleSecurityState& visible_security_state,
     content::SecurityStyleExplanations* security_style_explanations) {
   const blink::SecurityStyle security_style =
-      SecurityLevelToSecurityStyle(security_level, visible_security_state.url);
+      SecurityLevelToSecurityStyle(security_level);
 
   // Safety tips come after SafeBrowsing but before HTTP warnings.
   // ExplainSafeBrowsingSecurity always inserts warnings to the front, so
diff --git a/components/security_state/core/security_state.cc b/components/security_state/core/security_state.cc
index 2eef6335..f674cc9 100644
--- a/components/security_state/core/security_state.cc
+++ b/components/security_state/core/security_state.cc
@@ -345,61 +345,13 @@
           net::CERT_STATUS_SHA1_SIGNATURE_PRESENT);
 }
 
-// As an experiment, the info icon should be downgraded to a grey triangle for
-// non-secure connections (crbug.com/997972). This method helps distinguish
-// between cases where the NONE and WARNING security levels should map to
-// neutral (info) or insecure (triangle) for styling purposes.
-//
 // TODO(crbug.com/1015626): Clean this up once the experiment is fully
-// launched and security states refactored.
-bool ShouldDowngradeNeutralStyling(
-    security_state::SecurityLevel security_level,
-    GURL url,
-    IsOriginSecureCallback is_origin_secure_callback) {
-  // This method is only relevant if the info icon is shown, which only occurs
-  // for NONE and WARNING security states.
-  if (security_level != security_state::NONE &&
-      security_level != security_state::WARNING) {
-    return false;
-  }
-
-  // The state should not be downgraded unless the grey triangle experiment
-  // is enabled.
-  bool http_danger_warning_enabled = false;
-  if (base::FeatureList::IsEnabled(features::kMarkHttpAsFeature)) {
-    std::string parameter = base::GetFieldTrialParamValueByFeature(
-        features::kMarkHttpAsFeature,
-        features::kMarkHttpAsFeatureParameterName);
-    if (parameter ==
-        security_state::features::kMarkHttpAsParameterDangerWarning) {
-      http_danger_warning_enabled = true;
-    }
-  }
-  if (!http_danger_warning_enabled)
-    return false;
-
-  bool scheme_is_cryptographic = security_state::IsSchemeCryptographic(url);
-  bool origin_is_secure = scheme_is_cryptographic;
-  if (!scheme_is_cryptographic)
-    origin_is_secure = is_origin_secure_callback.Run(url);
-
-  // The grey danger triangle should be shown on HTTPS pages with passive
-  // mixed content. These pages currently use the NONE security state, but
-  // this is undergoing a refactor.
-  if (security_level == security_state::NONE && scheme_is_cryptographic)
-    return true;
-
-  // data: URLs should continue to have danger warnings even though data: is
-  // considered a secure origin.
-  if (url.SchemeIs(url::kDataScheme))
-    return true;
-
-  // The info icon should be used on non-HTTPS secure origins, but other
-  // WARNING states should use they grey danger triangle.
-  if (security_level == security_state::WARNING && !origin_is_secure)
-    return true;
-
-  return false;
+// launched.
+bool ShouldShowDangerTriangleForWarningLevel() {
+  return base::GetFieldTrialParamValueByFeature(
+             features::kMarkHttpAsFeature,
+             features::kMarkHttpAsFeatureParameterName) ==
+         security_state::features::kMarkHttpAsParameterDangerWarning;
 }
 
 }  // namespace security_state
diff --git a/components/security_state/core/security_state.h b/components/security_state/core/security_state.h
index 7f9c273a9..290358b 100644
--- a/components/security_state/core/security_state.h
+++ b/components/security_state/core/security_state.h
@@ -272,13 +272,9 @@
 
 bool IsSHA1InChain(const VisibleSecurityState& visible_security_state);
 
-// Returns whether the NONE or WARNING state should downgrade styling from
-// neutral to insecure as part of an experiment to mark non-secure
-// connections with a grey triangle icon (crbug.com/997972).
-bool ShouldDowngradeNeutralStyling(
-    security_state::SecurityLevel security_level,
-    GURL url,
-    IsOriginSecureCallback is_origin_secure_callback);
+// Returns whether the WARNING state should downgrade the security icon from
+// info to danger triangle as part of an experiment (crbug.com/997972).
+bool ShouldShowDangerTriangleForWarningLevel();
 
 }  // namespace security_state
 
diff --git a/components/security_state/core/security_state_unittest.cc b/components/security_state/core/security_state_unittest.cc
index eed3106..8671a7d 100644
--- a/components/security_state/core/security_state_unittest.cc
+++ b/components/security_state/core/security_state_unittest.cc
@@ -560,41 +560,4 @@
   EXPECT_TRUE(helper.HasMajorCertificateError());
 }
 
-// Tests that ShouldDowngradeNeutralStyling properly returns whether the
-// neutral styling should be downgraded to insecure styling.
-TEST(SecurityStateTest, ShouldDowngradeNeutralStyling) {
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitAndEnableFeatureWithParameters(
-      security_state::features::kMarkHttpAsFeature,
-      {{security_state::features::kMarkHttpAsFeatureParameterName,
-        security_state::features::kMarkHttpAsParameterDangerWarning}});
-
-  // Returns false when security state is something other than NONE or WARNING.
-  EXPECT_FALSE(security_state::ShouldDowngradeNeutralStyling(
-      security_state::SECURE, GURL("https://scheme-is-cryptographic.test"),
-      base::BindRepeating(&IsOriginSecure)));
-  EXPECT_FALSE(security_state::ShouldDowngradeNeutralStyling(
-      security_state::DANGEROUS, GURL("https://scheme-is-cryptographic.test"),
-      base::BindRepeating(&IsOriginSecure)));
-
-  // Returns false for non-cryptographic secure origins.
-  EXPECT_FALSE(security_state::ShouldDowngradeNeutralStyling(
-      security_state::NONE, GURL("chrome://test"),
-      base::BindRepeating(&IsOriginSecure)));
-
-  // Returns true for HTTP, some mixed content, and insecure schemes.
-  EXPECT_TRUE(security_state::ShouldDowngradeNeutralStyling(
-      security_state::WARNING, GURL("http://scheme-is-not-cryptographic.test"),
-      base::BindRepeating(&IsOriginSecure)));
-  EXPECT_TRUE(security_state::ShouldDowngradeNeutralStyling(
-      security_state::NONE, GURL("https://mixed-content.test"),
-      base::BindRepeating(&IsOriginSecure)));
-  EXPECT_TRUE(security_state::ShouldDowngradeNeutralStyling(
-      security_state::WARNING, GURL(kDataUrl),
-      base::BindRepeating(&IsOriginSecure)));
-  EXPECT_TRUE(security_state::ShouldDowngradeNeutralStyling(
-      security_state::WARNING, GURL(kFtpUrl),
-      base::BindRepeating(&IsOriginSecure)));
-}
-
 }  // namespace security_state
diff --git a/components/sessions/core/base_session_service.cc b/components/sessions/core/base_session_service.cc
index bbf50c6..7f0dba7 100644
--- a/components/sessions/core/base_session_service.cc
+++ b/components/sessions/core/base_session_service.cc
@@ -32,7 +32,7 @@
 }
 
 void PostOrRunInternalGetCommandsCallback(
-    base::TaskRunner* task_runner,
+    base::SequencedTaskRunner* task_runner,
     const BaseSessionService::GetCommandsCallback& callback,
     std::vector<std::unique_ptr<SessionCommand>> commands) {
   if (task_runner->RunsTasksInCurrentSequence()) {
diff --git a/components/sessions/core/session_types.h b/components/sessions/core/session_types.h
index 3522e91..0e236ac 100644
--- a/components/sessions/core/session_types.h
+++ b/components/sessions/core/session_types.h
@@ -142,7 +142,8 @@
     TYPE_NORMAL = 0,
     TYPE_POPUP = 1,
     TYPE_APP = 2,
-    TYPE_DEVTOOLS = 3
+    TYPE_DEVTOOLS = 3,
+    TYPE_APP_POPUP = 4,
   };
 
   // Identifier of the window.
diff --git a/components/strings/components_strings_ar.xtb b/components/strings/components_strings_ar.xtb
index 4528852..515c02a 100644
--- a/components/strings/components_strings_ar.xtb
+++ b/components/strings/components_strings_ar.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">تحميل الصفحة لاحقًا</translation>
 <translation id="1015730422737071372">تقديم تفاصيل إضافية</translation>
 <translation id="1021110881106174305">البطاقات المقبولة</translation>
+<translation id="1021753677514347426">‏تحدث هذه المشكلة بسبب شهادة ثبّتها أنت أو ثبّتها مستخدم آخر على جهازك. من المعروف أن الشهادة تُستخدم لمراقبة الشبكات واعتراضها، ولا يثق Chromium بها. وعلى الرغم من وجود بعض الحالات المشروعة للمراقبة، كما هو الحال في شبكة المدرسة أو الشركة، يريد Chromium التأكد من أنك تدرك حدوث ذلك، حتى إذا لم تتمكّن من إيقافها. يمكن أن تحدث عملية المراقبة في أي متصفّح أو تطبيق يصل إلى الويب.</translation>
 <translation id="1032854598605920125">تدوير في اتجاه عقارب الساعة</translation>
 <translation id="1036348656032585052">إيقاف</translation>
 <translation id="1038842779957582377">اسم غير معروف</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">تقرير الأعطال الذي تم الحصول عليه في <ph name="CRASH_TIME" /> (لم يتم تحميله بعد أو تجاهله)</translation>
 <translation id="1270502636509132238">طريقة الاستلام</translation>
 <translation id="1285320974508926690">عدم ترجمة هذا الموقع مطلقًا</translation>
+<translation id="1285400217480592994">‏مسح محتوى الملفات التي يتم تنزيلها أو تحميلها في Chrome.</translation>
 <translation id="1292701964462482250">‏"هناك برامج على جهاز الكمبيوتر تمنع اتصال Chrome بالويب بأمان" (أجهزة الكمبيوتر المزوّدة بنظام التشغيل Windows فقط)</translation>
 <translation id="1294154142200295408">صيغ سطر الأوامر</translation>
 <translation id="129553762522093515">المغلقة حديثًا</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">رقم الهاتف</translation>
 <translation id="2277103315734023688">الانتقال إلى الأمام</translation>
 <translation id="2283340219607151381">حفظ العناوين وملؤها</translation>
+<translation id="2288422996159078444">تتم مراقبة أي نص تكتبه أو أي صفحات تطّلع عليها أو أي نشاط آخر تجريه على الإنترنت، ويمكن أن يتم تغيير المحتوى على المواقع الإلكترونية بدون معرفتك.</translation>
 <translation id="2289385804009217824">قطع</translation>
 <translation id="2292556288342944218">تم حظر دخولك إلى الإنترنت</translation>
 <translation id="2297722699537546652">‏B5 (مغلف)</translation>
@@ -436,6 +439,7 @@
 <translation id="2989742184762224133">وضع دبوسَين بالأعلى</translation>
 <translation id="2991174974383378012">المشاركة مع مواقع الويب</translation>
 <translation id="2991571918955627853">‏لا يمكنك زيارة <ph name="SITE" /> في الوقت الحالي لأن موقع الويب يستخدم HSTS. أخطاء الشبكة والهجمات عليها عادةً ما تكون مؤقتة، لذا ستعمل هذه الصفحة في وقت لاحق على الأرجح.</translation>
+<translation id="2996674880327704673">‏الاقتراحات من قِبل Google</translation>
 <translation id="3005723025932146533">عرض نسخة محفوظة</translation>
 <translation id="3008447029300691911">‏أدخل رمز التحقق من البطاقة (CVC) لـ <ph name="CREDIT_CARD" />. بعد تأكيدك، ستتم مشاركة تفاصيل بطاقتك مع هذا الموقع.</translation>
 <translation id="3010559122411665027">إدخال القائمة "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -448,6 +452,7 @@
 <translation id="3060227939791841287">‏C9 (مغلف)</translation>
 <translation id="3061707000357573562">خدمة رمز التصحيح</translation>
 <translation id="3064966200440839136">ستتم مغادرة وضع التصفح المتخفي للدفع عبر تطبيق خارجي. هل تريد المتابعة؟</translation>
+<translation id="3086579638707268289">تتم مراقبة نشاطك على الويب.</translation>
 <translation id="3095940652251934233">كشف</translation>
 <translation id="3096100844101284527">إضافة عنوان الاستلام من المستخدم</translation>
 <translation id="3105172416063519923">رقم تعريف الأصل:</translation>
@@ -500,6 +505,7 @@
 <translation id="3369192424181595722">خطأ في الساعة</translation>
 <translation id="337363190475750230">تم إلغاء التوفير</translation>
 <translation id="3377188786107721145">خطأ في تحليل السياسة</translation>
+<translation id="3377736046129930310">استخدام قفل الشاشة للتأكد من البطاقات بشكلٍ أسرع</translation>
 <translation id="3380365263193509176">خطأ غير معروف</translation>
 <translation id="3380864720620200369">معرِّف العميل:</translation>
 <translation id="3387261909427947069">طرق الدفع</translation>
@@ -665,6 +671,7 @@
 <translation id="4194250254487269611">يتعذّر حفظ بطاقتك الآن.</translation>
 <translation id="4196861286325780578">إ&amp;عادة النقل</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />التحقق من عمليات تهيئة الجدار الناري وبرامج مكافحة الفيروسات<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">الملف الشخصي لشاشة تسجيل الدخول</translation>
 <translation id="4215751373031079683">‏7x9 (مغلف)</translation>
 <translation id="4220128509585149162">الأعطال</translation>
 <translation id="422022731706691852">قد يحاول المهاجمون في <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> خداعك لتثبيت برامج تلحق الضرر بتجربة التصفح (على سبيل المثال، من خلال تغيير صفحتك الرئيسية أو عرض إعلانات إضافية على المواقع التي تزورها). <ph name="BEGIN_LEARN_MORE_LINK" />مزيد من المعلومات<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -747,6 +754,7 @@
 <translation id="4515275063822566619">‏يتم أخذ البطاقات والعناوين من Chrome وحسابك على Google (<ph name="ACCOUNT_EMAIL" />)، ويمكنك إدارتها في <ph name="BEGIN_LINK" />الإعدادات<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">‏Comm-10 (مغلف)</translation>
 <translation id="4522570452068850558">التفاصيل</translation>
+<translation id="4524138615196389145">‏التأكد من بطاقاتك بشكلٍ أسرع باستخدام WebAuthn من الآن فصاعدًا</translation>
 <translation id="4524805452350978254">إدارة البطاقات</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">الفلاش</translation>
@@ -858,6 +866,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64 بت)</translation>
+<translation id="5121469660360593280">‏يمكنك مشاركة البيانات حول الأحداث الأمنية التي تم وضع علامة عليها من خلال ميزة "حماية مستخدم Chrome Enterprise" مع المشرف. قد تتضمّن هذه الميزة عناوين URL للصفحات التي تزورها أو أسماء الملفات أو البيانات الوصفية، واسم المستخدم الذي تستخدمه لتسجيل الدخول إلى جهازك وChrome.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">التحقق من بطاقتك</translation>
 <translation id="5135404736266831032">إدارة العناوين...</translation>
@@ -869,6 +878,7 @@
 <translation id="5159010409087891077">‏يمكنك فتح الصفحة في نافذة جديدة للتصفح المتخفي (⇧⌘N)</translation>
 <translation id="516920405563544094">‏يمكنك إدخال رمز التحقُّق من البطاقة (CVC) لبطاقة <ph name="CREDIT_CARD" />. وبعد التأكيد، ستتم مشاركة تفاصيل البطاقة من حسابك على Google مع هذا الموقع الإلكتروني.</translation>
 <translation id="5169827969064885044">‏قد تفقد إمكانية الوصول إلى حساب مؤسستك أو تتعرَّض لسرقة هويتك. لذا، يوصي Chrome بتغيير كلمة مرورك الآن.</translation>
+<translation id="5170017743895942767">‏حماية مستخدم Chrome Enterprise</translation>
 <translation id="5171045022955879922">‏البحث أو إدخال عنوان URL</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">الجهاز</translation>
@@ -989,6 +999,7 @@
 <translation id="5730040223043577876">‏يُوصي Chrome بإعادة تحديد كلمة المرور في حال إعادة استخدامها في مواقع ويب أخرى.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{‏حفظ بطاقة واحدة في حسابك على Google}zero{‏حفظ بطاقات في حسابك على Google}two{‏حفظ بطاقتين في حسابك على Google}few{‏حفظ بطاقات في حسابك على Google}many{‏حفظ بطاقات في حسابك على Google}other{‏حفظ بطاقات في حسابك على Google}}</translation>
 <translation id="5763042198335101085">أدخِل عنوان بريد إلكتروني صحيحًا</translation>
+<translation id="5763703224595565476">‏فعّل المشرف ميزة "حماية مستخدم Chrome Enterprise" على المتصفّح الذي تستخدمه. تتضمّن ميزة "حماية مستخدم Chrome Enterprise" إذنًا بالوصول إلى بعض بياناتك.</translation>
 <translation id="5765072501007116331">لعرض طرق التسليم ومتطلباته، حدِّد عنوانًا</translation>
 <translation id="5778550464785688721">‏التحكم الكامل في MIDI</translation>
 <translation id="5781136890105823427">تم تفعيل التجربة.</translation>
@@ -1068,6 +1079,7 @@
 <translation id="6094273045989040137">إضافة تعليق توضيحي</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">‏قد يتضمّن حسابك على Google نماذج أخرى من سجلّ التصفّح على <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
+<translation id="6120179357481664955">هل تتذكر معرّف واجهة الدفعات الموحّدة؟</translation>
 <translation id="6132597952260690497">معلومات حول المكوّنات الإضافية والإضافات المُثبّتة</translation>
 <translation id="6146055958333702838">تحقق من أي كابلات وأعد تشغيل أي أجهزة توجيه أو أجهزة مودم أو أجهزة شبكة
         أخرى ربما تستخدمها.</translation>
@@ -1083,6 +1095,7 @@
 <translation id="6221345481584921695">‏اكتشف التصفح الآمن من Google‬ مؤخرًا <ph name="BEGIN_LINK" />برامج ضارة<ph name="END_LINK" /> على <ph name="SITE" />. أحيانًا تصاب مواقع الويب الآمنة في الوضع العادي ببرامج ضارة. مصدر محتوى البرامج الضارة <ph name="SUBRESOURCE_HOST" />، وهو ناشر معروف للبرامج الضارة.</translation>
 <translation id="6234122620015464377">القطع بعد كل مستند</translation>
 <translation id="6240447795304464094">‏شعار Google Pay</translation>
+<translation id="6241121617266208201">إخفاء الاقتراحات</translation>
 <translation id="6251924700383757765">سياسة الخصوصية</translation>
 <translation id="6254436959401408446">لا تتوفر ذاكرة كافية لفتح هذه الصفحة</translation>
 <translation id="625755898061068298">لقد اخترت إيقاف تحذيرات الأمان لهذا الموقع.</translation>
@@ -1129,6 +1142,7 @@
 <translation id="6409754798200046165">‏لقد أدخلت للتو كلمة مرورك في موقع إلكتروني مريب. لذا يُوصي Chrome بتغيير كلمة مرورك الآن.</translation>
 <translation id="6410264514553301377">‏أدخِل تاريخ انتهاء الصلاحية ورمز التحقق من البطاقة (CVC) لـ <ph name="CREDIT_CARD" /></translation>
 <translation id="6415778972515849510">‏يمكن أن يساعدك Chromium على حماية حسابك على Google وتغيير كلمة المرور.</translation>
+<translation id="6423385022588644828">التأكد من بطاقاتك بشكلٍ أسرع باستخدام رقم التعريف باللمس من الآن فصاعدًا</translation>
 <translation id="6427730057873428458">الطي على شكل بوابة</translation>
 <translation id="6433490469411711332">تعديل معلومات الاتصال</translation>
 <translation id="6433595998831338502">رفض <ph name="HOST_NAME" /> الاتصال.</translation>
@@ -1199,12 +1213,14 @@
 <translation id="6786747875388722282">الإضافات</translation>
 <translation id="6790428901817661496">التشغيل</translation>
 <translation id="679355240208270552">تم التجاهل نظرًا لأنه لم يتم تفعيل البحث التلقائي بواسطة السياسة.</translation>
+<translation id="6794951432696553238">‏التأكد من بطاقاتك بشكلٍ أسرع باستخدام Windows Hello من الآن فصاعدًا.</translation>
 <translation id="681021252041861472">الحقل مطلوب</translation>
 <translation id="6810899417690483278">رقم تعريف التخصيص</translation>
 <translation id="6825578344716086703">‏لقد حاولت الوصول إلى <ph name="DOMAIN" />، ولكن قدَّم الخادم شهادة موقّعة باستخدام خوارزمية توقيع ضعيفة (مثل SHA-1)، مما يعني أن بيانات اعتماد الأمان التي قدمها الخادم من المحتمل أنه تم تزييفها، وأن الخادم قد لا يكون هو الخادم الذي تتوقعه (قد تكون على اتصال بأحد المهاجمين).</translation>
 <translation id="6826370046007623921">منع فقدان البيانات</translation>
 <translation id="6831043979455480757">ترجمة</translation>
 <translation id="6839929833149231406">المنطقة</translation>
+<translation id="6846340164947227603">استخدام رقم بطاقة افتراضي...</translation>
 <translation id="6852204201400771460">هل تريد إعادة تحميل التطبيق؟</translation>
 <translation id="6865412394715372076">يتعذَّر إثبات ملكية هذه البطاقة الآن</translation>
 <translation id="6868206169573555318">إعادة التشغيل للتحديث</translation>
@@ -1233,6 +1249,7 @@
 <translation id="6989763994942163495">عرض الإعدادات المتقدمة...</translation>
 <translation id="6993898126790112050">‏6x9 (مغلف)</translation>
 <translation id="6996312675313362352">ترجمة اللغة <ph name="ORIGINAL_LANGUAGE" /> دائمًا</translation>
+<translation id="7004583254764674281">‏استخدام Windows Hello للتأكد من البطاقات بشكلٍ أسرع</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">قد يتمّ تحصيل هذه الرسوم لمرة واحدة أو بشكل متكرر، وقد تكون غير واضحة.</translation>
 <translation id="7029809446516969842">كلمات المرور</translation>
@@ -1243,6 +1260,7 @@
 <translation id="7064851114919012435">معلومات الاتصال</translation>
 <translation id="7075452647191940183">الطلب كبير جدًا</translation>
 <translation id="7079718277001814089">يحتوي هذا الموقع على برامج ضارة</translation>
+<translation id="7081308185095828845">لا تتوفّر هذه الميزة على جهازك.</translation>
 <translation id="7087282848513945231">مقاطعة</translation>
 <translation id="7090678807593890770">‏البحث في Google عن <ph name="LINK" /></translation>
 <translation id="7108338896283013870">إخفاء</translation>
@@ -1296,9 +1314,11 @@
 <translation id="733923710415886693">لم يتم الكشف عن شهادة الخادم عن طريق شهادة الشفافية.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">تابع إلى:</translation>
+<translation id="73479065977517481">‏فعَّل <ph name="ENROLLMENT_DOMAIN" /> ميزة "حماية مستخدم Chrome Enterprise" على المتصفّح الذي تستخدمه. تتضمّن ميزة "حماية مستخدم Chrome Enterprise" إذنًا بالوصول إلى بعض بياناتك.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">سطر الأوامر</translation>
 <translation id="7372973238305370288">نتيجة البحث</translation>
+<translation id="7374733840632556089">‏تحدث هذه المشكلة بسبب شهادة ثبّتها أنت أو ثبّتها مستخدم آخر على جهازك. من المعروف أن الشهادة تُستخدم لمراقبة الشبكات واعتراضها، ولا يثق Chrome بها. وعلى الرغم من وجود بعض الحالات المشروعة للمراقبة، كما هو الحال في شبكة المدرسة أو الشركة، يريد Chrome التأكد من أنك تدرك حدوث ذلك، حتى إذا لم تتمكّن من إيقافها. يمكن أن تحدث عملية المراقبة في أي متصفّح أو تطبيق يصل إلى الويب.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" />‏ - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">عناصر التحكم في الوسائط</translation>
 <translation id="7378627244592794276">لا</translation>
@@ -1327,6 +1347,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />مزيد من المعلومات<ph name="END_LINK" /> حول هذه المشكلة.</translation>
 <translation id="7455133967321480974">استخدام الإعداد التلقائي العمومي (حظر)</translation>
 <translation id="7460618730930299168">يختلف هذا الفحص عن اختيارك. هل تريد المتابعة؟</translation>
+<translation id="7464821087936825778">الخروج من وضع البحث</translation>
 <translation id="7473891865547856676">لا، شكرًا</translation>
 <translation id="7481312909269577407">إلى الأمام</translation>
 <translation id="7485870689360869515">لم يتم العثور على بيانات.</translation>
@@ -1548,6 +1569,7 @@
 <translation id="8559762987265718583">تعذر إنشاء اتصال خاص بـ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> نظرًا لأن التاريخ والوقت للجهاز (<ph name="DATE_AND_TIME" />) غير صحيحين.</translation>
 <translation id="8564985650692024650">‏يُوصي Chromium بإعادة تحديد كلمة المرور <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> في حال إعادة استخدامها في مواقع ويب أخرى.</translation>
 <translation id="8571890674111243710">جارٍ ترجمة الصفحة إلى <ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">استخدام رقم التعريف باللمس للتأكد من البطاقات بشكلٍ أسرع</translation>
 <translation id="858637041960032120">إضافة رقم هاتف
 </translation>
 <translation id="860043288473659153">اسم حامل البطاقة</translation>
diff --git a/components/strings/components_strings_az.xtb b/components/strings/components_strings_az.xtb
index 4806b79..2202a6c 100644
--- a/components/strings/components_strings_az.xtb
+++ b/components/strings/components_strings_az.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Səhifəni sonra yükləyin</translation>
 <translation id="1015730422737071372">Əlavə detallar ilə təmin edin</translation>
 <translation id="1021110881106174305">Qəbul olunmuş kartlar</translation>
+<translation id="1021753677514347426">Bu xətanın səbəbi cihazınızda siz və ya başqası tərəfindən quraşdırılmış sertifikatdır. Sertifikat şəbəkələrə nəzarət etmək və onları bloklamaq üçün istifadə olunur və Chromium ona etibar etmir. Məktəb və ya şirkət şəbəkəsi kimi bəzi hallarda qanuni nəzarətə icazə verilsə də, Chromium qarşısını ala bilməsəniz də, bunun baş verdiyini bilmənizi istəyir. Nəzarət vebə girişi olan istənilən brauzer və ya tətbiqdə baş verə bilər.</translation>
 <translation id="1032854598605920125">Saat əqrəbi istiqamətində fırladın</translation>
 <translation id="1036348656032585052">Deaktiv edin</translation>
 <translation id="1038842779957582377">bilinməyən ad</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Qəza hesabatı <ph name="CRASH_TIME" /> radələrində qeydə alınıb (hələ yüklənməyib və ya iqnor edilməyib)</translation>
 <translation id="1270502636509132238">Götürmə Üsulu</translation>
 <translation id="1285320974508926690">Bu saytı heç vaxt tərcümə etməyin</translation>
+<translation id="1285400217480592994">Chrome'da endirdiyiniz və ya yüklədiyniz faylların məzmununu skan edin.</translation>
 <translation id="1292701964462482250">"Kompüterdəki proqram təminatı Chrome'un vebə təhlükəsiz şəkildə qoşulmağına mane olur" (yalnız Windows kompüterləri)</translation>
 <translation id="1294154142200295408">Əmr xəttinin növləri</translation>
 <translation id="129553762522093515">Son qapadılan</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Telefon nömrəsi</translation>
 <translation id="2277103315734023688">İrəli çəkin</translation>
 <translation id="2283340219607151381">Ünvanları yadda saxlayın və doldurun</translation>
+<translation id="2288422996159078444">Yazdığınız hər mətn, baxdığınız hər səhifə və ya vebdəki digər bütün fəaliyyətləriniz izlənilir. Saytlardakı məzmun xəbəriniz olmadan dəyişdirilə bilər.</translation>
 <translation id="2289385804009217824">Kəsin</translation>
 <translation id="2292556288342944218">İnternet girişiniz blok edilib</translation>
 <translation id="2297722699537546652">B5 (Zərf)</translation>
@@ -436,6 +439,7 @@
 <translation id="2989742184762224133">Yuxarıdan qoşa ştapel vurun</translation>
 <translation id="2991174974383378012">Veb saytlar ilə paylaşılır</translation>
 <translation id="2991571918955627853">Hazırda <ph name="SITE" /> saytına daxil olmaq mümkün deyil, çünki veb səhifə HSTS istifadə edir. Şəbəkə xətaları və hücumları adətən müvəqqəti olur, beləliklə, bu səhifə yəqin ki daha sonra işləyəcək.</translation>
+<translation id="2996674880327704673">Google tərəfindən təkliflər</translation>
 <translation id="3005723025932146533">Saxlanılmış kopyanı göstərin</translation>
 <translation id="3008447029300691911"><ph name="CREDIT_CARD" /> üçün CVC kodu daxil edin. Təsdiq etdikdən sonra, kart detallarınız bu sayt ilə paylaşılacaq.</translation>
 <translation id="3010559122411665027">"<ph name="ENTRY_INDEX" />" giriş siyahısı: <ph name="ERROR" /></translation>
@@ -448,6 +452,7 @@
 <translation id="3060227939791841287">C9 (Zərf)</translation>
 <translation id="3061707000357573562">Təmir Xidməti</translation>
 <translation id="3064966200440839136">Xarici tətbiqlə ödəniş etmək üçün gizli rejimdən çıxırsınız. Davam edilsin?</translation>
+<translation id="3086579638707268289">Vebdəki fəaliyyətinizə nəzarət edilir</translation>
 <translation id="3095940652251934233">Bəyanat</translation>
 <translation id="3096100844101284527">Götürmə Ünvanı əlavə edin</translation>
 <translation id="3105172416063519923">Aktiv ID:</translation>
@@ -498,6 +503,7 @@
 <translation id="3369192424181595722">Saat xətası</translation>
 <translation id="337363190475750230">Nəzərdə tutulmayıb</translation>
 <translation id="3377188786107721145">Siyasət təhlili xətası</translation>
+<translation id="3377736046129930310">Kartları daha sürətli təsdiqləmək üçün ekran kilidi istifadə edin</translation>
 <translation id="3380365263193509176">Naməlum xəta</translation>
 <translation id="3380864720620200369">Klient ID:</translation>
 <translation id="3387261909427947069">Ödəniş Üsulları</translation>
@@ -661,6 +667,7 @@
 <translation id="4194250254487269611">Hazırda kartınızı yadda saxlamaq mümkün deyil</translation>
 <translation id="4196861286325780578">Hərəkəti təkrarlayın</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />güvənlik divarı və antivirus konfiqurasiyaları yoxlanılır<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">giriş ekranı profili</translation>
 <translation id="4215751373031079683">7x9 (Zərf)</translation>
 <translation id="4220128509585149162">Qəzalar</translation>
 <translation id="422022731706691852"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> saytındakı hücumçular Sizi axtarış təcrübənizə zərər gətirəcək (məsələn, əsas səhifəni dəyişməklə və ya daxil olduğunuz saytlarda əlavə reklamlar göstərməklə) proqramları quraşdırmağa sövq edə bilər. <ph name="BEGIN_LEARN_MORE_LINK" />Ətraflı məlumat<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -743,6 +750,7 @@
 <translation id="4515275063822566619">Kart və ünvanlar Google Chrome və Google Hesabındandır (<ph name="ACCOUNT_EMAIL" />). Onları <ph name="BEGIN_LINK" />Ayarlar<ph name="END_LINK" /> bölməsindən idarə edə bilərsiniz.</translation>
 <translation id="4517607026994743406">Comm-10 (Zərf)</translation>
 <translation id="4522570452068850558">Detallar</translation>
+<translation id="4524138615196389145">Bundan sonra WebAuthn istifadə edərək kartlarınızı daha sürətli təsdiqləyin</translation>
 <translation id="4524805452350978254">Kartları idarə edin</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">İşartı</translation>
@@ -854,6 +862,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">Avropa-Edp</translation>
 <translation id="5115563688576182185">(64-bit)</translation>
+<translation id="5121469660360593280">Chrome Enterprise İstifadəçi Qoruması tərəfindən şikayət edilən güvənlik tədbirləri haqqında datanı administrator ilə paylaşın. Baxdığınız səhifələrin URL'ləri, fayl adları və ya metadata, cihaz və Chrome'a giriş üçün istifadə etdiyiniz istifadəçi adı bura daxil ola bilər.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Kartı təsdiq edin</translation>
 <translation id="5135404736266831032">Ünvanları idarə edin...</translation>
@@ -865,6 +874,7 @@
 <translation id="5159010409087891077">Yeni Gizli pəncərədə səhifə açın (⇧⌘N)</translation>
 <translation id="516920405563544094"><ph name="CREDIT_CARD" /> üçün CVC daxil edin. Təsdiqlədikdən sonra Google Hesabındakı kart məlumatları bu saytda paylaşılacaq.</translation>
 <translation id="5169827969064885044">Təşkilat hesabına girişi itirə və ya kimlik oğurluğu ilə üzləşə bilərsiniz. Chrome parollarınızı indi dəyişməyi məsləhət görür.</translation>
+<translation id="5170017743895942767">Chrome Enterprise İstifadəçi Qoruması</translation>
 <translation id="5171045022955879922">Linki axtarın və ya yazın</translation>
 <translation id="5171689220826475070">Fanfold-Avropa</translation>
 <translation id="5172758083709347301">Maşın</translation>
@@ -985,6 +995,7 @@
 <translation id="5730040223043577876">Parolunuzdan digər saytlarda təkrar istifadə etmisinizsə, Chrome onu sıfırlamağınızı tövsiyə edir.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Kartı Google Hesabında yadda saxlayın}other{Kartları Google Hesabında yadda saxlayın}}</translation>
 <translation id="5763042198335101085">Düzgün e-poçt ünvanı daxil edin</translation>
+<translation id="5763703224595565476">Administratorunuz brauzerinizdə Chrome Enterprise İstifadəçi Qorumasını aktiv edib. Chrome Enterprise İstifadəçi Qoruması datanızın bir hissəsinə daxil ola biləcək.</translation>
 <translation id="5765072501007116331">Çatdırılma üsulları və tələblərinə baxın, ünvan seçin</translation>
 <translation id="5778550464785688721">MIDI cihazların tam nəzarəti</translation>
 <translation id="5781136890105823427">Sınaq aktiv edildi</translation>
@@ -1064,6 +1075,7 @@
 <translation id="6094273045989040137">Annotasiya</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129"><ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> linkində Google Hesabına məxsus axtarış tarixçəsinin başqa formaları ola bilər</translation>
+<translation id="6120179357481664955">UPI ID'niz yadda saxlansın?</translation>
 <translation id="6132597952260690497">Quraşdırılmış artırmalar və plaqinlər haqqında məlumat</translation>
 <translation id="6146055958333702838">Kabelləri yoxlayın və istifadə edəcəyiniz hər hansı router, modem və ya digər
         şəbəkə cihazlarını yenidən yükləyin.</translation>
@@ -1079,6 +1091,7 @@
 <translation id="6221345481584921695">Google Güvənli Brauzinq <ph name="SITE" /> üzərində <ph name="BEGIN_LINK" />virus aşkarladı<ph name="END_LINK" />. Ziyanverici məzmun virus yaymağı ilə məşhur olan <ph name="SUBRESOURCE_HOST" /> tərəfdən gəlir.</translation>
 <translation id="6234122620015464377">Hər sənəddən sonra kəsin</translation>
 <translation id="6240447795304464094">Google Pay loqosu</translation>
+<translation id="6241121617266208201">Təklifləri gizlədin</translation>
 <translation id="6251924700383757765">Məxfilik siyasəti</translation>
 <translation id="6254436959401408446">Bu səhifəni açmaq üçün kifayət qədər yaddaş yoxdur</translation>
 <translation id="625755898061068298">Bu sayt üçün təhlükəsizlik xəbərdarlığını deaktiv etməyi seçmişik.</translation>
@@ -1125,6 +1138,7 @@
 <translation id="6409754798200046165">İndicə parolunuzu aldadıcı sayt içində yazdınız. Chrome parolunuzu indi dəyişməyi məsləhət görür.</translation>
 <translation id="6410264514553301377"><ph name="CREDIT_CARD" /> üçün bitmə tarixi və CVC nömrəsini daxil edin</translation>
 <translation id="6415778972515849510">Chromium Google Hesabını qorumağa və parolu dəyişməyə kömək edir.</translation>
+<translation id="6423385022588644828">Bundan sonra Toxunuş İD'si istifadə edərək kartlarınızı daha sürətli təsdiqləyin</translation>
 <translation id="6427730057873428458">Qapı şəklində qatlayın</translation>
 <translation id="6433490469411711332">Kontakt məlumatını redaktə edin</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> qoşulmaq istəmədi.</translation>
@@ -1195,12 +1209,14 @@
 <translation id="6786747875388722282">Artırmalar</translation>
 <translation id="6790428901817661496">Oxudun</translation>
 <translation id="679355240208270552">Defolt axtarış siyasət tərəfindən aktiv edilmədiyinə görə blok edilib.</translation>
+<translation id="6794951432696553238">Bundan sonra Windows Hello istifadə edərək kartlarınızı daha sürətli təsdiqləyin</translation>
 <translation id="681021252041861472">Tələb onunan Sahə</translation>
 <translation id="6810899417690483278">Özəlləşdirmə ID-si</translation>
 <translation id="6825578344716086703"><ph name="DOMAIN" /> domeninə daxil olmağa cəhd etdiniz, amma server zəif imza alqoritmi ilə daxil olan sertifikat təqdim etdi. Bu o deməkdir ki, serverin təqdim etdiyi təhlükəsizlik mandatı saxtalaşdırıla bilər və server gözlədiyiniz server olmaya bilər (Siz hücumçu ilə ünsiyyətdə ola bilərsiniz).</translation>
 <translation id="6826370046007623921">Data İtkisindən Müdafiə</translation>
 <translation id="6831043979455480757">Tərcümə et</translation>
 <translation id="6839929833149231406">Sahə</translation>
+<translation id="6846340164947227603">Virtual kart nömrəsini istifadə edin:</translation>
 <translation id="6852204201400771460">Tətbiq yenidən yüklənilsin?</translation>
 <translation id="6865412394715372076">Bu kart hazırda doğrulana bilməz</translation>
 <translation id="6868206169573555318">Güncəlləmə üçün yenidən başladın</translation>
@@ -1229,6 +1245,7 @@
 <translation id="6989763994942163495">Qabaqcıl ayarları göstərin...</translation>
 <translation id="6993898126790112050">6x9 (Zərf)</translation>
 <translation id="6996312675313362352">Həmişə <ph name="ORIGINAL_LANGUAGE" /> dilindən tərcümə edin</translation>
+<translation id="7004583254764674281">Kartları daha sürətli təsdiqləmək üçün Windows Hello istifadə edin</translation>
 <translation id="7012363358306927923">Çin UnionPay</translation>
 <translation id="7016992613359344582">Bu ödənişlər birdəfəlik və ya təkrarlanan ola bilər. Onlar, eyni zamanda görünməyə bilər.</translation>
 <translation id="7029809446516969842">Parollar</translation>
@@ -1239,6 +1256,7 @@
 <translation id="7064851114919012435">Kontakt məlumatı</translation>
 <translation id="7075452647191940183">Sorğu çox uzundur</translation>
 <translation id="7079718277001814089">Bu saytda virus var</translation>
+<translation id="7081308185095828845">Bu xüsusiyyət cihazınızda əlçatan deyil</translation>
 <translation id="7087282848513945231">Ölkə</translation>
 <translation id="7090678807593890770">Google'da <ph name="LINK" /> axtarın</translation>
 <translation id="7108338896283013870">Gizlədin</translation>
@@ -1292,9 +1310,11 @@
 <translation id="733923710415886693">Serverin sertifikatı Sertifikat Şəffaflığı vasitəsi ilə aşkarlanmayıb.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">Qoşulub:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> brauzerinizdə Chrome Enterprise İstifadəçi Qorumasını aktiv etdi. Chrome Enterprise İstifadəçi Qoruması datanızın bir hissəsinə daxil ola biləcək.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Əmr sahəsi</translation>
 <translation id="7372973238305370288">axtarış nəticəsi</translation>
+<translation id="7374733840632556089">Bu xətanın səbəbi cihazınızda siz və ya başqası tərəfindən quraşdırılmış sertifikatdır. Sertifikat şəbəkələrə nəzarət etmək və onları bloklamaq üçün istifadə olunur və Chrome ona etibar etmir. Məktəb və ya şirkət şəbəkəsi kimi bəzi hallarda qanuni nəzarətə icazə verilsə də, Chrome qarşısını ala bilməsəniz də, bunun baş verdiyini bilmənizi istəyir. Nəzarət vebə girişi olan istənilən brauzer və ya tətbiqdə baş verə bilər.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Media Nəzarətləri</translation>
 <translation id="7378627244592794276">Xeyr</translation>
@@ -1323,6 +1343,7 @@
 <translation id="7451311239929941790">Problem haqqında <ph name="BEGIN_LINK" />ətraflı məlumat<ph name="END_LINK" /> əldə edilir.</translation>
 <translation id="7455133967321480974">Qlobal defolt istifadə edin (Blok)</translation>
 <translation id="7460618730930299168">Göstərilənlər seçdiklərinizdən fərqlidir. Davam edilsin?</translation>
+<translation id="7464821087936825778">Axtarış rejimindən çıxır</translation>
 <translation id="7473891865547856676">Yox</translation>
 <translation id="7481312909269577407">İrəli</translation>
 <translation id="7485870689360869515">Heç bir data tapılmadı.</translation>
@@ -1544,6 +1565,7 @@
 <translation id="8559762987265718583">Cihazınızın tarixi və vaxtı (<ph name="DATE_AND_TIME" />) yanlış olduğundan, <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> domeninə şəxsi bağlantı yaradıla bilməz.</translation>
 <translation id="8564985650692024650">Parolunuzdan digər saytlarda təkrar istifadə etmisinizsə, Chromium <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> parolunuzu sıfırlamağı tövsiyə edir.</translation>
 <translation id="8571890674111243710">Səhifə <ph name="LANGUAGE" /> dilinə tərcümə edilir...</translation>
+<translation id="8574899947864779331">Kartları daha sürətli təsdiqləmək üçün Toxunuş İD'si istifadə edin</translation>
 <translation id="858637041960032120">Telefon nömrəsi əlavə edin</translation>
 <translation id="860043288473659153">Kart sahibinin adı</translation>
 <translation id="8616822740383114808">Bu ayar "<ph name="SETTINGS_PAGE" />" bölməsindəki "<ph name="ENFORCING_SETTING" />" ilə tətbiq edilir</translation>
diff --git a/components/strings/components_strings_be.xtb b/components/strings/components_strings_be.xtb
index 9cfc6a9..2c1dc570 100644
--- a/components/strings/components_strings_be.xtb
+++ b/components/strings/components_strings_be.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Загрузіць старонку пазней</translation>
 <translation id="1015730422737071372">Указаць дадатковыя звесткі</translation>
 <translation id="1021110881106174305">Карткі, якія прымаюцца</translation>
+<translation id="1021753677514347426">Гэта праблема ўзнікае з-за сертыфіката, усталяванага на вашай прыладзе вамі або іншым карыстальнікам. Ёсць інфармацыя, што гэты сертыфікат выкарыстоўваецца для маніторынгу і перахопу сетак, і таму ён не з'яўляецца давераным для Chromium. Бываюць выпадкі, калі такі маніторынг не з'яўляецца незаконным (напрыклад, калі прылада знаходзіцца ў сетцы кампаніі або навучальнай установы), але ў любым выпадку мы хацелі б папярэдзіць вас пра існаванне такога сертыфіката. Выпадкі маніторынгу могуць адбывацца ў любым браўзеры або ў любой праграме, якая мае доступ да інтэрнэту.</translation>
 <translation id="1032854598605920125">Павярнуць па гадзіннікавай стрэлцы</translation>
 <translation id="1036348656032585052">Выключыць</translation>
 <translation id="1038842779957582377">невядомае імя</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Справаздача аб збоях, захаваная <ph name="CRASH_TIME" /> (яшчэ не запампавана або праігнаравана)</translation>
 <translation id="1270502636509132238">Спосаб прыняцця</translation>
 <translation id="1285320974508926690">Ніколі не перакладаць гэты сайт</translation>
+<translation id="1285400217480592994">Праверка змесціва файлаў, якія вы спампоўваеце або запампоўваеце ў браўзеры Chrome.</translation>
 <translation id="1292701964462482250">"Праграмнае забеспячэнне на камп'ютары не дае браўзеру Chrome устанавіць бяспечнае падключэнне да інтэрнэту" (толькі камп'ютары пад кіраваннем Windows)</translation>
 <translation id="1294154142200295408">Варыянты для каманднага радка</translation>
 <translation id="129553762522093515">Нядаўна закрытыя</translation>
@@ -277,12 +279,14 @@
 <translation id="2250931979407627383">Сшыванне па краі злева</translation>
 <translation id="225207911366869382">Гэта састарэлае значэнне для палітыкі.</translation>
 <translation id="2258928405015593961">Увядзіце дату заканчэння тэрміну дзеяння, якая яшчэ не наступіла, і паўтарыце спробу</translation>
+<translation id="225943865679747347">Код памылкі: <ph name="ERROR_CODE" /></translation>
 <translation id="2262243747453050782">Памылка HTTP</translation>
 <translation id="2263079731045660823">Абнавіць звесткі аўтазапаўнення даных крэдытнай карткі ў наладах Chrome</translation>
 <translation id="2267047181501709434">Ідзе спраўджанне вашай асобы...</translation>
 <translation id="2270484714375784793">Нумар тэлефона</translation>
 <translation id="2277103315734023688">Перайсці ўперад</translation>
 <translation id="2283340219607151381">Захоўваць і запаўняць адрасы</translation>
+<translation id="2288422996159078444">Уся інфармацыя, якую вы набіраеце, усе старонкі, якія вы праглядаеце, а таксама любыя іншыя вашы дзеянні ў інтэрнэце адсочваюцца. Змесціва сайтаў можа быць зменена без вашага ведама.</translation>
 <translation id="2289385804009217824">Абрэзка</translation>
 <translation id="2292556288342944218">Доступ да інтэрнэту заблакіраваны</translation>
 <translation id="2297722699537546652">B5 (канверт)</translation>
@@ -435,6 +439,7 @@
 <translation id="2989742184762224133">Дзве скабы зверху</translation>
 <translation id="2991174974383378012">Абагульванне з вэб-сайтамі</translation>
 <translation id="2991571918955627853">Наведаць сайт <ph name="SITE" /> зараз нельга, паколькі ён выкарыстоўвае механізм HSTS. Звычайна сеткавыя памылкі і атакі – часовая з'ява, таму гэта старонка будзе, хутчэй за ўсё, працаваць пазней.</translation>
+<translation id="2996674880327704673">Прапановы ад Google</translation>
 <translation id="3005723025932146533">Паказаць захаваную копію</translation>
 <translation id="3008447029300691911">Увядзіце CVC-код карткі <ph name="CREDIT_CARD" />. Пасля вашага пацвярджэння даныя вашай карткі будуць абагулены з гэтым сайтам.</translation>
 <translation id="3010559122411665027">Пункт спіса "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -447,6 +452,7 @@
 <translation id="3060227939791841287">C9 (канверт)</translation>
 <translation id="3061707000357573562">Сэрвіс выпраўленняў</translation>
 <translation id="3064966200440839136">Выхад з рэжыму інкогніта для плацяжу праз знешнюю праграму. Працягнуць?</translation>
+<translation id="3086579638707268289">Вашы дзеянні ў інтэрнэце адсочваюцца</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Дадаць адрас прыняцця</translation>
 <translation id="3105172416063519923">Ідэнтыфікатар аб'екта ўласнасці:</translation>
@@ -499,6 +505,7 @@
 <translation id="3369192424181595722">Памылка гадзінніка</translation>
 <translation id="337363190475750230">Ініцыялізацыя скасавана</translation>
 <translation id="3377188786107721145">Памылка аналізу палітыкі</translation>
+<translation id="3377736046129930310">Выкарыстоўваць блакіроўку экрана для хутчэйшага пацвярджэння картак</translation>
 <translation id="3380365263193509176">Невядомая памылка</translation>
 <translation id="3380864720620200369">Ідэнтыфікатар кліента:</translation>
 <translation id="3387261909427947069">Спосабы аплаты</translation>
@@ -663,6 +670,7 @@
 <translation id="4194250254487269611">Не ўдаецца захаваць даныя вашай крэдытнай карткі</translation>
 <translation id="4196861286325780578">&amp;Узнавіць перамяшчэнне</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Праверыць канфігурацыю брандмаўэра і антывіруса.<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">профіль экрана ўваходу</translation>
 <translation id="4215751373031079683">7x9 (канверт)</translation>
 <translation id="4220128509585149162">Збоі</translation>
 <translation id="422022731706691852">Зламыснікі на сайце <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> могуць падмануць вас і прымусіць усталяваць праграмы, якія пашкодзяць вашай працы ў інтэрнэце (напрыклад, зменай галоўнай старонкі або паказам дадатковай рэкламы на сайтах, якія вы наведваеце). <ph name="BEGIN_LEARN_MORE_LINK" />Даведацца больш<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -745,6 +753,7 @@
 <translation id="4515275063822566619">Карткі і адрасы паходзяць з Chrome і вашага Уліковага запісу Google (<ph name="ACCOUNT_EMAIL" />). Кіраваць імі можна ў <ph name="BEGIN_LINK" />Наладах<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Comm-10 (канверт)</translation>
 <translation id="4522570452068850558">Падрабязнасці</translation>
+<translation id="4524138615196389145">Калі выкарыстоўваць WebAuthn, пацвярджаць карткі можна будзе хутчэй</translation>
 <translation id="4524805452350978254">Кіраваць карткамі</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Флэш-даныя</translation>
@@ -856,6 +865,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64-бітная версія)</translation>
+<translation id="5121469660360593280">Абагульваць даныя пра падзеі бяспекі, адзначаныя адміністратарам з выкарыстаннем сістэмы абароны карпаратыўных карыстальнікаў Chrome Enterprise. Сярод даных могуць быць URL-адрасы старонак, якія вы наведваеце, назвы файлаў або метаданыя, а таксама імя карыстальніка, якое вы выкарыстоўваеце для ўваходу на сваю прыладу або ў Chrome.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Спраўджанне карткі</translation>
 <translation id="5135404736266831032">Кіраваць адрасамі...</translation>
@@ -867,6 +877,7 @@
 <translation id="5159010409087891077">Адкрыйце старонку ў акне ў рэжыме інкогніта (⇧⌘N).</translation>
 <translation id="516920405563544094">Увядзіце CVC-код карткі <ph name="CREDIT_CARD" />. Пасля вашага пацвярджэння даныя карткі з Уліковага запісу Google будуць абагулены з гэтым сайтам.</translation>
 <translation id="5169827969064885044">Вы можаце страціць доступ да ўліковага запісу арганізацыі, або ў вас могуць скрасці асабістыя даныя. Chrome рэкамендуе змяніць пароль.</translation>
+<translation id="5170017743895942767">Сістэма абароны карпаратыўных карыстальнікаў Chrome Enterprise</translation>
 <translation id="5171045022955879922">Знайдзіце або ўвядзіце URL-адрас</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Машына</translation>
@@ -987,6 +998,7 @@
 <translation id="5730040223043577876">Chrome рэкамендуе скінуць ваш пароль, калі вы карысталіся ім на іншых сайтах.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Захавайце плацежную картку ва Уліковым запісе Google}one{Захавайце плацежныя карткі ва Уліковым запісе Google}few{Захавайце плацежныя карткі ва Уліковым запісе Google}many{Захавайце плацежныя карткі ва Уліковым запісе Google}other{Захавайце плацежныя карткі ва Уліковым запісе Google}}</translation>
 <translation id="5763042198335101085">Увядзіце сапраўдны адрас электроннай пошты</translation>
+<translation id="5763703224595565476">Адміністратар уключыў у вашым браўзеры сістэму абароны карпаратыўных карыстальнікаў Chrome Enterprise. Гэта функцыя мае доступ да некаторых вашых даных.</translation>
 <translation id="5765072501007116331">Выберыце адрас, каб убачыць спосабы і ўмовы дастаўкі</translation>
 <translation id="5778550464785688721">Поўны кантроль над прыладамі MIDI</translation>
 <translation id="5781136890105823427">Эксперымент уключаны</translation>
@@ -1066,6 +1078,7 @@
 <translation id="6094273045989040137">Анатаваць</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">На сайце <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> могуць быць іншыя формы запісу гісторыі прагляду сайтаў для вашага Уліковага запісу Google</translation>
+<translation id="6120179357481664955">Запомніць ідэнтыфікатар UPI?</translation>
 <translation id="6132597952260690497">Інфармацыя пра ўсталяваныя пашырэнні і ўбудовы</translation>
 <translation id="6146055958333702838">Праверце кабелі і перазагрузіце маршрутызатары, мадэмы або іншыя сеткавыя
     прылады, якія выкарыстоўваеце.</translation>
@@ -1081,6 +1094,7 @@
 <translation id="6221345481584921695">Google Бяспечны прагляд толькі што <ph name="BEGIN_LINK" />выявіў шкоднае ПЗ<ph name="END_LINK" /> на сайце <ph name="SITE" />. Сайты, якія звычайна з'яўляюцца надзейнымі, часам заражаюцца шкодным ПЗ. Шкоднае змесціва паходзіць з хоста <ph name="SUBRESOURCE_HOST" />, вядомай крыніцы шкоднага ПЗ.</translation>
 <translation id="6234122620015464377">Абрэзка пасля кожнага дакумента</translation>
 <translation id="6240447795304464094">Лагатып Google Pay</translation>
+<translation id="6241121617266208201">Схаваць прапановы</translation>
 <translation id="6251924700383757765">Палітыка прыватнасці</translation>
 <translation id="6254436959401408446">Недастаткова памяці, каб адкрыць гэту старонку</translation>
 <translation id="625755898061068298">Вы вырашылі выключыць папярэджанні сістэмы бяспекі на гэтым сайце.</translation>
@@ -1127,6 +1141,7 @@
 <translation id="6409754798200046165">Вы толькі што ўвялі свой пароль на сайце, вядомым падманнымі паводзінамі. Chrome рэкамендуе змяніць пароль.</translation>
 <translation id="6410264514553301377">Увядзіце тэрмін дзеяння і код CVC з карткі <ph name="CREDIT_CARD" /></translation>
 <translation id="6415778972515849510">Chromium можа дапамагчы абараніць ваш Уліковы запіс Google і змяніць ваш пароль.</translation>
+<translation id="6423385022588644828">Калі выкарыстоўваць Touch ID, пацвярджаць карткі можна будзе хутчэй</translation>
 <translation id="6427730057873428458">Згіб "вароты"</translation>
 <translation id="6433490469411711332">Змена кантактных звестак</translation>
 <translation id="6433595998831338502">Хост <ph name="HOST_NAME" /> адмовіўся ад падключэння.</translation>
@@ -1197,12 +1212,14 @@
 <translation id="6786747875388722282">Пашырэнні</translation>
 <translation id="6790428901817661496">Прайграць</translation>
 <translation id="679355240208270552">Праігнаравана, бо згодна з палітыкай стандартная служба пошуку не ўключана.</translation>
+<translation id="6794951432696553238">Калі выкарыстоўваць Windows Hello, пацвярджаць карткі можна будзе хутчэй</translation>
 <translation id="681021252041861472">Абавязковае поле</translation>
 <translation id="6810899417690483278">Ідэнтыфікатар наладжвання</translation>
 <translation id="6825578344716086703">Вы спрабавалі трапіць на дамен <ph name="DOMAIN" />, але сервер выдаў сертыфікат, падпісаны з выкарыстаннем ненадзейнага алгарытму (напрыклад, SHA-1). Гэта азначае, што прапанаваныя серверам уліковыя даныя бяспекі маглі быць падроблены і сервер можа быць не тым серверам, які вам патрэбны (магчыма, вы абменьваецеся данымі са зламыснікам).</translation>
 <translation id="6826370046007623921">Прадухіленне страты даных</translation>
 <translation id="6831043979455480757">Перакласці</translation>
 <translation id="6839929833149231406">Вобласць</translation>
+<translation id="6846340164947227603">Выкарыстаць нумар віртуальнай карткі...</translation>
 <translation id="6852204201400771460">Перазагрузіць праграму?</translation>
 <translation id="6865412394715372076">Гэту картку спраўдзіць пакуль што не ўдаецца</translation>
 <translation id="6868206169573555318">Перазапусціць, каб абнавіць</translation>
@@ -1231,6 +1248,7 @@
 <translation id="6989763994942163495">Паказаць пашыраныя налады...</translation>
 <translation id="6993898126790112050">6x9 (канверт)</translation>
 <translation id="6996312675313362352">Заўсёды перакладаць з мовы <ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">Выкарыстоўваць Windows Hello для хутчэйшага пацвярджэння картак</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Плацяжы могуць быць аднаразовыя або рэгулярныя, і іх можа быць цяжка заўважыць.</translation>
 <translation id="7029809446516969842">Паролі</translation>
@@ -1241,6 +1259,7 @@
 <translation id="7064851114919012435">Кантактная інфармацыя</translation>
 <translation id="7075452647191940183">Запыт занадта вялікі</translation>
 <translation id="7079718277001814089">Гэты сайт мае шкоднае змесціва</translation>
+<translation id="7081308185095828845">На жаль, гэта функцыя на прыладзе недаступная</translation>
 <translation id="7087282848513945231">Акруга</translation>
 <translation id="7090678807593890770">Шукаць <ph name="LINK" /> у Google</translation>
 <translation id="7108338896283013870">Схаваць</translation>
@@ -1294,9 +1313,11 @@
 <translation id="733923710415886693">Сертыфікат сервера не быў раскрыты ў адпаведнасці са стандартам "Празрыстасць сертыфікатаў".</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">Карыстальнік далучаны:</translation>
+<translation id="73479065977517481">У вашым браўзеры даменам "<ph name="ENROLLMENT_DOMAIN" />" была ўключана сістэма абароны карпаратыўных карыстальнікаў Chrome Enterprise. Гэта функцыя мае доступ да некаторых вашых даных.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Камандны радок</translation>
 <translation id="7372973238305370288">вынік пошуку</translation>
+<translation id="7374733840632556089">Гэта праблема ўзнікае з-за сертыфіката, усталяванага на вашай прыладзе вамі або іншым карыстальнікам. Ёсць інфармацыя, што гэты сертыфікат выкарыстоўваецца для маніторынгу і перахопу сетак, і таму ён не з'яўляецца давераным для Chrome. Бываюць выпадкі, калі такі маніторынг не з'яўляецца незаконным (напрыклад, калі прылада знаходзіцца ў сетцы кампаніі або навучальнай установы), але ў любым выпадку мы хацелі б папярэдзіць вас пра існаванне такога сертыфіката. Выпадкі маніторынгу могуць адбывацца ў любым браўзеры або ў любой праграме, якая мае доступ да інтэрнэту.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> – <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Элементы кіравання мультымедыйным змесцівам</translation>
 <translation id="7378627244592794276">А вось i не!</translation>
@@ -1326,6 +1347,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Даведацца больш<ph name="END_LINK" /> пра гэту праблему.</translation>
 <translation id="7455133967321480974">Выкарыстоўваць глабальныя стандартныя налады (заблакіраваць)</translation>
 <translation id="7460618730930299168">Паказана не тое, што выбіралі вы. Працягнуць?</translation>
+<translation id="7464821087936825778">Выхад з рэжыму пошуку</translation>
 <translation id="7473891865547856676">Не, дзякуй</translation>
 <translation id="7481312909269577407">Далей</translation>
 <translation id="7485870689360869515">Даныя не знойдзены.</translation>
@@ -1547,6 +1569,7 @@
 <translation id="8559762987265718583">Памылка прыватнага падключэння да дамена <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />: дата і час на вашай прыладзе (<ph name="DATE_AND_TIME" />) няправільныя.</translation>
 <translation id="8564985650692024650">Chromium рэкамендуе скінуць пароль <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" />, калі вы карысталіся ім на іншых сайтах.</translation>
 <translation id="8571890674111243710">Ідзе пераклад старонкі на наступную мову: <ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">Выкарыстоўваць Touch ID для хутчэйшага пацвярджэння картак</translation>
 <translation id="858637041960032120">Дадайце нумар тэлефона</translation>
 <translation id="860043288473659153">Імя ўладальніка карткі</translation>
 <translation id="8616822740383114808">Гэтай наладай кіруе налада "<ph name="ENFORCING_SETTING" />" на старонцы "<ph name="SETTINGS_PAGE" />"</translation>
diff --git a/components/strings/components_strings_bg.xtb b/components/strings/components_strings_bg.xtb
index cf12a7c..b4f9ec5 100644
--- a/components/strings/components_strings_bg.xtb
+++ b/components/strings/components_strings_bg.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Зареждане на страницата по-късно</translation>
 <translation id="1015730422737071372">Въвеждане на допълнителни подробности</translation>
 <translation id="1021110881106174305">Приемани карти</translation>
+<translation id="1021753677514347426">Причината за този проблем е сертификат, инсталиран на устройството ви от вас или от друг потребител. Сертификатът е известен с това, че се използва за наблюдение и прехващане на мрежи и Chromium му няма доверие. Въпреки че съществуват някои легитимни случаи за наблюдение, като например училищна или фирмена мрежа, Chromium иска да се увери, че знаете, че това се случва дори ако не можете да го спрете. Наблюдението може да става във всеки браузър или приложение, които осъществяват достъп до мрежата.</translation>
 <translation id="1032854598605920125">Завъртане по часовниковата стрелка</translation>
 <translation id="1036348656032585052">Изключване</translation>
 <translation id="1038842779957582377">неизвестно име</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Сигнал за срив, записан в/ъв <ph name="CRASH_TIME" /> (още не е качен или пренебрегнат)</translation>
 <translation id="1270502636509132238">Начин на вземане</translation>
 <translation id="1285320974508926690">Този сайт да не се превежда никога</translation>
+<translation id="1285400217480592994">Сканиране на съдържанието на файловете, които изтегляте или качвате в Chrome.</translation>
 <translation id="1292701964462482250">„Софтуер на компютъра ви пречи на Chrome да се свърже безопасно с мрежата“ (само на компютри под Windows)</translation>
 <translation id="1294154142200295408">Варианти във формат за командния ред</translation>
 <translation id="129553762522093515">Наскоро затворени</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Телефонен номер</translation>
 <translation id="2277103315734023688">Придвижване напред</translation>
 <translation id="2283340219607151381">Запазване и попълване на адреси</translation>
+<translation id="2288422996159078444">Всичко, което въвеждате, всички страници, които преглеждате, и всяка друга активност в мрежата са под наблюдение. Съдържанието на сайтовете може да бъде променяно без ваше знание.</translation>
 <translation id="2289385804009217824">Отрязване</translation>
 <translation id="2292556288342944218">Достъпът ви до интернет е блокиран</translation>
 <translation id="2297722699537546652">B5 (плик)</translation>
@@ -434,6 +437,7 @@
 <translation id="2989742184762224133">Двуточково телбодиране в горната част</translation>
 <translation id="2991174974383378012">Споделяне с уебсайтове</translation>
 <translation id="2991571918955627853">В момента не можете да посетите <ph name="SITE" />, тъй като уебсайтът използва HSTS. Обикновено грешките в мрежата и атаките срещу нея са временни, така че тази страница вероятно ще работи по-късно.</translation>
+<translation id="2996674880327704673">Предложения от Google</translation>
 <translation id="3005723025932146533">Показване на запазено копие</translation>
 <translation id="3008447029300691911">Въведете кода за проверка за <ph name="CREDIT_CARD" />. След като потвърдите картата си, данните за нея ще бъдат споделени с този сайт.</translation>
 <translation id="3010559122411665027">Списъчен запис „<ph name="ENTRY_INDEX" />“: <ph name="ERROR" /></translation>
@@ -446,6 +450,7 @@
 <translation id="3060227939791841287">C9 (плик)</translation>
 <translation id="3061707000357573562">Услуга за корекции</translation>
 <translation id="3064966200440839136">Ще напуснете режим „инкогнито“, за да платите във външно приложение. Искате ли да продължите?</translation>
+<translation id="3086579638707268289">Активността ви в мрежата се наблюдава</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Добавяне на адрес за вземане</translation>
 <translation id="3105172416063519923">ID на актива:</translation>
@@ -498,6 +503,7 @@
 <translation id="3369192424181595722">Грешка в часовника</translation>
 <translation id="337363190475750230">Обезпечаването е отменено</translation>
 <translation id="3377188786107721145">Грешка при синтактичния анализ на правилото</translation>
+<translation id="3377736046129930310">Използване на опцията за заключване на екрана за по-бързо потвърждаване на картите</translation>
 <translation id="3380365263193509176">Неизвестна грешка</translation>
 <translation id="3380864720620200369">Идент. № на клиентската програма:</translation>
 <translation id="3387261909427947069">Начини на плащане</translation>
@@ -663,6 +669,7 @@
 <translation id="4194250254487269611">Картата ви не може да бъде запазена в момента</translation>
 <translation id="4196861286325780578">&amp;Възстановяване на преместването</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Проверете конфигурацията на защитната стена и антивирусния софтуер<ph name="END_LINK" />.</translation>
+<translation id="4214357935346142455">потребителски профил за екрана за вход</translation>
 <translation id="4215751373031079683">7 x 9 (плик)</translation>
 <translation id="4220128509585149162">Сривове</translation>
 <translation id="422022731706691852">Извършители на атаки, използващи <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" />, може да опитат да ви подведат да инсталирате програми, които вредят на практическата ви работа при сърфиране (например като променят началната ви страница или показват допълнителни реклами в посещаваните от вас сайтове). <ph name="BEGIN_LEARN_MORE_LINK" />Научете повече<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -745,6 +752,7 @@
 <translation id="4515275063822566619">Картите и адресите са от Chrome и профила ви в Google (<ph name="ACCOUNT_EMAIL" />). Можете да ги управлявате от <ph name="BEGIN_LINK" />настройките<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Comm-10 (плик)</translation>
 <translation id="4522570452068850558">Подробности</translation>
+<translation id="4524138615196389145">Потвърждавайте картите си по-бързо, като от сега нататък използвате WebAuthn</translation>
 <translation id="4524805452350978254">Управление на картите</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -856,6 +864,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64 бита)</translation>
+<translation id="5121469660360593280">Споделяне с администратора ви на данни за събития, свързани със сигурността, за които е сигнализирано от Chrome Enterprise User Protect. Данните могат да включват URL адресите на посещаваните от вас страници, имената или метаданните на файлове и потребителското име, с което влизате в профила си на устройството си и в Chrome.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Потвърдете картата</translation>
 <translation id="5135404736266831032">Управление на адресите...</translation>
@@ -867,6 +876,7 @@
 <translation id="5159010409087891077">Отворете страницата в нов прозорец в режим „инкогнито“ (⇧⌘N).</translation>
 <translation id="516920405563544094">Въведете кода за проверка за <ph name="CREDIT_CARD" />. След като потвърдите картата си, данните за нея от профила ви в Google ще бъдат споделени с този сайт.</translation>
 <translation id="5169827969064885044">Възможно е да загубите достъп до профила си в организацията или самоличността ви да бъде открадната. Chrome препоръчва да промените паролата си сега.</translation>
+<translation id="5170017743895942767">Chrome Enterprise User Protect</translation>
 <translation id="5171045022955879922">Търсете или въведете URL адрес</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Машината</translation>
@@ -987,6 +997,7 @@
 <translation id="5730040223043577876">Chrome препоръчва да зададете повторно паролата си, ако сте я използвали и на други сайтове.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Запазване на картата в профила ви в Google}other{Запазване на картите в профила ви в Google}}</translation>
 <translation id="5763042198335101085">Въведете валиден имейл адрес</translation>
+<translation id="5763703224595565476">Администраторът ви е активирал Chrome Enterprise User Protect в браузъра ви. Функцията има достъп до някои от данните ви.</translation>
 <translation id="5765072501007116331">За да видите начините на бърза доставка и изискванията, изберете адрес</translation>
 <translation id="5778550464785688721">Пълен контрол над MIDI устройства</translation>
 <translation id="5781136890105823427">Експериментът е активиран</translation>
@@ -1066,6 +1077,7 @@
 <translation id="6094273045989040137">Добавяне на пояснения</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">В профила ви в Google може да има други видове история на сърфиране, съхранявани на адрес <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
+<translation id="6120179357481664955">Помните ли идентификационния си номер за UPI?</translation>
 <translation id="6132597952260690497">Информация за инсталираните разширения и приставки</translation>
 <translation id="6146055958333702838">Проверете всички кабели и рестартирайте маршрутизаторите, модемите или другите мрежови
 устройства, които може да използвате.</translation>
@@ -1081,6 +1093,7 @@
 <translation id="6221345481584921695">Google Безопасно сърфиране наскоро <ph name="BEGIN_LINK" />откри злонамерен софтуер<ph name="END_LINK" /> на <ph name="SITE" />. Уебсайтовете, които обикновено са надеждни, понякога се заразяват с опасен софтуер. Въпросното съдържание произлиза от <ph name="SUBRESOURCE_HOST" /> – известен разпространител на злонамерени програми.</translation>
 <translation id="6234122620015464377">Отрязване след всеки документ</translation>
 <translation id="6240447795304464094">Лого на Google Pay</translation>
+<translation id="6241121617266208201">Скриване на предложенията</translation>
 <translation id="6251924700383757765">Декларация за поверителност</translation>
 <translation id="6254436959401408446">Няма достатъчно памет за отваряне на тази страница</translation>
 <translation id="625755898061068298">Деактивирахте предупрежденията относно сигурността на този сайт.</translation>
@@ -1127,6 +1140,7 @@
 <translation id="6409754798200046165">Току-що въведохте паролата си в измамнически сайт. Chrome препоръчва да я промените сега.</translation>
 <translation id="6410264514553301377">Въвеждане на датата на валидност и кода за проверка за <ph name="CREDIT_CARD" /></translation>
 <translation id="6415778972515849510">Chromium може да ви помогне да защитите профила си в Google и да промените паролата си.</translation>
+<translation id="6423385022588644828">Потвърждавайте картите си по-бързо, като от сега нататък използвате Touch ID</translation>
 <translation id="6427730057873428458">Сгъване на двата края навътре</translation>
 <translation id="6433490469411711332">Редактиране на информацията за връзка</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> отказа да установи връзка.</translation>
@@ -1197,12 +1211,14 @@
 <translation id="6786747875388722282">Разширения</translation>
 <translation id="6790428901817661496">Пускане</translation>
 <translation id="679355240208270552">Бе пренебрегнато, защото основното търсене не е активирано чрез правило.</translation>
+<translation id="6794951432696553238">Потвърждавайте картите си по-бързо, като от сега нататък използвате Windows Hello</translation>
 <translation id="681021252041861472">Задължително поле</translation>
 <translation id="6810899417690483278">Идент. № на персонализирането</translation>
 <translation id="6825578344716086703">Опитахте да отворите <ph name="DOMAIN" />, но сървърът предостави сертификат, подписан със слаб алгоритъм (например SHA-1). Това означава, че идентификационните данни за сигурност от сървъра може да са фалшифицирани и той да не е този, който очаквате (възможно е да сте се свързали с извършител на атака).</translation>
 <translation id="6826370046007623921">Защита от загуба на данни</translation>
 <translation id="6831043979455480757">Превод</translation>
 <translation id="6839929833149231406">Район</translation>
+<translation id="6846340164947227603">Използване на номер на виртуална карта...</translation>
 <translation id="6852204201400771460">Искате ли да презаредите приложението?</translation>
 <translation id="6865412394715372076">Тази карта не може да бъде потвърдена в момента</translation>
 <translation id="6868206169573555318">Повторно стартиране за актуализиране</translation>
@@ -1231,6 +1247,7 @@
 <translation id="6989763994942163495">Показване на разширените настройки...</translation>
 <translation id="6993898126790112050">6 x 9 (плик)</translation>
 <translation id="6996312675313362352">Винаги да се превежда от <ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">Използвайте Windows Hello, за да потвърждавате картите по-бързо</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Тези таксувания може да са еднократни или повтарящи се и е възможно да не са явни.</translation>
 <translation id="7029809446516969842">Пароли</translation>
@@ -1241,6 +1258,7 @@
 <translation id="7064851114919012435">Информация за връзка</translation>
 <translation id="7075452647191940183">Заявката е прекалено голяма</translation>
 <translation id="7079718277001814089">Този сайт съдържа злонамерен софтуер</translation>
+<translation id="7081308185095828845">Тази функция не е налице на устройството ви</translation>
 <translation id="7087282848513945231">Област</translation>
 <translation id="7090678807593890770">Потърсете „<ph name="LINK" />“ с Google</translation>
 <translation id="7108338896283013870">Скриване</translation>
@@ -1294,9 +1312,11 @@
 <translation id="733923710415886693">Сертификатът на сървъра не е разкрит чрез Прозрачност на сертификатите.</translation>
 <translation id="734600844861828519">11 x 15</translation>
 <translation id="7346048084945669753">Потребителят е вътрешен:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> активира Chrome Enterprise User Protect в браузъра ви. Функцията има достъп до някои от данните ви.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Команден ред</translation>
 <translation id="7372973238305370288">резултат от търсенето</translation>
+<translation id="7374733840632556089">Причината за този проблем е сертификат, инсталиран на устройството ви от вас или от друг потребител. Сертификатът е известен с това, че се използва за наблюдение и прехващане на мрежи и Chrome му няма доверие. Въпреки че съществуват някои легитимни случаи за наблюдение, като например училищна или фирмена мрежа, Chrome иска да се увери, че знаете, че това се случва дори ако не можете да го спрете. Наблюдението може да става във всеки браузър или приложение, които осъществяват достъп до мрежата.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Контроли за мултимедия</translation>
 <translation id="7378627244592794276">Не</translation>
@@ -1325,6 +1345,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Научете повече<ph name="END_LINK" /> за този проблем.</translation>
 <translation id="7455133967321480974">Използване на глобалната стандартна стойност (блокиране)</translation>
 <translation id="7460618730930299168">Прожекцията е различна от избраната от вас. Искате ли да продължите?</translation>
+<translation id="7464821087936825778">Излиза се от режима на търсене</translation>
 <translation id="7473891865547856676">Не, благодаря</translation>
 <translation id="7481312909269577407">Препращане</translation>
 <translation id="7485870689360869515">Няма намерени данни.</translation>
@@ -1546,6 +1567,7 @@
 <translation id="8559762987265718583">Не може да се установи частна връзка с/ъс <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />, тъй като датата и часът на устройството ви (<ph name="DATE_AND_TIME" />) са неправилни.</translation>
 <translation id="8564985650692024650">Chromium препоръчва да зададете повторно паролата си за <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" />, ако сте я използвали и на други сайтове.</translation>
 <translation id="8571890674111243710">Превод на страницата на <ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">Използвайте Touch ID, за да потвърждавате картите по-бързо</translation>
 <translation id="858637041960032120">+ тел. номер</translation>
 <translation id="860043288473659153">Име на титуляря на картата</translation>
 <translation id="8616822740383114808">Тази настройка е наложена чрез „<ph name="ENFORCING_SETTING" />“ в „<ph name="SETTINGS_PAGE" />“</translation>
diff --git a/components/strings/components_strings_bn.xtb b/components/strings/components_strings_bn.xtb
index dc7b9e0..91234906 100644
--- a/components/strings/components_strings_bn.xtb
+++ b/components/strings/components_strings_bn.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">পৃষ্ঠা পরে দেখার জন্য লোড করে রাখুন</translation>
 <translation id="1015730422737071372">অতিরিক্ত বিবরণ দিন</translation>
 <translation id="1021110881106174305">এই কার্ডগুলি গ্রহণ করা হয়</translation>
+<translation id="1021753677514347426">আপনার ডিভাইসে আপনি বা অন্য কেউ একটি সার্টিফিকেট ইনস্টল করায় এই সমস্যা দেখা দিচ্ছে। এই সার্টিফিকেট ব্যবহার করে নেটওয়ার্ক ইন্টারসেপ্ট এবং মনিটর করা হয়, তবে Chromium এটিকে বিশ্বস্ত বলে মনে করে না। কোনও স্কুলের বা কোম্পানি নেটওয়ার্কের মতো কিছু নেটওয়ার্ক মনিটর করার প্রয়োজন হলেও, Chromium দেখে নেয় যে, আপনি যদি এটি বন্ধ করতে নাও পারেন, কী ঘটছে সেই সম্পর্কে যেন জানতে পারেন। ওয়েবে অ্যাক্সেস আছে, এমন যেকোনও ব্রাউজার বা অ্যাপের উপর নজর রাখা হতে পারে।</translation>
 <translation id="1032854598605920125">ঘড়ির কাঁটার দিকে ঘোরান</translation>
 <translation id="1036348656032585052">বন্ধ করুন</translation>
 <translation id="1038842779957582377">অজানা নাম</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">ক্র্যাশ রিপোর্ট <ph name="CRASH_TIME" />-এ ক্যাপচার করা হয়েছে (এখনো আপলোড করা বা এড়ানো হয়নি)</translation>
 <translation id="1270502636509132238">পিক-আপের পদ্ধতি</translation>
 <translation id="1285320974508926690">কখনই এই সাইটটিকে অনুবাদ করবেন না</translation>
+<translation id="1285400217480592994">Chrome থেকে ডাউনলোড বা আপলোড করা ফাইলের কন্টেন্ট স্ক্যান করুন।</translation>
 <translation id="1292701964462482250">"আপনার কম্পিউটারের সফ্টওয়্যার Chrome-কে নিরাপদে ইন্টারনেটে কানেক্ট করতে বাধা দিচ্ছে" (শুধুমাত্র Windows কম্পিউটারের জন্য)</translation>
 <translation id="1294154142200295408">কম্যান্ড-লাইন ভেরিয়েশন</translation>
 <translation id="129553762522093515">সম্প্রতি বন্ধ হয়েছে</translation>
@@ -285,6 +287,7 @@
 <translation id="2270484714375784793">ফোন নম্বর</translation>
 <translation id="2277103315734023688">এগিয়ে যান</translation>
 <translation id="2283340219607151381">অ্যাড্রেস পূরণ করে সেভ করুন</translation>
+<translation id="2288422996159078444">আপনি যা লিখছেন, যে পৃষ্ঠাগুলি দেখছেন বা ওয়েবে আপনার অন্যান্য অ্যাক্টিভিটি, সব কিছুতেই নজর রাখা হচ্ছে। আপনাকে না জানিয়ে সাইটের কন্টেন্টে পরিবর্তন করা হতে পারে।</translation>
 <translation id="2289385804009217824">ট্রিম করুন</translation>
 <translation id="2292556288342944218">আপনার ইন্টারনেট অ্যাক্সেস অবরুদ্ধ করা হয়েছে</translation>
 <translation id="2297722699537546652">B5 (Envelope)</translation>
@@ -437,6 +440,7 @@
 <translation id="2989742184762224133">উপরে ডুয়াল স্টেপল</translation>
 <translation id="2991174974383378012">ওয়েবসাইটের সাথে ভাগ করছে</translation>
 <translation id="2991571918955627853">ওয়েবসাইটটি HSTS ব্যবহার করার কারণে আপনি এখন <ph name="SITE" />-এ যেতে পারবেন না। নেটওয়ার্ক ত্রুটি এবং আক্রমণ সাধারণত সাময়িকভাবে হয়, তাই এই পৃষ্ঠাটি সম্ভবত পরে কাজ করবে।</translation>
+<translation id="2996674880327704673">Google-এর সাজেশন</translation>
 <translation id="3005723025932146533">সেভ করা কপি দেখুন</translation>
 <translation id="3008447029300691911"><ph name="CREDIT_CARD" />-এর CVC লিখুন। আপনি নিশ্চিত করলে, আপনার কার্ডের বিবরণ এই সাইটের সাথে শেয়ার করা হবে।</translation>
 <translation id="3010559122411665027">তালিকার এন্ট্রি " <ph name="ENTRY_INDEX" /> ": <ph name="ERROR" /></translation>
@@ -449,6 +453,7 @@
 <translation id="3060227939791841287">C9 (Envelope)</translation>
 <translation id="3061707000357573562">প্যাচ পরিষেবা</translation>
 <translation id="3064966200440839136">বহিরাগত অ্যাপের মাধ্যমে পেমেন্ট করার জন্য ছদ্মবেশী মোড থেকে বেরিয়ে যাচ্ছে। চালিয়ে যাবেন?</translation>
+<translation id="3086579638707268289">ওয়েবে আপনার অ্যাক্টিভিটি নজরে রাখা হচ্ছে</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">পিক-আপের ঠিকানা যোগ করুন</translation>
 <translation id="3105172416063519923">সম্পদ আইডি:</translation>
@@ -501,6 +506,7 @@
 <translation id="3369192424181595722">ঘড়ির ত্রুটি</translation>
 <translation id="337363190475750230">প্রদান করবে না</translation>
 <translation id="3377188786107721145">নীতি বিশ্লেষণ ত্রুটি</translation>
+<translation id="3377736046129930310">কার্ড আরও দ্রুত কনফার্ম করতে স্ক্রিন লক ব্যবহার করুন</translation>
 <translation id="3380365263193509176">অজানা ত্রুটি</translation>
 <translation id="3380864720620200369">ক্লায়েন্ট ID:</translation>
 <translation id="3387261909427947069">পেমেন্ট পদ্ধতি</translation>
@@ -666,6 +672,7 @@
 <translation id="4194250254487269611">এই মুহূর্তে আপনার কার্ডটি সেভ করা যাবে না</translation>
 <translation id="4196861286325780578">&amp;সরানোর কাজটি আবার করুন</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />ফায়ারওয়াল এবং অ্যান্টিভাইরাস কনফিগারেশন পরীক্ষা করে দেখুন<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">সাইন-ইন স্ক্রিনের প্রোফাইল</translation>
 <translation id="4215751373031079683">7x9 (Envelope)</translation>
 <translation id="4220128509585149162">ক্র্যাশেস</translation>
 <translation id="422022731706691852"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> এর আক্রমণকারীরা আপনাকে এমন সফ্টওয়্যার ইনস্টল করার জন্য প্রতারিত করার চেষ্টা করতে পারে যার ফলে আপনার ব্রাউজিংয়ের অভিজ্ঞতা খারাপ হতে পারে (যেমন আপনার হোমপেজ পরিবর্তন করা বা আপনি যে সাইটগুলিতে যান সেগুলিতে অতিরিক্ত বিজ্ঞাপন দেখানো)। <ph name="BEGIN_LEARN_MORE_LINK" />আরও জানুন<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -748,6 +755,7 @@
 <translation id="4515275063822566619">কার্ড ও ঠিকানাগুলি Chrome এবং আপনার Google অ্যাকাউন্ট (<ph name="ACCOUNT_EMAIL" />) থেকে এসেছে। আপনি <ph name="BEGIN_LINK" />সেটিংস<ph name="END_LINK" />এ গিয়ে সেগুলি পরিচালনা করতে পারবেন।</translation>
 <translation id="4517607026994743406">Comm-10 (Envelope)</translation>
 <translation id="4522570452068850558">বিশদ বিবরণ</translation>
+<translation id="4524138615196389145">এখন থেকে WebAuthn ব্যবহার করে আপনার কার্ড আরও দ্রুত কনফার্ম করুন</translation>
 <translation id="4524805452350978254">কার্ড ম্যানেজ করুন</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">ফ্ল্যাশ</translation>
@@ -859,6 +867,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(৬৪-বিট)</translation>
+<translation id="5121469660360593280">আপনার অ্যাডমিনিস্ট্রেটর সহ Chrome এন্টারপ্রাইজ ইউজার সুরক্ষা, নিরাপত্তা সংক্রান্ত ঘটনা সম্পর্কিত যে ডেটা ফ্ল্যাগ করেছে সেটি শেয়ার করুন। এতে ডিভাইসে এবং Chrome-এ সাইন-ইন করার সময় আপনার দেখা পৃষ্ঠাগুলির ইউআরএল, ফাইলের নাম অথবা মেটাডেটা এবং আপনি যে ব্যবহারকারীর নাম ব্যবহার করেন সেগুলিও অন্তর্ভুক্ত থাকতে পারে।</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">আপনার কার্ডটি যাচাই করুন</translation>
 <translation id="5135404736266831032">ঠিকানাগুলি পরিচালনা করুন...</translation>
@@ -870,6 +879,7 @@
 <translation id="5159010409087891077">নতুন ছদ্মবেশী উইন্ডোতে (⇧⌘N) করে একটি পৃষ্ঠা খুলুন</translation>
 <translation id="516920405563544094"><ph name="CREDIT_CARD" />-এর জন্য সিভিসি লিখুন। আপনি কনফার্ম করার পর আপনার Google অ্যাকাউন্ট থেকে কার্ডের বিবরণ এই সাইটে শেয়ার করা হবে।</translation>
 <translation id="5169827969064885044">আপনি নিজের প্রতিষ্ঠানের অ্যাকাউন্টের অ্যাক্সেস হারাতে পারেন অথবা আপনার পরিচয় চুরি হয়ে যেতে পারে। Chrome এখনই আপনার পাসওয়ার্ড পরিবর্তন করার আর্জি জানাচ্ছে।</translation>
+<translation id="5170017743895942767">Chrome এন্টারপ্রাইজ ইউজার সুরক্ষা</translation>
 <translation id="5171045022955879922">খুঁজুন বা URL লিখুন</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">যন্ত্র</translation>
@@ -990,6 +1000,7 @@
 <translation id="5730040223043577876">Chrome-এর নীতি অনুযায়ী আপনার পাসওয়ার্ড বদলে ফেলা উচিত যদি আপনি সেটি অন্য কোনও সাইটে ব্যবহার করে থাকেন।</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Google অ্যাকাউন্টে কার্ড সেভ করুন}one{Google অ্যাকাউন্টে কার্ড সেভ করুন}other{Google অ্যাকাউন্টে কার্ড সেভ করুন}}</translation>
 <translation id="5763042198335101085">একটি সঠিক ইমেল আইডি লিখুন</translation>
+<translation id="5763703224595565476">আপনার অ্যাডমিনিস্ট্রেটর ব্রাউজারে Chrome এন্টারপ্রাইজ ইউজার সুরক্ষা চালু করেছেন। আপনার কিছু ডেটা Chrome এন্টারপ্রাইজ ইউজার সুরক্ষা অ্যাক্সেস করতে পারবে।</translation>
 <translation id="5765072501007116331">ডেলিভারির পদ্ধতি এবং প্রয়োজনীয়তাগুলি দেখতে একটি ঠিকানা বেছে নিন</translation>
 <translation id="5778550464785688721">MIDI ডিভাইসসমূহ পূর্ণ নিয়ন্ত্রণ</translation>
 <translation id="5781136890105823427">এক্সপেরিমেন্ট চালু করা হয়েছে</translation>
@@ -1069,6 +1080,7 @@
 <translation id="6094273045989040137">ব্যাখ্যা করুন</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129"><ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />-এ আপনার Google অ্যাকাউন্টের অন্যান্য ধরনের ব্রাউজিংয়ের ইতিহাস থাকতে পারে</translation>
+<translation id="6120179357481664955">আপনার UPI আইডি মনে আছে?</translation>
 <translation id="6132597952260690497">ইনস্টল করা এক্সটেনশন এবং প্লাগ-ইন সম্বন্ধীয় তথ্য</translation>
 <translation id="6146055958333702838">সব কেবল পরীক্ষা করুন এবং আপনি ব্যবহার করছেন এমন যেকোনো রাউটার, মডেম বা অন্যান্য নেটওয়ার্ক ডিভাইসগুলি আবার চালু করুন।</translation>
 <translation id="614940544461990577">এটি করে দেখুন:</translation>
@@ -1083,6 +1095,7 @@
 <translation id="6221345481584921695">Google নিরাপদ ব্রাউজিং সাম্প্রতিক <ph name="SITE" />-এ <ph name="BEGIN_LINK" />ম্যালওয়্যার শনাক্ত করেছে<ph name="END_LINK" />। যেসব ওয়েবসাইট সাধারণত নিরাপদ থাকে সেগুলি কখনও কখনও ম্যালওয়্যার দ্বারা আক্রান্ত হয়। <ph name="SUBRESOURCE_HOST" />, একটি পরিচিত ম্যালওয়্যার ডিস্ট্রিবিউটরের, থেকে ক্ষতিকারক কন্টেন্ট আসে। কয়েক ঘণ্টা পরে আপনার ফিরে আসা উচিত।</translation>
 <translation id="6234122620015464377">প্রতিটি ডকুমেন্টের শেষে ট্রিম করুন</translation>
 <translation id="6240447795304464094">Google Pay লোগো</translation>
+<translation id="6241121617266208201">সাজেশন মেনু লুকান</translation>
 <translation id="6251924700383757765">গোপনীয়তা নীতি</translation>
 <translation id="6254436959401408446">এই পৃষ্ঠাটি খোলার জন্য পর্যাপ্ত মেমরি নেই</translation>
 <translation id="625755898061068298">আপনি এই সাইটের জন্য নিরাপত্তা সতর্কবার্তা বন্ধ করতে চেয়েছেন।</translation>
@@ -1129,6 +1142,7 @@
 <translation id="6409754798200046165">আপনি এখনই প্রতারণামূলক একটি সাইটে আপনার পাসওয়ার্ড লিখেছেন। Chrome-এর সাজেশন অনুযায়ী এখনই আপনার পাসওয়ার্ড পরিবর্তন করা উচিত।</translation>
 <translation id="6410264514553301377">Enter the expiration date and CVC for <ph name="CREDIT_CARD" /></translation>
 <translation id="6415778972515849510">আপনার পাসওয়ার্ড পরিবর্তন করে Google অ্যাকাউন্ট সুরক্ষিত রাখতে Chromium সাহায্য করতে পারবে।</translation>
+<translation id="6423385022588644828">এখন থেকে টাচ আইডি ব্যবহার করে আপনার কার্ড আরও দ্রুত কনফার্ম করুন</translation>
 <translation id="6427730057873428458">গেট ফোল্ড</translation>
 <translation id="6433490469411711332">পরিচিতি তথ্য সম্পাদনা করুন</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> সংযোগ করতে প্রত্যাখ্যান করেছে।</translation>
@@ -1199,12 +1213,14 @@
 <translation id="6786747875388722282">এক্সটেনশানসমূহ</translation>
 <translation id="6790428901817661496">চালু করুন</translation>
 <translation id="679355240208270552">নীতি অনুযায়ী ডিফল্ট সার্চ সক্ষম করা হয়নি তাই উপেক্ষা করা হয়েছে৷</translation>
+<translation id="6794951432696553238">এখন থেকে কার্ডগুলি আরও দ্রুত কনফার্ম করতে Windows Hello ব্যবহার করুন</translation>
 <translation id="681021252041861472">এই ফিল্ডটি ফাঁকা রাখা যাবে না</translation>
 <translation id="6810899417690483278">কাস্টমাইজেশন আইডি</translation>
 <translation id="6825578344716086703">আপনি <ph name="DOMAIN" />-এ পৌঁছানোর প্রচেষ্টা করেছেন, কিন্তু সার্ভারটি একটি দুর্বল অ্যালগারিদম স্বাক্ষর  (যেমন SHA-1) ব্যবহার করে একটি স্বাক্ষরিত সার্টিফিকেট উপস্থাপন করেছে। এর অর্থ হল সার্ভার যে সুরক্ষা প্রমাণপত্রাদি উপস্থাপন করেছে তা জাল হতে পারে এবং সার্ভারটি আপনার প্রত্যাশিত সার্ভার নাও হতে পারে (হতে পারে আপনি একজন আক্রমণকারীর সাথে যোগাযোগ করছেন)।</translation>
 <translation id="6826370046007623921">ডেটা হারানো প্রতিরোধ</translation>
 <translation id="6831043979455480757">অনুবাদ</translation>
 <translation id="6839929833149231406">এলাকা</translation>
+<translation id="6846340164947227603">কোনও একটি ভার্চুয়াল কার্ড নম্বর ব্যবহার করুন...</translation>
 <translation id="6852204201400771460">আবার অ্যাপ লোড করতে চান?</translation>
 <translation id="6865412394715372076">এই কার্ডটি এখনই যাচাই করা যাবে না</translation>
 <translation id="6868206169573555318">আপডেট করার জন্য আবার লঞ্চ করুন</translation>
@@ -1233,6 +1249,7 @@
 <translation id="6989763994942163495">উন্নত সেটিংস দেখান ...</translation>
 <translation id="6993898126790112050">6x9 (Envelope)</translation>
 <translation id="6996312675313362352"><ph name="ORIGINAL_LANGUAGE" /> ভাষায় থাকলে সবসময় অনুবাদ করা হবে</translation>
+<translation id="7004583254764674281">কার্ড আরও দ্রুত কনফার্ম করতে Windows Hello ব্যবহার করুন</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">এই চার্জটি একবার করা হতে পারে অথবা বারবার করা হতে পারে এবং স্পষ্টভাবে তথ্য নাও থাকতে পারে।</translation>
 <translation id="7029809446516969842">পাসওয়ার্ড</translation>
@@ -1243,6 +1260,7 @@
 <translation id="7064851114919012435">পরিচিতি তথ্য</translation>
 <translation id="7075452647191940183">অনুরোধ অত্যন্ত বড়</translation>
 <translation id="7079718277001814089">এই সাইটটিতে ম্যালওয়্যার আছে</translation>
+<translation id="7081308185095828845">এই ফিচারটি আপনার ডিভাইসে পাওয়া যাবে না</translation>
 <translation id="7087282848513945231">দেশ</translation>
 <translation id="7090678807593890770">Google এ <ph name="LINK" /> এর খুঁজুন</translation>
 <translation id="7108338896283013870">লুকান</translation>
@@ -1296,9 +1314,11 @@
 <translation id="733923710415886693">সার্ভারের সার্টিফিকেটটি সার্টিফিকেটের স্বচ্ছতার মাধ্যমে প্রকাশ করা হয়নি।</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">অ্যাফিলিয়েট কিনা:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> আপনার ব্রাউজারে Chrome এন্টারপ্রাইজ ইউজার সুরক্ষা চালু করেছে। আপনার কিছু ডেটা Chrome এন্টারপ্রাইজ ইউজার সুরক্ষা অ্যাক্সেস করতে পারবে।</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">কম্যান্ড লাইন</translation>
 <translation id="7372973238305370288">ফলাফল খুঁজুন</translation>
+<translation id="7374733840632556089">আপনার ডিভাইসে আপনি বা অন্য কেউ একটি সার্টিফিকেট ইনস্টল করায় এই সমস্যা দেখা দিচ্ছে। এই সার্টিফিকেট ব্যবহার করে নেটওয়ার্ক ইন্টারসেপ্ট এবং মনিটর করা হয়, তবে Chrome এটিকে বিশ্বস্ত বলে মনে করে না। কোনও স্কুলের বা কোম্পানি নেটওয়ার্কের মতো কিছু নেটওয়ার্ক মনিটর করার প্রয়োজন হলেও, Chrome দেখে নেয় যে, আপনি যদি এটি বন্ধ করতে নাও পারেন, কী ঘটছে সেই সম্পর্কে যেন জানতে পারেন। ওয়েবে অ্যাক্সেস আছে, এমন যেকোনও ব্রাউজার বা অ্যাপের উপর নজর রাখা হতে পারে।</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">মিডিয়ার নিয়ন্ত্রণ</translation>
 <translation id="7378627244592794276">না</translation>
@@ -1327,6 +1347,7 @@
 <translation id="7451311239929941790">এই সমস্যা সম্পর্কে <ph name="BEGIN_LINK" />আরও জানুন<ph name="END_LINK" />।</translation>
 <translation id="7455133967321480974">বিশ্বব্যাপী ডিফল্ট ব্যবহার করুন (অবরোধ করুন)</translation>
 <translation id="7460618730930299168">আপনি যা বেছে নিয়েছেন তার থেকে স্ক্রিনিংটি আলাদা। এগিয়ে যাবেন?</translation>
+<translation id="7464821087936825778">সার্চ মোড থেকে বেরিয়ে যান</translation>
 <translation id="7473891865547856676">না থাক</translation>
 <translation id="7481312909269577407">ফরওয়ার্ড</translation>
 <translation id="7485870689360869515">কোনো ডেটা পাওয়া যায়নি৷</translation>
@@ -1548,6 +1569,7 @@
 <translation id="8559762987265718583"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> এ একটি ব্যক্তিগত সংযোগ স্থাপন করা যায়নি কারণ আপনার ডিভাইসের তারিখ এবং সময় (<ph name="DATE_AND_TIME" />) সঠিক নয়৷</translation>
 <translation id="8564985650692024650">Chromium-এর নীতি অনুযায়ী আপনার <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> পাসওয়ার্ড বদলে ফেলা উচিত যদি আপনি সেটি অন্য কোনও সাইটে ব্যবহার করে থাকেন।</translation>
 <translation id="8571890674111243710">পৃষ্ঠাটি<ph name="LANGUAGE" />তে অনুবাদ করুন...</translation>
+<translation id="8574899947864779331">কার্ড আরও দ্রুত কনফার্ম করতে টাচ আইডি ব্যবহার করুন</translation>
 <translation id="858637041960032120">ফোননম্বর জুড়ুন</translation>
 <translation id="860043288473659153">কার্ডধারকের নাম</translation>
 <translation id="8616822740383114808">"<ph name="SETTINGS_PAGE" />"-এ এই সেটিং "<ph name="ENFORCING_SETTING" />" প্রয়োগ করেছে</translation>
diff --git a/components/strings/components_strings_bs.xtb b/components/strings/components_strings_bs.xtb
index d9352aed..e5a97c7 100644
--- a/components/strings/components_strings_bs.xtb
+++ b/components/strings/components_strings_bs.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Učitaj stranicu kasnije</translation>
 <translation id="1015730422737071372">Navedite dodatne detalje</translation>
 <translation id="1021110881106174305">Prihvaćene kartice</translation>
+<translation id="1021753677514347426">Ovaj problem nastaje zbog potvrde koju ste vi ili neko drugi instalirali na uređaj. Poznato je da se ta potvrda koristi za nadzor i presretanje mreža te je Chromium ne smatra pouzdanom. Iako postoje opravdani slučajevi za nadzor, naprimjer, na mrežama u školama ili preduzećima, Chromium želi potvrditi da ste toga svjesni čak i ako taj proces ne možete zaustaviti. Nadzor se može vršiti u bilo kojem pregledniku ili bilo kojoj aplikaciji koja pristupa webu.</translation>
 <translation id="1032854598605920125">Okreni u smjeru kretanja kazaljki na satu</translation>
 <translation id="1036348656032585052">Isključi</translation>
 <translation id="1038842779957582377">nepoznato ime</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Izvještaj o padovima aplikacije snimljen <ph name="CRASH_TIME" /> (još nije otpremljen niti ignoriran)</translation>
 <translation id="1270502636509132238">Način preuzimanja</translation>
 <translation id="1285320974508926690">Nikada ne prevodi ovu web lokaciju</translation>
+<translation id="1285400217480592994">Skeniranje sadržaja fajlova koje preuzimate ili otpremate u Chromeu.</translation>
 <translation id="1292701964462482250">"Softver na računaru sprečava Chrome da se sigurno poveže na web lokaciju" (samo na Windows računarima)</translation>
 <translation id="1294154142200295408">Varijacije komandne linije</translation>
 <translation id="129553762522093515">Nedavno zatvoreno</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Broj telefona</translation>
 <translation id="2277103315734023688">Pomicanje naprijed</translation>
 <translation id="2283340219607151381">Sačuvaj i popuni adrese</translation>
+<translation id="2288422996159078444">Sve što napišete, svaka stranica koju pregledate ili bilo koja druga aktivnost na webu se nadzire. Sadržaj na web lokacijama se može promijeniti bez vašeg znanja.</translation>
 <translation id="2289385804009217824">Skrati</translation>
 <translation id="2292556288342944218">Vaš pristup internetu je blokiran</translation>
 <translation id="2297722699537546652">B5 (koverta)</translation>
@@ -436,6 +439,7 @@
 <translation id="2989742184762224133">Dvostruko spajanje na gornjoj strani</translation>
 <translation id="2991174974383378012">Dijeljenje s web-lokacijama</translation>
 <translation id="2991571918955627853">Trenutno ne možete posjetiti web lokaciju <ph name="SITE" /> jer web lokacija koristi HSTS. Greške i napadi na mreži su obično privremenog karaktera tako da će ova stranica vjerovatno funkcionirati kasnije.</translation>
+<translation id="2996674880327704673">Prijedlozi Googlea</translation>
 <translation id="3005723025932146533">Prikaži spremljenu kopiju</translation>
 <translation id="3008447029300691911">Unesite CVC kartice <ph name="CREDIT_CARD" />. Nakon potvrde podaci vaše kartice će se dijeliti s ovom web lokacijom.</translation>
 <translation id="3010559122411665027">Unos na listi "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -448,6 +452,7 @@
 <translation id="3060227939791841287">C9 (omotnica)</translation>
 <translation id="3061707000357573562">Usluga za zakrpe</translation>
 <translation id="3064966200440839136">Napuštate anonimni način rada radi plaćanja putem vanjske aplikacije. Nastaviti?</translation>
+<translation id="3086579638707268289">Neko nadzire vašu aktivnost na webu</translation>
 <translation id="3095940652251934233">Izjava</translation>
 <translation id="3096100844101284527">Dodaj adresu za preuzimanje</translation>
 <translation id="3105172416063519923">ID materijala:</translation>
@@ -500,6 +505,7 @@
 <translation id="3369192424181595722">Greška sa satom</translation>
 <translation id="337363190475750230">Poništeno dodjeljivanje</translation>
 <translation id="3377188786107721145">Greška prilikom raščlanjivanja pravila</translation>
+<translation id="3377736046129930310">Koristite zaključavanje ekrana da brže potvrdite kartice</translation>
 <translation id="3380365263193509176">Nepoznata greška</translation>
 <translation id="3380864720620200369">ID klijenta:</translation>
 <translation id="3387261909427947069">Načini plaćanja</translation>
@@ -665,6 +671,7 @@
 <translation id="4194250254487269611">Trenutno nije moguće sačuvati vašu karticu</translation>
 <translation id="4196861286325780578">&amp;Ponovi premještanje</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Provjeriti konfiguracije zaštitnog zida i antivirusa<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">profil ekrana za prijavu</translation>
 <translation id="4215751373031079683">7 x 9 (koverta)</translation>
 <translation id="4220128509585149162">Padovi</translation>
 <translation id="422022731706691852">Napadači na web-lokaciji <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> mogu vas pokušati navesti na instaliranje programa koji smanjuju kvalitetu pregledavanja interneta (na primjer, promjenom početne stranice ili prikazivanjem dodatnih oglasa na web-lokacijama koje posjetite). <ph name="BEGIN_LEARN_MORE_LINK" />Saznajte više<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -747,6 +754,7 @@
 <translation id="4515275063822566619">Kartice i adrese dolaze iz Cromea i vašeg Google računa (<ph name="ACCOUNT_EMAIL" />). Njima možete upravljati u <ph name="BEGIN_LINK" />Postavkama<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Comm-10 (Koverta)</translation>
 <translation id="4522570452068850558">Detalji</translation>
+<translation id="4524138615196389145">Od sada brže potvrdite kartice korištenjem funkcije WebAuthn</translation>
 <translation id="4524805452350978254">Upravljajte karticama</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -858,6 +866,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64-bitno)</translation>
+<translation id="5121469660360593280">Dijeljenje podataka o sigurnosnim događajima koje je prijavila Chrome zaštita korisnika za preduzeća s administratorom. To može obuhvatati URL-ove stranica koje posjetite, nazive fajlova ili metapodatke te korisničko ime koje koristite za prijavu na uređaj i Chrome.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Potvrdite karticu</translation>
 <translation id="5135404736266831032">Upravljaj adresama...</translation>
@@ -869,6 +878,7 @@
 <translation id="5159010409087891077">Otvori stranicu u novom anonimnom prozoru (⇧⌘N)</translation>
 <translation id="516920405563544094">Unesite CVC za karticu <ph name="CREDIT_CARD" />. Nakon što potvrdite, detalji s vašeg Google računa će se podijeliti s ovom web lokacijom.</translation>
 <translation id="5169827969064885044">Mogli biste izgubiti pristup računu svoje organizacije ili bi netko mogao ukrasti vaš identitet. Chrome preporučuje da odmah promijenite zaporku.</translation>
+<translation id="5170017743895942767">Chrome zaštita korisnika za preduzeća</translation>
 <translation id="5171045022955879922">Pretražite ili upišite URL</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Mašina</translation>
@@ -989,6 +999,7 @@
 <translation id="5730040223043577876">Chrome preporučuje da ponovo postavite lozinku ako ste je koristili više puta na drugim web lokacijama.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Sačuvajte karticu na Google računu}one{Sačuvajte kartice na Google računu}few{Sačuvajte kartice na Google računu}other{Sačuvajte kartice na Google računu}}</translation>
 <translation id="5763042198335101085">Upišite važeću adresu e-pošte</translation>
+<translation id="5763703224595565476">Administrator je na vašem pregledniku omogućio Chrome zaštitu korisnika za preduzeća. Chrome zaštita korisnika za preduzeća ima pristup nekim vašim podacima.</translation>
 <translation id="5765072501007116331">Za prikaz načina i uslova isporuke, izaberite adresu</translation>
 <translation id="5778550464785688721">Potpuni nadzor nad MIDI uređajima</translation>
 <translation id="5781136890105823427">Eksperiment je omogućen</translation>
@@ -1068,6 +1079,7 @@
 <translation id="6094273045989040137">Dodajte bilješku</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">Google račun može imati druge oblike historije pregledanja na <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
+<translation id="6120179357481664955">Zapamtiti vaš UPI ID?</translation>
 <translation id="6132597952260690497">Informacije o instaliranim ekstenzijama i dodacima</translation>
 <translation id="6146055958333702838">Provjerite sve kablove i ponovo pokrenite sve rutere, modeme ili druge mrežne
     uređaje koje koristite.</translation>
@@ -1083,6 +1095,7 @@
 <translation id="6221345481584921695">Sigurno pretraživanje na Googleu je nedavno <ph name="BEGIN_LINK" />otkrilo zlonamjerni softver<ph name="END_LINK" /> na <ph name="SITE" />. Web lokacije koje su inače sigurne ponekad budu zaražene zlonamjernim softverom. Zlonamjerni sadržaj dolazi sa hosta <ph name="SUBRESOURCE_HOST" />, koji je poznati distributer ovakvog softvera.</translation>
 <translation id="6234122620015464377">Skraćivanje nakon svakog dokumenta</translation>
 <translation id="6240447795304464094">Logotip Google Pay</translation>
+<translation id="6241121617266208201">Sakrij prijedloge</translation>
 <translation id="6251924700383757765">Pravila privatnosti</translation>
 <translation id="6254436959401408446">Nema dovoljno memorije za otvaranje ove stranice</translation>
 <translation id="625755898061068298">Odlučili ste da onemogućite sigurnosna upozorenja za ovu web lokaciju.</translation>
@@ -1129,6 +1142,7 @@
 <translation id="6409754798200046165">Upravo ste unijeli lozinku na obmanjujućoj web lokaciji. Chrome preporučuje da odmah promijenite lozinku.</translation>
 <translation id="6410264514553301377">Unesite datum isteka i CVC za karticu <ph name="CREDIT_CARD" /></translation>
 <translation id="6415778972515849510">Chromium vam može pomoći da zaštitite svoj Google račun i promijenite lozinku.</translation>
+<translation id="6423385022588644828">Od sada brže potvrdite kartice korištenjem funkcije Touch ID</translation>
 <translation id="6427730057873428458">Presavijanje</translation>
 <translation id="6433490469411711332">Uređivanje podataka za kontakt</translation>
 <translation id="6433595998831338502">Host računar <ph name="HOST_NAME" /> je odbio povezivanje.</translation>
@@ -1199,12 +1213,14 @@
 <translation id="6786747875388722282">Ekstenzije</translation>
 <translation id="6790428901817661496">Pokreni</translation>
 <translation id="679355240208270552">Ignorirano je zato što zadano pretraživanje nije omogućeno pravilom.</translation>
+<translation id="6794951432696553238">Od sada brže potvrdite kartice korištenjem funkcije Windows Hello</translation>
 <translation id="681021252041861472">Obavezno polje</translation>
 <translation id="6810899417690483278">ID za prilagođavanje</translation>
 <translation id="6825578344716086703">Pokušali ste prići domeni <ph name="DOMAIN" />, ali je server prikazao potvrdu koja je potpisana koristeći slabi algoritam za potpisivanje (kao što je SHA-1). To znači da postoji mogućnost da su sigurnosni akreditivi koje je server prikazao krivotvoreni i da taj server možda nije server koji ste očekivali (možda komunicirate s napadačem).</translation>
 <translation id="6826370046007623921">Sprečavanje gubitka podataka</translation>
 <translation id="6831043979455480757">Prevedi</translation>
 <translation id="6839929833149231406">Područje</translation>
+<translation id="6846340164947227603">Koristi broj virtuelne kartice...</translation>
 <translation id="6852204201400771460">Ponovo učitati aplikaciju?</translation>
 <translation id="6865412394715372076">Ovu karticu sada ne možemo potvrditi</translation>
 <translation id="6868206169573555318">Ponovo pokreni za ažuriranje</translation>
@@ -1233,6 +1249,7 @@
 <translation id="6989763994942163495">Prikaži napredne postavke...</translation>
 <translation id="6993898126790112050">6x9 (omotnica)</translation>
 <translation id="6996312675313362352">Uvijek prevodi <ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">Koristite Windows Hello da brže potvrdite kartice</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Ti troškovi mogu biti jednokratni ili ponavljajući te također mogu biti diskretni.</translation>
 <translation id="7029809446516969842">Lozinke</translation>
@@ -1243,6 +1260,7 @@
 <translation id="7064851114919012435">Podaci za kontakt</translation>
 <translation id="7075452647191940183">Zahtjev je prevelik</translation>
 <translation id="7079718277001814089">Ova web lokacija sadrži zlonamjeran softver</translation>
+<translation id="7081308185095828845">Ova funkcija nije dostupna na vašem uređaju</translation>
 <translation id="7087282848513945231">Okrug</translation>
 <translation id="7090678807593890770">Pretražite <ph name="LINK" /> na Googleu</translation>
 <translation id="7108338896283013870">Sakrij</translation>
@@ -1296,9 +1314,11 @@
 <translation id="733923710415886693">Potvrda servera nije otkrivena korištenjem pravila o transparentnosti potvrde.</translation>
 <translation id="734600844861828519">11 x 15</translation>
 <translation id="7346048084945669753">Korisnik je povezan:</translation>
+<translation id="73479065977517481">Domena <ph name="ENROLLMENT_DOMAIN" /> je na vašem pregledniku omogućila Chrome zaštitu korisnika za preduzeća. Chrome zaštita korisnika za preduzeća ima pristup nekim vašim podacima.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Komandna linija</translation>
 <translation id="7372973238305370288">rezultat pretraživanja</translation>
+<translation id="7374733840632556089">Ovaj problem nastaje zbog potvrde koju ste vi ili neko drugi instalirali na uređaj. Poznato je da se ta potvrda koristi za nadzor i presretanje mreža te je Chrome ne smatra pouzdanom. Iako postoje opravdani slučajevi za nadzor, naprimjer, na mrežama u školama ili preduzećima, Chrome želi potvrditi da ste toga svjesni čak i ako taj proces ne možete zaustaviti. Nadzor se može vršiti u bilo kojem pregledniku ili bilo kojoj aplikaciji koja pristupa webu.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" />, <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Upravljanje medijima</translation>
 <translation id="7378627244592794276">Ne</translation>
@@ -1327,6 +1347,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Saznati više<ph name="END_LINK" /> o ovom problemu.</translation>
 <translation id="7455133967321480974">Koristi globalnu zadanu postavku (blokiraj)</translation>
 <translation id="7460618730930299168">Prikaz se razlikuje od onoga što ste odabrali. Želite li nastaviti?</translation>
+<translation id="7464821087936825778">Izlazak iz načina rada za pretraživanje</translation>
 <translation id="7473891865547856676">Ne, hvala</translation>
 <translation id="7481312909269577407">Proslijedi</translation>
 <translation id="7485870689360869515">Nije pronađen nijedan rezultat.</translation>
@@ -1548,6 +1569,7 @@
 <translation id="8559762987265718583">Nije moguće uspostaviti privatnu vezu s domenom <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> jer datum i vrijeme (<ph name="DATE_AND_TIME" />) na vašem uređaju nisu tačni.</translation>
 <translation id="8564985650692024650">Chromium preporučuje da poništite lozinku za <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> ako ste je ponovo koristili na drugim web lokacijama.</translation>
 <translation id="8571890674111243710">Stranica se prevodi na <ph name="LANGUAGE" />…</translation>
+<translation id="8574899947864779331">Koristite Touch ID da brže potvrdite kartice</translation>
 <translation id="858637041960032120">Dodajte broj telefona</translation>
 <translation id="860043288473659153">Ime vlasnika kartice</translation>
 <translation id="8616822740383114808">Ovu postavku je nametnula postavka "<ph name="ENFORCING_SETTING" />" na stranici "<ph name="SETTINGS_PAGE" />"</translation>
diff --git a/components/strings/components_strings_cs.xtb b/components/strings/components_strings_cs.xtb
index f3b28ca6..c3c1bca5 100644
--- a/components/strings/components_strings_cs.xtb
+++ b/components/strings/components_strings_cs.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Načíst stránku později</translation>
 <translation id="1015730422737071372">Zadejte další podrobnosti</translation>
 <translation id="1021110881106174305">Přijímané karty</translation>
+<translation id="1021753677514347426">K tomuto problému dochází kvůli certifikátu, který jste vy nebo někdo jiný nainstalovali do zařízení. O certifikátu je známo, že se používá ke sledování a zachytávání provozu v sítích, a Chromium mu nedůvěřuje. Ačkoliv sledování v některých případech (například ve školní nebo firemní síti) může být legitimní a nemůžete mu zabránit, Chromium se chce ujistit, že o něm víte. Ke sledování může docházet v kterémkoliv prohlížeči nebo aplikaci, které přistupují k webu.</translation>
 <translation id="1032854598605920125">Otočit ve směru hodinových ručiček</translation>
 <translation id="1036348656032585052">Vypnout</translation>
 <translation id="1038842779957582377">neznámé jméno</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Zpráva o selhání pořízená <ph name="CRASH_TIME" /> (dosud nenahrána nebo ignorována)</translation>
 <translation id="1270502636509132238">Způsob vyzvednutí</translation>
 <translation id="1285320974508926690">Tento web nikdy nepřekládat</translation>
+<translation id="1285400217480592994">Prohledávat obsah souborů, které v Chromu stahujete nebo nahráváte.</translation>
 <translation id="1292701964462482250">Software na počítači Chromu brání v bezpečném připojení k webu (pouze počítače se systémem Windows)</translation>
 <translation id="1294154142200295408">Varianty pro příkazový řádek</translation>
 <translation id="129553762522093515">Nedávno zavřené</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Telefonní číslo</translation>
 <translation id="2277103315734023688">Přetočit dopředu</translation>
 <translation id="2283340219607151381">Ukládat a vyplňovat adresy</translation>
+<translation id="2288422996159078444">Všechno, co zadáváte, všechny zobrazované stránky a veškerá další aktivita na webu jsou sledovány. Obsah na webech může být bez vašeho vědomí změněn.</translation>
 <translation id="2289385804009217824">Oříznutí</translation>
 <translation id="2292556288342944218">Vaše připojení k internetu je blokováno</translation>
 <translation id="2297722699537546652">B5 (obálka)</translation>
@@ -426,6 +429,7 @@
 <translation id="2989742184762224133">Dvě sponky nahoře</translation>
 <translation id="2991174974383378012">Sdílení s weby</translation>
 <translation id="2991571918955627853">Web <ph name="SITE" /> teď nemůžete navštívit, protože používá zabezpečení HSTS. Síťové chyby a útoky jsou obvykle dočasné, tato stránka pravděpodobně později bude fungovat.</translation>
+<translation id="2996674880327704673">Návrhy od Googlu</translation>
 <translation id="3005723025932146533">Zobrazit uloženou kopii</translation>
 <translation id="3008447029300691911">Zadejte kód CVC karty <ph name="CREDIT_CARD" />. Po ověření budou údaje o kartě sdíleny s tímto webem.</translation>
 <translation id="3010559122411665027">Položka seznamu „<ph name="ENTRY_INDEX" />“: <ph name="ERROR" /></translation>
@@ -438,6 +442,7 @@
 <translation id="3060227939791841287">C9 (obálka)</translation>
 <translation id="3061707000357573562">Služba oprav</translation>
 <translation id="3064966200440839136">Chystáte se opustit anonymní režim, abyste mohli zaplatit v externí aplikaci. Chcete pokračovat?</translation>
+<translation id="3086579638707268289">Vaše aktivita na webu je sledována</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Přidat adresu vyzvednutí</translation>
 <translation id="3105172416063519923">ID díla:</translation>
@@ -487,6 +492,7 @@
 <translation id="3369192424181595722">Chyba hodin</translation>
 <translation id="337363190475750230">Vyřazeno</translation>
 <translation id="3377188786107721145">Chyba analýzy zásady</translation>
+<translation id="3377736046129930310">Potvrzovat karty rychleji pomocí zámku obrazovky</translation>
 <translation id="3380365263193509176">Neznámá chyba</translation>
 <translation id="3380864720620200369">Číslo klienta:</translation>
 <translation id="3387261909427947069">Platební metody</translation>
@@ -646,6 +652,7 @@
 <translation id="4194250254487269611">Kartu v tuto chvíli nelze uložit</translation>
 <translation id="4196861286325780578">&amp;Opakovat přesunutí</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Zkontrolovat konfiguraci firewallu a antivirového softwaru<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">profil přihlašovací obrazovky</translation>
 <translation id="4215751373031079683">7x9 (obálka)</translation>
 <translation id="4220128509585149162">Selhání</translation>
 <translation id="422022731706691852">Útočníci na webu <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> by se mohli pokusit přimět vás k instalaci programů, které nepříznivě ovlivní procházení webu (například změní vaši domovskou stránku nebo na navštěvovaných stránkách budou zobrazovat další reklamy). <ph name="BEGIN_LEARN_MORE_LINK" />Další informace<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -728,6 +735,7 @@
 <translation id="4515275063822566619">Karty a adresy pocházejí z Chromu a z vašeho účtu Google (<ph name="ACCOUNT_EMAIL" />). Můžete je spravovat v <ph name="BEGIN_LINK" />Nastavení<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Comm-10 (obálka)</translation>
 <translation id="4522570452068850558">Podrobnosti</translation>
+<translation id="4524138615196389145">Od teď karty potvrzujte rychleji pomocí technologie WebAuthn</translation>
 <translation id="4524805452350978254">Spravovat karty</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -838,6 +846,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64bitový)</translation>
+<translation id="5121469660360593280">Sdílet s administrátorem údaje o událostech zabezpečení nahlášených ochranou uživatelů Chrome Enterprise. Mohou být zahrnuty adresy URL stránek, které navštěvujete, názvy souborů metadat a uživatelské jméno, pomocí něhož se přihlašujete do svého zařízení a do Chromu.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Ověřte svou kartu</translation>
 <translation id="5135404736266831032">Spravovat adresy...</translation>
@@ -849,6 +858,7 @@
 <translation id="5159010409087891077">Otevřete stránku v novém anonymním okně (⇧⌘N)</translation>
 <translation id="516920405563544094">Zadejte kód CVC karty <ph name="CREDIT_CARD" />. Po potvrzení budou údaje o kartě z vašeho účtu Google poskytnuty tomuto webu.</translation>
 <translation id="5169827969064885044">Mohli byste ztratit přístup k účtu organizace nebo by mohlo dojít k odcizení vaší identity. Chrome doporučuje okamžitě změnit heslo.</translation>
+<translation id="5170017743895942767">Ochrana uživatelů Chrome Enterprise</translation>
 <translation id="5171045022955879922">Vyhledávejte či zadejte URL</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Počítač</translation>
@@ -969,6 +979,7 @@
 <translation id="5730040223043577876">Pokud jste heslo použili na jiném webu, doporučujeme vám ho resetovat.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Uložit kartu do účtu Google}few{Uložit karty do účtu Google}many{Uložit karty do účtu Google}other{Uložit karty do účtu Google}}</translation>
 <translation id="5763042198335101085">Zadejte platnou e-mailovou adresu</translation>
+<translation id="5763703224595565476">Administrátor ve vašem prohlížeči zapnul ochranu uživatelů Chrome Enterprise. Ochrana uživatelů Chrome Enterprise má přístup k některým vašim datům.</translation>
 <translation id="5765072501007116331">Chcete-li zobrazit způsoby doručení a požadavky, vyberte adresu</translation>
 <translation id="5778550464785688721">Úplná kontrola zařízení MIDI</translation>
 <translation id="5781136890105823427">Je zapnutý experiment</translation>
@@ -1048,6 +1059,7 @@
 <translation id="6094273045989040137">Přidat značky a poznámky</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">Na stránce <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> mohou být k dispozici další druhy historie prohlížení zaznamenané ve vašem účtu Google.</translation>
+<translation id="6120179357481664955">Uložit vaše UPI ID?</translation>
 <translation id="6132597952260690497">Informace o nainstalovaných rozšířeních a pluginech</translation>
 <translation id="6146055958333702838">Zkontrolujte všechny kabely a restartujte všechny směrovače, modemy a další síťová zařízení, která používáte.</translation>
 <translation id="614940544461990577">Zkuste:</translation>
@@ -1062,6 +1074,7 @@
 <translation id="6221345481584921695">Služba Bezpečné prohlížení Google na webu <ph name="SITE" /> nedávno <ph name="BEGIN_LINK" />zjistila malware<ph name="END_LINK" />. Někdy mohou být malwarem nakaženy i weby, které jsou obvykle bezpečné. Tento škodlivý obsah pochází z webu <ph name="SUBRESOURCE_HOST" />, který je distribucí malwaru známý.</translation>
 <translation id="6234122620015464377">Oříznout za každým dokumentem</translation>
 <translation id="6240447795304464094">Logo Google Pay</translation>
+<translation id="6241121617266208201">Skrýt návrhy</translation>
 <translation id="6251924700383757765">Zásady ochrany soukromí</translation>
 <translation id="6254436959401408446">K otevření této stránky není k dispozici dostatek paměti</translation>
 <translation id="625755898061068298">U tohoto webu jste deaktivovali bezpečnostní upozornění.</translation>
@@ -1108,6 +1121,7 @@
 <translation id="6409754798200046165">Právě jste své heslo zadali na klamavém webu. Chrome doporučuje okamžitě změnit heslo.</translation>
 <translation id="6410264514553301377">Zadejte datum vypršení platnosti a kód CVC karty <ph name="CREDIT_CARD" />.</translation>
 <translation id="6415778972515849510">Chromium vám může pomoci ochránit váš účet Google a změnit heslo.</translation>
+<translation id="6423385022588644828">Od teď karty potvrzujte rychleji pomocí technologie Touch ID</translation>
 <translation id="6427730057873428458">Otevírací přeložení</translation>
 <translation id="6433490469411711332">Upravit kontaktní údaje</translation>
 <translation id="6433595998831338502">Web <ph name="HOST_NAME" /> odmítl připojení.</translation>
@@ -1178,12 +1192,14 @@
 <translation id="6786747875388722282">Rozšíření</translation>
 <translation id="6790428901817661496">Přehrát</translation>
 <translation id="679355240208270552">Ignorováno, protože v zásadách výchozí vyhledávání není aktivováno.</translation>
+<translation id="6794951432696553238">Od teď karty potvrzujte rychleji pomocí technologie Windows Hello</translation>
 <translation id="681021252041861472">Povinné pole</translation>
 <translation id="6810899417690483278">ID přizpůsobení</translation>
 <translation id="6825578344716086703">Pokusili jste se přejít na web <ph name="DOMAIN" />, server však předložil certifikát podepsaný slabým algoritmem (například SHA-1). To znamená, že bezpečnostní pověření předložená serverem mohou být falešná a může se jednat o úplně jiný server, než předpokládáte (můžete komunikovat s útočníkem).</translation>
 <translation id="6826370046007623921">Ochrana před únikem informací</translation>
 <translation id="6831043979455480757">Přeložit</translation>
 <translation id="6839929833149231406">Oblast</translation>
+<translation id="6846340164947227603">Použít číslo virtuální karty...</translation>
 <translation id="6852204201400771460">Načíst aplikaci znovu?</translation>
 <translation id="6865412394715372076">Tuto kartu teď nelze ověřit</translation>
 <translation id="6868206169573555318">Spustit znovu a aktualizovat</translation>
@@ -1212,6 +1228,7 @@
 <translation id="6989763994942163495">Zobrazit rozšířená nastavení...</translation>
 <translation id="6993898126790112050">6x9 (obálka)</translation>
 <translation id="6996312675313362352">Jazyk <ph name="ORIGINAL_LANGUAGE" /> vždy překládat</translation>
+<translation id="7004583254764674281">Potvrzovat karty rychleji pomocí technologie Windows Hello</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Může se jednat o jednorázové nebo opakované poplatky, které nemusejí být jasně patrné.</translation>
 <translation id="7029809446516969842">Hesla</translation>
@@ -1222,6 +1239,7 @@
 <translation id="7064851114919012435">Kontaktní údaje</translation>
 <translation id="7075452647191940183">Požadavek je příliš velký</translation>
 <translation id="7079718277001814089">Tento web obsahuje malware</translation>
+<translation id="7081308185095828845">Tato funkce ve vašem zařízení není k dispozici</translation>
 <translation id="7087282848513945231">Okres</translation>
 <translation id="7090678807593890770">Vyhledejte na Googlu <ph name="LINK" /></translation>
 <translation id="7108338896283013870">Skrýt</translation>
@@ -1274,9 +1292,11 @@
 <translation id="733923710415886693">Certifikát serveru nebyl zveřejněn prostřednictvím projektu Certificate Transparency.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">Je přidružený:</translation>
+<translation id="73479065977517481">Organizace <ph name="ENROLLMENT_DOMAIN" /> ve vašem prohlížeči zapnula ochranu uživatelů Chrome Enterprise. Ochrana uživatelů Chrome Enterprise má přístup k některým vašim datům.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Příkazový řádek</translation>
 <translation id="7372973238305370288">výsledek vyhledávání</translation>
+<translation id="7374733840632556089">K tomuto problému dochází kvůli certifikátu, který jste vy nebo někdo jiný nainstalovali do zařízení. O certifikátu je známo, že se používá ke sledování a zachytávání provozu v sítích, a Chrome mu nedůvěřuje. Ačkoliv sledování v některých případech (například ve školní nebo firemní síti) může být legitimní a nemůžete mu zabránit, Chrome se chce ujistit, že o něm víte. Ke sledování může docházet v kterémkoliv prohlížeči nebo aplikaci, které přistupují k webu.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Ovládání médií</translation>
 <translation id="7378627244592794276">Ne</translation>
@@ -1305,6 +1325,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Další informace<ph name="END_LINK" /> o tomto problému.</translation>
 <translation id="7455133967321480974">Použít výchozí globální hodnotu (Blokovat)</translation>
 <translation id="7460618730930299168">Přehrává se jiný obsah, než jste vybrali. Pokračovat?</translation>
+<translation id="7464821087936825778">Existující režim vyhledávání</translation>
 <translation id="7473891865547856676">Ne, děkuji</translation>
 <translation id="7481312909269577407">Vpřed</translation>
 <translation id="7485870689360869515">Nebyla nalezena žádná data.</translation>
@@ -1526,6 +1547,7 @@
 <translation id="8559762987265718583">Soukromé připojení k doméně <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> nelze navázat, protože máte v zařízení nastaveno chybné datum a čas (<ph name="DATE_AND_TIME" />).</translation>
 <translation id="8564985650692024650">Pokud jste heslo organizace <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> použili na jiném webu, doporučujeme vám ho resetovat.</translation>
 <translation id="8571890674111243710">Překlad stránky do jazyka: <ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">Potvrzovat karty rychleji pomocí technologie Touch ID</translation>
 <translation id="858637041960032120">Přidat telefon
 </translation>
 <translation id="860043288473659153">Jméno držitele karty</translation>
diff --git a/components/strings/components_strings_da.xtb b/components/strings/components_strings_da.xtb
index 9c9a12fb..853c2c0d 100644
--- a/components/strings/components_strings_da.xtb
+++ b/components/strings/components_strings_da.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Indlæs side senere</translation>
 <translation id="1015730422737071372">Angiv yderligere oplysninger</translation>
 <translation id="1021110881106174305">Accepterede kort</translation>
+<translation id="1021753677514347426">Dette problem opstår på grund af et certifikat, som du eller en anden har installeret på din enhed. Certifikatet anvendes ofte til at overvåge og opfange netværk, og Chromium har ikke tillid til det. Der findes legitime årsager til at overvåge, f.eks. på skole- og virksomhedsnetværk, men Chromium vil sikre, at du er bevidst om det, når det sker, selvom du ikke kan stoppe det. Overvågning kan finde sted i enhver browser eller app, der har adgang til nettet.</translation>
 <translation id="1032854598605920125">Rotér med uret</translation>
 <translation id="1036348656032585052">Deaktiver</translation>
 <translation id="1038842779957582377">ukendt navn</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Der blev registreret en nedbrudsrapport <ph name="CRASH_TIME" /> (endnu ikke uploadet eller ignoreret)</translation>
 <translation id="1270502636509132238">Afhentningsmetode</translation>
 <translation id="1285320974508926690">Oversæt aldrig dette website</translation>
+<translation id="1285400217480592994">Scan indholdet af de filer, du downloader eller uploader i Chrome.</translation>
 <translation id="1292701964462482250">"Der er software på computeren, som forhindrer, at Chrome kan oprette en sikker forbindelse til nettet" (kun Windows-computere)</translation>
 <translation id="1294154142200295408">Variationer i kommandolinjer</translation>
 <translation id="129553762522093515">Senest lukkede</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Telefonnummer</translation>
 <translation id="2277103315734023688">Spol frem</translation>
 <translation id="2283340219607151381">Gem og udfyld adresser</translation>
+<translation id="2288422996159078444">Alt det, du skriver, alle de sider, du besøger, og alle dine andre aktiviteter på nettet overvåges. Indholdet på websites kan blive ændret, uden at du underrettes.</translation>
 <translation id="2289385804009217824">Beskær</translation>
 <translation id="2292556288342944218">Din internetadgang er blokeret</translation>
 <translation id="2297722699537546652">B5 (Envelope)</translation>
@@ -436,6 +439,7 @@
 <translation id="2989742184762224133">Dobbelthæftning øverst</translation>
 <translation id="2991174974383378012">Deling med websites</translation>
 <translation id="2991571918955627853">Du kan ikke besøge <ph name="SITE" /> lige nu, da websitet bruger HSTS. Netværksfejl og angreb er normalt midlertidige, så siden vil sandsynligvis fungere senere.</translation>
+<translation id="2996674880327704673">Forslag fra Google</translation>
 <translation id="3005723025932146533">Vis gemt kopi</translation>
 <translation id="3008447029300691911">Angiv kontrolkoden for <ph name="CREDIT_CARD" />. Når du bekræfter, deles dine kortoplysninger med dette website.</translation>
 <translation id="3010559122411665027">Angiv posten "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -448,6 +452,7 @@
 <translation id="3060227939791841287">C9 (Envelope)</translation>
 <translation id="3061707000357573562">Tjeneste til programrettelse</translation>
 <translation id="3064966200440839136">Du forlader inkognitotilstand for at betale via en ekstern applikation. Vil du fortsætte?</translation>
+<translation id="3086579638707268289">Din aktivitet på nettet overvåges</translation>
 <translation id="3095940652251934233">Erklæring</translation>
 <translation id="3096100844101284527">Tilføj afhentningsadresse</translation>
 <translation id="3105172416063519923">Aktiv-id:</translation>
@@ -500,6 +505,7 @@
 <translation id="3369192424181595722">Urfejl</translation>
 <translation id="337363190475750230">Deprovisioneret</translation>
 <translation id="3377188786107721145">Det opstod en fejl ved parsing af politik</translation>
+<translation id="3377736046129930310">Brug skærmlåsen til at bekræfte kort hurtigere</translation>
 <translation id="3380365263193509176">Ukendt fejl</translation>
 <translation id="3380864720620200369">Klient-id:</translation>
 <translation id="3387261909427947069">Betalingsmetoder</translation>
@@ -665,6 +671,7 @@
 <translation id="4194250254487269611">Dit kort kan ikke gemmes lige nu</translation>
 <translation id="4196861286325780578">&amp;Annuller fortryd flytning</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Kontrollere firewall- og antiviruskonfigurationer<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">profil på loginskærm</translation>
 <translation id="4215751373031079683">7x9 (Envelope)</translation>
 <translation id="4220128509585149162">Nedbrud</translation>
 <translation id="422022731706691852">Brugere med ondsindede hensigter på <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> kan forsøge at narre dig til at installere programmer, der giver en dårligere browsingoplevelse (f.eks. ved at ændre din startside eller vise flere annoncer på de websites, du besøger). <ph name="BEGIN_LEARN_MORE_LINK" />Få flere oplysninger<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -747,6 +754,7 @@
 <translation id="4515275063822566619">Kort og adresser stammer fra Chrome og din Google-konto (<ph name="ACCOUNT_EMAIL" />). Du kan administrere dem i <ph name="BEGIN_LINK" />Indstillinger<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Comm-10 (Envelope)</translation>
 <translation id="4522570452068850558">Detaljer</translation>
+<translation id="4524138615196389145">Bekræft dine kort hurtigere ved hjælp af WebAuthn fra nu af</translation>
 <translation id="4524805452350978254">Administrer kort</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -858,6 +866,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64-bit)</translation>
+<translation id="5121469660360593280">Del data om sikkerhedshændelser, der blev rapporteret af Chrome Enterprise User Protect, med din administrator. Dette kan omfatte webadresserne til de sider, du besøger, filnavne eller metadata samt det brugernavn, du brugte til at logge ind med på din enhed og i Chrome.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Bekræft dit kort</translation>
 <translation id="5135404736266831032">Administrer adresser...</translation>
@@ -869,6 +878,7 @@
 <translation id="5159010409087891077">Åbn siden i et nyt inkognitovindue (⇧⌘N)</translation>
 <translation id="516920405563544094">Angiv kontrolkoden for <ph name="CREDIT_CARD" />. Når du bekræfter, deles kortoplysningerne på din Google-konto med dette website.</translation>
 <translation id="5169827969064885044">Du kan miste adgangen til din organisations konto eller udsættes for identitetstyveri. Chrome anbefaler, at du skifter din adgangskode nu.</translation>
+<translation id="5170017743895942767">Chrome Enterprise User Protect</translation>
 <translation id="5171045022955879922">Søg, eller angiv webadresse</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Maskine</translation>
@@ -989,6 +999,7 @@
 <translation id="5730040223043577876">Chrome anbefaler, at du nulstiller din adgangskode, hvis du har brugt den på andre websites.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Gem kortet på din Google-konto}one{Gem kortet på din Google-konto}other{Gem kortene på din Google-konto}}</translation>
 <translation id="5763042198335101085">Angiv en gyldig mailadresse</translation>
+<translation id="5763703224595565476">Din administrator har aktiveret Chrome Enterprise User Protect i din browser. Chrome Enterprise User Protect har adgang til nogle af dine data.</translation>
 <translation id="5765072501007116331">Vælg en adresse for at se leveringsmetoder og -krav</translation>
 <translation id="5778550464785688721">Fuld kontrol over MIDI</translation>
 <translation id="5781136890105823427">Eksperimentet er aktiveret</translation>
@@ -1068,6 +1079,7 @@
 <translation id="6094273045989040137">Annoter</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">Din Google-konto kan have andre former for browserhistorik på <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
+<translation id="6120179357481664955">Skal dit UPI-id huskes?</translation>
 <translation id="6132597952260690497">Oplysninger om installerede udvidelser og plugins</translation>
 <translation id="6146055958333702838">Kontrollér eventuelle kabler, og genstart alle routere, modemmer eller andre
     netværksenheder, du bruger.</translation>
@@ -1083,6 +1095,7 @@
 <translation id="6221345481584921695">Google Beskyttet browsing <ph name="BEGIN_LINK" />registrerede malware<ph name="END_LINK" /> på <ph name="SITE" /> for nylig. Websites, der normalt er sikre, inficeres undertiden med malware. Det skadelige indhold kommer fra <ph name="SUBRESOURCE_HOST" />, som er en kendt malwaredistributør.</translation>
 <translation id="6234122620015464377">Beskær efter hvert dokument</translation>
 <translation id="6240447795304464094">Google Pay-logo</translation>
+<translation id="6241121617266208201">Skjul forslag</translation>
 <translation id="6251924700383757765">Privatlivspolitik</translation>
 <translation id="6254436959401408446">Der er ikke nok hukommelse til at åbne denne side</translation>
 <translation id="625755898061068298">Du har valgt at deaktivere sikkerhedsadvarsler for dette website.</translation>
@@ -1129,6 +1142,7 @@
 <translation id="6409754798200046165">Du har lige angivet din adgangskode på et vildledende website. Chrome anbefaler, at du skifter din adgangskode med det samme.</translation>
 <translation id="6410264514553301377">Angiv udløbsdatoen og kontrolkoden for <ph name="CREDIT_CARD" /></translation>
 <translation id="6415778972515849510">Chromium kan hjælpe dig med at beskytte din Google-konto og ændre din adgangskode.</translation>
+<translation id="6423385022588644828">Bekræft dine kort hurtigere ved hjælp af Touch ID fra nu af</translation>
 <translation id="6427730057873428458">Portfals</translation>
 <translation id="6433490469411711332">Rediger kontaktoplysninger</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> nægtede at oprette forbindelse.</translation>
@@ -1199,12 +1213,14 @@
 <translation id="6786747875388722282">Udvidelser</translation>
 <translation id="6790428901817661496">Afspil</translation>
 <translation id="679355240208270552">Ignoreret, fordi en standardsøgemaskine ikke er aktiveret af politikken.</translation>
+<translation id="6794951432696553238">Bekræft dine kort hurtigere ved hjælp af Windows Hello fra nu af</translation>
 <translation id="681021252041861472">Skal udfyldes</translation>
 <translation id="6810899417690483278">Tilpasnings-id</translation>
 <translation id="6825578344716086703">Du forsøgte at få fat i <ph name="DOMAIN" />, men serveren præsenterede et certifikat, der er signeret med en svag signaturalgoritme (f.eks. SHA-1). Det betyder, at sikkerhedsoplysningerne fra serveren kan være forfalskede, og at serveren muligvis ikke er den server, som du forventede (du kommunikerer muligvis med en person med ondsindede hensigter).</translation>
 <translation id="6826370046007623921">Forebyggelse af datatab</translation>
 <translation id="6831043979455480757">Oversæt</translation>
 <translation id="6839929833149231406">Område</translation>
+<translation id="6846340164947227603">Brug et virtuelt kortnummer...</translation>
 <translation id="6852204201400771460">Vil du genindlæse appen?</translation>
 <translation id="6865412394715372076">Dette kort kan ikke bekræftes lige nu</translation>
 <translation id="6868206169573555318">Genstart for at opdatere</translation>
@@ -1233,6 +1249,7 @@
 <translation id="6989763994942163495">Vis avancerede indstillinger...</translation>
 <translation id="6993898126790112050">6x9 (Envelope)</translation>
 <translation id="6996312675313362352">Oversæt altid <ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">Brug Windows Hello til at bekræfte kort hurtigere</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Disse debiteringer kan være enkeltstående eller gentagne og fremgår muligvis ikke tydeligt.</translation>
 <translation id="7029809446516969842">Adgangskoder</translation>
@@ -1243,6 +1260,7 @@
 <translation id="7064851114919012435">Kontaktoplysninger</translation>
 <translation id="7075452647191940183">Anmodningen er for stor</translation>
 <translation id="7079718277001814089">Dette website indeholder malware</translation>
+<translation id="7081308185095828845">Denne funktion er ikke tilgængelig på din enhed</translation>
 <translation id="7087282848513945231">Amt/region</translation>
 <translation id="7090678807593890770">Søg efter <ph name="LINK" /> på Google</translation>
 <translation id="7108338896283013870">Skjul</translation>
@@ -1296,9 +1314,11 @@
 <translation id="733923710415886693">Servercertifikatet blev ikke fremvist via Certifikatsgennemsigtighed.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">Er tilknyttet:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> har aktiveret Chrome Enterprise User Protect i din browser. Chrome Enterprise User Protect har adgang til nogle af dine data.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Kommandolinje</translation>
 <translation id="7372973238305370288">søgeresultat</translation>
+<translation id="7374733840632556089">Dette problem opstår på grund af et certifikat, som du eller en anden har installeret på din enhed. Certifikatet anvendes ofte til at overvåge og opfange netværk, og Chrome har ikke tillid til det. Der findes legitime årsager til at overvåge, f.eks. på skole- og virksomhedsnetværk, men Chrome vil sikre, at du er bevidst om det, når det sker, selvom du ikke kan stoppe det. Overvågning kan finde sted i enhver browser eller app, der har adgang til nettet.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Mediestyring</translation>
 <translation id="7378627244592794276">Nej</translation>
@@ -1327,6 +1347,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Få flere oplysninger<ph name="END_LINK" /> om dette problem.</translation>
 <translation id="7455133967321480974">Brug global standard (bloker)</translation>
 <translation id="7460618730930299168">Screeningen stemmer ikke overens med det, du har valgt. Vil du fortsætte?</translation>
+<translation id="7464821087936825778">Afslutter søgetilstand</translation>
 <translation id="7473891865547856676">Nej tak</translation>
 <translation id="7481312909269577407">Frem</translation>
 <translation id="7485870689360869515">Der blev ikke fundet nogen data.</translation>
@@ -1548,6 +1569,7 @@
 <translation id="8559762987265718583">Der kan ikke oprettes en privat forbindelse til <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />, da tid og dato (<ph name="DATE_AND_TIME" />) på din enhed er forkerte.</translation>
 <translation id="8564985650692024650">Chromium anbefaler, at du nulstiller din adgangskode til <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" />, hvis du har brugt den på andre websites.</translation>
 <translation id="8571890674111243710">Oversætter siden til <ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">Brug Touch ID for at bekræfte dine kort hurtigere</translation>
 <translation id="858637041960032120">Tilføj tlf.nr.
 </translation>
 <translation id="860043288473659153">Kortholderens navn</translation>
diff --git a/components/strings/components_strings_de.xtb b/components/strings/components_strings_de.xtb
index d8d22e6..4206779 100644
--- a/components/strings/components_strings_de.xtb
+++ b/components/strings/components_strings_de.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Seite später laden</translation>
 <translation id="1015730422737071372">Weitere Details angeben</translation>
 <translation id="1021110881106174305">Akzeptierte Karten</translation>
+<translation id="1021753677514347426">Sie sehen diesen Fehler aufgrund eines Zertifikats, das auf Ihrem Gerät installiert ist. Chromium vertraut dem Zertifikat nicht, weil es Netzwerke unterbrechen und überwachen kann. Natürlich gibt es berechtigte Gründe für eine Überwachung, z. B. im Netzwerk von Schulen oder Unternehmen. Trotzdem soll sichergestellt werden, dass Sie über die Überwachung informiert sind, selbst wenn Sie sie nicht unterbinden können. Die Überwachung ist in jedem Browser und jeder Anwendung mit Webzugriff möglich.</translation>
 <translation id="1032854598605920125">Im Uhrzeigersinn drehen</translation>
 <translation id="1036348656032585052">Deaktivieren</translation>
 <translation id="1038842779957582377">Unbekannter Name</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Absturzbericht erfasst am <ph name="CRASH_TIME" />, wurde noch nicht hochgeladen oder wurde ignoriert</translation>
 <translation id="1270502636509132238">Abholoption</translation>
 <translation id="1285320974508926690">Diese Website nie übersetzen</translation>
+<translation id="1285400217480592994">Inhalte der Dateien scannen, die Sie in Chrome herunter- oder hochladen.</translation>
 <translation id="1292701964462482250">"Software auf Ihrem Computer verhindert, dass Chrome eine sichere Internetverbindung herstellt" (nur Windows-Computer)</translation>
 <translation id="1294154142200295408">Befehlszeilen-Varianten</translation>
 <translation id="129553762522093515">Kürzlich geschlossen</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Telefonnummer</translation>
 <translation id="2277103315734023688">Vorwärts springen</translation>
 <translation id="2283340219607151381">Adressen speichern und ausfüllen</translation>
+<translation id="2288422996159078444">Alles, was Sie eingeben, alle Seiten, die Sie besuchen, und alle sonstigen Aktivitäten im Internet werden überwacht. Inhalte von Websites können ohne Ihr Wissen verändert werden.</translation>
 <translation id="2289385804009217824">Zuschneiden</translation>
 <translation id="2292556288342944218">Ihre Internetverbindung ist gesperrt</translation>
 <translation id="2297722699537546652">B5 (Umschlag)</translation>
@@ -430,6 +433,7 @@
 <translation id="2989742184762224133">Zwei Heftklammern oben</translation>
 <translation id="2991174974383378012">Datenfreigabe an Websites</translation>
 <translation id="2991571918955627853">Sie können <ph name="SITE" /> derzeit nicht aufrufen, da die Website HSTS verwendet. Netzwerkfehler und Angriffe sind in der Regel nur vorübergehend, sodass die Seite wahrscheinlich später wieder funktioniert.</translation>
+<translation id="2996674880327704673">Vorschläge von Google</translation>
 <translation id="3005723025932146533">Gespeicherte Kopie anzeigen</translation>
 <translation id="3008447029300691911">Geben Sie den CVC für <ph name="CREDIT_CARD" /> ein. Nach erfolgter Bestätigung werden die Kartendetails an diese Website weitergegeben.</translation>
 <translation id="3010559122411665027">Listeneintrag "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -442,6 +446,7 @@
 <translation id="3060227939791841287">C9 (Umschlag)</translation>
 <translation id="3061707000357573562">Patchdienst</translation>
 <translation id="3064966200440839136">Der Inkognitomodus wird beendet, um über eine externe Anwendung zu zahlen. Fortfahren?</translation>
+<translation id="3086579638707268289">Ihre Aktivitäten im Web werden überwacht</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Abholadresse hinzufügen</translation>
 <translation id="3105172416063519923">Geräte-ID: </translation>
@@ -494,6 +499,7 @@
 <translation id="3369192424181595722">Fehler bei der Uhrzeit</translation>
 <translation id="337363190475750230">Bereitstellung aufgehoben</translation>
 <translation id="3377188786107721145">Fehler beim Parsen der Richtlinie</translation>
+<translation id="3377736046129930310">Bildschirmsperre verwenden und Karten schneller bestätigen</translation>
 <translation id="3380365263193509176">Unbekannter Fehler</translation>
 <translation id="3380864720620200369">Client-ID: </translation>
 <translation id="3387261909427947069">Zahlungsmethoden</translation>
@@ -654,6 +660,7 @@
 <translation id="4194250254487269611">Ihre Karte kann momentan nicht gespeichert werden</translation>
 <translation id="4196861286325780578">&amp;Verschieben wiederholen</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Firewall und Antivirenkonfiguration prüfen<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">Profil der Anmeldeseite</translation>
 <translation id="4215751373031079683">7x9 (Umschlag)</translation>
 <translation id="4220128509585149162">Abstürze</translation>
 <translation id="422022731706691852">Hacker könnten auf <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> versuchen, Sie zur Installation von Programmen zu bewegen, die sich nachteilig auf Ihre Browsernutzung auswirken. Dabei kann zum Beispiel Ihre Startseite geändert werden oder es erscheint zusätzliche Werbung auf von Ihnen besuchten Websites.<ph name="BEGIN_LEARN_MORE_LINK" />Weitere Informationen<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -736,6 +743,7 @@
 <translation id="4515275063822566619">Karten und Adressen stammen aus Chrome und aus Ihrem Google-Konto (<ph name="ACCOUNT_EMAIL" />). Sie können sie in den <ph name="BEGIN_LINK" />Einstellungen<ph name="END_LINK" /> verwalten.</translation>
 <translation id="4517607026994743406">Comm-10 (Umschlag)</translation>
 <translation id="4522570452068850558">Details</translation>
+<translation id="4524138615196389145">Karten mithilfe von WebAuthn ab sofort schneller bestätigen</translation>
 <translation id="4524805452350978254">Karten verwalten</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -847,6 +855,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64-Bit)</translation>
+<translation id="5121469660360593280">Sicherheitshinweise, die von Chrome Enterprise User Protect gemeldet wurden, mit Ihrem Administrator teilen. Dabei kann es sich um URLs der von Ihnen besuchten Seiten, Dateinamen, Metadaten oder den Nutzernamen handeln, den Sie zum Anmelden auf Ihrem Gerät und in Chrome verwenden.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Karte bestätigen</translation>
 <translation id="5135404736266831032">Adressen verwalten…</translation>
@@ -858,6 +867,7 @@
 <translation id="5159010409087891077">Seite in einem neuen Inkognitofenster öffnen (⇧⌘N)</translation>
 <translation id="516920405563544094">Geben Sie die Kartenprüfnummer (CVC) für <ph name="CREDIT_CARD" /> ein. Nach erfolgter Bestätigung werden die Kartendetails Ihres Google-Kontos an diese Website weitergegeben.</translation>
 <translation id="5169827969064885044">Sie könnten den Zugriff auf das Konto Ihres Unternehmens verlieren oder zum Opfer von Identitätsdiebstahl werden. Chrome empfiehlt Ihnen, Ihr Passwort jetzt zu ändern.</translation>
+<translation id="5170017743895942767">Chrome Enterprise User Protect</translation>
 <translation id="5171045022955879922">Suchen oder URL eingeben</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Computer</translation>
@@ -978,6 +988,7 @@
 <translation id="5730040223043577876">Chrome empfiehlt, Ihr Passwort zurückzusetzen, wenn Sie es auf anderen Websites verwendet haben.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Karte in Ihrem Google-Konto speichern}other{Karten in Ihrem Google-Konto speichern}}</translation>
 <translation id="5763042198335101085">Geben Sie eine gültige E-Mail-Adresse ein</translation>
+<translation id="5763703224595565476">Ihr Administrator hat Chrome Enterprise User Protect für Ihren Browser aktiviert. Chrome Enterprise User Protect kann auf manche Ihrer Daten zugreifen.</translation>
 <translation id="5765072501007116331">Wählen Sie eine Adresse aus, um Lieferoptionen und -anforderungen zu sehen</translation>
 <translation id="5778550464785688721">MIDI-Geräte: volle Kontrolle</translation>
 <translation id="5781136890105823427">Test aktiviert</translation>
@@ -1057,6 +1068,7 @@
 <translation id="6094273045989040137">Anmerkung hinzufügen</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">Unter <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> sind möglicherweise weitere Arten von Browserverlaufsdaten für Ihr Google-Konto gespeichert.</translation>
+<translation id="6120179357481664955">Soll Ihre UPI-ID gespeichert werden?</translation>
 <translation id="6132597952260690497">Informationen zu installierten Erweiterungen und Plug-ins</translation>
 <translation id="6146055958333702838">Überprüfen Sie alle Kabel und starten Sie alle verwendeten Router, Modems und
     anderen Netzwerkgeräte neu.</translation>
@@ -1072,6 +1084,7 @@
 <translation id="6221345481584921695">Google Safe Browsing hat kürzlich <ph name="BEGIN_LINK" />Malware<ph name="END_LINK" /> auf <ph name="SITE" /> gefunden. Websites, die in der Regel sicher sind, können gelegentlich mit Malware infiziert sein. Der schädliche Inhalt stammt von <ph name="SUBRESOURCE_HOST" />, einem bekannten Verteiler von Malware.</translation>
 <translation id="6234122620015464377">Nach jedem Dokument zuschneiden</translation>
 <translation id="6240447795304464094">Google Pay-Logo</translation>
+<translation id="6241121617266208201">Vorschläge ausblenden</translation>
 <translation id="6251924700383757765">Datenschutzerklärung</translation>
 <translation id="6254436959401408446">Nicht genügend Speicher, um diese Seite zu öffnen</translation>
 <translation id="625755898061068298">Sie haben die Sicherheitswarnmeldungen für diese Website deaktiviert.</translation>
@@ -1118,6 +1131,7 @@
 <translation id="6409754798200046165">Sie haben Ihr Passwort gerade auf einer verdächtigen Seite eingegeben. Chrome empfiehlt, Ihr Passwort jetzt zu ändern.</translation>
 <translation id="6410264514553301377">Ablaufdatum und CVC für <ph name="CREDIT_CARD" /> eingeben</translation>
 <translation id="6415778972515849510">Mithilfe von Chromium können Sie Ihr Google-Konto schützen und Ihr Passwort ändern.</translation>
+<translation id="6423385022588644828">Karten mithilfe von Touch ID ab sofort schneller bestätigen</translation>
 <translation id="6427730057873428458">Fensterfaltung</translation>
 <translation id="6433490469411711332">Kontaktdaten bearbeiten</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> hat die Verbindung abgelehnt.</translation>
@@ -1188,12 +1202,14 @@
 <translation id="6786747875388722282">Erweiterungen</translation>
 <translation id="6790428901817661496">Wiedergabe</translation>
 <translation id="679355240208270552">Ignoriert, da die Standardsuchmaschine durch die Richtlinie deaktiviert ist.</translation>
+<translation id="6794951432696553238">Karten mithilfe von Windows Hello ab sofort schneller bestätigen</translation>
 <translation id="681021252041861472">Pflichtfeld</translation>
 <translation id="6810899417690483278">Personalisierungs-ID</translation>
 <translation id="6825578344716086703">Sie haben versucht, auf <ph name="DOMAIN" /> zuzugreifen, der Server hat jedoch ein Zertifikat übermittelt, das einen schwachen Signaturalgorithmus verwendet, zum Beispiel SHA-1. Das bedeutet, dass die vom Server übermittelten Sicherheitsinformationen gefälscht sein könnten und es sich möglicherweise gar nicht um den erwarteten Server handelt, sondern Sie mit einem Hacker kommunizieren.</translation>
 <translation id="6826370046007623921">Schutz vor Datenverlust</translation>
 <translation id="6831043979455480757">Übersetzen</translation>
 <translation id="6839929833149231406">Region</translation>
+<translation id="6846340164947227603">Virtuelle Kartennummer verwenden...</translation>
 <translation id="6852204201400771460">App neu laden?</translation>
 <translation id="6865412394715372076">Diese Karte kann momentan nicht geprüft werden</translation>
 <translation id="6868206169573555318">Zum Aktualisieren neu starten</translation>
@@ -1222,6 +1238,7 @@
 <translation id="6989763994942163495">Erweiterte Einstellungen anzeigen</translation>
 <translation id="6993898126790112050">6x9 (Umschlag)</translation>
 <translation id="6996312675313362352"><ph name="ORIGINAL_LANGUAGE" /> immer übersetzen</translation>
+<translation id="7004583254764674281">Windows Hello verwenden und Karten schneller bestätigen</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Diese Belastungen können einmalig oder wiederkehrend sein und sind vielleicht nicht offensichtlich.</translation>
 <translation id="7029809446516969842">Passwörter</translation>
@@ -1232,6 +1249,7 @@
 <translation id="7064851114919012435">Kontaktdaten</translation>
 <translation id="7075452647191940183">Die Anfrage ist zu groß</translation>
 <translation id="7079718277001814089">Diese Website enthält Malware</translation>
+<translation id="7081308185095828845">Diese Funktion ist auf Ihrem Gerät nicht verfügbar</translation>
 <translation id="7087282848513945231">Landkreis</translation>
 <translation id="7090678807593890770">Auf Google nach <ph name="LINK" /> suchen</translation>
 <translation id="7108338896283013870">Ausblenden</translation>
@@ -1285,9 +1303,11 @@
 <translation id="733923710415886693">Das Serverzertifikat wurde nicht über die Zertifikatstransparenz offengelegt.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">Ist verknüpft:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> hat Chrome Enterprise User Protect für Ihren Browser aktiviert. Chrome Enterprise User Protect kann auf manche Ihrer Daten zugreifen.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Befehlszeile</translation>
 <translation id="7372973238305370288">Suchergebnis</translation>
+<translation id="7374733840632556089">Sie sehen diesen Fehler aufgrund eines Zertifikats, das auf Ihrem Gerät installiert ist. Chrome vertraut dem Zertifikat nicht, weil es Netzwerke unterbrechen und überwachen kann. Natürlich gibt es berechtigte Gründe für eine Überwachung, z. B. im Netzwerk von Schulen oder Unternehmen. Trotzdem soll sichergestellt werden, dass Sie über die Überwachung informiert sind, selbst wenn Sie sie nicht unterbinden können. Die Überwachung ist in jedem Browser und jeder Anwendung mit Webzugriff möglich.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Mediensteuerelemente</translation>
 <translation id="7378627244592794276">Nein</translation>
@@ -1316,6 +1336,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Weitere Informationen<ph name="END_LINK" /> zu diesem Problem.</translation>
 <translation id="7455133967321480974">Globalen Standard verwenden (Blockieren)</translation>
 <translation id="7460618730930299168">Die Filmvorführung entspricht nicht Ihrer Auswahl. Möchten Sie fortfahren?</translation>
+<translation id="7464821087936825778">Suchmodus wird beendet</translation>
 <translation id="7473891865547856676">Nein danke</translation>
 <translation id="7481312909269577407">Vorwärts</translation>
 <translation id="7485870689360869515">Keine Daten gefunden</translation>
@@ -1537,6 +1558,7 @@
 <translation id="8559762987265718583">Es kann keine private Verbindung zu <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> hergestellt werden, weil Datum und Uhrzeit Ihres Geräts falsch sind (<ph name="DATE_AND_TIME" />).</translation>
 <translation id="8564985650692024650">Chromium empfiehlt, Ihr Passwort für <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> zurückzusetzen, wenn Sie es auf anderen Websites verwendet haben.</translation>
 <translation id="8571890674111243710">Seite wird in folgende Sprache übersetzt: <ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">Touch ID verwenden, um Karten schneller zu bestätigen</translation>
 <translation id="858637041960032120">Weitere Nummer
 </translation>
 <translation id="860043288473659153">Name des Karteninhabers</translation>
diff --git a/components/strings/components_strings_es-419.xtb b/components/strings/components_strings_es-419.xtb
index 230ebd3a..ca4e0b24 100644
--- a/components/strings/components_strings_es-419.xtb
+++ b/components/strings/components_strings_es-419.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Cargar la página más tarde</translation>
 <translation id="1015730422737071372">Proporciona más detalles</translation>
 <translation id="1021110881106174305">Tarjetas aceptadas</translation>
+<translation id="1021753677514347426">Se produjo este problema debido a un certificado que tú o alguien más instaló en el dispositivo. El certificado se usa para interceptar y supervisar redes, y no es de confianza para Chromium. Si bien existen usos legítimos de la supervisión, como en el caso de redes de empresas o instituciones educativas, Chromium quiere asegurarse de que estás al tanto de esta situación, aunque no puedas impedirlo. La supervisión puede ocurrir en cualquier navegador o app que acceda a la Web.</translation>
 <translation id="1032854598605920125">Girar a la derecha</translation>
 <translation id="1036348656032585052">Desactivar</translation>
 <translation id="1038842779957582377">nombre desconocido</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">El informe de fallos se capturó el <ph name="CRASH_TIME" /> (todavía no se cargó ni se ignoró)</translation>
 <translation id="1270502636509132238">Método de retiro</translation>
 <translation id="1285320974508926690">Nunca traducir este sitio</translation>
+<translation id="1285400217480592994">Analiza el contenido de los archivos que descargas o subes mediante Chrome.</translation>
 <translation id="1292701964462482250">"Un software en tu computadora evita que Chrome se conecte de forma segura a la Web" (solo en computadoras con Windows)</translation>
 <translation id="1294154142200295408">Variaciones en la línea de comandos</translation>
 <translation id="129553762522093515">Cerrado recientemente</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Número de teléfono</translation>
 <translation id="2277103315734023688">Buscar más adelante</translation>
 <translation id="2283340219607151381">Guardar y completar direcciones</translation>
+<translation id="2288422996159078444">Todo lo que escribas, las páginas que visites o cualquier otra actividad que realices en la Web está visible. Además, se puede cambiar contenido en los sitios sin tu conocimiento.</translation>
 <translation id="2289385804009217824">Cortar</translation>
 <translation id="2292556288342944218">Se bloqueó tu acceso a Internet</translation>
 <translation id="2297722699537546652">B5 (Envelope)</translation>
@@ -434,6 +437,7 @@
 <translation id="2989742184762224133">Grapas dobles en la parte superior</translation>
 <translation id="2991174974383378012">Compartir con los sitios web</translation>
 <translation id="2991571918955627853">No puedes visitar <ph name="SITE" /> ahora porque el sitio web usa HSTS. Los ataques y errores de red suelen ser temporales, por lo que es posible que esta página funcione más tarde.</translation>
+<translation id="2996674880327704673">Sugerencias de Google</translation>
 <translation id="3005723025932146533">Mostrar copia guardada</translation>
 <translation id="3008447029300691911">Ingresa el CVC de la tarjeta <ph name="CREDIT_CARD" />. Después de confirmarla, los datos de tu tarjeta se compartirán con este sitio.</translation>
 <translation id="3010559122411665027">Entrada de lista "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -446,6 +450,7 @@
 <translation id="3060227939791841287">C9 (Envelope)</translation>
 <translation id="3061707000357573562">Aplicar parche al servicio</translation>
 <translation id="3064966200440839136">Saldrás del modo de navegación incógnito para pagar mediante una aplicación externa. ¿Deseas continuar?</translation>
+<translation id="3086579638707268289">Se supervisa tu actividad en la Web</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Agregar dirección de retiro</translation>
 <translation id="3105172416063519923">ID de recurso:</translation>
@@ -499,6 +504,7 @@
 <translation id="3369192424181595722">Error de reloj</translation>
 <translation id="337363190475750230">Desaprovisionado</translation>
 <translation id="3377188786107721145">Error al analizar la política</translation>
+<translation id="3377736046129930310">Usa el bloqueo de pantalla para confirmar las tarjetas más rápido</translation>
 <translation id="3380365263193509176">Error desconocido</translation>
 <translation id="3380864720620200369">ID de cliente:</translation>
 <translation id="3387261909427947069">Formas de pago</translation>
@@ -664,6 +670,7 @@
 <translation id="4194250254487269611">No se puede guardar tu tarjeta en este momento</translation>
 <translation id="4196861286325780578">&amp;Rehacer Mover</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Comprobar las configuraciones de firewall y antivirus<ph name="END_LINK" />.</translation>
+<translation id="4214357935346142455">perfil de la pantalla de acceso</translation>
 <translation id="4215751373031079683">7x9 (Envelope)</translation>
 <translation id="4220128509585149162">Fallos</translation>
 <translation id="422022731706691852">Es posible que los atacantes en <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> intenten engañarte para que instales programas que dañen tu experiencia de navegación (p. ej., al cambiar la página principal o mostrar anuncios adicionales en los sitios que visitas). <ph name="BEGIN_LEARN_MORE_LINK" />Más información<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -746,6 +753,7 @@
 <translation id="4515275063822566619">Las tarjetas y direcciones provienen de Chrome y de tu cuenta de Google (<ph name="ACCOUNT_EMAIL" />). Puedes administrar esta información en <ph name="BEGIN_LINK" />Configuración<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Comm-10 (Envelope)</translation>
 <translation id="4522570452068850558">Detalles</translation>
+<translation id="4524138615196389145">De ahora en más, usa WebAuthn para verificar las tarjetas más rápido</translation>
 <translation id="4524805452350978254">Administrar tarjetas</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -857,6 +865,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64 bits)</translation>
+<translation id="5121469660360593280">Comparte con tu administrador información sobre eventos de seguridad que se hayan marcado en la Protección para usuarios de Chrome Enterprise. Esta información puede incluir URL de las páginas que visitas, nombres de archivos o metadatos, y el nombre de usuario con el que accedes a tu dispositivo y a Chrome.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Verifica tu tarjeta</translation>
 <translation id="5135404736266831032">Administrar direcciones…</translation>
@@ -868,6 +877,7 @@
 <translation id="5159010409087891077">Abre la página en una nueva ventana de incógnito (⇧⌘N).</translation>
 <translation id="516920405563544094">Ingresa el CVC de la tarjeta <ph name="CREDIT_CARD" />. Después de confirmarla, los datos de la tarjeta en tu Cuenta de Google se compartirán con este sitio.</translation>
 <translation id="5169827969064885044">Es posible que hayas perdido el acceso a la cuenta de tu organización o sufrido un robo de identidad. Chrome te recomienda que cambies la contraseña ahora.</translation>
+<translation id="5170017743895942767">Protección para usuarios de Chrome Enterprise</translation>
 <translation id="5171045022955879922">Buscar o escribir URL</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Equipo</translation>
@@ -988,6 +998,7 @@
 <translation id="5730040223043577876">Chrome te recomienda que restablezcas tu contraseña si la volviste a usar en otros sitios.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Guarda la tarjeta en tu Cuenta de Google}other{Guarda las tarjetas en tu Cuenta de Google}}</translation>
 <translation id="5763042198335101085">Escribe una dirección de correo electrónico válida</translation>
+<translation id="5763703224595565476">El administrador habilitó la Protección para usuarios de Chrome Enterprise en el navegador. La Protección para usuarios de Chrome Enterprise tiene acceso a algunos de tus datos.</translation>
 <translation id="5765072501007116331">Para ver los requisitos y métodos de entrega, selecciona una dirección</translation>
 <translation id="5778550464785688721">Control total de dispositivos MIDI</translation>
 <translation id="5781136890105823427">Se habilitó un experimento</translation>
@@ -1067,6 +1078,7 @@
 <translation id="6094273045989040137">Agregar anotación</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">Es posible que tu cuenta de Google tenga otros formularios del historial de navegación en <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
+<translation id="6120179357481664955">¿Recuerdas tu ID de IUP?</translation>
 <translation id="6132597952260690497">Información sobre las extensiones y los complementos instalados</translation>
 <translation id="6146055958333702838">Revisa los cables y reinicia los routers, módems u otros dispositivos
         de red que estés usando.</translation>
@@ -1082,6 +1094,7 @@
 <translation id="6221345481584921695">La Navegación segura de Google <ph name="BEGIN_LINK" />detectó software malicioso<ph name="END_LINK" /> en <ph name="SITE" /> recientemente. A veces, los sitios web que suelen ser seguros contienen software malicioso. El contenido malicioso proviene de <ph name="SUBRESOURCE_HOST" />, un conocido distribuidor de software malicioso.</translation>
 <translation id="6234122620015464377">Cortar después de cada documento</translation>
 <translation id="6240447795304464094">Logotipo de Google Pay</translation>
+<translation id="6241121617266208201">Ocultar sugerencias</translation>
 <translation id="6251924700383757765">Política de Privacidad</translation>
 <translation id="6254436959401408446">Tu dispositivo no tiene suficiente memoria para abrir esta página</translation>
 <translation id="625755898061068298">Decidiste inhabilitar las advertencias de seguridad para este sitio.</translation>
@@ -1128,6 +1141,7 @@
 <translation id="6409754798200046165">Ingresaste tu contraseña en un sitio engañoso. Chrome recomienda que la cambies ahora.</translation>
 <translation id="6410264514553301377">Ingresar la fecha de vencimiento y el CVC para <ph name="CREDIT_CARD" /></translation>
 <translation id="6415778972515849510">Chromium puede ayudarte a proteger tu Cuenta de Google y cambiar tu contraseña.</translation>
+<translation id="6423385022588644828">A partir de ahora, usa Touch ID para confirmar las tarjetas más rápido</translation>
 <translation id="6427730057873428458">Plegado en ventana</translation>
 <translation id="6433490469411711332">Editar la información de contacto</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> rechazó la conexión.</translation>
@@ -1198,12 +1212,14 @@
 <translation id="6786747875388722282">Extensiones</translation>
 <translation id="6790428901817661496">Reproducir</translation>
 <translation id="679355240208270552">Se ignora porque la búsqueda predeterminada no está habilitada según la política.</translation>
+<translation id="6794951432696553238">A partir de ahora, usa Windows Hello para confirmar las tarjetas más rápido</translation>
 <translation id="681021252041861472">Campo obligatorio</translation>
 <translation id="6810899417690483278">ID de personalización</translation>
 <translation id="6825578344716086703">Intentaste acceder a <ph name="DOMAIN" />, pero el servidor presentó un certificado firmado con un algoritmo de firma no seguro (como SHA-1). Esto significa que podrían haberse falsificado las credenciales de seguridad presentadas por el servidor y que este no sea el servidor esperado (es posible que hayas establecido comunicación con un atacante).</translation>
 <translation id="6826370046007623921">Prevención de pérdida de datos</translation>
 <translation id="6831043979455480757">Traducir</translation>
 <translation id="6839929833149231406">Área</translation>
+<translation id="6846340164947227603">Usar un número de tarjeta virtual…</translation>
 <translation id="6852204201400771460">¿Deseas volver a cargar la app?</translation>
 <translation id="6865412394715372076">No se puede verificar la tarjeta en este momento</translation>
 <translation id="6868206169573555318">Reiniciar para actualizar</translation>
@@ -1232,6 +1248,7 @@
 <translation id="6989763994942163495">Mostrar configuración avanzada...</translation>
 <translation id="6993898126790112050">6x9 (Envelope)</translation>
 <translation id="6996312675313362352">Siempre traducir <ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">Usa Windows Hello para verificar las tarjetas más rápido</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Estos cargos pueden ser únicos o recurrentes, y es posible que no sean evidentes.</translation>
 <translation id="7029809446516969842">Contraseñas</translation>
@@ -1242,6 +1259,7 @@
 <translation id="7064851114919012435">Información de contacto</translation>
 <translation id="7075452647191940183">La solicitud es demasiado grande</translation>
 <translation id="7079718277001814089">Este sitio contiene software malicioso</translation>
+<translation id="7081308185095828845">Esta función no está disponible en el dispositivo</translation>
 <translation id="7087282848513945231">Condado</translation>
 <translation id="7090678807593890770">Buscar <ph name="LINK" /> en Google</translation>
 <translation id="7108338896283013870">Ocultar</translation>
@@ -1295,9 +1313,11 @@
 <translation id="733923710415886693">El certificado del servidor no se divulgó mediante el Certificado de transparencia.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">Se afilió:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> habilitó la Protección para usuarios de Chrome Enterprise en el navegador. La Protección para usuarios de Chrome Enterprise tiene acceso a algunos de tus datos.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Línea de comandos</translation>
 <translation id="7372973238305370288">resultado de búsqueda</translation>
+<translation id="7374733840632556089">Se produjo este problema debido a un certificado que tú o alguien más instaló en el dispositivo. El certificado se usa para interceptar y supervisar redes, y no es de confianza para Chrome. Si bien existen usos legítimos de la supervisión, como en el caso de redes de empresas o instituciones educativas, Chrome quiere asegurarse de que estás al tanto de esta situación, aunque no puedas impedirlo. La supervisión puede ocurrir en cualquier navegador o app que acceda a la Web.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Controles de contenido multimedia</translation>
 <translation id="7378627244592794276">No</translation>
@@ -1326,6 +1346,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Más información<ph name="END_LINK" /> acerca de este problema</translation>
 <translation id="7455133967321480974">Usar configuración global predeterminada (Bloquear)</translation>
 <translation id="7460618730930299168">La proyección es diferente a tu selección. ¿Quieres continuar?</translation>
+<translation id="7464821087936825778">Saliendo del modo de búsqueda</translation>
 <translation id="7473891865547856676">No, gracias</translation>
 <translation id="7481312909269577407">Reenviar</translation>
 <translation id="7485870689360869515">No se encontró ningún dato.</translation>
@@ -1547,6 +1568,7 @@
 <translation id="8559762987265718583">No se puede establecer una conexión privada a <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> porque la fecha y la hora del dispositivo (<ph name="DATE_AND_TIME" />) son incorrectas.</translation>
 <translation id="8564985650692024650">Chromium te recomienda que restablezcas la contraseña de <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> si la volviste a usar en otros sitios.</translation>
 <translation id="8571890674111243710">Traduciendo página a <ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">Usa Touch ID para confirmar las tarjetas más rápido</translation>
 <translation id="858637041960032120">Agregar teléfono
 </translation>
 <translation id="860043288473659153">Nombre del titular de la tarjeta</translation>
diff --git a/components/strings/components_strings_es.xtb b/components/strings/components_strings_es.xtb
index d1364c7c..3e1bdcf 100644
--- a/components/strings/components_strings_es.xtb
+++ b/components/strings/components_strings_es.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Cargar la página más tarde</translation>
 <translation id="1015730422737071372">Proporciónanos más detalles</translation>
 <translation id="1021110881106174305">Tarjetas aceptadas</translation>
+<translation id="1021753677514347426">El problema se produce a causa de un certificado que tú u otra persona habéis instalado en el dispositivo. Chromium no confía en este certificado porque hay constancia de que se utiliza para interceptar y vigilar redes. Aunque existen motivos legítimos para realizar la vigilancia (como en el caso de redes de centros educativos o empresas) y no puedas evitarla, Chromium quiere informarte de que se está realizando. La vigilancia puede realizarse en cualquier navegador o aplicación que acceda a Internet.</translation>
 <translation id="1032854598605920125">Girar hacia la derecha</translation>
 <translation id="1036348656032585052">Desactivar</translation>
 <translation id="1038842779957582377">nombre desconocido</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Informe sobre fallos registrado el <ph name="CRASH_TIME" /> (todavía no se ha subido ni ignorado)</translation>
 <translation id="1270502636509132238">Método de recogida</translation>
 <translation id="1285320974508926690">No traducir nunca este sitio</translation>
+<translation id="1285400217480592994">Comprueba el contenido de los archivos que has descargado o subido en Chrome.</translation>
 <translation id="1292701964462482250">"Hay software en tu ordenador que impide que Chrome se conecte a la Web de forma segura" (solo para ordenadores Windows)</translation>
 <translation id="1294154142200295408">Variaciones de la línea de comandos</translation>
 <translation id="129553762522093515">Cerrado recientemente</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Número de teléfono</translation>
 <translation id="2277103315734023688">Ir hacia delante</translation>
 <translation id="2283340219607151381">Guardar y autocompletar direcciones</translation>
+<translation id="2288422996159078444">Se está vigilando todo lo que escribes, las páginas que visitas y cualquier otra actividad que realices en Internet, y es posible que se modifique el contenido de los sitios web sin que lo sepas.</translation>
 <translation id="2289385804009217824">Recortar</translation>
 <translation id="2292556288342944218">Tu acceso a Internet está bloqueado</translation>
 <translation id="2297722699537546652">B5 (sobre)</translation>
@@ -436,6 +439,7 @@
 <translation id="2989742184762224133">Grapado doble en la parte superior</translation>
 <translation id="2991174974383378012">Compartir con otros sitios web</translation>
 <translation id="2991571918955627853">No puedes acceder a <ph name="SITE" /> en este momento porque el sitio web utiliza HSTS. Los ataques y los errores de red suelen ser temporales, por lo que es probable que esta página funcione más tarde.</translation>
+<translation id="2996674880327704673">Sugerencias de Google</translation>
 <translation id="3005723025932146533">Mostrar copia guardada</translation>
 <translation id="3008447029300691911">Introduce el código CVC de la tarjeta <ph name="CREDIT_CARD" />. Cuando la confirmes, su información se compartirá con este sitio web.</translation>
 <translation id="3010559122411665027">Entrada de lista "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -448,6 +452,7 @@
 <translation id="3060227939791841287">C9 (sobre)</translation>
 <translation id="3061707000357573562">Aplicar parche a servicio</translation>
 <translation id="3064966200440839136">Saldrás del modo de incógnito para realizar un pago en una aplicación externa. ¿Quieres continuar?</translation>
+<translation id="3086579638707268289">Se está vigilando tu actividad en la Web</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Añadir dirección de recogida</translation>
 <translation id="3105172416063519923">ID de recurso:</translation>
@@ -500,6 +505,7 @@
 <translation id="3369192424181595722">Error del reloj</translation>
 <translation id="337363190475750230">Dado de baja</translation>
 <translation id="3377188786107721145">Error al analizar la política</translation>
+<translation id="3377736046129930310">Usa bloqueo de pantalla para confirmar tarjetas más rápido</translation>
 <translation id="3380365263193509176">Error desconocido</translation>
 <translation id="3380864720620200369">ID de cliente:</translation>
 <translation id="3387261909427947069">Métodos de pago</translation>
@@ -665,6 +671,7 @@
 <translation id="4194250254487269611">En estos momentos no se puede guardar tu tarjeta</translation>
 <translation id="4196861286325780578">&amp;Rehacer movimiento</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Comprobar la configuración del cortafuegos y del antivirus<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">perfil de pantalla de inicio de sesión</translation>
 <translation id="4215751373031079683">7x9 (sobre)</translation>
 <translation id="4220128509585149162">La página no responde o se cierra</translation>
 <translation id="422022731706691852">Es posible que los atacantes que se encuentren en <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> intenten engañarte para que instales programas que empeoren tu experiencia de navegación (por ejemplo, que cambien tu página principal o muestren anuncios adicionales en los sitios web a los que accedas). <ph name="BEGIN_LEARN_MORE_LINK" />Más información<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -747,6 +754,7 @@
 <translation id="4515275063822566619">Las tarjetas y las direcciones proceden de Chrome y tu cuenta de Google (<ph name="ACCOUNT_EMAIL" />). Puedes gestionarlas en <ph name="BEGIN_LINK" />Configuración<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Comm-10 (sobre)</translation>
 <translation id="4522570452068850558">Detalles</translation>
+<translation id="4524138615196389145">A partir de ahora, puedes confirmar tus tarjetas más rápido con WebAuthn</translation>
 <translation id="4524805452350978254">Gestionar tarjetas</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -858,6 +866,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64 bits)</translation>
+<translation id="5121469660360593280">Comparte con tu administrador los datos de actividades relacionadas con la seguridad que marque Chrome Enterprise User Protect. Estos datos incluyen las URL de las páginas que visitas, los nombres de los archivos, los metadatos y el nombre de usuario que utilizas para iniciar sesión en tu dispositivo y en Chrome.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Verifica tu tarjeta</translation>
 <translation id="5135404736266831032">Gestiona tus direcciones...</translation>
@@ -869,6 +878,7 @@
 <translation id="5159010409087891077">Abre una página en una nueva ventana de incógnito (⇧ + ⌘ + N)</translation>
 <translation id="516920405563544094">Introduce el CVC de <ph name="CREDIT_CARD" />. Una vez que confirmes esta acción, la información de la tarjeta de tu cuenta de Google se compartirá con este sitio web.</translation>
 <translation id="5169827969064885044">Podrías perder el acceso a la cuenta de tu organización o tener problemas de suplantación de identidad. Chrome te recomienda que cambies tu contraseña ahora.</translation>
+<translation id="5170017743895942767">Chrome Enterprise User Protect</translation>
 <translation id="5171045022955879922">Busca o escribe una URL</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Equipo</translation>
@@ -989,6 +999,7 @@
 <translation id="5730040223043577876">Chrome te recomienda que cambies tu contraseña si la has vuelto a utilizar en otros sitios web.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Guarda la tarjeta en tu cuenta de Google}other{Guarda las tarjetas en tu cuenta de Google}}</translation>
 <translation id="5763042198335101085">Introduce una dirección de correo electrónico válida</translation>
+<translation id="5763703224595565476">El administrador ha habilitado Chrome Enterprise User Protect en tu navegador. Chrome Enterprise User Protect puede acceder a algunos de tus datos.</translation>
 <translation id="5765072501007116331">Selecciona una dirección para ver los métodos de entrega y los requisitos</translation>
 <translation id="5778550464785688721">Control total de dispositivos MIDI</translation>
 <translation id="5781136890105823427">Experimento habilitado</translation>
@@ -1068,6 +1079,7 @@
 <translation id="6094273045989040137">Anotar</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">Es posible que tu cuenta de Google tenga otros tipos de historial de navegación en la página <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
+<translation id="6120179357481664955">¿Recuerdas tu ID de IUP?</translation>
 <translation id="6132597952260690497">Información de las extensiones y complementos instalados</translation>
 <translation id="6146055958333702838">Comprueba los cables y reinicia los routers, los módems o cualquier otro dispositivo
     de red que estés utilizando.</translation>
@@ -1083,6 +1095,7 @@
 <translation id="6221345481584921695">Recientemente, la función de Navegación Segura de Google <ph name="BEGIN_LINK" />ha detectado software malicioso<ph name="END_LINK" /> en <ph name="SITE" />. En ocasiones, los sitios web que normalmente son seguros contienen software malicioso. Este contenido malintencionado procede de <ph name="SUBRESOURCE_HOST" />, un conocido distribuidor de software malicioso.</translation>
 <translation id="6234122620015464377">Recortar después de cada documento</translation>
 <translation id="6240447795304464094">Logotipo de Google Pay</translation>
+<translation id="6241121617266208201">Ocultar sugerencias</translation>
 <translation id="6251924700383757765">Política de Privacidad</translation>
 <translation id="6254436959401408446">No hay suficiente memoria para abrir esta página</translation>
 <translation id="625755898061068298">Has elegido inhabilitar las advertencias de seguridad de este sitio web.</translation>
@@ -1129,6 +1142,7 @@
 <translation id="6409754798200046165">Acabas de introducir tu contraseña en un sitio web engañoso. Chrome te recomienda que cambies tu contraseña ahora.</translation>
 <translation id="6410264514553301377">Introduce la fecha de vencimiento y el código CVC de la tarjeta <ph name="CREDIT_CARD" /></translation>
 <translation id="6415778972515849510">Chromium puede ayudarte a proteger tu cuenta de Google y a cambiar tu contraseña.</translation>
+<translation id="6423385022588644828">A partir de ahora, puedes confirmar tus tarjetas más rápido con Touch ID</translation>
 <translation id="6427730057873428458">Plegado en ventana</translation>
 <translation id="6433490469411711332">Editar información de contacto</translation>
 <translation id="6433595998831338502">La página <ph name="HOST_NAME" /> ha rechazado la conexión.</translation>
@@ -1199,12 +1213,14 @@
 <translation id="6786747875388722282">Extensiones</translation>
 <translation id="6790428901817661496">Reproducir</translation>
 <translation id="679355240208270552">Se ha ignorado el valor porque se ha establecido una política que inhabilita la búsqueda predeterminada.</translation>
+<translation id="6794951432696553238">A partir de ahora, puedes confirmar tus tarjetas con Windows Hello</translation>
 <translation id="681021252041861472">Campo obligatorio</translation>
 <translation id="6810899417690483278">ID de personalización</translation>
 <translation id="6825578344716086703">Has intentado acceder a <ph name="DOMAIN" />, pero el servidor ha presentado un certificado firmado con un algoritmo de firma no seguro (por ejemplo, SHA-1). Una posible causa de este problema es que se hayan falsificado las credenciales de seguridad presentadas por el servidor y que hayas accedido a la página de un atacante en lugar de establecer conexión con el servidor en cuestión.</translation>
 <translation id="6826370046007623921">Prevención de la pérdida de datos</translation>
 <translation id="6831043979455480757">Traducir</translation>
 <translation id="6839929833149231406">Área</translation>
+<translation id="6846340164947227603">Usar un número de tarjeta virtual...</translation>
 <translation id="6852204201400771460">¿Quieres volver a cargar la aplicación?</translation>
 <translation id="6865412394715372076">No se puede verificar la tarjeta en este momento</translation>
 <translation id="6868206169573555318">Reinicia para actualizar</translation>
@@ -1233,6 +1249,7 @@
 <translation id="6989763994942163495">Mostrar configuración avanzada...</translation>
 <translation id="6993898126790112050">6x9 (sobre)</translation>
 <translation id="6996312675313362352">Traducir siempre del <ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">Usa Windows Hello para confirmar tarjetas más rápido</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Estos cargos pueden ser únicos o periódicos, y es posible que no se indiquen de una forma evidente.</translation>
 <translation id="7029809446516969842">Contraseñas</translation>
@@ -1243,6 +1260,7 @@
 <translation id="7064851114919012435">Información de contacto</translation>
 <translation id="7075452647191940183">La solicitud es demasiado grande</translation>
 <translation id="7079718277001814089">Este sitio web contiene software malicioso</translation>
+<translation id="7081308185095828845">Esta función no está disponible en tu dispositivo</translation>
 <translation id="7087282848513945231">Condado</translation>
 <translation id="7090678807593890770">Busca <ph name="LINK" /> en Google</translation>
 <translation id="7108338896283013870">Ocultar</translation>
@@ -1296,9 +1314,11 @@
 <translation id="733923710415886693">El certificado del servidor no se ha revelado a través de la Transparencia en los Certificados.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">Se ha afiliado:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> ha habilitado Chrome Enterprise User Protect en tu navegador. Chrome Enterprise User Protect puede acceder a algunos de tus datos.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Línea de comandos</translation>
 <translation id="7372973238305370288">resultado de búsqueda</translation>
+<translation id="7374733840632556089">El problema se produce a causa de un certificado que tú u otra persona habéis instalado en el dispositivo. Chrome no confía en este certificado porque hay constancia de que se utiliza para interceptar y vigilar redes. Aunque existen motivos legítimos para realizar la vigilancia (como en el caso de redes de centros educativos o empresas) y no puedas evitarla, Chrome quiere informarte de que se está realizando. La vigilancia puede realizarse en cualquier navegador o aplicación que acceda a Internet.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Controles multimedia</translation>
 <translation id="7378627244592794276">No</translation>
@@ -1327,6 +1347,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Consultar más información<ph name="END_LINK" /> sobre este problema</translation>
 <translation id="7455133967321480974">Utilizar valor predeterminado global (Bloquear)</translation>
 <translation id="7460618730930299168">El filtro es distinto al que has seleccionado. ¿Quieres continuar?</translation>
+<translation id="7464821087936825778">Saliendo del modo de búsqueda</translation>
 <translation id="7473891865547856676">No, gracias</translation>
 <translation id="7481312909269577407">Adelante</translation>
 <translation id="7485870689360869515">No se han encontrado datos.</translation>
@@ -1548,6 +1569,7 @@
 <translation id="8559762987265718583">No se puede establecer una conexión privada con <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> porque la fecha y la hora de tu dispositivo (<ph name="DATE_AND_TIME" />) no son correctas.</translation>
 <translation id="8564985650692024650">Chromium te recomienda que cambies tu contraseña de <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> si la has vuelto a utilizar en otros sitios web.</translation>
 <translation id="8571890674111243710">Traduciendo página a <ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">Usa Touch ID para confirmar tarjetas más rápido</translation>
 <translation id="858637041960032120">Añade un teléfono</translation>
 <translation id="860043288473659153">Nombre del titular de la tarjeta</translation>
 <translation id="8616822740383114808">"<ph name="ENFORCING_SETTING" />" aplica este ajuste en "<ph name="SETTINGS_PAGE" />"</translation>
diff --git a/components/strings/components_strings_et.xtb b/components/strings/components_strings_et.xtb
index 640475d4..7462fe04 100644
--- a/components/strings/components_strings_et.xtb
+++ b/components/strings/components_strings_et.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Laadi leht hiljem</translation>
 <translation id="1015730422737071372">Esitage lisateavet</translation>
 <translation id="1021110881106174305">Aktsepteeritud kaardid</translation>
+<translation id="1021753677514347426">Selle probleemi põhjuseks on teie või kellegi teise installitud sertifikaat. Seda sertifikaati kasutatakse võrkude jälgimiseks ja ühenduste katkestamiseks ning Chromium ei usalda seda. Kuigi mõnel puhul on jälgimine seaduslik (nt kooli või ettevõtte võrgus), soovib Chromium tagada, et oleksite sellest teadlik ka juhul, kui te ei saa seda peatada. Jälgimine võib toimuda veebiühendusega brauseris või rakenduses.</translation>
 <translation id="1032854598605920125">Pööra päripäeva</translation>
 <translation id="1036348656032585052">Lülita välja</translation>
 <translation id="1038842779957582377">tundmatu nimi</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Krahhiaruanne talletati <ph name="CRASH_TIME" /> (ei ole veel üles laaditud ega eiratud)</translation>
 <translation id="1270502636509132238">Kättesaamisviis</translation>
 <translation id="1285320974508926690">Ära kunagi seda saiti tõlgi</translation>
+<translation id="1285400217480592994">Chrome'is alla- ja üleslaaditavate failide sisu skannitakse.</translation>
 <translation id="1292701964462482250">„Teie arvutis olev tarkvara ei luba Chrome'il veebiga turvaliselt ühendust luua” (ainult Windowsi arvutid)</translation>
 <translation id="1294154142200295408">Käsurea variatsioonid</translation>
 <translation id="129553762522093515">Viimati suletud</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Telefoninumber</translation>
 <translation id="2277103315734023688">Keri edasi</translation>
 <translation id="2283340219607151381">Salvesta ja sisesta aadressid</translation>
+<translation id="2288422996159078444">Kõike, mida sisestate, mis tahes lehti, mida vaatate, või mis tahes muid veebitoiminguid jälgitakse. Saitide sisu võidakse teie teadmata muuta.</translation>
 <translation id="2289385804009217824">Kärbi</translation>
 <translation id="2292556288342944218">Teie juurdepääs Internetile on blokeeritud</translation>
 <translation id="2297722699537546652">B5 (ümbrik)</translation>
@@ -436,6 +439,7 @@
 <translation id="2989742184762224133">Kaks kirjaklambrit ülal</translation>
 <translation id="2991174974383378012">Veebisaitidega jagamine</translation>
 <translation id="2991571918955627853">Te ei saa saiti <ph name="SITE" /> praegu külastada, sest veebisait kasutab HSTS-i. Võrguvead ja -rünnakud on tavaliselt ajutised, nii et leht tõenäoliselt hiljem töötab.</translation>
+<translation id="2996674880327704673">Soovitused Google'ilt</translation>
 <translation id="3005723025932146533">Kuva salvestatud koopia</translation>
 <translation id="3008447029300691911">Sisestage krediitkaardi <ph name="CREDIT_CARD" /> CVC. Kui selle kinnitate, jagatakse teie kaardi üksikasju selle saidiga.</translation>
 <translation id="3010559122411665027">Loendi kirje „<ph name="ENTRY_INDEX" />”: <ph name="ERROR" /></translation>
@@ -448,6 +452,7 @@
 <translation id="3060227939791841287">C9 (ümbrik)</translation>
 <translation id="3061707000357573562">Teenuse paikamine</translation>
 <translation id="3064966200440839136">Väljute inkognito režiimist, et välise rakenduse kaudu maksta. Kas soovite jätkata?</translation>
+<translation id="3086579638707268289">Teie tegevusi veebis jälgitakse</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Lisage kättesaamisaadress</translation>
 <translation id="3105172416063519923">Vara ID:</translation>
@@ -500,6 +505,7 @@
 <translation id="3369192424181595722">Kella viga</translation>
 <translation id="337363190475750230">Eraldatud</translation>
 <translation id="3377188786107721145">Viga reegli sõelumisel</translation>
+<translation id="3377736046129930310">Kasutage kaartide kiiremaks kinnitamiseks ekraanilukku</translation>
 <translation id="3380365263193509176">Tundmatu viga</translation>
 <translation id="3380864720620200369">Kliendi ID:</translation>
 <translation id="3387261909427947069">Makseviisid</translation>
@@ -665,6 +671,7 @@
 <translation id="4194250254487269611">Teie kaarti ei saa praegu salvestada</translation>
 <translation id="4196861286325780578">&amp;Teisalda uuesti</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Kontrollige tulemüüri ja viirusetõrje seadistusi<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">sisselogimiskuva profiil</translation>
 <translation id="4215751373031079683">7x9 (ümbrik)</translation>
 <translation id="4220128509585149162">Krahhid</translation>
 <translation id="422022731706691852">Saidil <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> asuvad ründajad võivad proovida meelitada teid installima programme, mis kahjustavad sirvimiskogemust (nt muudavad avalehte või kuvavad külastatavatel saitidel lisareklaame). <ph name="BEGIN_LEARN_MORE_LINK" />Lisateave<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -747,6 +754,7 @@
 <translation id="4515275063822566619">Kaardid ja aadressid pärinevad Chrome'ist ning teie Google'i kontolt (<ph name="ACCOUNT_EMAIL" />). Neid saate hallata menüüs <ph name="BEGIN_LINK" />Seaded<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Comm-10 (ümbrik)</translation>
 <translation id="4522570452068850558">Üksikasjad</translation>
+<translation id="4524138615196389145">Kinnitage oma kaardid kiiremini, kasutades edaspidi WebAuthn-autentimist</translation>
 <translation id="4524805452350978254">Halda kaarte</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -858,6 +866,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64-bitine)</translation>
+<translation id="5121469660360593280">Administraatoriga jagatakse andmeid turvasündmuste kohta, mille Chrome'i ettevõtte tooteversiooni kasutaja kaitse on esile tõstnud. See võib hõlmata mõne külastatava lehe URL-i, failinimesid või metaandmeid ja kasutajanime, mida kasutate oma seadmesse ja Chrome'i sisselogimiseks.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Kaardi kinnitamine</translation>
 <translation id="5135404736266831032">Halda aadresse …</translation>
@@ -869,6 +878,7 @@
 <translation id="5159010409087891077">Avage leht uues inkognito aknas (⇧ ⌘ N)</translation>
 <translation id="516920405563544094">Sisestage krediitkaardi <ph name="CREDIT_CARD" /> CVC. Pärast kinnitamist jagatakse teie Google'i kontol oleva kaardi üksikasju selle saidiga.</translation>
 <translation id="5169827969064885044">Võite kaotada juurdepääsu oma organisatsiooni kontole või teie identiteet võidakse varastada. Chrome soovitab teil kohe oma parooli muuta.</translation>
+<translation id="5170017743895942767">Chrome'i ettevõtte tooteversiooni kasutaja kaitse</translation>
 <translation id="5171045022955879922">Otsige või sisestage URL</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Masin</translation>
@@ -989,6 +999,7 @@
 <translation id="5730040223043577876">Chrome soovitab teil parooli lähtestada, kui kasutasite seda ka muudel saitidel.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Salvestage kaart oma Google'i kontole}other{Salvestage kaardid oma Google'i kontole}}</translation>
 <translation id="5763042198335101085">Sisestage kehtiv e-posti aadress</translation>
+<translation id="5763703224595565476">Administraator lubas teie brauseris Chrome'i ettevõtte tooteversiooni kasutaja kaitse. Chrome'i ettevõtte tooteversiooni kasutaja kaitsel on juurdepääs osadele teie andmetele.</translation>
 <translation id="5765072501007116331">Kohaletoimetamisviiside ja nõuete nägemiseks valige aadress</translation>
 <translation id="5778550464785688721">MIDI-seadmete täielik juhtimine</translation>
 <translation id="5781136890105823427">Katse on lubatud</translation>
@@ -1068,6 +1079,7 @@
 <translation id="6094273045989040137">Lisa märkus</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">Aadressil <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> võib teie Google'i kontol olla muus vormis sirvimisajalugu</translation>
+<translation id="6120179357481664955">Kas jätta teie UPI ID meelde?</translation>
 <translation id="6132597952260690497">Installitud laienduste ja pistikprogrammide teave</translation>
 <translation id="6146055958333702838">Kontrollige kaableid ning taaskäivitage kõik ruuterid, modemid ja muud
     kasutuses olevad võrguseadmed.</translation>
@@ -1083,6 +1095,7 @@
 <translation id="6221345481584921695">Google'i ohutu sirvimise teenus <ph name="BEGIN_LINK" />tuvastas hiljuti pahavara<ph name="END_LINK" /> saidil <ph name="SITE" />. Tavaliselt turvalisi veebisaite võidakse mõnikord nakatada pahavaraga. Pahatahtlik sisu pärineb hostilt <ph name="SUBRESOURCE_HOST" />, mis on tuntud pahavara levitaja.</translation>
 <translation id="6234122620015464377">Kärbi pärast iga dokumenti</translation>
 <translation id="6240447795304464094">Google Pay logo</translation>
+<translation id="6241121617266208201">Peida soovitused</translation>
 <translation id="6251924700383757765">Privaatsuseeskirjad</translation>
 <translation id="6254436959401408446">Selle lehe avamiseks pole piisavalt mälu</translation>
 <translation id="625755898061068298">Otsustasite turvahoiatused selle saidi puhul keelata.</translation>
@@ -1129,6 +1142,7 @@
 <translation id="6409754798200046165">Sisestasite äsja oma parooli kahtlasele saidile. Chrome soovitab teil kohe oma parooli muuta.</translation>
 <translation id="6410264514553301377">Sisestage krediitkaardi <ph name="CREDIT_CARD" /> aegumiskuupäev ja CVC</translation>
 <translation id="6415778972515849510">Chromium aitab teil oma Google'i kontot kaitsta ja parooli muuta.</translation>
+<translation id="6423385022588644828">Kinnitage oma kaardid kiiremini, kasutades edaspidi funktsiooni Touch ID</translation>
 <translation id="6427730057873428458">Väravakujuliselt volditud</translation>
 <translation id="6433490469411711332">Kontaktandmete muutmine</translation>
 <translation id="6433595998831338502">Host <ph name="HOST_NAME" /> keeldus ühendamast.</translation>
@@ -1199,12 +1213,14 @@
 <translation id="6786747875388722282">Laiendused</translation>
 <translation id="6790428901817661496">Esita</translation>
 <translation id="679355240208270552">Seda eiratakse, kuna vaikeotsing ei ole reegliga lubatud.</translation>
+<translation id="6794951432696553238">Kinnitage oma kaardid kiiremini, kasutades edaspidi funktsiooni Google Hello</translation>
 <translation id="681021252041861472">Kohustuslik väli</translation>
 <translation id="6810899417690483278">Kohandamise ID</translation>
 <translation id="6825578344716086703">Püüdsite jõuda domeenile <ph name="DOMAIN" />, kuid server esitas sertifikaadi, mis on allkirjastatud nõrga allkirjaalgoritmiga (nt SHA-1). See tähendab, et serveri esitatud turvamandaadid võivad olla võltsitud ja server ei pruugi olla see, mida eeldate (võimalik, et suhtlete ründajaga).</translation>
 <translation id="6826370046007623921">Andmekao vältimine</translation>
 <translation id="6831043979455480757">Tõlgi</translation>
 <translation id="6839929833149231406">Ala</translation>
+<translation id="6846340164947227603">Kasuta virtuaalkaardi numbrit …</translation>
 <translation id="6852204201400771460">Kas soovite rakenduse uuesti laadida?</translation>
 <translation id="6865412394715372076">Seda kaarti ei saa praegu kinnitada</translation>
 <translation id="6868206169573555318">Taaskäivita värskendamiseks</translation>
@@ -1233,6 +1249,7 @@
 <translation id="6989763994942163495">Kuva täpsemad seaded ...</translation>
 <translation id="6993898126790112050">6x9 (ümbrik)</translation>
 <translation id="6996312675313362352">Tõlgi alati: <ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">Kasutage kaartide kiiremaks kinnitamiseks teenust Windows Hello</translation>
 <translation id="7012363358306927923">Hiina UnionPay</translation>
 <translation id="7016992613359344582">Tasud võivad olla ühekordsed või korduvad ja need ei pruugi olla ilmselged.</translation>
 <translation id="7029809446516969842">Paroolid</translation>
@@ -1243,6 +1260,7 @@
 <translation id="7064851114919012435">Kontaktteave</translation>
 <translation id="7075452647191940183">Taotlus on liiga suur</translation>
 <translation id="7079718277001814089">See sait sisaldab pahavara</translation>
+<translation id="7081308185095828845">See funktsioon pole teie seadmes saadaval</translation>
 <translation id="7087282848513945231">Maakond</translation>
 <translation id="7090678807593890770">Sisestage Google'isse otsing <ph name="LINK" /></translation>
 <translation id="7108338896283013870">Peida</translation>
@@ -1296,9 +1314,11 @@
 <translation id="733923710415886693">Serveri sertifikaati ei avalikustatud sertifikaadi läbipaistvuse reegli kaudu.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">On seotud:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> lubas teie brauseris Chrome'i ettevõtte tooteversiooni kasutaja kaitse. Chrome'i ettevõtte tooteversiooni kasutaja kaitsel on juurdepääs osadele teie andmetele.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Käsurida</translation>
 <translation id="7372973238305370288">otsingutulemus</translation>
+<translation id="7374733840632556089">Selle probleemi põhjuseks on teie või kellegi teise installitud sertifikaat. Seda sertifikaati kasutatakse võrkude jälgimiseks ja ühenduste katkestamiseks ning Chrome ei usalda seda. Kuigi mõnel puhul on jälgimine seaduslik (nt kooli või ettevõtte võrgus), soovib Chrome tagada, et oleksite sellest teadlik ka juhul, kui te ei saa seda peatada. Jälgimine võib toimuda veebiühendusega brauseris või rakenduses.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Meedia juhtnupud</translation>
 <translation id="7378627244592794276">Ei</translation>
@@ -1327,6 +1347,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Vaadake lisateavet<ph name="END_LINK" /> probleemi kohta.</translation>
 <translation id="7455133967321480974">Kasuta globaalset vaikeseadet (blokeeri)</translation>
 <translation id="7460618730930299168">Filtreerimine erineb valitust. Kas jätkata?</translation>
+<translation id="7464821087936825778">Põnev otsingurežiim</translation>
 <translation id="7473891865547856676">Tänan, ei</translation>
 <translation id="7481312909269577407">Edasta</translation>
 <translation id="7485870689360869515">Andmeid ei leitud.</translation>
@@ -1548,6 +1569,7 @@
 <translation id="8559762987265718583">Privaatset ühendust ei saa domeeniga <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> luua, kuna seadme kuupäev ja kellaaeg (<ph name="DATE_AND_TIME" />) on valed.</translation>
 <translation id="8564985650692024650">Chromium soovitab teil organisatsiooni <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> parooli lähtestada, kui kasutasite seda ka muudel saitidel.</translation>
 <translation id="8571890674111243710">Lehe tõlkimine <ph name="LANGUAGE" /> keelde...</translation>
+<translation id="8574899947864779331">Kasutage kaartide kiiremaks kinnitamiseks Touch ID-d</translation>
 <translation id="858637041960032120">Lisage telefoninumber</translation>
 <translation id="860043288473659153">Kaardiomaniku nimi</translation>
 <translation id="8616822740383114808">Selle seade jõustas „<ph name="ENFORCING_SETTING" />” lehel „<ph name="SETTINGS_PAGE" />”</translation>
diff --git a/components/strings/components_strings_fa.xtb b/components/strings/components_strings_fa.xtb
index 0eea16f21..773adbc 100644
--- a/components/strings/components_strings_fa.xtb
+++ b/components/strings/components_strings_fa.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">بار کردن صفحه در فرصتی دیگر</translation>
 <translation id="1015730422737071372">جزئیات بیشتری ارائه دهید</translation>
 <translation id="1021110881106174305">کارت‌های قابل‌ قبول</translation>
+<translation id="1021753677514347426">‏علت این مشکل وجود یکی از گواهی‌هایی است که شما یا فردی دیگر در دستگاهتان نصب کرده‌اید. از این گواهی برای نظارت بر شبکه‌ها و رهگیری آن‌ها استفاده می‌شود و مورداعتماد Chromium نیست. علی‌رغم وجود برخی موارد قانونی برای نظارت، مثلاً نظارت بر شبکه‌های مدارس و شرکت‌ها، Chromium می‌خواهد مطمئن شود که شما از این جریان آگاهی دارید، حتی اگر نتوانید آن را متوقف کنید. نظارت ممکن است در هر مرورگر یا برنامه‌ای که به وب دسترسی دارد انجام شود.</translation>
 <translation id="1032854598605920125">چرخش در جهت عقربه‌های ساعت</translation>
 <translation id="1036348656032585052">خاموش کردن</translation>
 <translation id="1038842779957582377">نام ناشناس</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">گزارش خرابی ثبت‌شده در <ph name="CRASH_TIME" /> (هنوز بارگذاری نشده است یا نادیده‌ گرفته شده است)</translation>
 <translation id="1270502636509132238">روش تحویل گرفتن</translation>
 <translation id="1285320974508926690">این سایت هرگز ترجمه نشود</translation>
+<translation id="1285400217480592994">‏محتوای فایل‌هایی که در Chrome بارگیری یا بارگذاری می‌شود اسکن شود.</translation>
 <translation id="1292701964462482250">‏«نرم‌افزاری در رایانه شما مانع از اتصال ایمن Chrome به وب می‌شود» (فقط رایانه‌های Windows)</translation>
 <translation id="1294154142200295408">انواع مختلف خط فرمان</translation>
 <translation id="129553762522093515">اخیراً بسته‌شده</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">شماره تلفن</translation>
 <translation id="2277103315734023688">رفتن به جلو</translation>
 <translation id="2283340219607151381">ذخیره و تکمیل نشانی</translation>
+<translation id="2288422996159078444">هرچه تایپ می‌کنید، هر صفحه‌ای که می‌ببینید، یا هر فعالیتی که در وب تماشا می‌شود. محتوای سایت‌ها ممکن است بدون اطلاع شما تغییر کند.</translation>
 <translation id="2289385804009217824">برش دادن</translation>
 <translation id="2292556288342944218">دسترسی شما به اینترنت مسدود است</translation>
 <translation id="2297722699537546652">B5 (Envelope)</translation>
@@ -435,6 +438,7 @@
 <translation id="2989742184762224133">دو منگنه در بالا</translation>
 <translation id="2991174974383378012">اشتراک‌گذاری با وب‌سایت‌ها</translation>
 <translation id="2991571918955627853">‏درحال‌حاضر نمی‌توانید از <ph name="SITE" /> دیدن کنید، زیرا این وب‌سایت از HSTS استفاده می‌کند. خطاهای شبکه و حمله‌ها معمولاً موقتی هستند، بنابراین احتمالاً این صفحه بعداً کار خواهد کرد.</translation>
+<translation id="2996674880327704673">‏پیشنهادهای Google</translation>
 <translation id="3005723025932146533">نمایش کپی ذخیره شده</translation>
 <translation id="3008447029300691911">‏CVC کارت <ph name="CREDIT_CARD" /> را وارد کنید. بعد از تأیید، جزئیات کارت شما با این سایت به اشتراک گذاشته می‌شود.</translation>
 <translation id="3010559122411665027">ورودی فهرست "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -447,6 +451,7 @@
 <translation id="3060227939791841287">C9 (Envelope)</translation>
 <translation id="3061707000357573562">سرویس وصله</translation>
 <translation id="3064966200440839136">درحال خروج از حالت ناشناس، برای پرداخت ازطریق یک برنامه خارجی. ادامه می‌دهید؟</translation>
+<translation id="3086579638707268289">فعالیتتان در وب تحت‌نظارت است</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">افزودن نشانی تحویل گرفتن</translation>
 <translation id="3105172416063519923">شناسه دارایی:</translation>
@@ -499,6 +504,7 @@
 <translation id="3369192424181595722">خطای ساعت</translation>
 <translation id="337363190475750230">لغو مجوز شد</translation>
 <translation id="3377188786107721145">خطای تجزیه خط‌مشی</translation>
+<translation id="3377736046129930310">برای به‌تأیید رساندن سریع‌تر کارت‌ها، از قفل صفحه استفاده شود</translation>
 <translation id="3380365263193509176">خطای ناشناس</translation>
 <translation id="3380864720620200369">شناسه سرویس‌گیرنده:</translation>
 <translation id="3387261909427947069">روش‌های پرداخت</translation>
@@ -664,6 +670,7 @@
 <translation id="4194250254487269611">متأسفیم، درحال‌حاضر نمی‌توان کارت شما را ذخیره کرد</translation>
 <translation id="4196861286325780578">&amp;انجام مجدد انتقال</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />بررسی پیکربندی آنتی‌ویروس و دیوار آتش<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">نمایه صفحه ورود به سیستم</translation>
 <translation id="4215751373031079683">7x9 (Envelope)</translation>
 <translation id="4220128509585149162">خرابی ها</translation>
 <translation id="422022731706691852">شاید مهاجم‌ها در <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> تلاش کنند شما را فریب دهند تا برنامه‌هایی نصب کنید که برای تجربه مرورتان مضر هستند (برای مثال با تغییر دادن صفحه اصلی‌تان یا نشان دادن آگهی‌های اضافی در سایت‌هایی که دیدن می‌کنید). <ph name="BEGIN_LEARN_MORE_LINK" />بیشتر بدانید<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -746,6 +753,7 @@
 <translation id="4515275063822566619">‏کارت‌ها و نشانی‌ها از Chrome و حساب Google شما (<ph name="ACCOUNT_EMAIL" />) هستند. می‌توانید آن‌ها را در <ph name="BEGIN_LINK" />تنظیمات<ph name="END_LINK" /> مدیریت کنید.</translation>
 <translation id="4517607026994743406">Comm-10 (Envelope)</translation>
 <translation id="4522570452068850558">جزئیات</translation>
+<translation id="4524138615196389145">‏ازاین‌پس، با استفاده از WebAuthn کارت‌هایتان را سریع‌تر به‌تأیید برسانید</translation>
 <translation id="4524805452350978254">مدیریت کارت‌ها</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -857,6 +865,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(۶۴ بیت)</translation>
+<translation id="5121469660360593280">‏داده‌های مرتبط با رویدادهای امنیتی را که «محافظت از کاربر سازمانی در Chrome» پرچم‌گذاری کرده است، با سرپرستتان هم‌رسانی کنید. ممکن است شامل نشانی‌های وب صفحاتی که بازدید می‌کنید، نام فایل‌ها یا فراداده‌ها، و نام کاربری‌ای که برای ورود به سیستم دستگاهتان و Chrome استفاده می‌کنید شود.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">کارتتان را تأیید کنید</translation>
 <translation id="5135404736266831032">مدیریت نشانی‌ها…</translation>
@@ -868,6 +877,7 @@
 <translation id="5159010409087891077">‏صفحه را در پنجره «ناشناس» جدیدی باز کنید (N⌘⇧)</translation>
 <translation id="516920405563544094">‏CVC کارت <ph name="CREDIT_CARD" /> را وارد کنید. بعد از تأیید کردن، جزئیات کارت از حساب Google شما با این سایت هم‌رسانی می‌شود.</translation>
 <translation id="5169827969064885044">‏ممکن است دسترسی به حساب سازمانتان را از دست بدهید یا به سرقت هویت دچار شوید. Chrome توصیه می‌کند هم‌اکنون گذرواژه‌تان را تغییر دهید.</translation>
+<translation id="5170017743895942767">‏محافظت از کاربر سازمانی در Chrome</translation>
 <translation id="5171045022955879922">‏جستجو یا تایپ URL</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">دستگاه</translation>
@@ -988,6 +998,7 @@
 <translation id="5730040223043577876">‏Chrome توصیه می‌کند اگر از گذرواژه‌تان در سایت‌های دیگری استفاده کردید آن را بازنشانی کنید.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{‏ذخیره کردن کارت در حساب Google شما}one{‏ذخیره کردن کارت‌ها در حساب Google}other{‏ذخیره کردن کارت‌ها در حساب Google}}</translation>
 <translation id="5763042198335101085">نشانی ایمیل معتبری وارد کنید</translation>
+<translation id="5763703224595565476">‏سرپرستتان «محافظت از کاربر سازمانی در Chrome» را در مرورگر فعال کرده است. «محافظت از کاربر سازمانی در Chrome» به برخی از داده‌هایتان دسترسی دارد.</translation>
 <translation id="5765072501007116331">برای دیدن روش‌های تحویل و شرایط موردنیاز، یک نشانی انتخاب کنید</translation>
 <translation id="5778550464785688721">‏کنترل کامل دستگاه‌های MIDI</translation>
 <translation id="5781136890105823427">آزمایش فعال شد</translation>
@@ -1067,6 +1078,7 @@
 <translation id="6094273045989040137">حاشیه‌نویسی</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">‏ممکن است حساب Google شما اشکال دیگری از سابقه مرور در <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> داشته باشد</translation>
+<translation id="6120179357481664955">‏شناسه «رابط پرداخت‌های یکپارچه» (UPI) شما به‌خاطر سپرده شود؟</translation>
 <translation id="6132597952260690497">اطلاعات مربوط به افزونه‌ها و افزایه‌های نصب‌شده</translation>
 <translation id="6146055958333702838">همه کابل‌ها را بررسی کنید و همه ره‌یاب‌ها، مودم‌ها، یا دیگر دستگاه‌های
    شبکه‌ای را که ممکن است درحال استفاده از آن‌ها باشید مجدداً راه‌اندازی کنید.</translation>
@@ -1082,6 +1094,7 @@
 <translation id="6221345481584921695">‏Google Safe Browsing به تازگی در <ph name="SITE" />، ‏<ph name="BEGIN_LINK" />بدافزار شناسایی کرده است<ph name="END_LINK" />. گاهی اوقات وب‌سایت‌هایی که معمولاً امن هستند، با بدافزار آلوده می‌شوند. منبع محتوای مخرب <ph name="SUBRESOURCE_HOST" /> است که یک توزیع‌کننده بدافزار شناخته شده، می‌باشد.</translation>
 <translation id="6234122620015464377">برش دادن بعد از چاپ هر سند</translation>
 <translation id="6240447795304464094">‏نشان‌واره Google Pay</translation>
+<translation id="6241121617266208201">پنهان کردن پیشنهادها</translation>
 <translation id="6251924700383757765">خط‌مشی رازداری</translation>
 <translation id="6254436959401408446">حافظه کافی برای باز کردن این صفحه وجود ندارد</translation>
 <translation id="625755898061068298">انتخاب کردید اخطارهای امنیتی برای این سایت غیرفعال شود.</translation>
@@ -1128,6 +1141,7 @@
 <translation id="6409754798200046165">‏اخیراً گذرواژه‌تان را در سایتی فریب‌کار وارد کرده‌اید. Chrome توصیه می‌کند هم‌اکنون گذرواژه‌تان را تغییر دهید.</translation>
 <translation id="6410264514553301377">‏CVC‏ و تاریخ انقضای <ph name="CREDIT_CARD" /> را وارد کنید</translation>
 <translation id="6415778972515849510">‏Chromium می‌تواند کمک کند از حساب Google خود محافظت کنید و گذرواژه‌تان را تغییر دهید.</translation>
+<translation id="6423385022588644828">ازاین‌پس، برای به‌تأیید رساندن سریع‌تر کارت‌ها، از «شناسه لمسی» استفاده شود</translation>
 <translation id="6427730057873428458">تاخوردگی دروازه‌ای</translation>
 <translation id="6433490469411711332">ویرایش اطلاعات تماس</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> از اتصال خودداری کرد.</translation>
@@ -1198,12 +1212,14 @@
 <translation id="6786747875388722282">افزونه‌ها</translation>
 <translation id="6790428901817661496">پخش</translation>
 <translation id="679355240208270552">نادیده گرفته شد، زیرا جستجوی پیش‌فرض توسط خط‌مشی فعال نشده است.</translation>
+<translation id="6794951432696553238">‏ازاین‌پس، برای به‌تأیید رساندن سریع‌تر کارت‌ها، از Windows Hello استفاده شود</translation>
 <translation id="681021252041861472">فیلد ضروری</translation>
 <translation id="6810899417690483278">شناسه سفارشی‌سازی</translation>
 <translation id="6825578344716086703">‏تلاش کردید به <ph name="DOMAIN" /> دسترسی داشته باشید، اما گواهینامه ارائه‌شده از سوی سرور با استفاده از یک الگوریتم امضای ضعیف (مانند SHA-1) امضا شده است. یعنی ممکن است اعتبارنامه امنیتی ارائه‌شده از سوی سرور جعلی باشد و ممکن است سرور، سرور موردانتظار شما نباشد (ممکن است با یک مهاجم در ارتباط باشید).</translation>
 <translation id="6826370046007623921">جلوگیری از از بین رفتن داده‌ها</translation>
 <translation id="6831043979455480757">ترجمه</translation>
 <translation id="6839929833149231406">ناحیه</translation>
+<translation id="6846340164947227603">استفاده از شماره کارت مجازی...</translation>
 <translation id="6852204201400771460">برنامه تازه‌سازی شود؟</translation>
 <translation id="6865412394715372076">درحال‌حاضر نمی‌توان این کارت را به تأیید رساند</translation>
 <translation id="6868206169573555318">برای به‌روزرسانی، دوباره راه‌اندازی کنید</translation>
@@ -1232,6 +1248,7 @@
 <translation id="6989763994942163495">نمایش تنظیمات پیشرفته ...</translation>
 <translation id="6993898126790112050">6x9 (Envelope)</translation>
 <translation id="6996312675313362352"><ph name="ORIGINAL_LANGUAGE" /> همیشه ترجمه شود</translation>
+<translation id="7004583254764674281">‏برای به‌تأیید رساندن سریع‌تر کارت‌ها، از Windows Hello استفاده شود</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">ممکن است این هزینه‌ها یک‌باره یا تکرارشونده باشند و واضح نباشند.</translation>
 <translation id="7029809446516969842">گذرواژه‌ها</translation>
@@ -1242,6 +1259,7 @@
 <translation id="7064851114919012435">اطلاعات تماس</translation>
 <translation id="7075452647191940183">درخواست خیلی بزرگ است</translation>
 <translation id="7079718277001814089">این سایت حاوی بدافزار است</translation>
+<translation id="7081308185095828845">این ویژگی در دستگاهتان دردسترس نیست.</translation>
 <translation id="7087282848513945231">بخش/شهرستان</translation>
 <translation id="7090678807593890770">‏جستجوی <ph name="LINK" /> در Google</translation>
 <translation id="7108338896283013870">عدم نمایش</translation>
@@ -1295,9 +1313,11 @@
 <translation id="733923710415886693">گواهی سرور از طریق شفافیت گواهینامه نشان داده نشده بود.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">وابسته است:</translation>
+<translation id="73479065977517481">‏<ph name="ENROLLMENT_DOMAIN" /> «محافظت از کاربر سازمانی در Chrome» را در مرورگرتان فعال کرده است. «محافظت از کاربر سازمانی در Chrome» به برخی از داده‌هایتان دسترسی دارد.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">خط فرمان</translation>
 <translation id="7372973238305370288">نتیجه جستجو</translation>
+<translation id="7374733840632556089">‏علت این مشکل وجود یکی از گواهی‌هایی است که شما یا فردی دیگر در دستگاهتان نصب کرده‌اید. از این گواهی برای نظارت بر شبکه‌ها و رهگیری آن‌ها استفاده می‌شود و مورداعتماد Chrome نیست. علی‌رغم وجود برخی موارد قانونی برای نظارت، مثلاً نظارت بر شبکه‌های مدارس و شرکت‌ها، Chrome می‌خواهد مطمئن شود که شما از این جریان آگاهی دارید، حتی اگر نتوانید آن را متوقف کنید. نظارت ممکن است در هر مرورگر یا برنامه‌ای که به وب دسترسی دارد انجام شود.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">کنترل‌های رسانه</translation>
 <translation id="7378627244592794276">نه</translation>
@@ -1326,6 +1346,7 @@
 <translation id="7451311239929941790">درباره این مشکل <ph name="BEGIN_LINK" />بیشتر بدانید<ph name="END_LINK" />.</translation>
 <translation id="7455133967321480974">استفاده از پیش‌فرض جهانی (مسدود)</translation>
 <translation id="7460618730930299168">فیلم در حال نمایش با آنچه انتخاب کرده‌اید متفاوت است. ادامه می‌دهید؟</translation>
+<translation id="7464821087936825778">درحال خروج از حالت جستجو</translation>
 <translation id="7473891865547856676">نه متشکرم</translation>
 <translation id="7481312909269577407">ارسال کردن</translation>
 <translation id="7485870689360869515">هیچ داده‌ای یافت نشد.</translation>
@@ -1547,6 +1568,7 @@
 <translation id="8559762987265718583">اتصال خصوصی به <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> انجام نمی‌شود، زیرا تاریخ و زمان دستگاه شما (<ph name="DATE_AND_TIME" />) نادرست است.</translation>
 <translation id="8564985650692024650">‏Chromium توصیه می‌کند اگر از گذرواژه <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> خود در سایت دیگری استفاده کردید آن را بازنشانی کنید.</translation>
 <translation id="8571890674111243710">ترجمه صفحه به <ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">برای به‌تأیید رساندن سریع‌تر کارت‌ها، از «شناسه لمسی» استفاده شود</translation>
 <translation id="858637041960032120">افزودن شماره تلفن</translation>
 <translation id="860043288473659153">نام صاحب کارت</translation>
 <translation id="8616822740383114808">این تنظیم به‌واسطه «<ph name="ENFORCING_SETTING" />» در »<ph name="SETTINGS_PAGE" />» اعمال شده است</translation>
diff --git a/components/strings/components_strings_fi.xtb b/components/strings/components_strings_fi.xtb
index e232a3a1..479792d 100644
--- a/components/strings/components_strings_fi.xtb
+++ b/components/strings/components_strings_fi.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Lataa sivu myöhemmin</translation>
 <translation id="1015730422737071372">Lisätietoja</translation>
 <translation id="1021110881106174305">Hyväksytyt kortit</translation>
+<translation id="1021753677514347426">Tämän virheen syynä on varmenne, jonka sinä asensit tai joku muu asensi laitteelle. Varmennetta on aiemmin käytetty verkkojen valvontaan ja kaappaamiseen, eikä Chromium luota siihen. Valvomiselle voi olla oikea syy esimerkiksi oppilaitoksen tai yrityksen verkossa. Chromium haluaa kuitenkin varmistaa, että tiedät valvonnasta, vaikka et voi lopettaa sitä. Valvonta voi tapahtua missä tahansa selaimessa tai sovelluksessa, jolla on pääsy verkkoon.</translation>
 <translation id="1032854598605920125">Käännä myötäpäivään</translation>
 <translation id="1036348656032585052">Poista käytöstä</translation>
 <translation id="1038842779957582377">tuntematon nimi</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Kaatumisraportti tallennettu <ph name="CRASH_TIME" /> (ei vielä lähetetty tai ohitettu)</translation>
 <translation id="1270502636509132238">Noutotapa</translation>
 <translation id="1285320974508926690">Älä käännä tätä sivustoa</translation>
+<translation id="1285400217480592994">Tarkista Chromessa lataamiesi tai lähettämiesi tiedostojen sisältö.</translation>
 <translation id="1292701964462482250">Tietokoneelle asennettu ohjelmisto estää Chromea muodostamasta turvallista yhteyttä verkkoon (vain Windows-tietokoneilla)</translation>
 <translation id="1294154142200295408">Komentorivin muunnelmat</translation>
 <translation id="129553762522093515">Hiljattain suljetut välilehdet</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Puhelinnumero</translation>
 <translation id="2277103315734023688">Kelaa eteenpäin</translation>
 <translation id="2283340219607151381">Tallenna ja täytä osoitteet</translation>
+<translation id="2288422996159078444">Joku muu näkee kaikki kirjoittamasi asiat, avaamasi sivut ja muut toimesi verkossa. Sivustojen sisältöä voidaan muuttaa tietämättäsi.</translation>
 <translation id="2289385804009217824">Leikkaus</translation>
 <translation id="2292556288342944218">Internetyhteytesi on estetty</translation>
 <translation id="2297722699537546652">B5 (kirjekuori)</translation>
@@ -436,6 +439,7 @@
 <translation id="2989742184762224133">Kaksi niittiä yläreunassa</translation>
 <translation id="2991174974383378012">Jakaminen verkkosivustojen kanssa</translation>
 <translation id="2991571918955627853"><ph name="SITE" /> ei ole juuri nyt käytettävissä, koska se käyttää HSTS:ää. Verkkovirheet ja hyökkäykset ovat yleensä väliaikaisia, joten sivu luultavasti toimii myöhemmin.</translation>
+<translation id="2996674880327704673">Googlen ehdotukset</translation>
 <translation id="3005723025932146533">Näytä tallennettu kopio</translation>
 <translation id="3008447029300691911">Anna kortin <ph name="CREDIT_CARD" /> CVC. Vahvistamisen jälkeen korttisi tiedot jaetaan sivuston kanssa.</translation>
 <translation id="3010559122411665027">Luettelokohde "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -448,6 +452,7 @@
 <translation id="3060227939791841287">C9 (kirjekuori)</translation>
 <translation id="3061707000357573562">Virheenkorjauspalvelu</translation>
 <translation id="3064966200440839136">Incognito-tilasta poistutaan ulkoisessa sovelluksessa maksamisen vuoksi. Haluatko jatkaa?</translation>
+<translation id="3086579638707268289">Toimintaasi verkossa valvotaan</translation>
 <translation id="3095940652251934233">Tiliote</translation>
 <translation id="3096100844101284527">Lisää noutopaikan osoite</translation>
 <translation id="3105172416063519923">Laitteen tunnus:</translation>
@@ -501,6 +506,7 @@
 <translation id="3369192424181595722">Väärä kellonaika</translation>
 <translation id="337363190475750230">Poistettu käytöstä</translation>
 <translation id="3377188786107721145">Virhe jäsennettäessä käytäntöä</translation>
+<translation id="3377736046129930310">Vahvista kortteja nopeammin näytön lukituksella</translation>
 <translation id="3380365263193509176">Tuntematon virhe</translation>
 <translation id="3380864720620200369">Asiakastunnus:</translation>
 <translation id="3387261909427947069">Maksutavat</translation>
@@ -666,6 +672,7 @@
 <translation id="4194250254487269611">Korttia ei voi juuri nyt tallentaa</translation>
 <translation id="4196861286325780578">&amp;Toista siirto</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Tarkista palomuurin ja virustorjuntaohjelmiston määritykset.<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">kirjautumisnäytön profiili</translation>
 <translation id="4215751373031079683">7x9 (kirjekuori)</translation>
 <translation id="4220128509585149162">Kaatuu</translation>
 <translation id="422022731706691852">Sivustolle <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> hyökännyt taho voi yrittää huijata sinua asentamaan ohjelmia, jotka heikentävät selauskokemustasi (esimerkiksi vaihtamalla aloitussivusi tai näyttämällä ylimääräisiä mainoksia avaamillasi sivustoilla). <ph name="BEGIN_LEARN_MORE_LINK" />Lisätietoja<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -748,6 +755,7 @@
 <translation id="4515275063822566619">Kortit ja osoitteet ovat peräisin Chromesta ja Google-tililtäsi (<ph name="ACCOUNT_EMAIL" />). Voit hallinnoida niitä <ph name="BEGIN_LINK" />asetuksissa<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Comm-10 (kirjekuori)</translation>
 <translation id="4522570452068850558">Tiedot</translation>
+<translation id="4524138615196389145">Vahvista kortit jatkossa nopeammin WebAuthn-todennuksella</translation>
 <translation id="4524805452350978254">Määritä kortit</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -859,6 +867,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">Eurooppalainen-Edp</translation>
 <translation id="5115563688576182185">(64-bittinen)</translation>
+<translation id="5121469660360593280">Jaa järjestelmänvalvojalle dataa Chrome Enterprisen käyttäjäsuojan merkitsemistä tietoturvatapahtumista. Tämä voi sisältää avaamiesi sivujen URL-osoitteita, tiedostonimiä tai sisällönkuvaustietoja ja käyttäjänimen, jolla kirjaudut sisään laitteellesi ja Chromeen.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Vahvista kortti</translation>
 <translation id="5135404736266831032">Hallinnoi osoitteita…</translation>
@@ -870,6 +879,7 @@
 <translation id="5159010409087891077">Avaa sivu uudessa incognito-ikkunassa (⇧ + ⌘ + N).</translation>
 <translation id="516920405563544094">Anna kortin <ph name="CREDIT_CARD" /> CVC. Vahvistamisen jälkeen korttitiedot Google-tililtäsi jaetaan tämän sivuston kanssa.</translation>
 <translation id="5169827969064885044">Voit menettää organisaatiosi tilin käyttöoikeuden tai joutua identiteettivarkauden uhriksi. Chrome suosittelee vaihtamaan salasanan välittömästi.</translation>
+<translation id="5170017743895942767">Chrome Enterprisen käyttäjäsuojaus</translation>
 <translation id="5171045022955879922">Kirjoita hakusanoja tai URL-osoite</translation>
 <translation id="5171689220826475070">European Fanfold</translation>
 <translation id="5172758083709347301">Kaikki tietokoneen käyttäjät</translation>
@@ -990,6 +1000,7 @@
 <translation id="5730040223043577876">Chrome suosittelee salasanan vaihtamista, jos olet käyttänyt sitä myös muilla sivustoilla.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Tallenna kortti Google-tilillesi}other{Tallenna kortit Google-tilillesi}}</translation>
 <translation id="5763042198335101085">Anna voimassa oleva sähköpostiosoite.</translation>
+<translation id="5763703224595565476">Järjestelmänvalvoja on ottanut Chrome Enterprisen käyttäjäsuojan käyttöön selaimellasi. Chrome Enterprisen käyttäjäsuoja pääsee osaan datastasi.</translation>
 <translation id="5765072501007116331">Valitse osoite, niin näet toimitustavat ja vaatimukset.</translation>
 <translation id="5778550464785688721">MIDI-laitteiden täysi käyttöoikeus</translation>
 <translation id="5781136890105823427">Kokeilu käytössä</translation>
@@ -1069,6 +1080,7 @@
 <translation id="6094273045989040137">Tee merkintä</translation>
 <translation id="6104072995492677441">JIS B6 (128 mm x 182 mm)</translation>
 <translation id="610911394827799129">Google-tililläsi voi olla muita selaushistoriatietoja osoitteessa <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
+<translation id="6120179357481664955">Muistatko UPI-tunnuksesi?</translation>
 <translation id="6132597952260690497">Tietoja asennetuista laajennuksista</translation>
 <translation id="6146055958333702838">Tarkista kaikki kaapelit ja käynnistä uudelleen reitittimet, modeemit ja muut
     käytössä olevat verkkolaitteet.</translation>
@@ -1084,6 +1096,7 @@
 <translation id="6221345481584921695">Google-selaussuoja havaitsi sivustossa <ph name="SITE" /> äskettäin <ph name="BEGIN_LINK" />haittaohjelmia<ph name="END_LINK" />. Tavallisesti turvalliset sivustot voivat joskus saada haittaohjelmatartunnan. Haitallinen sisältö on peräisin tunnetusta haittaohjelmien jakelusivustosta nimeltä <ph name="SUBRESOURCE_HOST" />.</translation>
 <translation id="6234122620015464377">Leikkaa jokaisen dokumentin jälkeen</translation>
 <translation id="6240447795304464094">Google Pay ‑logo</translation>
+<translation id="6241121617266208201">Piilota ehdotukset</translation>
 <translation id="6251924700383757765">Tietosuojakäytäntö</translation>
 <translation id="6254436959401408446">Muisti ei riitä sivun avaamiseen</translation>
 <translation id="625755898061068298">Olet poistanut tämän sivuston tietoturvavaroitukset käytöstä.</translation>
@@ -1130,6 +1143,7 @@
 <translation id="6409754798200046165">Lisäsit juuri salasanasi harhaanjohtavalle sivustolle. Chrome suosittelee salasanan vaihtamista välittömästi.</translation>
 <translation id="6410264514553301377">Anna kortin <ph name="CREDIT_CARD" /> vanhentumispäivä ja CVC</translation>
 <translation id="6415778972515849510">Chromium voi auttaa suojaamaan Google-tiliäsi ja vaihtamaan salasanasi.</translation>
+<translation id="6423385022588644828">Vahvista kortit jatkossa nopeammin Touch ID:llä</translation>
 <translation id="6427730057873428458">Lehtitaite</translation>
 <translation id="6433490469411711332">Muokkaa yhteystietoja</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> kieltäytyi muodostamasta yhteyttä.</translation>
@@ -1200,12 +1214,14 @@
 <translation id="6786747875388722282">Laajennukset</translation>
 <translation id="6790428901817661496">Toista</translation>
 <translation id="679355240208270552">Ohitettu, koska oletushaku on poistettu käytöstä käytännön johdosta</translation>
+<translation id="6794951432696553238">Vahvista kortit jatkossa nopeammin Windows Hellolla</translation>
 <translation id="681021252041861472">Pakollinen kenttä</translation>
 <translation id="6810899417690483278">Muokkaustunnus</translation>
 <translation id="6825578344716086703"><ph name="DOMAIN" />-palvelin, johon yritit muodostaa yhteyden, esitti heikkoa allekirjoitusalgoritmia käyttävän varmenteen (esim. SHA-1). Tästä syystä palvelimen esittämät tunnistetiedot saattavat olla väärennettyjä. Palvelin ei siis välttämättä ole tavoittelemasi palvelin, vaan saatat viestiä hakkerin kanssa.</translation>
 <translation id="6826370046007623921">Tietojen menetyksen esto</translation>
 <translation id="6831043979455480757">Käännä</translation>
 <translation id="6839929833149231406">Alue</translation>
+<translation id="6846340164947227603">Käytä virtuaalista korttinumeroa…</translation>
 <translation id="6852204201400771460">Ladataanko sovellus uudelleen?</translation>
 <translation id="6865412394715372076">Korttia ei voi vahvistaa juuri nyt.</translation>
 <translation id="6868206169573555318">Käynnistä uudelleen ja päivitä</translation>
@@ -1234,6 +1250,7 @@
 <translation id="6989763994942163495">Näytä lisäasetukset...</translation>
 <translation id="6993898126790112050">6x9 (kirjekuori)</translation>
 <translation id="6996312675313362352">Käännä aina <ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">Vahvista kortteja nopeammin Windows Hellolla</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Veloitukset voivat olla kertaluontoisia tai toistuvia, eikä niitä välttämättä esitetä selkeästi.</translation>
 <translation id="7029809446516969842">Salasanat</translation>
@@ -1244,6 +1261,7 @@
 <translation id="7064851114919012435">Yhteystiedot</translation>
 <translation id="7075452647191940183">Pyyntö on liian suuri</translation>
 <translation id="7079718277001814089">Tämä sivusto sisältää haittaohjelmia</translation>
+<translation id="7081308185095828845">Ominaisuus ei ole käytettävissä tällä laitteella</translation>
 <translation id="7087282848513945231">Piirikunta</translation>
 <translation id="7090678807593890770">Tee Google-haku: <ph name="LINK" /></translation>
 <translation id="7108338896283013870">Piilota</translation>
@@ -1297,9 +1315,11 @@
 <translation id="733923710415886693">Palvelimen varmenteesta ei ole saatu Certificate Transparencyn vaatimia tietoja.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">On yhdistetty:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> otti Chrome Enterprisen käyttäjäsuojan käyttöön selaimellesi. Chrome Enterprisen käyttäjäsuoja pääsee osaan datastasi.</translation>
 <translation id="7349430561505560861">A4-ekstra</translation>
 <translation id="7353601530677266744">Komentorivi</translation>
 <translation id="7372973238305370288">hakutulos</translation>
+<translation id="7374733840632556089">Tämän virheen syynä on varmenne, jonka sinä asensit tai joku muu asensi laitteelle. Varmennetta on aiemmin käytetty verkkojen valvontaan ja kaappaamiseen, eikä Chrome luota siihen. Valvomiselle voi olla oikea syy esimerkiksi oppilaitoksen tai yrityksen verkossa. Chrome haluaa kuitenkin varmistaa, että tiedät valvonnasta, vaikka et voi lopettaa sitä. Valvonta voi tapahtua missä tahansa selaimessa tai sovelluksessa, jolla on pääsy verkkoon.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Mediaohjaimet</translation>
 <translation id="7378627244592794276">Ei</translation>
@@ -1328,6 +1348,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />tiedonhakua<ph name="END_LINK" /> ongelmaan liittyen</translation>
 <translation id="7455133967321480974">Käytä yleistä oletusasetusta (estä)</translation>
 <translation id="7460618730930299168">Näkymä eroaa valinnoistasi. Haluatko jatkaa?</translation>
+<translation id="7464821087936825778">Hakutila suljetaan</translation>
 <translation id="7473891865547856676">Ei kiitos</translation>
 <translation id="7481312909269577407">Seuraava</translation>
 <translation id="7485870689360869515">Tietoja ei löydy.</translation>
@@ -1549,6 +1570,7 @@
 <translation id="8559762987265718583">Verkkotunnukseen <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ei voi muodostaa salattua yhteyttä, koska laitteesi aika ja päivämäärä (<ph name="DATE_AND_TIME" />) ovat virheelliset.</translation>
 <translation id="8564985650692024650">Chromium suosittelee organisaation <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> salasanasi vaihtamista, jos olet käyttänyt sitä myös muilla sivustoilla.</translation>
 <translation id="8571890674111243710">Käännetään sivua kielelle <ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">Vahvista kortteja nopeammin Touch ID:llä</translation>
 <translation id="858637041960032120">Lisää puh.nro
 </translation>
 <translation id="860043288473659153">Kortinhaltijan nimi</translation>
diff --git a/components/strings/components_strings_fil.xtb b/components/strings/components_strings_fil.xtb
index 8d12aef..6c10f1cf 100644
--- a/components/strings/components_strings_fil.xtb
+++ b/components/strings/components_strings_fil.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">I-load ang page sa ibang pagkakataon</translation>
 <translation id="1015730422737071372">Magbigay ng mga karagdagang detalye</translation>
 <translation id="1021110881106174305">Mga tinatanggap na card</translation>
+<translation id="1021753677514347426">Nangyayari ang problemang ito dahil sa isang certificate na na-install mo o ng ibang tao sa iyong device. Kilala ang certificate sa pagsubaybay at pag-intercept ng mga network, at hindi ito pinagkakatiwalaan ng Chromium. Bagama't mayroong mga lehitimong kaso ng pagsubaybay, gaya sa network sa paaralan o kumpanya, gustong tiyakin ng Chromium na alam mong nangyayari ito, kahit na hindi mo ito mapipigilan. Posibleng mangyari ang pagsubaybay sa anumang browser o application na nag-a-access ng web.</translation>
 <translation id="1032854598605920125">I-rotate pakanan</translation>
 <translation id="1036348656032585052">I-off</translation>
 <translation id="1038842779957582377">Hindi kilalang pangalan</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Ulat ng pag-crash na nakuha noong <ph name="CRASH_TIME" /> (hindi pa naa-upload o nababalewala)</translation>
 <translation id="1270502636509132238">Paraan sa Pag-pick up</translation>
 <translation id="1285320974508926690">Huwag isalin kailanman ang site na ito</translation>
+<translation id="1285400217480592994">I-scan ang mga content ng mga file na dina-download o ina-upload mo sa Chrome.</translation>
 <translation id="1292701964462482250">"Pinipigilan ng software sa iyong computer na makakonekta nang ligtas ang Chrome sa web" (mga Windows computer lang)</translation>
 <translation id="1294154142200295408">Mga variation ng command-line</translation>
 <translation id="129553762522093515">Kamakailang isinara</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Numero ng telepono</translation>
 <translation id="2277103315734023688">Mag-seek Pasulong</translation>
 <translation id="2283340219607151381">I-save at punan ang mga address</translation>
+<translation id="2288422996159078444">Binabantayan ang anumang bagay na tina-type mo, ang anumang page na iyong tinitingnan, o ang anupamang aktibidad mo sa web. Puwedeng mabago ang content sa mga site nang hindi mo alam.</translation>
 <translation id="2289385804009217824">Paikliin</translation>
 <translation id="2292556288342944218">Naka-block ang iyong access sa Internet</translation>
 <translation id="2297722699537546652">B5 (Envelope)</translation>
@@ -428,6 +431,7 @@
 <translation id="2989742184762224133">Dual staple top</translation>
 <translation id="2991174974383378012">Pagbabahagi sa Mga Website</translation>
 <translation id="2991571918955627853">Hindi mo maaaring bisitahin ang <ph name="SITE" /> sa ngayon dahil gumagamit ng HSTS ang website. Karaniwang pansamantala lang ang mga error at pag-atake sa network, kaya malamang na gagana ang page na ito sa ibang pagkakataon.</translation>
+<translation id="2996674880327704673">Mga Suhestyon ng Google</translation>
 <translation id="3005723025932146533">Ipakita ang naka-save na kopya</translation>
 <translation id="3008447029300691911">Ilagay ang CVC para sa <ph name="CREDIT_CARD" />. Kapag nagkumpirma ka na, ibabahagi ang mga detalye ng iyong card sa site na ito.</translation>
 <translation id="3010559122411665027">Listahan ng entry na "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -440,6 +444,7 @@
 <translation id="3060227939791841287">C9 (Envelope)</translation>
 <translation id="3061707000357573562">Serbisyo sa Pag-patch</translation>
 <translation id="3064966200440839136">Aalis sa incognito mode upang magbayad sa pamamagitan ng external na application. Magpatuloy?</translation>
+<translation id="3086579638707268289">Sinusubaybayan ang iyong aktibidad sa web</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Magdagdag ng Address sa Pag-pick up</translation>
 <translation id="3105172416063519923">Asset ID:</translation>
@@ -492,6 +497,7 @@
 <translation id="3369192424181595722">Error sa orasan</translation>
 <translation id="337363190475750230">Naalis sa pagkakaprobisyon</translation>
 <translation id="3377188786107721145">Error sa pag-parse ng patakaran</translation>
+<translation id="3377736046129930310">Gumamit ng lock ng screen para kumpirmahin nang mas mabilis ang mga card</translation>
 <translation id="3380365263193509176">Hindi kilalang error</translation>
 <translation id="3380864720620200369">Client ID:</translation>
 <translation id="3387261909427947069">Mga Paraan ng Pagbabayad</translation>
@@ -652,6 +658,7 @@
 <translation id="4194250254487269611">Hindi mase-save ang iyong card sa ngayon</translation>
 <translation id="4196861286325780578">&amp;Gawing muli ang paglilipat</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Suriin ang mga configuration ng firewall at antivirus<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">profile sa screen sa pag-sign in</translation>
 <translation id="4215751373031079683">7x9 (Envelope)</translation>
 <translation id="4220128509585149162">Mga Pag-crash</translation>
 <translation id="422022731706691852">Maaaring magtangka ang mga attacker sa <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> na linlangin ka sa pag-install ng mga program na magdudulot ng hindi magandang karanasan sa iyong pag-browse (halimbawa, sa pamamagitan ng pagpapalit ng homepage mo o pagpapakita ng mga karagdagang ad sa mga site na binibisita mo). <ph name="BEGIN_LEARN_MORE_LINK" />Matuto pa<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -734,6 +741,7 @@
 <translation id="4515275063822566619">Ang mga card at address ay mula sa Chrome at sa iyong Google Account (<ph name="ACCOUNT_EMAIL" />). Maaari mong pamahalaan ang mga ito sa <ph name="BEGIN_LINK" />Mga Setting<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Comm-10 (Envelope)</translation>
 <translation id="4522570452068850558">Mga Detalye</translation>
+<translation id="4524138615196389145">Kumpirmahin nang mas mabilis ang iyong mga card gamit ang WebAuthn mula ngayon</translation>
 <translation id="4524805452350978254">Pamahalaan ang mga card</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -844,6 +852,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64-bit)</translation>
+<translation id="5121469660360593280">Magbahagi ng data tungkol sa mga pangyayari sa seguridad na na-flag ng Proteksyon sa User ng Chrome Enterprise sa iyong Administrator. Posibleng kabilang dito ang mga URL ng mga page na binibisita mo, mga pangalan ng file o metadata, at ang username na iyong ginagamit para mag-sign sa device mo at sa Chrome.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">I-verify ang iyong card</translation>
 <translation id="5135404736266831032">Pamahalaan ang mga address...</translation>
@@ -855,6 +864,7 @@
 <translation id="5159010409087891077">Buksan ang page sa bagong Incognito window (⇧⌘N)</translation>
 <translation id="516920405563544094">Ilagay ang CVC para sa <ph name="CREDIT_CARD" />. Pagkatapos mong magkumpirma, ibabahagi sa site na ito ang mga detalye ng card mula sa iyong Google Account.</translation>
 <translation id="5169827969064885044">Maaari kang mawalan ng access sa account ng iyong organisasyon o manakawan ng pagkakakilanlan. Inirerekomenda ng Chrome na palitan ang iyong password ngayon.</translation>
+<translation id="5170017743895942767">Proteksyon sa User ng Chrome Enterprise</translation>
 <translation id="5171045022955879922">Hanapin o i-type ang URL</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Computer</translation>
@@ -975,6 +985,7 @@
 <translation id="5730040223043577876">Inirerekomenda ng Chrome na i-reset ang iyong password kung ginamit mo ito sa iba pang site.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{I-save ang card sa iyong Google Account}one{I-save ang mga card sa iyong Google Account}other{I-save ang mga card sa iyong Google Account}}</translation>
 <translation id="5763042198335101085">Maglagay ng wastong email address</translation>
+<translation id="5763703224595565476">Na-enable ng iyong administrator ang Proteksyon sa User ng Chrome Enterprise sa browser mo. May access ang Proteksyon sa User ng Chrome Enterprise sa ilan sa iyong data.</translation>
 <translation id="5765072501007116331">Upang makita ang mga pamamaraan at kinakailangan sa paghahatid, pumili ng address</translation>
 <translation id="5778550464785688721">Ganap na pagkontrol sa mga MIDI device</translation>
 <translation id="5781136890105823427">Naka-enable ang eksperimento</translation>
@@ -1054,6 +1065,7 @@
 <translation id="6094273045989040137">I-annotate</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">Maaaring may iba pang anyo ng history ng pag-browse ang iyong Google Account sa <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
+<translation id="6120179357481664955">Natatandaan mo ang iyong UPI ID?</translation>
 <translation id="6132597952260690497">Impormasyon tungkol sa mga naka-install na extension at plugin</translation>
 <translation id="6146055958333702838">Tingnan ang anumang mga kable at i-reboot ang anumang mga router, modem o iba
     pang mga network device na maaaring ginagamit mo.</translation>
@@ -1069,6 +1081,7 @@
 <translation id="6221345481584921695">Kamakailan lang, ang Google Safe Browsing ay <ph name="BEGIN_LINK" />nakakita ng malware<ph name="END_LINK" /> sa <ph name="SITE" />. Paminsan-minsan, nagkakaroon ng malware ang mga website na karaniwang ligtas. Ang nakakahamak na content ay galing sa <ph name="SUBRESOURCE_HOST" />, isang kilalang nagkakalat ng malware.</translation>
 <translation id="6234122620015464377">Paikliin pagkatapos ng bawat dokumento</translation>
 <translation id="6240447795304464094">Logo ng Google Pay</translation>
+<translation id="6241121617266208201">Itago ang mga suhestyon</translation>
 <translation id="6251924700383757765">Patakaran sa privacy</translation>
 <translation id="6254436959401408446">Hindi sapat ang memory upang mabuksan ang page na ito</translation>
 <translation id="625755898061068298">Pinili mong i-disable ang mga panseguridad na babala para sa site na ito.</translation>
@@ -1115,6 +1128,7 @@
 <translation id="6409754798200046165">Kakalagay mo lang ng iyong password sa isang mapanlinang na site. Inirerekomenda ng Chrome na palitan mo ang iyong password ngayon.</translation>
 <translation id="6410264514553301377">Ilagay ang petsa ng pag-expire at CVC para sa <ph name="CREDIT_CARD" /></translation>
 <translation id="6415778972515849510">Makakatulong sa iyo ang Chromium na protektahan ang iyong Google Account at palitan ang password mo.</translation>
+<translation id="6423385022588644828">Kumpirmahin nang mas mabilis ang iyong mga card gamit ang Touch ID mula ngayon</translation>
 <translation id="6427730057873428458">Gate fold</translation>
 <translation id="6433490469411711332">I-edit ang impormasyon sa pakikipag-ugnayan</translation>
 <translation id="6433595998831338502">Tumangging kumonekta ang <ph name="HOST_NAME" />.</translation>
@@ -1185,12 +1199,14 @@
 <translation id="6786747875388722282">Mga Extension</translation>
 <translation id="6790428901817661496">I-play</translation>
 <translation id="679355240208270552">Binalewala dahil hindi na-enable ng patakaran ang default na paghahanap.</translation>
+<translation id="6794951432696553238">Kumpirmahin nang mas mabilis ang iyong mga card gamit ang Windows Hello mula ngayon</translation>
 <translation id="681021252041861472">Kinakailangang Field</translation>
 <translation id="6810899417690483278">Customization ID</translation>
 <translation id="6825578344716086703">Tinangka mong abutin ang <ph name="DOMAIN" />, ngunit nagpakita ang server ng certificate na nilagdaan gamit ang isang mahinang signature algorithm (tulad ng SHA-1). Nangangahulugan ito na maaaring pineke ang mga panseguridad na kredensyal na ipinakita ng server, at ang server ay maaaring hindi ang server na inaasahan mo (maaaring nakikipag-ugnayan ka sa isang attacker).</translation>
 <translation id="6826370046007623921">Pag-iwas sa Pagkawala ng Data</translation>
 <translation id="6831043979455480757">Isalin</translation>
 <translation id="6839929833149231406">Lugar</translation>
+<translation id="6846340164947227603">Gumamit ng virtual na numero ng card...</translation>
 <translation id="6852204201400771460">I-reload ang app?</translation>
 <translation id="6865412394715372076">Hindi ma-verify ang card na ito sa ngayon.</translation>
 <translation id="6868206169573555318">Muling Ilunsad para I-update</translation>
@@ -1219,6 +1235,7 @@
 <translation id="6989763994942163495">Ipakita ang mga advanced na setting...</translation>
 <translation id="6993898126790112050">6x9 (Envelope)</translation>
 <translation id="6996312675313362352">Palaging i-translate ang <ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">Gamitin ang Windows Hello para kumpirmahin nang mas mabilis ang mga card</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Ang mga singil na ito ay maaaring isang beses lang o umuulit at maaaring hindi mo mapansin.</translation>
 <translation id="7029809446516969842">Mga Password</translation>
@@ -1229,6 +1246,7 @@
 <translation id="7064851114919012435">Impormasyon sa pakikipag-ugnayan</translation>
 <translation id="7075452647191940183">Masyadong malaki ang kahilingan</translation>
 <translation id="7079718277001814089">Naglalaman ng malware ang site na ito</translation>
+<translation id="7081308185095828845">Hindi available ang feature na ito sa iyong device</translation>
 <translation id="7087282848513945231">Lalawigan</translation>
 <translation id="7090678807593890770">Hanapin sa Google ang <ph name="LINK" /></translation>
 <translation id="7108338896283013870">Itago</translation>
@@ -1282,9 +1300,11 @@
 <translation id="733923710415886693">Ang certificate ng server ay hindi inihayag sa pamamagitan ng Transparency ng Certificate.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">Naka-affiliate:</translation>
+<translation id="73479065977517481">Na-enable ng <ph name="ENROLLMENT_DOMAIN" /> ang Proteksyon sa User ng Chrome Enterprise sa iyong browser. May access ang Proteksyon sa User ng Chrome Enterprise sa ilan sa iyong data.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Command Line</translation>
 <translation id="7372973238305370288">resulta ng paghahanap</translation>
+<translation id="7374733840632556089">Nangyayari ang problemang ito dahil sa isang certificate na na-install mo o ng ibang tao sa iyong device. Kilala ang certificate sa pagsubaybay at pag-intercept ng mga network, at hindi ito pinagkakatiwalaan ng Chrome. Bagama't mayroong mga lehitimong kaso ng pagsubaybay, gaya sa network sa paaralan o kumpanya, gustong tiyakin ng Chrome na alam mong nangyayari ito, kahit na hindi mo ito mapipigilan. Posibleng mangyari ang pagsubaybay sa anumang browser o application na nag-a-access ng web.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Mga Kontrol ng Media</translation>
 <translation id="7378627244592794276">Hindi</translation>
@@ -1313,6 +1333,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Matuto pa<ph name="END_LINK" /> tungkol sa problemang ito.</translation>
 <translation id="7455133967321480974">Gamitin ang pangkalahatang default (I-block)</translation>
 <translation id="7460618730930299168">Iba ang screening sa napili mo. Magpatuloy?</translation>
+<translation id="7464821087936825778">Lumalabas sa search mode</translation>
 <translation id="7473891865547856676">Hindi, Salamat</translation>
 <translation id="7481312909269577407">Sumulong</translation>
 <translation id="7485870689360869515">Walang nahanap na data.</translation>
@@ -1534,6 +1555,7 @@
 <translation id="8559762987265718583">Hindi makapagtatag ng pribadong koneksyon sa <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> dahil mali ang petsa at oras ng iyong device (<ph name="DATE_AND_TIME" />).</translation>
 <translation id="8564985650692024650">Inirerekomenda ng Chromium na i-reset ang iyong password sa <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> kung ginamit mo ito sa iba pang site.</translation>
 <translation id="8571890674111243710">Tina-translate ang pahina sa <ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">Gamitin ang Touch ID para kumpirmahin nang mas mabilis ang mga card</translation>
 <translation id="858637041960032120">Magdagdag ng numero ng telepono</translation>
 <translation id="860043288473659153">Pangalan ng cardholder</translation>
 <translation id="8616822740383114808">Ipinatupad ng "<ph name="ENFORCING_SETTING" />" ang setting na ito sa "<ph name="SETTINGS_PAGE" />"</translation>
diff --git a/components/strings/components_strings_fr-CA.xtb b/components/strings/components_strings_fr-CA.xtb
index e8ea580..0221bf4 100644
--- a/components/strings/components_strings_fr-CA.xtb
+++ b/components/strings/components_strings_fr-CA.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Charger la page plus tard</translation>
 <translation id="1015730422737071372">Fournir des détails supplémentaires</translation>
 <translation id="1021110881106174305">Cartes acceptées</translation>
+<translation id="1021753677514347426">Ce problème survient en raison d'un certificat installé, par vous ou quelqu'un d'autre, sur votre appareil. Le certificat n'est pas considéré comme fiable par Chromium, parce qu'on sait qu'il est utilisé pour surveiller et intercepter les réseaux. Certains cas requièrent de la surveillance, comme un réseau scolaire ou d'entreprise, mais Chromium vous le mentionne pour que vous sachiez que cette surveillance se produit, même si vous ne pouvez pas l'empêcher. La surveillance peut se produire dans tous les navigateurs et toutes les applications qui accèdent au Web.</translation>
 <translation id="1032854598605920125">Faire pivoter dans le sens horaire</translation>
 <translation id="1036348656032585052">Désactiver</translation>
 <translation id="1038842779957582377">nom inconnu</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Rapport de plantage enregistré le <ph name="CRASH_TIME" /> (pas encore téléversé ni ignoré)</translation>
 <translation id="1270502636509132238">Mode de ramassage</translation>
 <translation id="1285320974508926690">Ne jamais traduire ce site</translation>
+<translation id="1285400217480592994">Analyser le contenu des fichiers que vous téléchargez ou téléversez dans Chrome.</translation>
 <translation id="1292701964462482250">« Un logiciel installé sur votre ordinateur empêche Chrome de se connecter au Web de manière sécurisée » (sous Windows uniquement)</translation>
 <translation id="1294154142200295408">Variantes de ligne de commande</translation>
 <translation id="129553762522093515">Récemment fermés</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Numéro de téléphone</translation>
 <translation id="2277103315734023688">Rechercher vers l'avant</translation>
 <translation id="2283340219607151381">Enregistrer et remplir les adresses</translation>
+<translation id="2288422996159078444">Tout ce que vous écrivez, toutes les pages que vous consultez ou toute autre activité sur le Web sont sous surveillance, et le contenu des sites peut être changé sans que vous le sachiez.</translation>
 <translation id="2289385804009217824">Découper</translation>
 <translation id="2292556288342944218">Votre accès à Internet est bloqué</translation>
 <translation id="2297722699537546652">Enveloppe B5</translation>
@@ -426,6 +429,7 @@
 <translation id="2989742184762224133">Double agrafe en haut</translation>
 <translation id="2991174974383378012">Partage avec des sites Web</translation>
 <translation id="2991571918955627853">Vous ne pouvez pas consulter le site <ph name="SITE" /> pour le moment, car il utilise le protocole HSTS. Les erreurs réseau et les attaques sont généralement temporaires. Vous devriez donc pouvoir accéder à cette page plus tard.</translation>
+<translation id="2996674880327704673">Suggestions de Google</translation>
 <translation id="3005723025932146533">Afficher une copie sauvegardée</translation>
 <translation id="3008447029300691911">Entrez le code de vérification de carte (CVC) pour <ph name="CREDIT_CARD" />. Après confirmation, les détails de votre carte seront partagés avec ce site.</translation>
 <translation id="3010559122411665027">Élément de liste « <ph name="ENTRY_INDEX" /> » : <ph name="ERROR" /></translation>
@@ -438,6 +442,7 @@
 <translation id="3060227939791841287">Enveloppe C9</translation>
 <translation id="3061707000357573562">Service de correctif</translation>
 <translation id="3064966200440839136">Vous devez quitter le mode de navigation privée pour effectuer un paiement par l'intermédiaire d'une application externe. Continuer?</translation>
+<translation id="3086579638707268289">Votre activité sur le Web est actuellement surveillée</translation>
 <translation id="3095940652251934233">Relevé</translation>
 <translation id="3096100844101284527">Ajouter une adresse de ramassage</translation>
 <translation id="3105172416063519923">Identifiant de ressource :</translation>
@@ -490,6 +495,7 @@
 <translation id="3369192424181595722">Erreur d'horloge</translation>
 <translation id="337363190475750230">Révoqué</translation>
 <translation id="3377188786107721145">Erreur d'analyse de la règle.</translation>
+<translation id="3377736046129930310">Utiliser le verrouillage d'écran pour vérifier les cartes plus rapidement</translation>
 <translation id="3380365263193509176">Erreur inconnue</translation>
 <translation id="3380864720620200369">Numéro de client :</translation>
 <translation id="3387261909427947069">Modes de paiement</translation>
@@ -650,6 +656,7 @@
 <translation id="4194250254487269611">Impossible d'enregistrer votre carte pour le moment</translation>
 <translation id="4196861286325780578">&amp;Rétablir le déplacement</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />De vérifier les configurations du pare-feu et de l'antivirus<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">profil de l'écran de connexion</translation>
 <translation id="4215751373031079683">Enveloppe 7 po x 9 po</translation>
 <translation id="4220128509585149162">Plantages</translation>
 <translation id="422022731706691852">Les cyberpirates à l'œuvre sur le site <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> peuvent essayer de vous inciter à installer des programmes nuisibles à votre expérience de navigation (par exemple, en changeant votre page d'accueil ou en affichant des annonces supplémentaires sur les sites que vous consultez). <ph name="BEGIN_LEARN_MORE_LINK" />En savoir plus<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -732,6 +739,7 @@
 <translation id="4515275063822566619">Les cartes et les adresses proviennent de Chrome et de votre compte Google (<ph name="ACCOUNT_EMAIL" />). Vous pouvez les gérer dans <ph name="BEGIN_LINK" />Paramètres<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Enveloppe COM10</translation>
 <translation id="4522570452068850558">Détails</translation>
+<translation id="4524138615196389145">Vérifiez vos cartes plus rapidement en vous servant de WebAuthn à partir de maintenant</translation>
 <translation id="4524805452350978254">Gérer les cartes</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -842,6 +850,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">EDP, Europe</translation>
 <translation id="5115563688576182185">(64 bits)</translation>
+<translation id="5121469660360593280">Partagez avec votre administrateur les données sur les événements relatifs à la sécurité qui ont été signalés par la fonctionnalité de protection des utilisateurs d'entreprise de Chrome. Ces données pourraient comprendre les URL des pages que vous visitez, les noms de fichiers ou des métadonnées ainsi que le nom d'utilisateur que vous utilisez pour vous connecter à votre appareil et à Chrome.</translation>
 <translation id="5125394840236832993">B plus</translation>
 <translation id="5126510351761255129">Vérifier votre carte</translation>
 <translation id="5135404736266831032">Gérer les adresses</translation>
@@ -853,6 +862,7 @@
 <translation id="5159010409087891077">Ouvrir la page dans une nouvelle fenêtre de navigation privée (⇧⌘N)</translation>
 <translation id="516920405563544094">Entrez le code de vérification de carte (CVC) de votre carte <ph name="CREDIT_CARD" />. Après votre confirmation, les détails de la carte provenant de votre compte Google seront partagés avec ce site.</translation>
 <translation id="5169827969064885044">Vous risquez de perdre l'accès au compte de votre organisation ou d'être victime d'un vol d'identité. Chrome recommande de modifier votre mot de passe maintenant.</translation>
+<translation id="5170017743895942767">Protection des utilisateurs d'entreprise de Chrome</translation>
 <translation id="5171045022955879922">Effectuez une recherche ou entrez une adresse URL</translation>
 <translation id="5171689220826475070">Pli en éventail, Europe</translation>
 <translation id="5172758083709347301">Machine</translation>
@@ -973,6 +983,7 @@
 <translation id="5730040223043577876">Chrome recommande de réinitialiser votre mot de passe si vous l'avez réutilisé sur d'autres sites.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Enregistrer la carte dans votre compte Google}one{Enregistrer la carte dans votre compte Google}other{Enregistrer les cartes dans votre compte Google}}</translation>
 <translation id="5763042198335101085">Entrez une adresse de courriel valide</translation>
+<translation id="5763703224595565476">Votre administrateur a activé la protection des utilisateurs d'entreprise de Chrome pour votre navigateur. La protection pour les utilisateurs d'entreprise de Chrome a accès à certaines de vos données.</translation>
 <translation id="5765072501007116331">Pour voir les exigences et les modes de livraison, sélectionnez une adresse</translation>
 <translation id="5778550464785688721">Contrôle d'appareils MIDI total</translation>
 <translation id="5781136890105823427">Expérience activée</translation>
@@ -1052,6 +1063,7 @@
 <translation id="6094273045989040137">Annoter</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">D'autres formes d'historique de navigation peuvent exister sur votre compte Google à l'adresse <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
+<translation id="6120179357481664955">Se souvenir de votre identifiant UPI?</translation>
 <translation id="6132597952260690497">Information sur les extensions et les plugiciels installés</translation>
 <translation id="6146055958333702838">Vérifiez les câbles et redémarrez votre routeur, votre modem
     ou tout autre périphérique réseau utilisé.</translation>
@@ -1067,6 +1079,7 @@
 <translation id="6221345481584921695">La fonctionnalité de navigation sécurisée Google a récemment permis de <ph name="BEGIN_LINK" />détecter des logiciels malveillants<ph name="END_LINK" /> sur le site <ph name="SITE" />. Un site Web qui est normalement inoffensif peut parfois être infecté par des logiciels malveillants. Le contenu en cause provient de l'hôte « <ph name="SUBRESOURCE_HOST" /> », un distributeur de logiciels malveillants connu.</translation>
 <translation id="6234122620015464377">Couper après chaque document</translation>
 <translation id="6240447795304464094">Logo de Google Pay</translation>
+<translation id="6241121617266208201">Masquer les suggestions</translation>
 <translation id="6251924700383757765">Politique de confidentialité</translation>
 <translation id="6254436959401408446">Mémoire insuffisante pour ouvrir cette page</translation>
 <translation id="625755898061068298">Vous avez choisi de désactiver les avertissements de sécurité pour ce site.</translation>
@@ -1113,6 +1126,7 @@
 <translation id="6409754798200046165">Vous venez d'entrer votre mot de passe sur un site trompeur. Chrome vous recommande de modifier votre mot de passe maintenant.</translation>
 <translation id="6410264514553301377">Entrez la date d'expiration et le code de vérification de carte (CVC) pour <ph name="CREDIT_CARD" /></translation>
 <translation id="6415778972515849510">Chromium peut vous aider à protéger votre compte Google et à changer votre mot de passe.</translation>
+<translation id="6423385022588644828">Vérifiez vos cartes plus rapidement en vous servant de Touch ID à partir de maintenant</translation>
 <translation id="6427730057873428458">Pli fenêtre</translation>
 <translation id="6433490469411711332">Modifier les coordonnées</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> a refusé la connexion.</translation>
@@ -1183,12 +1197,14 @@
 <translation id="6786747875388722282">Extensions</translation>
 <translation id="6790428901817661496">Jouer</translation>
 <translation id="679355240208270552">Sans effet, car la recherche par défaut n'est pas activée par une politique.</translation>
+<translation id="6794951432696553238">Vérifiez vos cartes plus rapidement en vous servant de Windows Hello à partir de maintenant</translation>
 <translation id="681021252041861472">Champ obligatoire</translation>
 <translation id="6810899417690483278">Identifiant de personnalisation</translation>
 <translation id="6825578344716086703">Vous avez tenté d'accéder au domaine <ph name="DOMAIN" />, mais le serveur a présenté un certificat signé à l'aide d'un algorithme de signature faible (comme SHA-1). Il est possible que l'authentifiant de sécurité fourni par le serveur ait été falsifié. Il se peut donc que le serveur ne soit pas celui auquel vous souhaitez accéder et qu'il s'agisse d'une tentative de piratage.</translation>
 <translation id="6826370046007623921">Prévention de la perte de données</translation>
 <translation id="6831043979455480757">Traduire</translation>
 <translation id="6839929833149231406">Région</translation>
+<translation id="6846340164947227603">Utiliser un numéro de carte virtuelle…</translation>
 <translation id="6852204201400771460">Actualiser l'application?</translation>
 <translation id="6865412394715372076">Cette carte ne peut pas être vérifiée pour le moment</translation>
 <translation id="6868206169573555318">Relancer pour mettre à jour</translation>
@@ -1217,6 +1233,7 @@
 <translation id="6989763994942163495">Afficher les paramètres avancés...</translation>
 <translation id="6993898126790112050">Enveloppe 6 po x 9 po</translation>
 <translation id="6996312675313362352">Toujours traduire les pages en <ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">Utiliser Windows Hello pour vérifier les cartes plus rapidement</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Ces frais peuvent être ponctuels ou récurrents, et peuvent ne pas être évidents.</translation>
 <translation id="7029809446516969842">Mots de passe</translation>
@@ -1227,6 +1244,7 @@
 <translation id="7064851114919012435">Coordonnées</translation>
 <translation id="7075452647191940183">La taille de la requête est trop grande</translation>
 <translation id="7079718277001814089">Ce site contient des logiciels malveillants</translation>
+<translation id="7081308185095828845">Cette fonctionnalité n'est pas offerte pour votre appareil.</translation>
 <translation id="7087282848513945231">Comté</translation>
 <translation id="7090678807593890770">Recherchez <ph name="LINK" /> sur Google</translation>
 <translation id="7108338896283013870">Masquer</translation>
@@ -1280,9 +1298,11 @@
 <translation id="733923710415886693">Le certificat du serveur n'a pas été divulgué par l'intermédiaire de l'outil Certificate Transparency.</translation>
 <translation id="734600844861828519">11 po x 15 po</translation>
 <translation id="7346048084945669753">Affilié :</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> a activé la protection pour les utilisateurs d'entreprise de Chrome pour votre navigateur. La protection pour les utilisateurs d'entreprise de Chrome a accès à certaines de vos données.</translation>
 <translation id="7349430561505560861">A4 Extra</translation>
 <translation id="7353601530677266744">Ligne de commande</translation>
 <translation id="7372973238305370288">résultat de la recherche</translation>
+<translation id="7374733840632556089">Ce problème survient en raison d'un certificat installé, par vous ou quelqu'un d'autre, sur votre appareil. Le certificat n'est pas considéré comme fiable par Chrome, parce qu'on sait qu'il est utilisé pour surveiller et intercepter les réseaux. Certains cas requièrent de la surveillance, comme un réseau scolaire ou d'entreprise, mais Chrome vous le mentionne pour que vous sachiez que cette surveillance se produit, même si vous ne pouvez pas l'empêcher. La surveillance peut se produire dans tous les navigateurs et toutes les applications qui accèdent au Web.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> — <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Commandes multimédias</translation>
 <translation id="7378627244592794276">Pas maintenant</translation>
@@ -1311,6 +1331,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" /> sur ce problème.</translation>
 <translation id="7455133967321480974">Utiliser le paramètre global par défaut (« Bloquer »)</translation>
 <translation id="7460618730930299168">Le contenu présenté est différent de celui que vous aviez sélectionné. Continuer?</translation>
+<translation id="7464821087936825778">Sortie du mode de recherche en cours…</translation>
 <translation id="7473891865547856676">Non merci</translation>
 <translation id="7481312909269577407">Suivant</translation>
 <translation id="7485870689360869515">Aucune donnée trouvée.</translation>
@@ -1532,6 +1553,7 @@
 <translation id="8559762987265718583">Impossible d'établir une connexion privée à <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />, car la date et l'heure de votre appareil (<ph name="DATE_AND_TIME" />) sont incorrectes.</translation>
 <translation id="8564985650692024650">Chromium recommande de réinitialiser votre mot de passe <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> si vous l'avez réutilisé sur d'autres sites.</translation>
 <translation id="8571890674111243710">Traduction de la page en <ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">Utiliser Touch ID pour vérifier les cartes plus rapidement</translation>
 <translation id="858637041960032120">Ajouter un numéro de téléphone</translation>
 <translation id="860043288473659153">Nom du titulaire de la carte</translation>
 <translation id="8616822740383114808">Ce paramètre est appliqué de manière obligatoire par « <ph name="ENFORCING_SETTING" /> » sous « <ph name="SETTINGS_PAGE" /> »</translation>
diff --git a/components/strings/components_strings_fr.xtb b/components/strings/components_strings_fr.xtb
index f6944ca..b528002c 100644
--- a/components/strings/components_strings_fr.xtb
+++ b/components/strings/components_strings_fr.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Charger la page plus tard</translation>
 <translation id="1015730422737071372">Fournir des informations supplémentaires</translation>
 <translation id="1021110881106174305">Cartes acceptées</translation>
+<translation id="1021753677514347426">Ce problème est dû à un certificat installé sur votre appareil par vous-même ou par quelqu'un d'autre. Ce certificat est utilisé pour surveiller et intercepter des réseaux, et n'est pas approuvé par Chromium. Bien qu'il existe des cas légitimes de surveillance (sur un réseau scolaire ou d'entreprise, par exemple), Chromium souhaite s'assurer que vous êtes au courant de cette activité, même si vous ne pouvez pas l'empêcher. La surveillance peut se produire sur n'importe quel navigateur ou application qui accède au Web.</translation>
 <translation id="1032854598605920125">Faire pivoter vers la droite</translation>
 <translation id="1036348656032585052">Désactiver</translation>
 <translation id="1038842779957582377">Nom inconnu</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Rapport d'erreur enregistré le <ph name="CRASH_TIME" /> (pas encore importé ou ignoré)</translation>
 <translation id="1270502636509132238">Mode d'enlèvement</translation>
 <translation id="1285320974508926690">Ne jamais traduire ce site</translation>
+<translation id="1285400217480592994">Analysez le contenu des fichiers que vous téléchargez ou importez dans Chrome.</translation>
 <translation id="1292701964462482250">Un logiciel installé sur votre ordinateur empêche Chrome de se connecter au Web de manière sécurisée (sous Windows uniquement)</translation>
 <translation id="1294154142200295408">Variations de ligne de commande</translation>
 <translation id="129553762522093515">Récemment fermés</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">N° de téléphone</translation>
 <translation id="2277103315734023688">Avance rapide</translation>
 <translation id="2283340219607151381">Enregistrer et renseigner les adresses</translation>
+<translation id="2288422996159078444">Tout texte saisi, toute page consultée ou toute activité effectuée sur le Web sont surveillés. Le contenu des sites peut être modifié à votre insu.</translation>
 <translation id="2289385804009217824">Couper</translation>
 <translation id="2292556288342944218">Votre accès à Internet est bloqué</translation>
 <translation id="2297722699537546652">B5 (enveloppe)</translation>
@@ -426,6 +429,7 @@
 <translation id="2989742184762224133">Double agrafe en haut</translation>
 <translation id="2991174974383378012">Partage avec les sites Web</translation>
 <translation id="2991571918955627853">Le site <ph name="SITE" /> est actuellement inaccessible, car il utilise la technologie HSTS. Les erreurs réseau et les attaques sont généralement temporaires. Vous devriez donc pouvoir accéder à cette page plus tard.</translation>
+<translation id="2996674880327704673">Suggestions de Google</translation>
 <translation id="3005723025932146533">Afficher la copie enregistrée</translation>
 <translation id="3008447029300691911">Saisissez le code CVC de la carte <ph name="CREDIT_CARD" />. Une fois la validation terminée, les informations relatives à la carte seront partagées avec ce site.</translation>
 <translation id="3010559122411665027">Entrée de la liste "<ph name="ENTRY_INDEX" />" : <ph name="ERROR" /></translation>
@@ -438,6 +442,7 @@
 <translation id="3060227939791841287">C9 (enveloppe)</translation>
 <translation id="3061707000357573562">Service d'application de correctifs</translation>
 <translation id="3064966200440839136">En payant via une application externe, vous allez quitter le mode navigation privée. Voulez-vous continuer ?</translation>
+<translation id="3086579638707268289">Votre activité sur le Web est surveillée</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Ajouter une adresse d'enlèvement</translation>
 <translation id="3105172416063519923">ID d'élément : </translation>
@@ -490,6 +495,7 @@
 <translation id="3369192424181595722">Erreur de l'horloge</translation>
 <translation id="337363190475750230">Révoqué</translation>
 <translation id="3377188786107721145">Erreur d'analyse de la règle.</translation>
+<translation id="3377736046129930310">Utiliser le verrouillage de l'écran pour confirmer les cartes plus rapidement</translation>
 <translation id="3380365263193509176">Erreur inconnue.</translation>
 <translation id="3380864720620200369">ID client : </translation>
 <translation id="3387261909427947069">Modes de paiement</translation>
@@ -650,6 +656,7 @@
 <translation id="4194250254487269611">Impossible d'enregistrer votre carte pour le moment</translation>
 <translation id="4196861286325780578">&amp;Rétablir le déplacement</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Vérifier les configurations du pare-feu et de l'antivirus<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">profil de l'écran de connexion</translation>
 <translation id="4215751373031079683">7x9 (enveloppe)</translation>
 <translation id="4220128509585149162">Plantages</translation>
 <translation id="422022731706691852">Des individus malveillants à l'œuvre sur le site <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> pourraient vous inciter à installer des programmes qui nuisent à votre confort de navigation (par exemple, en changeant votre page d'accueil ou en affichant des annonces supplémentaires sur les sites que vous consultez). <ph name="BEGIN_LEARN_MORE_LINK" />En savoir plus<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -732,6 +739,7 @@
 <translation id="4515275063822566619">Les cartes et les adresses proviennent de Chrome et de votre compte Google (<ph name="ACCOUNT_EMAIL" />). Vous pouvez les gérer dans les <ph name="BEGIN_LINK" />paramètres<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Comm-10 (enveloppe)</translation>
 <translation id="4522570452068850558">Détails</translation>
+<translation id="4524138615196389145">Confirmez désormais vos cartes plus rapidement avec WebAuthn</translation>
 <translation id="4524805452350978254">Gérer les cartes</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -842,6 +850,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64 bits)</translation>
+<translation id="5121469660360593280">Transmettez à votre administrateur les données sur les événements liés à la sécurité signalés par la protection de l'utilisateur de Chrome Enterprise. Ces données peuvent inclure les URL de pages que vous consultez, les noms ou les métadonnées de fichiers, ainsi que le nom d'utilisateur avec lequel vous vous connectez à votre appareil et à Chrome.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Valider votre carte</translation>
 <translation id="5135404736266831032">Gérer les adresses…</translation>
@@ -853,6 +862,7 @@
 <translation id="5159010409087891077">Ouvrir la page dans une nouvelle fenêtre de navigation privée (⇧⌘N)</translation>
 <translation id="516920405563544094">Saisissez le code CVC de la carte <ph name="CREDIT_CARD" />. Une fois la validation effectuée, les informations relatives à la carte de votre compte Google seront partagées avec ce site.</translation>
 <translation id="5169827969064885044">Vous risquez de perdre l'accès au compte de votre organisation ou d'être victime d'usurpation d'identité. L'équipe Chrome vous recommande de modifier votre mot de passe maintenant.</translation>
+<translation id="5170017743895942767">Protection de l'utilisateur de Chrome Enterprise</translation>
 <translation id="5171045022955879922">Rechercher ou saisir une URL</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Ordinateur</translation>
@@ -973,6 +983,7 @@
 <translation id="5730040223043577876">L'équipe Chrome vous recommande de réinitialiser votre mot de passe si vous l'avez réutilisé sur d'autres sites.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Enregistrer une carte dans votre compte Google}one{Enregistrer une carte dans votre compte Google}other{Enregistrer des cartes dans votre compte Google}}</translation>
 <translation id="5763042198335101085">Saisissez une adresse e-mail valide</translation>
+<translation id="5763703224595565476">Votre administrateur a activé la protection de l'utilisateur de Chrome Enterprise dans votre navigateur. La protection de l'utilisateur de Chrome Enterprise a accès à certaines de vos données.</translation>
 <translation id="5765072501007116331">Sélectionnez une adresse pour consulter les modes et conditions de livraison disponibles</translation>
 <translation id="5778550464785688721">Contrôle total des appareils MIDI</translation>
 <translation id="5781136890105823427">Test activé</translation>
@@ -1052,6 +1063,7 @@
 <translation id="6094273045989040137">Annoter</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">Votre compte Google conserve peut-être d'autres contenus d'historique de navigation sur la page <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
+<translation id="6120179357481664955">Souhaitez-vous mémoriser votre ID UPI ?</translation>
 <translation id="6132597952260690497">Informations à propos des extensions et plug-ins installés</translation>
 <translation id="6146055958333702838">Vérifiez les câbles et redémarrez votre routeur, votre modem
     ou tout autre périphérique réseau utilisé.</translation>
@@ -1067,6 +1079,7 @@
 <translation id="6221345481584921695">La fonctionnalité de navigation sécurisée Google a récemment permis de <ph name="BEGIN_LINK" />détecter des logiciels malveillants<ph name="END_LINK" /> sur le site <ph name="SITE" />. Un site Web qui est normalement sans danger peut parfois être infecté par des logiciels malveillants. Le contenu en cause provient de l'hôte "<ph name="SUBRESOURCE_HOST" />", une source de logiciels malveillants connue.</translation>
 <translation id="6234122620015464377">Couper après chaque document</translation>
 <translation id="6240447795304464094">Logo Google Pay</translation>
+<translation id="6241121617266208201">Masquer les suggestions</translation>
 <translation id="6251924700383757765">Règles de confidentialité</translation>
 <translation id="6254436959401408446">Mémoire insuffisante pour ouvrir cette page</translation>
 <translation id="625755898061068298">Vous avez choisi de désactiver les avertissements de sécurité pour ce site.</translation>
@@ -1113,6 +1126,7 @@
 <translation id="6409754798200046165">Vous venez de saisir votre mot de passe sur un site trompeur. Chrome vous recommande de changer de mot de passe immédiatement.</translation>
 <translation id="6410264514553301377">Saisissez la date d'expiration et le code CVC pour <ph name="CREDIT_CARD" /></translation>
 <translation id="6415778972515849510">Chromium peut vous aider à protéger votre compte Google et à modifier votre mot de passe.</translation>
+<translation id="6423385022588644828">Confirmez désormais vos cartes plus rapidement avec Touch ID</translation>
 <translation id="6427730057873428458">Pli en volets</translation>
 <translation id="6433490469411711332">Modifier les coordonnées</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> n'autorise pas la connexion.</translation>
@@ -1183,12 +1197,14 @@
 <translation id="6786747875388722282">Extensions</translation>
 <translation id="6790428901817661496">Lire</translation>
 <translation id="679355240208270552">Règle ignorée, car le moteur de recherche par défaut n'est pas activé par une règle.</translation>
+<translation id="6794951432696553238">Confirmez désormais vos cartes plus rapidement avec Windows Hello</translation>
 <translation id="681021252041861472">Champ obligatoire</translation>
 <translation id="6810899417690483278">ID de la personnalisation</translation>
 <translation id="6825578344716086703">Vous avez tenté d'accéder à <ph name="DOMAIN" />, mais le serveur a présenté un certificat signé à l'aide d'un algorithme de signature faible (par exemple, SHA-1). Il est possible que le certificat fourni par le serveur ait été falsifié. Il se peut donc que le serveur ne soit pas celui auquel vous souhaitez accéder, et qu'il s'agisse d'une tentative de piratage.</translation>
 <translation id="6826370046007623921">Protection contre la perte de données</translation>
 <translation id="6831043979455480757">Traduire</translation>
 <translation id="6839929833149231406">Zone</translation>
+<translation id="6846340164947227603">Utiliser un numéro de carte virtuelle…</translation>
 <translation id="6852204201400771460">Actualiser l'application ?</translation>
 <translation id="6865412394715372076">Impossible de valider cette carte pour le moment</translation>
 <translation id="6868206169573555318">Redémarrer pour mettre à jour</translation>
@@ -1217,6 +1233,7 @@
 <translation id="6989763994942163495">Afficher les paramètres avancés…</translation>
 <translation id="6993898126790112050">6x9 (enveloppe)</translation>
 <translation id="6996312675313362352">Toujours traduire les pages en <ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">Utiliser Windows Hello pour confirmer les cartes plus rapidement</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Il peut s'agir de frais uniques ou récurrents qui ne sont pas toujours clairement signalés.</translation>
 <translation id="7029809446516969842">Mots de passe</translation>
@@ -1227,6 +1244,7 @@
 <translation id="7064851114919012435">Coordonnées</translation>
 <translation id="7075452647191940183">Requête trop volumineuse</translation>
 <translation id="7079718277001814089">Ce site contient des logiciels malveillants</translation>
+<translation id="7081308185095828845">Cette fonctionnalité n'est pas disponible sur votre appareil</translation>
 <translation id="7087282848513945231">Comté</translation>
 <translation id="7090678807593890770">Effectuez une recherche Google sur <ph name="LINK" />.</translation>
 <translation id="7108338896283013870">Masquer</translation>
@@ -1280,9 +1298,11 @@
 <translation id="733923710415886693">Le certificat du serveur n'a pas été communiqué tel que le prévoient les règles de transparence des certificats.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">Affilié :</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> a activé la protection de l'utilisateur de Chrome Enterprise dans votre navigateur. La protection de l'utilisateur de Chrome Enterprise a accès à certaines de vos données.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Ligne de commande</translation>
 <translation id="7372973238305370288">résultat de recherche</translation>
+<translation id="7374733840632556089">Ce problème est dû à un certificat installé sur votre appareil par vous-même ou par quelqu'un d'autre. Ce certificat est utilisé pour surveiller et intercepter des réseaux, et n'est pas approuvé par Chrome. Bien qu'il existe des cas légitimes de surveillance (sur un réseau scolaire ou d'entreprise, par exemple), Chrome souhaite s'assurer que vous êtes au courant de cette activité, même si vous ne pouvez pas l'empêcher. La surveillance peut se produire sur n'importe quel navigateur ou application qui accède au Web.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Commandes multimédias</translation>
 <translation id="7378627244592794276">Non</translation>
@@ -1311,6 +1331,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />En savoir plus<ph name="END_LINK" /> sur ce problème.</translation>
 <translation id="7455133967321480974">Utiliser le paramètre global par défaut ("Bloquer")</translation>
 <translation id="7460618730930299168">Le filtrage est différent de ce que vous avez sélectionné. Continuer ?</translation>
+<translation id="7464821087936825778">Sortie du mode Recherche…</translation>
 <translation id="7473891865547856676">Non, merci</translation>
 <translation id="7481312909269577407">Avancer</translation>
 <translation id="7485870689360869515">Aucune donnée n'a été trouvée.</translation>
@@ -1532,6 +1553,7 @@
 <translation id="8559762987265718583">Impossible d'établir une connexion privée à <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> : la date et l'heure de votre appareil (<ph name="DATE_AND_TIME" />) sont incorrectes.</translation>
 <translation id="8564985650692024650">L'équipe Chromium vous recommande de réinitialiser votre mot de passe <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> si vous l'avez réutilisé sur d'autres sites.</translation>
 <translation id="8571890674111243710">Traduction de la page en <ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">Utiliser Touch ID pour confirmer les cartes plus rapidement</translation>
 <translation id="858637041960032120">Saisir num tél</translation>
 <translation id="860043288473659153">Nom du titulaire de la carte</translation>
 <translation id="8616822740383114808">Ce paramètre est appliqué par "<ph name="ENFORCING_SETTING" />" dans "<ph name="SETTINGS_PAGE" />"</translation>
diff --git a/components/strings/components_strings_gl.xtb b/components/strings/components_strings_gl.xtb
index f5c25723..b381c93a 100644
--- a/components/strings/components_strings_gl.xtb
+++ b/components/strings/components_strings_gl.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Cargar páxina máis tarde</translation>
 <translation id="1015730422737071372">Proporcionar información adicional</translation>
 <translation id="1021110881106174305">Tarxetas aceptadas</translation>
+<translation id="1021753677514347426">Este problema prodúcese por causa dun certificado instalado por ti ou por outra persoa no teu dispositivo. Sábese que este certificado se utiliza para supervisar e interceptar redes, e Chromium non confía nel. Aínda que existen algunhas situacións lexítimas para a supervisión, como no caso de redes de empresas ou de centros educativos, Chromium quere asegurarse de que sexas consciente do que acontece, inda que non poidas facer nada ao respecto. A supervisión pode levarse a cabo en calquera navegador ou aplicación que acceda á Web.</translation>
 <translation id="1032854598605920125">Xirar  á dereita</translation>
 <translation id="1036348656032585052">Desactivar</translation>
 <translation id="1038842779957582377">nome descoñecido</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Informe de fallos capturado o <ph name="CRASH_TIME" /> (aínda non se cargou nin se ignorou)</translation>
 <translation id="1270502636509132238">Método de recollida</translation>
 <translation id="1285320974508926690">Non traducir nunca este sitio</translation>
+<translation id="1285400217480592994">Analiza os contidos dos ficheiros que descargas ou cargas en Chrome.</translation>
 <translation id="1292701964462482250">"Hai software no teu ordenador que está evitando que Chrome se conecte de forma segura á web" (só para ordenadores con Windows)</translation>
 <translation id="1294154142200295408">Variacións da liña de comandos</translation>
 <translation id="129553762522093515">Pechado recentemente</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Número de teléfono</translation>
 <translation id="2277103315734023688">Avanzar</translation>
 <translation id="2283340219607151381">Gardar e autocompletar enderezos</translation>
+<translation id="2288422996159078444">Estase vixiando todo o que escribes, as páxinas que visitas e calquera outra actividade que realices na Web. Ademais, pode que se modifique o contido dos sitios sen que o saibas.</translation>
 <translation id="2289385804009217824">Recortar</translation>
 <translation id="2292556288342944218">O teu acceso a Internet está bloqueado</translation>
 <translation id="2297722699537546652">B5 (sobre)</translation>
@@ -434,6 +437,7 @@
 <translation id="2989742184762224133">Dúas grampas na parte superior</translation>
 <translation id="2991174974383378012">Compartindo con sitios web</translation>
 <translation id="2991571918955627853">Non podes visitar <ph name="SITE" /> neste momento porque o sitio web utiliza HSTS. Normalmente, os erros de rede e os ataques son temporais, polo que é posible que esta páxina funcione máis tarde.</translation>
+<translation id="2996674880327704673">Suxestións feitas por Google</translation>
 <translation id="3005723025932146533">Mostrar copia gardada</translation>
 <translation id="3008447029300691911">Introduce o código CVC da tarxeta <ph name="CREDIT_CARD" />. Unha vez que confirmes os datos, os detalles da tarxeta compartiranse con este sitio.</translation>
 <translation id="3010559122411665027">Entrada da lista "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -446,6 +450,7 @@
 <translation id="3060227939791841287">C9 (sobre)</translation>
 <translation id="3061707000357573562">Servizo de parche</translation>
 <translation id="3064966200440839136">Sairás do modo de incógnito para pagar a través dunha aplicación externa. Queres continuar?</translation>
+<translation id="3086579638707268289">Estase supervisando a túa actividade na Web</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Engadir enderezo de recollida</translation>
 <translation id="3105172416063519923">Código de identificación do recurso:</translation>
@@ -498,6 +503,7 @@
 <translation id="3369192424181595722">Erro do reloxo</translation>
 <translation id="337363190475750230">Desaprovisionado</translation>
 <translation id="3377188786107721145">Erro de análise da política</translation>
+<translation id="3377736046129930310">Usar o bloqueo de pantalla para confirmar as tarxetas máis rápido</translation>
 <translation id="3380365263193509176">Erro descoñecido</translation>
 <translation id="3380864720620200369">ID de cliente:</translation>
 <translation id="3387261909427947069">Métodos de pago</translation>
@@ -663,6 +669,7 @@
 <translation id="4194250254487269611">A túa tarxeta non se puido gardar neste momento</translation>
 <translation id="4196861286325780578">&amp;Refacer movemento</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Comprobar a configuración do firewall e do antivirus<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">perfil da pantalla de inicio de sesión</translation>
 <translation id="4215751373031079683">7x9 (sobre)</translation>
 <translation id="4220128509585149162">Fallos</translation>
 <translation id="422022731706691852">Os piratas informáticos de <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> poden tentar enganarte para que instales programas que danan a túa experiencia de navegación (por exemplo, cambiando a páxina de inicio ou mostrando anuncios adicionais nos sitios que visitas). <ph name="BEGIN_LEARN_MORE_LINK" />Máis información<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -745,6 +752,7 @@
 <translation id="4515275063822566619">As tarxetas e enderezos proceden de Chrome e da túa conta de Google (<ph name="ACCOUNT_EMAIL" />). Podes xestionalos en <ph name="BEGIN_LINK" />Configuración<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Comm-10 (sobre)</translation>
 <translation id="4522570452068850558">Detalles</translation>
+<translation id="4524138615196389145">A partir de agora, confirma as tarxetas máis rápido con WebAuthn</translation>
 <translation id="4524805452350978254">Xestionar tarxetas</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -856,6 +864,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64 bits)</translation>
+<translation id="5121469660360593280">Comparte co teu administrador datos sobre os eventos de seguranza detectados por Chrome Enterprise User Protect. Pódense incluír os URL de páxinas que visitas, os nomes de ficheiros ou os metadatos e o nome de usuario que utilizas para iniciar sesión no teu dispositivo e en Chrome.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Verificar a túa tarxeta</translation>
 <translation id="5135404736266831032">Xestiona os enderezos…</translation>
@@ -867,6 +876,7 @@
 <translation id="5159010409087891077">Abre a páxina nunha nova ventá do modo de incógnito (⇧⌘N)</translation>
 <translation id="516920405563544094">Introduce o código CVC da tarxeta <ph name="CREDIT_CARD" />. Unha vez que confirmes os datos, os detalles da tarxeta da túa Conta de Google compartiranse con este sitio.</translation>
 <translation id="5169827969064885044">Poderías perder o acceso á conta da túa organización ou alguén podería roubarche a identidade. Chrome recoméndache que cambies de contrasinal agora.</translation>
+<translation id="5170017743895942767">Chrome Enterprise User Protect</translation>
 <translation id="5171045022955879922">Buscar ou escribir o URL</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Equipo</translation>
@@ -987,6 +997,7 @@
 <translation id="5730040223043577876">Chrome recoméndache que restablezas o contrasinal se o reutilizaches noutros sitios.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Garda a tarxeta na túa Conta de Google}other{Garda tarxetas na túa Conta de Google}}</translation>
 <translation id="5763042198335101085">Introduce un enderezo de correo electrónico válido</translation>
+<translation id="5763703224595565476">O teu administrador activou Chrome Enterprise User Protect no navegador. Esta función ten acceso a algúns dos teus datos.</translation>
 <translation id="5765072501007116331">Para consultar os requisitos e métodos de entrega, selecciona un enderezo</translation>
 <translation id="5778550464785688721">Control total de dispositivos MIDI</translation>
 <translation id="5781136890105823427">O experimento está activado</translation>
@@ -1066,6 +1077,7 @@
 <translation id="6094273045989040137">Anotar</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">É posible que a túa conta de Google teña outras formas do historial de navegación en <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /></translation>
+<translation id="6120179357481664955">Queres lembrar o teu código de identificación de UPI?</translation>
 <translation id="6132597952260690497">Información sobre as extensións e os complementos instalados</translation>
 <translation id="6146055958333702838">Comproba os cables e reinicia os routers, módems e demais dispositivos
     de rede que utilices.</translation>
@@ -1081,6 +1093,7 @@
 <translation id="6221345481584921695">A navegación segura de Google <ph name="BEGIN_LINK" />detectou software malicioso<ph name="END_LINK" /> en <ph name="SITE" /> recentemente. Ás veces, os sitios web que adoitan ser seguros inféctanse con software malicioso. O contido malicioso procede de <ph name="SUBRESOURCE_HOST" />, un coñecido distribuidor de software malicioso.</translation>
 <translation id="6234122620015464377">Recorte despois de cada documento</translation>
 <translation id="6240447795304464094">Logotipo de Google Pay</translation>
+<translation id="6241121617266208201">Ocultar suxestións</translation>
 <translation id="6251924700383757765">Política de privacidade</translation>
 <translation id="6254436959401408446">Non hai memoria suficiente para abrir esta páxina</translation>
 <translation id="625755898061068298">Decidiches desactivar as advertencias de seguranza para este sitio.</translation>
@@ -1127,6 +1140,7 @@
 <translation id="6409754798200046165">Acabas de introducir o teu contrasinal nun sitio enganoso. Chrome recoméndache que cambies o contrasinal agora.</translation>
 <translation id="6410264514553301377">Introduce a data de caducidade e o código CVC da tarxeta <ph name="CREDIT_CARD" /></translation>
 <translation id="6415778972515849510">Chromium pode axudarche a protexer a túa Conta de Google e a cambiar o teu contrasinal.</translation>
+<translation id="6423385022588644828">A partir de agora, confirma as tarxetas máis rápido con Touch ID</translation>
 <translation id="6427730057873428458">Dobrez en ventá</translation>
 <translation id="6433490469411711332">Editar información de contacto</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> rexeitou a conexión.</translation>
@@ -1197,12 +1211,14 @@
 <translation id="6786747875388722282">Extensións</translation>
 <translation id="6790428901817661496">Reproducir</translation>
 <translation id="679355240208270552">Ignorouse porque a busca predeterminada non está activada pola política.</translation>
+<translation id="6794951432696553238">A partir de agora, confirma as tarxetas máis rápido con Windows Hello</translation>
 <translation id="681021252041861472">Campo obrigatorio</translation>
 <translation id="6810899417690483278">ID de personalización</translation>
 <translation id="6825578344716086703">Tentaches acceder a <ph name="DOMAIN" />, pero o servidor presentou un certificado asinado cun algoritmo de sinatura pouco seguro (como SHA-1). Unha posible causa deste problema é que se falsificasen as credenciais de seguranza presentadas polo servidor e que o servidor non sexa o que esperas. É probable que te comuniques cun pirata informático.</translation>
 <translation id="6826370046007623921">Prevención de perda de datos</translation>
 <translation id="6831043979455480757">Traducir</translation>
 <translation id="6839929833149231406">Área</translation>
+<translation id="6846340164947227603">Usar un número de tarxeta virtual…</translation>
 <translation id="6852204201400771460">Queres volver cargar a aplicación?</translation>
 <translation id="6865412394715372076">Esta tarxeta non puido verificarse neste momento</translation>
 <translation id="6868206169573555318">Volver iniciar para actualizar</translation>
@@ -1231,6 +1247,7 @@
 <translation id="6989763994942163495">Mostrar configuración avanzada...</translation>
 <translation id="6993898126790112050">6x9 (sobre)</translation>
 <translation id="6996312675313362352">Traducir sempre o <ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">Usar Windows Hello para confirmar as tarxetas máis rápido</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Ten en conta que estes cargos poden ser únicos ou periódicos e que quizais non se indiquen de forma evidente.</translation>
 <translation id="7029809446516969842">Contrasinais</translation>
@@ -1241,6 +1258,7 @@
 <translation id="7064851114919012435">Información de contacto</translation>
 <translation id="7075452647191940183">A solicitude é demasiado grande</translation>
 <translation id="7079718277001814089">Este sitio contén software malicioso</translation>
+<translation id="7081308185095828845">Esta función non está dispoñible no teu dispositivo</translation>
 <translation id="7087282848513945231">Condado</translation>
 <translation id="7090678807593890770">Busca <ph name="LINK" /> en Google</translation>
 <translation id="7108338896283013870">Ocultar</translation>
@@ -1294,9 +1312,11 @@
 <translation id="733923710415886693">O certificado do servidor non se indicou mediante Certificate Transparency.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">É colaborador:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> activou no navegador Chrome Enterprise User Protect. Esta función ten acceso a algúns dos teus datos.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Liña de comandos</translation>
 <translation id="7372973238305370288">resultado da busca</translation>
+<translation id="7374733840632556089">Este problema prodúcese por causa dun certificado instalado por ti ou por outra persoa no teu dispositivo. Sábese que este certificado se utiliza para supervisar e interceptar redes, e Chrome non confía nel. Aínda que existen algunhas situacións lexítimas para a supervisión, como no caso de redes de empresas ou de centros educativos, Chrome quere asegurarse de que sexas consciente do que acontece, inda que non poidas facer nada ao respecto. A supervisión pode levarse a cabo en calquera navegador ou aplicación que acceda á Web.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Controis de contido multimedia</translation>
 <translation id="7378627244592794276">Non</translation>
@@ -1325,6 +1345,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Máis información<ph name="END_LINK" /> sobre este problema.</translation>
 <translation id="7455133967321480974">Utilizar valor predeterminado global (Bloquear)</translation>
 <translation id="7460618730930299168">O filtro é distinto do que seleccionaches. Queres continuar?</translation>
+<translation id="7464821087936825778">Saíndo do modo de busca</translation>
 <translation id="7473891865547856676">Non, grazas</translation>
 <translation id="7481312909269577407">Adiante</translation>
 <translation id="7485870689360869515">Non se atoparon datos.</translation>
@@ -1546,6 +1567,7 @@
 <translation id="8559762987265718583">Non se pode establecer unha conexión privada con <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> porque a data e a hora do dispositivo (<ph name="DATE_AND_TIME" />) son incorrectas.</translation>
 <translation id="8564985650692024650">Chromium recoméndache que restablezas o contrasinal de <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> se o reutilizaches noutros sitios.</translation>
 <translation id="8571890674111243710">Traducindo páxina ao <ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">Usar Touch ID para confirmar as tarxetas máis rápido</translation>
 <translation id="858637041960032120">Engadir número de teléfono</translation>
 <translation id="860043288473659153">Nome do titular da tarxeta</translation>
 <translation id="8616822740383114808"><ph name="ENFORCING_SETTING" />: opción de configuración aplicada en "<ph name="SETTINGS_PAGE" />"</translation>
diff --git a/components/strings/components_strings_gu.xtb b/components/strings/components_strings_gu.xtb
index 80ffb9aa..33068d501 100644
--- a/components/strings/components_strings_gu.xtb
+++ b/components/strings/components_strings_gu.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">પેજ પછીથી લોડ કરો</translation>
 <translation id="1015730422737071372">અતિરિક્ત વિગતો પ્રદાન કરો</translation>
 <translation id="1021110881106174305">સ્વીકારેલ કાર્ડ</translation>
+<translation id="1021753677514347426">તમારા ડિવાઇસ પર તમે અથવા અન્ય કોઈ વ્યક્તિએ ઇન્સ્ટૉલ કરેલા પ્રમાણપત્રને કારણે આ સમસ્યા થાય છે. આ પ્રમાણપત્ર નેટવર્કને મોનિટર અને બંધ કરવા માટે ઉપયોગમાં લેવા માટે જાણીતું છે અને Chromium તેના પર વિશ્વાસ કરતું નથી. જો કે કેટલાક નિયમસર કિસ્સાઓમાં મોનિટર કરવાનું કાર્ય થતું હોય છે, જેમકે શાળા અથવા કંપનીના નેટવર્કમાં, પણ Chromium ખાતરી કરવા માગે છે કે તમે ભલે એ રોકી ન શકતા હો, પણ એ થવા વિશે તમને જાણકારી છે. વેબને ઍક્સેસ કરતા કોઈપણ બ્રાઉઝર અથવા ઍપ્લિકેશનમાં મોનિટર કરવાનું કાર્ય થઈ શકે છે.</translation>
 <translation id="1032854598605920125">ઘડિયાળની દિશામાં ફેરવો</translation>
 <translation id="1036348656032585052">બંધ કરો</translation>
 <translation id="1038842779957582377">અજ્ઞાત નામ</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575"><ph name="CRASH_TIME" /> એ ક્રૅશ રિપોર્ટ કૅપ્ચર કરવામાં આવી (હજી સુધી અપલોડ કરવામાં કે અવગણવામાં આવેલું નથી)</translation>
 <translation id="1270502636509132238">પિકઅપ પદ્ધતિ</translation>
 <translation id="1285320974508926690">આ સાઇટનું ક્યારેય ભાષાંતર કરશો નહીં</translation>
+<translation id="1285400217480592994">તમે Chromeમાં ડાઉનલોડ અથવા અપલોડ કરેલી ફાઇલોના કન્ટેન્ટ તપાસો.</translation>
 <translation id="1292701964462482250">"તમારા કમ્પ્યુટરમાંનું સૉફ્ટવેર Chromeને સુરક્ષિત રીતે વેબ સાથે કનેક્ટ થવાથી અટકાવે છે" (માત્ર Windows કમ્પ્યુટર)</translation>
 <translation id="1294154142200295408">આદેશ વાક્યમાં વિવિધતા</translation>
 <translation id="129553762522093515">તાજેતરમાં બંધ કરેલા</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">ફોન નંબર</translation>
 <translation id="2277103315734023688">આગળ લઈ જાઓ</translation>
 <translation id="2283340219607151381">સરનામાં સાચવો અને ભરો</translation>
+<translation id="2288422996159078444">તમે જે કંઈપણ ટાઇપ કરશો તે, તમે જોશો તે કોઈપણ પેજ અથવા વેબ પરની અન્ય કોઈપણ પ્રવૃત્તિ પર નજર રાખવામાં આવી રહી છે. સાઇટ પરના કન્ટેન્ટમાં તમારી જાણ વિના ફેરફાર કરવામાં આવી શકે છે.</translation>
 <translation id="2289385804009217824">ટ્રિમ કરો</translation>
 <translation id="2292556288342944218">તમારી ઇન્ટરનેટ ઍક્સેસ અવરોધિત છે</translation>
 <translation id="2297722699537546652">B5 (એન્વલપ)</translation>
@@ -434,6 +437,7 @@
 <translation id="2989742184762224133">ઉપરની બાજુએ બે સ્ટેપલ લગાવો</translation>
 <translation id="2991174974383378012">વેબસાઇટ્સ સાથે શેર કરવું</translation>
 <translation id="2991571918955627853">તમે હમણાં <ph name="SITE" />ની મુલાકાત લઈ શકતાં નથી કારણ કે તે વેબસાઇટ HSTSનો ઉપયોગ કરે છે. નેટવર્કમાં ભૂલ આવવી અને હુમલા થવા સામાન્ય રીતે અસ્થાયી હોય છે, તેથી આ પેજ સંભવિત રૂપે થોડા સમય પછી કાર્ય કરશે.</translation>
+<translation id="2996674880327704673">Google દ્વારા સૂચનો</translation>
 <translation id="3005723025932146533">સાચવેલી કૉપિ બતાવો</translation>
 <translation id="3008447029300691911"><ph name="CREDIT_CARD" /> માટે CVC દાખલ કરો. એકવાર તમે ખાતરી કરી લો, તે પછી આ સાઇટ સાથે તમારા કાર્ડની વિગતો શેર કરવામાં આવશે.</translation>
 <translation id="3010559122411665027">"<ph name="ENTRY_INDEX" />" એન્ટ્રીને સૂચિબદ્ધ કરો: <ph name="ERROR" /></translation>
@@ -446,6 +450,7 @@
 <translation id="3060227939791841287">C9 (એન્વલપ)</translation>
 <translation id="3061707000357573562">પૅચ સેવા</translation>
 <translation id="3064966200440839136">બાહ્ય ઍપ્લિકેશન મારફતે ચુકવણી કરવા માટે છુપો મોડ છોડી રહ્યાં છીએ. તો ચાલુ રાખીએ?</translation>
+<translation id="3086579638707268289">વેબ પરની તમારી પ્રવૃત્તિને મોનિટર કરવામાં આવે છે</translation>
 <translation id="3095940652251934233">સ્ટેટમેંટ</translation>
 <translation id="3096100844101284527">પિકઅપ માટેનું સરનામું ઉમેરો</translation>
 <translation id="3105172416063519923">સંપત્તિ ID:</translation>
@@ -498,6 +503,7 @@
 <translation id="3369192424181595722">ઘડિયાળ ભૂલ</translation>
 <translation id="337363190475750230">જોગવાઈ દૂર કરી</translation>
 <translation id="3377188786107721145">નીતિ વિશ્લેષણ ભૂલ</translation>
+<translation id="3377736046129930310">કાર્ડને વધુ ઝડપથી કન્ફર્મ કરવા માટે સ્ક્રીન લૉકનો ઉપયોગ કરો</translation>
 <translation id="3380365263193509176">અજ્ઞાત ભૂલ</translation>
 <translation id="3380864720620200369">ક્લાઇન્ટ ID:</translation>
 <translation id="3387261909427947069">ચુકવણી પદ્ધતિઓ</translation>
@@ -662,6 +668,7 @@
 <translation id="4194250254487269611">હમણાં જ તમારું કાર્ડ સાચવી શકાતું નથી</translation>
 <translation id="4196861286325780578">&amp;ખસેડવું ફરી કરો</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />ફાયરવોલ અને એન્ટીવાઇરસ ગોઠવણી તપાસીને<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">સાઇન-ઇન સ્ક્રીન પ્રોફાઇલ</translation>
 <translation id="4215751373031079683">7x9 (એન્વલપ)</translation>
 <translation id="4220128509585149162">ક્રેશેસ</translation>
 <translation id="422022731706691852"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> પરના હુમલાખોરો તમને તેવા પ્રોગ્રામ ઇન્સ્ટૉલ કરવા માટે છેતરી શકે છે કે જે તમારા બ્રાઉઝિંગ અનુભવને (ઉદાહરણ તરીકે, તમારા હોમપેજને બદલીને અથવા તમે જે સાઇટની મુલાકાત લો છો તેની પર વધારાની જાહેરાતો બતાવીને) નુકસાન પહોંચાડે છે. <ph name="BEGIN_LEARN_MORE_LINK" />વધુ જાણો<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -744,6 +751,7 @@
 <translation id="4515275063822566619">કાર્ડ અને સરનામા Chrome અને Google એકાઉન્ટ (<ph name="ACCOUNT_EMAIL" />)માંથી છે. તમે તેને <ph name="BEGIN_LINK" />સેટિંગ<ph name="END_LINK" />માં જઈને મેનેજ કરી શકો છો.</translation>
 <translation id="4517607026994743406">Comm-10 (એન્વલપ)</translation>
 <translation id="4522570452068850558">વિગતો</translation>
+<translation id="4524138615196389145">હવેથી WebAuthnનો ઉપયોગ કરીને તમારા કાર્ડ વધુ ઝડપથી કન્ફર્મ કરો</translation>
 <translation id="4524805452350978254">કાર્ડ મેનેજ કરો</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">ફ્લેશ</translation>
@@ -854,6 +862,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">યુરોપિયન-Edp</translation>
 <translation id="5115563688576182185">(64-બિટ)</translation>
+<translation id="5121469660360593280">Chrome એન્ટરપ્રાઇઝ વપરાશકર્તા સંરક્ષણ સેવા દ્વારા ચિહ્નિત કરવામાં આવેલી સુરક્ષા ઇવેન્ટ વિશેનો ડેટા તમારા વ્યવસ્થાપક સાથે શેર કરો. આમાં તમે મુલાકાત લીધી હોય તે પેજના URLs, ફાઇલના નામ અથવા મેટાડેટાનો અને તમે તમારા ડિવાઇસ તથા Chromeમાં સાઇન ઇન કરવા માટે ઉપયોગ કરો છો તે વપરાશકર્તા નામનો સમાવેશ હોઈ શકે છે.</translation>
 <translation id="5125394840236832993">B-પ્લસ</translation>
 <translation id="5126510351761255129">તમારું કાર્ડ ચકાસો</translation>
 <translation id="5135404736266831032">સરનામા મેનેજ કરો…</translation>
@@ -865,6 +874,7 @@
 <translation id="5159010409087891077">એક નવી છુપી વિંડોમાં પેજ ખોલો (⇧⌘N)</translation>
 <translation id="516920405563544094"><ph name="CREDIT_CARD" /> માટે CVC દાખલ કરો. તમે ખાતરી કરી લો, પછી આ સાઇટ સાથે તમારા Google એકાઉન્ટમાંથી કાર્ડની વિગતો શેર કરવામાં આવશે.</translation>
 <translation id="5169827969064885044">તમે તમારી સંસ્થાના એકાઉન્ટ માટે ઍક્સેસ ગુમાવી શકો છો અથવા તમને ઓળખ ચોરીનો અનુભવ થઈ શકે છે. Chrome તમને હમણાં જ તમારો પાસવર્ડ બદલવાની ભલામણ કરે છે.</translation>
+<translation id="5170017743895942767">Chrome એન્ટરપ્રાઇઝ વપરાશકર્તા સંરક્ષણ સેવા</translation>
 <translation id="5171045022955879922">URL શોધો અથવા લખો</translation>
 <translation id="5171689220826475070">Fanfold-યુરોપિયન</translation>
 <translation id="5172758083709347301">મશીન</translation>
@@ -985,6 +995,7 @@
 <translation id="5730040223043577876">જો તમે અન્ય સાઇટ પર તમારા પાસવર્ડનો ફરી ઉપયોગ કર્યો હોય, તો Chrome તેને રીસેટ કરવાનો સુઝાવ આપે છે.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{તમારા Google એકાઉન્ટમાં કાર્ડ સાચવો}one{તમારા Google એકાઉન્ટમાં કાર્ડ સાચવો}other{તમારા Google એકાઉન્ટમાં કાર્ડ સાચવો}}</translation>
 <translation id="5763042198335101085">એક માન્ય ઇમેઇલ ઍડ્રેસ ઉમેરો</translation>
+<translation id="5763703224595565476">તમારા વ્યવસ્થાપક દ્વારા તમારા બ્રાઉઝર પર Chrome એન્ટરપ્રાઇઝ વપરાશકર્તા સંરક્ષણ સેવા ચાલુ કરવામાં આવી છે. Chrome એન્ટરપ્રાઇઝ વપરાશકર્તા સંરક્ષણ સેવાને તમારા અમુક ડેટાનો ઍક્સેસ છે.</translation>
 <translation id="5765072501007116331">વિતરણ પદ્ધતિઓ અને આવશ્યકતાઓ જોવા માટે, એક સરનામું પસંદ કરો</translation>
 <translation id="5778550464785688721">MIDI ઉપકરણોનું પૂર્ણ નિયંત્રણ</translation>
 <translation id="5781136890105823427">પ્રયોગ ચાલુ કર્યો</translation>
@@ -1064,6 +1075,7 @@
 <translation id="6094273045989040137">એનોટેટ કરો</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">તમારા Google એકાઉન્ટમાં <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> પર બ્રાઉઝિંગ ઇતિહાસના બીજા સ્વરૂપો હોય શકે છે</translation>
+<translation id="6120179357481664955">તમારું UPI ID યાદ રાખીએ?</translation>
 <translation id="6132597952260690497">ઇન્સ્ટૉલ કરેલાં એક્સ્ટેંશન અને પ્લગ-ઇન વિશે માહિતી</translation>
 <translation id="6146055958333702838">કોઈપણ કેબલ્સ તપાસો અને તમે કદાચ ઉપયોગમાં લઇ રહ્યાં હોય તેવા કોઇપણ રાઉટર્સ, મૉડેમ્સ 
     અથવા અન્ય નેટવર્ક ઉપકરણોને રીબૂટ કરો.</translation>
@@ -1079,6 +1091,7 @@
 <translation id="6221345481584921695">Google Safe Browsing ને તાજેતરમાં <ph name="SITE" /> પર <ph name="BEGIN_LINK" />મૉલવેર મળ્યું<ph name="END_LINK" />. વેબસાઇટ કે જે સામાન્ય રીતે સુરક્ષિત છે તે ક્યારેક મૉલવેરથી દૂષિત હોય છે. દુર્ભાવનાપૂરું કન્ટેન્ટ એક જ્ઞાત મૉલવેર વિક્રેતા એવા, <ph name="SUBRESOURCE_HOST" /> થી આવે છે.</translation>
 <translation id="6234122620015464377">પ્રત્યેક દસ્તાવેજ પછી ટ્રિમ કરો</translation>
 <translation id="6240447795304464094">Google Payનો લોગો</translation>
+<translation id="6241121617266208201">સૂચનો છુપાવો</translation>
 <translation id="6251924700383757765">ગોપનીયતા નીતિ</translation>
 <translation id="6254436959401408446">આ પૃષ્ઠ ખોલવા માટે પૂરતી મેમરી નથી</translation>
 <translation id="625755898061068298">તમે આ સાઇટ માટે સુરક્ષા ચેતવણીઓ બંધ કરવાનું પસંદ કર્યું છે.</translation>
@@ -1125,6 +1138,7 @@
 <translation id="6409754798200046165">હમણાં જ કોઈ છેતરામણી સાઇટ પર તમે તમારો પાસવર્ડ દાખલ કર્યો. તરત જ તમારો પાસવર્ડ બદલવાનો સુઝાવ Chrome આપે છે.</translation>
 <translation id="6410264514553301377"><ph name="CREDIT_CARD" /> માટે સમાપ્તિ તારીખ અને CVC દાખલ કરો</translation>
 <translation id="6415778972515849510">Chromium તમારા Google એકાઉન્ટને સુરક્ષિત કરવામાં અને તમારો પાસવર્ડ બદલવામાં તમારી સહાય કરી શકે છે.</translation>
+<translation id="6423385022588644828">હવેથી Touch IDનો ઉપયોગ કરીને તમારા કાર્ડ વધુ ઝડપથી કન્ફર્મ કરો</translation>
 <translation id="6427730057873428458">ગેટ ફોલ્ડ</translation>
 <translation id="6433490469411711332">સંપર્ક માહિતીમાં ફેરફાર કરો</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> એ કનેક્ટ કરવાનો ઇનકાર કર્યો.</translation>
@@ -1195,12 +1209,14 @@
 <translation id="6786747875388722282">એક્સ્ટેન્શન્સ</translation>
 <translation id="6790428901817661496">ચલાવો</translation>
 <translation id="679355240208270552">અવગણના કરી, કારણ કે નીતિએ ડિફૉલ્ટ શોધ બંધ કરેલ છે.</translation>
+<translation id="6794951432696553238">હવેથી Windows Helloનો ઉપયોગ કરીને તમારા કાર્ડ વધુ ઝડપથી કન્ફર્મ કરો</translation>
 <translation id="681021252041861472">ફરજિયાત</translation>
 <translation id="6810899417690483278">કસ્ટમાઇઝેશન ID</translation>
 <translation id="6825578344716086703">તમે <ph name="DOMAIN" /> પર પહોંચવાનો પ્રયાસ કર્યો, પરંતુ સર્વરે નબળા સહી ઍલ્ગોરિધમ (જેમ કે SHA-1)નો ઉપયોગ કરીને સહીિત કરેલું પ્રમાણપત્ર પ્રસ્તુત કર્યું. આનો અર્થ એ છે કે સર્વરે પ્રસ્તુત કરેલા સુરક્ષા પ્રમાણપત્રો બનાવટી હોય શકે છે અને તે સર્વર તમારું અપેક્ષિત સર્વર (તમે કોઈ હુમલાખોર સાથે વાર્તાલાપ કરતા હોય શકે) ન પણ હોય.</translation>
 <translation id="6826370046007623921">ડેટા નુકસાન અટકાવ</translation>
 <translation id="6831043979455480757">અનુવાદ કરો</translation>
 <translation id="6839929833149231406">ક્ષેત્ર</translation>
+<translation id="6846340164947227603">વર્ચ્યુઅલ કાર્ડ નંબરનો ઉપયોગ કરો…</translation>
 <translation id="6852204201400771460">ઍપ ફરીથી લોડ કરીએ?</translation>
 <translation id="6865412394715372076">હાલમાં આ કાર્ડની ચકાસણી કરી શકાતી નથી</translation>
 <translation id="6868206169573555318">અપડેટ કરવા માટે લૉન્ચ કરો</translation>
@@ -1229,6 +1245,7 @@
 <translation id="6989763994942163495">વિગતવાર સેટિંગ્સ બતાવો...</translation>
 <translation id="6993898126790112050">6x9 (એન્વલપ)</translation>
 <translation id="6996312675313362352">હંમેશાં <ph name="ORIGINAL_LANGUAGE" />નો અનુવાદ કરો</translation>
+<translation id="7004583254764674281">કાર્ડને વધુ ઝડપથી કન્ફર્મ કરવા માટે Windows Helloનો ઉપયોગ કરો</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">આ શુલ્ક એક-સમયનું અથવા પુનરાવર્તિત હોઈ શકે છે અને કદાચ દેખીતા શુલ્ક ન પણ હોય.</translation>
 <translation id="7029809446516969842">પાસવર્ડ્સ</translation>
@@ -1239,6 +1256,7 @@
 <translation id="7064851114919012435">સંપર્ક માહિતી</translation>
 <translation id="7075452647191940183">વિનંતી ખૂબ મોટી છે.</translation>
 <translation id="7079718277001814089">આ સાઇટમાં માલવેર છે</translation>
+<translation id="7081308185095828845">તમારા ડિવાઇસમાં આ સુવિધા ઉપલબ્ધ નથી</translation>
 <translation id="7087282848513945231">કાઉન્ટિ</translation>
 <translation id="7090678807593890770"><ph name="LINK" /> માટે Google પર શોધો</translation>
 <translation id="7108338896283013870">છુપાવો</translation>
@@ -1292,9 +1310,11 @@
 <translation id="733923710415886693">પ્રમાણપત્ર પારદર્શિતા દ્વારા સર્વરનું પ્રમાણપત્ર જાહેર કરવામાં આવ્યું ન હતું.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">સંકળાયેલા છે:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> દ્વારા તમારા બ્રાઉઝર પર Chrome એન્ટરપ્રાઇઝ વપરાશકર્તા સંરક્ષણ સેવા ચાલુ કરવામાં આવી છે. Chrome એન્ટરપ્રાઇઝ વપરાશકર્તા સંરક્ષણ સેવાને તમારા અમુક ડેટાનો ઍક્સેસ છે.</translation>
 <translation id="7349430561505560861">A4-અતિરિક્ત</translation>
 <translation id="7353601530677266744">આદેશ પંક્તિ</translation>
 <translation id="7372973238305370288">શોધ પરિણામ</translation>
+<translation id="7374733840632556089">તમારા ડિવાઇસ પર તમે અથવા અન્ય કોઈ વ્યક્તિએ ઇન્સ્ટૉલ કરેલા પ્રમાણપત્રને કારણે આ સમસ્યા થાય છે. આ પ્રમાણપત્ર નેટવર્કને મોનિટર અને બંધ કરવા માટે ઉપયોગમાં લેવા માટે જાણીતું છે અને Chrome તેના પર વિશ્વાસ કરતું નથી. જો કે કેટલાક નિયમસર કિસ્સાઓમાં મોનિટર કરવાનું કાર્ય થતું હોય છે, જેમકે શાળા અથવા કંપનીના નેટવર્કમાં, પણ Chrome ખાતરી કરવા માગે છે કે તમે ભલે એ રોકી ન શકતા હો, પણ એ થવા વિશે તમને જાણકારી છે. વેબને ઍક્સેસ કરતા કોઈપણ બ્રાઉઝર અથવા ઍપ્લિકેશનમાં મોનિટર કરવાનું કાર્ય થઈ શકે છે.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">મીડિયા નિયંત્રણો</translation>
 <translation id="7378627244592794276">ના</translation>
@@ -1323,6 +1343,7 @@
 <translation id="7451311239929941790">આ સમસ્યા વિશે <ph name="BEGIN_LINK" />વધુ જાણો<ph name="END_LINK" />.</translation>
 <translation id="7455133967321480974">વૈશ્વિક ડિફોલ્ટનો ઉપયોગ કરો (અવરોધિત કરો)</translation>
 <translation id="7460618730930299168">તમે પસંદ કર્યું તેનાથી સ્ક્રીનિંગ અલગ છે. ચાલુ રાખીએ?</translation>
+<translation id="7464821087936825778">હાલનો શોધ મોડ</translation>
 <translation id="7473891865547856676">નહીં આભાર</translation>
 <translation id="7481312909269577407">ફોર્વર્ડ કરો</translation>
 <translation id="7485870689360869515">કોઈ ડેટા મળ્યો નથી.</translation>
@@ -1544,6 +1565,7 @@
 <translation id="8559762987265718583"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> પર ખાનગી કનેક્શન સ્થાપિત કરી શકાતું નથી કારણ કે તમારા ઉપકરણની તારીખ અને સમય (<ph name="DATE_AND_TIME" />) અયોગ્ય છે.</translation>
 <translation id="8564985650692024650">જો તમે અન્ય સાઇટ પર <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> પાસવર્ડનો ફરી ઉપયોગ કર્યો હોય, તો Chromium તેને રીસેટ કરવાનો સુઝાવ આપે છે.</translation>
 <translation id="8571890674111243710">પૃષ્ઠને <ph name="LANGUAGE" /> માં અનુવાદિત કરી રહ્યું છે...</translation>
+<translation id="8574899947864779331">કાર્ડને વધુ ઝડપથી કન્ફર્મ કરવા માટે Touch IDનો ઉપયોગ કરો</translation>
 <translation id="858637041960032120">ફોન નંબર ઉમેરો</translation>
 <translation id="860043288473659153">કાર્ડધારકનું નામ</translation>
 <translation id="8616822740383114808">"<ph name="SETTINGS_PAGE" />"માં "<ph name="ENFORCING_SETTING" />" દ્વારા આ સેટિંગ લાગુ કરવામાં આવ્યું છે</translation>
diff --git a/components/strings/components_strings_hr.xtb b/components/strings/components_strings_hr.xtb
index 37adf7dc..e23dd52f 100644
--- a/components/strings/components_strings_hr.xtb
+++ b/components/strings/components_strings_hr.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Učitaj stranicu kasnije</translation>
 <translation id="1015730422737071372">Navedite dodatne pojedinosti</translation>
 <translation id="1021110881106174305">Prihvaćene kartice</translation>
+<translation id="1021753677514347426">Do ovog problema dolazi zbog certifikata koji ste vi ili neka druga osoba instalirali na ovaj uređaj. Certifikat se upotrebljava za nadzor i presretanje mreža i Chrome ga ne smatra pouzdanim. Iako postoje opravdani razlozi za nadziranje, kao na primjer u školskoj mreži ili mreži tvrtke, Chrome želi da budete svjesni da se to događa, čak i ako to ne možete spriječiti. Nadziranje je moguće u bilo kojem pregledniku ili aplikaciji koja pristupa webu.</translation>
 <translation id="1032854598605920125">Zakretanje u smjeru kazaljke na satu</translation>
 <translation id="1036348656032585052">Isključi</translation>
 <translation id="1038842779957582377">nepoznati naziv</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Izvješća o rušenju programa generirana <ph name="CRASH_TIME" /> (još nisu prenesena ili zanemarena)</translation>
 <translation id="1270502636509132238">Način preuzimanja</translation>
 <translation id="1285320974508926690">Nikad nemoj prevoditi ovu web-lokaciju</translation>
+<translation id="1285400217480592994">Pregledajte sadržaj datoteka koje preuzimate s Chromea ili prenosite putem Chromea.</translation>
 <translation id="1292701964462482250">"Softver na vašem računalu sprječava sigurno povezivanje Chromea s webom" (samo na Windows računalima)</translation>
 <translation id="1294154142200295408">Varijacije naredbenog retka</translation>
 <translation id="129553762522093515">Nedavno zatvoreno</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Telefonski broj</translation>
 <translation id="2277103315734023688">Traži prema naprijed</translation>
 <translation id="2283340219607151381">Spremi i popuni adrese</translation>
+<translation id="2288422996159078444">Prati se sve što upisujete, stranice koje pregledavate ili druge aktivnosti na webu, a sadržaj na web-lokacijama može se izmijeniti bez vašeg znanja.</translation>
 <translation id="2289385804009217824">Obrezivanje</translation>
 <translation id="2292556288342944218">Internetski je pristup blokiran</translation>
 <translation id="2297722699537546652">B5 (omotnica)</translation>
@@ -436,6 +439,7 @@
 <translation id="2989742184762224133">Dvostruko spajanje pri vrhu</translation>
 <translation id="2991174974383378012">Dijeljenje s web-lokacijama</translation>
 <translation id="2991571918955627853">Trenutačno ne možete otvoriti <ph name="SITE" /> jer web-lokacija upotrebljava HSTS. Mrežne pogreške i napadi obično su privremeni, tako da će stranica kasnije vjerojatno funkcionirati.</translation>
+<translation id="2996674880327704673">Googleovi prijedlozi</translation>
 <translation id="3005723025932146533">Prikaži spremljenu kopiju</translation>
 <translation id="3008447029300691911">Unesite CVC za karticu <ph name="CREDIT_CARD" />. Nakon što ih potvrdite, podaci o kartici dijelit će se s ovom web-lokacijom.</translation>
 <translation id="3010559122411665027">Unos popisa "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -448,6 +452,7 @@
 <translation id="3060227939791841287">C9 (omotnica)</translation>
 <translation id="3061707000357573562">Usluga zakrpe</translation>
 <translation id="3064966200440839136">Napuštate anonimni način rada da biste platili putem vanjske aplikacije. Želite li nastaviti?</translation>
+<translation id="3086579638707268289">Vaša se aktivnost na webu nadzire</translation>
 <translation id="3095940652251934233">Izjava</translation>
 <translation id="3096100844101284527">Dodajte adresu preuzimanja</translation>
 <translation id="3105172416063519923">ID uređaja:</translation>
@@ -500,6 +505,7 @@
 <translation id="3369192424181595722">Pogreška sata</translation>
 <translation id="337363190475750230">Dodjela je uklonjena</translation>
 <translation id="3377188786107721145">Pogreška pri analizi pravila</translation>
+<translation id="3377736046129930310">Za brže potvrđivanje kartica upotrijebite zaključavanje zaslona</translation>
 <translation id="3380365263193509176">Nepoznata pogreška</translation>
 <translation id="3380864720620200369">ID klijenta:</translation>
 <translation id="3387261909427947069">Načini plaćanja</translation>
@@ -664,6 +670,7 @@
 <translation id="4194250254487269611">Vaša se kartica trenutačno ne može spremiti</translation>
 <translation id="4196861286325780578">&amp;Ponovi premještanje</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />provjerite vatrozid i konfiguraciju antivirusnog programa<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">zaslon za prijavu profila</translation>
 <translation id="4215751373031079683">7x9 (omotnica)</translation>
 <translation id="4220128509585149162">Padovi programa</translation>
 <translation id="422022731706691852">Napadači na web-lokaciji <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> mogu vas pokušati navesti na instaliranje programa koji smanjuju kvalitetu pregledavanja interneta (na primjer, promjenom početne stranice ili prikazivanjem dodatnih oglasa na web-lokacijama koje posjetite). <ph name="BEGIN_LEARN_MORE_LINK" />Saznajte više<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -746,6 +753,7 @@
 <translation id="4515275063822566619">Kartice i adrese dolaze iz Cromea i vašeg Google računa (<ph name="ACCOUNT_EMAIL" />). Njima možete upravljati u <ph name="BEGIN_LINK" />Postavkama<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Comm-10 (omotnica)</translation>
 <translation id="4522570452068850558">Detalji</translation>
+<translation id="4524138615196389145">Odsad brže potvrdite kartice upotrebom značajke WebAuthn</translation>
 <translation id="4524805452350978254">Upravljanje karticama</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -857,6 +865,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64-bitni)</translation>
+<translation id="5121469660360593280">Podijelite podatke sa svojim administratorom o sigurnosnim događajima koje je označila zaštita za Chrome za poslovne korisnike. To može uključivati URL-ove stranica koje posjetite, nazive ili metapodatke datoteka i korisničko ime koje koristite za prijavu na svoj uređaj i Chrome.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Potvrdite svoju karticu</translation>
 <translation id="5135404736266831032">Upravljajte adresama...</translation>
@@ -868,6 +877,7 @@
 <translation id="5159010409087891077">Otvorite stranicu u novom anonimnom prozoru (⇧⌘N)</translation>
 <translation id="516920405563544094">Unesite CVC za karticu <ph name="CREDIT_CARD" />. Nakon što ga potvrdite, podaci o kartici s vašeg Google računa podijelit će se s ovom web-lokacijom.</translation>
 <translation id="5169827969064885044">Mogli biste izgubiti pristup računu svoje organizacije ili bi netko mogao ukrasti vaš identitet. Chrome preporučuje da odmah promijenite zaporku.</translation>
+<translation id="5170017743895942767">Zaštita za Chrome za poslovne korisnike</translation>
 <translation id="5171045022955879922">Pretražite ili upišite URL</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Strojno</translation>
@@ -988,6 +998,7 @@
 <translation id="5730040223043577876">Chrome preporučuje poništavanje zaporke ako ste je upotrebljavali za druge web-lokacije.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Spremite karticu na svoj Google račun}one{Spremite kartice na svoj Google račun}few{Spremite kartice na svoj Google račun}other{Spremite kartice na svoj Google račun}}</translation>
 <translation id="5763042198335101085">Unesite važeću e-adresu</translation>
+<translation id="5763703224595565476">Administrator je omogućio značajku zaštita za Chrome za poslovne korisnike u vašem pregledniku. Zaštita za Chrome za poslovne korisnike ima pristup nekim vašim podacima.</translation>
 <translation id="5765072501007116331">Odaberite adresu za prikaz načina dostave i zahtjeva za dostavu.</translation>
 <translation id="5778550464785688721">Potpuni nadzor nad MIDI uređajima</translation>
 <translation id="5781136890105823427">Eksperiment omogućen</translation>
@@ -1067,6 +1078,7 @@
 <translation id="6094273045989040137">Dodaj bilješku</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">Na vašem Google računu možda postoje drugi oblici povijesti pregledavanja na stranici <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
+<translation id="6120179357481664955">Upamtiti vaš UPI ID?</translation>
 <translation id="6132597952260690497">Informacije o instaliranim proširenjima i dodacima</translation>
 <translation id="6146055958333702838">Provjerite kabele i ponovo pokrenite usmjerivače, modeme ili druge mrežne
         uređaje koje možda upotrebljavate.</translation>
@@ -1082,6 +1094,7 @@
 <translation id="6221345481584921695">Google sigurno pregledavanje nedavno je <ph name="BEGIN_LINK" />otkrilo zlonamjerni sadržaj<ph name="END_LINK" /> na <ph name="SITE" />. Web-lokacije koje su inače sigurne ponekad mogu biti zaražene zlonamjernim softverom. Zlonamjerni sadržaj potječe s hosta <ph name="SUBRESOURCE_HOST" /> koji je poznat po distribuciji zlonamjernog softvera.</translation>
 <translation id="6234122620015464377">Obreži nakon svakog dokumenta</translation>
 <translation id="6240447795304464094">Logotip Google Paya</translation>
+<translation id="6241121617266208201">Sakrij prijedloge</translation>
 <translation id="6251924700383757765">Pravila o privatnosti</translation>
 <translation id="6254436959401408446">Nema dovoljno memorije za otvaranje ove stranice</translation>
 <translation id="625755898061068298">Onemogućili ste sigurnosna upozorenja za tu web-lokaciju.</translation>
@@ -1128,6 +1141,7 @@
 <translation id="6409754798200046165">Upravo ste unijeli zaporku na obmanjujućoj web-lokaciji. Chrome preporučuje da odmah promijenite zaporku.</translation>
 <translation id="6410264514553301377">Unesite datum isteka i CVC za karticu <ph name="CREDIT_CARD" /></translation>
 <translation id="6415778972515849510">Chromium vam može pomoći da zaštitite svoj Google račun i promijenite zaporku.</translation>
+<translation id="6423385022588644828">Odsad brže potvrdite svoje kartice upotrebom značajke Touch ID.</translation>
 <translation id="6427730057873428458">Presavijanje u obliku prozora</translation>
 <translation id="6433490469411711332">Uređivanje podataka za kontakt</translation>
 <translation id="6433595998831338502">Host <ph name="HOST_NAME" /> odbio je povezivanje.</translation>
@@ -1198,12 +1212,14 @@
 <translation id="6786747875388722282">Proširenja</translation>
 <translation id="6790428901817661496">Reproduciraj</translation>
 <translation id="679355240208270552">Zanemareno jer zadano pretraživanje nije omogućeno pravilom.</translation>
+<translation id="6794951432696553238">Odsad brže potvrdite svoje kartice upotrebom značajke Windows Hello</translation>
 <translation id="681021252041861472">Obavezno polje</translation>
 <translation id="6810899417690483278">ID prilagođavanja</translation>
 <translation id="6825578344716086703">Pokušali ste doseći domenu <ph name="DOMAIN" />, ali poslužitelj je predstavio certifikat potpisan slabim algoritmom potpisa (kao što je SHA-1). Znači da su sigurnosne vjerodajnice koje je poslužitelj predstavio možda krivotvorene, a poslužitelj možda nije poslužitelj koji očekujete (možda ste u komunikaciji s napadačem).</translation>
 <translation id="6826370046007623921">Sprječavanje gubitka podataka</translation>
 <translation id="6831043979455480757">Prevedi</translation>
 <translation id="6839929833149231406">Područje</translation>
+<translation id="6846340164947227603">Upotrijebite broj virtualne kartice...</translation>
 <translation id="6852204201400771460">Ponovo učitati aplikaciju?</translation>
 <translation id="6865412394715372076">Trenutačno nije moguće potvrditi karticu</translation>
 <translation id="6868206169573555318">Ponovo pokreni za ažuriranje</translation>
@@ -1232,6 +1248,7 @@
 <translation id="6989763994942163495">Pokaži napredne postavke...</translation>
 <translation id="6993898126790112050">6x9 (omotnica)</translation>
 <translation id="6996312675313362352">Uvijek prevodi <ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">Za brže potvrđivanje kartica upotrijebite značajku Windows Hello</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Ta terećenja mogu biti jednokratna ili ponavljajuća i možda nisu odmah vidljiva.</translation>
 <translation id="7029809446516969842">Zaporke</translation>
@@ -1242,6 +1259,7 @@
 <translation id="7064851114919012435">Podaci za kontakt</translation>
 <translation id="7075452647191940183">Zahtjev je prevelik</translation>
 <translation id="7079718277001814089">Ova web-lokacija sadrži zlonamjerni softver</translation>
+<translation id="7081308185095828845">Ta značajka nije dostupna na vašem uređaju</translation>
 <translation id="7087282848513945231">Država</translation>
 <translation id="7090678807593890770">Potražite upit <ph name="LINK" /> na Googleu</translation>
 <translation id="7108338896283013870">Sakrij preglednik</translation>
@@ -1295,9 +1313,11 @@
 <translation id="733923710415886693">Certifikat poslužitelja nije otkriven putem Transparentnosti certifikata.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">Korisnik je povezan:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> omogućio je zaštitu za Chrome za poslovne korisnike u vašem pregledniku. Zaštita za Chrome za poslovne korisnike ima pristup nekim vašim podacima.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Naredbeni redak</translation>
 <translation id="7372973238305370288">rezultat pretraživanja</translation>
+<translation id="7374733840632556089">Do ovog problema dolazi zbog certifikata koji ste vi ili neka druga osoba instalirali na ovaj uređaj. Certifikat se upotrebljava za nadzor i presretanje mreža i Chrome ga ne smatra pouzdanim. Iako postoje opravdani razlozi za nadziranje, kao na primjer na školskoj mreži ili mreži tvrtke, Chrome želi da budete svjesni da se to događa, čak i ako to ne možete spriječiti. Nadziranje je moguće u bilo kojem pregledniku ili aplikaciji koja pristupa webu.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Medijske kontrole</translation>
 <translation id="7378627244592794276">Ne</translation>
@@ -1326,6 +1346,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /> o tom problemu.</translation>
 <translation id="7455133967321480974">Upotrijebi globalnu zadanu vrijednost (blokiraj)</translation>
 <translation id="7460618730930299168">Projekcija se razlikuje od onog što ste odabrali. Želite li nastaviti?</translation>
+<translation id="7464821087936825778">Izlaz iz načina pretraživanja</translation>
 <translation id="7473891865547856676">Ne, hvala</translation>
 <translation id="7481312909269577407">Naprijed</translation>
 <translation id="7485870689360869515">Nema pronađenih podataka.</translation>
@@ -1547,6 +1568,7 @@
 <translation id="8559762987265718583">Sigurnu vezu s domenom <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> nije moguće uspostaviti jer datum i vrijeme (<ph name="DATE_AND_TIME" />) na vašem uređaju nisu točni.</translation>
 <translation id="8564985650692024650">Chromium preporučuje poništavanje zaporke za organizaciju <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> ako ste je upotrebljavali za druge web-lokacije.</translation>
 <translation id="8571890674111243710">Prijevod stranice na <ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">Upotrijebite značajku Touch ID za brže potvrđivanje kartica</translation>
 <translation id="858637041960032120">Dodaj tel. broj
 </translation>
 <translation id="860043288473659153">Ime vlasnika kartice</translation>
diff --git a/components/strings/components_strings_hu.xtb b/components/strings/components_strings_hu.xtb
index 224ed1f7..c00777b 100644
--- a/components/strings/components_strings_hu.xtb
+++ b/components/strings/components_strings_hu.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Oldal betöltése később</translation>
 <translation id="1015730422737071372">További részletek megadása</translation>
 <translation id="1021110881106174305">Elfogadott kártyák</translation>
+<translation id="1021753677514347426">A probléma oka az Ön vagy valaki más által az eszközre telepített egyik tanúsítvány. Erről a tanúsítványról tudni lehet, hogy hálózati forgalom megfigyelésére és elfogására használják, és a Chromium szerint nem megbízható. Bár a megfigyelésnek létezik néhány jogszerű formája (például iskolai vagy vállalati hálózatokon), a Chromium biztosra szeretne menni abban, hogy Ön ezzel tisztában van – még akkor is, ha Ön nem tud tenni ellene. A megfigyelés az internethez hozzáférő bármely böngészőben vagy alkalmazásban megtörténhet.</translation>
 <translation id="1032854598605920125">Forgatás jobbra</translation>
 <translation id="1036348656032585052">Kikapcsolás</translation>
 <translation id="1038842779957582377">Ismeretlen név</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Hibajelentés készült: <ph name="CRASH_TIME" /> (még nincs feltöltve vagy mellőzték)</translation>
 <translation id="1270502636509132238">Átvételi mód</translation>
 <translation id="1285320974508926690">Ezt a webhelyet soha ne fordítsa le</translation>
+<translation id="1285400217480592994">A Chrome használatával letöltött és feltöltött fájlok tartalmának ellenőrzése.</translation>
 <translation id="1292701964462482250">„A számítógépen található valamelyik szoftver megakadályozza a Chrome-ot abban, hogy biztonságosan csatlakozzon az internetre” (csak Windows rendszerű számítógépeken)</translation>
 <translation id="1294154142200295408">Parancssorváltozatok</translation>
 <translation id="129553762522093515">Mostanában bezárt</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Telefonszám</translation>
 <translation id="2277103315734023688">Ugrás előre</translation>
 <translation id="2283340219607151381">Címek mentése és kitöltése</translation>
+<translation id="2288422996159078444">Megfigyelik, hogy mit gépel be, milyen oldalakat keres fel, illetve milyen egyéb tevékenységeket végez az interneten; emellett a webhelyek tartalma is módosulhat az Ön tudta nélkül.</translation>
 <translation id="2289385804009217824">Vágás</translation>
 <translation id="2292556288342944218">Az internethez való hozzáférést a rendszer letiltotta</translation>
 <translation id="2297722699537546652">B5 (boríték)</translation>
@@ -434,6 +437,7 @@
 <translation id="2989742184762224133">Két kapocs felül</translation>
 <translation id="2991174974383378012">Megosztás webhelyekkel</translation>
 <translation id="2991571918955627853">A(z) <ph name="SITE" /> webhelyet pillanatnyilag nem tudja felkeresni, mert a webhely HSTS-t használ. A hálózati hibák és támadások rendszerint átmenetiek, ezért az említett oldal működése később valószínűleg helyreáll.</translation>
+<translation id="2996674880327704673">A Google javaslatai</translation>
 <translation id="3005723025932146533">Mentett másolat megjelenítése</translation>
 <translation id="3008447029300691911">Adja meg a(z) <ph name="CREDIT_CARD" /> kártya CVC-kódját. Az ellenőrzést követően a böngésző megosztja kártyaadatait ezzel a webhellyel.</translation>
 <translation id="3010559122411665027">"<ph name="ENTRY_INDEX" />." listabejegyzés: <ph name="ERROR" /></translation>
@@ -446,6 +450,7 @@
 <translation id="3060227939791841287">C9 (boríték)</translation>
 <translation id="3061707000357573562">Javítókészlet szolgáltatás</translation>
 <translation id="3064966200440839136">Inkognitómód elhagyása külső alkalmazással történő fizetéshez. Folytatja?</translation>
+<translation id="3086579638707268289">Megfigyelik az Ön interneten végzett tevékenységeit</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Átvételi cím hozzáadása</translation>
 <translation id="3105172416063519923">Tartalomazonosító:</translation>
@@ -496,6 +501,7 @@
 <translation id="3369192424181595722">Órahiba</translation>
 <translation id="337363190475750230">Deaktiválva</translation>
 <translation id="3377188786107721145">Irányelv-előfeldolgozási hiba</translation>
+<translation id="3377736046129930310">Képernyőzár használata a kártyák gyorsabb ellenőrzése érdekében</translation>
 <translation id="3380365263193509176">Ismeretlen hiba</translation>
 <translation id="3380864720620200369">Ügyfél-azonosító:</translation>
 <translation id="3387261909427947069">Fizetési módok</translation>
@@ -661,6 +667,7 @@
 <translation id="4194250254487269611">A kártya jelenleg nem menthető</translation>
 <translation id="4196861286325780578">&amp;Áthelyezés újra</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />A tűzfal és a vírusirtó konfigurációjának ellenőrzése<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">bejelentkezési képernyőn használt profil</translation>
 <translation id="4215751373031079683">7x9 (boríték)</translation>
 <translation id="4220128509585149162">Összeomlások</translation>
 <translation id="422022731706691852">A(z) <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> webhelyen lévő támadók megpróbálhatják rávenni Önt olyan programok telepítésére, amelyek károsak a böngészési élmény szempontjából (például módosítják a kezdőlapot vagy plusz hirdetéseket jelenítenek meg a felkeresett webhelyeken). <ph name="BEGIN_LEARN_MORE_LINK" />További információ<ph name="END_LEARN_MORE_LINK" />.</translation>
@@ -743,6 +750,7 @@
 <translation id="4515275063822566619">A kártyák és a címek a Chrome-ból és az Ön Google-fiókjából (<ph name="ACCOUNT_EMAIL" />) származnak. A <ph name="BEGIN_LINK" />Beállításokban<ph name="END_LINK" /> kezelheti őket.</translation>
 <translation id="4517607026994743406">Comm-10 (boríték)</translation>
 <translation id="4522570452068850558">Részletek</translation>
+<translation id="4524138615196389145">Mostantól gyorsabban igazolhatja kártyáit a WebAuthn használatával</translation>
 <translation id="4524805452350978254">Kártyák kezelése</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -854,6 +862,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64 bites)</translation>
+<translation id="5121469660360593280">A Chrome Enterprise felhasználóvédelmi funkciója által megjelölt biztonsági események adatait megoszthatja az adminisztrátorral. Ez tartalmazhatja a felkeresett oldalak URL-jeit, a fájlneveket és metaadatokat, valamint az eszközre és a Chrome-ba való bejelentkezéshez használt felhasználónevet.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Kártya ellenőrzése</translation>
 <translation id="5135404736266831032">Címek kezelése…</translation>
@@ -865,6 +874,7 @@
 <translation id="5159010409087891077">Oldal megnyitása új inkognitóablakban (⇧⌘N)</translation>
 <translation id="516920405563544094">Adja meg a(z) <ph name="CREDIT_CARD" /> kártya CVC-kódját. A megerősítést követően a böngésző megosztja majd az Ön Google-fiókjából származó kártyaadatokat ezzel a webhellyel.</translation>
 <translation id="5169827969064885044">Elveszítheti a hozzáférést szervezete fiókjához, vagy visszaélhetnek személyes adataival. A Chrome azt javasolja, hogy azonnal módosítsa jelszavát.</translation>
+<translation id="5170017743895942767">A Chrome Enterprise felhasználóvédelmi funkciója</translation>
 <translation id="5171045022955879922">Keressen vagy írjon be egy URL-t</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Számítógép</translation>
@@ -985,6 +995,7 @@
 <translation id="5730040223043577876">A Chrome azt javasolja, hogy adjon meg új jelszót a régi helyett, ha azt más webhelyeken is használta.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Kártya mentése a Google-fiókba}other{Kártyák mentése a Google-fiókba}}</translation>
 <translation id="5763042198335101085">Érvényes e-mail-címet adjon meg</translation>
+<translation id="5763703224595565476">Az adminisztrátor engedélyezte a Chrome Enterprise felhasználóvédelmi funkcióját a böngészőben. A Chrome Enterprise felhasználóvédelmi funkciója hozzáfér az Ön bizonyos adataihoz.</translation>
 <translation id="5765072501007116331">A kézbesítési módok és követelmények megtekintéséhez válassza ki a címet</translation>
 <translation id="5778550464785688721">MIDI eszközök – teljes hozzáférés</translation>
 <translation id="5781136890105823427">Kísérlet engedélyezve</translation>
@@ -1064,6 +1075,7 @@
 <translation id="6094273045989040137">Jegyzetelés</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">Előfordulhat, hogy a böngészési előzmények más formái még megtalálhatók Google-fiókjában a <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> webhelyen</translation>
+<translation id="6120179357481664955">Emlékszik UPI-azonosítójára?</translation>
 <translation id="6132597952260690497">Információ a telepített bővítményekről és beépülő modulokról</translation>
 <translation id="6146055958333702838">Ellenőrizze a kábeleket, majd indítsa újra a routert, modemet vagy más
     hálózati eszközt, amelyet használ.</translation>
@@ -1079,6 +1091,7 @@
 <translation id="6221345481584921695">A Google – Biztonságos böngészés nemrég <ph name="BEGIN_LINK" />rosszindulatú programokat<ph name="END_LINK" /> észlelt a következő webhelyen: <ph name="SITE" />. A rendes esetben biztonságos webhelyek néha rosszindulatú programokkal fertőződnek. A rosszindulatú tartalom az ilyen programok következő ismert terjesztőjétől származik: <ph name="SUBRESOURCE_HOST" />.</translation>
 <translation id="6234122620015464377">Vágás minden dokumentum után</translation>
 <translation id="6240447795304464094">Google Pay-embléma</translation>
+<translation id="6241121617266208201">Javaslatok elrejtése</translation>
 <translation id="6251924700383757765">Adatvédelmi irányelvek</translation>
 <translation id="6254436959401408446">Nincs elég memória az oldal megnyitásához</translation>
 <translation id="625755898061068298">Úgy döntött, hogy letiltja a biztonsági figyelmeztetéseket ezen a webhelyen.</translation>
@@ -1125,6 +1138,7 @@
 <translation id="6409754798200046165">Megtévesztő webhelyen adta meg jelszavát. A Chrome azt javasolja, hogy azonnal módosítsa jelszavát.</translation>
 <translation id="6410264514553301377">Írja be a(z) <ph name="CREDIT_CARD" /> kártyán szereplő lejárati dátumot és CVC-t</translation>
 <translation id="6415778972515849510">A Chromium segíthet a Google-fiók védelmében és a jelszó módosításában.</translation>
+<translation id="6423385022588644828">Mostantól gyorsabban igazolhatja kártyáit a Touch ID használatával</translation>
 <translation id="6427730057873428458">Kihajtható</translation>
 <translation id="6433490469411711332">Kapcsolattartási adatok szerkesztése</translation>
 <translation id="6433595998831338502">A(z) <ph name="HOST_NAME" /> visszautasította a csatlakozást.</translation>
@@ -1195,12 +1209,14 @@
 <translation id="6786747875388722282">Bővítmények</translation>
 <translation id="6790428901817661496">Játék</translation>
 <translation id="679355240208270552">Figyelmen kívül hagyva, mert az alapértelmezett keresőmotort nem engedélyezi a házirend.</translation>
+<translation id="6794951432696553238">Mostantól gyorsabban igazolhatja kártyáit a Windows Hello használatával</translation>
 <translation id="681021252041861472">Kötelező mező</translation>
 <translation id="6810899417690483278">Testreszabás-azonosító</translation>
 <translation id="6825578344716086703">Megpróbálta elérni a(z) <ph name="DOMAIN" /> webhelyet, de a szerver gyenge aláírási algoritmust használó tanúsítványt mutatott be. Ez alapján elképzelhető, hogy a szerver által megadott biztonsági tanúsítványt meghamisították, és a szerver nem az, amelyikre számított (lehet, hogy éppen valamilyen támadóval kommunikál).</translation>
 <translation id="6826370046007623921">Adatszivárgás elleni védelem</translation>
 <translation id="6831043979455480757">Fordítás</translation>
 <translation id="6839929833149231406">Terület</translation>
+<translation id="6846340164947227603">Virtuális kártyaszám használata…</translation>
 <translation id="6852204201400771460">Újratölti az alkalmazást?</translation>
 <translation id="6865412394715372076">Ez a kártya jelenleg nem ellenőrizhető</translation>
 <translation id="6868206169573555318">Újraindítás a frissítéshez</translation>
@@ -1229,6 +1245,7 @@
 <translation id="6989763994942163495">Speciális beállítások megjelenítése...</translation>
 <translation id="6993898126790112050">6x9 (boríték)</translation>
 <translation id="6996312675313362352"><ph name="ORIGINAL_LANGUAGE" /> – mindig legyen lefordítva</translation>
+<translation id="7004583254764674281">A Windows Hello használata a kártyák gyorsabb ellenőrzése érdekében</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Ezek egyszeri vagy ismétlődő díjak lehetnek, és nem feltétlenül nyilvánvalóak.</translation>
 <translation id="7029809446516969842">Jelszavak</translation>
@@ -1239,6 +1256,7 @@
 <translation id="7064851114919012435">Kapcsolatfelvételi adatok</translation>
 <translation id="7075452647191940183">A kérés túl nagy</translation>
 <translation id="7079718277001814089">A webhely rosszindulatú programokat tartalmaz</translation>
+<translation id="7081308185095828845">Ez a funkció nem áll rendelkezésre az eszközén</translation>
 <translation id="7087282848513945231">Megye</translation>
 <translation id="7090678807593890770">Keresés a Google-on a következőre: <ph name="LINK" /></translation>
 <translation id="7108338896283013870">Elrejtés</translation>
@@ -1292,9 +1310,11 @@
 <translation id="733923710415886693">A szerver tanúsítványát nem A tanúsítványok átláthatósága keretrendszeren keresztül hozták nyilvánosságra.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">Társult felhasználó:</translation>
+<translation id="73479065977517481">A(z) <ph name="ENROLLMENT_DOMAIN" /> engedélyezte a Chrome Enterprise felhasználóvédelmi funkcióját az Ön böngészőjében. A Chrome Enterprise felhasználóvédelmi funkciója hozzáfér az Ön bizonyos adataihoz.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Parancssor</translation>
 <translation id="7372973238305370288">keresési találat</translation>
+<translation id="7374733840632556089">A probléma oka az Ön vagy valaki más által az eszközre telepített egyik tanúsítvány. Erről a tanúsítványról tudni lehet, hogy hálózati forgalom megfigyelésére és elfogására használják, és a Chrome szerint nem megbízható. Bár a megfigyelésnek létezik néhány jogszerű formája (például iskolai vagy vállalati hálózatokon), a Chrome biztosra szeretne menni abban, hogy Ön ezzel tisztában van – még akkor is, ha Ön nem tud tenni ellene. A megfigyelés az internethez hozzáférő bármely böngészőben vagy alkalmazásban megtörténhet.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Médiatartalmak vezérlői</translation>
 <translation id="7378627244592794276">Nem</translation>
@@ -1323,6 +1343,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />További információk megtekintése<ph name="END_LINK" /> a problémával kapcsolatban.</translation>
 <translation id="7455133967321480974">Globális alapértelmezés használata (Tiltás)</translation>
 <translation id="7460618730930299168">Az előzetes vetítés eltér az Ön által kijelölttől.  Folytatja?</translation>
+<translation id="7464821087936825778">Kilépés a keresési módból…</translation>
 <translation id="7473891865547856676">Nem, köszönöm</translation>
 <translation id="7481312909269577407">Előre</translation>
 <translation id="7485870689360869515">Nem található adat.</translation>
@@ -1544,6 +1565,7 @@
 <translation id="8559762987265718583">Nem hozható létre privát kapcsolat a következővel: <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />, mert az eszköz dátum- és időbeállítása helytelen (<ph name="DATE_AND_TIME" />).</translation>
 <translation id="8564985650692024650">A Chromium azt javasolja, hogy adjon meg új <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" />-jelszót a régi helyett, ha azt más webhelyeken is használta.</translation>
 <translation id="8571890674111243710">Oldal fordítása erre a nyelvre: <ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">A Touch ID használata a kártyák gyorsabb ellenőrzése érdekében</translation>
 <translation id="858637041960032120">Szám hozzáadása
 </translation>
 <translation id="860043288473659153">Kártyatulajdonos neve</translation>
diff --git a/components/strings/components_strings_hy.xtb b/components/strings/components_strings_hy.xtb
index 87cc305..2154c91 100644
--- a/components/strings/components_strings_hy.xtb
+++ b/components/strings/components_strings_hy.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Էջը բեռնել ավելի ուշ</translation>
 <translation id="1015730422737071372">Տրամադրել լրացուցիչ տեղեկություններ</translation>
 <translation id="1021110881106174305">Քարտեր, որոնցով կարելի է վճարել</translation>
+<translation id="1021753677514347426">Այս խնդիրը կարող է առաջանալ հավաստագրի պատճառով, որը դուք կամ ինչ-որ մեկը տեղադրել եք ձեր սարքում։ Հավաստագիրն օգտագործվում է ցանցեր որսալու ու հետագծելու նպատակով։ Այն վստահելի չէ Chromium-ի համար։ Թեև լինում են օրինական հետագծման դեպքեր, օրինակ՝ դպրոցի կամ ընկերության ցանցում, Chromium-ին անհրաժեշտ է համոզվել, որ դուք գիտեք այդ մասին, նույնիսկ եթե չեք կարող դադարեցնել դա։ Հետագծումը կարող է իրականացվել ցանկացած դիտարկիչում կամ հավելվածում, որին հասանելի է համացանցը։</translation>
 <translation id="1032854598605920125">Պտտել ժամացույցի սլաքի ուղղությամբ</translation>
 <translation id="1036348656032585052">Անջատել</translation>
 <translation id="1038842779957582377">անհայտ անուն</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575"><ph name="CRASH_TIME" />-ին ստացվել է խափանման հաշվետվություն (դեռևս վերբեռնված կամ փակված չէ)</translation>
 <translation id="1270502636509132238">Ստացման եղանակը</translation>
 <translation id="1285320974508926690">Երբեք չթարգմանել այս կայքը</translation>
+<translation id="1285400217480592994">Ստուգել ֆայլերի բովանդակությունը, որոնք դուք ներբեռնում կամ վերբեռնում եք Chrome-ի միջոցով։</translation>
 <translation id="1292701964462482250">«Համակարգչում տեղադրված ծրագիրը Chrome-ին թույլ չի տալիս անվտանգ միանալ համացանցին» (միայն Windows համակարգիչներում)</translation>
 <translation id="1294154142200295408">Հրամանատողի տարբերակներ</translation>
 <translation id="129553762522093515">Վերջերս փակված</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Հեռախոսահամար</translation>
 <translation id="2277103315734023688">Առաջ գնալ</translation>
 <translation id="2283340219607151381">Պահել հասցեները և դրանցով ինքնալրացնել ձևերը</translation>
+<translation id="2288422996159078444">Ձեր մուտքագրած տեքստերը, դիտած էջերը և ցանկացած այլ գործողություն համացանցում հետագծվում է։ Կայքերի բովանդակությունը կարող է փոխվել առանց ձեր իմացության։</translation>
 <translation id="2289385804009217824">Կտրել</translation>
 <translation id="2292556288342944218">Համացանցի մուտքն արգելափակված է</translation>
 <translation id="2297722699537546652">B5 (ծրար)</translation>
@@ -436,6 +439,7 @@
 <translation id="2989742184762224133">Երկու ամրակ վերևում</translation>
 <translation id="2991174974383378012">Համօգտագործում այլ կայքերի հետ</translation>
 <translation id="2991571918955627853">Այս պահին չեք կարող այցելել <ph name="SITE" /> կայք, քանի որ այն օգտագործում է HSTS հաղորդակարգ։ Ցանցային սխալներն ու հարձակումները սովորաբար ժամանակավոր բնույթ են կրում, և հավանաբար այս էջը հասանելի կլինի ավելի ուշ:</translation>
+<translation id="2996674880327704673">Առաջարկներ Google-ից</translation>
 <translation id="3005723025932146533">Ցուցադրել պահված պատճենը</translation>
 <translation id="3008447029300691911">Մուտքագրեք <ph name="CREDIT_CARD" /> քարտի CVC կոդը: Հենց որ հաստատեք, ձեր քարտի տվյալները կտրամադրվեն այս կայքին:</translation>
 <translation id="3010559122411665027">Ցանկի միավոր «<ph name="ENTRY_INDEX" />»՝ <ph name="ERROR" /></translation>
@@ -448,6 +452,7 @@
 <translation id="3060227939791841287">C9 (ծրար)</translation>
 <translation id="3061707000357573562">Խոցելիության շտկում</translation>
 <translation id="3064966200440839136">Դուք դուրս կգաք ինկոգնիտո ռեժիմից՝ արտաքին հավելվածում վճարում կատարելու համար։ Շարունակե՞լ։</translation>
+<translation id="3086579638707268289">Ձեր գործողությունները համացանցում հետագծվում են</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Ավելացրեք ստացման հասցեն</translation>
 <translation id="3105172416063519923">Ակտիվների ID՝</translation>
@@ -500,6 +505,7 @@
 <translation id="3369192424181595722">Ժամացույցի սխալ</translation>
 <translation id="337363190475750230">Անջատված է</translation>
 <translation id="3377188786107721145">Կանոնի վերլուծման սխալ</translation>
+<translation id="3377736046129930310">Օգտագործել էկրանի կողպումը՝ քարտերն ավելի արագ հաստատելու համար</translation>
 <translation id="3380365263193509176">Անհայտ սխալ</translation>
 <translation id="3380864720620200369">Սպասառուի ID`</translation>
 <translation id="3387261909427947069">Վճարման եղանակներ</translation>
@@ -664,6 +670,7 @@
 <translation id="4194250254487269611">Չհաջողվեց պահել քարտը</translation>
 <translation id="4196861286325780578">&amp;Վերարկել տեղափոխումը</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Ստուգել հրապատի և հակավիրուսային ծրագրի կազմաձևումը<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">մուտքի էկրանի պրոֆիլ</translation>
 <translation id="4215751373031079683">7x9 (ծրար)</translation>
 <translation id="4220128509585149162">Խափանումներ</translation>
 <translation id="422022731706691852"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> կայքի հարձակվողները կարող են ձեզ խաբեությամբ ստիպել տեղադրել վնասարար ծրագրեր, որոնց հետևանքով կփոխվի ձեր գլխավոր էջը կամ ձեր այցելած կայքերի վրա ավելորդ գովազդներ կցուցադրվեն: <ph name="BEGIN_LEARN_MORE_LINK" />Իմանալ ավելին<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -746,6 +753,7 @@
 <translation id="4515275063822566619">Քարտերն ու հասցեները նշված են ձեր Google հաշվում (<ph name="ACCOUNT_EMAIL" />) և Chrome-ում: Դրանք կարող եք կառավարել <ph name="BEGIN_LINK" />Կարգավորումներում<ph name="END_LINK" />:</translation>
 <translation id="4517607026994743406">Comm-10 (ծրար)</translation>
 <translation id="4522570452068850558">Մանրամասներ</translation>
+<translation id="4524138615196389145">Այսուհետ ավելի արագ հաստատեք ձեր քարտերը WebAuthn-ի միջոցով</translation>
 <translation id="4524805452350978254">Կառավարել քարտերը</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -857,6 +865,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64 բիթանոց)</translation>
+<translation id="5121469660360593280">Ուղարկեք ձեր ադմինիստրատորին անվտանգությանը սպառնացող գործողությունների մասին տվյալները, որոնք նշվել են Chrome Enterprise օգտատերերի պաշտպանության համակարգի կողմից որպես վտանգավոր։ Սա կարող է ներառել ձեր այցելած էջերի հասցեները, ֆայլերի անուններ կամ մետատվյալներ, ինչպես նաև օգտանուններ, որոնք օգտագործում եք ձեր սարքում կամ Chrome-ում հաշիվ մտնելու համար։</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Հաստատեք ձեր քարտը</translation>
 <translation id="5135404736266831032">Հասցեների կառավարում...</translation>
@@ -868,6 +877,7 @@
 <translation id="5159010409087891077">Բացել էջը նոր ինկոգնիտո պատուհանում (⇧⌘N)</translation>
 <translation id="516920405563544094">Մուտքագրեք <ph name="CREDIT_CARD" /> քարտի CVC կոդը։ Հաստատումից հետո ձեր Google հաշվին կցված քարտի տվյալները կօգտագործվեն այս կայքի կողմից։</translation>
 <translation id="5169827969064885044">Հնարավոր է՝ չկարողանաք օգտագործել ձեր կազմակերպության հաշիվը, կամ ինչ-որ մեկը կարող է գողանալ ձեր անձնական տվյալները։ Խորհուրդ ենք տալիս փոխել գաղտնաբառը։</translation>
+<translation id="5170017743895942767">Chrome Enterprise օգտատերերի պաշտպանության համակարգ</translation>
 <translation id="5171045022955879922">Որոնեք կամ մուտքագրեք URL-ը</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Համակարգիչ</translation>
@@ -988,6 +998,7 @@
 <translation id="5730040223043577876">Խորհուրդ ենք տալիս վերակայել ձեր գաղտնաբառը, եթե այն օգտագործել եք այլ կայքերում:</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Պահեք քարտը Google հաշվում}one{Պահեք քարտը Google հաշվում}other{Պահեք քարտերը Google հաշվում}}</translation>
 <translation id="5763042198335101085">Մուտքագրեք վավեր էլ․ հասցե</translation>
+<translation id="5763703224595565476">Ադմինիստրատորը միացրել է Chrome Enterprise օգտատերերի պաշտպանության համակարգը ձեր դիտարկիչում։ Chrome Enterprise օգտատերերի պաշտպանության համակարգին հասանելի են ձեր որոշակի տվյալները։</translation>
 <translation id="5765072501007116331">Առաքման եղանակներն ու պայմանները տեսնելու համար ընտրեք հասցե</translation>
 <translation id="5778550464785688721">MIDI սարքերի ամբողջական կառավարում</translation>
 <translation id="5781136890105823427">Փորձարկումը միացված է</translation>
@@ -1067,6 +1078,7 @@
 <translation id="6094273045989040137">Ավելացնել ծանոթագրություն</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">Ձեր Google հաշվում կարող են լինել այցելությունների պատմության այլ ձևեր ևս: Դրանք կարող եք գտնել <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> էջում:</translation>
+<translation id="6120179357481664955">Հիշո՞ւմ եք ձեր UPI ID-ն</translation>
 <translation id="6132597952260690497">Տեղեկություններ տեղադրված ընդլայնումների և փլագինների մասին</translation>
 <translation id="6146055958333702838">Ստուգեք բոլոր մալուխները և վերաբեռնեք երթուղիչները, մոդեմները կամ օգտագործվող
     այլ ցանցային սարքերը:</translation>
@@ -1082,6 +1094,7 @@
 <translation id="6221345481584921695">Վերջերս Google Safe Browsing-ը <ph name="BEGIN_LINK" />վնասագիր է հայտնաբերել<ph name="END_LINK" /> <ph name="SITE" /> կայքում: Նույնիսկ ապահով վեբկայքերը երբեմն վնասվում են վնասագրերով: Այս վնասարար բովանդակությունը գալիս է <ph name="SUBRESOURCE_HOST" /> կայքից, որը վնասագրերի հայտնի տարածող է:</translation>
 <translation id="6234122620015464377">Կտրել յուրաքանչյուր փաստաթղթից հետո</translation>
 <translation id="6240447795304464094">Google Pay-ի լոգո</translation>
+<translation id="6241121617266208201">Թաքցել հուշումները</translation>
 <translation id="6251924700383757765">Գաղտնիության քաղաքականություն</translation>
 <translation id="6254436959401408446">Այս էջը բացելու համար բավարար տարածք չկա</translation>
 <translation id="625755898061068298">Զգուշացումներն անջատված են այս կայքի համար:</translation>
@@ -1128,6 +1141,7 @@
 <translation id="6409754798200046165">Դուք հենց նոր մուտքագրեցիք ձեր գաղտնաբառը կասկածելի կայքում: Խորհուրդ ենք տալիս փոխել գաղտնաբառը։</translation>
 <translation id="6410264514553301377">Մուտքագրեք <ph name="CREDIT_CARD" /> քարտի սպառման ամսաթիվը և CVC կոդը</translation>
 <translation id="6415778972515849510">Chromium-ը կօգնի պաշտպանել ձեր Google հաշիվը և փոխել գաղտնաբառը։</translation>
+<translation id="6423385022588644828">Այսուհետ ավելի արագ հաստատեք ձեր քարտերը Touch ID-ի միջոցով</translation>
 <translation id="6427730057873428458">Երկփեղկ ծալում</translation>
 <translation id="6433490469411711332">Փոփոխեք կոնտակտային տվյալները</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" />-ը մերժեց կապակցումը:</translation>
@@ -1198,12 +1212,14 @@
 <translation id="6786747875388722282">Ընդլայնումներ</translation>
 <translation id="6790428901817661496">Նվագարկել</translation>
 <translation id="679355240208270552">Անտեսվում է, քանի որ կանոնում սահմանված չէ կանխադրված որոնիչը։</translation>
+<translation id="6794951432696553238">Այսուհետ ավելի արագ հաստատեք ձեր քարտերը Windows Hello-ի միջոցով</translation>
 <translation id="681021252041861472">Պարտադիր դաշտ</translation>
 <translation id="6810899417690483278">Կարգավորման ID</translation>
 <translation id="6825578344716086703">Դուք փորձում էիք մտնել <ph name="DOMAIN" />, սակայն սերվերի ներկայացրած հավաստագիրը ստորագրված էր թույլ ալգորիթմով: Սա նշանակում է, որ սերվերի ներկայացրած անվտանգության հավատարմագրերը կարող են կեղծված լինել, իսկ սերվերը կարող է ձեր ակնկալած սերվերը չլինել (հնարավոր է՝ դուք կապ եք հաստատել հարձակվողի հետ):</translation>
 <translation id="6826370046007623921">Տվյալների արտահոսքի կանխարգելում</translation>
 <translation id="6831043979455480757">Թարգմանել</translation>
 <translation id="6839929833149231406">Շրջան</translation>
+<translation id="6846340164947227603">Օգտագործել վիրտուալ քարտի համարը</translation>
 <translation id="6852204201400771460">Կրկին բեռնե՞լ հավելվածը</translation>
 <translation id="6865412394715372076">Չհաջողվեց հաստատել այս քարտը</translation>
 <translation id="6868206169573555318">Թարմացնելու համար վերագործարկեք</translation>
@@ -1232,6 +1248,7 @@
 <translation id="6989763994942163495">Ցույց տալ լրացուցիչ կարգավորումները…</translation>
 <translation id="6993898126790112050">6x9 (ծրար)</translation>
 <translation id="6996312675313362352">Միշտ թարգմանել <ph name="ORIGINAL_LANGUAGE" /> լեզվից</translation>
+<translation id="7004583254764674281">Օգտագործել Windows Hello-ն՝ քարտերն ավելի արագ հաստատելու համար</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Այս գանձումները կարող են մեկանգամյա կամ պարբերական լինել և հնարավոր է ակնհայտ չերևան:</translation>
 <translation id="7029809446516969842">Գաղտնաբառեր</translation>
@@ -1242,6 +1259,7 @@
 <translation id="7064851114919012435">Կոնտակտային տվյալներ</translation>
 <translation id="7075452647191940183">Հարցումը չափազանց մեծ է</translation>
 <translation id="7079718277001814089">Այս կայքը վնասաբեր ծրագիր է պարունակում</translation>
+<translation id="7081308185095828845">Այս գործառույթը հասանելի չէ ձեր սարքում</translation>
 <translation id="7087282848513945231">Կոմսություն</translation>
 <translation id="7090678807593890770">Որոնեք Google-ում «<ph name="LINK" />» հարցումով</translation>
 <translation id="7108338896283013870">Թաքցնել</translation>
@@ -1295,9 +1313,11 @@
 <translation id="733923710415886693">Սերվերի վկայագիրը չի բացահայտվել «Վկայագրերի թափանցիկություն» կանոնի միջոցով:</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">Փոխկապակցված է՝</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> տիրույթի ադմինիստրատորը միացրել է Chrome Enterprise օգտատերերի պաշտպանության համակարգը ձեր դիտարկիչում։ Chrome Enterprise օգտատերերի պաշտպանության համակարգին հասանելի են ձեր որոշակի տվյալները։</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Հրամանատող</translation>
 <translation id="7372973238305370288">որոնման արդյունք</translation>
+<translation id="7374733840632556089">Այս խնդիրը կարող է առաջանալ հավաստագրի պատճառով, որը դուք կամ ինչ-որ մեկը տեղադրել եք ձեր սարքում։ Հավաստագիրն օգտագործվում է ցանցեր որսալու ու հետագծելու նպատակով։ Այն վստահելի չէ Chrome-ի համար։ Թեև լինում են օրինական հետագծման դեպքեր, օրինակ՝ դպրոցի կամ ընկերության ցանցում, Chrome-ին անհրաժեշտ է համոզվել, որ դուք գիտեք այդ մասին, նույնիսկ եթե չեք կարող դադարեցնել դա։ Հետագծումը կարող է իրականացվել ցանկացած դիտարկիչում կամ հավելվածում, որին հասանելի է համացանցը։</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Մեդիա կարգավորումներ</translation>
 <translation id="7378627244592794276">Ոչ հիմա</translation>
@@ -1326,6 +1346,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Իմացեք ավելին<ph name="END_LINK" /> այս խնդրի մասին:</translation>
 <translation id="7455133967321480974">Օգտագործել համընդհանուր կանխադրվածը (Արգելափակել)</translation>
 <translation id="7460618730930299168">Այս աշխատաշրջանի կարգավորումները տարբերվում են ձեր ընտրած աշխատաշրջանի կարգավորումներից: Շարունակե՞լ</translation>
+<translation id="7464821087936825778">Ելք որոնման ռեժիմից…</translation>
 <translation id="7473891865547856676">Ոչ</translation>
 <translation id="7481312909269577407">Forward</translation>
 <translation id="7485870689360869515">Տվյալներ չեն գտնվել:</translation>
@@ -1547,6 +1568,7 @@
 <translation id="8559762987265718583"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />-ի հետ կապակցում չի կարող հաստատվել, քանի որ ձեր սարքի ամսաթիվը և ժամը (<ph name="DATE_AND_TIME" />) սխալ է:</translation>
 <translation id="8564985650692024650">Խորհուրդ ենք տալիս վերակայել <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" />-ի ձեր գաղտնաբառը, եթե այն օգտագործել եք այլ կայքերում:</translation>
 <translation id="8571890674111243710">Էջը թարգմանվում է <ph name="LANGUAGE" />…</translation>
+<translation id="8574899947864779331">Օգտագործել Touch ID-ն՝ քարտերն ավելի արագ հաստատելու համար</translation>
 <translation id="858637041960032120">Ավելացնել հեռախոսահամար</translation>
 <translation id="860043288473659153">Քարտապանի անունը</translation>
 <translation id="8616822740383114808">Այս կարգավորումը պարտադրված է «<ph name="SETTINGS_PAGE" />» էջի «<ph name="ENFORCING_SETTING" />» կարգավորման կողմից</translation>
diff --git a/components/strings/components_strings_id.xtb b/components/strings/components_strings_id.xtb
index fcc19ce..fa69f8e0 100644
--- a/components/strings/components_strings_id.xtb
+++ b/components/strings/components_strings_id.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Muat halaman nanti</translation>
 <translation id="1015730422737071372">Berikan detail tambahan</translation>
 <translation id="1021110881106174305">Kartu yang diterima</translation>
+<translation id="1021753677514347426">Masalah ini terjadi karena sertifikat yang diinstal di perangkat oleh Anda atau orang lain. Sertifikat ini diketahui sebagai sertifikat yang digunakan untuk memantau dan melakukan intersepsi jaringan dan tidak dipercaya oleh Chromium. Sementara terdapat beberapa kasus pemantauan yang sah, seperti pada jaringan sekolah atau perusahaan, Chromium ingin memastikan Anda menyadari terjadinya masalah tersebut, meskipun Anda tidak dapat menghentikannya. Pemantauan dapat terjadi di browser atau aplikasi yang mengakses web.</translation>
 <translation id="1032854598605920125">Putar searah jarum jam</translation>
 <translation id="1036348656032585052">Matikan</translation>
 <translation id="1038842779957582377">nama tidak diketahui</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Laporan kerusakan diambil pada pukul <ph name="CRASH_TIME" /> (belum diupload atau diabaikan)</translation>
 <translation id="1270502636509132238">Metode Pengambilan</translation>
 <translation id="1285320974508926690">Jangan pernah terjemahkan situs ini</translation>
+<translation id="1285400217480592994">Pindai konten file yang Anda download atau upload di Chrome.</translation>
 <translation id="1292701964462482250">"Software di komputer mencegah Chrome terhubung dengan aman ke web" (khusus komputer Windows)</translation>
 <translation id="1294154142200295408">Variasi baris perintah</translation>
 <translation id="129553762522093515">Baru saja ditutup</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Nomor telepon</translation>
 <translation id="2277103315734023688">Cari Maju</translation>
 <translation id="2283340219607151381">Simpan dan isi alamat</translation>
+<translation id="2288422996159078444">Apa pun yang Anda ketik, halaman mana pun yang Anda lihat, atau aktivitas lain di web sedang dipantau. Konten di situs dapat berubah tanpa pemberitahuan sebelumnya.</translation>
 <translation id="2289385804009217824">Trim</translation>
 <translation id="2292556288342944218">Akses Internet Anda diblokir</translation>
 <translation id="2297722699537546652">B5 (Envelope)</translation>
@@ -436,6 +439,7 @@
 <translation id="2989742184762224133">Dua jepretan di atas</translation>
 <translation id="2991174974383378012">Berbagi dengan Situs Web</translation>
 <translation id="2991571918955627853">Anda tidak dapat mengunjungi <ph name="SITE" /> sekarang karena situs menggunakan HSTS. Error jaringan dan serangan biasanya bersifat sementara, sehingga halaman ini mungkin akan berfungsi nanti.</translation>
+<translation id="2996674880327704673">Saran oleh Google</translation>
 <translation id="3005723025932146533">Tampilkan salinan yang disimpan</translation>
 <translation id="3008447029300691911">Masukkan CVC untuk <ph name="CREDIT_CARD" />. Setelah mengonfirmasi, detail kartu Anda akan dibagikan dengan situs ini.</translation>
 <translation id="3010559122411665027">Entri daftar "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -448,6 +452,7 @@
 <translation id="3060227939791841287">C9 (Envelope)</translation>
 <translation id="3061707000357573562">Layanan Patch</translation>
 <translation id="3064966200440839136">Keluar dari mode samaran untuk membayar melalui aplikasi eksternal. Lanjutkan?</translation>
+<translation id="3086579638707268289">Aktivitas Anda di web sedang dipantau</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Tambahkan Alamat Pengambilan</translation>
 <translation id="3105172416063519923">ID Aset:</translation>
@@ -500,6 +505,7 @@
 <translation id="3369192424181595722">Kesalahan jam</translation>
 <translation id="337363190475750230">Dicabut aksesnya</translation>
 <translation id="3377188786107721145">Kesalahan penguraian kebijakan</translation>
+<translation id="3377736046129930310">Gunakan kunci layar untuk mengonfirmasi kartu dengan lebih cepat</translation>
 <translation id="3380365263193509176">Kesalahan tidak dikenal</translation>
 <translation id="3380864720620200369">ID Klien:</translation>
 <translation id="3387261909427947069">Metode Pembayaran</translation>
@@ -664,6 +670,7 @@
 <translation id="4194250254487269611">Saat ini informasi kartu Anda tidak dapat disimpan</translation>
 <translation id="4196861286325780578">&amp;Ulangi pemindahan</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Periksa konfigurasi antivirus dan firewall<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">profil layar login</translation>
 <translation id="4215751373031079683">7x9 (Envelope)</translation>
 <translation id="4220128509585149162">Kerusakan</translation>
 <translation id="422022731706691852">Penyerang di <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> dapat mengelabui Anda agar menginstal program yang membahayakan pengalaman browsing Anda (misalnya, dengan mengubah halaman beranda atau menampilkan iklan tambahan di situs yang dikunjungi). <ph name="BEGIN_LEARN_MORE_LINK" />Pelajari lebih lanjut<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -746,6 +753,7 @@
 <translation id="4515275063822566619">Kartu dan alamat berasal dari Chrome dan Akun Google (<ph name="ACCOUNT_EMAIL" />). Anda dapat mengelolanya di <ph name="BEGIN_LINK" />Setelan<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Comm-10 (Envelope)</translation>
 <translation id="4522570452068850558">Detail</translation>
+<translation id="4524138615196389145">Mulai sekarang, konfirmasikan kartu Anda lebih cepat menggunakan WebAuthn</translation>
 <translation id="4524805452350978254">Kelola kartu</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -857,6 +865,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64 bit)</translation>
+<translation id="5121469660360593280">Bagikan data tentang peristiwa keamanan yang telah ditandai oleh Perlindungan Pengguna Chrome Enterprise kepada Administrator Anda. Informasi ini dapat mencakup URL halaman yang Anda kunjungi, metadata atau nama file, dan nama pengguna yang Anda gunakan untuk login ke perangkat dan Chrome.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Verifikasi kartu</translation>
 <translation id="5135404736266831032">Kelola alamat...</translation>
@@ -868,6 +877,7 @@
 <translation id="5159010409087891077">Buka halaman dalam Jendela samaran baru (⇧⌘N)</translation>
 <translation id="516920405563544094">Masukkan CVC untuk <ph name="CREDIT_CARD" />. Setelah mengonfirmasi, detail kartu dari Akun Google Anda akan dibagikan dengan situs ini.</translation>
 <translation id="5169827969064885044">Anda dapat kehilangan akses ke akun organisasi atau mengalami pencurian identitas. Chrome menyarankan Anda untuk mengubah sandi sekarang.</translation>
+<translation id="5170017743895942767">Perlindungan Pengguna Chrome Enterprise</translation>
 <translation id="5171045022955879922">Telusuri atau ketik URL</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Mesin</translation>
@@ -988,6 +998,7 @@
 <translation id="5730040223043577876">Chrome menyarankan untuk menyetel ulang sandi jika Anda juga menggunakannya di situs lain.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Simpan kartu di Akun Google Anda}other{Simpan kartu di Akun Google Anda}}</translation>
 <translation id="5763042198335101085">Masukkan alamat email yang valid</translation>
+<translation id="5763703224595565476">Administrator Anda telah mengaktifkan Perlindungan Pengguna Chrome Enterprise di browser Anda. Perlindungan Pengguna Chrome Enterprise memiliki akses ke beberapa data Anda.</translation>
 <translation id="5765072501007116331">Untuk melihat persyaratan dan metode pengiriman, pilih alamat</translation>
 <translation id="5778550464785688721">Kontrol penuh perangkat MIDI</translation>
 <translation id="5781136890105823427">Eksperimen diaktifkan</translation>
@@ -1067,6 +1078,7 @@
 <translation id="6094273045989040137">Anotasi</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">Akun Google Anda mungkin memiliki bentuk histori penjelajahan lainnya di <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
+<translation id="6120179357481664955">Ingat ID UPI Anda?</translation>
 <translation id="6132597952260690497">Informasi tentang ekstensi dan plugin yang diinstal</translation>
 <translation id="6146055958333702838">Periksa semua kabel dan boot ulang router, modem, atau perangkat
     jaringan lain yang mungkin Anda gunakan.</translation>
@@ -1082,6 +1094,7 @@
 <translation id="6221345481584921695">Google Safe Browsing baru saja <ph name="BEGIN_LINK" />mendeteksi software perusak<ph name="END_LINK" /> di <ph name="SITE" />. Situs web yang biasanya aman terkadang terinfeksi software perusak. Konten berbahaya datang dari <ph name="SUBRESOURCE_HOST" />, yang dikenal luas sebagai distributor software perusak.</translation>
 <translation id="6234122620015464377">Trim setelah setiap dokumen tercetak</translation>
 <translation id="6240447795304464094">Logo Google Pay</translation>
+<translation id="6241121617266208201">Sembunyikan saran</translation>
 <translation id="6251924700383757765">Kebijakan privasi</translation>
 <translation id="6254436959401408446">Tidak cukup memori untuk membuka halaman ini</translation>
 <translation id="625755898061068298">Anda telah memilih untuk menonaktifkan peringatan keamanan untuk situs ini.</translation>
@@ -1128,6 +1141,7 @@
 <translation id="6409754798200046165">Anda baru saja memasukkan sandi ke situs yang berisi penipuan. Chrome merekomendasikan untuk mengubah sandi Anda saat ini.</translation>
 <translation id="6410264514553301377">Masukkan tanggal kedaluwarsa dan CVC <ph name="CREDIT_CARD" /></translation>
 <translation id="6415778972515849510">Chromium dapat membantu Anda melindungi Akun Google dan mengubah sandi Anda.</translation>
+<translation id="6423385022588644828">Mulai sekarang, konfirmasikan kartu Anda lebih cepat menggunakan Touch ID</translation>
 <translation id="6427730057873428458">Gate fold</translation>
 <translation id="6433490469411711332">Edit info kontak</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> menolak untuk tersambung.</translation>
@@ -1198,12 +1212,14 @@
 <translation id="6786747875388722282">Ekstensi</translation>
 <translation id="6790428901817661496">Putar</translation>
 <translation id="679355240208270552">Diabaikan karena penelusuran default tidak diaktifkan menurut kebijakan.</translation>
+<translation id="6794951432696553238">Mulai sekarang, konfirmasikan kartu dengan lebih cepat menggunakan Windows Hello</translation>
 <translation id="681021252041861472">Kolom Wajib Diisi</translation>
 <translation id="6810899417690483278">ID Penyesuaian</translation>
 <translation id="6825578344716086703">Anda berusaha menjangkau <ph name="DOMAIN" />, tetapi server menyajikan sertifikat yang ditandatangani menggunakan algoritme tanda tangan yang lemah (seperti SHA-1). Hal ini berarti kredensial keamanan yang disajikan server mungkin telah dipalsukan, dan server tersebut mungkin bukan yang diharapkan (Anda mungkin sedang berkomunikasi dengan penyerang).</translation>
 <translation id="6826370046007623921">Pencegahan Kebocoran Data</translation>
 <translation id="6831043979455480757">Terjemahkan</translation>
 <translation id="6839929833149231406">Wilayah</translation>
+<translation id="6846340164947227603">Gunakan nomor kartu virtual...</translation>
 <translation id="6852204201400771460">Muat ulang aplikasi?</translation>
 <translation id="6865412394715372076">Kartu ini tidak dapat diverifikasi sekarang</translation>
 <translation id="6868206169573555318">Luncurkan Kembali untuk Mengupdate</translation>
@@ -1232,6 +1248,7 @@
 <translation id="6989763994942163495">Tampilkan setelan lanjutan...</translation>
 <translation id="6993898126790112050">6x9 (Envelope)</translation>
 <translation id="6996312675313362352">Selalu terjemahkan bahasa <ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">Gunakan Windows Hello untuk mengonfirmasi kartu lebih cepat</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Tagihan ini bisa hanya satu kali atau berulang, dan mungkin tidak pasti.</translation>
 <translation id="7029809446516969842">Sandi</translation>
@@ -1242,6 +1259,7 @@
 <translation id="7064851114919012435">Info kontak</translation>
 <translation id="7075452647191940183">Permintaan terlalu besar</translation>
 <translation id="7079718277001814089">Situs ini berisi malware</translation>
+<translation id="7081308185095828845">Fitur ini tidak tersedia di perangkat Anda</translation>
 <translation id="7087282848513945231">Wilayah</translation>
 <translation id="7090678807593890770">Telusuri <ph name="LINK" /> di Google</translation>
 <translation id="7108338896283013870">Sembunyikan</translation>
@@ -1293,9 +1311,11 @@
 <translation id="733923710415886693">Sertifikat server tidak diungkapkan melalui Transparansi Sertifikat.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">Berafiliasi:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> telah mengaktifkan Perlindungan Pengguna Chrome Enterprise di browser Anda. Perlindungan Pengguna Chrome Enterprise memiliki akses ke beberapa data Anda.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Baris Perintah</translation>
 <translation id="7372973238305370288">hasil penelusuran</translation>
+<translation id="7374733840632556089">Masalah ini terjadi karena sertifikat yang diinstal di perangkat oleh Anda atau orang lain. Sertifikat ini diketahui sebagai sertifikat yang digunakan untuk memantau dan melakukan intersepsi jaringan dan tidak dipercaya oleh Chrome. Sementara terdapat beberapa kasus pemantauan yang sah, seperti pada jaringan sekolah atau perusahaan, Chrome ingin memastikan Anda mengetahui adanya pemantauan ini, meskipun Anda tidak dapat menghentikannya. Pemantauan dapat terjadi di browser atau aplikasi yang mengakses web.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Kontrol Media</translation>
 <translation id="7378627244592794276">Tidak</translation>
@@ -1324,6 +1344,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Pelajari lebih lanjut<ph name="END_LINK" /> tentang masalah ini.</translation>
 <translation id="7455133967321480974">Gunakan default global (Cekal)</translation>
 <translation id="7460618730930299168">Penyaringan ini berbeda dengan yang telah Anda pilih. Lanjutkan?</translation>
+<translation id="7464821087936825778">Keluar dari mode penelusuran</translation>
 <translation id="7473891865547856676">Lain Kali</translation>
 <translation id="7481312909269577407">Maju</translation>
 <translation id="7485870689360869515">Tidak ada data yang ditemukan.</translation>
@@ -1543,6 +1564,7 @@
 <translation id="8559762987265718583">Sambungan pribadi ke <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> tidak dapat dibuat karena tanggal dan waktu (<ph name="DATE_AND_TIME" />) perangkat tidak benar.</translation>
 <translation id="8564985650692024650">Chromium menyarankan untuk menyetel ulang sandi <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> jika Anda juga menggunakannya di situs lain.</translation>
 <translation id="8571890674111243710">Menerjemahkan halaman ke <ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">Gunakan Touch ID untuk mengonfirmasi kartu dengan lebih cepat</translation>
 <translation id="858637041960032120">+ nomor telepon</translation>
 <translation id="860043288473659153">Nama pemegang kartu</translation>
 <translation id="8616822740383114808">Setelan ini diterapkan oleh "<ph name="ENFORCING_SETTING" />" dalam "<ph name="SETTINGS_PAGE" />"</translation>
diff --git a/components/strings/components_strings_is.xtb b/components/strings/components_strings_is.xtb
index 2b9c917a..0d66236 100644
--- a/components/strings/components_strings_is.xtb
+++ b/components/strings/components_strings_is.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Hlaða síðu seinna</translation>
 <translation id="1015730422737071372">Veita frekari upplýsingar</translation>
 <translation id="1021110881106174305">Gild greiðslukort</translation>
+<translation id="1021753677514347426">Þetta vandamál tengist vottorði sem þú eða einhver annar setti upp í tækinu þínu. Vitað er að þetta vottorð er notað til að fylgjast með og grípa inn í netkerfi og Chromium treystir því ekki. Þrátt fyrir að notkun þess geti í einhverjum tilvikum átt rétt á sér, svo sem á skóla- eða fyrirtækjaneti, vill Chromium tryggja að þú vitir af því, þótt þú getir ekki komið í veg fyrir notkun þess. Eftirlit getur átt sér stað í öllum vöfrum eða forritum sem nota vefinn.</translation>
 <translation id="1032854598605920125">Snúa réttsælis</translation>
 <translation id="1036348656032585052">Slökkva</translation>
 <translation id="1038842779957582377">óþekkt heiti</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Hrunskýrsla gerð þann <ph name="CRASH_TIME" /> (ekki hlaðið upp eða hunsuð að svo stöddu)</translation>
 <translation id="1270502636509132238">Afhendingarmáti</translation>
 <translation id="1285320974508926690">Aldrei þýða þetta vefsvæði</translation>
+<translation id="1285400217480592994">Skanna innihald skráa sem þú sækir eða hleður inn í Chrome.</translation>
 <translation id="1292701964462482250">„Hugbúnaður í tölvunni þinni hindrar Chrome í að tengjast netinu á öruggan máta“ (einungis Windows-tölvur)</translation>
 <translation id="1294154142200295408">Tilbrigði fyrir skipanalínu</translation>
 <translation id="129553762522093515">Nýlega lokað</translation>
@@ -285,6 +287,7 @@
 <translation id="2270484714375784793">Símanúmer</translation>
 <translation id="2277103315734023688">Spóla áfram</translation>
 <translation id="2283340219607151381">Vista og fylla út heimilisföng</translation>
+<translation id="2288422996159078444">Verið er að fylgjast með öllu sem þú slærð inn, síðum sem þú skoðar og öllum öðrum aðgerðum á vefnum. Innihald vefsvæða getur breyst án vitundar þinnar.</translation>
 <translation id="2289385804009217824">Klippa</translation>
 <translation id="2292556288342944218">Lokað er fyrir aðgang þinn að internetinu</translation>
 <translation id="2297722699537546652">B5 (umslag)</translation>
@@ -437,6 +440,7 @@
 <translation id="2989742184762224133">Tvö hefti efst</translation>
 <translation id="2991174974383378012">Deilir með vefsvæðum</translation>
 <translation id="2991571918955627853">Þú getur ekki farið á <ph name="SITE" /> að svo stöddu þar sem vefsvæðið notast við HSTS. Netvillur og árásir eru yfirleitt tímabundnar og því mun þessi síða líklega virka síðar.</translation>
+<translation id="2996674880327704673">Tillögur frá Google</translation>
 <translation id="3005723025932146533">Sýna vistað afrit</translation>
 <translation id="3008447029300691911">Sláðu inn CVC-númerið fyrir <ph name="CREDIT_CARD" />. Greiðslukortaupplýsingum verður deilt með þessu vefsvæði eftir að þú hefur staðfest.</translation>
 <translation id="3010559122411665027">Listafærsla „<ph name="ENTRY_INDEX" />“: <ph name="ERROR" /></translation>
@@ -449,6 +453,7 @@
 <translation id="3060227939791841287">C9 (umslag)</translation>
 <translation id="3061707000357573562">Plástraþjónusta</translation>
 <translation id="3064966200440839136">Slökkva þarf á huliðsstillingu til að greiða með öðru forriti. Halda áfram?</translation>
+<translation id="3086579638707268289">Verið er að fylgjast með aðgerðum þínum á vefnum</translation>
 <translation id="3095940652251934233">Yfirlit</translation>
 <translation id="3096100844101284527">Bæta við heimilisfangi til að sækja</translation>
 <translation id="3105172416063519923">Auðkenni eignar:</translation>
@@ -501,6 +506,7 @@
 <translation id="3369192424181595722">Klukkuvilla</translation>
 <translation id="337363190475750230">Úthlutun dregin til baka</translation>
 <translation id="3377188786107721145">Villa við að þátta reglu</translation>
+<translation id="3377736046129930310">Notaðu skjálás til að staðfesta kort hraðar</translation>
 <translation id="3380365263193509176">Óþekkt villa</translation>
 <translation id="3380864720620200369">Auðkenni biðlara:</translation>
 <translation id="3387261909427947069">Greiðslumátar</translation>
@@ -666,6 +672,7 @@
 <translation id="4194250254487269611">Ekki er hægt að vista kortið þitt núna</translation>
 <translation id="4196861286325780578">&amp;Endurtaka flutning</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Athuga eldveggjar- og vírusvarnastillingar<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">prófíll innskráningarskjás</translation>
 <translation id="4215751373031079683">7x9 (umslag)</translation>
 <translation id="4220128509585149162">Hrun</translation>
 <translation id="422022731706691852">Tölvuþrjótar á <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> gætu verið að reyna að ginna þig til að setja upp forrit sem gætu gert vefskoðun óþægilegri fyrir þig (til dæmis með því að breyta upphafssíðunni eða birta viðbótarauglýsingar á vefsvæðum sem þú heimsækir). <ph name="BEGIN_LEARN_MORE_LINK" />Frekari upplýsingar<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -748,6 +755,7 @@
 <translation id="4515275063822566619">Kort og heimilisföng eru fengin úr Chrome og Google reikningnum þínum (<ph name="ACCOUNT_EMAIL" />). Þú getur haft umsjón með þeim í <ph name="BEGIN_LINK" />stillingunum<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Comm-10 (umslag)</translation>
 <translation id="4522570452068850558">Upplýsingar</translation>
+<translation id="4524138615196389145">Staðfestu kortin þín hraðar með því að nota WebAuthn héðan í frá</translation>
 <translation id="4524805452350978254">Stjórna kortum</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -859,6 +867,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64 bita)</translation>
+<translation id="5121469660360593280">Deila gögnum um öryggisatvik sem Chrome Enterprise User Protect hefur tilkynnt kerfisstjóra um. Þetta gæti innihaldið vefslóðir síðna sem þú opnar, skráarheiti eða lýsigögn og notandanafnið sem þú notar til að skrá þig inn á tækið og í Chrome.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Staðfestu kortið þitt</translation>
 <translation id="5135404736266831032">Stjórna heimilisföngum...</translation>
@@ -870,6 +879,7 @@
 <translation id="5159010409087891077">Opna síðu í nýjum huliðsstillingarglugga (⇧⌘N)</translation>
 <translation id="516920405563544094">Sláðu inn CVC-númerið fyrir <ph name="CREDIT_CARD" />. Greiðslukortaupplýsingum af reikningnum þínum á Google verður deilt með þessu vefsvæði eftir að þú hefur staðfest.</translation>
 <translation id="5169827969064885044">Þú gætir misst aðgang að fyrirtækisreikningnum eða orðið fyrir auðkennisstuldi. Chrome mælir með því að þú skiptir um aðgangsorð núna.</translation>
+<translation id="5170017743895942767">Chrome Enterprise User Protect</translation>
 <translation id="5171045022955879922">Leitaðu eða sláðu inn vefslóð</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Vél</translation>
@@ -990,6 +1000,7 @@
 <translation id="5730040223043577876">Chrome mælir með því að þú endurstillir aðgangsorðið þitt ef þú notaðir það einnig á öðrum síðum.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Vistaðu kortið á Google reikningnum þínum}one{Vistaðu kortin á Google reikningnum þínum}other{Vistaðu kortin á Google reikningnum þínum}}</translation>
 <translation id="5763042198335101085">Sláðu inn gilt netfang</translation>
+<translation id="5763703224595565476">Stjórnandi þinn hefur kveikt á Chrome Enterprise User Protect í vafranum þínum. Chrome Enterprise User Protect hefur aðgang að sumum af gögnunum þínum.</translation>
 <translation id="5765072501007116331">Veldu heimilisfang til að sjá sendingarmáta og kröfur</translation>
 <translation id="5778550464785688721">Ótakmörkuð stjórn MIDI-tækja</translation>
 <translation id="5781136890105823427">Tilraun gerð virk</translation>
@@ -1069,6 +1080,7 @@
 <translation id="6094273045989040137">Setja inn skýringar</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">Google reikningurinn þinn kann að vera með annars konar vefskoðunarferil á <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
+<translation id="6120179357481664955">Muna eftir UPI-auðkenni?</translation>
 <translation id="6132597952260690497">Upplýsingar um uppsettar viðbætur</translation>
 <translation id="6146055958333702838">Kannaðu allar snúrur og endurræstu beina, mótöld og önnur
     nettæki sem þú kannt að vera að nota.</translation>
@@ -1084,6 +1096,7 @@
 <translation id="6221345481584921695">Örugg vefnotkun Google <ph name="BEGIN_LINK" />greindi nýlega spilliforrit<ph name="END_LINK" /> á <ph name="SITE" />. Vefsvæði sem allajafna eru örugg smitast stundum af spilliforritum. Skaðlega efnið er upprunnið frá <ph name="SUBRESOURCE_HOST" />, þekktum dreifingaraðila spilliforrita.</translation>
 <translation id="6234122620015464377">Klippa eftir hvert skjal</translation>
 <translation id="6240447795304464094">Google Pay merki</translation>
+<translation id="6241121617266208201">Fela tillögur</translation>
 <translation id="6251924700383757765">Persónuverndarstefna</translation>
 <translation id="6254436959401408446">Ekki nóg minni til að birta þessa síðu</translation>
 <translation id="625755898061068298">Þú hefur valið að slökkva á öryggisviðvörunum fyrir þetta vefsvæði.</translation>
@@ -1130,6 +1143,7 @@
 <translation id="6409754798200046165">Þú varst að slá aðgangsorðið þitt inn á villandi vefsvæði. Chrome mælir með því að þú skiptir um aðgangsorð núna.</translation>
 <translation id="6410264514553301377">Sláðu inn gildistímann og CVC-númerið fyrir <ph name="CREDIT_CARD" /></translation>
 <translation id="6415778972515849510">Chromium getur hjálpað þér að vernda Google reikninginn þinn og breyta aðgangsorðinu.</translation>
+<translation id="6423385022588644828">Staðfestu kortin þín hraðar með því að nota Touch ID héðan í frá</translation>
 <translation id="6427730057873428458">Bæklingabrot</translation>
 <translation id="6433490469411711332">Breyta samskiptaupplýsingum</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> neitaði að koma á tengingu.</translation>
@@ -1200,12 +1214,14 @@
 <translation id="6786747875388722282">Viðbætur</translation>
 <translation id="6790428901817661496">Spila</translation>
 <translation id="679355240208270552">Hunsað vegna þess að regla leyfir ekki sjálfgefna leit.</translation>
+<translation id="6794951432696553238">Staðfestu kortin þín hraðar með því að nota Windows Hello héðan í frá</translation>
 <translation id="681021252041861472">Áskilinn reitur</translation>
 <translation id="6810899417690483278">Auðkenni sérstillingar</translation>
 <translation id="6825578344716086703">Þú reyndir að ná í <ph name="DOMAIN" /> en þjónninn gaf upp vottorð sem er undirritað með ótraustu undirritunarreikniriti (eins og SHA-1). Þetta merkir að öryggisskilríkin sem þjónninn gaf upp gætu verið fölsuð og að þjónninn gæti verð annar sem sá sem þú reiknaðir með (þú gætir verið í samskiptum við tölvuþrjót).</translation>
 <translation id="6826370046007623921">Fyrirbyggjandi vörn gegn gagnatapi</translation>
 <translation id="6831043979455480757">Þýða</translation>
 <translation id="6839929833149231406">Svæði</translation>
+<translation id="6846340164947227603">Nota sýndarkortsnúmer...</translation>
 <translation id="6852204201400771460">Viltu endurhlaða forritið?</translation>
 <translation id="6865412394715372076">Ekki er hægt að staðfesta þetta kort í augnablikinu</translation>
 <translation id="6868206169573555318">Endurræstu til að uppfæra</translation>
@@ -1234,6 +1250,7 @@
 <translation id="6989763994942163495">Sýna ítarlegar stillingar...</translation>
 <translation id="6993898126790112050">6x9 (umslag)</translation>
 <translation id="6996312675313362352">Þýða alltaf þetta tungumál: <ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">Notaðu Windows Hello til að staðfesta kort hraðar</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Greiðslur gætu verið stakar eða endurteknar og hugsanlega er ekki greinilegt að borga þurfi.</translation>
 <translation id="7029809446516969842">Aðgangsorð</translation>
@@ -1244,6 +1261,7 @@
 <translation id="7064851114919012435">Samskiptaupplýsingar</translation>
 <translation id="7075452647191940183">Beiðnin er of stór</translation>
 <translation id="7079718277001814089">Þetta vefsvæði inniheldur spilliforrit</translation>
+<translation id="7081308185095828845">Þessi eiginleiki er ekki í boði í tækinu þínu</translation>
 <translation id="7087282848513945231">Sýsla</translation>
 <translation id="7090678807593890770">Leitaðu að <ph name="LINK" /> á Google</translation>
 <translation id="7108338896283013870">Fela</translation>
@@ -1297,9 +1315,11 @@
 <translation id="733923710415886693">Vottorð vefþjóns var ekki birt í gegnum gagnsæi vottorðs.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">Tengist:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> hefur kveikt á Chrome Enterprise User Protect fyrir vafrann þinn. Chrome Enterprise User Protect hefur aðgang að sumum af gögnunum þínum.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Skipanalína</translation>
 <translation id="7372973238305370288">leitarniðurstaða</translation>
+<translation id="7374733840632556089">Þetta vandamál tengist vottorði sem þú eða einhver annar setti upp í tækinu þínu. Vitað er að þetta vottorð er notað til að fylgjast með og grípa inn í netkerfi og Chrome treystir því ekki. Þrátt fyrir að notkun þess geti í einhverjum tilvikum átt rétt á sér, svo sem á skóla- eða fyrirtækjaneti, vill Chrome tryggja að þú vitir af því, þó að þú getir ekki komið í veg fyrir notkun þess. Eftirlit getur átt sér stað í öllum vöfrum eða forritum sem nota vefinn.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> – <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Spilunarstýringar</translation>
 <translation id="7378627244592794276">Neibb</translation>
@@ -1328,6 +1348,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Frekari upplýsingar<ph name="END_LINK" /> um þetta vandamál.</translation>
 <translation id="7455133967321480974">Nota altækt sjálfgildi (hafna)</translation>
 <translation id="7460618730930299168">Þetta er önnur sýning en þú valdir. Viltu halda áfram?</translation>
+<translation id="7464821087936825778">Lokar leitarstillingu</translation>
 <translation id="7473891865547856676">Nei, takk</translation>
 <translation id="7481312909269577407">Áfram</translation>
 <translation id="7485870689360869515">Engin gögn fundust.</translation>
@@ -1549,6 +1570,7 @@
 <translation id="8559762987265718583">Ekki er hægt að koma á lokaðri tengingu við <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> vegna þess að dag- og tímasetning tækisins (<ph name="DATE_AND_TIME" />) er röng.</translation>
 <translation id="8564985650692024650">Chromium mælir með því að þú endurstillir aðgangsorðið fyrir <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> ef þú notaðir það einnig á öðrum síðum.</translation>
 <translation id="8571890674111243710">Þýðir síðu yfir á <ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">Notaðu Touch ID til að staðfesta kort hraðar</translation>
 <translation id="858637041960032120">Bæta við símanúmeri</translation>
 <translation id="860043288473659153">Nafn korthafa</translation>
 <translation id="8616822740383114808">Þessi stilling er valin af „<ph name="ENFORCING_SETTING" />“ í „<ph name="SETTINGS_PAGE" />“</translation>
diff --git a/components/strings/components_strings_iw.xtb b/components/strings/components_strings_iw.xtb
index 8541d14..830a4bde 100644
--- a/components/strings/components_strings_iw.xtb
+++ b/components/strings/components_strings_iw.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">לטעינת הדף מאוחר יותר</translation>
 <translation id="1015730422737071372">ספק פרטים נוספים</translation>
 <translation id="1021110881106174305">כרטיסים מאושרים</translation>
+<translation id="1021753677514347426">‏הבעיה הזו מתרחשת בגלל אישור שהותקן במכשיר על ידך או על ידי מישהו אחר. האישור הזה מוכר כאישור שמשמש לצורך מעקב אחרי רשתות ויירוט נתונים מרשתות, והוא לא נחשב כמהימן על ידי Chromium. במקרים מסוימים מתבצע מעקב מסיבות לגיטימיות, כמו במוסדות חינוך או ברשתות של חברות, אך Chromium רוצה לוודא שהמעקב מתבצע בידיעתך גם אם אין לך אפשרות לעצור אותו. המעקב עשוי להתבצע בכל דפדפן או אפליקציה שניגשים לאינטרנט.</translation>
 <translation id="1032854598605920125">סובב בכיוון השעון</translation>
 <translation id="1036348656032585052">כבה</translation>
 <translation id="1038842779957582377">שם לא ידוע</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">דוח הקריסה תועד ב-<ph name="CRASH_TIME" /> (עדיין לא העלית אותו או בחרת להתעלם ממנו)</translation>
 <translation id="1270502636509132238">שיטת איסוף</translation>
 <translation id="1285320974508926690">איני רוצה לקבל תרגום של אתר זה</translation>
+<translation id="1285400217480592994">‏סריקת התוכן של הקבצים שהורדת או העלית ב-Chrome.</translation>
 <translation id="1292701964462482250">‏"יש תוכנה במחשב שלך שמונעת מ-Chrome להתחבר באופן מאובטח אל האינטרנט" (מחשבי Windows בלבד)</translation>
 <translation id="1294154142200295408">וריאציות של שורת פקודה</translation>
 <translation id="129553762522093515">נסגרו לאחרונה</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">מספר טלפון</translation>
 <translation id="2277103315734023688">הרצה קדימה</translation>
 <translation id="2283340219607151381">שמירה ומילוי של כתובות</translation>
+<translation id="2288422996159078444">כל הקלדת טקסט, הצגת דף או פעילות אחרת באינטרנט נמצאת במעקב. בנוסף, התוכן באתרים עשוי להשתנות ללא ידיעתך.</translation>
 <translation id="2289385804009217824">חיתוך</translation>
 <translation id="2292556288342944218">הגישה לאינטרנט חסומה</translation>
 <translation id="2297722699537546652">B5 (Envelope)‎</translation>
@@ -434,6 +437,7 @@
 <translation id="2989742184762224133">שתי סיכות הידוק בחלק העליון</translation>
 <translation id="2991174974383378012">שיתוף עם אתרים</translation>
 <translation id="2991571918955627853">‏נכון לעכשיו אי אפשר לבקר באתר <ph name="SITE" /> מאחר שנעשה בו שימוש ב-HSTS. שגיאות רשת ומתקפות הן בדרך כלל זמניות, כך שהדף הזה יחזור כנראה לפעול מאוחר יותר.</translation>
+<translation id="2996674880327704673">‏הצעות מאת Google</translation>
 <translation id="3005723025932146533">הצג עותק שמור</translation>
 <translation id="3008447029300691911">הזן את קוד האימות של הכרטיס <ph name="CREDIT_CARD" />. ברגע שתאשר, פרטי הכרטיס שלך ישותפו עם האתר הזה.</translation>
 <translation id="3010559122411665027">רשומה ברשימה "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -446,6 +450,7 @@
 <translation id="3060227939791841287">C9 (Envelope)‎</translation>
 <translation id="3061707000357573562">שירות תיקון</translation>
 <translation id="3064966200440839136">בחרת לצאת ממצב גלישה בסתר כדי לשלם באמצעות יישום חיצוני. להמשיך?</translation>
+<translation id="3086579638707268289">הפעילות שלך באינטרנט נמצאת במעקב</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">הוספת כתובת לאיסוף</translation>
 <translation id="3105172416063519923">מזהה נכס:</translation>
@@ -498,6 +503,7 @@
 <translation id="3369192424181595722">שגיאת שעון</translation>
 <translation id="337363190475750230">ניהול התצורה בוטל</translation>
 <translation id="3377188786107721145">שגיאה בניתוח המדיניות</translation>
+<translation id="3377736046129930310">נעילת המסך מאפשרת לך לאשר כרטיסים מהר יותר</translation>
 <translation id="3380365263193509176">שגיאה לא ידועה</translation>
 <translation id="3380864720620200369">מספר לקוח:</translation>
 <translation id="3387261909427947069">אמצעי תשלום</translation>
@@ -663,6 +669,7 @@
 <translation id="4194250254487269611">אי אפשר לשמור את הכרטיס שלך עכשיו</translation>
 <translation id="4196861286325780578">&amp;ביצוע מחדש של העברה</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />לבדוק את תצורת האנטי-וירוס וחומת האש<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">פרופיל מסך הכניסה</translation>
 <translation id="4215751373031079683">7x9 (Envelope)‎</translation>
 <translation id="4220128509585149162">קריסה</translation>
 <translation id="422022731706691852">תוקפים באתר <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> עלולים להונות אותך כדי לגרום לך להתקין תוכנות שיפגעו בחוויית הגלישה שלך (למשל, על-ידי החלפת דף הבית או הצגת מודעות נוספות באתרים שתיכנס אליהם). <ph name="BEGIN_LEARN_MORE_LINK" />מידע נוסף<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -745,6 +752,7 @@
 <translation id="4515275063822566619">‏הכרטיסים והכתובות לקוחים מ-Chrome ומחשבון Google שלך (<ph name="ACCOUNT_EMAIL" />). אפשר לנהל אותם ב<ph name="BEGIN_LINK" />הגדרות<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Comm-10 (Envelope)‎</translation>
 <translation id="4522570452068850558">פרטים</translation>
+<translation id="4524138615196389145">‏כדי לאשר את הכרטיסים שלך מהר יותר, אפשר להשתמש ב-WebAuthn מעכשיו והלאה</translation>
 <translation id="4524805452350978254">ניהול כרטיסים</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -860,6 +868,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64 סיביות)</translation>
+<translation id="5121469660360593280">‏שיתוף נתונים לגבי אירועי אבטחה שסומנו על ידי Chrome Enterprise User Protect עם מנהל המערכת. נתונים אלה עשויים לכלול כתובות URL של דפים שבהם ביקרת, שמות קבצים או מטא-נתונים, ואת שם המשתמש שלך לכניסה אל המכשיר ואל Chrome.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">אימות הכרטיס</translation>
 <translation id="5135404736266831032">ניהול כתובות...</translation>
@@ -871,6 +880,7 @@
 <translation id="5159010409087891077">‏פתח את הדף בחלון חדש של גלישה בסתר (‎⇧⌘N)</translation>
 <translation id="516920405563544094">‏יש להזין את קוד האימות של <ph name="CREDIT_CARD" />. אחרי שנקבל ממך אישור, נשתף עם האתר הזה את פרטי הכרטיס מחשבון Google.</translation>
 <translation id="5169827969064885044">‏ייתכן שלא יתאפשר לך לגשת לחשבון הארגוני, והזהות שלך עלולה להיגנב. לגלישה בטוחה ב-Chrome, מומלץ לשנות את הסיסמה עכשיו.</translation>
+<translation id="5170017743895942767">Chrome Enterprise User Protect</translation>
 <translation id="5171045022955879922">טקסט או כתובת אתר לחיפוש</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">מכונה</translation>
@@ -992,6 +1002,7 @@
 <translation id="5730040223043577876">‏אם הזנת את הסיסמה שלך באתרים אחרים, ההמלצה של Chrome היא לאפס אותה.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{‏שמירת הכרטיס בחשבון Google}two{‏שמירת הכרטיסים בחשבון Google}many{‏שמירת הכרטיסים בחשבון Google}other{‏שמירת הכרטיסים בחשבון Google}}</translation>
 <translation id="5763042198335101085">עליך להזין כתובת אימייל חוקית</translation>
+<translation id="5763703224595565476">‏מנהל המערכת הפעיל את Chrome Enterprise User Protect בדפדפן. ל-Chrome Enterprise User Protect יש גישה לחלק מהנתונים שלך.</translation>
 <translation id="5765072501007116331">עליך לבחור כתובת כדי לראות שיטות מסירה ודרישות</translation>
 <translation id="5778550464785688721">‏שליטה מלאה במכשירי MIDI</translation>
 <translation id="5781136890105823427">הניסוי מופעל</translation>
@@ -1071,6 +1082,7 @@
 <translation id="6094273045989040137">הוספת הערה</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">‏ייתכן שלחשבון Google שלך משויכים סוגים אחרים של היסטוריית גלישה בכתובת <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
+<translation id="6120179357481664955">‏מזהה UPI שלך זכור לך?</translation>
 <translation id="6132597952260690497">מידע על תוספים ויישומי פלאגין מותקנים</translation>
 <translation id="6146055958333702838">בדוק את הכבלים והפעל מחדש את הנתבים, המודמים ושאר התקני הרשת
   שאתה משתמש בהם.</translation>
@@ -1086,6 +1098,7 @@
 <translation id="6221345481584921695">‏לאחרונה, 'גלישה בטוחה של Google' ‏<ph name="BEGIN_LINK" />זיהתה תוכנה זדונית<ph name="END_LINK" /> ב-<ph name="SITE" />. אתרים שבדרך כלל נחשבים לבטוחים נדבקים לעתים בתוכנה זדונית. התוכן הזדוני מגיע מ-<ph name="SUBRESOURCE_HOST" />, מפיץ ידוע של תוכנות זדוניות.</translation>
 <translation id="6234122620015464377">חיתוך אחרי כל מסמך</translation>
 <translation id="6240447795304464094">‏הלוגו של Google Pay</translation>
+<translation id="6241121617266208201">הסתרת ההצעות</translation>
 <translation id="6251924700383757765">מדיניות פרטיות</translation>
 <translation id="6254436959401408446">אין מספיק זיכרון כדי לפתוח את הדף</translation>
 <translation id="625755898061068298">בחרת להשבית את אזהרות האבטחה לאתר הזה.</translation>
@@ -1132,6 +1145,7 @@
 <translation id="6409754798200046165">‏הזנת כרגע את הסיסמה שלך באתר מטעה. ההמלצה של Chrome היא לשנות את הסיסמה עכשיו.</translation>
 <translation id="6410264514553301377">הזן את תאריך התפוגה ואת קוד האימות של <ph name="CREDIT_CARD" /></translation>
 <translation id="6415778972515849510">‏בעזרת Chromium אפשר להגן על חשבון Google ולשנות את הסיסמה.</translation>
+<translation id="6423385022588644828">‏כדי לאשר את הכרטיסים שלך מהר יותר, אפשר להשתמש ב-Touch ID מעכשיו והלאה</translation>
 <translation id="6427730057873428458">כנף בקיפול</translation>
 <translation id="6433490469411711332">עריכת הפרטים ליצירת קשר</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> סירב להתחבר.</translation>
@@ -1202,12 +1216,14 @@
 <translation id="6786747875388722282">תוספים</translation>
 <translation id="6790428901817661496">הפעל</translation>
 <translation id="679355240208270552">המערכת התעלמה מערך מדיניות זה, משום שלפי המדיניות חיפוש ברירת המחדל מושבת.</translation>
+<translation id="6794951432696553238">‏כדי לאשר את הכרטיסים שלך מהר יותר, ניתן להשתמש ב-Windows Hello מעכשיו והלאה</translation>
 <translation id="681021252041861472">שדה חובה</translation>
 <translation id="6810899417690483278">מזהה של התאמה אישית</translation>
 <translation id="6825578344716086703">‏ניסית להגיע אל <ph name="DOMAIN" />, אבל השרת הציג אישור שנחתם באמצעות אלגוריתם חתימה חלש (כמו SHA-1). המשמעות היא שפרטי האבטחה שהוצגו על-ידי השרת עלולים להיות מזויפים, וייתכן שהשרת הוא לא השרת שציפית לו (ייתכן שנוצר קשר בינך לבין התוקף).</translation>
 <translation id="6826370046007623921">מניעת אובדן נתונים</translation>
 <translation id="6831043979455480757">תרגום</translation>
 <translation id="6839929833149231406">אזור</translation>
+<translation id="6846340164947227603">ניתן להזין מספר כרטיס וירטואלי…</translation>
 <translation id="6852204201400771460">לטעון מחדש את האפליקציה?</translation>
 <translation id="6865412394715372076">אי אפשר לאמת כרגע את הכרטיס</translation>
 <translation id="6868206169573555318">הפעלה מחדש לעדכון</translation>
@@ -1236,6 +1252,7 @@
 <translation id="6989763994942163495">הצג הגדרות מתקדמות...</translation>
 <translation id="6993898126790112050">6x9 (Envelope)‎</translation>
 <translation id="6996312675313362352">תמיד לתרגם  מ<ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">‏כדי לאשר את הכרטיסים מהר יותר, אפשר להשתמש ב-Windows Hello</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">התשלום עשוי להיות חד-פעמי או לכלול חיובים חוזרים וייתכן שהדרישה לתשלום לא תוצג בצורה ברורה וחד-משמעית.</translation>
 <translation id="7029809446516969842">סיסמאות</translation>
@@ -1246,6 +1263,7 @@
 <translation id="7064851114919012435">פרטים ליצירת קשר</translation>
 <translation id="7075452647191940183">הבקשה גדולה מידי</translation>
 <translation id="7079718277001814089">האתר הזה מכיל תוכנה זדונית</translation>
+<translation id="7081308185095828845">התכונה הזו לא זמינה במכשיר שלך</translation>
 <translation id="7087282848513945231">מחוז</translation>
 <translation id="7090678807593890770">‏חפש ב-Google את <ph name="LINK" /></translation>
 <translation id="7108338896283013870">הסתרה</translation>
@@ -1299,9 +1317,11 @@
 <translation id="733923710415886693">אישור השרת לא נחשף דרך 'שקיפות אישורים'.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">משויך:</translation>
+<translation id="73479065977517481">‏הדומיין <ph name="ENROLLMENT_DOMAIN" /> הפעיל את Chrome Enterprise User Protect בדפדפן שלך. ל-Chrome Enterprise User Protect יש גישה לחלק מהנתונים שלך.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">שורת פקודה </translation>
 <translation id="7372973238305370288">תוצאת חיפוש</translation>
+<translation id="7374733840632556089">‏הבעיה הזו מתרחשת בגלל אישור שהותקן במכשיר על ידך או על ידי מישהו אחר. האישור הזה מוכר כאישור שמשמש לצורך מעקב אחרי רשתות ויירוט נתונים מרשתות, והוא לא נחשב כמהימן על ידי Chrome. במקרים מסוימים מתבצע מעקב מסיבות לגיטימיות, כמו במוסדות חינוך או ברשתות של חברות, אך Chrome רוצה לוודא שהמעקב מתבצע בידיעתך גם אם אין לך אפשרות לעצור אותו. המעקב עשוי להתבצע בכל דפדפן או אפליקציה שניגשים לאינטרנט.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">פקדי מדיה</translation>
 <translation id="7378627244592794276">לא</translation>
@@ -1330,6 +1350,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />למידע נוסף<ph name="END_LINK" /> על בעיה זו.</translation>
 <translation id="7455133967321480974">השתמש בברירת המחדל הכללית (חסום)</translation>
 <translation id="7460618730930299168">הסינון שונה ממה שבחרת. להמשיך?</translation>
+<translation id="7464821087936825778">המערכת יוצאת ממצב חיפוש</translation>
 <translation id="7473891865547856676">לא, תודה</translation>
 <translation id="7481312909269577407">קדימה</translation>
 <translation id="7485870689360869515">לא נמצאו נתונים.</translation>
@@ -1551,6 +1572,7 @@
 <translation id="8559762987265718583">לא ניתן ליצור חיבור פרטי אל <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> מפני שהתאריך והשעה (<ph name="DATE_AND_TIME" />) במכשיר שלך שגויים.</translation>
 <translation id="8564985650692024650">‏אם הזנת את הסיסמה של <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> באתרים אחרים, ההמלצה של Chromium היא לאפס אותה.</translation>
 <translation id="8571890674111243710">מתרגם דף ל<ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">‏שימוש ב-Touch ID כדי לאשר כרטיסים מהר יותר</translation>
 <translation id="858637041960032120">הוסף מספר טלפון
 </translation>
 <translation id="860043288473659153">שם בעל הכרטיס</translation>
diff --git a/components/strings/components_strings_ja.xtb b/components/strings/components_strings_ja.xtb
index 9ffd80a..97e20d2 100644
--- a/components/strings/components_strings_ja.xtb
+++ b/components/strings/components_strings_ja.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">後でページを読み込む</translation>
 <translation id="1015730422737071372">詳細を報告する</translation>
 <translation id="1021110881106174305">利用可能なカード</translation>
+<translation id="1021753677514347426">この問題は、あなたまたは他のユーザーがデバイスにインストールした証明書が原因で発生します。該当の証明書は、ネットワークの監視と傍受に使われることが確認されており、Chromium では信頼されていません。学校や会社のネットワークなどで合法的に監視されているケースもありますが、ユーザーが監視を止められないとしても監視の事実を把握できるように、Chromium ではこのメッセージを表示しています。監視の対象は、ブラウザ、またはウェブにアクセスするアプリケーションです。</translation>
 <translation id="1032854598605920125">時計回りに回転</translation>
 <translation id="1036348656032585052">オフにする</translation>
 <translation id="1038842779957582377">不明な名前</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575"><ph name="CRASH_TIME" /> にクラッシュ レポートが作成されました(まだアップロードされておらず、無視の指定もありません)</translation>
 <translation id="1270502636509132238">集荷方法</translation>
 <translation id="1285320974508926690">このサイトは翻訳しない</translation>
+<translation id="1285400217480592994">Chrome でダウンロードまたはアップロードするファイルのコンテンツをスキャンします。</translation>
 <translation id="1292701964462482250">「パソコンにインストールされているソフトウェアが原因で、Chrome からインターネットに安全に接続することができません」(Windows パソコンのみ)</translation>
 <translation id="1294154142200295408">コマンドラインのバリエーション</translation>
 <translation id="129553762522093515">最近閉じたタブ</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">電話番号</translation>
 <translation id="2277103315734023688">前方に移動</translation>
 <translation id="2283340219607151381">住所の保存と入力</translation>
+<translation id="2288422996159078444">ウェブで入力した情報やアクセスしたページ、その他のアクティビティがすべて監視され、知らない間にサイトのコンテンツが改変されるおそれがあります。</translation>
 <translation id="2289385804009217824">トリミング</translation>
 <translation id="2292556288342944218">インターネット アクセスがブロックされています</translation>
 <translation id="2297722699537546652">B5(封筒)</translation>
@@ -426,6 +429,7 @@
 <translation id="2989742184762224133">2 か所のステープル(上)</translation>
 <translation id="2991174974383378012">ウェブサイトとの共有</translation>
 <translation id="2991571918955627853"><ph name="SITE" /> では HSTS が使用されているため、現在アクセスできません。通常、ネットワーク エラーやネットワークへの攻撃は一時的なものです。しばらくするとページにアクセスできるようになります。</translation>
+<translation id="2996674880327704673">Google によるおすすめ</translation>
 <translation id="3005723025932146533">保存済みのコピーを表示</translation>
 <translation id="3008447029300691911"><ph name="CREDIT_CARD" /> の CVC を入力します。確認を行うと、カードの詳細がこのサイトと共有されます。</translation>
 <translation id="3010559122411665027">リスト エントリ「<ph name="ENTRY_INDEX" />」: <ph name="ERROR" /></translation>
@@ -438,6 +442,7 @@
 <translation id="3060227939791841287">C9(封筒)</translation>
 <translation id="3061707000357573562">サービスへのパッチの適用</translation>
 <translation id="3064966200440839136">外部アプリケーションを経由したお支払いの処理に進むため、シークレット モードを解除します。続行しますか?</translation>
+<translation id="3086579638707268289">ウェブでのアクティビティが監視されています</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">集荷先住所を追加</translation>
 <translation id="3105172416063519923">アセット ID:</translation>
@@ -490,6 +495,7 @@
 <translation id="3369192424181595722">時計のエラー</translation>
 <translation id="337363190475750230">プロビジョニングが解除されました</translation>
 <translation id="3377188786107721145">ポリシー解析エラーです</translation>
+<translation id="3377736046129930310">画面ロックを使用してカードをすばやく確認する</translation>
 <translation id="3380365263193509176">不明なエラー</translation>
 <translation id="3380864720620200369">クライアント ID:</translation>
 <translation id="3387261909427947069">お支払い方法</translation>
@@ -650,6 +656,7 @@
 <translation id="4194250254487269611">現在、カードを保存できません</translation>
 <translation id="4196861286325780578">移動のやり直し(&amp;R)</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />ファイアウォールとウイルス対策の設定を確認する<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">ログイン画面のプロファイル</translation>
 <translation id="4215751373031079683">7x9(封筒)</translation>
 <translation id="4220128509585149162">クラッシュ</translation>
 <translation id="422022731706691852"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> では、悪意のあるユーザーによって、今後の閲覧に悪影響を及ぼすソフトウェア(ホームページを変更したり、アクセス先のサイトで追加の広告を表示したりするソフトウェア)をインストールするよう誘導される可能性があります。<ph name="BEGIN_LEARN_MORE_LINK" />詳細<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -732,6 +739,7 @@
 <translation id="4515275063822566619">Chrome と Google アカウント(<ph name="ACCOUNT_EMAIL" />)に保存されているクレジット カードと住所です。[<ph name="BEGIN_LINK" />設定<ph name="END_LINK" />] で管理できます。</translation>
 <translation id="4517607026994743406">Comm-10(封筒)</translation>
 <translation id="4522570452068850558">詳細</translation>
+<translation id="4524138615196389145">今後 WebAuthn を使用して、カードの確認をより迅速に行います</translation>
 <translation id="4524805452350978254">カードを管理</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -842,6 +850,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64 ビット)</translation>
+<translation id="5121469660360593280">Chrome Enterprise ユーザー保護によって報告されたセキュリティ イベントに関するデータを管理者と共有します。共有されるデータには、アクセスしたページの URL、ファイルの名前やメタデータ、デバイスと Chrome へのログインに使用したユーザー名が含まれることがあります。</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">カードの確認</translation>
 <translation id="5135404736266831032">住所を管理...</translation>
@@ -853,6 +862,7 @@
 <translation id="5159010409087891077">ページを新しいシークレット ウィンドウで開く(⇧⌘N)</translation>
 <translation id="516920405563544094"><ph name="CREDIT_CARD" /> の CVC を入力します。確認後、Google アカウントのカード情報がこのサイトと共有されます。</translation>
 <translation id="5169827969064885044">組織のアカウントにアクセスできなくなったり、個人情報が盗まれたりする可能性があります。今すぐパスワードを変更することをおすすめします。</translation>
+<translation id="5170017743895942767">Chrome Enterprise ユーザー保護</translation>
 <translation id="5171045022955879922">検索または URL を入力</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">マシン</translation>
@@ -973,6 +983,7 @@
 <translation id="5730040223043577876">パスワードを他のサイトで再使用した場合、Chrome ではパスワードの再設定を促すメッセージが表示されます。</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Google アカウントにカードを保存}other{Google アカウントにカードを保存}}</translation>
 <translation id="5763042198335101085">有効なメールアドレスを入力してください</translation>
+<translation id="5763703224595565476">管理者により、お使いのブラウザで Chrome Enterprise ユーザー保護が有効化されています。Chrome Enterprise ユーザー保護には、一部のユーザーデータへのアクセスが許可されます。</translation>
 <translation id="5765072501007116331">配達方法と要件を確認するには、住所を選択してください</translation>
 <translation id="5778550464785688721">MIDI デバイスのフル コントロール</translation>
 <translation id="5781136890105823427">テスト機能を有効にしました</translation>
@@ -1052,6 +1063,7 @@
 <translation id="6094273045989040137">注釈を追加</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">お使いの Google アカウントの <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> に、他の形式の閲覧履歴が記録されている場合があります</translation>
+<translation id="6120179357481664955">UPI ID を保存しますか?</translation>
 <translation id="6132597952260690497">インストールされている拡張機能とプラグインに関する情報</translation>
 <translation id="6146055958333702838">ケーブルを確認し、使用しているネットワーク デバイス(ルーター、モデムなど)を
     再起動してください。</translation>
@@ -1067,6 +1079,7 @@
 <translation id="6221345481584921695"><ph name="BEGIN_LINK" /> では最近、Google セーフ ブラウジングにより、<ph name="END_LINK" />不正なソフトウェアが検出されました<ph name="SITE" />。通常は安全なウェブサイトであっても、不正なソフトウェアに感染している場合があります。今回の悪意のあるコンテンツは、不正なソフトウェアの既知の配布元である「<ph name="SUBRESOURCE_HOST" />」からもたらされました。</translation>
 <translation id="6234122620015464377">トリミング(ドキュメント単位)</translation>
 <translation id="6240447795304464094">Google Pay ロゴ</translation>
+<translation id="6241121617266208201">候補を非表示にする</translation>
 <translation id="6251924700383757765">プライバシー ポリシー</translation>
 <translation id="6254436959401408446">メモリが不足しているため、このページを開けません</translation>
 <translation id="625755898061068298">このサイトに関するセキュリティ警告を無効にするように指定されています。</translation>
@@ -1113,6 +1126,7 @@
 <translation id="6409754798200046165">偽のサイトでパスワードを入力しました。パスワードをすぐに変更することをおすすめします。</translation>
 <translation id="6410264514553301377"><ph name="CREDIT_CARD" /> の有効期限と CVC を入力</translation>
 <translation id="6415778972515849510">Chromium には Google アカウントの保護とパスワードの変更をサポートする機能があります。</translation>
+<translation id="6423385022588644828">今後 Touch ID を使用して、カードの確認をより迅速に行います</translation>
 <translation id="6427730057873428458">観音折り</translation>
 <translation id="6433490469411711332">連絡先情報の編集</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> で接続が拒否されました。</translation>
@@ -1183,12 +1197,14 @@
 <translation id="6786747875388722282">拡張機能</translation>
 <translation id="6790428901817661496">再生</translation>
 <translation id="679355240208270552">ポリシーによって既定の検索エンジンが有効になっていないため、無視されました。</translation>
+<translation id="6794951432696553238">今後 Windows Hello を使用して、カードの確認をより迅速に行います</translation>
 <translation id="681021252041861472">必須項目</translation>
 <translation id="6810899417690483278">カスタム ID</translation>
 <translation id="6825578344716086703"><ph name="DOMAIN" /> にアクセスしようとしましたが、脆弱な署名アルゴリズム(SHA-1 など)を使用して署名された証明書がサーバーから提示されました。このセキュリティ認証情報は偽装されたものである可能性があり、アクセスしようとしたサーバーとは別のサーバーが応答している可能性があります(悪意のあるユーザーと通信している可能性があります)。</translation>
 <translation id="6826370046007623921">データ損失の防止</translation>
 <translation id="6831043979455480757">翻訳</translation>
 <translation id="6839929833149231406">地区</translation>
+<translation id="6846340164947227603">仮想カード番号を使用...</translation>
 <translation id="6852204201400771460">アプリを再読み込みしますか?</translation>
 <translation id="6865412394715372076">現在、このカードを確認できません</translation>
 <translation id="6868206169573555318">再起動して更新する</translation>
@@ -1217,6 +1233,7 @@
 <translation id="6989763994942163495">詳細設定を表示...</translation>
 <translation id="6993898126790112050">6x9(封筒)</translation>
 <translation id="6996312675313362352"><ph name="ORIGINAL_LANGUAGE" />を常に翻訳</translation>
+<translation id="7004583254764674281">Windows Hello を使用してカードをすばやく確認する</translation>
 <translation id="7012363358306927923">中国銀聯</translation>
 <translation id="7016992613359344582">料金の請求は 1 回限りの場合も繰り返し行われる場合もあり、課金されたかどうかわからないこともあります。</translation>
 <translation id="7029809446516969842">パスワード</translation>
@@ -1227,6 +1244,7 @@
 <translation id="7064851114919012435">連絡先情報</translation>
 <translation id="7075452647191940183">リクエストが大きすぎます</translation>
 <translation id="7079718277001814089">このサイトには不正なソフトウェアが含まれています</translation>
+<translation id="7081308185095828845">この機能はお使いのデバイスではご利用いただけません</translation>
 <translation id="7087282848513945231">郡</translation>
 <translation id="7090678807593890770"><ph name="LINK" /> を Google で検索してください</translation>
 <translation id="7108338896283013870">非表示</translation>
@@ -1280,9 +1298,11 @@
 <translation id="733923710415886693">サーバーの証明書は、証明書の透明性ポリシーを介して公開されていません。</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">外部のユーザーかどうか:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> により、お使いのブラウザで Chrome Enterprise ユーザー保護が有効化されています。Chrome Enterprise ユーザー保護には、一部のユーザーデータへのアクセスが許可されます。</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">コマンドライン</translation>
 <translation id="7372973238305370288">検索結果</translation>
+<translation id="7374733840632556089">この問題は、あなたまたは他のユーザーがデバイスにインストールした証明書が原因で発生します。該当の証明書は、ネットワークの監視と傍受に使われることが確認されており、Chrome では信頼されていません。学校や会社のネットワークなどで合法的に監視されているケースもありますが、ユーザーが監視を止められないとしても監視の事実を把握できるように、Chrome ではこのメッセージを表示しています。監視の対象は、ブラウザ、またはウェブにアクセスするアプリケーションです。</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">メディアの操作</translation>
 <translation id="7378627244592794276">いいえ</translation>
@@ -1311,6 +1331,7 @@
 <translation id="7451311239929941790">この問題について<ph name="BEGIN_LINK" />詳細を確認<ph name="END_LINK" />する</translation>
 <translation id="7455133967321480974">グローバルのデフォルト値([ブロック])を使用</translation>
 <translation id="7460618730930299168">スクリーニングが選択内容と異なっています。続行しますか?</translation>
+<translation id="7464821087936825778">検索モードを終了します</translation>
 <translation id="7473891865547856676">スキップ</translation>
 <translation id="7481312909269577407">進む</translation>
 <translation id="7485870689360869515">データが見つかりません。</translation>
@@ -1532,6 +1553,7 @@
 <translation id="8559762987265718583">デバイスの日時(<ph name="DATE_AND_TIME" />)が正しくないため、<ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> へのプライベート接続を確立できません。</translation>
 <translation id="8564985650692024650"><ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> パスワードを他のサイトで再使用した場合、Chromium ではパスワードの再設定を促すメッセージが表示されます。</translation>
 <translation id="8571890674111243710">ページを<ph name="LANGUAGE" />に翻訳しています...</translation>
+<translation id="8574899947864779331">Touch ID を使用してカードをすばやく確認する</translation>
 <translation id="858637041960032120">電話番号を追加
 </translation>
 <translation id="860043288473659153">カード名義人</translation>
diff --git a/components/strings/components_strings_ka.xtb b/components/strings/components_strings_ka.xtb
index 5ae8d661..97d52c0 100644
--- a/components/strings/components_strings_ka.xtb
+++ b/components/strings/components_strings_ka.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">გვერდის მოგვიანებით ჩატვირთვა</translation>
 <translation id="1015730422737071372">მიუთითეთ დამატებითი დეტალები</translation>
 <translation id="1021110881106174305">მისაღები ბარათები</translation>
+<translation id="1021753677514347426">ამ პრობლემის გამომწვევი მიზეზია თქვენ ან სხვის მიერ თქვენს მოწყობილობაზე დაინსტალირებული სერტიფიკატი. ცნობილია, რომ ეს სერტიფიკატი გამოიყენება ქსელების მონიტორინგისთვის და ხელში ჩასაგდებად, ამიტომ Chromium მას არ ენდობა. მართალია, არსებობს მონიტორინგის კანონიერი მიზეზები (მაგალითად, სასწავლებლების ან კომპანიების ქსელებში), Chromium-ს მაინც სურს, რომ იცოდეთ, რა ხდება იმ შემთხვევაშიც კი, თუ აღნიშნულს ვერ აღკვეთთ. მონიტორინგი შეიძლება მიმდინარეობდეს ვებზე წვდომის მქონე ნებისმიერ ბრაუზერში თუ აპლიკაციაში.</translation>
 <translation id="1032854598605920125">საათის ისრის მიმართულებით შემოტრიალება</translation>
 <translation id="1036348656032585052">გამორთვა</translation>
 <translation id="1038842779957582377">უცნობი სახელი</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">შეცდომის შესახებ მოხსენების აღბეჭდვის თარიღია: <ph name="CRASH_TIME" /> (ჯერ არ არის ატვირთული ან იგნორირებულია)</translation>
 <translation id="1270502636509132238">წაღების მეთოდი</translation>
 <translation id="1285320974508926690">არასდროს გადათარგმნო ეს საიტი</translation>
+<translation id="1285400217480592994">თქვენ მიერ Chrome-ის მეშვეობით ჩამოტვირთული ან ატვირთული ფაილების კონტენტის სკანირება.</translation>
 <translation id="1292701964462482250">„თქვენს კომპიუტერზე დაინსტალირებული პროგრამული უზრუნველყოფა ხელს უშლის Chrome-ს ვებზე უსაფრთხოდ წვდომაში“ (მხოლოდ Windows)</translation>
 <translation id="1294154142200295408">ბრძანებათა სტრიქონის ვარიანტები</translation>
 <translation id="129553762522093515">ბოლოს დახურული</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">ტელეფონის ნომერი</translation>
 <translation id="2277103315734023688">წინ გადახვევა</translation>
 <translation id="2283340219607151381">მისამართების შენახვა და შევსება</translation>
+<translation id="2288422996159078444">თქვენ მიერ აკრეფილი ტექსტი, მონახულებული გვერდები ან სხვა აქტივობა ვებში მონიტორინგის ქვეშაა. საიტების კონტენტი შეიძლება შეიცვალოს თქვენი ინფორმირების გარეშე.</translation>
 <translation id="2289385804009217824">შემოჭრა</translation>
 <translation id="2292556288342944218">თქვენი კავშირი ინტერნეტთან დაბლოკილია</translation>
 <translation id="2297722699537546652">B5 (კონვერტი)</translation>
@@ -426,6 +429,7 @@
 <translation id="2989742184762224133">ორმაგად დასტეპლერება ზემოთ</translation>
 <translation id="2991174974383378012">ვებსაიტებთან გაზიარება</translation>
 <translation id="2991571918955627853"><ph name="SITE" />-ზე შესვლა ამჟამად ვერ მოხერხდება, რადგან ვებსაიტი იყენებს HSTS-ს. ქსელის შეცდომები და მასზე შეტევები, ჩვეულებრივ, დროებითი მოვლენებია და შესაბამისად, ეს გვერდი შეიძლება მოგვიანებით ამუშავდეს.</translation>
+<translation id="2996674880327704673">შემოთავაზებები Google-ისგან</translation>
 <translation id="3005723025932146533">შენახული ასლის ჩვენება</translation>
 <translation id="3008447029300691911">შეიყვანეთ <ph name="CREDIT_CARD" />-ის CVC. დადასტურების შემდეგ, თქვენი ბარათის დეტალები ამ საიტთან გაზიარდება.</translation>
 <translation id="3010559122411665027">სიის ჩანაწერი „<ph name="ENTRY_INDEX" />“ <ph name="ERROR" /></translation>
@@ -438,6 +442,7 @@
 <translation id="3060227939791841287">C9 (კონვერტი)</translation>
 <translation id="3061707000357573562">ჩასწორების სერვისი</translation>
 <translation id="3064966200440839136">გარე აპლიკაციით გადახდის შემთხვევაში, ინკოგნიტო რეჟიმიდან გამოსვლა მოხდება. გსურთ გაგრძელება?</translation>
+<translation id="3086579638707268289">თქვენს აქტივობაზე ვებში მიმდინარეობს მონიტორინგი</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">წამოღების მისამართის დამატება</translation>
 <translation id="3105172416063519923">საინვენტარო ID:</translation>
@@ -490,6 +495,7 @@
 <translation id="3369192424181595722">საათის შეცდომა</translation>
 <translation id="337363190475750230">წაშლილი</translation>
 <translation id="3377188786107721145">წესის ანალიზის შეცდომა</translation>
+<translation id="3377736046129930310">ეკრანის დაბლოკვის გამოყენება ბარათების უფრო სწრაფად დასადასტურებლად</translation>
 <translation id="3380365263193509176">უცნობი შეცდომა</translation>
 <translation id="3380864720620200369">კლიენტის ID:</translation>
 <translation id="3387261909427947069">გადახდის მეთოდები</translation>
@@ -650,6 +656,7 @@
 <translation id="4194250254487269611">თქვენი ბარათის შენახვა ამჟამად ვერ მოხერდა</translation>
 <translation id="4196861286325780578">გადატანის &amp;გამეორება</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />ქსელის დაცვისა და ანტივირუსის კონფიგურაციების შემოწმება<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">შესვლის ეკრანის პროფილი</translation>
 <translation id="4215751373031079683">7x9 (კონვერტი)</translation>
 <translation id="4220128509585149162">სისტემური მარცხები</translation>
 <translation id="422022731706691852"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" />-ზე თავდამსხმელებმა შეიძლება მოტყუებით დაგაინსტალირებინონ ისეთი პროგრამები, რომლებიც უარყოფითად იმოქმედებს ვების დათვალიერების პროცესზე (მაგალითად, თქვენი საწყისი გვერდის შეცვლის ან მონახულებულ საიტებზე დამატებითი რეკლამის განთავსების გზით). <ph name="BEGIN_LEARN_MORE_LINK" />შეიტყვეთ მეტი<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -732,6 +739,7 @@
 <translation id="4515275063822566619">ბარათებისა და მისამართების შესახებ ინფორმაცია მიღებულია Chrome-იდან და თქვენი Google ანგარიშიდან (<ph name="ACCOUNT_EMAIL" />). მათი მართვა შეგიძლიათ <ph name="BEGIN_LINK" />პარამეტრებში<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Comm-10 (კონვერტი)</translation>
 <translation id="4522570452068850558">დეტალები</translation>
+<translation id="4524138615196389145">დაადასტურეთ ბარათები უფრო სწრაფად ამიერიდან WebAuthn-ის გამოყენების მეშვეობით</translation>
 <translation id="4524805452350978254">ბარათების მართვა</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -842,6 +850,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64-ბიტი)</translation>
+<translation id="5121469660360593280">Chrome Enterprise-ის მომხმარებელთა დაცვის ფუნქციის მიერ საყურადღებოდ მონიშნულ მოვლენებთან დაკავშირებული მონაცემების გაზიარება თქვენს ადმინისტრატორთან. აღნიშნული შეიძლება მოიცავდეს თქვენ მიერ მონახულებული გვერდების URL-ებს, ფაილების სახელებსა და მეტამონაცემებს, ასე მომხმარებლის სახელს, რომელსაც თქვენს მოწყობილობაში და Chrome-ში შესასვლელად იყენებთ.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">დაადასტურეთ თქვენი ბარათი</translation>
 <translation id="5135404736266831032">მისამართების მართვა…</translation>
@@ -853,6 +862,7 @@
 <translation id="5159010409087891077">გვერდის ახალ ინკოგნიტო ფანჯარაში გახსნა (⇧⌘N)</translation>
 <translation id="516920405563544094">შეიყვანეთ <ph name="CREDIT_CARD" />-ის CVC. დადასტურების შემდეგ ბარათის დეტალები თქვენი Google ანგარიშიდან გაზიარდება ამ საიტთან.</translation>
 <translation id="5169827969064885044">თქვენ შეიძლება მოგპარონ პერსონალური მონაცემები, ან დაკარგოთ წვდომა თქვენი ორგანიზაციის ანგარიშზე. Chrome გირჩევთ, ახლავე შეცვალოთ პაროლი.</translation>
+<translation id="5170017743895942767">Chrome Enterprise-ის მომხმარებლების დაცვა</translation>
 <translation id="5171045022955879922">მოძებნეთ ან აკრიფეთ URL</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">აპარატი</translation>
@@ -973,6 +983,7 @@
 <translation id="5730040223043577876">Chrome გირჩევთ, გადააყენოთ თქვენი პაროლი, თუ მას სხვა საიტებზეც იყენებთ.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{შეინახეთ ბარათი თქვენს Google ანგარიშში}other{შეინახეთ ბარათები თქვენს Google ანგარიშში}}</translation>
 <translation id="5763042198335101085">შეიყვანეთ ელფოსტის სწორი მისამართი</translation>
+<translation id="5763703224595565476">თქვენმა ადმინისტრატორმა თქვენი ბრაუზერისთვის ჩართო Chrome Enterprise-ის მომხმარებლების დაცვის ფუნქცია. Chrome Enterprise-ის მომხმარებლების დავის ფუნქციას წვდომა აქვს თქვენს გარკვეულ მონაცემებზე.</translation>
 <translation id="5765072501007116331">მიწოდების მეთოდებისა და მოთხოვნების სანახავად აირჩიეთ მისამართი</translation>
 <translation id="5778550464785688721">MIDI მოწყობილობების სრული კონტროლი</translation>
 <translation id="5781136890105823427">ექსპერიმენტი ჩართულია</translation>
@@ -1052,6 +1063,7 @@
 <translation id="6094273045989040137">ანოტირება</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">თქვენს Google ანგარიშში შეიძლება ინახებოდეს სხვა ტიპის დათვალიერების ისტორიაც, რომელიც ხელმისაწვდომია მისამართზე: <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
+<translation id="6120179357481664955">გსურთ თქვენი UPI ID-ს დამახსოვრება?</translation>
 <translation id="6132597952260690497">ინფორმაცია დაინსტალირებული გაფართოებებისა და დანამატების შესახებ</translation>
 <translation id="6146055958333702838">შეამოწმეთ კაბელები და გადატვირთეთ ყველა როუტერი, მოდემი ან
     სხვა ქსელური მოწყობილობა, რომელსაც იყენებთ.</translation>
@@ -1067,6 +1079,7 @@
 <translation id="6221345481584921695">Google-ის უსაფრთხო დათვალიერების ფუნქციამ <ph name="BEGIN_LINK" />აღმოაჩინა საზიანო პროგრამა<ph name="END_LINK" /> <ph name="SITE" />-ზე. ზოგჯერ ნორმალური და უსაფრთხო ვებსაიტები ინფიცირდება საზიანო პროგრამებით. საზიანო პროგრამა ეკუთვნის <ph name="SUBRESOURCE_HOST" />-ს, საზიანო პროგრამების ცნობილ დისტრიბუტორს.</translation>
 <translation id="6234122620015464377">შემოჭრა თითოეული დოკუმენტის შემდეგ</translation>
 <translation id="6240447795304464094">Google Pay-ს ლოგო</translation>
+<translation id="6241121617266208201">შემოთავაზებების დამალვა</translation>
 <translation id="6251924700383757765">კონფიდენციალურობის პოლიტიკა</translation>
 <translation id="6254436959401408446">ამ გვერდის გასახსნელად მეხსიერება არასაკმარისია</translation>
 <translation id="625755898061068298">თქვენ ამ საიტისთვის უსაფრთხოებასთან დაკავშირებული გაფრთხილებების გათიშვა აირჩიეთ.</translation>
@@ -1113,6 +1126,7 @@
 <translation id="6409754798200046165">თქვენ ეს-ესაა შეიყვანეთ პაროლი შეცდომაში შემყვან საიტზე. Chrome გირჩევთ, ახლავე შეცვალოთ პაროლი.</translation>
 <translation id="6410264514553301377">შეიყვანეთ <ph name="CREDIT_CARD" />-ის მოქმედების ვადა და CVC</translation>
 <translation id="6415778972515849510">Chromium-ს შეუძლია დაგეხმაროთ თქვენი Google ანგარიშის დაცვასა და პაროლის შეცვლაში.</translation>
+<translation id="6423385022588644828">დაადასტურეთ ბარათები უფრო სწრაფად ამიერიდან Touch ID-ს გამოყენების მეშვეობით</translation>
 <translation id="6427730057873428458">დაკეცვა ჭიშკრის ფორმით</translation>
 <translation id="6433490469411711332">საკონტაქტო ინფორმაციის რედაქტირება</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" />-მა უარყო დაკავშირება.</translation>
@@ -1183,12 +1197,14 @@
 <translation id="6786747875388722282">გაფართოებები</translation>
 <translation id="6790428901817661496">დაკვრა</translation>
 <translation id="679355240208270552">იგნორირებულია, რადგან ნაგულისხმევი ძიებას წესები არ ითვალისწინებს.</translation>
+<translation id="6794951432696553238">დაადასტურეთ ბარათები უფრო სწრაფად ამიერიდან Windows Hello-ს გამოყენების მეშვეობით</translation>
 <translation id="681021252041861472">აუცილებელი ველი</translation>
 <translation id="6810899417690483278">მორგების ID</translation>
 <translation id="6825578344716086703">თქვენ ცადეთ <ph name="DOMAIN" />-თან დაკავშირება, თუმცა სერვერის მიერ წარმოდგენილი სერტიფიკატი ხელმოწერილია სუსტი ალგორითმის მეშვეობით (მაგ. SHA-1). ეს ნიშნავს, რომ დაცვის მტკიცებულებათა ნაკრები, რომელიც სერვერმა წარმოადგინა, შეიძლება გაყალბებული იყოს, ხოლო სერვერი არ იყოს ის, რომელსაც მოელით (შეიძლება საქმე თავდამსხმელთან გქონდეთ).</translation>
 <translation id="6826370046007623921">მონაცემების დაკარგვის პრევენცია</translation>
 <translation id="6831043979455480757">თარგმნა</translation>
 <translation id="6839929833149231406">რეგიონი</translation>
+<translation id="6846340164947227603">ვირტუალური ბარათის ნომრის გამოყენება…</translation>
 <translation id="6852204201400771460">გსურთ აპის გადატვირთვა?</translation>
 <translation id="6865412394715372076">ამ ბარათის დადასტურება ამჟამად ვერ მოხერხდება</translation>
 <translation id="6868206169573555318">ხელახლა გაშვება გასაახლებლად</translation>
@@ -1217,6 +1233,7 @@
 <translation id="6989763994942163495">დამატებითი პარამეტრების ჩვენება…</translation>
 <translation id="6993898126790112050">6x9 (კონვერტი)</translation>
 <translation id="6996312675313362352">ყოველთვის ითარგმნოს <ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">Windows Hello-ს გამოყენება ბარათების უფრო სწრაფად დასადასტურებლად</translation>
 <translation id="7012363358306927923">ჩინეთის UnionPay</translation>
 <translation id="7016992613359344582">აღნიშნული გადახდები შეიძლება განხორციელდეს ერთჯერადად ან პერიოდულად და არ იყოს ადვილად შესამჩნევი.</translation>
 <translation id="7029809446516969842">პაროლები</translation>
@@ -1227,6 +1244,7 @@
 <translation id="7064851114919012435">საკონტაქტო ინფორმაცია</translation>
 <translation id="7075452647191940183">მოთხოვნა მეტისმეტად დიდია</translation>
 <translation id="7079718277001814089">ეს საიტი მავნე პროგრამებს შეიცავს</translation>
+<translation id="7081308185095828845">ეს ფუნქცია მიუწვდომელია თქვენს მოწყობილობაზე</translation>
 <translation id="7087282848513945231">საგრაფო</translation>
 <translation id="7090678807593890770">მოიძიეთ „<ph name="LINK" />“ Google-ში</translation>
 <translation id="7108338896283013870">დამალვა</translation>
@@ -1280,9 +1298,11 @@
 <translation id="733923710415886693">სერვერის სერტიფიკატის გამოქვეყნება სერტიფიკატთა გამჭვირვალობის შესახებ წესების შესაბამისად არ მომხდარა.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">აფილირებულობა:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" />-მა თქვენი ბრაუზერისთვის ჩართო Chrome Enterprise-ის მომხმარებლების დაცვის ფუნქცია. Chrome Enterprise-ის მომხმარებლების დავის ფუნქციას წვდომა აქვს თქვენს გარკვეულ მონაცემებზე.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">ბრძანების სტრიქონი</translation>
 <translation id="7372973238305370288">ძიების შედეგი</translation>
+<translation id="7374733840632556089">ამ პრობლემის გამომწვევი მიზეზია თქვენ ან სხვის მიერ თქვენს მოწყობილობაზე დაინსტალირებული სერტიფიკატი. ცნობილია, რომ ეს სერტიფიკატი გამოიყენება ქსელების მონიტორინგისთვის და ხელში ჩასაგდებად, ამიტომ Chrome მას არ ენდობა. მართალია, არსებობს მონიტორინგის კანონიერი მიზეზები (მაგალითად, სასწავლებლების ან კომპანიების ქსელებში), Chrome-ს მაინც სურს, რომ იცოდეთ, რა ხდება იმ შემთხვევაშიც კი, თუ აღნიშნულს ვერ აღკვეთთ. მონიტორინგი შეიძლება მიმდინარეობდეს ვებზე წვდომის მქონე ნებისმიერ ბრაუზერში თუ აპლიკაციაში.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">მედიის მართვის საშუალებები</translation>
 <translation id="7378627244592794276">არა</translation>
@@ -1311,6 +1331,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />შეიტყოთ მეტი<ph name="END_LINK" /> ამ პრობლემის შესახებ.</translation>
 <translation id="7455133967321480974">გამოიყენეთ გლობალური ნაგულისხმევი (დაბლოკვა)</translation>
 <translation id="7460618730930299168">ნაჩვენები კონტენტი განსხვავდება არჩეულისგან. გსურთ გაგრძელება?</translation>
+<translation id="7464821087936825778">მიმდინარეობს ძიების რეჟიმიდან გამოსვლა</translation>
 <translation id="7473891865547856676">არა, გმადლობთ</translation>
 <translation id="7481312909269577407">გადამისამართება</translation>
 <translation id="7485870689360869515">მონაცემები ვერ მოიძებნა.</translation>
@@ -1532,6 +1553,7 @@
 <translation id="8559762987265718583"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />-თან პირადი კავშირის დამყარება შეუძლებელია, რადგან თქვენი მოწყობილობის თარიღი და დრო (<ph name="DATE_AND_TIME" />) არასწორია.</translation>
 <translation id="8564985650692024650">Chromium გირჩევთ, გადააყენოთ <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" />-ის პაროლი, თუ მას სხვა საიტებზეც იყენებთ.</translation>
 <translation id="8571890674111243710">გვერდის თარგმნა ამ ენაზე: <ph name="LANGUAGE" />…</translation>
+<translation id="8574899947864779331">Touch ID-ს გამოყენება ბარათების უფრო სწრაფად დასადასტურებლად</translation>
 <translation id="858637041960032120">დაამატეთ ტელეფონის ნომერი</translation>
 <translation id="860043288473659153">ბარათის მფლობელის სახელი</translation>
 <translation id="8616822740383114808">ეს პარამეტრი იძულებითაა დაყენებული „<ph name="ENFORCING_SETTING" />“-ის მიერ „<ph name="SETTINGS_PAGE" />“-ში</translation>
diff --git a/components/strings/components_strings_kk.xtb b/components/strings/components_strings_kk.xtb
index d866d622..5373151 100644
--- a/components/strings/components_strings_kk.xtb
+++ b/components/strings/components_strings_kk.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Бетті кейінірек жүктеу</translation>
 <translation id="1015730422737071372">Қосымша мәліметтер беру</translation>
 <translation id="1021110881106174305">Қабылданған карталар</translation>
+<translation id="1021753677514347426">Құрылғыңызға сіз немесе әлдекім орнатқан сертификатқа байланысты осы қате шығып тұрған болуы мүмкін. Бұл сертификат сенімді болып саналмайды, әдетте ол желідегі деректерді қадағалауға және ұстап қалуға пайдаланылады. Мұндай әрекеттерге құрылғы оқу орнында немесе жұмыста болған кезде рұқсат етіледі. Қалай болғанда да Chrome мұндай сертификаттың болатынын ескертеді. Әрекетті қадағалау интернетке кіретін кез келген браузерде немесе қолданбада жүреді.</translation>
 <translation id="1032854598605920125">Сағат тілінің бағытымен бұру</translation>
 <translation id="1036348656032585052">Өшіру</translation>
 <translation id="1038842779957582377">белгісіз ат</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Жаңылыс туралы есеп жасалған уақыты: <ph name="CRASH_TIME" /> (әлі жүктеп салынбаған немесе еленбеген)</translation>
 <translation id="1270502636509132238">Таңдау әдісі</translation>
 <translation id="1285320974508926690">Бұл сайтты ешқашан аудармау</translation>
+<translation id="1285400217480592994">Chrome браузерінде жүктеп алған не салған файлдардың мазмұнын тексеріңіз.</translation>
 <translation id="1292701964462482250">"Компьютердегі бағдарламалық құрал Chrome жүйесінің интернетке қауіпсіз қосылуына жол бермей тұр" (тек Windows компьютерлерінде)</translation>
 <translation id="1294154142200295408">Пәрмендер жолының нұсқалары</translation>
 <translation id="129553762522093515">Жақында жабылған</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Телефон нөмірі</translation>
 <translation id="2277103315734023688">Алға</translation>
 <translation id="2283340219607151381">Мекенжайларды сақтау және толтыру</translation>
+<translation id="2288422996159078444">Терген мәтініңіз, көрген беттеріңіз не желідегі басқа да әрекеттеріңіз бақыланады. Сайттардағы мазмұн сізге хабарланбай өзгертілуі мүмкін.</translation>
 <translation id="2289385804009217824">Кесу</translation>
 <translation id="2292556288342944218">Интернетке кіруге тыйым салынған</translation>
 <translation id="2297722699537546652">B5 (Envelope)</translation>
@@ -436,6 +439,7 @@
 <translation id="2989742184762224133">Жоғарғы жағын екі рет қапсыру</translation>
 <translation id="2991174974383378012">Веб-сайттармен бөлісу</translation>
 <translation id="2991571918955627853">Қазір <ph name="SITE" /> сайтына кіру мүмкін емес, себебі веб сайт HSTS пайдаланады. Желі қателері мен шабуылдары әдетте уақытша болғандықтан, бұл бет кейінірек жұмыс істеуі мүмкін.</translation>
+<translation id="2996674880327704673">Google ұсынатындар</translation>
 <translation id="3005723025932146533">Сақталған көшірмені көрсету</translation>
 <translation id="3008447029300691911"><ph name="CREDIT_CARD" /> картасының CVC кодын енгізіңіз. Карта мәліметтері расталғаннан кейін сайтқа беріледі.</translation>
 <translation id="3010559122411665027">"<ph name="ENTRY_INDEX" />" тізім жазбасы: <ph name="ERROR" /></translation>
@@ -448,6 +452,7 @@
 <translation id="3060227939791841287">C9 (Envelope)</translation>
 <translation id="3061707000357573562">Қызметті түзету</translation>
 <translation id="3064966200440839136">Сыртқы қолданба арқылы төлеу үшін инкогнито режимінен шығасыз. Жалғастыра бересіз бе?</translation>
+<translation id="3086579638707268289">Интернеттегі әрекетіңіз қадағаланады</translation>
 <translation id="3095940652251934233">Анықтама</translation>
 <translation id="3096100844101284527">Алып кету мекенжайын енгізу</translation>
 <translation id="3105172416063519923">Актив идентификаторы:</translation>
@@ -499,6 +504,7 @@
 <translation id="3369192424181595722">Сағат қатесі</translation>
 <translation id="337363190475750230">Өшірілді</translation>
 <translation id="3377188786107721145">Саясат талдау қатесі</translation>
+<translation id="3377736046129930310">Карталарды жылдам растау үшін экран құлпын пайдалану</translation>
 <translation id="3380365263193509176">Белгісіз қате</translation>
 <translation id="3380864720620200369">Клиент идентификаторы:</translation>
 <translation id="3387261909427947069">Төлеу әдістері</translation>
@@ -664,6 +670,7 @@
 <translation id="4194250254487269611">Картаңызды дәл қазір сақтау мүмкін емес.</translation>
 <translation id="4196861286325780578">Тасымалдауды &amp;қайта орындау</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Брандмауэр және антивирус конфигурацияларын тексеру<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">кіру экраны профилі</translation>
 <translation id="4215751373031079683">7x9 (Envelope)</translation>
 <translation id="4220128509585149162">Жаңылыстар</translation>
 <translation id="422022731706691852"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> сайтындағы шабуылдаушылар шолу әрекетіңізге (мысалы, негізгі бетіңізді өзгерту немесе сіз кірген сайттарда қосымша жарнамалар көрсету) зиян келтіретін бағдарламаларды алдап орнаттыруы мүмкін. <ph name="BEGIN_LEARN_MORE_LINK" />Толығырақ<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -746,6 +753,7 @@
 <translation id="4515275063822566619">Chrome браузеріндегі және Google есептік жазбасындағы (<ph name="ACCOUNT_EMAIL" />) карталар мен мекенжайлар. Оларды <ph name="BEGIN_LINK" />Параметрлер<ph name="END_LINK" /> ішінде басқаруыңызға болады.</translation>
 <translation id="4517607026994743406">Comm-10 (Envelope)</translation>
 <translation id="4522570452068850558">Мәліметтер</translation>
+<translation id="4524138615196389145">Қазірден бастап карталарыңызды WebAuthn арқылы жылдам растаңыз</translation>
 <translation id="4524805452350978254">Карталарды басқару</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -857,6 +865,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64 биттік)</translation>
+<translation id="5121469660360593280">Chrome корпоративтік пайдаланушыны қорғау функциясы анықтаған қауіпсіздік мәселелері туралы деректерді әкімшіңізге жіберіңіз. Мұндай деректерге сіз кіретін беттердің URL мекенжайлары, файл атаулары немесе метадеректер, құрылғыға және Chrome браузеріне кіруге пайдаланылатын пайдаланушы аты жатуы мүмкін.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Картаңызды растаңыз</translation>
 <translation id="5135404736266831032">Мекенжайларды басқару...</translation>
@@ -868,6 +877,7 @@
 <translation id="5159010409087891077">Бетті жаңа инкогнито терезесінде ашу (⇧⌘N)</translation>
 <translation id="516920405563544094"><ph name="CREDIT_CARD" /> картасының CVC кодын енгізіңіз. Растағаннан кейін, Google есептік жазбасындағы карта мәліметтері осы сайтқа беріледі.</translation>
 <translation id="5169827969064885044">Ұйымның есептік жазбасына кіре алмай қалуыңыз мүмкін немесе жеке деректеріңіз ұрлануы ықтимал. Chrome құпия сөзіңізді қазір өзгертуге кеңес береді.</translation>
+<translation id="5170017743895942767">Chrome корпоративтік пайдаланушыны қорғау</translation>
 <translation id="5171045022955879922">Іздеңіз не URL теріңіз</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Машина</translation>
@@ -988,6 +998,7 @@
 <translation id="5730040223043577876">Chrome басқа сайттарда пайдаланылған құпия сөзіңізді қайта орнатуды ұсынады.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Картаны Google есептік жазбасында сақтау}other{Карталарды Google есептік жазбасында сақтау}}</translation>
 <translation id="5763042198335101085">Дұрыс электрондық пошта мекенжайын енгізіңіз</translation>
+<translation id="5763703224595565476">Әкімшіңіз браузерде Chrome корпоративтік пайдаланушыны қорғау функциясын іске қосты. Chrome корпоративтік пайдаланушыны қорғау функциясы деректеріңізді пайдалана алады.</translation>
 <translation id="5765072501007116331">Жеткізу әдістері мен талаптарын көру үшін мекенжайды таңдаңыз</translation>
 <translation id="5778550464785688721">MIDI құрылғыларын толық бақылау</translation>
 <translation id="5781136890105823427">Эксперимент қосылды.</translation>
@@ -1067,6 +1078,7 @@
 <translation id="6094273045989040137">Аннотация қосу</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129"><ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> бетінде Google есептік жазбасымен шолу тарихының басқа да үлгілері болуы мүмкін.</translation>
+<translation id="6120179357481664955">UPI идентификаторы сақталсын ба?</translation>
 <translation id="6132597952260690497">Орнатылған кеңейтімдер мен плагиндер туралы ақпарат</translation>
 <translation id="6146055958333702838">Барлық кабельдерді тексеріп, пайдаланып отырған кез
     келген роутерлерді, модемдерді немесе басқа желі құрылғыларын қайта жүктеңіз.</translation>
@@ -1082,6 +1094,7 @@
 <translation id="6221345481584921695"><ph name="SITE" /> сайтында Google Safe Browsing жақында <ph name="BEGIN_LINK" />зиянды бағдарламаны анықтады<ph name="END_LINK" />. Қорғалған веб-сайттар да кейде зиянды бағдарламамен зақымдалады. Зиянды мазмұн белгілі зиянды бағдарлама үлестірушісі болып табылатын <ph name="SUBRESOURCE_HOST" /> хостынан келеді.</translation>
 <translation id="6234122620015464377">Әр құжаттан кейін кесу</translation>
 <translation id="6240447795304464094">Google Pay логотипі</translation>
+<translation id="6241121617266208201">Ұсыныстарды жасыру</translation>
 <translation id="6251924700383757765">Құпиялылық саясаты</translation>
 <translation id="6254436959401408446">Бұл бетті ашу үшін жад жеткіліксіз</translation>
 <translation id="625755898061068298">Бұл сайт үшін қауіпсіздік ескертулерін өшіру таңдалды.</translation>
@@ -1128,6 +1141,7 @@
 <translation id="6409754798200046165">Жаңа ғана құпия сөзіңізді алаяқтық сайтқа енгіздіңіз. Chrome құпия сөзіңізді дереу өзгертуге кеңес береді.</translation>
 <translation id="6410264514553301377"><ph name="CREDIT_CARD" /> картасының жарамдылық мерзімін және CVC кодын енгізіңіз</translation>
 <translation id="6415778972515849510">Chromium браузері Google есептік жазбаңызды қорғауға және құпия сөзіңізді өзгертуге көмектеседі.</translation>
+<translation id="6423385022588644828">Қазірден бастап Touch ID арқылы карталараңызды жылдам растаңыз</translation>
 <translation id="6427730057873428458">Қақпа тәрізді бүктеу</translation>
 <translation id="6433490469411711332">Байланыс ақпаратын өңдеу</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> байланыстан бас тартты.</translation>
@@ -1198,12 +1212,14 @@
 <translation id="6786747875388722282">Кеңейтімдер</translation>
 <translation id="6790428901817661496">Ойнату</translation>
 <translation id="679355240208270552">Саясатта әдепкі іздеу мүмкіндігі қосылмағандықтан, еленбеді.</translation>
+<translation id="6794951432696553238">Қазірден бастап Windows Hello арқылы карталарыңызды жылдам растаңыз</translation>
 <translation id="681021252041861472">Міндетті өріс</translation>
 <translation id="6810899417690483278">Реттеу идентификаторы</translation>
 <translation id="6825578344716086703"><ph name="DOMAIN" /> доменіне қол жеткізуге әрекет еттіңіз, бірақ сервер сенімсіз қолтаңба алгоритмімен (such as SHA-1) қол қойылған сертификатты ұсынды. Сервер ұсынған қауіпсіздік тіркелу деректері жалған болуы және ол сіз күткен сервер болмауы (шабуылшымен байланысқан болуыңыз) мүмкін.</translation>
 <translation id="6826370046007623921">Деректер жоғалуының алдын алу</translation>
 <translation id="6831043979455480757">Аудару</translation>
 <translation id="6839929833149231406">Аудан</translation>
+<translation id="6846340164947227603">Виртуалды карта нөмірін пайдалану...</translation>
 <translation id="6852204201400771460">Қолданба қайта жүктелсін бе?</translation>
 <translation id="6865412394715372076">Бұл картаны дәл қазір растау мүмкін емес</translation>
 <translation id="6868206169573555318">Жаңарту үшін қайта іске қосу</translation>
@@ -1232,6 +1248,7 @@
 <translation id="6989763994942163495">Кеңейтілген параметрлерді көрсету…</translation>
 <translation id="6993898126790112050">6x9 (Envelope)</translation>
 <translation id="6996312675313362352">Әрдайым <ph name="ORIGINAL_LANGUAGE" /> тілінен аударып отыру</translation>
+<translation id="7004583254764674281">Карталарды жылдам растау үшін Windows Hello функциясын пайдалану</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Бұл ақылар сізге білдіртпей бір рет не қайта-қайта алынуы мүмкін.</translation>
 <translation id="7029809446516969842">Құпия сөздер</translation>
@@ -1242,6 +1259,7 @@
 <translation id="7064851114919012435">Байланыс ақпараты</translation>
 <translation id="7075452647191940183">Сұрау өлшемі өте үлкен.</translation>
 <translation id="7079718277001814089">Бұл сайтта зиянды бағдарлама бар</translation>
+<translation id="7081308185095828845">Бұл мүмкіндік құрылғыда жоқ.</translation>
 <translation id="7087282848513945231">Округ</translation>
 <translation id="7090678807593890770">Google сайтынан <ph name="LINK" /> іздеу</translation>
 <translation id="7108338896283013870">Жасыру</translation>
@@ -1295,9 +1313,11 @@
 <translation id="733923710415886693">Сервер сертификаты Сертификат айқындығы саясатымен ашылмады.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">үлестес пайдаланушы:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> браузерде Chrome корпоративтік пайдаланушыны қорғау функциясын іске қосты. Chrome корпоративтік пайдаланушыны қорғау функциясы деректеріңізді пайдалана алады.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Пәрмен жолы</translation>
 <translation id="7372973238305370288">іздеу нәтижесі</translation>
+<translation id="7374733840632556089">Құрылғыңызға сіз немесе әлдекім орнатқан сертификатқа байланысты осы қате шығып тұрған болуы мүмкін. Бұл сертификат сенімді болып саналмайды, әдетте ол желідегі деректерді қадағалауға және ұстап қалуға пайдаланылады. Мұндай әрекеттерге құрылғы оқу орнында немесе жұмыста болған кезде рұқсат етіледі. Қалай болғанда да Chrome мұндай сертификаттың болатынын ескертеді. Әрекетті қадағалау интернетке кіретін кез келген браузерде немесе қолданбада жүреді.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> – <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Медианы басқару элементтері</translation>
 <translation id="7378627244592794276">Жоқ</translation>
@@ -1326,6 +1346,7 @@
 <translation id="7451311239929941790">Бұл ақау туралы <ph name="BEGIN_LINK" />толығырақ ақпарат<ph name="END_LINK" /> қарау.</translation>
 <translation id="7455133967321480974">Ғаламдық әдепкі мәнді пайдалану (бөгеу)</translation>
 <translation id="7460618730930299168">Таңдағаныңыздан басқаша көрсетіледі. Жалғастырасыз ба?</translation>
+<translation id="7464821087936825778">Іздеу режимінен шығу</translation>
 <translation id="7473891865547856676">Жоқ, рақмет</translation>
 <translation id="7481312909269577407">Басқаға жіберу</translation>
 <translation id="7485870689360869515">Деректер табылмады.</translation>
@@ -1547,6 +1568,7 @@
 <translation id="8559762987265718583"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> доменімен жеке байланыс орнату мүмкін емес, себебі құрылғыңыздың күні мен уақыты (<ph name="DATE_AND_TIME" />) дұрыс емес.</translation>
 <translation id="8564985650692024650">Chromium басқа сайттарда пайдаланылған <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> құпия сөзін қайта орнатуды ұсынады.</translation>
 <translation id="8571890674111243710">Бет <ph name="LANGUAGE" /> тіліне аударылуда…</translation>
+<translation id="8574899947864779331">Карталарыңызды жылдам растау үшін Touch ID пайдаланыңыз.</translation>
 <translation id="858637041960032120">Телефон нөмірін қосу</translation>
 <translation id="860043288473659153">Карта иесінің аты-жөні</translation>
 <translation id="8616822740383114808">Бұл параметр "<ph name="SETTINGS_PAGE" />" бетінде "<ph name="ENFORCING_SETTING" />" арқылы басқарылады.</translation>
diff --git a/components/strings/components_strings_kn.xtb b/components/strings/components_strings_kn.xtb
index 6cec4b2..475020d 100644
--- a/components/strings/components_strings_kn.xtb
+++ b/components/strings/components_strings_kn.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">ಪುಟವನ್ನು ನಂತರ ಲೋಡ್ ಮಾಡಿ</translation>
 <translation id="1015730422737071372">ಹೆಚ್ಚುವರಿ ವಿವರಗಳನ್ನು ಒದಗಿಸಿ</translation>
 <translation id="1021110881106174305">ಸ್ವೀಕೃತ ಕಾರ್ಡ್‌ಗಳು</translation>
+<translation id="1021753677514347426">ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ನೀವು ಅಥವಾ ಬೇರೊಬ್ಬರು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿರುವ ಪ್ರಮಾಣಪತ್ರದಿಂದಾಗಿ ಈ ಸಮಸ್ಯೆ ಉಂಟಾಗುತ್ತದೆ. ನೆಟ್‌ವರ್ಕ್‌ಗಳನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಲು ಮತ್ತು ಪ್ರತಿಬಂಧಿಸಲು ಪ್ರಮಾಣಪತ್ರವನ್ನು ಬಳಸಲಾಗುತ್ತದೆ ಎಂದು ತಿಳಿದುಬಂದಿದೆ ಮತ್ತು ಈ ಪ್ರಮಾಣಪತ್ರದ ಕುರಿತು Chromium ಗೆ ವಿಶ್ವಾಸವಿಲ್ಲ. ಕೆಲವು ಕಾನೂನುಬದ್ಧ ಮೇಲ್ವಿಚಾರಣೆ ಪ್ರಕರಣಗಳು ಅಸ್ತಿತ್ವದಲ್ಲಿದ್ದರೂ, ಉದಾಹರಣೆಗೆ ಶಾಲೆ ಅಥವಾ ಕಂಪನಿಯ ನೆಟ್‌ವರ್ಕ್‌, ಅದನ್ನು ತಡೆಯಲು ಸಾಧ್ಯವಾಗದಿದ್ದರೂ ಸಹ, ಮೇಲ್ವಿಚಾರಣೆ ನಡೆಯುತ್ತಿದೆ ಎಂಬುದು ನಿಮಗೆ ತಿಳಿದಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು Chromium ಬಯಸುತ್ತದೆ. ವೆಬ್ ಅನ್ನು ಪ್ರವೇಶಿಸುವ ಯಾವುದೇ ಬ್ರೌಸರ್ ಅಥವಾ ಆ್ಯಪ್‌ನಲ್ಲಿ ಮೇಲ್ವಿಚಾರಣೆ ನಡೆಯಬಹುದು.</translation>
 <translation id="1032854598605920125">ಪ್ರದಕ್ಷಿಣಾಕಾರದಲ್ಲಿ ತಿರುಗಿಸು</translation>
 <translation id="1036348656032585052">ಆಫ್ ಮಾಡು</translation>
 <translation id="1038842779957582377">ಆಜ್ಞಾತ ಹೆಸರು</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575"><ph name="CRASH_TIME" /> ನಲ್ಲಿ ಕ್ರ್ಯಾಶ್ ವರದಿಯನ್ನು ಸೆರೆಹಿಡಿಯಲಾಗಿದೆ (ಇನ್ನೂ ಅಪ್‌ಲೋಡ್ ಮಾಡಲಾಗಿಲ್ಲ ಅಥವಾ ನಿರ್ಲಕ್ಷಿಸಲಾಗಿಲ್ಲ)</translation>
 <translation id="1270502636509132238">ಪಿಕಪ್ ವಿಧಾನ</translation>
 <translation id="1285320974508926690">ಈ ಸೈಟ್ ಅನ್ನು ಎಂದಿಗೂ ಭಾಷಾಂತರಿಸದಿರಿ</translation>
+<translation id="1285400217480592994">ನೀವು Chrome ನಲ್ಲಿ ಡೌನ್‌ಲೋಡ್ ಅಥವಾ ಅಪ್‌ಲೋಡ್ ಮಾಡುವ ಫೈಲ್‌ಗಳ ವಿಷಯಗಳನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಿ.</translation>
 <translation id="1292701964462482250">"ಸುರಕ್ಷಿತವಾಗಿ ವೆಬ್‌ಗೆ ಸಂಪರ್ಕಿಸುವ Chrome ನ ಕಾರ್ಯವನ್ನು ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿರುವ ಸಾಫ್ಟ್‌ವೇರ್‌ ಸ್ಥಗಿತಗೊಳಿಸಿದೆ" (Windows ಕಂಪ್ಯೂಟರ್‌ಗಳಿಗೆ ಮಾತ್ರ)</translation>
 <translation id="1294154142200295408">ಕಮಾಂಡ್-ಲೈನ್ ವ್ಯತ್ಯಾಸಗಳು</translation>
 <translation id="129553762522093515">ಇತ್ತೀಚೆಗೆ ಮುಚ್ಚಲಾಗಿರುವುದು</translation>
@@ -283,6 +285,7 @@
 <translation id="2270484714375784793">ಫೋನ್ ಸಂಖ್ಯೆ</translation>
 <translation id="2277103315734023688">ಮುಂದಕ್ಕೆ ಸೀಕ್ ಮಾಡಿ</translation>
 <translation id="2283340219607151381">ವಿಳಾಸಗಳನ್ನು ಉಳಿಸಿ ಮತ್ತು ಭರ್ತಿ ಮಾಡಿ</translation>
+<translation id="2288422996159078444">ನೀವು ಟೈಪ್ ಮಾಡುವ ಯಾವುದೇ ವಿಷಯ, ವೀಕ್ಷಿಸುವ ಯಾವುದೇ ಪುಟಗಳು ಅಥವಾ ವೆಬ್‌ನಲ್ಲಿ ನಡೆಸುವ ಇತರ ಯಾವುದೇ ಚಟುವಟಿಕೆಯ ಮೇಲೆ ನಿಗಾ ಇರಿಸಲಾಗಿದೆ. ಸೈಟ್‌ಗಳಲ್ಲಿನ ವಿಷಯವನ್ನು ನಿಮ್ಮ ಗಮನಕ್ಕೆ ತರದೇ ಬದಲಾಯಿಸಬಹುದು.</translation>
 <translation id="2289385804009217824">ಟ್ರಿಮ್ ಮಾಡಿ</translation>
 <translation id="2292556288342944218">ನಿಮ್ಮ ಇಂಟರ್ನೆಟ್ ಪ್ರವೇಶ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ</translation>
 <translation id="2297722699537546652">B5 (Envelope)</translation>
@@ -425,6 +428,7 @@
 <translation id="2989742184762224133">ಮೇಲ್ಭಾಗದಲ್ಲಿ ಎರಡು ಸ್ಟೇಪಲ್ ಹಾಕಿ</translation>
 <translation id="2991174974383378012">ವೆಬ್‌ಸೈಟ್‌ಗಳ ಜೊತೆಗೆ ಹಂಚಿಕೊಳ್ಳುವುದು</translation>
 <translation id="2991571918955627853">ವೆಬ್‌ಸೈಟ್ HSTS ಅನ್ನು ಬಳಸುವ ಕಾರಣದಿಂದ ನೀವು ಸದ್ಯಕ್ಕೆ <ph name="SITE" /> ಅನ್ನು ಭೇಟಿ ನೀಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ನೆಟ್‌ವರ್ಕ್ ದೋಷಗಳು ಮತ್ತು ಆಕ್ರಮಣಗಳು ಸಾಮಾನ್ಯವಾಗಿ ತಾತ್ಕಾಲಿಕವಾಗಿವೆ, ಹಾಗಾಗಿ ಈ ಪುಟವು ಸ್ವಲ್ಪ ಸಮಯದ ನಂತರ ಕಾರ್ಯ ನಿರ್ವಹಿಸಬಹುದು.</translation>
+<translation id="2996674880327704673">Google ನಿಂದ ಸಲಹೆಗಳು</translation>
 <translation id="3005723025932146533">ಉಳಿಸಲಾದ ನಕಲನ್ನು ತೋರಿಸು</translation>
 <translation id="3008447029300691911"><ph name="CREDIT_CARD" /> ಗೆ CVC ಅನ್ನು ನಮೂದಿಸಿ. ನೀವು ಒಮ್ಮೆ ಖಚಿತಪಡಿಸಿದರೆ, ನಿಮ್ಮ ಕಾರ್ಡ್ ವಿವರಗಳನ್ನು ಈ ಸೈಟ್ ಜೊತೆಗೆ ಹಂಚಿಕೊಳ್ಳಲಾಗುತ್ತದೆ.</translation>
 <translation id="3010559122411665027">ಪಟ್ಟಿ ನಮೂದು "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -437,6 +441,7 @@
 <translation id="3060227939791841287">C9 (Envelope)</translation>
 <translation id="3061707000357573562">ಪ್ಯಾಚ್ ಸೇವೆ</translation>
 <translation id="3064966200440839136">ಬಾಹ್ಯ ಅಪ್ಲಿಕೇಶನ್‌‌ ಮೂಲಕರ ಪಾವತಿಸಲು ಅದೃಶ್ಯ ಮೋಡ್‌‌ ತೊರೆಯಲಾಗುತ್ತಿದೆ. ಮುಂದುವರಿಸುವುದೇ?</translation>
+<translation id="3086579638707268289">ವೆಬ್‌ನಲ್ಲಿನ ನಿಮ್ಮ ಚಟುವಟಿಕೆಯನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಲಾಗುತ್ತಿದೆ</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">ಪಿಕಪ್ ವಿಳಾಸವನ್ನು ಸೇರಿಸಿ</translation>
 <translation id="3105172416063519923">ಸ್ವತ್ತು ID:</translation>
@@ -487,6 +492,7 @@
 <translation id="3369192424181595722">ಗಡಿಯಾರ ದೋಷ</translation>
 <translation id="337363190475750230">ಅನುಮತಿ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ</translation>
 <translation id="3377188786107721145">ನೀತಿಯ ಪಾರ್ಸ್ ದೋಷ</translation>
+<translation id="3377736046129930310">ಕಾರ್ಡ್‌ಗಳನ್ನು ವೇಗವಾಗಿ ದೃಢೀಕರಿಸಲು ಪರದೆ ಲಾಕ್ ಬಳಸಿ</translation>
 <translation id="3380365263193509176">ಅಪರಿಚಿತ ದೋಷ</translation>
 <translation id="3380864720620200369">ಕ್ಲೈಂಟ್ ID:</translation>
 <translation id="3387261909427947069">ಪಾವತಿ ವಿಧಾನಗಳು</translation>
@@ -646,6 +652,7 @@
 <translation id="4194250254487269611">ಸದ್ಯಕ್ಕೆ ನಿಮ್ಮ ಕಾರ್ಡ್ ಅನ್ನು ಉಳಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ</translation>
 <translation id="4196861286325780578">&amp;ಸರಿಸುವುದನ್ನು ಮತ್ತೆಮಾಡು</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />ಫೈರ್‌ವಾಲ್ ಮತ್ತು ಆಂಟಿವೈರಸ್ ಕಾನ್ಫಿಗರೇಶನ್‌‌ಗಳನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">ಸೈನ್-ಇನ್ ಪರದೆಯ ಪ್ರೊಫೈಲ್</translation>
 <translation id="4215751373031079683">7x9 (Envelope)</translation>
 <translation id="4220128509585149162">ವಿಫಲತೆಗಳು</translation>
 <translation id="422022731706691852">ನಿಮ್ಮ ಬ್ರೌಸಿಂಗ್‌ ಅನುಭವವನ್ನು ಹಾನಿಮಾಡಲು ಸ್ಥಾಪಿಸಲಾಗುವ ಪ್ರೋಗ್ರಾಂಗಳಲ್ಲಿ ನಿಮ್ಮನ್ನು ವಂಚಿಸಲು ಆಕ್ರಮಣಕಾರರು <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> ಮೇಲೆ ದಾಳಿ ಮಾಡಬಹುದು (ಉದಾಹರಣೆಗೆ, ನಿಮ್ಮ ಮುಖಪುಟವನ್ನು ಬದಲಾಯಿಸಲಾಗುತ್ತದೆ ಅಥವಾ ನೀವು ಭೇಟಿ ನೀಡುವ ಸೈಟ್‌ಗಳಲ್ಲಿ ಹೆಚ್ಚಿನ ಜಾಹೀರಾತುಗಳನ್ನು ತೋರಿಸಲಾಗುತ್ತದೆ). <ph name="BEGIN_LEARN_MORE_LINK" />ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -728,6 +735,7 @@
 <translation id="4515275063822566619">ಕಾರ್ಡ್‌ಗಳು ಮತ್ತು ವಿಳಾಸಗಳನ್ನು ನಿಮ್ಮ Chrome ಮತ್ತು ನಿಮ್ಮ Google ಖಾತೆಯಿಂದ (<ph name="ACCOUNT_EMAIL" />) ಪಡೆಯಲಾಗಿದೆ. ನೀವು ಅವುಗಳನ್ನು <ph name="BEGIN_LINK" />ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ<ph name="END_LINK" /> ನಿರ್ವಹಿಸಬಹುದು.</translation>
 <translation id="4517607026994743406">Comm-10 (Envelope)</translation>
 <translation id="4522570452068850558">ವಿವರಗಳು</translation>
+<translation id="4524138615196389145">ಇನ್ನು ಮುಂದೆ WebAuthn ಅನ್ನು ಬಳಸುವ ಮೂಲಕ ನಿಮ್ಮ ಕಾರ್ಡ್‌ಗಳನ್ನು ವೇಗವಾಗಿ ದೃಢೀಕರಿಸಿ</translation>
 <translation id="4524805452350978254">ಕಾರ್ಡ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಿ</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">ಫ್ಲ್ಯಾಶ್‌</translation>
@@ -838,6 +846,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64-ಬಿಟ್)</translation>
+<translation id="5121469660360593280">Chrome ಎಂಟರ್‌ಪ್ರೈಸ್ ಬಳಕೆದಾರ ರಕ್ಷಣೆ ಮೂಲಕ ಫ್ಲ್ಯಾಗ್ ಮಾಡಲಾದ ಭದ್ರತಾ ಈವೆಂಟ್‌ಗಳ ಕುರಿತ ಡೇಟಾವನ್ನು ನಿಮ್ಮ ನಿರ್ವಾಹಕರೊಂದಿಗೆ ಹಂಚಿಕೊಳ್ಳಿ. ನೀವು ಭೇಟಿ ನೀಡುವ ಪುಟಗಳ URL ಗಳು, ಫೈಲ್ ಹೆಸರುಗಳು ಅಥವಾ ಮೆಟಾಡೇಟಾ ಮತ್ತು ನಿಮ್ಮ ಸಾಧನ ಮತ್ತು Chrome ಗೆ ಸೈನ್ ಇನ್ ಮಾಡಲು ನೀವು ಬಳಸುವ ಬಳಕೆದಾರರ ಹೆಸರನ್ನು ಇದು ಒಳಗೊಂಡಿರಬಹುದು.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">ನಿಮ್ಮ ಕಾರ್ಡ್ ಅನ್ನು ಪರಿಶೀಲಿಸಿ</translation>
 <translation id="5135404736266831032">ವಿಳಾಸಗಳನ್ನು ನಿರ್ವಹಿಸಿ...</translation>
@@ -849,6 +858,7 @@
 <translation id="5159010409087891077">ಪುಟವನ್ನು ಹೊಸ ಅದೃಶ್ಯ ವಿಂಡೋದಲ್ಲಿ ತೆರೆಯಿರಿ (⇧⌘N)</translation>
 <translation id="516920405563544094"><ph name="CREDIT_CARD" /> ಗೆ ಸಂಬಂಧಿಸಿದ CVC ಅನ್ನು ನಮೂದಿಸಿ. ನೀವು ಖಚಿತಪಡಿಸಿದ ನಂತರ, ನಿಮ್ಮ Google ಖಾತೆಯಲ್ಲಿನ ಕಾರ್ಡ್ ವಿವರಗಳನ್ನು ಈ ಸೈಟ್ ಜೊತೆಗೆ ಹಂಚಿಕೊಳ್ಳಲಾಗುತ್ತದೆ.</translation>
 <translation id="5169827969064885044">ನಿಮ್ಮ ಸಂಸ್ಥೆಯ ಖಾತೆಗೆ ನೀವು ಪ್ರವೇಶವನ್ನು ಕಳೆದುಕೊಳ್ಳಬಹುದು ಅಥವಾ ಗುರುತು ಕಳ್ಳತನಕ್ಕೆ ಒಳಗಾಗಬಹುದು. ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್‌ ಅನ್ನು ಇದೀಗ ಬದಲಾಯಿಸುವಂತೆ Chrome ಶಿಫಾರಸು ಮಾಡುತ್ತದೆ.</translation>
+<translation id="5170017743895942767">Chrome ಎಂಟರ್‌ಪ್ರೈಸ್ ಬಳಕೆದಾರ ರಕ್ಷಣೆ</translation>
 <translation id="5171045022955879922">ಹುಡುಕಾಟ ನಡೆಸಿ ಅಥವಾ URL ಅನ್ನು ಟೈಪ್‌ ಮಾಡಿ</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">ಯಂತ್ರ</translation>
@@ -969,6 +979,7 @@
 <translation id="5730040223043577876">ನೀವು ಇತರ ಸೈಟ್‌ಗಳಲ್ಲಿ ಪಾಸ್‌ವರ್ಡ್‌ ಅನ್ನು ಮರುಬಳಕೆ ಮಾಡಿದ್ದಲ್ಲಿ Chrome ನಿಮ್ಮ ಪಾಸವರ್ಡ್ ಅನ್ನು ಮರುಹೊಂದಿಸಲು ಶಿಫಾರಸು ಮಾಡುತ್ತದೆ.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{ನಿಮ್ಮ Google ಖಾತೆಯಲ್ಲಿ ಕಾರ್ಡ್‌ ಉಳಿಸಿ}one{ನಿಮ್ಮ Google ಖಾತೆಯಲ್ಲಿ ಕಾರ್ಡ್‌ಗಳನ್ನು ಉಳಿಸಿ}other{ನಿಮ್ಮ Google ಖಾತೆಯಲ್ಲಿ ಕಾರ್ಡ್‌ಗಳನ್ನು ಉಳಿಸಿ}}</translation>
 <translation id="5763042198335101085">ಮಾನ್ಯವಾದ ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ನಮೂದಿಸಿ</translation>
+<translation id="5763703224595565476">ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ನಿಮ್ಮ ಬ್ರೌಸರ್‌ನಲ್ಲಿ Chrome ಎಂಟರ್‌ಪ್ರೈಸ್ ಬಳಕೆದಾರ ರಕ್ಷಣೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದ್ದಾರೆ. Chrome ಎಂಟರ್‌ಪ್ರೈಸ್ ಬಳಕೆದಾರ ರಕ್ಷಣೆಯು ನಿಮ್ಮ ಕೆಲವು ಡೇಟಾಗೆ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿದೆ.</translation>
 <translation id="5765072501007116331">ವಿತರಣೆಯ ವಿಧಾನಗಳು ಹಾಗೂ ಆವಶ್ಯಕತೆಗಳನ್ನು ನೋಡಲು, ಒಂದು ವಿಳಾಸವನ್ನು ಆಯ್ಕೆ ಮಾಡಿ</translation>
 <translation id="5778550464785688721">MIDI ಸಾಧನಗಳು ಸಂಪೂರ್ಣ ನಿಯಂತ್ರಣ</translation>
 <translation id="5781136890105823427">ಪ್ರಾಯೋಗಿಕವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ</translation>
@@ -1048,6 +1059,7 @@
 <translation id="6094273045989040137">ಟಿಪ್ಪಣಿ</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">ನಿಮ್ಮ Google ಖಾತೆಯು <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> ನಲ್ಲಿ ಇತರ ವಿಧಗಳ ಬ್ರೌಸಿಂಗ್ ಇತಿಹಾಸವನ್ನು ಹೊಂದಿರಬಹುದು</translation>
+<translation id="6120179357481664955">ನಿಮ್ಮ UPI ಐಡಿ ನೆನಪಿದೆಯೇ?</translation>
 <translation id="6132597952260690497">ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿರುವ ವಿಸ್ತರಣೆಗಳು ಮತ್ತು ಪ್ಲಗ್ಇನ್‌ಗಳ ಕುರಿತು ಮಾಹಿತಿ</translation>
 <translation id="6146055958333702838">ಯಾವುದೇ ಕೇಬಲ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ. ನೀವು ಬಳಸುತ್ತಿರಬಹುದಾದ ಯಾವುದೇ ರೂಟರ್‌ಗಳು, ಮೋಡೆಮ್‌ಗಳು ಅಥವಾ ಇತರ ನೆಟ್‌ವರ್ಕ್ ಸಾಧನಗಳನ್ನು ರೀಬೂಟ್ ಮಾಡಿ.</translation>
 <translation id="614940544461990577">ಪ್ರಯತ್ನಿಸಿ:</translation>
@@ -1062,6 +1074,7 @@
 <translation id="6221345481584921695">Google ಸುರಕ್ಷಿತ ಬ್ರೌಸಿಂಗ್ ಇತ್ತೀಚೆಗೆ <ph name="SITE" /> ನಲ್ಲಿ <ph name="BEGIN_LINK" />ಮಾಲ್‌ವೇರ್ ಪತ್ತೆಹಚ್ಚಿದೆ<ph name="END_LINK" />. ಸಾಮಾನ್ಯವಾಗಿ ಸುರಕ್ಷಿತವಾಗಿರುವ ವೆಬ್‌ಸೈಟ್‌ಗಳು ಕೆಲವೊಮ್ಮೆ ಮಾಲ್‌ವೇರ್ ಸೋಂಕಿಗೆ ತುತ್ತಾಗಿರುತ್ತವೆ. ದುರುದ್ದೇಶಪೂರಿತ ಸಂಗತಿಗಳು ಮಾಲ್‌ವೇರ್ ವಿತರಕರಾದ <ph name="SUBRESOURCE_HOST" /> ರಿಂದ ಬರುತ್ತವೆ.</translation>
 <translation id="6234122620015464377">ಪ್ರತಿ ಡಾಕ್ಯುಮೆಂಟ್ ನಂತರ ಟ್ರಿಮ್ ಮಾಡಿ</translation>
 <translation id="6240447795304464094">Google Pay ಲೋಗೋ</translation>
+<translation id="6241121617266208201">ಸಲಹೆಗಳನ್ನು ಮರೆಮಾಡಿ</translation>
 <translation id="6251924700383757765">ಗೌಪ್ಯತಾ ನೀತಿ</translation>
 <translation id="6254436959401408446">ಈ ಪುಟವನ್ನು ತೆರೆಯಲು ಸಾಕಷ್ಟು ಮೆಮೊರಿ ಇಲ್ಲ</translation>
 <translation id="625755898061068298">ಈ ಸೈಟ್‌ಗೆ ನೀವು ಸುರಕ್ಷತೆ ಎಚ್ಚರಿಕೆಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ಆಯ್ಕೆ ಮಾಡಿರುವಿರಿ.</translation>
@@ -1108,6 +1121,7 @@
 <translation id="6409754798200046165">ನೀವು ಈಗಷ್ಟೇ ಒಂದು ವಂಚನೆ ಮಾಡುವಂತಹ ಸೈಟ್‌ನಲ್ಲಿ ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ನಮೂದಿಸಿದ್ದೀರಿ. ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಈಗಲೇ ಬದಲಾಯಿಸುವಂತೆ Chrome ಶಿಫಾರಸು ಮಾಡುತ್ತದೆ.</translation>
 <translation id="6410264514553301377"><ph name="CREDIT_CARD" /> ಗೆ ಮುಕ್ತಾಯ ದಿನಾಂಕ ಮತ್ತು ಸಿವಿಸಿ ಅನ್ನು ನಮೂದಿಸಿ</translation>
 <translation id="6415778972515849510">ನಿಮ್ಮ Google ಖಾತೆಯನ್ನು ಸಂರಕ್ಷಿಸಲು ಹಾಗೂ ನಿಮ್ಮ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಬದಲಾಯಿಸಲು, Chromium ನಿಮಗೆ ಸಹಾಯ ಮಾಡಬಲ್ಲದು.</translation>
+<translation id="6423385022588644828">ಇನ್ನು ಮುಂದೆ, ಸ್ಪರ್ಶ ID ಬಳಸುವ ಮೂಲಕ ನಿಮ್ಮ ಕಾರ್ಡ್‌ಗಳನ್ನು ವೇಗವಾಗಿ ದೃಢೀಕರಿಸಿ</translation>
 <translation id="6427730057873428458">ಗೇಟ್ ಮಾದರಿಯಲ್ಲಿ ಮಡಿಸಿ</translation>
 <translation id="6433490469411711332">ಸಂಪರ್ಕ ಮಾಹಿತಿ ಎಡಿಟ್ ಮಾಡಿ</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> ಸಂಪರ್ಕಗೊಳ್ಳಲು ನಿರಾಕರಿಸಿದೆ.</translation>
@@ -1178,12 +1192,14 @@
 <translation id="6786747875388722282">ವಿಸ್ತರಣೆಗಳು</translation>
 <translation id="6790428901817661496">ಪ್ಲೇ ಮಾಡು</translation>
 <translation id="679355240208270552">ಡೀಫಾಲ್ಟ್ ಹುಡುಕಾಟವನ್ನು ನೀತಿಯ ಮೂಲಕ ಸಕ್ರಿಯಗೊಳಿಸದ ಕಾರಣ ನಿರ್ಲಕ್ಷಿಸಲಾಗಿದೆ.</translation>
+<translation id="6794951432696553238">ಇನ್ನು ಮುಂದೆ Windows Hello ಅನ್ನು ಬಳಸುವ ಮೂಲಕ ನಿಮ್ಮ ಕಾರ್ಡ್‌ಗಳನ್ನು ವೇಗವಾಗಿ ದೃಢೀಕರಿಸಿ</translation>
 <translation id="681021252041861472">ಅಗತ್ಯವಿರುವ ಕ್ಷೇತ್ರ</translation>
 <translation id="6810899417690483278">ಕಸ್ಟಮೈಸೇಶನ್ ಐಡಿ</translation>
 <translation id="6825578344716086703">ನೀವು <ph name="DOMAIN" /> ಅನ್ನು ತಲುಪಲು ಪ್ರಯತ್ನಿಸಿದಿರಿ, ಆದರೆ ದುರ್ಬಲ ಸಹಿ ಅಲ್ಗಾರಿದಮ್ (SHA-1 ಅದರಂತೆ) ಬಳಸಿಕೊಂಡು ಸಹಿ ಮಾಡಿದ ಪ್ರಮಾಣಪತ್ರವನ್ನು ಸರ್ವರ್ ಒದಗಿಸಿದೆ. ಇದರರ್ಥ ಸರ್ವರ್ ಒದಗಿಸಿದ ಸುರಕ್ಷತೆ ಪ್ರಮಾಣಪತ್ರಗಳನ್ನು ಖೋಟಾ ತಯಾರಿಸಿರಬಹುದು, ಮತ್ತು ನೀವು ನಿರೀಕ್ಷಿಸಿದ ಸರ್ವರ್ ಅದಾಗಿರದೇ ಇರಬಹುದು (ನೀವು ದಾಳಿಕೋರರೊಂದಿಗೆ ಸಂವಹನ ಮಾಡುತ್ತಿರಬಹುದು).</translation>
 <translation id="6826370046007623921">ಡೇಟಾ ನಷ್ಟದ ತಡೆ</translation>
 <translation id="6831043979455480757">ಅನುವಾದಿಸು</translation>
 <translation id="6839929833149231406">ಪ್ರದೇಶ</translation>
+<translation id="6846340164947227603">ವರ್ಚುವಲ್ ಕಾರ್ಡ್ ಸಂಖ್ಯೆಯೊಂದನ್ನು ಬಳಸಿ...</translation>
 <translation id="6852204201400771460">ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಪುನಃ ಆರಂಭಿಸಬೇಕೆ?</translation>
 <translation id="6865412394715372076">ಈ ಕಾರ್ಡ್ ಅನ್ನು ಈಗಲೇ ಪರಿಶೀಲಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ</translation>
 <translation id="6868206169573555318">ಅಪ್‌ಡೇಟ್‌ ಮಾಡಲು, ಮರುಪ್ರಾರಂಭಿಸಿ</translation>
@@ -1212,6 +1228,7 @@
 <translation id="6989763994942163495">ಸುಧಾರಿತ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ತೋರಿಸು...</translation>
 <translation id="6993898126790112050">6x9 (Envelope)</translation>
 <translation id="6996312675313362352"><ph name="ORIGINAL_LANGUAGE" />ಭಾಷೆಯನ್ನು ಯಾವಾಗಲೂ ಅನುವಾದಿಸಿ</translation>
+<translation id="7004583254764674281">ಕಾರ್ಡ್‌ಗಳನ್ನು ವೇಗವಾಗಿ ದೃಢೀಕರಿಸಲು Windows Hello ಬಳಸಿ</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">ಇವುಗಳು ಒಂದು ಬಾರಿ ಪಾವತಿಸುವಂತಹ ಶುಲ್ಕಗಳಾಗಿರಬಹುದು, ಮರುಕಳಿಸುವ ಶುಲ್ಕಗಳಾಗಿರಬಹುದು ಅಥವಾ ಸ್ಪಷ್ಟವಾಗಿಲ್ಲದೇ ಇರಬಹುದು.</translation>
 <translation id="7029809446516969842">ಪಾಸ್‌ವರ್ಡ್‌ಗಳು</translation>
@@ -1222,6 +1239,7 @@
 <translation id="7064851114919012435">ಸಂಪರ್ಕ ಮಾಹಿತಿ</translation>
 <translation id="7075452647191940183">ವಿನಂತಿಯು ತೀರಾ ದೊಡ್ಡದಾಗಿದೆ</translation>
 <translation id="7079718277001814089">ಈ ಸೈಟ್ ಮಾಲ್‌‌ವೇರ್ ಹೊಂದಿದೆ</translation>
+<translation id="7081308185095828845">ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಈ ವೈಶಿಷ್ಟ್ಯ ಲಭ್ಯವಿಲ್ಲ</translation>
 <translation id="7087282848513945231">ರಾಷ್ಟ್ರ</translation>
 <translation id="7090678807593890770"><ph name="LINK" /> ಗಾಗಿ Google ಹುಡುಕಾಟ ನಡೆಸಿ</translation>
 <translation id="7108338896283013870">ಮರೆಮಾಡಿ</translation>
@@ -1275,9 +1293,11 @@
 <translation id="733923710415886693">ಪ್ರಮಾಣಪತ್ರ ಪಾರದರ್ಶಕತೆಯ ಮೂಲಕ ಸರ್ವರ್ ಪ್ರಮಾಣಪತ್ರವನ್ನು ಬಹಿರಂಗಪಡಿಸಲಾಗಿಲ್ಲ.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">ಸಂಯೋಜಿತವಾಗಿದ್ದಾರೆ:</translation>
+<translation id="73479065977517481">ನಿಮ್ಮ ಬ್ರೌಸರ್‌ನಲ್ಲಿ Chrome ಎಂಟರ್‌ಪ್ರೈಸ್ ಬಳಕೆದಾರ ರಕ್ಷಣೆಯನ್ನು <ph name="ENROLLMENT_DOMAIN" /> ಸಕ್ರಿಯಗೊಳಿಸಿದೆ. Chrome ಎಂಟರ್‌ಪ್ರೈಸ್ ಬಳಕೆದಾರ ರಕ್ಷಣೆಯು ನಿಮ್ಮ ಕೆಲವು ಡೇಟಾಗೆ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿದೆ.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">ಕಮಾಂಡ್ ಸಾಲು</translation>
 <translation id="7372973238305370288">ಹುಡುಕಾಟ ಫಲಿತಾಂಶ</translation>
+<translation id="7374733840632556089">ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ನೀವು ಅಥವಾ ಬೇರೊಬ್ಬರು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಿರುವ ಪ್ರಮಾಣಪತ್ರದಿಂದಾಗಿ ಈ ಸಮಸ್ಯೆ ಉಂಟಾಗುತ್ತದೆ. ನೆಟ್‌ವರ್ಕ್‌ಗಳನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಲು ಮತ್ತು ಪ್ರತಿಬಂಧಿಸಲು ಪ್ರಮಾಣಪತ್ರವನ್ನು ಬಳಸಲಾಗುತ್ತದೆ ಎಂದು ತಿಳಿದುಬಂದಿದೆ ಮತ್ತು ಈ ಪ್ರಮಾಣಪತ್ರದ ಕುರಿತು Chrome ಗೆ ವಿಶ್ವಾಸವಿಲ್ಲ. ಕೆಲವು ಕಾನೂನುಬದ್ಧ ಮೇಲ್ವಿಚಾರಣೆ ಪ್ರಕರಣಗಳು ಅಸ್ತಿತ್ವದಲ್ಲಿದ್ದರೂ, ಉದಾಹರಣೆಗೆ ಶಾಲೆ ಅಥವಾ ಕಂಪನಿಯ ನೆಟ್‌ವರ್ಕ್‌, ಅದನ್ನು ತಡೆಯಲು ಸಾಧ್ಯವಾಗದಿದ್ದರೂ ಸಹ, ಮೇಲ್ವಿಚಾರಣೆ ನಡೆಯುತ್ತಿದೆ ಎಂಬುದು ನಿಮಗೆ ತಿಳಿದಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು Chrome ಬಯಸುತ್ತದೆ. ವೆಬ್ ಅನ್ನು ಪ್ರವೇಶಿಸುವ ಯಾವುದೇ ಬ್ರೌಸರ್ ಅಥವಾ ಆ್ಯಪ್‌ನಲ್ಲಿ ಮೇಲ್ವಿಚಾರಣೆ ನಡೆಯಬಹುದು.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">ಮೀಡಿಯಾ ನಿಯಂತ್ರಣಗಳು</translation>
 <translation id="7378627244592794276">ಬೇಡ</translation>
@@ -1305,6 +1325,7 @@
 <translation id="7451311239929941790">ಈ ಸಮಸ್ಯೆಯ ಕುರಿತು <ph name="BEGIN_LINK" />ಇನ್ನಷ್ಟು ತಿಳಿಯುವಿಕೆ<ph name="END_LINK" />.</translation>
 <translation id="7455133967321480974">ಜಾಗತಿಕ ಡಿಫಾಲ್ಟ್ ಬಳಸಿ (ನಿರ್ಬಂಧಿಸಿ)</translation>
 <translation id="7460618730930299168">ವೀಕ್ಷಣೆ ಅವಧಿಯು ನೀವು ಆಯ್ಕೆ ಮಾಡಿರುವುದಕ್ಕಿಂತಲೂ ಭಿನ್ನವಾಗಿದೆ. ಮುಂದುವರಿಯುವುದೇ?</translation>
+<translation id="7464821087936825778">ಹುಡುಕಾಟ ಮೋಡ್‌ನಿಂದ ನಿರ್ಗಮಿಸುತ್ತಿದೆ</translation>
 <translation id="7473891865547856676">ಇಲ್ಲ, ಧನ್ಯವಾದಗಳು</translation>
 <translation id="7481312909269577407">ಫಾರ್ವರ್ಡ್</translation>
 <translation id="7485870689360869515">ಯಾವುದೇ ಡೇಟಾ ಕಂಡುಬಂದಿಲ್ಲ.</translation>
@@ -1526,6 +1547,7 @@
 <translation id="8559762987265718583"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ಗೆ ಖಾಸಗಿ ಸಂಪರ್ಕವನ್ನು ಸ್ಥಾಪಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ ಏಕೆಂದರೆ ನಿಮ್ಮ ಸಾಧನದ ದಿನಾಂಕ ಮತ್ತು ಸಮಯ (<ph name="DATE_AND_TIME" />) ತಪ್ಪಾಗಿದೆ.</translation>
 <translation id="8564985650692024650">ನೀವು ಇತರ ಸೈಟ್‌ಗಳಲ್ಲಿ ಪಾಸ್‌ವರ್ಡ್‌ ಅನ್ನು ಮರುಬಳಕೆ ಮಾಡಿದ್ದಲ್ಲಿ ನಿಮ್ಮ <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> ಪಾಸವರ್ಡ್ ಅನ್ನು ಮರುಹೊಂದಿಸಲು Chromium ಶಿಫಾರಸು ಮಾಡುತ್ತದೆ.</translation>
 <translation id="8571890674111243710"><ph name="LANGUAGE" /> ಗೆ ಪುಟವನ್ನು ಭಾಷಾಂತರಿಸಲಾಗುತ್ತಿದೆ...</translation>
+<translation id="8574899947864779331">ಕಾರ್ಡ್‌ಗಳನ್ನು ವೇಗವಾಗಿ ದೃಢೀಕರಿಸಲು ಟಚ್ ID ಬಳಸಿ</translation>
 <translation id="858637041960032120">ಫೋನ್ ಸಂ. ಸೇರಿಸಿ
 </translation>
 <translation id="860043288473659153">ಕಾರ್ಡ್‌ಹೋಲ್ಡರ್ ಹೆಸರು</translation>
diff --git a/components/strings/components_strings_ko.xtb b/components/strings/components_strings_ko.xtb
index b3227c6..0e0d96c 100644
--- a/components/strings/components_strings_ko.xtb
+++ b/components/strings/components_strings_ko.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">페이지 나중에 로드하기</translation>
 <translation id="1015730422737071372">추가 세부정보 제공</translation>
 <translation id="1021110881106174305">사용할 수 있는 카드</translation>
+<translation id="1021753677514347426">나 또는 다른 사용자가 기기에 설치한 인증서로 인해 이 문제가 발생할 수 있습니다. 이 인증서는 네트워크를 모니터링하고 가로막는 데 사용되는 것으로 알려졌으며, Chromium에서 신뢰하지 않습니다. 학교나 회사 네트워크에서 발생하는 합법적인 모니터링도 존재하지만 Chromium은 사용자가 멈출 수는 없더라도 모니터링이 이뤄지고 있음을 알고 있는지 확인하고자 합니다. 모니터링은 웹에 액세스하는 모든 브라우저 또는 애플리케이션에서 이뤄집니다.</translation>
 <translation id="1032854598605920125">시계 방향으로 회전</translation>
 <translation id="1036348656032585052">사용 중지</translation>
 <translation id="1038842779957582377">알 수 없는 이름</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575"><ph name="CRASH_TIME" />에 캡처된 비정상 종료 보고서(아직 업로드 또는 무시되지 않음)</translation>
 <translation id="1270502636509132238">픽업 방법</translation>
 <translation id="1285320974508926690">이 사이트 번역 안함</translation>
+<translation id="1285400217480592994">Chrome에서 다운로드 또는 업로드한 파일의 콘텐츠를 검사합니다.</translation>
 <translation id="1292701964462482250">'컴퓨터의 소프트웨어로 인해 Chrome이 안전하게 웹에 접속할 수 없습니다'(Windows 컴퓨터만 해당)</translation>
 <translation id="1294154142200295408">명령줄 변형</translation>
 <translation id="129553762522093515">최근에 닫은 탭</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">전화번호</translation>
 <translation id="2277103315734023688">앞으로 탐색</translation>
 <translation id="2283340219607151381">주소 저장 및 자동 입력</translation>
+<translation id="2288422996159078444">내가 입력하는 내용, 접속하는 페이지, 웹상의 기타 모든 활동이 감시되며, 사이트의 콘텐츠가 눈치채지 못하게 변경될 수 있습니다.</translation>
 <translation id="2289385804009217824">트림</translation>
 <translation id="2292556288342944218">인터넷 액세스가 차단됨</translation>
 <translation id="2297722699537546652">B5(봉투)</translation>
@@ -434,6 +437,7 @@
 <translation id="2989742184762224133">상단 듀얼 스테이플</translation>
 <translation id="2991174974383378012">웹사이트와 공유</translation>
 <translation id="2991571918955627853">웹사이트에서 HSTS를 사용하므로 지금은 <ph name="SITE" />에 방문할 수 없습니다. 네트워크 오류와 공격은 대체로 일시적인 문제이기 때문에 나중에 이 페이지가 정상적으로 작동할 수 있습니다.</translation>
+<translation id="2996674880327704673">Google 추천</translation>
 <translation id="3005723025932146533">저장된 사본 표시</translation>
 <translation id="3008447029300691911"><ph name="CREDIT_CARD" /> 카드의 CVC를 입력하세요. 카드를 확인하면 카드 세부정보가 이 사이트와 공유됩니다.</translation>
 <translation id="3010559122411665027">목록 항목 '<ph name="ENTRY_INDEX" />': <ph name="ERROR" /></translation>
@@ -446,6 +450,7 @@
 <translation id="3060227939791841287">C9(봉투)</translation>
 <translation id="3061707000357573562">서비스 패치</translation>
 <translation id="3064966200440839136">시크릿 모드를 종료하고 외부 애플리케이션에서 결제합니다. 계속하시겠습니까?</translation>
+<translation id="3086579638707268289">웹상의 활동이 모니터링되고 있음</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">수령 주소 추가</translation>
 <translation id="3105172416063519923">애셋 ID:</translation>
@@ -498,6 +503,7 @@
 <translation id="3369192424181595722">시계 오류</translation>
 <translation id="337363190475750230">사용 중단됨</translation>
 <translation id="3377188786107721145">정책 파싱 오류</translation>
+<translation id="3377736046129930310">화면 잠금을 사용하여 빠르게 카드 확인</translation>
 <translation id="3380365263193509176">알 수 없는 오류가 발생했습니다.</translation>
 <translation id="3380864720620200369">클라이언트 ID:</translation>
 <translation id="3387261909427947069">결제 수단</translation>
@@ -663,6 +669,7 @@
 <translation id="4194250254487269611">지금은 카드를 저장할 수 없습니다.</translation>
 <translation id="4196861286325780578">이동 다시 실행(&amp;R)</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />방화벽 및 바이러스 백신 소프트웨어 설정 확인<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">로그인 화면 프로필</translation>
 <translation id="4215751373031079683">7x9(봉투)</translation>
 <translation id="4220128509585149162">비정상 종료</translation>
 <translation id="422022731706691852"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" />에 있는 공격자가 브라우저 환경에 악영향을 미치는 프로그램을 설치하도록 속임수(예: 방문하는 사이트의 홈페이지를 변경하거나 추가로 광고를 표시)를 시도할 수 있습니다. <ph name="BEGIN_LEARN_MORE_LINK" />자세히 알아보기<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -745,6 +752,7 @@
 <translation id="4515275063822566619">카드와 주소는 Chrome 및 Google 계정(<ph name="ACCOUNT_EMAIL" />)에서 가져왔습니다. 이 정보는 <ph name="BEGIN_LINK" />설정<ph name="END_LINK" />에서 관리할 수 있습니다.</translation>
 <translation id="4517607026994743406">Comm-10(봉투)</translation>
 <translation id="4522570452068850558">세부정보</translation>
+<translation id="4524138615196389145">지금부터 WebAuthn을 사용하여 빠르게 카드를 확인합니다.</translation>
 <translation id="4524805452350978254">카드 관리</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -856,6 +864,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64비트)</translation>
+<translation id="5121469660360593280">Chrome Enterprise User Protect에서 보고한 보안 관련 활동에 관한 데이터를 관리자와 공유합니다. 여기에는 방문한 페이지 URL, 파일 이름 또는 메타데이터 및 기기와 Chrome 로그인에 사용한 사용자 이름이 포함될 수 있습니다.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">카드 인증</translation>
 <translation id="5135404736266831032">주소 관리...</translation>
@@ -867,6 +876,7 @@
 <translation id="5159010409087891077">새 시크릿 창에서 페이지 열기(⇧⌘N)</translation>
 <translation id="516920405563544094"><ph name="CREDIT_CARD" /> 카드의 CVC를 입력하세요. 카드를 확인하면 Google 계정의 카드 세부정보가 이 사이트와 공유됩니다.</translation>
 <translation id="5169827969064885044">조직의 계정에 액세스할 수 없게 되거나 신원 도용이 발생할 수도 있습니다. 지금 비밀번호를 변경하는 것이 좋습니다.</translation>
+<translation id="5170017743895942767">Chrome Enterprise User Protect</translation>
 <translation id="5171045022955879922">검색 또는 URL 입력</translation>
 <translation id="5171689220826475070">Fanfold-유럽</translation>
 <translation id="5172758083709347301">컴퓨터</translation>
@@ -987,6 +997,7 @@
 <translation id="5730040223043577876">다른 사이트에서 비밀번호를 재사용했다면 비밀번호를 재설정하는 것이 좋습니다.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Google 계정에 카드 저장}other{Google 계정에 카드 저장}}</translation>
 <translation id="5763042198335101085">올바른 이메일 주소를 입력하세요.</translation>
+<translation id="5763703224595565476">관리자가 브라우저의 Chrome Enterprise User Protect를 사용 설정했습니다. Chrome Enterprise User Protect는 내 데이터 중 일부에 액세스할 권한이 있습니다.</translation>
 <translation id="5765072501007116331">배달 방법과 요구사항을 확인하려면 주소를 선택하세요.</translation>
 <translation id="5778550464785688721">MIDI 기기 전체 제어</translation>
 <translation id="5781136890105823427">실험 기능 사용 설정됨</translation>
@@ -1066,6 +1077,7 @@
 <translation id="6094273045989040137">주석 추가</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">Google 계정의 내 활동(<ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />)에는 인터넷 방문 기록이 다른 형식으로 남아 있을 수도 있습니다</translation>
+<translation id="6120179357481664955">UPI ID를 저장하시겠습니까?</translation>
 <translation id="6132597952260690497">설치된 확장 프로그램 및 플러그인에 관한 정보</translation>
 <translation id="6146055958333702838">케이블을 확인하고 사용 중인 라우터, 모뎀 또는 기타 네트워크 기기를
     재부팅하시기 바랍니다.</translation>
@@ -1081,6 +1093,7 @@
 <translation id="6221345481584921695">Google 세이프 브라우징이 최근 <ph name="SITE" />에서 <ph name="BEGIN_LINK" />멀웨어를 감지<ph name="END_LINK" />했습니다. 평소에 안전한 웹사이트도 멀웨어에 감염될 수가 있습니다. 악성 콘텐츠의 출처는 알려진 멀웨어 배포자인 <ph name="SUBRESOURCE_HOST" />입니다.</translation>
 <translation id="6234122620015464377">각 문서 뒤에 트림</translation>
 <translation id="6240447795304464094">Google Pay 로고</translation>
+<translation id="6241121617266208201">추천 숨기기</translation>
 <translation id="6251924700383757765">개인정보처리방침</translation>
 <translation id="6254436959401408446">페이지를 열기 위한 메모리가 충분하지 않음</translation>
 <translation id="625755898061068298">이 사이트에 대한 보안 경고를 사용하지 않도록 선택했습니다.</translation>
@@ -1127,6 +1140,7 @@
 <translation id="6409754798200046165">사기성 사이트에 비밀번호를 입력했습니다. 지금 바로 비밀번호를 변경하는 것이 좋습니다.</translation>
 <translation id="6410264514553301377"><ph name="CREDIT_CARD" />의 만료일과 CVC를 입력하세요.</translation>
 <translation id="6415778972515849510">Chromium을 통해 Google 계정을 보호하고 비밀번호를 변경할 수 있습니다.</translation>
+<translation id="6423385022588644828">지금부터 Touch ID를 사용하여 빠르게 카드를 확인합니다.</translation>
 <translation id="6427730057873428458">게이트 폴드</translation>
 <translation id="6433490469411711332">연락처 정보 수정</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" />에서 연결을 거부했습니다.</translation>
@@ -1197,12 +1211,14 @@
 <translation id="6786747875388722282">확장 프로그램</translation>
 <translation id="6790428901817661496">재생</translation>
 <translation id="679355240208270552">정책에 의해 기본 검색이 사용 설정되지 않았기 때문에 무시되었습니다.</translation>
+<translation id="6794951432696553238">지금부터 Windows Hello를 사용하여 빠르게 카드를 확인합니다.</translation>
 <translation id="681021252041861472">필수 입력란</translation>
 <translation id="6810899417690483278">맞춤설정 ID</translation>
 <translation id="6825578344716086703"><ph name="DOMAIN" />에 접속하려 했으나 서버에서 안전성이 낮은 서명 알고리즘을 사용하여 서명된 인증서(예: SHA-1)를 전달했습니다. 이는 서버에서 전달한 보안 사용자 인증 정보가 위조되었을 수 있으며 사용하려는 서버가 아님을 의미합니다. 서버를 가장한 공격자와 통신 중일 수 있습니다.</translation>
 <translation id="6826370046007623921">데이터 손실 방지</translation>
 <translation id="6831043979455480757">번역</translation>
 <translation id="6839929833149231406">지구</translation>
+<translation id="6846340164947227603">가상 카드 번호 사용...</translation>
 <translation id="6852204201400771460">앱을 새로고침하시겠습니까?</translation>
 <translation id="6865412394715372076">지금은 이 카드를 인증할 수 없습니다.</translation>
 <translation id="6868206169573555318">업데이트를 위해 다시 시작</translation>
@@ -1231,6 +1247,7 @@
 <translation id="6989763994942163495">고급 설정 표시</translation>
 <translation id="6993898126790112050">6x9(봉투)</translation>
 <translation id="6996312675313362352"><ph name="ORIGINAL_LANGUAGE" /> 항상 번역</translation>
+<translation id="7004583254764674281">Windows Hello를 사용하여 빠르게 카드 확인</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">이러한 금액 청구는 일회성이거나 반복적일 수 있으며 불분명한 방식으로 이루어질 수도 있습니다.</translation>
 <translation id="7029809446516969842">비밀번호</translation>
@@ -1241,6 +1258,7 @@
 <translation id="7064851114919012435">연락처 정보</translation>
 <translation id="7075452647191940183">요청이 너무 큼</translation>
 <translation id="7079718277001814089">이 사이트에 멀웨어가 있습니다.</translation>
+<translation id="7081308185095828845">이 기기에서 지원하지 않는 기능</translation>
 <translation id="7087282848513945231">카운티</translation>
 <translation id="7090678807593890770">Google에서 <ph name="LINK" /> 검색</translation>
 <translation id="7108338896283013870">숨기기</translation>
@@ -1294,9 +1312,11 @@
 <translation id="733923710415886693">서버 인증서가 인증서 투명성 정책을 사용하여 공개되지 않았습니다.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">연결됨:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" />에서 브라우저의 Chrome Enterprise User Protect를 사용 설정했습니다. Chrome Enterprise User Protect는 내 데이터 중 일부에 액세스할 권한이 있습니다.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">명령줄</translation>
 <translation id="7372973238305370288">검색결과</translation>
+<translation id="7374733840632556089">나 또는 다른 사용자가 기기에 설치한 인증서로 인해 이 문제가 발생할 수 있습니다. 이 인증서는 네트워크를 모니터링하고 가로막는 데 사용되는 것으로 알려져 있으며, Chrome에서 신뢰하지 않습니다. 학교나 회사 네트워크에서 발생하는 합법적인 모니터링도 존재하지만 Chrome은 사용자가 멈출 수는 없더라도 모니터링이 이뤄지고 있음을 알고 있는지 확인하고자 합니다. 모니터링은 웹에 액세스하는 모든 브라우저 또는 애플리케이션에서 이뤄집니다.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">미디어 컨트롤</translation>
 <translation id="7378627244592794276">안함</translation>
@@ -1324,6 +1344,7 @@
 <translation id="7451311239929941790">이 문제를 <ph name="BEGIN_LINK" />자세히 알아보기<ph name="END_LINK" /></translation>
 <translation id="7455133967321480974">전체 기본값 사용(차단)</translation>
 <translation id="7460618730930299168">선택한 영화와 상영 영화가 다릅니다. 계속하시겠습니까?</translation>
+<translation id="7464821087936825778">검색 모드 종료 중</translation>
 <translation id="7473891865547856676">건너뛰기</translation>
 <translation id="7481312909269577407">앞으로</translation>
 <translation id="7485870689360869515">데이터 없음</translation>
@@ -1545,6 +1566,7 @@
 <translation id="8559762987265718583">기기의 날짜와 시간(<ph name="DATE_AND_TIME" />)이 잘못되어 <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />에 대한 비공개 연결을 설정할 수 없습니다.</translation>
 <translation id="8564985650692024650">다른 사이트에서 비밀번호를 재사용했다면 <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> 비밀번호를 재설정하는 것이 좋습니다.</translation>
 <translation id="8571890674111243710">페이지를 <ph name="LANGUAGE" />(으)로 번역 중...</translation>
+<translation id="8574899947864779331">Touch ID를 사용하여 빠르게 카드 확인</translation>
 <translation id="858637041960032120">번호 추가</translation>
 <translation id="860043288473659153">카드 명의자 이름</translation>
 <translation id="8616822740383114808">‘<ph name="SETTINGS_PAGE" />’의 ‘<ph name="ENFORCING_SETTING" />’(으)로 인해 시행된 설정입니다.</translation>
diff --git a/components/strings/components_strings_ky.xtb b/components/strings/components_strings_ky.xtb
index 502572c..c2a365c6 100644
--- a/components/strings/components_strings_ky.xtb
+++ b/components/strings/components_strings_ky.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Барак кийинчерээк жүктөлсүн</translation>
 <translation id="1015730422737071372">Кошумча маалымат берүү</translation>
 <translation id="1021110881106174305">Кабыл алынган карточкалар</translation>
+<translation id="1021753677514347426">Бул маселе түзмөгүңүзгө орнотулган тастыктамадан улам келип чыгышы мүмкүн. Ал тастыктама тармактарга көз салып, ортодон кармап калуусу менен белгилүү. Аны Chromium ишенимдүү тастыктама катары караштырбайт. Мындай тастыктамаларды мектептин же уюмдун тармактарында көзөмөлдөөнүн мыйзамдуу жолдору бар. Сиз эч нерсе кыла албаганыңыз менен, Chromium бул маселе тууралуу кабарыңыздын болушун туура көрдү. Көзөмөлдөө Интернетке туташкан бардык серепчилерде жана колдонмолордо жүргүзүлөт.</translation>
 <translation id="1032854598605920125">Сааттын жебеси боюнча айландыруу</translation>
 <translation id="1036348656032585052">Өчүрүү</translation>
 <translation id="1038842779957582377">белгисиз ат</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Ката жөнүндө кабар <ph name="CRASH_TIME" /> алынган (азырынча жүктөлүп бериле элек же көз жаздымда калтырылган)</translation>
 <translation id="1270502636509132238">Алып кетүү ыкмасы</translation>
 <translation id="1285320974508926690">Бул сайт эч качан которулбасын</translation>
+<translation id="1285400217480592994">Сиз Chrome'дон жүктөп алган же ага жүктөп берген файлдарды текшерүү.</translation>
 <translation id="1292701964462482250">"Компьютериңизде иштеп жаткан программа Chrome’дун Интернетке коопсуз туташуусуна тоскоол болуп жатат" (Windows компьютерлери үчүн гана)</translation>
 <translation id="1294154142200295408">Буйрук сабынын варианттары</translation>
 <translation id="129553762522093515">Жакында жабылган</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Телефон номери</translation>
 <translation id="2277103315734023688">Алдыга түрдүрүү</translation>
 <translation id="2283340219607151381">Даректерди сактоо жана автоматтык түрдө толтуруу</translation>
+<translation id="2288422996159078444">Сиз терген сөздөрдүн, көргөн барактардын же башка аракеттердин баары каралып турат. Ал эми сайттагы мазмундар сизге кабарланбастан өзгөртүлүшү мүмкүн.</translation>
 <translation id="2289385804009217824">Кыркуу</translation>
 <translation id="2292556288342944218">Интернетке кирүү мүмкүнчүлүгүңүз бөгөттөлгөн</translation>
 <translation id="2297722699537546652">B5 (Конверт)</translation>
@@ -436,6 +439,7 @@
 <translation id="2989742184762224133">Жогорку жагын эки жолу илмек менен бекитүү</translation>
 <translation id="2991174974383378012">Вебсайттар менен бөлүшүлүүдө</translation>
 <translation id="2991571918955627853">Азыр <ph name="SITE" /> сайтына кире албайсыз, анткени вебсайт HSTS протоколун иштетип жатат. Тармак каталары жана чабуулдар адатта убактылуу көйгөй болгондуктан, бул барак кийинчерээк иштеп калышы мүмкүн.</translation>
+<translation id="2996674880327704673">Google сунуштайт</translation>
 <translation id="3005723025932146533">Сакталган көчүрмөнү көрсөтүү</translation>
 <translation id="3008447029300691911"><ph name="CREDIT_CARD" /> карточкаңыздын CVC кодун киргизиңиз. Текшерилгенден кийин карточкаңыздын маалыматы бул сайтта көрүнөт.</translation>
 <translation id="3010559122411665027">Тизмедеги жазуу "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -448,6 +452,7 @@
 <translation id="3060227939791841287">C9 (Конверт)</translation>
 <translation id="3061707000357573562">Оңдоо кызматы</translation>
 <translation id="3064966200440839136">Тышкы колдонмо аркылуу төлөө үчүн жашыруун режимден чыкканы жатасыз. Уланта берелиби?</translation>
+<translation id="3086579638707268289">Интернеттеги аракеттериңиз көзөмөлдөнүүдө</translation>
 <translation id="3095940652251934233">Билдирүү</translation>
 <translation id="3096100844101284527">Алып кете турган жердин дарегин кошуу</translation>
 <translation id="3105172416063519923">Менчик объектисинин ID:</translation>
@@ -500,6 +505,7 @@
 <translation id="3369192424181595722">Саат катасы</translation>
 <translation id="337363190475750230">Чыгарылды</translation>
 <translation id="3377188786107721145">Саясатты талдоо катасы</translation>
+<translation id="3377736046129930310">Карталарды тезирээк ырастоо үчүн экрандын кулпусун колдонуңуз</translation>
 <translation id="3380365263193509176">Белгисиз ката</translation>
 <translation id="3380864720620200369">Кардар ID:</translation>
 <translation id="3387261909427947069">Төлөм ыкмалары</translation>
@@ -664,6 +670,7 @@
 <translation id="4194250254487269611">Картаңызды азыр сактоо мүмкүн эмес</translation>
 <translation id="4196861286325780578">Жылдырууну &amp;кайталоо</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Брандмауэр жана антивирус конфигурацияларын текшерип көрүңүз<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">кирүү экранынын профили</translation>
 <translation id="4215751373031079683">7x9 (Конверт)</translation>
 <translation id="4220128509585149162">Кыйроолор</translation>
 <translation id="422022731706691852"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> сайтындагы чабуулчулар сизди алдап (мисалы, башкы бетиңизди өзгөртүп же кирген сайттарыңызда кошумча жарнамаларды көрсөтүп), серептөө тажрыйбаңызга зыян келтирүүчү программаларды орнотууга аракет кылышы мүмкүн. <ph name="BEGIN_LEARN_MORE_LINK" />Кеңири маалымат<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -746,6 +753,7 @@
 <translation id="4515275063822566619">Карточкалар жана даректер Chrome’дон жана Google каттоо эсебиңизден (<ph name="ACCOUNT_EMAIL" />) алынган. Аларды <ph name="BEGIN_LINK" />Жөндөөлөрдөн<ph name="END_LINK" /> башкарсаңыз болот.</translation>
 <translation id="4517607026994743406">Comm-10 (Конверт)</translation>
 <translation id="4522570452068850558">Чоо-жайлары</translation>
+<translation id="4524138615196389145">Мындан ары WebAuthn функциясын колдонуп карталарды тезирээк ырастаңыз</translation>
 <translation id="4524805452350978254">Карталарды башкаруу</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Жарк этме</translation>
@@ -857,6 +865,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64 бит)</translation>
+<translation id="5121469660360593280">Chrome Enterprise User Protect аркылуу белгиленген коопсуздук иш-чаралары тууралуу дайындарды Администраторуңуз менен бөлүшүү. Анда сиз ачкан барактардын URL даректери, файлдардын аталыштары же метадайындар, түзмөгүңүзгө жана Chrome'го кирүүдө колдонгон колдонуучунун аты бар.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Картаны ырастаңыз</translation>
 <translation id="5135404736266831032">Даректерди башкаруу...</translation>
@@ -868,6 +877,7 @@
 <translation id="5159010409087891077">Баракчаны жаңы жашыруун терезеде ачуу (⇧⌘N)</translation>
 <translation id="516920405563544094"><ph name="CREDIT_CARD" /> картаңыздын CVC кодун киргизиңиз. Сиз ырастагандан кийин, Google аккаунтуңуздагы картанын реквизиттери бул сайтка жөнөтүлөт.</translation>
 <translation id="5169827969064885044">Кимдир бирөө сиздин жеке дайындарыңызга же уюмуңуздун аккаунтуна кирип алган окшойт. Chrome сырсөзүңүздү азыр өзгөртүүнү сунуштайт.</translation>
+<translation id="5170017743895942767">Chrome Enterprise User Protect</translation>
 <translation id="5171045022955879922">URL издеңиз же териңиз</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Шайман</translation>
@@ -988,6 +998,7 @@
 <translation id="5730040223043577876">Сырсөзүңүздү башка сайттарда колдонгон болсоңуз, Chrome аны өзгөртүүнү сунуштайт.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Картаны Google аккаунтуңузга сактап коюңуз}other{Карталарды Google аккаунтуңузга сактап коюңуз}}</translation>
 <translation id="5763042198335101085">Жарактуу электрондук почта дарегин киргизиңиз</translation>
+<translation id="5763703224595565476">Администраторуңуз Chrome Enterprise User Protect кызматын серепчиңизден иштетти. Chrome Enterprise User Protect кызматынын айрым дайындарыңызга кирүүгө мүмкүнчүлүгү бар.</translation>
 <translation id="5765072501007116331">Жеткирүү ыкмаларын жана талаптарын көрүү үчүн дарегин тандаңыз</translation>
 <translation id="5778550464785688721">MIDI түзмөктөрүн толук көзөмөлдөө</translation>
 <translation id="5781136890105823427">Тажрыйба иштетилди</translation>
@@ -1067,6 +1078,7 @@
 <translation id="6094273045989040137">Аннотация режимин иштетүү</translation>
 <translation id="6104072995492677441">JIS B6 (128mm x 182mm)</translation>
 <translation id="610911394827799129">Google каттоо эсебиңиздин серептөө таржымалынын башка түрлөрү <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> дарегинде болушу мүмкүн.</translation>
+<translation id="6120179357481664955">UPI идентификаторуңуз сакталсынбы?</translation>
 <translation id="6132597952260690497">Орнотулган кеңейтүүлөр жана плагиндер тууралуу маалымат</translation>
 <translation id="6146055958333702838">Колдонулуп жаткан кабелдерди текшерип, роутер, модем жана башка
     тармак түзмөктөрүн өчүрүп-күйгүзүңүз.</translation>
@@ -1082,6 +1094,7 @@
 <translation id="6221345481584921695">Google Коопсуз Серепчиси жакында <ph name="BEGIN_LINK" /> сайтынан <ph name="END_LINK" /> кесепеттүү программаны тапты<ph name="SITE" />. Кээде коопсуз вебсайттар кесепеттүү программалардан жабыркашат. Зыянкеч мазмун <ph name="SUBRESOURCE_HOST" /> белгилүү кесепеттүү программаны жайылтуучу тарабынан жөнөтүлөт.</translation>
 <translation id="6234122620015464377">Ар бир документтен кийин кыркуу</translation>
 <translation id="6240447795304464094">Google Pay логотиби</translation>
+<translation id="6241121617266208201">Сунуштарды жашыруу</translation>
 <translation id="6251924700383757765">Купуялуулук саясаты</translation>
 <translation id="6254436959401408446">Бул баракчаны ачууга эстутум жетишсиз</translation>
 <translation id="625755898061068298">Сиз бул сайт үчүн коопсуздук эскертүүлөрү өчүрүлсүн деп тандагансыз.</translation>
@@ -1128,6 +1141,7 @@
 <translation id="6409754798200046165">Сырсөзүңүздү жаңы эле адаштыруучу сайтта киргиздиңиз. Chrome сырсөзүңүздү азыр өзгөртүүнү сунуштайт.</translation>
 <translation id="6410264514553301377"><ph name="CREDIT_CARD" /> карточкасынын мөөнөтү аяктоочу күнүн жана CVC кодун киргизиңиз</translation>
 <translation id="6415778972515849510">Chromium Google аккаунтуңуздун коопсуздугун коргоп, сырсөзүңүздү өзгөртүүгө жардам берет.</translation>
+<translation id="6423385022588644828">Мындан ары Touch ID функциясын колдонуп карталарды тезирээк ырастаңыз</translation>
 <translation id="6427730057873428458">Эки жолу чаптоо</translation>
 <translation id="6433490469411711332">Байланыш маалыматын түзөтүү</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> сайты туташуудан баш тартты.</translation>
@@ -1198,12 +1212,14 @@
 <translation id="6786747875388722282">Кеңейтүүлөр</translation>
 <translation id="6790428901817661496">Ойнотуу</translation>
 <translation id="679355240208270552">Четке кагылды, себеби демейки издөө саясат тарабынан иштетилген эмес.</translation>
+<translation id="6794951432696553238">Мындан ары Windows Hello функциясын колдонуп карталарды тезирээк ырастаңыз</translation>
 <translation id="681021252041861472">Милдеттүү түрдө толтуруулучу талаа</translation>
 <translation id="6810899417690483278">Ыңгайлаштыруучу ID</translation>
 <translation id="6825578344716086703">Сиз <ph name="DOMAIN" /> доменин ачканга аракет кылдыңыз, бирок сервер ишенимдүү эмес алгоритмди (мисалы, SHA-1) камтыган кол коюлган тастыктама көрсөтүп жатат. Башкача айтканда, сервер берген коопсуздук дайындары бурмаланган жана сервердин өзү дагы жасалма болуп калышы мүмкүн. Сиз алдамчылар менен байланышып жаткан болушуңуз мүмкүн.</translation>
 <translation id="6826370046007623921">Дайындарды жоготуунун алдын алуу</translation>
 <translation id="6831043979455480757">Которуу</translation>
 <translation id="6839929833149231406">Аймак</translation>
+<translation id="6846340164947227603">Виртуалдык картанын номерин колдонуу...</translation>
 <translation id="6852204201400771460">Колдонмо кайра жүктөлсүнбү?</translation>
 <translation id="6865412394715372076">Бул картаны учурда ырастоо мүмкүн эмес</translation>
 <translation id="6868206169573555318">Кайра иштетүү жана жаңыртуу</translation>
@@ -1232,6 +1248,7 @@
 <translation id="6989763994942163495">Өркүндөтүлгөн жөндөөлөрдү көрсөтүү…</translation>
 <translation id="6993898126790112050">6x9 (Конверт)</translation>
 <translation id="6996312675313362352"><ph name="ORIGINAL_LANGUAGE" /> тилин ар дайым которуу</translation>
+<translation id="7004583254764674281">Карталарды тезирээк ырастоо үчүн Windows Hello функциясын колдонуу</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Алар бир жолу төлөнүүчү же кайталануучу төлөмдөр болушу мүмкүн, бирок алар ачык көрүнбөйт.</translation>
 <translation id="7029809446516969842">Сырсөздөр</translation>
@@ -1242,6 +1259,7 @@
 <translation id="7064851114919012435">Байланыш маалыматы</translation>
 <translation id="7075452647191940183">Сурамдын көлөмү өтө чоң</translation>
 <translation id="7079718277001814089">Бул сайтта кесепеттүү программа бар</translation>
+<translation id="7081308185095828845">Бул функция түзмөгүңүздө иштебейт</translation>
 <translation id="7087282848513945231">Округ</translation>
 <translation id="7090678807593890770">Google'дан <ph name="LINK" /> дегенди издеңиз</translation>
 <translation id="7108338896283013870">Жашыруу</translation>
@@ -1295,9 +1313,11 @@
 <translation id="733923710415886693">Сервердин тастыктамасы "Тастыктаманын тунуктук саясаты" аркылуу ачыкка чыгарылган эмес.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">Байланыштырылган:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> Chrome Enterprise User Protect кызматын иштетти. Chrome Enterprise User Protect кызматынын айрым дайындарыңызга кирүүгө мүмкүнчүлүгү бар.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Буйрук сабы</translation>
 <translation id="7372973238305370288">издөө натыйжасы</translation>
+<translation id="7374733840632556089">Бул маселе түзмөгүңүзгө орнотулган тастыктамадан улам келип чыгышы мүмкүн. Ал тастыктама тармактарга көз салып, ортодон кармап калуусу менен белгилүү. Аны Chrome ишенимдүү тастыктама катары караштырбайт. Мындай тастыктамаларды мектептин же уюмдун тармактарында көзөмөлдөөнүн мыйзамдуу жолдору бар. Сиз эч нерсе кыла албаганыңыз менен, Chrome бул маселе тууралуу кабарыңыздын болушун туура көрдү. Көзөмөлдөө Интернетке туташкан бардык серепчилерде жана колдонмолордо жүргүзүлөт.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> – <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Медианы башкаруу элементтери</translation>
 <translation id="7378627244592794276">Жок</translation>
@@ -1326,6 +1346,7 @@
 <translation id="7451311239929941790">Бул көйгөй жөнүндө <ph name="BEGIN_LINK" />көбүрөөк маалымат<ph name="END_LINK" />.</translation>
 <translation id="7455133967321480974">Глобалдык демейки маанини колдонуу (Бөгөттөө)</translation>
 <translation id="7460618730930299168">Сеанстын форматы сиз тандагандан башкача экен. Уланта бересизби?</translation>
+<translation id="7464821087936825778">Издөө режиминен чыгууда</translation>
 <translation id="7473891865547856676">Жок, рахмат</translation>
 <translation id="7481312909269577407">Багыттоо</translation>
 <translation id="7485870689360869515">Дайындар табылган жок.</translation>
@@ -1547,6 +1568,7 @@
 <translation id="8559762987265718583">Түзмөгүңүздүн күнү жана убакыты (<ph name="DATE_AND_TIME" />) туура эмес болгондуктан, <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> менен купуя туташуу мүмкүн болбой жатат.</translation>
 <translation id="8564985650692024650"><ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> сырсөзүңүздү башка сайттарда колдонгон болсоңуз, Chromium аны өзгөртүүнү сунуштайт.</translation>
 <translation id="8571890674111243710">Бет <ph name="LANGUAGE" /> тилине которулууда…</translation>
+<translation id="8574899947864779331">Карталарды тезирээк ырастоо үчүн Touch ID функциясын колдонуу</translation>
 <translation id="858637041960032120">Телефон номерин кошуу</translation>
 <translation id="860043288473659153">Карта ээсинин аты</translation>
 <translation id="8616822740383114808">Бул жөндөө "<ph name="SETTINGS_PAGE" />" барагында "<ph name="ENFORCING_SETTING" />" тарабынан коюлду</translation>
diff --git a/components/strings/components_strings_lo.xtb b/components/strings/components_strings_lo.xtb
index 16a764d..7feba47 100644
--- a/components/strings/components_strings_lo.xtb
+++ b/components/strings/components_strings_lo.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">ໂຫຼດໜ້າໃນພາຍຫຼັງ</translation>
 <translation id="1015730422737071372">ລະບຸລາຍລະອຽດເພີ່ມເຕີມ</translation>
 <translation id="1021110881106174305">ບັດທີ່ຍອມຮັບແລ້ວ</translation>
+<translation id="1021753677514347426">ບັນຫານີ້ເກີດຂຶ້ນເນື່ອງຈາກໃບຮັບຮອງທີ່ທ່ານ ຫຼື ຄົນອື່ນຕິດຕັ້ງໃນອຸປະກອນຂອງທ່ານ. ເປັນທີ່ຮູ້ກັນວ່າໃບຮັບຮອງນີ້ຖືກໃຊ້ເພື່ອຕິດຕາມ ແລະ ສະກັດກັ້ນເຄືອຂ່າຍ ແລະ Chromium ບໍ່ເຊື່ອຖືໃບຮັບຮອງນີ້. ເຖິງແມ່ນວ່າຈະມີບາງກໍລະນີທີ່ການຕິດຕາມອາດຈະຖືກກົດໝາຍ ເຊັ່ນ: ໃນເຄືອຂ່າຍຂອງໂຮງຮຽນ ຫຼື ບໍລິສັດ, ແຕ່ Chromium ກໍຍັງຕ້ອງການໃຫ້ແນ່ໃຈວ່າທ່ານຮັບຮູ້ວ່າມີການຕິດຕາມເບິ່ງ ເຖິງແມ່ນວ່າທ່ານບໍ່ສາມາດຢຸດມັນໄດ້ກໍຕາມ. ການຕິດຕາມອາດຈະເກີດຂຶ້ນໃນໂປຣແກຣມທ່ອງເວັບ ຫຼື ແອັບພລິເຄຊັນໃດໆກໍຕາມທີ່ເຂົ້າເຖິງເວັບໄຊໄດ້.</translation>
 <translation id="1032854598605920125">ໝຸນຕາມເຂັມໂມງ</translation>
 <translation id="1036348656032585052">ປິດ</translation>
 <translation id="1038842779957582377">ຊື່ບໍ່ຮູ້ຈັກ</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">ລາຍງານການຂັດຂ້ອງທີ່ບັນທຶກໄວ້ໃນ <ph name="CRASH_TIME" /> (ບໍ່ທັນຖືກອັບໂຫຼດ ຫຼື ລະເລີຍເທື່ອ)</translation>
 <translation id="1270502636509132238">ວິທີການຮັບເຄື່ອງ</translation>
 <translation id="1285320974508926690">ຢ່າແປເວັບ​ໄຊ​ທ໌ນີ້</translation>
+<translation id="1285400217480592994">ສະແກນເນື້ອຫາທີ່ທ່ານດາວໂຫຼດ ຫຼື ອັບໂຫຼດໃນ Chrome.</translation>
 <translation id="1292701964462482250">"ຊອບແວຢູ່ໃນຄອມພິວເຕີຂອງທ່ານກຳລັງປ້ອງກັນບໍ່ໃຫ້ Chrome ເຊື່ອມຕໍ່ກັບເວັບໄຊໄດ້ຢ່າງປອດໄພ" (ຄອມພິວເຕີ Windows ເທົ່ານັ້ນ)</translation>
 <translation id="1294154142200295408">ການປ່ຽນແປງແຖວຄຳສັ່ງ</translation>
 <translation id="129553762522093515">ປິດ​ບໍ່​ດົນ​ມາ​ນີ້</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">ເບີໂທລະ​ສັບ</translation>
 <translation id="2277103315734023688">ເລື່ອນໄປໜ້າ</translation>
 <translation id="2283340219607151381">ບັນທຶກ ແລະ ປະກອບຂໍ້ມູນທີ່ຢູ່</translation>
+<translation id="2288422996159078444">ມີການເຝົ້າຕິດຕາມເບິ່ງທຸກຢ່າງທີ່ທ່ານພິມ, ໜ້າເວັບໃດກໍຕາມທີ່ທ່ານເບິ່ງ ຫຼື ການເຄື່ອນໄຫວອື່ນໃດໆກໍຕາມໃນເວັບ. ອາດມີການປ່ຽນແປງເນື້ອຫາໃນເວັບໄຊໂດຍບໍ່ມີການແຈ້ງໃຫ້ທ່ານຊາບ.</translation>
 <translation id="2289385804009217824">ຕັດ</translation>
 <translation id="2292556288342944218">ການເຂົ້າເຖິງອິນເຕີເນັດຂອງທ່ານຖືກບລັອກໄວ້</translation>
 <translation id="2297722699537546652">B5 (ຊອງຈົດໝາຍ)</translation>
@@ -436,6 +439,7 @@
 <translation id="2989742184762224133">ໜີບກະຫຼັບເຟີຢູ່ເທິງສຸດສອງເທື່ອ</translation>
 <translation id="2991174974383378012">ການແບ່ງປັນກັບເວັບໄຊ</translation>
 <translation id="2991571918955627853">ທ່ານບໍ່ສາມາດເຂົ້າເບິ່ງ <ph name="SITE" /> ໄດ້ໃນຂະນະນີ້ ເພາະວ່າເວັບໄຊນີ້ໃຊ້ HSTS. ໂດຍປົກກະຕິແລ້ວ ຂໍ້ຜິດພາດ ແລະ ການໂຈມຕີທາງເຄືອຂ່າຍແມ່ນຊົ່ວຄາວເທົ່ານັ້ນ, ສະນັ້ນ ໜ້ານີ້ອາດຈະໃຊ້ໄດ້ໃນພາຍຫຼັງ.</translation>
+<translation id="2996674880327704673">ການແນະນຳໂດຍ Google</translation>
 <translation id="3005723025932146533">ສະແດງສໍາເນົາທີ່ບັນທຶກໄວ້</translation>
 <translation id="3008447029300691911">ປ້ອນ CVC ສຳລັບ <ph name="CREDIT_CARD" />. ເມື່ອທ່ານຢືນຢັນ, ລາຍລະອຽດບັດຂອງທ່ານຈະຖືກແບ່ງປັນກັບເວັບໄຊນີ້.</translation>
 <translation id="3010559122411665027">ການປ້ອນເຂົ້າລາຍຊື່ "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -448,6 +452,7 @@
 <translation id="3060227939791841287">C9 (ຊອງຈົດໝາຍ)</translation>
 <translation id="3061707000357573562">ການບໍລິການແກ້ບັນຫາ</translation>
 <translation id="3064966200440839136">ກຳລັງອອກຈາກໂໝດບໍ່ເຜີຍຕົນຕົວເພື່ອຈ່າຍຜ່ານແອັບພລິເຄຊັນພາຍນອກ. ສືບຕໍ່ບໍ?</translation>
+<translation id="3086579638707268289">ກຳລັງມີການຕິດຕາມເບິ່ງການເຄື່ອນໄຫວຂອງທ່ານໃນເວັບ</translation>
 <translation id="3095940652251934233">ຄຳຖະແຫຼງ</translation>
 <translation id="3096100844101284527">ເພີ່ມທີ່ຢູ່ບ່ອນຮັບເຄື່ອງ</translation>
 <translation id="3105172416063519923">ລະ​ຫັດຊັບ​ສິນ​:</translation>
@@ -500,6 +505,7 @@
 <translation id="3369192424181595722">ໂມງ​ຜິດ​ພາດ</translation>
 <translation id="337363190475750230">ຖອນການຈັດໃຫ້ແລ້ວ</translation>
 <translation id="3377188786107721145">ຄວາມ​ຜິດ​ພາດກະຈາຍນະ​ໂຍ​ບາຍ</translation>
+<translation id="3377736046129930310">ໃຊ້ລັອກໜ້າຈໍເພື່ອຢືນຢັນບັດໄດ້ໄວຂຶ້ນ</translation>
 <translation id="3380365263193509176">ຄວາມຜິດພາດທີ່ບໍ່ຮູ້ຈັກ</translation>
 <translation id="3380864720620200369">ID ລູກຂ່າຍ:</translation>
 <translation id="3387261909427947069">ວິທີການຈ່າຍເງິນ</translation>
@@ -664,6 +670,7 @@
 <translation id="4194250254487269611">ຂໍອະໄພ, ບໍ່ສາມາດບັນທຶກບັດຂອງທ່ານໄວ້ໄດ້ໃນຕອນນີ້</translation>
 <translation id="4196861286325780578">ເຮັດຄືນຄໍາສັ່ງຍ້າຍ</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />ກຳລັງກວດເບິ່ງການຕັ້ງຄ່າໄຟລ໌ວໍ ແລະ ການປ້ອງກັນໄວຣັສ<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">ໂປຣໄຟລ໌ໜ້າຈໍເຂົ້າສູ່ລະບົບ</translation>
 <translation id="4215751373031079683">7x9 (ຊອງຈົດໝາຍ)</translation>
 <translation id="4220128509585149162">ການ​ຂັດຂ້ອງ</translation>
 <translation id="422022731706691852">ຜູ້ໂຈມຕີໃນ <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> ອາດຈະພະຍາຍາມຫຼອກໃຫ້ທ່ານຕິດຕັ້ງໂປຣແກຣມທີ່ເປັນອັນຕະລາຍຕໍ່ກັບປະສົບການທ່ອງເວັບຂອງທ່ານ (ຕົວຢ່າງ: ໂດຍການປ່ຽນໜ້າຫຼັກຂອງທ່ານ ຫຼື ສະແດງໂຄສະນາເພີ່ມເຕີມໃນເວັບໄຊທີ່ທ່ານເຂົ້າເບິ່ງ). <ph name="BEGIN_LEARN_MORE_LINK" />ສຶກສາເພີ່ມເຕີມ<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -746,6 +753,7 @@
 <translation id="4515275063822566619">ບັດ ແລະ ທີ່ຢູ່ມາຈາກ Chrome ແລະ ບັນຊີ Google ຂອງທ່ານ (<ph name="ACCOUNT_EMAIL" />). ທ່ານສາມາດຈັດການພວກມັນໄດ້ໃນ <ph name="BEGIN_LINK" />ການຕັ້ງຄ່າ<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Comm-10 (ຊອງຈົດໝາຍ)</translation>
 <translation id="4522570452068850558">ລາຍ​ລະ​ອຽດ</translation>
+<translation id="4524138615196389145">ຢືນຢັນບັດໄດ້ໄວຂຶ້ນໂດຍການໃຊ້ WebAuthn ຈາກນີ້ໄປ</translation>
 <translation id="4524805452350978254">ຈັດການບັດ</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">ແຟລດ</translation>
@@ -857,6 +865,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64-ບິດ)</translation>
+<translation id="5121469660360593280">ແບ່ງປັນຂໍ້ມູນກັບຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານກ່ຽວກັບເຫດການຄວາມປອດໄພທີ່ຖືກຕິດທຸງໄວ້ໂດຍຄຸນສົມບັດການປົກປ້ອງຜູ້ໃຊ້ຂອງ Chrome Enterprise. ນີ້ອາດຮວມມີ URL ຂອງໜ້າທີ່ທ່ານເຂົ້າເບິ່ງ, ຊື່ ຫຼື ເມຕາເດຕາຂອງໄຟລ໌ ແລະ ຊື່ຜູ້ໃຊ້ທີ່ທ່ານໃຊ້ເພື່ອເຂົ້າສູ່ລະບົບອຸປະກອນ ແລະ Chrome ຂອງທ່ານ.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">ຢືນຢັນບັດຂອງທ່ານ</translation>
 <translation id="5135404736266831032">ຈັດການທີ່ຢູ່...</translation>
@@ -868,6 +877,7 @@
 <translation id="5159010409087891077">ເປີດໜ້າເວັບໃນໜ້າຈໍທີ່ບໍ່ເປີດເຜີຍຕົວຕົນໃໝ່ (⇧⌘N)</translation>
 <translation id="516920405563544094">ປ້ອນ CVC ສຳລັບ <ph name="CREDIT_CARD" />. ຫຼັງຈາກທີ່ທ່ານຢືນຢັນ, ລະບົບຈະແບ່ງປັນລາຍລະອຽດບັດຈາກບັນຊີ Google ຂອງທ່ານກັບເວັບໄຊນີ້.</translation>
 <translation id="5169827969064885044">ທ່ານອາດຈະສູນເສຍການເຂົ້າເຖິງບັນຊີຂອງອົງການຂອງທ່ານ ຫຼື ປະສົບກັບການລັກໃຊ້ຕົວຕົນ. Chrome ແນະນຳໃຫ້ປ່ຽນລະຫັດຜ່ານຂອງທ່ານດຽວນີ້.</translation>
+<translation id="5170017743895942767">ຄຸນສົມບັດການປົກປ້ອງຜູ້ໃຊ້ຂອງ Chrome Enterprise</translation>
 <translation id="5171045022955879922">ຄົ້ນຫາ ຫຼືພິມ URL</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">ເຄື່ອງຈັກ</translation>
@@ -988,6 +998,7 @@
 <translation id="5730040223043577876">Chrome ແນະນຳໃຫ້ຣີເຊັດລະຫັດຜ່ານຂອງທ່ານ ຖ້າທ່ານນຳມັນມາໃຊ້ໃໝ່ໃນເວັບໄຊອື່ນ.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{ບັນທຶກບັດໄວ້ໃນບັນຊີ Google ຂອງທ່ານ}other{ບັນທຶກບັດໄວ້ໃນບັນຊີ Google ຂອງທ່ານ}}</translation>
 <translation id="5763042198335101085">ປ້ອນທີ່ຢູ່ອີເມວທີ່ຖືກຕ້ອງ</translation>
+<translation id="5763703224595565476">ຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານໄດ້ເປີດການນຳໃຊ້ຄຸນສົມບັດການປົກປ້ອງຜູ້ໃຊ້ຂອງ Chrome Enterprise ແລ້ວ. ຄຸນສົມບັດການປົກປ້ອງຜູ້ໃຊ້ຂອງ Chrome Enterprise ມີສິດເຂົ້າເຖິງຂໍ້ມູນບາງສ່ວນຂອງທ່ານ.</translation>
 <translation id="5765072501007116331">ເພື່ອເບິ່ງວິທີ ແລະ ຂໍ້ກຳນົດການສົ່ງ, ກະລຸນາເລືອກທີ່ຢູ່</translation>
 <translation id="5778550464785688721">ການ​ຄວບ​ຄຸມອຸ​ປະ​ກອນ MIDI ເຕັມ​ຮູບ​ແບບ</translation>
 <translation id="5781136890105823427">ເປີດນຳໃຊ້ການທົດລອງແລ້ວ</translation>
@@ -1067,6 +1078,7 @@
 <translation id="6094273045989040137">ຂຽນອະທິບາຍຄວາມເຫັນ</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">ບັນຊີ Google ຂອງທ່ານອາດຈະມີປະຫວັດການທ່ອງເວັບຮູບແບບອື່ນຢູ່ <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
+<translation id="6120179357481664955">ຈື່ UPI ID ຂອງທ່ານໄວ້ບໍ?</translation>
 <translation id="6132597952260690497">ຂໍ້ມູນກ່ຽວກັບສ່ວນຂະຫຍາຍ ແລະ ປລັກອິນທີ່ຕິດຕັ້ງ</translation>
 <translation id="6146055958333702838">ກວດເບິ່ງສາຍໄຟ ແລະປິດເປີດເຣົາເຕີ, ໂມເດັມ, ຫຼືອຸປະກອນເຄືອຂ່າຍ
     ທີ່ທ່ານອາດກຳລັງໃຊ້ຢູ່ຄືນໃໝ່.</translation>
@@ -1082,6 +1094,7 @@
 <translation id="6221345481584921695">ເມື່ອບໍ່ດົນມານີ້ Google Safe Browsing <ph name="BEGIN_LINK" />ໄດ້ກວດພົບມາລແວ<ph name="END_LINK" /> ຢູ່ເທິງ <ph name="SITE" />. ເວັບໄຊທ໌ທີ່ປົກກະຕິແລ້ວນັ້ນມີຄວາມປອດໄພແມ່ນບາງຄັ້ງຈະຕິດມາລແວ. ເນື້ອໃນທີ່ປອງຮ້າຍມາຈາກ <ph name="SUBRESOURCE_HOST" />, ຜູ້ຈໍາໜ່າຍມາລແວທີ່ຮູ້ຈັກ.</translation>
 <translation id="6234122620015464377">ຕັດອອກຫຼັງຈາກເອກະສານແຕ່ລະອັນ</translation>
 <translation id="6240447795304464094">ໂລໂກ້ Google Pay</translation>
+<translation id="6241121617266208201">ເຊື່ອງການແນະນຳ</translation>
 <translation id="6251924700383757765">ນະ​ໂຍ​ບາຍ​ວ່າດ້ວຍຄວາມ​​ເປັນ​ສ່ວນ​ຕົວ</translation>
 <translation id="6254436959401408446">ບໍ່ມີຄວາມຈຳພຽງພໍເພື່ອເປີດໜ້ານີ້</translation>
 <translation id="625755898061068298">ທ່ານໄດ້ເລືອກປິດນຳໃຊ້ການເຕືອນຄວາມປອດໄພສຳລັບເວັບໄຊນີ້ແລ້ວ.</translation>
@@ -1128,6 +1141,7 @@
 <translation id="6409754798200046165">ທ່ານຫາກໍປ້ອນລະຫັດຜ່ານຂອງທ່ານໃສ່ເວັບໄຊຫຼອກລວງ. Chrome ຂໍແນະນຳໃຫ້ປ່ຽນລະຫັດຜ່ານຂອງທ່ານດຽວນີ້.</translation>
 <translation id="6410264514553301377">ປ້ອນວັນທີໝົດອາຍຸ ແລະ CVC ສຳລັບ <ph name="CREDIT_CARD" /></translation>
 <translation id="6415778972515849510">Chromium ສາມາດຊ່ວຍທ່ານປົກປ້ອງບັນຊີ Google ຂອງທ່ານ ແລະ ປ່ຽນລະຫັດຜ່າຂອງທ່ານໄດ້.</translation>
+<translation id="6423385022588644828">ຢືນຢັນບັດຂອງທ່ານໄດ້ໄວຂຶ້ນໂດຍໃຊ້ Touch ID ຈາກນີ້ໄປ</translation>
 <translation id="6427730057873428458">ພັບທົບ</translation>
 <translation id="6433490469411711332">ແກ້ໄຂຂໍ້ມູນລາຍຊື່ຜູ້ຕິດຕໍ່</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> ໄດ້ປະຕິເສດການເຊື່ອມຕໍ່.</translation>
@@ -1198,12 +1212,14 @@
 <translation id="6786747875388722282">ສ່ວນຂະຫຍາຍ</translation>
 <translation id="6790428901817661496">​ຫຼິ້ນ</translation>
 <translation id="679355240208270552">ລະເລີຍແລ້ວເພາະວ່ານະໂຍບາຍບໍ່ໄດ້ເປີດນຳໃຊ້ການຊອກຫາເລີ່ມຕົ້ນ.</translation>
+<translation id="6794951432696553238">ຢືນຢັນບັດຂອງທ່ານໄດ້ໄວຂຶ້ນໂດຍໃຊ້ Windows Hello ຈາກນີ້ໄປ</translation>
 <translation id="681021252041861472">ຊ່ອງຂໍ້ມູນທີ່ຕ້ອງລະບຸ</translation>
 <translation id="6810899417690483278">ID ການປັບແຕ່ງເອົາເອງ</translation>
 <translation id="6825578344716086703">ທ່ານໄດ້ພະຍາຍາມຕິດຕໍ່ຫາ <ph name="DOMAIN" />, ແຕ່ເຊີບເວີໄດ້ນຳສະເໜີໃບຢັ້ງຢືນທີ່ລົງລາຍເຊັນໂດຍການໃຊ້ຂັ້ນຕອນລາຍເຊັນທີ່ອ່ອນ (ເຊັ່ນວ່າ SHA-1). ອັນນີ້ໝາຍຄວາມວ່າຂໍ້ມູນປະຈຳຕົວຄວາມປອດໄພທີ່ເຊີບເວີນໍາສະເໜີນັ້ນສາມາດຖືກປອມໄດ້, ແລະ ເຊີບເວີດັ່ງກ່າວອາດຈະບໍ່ແມ່ນເຊີບເວີທີ່ທ່ານຄາດໄວ້ (ທ່ານອາດຈະກໍາລັງສື່ສານກັບຜູ້ໂຈມຕີຢູ່).</translation>
 <translation id="6826370046007623921">ການປ້ອງການສູນເສຍຂໍ້ມູນ</translation>
 <translation id="6831043979455480757">ແປພາສາ</translation>
 <translation id="6839929833149231406">ເຂດ</translation>
+<translation id="6846340164947227603">ໃຊ້ໝາຍເລກບັດສະເໝືອນຈິງ...</translation>
 <translation id="6852204201400771460">ໂຫຼດແອັບຄືນໃໝ່ບໍ?</translation>
 <translation id="6865412394715372076">ບໍ່ສາມາດຢັ້ງຢືນບັດນີ້ໄດ້ໃນຕອນນີ້</translation>
 <translation id="6868206169573555318">ປິດແລ້ວເປີດຄືນໃໝ່ເພື່ອອັບເດດ</translation>
@@ -1232,6 +1248,7 @@
 <translation id="6989763994942163495">ສະ​ແດງການຕັ້ງຄ່າຂັ້ນສູງ...</translation>
 <translation id="6993898126790112050">6x9 (ຊອງຈົດໝາຍ)</translation>
 <translation id="6996312675313362352">ແປ <ph name="ORIGINAL_LANGUAGE" /> ທຸກເທື່ອ</translation>
+<translation id="7004583254764674281">ໃຊ້ Windows Hello ເພື່ອຢືນຢັນບັດໄດ້ໄວຂຶ້ນ</translation>
 <translation id="7012363358306927923">UnionPay ປະເທດ​ຈີນ</translation>
 <translation id="7016992613359344582">ການເກັບເງິນເຫຼົ່ານີ້ອາດຈະເກັບຄັ້ງດຽວ ຫຼື ເປັນປະຈຳຫຼາຍຄັ້ງ ແລະ ອາດຈະບໍ່ເຫັນໄດ້ຈະແຈ້ງ.</translation>
 <translation id="7029809446516969842">ລະ​ຫັດ​ຜ່ານ</translation>
@@ -1242,6 +1259,7 @@
 <translation id="7064851114919012435">ຂໍ້​ມູນ​ຕິດ​ຕໍ່</translation>
 <translation id="7075452647191940183">ຄຳຂໍໃຫຍ່ເກີນໄປ</translation>
 <translation id="7079718277001814089">ເວັບໄຊນີ້ປະກອບມີມາລແວ</translation>
+<translation id="7081308185095828845">ຄຸນສົມບັດນີ້ບໍ່ສາມາດໃຊ້ໄດ້ໃນອຸປະກອນຂອງທ່ານ</translation>
 <translation id="7087282848513945231">ເຂດປົກຄອງ</translation>
 <translation id="7090678807593890770">ຊອກຫາ <ph name="LINK" /> ໃນ Google</translation>
 <translation id="7108338896283013870">ເຊື່ອງ</translation>
@@ -1295,9 +1313,11 @@
 <translation id="733923710415886693">ໃບຢັ້ງຢືນຂອງເຊີບເວີບໍ່ຖືກເປີດເຜີຍຜ່ານນະໂຍບາຍຄວາມໂປ່ງໃສຂອງໃບຢັ້ງຢືນ.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">ເຊື່ອມໂຍງ:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> ໄດ້ເປີດການນຳໃຊ້ຄຸນສົມບັດການປົກປ້ອງຜູ້ໃຊ້ຂອງ Chrome Enterprise ແລ້ວ. ຄຸນສົມບັດການປົກປ້ອງຜູ້ໃຊ້ຂອງ Chrome Enterprise ມີສິດເຂົ້າເຖິງຂໍ້ມູນບາງສ່ວນຂອງທ່ານ.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">ແຖວຄໍາສັ່ງ</translation>
 <translation id="7372973238305370288">ຜົນ​ການຄົ້ນ​ຫາ</translation>
+<translation id="7374733840632556089">ບັນຫານີ້ເກີດຂຶ້ນເນື່ອງຈາກໃບຮັບຮອງທີ່ທ່ານ ຫຼື ຄົນອື່ນຕິດຕັ້ງໃນອຸປະກອນຂອງທ່ານ. ເປັນທີ່ຮູ້ກັນວ່າໃບຮັບຮອງນີ້ຖືກໃຊ້ເພື່ອຕິດຕາມ ແລະ ສະກັດກັ້ນເຄືອຂ່າຍ ແລະ Chrome ບໍ່ເຊື່ອຖືໃບຮັບຮອງນີ້. ເຖິງແມ່ນວ່າຈະມີບາງກໍລະນີທີ່ການຕິດຕາມອາດຈະຖືກກົດໝາຍ ເຊັ່ນ: ໃນເຄືອຂ່າຍຂອງໂຮງຮຽນ ຫຼື ບໍລິສັດ, ແຕ່ Chrome ກໍຍັງຕ້ອງການໃຫ້ແນ່ໃຈວ່າທ່ານຮັບຮູ້ວ່າມີການຕິດຕາມເບິ່ງ ເຖິງແມ່ນວ່າທ່ານບໍ່ສາມາດຢຸດມັນໄດ້ກໍຕາມ. ການຕິດຕາມອາດຈະເກີດຂຶ້ນໃນໂປຣແກຣມທ່ອງເວັບ ຫຼື ແອັບພລິເຄຊັນໃດໆກໍຕາມທີ່ເຂົ້າເຖິງເວັບໄຊໄດ້.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">ການຄວບຄຸມສື່</translation>
 <translation id="7378627244592794276">ບໍ່ແມ່ນ</translation>
@@ -1326,6 +1346,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />ສຶກສາເພີ່ມເຕີມ<ph name="END_LINK" />ກ່ຽວກັບບັນຫານີ້.</translation>
 <translation id="7455133967321480974">ໃຊ້ມາດຕະຖານທົ່ວໄປ (ບລັອກ​)</translation>
 <translation id="7460618730930299168">ການກວດຄັດແຕກຕ່າງຈາກສິ່ງທີ່ທ່ານເລືອກ. ສືບຕໍ່ບໍ?</translation>
+<translation id="7464821087936825778">ກຳລັງອອກຈາກໂໝດຊອກຫາ</translation>
 <translation id="7473891865547856676">​ບໍ່, ຂອບ​ໃຈ</translation>
 <translation id="7481312909269577407">ສົ່ງຕໍ່</translation>
 <translation id="7485870689360869515">ບໍ່ພົບຂໍ້​ມູນ​.</translation>
@@ -1547,6 +1568,7 @@
 <translation id="8559762987265718583">ບໍ່​ສາ​ມາດ​ຕັ້ງ​ການ​ເຊື່ອມ​ຕໍ່​ສ່ວນ​ຕົວ​ກັບ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ໄດ້ ເພາະ​ວ່າ​ວັນ​ທີ ແລະ​ເວ​ລາ​ອຸ​ປະ​ກອນ​ຂອງ​ທ່ານ (<ph name="DATE_AND_TIME" />) ບໍ່​ຖືກ​ຕ້ອງ.</translation>
 <translation id="8564985650692024650">Chromium ແນະນຳໃຫ້ຣີເຊັດລະຫັດຜ່ານ <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> ຂອງທ່ານ ຖ້າທ່ານນຳມັນມາໃຊ້ໃໝ່ໃນເວັບໄຊອື່ນ.</translation>
 <translation id="8571890674111243710">ກໍາລັງແປໜ້າເປັນ <ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">ໃຊ້ Touch ID ເພື່ອຢືນຢັນບັດໄດ້ໄວຂຶ້ນ</translation>
 <translation id="858637041960032120">ເພີ່ມ​ເບີໂທລະ​ສັບ</translation>
 <translation id="860043288473659153">ຊື່ຜູ້ຖືບັດ</translation>
 <translation id="8616822740383114808">ການຕັ້ງຄ່ານີ້ຖືກບັງຄັບໃຊ້ໂດຍ "<ph name="ENFORCING_SETTING" />" ໃນ "<ph name="SETTINGS_PAGE" />"</translation>
diff --git a/components/strings/components_strings_lt.xtb b/components/strings/components_strings_lt.xtb
index fa59d9e..3a997a2 100644
--- a/components/strings/components_strings_lt.xtb
+++ b/components/strings/components_strings_lt.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Įkelti puslapį vėliau</translation>
 <translation id="1015730422737071372">Pateikti papildomos išsamios informacijos</translation>
 <translation id="1021110881106174305">Tinkamos kortelės</translation>
+<translation id="1021753677514347426">Ši problema kyla dėl sertifikato, kurį jūs ar kitas asmuo įdiegėte įrenginyje. Žinoma, kad sertifikatas naudojamas tinklams stebėti ir nuskaityti ir nėra patikimas sistemoje „Chromium“. Kai kurie stebėjimo atvejai yra teisėti, pvz., mokyklos ar įmonės tinkle, bet „Chromium“ nori būti tikras, kad apie stebėjimą būsite informuoti, net jei jo nutraukti negalite. Stebėjimas galimas bet kurioje naršyklėje ar programoje, iš kurių pasiekiamas žiniatinklis.</translation>
 <translation id="1032854598605920125">Pasukti pagal laikrodžio rodyklę</translation>
 <translation id="1036348656032585052">Išjungti</translation>
 <translation id="1038842779957582377">nežinomas pavadinimas</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575"><ph name="CRASH_TIME" /> užfiksuota strigčių ataskaita (dar neįkelta ar nepaisoma)</translation>
 <translation id="1270502636509132238">Paėmimo metodas</translation>
 <translation id="1285320974508926690">Niekada neversti šios svetainės</translation>
+<translation id="1285400217480592994">Nuskaitykite failų, kuriuos atsisiunčiate ar įkeliate į „Chrome“, turinį.</translation>
 <translation id="1292701964462482250">„Programinė įranga jūsų kompiuteryje neleidžia „Chrome“ saugiai prisijungti prie žiniatinklio“ (tik „Windows“ kompiuteriuose)</translation>
 <translation id="1294154142200295408">Komandos eilutės kintamieji</translation>
 <translation id="129553762522093515">Neseniai uždarytas</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Telefono numeris</translation>
 <translation id="2277103315734023688">Prasukti pirmyn</translation>
 <translation id="2283340219607151381">Išsaugoti ir užpildyti adresus</translation>
+<translation id="2288422996159078444">Visas vedamas tekstas, visi peržiūrimi puslapiai ar bet kokia kita veikla žiniatinklyje yra stebima. Svetainių turinys gali būti keičiamas jums nežinant.</translation>
 <translation id="2289385804009217824">Apkarpymas</translation>
 <translation id="2292556288342944218">Interneto prieiga užblokuota</translation>
 <translation id="2297722699537546652">B5 (vokas)</translation>
@@ -436,6 +439,7 @@
 <translation id="2989742184762224133">Dvi sankabėlės viršuje</translation>
 <translation id="2991174974383378012">Bendrinimas su svetainėmis</translation>
 <translation id="2991571918955627853">Negalite dabar apsilankyti <ph name="SITE" />, nes svetainėje naudojama HSTS. Tinklo klaidos ir užpuolimai dažniausiai yra laikini, todėl šis puslapis vėliau tikriausiai veiks.</translation>
+<translation id="2996674880327704673">„Google“ pasiūlymai</translation>
 <translation id="3005723025932146533">Rodyti išsaugotą kopiją</translation>
 <translation id="3008447029300691911">Įveskite „<ph name="CREDIT_CARD" />“ kortelės saugos kodą (CVC). Kai patvirtinsite, išsami kortelės informacija bus bendrinama su šia svetaine.</translation>
 <translation id="3010559122411665027">Sąrašo įrašas „<ph name="ENTRY_INDEX" />“: <ph name="ERROR" /></translation>
@@ -448,6 +452,7 @@
 <translation id="3060227939791841287">C9 (vokas)</translation>
 <translation id="3061707000357573562">Pataisos paslauga</translation>
 <translation id="3064966200440839136">Išjungiate inkognito režimą, kad galėtumėte sumokėti naudodami išorinę programą. Tęsti?</translation>
+<translation id="3086579638707268289">Jūsų veikla žiniatinklyje stebima</translation>
 <translation id="3095940652251934233">Ataskaita</translation>
 <translation id="3096100844101284527">Pridėti paėmimo adresą</translation>
 <translation id="3105172416063519923">Ištekliaus ID:</translation>
@@ -501,6 +506,7 @@
 <translation id="3369192424181595722">Laikrodžio klaida</translation>
 <translation id="337363190475750230">Teikimas nutrauktas</translation>
 <translation id="3377188786107721145">Politikos analizės klaida</translation>
+<translation id="3377736046129930310">Naudodami ekrano užraktą korteles patvirtinsite greičiau</translation>
 <translation id="3380365263193509176">Nežinoma klaida</translation>
 <translation id="3380864720620200369">Kliento ID:</translation>
 <translation id="3387261909427947069">Mokėjimo metodai</translation>
@@ -666,6 +672,7 @@
 <translation id="4194250254487269611">Šiuo metu jūsų kortelės išsaugoti negalima</translation>
 <translation id="4196861286325780578">&amp;Perkelti dar kartą</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Patikrinti užkardos ir antivirusinės sistemos konfigūracijas<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">prisijungimo ekrano profilis</translation>
 <translation id="4215751373031079683">7 x 9 (vokas)</translation>
 <translation id="4220128509585149162">Gedimai</translation>
 <translation id="422022731706691852"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> užpuolikai gali bandyti apgaule priversti jus įdiegti naršymo funkcijas trikdančių programų (pvz., pakeitę pagrindinį puslapį ar rodydami papildomų skelbimų svetainėse, kuriose lankotės). <ph name="BEGIN_LEARN_MORE_LINK" />Sužinokite daugiau<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -748,6 +755,7 @@
 <translation id="4515275063822566619">Kortelės ir adresai naudojami iš „Chrome“ ir jūsų „Google“ paskyros (<ph name="ACCOUNT_EMAIL" />). Galite juos tvarkyti skiltyje <ph name="BEGIN_LINK" />Nustatymai<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">„Comm-10“ (vokas)</translation>
 <translation id="4522570452068850558">Išsami informacija</translation>
+<translation id="4524138615196389145">Nuo šiol patvirtinkite korteles greičiau su „WebAuthn“</translation>
 <translation id="4524805452350978254">Tvarkyti korteles</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -859,6 +867,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64 bitų)</translation>
+<translation id="5121469660360593280">Bendrinkite su administratoriumi duomenis apie saugos įvykius, pažymėtus pagal „Chrome“ įmonei skirtos versijos naudotojų apsaugą. Tai gali būti lankomų puslapių URL, failų pavadinimai ar metaduomenys ir naudotojo vardas, kurį naudodami prisijungiate prie įrenginio ir „Chrome“.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Kortelės patvirtinimas</translation>
 <translation id="5135404736266831032">Tvarkyti adresus...</translation>
@@ -870,6 +879,7 @@
 <translation id="5159010409087891077">Atidarykite puslapį naujame inkognito lange (⇧⌘N)</translation>
 <translation id="516920405563544094">Įveskite „<ph name="CREDIT_CARD" />“ kortelės saugos kodą (CVC). Kai patvirtinsite, „Google“ paskyroje nurodyta išsami kortelės informacija bus bendrinama su šia svetaine.</translation>
 <translation id="5169827969064885044">Galite prarasti prieigą prie organizacijos paskyros arba gali būti pavogta tapatybė. „Chrome“ rekomenduoja pakeisti slaptažodį dabar.</translation>
+<translation id="5170017743895942767">„Chrome“ įmonei skirtos versijos naudotojų apsauga</translation>
 <translation id="5171045022955879922">Ieškokite ar įveskite URL</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Įrenginys</translation>
@@ -990,6 +1000,7 @@
 <translation id="5730040223043577876">„Chrome“ rekomenduoja iš naujo nustatyti slaptažodį, jei naudojate jį kitose svetainėse.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Išsaugokite kortelę „Google“ paskyroje}one{Išsaugokite korteles „Google“ paskyroje}few{Išsaugokite korteles „Google“ paskyroje}many{Išsaugokite korteles „Google“ paskyroje}other{Išsaugokite korteles „Google“ paskyroje}}</translation>
 <translation id="5763042198335101085">Įveskite galiojantį el. pašto adresą</translation>
+<translation id="5763703224595565476">Administratorius įgalino „Chrome“ įmonei skirtos versijos naudotojų apsaugą jūsų naršyklėje. „Chrome“ įmonei skirtos versijos naudotojų apsauga gali pasiekti kai kuriuos jūsų duomenis.</translation>
 <translation id="5765072501007116331">Jei norite peržiūrėti pristatymo metodus ir reikalavimus, pasirinkite adresą.</translation>
 <translation id="5778550464785688721">MIDI įrenginių visateisis valdymas</translation>
 <translation id="5781136890105823427">Eksperimentas įgalintas</translation>
@@ -1069,6 +1080,7 @@
 <translation id="6094273045989040137">Komentuoti</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">„Google“ paskyroje gali būti kito tipo naršymo istorijos, kuri pasiekiama adresu <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
+<translation id="6120179357481664955">Prisiminti UPI ID?</translation>
 <translation id="6132597952260690497">Informacija apie įdiegtus plėtinius ir papildinius</translation>
 <translation id="6146055958333702838">Patikrinkite laidus ir iš naujo paleiskite maršruto parinktuvus, modemus ar kitus
         naudojamus tinklo įrenginius.</translation>
@@ -1084,6 +1096,7 @@
 <translation id="6221345481584921695">„Google“ saugaus naršymo sistema neseniai <ph name="BEGIN_LINK" />aptiko kenkėjišką programą<ph name="END_LINK" /> svetainėje <ph name="SITE" />. Svetainės, kurios paprastai yra saugios, kartais užkrečiamos kenkėjiškomis programomis. Kenkėjiškas turinys gautas iš <ph name="SUBRESOURCE_HOST" />, žinomo kenkėjiškų programų platintojo.</translation>
 <translation id="6234122620015464377">Apkarpymas po kiekvieno dokumento</translation>
 <translation id="6240447795304464094">„Google Pay“ logotipas</translation>
+<translation id="6241121617266208201">Slėpti pasiūlymus</translation>
 <translation id="6251924700383757765">Privatumo politika</translation>
 <translation id="6254436959401408446">Nepakanka atminties, kad būtų galima atidaryti šį puslapį</translation>
 <translation id="625755898061068298">Pasirinkote išjungti šios svetainės saugos įspėjimus.</translation>
@@ -1130,6 +1143,7 @@
 <translation id="6409754798200046165">Ką tik savo slaptažodį įvedėte apgaulingoje svetainėje. „Chrome“ rekomenduoja dabar pakeisti slaptažodį.</translation>
 <translation id="6410264514553301377">įveskite „<ph name="CREDIT_CARD" />“ galiojimo pabaigos datą ir kortelės saugos kodą (CVC)</translation>
 <translation id="6415778972515849510">„Chromium“ gali padėti apsaugoti „Google“ paskyrą ir pakeisti slaptažodį.</translation>
+<translation id="6423385022588644828">Nuo šiol patvirtinkite korteles greičiau su „Touch ID“</translation>
 <translation id="6427730057873428458">Du atvartai</translation>
 <translation id="6433490469411711332">Kontaktinės informacijos redagavimas</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> atsisakė prisijungti.</translation>
@@ -1200,12 +1214,14 @@
 <translation id="6786747875388722282">Plėtiniai</translation>
 <translation id="6790428901817661496">Žaisti</translation>
 <translation id="679355240208270552">Nepaisoma, nes numatytoji paieška neįgalinta pagal politiką.</translation>
+<translation id="6794951432696553238">Nuo šiol patvirtinkite korteles greičiau su „Windows Hello“</translation>
 <translation id="681021252041861472">Būtinas laukas</translation>
 <translation id="6810899417690483278">Tinkinimo ID</translation>
 <translation id="6825578344716086703">Bandėte pasiekti <ph name="DOMAIN" />, bet serveris pateikė sertifikatą, kuris pasirašytas naudojant nesudėtingą parašo algoritmą (pvz., SHA-1). Tai reiškia, kad serverio pateikti saugos prisijungimo duomenys galėjo būti suklastoti ir serveris gali būti ne tas, kurio tikėjotės (gali būti, kad bendraujate su užpuoliku).</translation>
 <translation id="6826370046007623921">Duomenų praradimo prevencija</translation>
 <translation id="6831043979455480757">Vertėjas</translation>
 <translation id="6839929833149231406">Sritis</translation>
+<translation id="6846340164947227603">Naudoti virtualų kortelės numerį...</translation>
 <translation id="6852204201400771460">Įkelti programą iš naujo?</translation>
 <translation id="6865412394715372076">Šiuo metu kortelės patvirtinti nepavyksta</translation>
 <translation id="6868206169573555318">Paleisti iš naujo, kad būtų atnaujinta</translation>
@@ -1234,6 +1250,7 @@
 <translation id="6989763994942163495">Rodyti išplėstinius nustatymus...</translation>
 <translation id="6993898126790112050">6 x 9 (vokas)</translation>
 <translation id="6996312675313362352">Visada versti <ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">Su „Windows Hello“ korteles patvirtinsite greičiau</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Šie mokesčiai gali būti vienkartiniai arba pasikartojantys ir gali būti neaiškūs.</translation>
 <translation id="7029809446516969842">Slaptažodžiai</translation>
@@ -1244,6 +1261,7 @@
 <translation id="7064851114919012435">Kontaktinė informacija</translation>
 <translation id="7075452647191940183">Užklausa per didelė</translation>
 <translation id="7079718277001814089">Šioje svetainėje yra kenkėjiškų programų</translation>
+<translation id="7081308185095828845">Ši funkcija jūsų įrenginyje nepasiekiama</translation>
 <translation id="7087282848513945231">Apskritis</translation>
 <translation id="7090678807593890770">Sistemoje „Google“ atlikite paiešką pagal užklausą „<ph name="LINK" />“</translation>
 <translation id="7108338896283013870">Slėpti</translation>
@@ -1297,9 +1315,11 @@
 <translation id="733923710415886693">Serverio sertifikatas nebuvo atskleistas taikant sertifikato skaidrumą.</translation>
 <translation id="734600844861828519">11 x 15</translation>
 <translation id="7346048084945669753">Susietas:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> įgalino „Chrome“ įmonei skirtos versijos naudotojų apsaugą jūsų naršyklėje. „Chrome“ įmonei skirtos versijos naudotojų apsauga gali pasiekti kai kuriuos jūsų duomenis.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Komandos eilutė</translation>
 <translation id="7372973238305370288">paieškos rezultatas</translation>
+<translation id="7374733840632556089">Ši problema kyla dėl sertifikato, kurį jūs ar kitas asmuo įdiegėte įrenginyje. Žinoma, kad sertifikatas naudojamas tinklams stebėti ir nuskaityti ir nėra patikimas sistemoje „Chrome“. Kai kurie stebėjimo atvejai yra teisėti, pvz., mokyklos ar įmonės tinkle, bet „Chrome“ nori būti tikra, kad apie stebėjimą būsite informuoti, net jei jo nutraukti negalite. Stebėjimas galimas bet kurioje naršyklėje ar programoje, iš kurių pasiekiamas žiniatinklis.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Medijos valdikliai</translation>
 <translation id="7378627244592794276">Ne</translation>
@@ -1328,6 +1348,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Sužinokite daugiau<ph name="END_LINK" /> apie šią problemą.</translation>
 <translation id="7455133967321480974">Naudoti visuotinį numatytąjį nustatymą (blokuoti)</translation>
 <translation id="7460618730930299168">Vaizdas ekrane skiriasi nuo to, ką pasirinkote. Tęsti?</translation>
+<translation id="7464821087936825778">Išeinama iš paieškos režimo</translation>
 <translation id="7473891865547856676">Ne, ačiū</translation>
 <translation id="7481312909269577407">Persiųsti</translation>
 <translation id="7485870689360869515">Nerasta jokių duomenų.</translation>
@@ -1549,6 +1570,7 @@
 <translation id="8559762987265718583">Nepavyksta užmegzti privataus ryšio su <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />, nes įrenginio data ir laikas (<ph name="DATE_AND_TIME" />) yra netinkami.</translation>
 <translation id="8564985650692024650">„Chromium“ rekomenduoja iš naujo nustatyti <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> slaptažodį, jei naudojate jį kitose svetainėse.</translation>
 <translation id="8571890674111243710">Puslapis verčiamas į <ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">Patvirtinkite korteles greičiau su „Touch ID“</translation>
 <translation id="858637041960032120">Pridėti tel. nr.
 </translation>
 <translation id="860043288473659153">Kortelės savininko vardas</translation>
diff --git a/components/strings/components_strings_lv.xtb b/components/strings/components_strings_lv.xtb
index d8c616e7..349b87d 100644
--- a/components/strings/components_strings_lv.xtb
+++ b/components/strings/components_strings_lv.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Ielādēt lapu vēlāk</translation>
 <translation id="1015730422737071372">Sniegt papildu informāciju</translation>
 <translation id="1021110881106174305">Pieņemtās kartes</translation>
+<translation id="1021753677514347426">Šīs problēmas iemesls ir sertifikāts, kuru jūs vai kāds cits ir instalējis jūsu ierīcē. Ir zināms, ka šis sertifikāts tiek izmantots tīklu pārraudzībai un pārtveršanai, un pārlūks Chromium tam neuzticas. Lai gan pastāv daži likumīgi pārraudzības gadījumi, piemēram, skolas vai uzņēmuma tīklā, pārlūks Chromium vēlas pārliecināties, ka esat par to informēts, pat ja nevarat to apturēt. Pārraudzība var notikt jebkurā pārlūkā vai lietojumprogrammā ar piekļuvi tīmeklim.</translation>
 <translation id="1032854598605920125">Pagriezt pulksteņrādītāju kustības virzienā</translation>
 <translation id="1036348656032585052">Izslēgt</translation>
 <translation id="1038842779957582377">nezināms nosaukums</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575"><ph name="CRASH_TIME" /> notverts ziņojums par avāriju (vēl nav augšupielādēts vai ignorēts)</translation>
 <translation id="1270502636509132238">Saņemšanas veids</translation>
 <translation id="1285320974508926690">Nekad netulkot šo vietni</translation>
+<translation id="1285400217480592994">Pārmeklēt failu, ko augšupielādējat vai lejupielādējat pārlūkā Chrome, saturu.</translation>
 <translation id="1292701964462482250">“Programmatūra jūsu datorā, kuras dēļ pārlūkā Chrome nevar izveidot drošu tīmekļa savienojumu” (tikai Windows datoros)</translation>
 <translation id="1294154142200295408">Komandrindu varianti</translation>
 <translation id="129553762522093515">Nesen aizvērtas</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Tālruņa numurs</translation>
 <translation id="2277103315734023688">Pāriet uz priekšu</translation>
 <translation id="2283340219607151381">Saglabāt un aizpildīt adreses</translation>
+<translation id="2288422996159078444">Tiek skatīts viss, ko jūs rakstāt, visas lapas, kuras skatāt, vai jebkura cita darbība tīmeklī. Vietņu saturs var tikt mainīts, jūs neinformējot.</translation>
 <translation id="2289385804009217824">Apgriešana</translation>
 <translation id="2292556288342944218">Piekļuve internetam ir bloķēta</translation>
 <translation id="2297722699537546652">B5 (aploksne)</translation>
@@ -434,6 +437,7 @@
 <translation id="2989742184762224133">Divkāršs skavojums augšdaļā</translation>
 <translation id="2991174974383378012">Kopīgošana ar vietnēm</translation>
 <translation id="2991571918955627853">Pašlaik nevarat apmeklēt vietni <ph name="SITE" />, jo tā izmanto HSTS. Tā kā tīkla kļūdas un uzbrukumi parasti ir īslaicīgi, visticamāk, šī lapa vēlāk darbosies.</translation>
+<translation id="2996674880327704673">Google ieteikumi</translation>
 <translation id="3005723025932146533">Rādīt saglabāto versiju</translation>
 <translation id="3008447029300691911">Ievadiet kredītkartes <ph name="CREDIT_CARD" /> CVC. Pēc apstiprināšanas kartes informācija tiks kopīgota ar šo vietni.</translation>
 <translation id="3010559122411665027">Saraksta ieraksts “<ph name="ENTRY_INDEX" />”: <ph name="ERROR" /></translation>
@@ -446,6 +450,7 @@
 <translation id="3060227939791841287">C9 (aploksne)</translation>
 <translation id="3061707000357573562">Ielāpu pakalpojums</translation>
 <translation id="3064966200440839136">Ja maksāšanai tiks izmantota ārēja lietojumprogramma, tiks aizvērts inkognito režīms. Vai turpināt?</translation>
+<translation id="3086579638707268289">Jūsu darbības tīmeklī tiek uzraudzītas</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Pievienot saņemšanas adresi</translation>
 <translation id="3105172416063519923">Līdzekļa ID:</translation>
@@ -498,6 +503,7 @@
 <translation id="3369192424181595722">Pulksteņa kļūda</translation>
 <translation id="337363190475750230">Tika noņemta piekļuve</translation>
 <translation id="3377188786107721145">Radās politikas parsēšanas kļūda.</translation>
+<translation id="3377736046129930310">Izmantot ekrāna bloķēšanu, lai kartes apstiprinātu ātrāk</translation>
 <translation id="3380365263193509176">Nezināma kļūda</translation>
 <translation id="3380864720620200369">Klienta ID:</translation>
 <translation id="3387261909427947069">Maksājumu veidi</translation>
@@ -662,6 +668,7 @@
 <translation id="4194250254487269611">Jūsu karti šobrīd nevar saglabāt.</translation>
 <translation id="4196861286325780578">&amp;Atcelt pārvietošanas atsaukšanu</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Pārbaudiet ugunsmūri un pretvīrusu programmu konfigurācijas<ph name="END_LINK" />.</translation>
+<translation id="4214357935346142455">pierakstīšanās ekrāna profils</translation>
 <translation id="4215751373031079683">7x9 (aploksne)</translation>
 <translation id="4220128509585149162">Avārijas</translation>
 <translation id="422022731706691852">Uzbrucēji vietnē <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> var mudināt jūs instalēt programmas, kas var negatīvi ietekmēt pārlūkošanas pieredzi (piemēram, mainot sākumlapu vai rādot papildu reklāmas jūsu apmeklētajās vietnēs). <ph name="BEGIN_LEARN_MORE_LINK" />Uzziniet vairāk<ph name="END_LEARN_MORE_LINK" />.</translation>
@@ -744,6 +751,7 @@
 <translation id="4515275063822566619">Kartes un adreses tiek iegūtas no Chrome un jūsu Google konta (<ph name="ACCOUNT_EMAIL" />). Varat tās pārvaldīt <ph name="BEGIN_LINK" />iestatījumos<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Comm-10 (aploksne)</translation>
 <translation id="4522570452068850558">Informācija</translation>
+<translation id="4524138615196389145">Turpmāk, izmantojot WebAuthn, apstipriniet kartes ātrāk</translation>
 <translation id="4524805452350978254">Pārvaldīt kartītes</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -855,6 +863,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64 bitu)</translation>
+<translation id="5121469660360593280">Kopīgot ar jūsu administratoru datus par notikumiem, kuri ir saistīti ar drošību un ir atzīmēti funkcijā “Chrome aizsardzība uzņēmuma versijas lietotājiem”. Šajos datos var būt ietverti jūsu apmeklēto lapu URL, failu nosaukumi vai metadati un lietotājvārds, ar kuru pierakstāties ierīcē un pārlūkā Chrome.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Kartes verificēšana</translation>
 <translation id="5135404736266831032">Pārvaldīt adreses...</translation>
@@ -866,6 +875,7 @@
 <translation id="5159010409087891077">Atvērt lapu jaunā inkognito režīma logā (⇧⌘N)</translation>
 <translation id="516920405563544094">Ievadiet kredītkartes <ph name="CREDIT_CARD" /> CVC kodu. Pēc apstiprināšanas kartes informācija no Google konta tiks kopīgota ar šo vietni.</translation>
 <translation id="5169827969064885044">Varat zaudēt piekļuvi savam organizācijas kontam, vai jūsu identitāte var tikt nozagta. Chrome iesaka nekavējoties nomainīt paroli.</translation>
+<translation id="5170017743895942767">Chrome aizsardzība uzņēmuma versijas lietotājiem</translation>
 <translation id="5171045022955879922">Meklējiet vai ievadiet URL.</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Ierīce</translation>
@@ -986,6 +996,7 @@
 <translation id="5730040223043577876">Chrome iesaka atiestatīt jūsu paroli, ja izmantojāt to citās vietnēs.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Kartes datu saglabāšana Google kontā}zero{Karšu datu saglabāšana Google kontā}one{Karšu datu saglabāšana Google kontā}other{Karšu datu saglabāšana Google kontā}}</translation>
 <translation id="5763042198335101085">Ievadiet derīgu e-pasta adresi</translation>
+<translation id="5763703224595565476">Jūsu administrators pārlūkā ir iespējojis funkciju “Chrome aizsardzība uzņēmuma versijas lietotājiem”. Funkcijai “Chrome aizsardzība uzņēmuma versijas lietotājiem” ir piekļuve daļai jūsu datu.</translation>
 <translation id="5765072501007116331">Lai skatītu piegādes veidus un prasības, atlasiet adresi.</translation>
 <translation id="5778550464785688721">Pilnīga MIDI ierīču pārvaldība</translation>
 <translation id="5781136890105823427">Eksperiments iespējots</translation>
@@ -1065,6 +1076,7 @@
 <translation id="6094273045989040137">Pievienot piezīmi</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">Jūsu Google kontam var būt citu veidu pārlūkošanas vēstures dati vietnē <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
+<translation id="6120179357481664955">Vai iegaumēt jūsu UPI ID?</translation>
 <translation id="6132597952260690497">Informācija par instalētajiem paplašinājumiem un spraudņiem</translation>
 <translation id="6146055958333702838">Pārbaudiet vadus un atkārtoti palaidiet maršrutētājus, modemus vai citas
     izmantotās tīkla ierīces.</translation>
@@ -1080,6 +1092,7 @@
 <translation id="6221345481584921695">Google drošās pārlūkošanas tehnoloģija vietnē <ph name="SITE" /> nesen <ph name="BEGIN_LINK" />konstatēja ļaunprātīgu programmatūru<ph name="END_LINK" />. Vietnes, kuras parasti ir drošas, dažkārt tiek inficētas ar ļaunprātīgu programmatūru. Ļaunprātīgā satura avots ir <ph name="SUBRESOURCE_HOST" /> — plaši zināms ļaunprātīgās programmatūras izplatītājs.</translation>
 <translation id="6234122620015464377">Apgriešana pēc katra dokumenta</translation>
 <translation id="6240447795304464094">Google Pay logotips</translation>
+<translation id="6241121617266208201">Paslēpt ieteikumus</translation>
 <translation id="6251924700383757765">Konfidencialitātes politika</translation>
 <translation id="6254436959401408446">Nav pietiekami daudz vietas atmiņā, lai atvērtu šo lapu</translation>
 <translation id="625755898061068298">Jūs izvēlējāties atspējot drošības brīdinājumus šai vietnei.</translation>
@@ -1126,6 +1139,7 @@
 <translation id="6409754798200046165">Jūs tikko ievadījāt savu paroli maldinošā vietnē. Pārlūks Chrome iesaka pēc iespējas ātrāk nomainīt paroli.</translation>
 <translation id="6410264514553301377">Ievadiet kredītkartes <ph name="CREDIT_CARD" /> derīguma termiņu un CVC.</translation>
 <translation id="6415778972515849510">Chromium var palīdzēt jums aizsargāt jūsu Google kontu un nomainīt paroli.</translation>
+<translation id="6423385022588644828">Turpmāk, izmantojot Touch ID, apstipriniet kartes ātrāk</translation>
 <translation id="6427730057873428458">Abpusējs locījums</translation>
 <translation id="6433490469411711332">Kontaktinformācijas rediģēšana</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> noraidīja savienojuma izveidi.</translation>
@@ -1196,12 +1210,14 @@
 <translation id="6786747875388722282">Paplašinājumi</translation>
 <translation id="6790428901817661496">Atskaņot</translation>
 <translation id="679355240208270552">Politika ignorēta, jo noklusējuma meklēšana nav iespējota politikā.</translation>
+<translation id="6794951432696553238">Turpmāk, izmantojot Windows Hello, apstipriniet kartes ātrāk</translation>
 <translation id="681021252041861472">Obligātais lauks</translation>
 <translation id="6810899417690483278">Pielāgošanas ID</translation>
 <translation id="6825578344716086703">Jūs mēģinājāt sasniegt domēnu <ph name="DOMAIN" />, bet serveris uzrādīja sertifikātu, kas ir parakstīts, izmantojot vāju paraksta algoritmu (piemēram, SHA-1). Tas nozīmē, ka servera norādītie drošības akreditācijas dati var būt viltoti un šis serveris var nebūt tas serveris, kuru mēģināt sasniegt (iespējams, jūs sazināties ar uzbrucēju).</translation>
 <translation id="6826370046007623921">Datu zuduma novēršana</translation>
 <translation id="6831043979455480757">Tulkot</translation>
 <translation id="6839929833149231406">Apgabals</translation>
+<translation id="6846340164947227603">Izmantot virtuālās kartes numuru...</translation>
 <translation id="6852204201400771460">Vai atkārtoti ielādēt lietotni?</translation>
 <translation id="6865412394715372076">Pašlaik nevar verificēt šo karti.</translation>
 <translation id="6868206169573555318">Palaist atkārtoti, lai atjauninātu</translation>
@@ -1230,6 +1246,7 @@
 <translation id="6989763994942163495">Rādīt papildu iestatījumus...</translation>
 <translation id="6993898126790112050">6x9 (aploksne)</translation>
 <translation id="6996312675313362352">Vienmēr tulkot šo valodu: <ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">Izmantot Windows Hello, lai ātrāk apstiprinātu kartes</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Šie naudas pieprasījumi var būt vienreizēji vai atkārtoti, un tie var nebūt uzreiz pamanāmi.</translation>
 <translation id="7029809446516969842">Paroles</translation>
@@ -1240,6 +1257,7 @@
 <translation id="7064851114919012435">Kontaktinformācija</translation>
 <translation id="7075452647191940183">Pieprasījums ir pārāk liels</translation>
 <translation id="7079718277001814089">Šī vietne satur ļaunprātīgu programmatūru</translation>
+<translation id="7081308185095828845">Šī funkcija jūsu ierīcē nav pieejama</translation>
 <translation id="7087282848513945231">Grāfiste</translation>
 <translation id="7090678807593890770">Veiciet Google meklēšanu, izmantojot vaicājumu “<ph name="LINK" />”</translation>
 <translation id="7108338896283013870">Slēpt</translation>
@@ -1293,9 +1311,11 @@
 <translation id="733923710415886693">Servera sertifikāts netika atklāts, izmantojot Certificate Transparency.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">Ir saistīts:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> jūsu pārlūkā ir iespējojis funkciju “Chrome aizsardzība uzņēmuma versijas lietotājiem”. Funkcijai “Chrome aizsardzība uzņēmuma versijas lietotājiem” ir piekļuve daļai jūsu datu.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Komandrinda</translation>
 <translation id="7372973238305370288">meklēšanas rezultāts</translation>
+<translation id="7374733840632556089">Šīs problēmas iemesls ir sertifikāts, kuru jūs vai kāds cits ir instalējis jūsu ierīcē. Ir zināms, ka šis sertifikāts tiek izmantots tīklu pārraudzībai un pārtveršanai, un pārlūks Chrome tam neuzticas. Lai gan pastāv daži likumīgi pārraudzības gadījumi, piemēram, skolas vai uzņēmuma tīklā, pārlūks Chrome vēlas pārliecināties, ka esat par to informēts, pat ja nevarat to apturēt. Pārraudzība var notikt jebkurā pārlūkā vai lietojumprogrammā ar piekļuvi tīmeklim.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Multivides vadīklas</translation>
 <translation id="7378627244592794276">Nē</translation>
@@ -1324,6 +1344,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Uzzināt vairāk<ph name="END_LINK" /> par šo problēmu.</translation>
 <translation id="7455133967321480974">Izmantot globālo noklusējumu (Bloķēt)</translation>
 <translation id="7460618730930299168">Pārmeklēšana atšķiras no jūsu atlasītās. Vai vēlaties turpināt?</translation>
+<translation id="7464821087936825778">Notiek iziešana no meklēšanas režīma</translation>
 <translation id="7473891865547856676">Nē, paldies!</translation>
 <translation id="7481312909269577407">Pārsūtīt</translation>
 <translation id="7485870689360869515">Dati netika atrasti.</translation>
@@ -1545,6 +1566,7 @@
 <translation id="8559762987265718583">Nevar izveidot privātu savienojumu ar <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />, jo jūsu ierīces datums un laiks (<ph name="DATE_AND_TIME" />) nav pareizs.</translation>
 <translation id="8564985650692024650">Chromium iesaka atiestatīt jūsu <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> paroli, ja izmantojāt to citās vietnēs.</translation>
 <translation id="8571890674111243710">Notiek lapas tulkošana uz <ph name="LANGUAGE" /> valodu...</translation>
+<translation id="8574899947864779331">Izmantot Touch ID, lai apstiprinātu kartes ātrāk</translation>
 <translation id="858637041960032120">Piev. tālr. nr.
 </translation>
 <translation id="860043288473659153">Bankas kartes īpašnieka vārds</translation>
diff --git a/components/strings/components_strings_mk.xtb b/components/strings/components_strings_mk.xtb
index 932d9f9..09b42f7 100644
--- a/components/strings/components_strings_mk.xtb
+++ b/components/strings/components_strings_mk.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Вчитај ја страницата подоцна</translation>
 <translation id="1015730422737071372">Дајте дополнителни детали</translation>
 <translation id="1021110881106174305">Прифатени картички</translation>
+<translation id="1021753677514347426">Грешкава се случува поради сертификат што вие или некој друг сте го инсталирале на уредот. Сертификатов е познато дека се користи за надзор и пресретнување мрежи и Chromium нема доверба во него. Иако постојат и легитимни случаи за надзор, како на пр., во училишна или компаниска мрежа, Chromium сака да се увери дека знаете дека постои надзор, дури и ако не може да го сопрете. Надзорот може да се случи во кој било прелистувач или апликација што пристапува на интернет.</translation>
 <translation id="1032854598605920125">Ротирај надесно</translation>
 <translation id="1036348656032585052">Исклучи</translation>
 <translation id="1038842779957582377">непознато име</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Извештајот за пад е снимен во <ph name="CRASH_TIME" /> (сѐ уште не е поставен или игнориран)</translation>
 <translation id="1270502636509132238">Начин на подигнување</translation>
 <translation id="1285320974508926690">Никогаш не преведувај ја оваа локација</translation>
+<translation id="1285400217480592994">Скенирање на содржините на датотеките што ги преземате и прикачувате во Chrome.</translation>
 <translation id="1292701964462482250">„Софтверот на вашиот компјутер го спречува Chrome безбедно да се поврзе на интернет“ (само за компјутери со Windows)</translation>
 <translation id="1294154142200295408">Варијации на линијата за наредби</translation>
 <translation id="129553762522093515">Неодамна затворено</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Телефонски број</translation>
 <translation id="2277103315734023688">Премотај нанапред</translation>
 <translation id="2283340219607151381">Зачувувај и пополнувај адреси</translation>
+<translation id="2288422996159078444">Сѐ што ќе напишете, сите страници што ќе ги прегледате или секоја друга активност на интернет се надгледува, а содржините на сајтовите може да се променат без ваше знаење.</translation>
 <translation id="2289385804009217824">Кратење</translation>
 <translation id="2292556288342944218">Вашиот пристап на интернет е блокиран</translation>
 <translation id="2297722699537546652">B5 (плик)</translation>
@@ -436,6 +439,7 @@
 <translation id="2989742184762224133">Двојно спојување горе</translation>
 <translation id="2991174974383378012">Споделување со веб-сајтови</translation>
 <translation id="2991571918955627853">Не може да го посетите <ph name="SITE" /> во моментов затоа што веб-сајтот користи HSTS. Грешките на мрежата и нападите обично се привремени, така што страницава веројатно ќе работи подоцна.</translation>
+<translation id="2996674880327704673">Предлози од Google</translation>
 <translation id="3005723025932146533">Прикажи зачувана копија</translation>
 <translation id="3008447029300691911">Внесете го CVC за <ph name="CREDIT_CARD" />. Откако ќе потврдите, деталите за вашата картичка ќе се споделат со сајтот.</translation>
 <translation id="3010559122411665027">Запис во список „<ph name="ENTRY_INDEX" />“: <ph name="ERROR" /></translation>
@@ -448,6 +452,7 @@
 <translation id="3060227939791841287">C9 (плик)</translation>
 <translation id="3061707000357573562">Услуга за поправање грешки</translation>
 <translation id="3064966200440839136">Ќе го напуштите режимот „Инкогнито“ за да платите преку надворешна апликација. Ќе продолжите?</translation>
+<translation id="3086579638707268289">Вашата активност на интернет е под надзор</translation>
 <translation id="3095940652251934233">Изјава</translation>
 <translation id="3096100844101284527">Додајте адреса за подигнување</translation>
 <translation id="3105172416063519923">ИД на средство:</translation>
@@ -500,6 +505,7 @@
 <translation id="3369192424181595722">Грешка на часовникот</translation>
 <translation id="337363190475750230">Со оневозможен пристап</translation>
 <translation id="3377188786107721145">Грешка при анализа на правило</translation>
+<translation id="3377736046129930310">Користете заклучување екран за побрзо потврдување на картичките</translation>
 <translation id="3380365263193509176">Непозната грешка</translation>
 <translation id="3380864720620200369">ИД на клиент:</translation>
 <translation id="3387261909427947069">Начини на плаќање</translation>
@@ -665,6 +671,7 @@
 <translation id="4194250254487269611">Вашата картичка не може да се зачува во моментов</translation>
 <translation id="4196861286325780578">&amp;Повтори преместување</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Да ги проверите заштитниот ѕид и антивирусните конфигурации<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">профил на екранот за најавување</translation>
 <translation id="4215751373031079683">7x9 (плик)</translation>
 <translation id="4220128509585149162">Падови</translation>
 <translation id="422022731706691852">Напаѓачите на <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> може да се обидат да ве измамат да инсталирате програми што ќе му наштетат на вашето искуство со прелистувањето (на пример, со менување на вашата почетна страница или со прикажување дополнителни реклами на сајтовите што ги посетувате). <ph name="BEGIN_LEARN_MORE_LINK" />Дознајте повеќе<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -747,6 +754,7 @@
 <translation id="4515275063822566619">Картичките и адресите се од Chrome и од вашата сметка на Google (<ph name="ACCOUNT_EMAIL" />). Со нив може да управувате во <ph name="BEGIN_LINK" />Поставки<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Comm-10 (плик)</translation>
 <translation id="4522570452068850558">Детали</translation>
+<translation id="4524138615196389145">Отсега, потврдувајте ги картичките побрзо со WebAuthn</translation>
 <translation id="4524805452350978254">Управувајте со картичките</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -858,6 +866,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64-бита)</translation>
+<translation id="5121469660360593280">Споделувајте податоци со администраторот за безбедносните настани што ги пријавила „Заштитата на компаниски корисник на Chrome“. Тука спаѓаат URL-адресите на страниците што ги посетувате, имињата или метаподатоците на датотеките и корисничкото име што го користите за најавување на вашиот уред и Chrome.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Потврдете ја картичката</translation>
 <translation id="5135404736266831032">Управувајте со адресите…</translation>
@@ -869,6 +878,7 @@
 <translation id="5159010409087891077">Отворете ја страницата во нов инкогнито прозорец (⇧⌘N)</translation>
 <translation id="516920405563544094">Внесете го CVC за <ph name="CREDIT_CARD" />. Откако ќе потврдите, деталите за картичката од вашата сметка на Google ќе се споделат со сајтов.</translation>
 <translation id="5169827969064885044">Може да го изгубите пристапот до сметката на вашата организација или да ви го украдат идентитетот. Chrome препорачува да ја смените лозинката веднаш.</translation>
+<translation id="5170017743895942767">Заштита на компаниски корисник на Chrome</translation>
 <translation id="5171045022955879922">Барај или впиши URL</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Машина</translation>
@@ -989,6 +999,7 @@
 <translation id="5730040223043577876">Chrome препорачува ресетирање на лозинката ако повторно сте ја употребиле на други сајтови.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Зачувајте картичка во вашата сметка на Google}one{Зачувајте картички во вашата сметка на Google}other{Зачувајте картички во вашата сметка на Google}}</translation>
 <translation id="5763042198335101085">Внесете важечка адреса на е-пошта</translation>
+<translation id="5763703224595565476">Администраторот ја овозможи „Заштитата на компаниски корисник на Chrome“ во вашиот прелистувач. „Заштитата на компаниски корисник на Chrome“ има пристап до дел од вашите податоци.</translation>
 <translation id="5765072501007116331">За да ги видите методите и условите за доставување, изберете адреса</translation>
 <translation id="5778550464785688721">Целосна контрола на уредите MIDI</translation>
 <translation id="5781136890105823427">Експериментот е овозможен</translation>
@@ -1068,6 +1079,7 @@
 <translation id="6094273045989040137">Стави прибелешка</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">Вашата сметка на Google можеби има други видови историја на прелистување на <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
+<translation id="6120179357481664955">Да се запомни ID за UPI?</translation>
 <translation id="6132597952260690497">Информации за инсталираните екстензии и приклучоци</translation>
 <translation id="6146055958333702838">Проверете ги каблите и рестартирајте ги рутерите, модемите или другите мрежни
         уреди што ги користите.</translation>
@@ -1083,6 +1095,7 @@
 <translation id="6221345481584921695">Google Safe Browsing неодамна <ph name="BEGIN_LINK" />откри злонамерен софтвер<ph name="END_LINK" /> на <ph name="SITE" />. Веб-локациите што обично се безбедни понекогаш се инфицираат со злонамерен софтвер. Злонамерната содржина доаѓа од <ph name="SUBRESOURCE_HOST" />, познат дистрибутер на злонамерен софтвер.</translation>
 <translation id="6234122620015464377">Кратење по секој документ</translation>
 <translation id="6240447795304464094">Лого на Google Pay</translation>
+<translation id="6241121617266208201">Сокриј ги предлозите</translation>
 <translation id="6251924700383757765">Политика за приватност</translation>
 <translation id="6254436959401408446">Нема доволно меморија за да се отвори страницава</translation>
 <translation id="625755898061068298">Одбравте да ги оневозможите безбедносните предупредувања за овој сајт.</translation>
@@ -1129,6 +1142,7 @@
 <translation id="6409754798200046165">Тукушто ја внесовте лозинката на сајт што може да ве измами. Chrome ви препорачува да ја промените лозинката веднаш.</translation>
 <translation id="6410264514553301377">Внесете ги датумот на истекување и CVC за <ph name="CREDIT_CARD" /></translation>
 <translation id="6415778972515849510">Chromium може да ви помогне да ја заштитите сметката на Google и да ја промените лозинката.</translation>
+<translation id="6423385022588644828">Отсега, потврдувајте ги картичките побрзо со Touch ID</translation>
 <translation id="6427730057873428458">Превиткување како брошура</translation>
 <translation id="6433490469411711332">Уредете ги информациите за контакт</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> одби да се поврзе.</translation>
@@ -1199,12 +1213,14 @@
 <translation id="6786747875388722282">Наставки</translation>
 <translation id="6790428901817661496">Репродуцирај</translation>
 <translation id="679355240208270552">Игнорирано бидејќи правилото не овозможува стандардно пребарување.</translation>
+<translation id="6794951432696553238">Отсега, потврдувајте ги картичките побрзо со Windows Hello</translation>
 <translation id="681021252041861472">Задолжително поле</translation>
 <translation id="6810899417690483278">Приспособен ID</translation>
 <translation id="6825578344716086703">Се обидовте да контактирате со <ph name="DOMAIN" />, но серверот прикажа сертификат потпишан со слаб алгоритам за потпис (како што е SHA-1). Тоа значи дека акредитивите за безбедност што ги прикажа серверот можеби се фалсификувани и дека можеби тоа не е серверот што го очекувавте (можеби комуницирате со напаѓач).</translation>
 <translation id="6826370046007623921">Заштита од загуба на податоци</translation>
 <translation id="6831043979455480757">Преведи</translation>
 <translation id="6839929833149231406">Област</translation>
+<translation id="6846340164947227603">Користете број на виртуелна картичка…</translation>
 <translation id="6852204201400771460">Дали да се вчита апликацијата повторно?</translation>
 <translation id="6865412394715372076">Картичкава не може да се потврди во моментов</translation>
 <translation id="6868206169573555318">Рестартирај за да се ажурира</translation>
@@ -1233,6 +1249,7 @@
 <translation id="6989763994942163495">Напредни поставки...</translation>
 <translation id="6993898126790112050">6x9 (плик)</translation>
 <translation id="6996312675313362352">Секогаш преведувај <ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">Користете Windows Hello за побрзо потврдување на картичките</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Овие трошоци може да бидат еднократни или повторливи и може нема да бидат очигледни.</translation>
 <translation id="7029809446516969842">Лозинки</translation>
@@ -1243,6 +1260,7 @@
 <translation id="7064851114919012435">Информации за контакт</translation>
 <translation id="7075452647191940183">Барањето е предолго</translation>
 <translation id="7079718277001814089">Сајтов содржи злонамерен софтвер</translation>
+<translation id="7081308185095828845">Функцијава не е достапна на вашиот уред</translation>
 <translation id="7087282848513945231">Округ</translation>
 <translation id="7090678807593890770">Пребарајте на Google за <ph name="LINK" /></translation>
 <translation id="7108338896283013870">Сокриј</translation>
@@ -1296,9 +1314,11 @@
 <translation id="733923710415886693">Сертификатот на серверот не е откриен преку Транспарентност на сертификати.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">Е поврзан:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> ја овозможи „Заштитата на компаниски корисник на Chrome“ во вашиот прелистувач. „Заштитата на компаниски корисник на Chrome“ има пристап до дел од вашите податоци.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Командна линија</translation>
 <translation id="7372973238305370288">резултат од пребарувањето</translation>
+<translation id="7374733840632556089">Грешкава се случува поради сертификат што вие или некој друг сте го инсталирале на уредот. Познато е дека сертификатов се користи за надзор и пресретнување мрежи и Chrome нема доверба во него. Иако постојат и легитимни случаи за надзор, како на пр., во училишна или компаниска мрежа, Chrome сака да се увери дека знаете дека постои надзор, дури и ако не може да го сопрете. Надзорот може да се случи во кој било прелистувач или апликација што пристапува на интернет.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Контроли за аудиовизуелни медиуми</translation>
 <translation id="7378627244592794276">Не</translation>
@@ -1327,6 +1347,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />да дознаете повеќе<ph name="END_LINK" /> за овој проблем.</translation>
 <translation id="7455133967321480974">Користи глобален стандард (Блокирај)</translation>
 <translation id="7460618730930299168">Времето на прикажување е различно од она што го одбравте. Дали сакате да продолжите?</translation>
+<translation id="7464821087936825778">Се излегува од режимот на пребарување</translation>
 <translation id="7473891865547856676">Не, фала</translation>
 <translation id="7481312909269577407">Напред</translation>
 <translation id="7485870689360869515">Не се пронајдени податоци.</translation>
@@ -1548,6 +1569,7 @@
 <translation id="8559762987265718583">Не може да се воспостави приватна врска до <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> бидејќи датумот и времето на вашиот уред (<ph name="DATE_AND_TIME" />) се погрешни.</translation>
 <translation id="8564985650692024650">Chromium препорачува ресетирање на лозинката за <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> ако повторно сте ја употребиле на други сајтови.</translation>
 <translation id="8571890674111243710">Страницата се преведува на <ph name="LANGUAGE" />…</translation>
+<translation id="8574899947864779331">Користете Touch ID за побрзо потврдување на картичките</translation>
 <translation id="858637041960032120">Додај телефонски број</translation>
 <translation id="860043288473659153">Име на сопственикот на картичката</translation>
 <translation id="8616822740383114808">Поставкава е наметната од „<ph name="ENFORCING_SETTING" />“ во „<ph name="SETTINGS_PAGE" />“</translation>
diff --git a/components/strings/components_strings_mn.xtb b/components/strings/components_strings_mn.xtb
index d0c81c2..922c69a 100644
--- a/components/strings/components_strings_mn.xtb
+++ b/components/strings/components_strings_mn.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Хуудсыг дараа ачаалах</translation>
 <translation id="1015730422737071372">Дэлгэрэнгүй мэдээлэл өгөх</translation>
 <translation id="1021110881106174305">Зөвшөөрсөн карт</translation>
+<translation id="1021753677514347426">Та эсвэл өөр хэн нэгэн таны төхөөрөмж дээр суулгасан сертификатын улмаас ийм асуудал гардаг. Сертификатыг сүлжээнд хяналт хийх болон дундаас нь өгөгдөл цуглуулахад ашигладаг гэж мэдэгдсэн бөгөөд Chromium түүнд итгэхгүй байна. Сургууль эсвэл компанийн сүлжээнд хяналт хийх зэрэг хууль ёсны зарим тохиолдол байдаг бөгөөд Chromium нь та хяналтыг зогсоож чадахгүй байсан ч хяналт хийгдэж байгаа тухай таныг мэдэж байгаа эсэхийг шалгах хүсэлтэй байна. Вэбэд ханддаг аливаа хөтөч эсвэл аппликэйшн дээр хяналт хийж болзошгүй.</translation>
 <translation id="1032854598605920125">Цагийн зүүний дагуу эргүүлэх</translation>
 <translation id="1036348656032585052">Унтраа</translation>
 <translation id="1038842779957582377">үл мэдэгдэх нэр</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575"><ph name="CRASH_TIME" />-д гэмтэл бүртгэсэн байна (хараахан байршуулаагүй, эсвэл цуцлаагүй)</translation>
 <translation id="1270502636509132238">Авах төрөл</translation>
 <translation id="1285320974508926690">Энэ сайтыг хэзээ ч бүү хөрвүүл</translation>
+<translation id="1285400217480592994">Таны Chrome-д татсан эсвэл байршуулсан файлуудыг скан хийх.</translation>
 <translation id="1292701964462482250">"Таны компьютер дээрх програм хангамж Chrome-г вэбэд аюулгүй холбогдохыг зогсоож байна" (зөвхөн Windows компьютерт боломжтой)</translation>
 <translation id="1294154142200295408">Тушаалын мөрийн хувилбар</translation>
 <translation id="129553762522093515">Саяхан хаагдсан</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Утасны дугаар</translation>
 <translation id="2277103315734023688">Урагшлуулах</translation>
 <translation id="2283340219607151381">Хаягийг хадгалах болон бөглөх</translation>
+<translation id="2288422996159078444">Таны бичдэг дурын зүйл, таны үздэг дурын хуудас эсвэл вэб дээрх бусад дурын үйл ажиллагааг хянан үзэж байна. Сайтуудын контентыг танд мэдэгдэлгүйгээр өөрчилж болзошгүй.</translation>
 <translation id="2289385804009217824">Тайрах</translation>
 <translation id="2292556288342944218">Таны интернэт холболтыг блоклосон байна</translation>
 <translation id="2297722699537546652">B5 (Дугтуй)</translation>
@@ -436,6 +439,7 @@
 <translation id="2989742184762224133">Дээд буланд хоёр удаа үдэх</translation>
 <translation id="2991174974383378012">Вэбсайтад хуваалцаж байна</translation>
 <translation id="2991571918955627853"><ph name="SITE" /> нь HSTS ашигладаг тул та одоогоор тус вэбсайтад зочлох боломжгүй байна. Сүлжээний алдаа, халдлага ихэвчлэн түр зуурынх байдаг тул энэ хуудас удахгүй хэвийн ажиллана.</translation>
+<translation id="2996674880327704673">Google-н зөвлөмж</translation>
 <translation id="3005723025932146533">Хадгалагдсан хуулбарыг харуулах</translation>
 <translation id="3008447029300691911"><ph name="CREDIT_CARD" />-н карт баталгаажуулалтын кодыг оруулна уу. Баталгаажуулсны дараагаар таны картын дэлгэрэнгүйг энэ сайтад хуваалцах болно.</translation>
 <translation id="3010559122411665027">Оруулалтын жагсаалт "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -448,6 +452,7 @@
 <translation id="3060227939791841287">C9 (Дугтуй)</translation>
 <translation id="3061707000357573562">Patch үйлчилгээ</translation>
 <translation id="3064966200440839136">Гадаад апп-р төлбөр хийхийн тулд нууцлалын горимоос гарах гэж байна. Үргэлжлүүлэх үү?</translation>
+<translation id="3086579638707268289">Вэб дээрх таны үйл ажиллагааг хянаж байна</translation>
 <translation id="3095940652251934233">Мэдэгдэл</translation>
 <translation id="3096100844101284527">Авах хаяг нэмэх</translation>
 <translation id="3105172416063519923">Хөрөнгийн ID:</translation>
@@ -501,6 +506,7 @@
 <translation id="3369192424181595722">Цагийн тохиргооны алдаа</translation>
 <translation id="337363190475750230">Хадгалагдаагүй</translation>
 <translation id="3377188786107721145">Тохиргооны задаргааны алдаа</translation>
+<translation id="3377736046129930310">Картуудыг илүү хурдан баталгаажуулахын тулд дэлгэцийн түгжээг ашиглах</translation>
 <translation id="3380365263193509176">Үл мэдэгдэх алдаа</translation>
 <translation id="3380864720620200369">Хэрэглэгчийн ID:</translation>
 <translation id="3387261909427947069">Төлбөрийн хэрэгсэл</translation>
@@ -666,6 +672,7 @@
 <translation id="4194250254487269611">Таны картыг яг одоо хадгалах боломжгүй байна</translation>
 <translation id="4196861286325780578">&amp; Зөөвөрлөх үйлдлийг дахин хийх</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Галт хана болон вирусын эсрэг оновчилгоог шалгаж байна<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">нэвтрэх дэлгэцийн профайл</translation>
 <translation id="4215751373031079683">7x9 (Дугтуй)</translation>
 <translation id="4220128509585149162">Эвдрэл</translation>
 <translation id="422022731706691852">Таны нүүр хуудсыг өөрчлөх эсвэл таны зочилдог сайтад нэмэлт сурталчилгаа гаргах зэрэг хайлтын горимыг алдагдуулж болзошгүй програм танаар суулгуулах зорилготой халдагчид <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" />-д байна. <ph name="BEGIN_LEARN_MORE_LINK" />Дэлгэрэнгүй үзэх<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -748,6 +755,7 @@
 <translation id="4515275063822566619">Карт, хаягийг Chrome болон Google Бүртгэлээсээ (<ph name="ACCOUNT_EMAIL" />) харах боломжтой. Та тэдгээрийг <ph name="BEGIN_LINK" />Тохиргоо<ph name="END_LINK" /> хэсэгт хянах боломжтой.</translation>
 <translation id="4517607026994743406">Comm-10 (Дугтуй)</translation>
 <translation id="4522570452068850558">дэлгэрэнгүй мэдээлэл</translation>
+<translation id="4524138615196389145">Одооноос WebAuthn ашиглан картуудаа илүү хурдан баталгаажуулаарай</translation>
 <translation id="4524805452350978254">Картыг удирдах</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Гэрэл</translation>
@@ -859,6 +867,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">Европ-Edp</translation>
 <translation id="5115563688576182185">(64-бит)</translation>
+<translation id="5121469660360593280">Chrome байгууллагын хэрэглэгчийн хамгаалалтын дарцагласан аюулгүй байдлын үйлдлийн тухай өгөгдлийг администратортайгаа хуваалцана уу. Энэ нь таны зочилдог хуудаснуудын URL, файлын нэр эсвэл мета өгөгдөл, төхөөрөмждөө болон Chrome-д нэвтрэхдээ таны ашигладаг хэрэглэгчийн нэрийг агуулж болзошгүй.</translation>
 <translation id="5125394840236832993">B-Нэмэх</translation>
 <translation id="5126510351761255129">Картаа баталгаажуулах</translation>
 <translation id="5135404736266831032">Хаягийг удирдах...</translation>
@@ -870,6 +879,7 @@
 <translation id="5159010409087891077">Хуудсыг шинэ Нууцлалтай цонхонд нээх (⇧⌘N)</translation>
 <translation id="516920405563544094"><ph name="CREDIT_CARD" />-н карт баталгаажуулалтын кодыг оруулна уу. Таныг баталгаажуулсны дараа таны Google бүртгэлийн картын дэлгэрэнгүйг энэ сайтад хуваалцах болно.</translation>
 <translation id="5169827969064885044">Та байгууллагынхаа бүртгэлд хандах эрх эсвэл нууц үгээ бусдад алдаж болзошгүй. Chrome-с таныг нууц үгээ өөрчлөхийг зөвлөж байна.</translation>
+<translation id="5170017743895942767">Chrome байгууллагын хэрэглэгчийн хамгаалалт</translation>
 <translation id="5171045022955879922">Хайх эсвэл холбоосыг бичиж оруул</translation>
 <translation id="5171689220826475070">Фанфолд-Европ</translation>
 <translation id="5172758083709347301">Машин</translation>
@@ -990,6 +1000,7 @@
 <translation id="5730040223043577876">Хэрэв та нууц үгээ бусад сайтад дахин ашигласан бол Chrome-с үүнийг шинэчлэхийг зөвлөж байна.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Google Бүртгэлдээ карт хадгалах}other{Google Бүртгэлдээ карт хадгалах}}</translation>
 <translation id="5763042198335101085">Зөв имэйл хаяг оруулна уу</translation>
+<translation id="5763703224595565476">Таны администратор таны хөтөч дээр Chrome байгууллагын хэрэглэгчийн хамгаалалтыг идэвхжүүлсэн байна. Chrome байгууллагын хэрэглэгчийн хамгаалалт нь таны зарим өгөгдөлд хандах эрхтэй.</translation>
 <translation id="5765072501007116331">Хүргэлтийн арга болон шаардлагыг харахын тулд хаяг сонгоно уу</translation>
 <translation id="5778550464785688721">MIDI төхөөрөмжийн бүрэн хяналт</translation>
 <translation id="5781136890105823427">Туршилтыг идэвхжүүлсэн</translation>
@@ -1069,6 +1080,7 @@
 <translation id="6094273045989040137">Тэмдэглэгээ хийх</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">Таны Google Бүртгэл <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />-д хайлтын түүхийн өөр хэлбэртэй байж болзошгүй</translation>
+<translation id="6120179357481664955">UPI ID-гаа санаж байна уу?</translation>
 <translation id="6132597952260690497">Суулгасан өргөтгөлүүд болон залгаасуудын талаарх мэдээлэл</translation>
 <translation id="6146055958333702838">Ашиглаж байгаа кабелаа шалгасны дараагаар рутер, модем эсвэл бусад сүлжээний төхөөрөмжөө дахин ачааллана уу.</translation>
 <translation id="614940544461990577">Оролдож үзэх:</translation>
@@ -1083,6 +1095,7 @@
 <translation id="6221345481584921695"><ph name="SITE" />-д <ph name="BEGIN_LINK" />вирус<ph name="END_LINK" /> байгааг Google-ийн Аюулгүй Хайлт олж ирлрүүллээ. Ихэвчлэн аюулгүй байдаг вэб сайтууд заримдаа вирусд өртөх тохиолдол байдаг бөгөөд энэхүү зар сурталчилгааны агуулга бүхий мэдээлэлүүд нь вирус тараагчаар танигдсан <ph name="SUBRESOURCE_HOST" />-аас ирдэг.</translation>
 <translation id="6234122620015464377">Документ бүрийн дараа тайрах</translation>
 <translation id="6240447795304464094">Google Pay-н лого</translation>
+<translation id="6241121617266208201">Зөвлөмжийг нуух</translation>
 <translation id="6251924700383757765">Аюулгүй байдлын бодлого</translation>
 <translation id="6254436959401408446">Энэ хуудсыг нээхэд санах ойн багтаамж хүрэлцэхгүй байна</translation>
 <translation id="625755898061068298">Та энэ сайтын аюулгүй байдлын сануулгыг идэвхгүй болгосон байна.</translation>
@@ -1129,6 +1142,7 @@
 <translation id="6409754798200046165">Та дөнгөж сая сэжигтэй сайтад нууц үгээ орууллаа. Нууц үгээ одоо өөрчлөхийг Chrome зөвлөж байна.</translation>
 <translation id="6410264514553301377"><ph name="CREDIT_CARD" />-н дуусах огноо, карт баталгаажуулалтын кодыг оруулна уу</translation>
 <translation id="6415778972515849510">Chromium танд Google Бүртгэлээ хамгаалах болон нууц үгээ солиход туслах боломжтой.</translation>
+<translation id="6423385022588644828">Одооноос Touch ID ашиглан картуудаа илүү хурдан баталгаажуулаарай</translation>
 <translation id="6427730057873428458">Дээд доод хэсгийг нь дотогш нугалж эвхэх брошюрын нугалаа</translation>
 <translation id="6433490469411711332">Харилцагчийн мэдээллийг засах</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> нь холбогдохоос татгалзлаа.</translation>
@@ -1199,12 +1213,14 @@
 <translation id="6786747875388722282">Өргөтгөлүүд</translation>
 <translation id="6790428901817661496">Тоглуулах</translation>
 <translation id="679355240208270552">Өгөгдмөл хайлтыг удирдамжаар идэвхжүүлээгүй тул хэрэгсэхгүй орхисон.</translation>
+<translation id="6794951432696553238">Одооноос Windows Hello ашиглан картуудаа илүү хурдан баталгаажуулаарай</translation>
 <translation id="681021252041861472">Шаардлагатай талбар</translation>
 <translation id="6810899417690483278">Тохируулах ID</translation>
 <translation id="6825578344716086703">Та <ph name="DOMAIN" />-д хандахыг хүссэн ч уг сервер нь алгоритмын сул кодыг ашигласан сертификаттай байна. Тухайн сервер аюулгүй байдлын талаар мэдээллэсэн мэдээлэл нь хуурамч байж болох бөгөөд энэхүү сервер нь таны хүссэн (та халдагчтай харилцаж байж болзошгүй) сервер биш байж болно.</translation>
 <translation id="6826370046007623921">Дата алдагдахаас сэргийлэх</translation>
 <translation id="6831043979455480757">Хөрвүүлэх</translation>
 <translation id="6839929833149231406">Хэсэг</translation>
+<translation id="6846340164947227603">Виртуал картын дугаар ашиглах...</translation>
 <translation id="6852204201400771460">Аппыг дахин ачаалaх уу?</translation>
 <translation id="6865412394715372076">Энэ картыг одоогоор баталгаажуулах боломжгүй байна</translation>
 <translation id="6868206169573555318">Шинэчлэхийн тулд дахин эхлүүлэх</translation>
@@ -1233,6 +1249,7 @@
 <translation id="6989763994942163495">Нарийвчилсан тохиргоог харуулах ...</translation>
 <translation id="6993898126790112050">6x9 (Дугтуй)</translation>
 <translation id="6996312675313362352"><ph name="ORIGINAL_LANGUAGE" />-г үргэлж орчуулах</translation>
+<translation id="7004583254764674281">Картуудыг илүү хурдан баталгаажуулахын тулд Windows Hello-г ашиглах</translation>
 <translation id="7012363358306927923">Хятадын UnionPay</translation>
 <translation id="7016992613359344582">Эдгээр тодорхойгүй төлбөрийг танд нэг удаа, эсвэл хэд хэдэн удаа ногдуулж болзошгүй.</translation>
 <translation id="7029809446516969842">Нууц үг</translation>
@@ -1243,6 +1260,7 @@
 <translation id="7064851114919012435">Харилцагчийн мэдээлэл</translation>
 <translation id="7075452647191940183">Хүсэлт хэт том байна</translation>
 <translation id="7079718277001814089">Энэ сайт хортой код агуулж байна</translation>
+<translation id="7081308185095828845">Таны төхөөрөмж дээр энэ онцлог боломжгүй байна</translation>
 <translation id="7087282848513945231">Муж</translation>
 <translation id="7090678807593890770"><ph name="LINK" />-д Google-г хайх</translation>
 <translation id="7108338896283013870">Нуух</translation>
@@ -1296,9 +1314,11 @@
 <translation id="733923710415886693">Серверийн сертификатыг Сертификатын ил тод байдлаар ил тод болгоогүй.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">Холбоотой:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> нь таны хөтөч дээр Chrome байгууллагын хэрэглэгчийн хамгаалалтыг идэвхжүүлсэн байна. Chrome байгууллагын хэрэглэгчийн хамгаалалт нь таны зарим өгөгдөлд хандах эрхтэй.</translation>
 <translation id="7349430561505560861">A4-Нэмэлт</translation>
 <translation id="7353601530677266744">Тушаалын мөр</translation>
 <translation id="7372973238305370288">хайлтын үр дүн</translation>
+<translation id="7374733840632556089">Та эсвэл өөр хэн нэгэн таны төхөөрөмж дээр суулгасан сертификатын улмаас ийм асуудал гардаг. Сертификатыг сүлжээнд хяналт хийх болон дундаас нь өгөгдөл цуглуулахад ашигладаг гэж мэдэгдсэн бөгөөд Chrome түүнд итгэхгүй байна. Сургууль эсвэл компанийн сүлжээнд хяналт хийх зэрэг хууль ёсны зарим тохиолдол байдаг бөгөөд Chrome нь та хяналтыг зогсоож чадахгүй байсан ч хяналт хийгдэж байгаа тухай таныг мэдэж байгаа эсэхийг шалгах хүсэлтэй байна. Вэбэд ханддаг аливаа хөтөч эсвэл аппликэйшн дээр хяналт хийж болзошгүй.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Медиа хяналт</translation>
 <translation id="7378627244592794276">Үгүй</translation>
@@ -1327,6 +1347,7 @@
 <translation id="7451311239929941790">Уг асуудлын талаар <ph name="BEGIN_LINK" />Дэлгэрэнгүй үзэж байна<ph name="END_LINK" />.</translation>
 <translation id="7455133967321480974">Олон нийтээр хэрэглэдэг сонголтыг сонго (Блок)</translation>
 <translation id="7460618730930299168">Дэлгэрэнгүй нь таны сонгосноос өөр байна. Үргэлжлүүлэх үү?</translation>
+<translation id="7464821087936825778">Хайлтын горимоос гарч байна</translation>
 <translation id="7473891865547856676">Үгүй, баярлалаа</translation>
 <translation id="7481312909269577407">Forward</translation>
 <translation id="7485870689360869515">Мэдээлэл байхгүй байна.</translation>
@@ -1548,6 +1569,7 @@
 <translation id="8559762987265718583"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> руу таны төхөөрөмжийн он сар өдөр, цаг <ph name="DATE_AND_TIME" /> ) буруу байгаа учраас хувийн холболт үүсгэж болохгүй байна.</translation>
 <translation id="8564985650692024650">Хэрэв та <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" />-н нууц үгийг бусад сайтад дахин ашигласан бол Chromium-с үүнийг шинэчлэхийг зөвлөж байна.</translation>
 <translation id="8571890674111243710"><ph name="LANGUAGE" /> хэл рүү хуудсыг орчуулж байна...</translation>
+<translation id="8574899947864779331">Картуудыг илүү хурдан баталгаажуулахын тулд Touch ID-г ашиглах</translation>
 <translation id="858637041960032120">Утасны дугаар нэмэх</translation>
 <translation id="860043288473659153">Карт эзэмшигчийн нэр</translation>
 <translation id="8616822740383114808">Энэ тохиргоог "<ph name="SETTINGS_PAGE" />" дээр "<ph name="ENFORCING_SETTING" />"-с хэрэгжүүлсэн байна</translation>
diff --git a/components/strings/components_strings_ms.xtb b/components/strings/components_strings_ms.xtb
index e75552b..780cc923 100644
--- a/components/strings/components_strings_ms.xtb
+++ b/components/strings/components_strings_ms.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Muatkan halaman kemudian</translation>
 <translation id="1015730422737071372">Berikan butiran tambahan</translation>
 <translation id="1021110881106174305">Kad diterima</translation>
+<translation id="1021753677514347426">Masalah ini berlaku disebabkan oleh sijil yang anda atau orang lain pasang pada peranti anda. Sijil itu diketahui digunakan untuk memantau dan memintas rangkaian, dan tidak dipercayai oleh Chromium. Walaupun beberapa penggunaan untuk pemantauan wujud, seperti pada rangkaian institusi pengajian atau syarikat, Chromium ingin memastikan anda menyedari pemantauan berlaku, walaupun anda tidak dapat menghentikan pemantauan itu. Pemantauan boleh berlaku pada mana-mana penyemak imbas atau aplikasi yang mengakses web.</translation>
 <translation id="1032854598605920125">Putar ikut arah jam</translation>
 <translation id="1036348656032585052">Matikan</translation>
 <translation id="1038842779957582377">nama tidak diketahui</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Laporan ranap sistem dirakam pada <ph name="CRASH_TIME" /> (belum dimuat naik atau diabaikan)</translation>
 <translation id="1270502636509132238">Kaedah Pengambilan</translation>
 <translation id="1285320974508926690">Jangan sekali-kali menterjemahkan tapak ini</translation>
+<translation id="1285400217480592994">Imbas kandungan fail yang anda muat turun atau muat naik dalam Chrome.</translation>
 <translation id="1292701964462482250">"Perisian pada komputer anda menghalang Chrome daripada menyambung ke web dengan selamat" (komputer Windows sahaja)</translation>
 <translation id="1294154142200295408">Variasi baris perintah</translation>
 <translation id="129553762522093515">Ditutup baru-baru ini</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Nombor telefon</translation>
 <translation id="2277103315734023688">Cari Ke Hadapan</translation>
 <translation id="2283340219607151381">Simpan dan lengkapkan alamat</translation>
+<translation id="2288422996159078444">Apa sahaja yang anda taip, sebarang halaman yang anda lihat atau sebarang aktiviti lain menerusi web sedang diperhatikan. Kandungan pada tapak boleh diubah tanpa pengetahuan anda.</translation>
 <translation id="2289385804009217824">Pangkas</translation>
 <translation id="2292556288342944218">Akses Internet anda disekat</translation>
 <translation id="2297722699537546652">B5 (Sampul Surat)</translation>
@@ -436,6 +439,7 @@
 <translation id="2989742184762224133">Dua kokot atas</translation>
 <translation id="2991174974383378012">Berkongsi dengan Tapak Web</translation>
 <translation id="2991571918955627853">Anda tidak boleh melawati <ph name="SITE" /> sekarang kerana tapak web ini menggunakan HSTS. Ralat dan serangan rangkaian biasanya sementara. Oleh sebab itu, halaman ini mungkin akan berfungsi semula kemudian.</translation>
+<translation id="2996674880327704673">Cadangan oleh Google</translation>
 <translation id="3005723025932146533">Paparkan salinan disimpan</translation>
 <translation id="3008447029300691911">Masukkan CVC untuk <ph name="CREDIT_CARD" />. Setelah anda mengesahkan, butiran kad anda akan dikongsi dengan tapak ini.</translation>
 <translation id="3010559122411665027">Masukan senarai "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -448,6 +452,7 @@
 <translation id="3060227939791841287">C9 (Sampul Surat)</translation>
 <translation id="3061707000357573562">Perkhidmatan Tampung</translation>
 <translation id="3064966200440839136">Meninggalkan mod inkognito untuk membayar melalui aplikasi luar. Teruskan?</translation>
+<translation id="3086579638707268289">Aktiviti anda di web sedang dipantau</translation>
 <translation id="3095940652251934233">Kenyataan</translation>
 <translation id="3096100844101284527">Tambahkan Alamat Pengambilan</translation>
 <translation id="3105172416063519923">ID Aset:</translation>
@@ -500,6 +505,7 @@
 <translation id="3369192424181595722">Ralat Jam</translation>
 <translation id="337363190475750230">Nyahperuntukkan</translation>
 <translation id="3377188786107721145">Ralat menghuraikan dasar</translation>
+<translation id="3377736046129930310">Gunakan kunci skrin untuk mengesahkan kad dengan lebih cepat</translation>
 <translation id="3380365263193509176">Ralat tidak diketahui</translation>
 <translation id="3380864720620200369">ID Pelanggan:</translation>
 <translation id="3387261909427947069">Kaedah Pembayaran</translation>
@@ -666,6 +672,7 @@
 <translation id="4194250254487269611">Kad anda tidak dapat disimpan sekarang</translation>
 <translation id="4196861286325780578">&amp;Buat semula pindahkan</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Menyemak konfigurasi tembok api dan antivirus<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">profil skrin log masuk</translation>
 <translation id="4215751373031079683">7x9 (Sampul Surat)</translation>
 <translation id="4220128509585149162">Nahas</translation>
 <translation id="422022731706691852">Penyerang di <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> mungkin cuba memperdaya anda agar memasang atur cara yang membahayakan pengalaman penyemakan imbas anda (contohnya, dengan menukar halaman utama anda atau menunjukkan iklan tambahan pada tapak yang anda lawati). <ph name="BEGIN_LEARN_MORE_LINK" />Ketahui lebih lanjut<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -748,6 +755,7 @@
 <translation id="4515275063822566619">Kad dan alamat adalah daripada Chrome dan Akaun Google anda (<ph name="ACCOUNT_EMAIL" />). Anda boleh mengurus kad dan alamat ini dalam <ph name="BEGIN_LINK" />Tetapan<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Comm-10 (Sampul Surat)</translation>
 <translation id="4522570452068850558">Butiran</translation>
+<translation id="4524138615196389145">Sahkan kad anda dengan lebih cepat dengan menggunakan WebAuthn mulai sekarang</translation>
 <translation id="4524805452350978254">Urus kad</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -859,6 +867,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">Edp-Eropah</translation>
 <translation id="5115563688576182185">(64-bit)</translation>
+<translation id="5121469660360593280">Kongsi data tentang acara keselamatan yang telah dibenderakan oleh Perlindungan Pengguna Chrome Enterprise dengan Pentadbir anda. Data ini boleh termasuk URL halaman yang anda lawati, nama fail atau metadata dan nama pengguna yang anda gunakan untuk mengelog masuk ke peranti serta Chrome anda.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Sahkan kad anda</translation>
 <translation id="5135404736266831032">Urus alamat...</translation>
@@ -870,6 +879,7 @@
 <translation id="5159010409087891077">Buka halaman dalam tetingkap Inkognito baharu (⇧⌘N)</translation>
 <translation id="516920405563544094">Masukkan CVC untuk <ph name="CREDIT_CARD" />. Setelah anda mengesahkan maklumat, butiran kad daripada Akaun Google anda akan dikongsi dengan tapak ini.</translation>
 <translation id="5169827969064885044">Anda boleh kehilangan akses kepada akaun organisasi anda atau mengalami kecurian identiti. Chrome mengesyorkan supaya kata laluan anda ditukar sekarang.</translation>
+<translation id="5170017743895942767">Perlindungan Pengguna Chrome Enterprise</translation>
 <translation id="5171045022955879922">Buat carian atau taipkan URL</translation>
 <translation id="5171689220826475070">Fanfold-Eropah</translation>
 <translation id="5172758083709347301">Mesin</translation>
@@ -990,6 +1000,7 @@
 <translation id="5730040223043577876">Chrome mengesyorkan penetapan semula kata laluan jika anda menggunakan semula kata laluan itu di tapak lain.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Simpan kad ke Akaun Google anda}other{Simpan kad ke Akaun Google anda}}</translation>
 <translation id="5763042198335101085">Masukkan alamat e-mel yang sah</translation>
+<translation id="5763703224595565476">Pentadbir telah mendayakan Perlindungan Pengguna Chrome Enterprise pada penyemak imbas anda. Perlindungan Pengguna Chrome Enterprise mempunyai akses kepada sesetengah data anda.</translation>
 <translation id="5765072501007116331">Pilih alamat untuk melihat kaedah dan syarat penghantaran</translation>
 <translation id="5778550464785688721">Kawalan penuh peranti MIDI</translation>
 <translation id="5781136890105823427">Percubaan didayakan</translation>
@@ -1069,6 +1080,7 @@
 <translation id="6094273045989040137">Anotasi</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">Akaun Google anda mungkin mempunyai bentuk sejarah penyemakan imbas yang lain di <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
+<translation id="6120179357481664955">Ingat ID UPI anda?</translation>
 <translation id="6132597952260690497">Maklumat tentang sambungan dan pemalam yang dipasang</translation>
 <translation id="6146055958333702838">Periksa mana-mana kabel dan but semula mana-mana penghala, modem atau peranti
     rangkaian lain yang mungkin anda gunakan.</translation>
@@ -1084,6 +1096,7 @@
 <translation id="6221345481584921695">Penyemakan Selamat Google <ph name="BEGIN_LINK" />telah mengesan perisian hasad<ph name="END_LINK" /> pada <ph name="SITE" /> baru-baru ini. Tapak web yang lazimnya selamat kadangkala dijangkiti oleh perisian hasad. Kandungan berniat jahat datang dari <ph name="SUBRESOURCE_HOST" />, pengedar perisian hasad yang diketahui.</translation>
 <translation id="6234122620015464377">Pangkas selepas setiap dokumen</translation>
 <translation id="6240447795304464094">Logo Google Pay</translation>
+<translation id="6241121617266208201">Sembunyikan cadangan</translation>
 <translation id="6251924700383757765">Dasar privasi</translation>
 <translation id="6254436959401408446">Memori tidak mencukupi untuk membuka halaman ini</translation>
 <translation id="625755898061068298">Anda telah memilih untuk melumpuhkan amaran keselamatan bagi tapak ini.</translation>
@@ -1130,6 +1143,7 @@
 <translation id="6409754798200046165">Anda baru sahaja memasukkan kata laluan anda pada tapak yang menipu. Chrome mengesyorkan supaya anda menukar kata laluan sekarang.</translation>
 <translation id="6410264514553301377">Masukkan tarikh tamat tempoh dan CVC untuk <ph name="CREDIT_CARD" /></translation>
 <translation id="6415778972515849510">Chromium boleh membantu anda melindungi Akaun Google anda dan menukar kata laluan anda.</translation>
+<translation id="6423385022588644828">Sahkan kad anda dengan lebih cepat dengan menggunakan Touch ID mulai sekarang</translation>
 <translation id="6427730057873428458">Lipatan pintu</translation>
 <translation id="6433490469411711332">Edit maklumat hubungan</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> enggan menyambung.</translation>
@@ -1200,12 +1214,14 @@
 <translation id="6786747875388722282">Pelanjutan</translation>
 <translation id="6790428901817661496">Mainkan</translation>
 <translation id="679355240208270552">Diabaikan kerana carian lalai tidak didayakan oleh dasar.</translation>
+<translation id="6794951432696553238">Sahkan kad anda dengan lebih cepat dengan menggunakan Windows Hello mulai sekarang</translation>
 <translation id="681021252041861472">Medan Diperlukan</translation>
 <translation id="6810899417690483278">ID Penyesuaian</translation>
 <translation id="6825578344716086703">Anda cuba untuk mencapai <ph name="DOMAIN" />, tetapi pelayan memberikan sijil yang ditandatangani menggunakan algoritma tandatangan yang lemah (seperti SHA-1). Ini bermakna bahawa bukti kelayakan keselamatan yang diberi pelayan mungkin dipalsukan dan pelayan tersebut bukan seperti yang anda jangkakan (anda mungkin berkomunikasi dengan penyerang).</translation>
 <translation id="6826370046007623921">Pencegahan Kehilangan Data</translation>
 <translation id="6831043979455480757">Terjemah</translation>
 <translation id="6839929833149231406">Kawasan</translation>
+<translation id="6846340164947227603">Gunakan nombor kad maya...</translation>
 <translation id="6852204201400771460">Muat semula apl?</translation>
 <translation id="6865412394715372076">Kad ini tidak dapat disahkan sekarang</translation>
 <translation id="6868206169573555318">Lancarkan Semula untuk Mengemas Kini</translation>
@@ -1234,6 +1250,7 @@
 <translation id="6989763994942163495">Paparkan tetapan lanjutan...</translation>
 <translation id="6993898126790112050">6x9 (Sampul Surat)</translation>
 <translation id="6996312675313362352">Sentiasa terjemahkan <ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">Gunakan Windows Hello untuk mengesahkan kad dengan lebih cepat</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Caj ini mungkin caj sekali atau caj berulang dan mungkin tidak ketara.</translation>
 <translation id="7029809446516969842">Kata laluan</translation>
@@ -1244,6 +1261,7 @@
 <translation id="7064851114919012435">Maklumat hubungan</translation>
 <translation id="7075452647191940183">Permintaan terlalu besar</translation>
 <translation id="7079718277001814089">Tapak ini mengandungi perisian hasad</translation>
+<translation id="7081308185095828845">Ciri ini tidak tersedia pada peranti anda</translation>
 <translation id="7087282848513945231">Daerah</translation>
 <translation id="7090678807593890770">Cari <ph name="LINK" /> di Google</translation>
 <translation id="7108338896283013870">Sembunyikan</translation>
@@ -1297,9 +1315,11 @@
 <translation id="733923710415886693">Sijil pelayan tidak didedahkan melalui Ketelusan Sijil.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">Ialah ahli gabungan:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> telah mendayakan Perlindungan Pengguna Chrome Enterprise pada penyemak imbas anda. Perlindungan Pengguna Chrome Enterprise mempunyai akses kepada sesetengah data anda.</translation>
 <translation id="7349430561505560861">A4-Ekstra</translation>
 <translation id="7353601530677266744">Baris Perintah</translation>
 <translation id="7372973238305370288">hasil carian</translation>
+<translation id="7374733840632556089">Masalah ini berlaku disebabkan oleh sijil yang anda atau orang lain pasang pada peranti anda. Sijil itu diketahui digunakan untuk memantau dan memintas rangkaian, dan tidak dipercayai oleh Chrome. Walaupun beberapa penggunaan untuk pemantauan wujud, seperti pada rangkaian institusi pengajian atau syarikat, Chrome ingin memastikan anda menyedari pemantauan berlaku, walaupun anda tidak dapat menghentikan pemantauan itu. Pemantauan boleh berlaku pada mana-mana penyemak imbas atau aplikasi yang mengakses web.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Kawalan Media</translation>
 <translation id="7378627244592794276">Tidak</translation>
@@ -1328,6 +1348,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Ketahui lebih lanjut<ph name="END_LINK" /> tentang masalah ini.</translation>
 <translation id="7455133967321480974">Gunakan lalai global (Sekat)</translation>
 <translation id="7460618730930299168">Tayangan ini berbeza daripada pilihan anda. Teruskan?</translation>
+<translation id="7464821087936825778">Keluar daripada mod carian</translation>
 <translation id="7473891865547856676">Tidak, Terima Kasih</translation>
 <translation id="7481312909269577407">Majukan</translation>
 <translation id="7485870689360869515">Tiada data dijumpai.</translation>
@@ -1549,6 +1570,7 @@
 <translation id="8559762987265718583">Sambungan peribadi ke <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> tidak boleh diwujudkan kerana tarikh dan masa peranti anda (<ph name="DATE_AND_TIME" />) tidak betul.</translation>
 <translation id="8564985650692024650">Chromium mengesyorkan penetapan semula kata laluan <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> jika anda menggunakan semula kata laluan itu di tapak lain.</translation>
 <translation id="8571890674111243710">Menterjemah halaman ke <ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">Gunakan Touch ID untuk mengesahkan kad dengan lebih cepat</translation>
 <translation id="858637041960032120">Tambah no. tel.
 </translation>
 <translation id="860043288473659153">Nama pemegang kad</translation>
diff --git a/components/strings/components_strings_my.xtb b/components/strings/components_strings_my.xtb
index 293cfdd..0ddb939 100644
--- a/components/strings/components_strings_my.xtb
+++ b/components/strings/components_strings_my.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">စာမျက်နှာကို နောက်မှဖွင့်ရန်</translation>
 <translation id="1015730422737071372">နောက်ထပ်အသေးစိတ်အချက်အလက်များ ပေးပါ</translation>
 <translation id="1021110881106174305">လက်ခံသည့် ကဒ်များ</translation>
+<translation id="1021753677514347426">သင် သို့မဟုတ် တစ်စုံတစ်ယောက်က သင့်စက်ပေါ်တွင် ထည့်သွင်းထားသည့် အသိအမှတ်ပြုလက်မှတ်တစ်ခုကြောင့် ဤပြဿနာ ဖြစ်ပေါ်ရခြင်းဖြစ်သည်။ ကွန်ရက်များကို စောင့်ကြည့်ရန်နှင့် ကြားဖြတ်ရန်အတွက် အသိအမှတ်ပြုလက်မှတ်ကို အသုံးပြုကြောင်း သိရှိထားပြီး Chromium က ယုံကြည်စိတ်ချခြင်း မရှိပါ။ ကျောင်း သို့မဟုတ် ကုမ္ပဏီကွန်ရက်များတွင် တရားဝင်စောင့်ကြည့်သည့် ကိစ္စရပ်အချို့ရှိသော်လည်း သင်မရပ်နိုင်သည့်သကာလ ထိုသို့စောင့်ကြည့်နေကြောင်းကို Chromium က သင့်အား သတိထားစေလိုပါသည်။ ဝဘ်ကို အသုံးပြုသည့် ဘရောင်ဇာ သို့မဟုတ် အပလီကေးရှင်းတိုင်းတွင် စောင့်ကြည့်ခြင်းများ ရှိနိုင်သည်။</translation>
 <translation id="1032854598605920125">လက်ယာရစ် လှည့်ရန်</translation>
 <translation id="1036348656032585052">ပိတ်ရန်</translation>
 <translation id="1038842779957582377">မသိရ အမည်</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">ပျက်စီးမှုအစီရင်ခံချက်ကို <ph name="CRASH_TIME" /> တွင် ဖမ်းယူခဲ့သည် (အပ်လုဒ်မလုပ်ရသေးပါ သို့မဟုတ် လျစ်လျူရှုထားပါသည်)</translation>
 <translation id="1270502636509132238">လာယူနည်း</translation>
 <translation id="1285320974508926690">ဒီဆိုက်ကို ဘယ်တော့မှ ဘာသာမပြန်ပါနှင့်</translation>
+<translation id="1285400217480592994">Chrome တွင် သင်ဒေါင်းလုဒ် သို့မဟုတ် အပ်လုဒ်လုပ်သော ဖိုင်များ၏ အကြောင်းအရာများကို စကင်ဖတ်ရန်။</translation>
 <translation id="1292701964462482250">"သင်၏ကွန်ပျူတာရှိ ဆော့ဖ်ဝဲလ်သည် Chrome ကို ဝဘ်သို့ လုံခြုံစွာချိတ်ဆက်မှု မပြုလုပ်နိုင်ရန် တားဆီးထားပါသည်" (Windows ကွန်ပျူတာများသာ)</translation>
 <translation id="1294154142200295408">ကွန်မန်းလိုင်းစနစ် ကွဲပြားမှုများ</translation>
 <translation id="129553762522093515">မကြာသေးခင်က ပိတ်ထားခဲ့သည်</translation>
@@ -286,6 +288,7 @@
 <translation id="2270484714375784793">ဖုန်း နံပါတ်</translation>
 <translation id="2277103315734023688">အရှေ့သို့ ရစ်ရန်</translation>
 <translation id="2283340219607151381">လိပ်စာများကို သိမ်းပြီး ဖြည့်ရန်</translation>
+<translation id="2288422996159078444">သင်ရိုက်သည့်အရာ၊ သင်ကြည့်သည့် စာမျက်နှာ သို့မဟုတ် ဝဘ်ပေါ်တွင် အခြားလုပ်ဆောင်ချက်တိုင်းကို စောင့်ကြည့်နေသည်။ ဝဘ်ဆိုက်များပေါ်ရှိ အကြောင်းအရာကို သင်မသိဘဲ ပြောင်းနိုင်သည်။</translation>
 <translation id="2289385804009217824">ဖြတ်ထုတ်ရန်</translation>
 <translation id="2292556288342944218">သင့်အင်တာနက် အသုံးပြုမှုကို ပိတ်ဆို့ထားသည်</translation>
 <translation id="2297722699537546652">B5 (စာအိတ်)</translation>
@@ -440,6 +443,7 @@
 <translation id="2989742184762224133">ထိပ်တွင် ချုပ်စက်ဖြင့် နှစ်ချက်ချုပ်ရန်</translation>
 <translation id="2991174974383378012">ဝဘ်ဆိုဒ်များနှင့် မျှဝေခြင်း</translation>
 <translation id="2991571918955627853">ဝဘ်ဆိုက်က HSTS ကို သုံးထားသောကြောင့် <ph name="SITE" /> ကို လောလောဆယ် ဖွင့်၍မရပါ။ ကွန်ရက်အမှားအယွင်းများနှင့် တိုက်ခိုက်မှုများမှာ ပုံမှန်အားဖြင့် ခဏတာသာ ဖြစ်သည့်အတွက် ဤစာမျက်နှာကို နောက်ပိုင်းတွင် ပြန်ဖွင့်၍ရနိုင်ပါသည်။</translation>
+<translation id="2996674880327704673">Google ၏ အကြံပြုချက်များ</translation>
 <translation id="3005723025932146533">သိမ်းထားသည့် မိတ္တူကိုပြပါ</translation>
 <translation id="3008447029300691911"><ph name="CREDIT_CARD" /> အတွက် CVC ကိုထည့်ပါ။ အတည်ပြုပြီးသည်နှင့် သင့်ကဒ်၏အသေးစိတ်အချက်အလက်များကို ဤဆိုက်အား မျှဝေသွားပါမည်။</translation>
 <translation id="3010559122411665027">အကြောင်းအရာ စာရင်း "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -452,6 +456,7 @@
 <translation id="3060227939791841287">C9 (စာအိတ်)</translation>
 <translation id="3061707000357573562">ပြင်ဆင်ခြင်း ဝန်ဆောင်မှု</translation>
 <translation id="3064966200440839136">ပြင်ပအပလီကေးရှင်းဖြင့် ငွေပေးချေရန် ရုပ်ဖျက်မုဒ်မှ ထွက်နေသည်။ ရှေ့ဆက် လိုပါသလား။</translation>
+<translation id="3086579638707268289">ဝဘ်ပေါ်တွင် သင့်လုပ်ဆောင်ချက်ကို စောင့်ကြည့်နေပါသည်</translation>
 <translation id="3095940652251934233">ထုတ်ပြန်ချက်</translation>
 <translation id="3096100844101284527">လာယူမည့်လိပ်စာ ထည့်ရန်</translation>
 <translation id="3105172416063519923">ပိုင်ဆိုင်မှုပြ ID-</translation>
@@ -501,6 +506,7 @@
 <translation id="3369192424181595722">နာရီ အမှား</translation>
 <translation id="337363190475750230">စီမံဆောင်ရွက်မှု မရှိတော့သော</translation>
 <translation id="3377188786107721145">မူဝါဒ ဆန်းစစ်မှု အမှား</translation>
+<translation id="3377736046129930310">ကတ်များကို ပိုမိုမြန်ဆန်စွာ အတည်ပြုရန် မျက်နှာပြင်လော့ခ်ကို အသုံးပြုပါ</translation>
 <translation id="3380365263193509176">မသိရ အမှား</translation>
 <translation id="3380864720620200369">အသုံးပြုသူ၏ID:</translation>
 <translation id="3387261909427947069">ငွေပေးချေ နည်းလမ်းများ</translation>
@@ -664,6 +670,7 @@
 <translation id="4194250254487269611">သင့်ကတ်ကို ယခု သိမ်း၍မရပါ</translation>
 <translation id="4196861286325780578">&amp;ရွေ့ရှားမှုကို ပြန်လုပ်ရန်</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />firewall နှင့်ဗိုင်းရပ်စ်တိုက်ဖျက်ရေး ပြင်ဆင်သတ်မှတ်မှုများကို စစ်ဆေးနေသည်<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">လက်မှတ်ထိုးဝင်ခြင်း မျက်နှာပြင်ပရိုဖိုင်</translation>
 <translation id="4215751373031079683">၇x၉ (စာအိတ်)</translation>
 <translation id="4220128509585149162">ပျက်စီးမှုများ</translation>
 <translation id="422022731706691852"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> ပေါ်ရှိ တိုက်ခိုက်သူများသည် သင့်အား သင်၏ ဘရောင်ဇာအသုံးပြုမှုကို အန္တရာယ်ဖြစ်စေမည့် (ဥပမာ- သင်၏ ပင်မစာမျက်နှာကို ပြောင်းလိုက်မည့် သို့မဟုတ် သင်ဝင်ကြည့်သော ဝဘ်ဆိုက်များရှိ ကြော်ငြာအပိုများကို ပြသမည့်) ပရိုဂရမ်များကို ထည့်သွင်းမိစေရန် လှည့်ဖြားနိုင်ပါသည်။ <ph name="BEGIN_LEARN_MORE_LINK" />ပိုမိုလေ့လာရန်<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -747,6 +754,7 @@
 <translation id="4515275063822566619">ကဒ်နှင့် လိပ်စာများသည် Chrome နှင့် သင်၏ Google အကောင့် (<ph name="ACCOUNT_EMAIL" />) မှဖြစ်သည်။ ၎င်းတို့ကို <ph name="BEGIN_LINK" />ဆက်တင်များ<ph name="END_LINK" /> တွင် စီမံခန့်ခွဲနိုင်သည်။</translation>
 <translation id="4517607026994743406">Comm-10 (စာအိတ်)</translation>
 <translation id="4522570452068850558">အသေးစိတ်များ</translation>
+<translation id="4524138615196389145">ယခုမှစ၍ WebAuthn ကို အသုံးပြု၍ သင့်ကတ်များကို ပိုမိုမြန်ဆန်စွာ အတည်ပြုလိုက်ပါ</translation>
 <translation id="4524805452350978254">ကတ်များကို စီမံရန်</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">ဖလက်ရှ်</translation>
@@ -858,6 +866,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64-bit)</translation>
+<translation id="5121469660360593280">'Chrome လုပ်ငန်းသုံး အသုံးပြုသူ ကာကွယ်မှု' က သင်၏ 'စီမံခန့်ခွဲသူ' အား အလံပြထားသော လုံခြုံရေးဆိုင်ရာ ဖြစ်ရပ်များအကြောင်း ဒေတာကို မျှဝေပါ။ ၎င်းတွင် သင်ဝင်ကြည့်သော စာမျက်နှာများ၏ URL များ၊ ဖိုင်အမည်များ သို့မဟုတ် မက်တာဒေတာ၊ သင့်စက်နှင့် Chrome သို့ လက်မှတ်ထိုးဝင်သည့် အသုံးပြုသူအမည်တို့ ပါဝင်နိုင်သည်။</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">သင့်ကတ်ကို အတည်ပြုပါ</translation>
 <translation id="5135404736266831032">လိပ်စာများကို စီမံရန်...</translation>
@@ -869,6 +878,7 @@
 <translation id="5159010409087891077">စာမျက်နှာကို ရုပ်ဖျက်ဝင်းဒိုးအသစ်တွင် ဖွင့်ရန် (⇧⌘N)</translation>
 <translation id="516920405563544094"><ph name="CREDIT_CARD" /> အတွက် CVC ကိုထည့်ပါ။ အတည်ပြုပြီးနောက်တွင် သင်၏ Google အကောင့်ရှိ ကဒ်အသေးစိတ် အချက်အလက်များကို ဤဆိုက်အား မျှဝေသွားပါမည်။</translation>
 <translation id="5169827969064885044">သင်သည် သင့်အဖွဲ့အစည်း၏အကောင့်ကို အသုံးပြုခွင့် ဆုံးရှုံးနိုင်သည် သို့မဟုတ် အထောက်အထား အခိုးခံနိုင်သည်။ သင့်စကားဝှက်ကို ယခုပင်ပြောင်းလဲရန် Chrome က အကြံပြုပါသည်။</translation>
+<translation id="5170017743895942767">Chrome လုပ်ငန်းသုံး အသုံးပြုသူ ကာကွယ်မှု</translation>
 <translation id="5171045022955879922">ရှာကြည့်ရန် သို့မဟုတ် URL ရိုက်ထည့်ရန်</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">စက်</translation>
@@ -989,6 +999,7 @@
 <translation id="5730040223043577876">အခြားဝဘ်ဆိုက်များတွင် သင့်စကားဝှက်ကို ပြန်သုံးထားပါက ၎င်းကို ပြင်ဆင်သတ်မှတ်ရန် Chrome က အကြံပြုပါသည်။</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{ကတ်ကို သင့် Google အကောင့်တွင် သိမ်းပါ}other{ကတ်များကို သင့် Google အကောင့်တွင် သိမ်းပါ}}</translation>
 <translation id="5763042198335101085">မှန်ကန်သော အီးမေးလ်လိပ်စာကို ထည့်ပါ</translation>
+<translation id="5763703224595565476">သင့်စီမံခန့်ခွဲသူသည် သင့်ဘရောင်ဇာပေါ်တွင် 'Chrome လုပ်ငန်းသုံး အသုံးပြုသူ ကာကွယ်မှု' ကို ဖွင့်ထားသည်။ 'Chrome လုပ်ငန်းသုံး အသုံးပြုသူ ကာကွယ်မှု' သည် သင့်ဒေတာအချို့ကို အသုံးပြုခွင့်ရှိသည်။</translation>
 <translation id="5765072501007116331">ပစ္စည်းပို့ခြင်းနည်းလမ်းများနှင့် သတ်မှတ်ချက်များကို ကြည့်ရန် လိပ်စာရွေးပါ</translation>
 <translation id="5778550464785688721">MIDI စက်ကိရိယာများ အပြည့်အဝ ထိန်းချုပ်မှု</translation>
 <translation id="5781136890105823427">စမ်းသပ်မှု ဖွင့်ထားသည်</translation>
@@ -1068,6 +1079,7 @@
 <translation id="6094273045989040137">မှတ်ချက်ပေးရန်</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">သင်၏ Google အကောင့်က ဖွင့်ကြည့်ထားသော မှတ်တမ်းသည် <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> တွင် အခြားပုံစံများဖြင့် ရှိနေနိုင်ပါသည်</translation>
+<translation id="6120179357481664955">သင့် UPI ID ကို မှတ်မိပါသလား။</translation>
 <translation id="6132597952260690497">ထည့်သွင်းထားသော နောက်ဆက်တွဲနှင့် ပလပ်အင်များအကြောင်း အချက်အလက်</translation>
 <translation id="6146055958333702838">သင်အသုံးပြုနေသည့် ရောက်တာများ၊ မိုဒမ်းများ၊ သို့မဟုတ် အခြားကွန်ယက်စက်ပစ္စည်းများနှင့် ကြိုးများကို စစ်ဆေးပါ။</translation>
 <translation id="614940544461990577">စမ်းကြည့်ပါ −</translation>
@@ -1082,6 +1094,7 @@
 <translation id="6221345481584921695">Google  လုံခြုံစွာ ရှာကြည့်မှုသည် မကြာမီတုန်းက <ph name="BEGIN_LINK" /> ပေါ်က<ph name="END_LINK" />မှာ အန္တရာယ်ဝဲ<ph name="SITE" />ကို တွေ့ရှိခဲ့သည်။ ပုံမှန်အားဖြင့် လုံခြုံကြသည့် ဝက်ဘ်ဆိုက်များမှာ ရံဖန်ရံခါမှာ အန္တရာယ် ကူးစက်မှု ရှိနိုင်သည်။ အန္တရာယ် အကြောင်းအရာမှာ အများသိ ဖြစ်သော အန္တရာယ်ဝဲများကို ဖြန့်ဖြူးသူ <ph name="SUBRESOURCE_HOST" /> ထံမှ  ဖြစ်ပါသည်။</translation>
 <translation id="6234122620015464377">မှတ်တမ်းတစ်ခုအပြီး ဖြတ်ထုတ်ရန်</translation>
 <translation id="6240447795304464094">Google Pay အမှတ်တံဆိပ်</translation>
+<translation id="6241121617266208201">အကြံပြုချက်များကို ဝှက်ရန်</translation>
 <translation id="6251924700383757765">ကိုယ်ရေးကိုယ်တာ ပေါ်လစီ</translation>
 <translation id="6254436959401408446">ဤစာမျက်နှာကို ဖွင့်ရန် မှတ်ဉာဏ် အလုံအလောက်မရှိပါ</translation>
 <translation id="625755898061068298">ဤဝဘ်ဆိုက်အတွက် လုံခြုံရေးသတိပေးချက်များကို ပိတ်ထားရန် သင်ရွေးချယ်ထားပါသည်။</translation>
@@ -1128,6 +1141,7 @@
 <translation id="6409754798200046165">လှည့်ဖြားတတ်သော ဝဘ်ဆိုက်တစ်ခုတွင် သင့်စကားဝှက်ကို ထည့်လိုက်ပါသည်။ သင့်စကားဝှက်ကို ယခုပင်ပြောင်းလဲရန် Chrome က အကြံပြုပါသည်။</translation>
 <translation id="6410264514553301377"><ph name="CREDIT_CARD" /> အတွက် ကုန်ဆုံးရက်နှင့် CVC ကို ထည့်ပါ</translation>
 <translation id="6415778972515849510">Chromium က သင်၏ Google အကောင့်ကို ကာကွယ်ရန်နှင့် စကားဝှက်ပြောင်းရန် ကူညီနိုင်ပါသည်။</translation>
+<translation id="6423385022588644828">ယခုမှစ၍ Touch ID ကို အသုံးပြု၍ သင့်ကတ်များကို ပိုမိုမြန်ဆန်စွာ အတည်ပြုလိုက်ပါ</translation>
 <translation id="6427730057873428458">ဝင်းတံခါးပုံ ခေါက်ရန်</translation>
 <translation id="6433490469411711332">အဆက်အသွယ်အချက်အလက်ကို တည်းဖြတ်ပါ</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> သည်ချိတ်ဆက်ရန် ငြင်းပယ်ခဲ့သည်။</translation>
@@ -1198,12 +1212,14 @@
 <translation id="6786747875388722282">အိတ်စတန်းရှင်းများ</translation>
 <translation id="6790428901817661496">ဖွင့်ရန်</translation>
 <translation id="679355240208270552">မူလရှာဖွေမှုကို မူဝါဒဖြင့် ဖွင့်မထား၍ လျစ်လျူရှုထားသည်။</translation>
+<translation id="6794951432696553238">ယခုမှစ၍ Windows Hello ကို အသုံးပြု၍ သင့်ကတ်များကို ပိုမိုမြန်ဆန်စွာ အတည်ပြုလိုက်ပါ</translation>
 <translation id="681021252041861472">လိုအပ်သည့် အကွက်</translation>
 <translation id="6810899417690483278">စိတ်ကြိုက်ပြုလုပ်မှု ID</translation>
 <translation id="6825578344716086703">သင်သည် <ph name="DOMAIN" /> ကို ဖွင့်ရန် ကြိုးပမ်းခဲ့သော်လည်း အသိအမှတ်ပြုလက်မှတ်တစ်ခုမှာ (SHA-1 ကဲ့သို့) အားနည်းသည့် လက်မှတ်ထိုးခြင်းစနစ်ကိုအသုံးပြု၍ လက်မှတ်ထိုးထားကြောင်း ဆာဗာက တင်ပြထားပါသည်။ ဆိုလိုသည်မှာ ဆာဗာကပြသထားသည့် လုံခြုံရေးအထောက်အထားများသည် အတုပြုလုပ်ထားခြင်း ဖြစ်နိုင်ပြီး ဆာဗာသည်လည်း သင်အသုံးပြုလိုသည့် ဆာဗာမဖြစ်နိုင်ပါ (သင်သည် တိုက်ခိုက်သူနှင့် ဆက်သွယ်နေရခြင်းသာ ဖြစ်နိုင်ပါသည်)။</translation>
 <translation id="6826370046007623921">ဒေတာဆုံးရှုံးမှု ကာကွယ်ခြင်း</translation>
 <translation id="6831043979455480757">ဘာသာပြန်ရန်</translation>
 <translation id="6839929833149231406">နယ်မြေ</translation>
+<translation id="6846340164947227603">အသွင်တု ကတ်နံပါတ်ကို အသုံးပြုပါ...</translation>
 <translation id="6852204201400771460">အက်ပ်ကို ပြန်လည်စတင်လိုပါသလား။</translation>
 <translation id="6865412394715372076">ဤကတ်ကို ယခုအတည်ပြု၍ မရသေးပါ</translation>
 <translation id="6868206169573555318">အပ်ဒိတ်လုပ်ရန်အတွက် ပြန်ဖွင့်ရန်</translation>
@@ -1232,6 +1248,7 @@
 <translation id="6989763994942163495">အဆင့်မြင့် ဆက်တင်များ ပြရန်...</translation>
 <translation id="6993898126790112050">၆x၉ (စာအိတ်)</translation>
 <translation id="6996312675313362352"><ph name="ORIGINAL_LANGUAGE" />ဘာသာကို အမြဲတမ်း ဘာသာပြန်ရန်</translation>
+<translation id="7004583254764674281">ကတ်များကို ပိုမိုမြန်ဆန်စွာ အတည်ပြုနိုင်ရန် Windows Hello ကို အသုံးပြုပါ</translation>
 <translation id="7012363358306927923">တရုတ် UnionPay</translation>
 <translation id="7016992613359344582">ဤငွေကောက်ခံမှုများသည် တစ်ချိန်တစ်ခါတည်း ဖြစ်နိုင်သလို ထပ်တလဲလဲကောက်ခံမှုလည်း ဖြစ်နိုင်ပြီး သိသာမှုမရှိနိုင်ပါ။</translation>
 <translation id="7029809446516969842">လျှို့ဝက်စကားလုံးများ</translation>
@@ -1242,6 +1259,7 @@
 <translation id="7064851114919012435">ဆက်သွယ်ရန်အချက်အလက်</translation>
 <translation id="7075452647191940183">တောင်းဆိုချက် အလွန်ကြီးနေသည်</translation>
 <translation id="7079718277001814089">ဤဆိုက်တွင် မဲလ်ဝဲ ပါဝင်ပါသည်</translation>
+<translation id="7081308185095828845">ဤဝန်ဆောင်မှုကို သင့်စက်တွင် အသုံးပြု၍မရပါ</translation>
 <translation id="7087282848513945231">ကောင်တီ</translation>
 <translation id="7090678807593890770"><ph name="LINK" /> ကို Google တွင်ရှာပါ</translation>
 <translation id="7108338896283013870">ဝှက်ထားရန်</translation>
@@ -1296,9 +1314,11 @@
 <translation id="733923710415886693">ဆာဗာ၏အသိအမှတ်ပြုလက်မှတ်ကို အသိအမှတ်ပြုလက်မှတ်ပွင့်လင်းမြင်သာရှိမှုမှတစ်ဆင့် ဖော်ပြထားခြင်း မရှိပါ။</translation>
 <translation id="734600844861828519">၁၁x၁၅</translation>
 <translation id="7346048084945669753">အောက်ပါနှင့် ပေါင်းစည်းထားသည်−</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> သည် သင့်ဘရောင်ဇာတွင် 'Chrome လုပ်ငန်းသုံး အသုံးပြုသူ ကာကွယ်မှု' ကို ဖွင့်ထားသည်။ 'Chrome လုပ်ငန်းသုံး အသုံးပြုသူ ကာကွယ်မှု' သည် သင့်ဒေတာအချို့ကို အသုံးပြုခွင့်ရှိသည်။</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">ညွှန်ကြားချက် လိုင်း</translation>
 <translation id="7372973238305370288">ရှာဖွေခြင်းရလာဒ်</translation>
+<translation id="7374733840632556089">သင် သို့မဟုတ် တစ်စုံတစ်ယောက်က သင့်စက်ပေါ်တွင် ထည့်သွင်းထားသည့် အသိအမှတ်ပြုလက်မှတ်တစ်ခုကြောင့် ဤပြဿနာ ဖြစ်ပေါ်ရခြင်းဖြစ်သည်။ ကွန်ရက်များကို စောင့်ကြည့်ရန်နှင့် ကြားဖြတ်ရန်အတွက် အသိအမှတ်ပြုလက်မှတ်ကို အသုံးပြုကြောင်း သိရှိထားပြီး Chrome က ယုံကြည်စိတ်ချခြင်း မရှိပါ။ ကျောင်း သို့မဟုတ် ကုမ္ပဏီကွန်ရက်များတွင် တရားဝင်စောင့်ကြည့်သည့် ကိစ္စရပ်အချို့ရှိသော်လည်း သင်မရပ်နိုင်သည့်သကာလ ထိုသို့စောင့်ကြည့်နေကြောင်းကို Chrome က သင့်အား သတိထားစေလိုပါသည်။ ဝဘ်ကို အသုံးပြုသည့် ဘရောင်ဇာ သို့မဟုတ် အပလီကေးရှင်းတိုင်းတွင် စောင့်ကြည့်ခြင်းများ ရှိနိုင်သည်။</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">မီဒီယာ ထိန်းချုပ်မှုများ</translation>
 <translation id="7378627244592794276">မဟုတ်ပါ</translation>
@@ -1327,6 +1347,7 @@
 <translation id="7451311239929941790">ဤပြဿနာအကြောင်း <ph name="BEGIN_LINK" />ပိုမိုလေ့လာပါ<ph name="END_LINK" />။</translation>
 <translation id="7455133967321480974">အထွေထွေ ပုံသေကို သုံးရန် (ပိတ်ဆို့ရန်)</translation>
 <translation id="7460618730930299168">ဤစစ်ထုတ်မှုက သင်ရွေးထားသည့်အရာနှင့် မတူပါ။ ရှေ့ဆက်လိုပါသလား။</translation>
+<translation id="7464821087936825778">ရှာဖွေမှုမုဒ်မှ ထွက်နေသည်</translation>
 <translation id="7473891865547856676">မလို ကျေးဇူးပဲ</translation>
 <translation id="7481312909269577407">ရှေ့သို့</translation>
 <translation id="7485870689360869515">ဒေတာ မတွေ့ရပါ။</translation>
@@ -1548,6 +1569,7 @@
 <translation id="8559762987265718583">သင့်ကိရိယာ၏ ရက်စွဲ နှင့် အချိန် (<ph name="DATE_AND_TIME" />)မှာ မမှန်၍ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ထံသို့ ကိုယ်ရေး ချိတ်ဆက်မှုကို ထူထောင်မရနိုင်ပါ။</translation>
 <translation id="8564985650692024650">အခြားဝဘ်ဆိုက်များတွင် သင်၏ <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> စကားဝှက်ကို ပြန်သုံးထားပါက ၎င်းကို ပြင်ဆင်သတ်မှတ်ရန် Chromium က အကြံပြုပါသည်။</translation>
 <translation id="8571890674111243710">စာမျက်နှာကို <ph name="LANGUAGE" />သို့ ဘာသာပြန်ပေးနေ...</translation>
+<translation id="8574899947864779331">ကတ်များကို ပိုမိုမြန်ဆန်စွာ အတည်ပြုရန် Touch ID ကို အသုံးပြုပါ</translation>
 <translation id="858637041960032120">ဖုန်းနံပါတ် ပေါင်းထည့်ရန်</translation>
 <translation id="860043288473659153">ကတ်ကိုင်ဆောင်သူအမည်</translation>
 <translation id="8616822740383114808">ဤဆက်တင်ကို "<ph name="SETTINGS_PAGE" />" တွင် "<ph name="ENFORCING_SETTING" />" က သတ်မှတ်ထားခြင်းဖြစ်သည်။</translation>
diff --git a/components/strings/components_strings_ne.xtb b/components/strings/components_strings_ne.xtb
index c04a879..531c100f 100644
--- a/components/strings/components_strings_ne.xtb
+++ b/components/strings/components_strings_ne.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">पृष्ठ पछि लोड गर्नुहोस्</translation>
 <translation id="1015730422737071372">थप विवरणहरू उपलब्ध गराउनुहोस्</translation>
 <translation id="1021110881106174305">स्वीकार गरिएका कार्डहरू</translation>
+<translation id="1021753677514347426">तपाईं वा अरू कसैले तपाईंको यन्त्रमा प्रमाणपत्र स्थापना गरेका कारण यस्तो समस्या आउँछ। उक्त प्रमाणपत्र नेटवर्कहरूको निगरानी गर्न र अवरोध गर्न प्रयोग गरिने भनी चिनिन्छ Chromium ले यसलाई विश्वास गर्दैन। विद्यालय वा कम्पनीको नेटवर्क जस्ता केही स्थानका हकमा निगरानी गरिने कार्य वैध नै मानिन्छ र तपाईंले त्यस्ता निगरानीलाई रोक्न नसक्ने भए तापनि Chromium तपाईं त्यसबारे जानकार रहनुहोस् भन्ने चाहन्छ। वेबमाथि पहुँच गर्न सक्ने जुनसुकै ब्राउजर वा अनुप्रयोगमाथि निगरानी हुन सक्छ।</translation>
 <translation id="1032854598605920125">घडीको दिशामा घुमाउनुहोस्</translation>
 <translation id="1036348656032585052">निस्कृय पार्नुहोस्</translation>
 <translation id="1038842779957582377">अज्ञात नाम</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575"><ph name="CRASH_TIME" /> मा क्र्यासको रिपोर्ट कैद गरियो (अहिलेसम्म अपलोड नगरिएको वा बेवास्ता गरिएको)</translation>
 <translation id="1270502636509132238">पिकअपको विधि</translation>
 <translation id="1285320974508926690">यो साइट कहिले पनि अनुवाद नगर्नुहोस्</translation>
+<translation id="1285400217480592994">तपाईंले Chrome मा डाउनलोड गर्ने वा अपलोड गर्ने फाइलहरूका सामग्री स्क्यान गर्नुहोस्।</translation>
 <translation id="1292701964462482250">"तपाईंको कम्प्युटरमा रहेको सफ्टवेयरले Chrome लाई सुरक्षित रूपमा वेबमा जडान हुनबाट रोकिरहेको छ" (Windows कम्प्युटरहरू मात्र)</translation>
 <translation id="1294154142200295408">कमान्ड लाइनसम्बन्धी विविधताहरू</translation>
 <translation id="129553762522093515">हालैमा बन्द गरिएको</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">फोन नम्बर</translation>
 <translation id="2277103315734023688">अगाडि जानुहोस्</translation>
 <translation id="2283340219607151381">ठेगाना सुरक्षित गरी फारम भर्नुहोस्</translation>
+<translation id="2288422996159078444">तपाईंले टाइप गर्ने हरेक कुरा, तपाईंले हेर्ने हरेक पृष्ठ वा तपाईंले वेबमा गर्ने अन्य कुनै पनि गतिविधिमाथि निगरानी राखिन्छ र यी साइटका सामग्री तपाईंले थाहै नपाई परिवर्तन गर्न सकिन्छ।</translation>
 <translation id="2289385804009217824">छाँटकाँट गर्नुहोस्</translation>
 <translation id="2292556288342944218">तपाईंको इन्टरनेट पहुँचमाथि रोक लगाइएको छ</translation>
 <translation id="2297722699537546652">B5 (Envelope)</translation>
@@ -428,6 +431,7 @@
 <translation id="2989742184762224133">सिरानमा दुई स्टिच</translation>
 <translation id="2991174974383378012">वेबसाइटहरूसँग साझेदारी</translation>
 <translation id="2991571918955627853">उक्त वेबसाइटले HSTS प्रयोग गर्ने हुनाले तपाईं अहिले नै <ph name="SITE" /> मा जान सक्नुहुन्न। नेटवर्कसम्बन्धी त्रुटि र आक्रमणहरू सामान्यतया अस्थायी हुन्छन्, त्यसैले यो पृष्ठले पछि सम्भवतः काम गर्नसक्नेछ।</translation>
+<translation id="2996674880327704673">Google बाट प्राप्त सुझावहरू</translation>
 <translation id="3005723025932146533">बचत गरिएको प्रति देखाउनुहोस्</translation>
 <translation id="3008447029300691911"><ph name="CREDIT_CARD" /> को CVC प्रविष्टि गर्नुहोस्। तपाईंले पुष्टि गर्ने बित्तिकै, तपाईंको कार्डका विवरणहरू यस साइटमा साझेदारी गरिने छन्।</translation>
 <translation id="3010559122411665027">सूची प्रविष्टि "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -440,6 +444,7 @@
 <translation id="3060227939791841287">C9 (Envelope)</translation>
 <translation id="3061707000357573562">प्याचसम्बन्धी सेवा</translation>
 <translation id="3064966200440839136">कुनै बाह्य अनुप्रयोगमार्फत भुक्तानी गर्नका लागि इन्कोग्निटो मोडलाई छाडिँदै । जारी राख्ने हो?</translation>
+<translation id="3086579638707268289">वेबको तपाईंको क्रियाकलापको निगरानी गरिँदै छ</translation>
 <translation id="3095940652251934233">वक्तव्य</translation>
 <translation id="3096100844101284527">पिकअप गर्ने ठेगाना थप्नुहोस्</translation>
 <translation id="3105172416063519923">सम्पत्ति ID:</translation>
@@ -489,6 +494,7 @@
 <translation id="3369192424181595722">घडी त्रुटि</translation>
 <translation id="337363190475750230">प्रबन्ध हटाइएको</translation>
 <translation id="3377188786107721145">नीति पार्स त्रुटि</translation>
+<translation id="3377736046129930310">कार्डहरू अझ छिटो पुष्टि गर्न स्क्रिन लक सुविधा प्रयोग गर्नुहोस्</translation>
 <translation id="3380365263193509176">अज्ञात त्रुटि</translation>
 <translation id="3380864720620200369">ग्राहक आइडी:</translation>
 <translation id="3387261909427947069">भुक्तानी विधिहरू</translation>
@@ -649,6 +655,7 @@
 <translation id="4194250254487269611">तपाईंको कार्ड अहिले नै सुरक्षित गर्न मिल्दैन</translation>
 <translation id="4196861286325780578">सार्ने कार्य &amp;पुन: गर्नुहोस्</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />फायरवाल र एन्टिभाइरसका कन्फिगरेसनलाई जाँच गर्नुहोस्<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">साइन इन स्क्रिनको प्रोफाइल</translation>
 <translation id="4215751373031079683">7x9 (Envelope)</translation>
 <translation id="4220128509585149162">दुर्घटनाहरू</translation>
 <translation id="422022731706691852"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> मा रहेका आक्रमणकारीहरूले तपाईंलाई तपाईंको ब्राउजर अनुभवलाई क्षति पुऱ्याउने (उदाहरणका लागि तपाईंको गृहपृष्ठ बदलेर वा तपाईंले हेर्नुहुने साइटहरूमा अतिरिक्त विज्ञापनहरू देखाएर) कार्यक्रमहरू स्थापना गर्न लगाएर झुक्याउने प्रयास गर्नसक्छन्। <ph name="BEGIN_LEARN_MORE_LINK" />थप जान्नुहोस्<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -731,6 +738,7 @@
 <translation id="4515275063822566619">कार्ड र ठेगानाहरू तपाईंको Chrome र Google खाता (<ph name="ACCOUNT_EMAIL" />) बाट प्राप्त भएका हुन्। तपाईं  <ph name="BEGIN_LINK" />सेटिङहरू<ph name="END_LINK" /> मा गई तिनीहरूलाई व्यवस्थित गर्न सक्नुहुन्छ।</translation>
 <translation id="4517607026994743406">Comm-10 (Envelope)</translation>
 <translation id="4522570452068850558">विवरणहरू</translation>
+<translation id="4524138615196389145">अब उप्रान्त WebAuthn प्रयोग गरी आफ्ना कार्डहरूको अझ छिटो पुष्टि गर्नुहोस्</translation>
 <translation id="4524805452350978254">कार्डहरूको व्यवस्थापन गर्नुहोस्</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">फ्ल्यास</translation>
@@ -841,6 +849,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64-बिट)</translation>
+<translation id="5121469660360593280">Chrome Enterprise User Protect सुविधामार्फत फ्ल्याग गरिएका सुरक्षा कार्यक्रमसम्बन्धी डेटा आफ्ना प्रशासकसँग आदान प्रदान गर्नुहोस्। यसमा तपाईंले हेर्ने पृष्ठका URL, फाइलका नाम, मेटाडेटा र तपाईंले आफ्नो यन्त्र र Chrome मा साइन इन गर्न प्रयोग गर्ने प्रयोगकर्ताका नाम समावेश हुन सक्छन्।</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">आफ्नो कार्ड पुष्टि गर्नुहोस्</translation>
 <translation id="5135404736266831032">ठेगानाहरू व्यवस्थित गर्नुहोस्...</translation>
@@ -852,6 +861,7 @@
 <translation id="5159010409087891077">पृष्ठलाई नयाँ इन्कोग्निटो विन्डोमा खोल्नुहोस् (⇧⌘N)</translation>
 <translation id="516920405563544094"><ph name="CREDIT_CARD" /> को CVC प्रविष्टि गर्नुहोस्। तपाईंले पुष्टि गरिसकेपछि तपाईंको Google खातामा रहेका कार्डसम्बन्धी विवरणहरू यो साइटसँग आदान प्रदान गरिने छ।</translation>
 <translation id="5169827969064885044">तपाईं आफ्नो सङ्गठनको खातामाथिको पहुँच गुमाउन सक्नुहुन्छ वा तपाईंको पहिचान चोरी हुन सक्छ। Chrome तपाईंलाई आफ्नो पासवर्ड अहिले नै परिवर्तन गर्न सिफारिस गर्छ।</translation>
+<translation id="5170017743895942767">Chrome Enterprise User Protect</translation>
 <translation id="5171045022955879922">युआरएल खोल्नुहोस् वा टाइप गर्नुहोस्</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">यन्त्र</translation>
@@ -972,6 +982,7 @@
 <translation id="5730040223043577876">तपाईंले आफ्नो पासवर्ड अन्य साइटहरूमा प्रयोग गर्नुभएका खण्डमा Chrome ले तपाईंको पासवर्ड रिसेट गर्न सिफारिस गर्दछ।</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{कार्डलाई आफ्नो Google खातामा सुरक्षित गर्नुहोस्}other{कार्डहरूलाई आफ्नो Google खातामा सुरक्षित गर्नुहोस्}}</translation>
 <translation id="5763042198335101085">मान्य इमेल ठेगाना प्रविष्टि गर्नुहोस्</translation>
+<translation id="5763703224595565476">तपाईंका प्रशासकले तपाईंको ब्राउजरमा Chrome Enterprise User Protect सुविधा सक्षम पारेको छ। Chrome Enterprise User Protect नामक सुविधाको तपाईंका केही डेटामाथि पहुँच हुन्छ।</translation>
 <translation id="5765072501007116331">डेलिभरीका विधि र मापदण्डहरू हेर्न, ठेगाना चयन गर्नुहोस्</translation>
 <translation id="5778550464785688721">MIDI यन्त्रहरू पूर्ण नियन्त्रण</translation>
 <translation id="5781136890105823427">परीक्षण सक्षम पारियो</translation>
@@ -1051,6 +1062,7 @@
 <translation id="6094273045989040137">एनोटेसन गर्नुहोस्</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">तपाईंको Google खाताको <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> मा ब्राउजिङ इतिहासका अन्य ढाँचाहरू रहेका हुनसक्छन्।</translation>
+<translation id="6120179357481664955">आफ्नो UPI ID सम्झने हो?</translation>
 <translation id="6132597952260690497">स्थापना गरिएका विस्तार र प्लगइनहरूसम्बन्धी जानकारी</translation>
 <translation id="6146055958333702838">तपाइँले प्रयोग गरिेहेको कुनै पनि केबुलहरू जाँच्नुहोस् र कुनै पनि राउटरहरू, मोडेमहरू, वा अन्य 
         नेटवर्क यन्त्रहरू रिबुट गर्नुहोस्।</translation>
@@ -1066,6 +1078,7 @@
 <translation id="6221345481584921695">Google सुरक्षित ब्राउजिंग हालै <ph name="SITE" /> मा <ph name="BEGIN_LINK" /> मालवेयर पत्ता <ph name="END_LINK" /> लगायो। सामान्यतया सुरक्षित भनिएका वेबसाइटहरू कहिलेकाहीं मालवेयरद्वारा संक्रमित हुन्छन्। द्वेषपूर्ण सामग्री <ph name="SUBRESOURCE_HOST" /> , एक प्रख्यात मालवेयर वितरकबाट आउँछ।</translation>
 <translation id="6234122620015464377">हरेक कागजातपछि छाँटकाँट गर्नुहोस्</translation>
 <translation id="6240447795304464094">Google Pay को लोगो</translation>
+<translation id="6241121617266208201">सुझावहरू लुकाउनुहोस्</translation>
 <translation id="6251924700383757765">गोपनीयता नीति</translation>
 <translation id="6254436959401408446">यो पृष्ठ खोल्नका लागि पर्याप्त मेमोरी छैन</translation>
 <translation id="625755898061068298">तपाईँले यस साइटका सुरक्षा सम्बन्धी चेतावनीहरू असक्षम पार्ने विकल्प छान्नुभएको छ।</translation>
@@ -1112,6 +1125,7 @@
 <translation id="6409754798200046165">तपाईंले भर्खरै कुनै भ्रामक साइटमा आफ्नो पासवर्ड प्रविष्टि गर्नुभएको छ। Chrome तपाईंलाई अहिले नै आफ्नो पासवर्ड परिवर्तन गर्न सिफारिस गर्दछ।</translation>
 <translation id="6410264514553301377"><ph name="CREDIT_CARD" /> को म्याद सकिने मिति र CVC प्रविष्टि गर्नुहोस्</translation>
 <translation id="6415778972515849510">Chromium ले तपाईंलाई आफ्नो Google खाता सुरक्षित गर्न र पासवर्ड बदल्न मद्दत गर्न सक्छ।</translation>
+<translation id="6423385022588644828">अब उप्रान्त Touch ID प्रयोग गरेर आफ्ना कार्डहरू अझ छिटो पुष्टि गर्नुहोस्</translation>
 <translation id="6427730057873428458">गेट फोल्ड</translation>
 <translation id="6433490469411711332">सम्पर्क सम्बन्धी जानकारीलाई सम्पादन गर्नुहोस्</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> ले जडान गर्न अस्वीकार गर्यो।</translation>
@@ -1182,12 +1196,14 @@
 <translation id="6786747875388722282">विस्तारहरू</translation>
 <translation id="6790428901817661496">प्ले गर्नुहोस्</translation>
 <translation id="679355240208270552">पूर्वनिर्धारित खोजलाई नीतिअनुसार असक्षम नपारिएको हुनाले बेवास्ता गरियो।</translation>
+<translation id="6794951432696553238">अब उप्रान्त Windows Hello प्रयोग गरी आफ्ना कार्डहरू अझ छिटो पुष्टि गर्नुहोस्</translation>
 <translation id="681021252041861472">अनिवार्य क्षेत्र</translation>
 <translation id="6810899417690483278">अनुकूलनको ID</translation>
 <translation id="6825578344716086703">तपाईंले <ph name="DOMAIN" /> मा पुग्ने प्रयत्न गर्नुभयो, तर सर्भरले एउटा कमजोर हस्ताक्षर एल्गोरिदम (जस्तै SHA-1) प्रयोग गरेर हस्ताक्षर गरिएको प्रमाणपत्र प्रस्तुत गर्‍यो। यसको अर्थ सर्भरले प्रस्तुत गरेको सुरक्षासम्बन्धी पत्यारपत्रहरू जाली हुन सक्छन् र उक्त सर्भर तपाईंले अपेक्षा गर्नुभएको सर्भर नहुन पनि सक्छ (तपाईं कुनै आक्रमणकारीसँग सञ्चारण गरिरहनुभएको हुनसक्छ)।</translation>
 <translation id="6826370046007623921">डेटाको नोक्सानी निवारण</translation>
 <translation id="6831043979455480757">अनुवाद गर्नुहोस्</translation>
 <translation id="6839929833149231406">क्षेत्र</translation>
+<translation id="6846340164947227603">कुनै भर्चुअल कार्ड नम्बर प्रयोग गर्नुहोस्...</translation>
 <translation id="6852204201400771460">अनुप्रयोग पुनः लोड गर्ने हो?</translation>
 <translation id="6865412394715372076">यो कार्ड यस बखत पुष्टि गर्न सकिँदैन</translation>
 <translation id="6868206169573555318">अद्यावधिक गर्न पुनः सुरुवात गर्नुहोस्</translation>
@@ -1216,6 +1232,7 @@
 <translation id="6989763994942163495">उन्नत सेटिङ देखाउनुहोस्...</translation>
 <translation id="6993898126790112050">6x9 (Envelope)</translation>
 <translation id="6996312675313362352"><ph name="ORIGINAL_LANGUAGE" /> भाषाका सामग्री सधैँ अनुवाद गर्नुहोस्</translation>
+<translation id="7004583254764674281">कार्डहरू अझ छिटो पुष्टि गर्न Windows Hello प्रयोग गर्नुहोस्</translation>
 <translation id="7012363358306927923">चीन UnionPay</translation>
 <translation id="7016992613359344582">यी शुल्कहरू एक पटक तिरे पुग्ने वा बारम्बार तिर्नु पर्ने हुन सक्छन् र यस सम्बन्धमा स्पष्टता नहुन पनि सक्छ।</translation>
 <translation id="7029809446516969842">पासवर्डहरू</translation>
@@ -1226,6 +1243,7 @@
 <translation id="7064851114919012435">सम्पर्क बारे जानकारी</translation>
 <translation id="7075452647191940183">अनुरोध गरिएको सामग्री धेरै ठुलो छ</translation>
 <translation id="7079718277001814089">यस साइटमा मालवेयर छ</translation>
+<translation id="7081308185095828845">तपाईंको यन्त्रमा यो सुविधा उपलब्ध छैन</translation>
 <translation id="7087282848513945231">काउन्टी</translation>
 <translation id="7090678807593890770"><ph name="LINK" /> बारे Google मा खोज्नुहोस्</translation>
 <translation id="7108338896283013870">लुकाउनुहोस्</translation>
@@ -1279,9 +1297,11 @@
 <translation id="733923710415886693">प्रमाणपत्रको पारदर्शिता नीति मार्फत सर्भरको प्रमाणपत्रको खुलासा भएन।</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">सम्बद्ध प्रयोगकर्ता हो कि होइन:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> ले तपाईंको ब्राउजरमा Chrome Enterprise User Protect नामक सुविधा सक्षम पारेको छ। Chrome Enterprise User Protect नामक सुविधाको तपाईंका केही डेटामाथि पहुँच हुन्छ।</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">आदेश रेखा</translation>
 <translation id="7372973238305370288">खोजको परिणाम</translation>
+<translation id="7374733840632556089">तपाईं वा अरू कसैले तपाईंको यन्त्रमा प्रमाणपत्र स्थापना गरेका कारण यस्तो समस्या आउँछ। उक्त प्रमाणपत्र नेटवर्कहरूको निगरानी गर्न र तिनमा अवरोध गर्न प्रयोग गरिने भनी चिनिन्छ र Chrome ले यसलाई विश्वास गर्दैन। विद्यालय वा कम्पनीको नेटवर्क जस्ता केही स्थानका हकमा निगरानी गरिने कार्य वैध नै मानिन्छ र तपाईंले त्यस्ता निगरानीलाई रोक्न नसक्ने भए तापनि Chrome तपाईं त्यसबारे जानकार रहनुहोस् भन्ने चाहन्छ। वेबमाथि पहुँच गर्न सक्ने जुनसुकै ब्राउजर वा अनुप्रयोगमाथि निगरानी हुन सक्छ।</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">मिडियासम्बन्धी नियन्त्रणहरू</translation>
 <translation id="7378627244592794276">होइन</translation>
@@ -1310,6 +1330,7 @@
 <translation id="7451311239929941790">यस समस्या बारे <ph name="BEGIN_LINK" />थप जान्नुहोस्<ph name="END_LINK" />।</translation>
 <translation id="7455133967321480974">विश्वव्यापी पूर्वनिर्धारित प्रयोग गर्नुहोस् (ब्लक)</translation>
 <translation id="7460618730930299168">यो स्क्रिनिङ तपाईंले चयन गर्नुभएको भन्दा फरक छ। जारी राख्ने हो?</translation>
+<translation id="7464821087936825778">खोज मोडबाट बाहिरिँदै</translation>
 <translation id="7473891865547856676">पर्दैन, धन्यवाद</translation>
 <translation id="7481312909269577407">अगाडि</translation>
 <translation id="7485870689360869515">कुनैपनि डाटा भेटिएन।</translation>
@@ -1531,6 +1552,7 @@
 <translation id="8559762987265718583"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />मा एउटा निजी जडान स्थापना गर्न सक्दैन किनकि तपाईँको यन्त्रको मिति र समय <ph name="DATE_AND_TIME" /> गलत छन्।</translation>
 <translation id="8564985650692024650">तपाईंले आफ्नो <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> को पासवर्ड अन्य साइटहरूमा पुनः प्रयोग गर्नुभएका खण्डमा Chromium ले तपाईंलाई उक्त पासवर्ड रिसेट गर्न सिफारिस गर्दछ।</translation>
 <translation id="8571890674111243710">पृष्ठलाई <ph name="LANGUAGE" /> मा अनुवाद गर्दै...</translation>
+<translation id="8574899947864779331">कार्डहरू अझ छिटो पुष्टि गर्न Touch ID प्रयोग गर्नुहोस्</translation>
 <translation id="858637041960032120">फोन नम्बर थप्नुहोस्</translation>
 <translation id="860043288473659153">कार्डवालाको नाम</translation>
 <translation id="8616822740383114808">यो सेटिङ "<ph name="ENFORCING_SETTING" />" ले "<ph name="SETTINGS_PAGE" />" मा लागू गर्नुभएको हो</translation>
diff --git a/components/strings/components_strings_no.xtb b/components/strings/components_strings_no.xtb
index 3de1a9d..4eae302c 100644
--- a/components/strings/components_strings_no.xtb
+++ b/components/strings/components_strings_no.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Last inn siden senere</translation>
 <translation id="1015730422737071372">Oppgi flere detaljer</translation>
 <translation id="1021110881106174305">Godkjente kort</translation>
+<translation id="1021753677514347426">Dette problemet oppstår på grunn av et sertifikat du eller noen andre har installert på enheten. Det er kjent at sertifikatet brukes til nettverksavlytting og -overvåking, og Chromium stoler ikke på det. Selv om det finnes legitime bruksområder for overvåking, f.eks. på skole- eller bedriftsnettverk, vil Chromium sørge for at du er klar over at det foregår, selv om du ikke kan stoppe det. Overvåking kan skje i alle nettlesere og applikasjoner som bruker nettet.</translation>
 <translation id="1032854598605920125">Rotér med klokken</translation>
 <translation id="1036348656032585052">Slå av</translation>
 <translation id="1038842779957582377">ukjent navn</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Programstopprapport fra <ph name="CRASH_TIME" /> (ignorert eller ikke lastet opp ennå)</translation>
 <translation id="1270502636509132238">Hentemåte</translation>
 <translation id="1285320974508926690">Oversett aldri dette nettstedet</translation>
+<translation id="1285400217480592994">Gjennomsøk innholdet i filene du laster ned eller opp i Chrome.</translation>
 <translation id="1292701964462482250">«Det er programvare på datamaskinen din som hindrer Chrome i å koble trygt til Internett» (bare på Windows-datamaskiner)</translation>
 <translation id="1294154142200295408">Variasjoner i kommandolinjen</translation>
 <translation id="129553762522093515">Nylig lukket</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Telefonnummer</translation>
 <translation id="2277103315734023688">Spol fremover</translation>
 <translation id="2283340219607151381">Lagre og fyll inn adresser</translation>
+<translation id="2288422996159078444">Alt du skriver, alle sider du besøker, og all annen aktivitet på nettet blir overvåket. Innholdet på nettsteder kan bli endret uten at du vet om det.</translation>
 <translation id="2289385804009217824">Beskjær</translation>
 <translation id="2292556288342944218">Internett-tilgangen din er blokkert</translation>
 <translation id="2297722699537546652">B5 (konvolutt)</translation>
@@ -436,6 +439,7 @@
 <translation id="2989742184762224133">To stifter topp</translation>
 <translation id="2991174974383378012">Deling med nettsteder</translation>
 <translation id="2991571918955627853">Du kan ikke gå til <ph name="SITE" /> akkurat nå, siden nettstedet bruker HSTS. Nettverksfeil og -angrep er vanligvis midlertidige, så denne siden fungerer sannsynligvis senere.</translation>
+<translation id="2996674880327704673">Forslag fra Google</translation>
 <translation id="3005723025932146533">Vis lagret kopi</translation>
 <translation id="3008447029300691911">Skriv inn verifiseringskoden for <ph name="CREDIT_CARD" />. Når du bekrefter, deles kortinformasjonen din med dette nettstedet.</translation>
 <translation id="3010559122411665027">Listeoppføring «<ph name="ENTRY_INDEX" />»: <ph name="ERROR" /></translation>
@@ -448,6 +452,7 @@
 <translation id="3060227939791841287">C9 (konvolutt)</translation>
 <translation id="3061707000357573562">Feilrettingstjeneste</translation>
 <translation id="3064966200440839136">Går ut av inkognitomodus for å betale via en ekstern app. Vil du fortsette?</translation>
+<translation id="3086579638707268289">Aktiviteten din på nettet overvåkes</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Legg til henteadresse</translation>
 <translation id="3105172416063519923">Ressurs-ID:</translation>
@@ -500,6 +505,7 @@
 <translation id="3369192424181595722">Klokkefeil</translation>
 <translation id="337363190475750230">Godkjenningen er opphevet</translation>
 <translation id="3377188786107721145">Feil under analysen av enhetsinnstillinger</translation>
+<translation id="3377736046129930310">Bruk skjermlås til å bekrefte kort raskere</translation>
 <translation id="3380365263193509176">Ukjent feil</translation>
 <translation id="3380864720620200369">Klient-ID:</translation>
 <translation id="3387261909427947069">Betalingsmåter</translation>
@@ -665,6 +671,7 @@
 <translation id="4194250254487269611">Kan ikke lagre kortet ditt akkurat nå</translation>
 <translation id="4196861286325780578">&amp;Flytt likevel</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Sjekk brannmur- og antiviruskonfigurasjonen<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">profil for påloggingsskjermen</translation>
 <translation id="4215751373031079683">7x9 (konvolutt)</translation>
 <translation id="4220128509585149162">Kræsj</translation>
 <translation id="422022731706691852">Angripere på <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> kan prøve å lure deg til å installere programmer som påvirker surfeopplevelsen din (for eksempel ved å endre startsiden eller vise ekstra annonser på nettsteder du går til). <ph name="BEGIN_LEARN_MORE_LINK" />Finn ut mer<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -747,6 +754,7 @@
 <translation id="4515275063822566619">Kortene og adressene er fra Chrome og Google-kontoen din (<ph name="ACCOUNT_EMAIL" />). Du kan administrere dem i <ph name="BEGIN_LINK" />Innstillinger<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Comm-10 (konvolutt)</translation>
 <translation id="4522570452068850558">Detaljer</translation>
+<translation id="4524138615196389145">Bekreft kortene dine raskere ved å bruke WebAuthn fra nå av</translation>
 <translation id="4524805452350978254">Administrer kort</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -858,6 +866,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64-bit)</translation>
+<translation id="5121469660360593280">Del data om sikkerhetshendelser som er rapportert av Chrome Enterprise User Protect, med administratoren din. Dette kan omfatte nettadressene til sider du besøker, filnavn, metadata og brukernavnet du bruker når du logger på enheten din og Chrome.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Bekreft kortet ditt</translation>
 <translation id="5135404736266831032">Adminstrer adresser…</translation>
@@ -869,6 +878,7 @@
 <translation id="5159010409087891077">Åpne siden i et nytt inkognitovindu (⇧ + ⌘ + N)</translation>
 <translation id="516920405563544094">Skriv inn verifiseringskoden for <ph name="CREDIT_CARD" />. Etter at du har bekreftet, deles kortopplysningene fra Google-kontoen din med dette nettstedet.</translation>
 <translation id="5169827969064885044">Du kan miste tilgangen til organisasjonskontoen din eller bli utsatt for identitetstyveri. Chrome anbefaler at du endrer passordet ditt nå.</translation>
+<translation id="5170017743895942767">Chrome Enterprise User Protect</translation>
 <translation id="5171045022955879922">Søk, eller skriv inn en nettadresse</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Datamaskin</translation>
@@ -989,6 +999,7 @@
 <translation id="5730040223043577876">Chrome anbefaler at du tilbakestiller passordet ditt hvis du også har brukt det på andre nettsteder.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Lagre kort i Google-kontoen din}other{Lagre kort i Google-kontoen din}}</translation>
 <translation id="5763042198335101085">Angi en gyldig e-postadresse</translation>
+<translation id="5763703224595565476">Administratoren har slått på Chrome Enterprise User Protect i nettleseren din. Chrome Enterprise User Protect har tilgang til noen av dataene dine.</translation>
 <translation id="5765072501007116331">For å se leveringsmetoder og -krav, velg en adresse</translation>
 <translation id="5778550464785688721">Full kontroll av MIDI-enheter</translation>
 <translation id="5781136890105823427">Et eksperiment er slått på</translation>
@@ -1068,6 +1079,7 @@
 <translation id="6094273045989040137">Annoter</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">Det kan hende Google-kontoen din har andre typer nettleserlogger på <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
+<translation id="6120179357481664955">Husker du UPI-ID-en din?</translation>
 <translation id="6132597952260690497">Informasjon om installerte utvidelser og programtillegg</translation>
 <translation id="6146055958333702838">Sjekk alle kabler, og start rutere, modemer eller andre nettverksenheter
      du bruker, på nytt.</translation>
@@ -1083,6 +1095,7 @@
 <translation id="6221345481584921695">Google Safe Browsing oppdaget nylig <ph name="BEGIN_LINK" />skadelig programvare<ph name="END_LINK" /> på <ph name="SITE" />. Nettsteder som vanligvis er trygge, kan noen ganger være infisert med skadelig programvare. Det skadelige innholdet kommer fra <ph name="SUBRESOURCE_HOST" />, som er en kjent distributør av skadelig programvare.</translation>
 <translation id="6234122620015464377">Beskjær etter hvert dokument</translation>
 <translation id="6240447795304464094">Google Pay-logo</translation>
+<translation id="6241121617266208201">Skjul forslag</translation>
 <translation id="6251924700383757765">Personvern</translation>
 <translation id="6254436959401408446">Det er ikke nok minne til å åpne denne siden</translation>
 <translation id="625755898061068298">Du har valgt å slå av sikkerhetsadvarsler for dette nettstedet.</translation>
@@ -1129,6 +1142,7 @@
 <translation id="6409754798200046165">Du har nettopp skrevet inn passordet ditt på et villedende nettsted. Chrome anbefaler deg å bytte passord nå.</translation>
 <translation id="6410264514553301377">Skriv inn utløpsdatoen og verifiseringskoden for <ph name="CREDIT_CARD" /></translation>
 <translation id="6415778972515849510">Chromium kan hjelpe deg med å beskytte Google-kontoen din og endre passordet ditt.</translation>
+<translation id="6423385022588644828">Bekreft kortene dine raskere ved å bruke Touch ID fra nå av</translation>
 <translation id="6427730057873428458">Vindusfals</translation>
 <translation id="6433490469411711332">Endre kontaktinformasjonen</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> avviste tilkoblingsforsøket.</translation>
@@ -1199,12 +1213,14 @@
 <translation id="6786747875388722282">Utvidelser</translation>
 <translation id="6790428901817661496">Spill av</translation>
 <translation id="679355240208270552">Ignorert fordi standardsøk ikke er aktivert av regel.</translation>
+<translation id="6794951432696553238">Bekreft kortene dine raskere ved å bruke Windows Hello fra nå av</translation>
 <translation id="681021252041861472">Obligatorisk felt</translation>
 <translation id="6810899417690483278">Tilpasnings-ID</translation>
 <translation id="6825578344716086703">Du prøvde å gå til <ph name="DOMAIN" />, men tjeneren presenterte et sertifikat som er signert med en svak signaturalgoritme (for eksempel SHA-1). Dette betyr at sikkerhetslegitimasjonen tjeneren presenterte, kan være forfalsket. Tjeneren kan med andre ord være en annen tjener enn du tror (og du kommuniserer kanskje med en angriper).</translation>
 <translation id="6826370046007623921">Forebygging av datatap</translation>
 <translation id="6831043979455480757">Oversett</translation>
 <translation id="6839929833149231406">Område</translation>
+<translation id="6846340164947227603">Bruk et virtuelt kortnummer</translation>
 <translation id="6852204201400771460">Vil du laste inn appen på nytt?</translation>
 <translation id="6865412394715372076">Dette kortet kan ikke bekreftes akkurat nå</translation>
 <translation id="6868206169573555318">Start på nytt for å oppdatere</translation>
@@ -1233,6 +1249,7 @@
 <translation id="6989763994942163495">Vis avanserte innstillinger</translation>
 <translation id="6993898126790112050">6x9 (konvolutt)</translation>
 <translation id="6996312675313362352">Oversett alltid <ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">Bruk Windows Hello til å bekrefte kort raskere</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Disse belastningene kan skje én gang eller være gjentakende, og det er ikke sikkert de er åpenbare.</translation>
 <translation id="7029809446516969842">Passord</translation>
@@ -1243,6 +1260,7 @@
 <translation id="7064851114919012435">Kontaktinformasjon</translation>
 <translation id="7075452647191940183">Forespørselen er for stor</translation>
 <translation id="7079718277001814089">Dette nettstedet inneholder skadelig programvare</translation>
+<translation id="7081308185095828845">Denne funksjonen er ikke tilgjengelig på enheten din</translation>
 <translation id="7087282848513945231">Fylke</translation>
 <translation id="7090678807593890770">Søk på Google etter <ph name="LINK" /></translation>
 <translation id="7108338896283013870">Skjul</translation>
@@ -1295,9 +1313,11 @@
 <translation id="733923710415886693">Tjenerens sertifikat er ikke vist i henhold til regelen for sertifikatåpenhet.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">Er tilknyttet:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> har slått på Chrome Enterprise User Protect i nettleseren. Chrome Enterprise User Protect har tilgang til noen av dataene dine.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Kommandolinje </translation>
 <translation id="7372973238305370288">søkeresultat</translation>
+<translation id="7374733840632556089">Dette problemet oppstår på grunn av et sertifikat du eller noen andre har installert på enheten. Det er kjent at sertifikatet brukes til nettverksavlytting og -overvåking, og Chrome stoler ikke på det. Selv om det finnes legitime bruksområder for overvåking, f.eks. på skole- eller bedriftsnettverk, vil Chrome sørge for at du er klar over at det foregår, selv om du ikke kan stoppe det. Overvåking kan skje i alle nettlesere og applikasjoner som bruker nettet.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> – <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Mediekontroller</translation>
 <translation id="7378627244592794276">Nei takk</translation>
@@ -1326,6 +1346,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Finn ut mer<ph name="END_LINK" /> om dette problemet.</translation>
 <translation id="7455133967321480974">Bruk global standardinnstilling (Blokkér)</translation>
 <translation id="7460618730930299168">Fremvisningen er forskjellig fra den du har valgt. Vil du fortsette?</translation>
+<translation id="7464821087936825778">Går ut av søkemodus</translation>
 <translation id="7473891865547856676">Nei takk</translation>
 <translation id="7481312909269577407">Frem</translation>
 <translation id="7485870689360869515">Ingen data ble funnet.</translation>
@@ -1547,6 +1568,7 @@
 <translation id="8559762987265718583">En privat tilkobling til <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> kunne ikke etableres fordi datoen og klokkeslettet (<ph name="DATE_AND_TIME" />) er feil på enheten.</translation>
 <translation id="8564985650692024650">Chromium anbefaler at du tilbakestiller passordet ditt for <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> hvis du også har brukt det på andre nettsteder.</translation>
 <translation id="8571890674111243710">Oversett siden til <ph name="LANGUAGE" /></translation>
+<translation id="8574899947864779331">Bruk Touch ID til å bekrefte kort raskere</translation>
 <translation id="858637041960032120">Legg til telefonnummer</translation>
 <translation id="860043288473659153">Kortinnehavers navn</translation>
 <translation id="8616822740383114808">Denne innstillingen er påkrevet av «<ph name="ENFORCING_SETTING" />» i «<ph name="SETTINGS_PAGE" />»</translation>
diff --git a/components/strings/components_strings_or.xtb b/components/strings/components_strings_or.xtb
index 037e4fc..01af97a2 100644
--- a/components/strings/components_strings_or.xtb
+++ b/components/strings/components_strings_or.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">ପରେ ପୃଷ୍ଠା ଲୋଡ୍‌ କରନ୍ତୁ</translation>
 <translation id="1015730422737071372">ଅତିରିକ୍ତ ବିବରଣୀ ପ୍ରଦାନ କରନ୍ତୁ</translation>
 <translation id="1021110881106174305">ସ୍ୱୀକାର କରାଯାଇଥିବା କାର୍ଡଗୁଡ଼ିକ</translation>
+<translation id="1021753677514347426">ଆପଣ କିମ୍ବା ଅନ୍ୟ କେହି ଜଣେ ଆପଣଙ୍କ ଡିଭାଇସ୍‌ରେ ଇନଷ୍ଟଲ୍ କରିଥିବା ଏକ ସାର୍ଟିଫିକେଟ୍ ଯୋଗୁଁ ଏହି ସମସ୍ୟାଟି ହୋଇଥାଏ। ସାର୍ଟିଫିକେଟ୍‍ଟି ନେଟ୍‍ୱାର୍କଗୁଡ଼ିକର ନିରୀକ୍ଷଣ ଏବଂ ଗତିରୋଧ ନିମନ୍ତେ ବ୍ୟବହାର କରାଯାଇଥାଏ ବୋଲି ଜଣାଯାଏ ଏବଂ Chromium ଏହାକୁ ବିଶ୍ୱାସ କରେ ନାହିଁ। ଯଦିଓ କୌଣସି ସ୍କୁଲ୍ କିମ୍ବା କମ୍ପାନୀ ନେଟ୍‍ୱାର୍କ ପରି ନିରୀକ୍ଷଣ ପାଇଁ କିଛି ବୈଧ ଉଦାହରଣ ବିଦ୍ୟମାନ ଅଛି, Chromium ଏହା ସୁନିଶ୍ଚିତ କରିବାକୁ ଚାହେଁ ଯେ, ଆପଣ ଏହାକୁ ବନ୍ଦ ନକରିପାରିଲେ ମଧ୍ୟ ଏହା ହେଉଥିବା ବିଷୟରେ ଅବଗତ ରୁହନ୍ତୁ। ୱେବ୍ ଆକ୍ସେସ୍ କରିପାରୁଥିବା ଯେ କୌଣସି ବ୍ରାଉଜର୍ କିମ୍ବା ଆପ୍ଲିକେସନ୍‍‍ରେ ନିରୀକ୍ଷଣ ହୋଇପାରେ।</translation>
 <translation id="1032854598605920125">ବାମରୁ ଡାହାଣକୁ ଘୂରାନ୍ତୁ</translation>
 <translation id="1036348656032585052">ବନ୍ଦ କରନ୍ତୁ</translation>
 <translation id="1038842779957582377">ଅଜ୍ଞାତ ନାମ</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">କ୍ରାସ୍ ରିପୋର୍ଟ <ph name="CRASH_TIME" />ରେ କ୍ୟାପ୍‌ଚର୍ କରାଗଲା (ଏପର୍ଯ୍ୟନ୍ତ ଅପ୍‌ଲୋଡ୍ କରାଯାଇନାହିଁ ବା ଅଣଦେଖା କରାଯାଇଛି)</translation>
 <translation id="1270502636509132238">ଉଠାଇବା ପଦ୍ଧତି</translation>
 <translation id="1285320974508926690">ଏହି ସାଇଟ୍‍କୁ କଦାପି ଅନୁବାଦ କରନ୍ତୁ ନାହିଁ</translation>
+<translation id="1285400217480592994">ଆପଣ Chromeରୁ ଡାଉନ୍‍‍ଲୋଡ୍ କରୁଥିବା କିମ୍ବା ସେଥିରେ ଅପ୍‍‍ଲୋଡ୍ କରିଥିବା ଫାଇଲ୍‍ଗୁଡ଼ିକର ବିଷୟବସ୍ତୁକୁ ସ୍କାନ୍ କରନ୍ତୁ।</translation>
 <translation id="1292701964462482250">"ଆପଣଙ୍କ କମ୍ପ୍ୟୁଟର୍‌ରେ ଥିବା ସଫ୍ଟୱେୟାର୍ Chromeକୁ ୱେବ୍ ସହ ସୁରକ୍ଷିତ ସଂଯୋଗ କରିବାରେ ବାଧା ଦେଉଛି" (କେବଳ Windows କମ୍ପ୍ୟୁଟର୍)</translation>
 <translation id="1294154142200295408">କମାଣ୍ଡ-ଲାଇନ୍‍ ଭିନ୍ନତା</translation>
 <translation id="129553762522093515">ବର୍ତ୍ତମାନ ବନ୍ଦ ହୋଇଛି</translation>
@@ -277,12 +279,14 @@
 <translation id="2250931979407627383">ବାମ ପଟରେ ଏଜ୍ ଷ୍ଟିଚ୍</translation>
 <translation id="225207911366869382">ଏହି ମୂଲ୍ୟ, ଏହି ନୀତି ପାଇଁ ଅଗ୍ରାହ୍ୟ କରାଯାଇଛି।</translation>
 <translation id="2258928405015593961">ଭବିଷ୍ୟତରେ ଏକ ମିଆଦ ଶେଷ ହେଉଥିବା ତାରିଖ ଲେଖନ୍ତୁ ଏବଂ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ</translation>
+<translation id="225943865679747347">ତ୍ରୁଟି କୋଡ୍: <ph name="ERROR_CODE" /></translation>
 <translation id="2262243747453050782">HTTP ତ୍ରୁଟି</translation>
 <translation id="2263079731045660823">Chrome ସେଟିଂସ୍‍‍ରେ କ୍ରେଡିଟ୍‍ କାର୍ଡ ସ୍ୱତଃପୂରଣ ସୂଚନା ଅପ୍‍‍ଡେଟ୍ କରନ୍ତୁ</translation>
 <translation id="2267047181501709434">ଆପଣଙ୍କ ପରିଚୟ ଯାଞ୍ଚ କରାଯାଉଛି...</translation>
 <translation id="2270484714375784793">ଫୋନ୍ ନମ୍ଵର</translation>
 <translation id="2277103315734023688">ଆଗକୁ ବଢ଼ାନ୍ତୁ</translation>
 <translation id="2283340219607151381">ଠିକଣାଗୁଡ଼ିକ ସେଭ୍ କରି ପୂରଣ କରନ୍ତୁ</translation>
+<translation id="2288422996159078444">ୱେବ୍‌ରେ ଆପଣ ଯାହା କିଛି ଟାଇପ୍ କରନ୍ତି, ଯେଉଁ ପୃଷ୍ଠା ଆପଣ ଦେଖନ୍ତି କିମ୍ବା ଅନ୍ୟ କୌଣସି କାର୍ଯ୍ୟକଳାପ କରନ୍ତି ତାହା ନିରୀକ୍ଷଣ କରାଯାଉଛି। ଆପଣଙ୍କର ଅଜାଣତରେ ସାଇଟ୍‌ଗୁଡ଼ିକର ବିଷୟବସ୍ତୁ ପରିବର୍ତ୍ତନ କରାଯାଇପାରେ।</translation>
 <translation id="2289385804009217824">ଟ୍ରିମ୍</translation>
 <translation id="2292556288342944218">ଆପଣଙ୍କ ଇଣ୍ଟର୍ନେ‍ଟ୍ ଆକ୍ସେସ୍ ବ୍ଲକ୍ କରାଯାଇଛି</translation>
 <translation id="2297722699537546652">B5 (ଏନଭଲପ୍)</translation>
@@ -425,6 +429,7 @@
 <translation id="2989742184762224133">ଉପର ପଟରେ ଦୁଇଟି ଷ୍ଟାପଲ୍</translation>
 <translation id="2991174974383378012">ୱେବ୍‍ସାଇଟ୍ ସହିତ ସେୟାର୍ କରାଯାଇଛି</translation>
 <translation id="2991571918955627853">ବର୍ତ୍ତମାନ ଆପଣ <ph name="SITE" />କୁ ଯାଇପାରିବେ ନାହିଁ କାରଣ ୱେବ୍‌ସାଇଟ୍‍ HSTS ବ୍ୟବହାର କରେ। ସାଧାରଣତଃ ନେଟ୍‍ୱର୍କ ତ୍ରୁଟି ଏବଂ ଆକ୍ରମଣ ଅସ୍ଥାୟୀ ଅଟେ, ତେଣୁ ସମ୍ଭବତଃ ଏହି ପୃଷ୍ଠା ପରେ କାର୍ଯ୍ୟ କରିବ।</translation>
+<translation id="2996674880327704673">Google ଠାରୁ ପ୍ରାପ୍ତ ପ୍ରସ୍ତାବଗୁଡ଼ିକ</translation>
 <translation id="3005723025932146533">ସେଭ୍ ହୋଇଥିବା କପି ଦେଖାନ୍ତୁ</translation>
 <translation id="3008447029300691911"><ph name="CREDIT_CARD" />ର CVC ଲେଖନ୍ତୁ। ଆପଣ ଥରେ ସୁନିଶ୍ଚିତ କରିବା ପରେ, ଆପଣଙ୍କର କାର୍ଡର ବିବରଣୀ ଏହି ସାଇଟ୍‌ ସହିତ ସେୟାର୍‌ କରାଯିବ।</translation>
 <translation id="3010559122411665027">ତାଲିକା ଏଣ୍ଟ୍ରି "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -437,6 +442,7 @@
 <translation id="3060227939791841287">C9 (ଏନଭଲପ୍)</translation>
 <translation id="3061707000357573562">ପ୍ୟାଚ୍ ସେବା</translation>
 <translation id="3064966200440839136">ଏକ ଏକ୍ସଟର୍ନଲ୍‌ ଆପ୍ଲିକେସନ୍‌ ମାଧ୍ୟମରେ ଦେୟ ଦେବାକୁ ଇନ୍‌କଗ୍ନିଟୋ ମୋଡ୍‌ ଛାଡୁଛନ୍ତି। ଜାରି ରଖିବେ?</translation>
+<translation id="3086579638707268289">ୱେବ୍‍‍ରେ ଆପଣଙ୍କର କାର୍ଯ୍ୟକଳାପକୁ ନିରୀକ୍ଷଣ କରାଯାଉଛି</translation>
 <translation id="3095940652251934233">ବକ୍ତବ୍ୟ</translation>
 <translation id="3096100844101284527">ପିକ୍‍ଅପ୍‍ର ଠିକଣା ଯୋଗ କରନ୍ତୁ</translation>
 <translation id="3105172416063519923">ଆସେଟ୍ ID:</translation>
@@ -487,6 +493,7 @@
 <translation id="3369192424181595722">ଘଣ୍ଟାରେ ତ୍ରୁଟି</translation>
 <translation id="337363190475750230">ପ୍ରାବଧାନ କରାଯାଇନାହିଁ</translation>
 <translation id="3377188786107721145">ନୀତି ବିଶ୍ଳେଷଣ ତ୍ରୁଟି</translation>
+<translation id="3377736046129930310">କାର୍ଡଗୁଡ଼ିକୁ ତୁରନ୍ତ ସୁନିଶ୍ଚିତ କରିବା ପାଇଁ ସ୍କ୍ରିନ୍ ଲକ୍ ବ୍ୟବହାର କରନ୍ତୁ</translation>
 <translation id="3380365263193509176">ଅଜଣା ତୃଟି</translation>
 <translation id="3380864720620200369">କ୍ଲାଏଣ୍ଟ ID:</translation>
 <translation id="3387261909427947069">ପେମେଣ୍ଟ ପଦ୍ଧତି</translation>
@@ -646,6 +653,7 @@
 <translation id="4194250254487269611">ବର୍ତ୍ତମାନ ଆପଣଙ୍କର କାର୍ଡ ସେଭ୍ କରାଯାଇପାରିବ ନାହିଁ</translation>
 <translation id="4196861286325780578">&amp;ଘୁଞ୍ଚାଇବା କାର୍ଯ୍ୟଟି ପୁଣିଥରେ କରନ୍ତୁ</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />ଫାୟାର୍‌ୱାଲ୍‌ ଏବଂ ଆଣ୍ଟିଭାଇରସ୍‌ କନ୍‌ଫିଗ୍‌ରେସନ୍‌ ଯାଞ୍ଚ ହେଉଛି<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">ସାଇନ୍-ଇନ୍ ସ୍କ୍ରିନ୍ ପ୍ରୋଫାଇଲ୍</translation>
 <translation id="4215751373031079683">7x9 (ଏନଭଲପ୍)</translation>
 <translation id="4220128509585149162">କ୍ରାସ୍</translation>
 <translation id="422022731706691852"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" />ରେ ଥିବା ଆକ୍ରମଣକାରୀମାନେ ଆପଣଙ୍କ ସହିତ ଛଳନା କରି ଏପରି ପ୍ରୋଗ୍ରାମ୍ ଇନ୍‌ଷ୍ଟଲ୍ କରିବାକୁ ଚେଷ୍ଟା କରିପାରନ୍ତି ଯାହା ଆପଣଙ୍କର ବ୍ରାଉଜିଂ ଅଭିଜ୍ଞତାକୁ କ୍ଷତି ପହଞ୍ଚାଇପାରେ (ଉଦାହରଣସ୍ଵରୂପ, ଆପଣଙ୍କର ମୂଳପୃଷ୍ଠାରେ ପରିବର୍ତ୍ତନ କରିବା ଦ୍ୱାରା କିମ୍ବା ଆପଣ ଦେଖୁଥିବା ସାଇଟ୍‌ଗୁଡ଼ିକରେ ଅତିରିକ୍ତ ବିଜ୍ଞାପନ ପ୍ରଦର୍ଶନ କରିବା)। <ph name="BEGIN_LEARN_MORE_LINK" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -728,6 +736,7 @@
 <translation id="4515275063822566619">କାର୍ଡ ଓ ଠିକଣାଗୁଡ଼ିକ ଆପଣଙ୍କର Google ଆକାଉଣ୍ଟ (<ph name="ACCOUNT_EMAIL" />)ରୁ ଆସିଛି। ଆପଣ ସେଗୁଡ଼ିକୁ <ph name="BEGIN_LINK" />ସେଟିଂସ୍‍<ph name="END_LINK" />ରେ ପରିଚାଳନ କରିପାରିବେ।</translation>
 <translation id="4517607026994743406">Comm-10 (ଏନଭଲପ୍)</translation>
 <translation id="4522570452068850558">ବିବରଣୀ</translation>
+<translation id="4524138615196389145">ବର୍ତ୍ତମାନ ଠାରୁ WebAuthn ବ୍ୟବହାର କରି ଆପଣଙ୍କର କାର୍ଡଗୁଡ଼ିକୁ ତୁରନ୍ତ ସୁନିଶ୍ଚିତ କରନ୍ତୁ</translation>
 <translation id="4524805452350978254">କାର୍ଡଗୁଡ଼ିକ ପରିଚାଳନା କରନ୍ତୁ</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">ଫ୍ଲାସ୍‍</translation>
@@ -838,6 +847,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">ୟୁରୋପିଆନ୍-Edp</translation>
 <translation id="5115563688576182185">(64-bit)</translation>
+<translation id="5121469660360593280">ଆପଣଙ୍କର ଆଡ୍‍ମିନିଷ୍ଟ୍ରେଟର୍‍ଙ୍କ ସହ Chrome ଏଣ୍ଟର୍‍ପ୍ରାଇଜ୍ ଉପଯୋଗକର୍ତ୍ତା ସୁରକ୍ଷା ଦ୍ୱାରା ଫ୍ଲାଗ୍ କରାଯାଇଥିବା ସୁରକ୍ଷା ଇଭେଣ୍ଟଗୁଡ଼ିକ ବିଷୟରେ ଡାଟା ସେୟାର୍ କରନ୍ତୁ। ଏଥିରେ ଆପଣ ଯାଉଥିବା ପୃଷ୍ଠାଗୁଡ଼ିକର URL, ଫାଇଲ୍‍ଗୁଡ଼ିକର ନାମ କିମ୍ବା ମେଟାଡାଟା ଏବଂ ଆପଣ ଆପଣଙ୍କର ଡିଭାଇସ୍ ଓ Chromeରେ ସାଇନ୍ ଇନ୍ କରିବା ପାଇଁ ବ୍ୟବହାର କରୁଥିବା ଉପଯୋଗକର୍ତ୍ତାନାମ ଥାଇପାରେ।</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">ଆପଣଙ୍କର କାର୍ଡ ଯାଞ୍ଚ କରନ୍ତୁ</translation>
 <translation id="5135404736266831032">ଠିକଣାଗୁଡ଼ିକ ପରିଚାଳିତ କରନ୍ତୁ...</translation>
@@ -849,6 +859,7 @@
 <translation id="5159010409087891077">ଏକ ନୂଆ ଇନ୍‌କଗ୍ନିଟୋ ୱିଣ୍ଡୋରେ ପୃଷ୍ଠା ଖୋଲନ୍ତୁ (⇧⌘N)</translation>
 <translation id="516920405563544094"><ph name="CREDIT_CARD" />ର CVC ଲେଖନ୍ତୁ। ଆପଣ ସୁନିଶ୍ଚିତ କରିବା ପରେ, ଆପଣଙ୍କର Google ଆକାଉଣ୍ଟରୁ କାର୍ଡର ବିବରଣୀ ଏହି ସାଇଟ୍‌ ସହିତ ସେୟାର୍‌ କରାଯିବ।</translation>
 <translation id="5169827969064885044">ଆପଣଙ୍କ ସଂସ୍ଥାର ଆକାଉଣ୍ଟକୁ ଥିବା ଆକ୍ସେସ୍ ହରାଇବା କିମ୍ବା ନିଜର ପରିଚୟ ଚୋରି ହେବାର ଅନୁଭୁତି ପ୍ରାପ୍ତ କରିପାରନ୍ତି। ବର୍ତ୍ତମାନ, Chrome ଆପଣଙ୍କୁ ପାସ୍‌ୱର୍ଡ ପରିବର୍ତ୍ତନ କରିବା ପାଇଁ ସୁପାରିଶ୍‌ କରୁଛି।</translation>
+<translation id="5170017743895942767">Chrome ଏଣ୍ଟର୍‍ପ୍ରାଇଜ୍ ଉପଯୋଗକର୍ତ୍ତା ସୁରକ୍ଷା</translation>
 <translation id="5171045022955879922">ଖୋଜନ୍ତୁ କିମ୍ବା URL ଟାଇପ୍ କରନ୍ତୁ</translation>
 <translation id="5171689220826475070">ଫ୍ୟାନ୍‌ଫୋଲ୍ଡ-ୟୁରୋପିଆନ୍</translation>
 <translation id="5172758083709347301">ମେସିନ୍</translation>
@@ -969,6 +980,7 @@
 <translation id="5730040223043577876">ଯଦି ଆପଣ ଆପଣଙ୍କର ପାସ୍‍ୱର୍ଡ ଅନ୍ୟ ସାଇଟ୍‍‍ରେ ପୁନଃବ୍ୟବହାର କରିଛନ୍ତି, ତେବେ Chrome ଏହାକୁ ରିସେଟ୍ କରିବା ପାଇଁ ସୁପାରିଶ୍ କରୁଛି।</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{ଆପଣଙ୍କ Google ଆକାଉଣ୍ଟରେ କାର୍ଡ ସେଭ୍ କରନ୍ତୁ}other{ଆପଣଙ୍କ Google ଆକାଉଣ୍ଟରେ କାର୍ଡ ସେଭ୍ କରନ୍ତୁ}}</translation>
 <translation id="5763042198335101085">ଏକ ବୈଧ ଇମେଲ୍ ଠିକଣା ଲେଖନ୍ତୁ</translation>
+<translation id="5763703224595565476">ଆପଣଙ୍କ ଆଡ୍‍ମିନିଷ୍ଟ୍ରେଟର୍ ଆପଣଙ୍କର ବ୍ରାଉଜର୍‍‍ରେ Chrome ଏଣ୍ଟର୍‍ପ୍ରାଇଜ୍ ଉପଯୋଗକର୍ତ୍ତା ସୁରକ୍ଷା ସକ୍ଷମ କରିଛନ୍ତି। Chrome ଏଣ୍ଟର୍‍ପ୍ରାଇଜ୍ ଉପଯୋଗକର୍ତ୍ତା ସୁରକ୍ଷାର ଆପଣଙ୍କର କିଛି ଡାଟାକୁ ଆକ୍ସେସ୍ ଅଛି।</translation>
 <translation id="5765072501007116331">ବିତରଣ ପଦ୍ଧତି ଓ ଆବଶ୍ୟକତା ଦେଖିବା ପାଇଁ ଗୋଟିଏ ଠିକଣା ଚୟନ କରନ୍ତୁ</translation>
 <translation id="5778550464785688721">MIDI ଡିଭାଇସ୍‌ ପୂର୍ଣ୍ଣ ନିୟନ୍ତ୍ରଣ</translation>
 <translation id="5781136890105823427">ପରୀକ୍ଷଣ କରାଯାଇଛି</translation>
@@ -1048,6 +1060,7 @@
 <translation id="6094273045989040137">ବ୍ୟାଖ୍ୟା କରନ୍ତୁ</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129"><ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />ରେ ହୁଏତ ଆପଣଙ୍କ Google ଆକାଉଣ୍ଟର ଅନ୍ୟାନ୍ୟ ଧରଣର ବ୍ରାଉଜିଂ ଇତିବୃତ୍ତି ଥାଇପାରେ</translation>
+<translation id="6120179357481664955">ଆପଣଙ୍କର UPI ID ମନେ ଅଛି?</translation>
 <translation id="6132597952260690497">ଇନ୍‌ଷ୍ଟଲ୍ ହୋଇଥିବା ଏକ୍ସଟେନ୍‌ସନ୍‍ଗୁଡ଼ିକ ଏବଂ ପ୍ଲଗ୍‍ଇନ୍‌ଗୁଡ଼ିକ ବିଷୟରେ ସୂଚନା</translation>
 <translation id="6146055958333702838">ଯେକୌଣସି କେବଲ୍‌ ଯାଞ୍ଚ କରନ୍ତୁ ଏବଂ ଆପଣଙ୍କ ଦ୍ୱାରା ବ୍ୟବହାର କରାଯାଉଥିବା ଯେକୌଣସି ରାଉଟର୍‌, ମୋଡେମ୍‍ କିମ୍ବା ଅନ୍ୟ ରାଉଟର୍‌ ରିବୁଟ୍‌ କରନ୍ତୁ।</translation>
 <translation id="614940544461990577">ଏହାକୁ ପରଖନ୍ତୁ:</translation>
@@ -1062,6 +1075,7 @@
 <translation id="6221345481584921695">Google ସେଫ୍ ବ୍ରାଉଜିଂ, ସମ୍ପ୍ରତି <ph name="SITE" />ରେ <ph name="BEGIN_LINK" />ମାଲ୍‌ୱେର୍ ଚିହ୍ନଟ କରିଛି<ph name="END_LINK" />। ପ୍ରାୟତଃ ସୁରକ୍ଷିତ ରହୁଥିବା ୱେବ୍‌ସାଇଟ୍‌ଗୁଡ଼ିକ ବେଳେବେଳେ ମାଲ୍‌ୱେର୍ ଦ୍ୱାରା ସଂକ୍ରମିତ ହୋଇଥାନ୍ତି। ଏହି ଦ୍ୱେଷଯୁକ୍ତ ବିଷୟବସ୍ତୁ <ph name="SUBRESOURCE_HOST" />ରୁ ଆସିଥାଏ, ଯାହା ଏକ ଜଣାଶୁଣା ମାଲ୍‌ୱେର୍ ବିତରକ ଅଟେ।</translation>
 <translation id="6234122620015464377">ପ୍ରତ୍ୟେକ ଡକ୍ୟୁମେଣ୍ଟ ପରେ ଟ୍ରିମ୍ କରନ୍ତୁ</translation>
 <translation id="6240447795304464094">Google Pay ଲୋଗୋ</translation>
+<translation id="6241121617266208201">ପ୍ରାସ୍ତାବଗୁଡ଼ିକୁ ଲୁଚାନ୍ତୁ</translation>
 <translation id="6251924700383757765">ଗୋପନୀୟତା ନୀତି</translation>
 <translation id="6254436959401408446">ଏହି ପୃଷ୍ଠା ଖୋଲିବା ପାଇଁ ପର୍ଯ୍ୟାପ୍ତ ମେମୋରୀ ନାହିଁ</translation>
 <translation id="625755898061068298">ଆପଣ ଏହି ସାଇଟ୍ ପାଇଁ, ସୁରକ୍ଷା ଚେତାବନୀଗୁଡ଼ିକୁ ଅକ୍ଷମ କରିବା ନିମନ୍ତେ ବାଛିଛନ୍ତି।</translation>
@@ -1108,6 +1122,7 @@
 <translation id="6409754798200046165">ଆପଣ ବର୍ତ୍ତମାନ ଏକ ପ୍ରତାରଣାମୂଳକ ୱେବ୍‍ସାଇଟ୍‌ରେ ଆପଣଙ୍କର ପାସ୍‍ୱାର୍ଡ ଲେଖିଛନ୍ତି। ବର୍ତ୍ତମାନ Chrome ଆପଣଙ୍କୁ ପାସ୍‌ୱାର୍ଡ ପରିବର୍ତ୍ତନ କରିବା ପାଇଁ ସୁପାରିଶ କରୁଛି।</translation>
 <translation id="6410264514553301377"><ph name="CREDIT_CARD" /> ପାଇଁ ମିଆଦ ଶେଷ ହେଉଥିବା ତାରିଖ ଏବଂ CVC ଲେଖନ୍ତୁ</translation>
 <translation id="6415778972515849510">Chromium ଆପଣଙ୍କୁ ଆପଣଙ୍କର Google ଆକାଉଣ୍ଟକୁ ସୁରକ୍ଷିତ ରଖିବା ଏବଂ ଆପଣଙ୍କର ପାସ୍‍ୱାର୍ଡ ବଦଳାଇବାରେ ସାହାଯ୍ୟ କରିପାରିବ।</translation>
+<translation id="6423385022588644828">ବର୍ତ୍ତମାନ ଠାରୁ Touch ID ବ୍ୟବହାର କରି ଆପଣଙ୍କର କାର୍ଡଗୁଡ଼ିକୁ ତୁରନ୍ତ ସୁନିଶ୍ଚିତ କରନ୍ତୁ</translation>
 <translation id="6427730057873428458">ଗେଟ୍ ଫୋଲ୍ଡ</translation>
 <translation id="6433490469411711332">ଯୋଗାଯୋଗ ସୂଚନା ଏଡିଟ୍‍ କରନ୍ତୁ</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> ସଂଯୋଗ କରିବାକୁ ଅସ୍ୱୀକାର କରିଛନ୍ତି।</translation>
@@ -1178,12 +1193,14 @@
 <translation id="6786747875388722282">ପରିବର୍ଦ୍ଧନ</translation>
 <translation id="6790428901817661496">ଚଲାନ୍ତୁ</translation>
 <translation id="679355240208270552">ଏହି ନୀତି ଦ୍ୱାରା 'ଡିଫଲ୍ଟ ସନ୍ଧାନ' ସକ୍ଷମ କରାଯାଇନଥିବା ଯୋଗୁଁ ଏହାକୁ ଅଣଦେଖା କରାଗଲା।</translation>
+<translation id="6794951432696553238">ବର୍ତ୍ତମାନ ଠାରୁ Windows Hello ବ୍ୟବହାର କରି ଆପଣଙ୍କର କାର୍ଡଗୁଡ଼ିକୁ ତୁରନ୍ତ ସୁନିଶ୍ଚିତ କରନ୍ତୁ</translation>
 <translation id="681021252041861472">ଆବଶ୍ୟକୀୟ କ୍ଷେତ୍ର</translation>
 <translation id="6810899417690483278">କଷ୍ଟମାଇଜେସନ୍ ID</translation>
 <translation id="6825578344716086703">ଆପଣ <ph name="DOMAIN" />ପର୍ଯ୍ୟନ୍ତ ପହଞ୍ଚିବାକୁ ପ୍ରଚେଷ୍ଟା କରିଥିଲେ, କିନ୍ତୁ ସର୍ଭର୍‍ ଏକ ଦୁର୍ବଳ ଦସ୍ତଖତ ଏଲଗୋରାଦିମ୍ (ଯେପରିକି SHA-1)କୁ ବ୍ୟବହାର କରି ଏକ ଦସ୍ତଖତ ସାର୍ଟିଫିକେଟ୍ ଉପସ୍ଥାପନ କରିଥିଲା। ଏହାର ଅର୍ଥ ଏହା ଯେ, ସର୍ଭର୍ ଉପସ୍ଥାପନା କରୁଥିବା ସୁରକ୍ଷା କ୍ରେଡେନ୍‍ସିଆଲ୍ସ ନକଲି ହୋଇପାରେ, ଏବଂ ହୁଏତ ଏହି ସର୍ଭର୍‌ଟି ଆପଣଙ୍କର ପ୍ରତ୍ୟାଶିତ ସର୍ଭର୍ ହୋଇନପାରେ (ଆପଣ ହୁଏତ ଜଣେ ଆକ୍ରମଣକାରୀଙ୍କ ସହିତ ସମ୍ପର୍କ କରୁଥାଇପାରନ୍ତି)।</translation>
 <translation id="6826370046007623921">ଡାଟା ହରାଇବା ପ୍ରତିରୋଧ</translation>
 <translation id="6831043979455480757">ଅନୁବାଦ କରନ୍ତୁ</translation>
 <translation id="6839929833149231406">କ୍ଷେତ୍ର</translation>
+<translation id="6846340164947227603">ଏକ ଭର୍ଚୁଆଲ୍ କାର୍ଡ ନମ୍ବର ବ୍ୟବହାର କରନ୍ତୁ...</translation>
 <translation id="6852204201400771460">ଆପ୍‌କୁ ରିଲୋଡ୍ କରିବେ କି?</translation>
 <translation id="6865412394715372076">ବର୍ତ୍ତମାନ ଏହି କାର୍ଡ ଯାଞ୍ଚ କରାଯାଇପାରିବ ନାହିଁ</translation>
 <translation id="6868206169573555318">ଅପ୍‌ଡେଟ୍‌ କରିବାକୁ ପୁଣି ଲଞ୍ଚ କରନ୍ତୁ</translation>
@@ -1212,6 +1229,7 @@
 <translation id="6989763994942163495">ଉନ୍ନତ ସେଟିଂସ୍‌ ଦେଖାନ୍ତୁ...</translation>
 <translation id="6993898126790112050">6x9 (ଏନଭଲପ୍)</translation>
 <translation id="6996312675313362352">ସର୍ବଦା <ph name="ORIGINAL_LANGUAGE" />କୁ ଅନୁବାଦ କରନ୍ତୁ</translation>
+<translation id="7004583254764674281">କାର୍ଡଗୁଡ଼ିକୁ ତୁରନ୍ତ ସୁନିଶ୍ଚିତ କରିବା ପାଇଁ Windows Hello ବ୍ୟବହାର କରନ୍ତୁ</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">ଏହି ଶୁଳ୍କଗୁଡ଼ିକ ଗୋଟିଏ ଥର କିମ୍ବା ବାରମ୍ବାର ଲାଗୁ ହୋ‍ଇପାରେ ଏବଂ ସ୍ପଷ୍ଟ ଭାବରେ ଲାଗୁ ହୋ‍ଇନପାରେ।</translation>
 <translation id="7029809446516969842">ପାସୱାର୍ଡଗୁଡିକ</translation>
@@ -1222,6 +1240,7 @@
 <translation id="7064851114919012435">ଯୋଗାଯୋଗ ସୂଚନା</translation>
 <translation id="7075452647191940183">ଅନୁରୋଧଟି ବହୁତ ଲମ୍ବା ଅଟେ</translation>
 <translation id="7079718277001814089">ଏହି ସାଇଟ୍‌ରେ ମାଲ୍‌ୱେର୍‌ ଅଛି।</translation>
+<translation id="7081308185095828845">ଆପଣଙ୍କର ଡିଭାଇସ୍‌ରେ ଏହି ଫିଚର୍‍ଟି ଉପଲବ୍ଧ ନାହିଁ</translation>
 <translation id="7087282848513945231">ଦେଶ</translation>
 <translation id="7090678807593890770"><ph name="LINK" /> ପାଇଁ Googleରେ ଖୋଜନ୍ତୁ</translation>
 <translation id="7108338896283013870">ଲୁଚାନ୍ତୁ</translation>
@@ -1275,9 +1294,11 @@
 <translation id="733923710415886693">ସର୍ଭର୍‍ର ସାର୍ଟିଫିକେଟ୍, ସାର୍ଟିଫିକେଟ୍ ସ୍ଵଚ୍ଛତା ମାଧ୍ୟମରେ ପ୍ରକାଶ କରାଯାଇନାହିଁ।</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">ସ୍ବୀକୃତି ପ୍ରାପ୍ତ କି ନୁହେଁ:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> ଆପଣଙ୍କର ବ୍ରାଉଜର୍‍‍ରେ Chrome ଏଣ୍ଟର୍‍ପ୍ରାଇଜ୍ ଉପଯୋଗକର୍ତ୍ତା ସୁରକ୍ଷା ସକ୍ଷମ କରିଛନ୍ତି। Chrome ଏଣ୍ଟର୍‍ପ୍ରାଇଜ୍ ଉପଯୋଗକର୍ତ୍ତା ସୁରକ୍ଷାର ଆପଣଙ୍କର କିଛି ଡାଟାକୁ ଆକ୍ସେସ୍ ଅଛି।</translation>
 <translation id="7349430561505560861">A4-ଅତିରିକ୍ତ</translation>
 <translation id="7353601530677266744">କମାଣ୍ଡ ଲାଇନ୍‌</translation>
 <translation id="7372973238305370288">ସନ୍ଧାନ ଫଳାଫଳ</translation>
+<translation id="7374733840632556089">ଆପଣ କିମ୍ବା ଅନ୍ୟ କେହି ଜଣେ ଆପଣଙ୍କ ଡିଭାଇସ୍‌ରେ ଇନଷ୍ଟଲ୍ କରିଥିବା ଏକ ସାର୍ଟିଫିକେଟ୍ ଯୋଗୁଁ ଏହି ସମସ୍ୟାଟି ହୋଇଥାଏ। ସାର୍ଟିଫିକେଟ୍‍ଟି ନେଟ୍‍ୱାର୍କଗୁଡ଼ିକର ନିରୀକ୍ଷଣ ଏବଂ ଗତିରୋଧ ନିମନ୍ତେ ବ୍ୟବହାର କରାଯାଇଥାଏ ବୋଲି ଜଣାଯାଏ ଏବଂ Chrome ଏହାକୁ ବିଶ୍ୱାସ କରେ ନାହିଁ। ଯଦିଓ କୌଣସି ସ୍କୁଲ୍ କିମ୍ବା କମ୍ପାନୀ ନେଟ୍‍ୱାର୍କ ପରି ନିରୀକ୍ଷଣ ପାଇଁ କିଛି ବୈଧ ଉଦାହରଣ ବିଦ୍ୟମାନ ଅଛି, Chrome ଏହା ସୁନିଶ୍ଚିତ କରିବାକୁ ଚାହେଁ ଯେ, ଆପଣ ଏହାକୁ ବନ୍ଦ ନକରିପାରିଲେ ମଧ୍ୟ ଆପଣ ଏହା ହେଉଥିବା ବିଷୟରେ ଅବଗତ ରୁହନ୍ତୁ। ୱେବ୍ ଆକ୍ସେସ୍ କରିପାରୁଥିବା ଯେ କୌଣସି ବ୍ରାଉଜର୍ କିମ୍ବା ଆପ୍ଲିକେସନ୍‍‍ରେ ନିରୀକ୍ଷଣ ହୋଇପାରେ।</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">ମିଡିଆକୁ ନିୟନ୍ତ୍ରଣ କରୁଛି</translation>
 <translation id="7378627244592794276">ନାହିଁ</translation>
@@ -1306,6 +1327,7 @@
 <translation id="7451311239929941790">ଏହି ସମସ୍ୟା ବିଷୟରେ <ph name="BEGIN_LINK" />ଅଧିକ ଜାଣନ୍ତୁ<ph name="END_LINK" />।</translation>
 <translation id="7455133967321480974">ବିଶ୍ୱବ୍ୟାପୀ ଡିଫଲ୍ଟ ବ୍ୟବହାର କରନ୍ତୁ (ଅବରୋଧ କରନ୍ତୁ)</translation>
 <translation id="7460618730930299168">ଆପଣ ଚୟନ କରିଥିବା ସ୍କ୍ରିନିଂ ଠାରୁ ଏହା ଭିନ୍ନ ଅଟେ। ଜାରି ରଖିବେ କି?</translation>
+<translation id="7464821087936825778">ସନ୍ଧାନ ମୋଡ୍‌ରୁ ପ୍ରସ୍ଥାନ କରୁଛି</translation>
 <translation id="7473891865547856676">ନାହିଁ, ଧନ୍ୟବାଦ</translation>
 <translation id="7481312909269577407">ଅଗ୍ରଗତି</translation>
 <translation id="7485870689360869515">କୌଣସି ଡାଟା ମିଳିଲା ନାହିଁ।</translation>
@@ -1527,6 +1549,7 @@
 <translation id="8559762987265718583"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />କୁ ଏକ ବ୍ୟକ୍ତିଗତ ସଂଯୋଗ ସ୍ଥାପନ କରାଯାଇପାରିବ ନାହିଁ କାରଣ, ଆପଣଙ୍କ ଡିଭାଇସ୍‌ର ତାରିଖ ଏବଂ ସମୟ (<ph name="DATE_AND_TIME" />) ଭୁଲ ଅଛି।</translation>
 <translation id="8564985650692024650">ଆପଣ ଯଦି ଆପଣଙ୍କର <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> ପାସ୍‌ୱାର୍ଡକୁ ଅନ୍ୟ ସାଇଟ୍‌ଗୁଡ଼ିକରେ ପୁନଃ ବ୍ୟବହାର କରିଛନ୍ତି, ତେବେ Chromium ଆପଣଙ୍କୁ ଏହି ପାସ୍‌ୱାର୍ଡକୁ ରିସେଟ୍ କରିବା ପାଇଁ ସୁପାରିଶ କରୁଛି।</translation>
 <translation id="8571890674111243710"><ph name="LANGUAGE" />ରେ ପୃଷ୍ଠା ଅନୁବାଦ କରୁଛି...</translation>
+<translation id="8574899947864779331">କାର୍ଡଗୁଡ଼ିକୁ ତୁରନ୍ତ ସୁନିଶ୍ଚିତ କରିବା ପାଇଁ Touch ID ବ୍ୟବହାର କରନ୍ତୁ</translation>
 <translation id="858637041960032120">ଫୋନ୍‌ ନମ୍ବର୍‍ ଯୋଗ କରନ୍ତୁ</translation>
 <translation id="860043288473659153">କାର୍ଡହୋଲ୍ଡର୍‌ର ନାମ</translation>
 <translation id="8616822740383114808">"<ph name="SETTINGS_PAGE" />" ରେ "<ph name="ENFORCING_SETTING" />" ଦ୍ୱାରା ଏହି ସେଟିଂ ଲାଗୁ କରାଯାଇଛି</translation>
diff --git a/components/strings/components_strings_pl.xtb b/components/strings/components_strings_pl.xtb
index 0501c1dd..4344f015 100644
--- a/components/strings/components_strings_pl.xtb
+++ b/components/strings/components_strings_pl.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Wczytaj stronę później</translation>
 <translation id="1015730422737071372">Podaj dodatkowe informacje</translation>
 <translation id="1021110881106174305">Akceptowane karty</translation>
+<translation id="1021753677514347426">Ten problem pojawia się z powodu certyfikatu zainstalowanego na tym urządzeniu przez Ciebie lub inną osobę. Ten certyfikat jest używany do monitorowania i przechwytywania ruchu sieciowego. Chromium mu nie ufa. Choć w pewnych przypadkach (np. w sieci szkolnej lub firmowej) monitorowanie jest uzasadnione i legalne, Chromium będzie Cię o tym powiadamiać, nawet jeśli nie możesz nic na to poradzić. Monitorowanie może odbywać się w każdej przeglądarce lub aplikacji, która ma dostęp do sieci.</translation>
 <translation id="1032854598605920125">Obróć w prawo</translation>
 <translation id="1036348656032585052">Wyłącz</translation>
 <translation id="1038842779957582377">nieznana nazwa</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Utworzono raport o awarii w dniu: <ph name="CRASH_TIME" /> (nie został jeszcze przesłany ani zignorowany)</translation>
 <translation id="1270502636509132238">Metoda odbioru</translation>
 <translation id="1285320974508926690">Nigdy nie tłumacz tej witryny</translation>
+<translation id="1285400217480592994">Skanuj zawartość plików pobieranych i wysyłanych w Chrome.</translation>
 <translation id="1292701964462482250">„Oprogramowanie na Twoim komputerze uniemożliwia Chrome bezpieczne połączenie się z internetem” (tylko na komputerach z systemem Windows)</translation>
 <translation id="1294154142200295408">Odmiany w wierszu poleceń</translation>
 <translation id="129553762522093515">Ostatnio zamknięte</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Numer telefonu</translation>
 <translation id="2277103315734023688">Przewiń do przodu</translation>
 <translation id="2283340219607151381">Zapisuj i automatycznie uzupełniaj adresy</translation>
+<translation id="2288422996159078444">Wszystko co piszesz, przeglądane przez Ciebie strony i wszelka pozostała aktywność w internecie są monitorowane. Oprócz tego bez Twojej wiedzy mogą zostać zmienione treści na stronach.</translation>
 <translation id="2289385804009217824">Przycięcie</translation>
 <translation id="2292556288342944218">Masz zablokowany dostęp do internetu</translation>
 <translation id="2297722699537546652">B5 (koperta)</translation>
@@ -436,6 +439,7 @@
 <translation id="2989742184762224133">Dwie zszywki u góry</translation>
 <translation id="2991174974383378012">Udostępnianie stronom internetowym</translation>
 <translation id="2991571918955627853">Nie możesz teraz wejść na stronę <ph name="SITE" />, ponieważ używa ona HSTS. Błędy sieciowe i ataki są zazwyczaj tymczasowe, więc prawdopodobnie strona będzie dostępna później.</translation>
+<translation id="2996674880327704673">Sugestie Google</translation>
 <translation id="3005723025932146533">Pokaż zapisaną kopię</translation>
 <translation id="3008447029300691911">Wpisz kod CVC karty <ph name="CREDIT_CARD" />. Po potwierdzeniu szczegółowe dane karty zostaną udostępnione tej stronie.</translation>
 <translation id="3010559122411665027">Pozycja listy „<ph name="ENTRY_INDEX" />”: <ph name="ERROR" /></translation>
@@ -448,6 +452,7 @@
 <translation id="3060227939791841287">C9 (koperta)</translation>
 <translation id="3061707000357573562">Zastosowanie poprawki do usługi</translation>
 <translation id="3064966200440839136">Opuszczasz tryb incognito, by zapłacić w aplikacji zewnętrznej. Kontynuować?</translation>
+<translation id="3086579638707268289">Twoja aktywność w internecie jest monitorowana</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Dodaj adres odbioru</translation>
 <translation id="3105172416063519923">Identyfikator zasobu:</translation>
@@ -500,6 +505,7 @@
 <translation id="3369192424181595722">Błąd zegara</translation>
 <translation id="337363190475750230">Anulowano obsługę</translation>
 <translation id="3377188786107721145">Podczas przetwarzania zasady wystąpił błąd</translation>
+<translation id="3377736046129930310">Używaj blokady ekranu, by szybciej potwierdzać karty</translation>
 <translation id="3380365263193509176">Nieznany błąd</translation>
 <translation id="3380864720620200369">Identyfikator klienta:</translation>
 <translation id="3387261909427947069">Formy płatności</translation>
@@ -665,6 +671,7 @@
 <translation id="4194250254487269611">W tej chwili nie można zapisać karty</translation>
 <translation id="4196861286325780578">&amp;Ponów przeniesienie</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Sprawdź konfigurację zapory sieciowej i oprogramowania antywirusowego<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">profil ekranu logowania</translation>
 <translation id="4215751373031079683">7x9 (koperta)</translation>
 <translation id="4220128509585149162">Awarie</translation>
 <translation id="422022731706691852">Osoby atakujące na stronie <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> mogą próbować podstępem nakłonić Cię do zainstalowania programów utrudniających korzystanie z internetu (na przykład zmieniających stronę główną lub wyświetlających dodatkowe reklamy na odwiedzanych stronach). <ph name="BEGIN_LEARN_MORE_LINK" />Więcej informacji<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -747,6 +754,7 @@
 <translation id="4515275063822566619">Karty i adresy pochodzą z Chrome i Twojego konta Google (<ph name="ACCOUNT_EMAIL" />). Możesz nimi zarządzać w <ph name="BEGIN_LINK" />Ustawieniach<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Comm-10 (koperta)</translation>
 <translation id="4522570452068850558">Szczegóły</translation>
+<translation id="4524138615196389145">Potwierdzaj karty szybciej przy użyciu WebAuthn</translation>
 <translation id="4524805452350978254">Zarządzaj kartami</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -858,6 +866,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64-bitowa)</translation>
+<translation id="5121469660360593280">Udostępniaj administratorowi dane na temat zdarzeń związanych z bezpieczeństwem zgłoszonych przez Ochronę użytkowników Chrome Enterprise. Mogą one obejmować adresy URL odwiedzanych przez Ciebie stron, nazwy plików lub metadane oraz nazwę użytkownika, pod którą logujesz się na swoim urządzeniu i w Chrome.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Zweryfikuj kartę</translation>
 <translation id="5135404736266831032">Zarządzaj adresami…</translation>
@@ -869,6 +878,7 @@
 <translation id="5159010409087891077">Otwórz stronę w nowym oknie incognito (⇧⌘N)</translation>
 <translation id="516920405563544094">Wpisz kod CVC karty <ph name="CREDIT_CARD" />. Po potwierdzeniu dane karty z Twojego konta Google zostaną udostępnione tej stronie.</translation>
 <translation id="5169827969064885044">Możesz stracić dostęp do swojego konta organizacji lub paść ofiarą kradzieży tożsamości. Chrome zaleca natychmiastową zmianę hasła.</translation>
+<translation id="5170017743895942767">Ochrona użytkowników Chrome Enterprise</translation>
 <translation id="5171045022955879922">Wyszukaj lub wpisz URL</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Komputer</translation>
@@ -989,6 +999,7 @@
 <translation id="5730040223043577876">Chrome zaleca zresetowanie hasła, jeśli zostało użyte na innej stronie.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Zapisywanie karty na koncie Google}few{Zapisywanie kart na koncie Google}many{Zapisywanie kart na koncie Google}other{Zapisywanie kart na koncie Google}}</translation>
 <translation id="5763042198335101085">Wpisz prawidłowy adres e-mail</translation>
+<translation id="5763703224595565476">Twój administrator włączył w Twojej przeglądarce Ochronę użytkowników Chrome Enterprise. Ochrona użytkowników Chrome Enterprise ma dostęp do niektórych Twoich danych.</translation>
 <translation id="5765072501007116331">Aby zobaczyć metody dostawy oraz wymagania, wybierz adres</translation>
 <translation id="5778550464785688721">Pełne sterowanie urządzeniami MIDI</translation>
 <translation id="5781136890105823427">Eksperyment włączony</translation>
@@ -1068,6 +1079,7 @@
 <translation id="6094273045989040137">Dodaj adnotacje</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">Inne rodzaje historii przeglądania mogą być nadal dostępne na Twoim koncie Google na <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
+<translation id="6120179357481664955">Zapamiętać Twój identyfikator UPI?</translation>
 <translation id="6132597952260690497">Informacje o zainstalowanych rozszerzeniach i wtyczkach</translation>
 <translation id="6146055958333702838">Sprawdź wszystkie kable i uruchom ponownie wszelkie używane routery, modemy
     i inne urządzenia sieciowe.</translation>
@@ -1083,6 +1095,7 @@
 <translation id="6221345481584921695">Bezpieczne przeglądanie Google <ph name="BEGIN_LINK" />wykryło ostatnio złośliwe oprogramowanie<ph name="END_LINK" /> na <ph name="SITE" />. Strony, które zazwyczaj są bezpieczne, zostają czasem zainfekowane destrukcyjnym oprogramowaniem. Źródłem złośliwej zawartości jest <ph name="SUBRESOURCE_HOST" /> – znany dystrybutor złośliwego oprogramowania.</translation>
 <translation id="6234122620015464377">Przycięcie po każdym dokumencie</translation>
 <translation id="6240447795304464094">Logo Google Pay</translation>
+<translation id="6241121617266208201">Ukryj sugestie</translation>
 <translation id="6251924700383757765">Polityka prywatności</translation>
 <translation id="6254436959401408446">Za mało pamięci, by otworzyć tę stronę</translation>
 <translation id="625755898061068298">Wyłączyłeś ostrzeżenia dotyczące bezpieczeństwa tej witryny.</translation>
@@ -1129,6 +1142,7 @@
 <translation id="6409754798200046165">Przed chwilą wpisano hasło na stronie wprowadzającej w błąd. Chrome zaleca natychmiastową zmianę hasła.</translation>
 <translation id="6410264514553301377">Wpisz datę ważności i kod CVC karty <ph name="CREDIT_CARD" /></translation>
 <translation id="6415778972515849510">Chromium może Ci pomóc w zabezpieczeniu Twojego konta Google i zmianie hasła.</translation>
+<translation id="6423385022588644828">Potwierdzaj karty szybciej przy użyciu Touch ID</translation>
 <translation id="6427730057873428458">Składanie od góry i od dołu do środka</translation>
 <translation id="6433490469411711332">Edytuj dane kontaktowe</translation>
 <translation id="6433595998831338502">Serwer <ph name="HOST_NAME" /> odrzucił połączenie.</translation>
@@ -1199,12 +1213,14 @@
 <translation id="6786747875388722282">Rozszerzenia</translation>
 <translation id="6790428901817661496">Odtwórz</translation>
 <translation id="679355240208270552">Ignorowana, ponieważ wyszukiwarka domyślna nie jest dozwolona przez zasadę.</translation>
+<translation id="6794951432696553238">Potwierdzaj karty szybciej przy użyciu Windows Hello</translation>
 <translation id="681021252041861472">Pole wymagane</translation>
 <translation id="6810899417690483278">Identyfikator dostosowania</translation>
 <translation id="6825578344716086703">Próbujesz wejść na <ph name="DOMAIN" />, ale serwer przedstawił certyfikat podpisany słabym algorytmem (takim jak SHA-1). Oznacza to, że dane uwierzytelniające podane przez serwer mogły zostać sfałszowane, a serwer może nie być tym, którego oczekujesz (możliwe, że komunikujesz się z intruzem).</translation>
 <translation id="6826370046007623921">Zapobieganie utracie danych</translation>
 <translation id="6831043979455480757">Tłumacz</translation>
 <translation id="6839929833149231406">Obszar</translation>
+<translation id="6846340164947227603">Użyj numeru karty wirtualnej...</translation>
 <translation id="6852204201400771460">Załadować ponownie aplikację?</translation>
 <translation id="6865412394715372076">Nie można teraz zweryfikować karty</translation>
 <translation id="6868206169573555318">Uruchom ponownie, by zaktualizować</translation>
@@ -1233,6 +1249,7 @@
 <translation id="6989763994942163495">Pokaż ustawienia zaawansowane...</translation>
 <translation id="6993898126790112050">6x9 (koperta)</translation>
 <translation id="6996312675313362352">Zawsze tłumacz z tego języka: <ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">Używaj Windows Hello, by szybciej potwierdzać karty</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Może to być opłata jednorazowa lub cykliczna, a informacje o niej mogą nie być wyraźnie podane.</translation>
 <translation id="7029809446516969842">Hasła</translation>
@@ -1243,6 +1260,7 @@
 <translation id="7064851114919012435">Dane kontaktowe</translation>
 <translation id="7075452647191940183">Żądanie jest za duże</translation>
 <translation id="7079718277001814089">Ta strona zawiera złośliwe oprogramowanie</translation>
+<translation id="7081308185095828845">Ta funkcja jest niedostępna na Twoim urządzeniu</translation>
 <translation id="7087282848513945231">Hrabstwo</translation>
 <translation id="7090678807593890770">Wyszukaj w Google: <ph name="LINK" /></translation>
 <translation id="7108338896283013870">Ukryj</translation>
@@ -1296,9 +1314,11 @@
 <translation id="733923710415886693">Certyfikat serwera nie został ujawniony przez protokół Certificate Transparency.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">Jest w tej samej domenie:</translation>
+<translation id="73479065977517481">Domena <ph name="ENROLLMENT_DOMAIN" /> włączyła w Twojej przeglądarce Ochronę użytkowników Chrome Enterprise. Ochrona użytkowników Chrome Enterprise ma dostęp do niektórych Twoich danych.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Wiersz poleceń</translation>
 <translation id="7372973238305370288">wynik wyszukiwania</translation>
+<translation id="7374733840632556089">Ten problem pojawia się z powodu certyfikatu zainstalowanego na tym urządzeniu przez Ciebie lub inną osobę. Ten certyfikat jest używany do monitorowania i przechwytywania ruchu sieciowego. Chrome mu nie ufa. Choć w pewnych przypadkach (np. w sieci szkolnej lub firmowej) monitorowanie jest uzasadnione i legalne, Chrome będzie Cię o tym powiadamiać, nawet jeśli nie możesz nic na to poradzić. Monitorowanie może odbywać się w każdej przeglądarce lub aplikacji, która ma dostęp do sieci.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> – <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Sterowanie multimediami</translation>
 <translation id="7378627244592794276">Nie</translation>
@@ -1327,6 +1347,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Dowiedz się więcej<ph name="END_LINK" /> o tym problemie.</translation>
 <translation id="7455133967321480974">Użyj globalnej wartości domyślnej (Blokuj)</translation>
 <translation id="7460618730930299168">Godziny seansów są inne niż wybrane przez Ciebie. Czy chcesz kontynuować?</translation>
+<translation id="7464821087936825778">Wyłączam tryb wyszukiwania</translation>
 <translation id="7473891865547856676">Nie, dziękuję</translation>
 <translation id="7481312909269577407">Dalej</translation>
 <translation id="7485870689360869515">Nie znaleziono danych.</translation>
@@ -1548,6 +1569,7 @@
 <translation id="8559762987265718583">Nie można nawiązać prywatnego połączenia z <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />, ponieważ data i godzina (<ph name="DATE_AND_TIME" />) ustawione na urządzeniu są nieprawidłowe.</translation>
 <translation id="8564985650692024650">Chromium zaleca zresetowanie hasła, którego używasz w: <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" />, jeśli zostało użyte na innej stronie.</translation>
 <translation id="8571890674111243710">Trwa tłumaczenie strony na język: <ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">Używaj Touch ID, by szybciej potwierdzać karty</translation>
 <translation id="858637041960032120">Dodaj numer telefonu</translation>
 <translation id="860043288473659153">Imię i nazwisko posiadacza karty</translation>
 <translation id="8616822740383114808">To ustawienie jest wymuszone przez ustawienie „<ph name="ENFORCING_SETTING" />” na stronie „<ph name="SETTINGS_PAGE" />”</translation>
diff --git a/components/strings/components_strings_pt-BR.xtb b/components/strings/components_strings_pt-BR.xtb
index f4cebd3a..4b7d2ac 100644
--- a/components/strings/components_strings_pt-BR.xtb
+++ b/components/strings/components_strings_pt-BR.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Carregar página mais tarde</translation>
 <translation id="1015730422737071372">Forneça detalhes adicionais</translation>
 <translation id="1021110881106174305">Cartões aceitos</translation>
+<translation id="1021753677514347426">Esse problema acontece devido a um certificado que você ou outra pessoa instalou no dispositivo. O certificado é conhecido por ser usado para monitorar e interceptar redes, e o Chromium não o considera confiável. Embora casos legítimos de monitoramento existam, como em redes de escolas ou empresas, o Chromium quer ter certeza de que você está ciente de tudo o que está acontecendo, mesmo que você não possa fazer nada para impedir isso. O monitoramento pode acontecer em qualquer navegador ou aplicativo que acesse a Web.</translation>
 <translation id="1032854598605920125">Girar no sentido horário</translation>
 <translation id="1036348656032585052">Desativar</translation>
 <translation id="1038842779957582377">nome desconhecido</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Relatório de erros registrado em <ph name="CRASH_TIME" /> (ainda não enviado ou ignorado)</translation>
 <translation id="1270502636509132238">Método de Retirada</translation>
 <translation id="1285320974508926690">Nunca traduzir este site</translation>
+<translation id="1285400217480592994">Verifica o conteúdo dos arquivos de que você faz o download ou upload no Chrome.</translation>
 <translation id="1292701964462482250">"Algum software no seu computador está impedindo o Google Chrome de se conectar com segurança à Web" (somente computadores Windows)</translation>
 <translation id="1294154142200295408">Variações de linha de comando</translation>
 <translation id="129553762522093515">Recentemente fechadas</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Número do telefone</translation>
 <translation id="2277103315734023688">Avançar</translation>
 <translation id="2283340219607151381">Salvar e preencher endereços</translation>
+<translation id="2288422996159078444">Tudo o que é digitado, as páginas que são acessadas e qualquer outra atividade na Web está sendo monitorado, e o conteúdo dos sites pode mudar sem que você saiba.</translation>
 <translation id="2289385804009217824">Cortar</translation>
 <translation id="2292556288342944218">O seu acesso à Internet está bloqueado</translation>
 <translation id="2297722699537546652">B5 (Envelope)</translation>
@@ -426,6 +429,7 @@
 <translation id="2989742184762224133">Dois grampos na parte superior</translation>
 <translation id="2991174974383378012">Compartilhar com websites</translation>
 <translation id="2991571918955627853">Você não pode visitar <ph name="SITE" /> agora, porque o site usa HSTS. Erros de rede e ataques são geralmente temporários. Esta página provavelmente funcionará mais tarde.</translation>
+<translation id="2996674880327704673">Sugestões do Google</translation>
 <translation id="3005723025932146533">Mostrar cópia salva</translation>
 <translation id="3008447029300691911">Digite o CVC do <ph name="CREDIT_CARD" />. Depois da confirmação, os detalhes do seu cartão serão compartilhados com esse site.</translation>
 <translation id="3010559122411665027">Entrada de lista "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -438,6 +442,7 @@
 <translation id="3060227939791841287">C9 (Envelope)</translation>
 <translation id="3061707000357573562">Aplicar patch ao serviço</translation>
 <translation id="3064966200440839136">Saindo do modo de navegação anônima para pagar usando um aplicativo externo. Continuar?</translation>
+<translation id="3086579638707268289">Sua atividade na Web está sendo monitorada</translation>
 <translation id="3095940652251934233">Meia carta</translation>
 <translation id="3096100844101284527">Adicionar endereço de retirada</translation>
 <translation id="3105172416063519923">Código do recurso:</translation>
@@ -490,6 +495,7 @@
 <translation id="3369192424181595722">Erro do relógio</translation>
 <translation id="337363190475750230">Desprovisionado</translation>
 <translation id="3377188786107721145">Erro de análise da política</translation>
+<translation id="3377736046129930310">Use o bloqueio de tela para confirmar seus cartões rapidamente</translation>
 <translation id="3380365263193509176">Erro desconhecido</translation>
 <translation id="3380864720620200369">ID do cliente:</translation>
 <translation id="3387261909427947069">Formas de pagamento</translation>
@@ -650,6 +656,7 @@
 <translation id="4194250254487269611">Não é possível salvar seu cartão no momento</translation>
 <translation id="4196861286325780578">&amp;Refazer mover</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Verificar as configurações do antivírus e firewall<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">perfil da tela de login</translation>
 <translation id="4215751373031079683">7x9 (Envelope)</translation>
 <translation id="4220128509585149162">Falhas</translation>
 <translation id="422022731706691852">Invasores em <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> podem tentar levar você a instalar programas que podem prejudicar sua experiência de navegação (por exemplo, alterando sua página inicial ou exibindo anúncios extras em sites que você visitar). <ph name="BEGIN_LEARN_MORE_LINK" />Saiba mais<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -732,6 +739,7 @@
 <translation id="4515275063822566619">Os cartões e os endereços vieram do Chrome e da sua Conta do Google (<ph name="ACCOUNT_EMAIL" />). É possível gerenciar essas opções em <ph name="BEGIN_LINK" />Configurações<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Comm 10 (Envelope)</translation>
 <translation id="4522570452068850558">Saiba mais</translation>
+<translation id="4524138615196389145">Confirme seus cartões rapidamente usando WebAuthn de agora em diante</translation>
 <translation id="4524805452350978254">Gerenciar cartões</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -842,6 +850,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">64 bits</translation>
+<translation id="5121469660360593280">Compartilhe com seu administrador os dados sobre ocorrências de segurança sinalizadas pelo serviço de proteção ao usuário do Chrome Enterprise. Isso pode incluir URLs das páginas visitadas, metadados ou nomes de arquivos e o nome de usuário usado para fazer login no dispositivo e no Chrome.</translation>
 <translation id="5125394840236832993">B Plus</translation>
 <translation id="5126510351761255129">Verificar seu cartão</translation>
 <translation id="5135404736266831032">Gerenciar endereços…</translation>
@@ -853,6 +862,7 @@
 <translation id="5159010409087891077">Abrir página em uma nova janela anônima (⇧⌘N)</translation>
 <translation id="516920405563544094">Informe o CVC do <ph name="CREDIT_CARD" />. Depois da confirmação, os detalhes do cartão da sua Conta do Google serão compartilhados com este site.</translation>
 <translation id="5169827969064885044">Você pode perder o acesso à conta da sua organização ou sofrer roubo de identidade. O Chrome recomenda que você altere sua senha agora.</translation>
+<translation id="5170017743895942767">Serviço de proteção ao usuário do Chrome Enterprise</translation>
 <translation id="5171045022955879922">Pesquisar ou digitar URL</translation>
 <translation id="5171689220826475070">Fanfold European</translation>
 <translation id="5172758083709347301">Máquina</translation>
@@ -973,6 +983,7 @@
 <translation id="5730040223043577876">O Chrome recomenda redefinir sua senha se você a reutilizou em outros sites.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Salvar cartão na Conta do Google}one{Salvar cartão na Conta do Google}other{Salvar cartões na Conta do Google}}</translation>
 <translation id="5763042198335101085">Informe um endereço de e-mail válido.</translation>
+<translation id="5763703224595565476">Seu administrador ativou o serviço de proteção ao usuário do Chrome Enterprise no seu navegador. O serviço de proteção ao usuário do Chrome Enterprise tem acesso a parte dos seus dados.</translation>
 <translation id="5765072501007116331">Para ver métodos e requisitos de entrega, selecione um endereço</translation>
 <translation id="5778550464785688721">Controle total de dispositivos MIDI</translation>
 <translation id="5781136890105823427">Experimento ativado</translation>
@@ -1052,6 +1063,7 @@
 <translation id="6094273045989040137">Anotar</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">Sua Conta do Google pode ter outras formas de histórico de navegação em <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
+<translation id="6120179357481664955">Lembrar código da UPI?</translation>
 <translation id="6132597952260690497">Informações sobre extensões e plug-ins instalados</translation>
 <translation id="6146055958333702838">Verifique todos os cabos e reinicie todos os roteadores, modens ou outros
     dispositivos de rede que você estiver usando.</translation>
@@ -1067,6 +1079,7 @@
 <translation id="6221345481584921695">A Navegação segura do Google recentemente <ph name="BEGIN_LINK" />detectou malware<ph name="END_LINK" /> em <ph name="SITE" />. Websites que geralmente são seguros estão, algumas vezes, infectados com malware. O conteúdo malicioso vem de <ph name="SUBRESOURCE_HOST" />, um distribuidor de malware conhecido.</translation>
 <translation id="6234122620015464377">Cortar a cada página impressa</translation>
 <translation id="6240447795304464094">Logotipo do Google Pay</translation>
+<translation id="6241121617266208201">Ocultar sugestões</translation>
 <translation id="6251924700383757765">Política de Privacidade</translation>
 <translation id="6254436959401408446">Não há memória suficiente para abrir essa página</translation>
 <translation id="625755898061068298">Você optou por desativar os avisos de segurança para esse site.</translation>
@@ -1113,6 +1126,7 @@
 <translation id="6409754798200046165">Você acabou de digitar sua senha em um site suspeito. O Chrome recomenda que você a mude agora.</translation>
 <translation id="6410264514553301377">Digite a data de validade e o CVC do <ph name="CREDIT_CARD" /></translation>
 <translation id="6415778972515849510">No Chromium, você pode receber ajuda para proteger sua Conta do Google e alterar sua senha.</translation>
+<translation id="6423385022588644828">Confirme seus cartões rapidamente usando Touch ID de agora em diante</translation>
 <translation id="6427730057873428458">Dobra janela</translation>
 <translation id="6433490469411711332">Editar informações de contato</translation>
 <translation id="6433595998831338502">A conexão com <ph name="HOST_NAME" /> foi recusada.</translation>
@@ -1183,12 +1197,14 @@
 <translation id="6786747875388722282">Extensões</translation>
 <translation id="6790428901817661496">Reproduzir</translation>
 <translation id="679355240208270552">Ignorado porque a pesquisa padrão não foi ativada pela política.</translation>
+<translation id="6794951432696553238">Confirme seus cartões rapidamente usando o Windows Hello de agora em diante</translation>
 <translation id="681021252041861472">Campo obrigatório</translation>
 <translation id="6810899417690483278">Código de personalização</translation>
 <translation id="6825578344716086703">Você tentou acessar <ph name="DOMAIN" />, mas o servidor apresentou um certificado assinado com um algoritmo de assinatura fraco (como SHA-1). Isso significa que as credenciais de segurança apresentadas pelo servidor podem ter sido forjadas, e talvez o servidor não seja o esperado (talvez você esteja se comunicando com um invasor).</translation>
 <translation id="6826370046007623921">Prevenção contra perda de dados</translation>
 <translation id="6831043979455480757">Traduzir</translation>
 <translation id="6839929833149231406">Área</translation>
+<translation id="6846340164947227603">Usar um número de cartão virtual…</translation>
 <translation id="6852204201400771460">Recarregar app?</translation>
 <translation id="6865412394715372076">Não é possível verificar este cartão no momento</translation>
 <translation id="6868206169573555318">Reiniciar para atualizar</translation>
@@ -1217,6 +1233,7 @@
 <translation id="6989763994942163495">Mostrar configurações avançadas...</translation>
 <translation id="6993898126790112050">6x9 (Envelope)</translation>
 <translation id="6996312675313362352">Sempre traduzir <ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">Use o Windows Hello para confirmar o uso de cartões rapidamente</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Essas cobranças podem ser únicas ou recorrentes e talvez não sejam óbvias.</translation>
 <translation id="7029809446516969842">Senhas</translation>
@@ -1227,6 +1244,7 @@
 <translation id="7064851114919012435">Dados de contato</translation>
 <translation id="7075452647191940183">A solicitação é muito grande</translation>
 <translation id="7079718277001814089">Este site contém malware</translation>
+<translation id="7081308185095828845">Esse recurso não está disponível no seu dispositivo</translation>
 <translation id="7087282848513945231">Condado</translation>
 <translation id="7090678807593890770">Pesquise <ph name="LINK" /> no Google</translation>
 <translation id="7108338896283013870">Ocultar</translation>
@@ -1280,9 +1298,11 @@
 <translation id="733923710415886693">O certificado do servidor não foi divulgado por meio da Transparência dos certificados.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">O usuário é afiliado:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> ativou o serviço de proteção ao usuário do Chrome Enterprise no seu navegador. O serviço de proteção ao usuário do Chrome Enterprise tem acesso a parte dos seus dados.</translation>
 <translation id="7349430561505560861">A4 Extra</translation>
 <translation id="7353601530677266744">Linha de comando</translation>
 <translation id="7372973238305370288">resultado da pesquisa</translation>
+<translation id="7374733840632556089">Esse problema acontece devido a um certificado que você ou outra pessoa instalou no dispositivo. O certificado é conhecido por ser usado para monitorar e interceptar redes, e o Chrome não o considera confiável. Embora casos legítimos de monitoramento existam, como em redes de escolas ou empresas, o Chrome quer ter certeza de que você está ciente de tudo o que está acontecendo, mesmo que você não possa fazer nada para impedir isso. O monitoramento pode acontecer em qualquer navegador ou aplicativo que acesse a Web.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Controles de mídia</translation>
 <translation id="7378627244592794276">Não</translation>
@@ -1311,6 +1331,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Saber mais<ph name="END_LINK" /> sobre esse problema.</translation>
 <translation id="7455133967321480974">Usar padrão global (Bloquear)</translation>
 <translation id="7460618730930299168">A exibição na tela está diferente da que você selecionou. Continuar?</translation>
+<translation id="7464821087936825778">Sair do modo de pesquisa</translation>
 <translation id="7473891865547856676">Não, obrigado</translation>
 <translation id="7481312909269577407">Avançar</translation>
 <translation id="7485870689360869515">Nenhum dado encontrado</translation>
@@ -1532,6 +1553,7 @@
 <translation id="8559762987265718583">Não é possível estabelecer uma conexão privada com <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />, porque a data e a hora do seu dispositivo (<ph name="DATE_AND_TIME" />) estão incorretas.</translation>
 <translation id="8564985650692024650">O Chromium recomenda redefinir sua senha de <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> se você a reutilizou em outros sites.</translation>
 <translation id="8571890674111243710">Traduzindo página para <ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">Use o Touch ID para confirmar seus cartões rapidamente</translation>
 <translation id="858637041960032120">Ad. nº. telefone
 </translation>
 <translation id="860043288473659153">Nome do titular do cartão</translation>
diff --git a/components/strings/components_strings_pt-PT.xtb b/components/strings/components_strings_pt-PT.xtb
index 53b7c77..44768c92 100644
--- a/components/strings/components_strings_pt-PT.xtb
+++ b/components/strings/components_strings_pt-PT.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Carregar a página mais tarde</translation>
 <translation id="1015730422737071372">Forneça mais detalhes</translation>
 <translation id="1021110881106174305">Cartões admitidos</translation>
+<translation id="1021753677514347426">Este problema ocorre devido a um certificado que o utilizador ou outra pessoa instalou no dispositivo. Sabe-se que o certificado é utilizado para monitorizar e intercetar redes e não é considerado fidedigno pelo Chromium. Embora existam alguns casos legítimos para a monitorização, como numa rede escolar ou da empresa, o Chromium pretende certificar-se de que o utilizador tem conhecimento da situação, mesmo que não seja possível interrompê-la. A monitorização pode ocorrer em qualquer navegador ou aplicação que aceda à Web.</translation>
 <translation id="1032854598605920125">Rodar para a direita</translation>
 <translation id="1036348656032585052">Desativar</translation>
 <translation id="1038842779957582377">nome desconhecido</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Relatório de falhas capturado <ph name="CRASH_TIME" /> (ainda não carregado ou ignorado)</translation>
 <translation id="1270502636509132238">Método de recolha</translation>
 <translation id="1285320974508926690">Nunca traduzir este site</translation>
+<translation id="1285400217480592994">Analise os conteúdos dos ficheiros que transfere ou carrega no Chrome.</translation>
 <translation id="1292701964462482250">"Existe software no computador que está a impedir que o Chrome se ligue à Web em segurança" (apenas para computadores com Windows)</translation>
 <translation id="1294154142200295408">Variações da linha de comandos</translation>
 <translation id="129553762522093515">Fechados recentemente</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Número de telefone</translation>
 <translation id="2277103315734023688">Procurar para a frente</translation>
 <translation id="2283340219607151381">Guardar e preencher endereços</translation>
+<translation id="2288422996159078444">Tudo o que escreve, todas as páginas que visualiza ou quaisquer outras atividades que realiza na Web estão a ser monitorizadas. O conteúdo dos sites pode ser alterado sem o seu conhecimento.</translation>
 <translation id="2289385804009217824">Cortar</translation>
 <translation id="2292556288342944218">O acesso à Internet está bloqueado</translation>
 <translation id="2297722699537546652">B5 (Envelope)</translation>
@@ -436,6 +439,7 @@
 <translation id="2989742184762224133">Agrafo duplo na parte superior</translation>
 <translation id="2991174974383378012">Partilha com Sites</translation>
 <translation id="2991571918955627853">Não pode visitar <ph name="SITE" /> neste momento, porque o Website utiliza HSTS. Os erros de rede e os ataques são geralmente temporários, pelo que esta página deverá funcionar mais tarde.</translation>
+<translation id="2996674880327704673">Sugestões da Google</translation>
 <translation id="3005723025932146533">Mostrar cópia guardada</translation>
 <translation id="3008447029300691911">Introduza o Código de Segurança/CVC de <ph name="CREDIT_CARD" />. Ao confirmar, os detalhes do cartão são partilhados com este site.</translation>
 <translation id="3010559122411665027">Entrada da lista "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -448,6 +452,7 @@
 <translation id="3060227939791841287">C9 (Envelope)</translation>
 <translation id="3061707000357573562">Serviço de patch</translation>
 <translation id="3064966200440839136">Está a sair do modo de navegação anónima para pagar através de uma aplicação externa. Pretende continuar?</translation>
+<translation id="3086579638707268289">A sua atividade na Web está a ser monitorizada</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Adicionar endereço de levantamento</translation>
 <translation id="3105172416063519923">ID de recurso:</translation>
@@ -500,6 +505,7 @@
 <translation id="3369192424181595722">Erro de relógio</translation>
 <translation id="337363190475750230">Desaprovisionado</translation>
 <translation id="3377188786107721145">Erro de análise da política</translation>
+<translation id="3377736046129930310">Utilizar o bloqueio de ecrã para confirmar os cartões mais rapidamente</translation>
 <translation id="3380365263193509176">Erro desconhecido</translation>
 <translation id="3380864720620200369">ID do Cliente:</translation>
 <translation id="3387261909427947069">Métodos de pagamento</translation>
@@ -665,6 +671,7 @@
 <translation id="4194250254487269611">Não é possível guardar o seu cartão neste momento.</translation>
 <translation id="4196861286325780578">&amp;Refazer movimentação</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Verificar as configurações da firewall e de antivírus<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">perfil do ecrã de início de sessão</translation>
 <translation id="4215751373031079683">7x9 (Envelope)</translation>
 <translation id="4220128509585149162">Erros</translation>
 <translation id="422022731706691852">Os atacantes em <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> podem tentar levá-lo a instalar programas que prejudicam a sua experiência de navegação (por exemplo, ao alterar a sua página inicial ou mostrar anúncios adicionais nos sites que visita). <ph name="BEGIN_LEARN_MORE_LINK" />Saiba mais<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -747,6 +754,7 @@
 <translation id="4515275063822566619">Os cartões e os endereços são provenientes do Chrome e da sua Conta Google (<ph name="ACCOUNT_EMAIL" />). Pode geri-los nas <ph name="BEGIN_LINK" />Definições<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Comm-10 (Envelope)</translation>
 <translation id="4522570452068850558">Detalhes</translation>
+<translation id="4524138615196389145">Confirme os seus cartões mais rapidamente ao utilizar o WebAuthn a partir de agora.</translation>
 <translation id="4524805452350978254">Gerir cartões</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -858,6 +866,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64 bits)</translation>
+<translation id="5121469660360593280">Partilhe dados sobre eventos de segurança sinalizados pelo Chrome Enterprise User Protect com o seu administrador. Estes podem incluir os URLs das páginas que visita, os metadados ou os nomes de ficheiros e o nome de utilizador que utiliza para iniciar sessão no dispositivo e no Chrome.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Valide o cartão</translation>
 <translation id="5135404736266831032">Gerir endereços…</translation>
@@ -869,6 +878,7 @@
 <translation id="5159010409087891077">Abrir a página numa nova janela de navegação anónima (⇧⌘N)</translation>
 <translation id="516920405563544094">Introduza o Código de Segurança/CVC de <ph name="CREDIT_CARD" />. Depois de confirmar, os detalhes do cartão da sua Conta Google são partilhados com este site.</translation>
 <translation id="5169827969064885044">Pode perder o acesso à conta da sua entidade ou ser vítima de roubo de identidade. O Chrome recomenda a alteração da palavra-passe agora.</translation>
+<translation id="5170017743895942767">Chrome Enterprise User Protect</translation>
 <translation id="5171045022955879922">Pesquise ou escreva URL</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Equipamento</translation>
@@ -989,6 +999,7 @@
 <translation id="5730040223043577876">O Chrome recomenda a reposição da palavra-passe se a tiver reutilizado noutros sites.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Guardar o cartão na sua Conta Google}other{Guardar os cartões na sua Conta Google}}</translation>
 <translation id="5763042198335101085">Introduza um endereço de email válido</translation>
+<translation id="5763703224595565476">O seu administrador ativou o Chrome Enterprise User Protect no seu navegador. O Chrome Enterprise User Protect tem acesso a alguns dos seus dados.</translation>
 <translation id="5765072501007116331">Para ver os métodos de fornecimento e os requisitos, selecione um endereço</translation>
 <translation id="5778550464785688721">Controlo total de dispositivos MIDI</translation>
 <translation id="5781136890105823427">Experiência ativada</translation>
@@ -1068,6 +1079,7 @@
 <translation id="6094273045989040137">Anotar</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">A sua Conta Google pode ter outras formas do histórico de navegação em <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
+<translation id="6120179357481664955">Lembra-se do seu ID do UPI?</translation>
 <translation id="6132597952260690497">Informações acerca das extensões e dos plug-ins instalados</translation>
 <translation id="6146055958333702838">Verifique os cabos e reinicie todos os routers, modems ou outros
     dispositivos de rede que possa estar a utilizar.</translation>
@@ -1083,6 +1095,7 @@
 <translation id="6221345481584921695">A Navegação Segura do Google <ph name="BEGIN_LINK" />detetou software malicioso<ph name="END_LINK" /> recentemente em <ph name="SITE" />. Os Sites que normalmente são seguros por vezes são infetados com software malicioso. O conteúdo malicioso provém de <ph name="SUBRESOURCE_HOST" />, um distribuidor de software malicioso conhecido.</translation>
 <translation id="6234122620015464377">Cortar no fim de cada documento</translation>
 <translation id="6240447795304464094">Logótipo do Google Pay</translation>
+<translation id="6241121617266208201">Ocultar sugestões</translation>
 <translation id="6251924700383757765">Política de privacidade</translation>
 <translation id="6254436959401408446">Não existe memória suficiente para abrir esta página</translation>
 <translation id="625755898061068298">Optou por desativar os avisos de segurança para este site.</translation>
@@ -1129,6 +1142,7 @@
 <translation id="6409754798200046165">Acabou de introduzir a sua palavra-passe num site fraudulento. O Chrome recomenda a alteração da palavra-passe agora.</translation>
 <translation id="6410264514553301377">Introduza a data de validade e o Código de Segurança/CVC de <ph name="CREDIT_CARD" /></translation>
 <translation id="6415778972515849510">O Chromium pode ajudá-lo a proteger a sua Conta Google e alterar a palavra-passe.</translation>
+<translation id="6423385022588644828">Confirme os seus cartões mais rapidamente ao utilizar o Touch ID a partir de agora.</translation>
 <translation id="6427730057873428458">Dobra simétrica</translation>
 <translation id="6433490469411711332">Editar informações de contacto</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> recusou estabelecer ligação.</translation>
@@ -1199,12 +1213,14 @@
 <translation id="6786747875388722282">Extensões</translation>
 <translation id="6790428901817661496">Reproduzir</translation>
 <translation id="679355240208270552">Ignorado porque a pesquisa predefinida não está ativada pela política.</translation>
+<translation id="6794951432696553238">Confirme os seus cartões mais rapidamente ao utilizar o Windows Hello a partir de agora.</translation>
 <translation id="681021252041861472">Campo obrigatório</translation>
 <translation id="6810899417690483278">ID de personalização</translation>
 <translation id="6825578344716086703">Tentou aceder a <ph name="DOMAIN" />, mas o servidor apresentou um certificado assinado utilizando um algoritmo de assinatura fraco (como SHA-1). Isto significa que as credenciais de segurança apresentadas pelo servidor podem ter sido falsificadas e que o servidor pode não ser aquele que pretende (pode estar a comunicar com um utilizador mal intencionado).</translation>
 <translation id="6826370046007623921">Prevenção contra a perda de dados</translation>
 <translation id="6831043979455480757">Traduzir</translation>
 <translation id="6839929833149231406">Área</translation>
+<translation id="6846340164947227603">Utilizar um número de cartão virtual…</translation>
 <translation id="6852204201400771460">Pretende atualizar a aplicação?</translation>
 <translation id="6865412394715372076">Não é possível validar este cartão neste momento.</translation>
 <translation id="6868206169573555318">Reiniciar para atualizar</translation>
@@ -1233,6 +1249,7 @@
 <translation id="6989763994942163495">Mostrar definições avançadas...</translation>
 <translation id="6993898126790112050">6x9 (Envelope)</translation>
 <translation id="6996312675313362352">Traduzir sempre do <ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">Utilizar o Windows Hello para confirmar os cartões mais rapidamente</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Estas cobranças podem ser únicas ou recorrentes e podem não ser óbvias.</translation>
 <translation id="7029809446516969842">Palavras-passe</translation>
@@ -1243,6 +1260,7 @@
 <translation id="7064851114919012435">Informações de contacto</translation>
 <translation id="7075452647191940183">O pedido é demasiado grande.</translation>
 <translation id="7079718277001814089">Este site contém um software malicioso</translation>
+<translation id="7081308185095828845">Esta funcionalidade não está disponível no seu dispositivo.</translation>
 <translation id="7087282848513945231">Município</translation>
 <translation id="7090678807593890770">Pesquisar <ph name="LINK" /> no Google</translation>
 <translation id="7108338896283013870">Ocultar</translation>
@@ -1296,9 +1314,11 @@
 <translation id="733923710415886693">O certificado do servidor não foi divulgado através da Transparência de certificados.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">Está afiliado:</translation>
+<translation id="73479065977517481">O domínio <ph name="ENROLLMENT_DOMAIN" /> ativou o Chrome Enterprise User Protect no seu navegador. O Chrome Enterprise User Protect tem acesso a alguns dos seus dados.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Linha de comandos</translation>
 <translation id="7372973238305370288">resultado da pesquisa</translation>
+<translation id="7374733840632556089">Este problema ocorre devido a um certificado que o utilizador ou outra pessoa instalou no dispositivo. Sabe-se que o certificado é utilizado para monitorizar e intercetar redes e não é considerado fidedigno pelo Chrome. Embora existam alguns casos legítimos para a monitorização, como numa rede escolar ou da empresa, o Chrome pretende certificar-se de que o utilizador tem conhecimento da situação, mesmo que não seja possível interrompê-la. A monitorização pode ocorrer em qualquer navegador ou aplicação que aceda à Web.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Controlos de multimédia</translation>
 <translation id="7378627244592794276">Não</translation>
@@ -1326,6 +1346,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Saber mais<ph name="END_LINK" /> sobre este problema.</translation>
 <translation id="7455133967321480974">Utilizar predefinição global (Bloquear)</translation>
 <translation id="7460618730930299168">A apresentação é diferente daquilo que selecionou. Pretende continuar?</translation>
+<translation id="7464821087936825778">A sair do modo de pesquisa…</translation>
 <translation id="7473891865547856676">Não, obrigado</translation>
 <translation id="7481312909269577407">Avançar</translation>
 <translation id="7485870689360869515">Não foram encontrados dados.</translation>
@@ -1547,6 +1568,7 @@
 <translation id="8559762987265718583">Não é possível estabelecer uma ligação privada a <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />, porque a data e a hora do seu dispositivo (<ph name="DATE_AND_TIME" />) estão incorretas.</translation>
 <translation id="8564985650692024650">O Chromium recomenda a reposição da palavra-passe da <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> se a tiver reutilizado noutros sites.</translation>
 <translation id="8571890674111243710">A traduzir a página para <ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">Utilizar o Touch ID para confirmar os cartões mais rapidamente</translation>
 <translation id="858637041960032120">Adic. n.º telef.
 </translation>
 <translation id="860043288473659153">Nome do titular do cartão</translation>
diff --git a/components/strings/components_strings_ro.xtb b/components/strings/components_strings_ro.xtb
index 1d3163d0..e739ca7 100644
--- a/components/strings/components_strings_ro.xtb
+++ b/components/strings/components_strings_ro.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Încarcă pagina mai târziu</translation>
 <translation id="1015730422737071372">Specifică detalii suplimentare</translation>
 <translation id="1021110881106174305">Carduri acceptate</translation>
+<translation id="1021753677514347426">Această problemă apare din cauza unui certificat pe care tu sau altcineva l-ați instalat pe dispozitiv. Certificatul este folosit pentru a monitoriza și a intercepta rețelele, nefiind autorizat de Chromium. Deși există cazuri legitime pentru monitorizare, de exemplu, într-o rețea de la școală sau de la serviciu, Chromium vrea să se asigure că știi ce se întâmplă, chiar dacă nu poți opri acest lucru. Monitorizarea se poate face în orice browser sau aplicație care intră pe web.</translation>
 <translation id="1032854598605920125">Rotește în sensul acelor de ceasornic</translation>
 <translation id="1036348656032585052">Dezactivează</translation>
 <translation id="1038842779957582377">nume necunoscut</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Raport de blocare creat <ph name="CRASH_TIME" /> (nu a fost încă încărcat sau ignorat)</translation>
 <translation id="1270502636509132238">Metodă de preluare</translation>
 <translation id="1285320974508926690">Nu traduce niciodată acest site</translation>
+<translation id="1285400217480592994">Scanează conținutul fișierelor pe care le descarci sau le încarci în Chrome.</translation>
 <translation id="1292701964462482250">„Pe computer există software care împiedică browserul Chrome să se conecteze în siguranță la internet” (doar pentru computerele Windows)</translation>
 <translation id="1294154142200295408">Variații ale liniilor de comandă</translation>
 <translation id="129553762522093515">Închise recent</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Număr telefon</translation>
 <translation id="2277103315734023688">Derulează înainte</translation>
 <translation id="2283340219607151381">Salvează și completează adresele</translation>
+<translation id="2288422996159078444">Tot ceea ce tastezi, paginile pe care le afișezi și orice altă activitate de pe web este urmărită. Conținutul site-urilor poate fi modificat fără știrea ta.</translation>
 <translation id="2289385804009217824">Decupare</translation>
 <translation id="2292556288342944218">Accesul la internet este blocat</translation>
 <translation id="2297722699537546652">B5 (Plic)</translation>
@@ -434,6 +437,7 @@
 <translation id="2989742184762224133">Capsare dublă în partea de sus</translation>
 <translation id="2991174974383378012">Permiterea accesului pentru site-uri</translation>
 <translation id="2991571918955627853">Nu poți accesa <ph name="SITE" /> acum, deoarece site-ul folosește HSTS. Erorile de rețea și atacurile sunt de obicei temporare și probabil că această pagină va funcționa mai târziu.</translation>
+<translation id="2996674880327704673">Sugestii de la Google</translation>
 <translation id="3005723025932146533">Afișați o copie salvată</translation>
 <translation id="3008447029300691911">Introdu codul CVC pentru <ph name="CREDIT_CARD" />. După ce confirmi, acest site va avea acces la detaliile cardului tău.</translation>
 <translation id="3010559122411665027">Intrarea din listă „<ph name="ENTRY_INDEX" />”: <ph name="ERROR" /></translation>
@@ -446,6 +450,7 @@
 <translation id="3060227939791841287">C9 (Plic)</translation>
 <translation id="3061707000357573562">Serviciu de corecție</translation>
 <translation id="3064966200440839136">Vei părăsi modul incognito pentru a plăti folosind o aplicație externă. Continui?</translation>
+<translation id="3086579638707268289">Activitatea ta de pe web este monitorizată</translation>
 <translation id="3095940652251934233">Extras</translation>
 <translation id="3096100844101284527">Adaugă o adresă de preluare</translation>
 <translation id="3105172416063519923">ID articol:</translation>
@@ -498,6 +503,7 @@
 <translation id="3369192424181595722">Eroare de ceas</translation>
 <translation id="337363190475750230">Scos din uz</translation>
 <translation id="3377188786107721145">Eroare la analizarea politicii</translation>
+<translation id="3377736046129930310">Folosește blocarea ecranului pentru a confirma mai repede cardurile</translation>
 <translation id="3380365263193509176">Eroare necunoscută</translation>
 <translation id="3380864720620200369">Cod de client:</translation>
 <translation id="3387261909427947069">Metode de plată</translation>
@@ -663,6 +669,7 @@
 <translation id="4194250254487269611">Cardul nu poate fi salvat în acest moment</translation>
 <translation id="4196861286325780578">&amp;Repetați mutarea</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />să verifici configurarea pentru firewall și antivirus;<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">profil pentru ecranul de conectare</translation>
 <translation id="4215751373031079683">7x9 (Plic)</translation>
 <translation id="4220128509585149162">Blocări</translation>
 <translation id="422022731706691852">Atacatorii de pe <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> pot încerca să te înșele pentru a instala programe care dăunează experienței de navigare (de exemplu, schimbând pagina principală sau afișând anunțuri suplimentare pe site-urile pe care le accesezi).<ph name="BEGIN_LEARN_MORE_LINK" />Află mai multe<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -745,6 +752,7 @@
 <translation id="4515275063822566619">Cardurile și adresele sunt din Chrome și din Contul Google (<ph name="ACCOUNT_EMAIL" />). Poți să le gestionezi în <ph name="BEGIN_LINK" />Setări<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Comm-10 (Plic)</translation>
 <translation id="4522570452068850558">Detalii</translation>
+<translation id="4524138615196389145">Confirmă cardurile mai rapid, folosind WebAuthn</translation>
 <translation id="4524805452350978254">Gestionează cardurile</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -856,6 +864,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64 de biți)</translation>
+<translation id="5121469660360593280">Permite-i administratorului accesul la datele despre evenimentele de securitate semnalate de Protecția Chrome pentru utilizatorii din întreprinderi. Aici pot fi incluse adresele URL ale paginilor pe care le accesezi, numele de fișiere sau metadate și numele de utilizator cu care te conectezi pe dispozitiv și la Chrome.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Confirmă cardul</translation>
 <translation id="5135404736266831032">Gestionează adresele...</translation>
@@ -867,6 +876,7 @@
 <translation id="5159010409087891077">Deschide pagina într-o fereastră incognito nouă (⇧⌘N)</translation>
 <translation id="516920405563544094">Introdu codul CVC pentru <ph name="CREDIT_CARD" />. După ce confirmi, acest site va avea acces la detaliile cardului tău din Contul Google.</translation>
 <translation id="5169827969064885044">Este posibil să pierzi accesul la contul organizației sau să fii victima unui furt de identitate. Chrome îți recomandă să îți schimbi acum parola.</translation>
+<translation id="5170017743895942767">Protecție Chrome pentru utilizatorii din întreprinderi</translation>
 <translation id="5171045022955879922">Caută sau introdu adresa URL</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Computer</translation>
@@ -987,6 +997,7 @@
 <translation id="5730040223043577876">Chrome îți recomandă să resetezi parola dacă ai folosit-o și pe alte site-uri.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Salvează cardul în Contul Google}few{Salvează cardurile în Contul Google}other{Salvează cardurile în Contul Google}}</translation>
 <translation id="5763042198335101085">Introdu o adresă de e-mail validă</translation>
+<translation id="5763703224595565476">Administratorul a activat în browser Protecția Chrome pentru utilizatorii din întreprinderi. Protecția Chrome pentru utilizatorii din întreprinderi are acces la o parte din datele tale.</translation>
 <translation id="5765072501007116331">Pentru a vedea metodele de livrare și cerințele, selectează o adresă</translation>
 <translation id="5778550464785688721">Control complet asupra dispozitivelor MIDI</translation>
 <translation id="5781136890105823427">Experimentul a fost activat</translation>
@@ -1066,6 +1077,7 @@
 <translation id="6094273045989040137">Adnotează</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">Contul Google poate să ofere alte forme ale istoricului de navigare la <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
+<translation id="6120179357481664955">Mai știi contul UPI?</translation>
 <translation id="6132597952260690497">Informații despre extensiile și pluginurile instalate</translation>
 <translation id="6146055958333702838">Verifică toate cablurile și repornește routerele, modemurile sau alte
     dispozitive de rețea pe care le folosești.</translation>
@@ -1081,6 +1093,7 @@
 <translation id="6221345481584921695">Navigarea sigură Google <ph name="BEGIN_LINK" />a detectat recent programe malware<ph name="END_LINK" /> pe <ph name="SITE" />. Site-urile care sunt de obicei sigure sunt uneori infectate cu programe malware. Conținutul rău-intenționat provine de la <ph name="SUBRESOURCE_HOST" />, un distribuitor cunoscut de programe malware.</translation>
 <translation id="6234122620015464377">Decupare după fiecare document</translation>
 <translation id="6240447795304464094">Sigla Google Pay</translation>
+<translation id="6241121617266208201">Ascunde sugestiile</translation>
 <translation id="6251924700383757765">Politica de confidențialitate</translation>
 <translation id="6254436959401408446">Nu există suficientă memorie pentru a deschide pagina</translation>
 <translation id="625755898061068298">Ai ales să dezactivezi avertismentele de securitate pentru acest site.</translation>
@@ -1127,6 +1140,7 @@
 <translation id="6409754798200046165">Ai introdus parola pe un site înșelător. Chrome recomandă să-ți schimbi acum parola.</translation>
 <translation id="6410264514553301377">Introdu data de expirare și codul CVC pentru <ph name="CREDIT_CARD" /></translation>
 <translation id="6415778972515849510">Chromium te poate ajuta să îți protejezi Contul Google și să îți schimbi parola.</translation>
+<translation id="6423385022588644828">Confirmă-ți cardurile mai rapid, folosind Touch ID</translation>
 <translation id="6427730057873428458">Îndoire de tip fereastră</translation>
 <translation id="6433490469411711332">Editează informațiile de contact</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> a refuzat conexiunea.</translation>
@@ -1197,12 +1211,14 @@
 <translation id="6786747875388722282">Extensii</translation>
 <translation id="6790428901817661496">Redă</translation>
 <translation id="679355240208270552">Valoare ignorată, deoarece politica nu a activat căutarea prestabilită.</translation>
+<translation id="6794951432696553238">Confirmă-ți cardurile mai rapid, folosind Windows Hello</translation>
 <translation id="681021252041861472">Câmp obligatoriu</translation>
 <translation id="6810899417690483278">ID-ul de personalizare</translation>
 <translation id="6825578344716086703">Ai încercat să accesezi <ph name="DOMAIN" />, dar serverul a prezentat un certificat semnat folosind un algoritm de semnare slab (cum ar fi SHA-1). Acest lucru înseamnă că este posibil ca datele de conectare de securitate prezentate de server să fie falsificate sau ca serverul să nu fie cel așteptat (este posibil să comunici cu un atacator).</translation>
 <translation id="6826370046007623921">Prevenirea pierderii datelor</translation>
 <translation id="6831043979455480757">Tradu</translation>
 <translation id="6839929833149231406">Zonă</translation>
+<translation id="6846340164947227603">Folosește un număr de card virtual…</translation>
 <translation id="6852204201400771460">Reîncarci aplicația?</translation>
 <translation id="6865412394715372076">Acest card nu poate fi confirmat chiar acum.</translation>
 <translation id="6868206169573555318">Repornește pentru a actualiza</translation>
@@ -1231,6 +1247,7 @@
 <translation id="6989763994942163495">Afișează setările avansate...</translation>
 <translation id="6993898126790112050">6x9 (Plic)</translation>
 <translation id="6996312675313362352">Tradu întotdeauna din <ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">Folosește Windows Hello ca să confirmi mai repede cardurile</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Aceste costuri pot fi unice sau recurente și ascunse.</translation>
 <translation id="7029809446516969842">Parole</translation>
@@ -1241,6 +1258,7 @@
 <translation id="7064851114919012435">Informații de contact</translation>
 <translation id="7075452647191940183">Solicitarea este prea mare</translation>
 <translation id="7079718277001814089">Acest site conține programe malware</translation>
+<translation id="7081308185095828845">Această funcție nu este disponibilă pe dispozitivul tău</translation>
 <translation id="7087282848513945231">Comitat</translation>
 <translation id="7090678807593890770">Caută <ph name="LINK" /> pe Google</translation>
 <translation id="7108338896283013870">Ascunde</translation>
@@ -1294,9 +1312,11 @@
 <translation id="733923710415886693">Certificatul serverului nu a fost dezvăluit folosind Transparența certificatului.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">Este afiliat:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> a activat în browser Protecția Chrome pentru utilizatorii din întreprinderi. Protecția Chrome pentru utilizatorii din întreprinderi are acces la o parte din datele tale.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Linie de comandă</translation>
 <translation id="7372973238305370288">rezultat al căutării</translation>
+<translation id="7374733840632556089">Această problemă apare din cauza unui certificat pe care tu sau altcineva l-ați instalat pe dispozitiv. Certificatul este folosit pentru a monitoriza și a intercepta rețelele, nefiind autorizat de Chrome. Deși există cazuri legitime pentru monitorizare, de exemplu, într-o rețea de la școală sau de la serviciu, Chrome vrea să se asigure că știi ce se întâmplă, chiar dacă nu poți opri acest lucru. Monitorizarea se poate face în orice browser sau aplicație care intră pe web.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Comenzi media</translation>
 <translation id="7378627244592794276">Nu</translation>
@@ -1325,6 +1345,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />să afli mai multe<ph name="END_LINK" /> despre această problemă.</translation>
 <translation id="7455133967321480974">Utilizați setarea prestabilită la nivel global (Blocați)</translation>
 <translation id="7460618730930299168">Proiecția este diferită de ce ai selectat. Continui?</translation>
+<translation id="7464821087936825778">Se iese din modul de căutare</translation>
 <translation id="7473891865547856676">Nu, mulțumesc</translation>
 <translation id="7481312909269577407">Înainte</translation>
 <translation id="7485870689360869515">Nu s-au găsit date.</translation>
@@ -1546,6 +1567,7 @@
 <translation id="8559762987265718583">O conexiune privată la <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> nu poate fi stabilită, deoarece data și ora dispozitivului (<ph name="DATE_AND_TIME" />) sunt incorecte.</translation>
 <translation id="8564985650692024650">Chromium îți recomandă să resetezi parola pentru <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> dacă ai folosit-o și pe alte site-uri.</translation>
 <translation id="8571890674111243710">Se traduce pagina în <ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">Folosește Touch ID ca să confirmi cardurile mai rapid</translation>
 <translation id="858637041960032120">Adăugați telefon
 </translation>
 <translation id="860043288473659153">Nume titular de card</translation>
diff --git a/components/strings/components_strings_ru.xtb b/components/strings/components_strings_ru.xtb
index 34197565..b83ddab 100644
--- a/components/strings/components_strings_ru.xtb
+++ b/components/strings/components_strings_ru.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Загрузить страницу позже</translation>
 <translation id="1015730422737071372">Сообщить дополнительную информацию</translation>
 <translation id="1021110881106174305">Карты, которые принимаются к оплате</translation>
+<translation id="1021753677514347426">Эта проблема возникает из-за сертификата, который вы или другой пользователь установили на это устройство. Такой сертификат не считается доверенным, поскольку обычно он используется для отслеживания и перехвата данных в сети. Подобный функционал допустим, когда устройство находится на работе или в учебном заведении. Так или иначе, мы хотели бы предупредить вас о существовании этого сертификата. Обратите внимание, что отслеживание действий может происходить в любом браузере или приложении с доступом в Интернет.</translation>
 <translation id="1032854598605920125">Повернуть по часовой стрелке</translation>
 <translation id="1036348656032585052">Отключить</translation>
 <translation id="1038842779957582377">неизвестное имя</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575"><ph name="CRASH_TIME" />: получен отчет о сбое (ещё не загружен или не отклонен)</translation>
 <translation id="1270502636509132238">Способ получения</translation>
 <translation id="1285320974508926690">Никогда не переводить этот сайт</translation>
+<translation id="1285400217480592994">Проверять содержимое файлов, которые вы скачиваете и загружаете через Chrome.</translation>
 <translation id="1292701964462482250">"ПО, установленное на компьютере, не позволяет Chrome безопасно подключиться к Интернету" (только для Windows)</translation>
 <translation id="1294154142200295408">Модификации для командной строки</translation>
 <translation id="129553762522093515">Недавно закрытые</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Номер телефона</translation>
 <translation id="2277103315734023688">Перемотать вперед</translation>
 <translation id="2283340219607151381">Сохранять и автоматически подставлять адреса</translation>
+<translation id="2288422996159078444">Все ваши действия в Интернете (текст, который вы набираете, страницы, которые просматриваете, и т. д.) отслеживаются, а контент сайтов может изменяться без вашего ведома.</translation>
 <translation id="2289385804009217824">Подрезание</translation>
 <translation id="2292556288342944218">Доступ в Интернет закрыт</translation>
 <translation id="2297722699537546652">B5 (конверт)</translation>
@@ -426,6 +429,7 @@
 <translation id="2989742184762224133">Две скобы сверху</translation>
 <translation id="2991174974383378012">Доступ веб-сайтов</translation>
 <translation id="2991571918955627853">Веб-сайт <ph name="SITE" /> использует механизм HSTS. Открыть сайт в настоящее время нельзя. Сбой мог быть вызван сетевой ошибкой или действиями злоумышленников. Скорее всего, сайт заработает через некоторое время.</translation>
+<translation id="2996674880327704673">Рекомендации от Google</translation>
 <translation id="3005723025932146533">Открыть сохраненную копию</translation>
 <translation id="3008447029300691911">Введите CVC-код карты <ph name="CREDIT_CARD" />. После этого ее данные будут переданы сайту.</translation>
 <translation id="3010559122411665027">Элемент списка "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -438,6 +442,7 @@
 <translation id="3060227939791841287">C9 (конверт)</translation>
 <translation id="3061707000357573562">Исправление сервиса</translation>
 <translation id="3064966200440839136">Вы выйдете из режима инкогнито, чтобы произвести оплату во внешнем приложении. Продолжить?</translation>
+<translation id="3086579638707268289">Ваши действия в Интернете отслеживаются</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Добавить адрес получения</translation>
 <translation id="3105172416063519923">Идентификатор объекта:</translation>
@@ -489,6 +494,7 @@
 <translation id="3369192424181595722">Ошибка часов</translation>
 <translation id="337363190475750230">Отключен</translation>
 <translation id="3377188786107721145">Не удалось выполнить анализ политики</translation>
+<translation id="3377736046129930310">Использовать блокировку экрана для быстрого подтверждения карт</translation>
 <translation id="3380365263193509176">Неизвестная ошибка</translation>
 <translation id="3380864720620200369">Идентификатор клиента:</translation>
 <translation id="3387261909427947069">Способы оплаты</translation>
@@ -649,6 +655,7 @@
 <translation id="4194250254487269611">Сейчас сохранить эту карту нельзя.</translation>
 <translation id="4196861286325780578">&amp;Повторить перемещение</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Проверьте настройки брандмауэра и антивирусного ПО<ph name="END_LINK" />.</translation>
+<translation id="4214357935346142455">профиль экрана входа</translation>
 <translation id="4215751373031079683">7x9 (конверт)</translation>
 <translation id="4220128509585149162">Сбои в работе Chrome</translation>
 <translation id="422022731706691852">Посещение сайта <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> может привести к установке вредоносного ПО, которое будет мешать вашей работе в браузере (например, менять стартовую страницу или показывать дополнительную рекламу на сайтах). <ph name="BEGIN_LEARN_MORE_LINK" />Подробнее…<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -731,6 +738,7 @@
 <translation id="4515275063822566619">Это карты и адреса, указанные в Chrome и вашем аккаунте Google (<ph name="ACCOUNT_EMAIL" />). Вы можете изменить их на странице <ph name="BEGIN_LINK" />Настройки<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Comm-10 (конверт)</translation>
 <translation id="4522570452068850558">Подробнее</translation>
+<translation id="4524138615196389145">Подтверждайте карты быстрее с помощью WebAuthn</translation>
 <translation id="4524805452350978254">Изменить</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -841,6 +849,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64 бит)</translation>
+<translation id="5121469660360593280">Отправлять администратору данные о событиях безопасности, которые были помечены системой защиты пользователей Chrome Enterprise как потенциально опасные. Это могут быть URL страниц, которые вы посещаете, названия файлов и метаданные, а также ваше имя пользователя для входа в систему на устройстве и в браузер Chrome.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Подтвердите данные карты</translation>
 <translation id="5135404736266831032">Управление адресами…</translation>
@@ -852,6 +861,7 @@
 <translation id="5159010409087891077">Открыть страницу в новом окне в режиме инкогнито (⇧ + ⌘ + N)</translation>
 <translation id="516920405563544094">Введите CVC-код карты <ph name="CREDIT_CARD" />. После этого ее реквизиты из аккаунта Google будут переданы сайту.</translation>
 <translation id="5169827969064885044">Возможно, кто-то пытается получить доступ к вашим личным данным или корпоративному аккаунту. Рекомендуем немедленно сменить пароль.</translation>
+<translation id="5170017743895942767">Система защиты пользователей Chrome Enterprise</translation>
 <translation id="5171045022955879922">Введите запрос или URL</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Локальный компьютер</translation>
@@ -972,6 +982,7 @@
 <translation id="5730040223043577876">Chrome рекомендует сбросить пароль, если вы использовали его на других сайтах.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Сохраните карту в аккаунте Google}one{Сохраните карты в аккаунте Google}few{Сохраните карты в аккаунте Google}many{Сохраните карты в аккаунте Google}other{Сохраните карты в аккаунте Google}}</translation>
 <translation id="5763042198335101085">Укажите действительный адрес электронной почты.</translation>
+<translation id="5763703224595565476">Администратор включил в браузере систему защиты пользователей Chrome Enterprise, у которой есть доступ к некоторым вашим данным.</translation>
 <translation id="5765072501007116331">Выберите адрес, чтобы посмотреть способы и условия доставки.</translation>
 <translation id="5778550464785688721">Полный контроль над MIDI-устройствами</translation>
 <translation id="5781136890105823427">Эксперимент включен</translation>
@@ -1051,6 +1062,7 @@
 <translation id="6094273045989040137">Аннотировать</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">Информация о других ваших действиях в Интернете может также храниться на странице <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
+<translation id="6120179357481664955">Запомнить идентификатор UPI?</translation>
 <translation id="6132597952260690497">Информация об установленных расширениях и плагинах</translation>
 <translation id="6146055958333702838">Проверьте соединение кабелей, перезагрузите маршрутизаторы, модемы и другие
     сетевые устройства.</translation>
@@ -1066,6 +1078,7 @@
 <translation id="6221345481584921695">Система Google по проверке безопасности сайтов недавно обнаружила на <ph name="SITE" /> <ph name="BEGIN_LINK" />вредоносное ПО<ph name="END_LINK" />. Его источником является <ph name="SUBRESOURCE_HOST" />, не раз замеченным в распространении вирусов. Будьте внимательны, иногда даже на безопасных сайтах появляются вредоносные программы.</translation>
 <translation id="6234122620015464377">Подрезать после каждого документа</translation>
 <translation id="6240447795304464094">Логотип Google Pay</translation>
+<translation id="6241121617266208201">Скрыть варианты заполнения</translation>
 <translation id="6251924700383757765">Политика конфиденциальности</translation>
 <translation id="6254436959401408446">Недостаточно памяти для загрузки страницы</translation>
 <translation id="625755898061068298">Вы отключили предупреждения системы безопасности для этого сайта.</translation>
@@ -1112,6 +1125,7 @@
 <translation id="6409754798200046165">Вы только что ввели пароль на поддельном сайте. Браузер Chrome рекомендует сменить пароль прямо сейчас.</translation>
 <translation id="6410264514553301377">Введите срок действия и CVC-код карты <ph name="CREDIT_CARD" /></translation>
 <translation id="6415778972515849510">Защитите свой аккаунт Google и смените пароль с помощью Chromium.</translation>
+<translation id="6423385022588644828">Подтверждайте карты быстрее с помощью Touch ID</translation>
 <translation id="6427730057873428458">Фальцовка калиткой в два сгиба</translation>
 <translation id="6433490469411711332">Изменить контактную информацию</translation>
 <translation id="6433595998831338502">Сайт <ph name="HOST_NAME" /> не позволяет установить соединение.</translation>
@@ -1182,12 +1196,14 @@
 <translation id="6786747875388722282">Расширения</translation>
 <translation id="6790428901817661496">Воспроизвести</translation>
 <translation id="679355240208270552">Игнорируется, так как в правиле не задан поиск по умолчанию.</translation>
+<translation id="6794951432696553238">Подтверждайте карты быстрее с помощью Windows Hello</translation>
 <translation id="681021252041861472">Обязательное поле</translation>
 <translation id="6810899417690483278">Идентификатор персонализации</translation>
 <translation id="6825578344716086703">Вы пытаетесь обратиться к серверу в домене <ph name="DOMAIN" />, но его сертификат подписан с помощью ненадежного алгоритма (например, SHA-1). Это означает, что учетные данные безопасности и сам сервер могут оказаться поддельными. Возможно, вы имеете дело со злоумышленниками.</translation>
 <translation id="6826370046007623921">Предотвращение потери данных</translation>
 <translation id="6831043979455480757">Перевести</translation>
 <translation id="6839929833149231406">Район</translation>
+<translation id="6846340164947227603">Использовать номер виртуальной карты</translation>
 <translation id="6852204201400771460">Перезапустить приложение?</translation>
 <translation id="6865412394715372076">Невозможно подтвердить карту.</translation>
 <translation id="6868206169573555318">Перезапустить и обновить</translation>
@@ -1216,6 +1232,7 @@
 <translation id="6989763994942163495">Показать дополнительные настройки</translation>
 <translation id="6993898126790112050">6x9 (конверт)</translation>
 <translation id="6996312675313362352">Всегда переводить <ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">Использовать Windows Hello для быстрого подтверждения карт</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Списание может быть разовым или повторяющимся без каких-либо уведомлений.</translation>
 <translation id="7029809446516969842">Пароли</translation>
@@ -1226,6 +1243,7 @@
 <translation id="7064851114919012435">Контактные данные</translation>
 <translation id="7075452647191940183">Запрос слишком велик.</translation>
 <translation id="7079718277001814089">Этот сайт содержит вредоносное ПО</translation>
+<translation id="7081308185095828845">Функция недоступна на вашем устройстве</translation>
 <translation id="7087282848513945231">Округ</translation>
 <translation id="7090678807593890770">Выполните поиск по запросу <ph name="LINK" /> в Google</translation>
 <translation id="7108338896283013870">Скрыть</translation>
@@ -1279,9 +1297,11 @@
 <translation id="733923710415886693">Сертификат сервера не проходил проверку.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">Аффилированный пользователь:</translation>
+<translation id="73479065977517481">Администратор домена <ph name="ENROLLMENT_DOMAIN" /> включил в вашем браузере систему защиты пользователей Chrome Enterprise, у которой есть доступ к некоторым вашим данным.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Командная строка</translation>
 <translation id="7372973238305370288">результат поиска</translation>
+<translation id="7374733840632556089">Эта проблема возникает из-за сертификата, который вы или другой пользователь установили на это устройство. Такой сертификат не считается доверенным, поскольку обычно он используется для отслеживания и перехвата данных в сети. Подобный функционал допустим, когда устройство находится на работе или в учебном заведении. Так или иначе, мы хотели бы предупредить вас о существовании этого сертификата. Обратите внимание, что отслеживание действий может происходить в любом браузере или приложении с доступом в Интернет.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Элементы управления медиафайлами</translation>
 <translation id="7378627244592794276">Нет</translation>
@@ -1310,6 +1330,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Узнайте больше<ph name="END_LINK" /> об этой проблеме.</translation>
 <translation id="7455133967321480974">Использовать глобальный параметр по умолчанию (блокировать)</translation>
 <translation id="7460618730930299168">Настройки этого сеанса отличаются от тех, которые выбрали вы. Продолжить?</translation>
+<translation id="7464821087936825778">Выход из режима поиска</translation>
 <translation id="7473891865547856676">Пропустить</translation>
 <translation id="7481312909269577407">Вперед</translation>
 <translation id="7485870689360869515">Данные не найдены.</translation>
@@ -1531,6 +1552,7 @@
 <translation id="8559762987265718583">Не удалось установить защищенное соединение с доменом <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> из-за неверных настроек системных часов и календаря (<ph name="DATE_AND_TIME" />).</translation>
 <translation id="8564985650692024650">Chromium рекомендует сбросить пароль, используемый в подразделении <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" />, если вы указывали его на других сайтах.</translation>
 <translation id="8571890674111243710">Перевод страницы на <ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">Использовать Touch ID для быстрого подтверждения карт</translation>
 <translation id="858637041960032120">Добавьте номер</translation>
 <translation id="860043288473659153">Имя владельца карты</translation>
 <translation id="8616822740383114808">Вы включили эту настройку, выбрав параметр "<ph name="ENFORCING_SETTING" />" на странице "<ph name="SETTINGS_PAGE" />"</translation>
diff --git a/components/strings/components_strings_sl.xtb b/components/strings/components_strings_sl.xtb
index 235ab563..10ecd15 100644
--- a/components/strings/components_strings_sl.xtb
+++ b/components/strings/components_strings_sl.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Naloži stran pozneje</translation>
 <translation id="1015730422737071372">Navedite dodatne podrobnosti</translation>
 <translation id="1021110881106174305">Sprejete kartice</translation>
+<translation id="1021753677514347426">Do te težave pride zaradi potrdila, ki ste ga vi ali nekdo drug namestili v napravo. To potrdilo se je v preteklosti uporabljalo za prestrezanje in nadzor v omrežjih, zato ga Chromium ne obravnava kot zaupanja vrednega. Čeprav obstajajo nekateri legitimni primeri nadzora, denimo v šolah ali omrežjih v podjetjih, se želi Chromium prepričati, da se nadzora zavedate, tudi če ga ne morete preprečiti. Do nadzora lahko pride v katerem koli brskalniku ali aplikaciji, ki dostopa do spleta.</translation>
 <translation id="1032854598605920125">Sukanje v smeri urnega kazalca</translation>
 <translation id="1036348656032585052">Izklop</translation>
 <translation id="1038842779957582377">neznano ime</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Poročilo o zrušitvi je bilo zajeto takrat: <ph name="CRASH_TIME" /> (ni še naloženo ali je prezrto)</translation>
 <translation id="1270502636509132238">Način prevzema</translation>
 <translation id="1285320974508926690">Nikoli ne prevedi tega spletnega mesta</translation>
+<translation id="1285400217480592994">Pregled vsebine datotek, ki jih prenesete iz Chroma ali naložite vanj.</translation>
 <translation id="1292701964462482250">»Programska oprema v računalniku Chromu preprečuje vzpostavitev varne povezave s spletom« (samo računalniki s sistemom Windows)</translation>
 <translation id="1294154142200295408">Različice ukazne vrstice</translation>
 <translation id="129553762522093515">Nedavno zaprto</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Telefonska številka</translation>
 <translation id="2277103315734023688">Išči naprej</translation>
 <translation id="2283340219607151381">Shranjevanje in izpolnjevanje naslovov</translation>
+<translation id="2288422996159078444">Vse, kar vnesete, vse spletne strani, ki si jih ogledate, in vsa dejavnost v spletu se nadzorujejo. Vsebino na spletnih mestih je mogoče spremeniti brez vaše vednosti.</translation>
 <translation id="2289385804009217824">Obrezovanje</translation>
 <translation id="2292556288342944218">Internetni dostop je blokiran</translation>
 <translation id="2297722699537546652">B5 (Envelope)</translation>
@@ -436,6 +439,7 @@
 <translation id="2989742184762224133">Dvojno spenjanje zgoraj</translation>
 <translation id="2991174974383378012">Deljenje s spletnimi mesti</translation>
 <translation id="2991571918955627853">Spletnega mesta <ph name="SITE" /> trenutno ni mogoče obiskati, saj uporablja protokol HSTS. Napake omrežja in napadi na omrežje so običajno začasni, zato bo ta stran verjetno delovala pozneje.</translation>
+<translation id="2996674880327704673">Googlovi predlogi</translation>
 <translation id="3005723025932146533">Pokaži shranjeno kopijo</translation>
 <translation id="3008447029300691911">Vnesite CVC za <ph name="CREDIT_CARD" />. Ko potrdite, bodo temu spletnemu mestu razkriti podatki o vaši kartici.</translation>
 <translation id="3010559122411665027">Vnos na sznamu »<ph name="ENTRY_INDEX" />«: <ph name="ERROR" /></translation>
@@ -448,6 +452,7 @@
 <translation id="3060227939791841287">C9 (Envelope)</translation>
 <translation id="3061707000357573562">Storitev za popravke</translation>
 <translation id="3064966200440839136">Zaradi plačila v zunanji aplikaciji boste zapustili način brez beleženja zgodovine. Želite nadaljevati?</translation>
+<translation id="3086579638707268289">Vaša dejavnost v spletu je nadzorovana</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Dodajanje naslova za prevzem</translation>
 <translation id="3105172416063519923">ID sredstva:</translation>
@@ -500,6 +505,7 @@
 <translation id="3369192424181595722">Napaka ure</translation>
 <translation id="337363190475750230">Nepripravljen</translation>
 <translation id="3377188786107721145">Napaka pri razčlenjevanju pravilnika</translation>
+<translation id="3377736046129930310">Uporabite zaklepanje zaslona za hitrejše potrjevanje kartic</translation>
 <translation id="3380365263193509176">Neznana napaka</translation>
 <translation id="3380864720620200369">ID odjemalca:</translation>
 <translation id="3387261909427947069">Plačilna sredstva</translation>
@@ -665,6 +671,7 @@
 <translation id="4194250254487269611">Kartice trenutno ni mogoče shraniti</translation>
 <translation id="4196861286325780578">&amp;Uveljavi premik</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />preveriti požarni zid in konfiguracije protivirusnega programa<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">profil na zaslonu za prijavo</translation>
 <translation id="4215751373031079683">7x9 (Envelope)</translation>
 <translation id="4220128509585149162">Zrušitve</translation>
 <translation id="422022731706691852">Napadalci na spletnem mestu <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> vas bodo morda poskusili zavesti, da bi namestili programe, ki škodljivo vplivajo na brskanje (na primer tako, da spremenijo vašo domačo stran ali na spletnih mestih, ki jih obiščete, prikazujejo dodatne oglase). <ph name="BEGIN_LEARN_MORE_LINK" />Več o tem<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -747,6 +754,7 @@
 <translation id="4515275063822566619">Kartice in naslovi so iz Chroma in Google Računa (<ph name="ACCOUNT_EMAIL" />). Upravljate jih lahko v <ph name="BEGIN_LINK" />nastavitvah<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Comm-10 (Envelope)</translation>
 <translation id="4522570452068850558">Podrobnosti</translation>
+<translation id="4524138615196389145">Od zdaj naprej lahko uporabljate WebAuthn in kartice potrjujete hitreje</translation>
 <translation id="4524805452350978254">Upravljanje kartic</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -858,6 +866,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64-bitno)</translation>
+<translation id="5121469660360593280">Skrbniku posredujte podatke o varnostnih dogodkih, ki jih je označila Chromova funkcija zaščite uporabnikov različice za podjetja. To morda vključuje URL-je strani, ki jih obiščete, imena ali metapodatke datotek in uporabniško ime, s katerim se prijavite v napravo in Chrome.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Preverjanje kartice</translation>
 <translation id="5135404736266831032">Upravljanje naslovov ...</translation>
@@ -869,6 +878,7 @@
 <translation id="5159010409087891077">Odpiranje strani v novem oknu brez beleženja zgodovine (⇧⌘N)</translation>
 <translation id="516920405563544094">Vnesite CVC za kreditno kartico <ph name="CREDIT_CARD" />. Ko potrdite, bodo temu spletnemu mestu razkriti podatki o kreditni kartici iz Google Računa.</translation>
 <translation id="5169827969064885044">Izgubite lahko dostop do računa za organizacijo ali postanete žrtev kraje identitete. Chrome priporoča, da spremenite geslo.</translation>
+<translation id="5170017743895942767">Chromova zaščita uporabnikov različice za podjetja</translation>
 <translation id="5171045022955879922">Poiščite ali vnesite URL</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Računalnik</translation>
@@ -989,6 +999,7 @@
 <translation id="5730040223043577876">Chrome priporoča, da ponastavite geslo, če ste ga uporabljali na drugih spletnih mestih.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Shranjevanje kartice v Google Računu}one{Shranjevanje kartic v Google Računu}two{Shranjevanje kartic v Google Računu}few{Shranjevanje kartic v Google Računu}other{Shranjevanje kartic v Google Računu}}</translation>
 <translation id="5763042198335101085">Vnesite veljaven e-poštni naslov</translation>
+<translation id="5763703224595565476">Skrbnik je v brskalniku omogočil Chromovo funkcijo zaščite uporabnikov različice za podjetja. Chromova funkcija zaščite uporabnikov različice za podjetja ima dostop do nekaterih vaših podatkov.</translation>
 <translation id="5765072501007116331">Če si želite ogledati načine dostave in zahteve, izberite naslov</translation>
 <translation id="5778550464785688721">Popolni nadzor naprav MIDI</translation>
 <translation id="5781136890105823427">Preizkus je omogočen</translation>
@@ -1068,6 +1079,7 @@
 <translation id="6094273045989040137">Pripisovanje</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">V Google Računu so morda druge vrste zgodovine brskanja na <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
+<translation id="6120179357481664955">Si želite zapomniti ID za UPI?</translation>
 <translation id="6132597952260690497">Podatki o nameščenih razširitvah in vtičnikih</translation>
 <translation id="6146055958333702838">Preverite kable in znova zaženite usmerjevalnike, modeme ali druge omrežne 
     naprave, ki jih uporabljate.</translation>
@@ -1083,6 +1095,7 @@
 <translation id="6221345481584921695">Googlova funkcija varnega brskanja je na spletnem mestu <ph name="BEGIN_LINK" /> nedavno <ph name="END_LINK" />zaznala zlonamerno programsko opremo<ph name="SITE" />. Spletna mesta, ki so običajno varna, so včasih okužena z zlonamerno programsko opremo. Zlonamerno vsebino razširja znani distributer zlonamerne programske opreme, <ph name="SUBRESOURCE_HOST" />.</translation>
 <translation id="6234122620015464377">Obrezovanje po vsakem dokumentu</translation>
 <translation id="6240447795304464094">Logotip Googla Pay</translation>
+<translation id="6241121617266208201">Skrij predloge</translation>
 <translation id="6251924700383757765">Pravilnik o zasebnosti</translation>
 <translation id="6254436959401408446">Ni dovolj pomnilnika za odpiranje te strani</translation>
 <translation id="625755898061068298">Izbrali ste onemogočanje varnostnih opozoril za to spletno mesto.</translation>
@@ -1129,6 +1142,7 @@
 <translation id="6409754798200046165">Pravkar ste vnesli geslo na zavajajočem spletnem mestu. Chrome priporoča, da takoj spremenite geslo.</translation>
 <translation id="6410264514553301377">Vnesite datum poteka veljavnosti in kodo CVC za kartico <ph name="CREDIT_CARD" /></translation>
 <translation id="6415778972515849510">Chromium vam lahko pomaga zaščititi račun za Google in spremeniti geslo.</translation>
+<translation id="6423385022588644828">Od zdaj naprej lahko uporabljate Touch ID in kartice potrjujete hitreje</translation>
 <translation id="6427730057873428458">Prepogibanje v obliki okna</translation>
 <translation id="6433490469411711332">Uredi informacije o stiku</translation>
 <translation id="6433595998831338502">Spletno mesto <ph name="HOST_NAME" /> ni dovolilo povezave.</translation>
@@ -1199,12 +1213,14 @@
 <translation id="6786747875388722282">Razširitve</translation>
 <translation id="6790428901817661496">Predvajanje</translation>
 <translation id="679355240208270552">Prezrto, ker pravilnik ne omogoča privzetega iskanja.</translation>
+<translation id="6794951432696553238">Od zdaj naprej lahko uporabljate Windows Hello in kartice potrjujete hitreje</translation>
 <translation id="681021252041861472">Obvezno polje</translation>
 <translation id="6810899417690483278">ID za prilagajanje</translation>
 <translation id="6825578344716086703">Poskusili ste dostopati do domene <ph name="DOMAIN" />, vendar ima strežnik potrdilo, podpisano s šibkim podpisnim algoritmom (kot je SHA-1). To pomeni, da so varnostne poverilnice, ki jih je poslal strežnik, morda ponarejene in strežnik morda ni tisti, ki ga pričakujete (morda komunicirate z napadalcem).</translation>
 <translation id="6826370046007623921">Preprečevanje izgube podatkov</translation>
 <translation id="6831043979455480757">Prevedi</translation>
 <translation id="6839929833149231406">Območje</translation>
+<translation id="6846340164947227603">Uporabi številko virtualne kartice ...</translation>
 <translation id="6852204201400771460">Želite znova naložiti aplikacijo?</translation>
 <translation id="6865412394715372076">Te kartice trenutno ni mogoče preveriti</translation>
 <translation id="6868206169573555318">Znova zaženite za posodobitev</translation>
@@ -1233,6 +1249,7 @@
 <translation id="6989763994942163495">Prikaži dodatne nastavitve ...</translation>
 <translation id="6993898126790112050">6x9 (Envelope)</translation>
 <translation id="6996312675313362352">Vedno prevedi ta jezik: <ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">Uporabite Windows Hello za hitrejše potrjevanje kartic</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Te bremenitve so lahko enkratne ali ponavljajoče se in morda niso očitne.</translation>
 <translation id="7029809446516969842">Gesla</translation>
@@ -1243,6 +1260,7 @@
 <translation id="7064851114919012435">Podatki o stiku</translation>
 <translation id="7075452647191940183">Zahteva je prevelika</translation>
 <translation id="7079718277001814089">To spletno mesto vsebuje zlonamerno programsko opremo</translation>
+<translation id="7081308185095828845">Ta funkcija ni na voljo v vaši napravi</translation>
 <translation id="7087282848513945231">Okrožje</translation>
 <translation id="7090678807593890770">Iščite v Googlu s poizvedbo <ph name="LINK" /></translation>
 <translation id="7108338896283013870">Skrij</translation>
@@ -1296,9 +1314,11 @@
 <translation id="733923710415886693">Potrdilo strežnika ni bilo razkrito na podlagi pravilnika o preglednosti potrdila.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">Je povezan:</translation>
+<translation id="73479065977517481">Domena <ph name="ENROLLMENT_DOMAIN" /> je v brskalniku omogočila Chromovo funkcijo zaščite uporabnikov različice za podjetja. Chromova funkcija zaščite uporabnikov različice za podjetja ima dostop do nekaterih vaših podatkov.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Ukazna vrstica</translation>
 <translation id="7372973238305370288">rezultat iskanja</translation>
+<translation id="7374733840632556089">Do te težave pride zaradi potrdila, ki ste ga vi ali nekdo drug namestili v napravo. To potrdilo se je v preteklosti uporabljalo za prestrezanje in nadzor v omrežjih, zato ga Chrome ne obravnava kot zaupanja vrednega. Čeprav obstajajo nekateri legitimni primeri nadzora, denimo v šolah ali omrežjih v podjetjih, se želi Chrome prepričati, da se nadzora zavedate, tudi če ga ne morete preprečiti. Do nadzora lahko pride v katerem koli brskalniku ali aplikaciji, ki dostopa do spleta.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> – <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Kontrolniki predstavnosti</translation>
 <translation id="7378627244592794276">Ne</translation>
@@ -1327,6 +1347,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Preberite več<ph name="END_LINK" /> o tej težavi.</translation>
 <translation id="7455133967321480974">Uporabi globalno privzeto (Blokiraj)</translation>
 <translation id="7460618730930299168">Predvajanje se razlikuje od tega, kar ste izbrali. Želite nadaljevati?</translation>
+<translation id="7464821087936825778">Izhod iz način iskanja</translation>
 <translation id="7473891865547856676">Ne, hvala</translation>
 <translation id="7481312909269577407">Naprej</translation>
 <translation id="7485870689360869515">Ni podatkov.</translation>
@@ -1548,6 +1569,7 @@
 <translation id="8559762987265718583">Zasebne povezave z domeno <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ni mogoče vzpostaviti, ker sta datum in ura (<ph name="DATE_AND_TIME" />) v napravi nepravilna.</translation>
 <translation id="8564985650692024650">Chromium priporoča, da ponastavite geslo za <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" />, če ste ga uporabljali tudi na drugih spletnih mestih.</translation>
 <translation id="8571890674111243710">Prevajanje strani v jezik <ph name="LANGUAGE" /> ...</translation>
+<translation id="8574899947864779331">Uporabite Touch ID za hitrejše potrjevanje kartic</translation>
 <translation id="858637041960032120">Dodajte tel. št. </translation>
 <translation id="860043288473659153">Ime imetnika kartice</translation>
 <translation id="8616822740383114808">To nastavitev uveljavlja »<ph name="ENFORCING_SETTING" />« na strani »<ph name="SETTINGS_PAGE" />«</translation>
diff --git a/components/strings/components_strings_sq.xtb b/components/strings/components_strings_sq.xtb
index 18df87c..4b1d498 100644
--- a/components/strings/components_strings_sq.xtb
+++ b/components/strings/components_strings_sq.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Ngarkoje faqen më vonë</translation>
 <translation id="1015730422737071372">Jep detaje të tjera</translation>
 <translation id="1021110881106174305">Kartat e pranuara</translation>
+<translation id="1021753677514347426">Ky problem ndodh për shkak të një certifikate që instalove ti ose dikush tjetër në pajisjen tënde. Certifikata njihet se është përdorur për të monitoruar dhe ndërhyrë në rrjete dhe nuk është e besuar nga Chromium. Megjithëse ekzistojnë disa raste legjitime për monitorimin, si p.sh. një rrjet shkolle ose kompanie, Chromium dëshiron të sigurohet që je në dijeni se kjo ndodh, edhe nëse nuk arrin ta ndalosh. Monitorimi mund të ndodhë në çdo shfletues ose aplikacion që ka qasje në ueb.</translation>
 <translation id="1032854598605920125">Rrotullo në drejtim të akrepave të orës</translation>
 <translation id="1036348656032585052">Çaktivizo</translation>
 <translation id="1038842779957582377">emër i panjohur</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">U regjistrua raport i ndërprerjes aksidentale në <ph name="CRASH_TIME" /> (nuk është ngarkuar apo shpërfillur ende)</translation>
 <translation id="1270502636509132238">Mënyra e marrjes</translation>
 <translation id="1285320974508926690">Asnjëherë mos e përkthe këtë sajt</translation>
+<translation id="1285400217480592994">Skano përmbajtjen e skedarëve që shkarkon ose ngarkon në Chrome.</translation>
 <translation id="1292701964462482250">"Një softuer në kompjuterin tënd po e ndalon Chrome që të lidhet në mënyrë të sigurt me uebin" (vetëm kompjuterët me Windows)</translation>
 <translation id="1294154142200295408">Variantet e rreshtit të komandës</translation>
 <translation id="129553762522093515">Të mbyllura së fundi</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Numër telefoni</translation>
 <translation id="2277103315734023688">Kërko përpara</translation>
 <translation id="2283340219607151381">Ruaj dhe plotëso adresat</translation>
+<translation id="2288422996159078444">Çdo gjë që shkruan, çdo faqe që shikon ose çdo aktivitet tjetër në ueb po shikohet. Përmbajtjet në sajte mund të ndryshohen pa dijeninë tënde.</translation>
 <translation id="2289385804009217824">Prerje</translation>
 <translation id="2292556288342944218">Qasja jote në internet është bllokuar</translation>
 <translation id="2297722699537546652">B5 (Zarf)</translation>
@@ -426,6 +429,7 @@
 <translation id="2989742184762224133">Dy kapje me tel lart</translation>
 <translation id="2991174974383378012">Ndarja me sajtet e uebit</translation>
 <translation id="2991571918955627853">Nuk mund ta vizitosh <ph name="SITE" /> në këtë moment sepse sajti i uebit përdor HSTS. Gabimet dhe sulmet e rrjetit janë zakonisht të përkohshme, prandaj kjo faqe ndoshta do të funksionojë më vonë.</translation>
+<translation id="2996674880327704673">Sugjerime nga Google</translation>
 <translation id="3005723025932146533">Shfaq një kopje të ruajtur</translation>
 <translation id="3008447029300691911">Shkruaj kodin CVC për <ph name="CREDIT_CARD" />. Pasi të konfirmohet, të dhënat e kartës do të ndahen me këtë sajt.</translation>
 <translation id="3010559122411665027">Hyrja e listës "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -438,6 +442,7 @@
 <translation id="3060227939791841287">C9 (Zarf)</translation>
 <translation id="3061707000357573562">Shërbimi i korrigjimit</translation>
 <translation id="3064966200440839136">Po del nga modaliteti "i fshehur" për të paguar nëpërmjet një aplikacioni të jashtëm. Do të vazhdosh?</translation>
+<translation id="3086579638707268289">Aktiviteti yt në ueb po monitorohet</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Shto adresën e marrjes</translation>
 <translation id="3105172416063519923">ID-ja e elementit:</translation>
@@ -490,6 +495,7 @@
 <translation id="3369192424181595722">Gabim i orës</translation>
 <translation id="337363190475750230">Qasja u çaktivizua</translation>
 <translation id="3377188786107721145">Gabim i analizimit të politikës</translation>
+<translation id="3377736046129930310">Përdor kyçjen e ekranit për të konfirmuar kartat më shpejt</translation>
 <translation id="3380365263193509176">Gabim i panjohur</translation>
 <translation id="3380864720620200369">ID-ja e klientit:</translation>
 <translation id="3387261909427947069">Mënyrat e pagesës</translation>
@@ -650,6 +656,7 @@
 <translation id="4194250254487269611">Karta jote nuk mund të ruhet për momentin</translation>
 <translation id="4196861286325780578">&amp;Bëje përsëri zhvendosjen</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Të kontrollosh konfigurimet e murit mbrojtës dhe antivirusit<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">profili i ekranit të identifikimit</translation>
 <translation id="4215751373031079683">7x9 (Zarf)</translation>
 <translation id="4220128509585149162">Ndërprerjet aksidentale</translation>
 <translation id="422022731706691852">Sulmuesit në <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> mund të përpiqen të të mashtrojnë të instalosh programe që dëmtojnë përvojën tënde të shfletimit (për shembull, duke ndryshuar faqen kryesore ose duke shfaqur reklama shtesë në faqen që viziton). <ph name="BEGIN_LEARN_MORE_LINK" />Mëso më shumë<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -732,6 +739,7 @@
 <translation id="4515275063822566619">Kartat dhe adresat janë nga Chrome dhe llogaria jote e Google (<ph name="ACCOUNT_EMAIL" />). Ato mund t'i menaxhosh te <ph name="BEGIN_LINK" />Cilësimet<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Comm-10 (Zarf)</translation>
 <translation id="4522570452068850558">Detajet</translation>
+<translation id="4524138615196389145">Konfirmo kartat e tua më shpejt duke përdorur WebAuthn nga tani e tutje</translation>
 <translation id="4524805452350978254">Menaxho kartat</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Blici</translation>
@@ -842,6 +850,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64-bit)</translation>
+<translation id="5121469660360593280">Ndaj me administratorin tënd të dhëna për ngjarjet e sigurisë që janë raportuar nga "Mbrojtja e përdoruesit" të Chrome Enterprise. Kjo mund të përfshijë URL-të e faqeve që viziton ti, emrat e skedarëve ose të dhënat meta dhe emrin e përdoruesit që përdor për t'u identifikuar në pajisjen tënde dhe në Chrome.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Verifiko kartën tënde</translation>
 <translation id="5135404736266831032">Menaxho adresat...</translation>
@@ -853,6 +862,7 @@
 <translation id="5159010409087891077">Hape faqen në një dritare të re "të fshehtë" (⇧⌘N)</translation>
 <translation id="516920405563544094">Shkruaj kodin CVC për <ph name="CREDIT_CARD" />. Pasi t'i konfirmosh, detajet e kartës nga "Llogaria jote e Google" do të ndahen me këtë sajt.</translation>
 <translation id="5169827969064885044">Mund të humbasësh qasjen në llogarinë e organizatës ose mund të pësosh vjedhje të identitetit. Chrome rekomandon që ta ndryshosh fjalëkalimin tani.</translation>
+<translation id="5170017743895942767">"Mbrojtja e përdoruesit" e Chrome Enterprise</translation>
 <translation id="5171045022955879922">Kërko ose shkruaj URL-në</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Pajisja</translation>
@@ -973,6 +983,7 @@
 <translation id="5730040223043577876">Chrome rekomandon rivendosjen e fjalëkalimit tënd nëse e ke ripërdorur në sajte të tjera.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Ruaje kartën në "Llogarinë tënde të Google"}other{Ruaji kartat në "Llogarinë tënde të Google"}}</translation>
 <translation id="5763042198335101085">Fut një adresë të vlefshme email-i</translation>
+<translation id="5763703224595565476">Administratori yt ka aktivizuar "Mbrojtjen e përdoruesit" të Chrome Enterprise në shfletuesin tënd. "Mbrojtja e përdoruesit" të Chrome Enterprise ka qasje te disa nga të dhënat e tua.</translation>
 <translation id="5765072501007116331">Për të parë mënyrat dhe kërkesat e dorëzimit, zgjidh një adresë</translation>
 <translation id="5778550464785688721">Kontroll i plotë i pajisjeve MIDI</translation>
 <translation id="5781136890105823427">Eksperimenti u aktivizua</translation>
@@ -1052,6 +1063,7 @@
 <translation id="6094273045989040137">Shëno</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">Llogaria jote e Google mund të ketë forma të tjera të historikut të shfletimit në <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
+<translation id="6120179357481664955">Të kujtohet ID-ja e UPI?</translation>
 <translation id="6132597952260690497">Informacion rreth shtesave dhe përbërësve shtesë të instaluar</translation>
 <translation id="6146055958333702838">Kontrollo kabllot dhe rindiz router-it, modemët ose pajisjet e tjera të rrjetit që mund të jesh duke përdorur.</translation>
 <translation id="614940544461990577">Provo:</translation>
@@ -1066,6 +1078,7 @@
 <translation id="6221345481584921695">Kohët e fundit "Shfletimi i sigurt" i Google <ph name="BEGIN_LINK" />zbuloi softuerin keqdashës<ph name="END_LINK" /> në <ph name="SITE" />. Sajtet e uebit që normalisht janë të sigurta, ndonjëherë infektohen me softuerë keqdashës. Përmbajtja keqdashëse vjen nga <ph name="SUBRESOURCE_HOST" />, një shpërndarës i njohur softuerësh keqdashës.</translation>
 <translation id="6234122620015464377">Prerje pas çdo dokumenti</translation>
 <translation id="6240447795304464094">Logo e Google Pay</translation>
+<translation id="6241121617266208201">Fshih sugjerimet</translation>
 <translation id="6251924700383757765">Politika e privatësisë</translation>
 <translation id="6254436959401408446">Nuk ka memorie të mjaftueshme për të hapur këtë faqe</translation>
 <translation id="625755898061068298">Ke zgjedhur që të çaktivizosh paralajmërimet e sigurisë për këtë sajt.</translation>
@@ -1112,6 +1125,7 @@
 <translation id="6409754798200046165">Sapo fute fjalëkalimin tënd në një sajt mashtrues. Chrome rekomandon që ta ndryshosh fjalëkalimin tani.</translation>
 <translation id="6410264514553301377">Fut datën e skadimit dhe kodin CVC për <ph name="CREDIT_CARD" /></translation>
 <translation id="6415778972515849510">Chromium mund të të ndihmojë ta mbrosh "Llogarinë tënde të Google" dhe të ndryshosh fjalëkalimin tënd.</translation>
+<translation id="6423385022588644828">Konfirmo kartat e tua më shpejt duke përdorur Touch ID nga tani e tutje</translation>
 <translation id="6427730057873428458">Palosje me dritare</translation>
 <translation id="6433490469411711332">Redakto informacionin e kontaktit</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> e refuzoi lidhjen.</translation>
@@ -1182,12 +1196,14 @@
 <translation id="6786747875388722282">Shtesat</translation>
 <translation id="6790428901817661496">Luaj</translation>
 <translation id="679355240208270552">U shpërfill sepse kërkimi i parazgjedhur nuk është aktivizuar nga politika.</translation>
+<translation id="6794951432696553238">Konfirmo kartat e tua më shpejt duke përdorur Windows Hello nga tani e tutje</translation>
 <translation id="681021252041861472">Fushë e detyrueshme</translation>
 <translation id="6810899417690483278">ID-ja e personalizimit</translation>
 <translation id="6825578344716086703">U përpoqe të gjeje <ph name="DOMAIN" />, por serveri paraqiti një certifikatë të nënshkruar duke përdorur një algoritëm të dobët nënshkrimi. Kjo do të thotë se kredencialet e sigurisë që paraqiti serveri mund të jenë të falsifikuara dhe serveri mund të mos jetë ai që prisje (mund të jesh duke komunikuar me një sulmues).</translation>
 <translation id="6826370046007623921">Parandalimi i humbjes së të dhënave</translation>
 <translation id="6831043979455480757">Përkthe</translation>
 <translation id="6839929833149231406">Zona</translation>
+<translation id="6846340164947227603">Përdor një numër karte virtuale...</translation>
 <translation id="6852204201400771460">Dëshiron ta ringarkosh aplikacionin?</translation>
 <translation id="6865412394715372076">Kjo kartë nuk mund të verifikohet për momentin</translation>
 <translation id="6868206169573555318">Hape përsëri për ta përditësuar</translation>
@@ -1216,6 +1232,7 @@
 <translation id="6989763994942163495">Trego cilësimet e përparuara...</translation>
 <translation id="6993898126790112050">6x9 (Zarf)</translation>
 <translation id="6996312675313362352">Përkthe gjithmonë nga <ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">Përdor Windows Hello për t'i konfirmuar kartat më shpejt</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Këto tarifa mund të jenë vetëm për një rast ose dhe të përsëritura, gjë që mund të mos jetë menjëherë e qartë.</translation>
 <translation id="7029809446516969842">Fjalëkalimet</translation>
@@ -1226,6 +1243,7 @@
 <translation id="7064851114919012435">Informacionet e kontaktit</translation>
 <translation id="7075452647191940183">Kërkesa është tepër e madhe</translation>
 <translation id="7079718277001814089">Ky sajt përmban softuerë keqdashës</translation>
+<translation id="7081308185095828845">Kjo veçori nuk ofrohet në pajisjen tënde</translation>
 <translation id="7087282848513945231">Konteja</translation>
 <translation id="7090678807593890770">Kërko në Google për <ph name="LINK" /></translation>
 <translation id="7108338896283013870">Fshih</translation>
@@ -1279,9 +1297,11 @@
 <translation id="733923710415886693">Certifikata e serverit nuk është zbuluar përmes "Transparencës së certifikatave".</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">Është i lidhur:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> ka aktivizuar "Mbrojtjen e përdoruesit" të Chrome Enterprise në shfletuesin tënd. "Mbrojtja e përdoruesit" të Chrome Enterprise ka qasje te disa nga të dhënat e tua.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Linja e komandave</translation>
 <translation id="7372973238305370288">rezultati i kërkimit</translation>
+<translation id="7374733840632556089">Ky problem ndodh për shkak të një certifikate që instalove ti ose dikush tjetër në pajisjen tënde. Certifikata njihet se është përdorur për të monitoruar dhe ndërhyrë në rrjete dhe nuk është e besuar nga Chrome. Megjithëse ekzistojnë disa raste legjitime për monitorimin, si p.sh. një rrjet shkolle ose kompanie, Chrome dëshiron të sigurohet që je në dijeni se kjo ndodh, edhe nëse nuk arrin ta ndalosh. Monitorimi mund të ndodhë në çdo shfletues ose aplikacion që ka qasje në ueb.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Kontrollet e klipeve media</translation>
 <translation id="7378627244592794276">Jo</translation>
@@ -1310,6 +1330,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Mëso më shumë<ph name="END_LINK" /> rreth këtij problemi.</translation>
 <translation id="7455133967321480974">Përdor parazgjedhjen globale (blloko)</translation>
 <translation id="7460618730930299168">Shfaqja është ndryshe nga ajo që zgjodhe. Dëshiron të vazhdosh?</translation>
+<translation id="7464821087936825778">Po del nga modaliteti i kërkimit</translation>
 <translation id="7473891865547856676">Jo, faleminderit</translation>
 <translation id="7481312909269577407">Përpara</translation>
 <translation id="7485870689360869515">Nuk u gjetën të dhëna.</translation>
@@ -1531,6 +1552,7 @@
 <translation id="8559762987265718583">Nuk mund të vendoset një lidhje private me <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />sepse data dhe ora (<ph name="DATE_AND_TIME" />) e pajisjes tënde nuk janë të sakta.</translation>
 <translation id="8564985650692024650">Chromium rekomandon rivendosjen e fjalëkalimit tënd të <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> nëse e ke ripërdorur në sajte të tjera.</translation>
 <translation id="8571890674111243710">Po përkthen faqen në <ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">Përdor Touch ID për të konfirmuar kartat më shpejt</translation>
 <translation id="858637041960032120">Shto numrin e telefonit</translation>
 <translation id="860043288473659153">Emri i mbajtësit të kartës</translation>
 <translation id="8616822740383114808">Ky cilësim zbatohet nga "<ph name="ENFORCING_SETTING" />" në "<ph name="SETTINGS_PAGE" />"</translation>
diff --git a/components/strings/components_strings_sr.xtb b/components/strings/components_strings_sr.xtb
index 11810b2..82d90f2 100644
--- a/components/strings/components_strings_sr.xtb
+++ b/components/strings/components_strings_sr.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Касније учитај страницу</translation>
 <translation id="1015730422737071372">Наведите додатне детаље</translation>
 <translation id="1021110881106174305">Прихваћене картице</translation>
+<translation id="1021753677514347426">Овај проблем се јавља због сертификата који сте ви или неко други инсталирали на уређају. Сертификат се користи за надгледање и пресретање мрежа и Chromium га не сматра поузданим. Иако постоје поједини оправдани разлози за надгледање, на пример на школској или пословној мрежи, Chromium жели да будете свесни да се то догађа, чак и ако то не можете да спречите. Надгледање је могуће у било ком прегледачу или апликацији која приступа вебу.</translation>
 <translation id="1032854598605920125">Окрените у смеру казаљке на сату</translation>
 <translation id="1036348656032585052">Искључи</translation>
 <translation id="1038842779957582377">непознато име</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Извештај о отказивању је снимљен <ph name="CRASH_TIME" /> (још увек није отпремљен или игнорисан)</translation>
 <translation id="1270502636509132238">Начин преузимања</translation>
 <translation id="1285320974508926690">Никад не преводи овај сајт</translation>
+<translation id="1285400217480592994">Скенирајте садржај датотека које преузимате или отпремате у Chrome-у.</translation>
 <translation id="1292701964462482250">„Софтвер на вашем рачунару онемогућава Chrome-у да се безбедно повеже на веб“ (само на Windows рачунарима)</translation>
 <translation id="1294154142200295408">Варијације командне линије</translation>
 <translation id="129553762522093515">Недавно затворено</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Број телефона</translation>
 <translation id="2277103315734023688">Премотај унапред</translation>
 <translation id="2283340219607151381">Чувај и уноси адресе</translation>
+<translation id="2288422996159078444">Све што унесете, све странице које прегледате или све друге активности на вебу се прате. Садржај на сајтовима може да се мења без вашег знања.</translation>
 <translation id="2289385804009217824">Скраћивање</translation>
 <translation id="2292556288342944218">Приступ интернету је блокиран</translation>
 <translation id="2297722699537546652">B5 (коверат)</translation>
@@ -436,6 +439,7 @@
 <translation id="2989742184762224133">Двоструко спајање на врху</translation>
 <translation id="2991174974383378012">Дељење са веб-сајтовима</translation>
 <translation id="2991571918955627853">Тренутно не можете да посетите <ph name="SITE" /> јер веб-сајт користи HSTS. Грешке и напади на мрежи су обично привремени, па ће ова страница вероватно функционисати касније.</translation>
+<translation id="2996674880327704673">Google предлози</translation>
 <translation id="3005723025932146533">Прикажи сачувану копију</translation>
 <translation id="3008447029300691911">Унесите CVC за картицу <ph name="CREDIT_CARD" />. Када будете потврдили, подаци о картици ће бити послати овом сајту.</translation>
 <translation id="3010559122411665027">Унос на листи „<ph name="ENTRY_INDEX" />“: <ph name="ERROR" /></translation>
@@ -448,6 +452,7 @@
 <translation id="3060227939791841287">C9 (коверат)</translation>
 <translation id="3061707000357573562">Услуга крпљења</translation>
 <translation id="3064966200440839136">Напустићете режим без архивирања да бисте платили у спољној апликацији. Желите ли да наставите?</translation>
+<translation id="3086579638707268289">Ваше активности на вебу се прате</translation>
 <translation id="3095940652251934233">Изјава</translation>
 <translation id="3096100844101284527">Додај адресу преузимања</translation>
 <translation id="3105172416063519923">ИД елемента:</translation>
@@ -500,6 +505,7 @@
 <translation id="3369192424181595722">Грешка на сату</translation>
 <translation id="337363190475750230">Онемогућен је</translation>
 <translation id="3377188786107721145">Грешка при рашчлањивању смерница</translation>
+<translation id="3377736046129930310">Користите закључавање екрана за бржу потврду картица</translation>
 <translation id="3380365263193509176">Непозната грешка</translation>
 <translation id="3380864720620200369">ИД клијента:</translation>
 <translation id="3387261909427947069">Начини плаћања</translation>
@@ -665,6 +671,7 @@
 <translation id="4194250254487269611">Картица тренутно не може да се сачува</translation>
 <translation id="4196861286325780578">&amp;Понови премештање</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />да проверите конфигурацију заштитног зида и антивируса<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">профил на екрану за пријављивање</translation>
 <translation id="4215751373031079683">7x9 (коверат)</translation>
 <translation id="4220128509585149162">Отказивања</translation>
 <translation id="422022731706691852">Нападачи на <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> могу да покушају да вас наведу да инсталирате програме који штете доживљају прегледања (на пример, тако што мењају почетну страницу или приказују додатне огласе на сајтовима које посећујете). <ph name="BEGIN_LEARN_MORE_LINK" />Сазнајте више<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -747,6 +754,7 @@
 <translation id="4515275063822566619">Картице и адресе су из Chrome-а и са вашег Google налога (<ph name="ACCOUNT_EMAIL" />). Њима можете да управљате у <ph name="BEGIN_LINK" />подешавњима<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Comm-10 (коверат)</translation>
 <translation id="4522570452068850558">Детаљи</translation>
+<translation id="4524138615196389145">Од сада брже потврђујте картице уз WebAuthn</translation>
 <translation id="4524805452350978254">Управљајте картицама</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -858,6 +866,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64-битни)</translation>
+<translation id="5121469660360593280">Делите са администатором податке о безбедносним догађајима које је пријавила Chrome заштита за кориснике верзије за предузећа. То може да обухвата URL-ове страница које посећујете, називе или метаподатке датотека и корисничко име помоћу ког се пријављујете на уређај и у Chrome.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Верификујте картицу</translation>
 <translation id="5135404736266831032">Управљајте адресама...</translation>
@@ -869,6 +878,7 @@
 <translation id="5159010409087891077">Отворите страницу у новом прозору без архивирања (⇧⌘N)</translation>
 <translation id="516920405563544094">Унесите CVC за картицу <ph name="CREDIT_CARD" />. Када будете потврдили, подаци о картици са Google налога ће се делити са овим сајтом.</translation>
 <translation id="5169827969064885044">Могли бисте да изгубите приступ налогу за организацију или би могло да дође до крађе идентитета. Chrome вам препоручује да одмах промените лозинку.</translation>
+<translation id="5170017743895942767">Chrome заштита за кориснике верзије за предузећа</translation>
 <translation id="5171045022955879922">Претражите или унесите URL адресу</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Рачунар</translation>
@@ -989,6 +999,7 @@
 <translation id="5730040223043577876">Chrome вам препоручује да ресетујете лозинку ако сте је користили на другим сајтовима.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Сачувајте картицу на Google налогу}one{Сачувајте картице на Google налогу}few{Сачувајте картице на Google налогу}other{Сачувајте картице на Google налогу}}</translation>
 <translation id="5763042198335101085">Унесите важећу имејл адресу</translation>
+<translation id="5763703224595565476">Администратор је у прегледачу омогућио Chrome заштиту за кориснике верзије за предузећа. Chrome заштита за кориснике верзије за предузећа има приступ неким вашим подацима.</translation>
 <translation id="5765072501007116331">Да бисте видели начине и захтеве за испоруку, изаберите адресу</translation>
 <translation id="5778550464785688721">Потпуна контрола над MIDI уређајима</translation>
 <translation id="5781136890105823427">Експеримент је омогућен</translation>
@@ -1068,6 +1079,7 @@
 <translation id="6094273045989040137">Додајте напомене</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">Google налог може да има друге облике историје прегледања на <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
+<translation id="6120179357481664955">Желите да сачувате ИД за UPI?</translation>
 <translation id="6132597952260690497">Информације о инсталираним додацима и додатним компонентама</translation>
 <translation id="6146055958333702838">Проверите све каблове и рестартујте све рутере, модеме или друге мрежне уређаје које можда користите.</translation>
 <translation id="614940544461990577">Покушајте:</translation>
@@ -1082,6 +1094,7 @@
 <translation id="6221345481584921695">Google безбедно прегледање је недавно <ph name="BEGIN_LINK" />открило малвер<ph name="END_LINK" /> на <ph name="SITE" />. Веб-сајтови који су обично безбедни се понекад заразе малвером. Злонамеран садржај потиче са <ph name="SUBRESOURCE_HOST" />, који је познати дистрибутер малвера.</translation>
 <translation id="6234122620015464377">Скрати после сваког документа</translation>
 <translation id="6240447795304464094">Google Pay логотип</translation>
+<translation id="6241121617266208201">Сакриј предлоге</translation>
 <translation id="6251924700383757765">Политика приватности</translation>
 <translation id="6254436959401408446">Нема довољно меморије за отварање ове странице</translation>
 <translation id="625755898061068298">Онемогућили сте безбедносна упозорења за овај сајт.</translation>
@@ -1128,6 +1141,7 @@
 <translation id="6409754798200046165">Управо сте унели лозинку на обмањујућем сајту. Chrome препоручује да одмах промените лозинку.</translation>
 <translation id="6410264514553301377">Унесите датум истека и CVC за картицу <ph name="CREDIT_CARD" /></translation>
 <translation id="6415778972515849510">Chromium може да вам помогне да заштитите Google налог и промените лозинку.</translation>
+<translation id="6423385022588644828">Од сада брже потврђујте картице уз Touch ID</translation>
 <translation id="6427730057873428458">Пресавијање у облику прозора</translation>
 <translation id="6433490469411711332">Измените контакт информације</translation>
 <translation id="6433595998831338502">Хост <ph name="HOST_NAME" /> је одбио повезивање.</translation>
@@ -1198,12 +1212,14 @@
 <translation id="6786747875388722282">Додаци</translation>
 <translation id="6790428901817661496">Пусти</translation>
 <translation id="679355240208270552">Занемарује се зато што смернице нису омогућиле подразумевани претраживач.</translation>
+<translation id="6794951432696553238">Од сада брже потврђујте картице уз Windows Hello</translation>
 <translation id="681021252041861472">Обавезно поље</translation>
 <translation id="6810899417690483278">ИД за прилагођавање</translation>
 <translation id="6825578344716086703">Покушали сте да посетите <ph name="DOMAIN" />, али је сервер послао сертификат потписан слабим алгоритмом (као што је SHA-1). То значи да су безбедносни акредитиви које је сервер послао можда кривотворени и сервер можда није онај који мислите да јесте (можда комуницирате са нападачем).</translation>
 <translation id="6826370046007623921">Спречавање губитка података</translation>
 <translation id="6831043979455480757">Преведи</translation>
 <translation id="6839929833149231406">Област</translation>
+<translation id="6846340164947227603">Користи број виртуелне картице...</translation>
 <translation id="6852204201400771460">Желите ли да поново учитате апликацију?</translation>
 <translation id="6865412394715372076">Тренутно не можемо да верификујемо ову картицу</translation>
 <translation id="6868206169573555318">Поново покрените да би се ажурирало</translation>
@@ -1232,6 +1248,7 @@
 <translation id="6989763994942163495">Прикажи напредна подешавања...</translation>
 <translation id="6993898126790112050">6x9 (коверат)</translation>
 <translation id="6996312675313362352">Увек преводи <ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">Користите Windows Hello за бржу потврду картица</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Те наплате могу да буду једнократне или периодичне и можда нису одмах видљиве.</translation>
 <translation id="7029809446516969842">Лозинке</translation>
@@ -1242,6 +1259,7 @@
 <translation id="7064851114919012435">Контакт информације</translation>
 <translation id="7075452647191940183">Захтев је превелик</translation>
 <translation id="7079718277001814089">Овај сајт садржи малвер</translation>
+<translation id="7081308185095828845">Ова функција није доступна на уређају</translation>
 <translation id="7087282848513945231">Округ</translation>
 <translation id="7090678807593890770">Потражите <ph name="LINK" /> на Google-у</translation>
 <translation id="7108338896283013870">Сакриј</translation>
@@ -1295,9 +1313,11 @@
 <translation id="733923710415886693">Сертификат сервера није откривен помоћу Транспарентности сертификата.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">Повезан је:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> је у прегледачу омогућио Chrome заштиту за кориснике верзије за предузећа Chrome заштита за кориснике верзије за предузећа има приступ неким вашим подацима.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Командна линија</translation>
 <translation id="7372973238305370288">резултат претраге</translation>
+<translation id="7374733840632556089">Овај проблем се јавља због сертификата који сте ви или неко други инсталирали на уређају. Сертификат се користи за надгледање и пресретање мрежа и Chrome га не сматра поузданим. Иако постоје поједини оправдани разлози за надгледање, на пример на школској или пословној мрежи, Chrome жели да будете свесни да се то догађа, чак и ако то не можете да спречите. Надгледање је могуће у било ком прегледачу или апликацији која приступа вебу.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Контроле за медије</translation>
 <translation id="7378627244592794276">Не</translation>
@@ -1326,6 +1346,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />да сазнате више<ph name="END_LINK" /> о овом проблему.</translation>
 <translation id="7455133967321480974">Користи глобалну подразумевану вредност (Блокирај)</translation>
 <translation id="7460618730930299168">Приказ се разликује од онога што сте изабрали. Желите ли да наставите?</translation>
+<translation id="7464821087936825778">Излазите из режима претраге</translation>
 <translation id="7473891865547856676">Не, хвала</translation>
 <translation id="7481312909269577407">Проследи</translation>
 <translation id="7485870689360869515">Нису пронађени подаци.</translation>
@@ -1547,6 +1568,7 @@
 <translation id="8559762987265718583">Није могуће успоставити приватну везу са доменом <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> јер датум и време на уређају (<ph name="DATE_AND_TIME" />) нису тачни.</translation>
 <translation id="8564985650692024650">Chromium вам препоручује да ресетујете лозинку за <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> ако сте је користили на другим сајтовима.</translation>
 <translation id="8571890674111243710">Превођење странице на <ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">Користите Touch ID за бржу потврду картица</translation>
 <translation id="858637041960032120">Додај тел. број
 </translation>
 <translation id="860043288473659153">Име власника картице</translation>
diff --git a/components/strings/components_strings_sv.xtb b/components/strings/components_strings_sv.xtb
index 8ca61a16..24852c6 100644
--- a/components/strings/components_strings_sv.xtb
+++ b/components/strings/components_strings_sv.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Läs in sidan senare</translation>
 <translation id="1015730422737071372">Ange ytterligare information</translation>
 <translation id="1021110881106174305">Godkända kort</translation>
+<translation id="1021753677514347426">Det här problemet uppstår på grund av ett certifikat som du eller någon annan har installerat på enheten. Certifikatet är känt för att användas för att övervaka och fånga upp nätverkstrafik och är inte betrott i Chromium. Även om det kan vara berättigat med övervakning i vissa fall, t.ex. i ett skol- eller företagsnätverk, vill vi göra dig medveten om vad som pågår även om du inte kan göra något åt det. Alla webbläsare och appar som använder internet omfattas av övervakningen.</translation>
 <translation id="1032854598605920125">Rotera medurs</translation>
 <translation id="1036348656032585052">Inaktivera</translation>
 <translation id="1038842779957582377">okänt namn</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Felrapport skapades <ph name="CRASH_TIME" /> (har ännu inte laddats upp eller ignorerats)</translation>
 <translation id="1270502636509132238">Alternativ för utlämning</translation>
 <translation id="1285320974508926690">Översätt aldrig den här webbplatsen</translation>
+<translation id="1285400217480592994">Genomsöka innehållet i filer som du laddar ned eller laddar upp i Chrome.</translation>
 <translation id="1292701964462482250">Programvara på datorn förhindrar att Chrome ansluter till internet på ett säkert sätt (endast Windows-datorer)</translation>
 <translation id="1294154142200295408">Varianter på kommandoraden</translation>
 <translation id="129553762522093515">Nyligen stängda</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Telefonnummer</translation>
 <translation id="2277103315734023688">Sök framåt</translation>
 <translation id="2283340219607151381">Spara och fyll i adresser</translation>
+<translation id="2288422996159078444">Allt du skriver, sidor du visar och all annan aktivitet på webben övervakas. Innehåll på webbplatser kan ändras utan din vetskap.</translation>
 <translation id="2289385804009217824">Beskär</translation>
 <translation id="2292556288342944218">Internetanslutningen har blockerats</translation>
 <translation id="2297722699537546652">B5 (kuvert)</translation>
@@ -436,6 +439,7 @@
 <translation id="2989742184762224133">Två häftklamrar högst upp</translation>
 <translation id="2991174974383378012">Dela med webbplatsen</translation>
 <translation id="2991571918955627853">Du kan inte besöka <ph name="SITE" /> just nu eftersom webbplatsen använder HSTS. Nätverksfel och attacker är ofta tillfälliga, så sidan kommer förmodligen att fungera senare.</translation>
+<translation id="2996674880327704673">Förslag från Google</translation>
 <translation id="3005723025932146533">Visa sparad kopia</translation>
 <translation id="3008447029300691911">Ange CVC-koden för <ph name="CREDIT_CARD" />. När du bekräftar delas kortinformationen med den här webbplatsen.</translation>
 <translation id="3010559122411665027">Listposten <ph name="ENTRY_INDEX" />: <ph name="ERROR" /></translation>
@@ -448,6 +452,7 @@
 <translation id="3060227939791841287">C9 (kuvert)</translation>
 <translation id="3061707000357573562">Tjänst för programkorrigering</translation>
 <translation id="3064966200440839136">Om du betalar i ett externt program sker inte det i inkognitoläge. Vill du fortsätta?</translation>
+<translation id="3086579638707268289">Din aktivitet på webben övervakas</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Lägg till hämtningsadress</translation>
 <translation id="3105172416063519923">Tillgångs-id:</translation>
@@ -500,6 +505,7 @@
 <translation id="3369192424181595722">Fel på klockan</translation>
 <translation id="337363190475750230">Tagen ur bruk</translation>
 <translation id="3377188786107721145">Fel vid analys av policyn</translation>
+<translation id="3377736046129930310">Verifiera kreditkort snabbare med skärmlås</translation>
 <translation id="3380365263193509176">Okänt fel</translation>
 <translation id="3380864720620200369">Klient-ID:</translation>
 <translation id="3387261909427947069">Betalningsmetoder</translation>
@@ -665,6 +671,7 @@
 <translation id="4194250254487269611">Det går tyvärr inte att spara kortet just nu</translation>
 <translation id="4196861286325780578">&amp;Gör om Flytta</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />kontrollera konfigureringarna för brandväggen och antivirusprogram<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">profil på inloggningsskärmen</translation>
 <translation id="4215751373031079683">7x9 (kuvert)</translation>
 <translation id="4220128509585149162">Kraschar</translation>
 <translation id="422022731706691852">Angripare på <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> kan försöka lura dig att installera program som stör dig när du surfar (t.ex. genom att ändra startsidan eller visa extra annonser på webbplatser du besöker). <ph name="BEGIN_LEARN_MORE_LINK" />Läs mer<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -747,6 +754,7 @@
 <translation id="4515275063822566619">Kort och adresser har hämtats från Chrome och ditt Google-konto (<ph name="ACCOUNT_EMAIL" />). Du hanterar dessa under <ph name="BEGIN_LINK" />Inställningar<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Comm-10 (kuvert)</translation>
 <translation id="4522570452068850558">Info</translation>
+<translation id="4524138615196389145">Verifiera kreditkort snabbare genom att använda WebAuthn från och med nu</translation>
 <translation id="4524805452350978254">Hantera kort</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -858,6 +866,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64 bitar)</translation>
+<translation id="5121469660360593280">Dela data om säkerhetshändelser som flaggats av skyddet för företagsanvändare i Chrome Enterprise med administratören. Det kan inkludera webbadresser till sidor du besöker, filnamn eller metadata och användarnamnet du loggar in på dina enheter och Chrome med.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Verifiera kortet</translation>
 <translation id="5135404736266831032">Hantera adresser …</translation>
@@ -869,6 +878,7 @@
 <translation id="5159010409087891077">Öppna sidan i ett nytt inkognitofönster (⇧⌘N)</translation>
 <translation id="516920405563544094">Ange CVC-koden för <ph name="CREDIT_CARD" />. När du bekräftar delas kortuppgifter från ditt Google-konto med webbplatsen.</translation>
 <translation id="5169827969064885044">Du kan förlora åtkomsten till organisationens konto eller bli utsatt för identitetsstöld. Du rekommenderas att ändra lösenordet nu.</translation>
+<translation id="5170017743895942767">Skydd för företagsanvändare i Chrome Enterprise</translation>
 <translation id="5171045022955879922">Sök eller ange webbadress</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Dator</translation>
@@ -989,6 +999,7 @@
 <translation id="5730040223043577876">Du rekommenderas att återställa lösenordet om du har återanvänt det på andra webbplatser.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Spara kortet i Google-kontot}other{Spara korten i Google-kontot}}</translation>
 <translation id="5763042198335101085">Ange en giltig e-postadress</translation>
+<translation id="5763703224595565476">Administratören har aktiverat skyddet för företagsanvändare i Chrome Enterprise i webbläsaren. Skyddet för företagsanvändare i Chrome Enterprise har åtkomst till viss data.</translation>
 <translation id="5765072501007116331">Välj en adress för att visa leveranssätt och krav</translation>
 <translation id="5778550464785688721">MIDI-enheter – fullständig kontroll</translation>
 <translation id="5781136890105823427">Ett experiment har aktiverats</translation>
@@ -1068,6 +1079,7 @@
 <translation id="6094273045989040137">Annotera</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">Det kan finnas andra former av webbhistorik i Google-kontot på <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
+<translation id="6120179357481664955">Vill du spara UPI-id?</translation>
 <translation id="6132597952260690497">Information om installerade tillägg och pluginprogram</translation>
 <translation id="6146055958333702838">Kontrollera kablar och starta om routrar, modem och andra nätverksenheter
     som används.</translation>
@@ -1083,6 +1095,7 @@
 <translation id="6221345481584921695">Google Säker webbsökning upptäckte nyligen <ph name="BEGIN_LINK" />skadlig programvara<ph name="END_LINK" /> på <ph name="SITE" />. Webbplatser som vanligtvis är säkra utsätts ibland för skadlig programvara. Det skadliga innehållet kommer från <ph name="SUBRESOURCE_HOST" />, som är en känd distributör av skadlig programvara.</translation>
 <translation id="6234122620015464377">Beskär efter varje dokument</translation>
 <translation id="6240447795304464094">Google Pay-logotyp</translation>
+<translation id="6241121617266208201">Dölj förslag</translation>
 <translation id="6251924700383757765">Sekretesspolicy</translation>
 <translation id="6254436959401408446">Det finns inte tillräckligt med minne för att öppna den här sidan</translation>
 <translation id="625755898061068298">Du har valt att inaktivera säkerhetsvarningar för den här webbplatsen.</translation>
@@ -1129,6 +1142,7 @@
 <translation id="6409754798200046165">Du angav just ditt lösenord på en bedräglig webbplats. Du rekommenderas i Chrome att ändra lösenordet nu.</translation>
 <translation id="6410264514553301377">Ange utgångsdatum och CVC-kod för <ph name="CREDIT_CARD" /></translation>
 <translation id="6415778972515849510">Du kan skydda Google-kontot genom att byta lösenord.</translation>
+<translation id="6423385022588644828">Verifiera kreditkort snabbare genom att använda Touch ID från och med nu</translation>
 <translation id="6427730057873428458">Fönsterfalsning</translation>
 <translation id="6433490469411711332">Redigera kontaktuppgifter</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> avvisade anslutningen.</translation>
@@ -1199,12 +1213,14 @@
 <translation id="6786747875388722282">Tillägg</translation>
 <translation id="6790428901817661496">Spela</translation>
 <translation id="679355240208270552">Ignoreras eftersom standardsökmotorn inte har aktiverats av principen.</translation>
+<translation id="6794951432696553238">Verifiera kreditkort snabbare genom att använda Windows Hello från och med nu</translation>
 <translation id="681021252041861472">Obligatoriskt fält</translation>
 <translation id="6810899417690483278">Anpassnings-id</translation>
 <translation id="6825578344716086703">Du försökte besöka <ph name="DOMAIN" />, men servern skickade ett certifikat som signerats med en svag signaturalgoritm (t.ex. SHA-1). Det innebär att säkerhetsuppgifterna som servern uppgav kan vara förfalskade och att servern kanske inte är den server du tror (du kanske kommunicerar med en skadlig server).</translation>
 <translation id="6826370046007623921">Förebyggande av dataförlust</translation>
 <translation id="6831043979455480757">Översätt</translation>
 <translation id="6839929833149231406">Område</translation>
+<translation id="6846340164947227603">Använd ett virtuellt kreditkortsnummer …</translation>
 <translation id="6852204201400771460">Vill du läsa in appen igen?</translation>
 <translation id="6865412394715372076">Det går inte att verifiera kortet just nu</translation>
 <translation id="6868206169573555318">Starta om för att uppdatera</translation>
@@ -1233,6 +1249,7 @@
 <translation id="6989763994942163495">Visa avancerade inställningar ...</translation>
 <translation id="6993898126790112050">6x9 (kuvert)</translation>
 <translation id="6996312675313362352">Översätt alltid <ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">Verifiera kreditkort snabbare med Windows Hello</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Debiteringen kan göras en gång eller återkommande och det behöver inte framgå tydligt att detta händer.</translation>
 <translation id="7029809446516969842">Lösenord</translation>
@@ -1243,6 +1260,7 @@
 <translation id="7064851114919012435">Kontaktuppgifter</translation>
 <translation id="7075452647191940183">Begäran är för stor</translation>
 <translation id="7079718277001814089">Webbplatsen innehåller skadlig programvara.</translation>
+<translation id="7081308185095828845">Funktionen är inte tillgänglig på din enhet</translation>
 <translation id="7087282848513945231">Kommun</translation>
 <translation id="7090678807593890770">Sök efter <ph name="LINK" /> på Google</translation>
 <translation id="7108338896283013870">Dölj</translation>
@@ -1296,9 +1314,11 @@
 <translation id="733923710415886693">Servercertifikatet har inte lämnats ut via Certifikattransparens.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">Är anknuten:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> har aktiverat skyddet för företagsanvändare i Chrome Enterprise i webbläsaren. Skyddet för företagsanvändare i Chrome Enterprise har åtkomst till viss data.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Kommandorad</translation>
 <translation id="7372973238305370288">sökresultat</translation>
+<translation id="7374733840632556089">Det här problemet uppstår på grund av ett certifikat som du eller någon annan har installerat på enheten. Certifikatet är känt för att användas för att övervaka och fånga upp nätverkstrafik och är inte betrott i Chrome. Även om det kan vara berättigat med övervakning i vissa fall, t.ex. i ett skol- eller företagsnätverk, vill vi göra dig medveten om vad som pågår även om du inte kan göra något åt det. Alla webbläsare och appar som använder internet omfattas av övervakningen.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Mediereglage</translation>
 <translation id="7378627244592794276">Nej</translation>
@@ -1327,6 +1347,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />att läsa mer<ph name="END_LINK" /> om det här problemet.</translation>
 <translation id="7455133967321480974">Använd global standardinställning (Blockera)</translation>
 <translation id="7460618730930299168">Visningen skiljer sig från den du valde. Vill du fortsätta?</translation>
+<translation id="7464821087936825778">Sökläget avslutas</translation>
 <translation id="7473891865547856676">Nej tack</translation>
 <translation id="7481312909269577407">Framåt</translation>
 <translation id="7485870689360869515">Ingen data hittades.</translation>
@@ -1548,6 +1569,7 @@
 <translation id="8559762987265718583">Det gick inte att upprätta en privat anslutning till <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> eftersom enhetens datum och tid (<ph name="DATE_AND_TIME" />) inte stämmer.</translation>
 <translation id="8564985650692024650">Du rekommenderas att återställa lösenordet för <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> om du har återanvänt det på andra webbplatser.</translation>
 <translation id="8571890674111243710">Översätter sidan till <ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">Verifiera kreditkort snabbare med Touch ID</translation>
 <translation id="858637041960032120">Ange telefonnr
 </translation>
 <translation id="860043288473659153">Namn på kortinnehavare</translation>
diff --git a/components/strings/components_strings_te.xtb b/components/strings/components_strings_te.xtb
index 1907ee662..d160e4b 100644
--- a/components/strings/components_strings_te.xtb
+++ b/components/strings/components_strings_te.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">పేజీని తర్వాత లోడ్ చేయి</translation>
 <translation id="1015730422737071372">అదనపు వివరాలను అందించండి</translation>
 <translation id="1021110881106174305">ఆమోదించబడే కార్డ్‌లు</translation>
+<translation id="1021753677514347426">మీ పరికరంలో మీరు లేదా మరొకరు ఇన్‌స్టాల్ చేసిన సర్టిఫికేట్ కారణంగా ఈ సమస్య తలెత్తుతుంది. నెట్‌వర్క్‌లను పర్యవేక్షించడానికి మరియు అడ్డగించడానికి సర్టిఫికెట్ ఉపయోగించబడుతుంది, ఇది Chromium ద్వారా విశ్వసించబడదు. పర్యవేక్షణ కోసం కొన్ని చట్టబద్ధమైన కేసులు ఉన్నప్పటికీ, పాఠశాల లేదా కంపెనీ నెట్‌వర్క్‌లో మాదిరిగా, మీరు దీన్ని ఆపలేక పోయినప్పటికీ, ఇది జరుగుతున్నట్లు మీకు తెలుసని Chromium నిర్ధారించుకోవాలనుకుంటుంది. వెబ్‌ను యాక్సెస్ చేసే ఏదైనా బ్రౌజర్ లేదా యాప్‌లో పర్యవేక్షణ జరగవచ్చు.</translation>
 <translation id="1032854598605920125">సవ్యదిశలో తిప్పు</translation>
 <translation id="1036348656032585052">ఆఫ్ చేయి</translation>
 <translation id="1038842779957582377">తెలియని పేరు</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">క్రాష్ నివేదిక <ph name="CRASH_TIME" />కు క్యాప్చ‌ర్ చేయ‌బ‌డింది (ఇంకా అప్‌లోడ్ చేయలేదు లేదా విస్మరించబడింది)</translation>
 <translation id="1270502636509132238">పికప్ పద్ధతి</translation>
 <translation id="1285320974508926690">ఈ సైట్‌ను ఎప్పటికీ అనువదించవద్దు</translation>
+<translation id="1285400217480592994">Chromeలో మీరు డౌన్‌లోడ్ లేదా అప్‌లోడ్ చేసే ఫైల్‌ల కంటెంట్‌లను స్కాన్ చేస్తుంది.</translation>
 <translation id="1292701964462482250">"మీ కంప్యూటర్‌లో ఉన్న సాఫ్ట్‌వేర్ కారణంగా Chrome సురక్షితంగా వెబ్‌కు కనెక్ట్ కాలేకపోతోంది" (Windows కంప్యూటర్‌ల కోసం మాత్రమే)</translation>
 <translation id="1294154142200295408">ఆదేశ-పంక్తి వ్యత్యాసాలు</translation>
 <translation id="129553762522093515">ఇటీవల మూసివెయ్యబడినవి</translation>
@@ -286,6 +288,7 @@
 <translation id="2270484714375784793">ఫోన్ నంబర్</translation>
 <translation id="2277103315734023688">ముందుకు జరుపు</translation>
 <translation id="2283340219607151381">చిరునామాలను సేవ్ చేసి, పూరించండి</translation>
+<translation id="2288422996159078444">మీరు ఏదైనా టైప్ చేసినా, ఏవైనా పేజీలు వీక్షించినా లేదా వెబ్‌లో ఇతర కార్యకలాపం ఏదైనా చూసినా. సైట్‌లలోని కంటెంట్ మీకు తెలియకుండానే మారిపోవచ్చు.</translation>
 <translation id="2289385804009217824">కత్తిరించండి</translation>
 <translation id="2292556288342944218">మీ ఇంటర్నెట్ యాక్సెస్ బ్లాక్ చేయబడింది</translation>
 <translation id="2297722699537546652">B5 (ఎన్వలప్)</translation>
@@ -436,6 +439,7 @@
 <translation id="2989742184762224133">ఎగువ భాగంలో డ్యుయల్ స్టేపుల్</translation>
 <translation id="2991174974383378012">వెబ్‌సైట్‌లతో భాగస్వామ్యం</translation>
 <translation id="2991571918955627853">వెబ్‌సైట్ HSTS ఉపయోగిస్తున్నందున మీరు ప్రస్తుతం <ph name="SITE" />‌ను సందర్శించలేరు. నెట్‌వర్క్ ఎర్ర‌ర్‌లు మరియు దాడులు సాధారణంగా తాత్కాలికమే. కనుక ఈ పేజీ తర్వాత పని చేయవచ్చు.</translation>
+<translation id="2996674880327704673">Google ద్వారా సూచనలు</translation>
 <translation id="3005723025932146533">సేవ్ చేయబడిన కాపీని చూపు</translation>
 <translation id="3008447029300691911"><ph name="CREDIT_CARD" /> కార్డ్ CVCని నమోదు చేయండి. మీరు నిర్ధారించిన తర్వాత, మీ కార్డ్ వివరాలు ఈ సైట్‌తో షేర్ చేయబడతాయి.</translation>
 <translation id="3010559122411665027">జాబితా నమోదు "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -448,6 +452,7 @@
 <translation id="3060227939791841287">C9 (ఎన్వలప్)</translation>
 <translation id="3061707000357573562">ప్యాచ్ సేవ</translation>
 <translation id="3064966200440839136">బాహ్య అప్లికేషన్‌ ద్వారా చెల్లించడానికి అజ్ఞాత మోడ్ నుండి నిష్క్రమిస్తోంది. కొనసాగించాలా?</translation>
+<translation id="3086579638707268289">వెబ్‌లో మీ కార్యకలాపం పర్యవేక్షించబడుతోంది</translation>
 <translation id="3095940652251934233">స్టేట్‌మెంట్</translation>
 <translation id="3096100844101284527">పికప్ చిరునామాను జోడించండి</translation>
 <translation id="3105172416063519923">అసెట్ ID:</translation>
@@ -500,6 +505,7 @@
 <translation id="3369192424181595722">గడియారం ఎర్రర్</translation>
 <translation id="337363190475750230">కేటాయింపు తీసివేయబడింది</translation>
 <translation id="3377188786107721145">విధాన అన్వయ ఎర్రర్</translation>
+<translation id="3377736046129930310">కార్డ్‌లను వేగంగా నిర్ధారించడానికి స్క్రీన్‌లాక్‌ని ఉపయోగించండి</translation>
 <translation id="3380365263193509176">తెలియని ఎర్రర్</translation>
 <translation id="3380864720620200369">క్లయింట్ ID:</translation>
 <translation id="3387261909427947069">చెల్లింపు పద్ధతులు</translation>
@@ -665,6 +671,7 @@
 <translation id="4194250254487269611">మీ కార్డ్‌ను ప్రస్తుతం సేవ్ చేయలేము</translation>
 <translation id="4196861286325780578">&amp;తరలించడాన్ని పునరావృతం చేయి</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />ఫైర్‌వాల్ మరియు యాంటీవైరస్ కాన్ఫిగరేషన్‌లను తనిఖీ చేయడం<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">సైన్ ఇన్ స్క్రీన్ ప్రొఫైల్</translation>
 <translation id="4215751373031079683">7x9 (ఎన్వలప్)</translation>
 <translation id="4220128509585149162">క్రాష్‌లు</translation>
 <translation id="422022731706691852"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> లోని హ్యాకర్‌లు మీ బ్రౌజింగ్ అనుభవానికి (ఉదాహరణకు, మీ హోం పేజీని మార్చడం లేదా మీరు సందర్శించే సైట్‌లలో అదనపు ప్రకటనలు చూపడం ద్వారా) హాని కలిగించే ప్రోగ్రామ్‌లను ఇన్‌స్టాల్ చేసే విధంగా మిమ్మల్ని మాయచేసే ప్రయత్నం చేయవచ్చు. <ph name="BEGIN_LEARN_MORE_LINK" />మరింత తెలుసుకోండి<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -747,6 +754,7 @@
 <translation id="4515275063822566619">కార్డ్‌లు, చిరునామాలు- Chrome నుండి, మీ Google ఖాతా (<ph name="ACCOUNT_EMAIL" />) నుండి పొందినవి. మీరు <ph name="BEGIN_LINK" />సెట్టింగ్‌లు<ph name="END_LINK" />లో వాటిని నిర్వహించవచ్చు.</translation>
 <translation id="4517607026994743406">Comm-10 (ఎన్వలప్)</translation>
 <translation id="4522570452068850558">వివరాలు</translation>
+<translation id="4524138615196389145">ఇప్పటి నుండి WebAuthn ఉపయోగించి మీ కార్డ్‌లను వేగంగా నిర్ధారించండి</translation>
 <translation id="4524805452350978254">కార్డ్‌లను నిర్వహించండి</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">ఫ్లాష్</translation>
@@ -858,6 +866,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">యూరోపియన్-Edp</translation>
 <translation id="5115563688576182185">(64-బిట్)</translation>
+<translation id="5121469660360593280">'Chrome ఎంటర్‌ప్రైజ్ వెర్షన్ వినియోగదారు ద్వారా ఫ్లాగ్ చేయబడిన భద్రతా ఈవెంట్‌ల గురించిన డేటాను మీ నిర్వాహకుడితో షేర్ చేయండి. ఇందులో మీరు సందర్శించే పేజీలకు సంబంధించిన URLలు, ఫైల్ పేర్లు లేదా మెటాడేటా, అలాగే మీ పరికరం, Chromeలలో సైన్ ఇన్ చేయడానికి మీరు ఉపయోగించే యూజర్ పేరు ఉండవచ్చు.</translation>
 <translation id="5125394840236832993">B-ప్లస్</translation>
 <translation id="5126510351761255129">మీ కార్డ్‌ను ధృవీకరించండి</translation>
 <translation id="5135404736266831032">చిరునామాలను నిర్వహించండి...</translation>
@@ -869,6 +878,7 @@
 <translation id="5159010409087891077">కొత్త అజ్ఞాత విండోలో పేజీని తెరవండి (⇧⌘N)</translation>
 <translation id="516920405563544094"><ph name="CREDIT_CARD" /> కార్డ్ CVCని నమోదు చేయండి. మీరు నిర్ధారించిన తర్వాత, మీ Google ఖాతా నుండి కార్డ్ వివరాలు ఈ సైట్‌తో షేర్ చేయబడతాయి.</translation>
 <translation id="5169827969064885044">మీరు మీ సంస్థ ఖాతాకు యాక్సెస్‌ను కోల్పోవచ్చు. లేదా గుర్తింపు స‌మాచారం చౌర్యానికి గురికావచ్చు. మీరు ఇప్పుడే మీ పాస్‌వర్డ్‌ను మార్చాల్సిందిగా Chrome సిఫార్సు చేస్తోంది.</translation>
+<translation id="5170017743895942767">Chrome ఎంటర్‌ప్రైజ్ వెర్షన్ వినియోగదారు రక్షణ</translation>
 <translation id="5171045022955879922">URLను వెతకండి లేదా టైప్ చేయండి</translation>
 <translation id="5171689220826475070">ఫ్యాన్‌ఫోల్డ్-యూరోపియన్</translation>
 <translation id="5172758083709347301">మెషీన్</translation>
@@ -989,6 +999,7 @@
 <translation id="5730040223043577876">మీరు మీ పాస్‌వర్డ్‌ని ఇతర సైట్‌లలో తిరిగి ఉపయోగించినట్లయితే దీనిని రీసెట్ చేయాల్సిందిగా Chrome సిఫార్సు చేస్తోంది.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{కార్డ్‌ను మీ Google ఖాతాలో సేవ్ చేయండి}other{కార్డ్‌లను మీ Google ఖాతాలో సేవ్ చేయండి}}</translation>
 <translation id="5763042198335101085">చెల్లుబాటు అయ్యే ఇమెయిల్ చిరునామాను నమోదు చేయండి</translation>
+<translation id="5763703224595565476">మీ నిర్వాహకులు, మీ బ్రౌజర్‌లో Chrome ఎంటర్‌ప్రైజ్ వెర్షన్ వినియోగదారు రక్షణను ప్రారంభించారు. Chrome ఎంటర్‌ప్రైజ్ వెర్షన్ వినియోగదారు మీ డేటాలో కొంత డేటాకు యాక్సెస్ కలిగి ఉంది.</translation>
 <translation id="5765072501007116331">బట్వాడా పద్ధతులు మరియు అవసరాలను చూడాలంటే, చిరునామాని ఎంచుకోండి</translation>
 <translation id="5778550464785688721">MIDI పరికరాల పూర్తి నియంత్రణ</translation>
 <translation id="5781136890105823427">ప్రయోగం ప్రారంభించబడింది</translation>
@@ -1068,6 +1079,7 @@
 <translation id="6094273045989040137">అదనపు గమనికను జోడించండి</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">మీ Google ఖాతా <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />లో ఇతర రూపాల్లో ఉన్న బ్రౌజింగ్ చరిత్రను కలిగి ఉండవచ్చు</translation>
+<translation id="6120179357481664955">మీ UPI ID గుర్తుందా?</translation>
 <translation id="6132597952260690497">ఇన్‌స్టాల్ చేసిన ఎక్స్‌టెన్షన్‌లు, ప్లగ్ఇన్‌ల గురించిన సమాచారం</translation>
 <translation id="6146055958333702838">ఏవైనా కేబుల్‌లను తనిఖీ చేయండి మరియు మీరు ఉపయోగించే ఏవైనా రూటర్‌లు, మోడెమ్‌లు
         లేదా ఇతర నెట్‌వర్క్ పరికరాలను రీబూట్ చేయండి.</translation>
@@ -1083,6 +1095,7 @@
 <translation id="6221345481584921695">Google సురక్షిత బ్రౌజింగ్ ఇటీవల <ph name="SITE" />లో <ph name="BEGIN_LINK" />మాల్వేర్‌ను గుర్తించింది<ph name="END_LINK" />. సాధారణంగా సురక్షితమైన వెబ్‌సైట్‌‌లకు కూడా కొన్నిసార్లు మాల్వేర్ సోకుతుంది. ఈ హానికరమైన కంటెంట్, మాల్వేర్ పంపిణీదారుగా ప్రసిద్ధిగాంచిన <ph name="SUBRESOURCE_HOST" /> నుండి సంక్రమిస్తుంది.</translation>
 <translation id="6234122620015464377">ప్రతి పత్రం తర్వాత కత్తిరించండి</translation>
 <translation id="6240447795304464094">Google Pay లోగో</translation>
+<translation id="6241121617266208201">సూచనలను దాచు</translation>
 <translation id="6251924700383757765">గోప్యతా విధానం</translation>
 <translation id="6254436959401408446">ఈ పేజీని తెరవడానికి తగినంత మెమరీ లేదు</translation>
 <translation id="625755898061068298">మీరు ఈ సైట్‌కు భద్రతా హెచ్చరికలను నిలిపివేయాలని ఎంచుకున్నారు.</translation>
@@ -1129,6 +1142,7 @@
 <translation id="6409754798200046165">మీరు మోసపూరితమైన సైట్‌లో మీ పాస్‌వర్డ్‌ను నమోదు చేశారు. మీ పాస్‌వర్డ్‌ను ఇప్పుడే మార్చాల్సిందిగా Chrome సిఫార్సు చేస్తోంది.</translation>
 <translation id="6410264514553301377"><ph name="CREDIT_CARD" /> గడువు ముగింపు తేదీ మరియు CVCని నమోదు చేయండి</translation>
 <translation id="6415778972515849510">మీ Google ఖాతాను సంరక్షించుకోవడంలో, మీ పాస్‌వర్డ్‌ను మార్చడంలో Chromium మీకు సహాయపడగలదు.</translation>
+<translation id="6423385022588644828">ఇప్పటి నుండి Touch ID ఉపయోగించి మీ కార్డ్‌లను వేగంగా నిర్ధారించండి</translation>
 <translation id="6427730057873428458">గేట్ ఫోల్డ్</translation>
 <translation id="6433490469411711332">సంప్రదింపు సమాచారాన్ని సవరించండి</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> కనెక్ట్ కావడానికి నిరాకరించింది.</translation>
@@ -1199,12 +1213,14 @@
 <translation id="6786747875388722282">ఎక్స్‌టెన్షన్‌లు</translation>
 <translation id="6790428901817661496">ప్లే చేయి</translation>
 <translation id="679355240208270552">విధానం ప్రకారం డిఫాల్ట్ శోధన ప్రారంభించబడలేదు కాబట్టి, ఇది విస్మరించబడింది.</translation>
+<translation id="6794951432696553238">ఇప్పటి నుండి Windows Hello ఉపయోగించి మీ కార్డ్‌లను వేగంగా నిర్ధారించండి</translation>
 <translation id="681021252041861472">అవసరమైన ఫీల్డ్</translation>
 <translation id="6810899417690483278">అనుకూలీకరణ ID</translation>
 <translation id="6825578344716086703"><ph name="DOMAIN" />ను చేరుకోవడానికి మీరు ప్రయత్నించారు, కానీ సర్వర్ (SHA-1 వంటి) బలహీనమైన సంతకం అల్గారిథమ్‌ను ఉపయోగించి సంతకం చేసిన ప్రమాణపత్రాన్ని అందించింది. అంటే సర్వర్ అందించిన భద్రత ఆధారాలు నకిలీ కావచ్చు మరియు సర్వర్ మీరు ఊహించిన సర్వర్ కాకపోవచ్చు (మీరు హ్యాకర్‌తో పరస్పర చర్య చేస్తుండవచ్చు).</translation>
 <translation id="6826370046007623921">డేటా నష్టం నివారణ</translation>
 <translation id="6831043979455480757">అనువదించు</translation>
 <translation id="6839929833149231406">ప్రాంతం</translation>
+<translation id="6846340164947227603">వర్చువల్ కార్డ్ నంబర్‌ని ఉపయోగించండి...</translation>
 <translation id="6852204201400771460">యాప్‌ను మళ్లీ లోడ్ చేయాలా?</translation>
 <translation id="6865412394715372076">ప్రస్తుతం ఈ కార్డ్‌ని ధృవీకరించడం సాధ్యపడదు</translation>
 <translation id="6868206169573555318">అప్‌డేట్ చేయడానికి తిరిగి తెరవండి</translation>
@@ -1233,6 +1249,7 @@
 <translation id="6989763994942163495">అధునాతన సెట్టింగ్‌లను చూపించు...</translation>
 <translation id="6993898126790112050">6x9 (ఎన్వలప్)</translation>
 <translation id="6996312675313362352"><ph name="ORIGINAL_LANGUAGE" />భాషలోని కంటెంట్‌ను ఎల్లప్పుడూ  అనువదించు</translation>
+<translation id="7004583254764674281">కార్డ్‌లను వేగంగా నిర్ధారించడానికి Windows Helloని ఉపయోగించండి</translation>
 <translation id="7012363358306927923">చైనా యూనియన్ పే</translation>
 <translation id="7016992613359344582">ఈ ఛార్జ్‌లు ఒకే సారి చెల్లించేవి లేదా పునరావృతంగా చెల్లించాల్సినవి కావచ్చు మరియు స్పష్టంగా పేర్కొనబడకపోవచ్చు.</translation>
 <translation id="7029809446516969842">పాస్‌వర్డ్‌లు</translation>
@@ -1243,6 +1260,7 @@
 <translation id="7064851114919012435">సంప్రదింపు సమాచారం</translation>
 <translation id="7075452647191940183">అభ్యర్థన చాలా పెద్దదిగా ఉంది</translation>
 <translation id="7079718277001814089">ఈ సైట్‌లో మాల్వేర్ ఉంది</translation>
+<translation id="7081308185095828845">మీ పరికరంలో ఈ ఫీచర్ అందుబాటులో లేదు</translation>
 <translation id="7087282848513945231">కౌంటి</translation>
 <translation id="7090678807593890770"><ph name="LINK" /> కోసం Googleలో వెతకండి</translation>
 <translation id="7108338896283013870">దాచిపెట్టు</translation>
@@ -1296,9 +1314,11 @@
 <translation id="733923710415886693">సర్వర్ ప్రమాణపత్రాన్ని ప్రమాణపత్రం పారదర్శకత ద్వారా బహిరంగపరచలేదు.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">అనుబంధితం:</translation>
+<translation id="73479065977517481">మీ బ్రౌజర్‌లో <ph name="ENROLLMENT_DOMAIN" /> ఎంటర్‌ప్రైజ్ వెర్షన్ వినియోగదారు ప్రారంభించింది. Chrome ఎంటర్‌ప్రైజ్ వెర్షన్ వినియోగదారు మీ డేటాలో కొంత డేటాకు యాక్సెస్ కలిగి ఉంది.</translation>
 <translation id="7349430561505560861">A4-అదనం</translation>
 <translation id="7353601530677266744">ఆదేశ పంక్తి</translation>
 <translation id="7372973238305370288">శోధన ఫలితం</translation>
+<translation id="7374733840632556089">మీ పరికరంలో మీరు లేదా మరొకరు ఇన్‌స్టాల్ చేసిన సర్టిఫికేట్ కారణంగా ఈ సమస్య తలెత్తుతుంది. నెట్‌వర్క్‌లను పర్యవేక్షించడానికి మరియు అడ్డగించడానికి సర్టిఫికెట్ ఉపయోగించబడుతుంది, ఇది Chrome ద్వారా విశ్వసించబడదు. పర్యవేక్షణ కోసం కొన్ని చట్టబద్ధమైన కేసులు ఉన్నప్పటికీ, పాఠశాల లేదా కంపెనీ నెట్‌వర్క్‌లో మాదిరిగా, మీరు దీన్ని ఆపలేక పోయినప్పటికీ, ఇది జరుగుతున్నట్లు మీకు తెలుసని Chrome నిర్ధారించుకోవాలనుకుంటుంది. వెబ్‌ను యాక్సెస్ చేసే ఏదైనా బ్రౌజర్ లేదా యాప్‌లో పర్యవేక్షణ జరగవచ్చు.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">మీడియా నియంత్రణలు</translation>
 <translation id="7378627244592794276">వద్దు</translation>
@@ -1327,6 +1347,7 @@
 <translation id="7451311239929941790">ఈ సమస్య గురించి <ph name="BEGIN_LINK" />మరింత తెలుసుకోండి<ph name="END_LINK" />.</translation>
 <translation id="7455133967321480974">సార్వజనీన డిఫాల్ట్‌ను ఉపయోగించు (బ్లాక్ చేయి)</translation>
 <translation id="7460618730930299168">మీరు ఎంచుకున్నది మరియు స్క్రీనింగ్ చేస్తున్నది వేరుగా ఉన్నాయి. కొనసాగించాలా?</translation>
+<translation id="7464821087936825778">శోధన మోడ్‌ని నిష్క్రమిస్తోంది</translation>
 <translation id="7473891865547856676">వద్దు, ధన్యవాదాలు</translation>
 <translation id="7481312909269577407">ఫార్వర్డ్</translation>
 <translation id="7485870689360869515">డేటా కనుగొనబడలేదు.</translation>
@@ -1548,6 +1569,7 @@
 <translation id="8559762987265718583">మీ పరికరం తేదీ మరియు సమయం <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> తప్పుగా ఉన్నందున (<ph name="DATE_AND_TIME" />)కు ప్రైవేట్ కనెక్షన్ ఏర్పాటు చేయబడదు.</translation>
 <translation id="8564985650692024650">మీరు మీ <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> పాస్‌వర్డ్‌ని ఇతర సైట్‌లలో తిరిగి ఉపయోగించినట్లయితే దీనిని రీసెట్ చేయాల్సిందిగా Chromium సిఫార్సు చేస్తోంది.</translation>
 <translation id="8571890674111243710">పేజీని <ph name="LANGUAGE" />కు అనువదిస్తోంది...</translation>
+<translation id="8574899947864779331">కార్డ్‌లను వేగంగా నిర్ధారించడానికి Touch IDని ఉపయోగించండి</translation>
 <translation id="858637041960032120">ఫోన్ నం. జోడిం.</translation>
 <translation id="860043288473659153">కార్డుదారుని పేరు</translation>
 <translation id="8616822740383114808">ఈ సెట్టింగ్ "<ph name="ENFORCING_SETTING" />" ద్వారా "<ph name="SETTINGS_PAGE" />"లో అమలు చేయబడుతుంది</translation>
diff --git a/components/strings/components_strings_th.xtb b/components/strings/components_strings_th.xtb
index 74ca2bee..f9aab9d 100644
--- a/components/strings/components_strings_th.xtb
+++ b/components/strings/components_strings_th.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">โหลดหน้าภายหลัง</translation>
 <translation id="1015730422737071372">ให้รายละเอียดเพิ่มเติม</translation>
 <translation id="1021110881106174305">บัตรที่ยอมรับ</translation>
+<translation id="1021753677514347426">ปัญหานี้เกิดจากใบรับรองที่คุณหรือคนอื่นติดตั้งไว้ในอุปกรณ์ เป็นที่ทราบกันว่า ใบรับรองนี้ใช้สำหรับการตรวจสอบและสกัดกั้นเครือข่าย และ Chromium ไม่เชื่อถือ แม้ว่าจะมีบางกรณีที่การตรวจสอบชอบด้วยกฎหมาย เช่น เครือข่ายของบริษัทหรือโรงเรียน แต่ Chromium ก็ยังอยากจะแน่ใจว่าคุณรับรู้ว่ามีการตรวจสอบถึงแม้จะหยุดการตรวจสอบนั้นไม่ได้ก็ตาม การตรวจสอบอาจเกิดขึ้นได้ในทุกเบราว์เซอร์หรือแอปพลิเคชันที่เข้าถึงเว็บ</translation>
 <translation id="1032854598605920125">หมุนตามเข็มนาฬิกา</translation>
 <translation id="1036348656032585052">ปิด</translation>
 <translation id="1038842779957582377">ไม่ทราบชื่อ</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">รายงานข้อขัดข้องเมื่อ <ph name="CRASH_TIME" /> (ยังไม่ได้อัปโหลดหรือละเว้น)</translation>
 <translation id="1270502636509132238">วิธีการรับสินค้า</translation>
 <translation id="1285320974508926690">ไม่ต้องแปลเว็บไซต์นี้</translation>
+<translation id="1285400217480592994">สแกนเนื้อหาในไฟล์ที่คุณดาวน์โหลดหรืออัปโหลดใน Chrome</translation>
 <translation id="1292701964462482250">"ซอฟต์แวร์ในคอมพิวเตอร์ของคุณทำให้ Chrome เชื่อมต่อกับเว็บอย่างปลอดภัยไม่ได้" (คอมพิวเตอร์ที่ใช้ระบบปฏิบัติการ Windows เท่านั้น)</translation>
 <translation id="1294154142200295408">บรรทัดคำสั่งรูปแบบต่างๆ</translation>
 <translation id="129553762522093515">เพิ่งปิด</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">หมายเลขโทรศัพท์</translation>
 <translation id="2277103315734023688">ไปข้างหน้า</translation>
 <translation id="2283340219607151381">บันทึกและกรอกที่อยู่</translation>
+<translation id="2288422996159078444">มีการสอดแนมทุกอย่างที่คุณพิมพ์ หน้าที่คุณเข้าชม หรือกิจกรรมอื่นใดที่คุณทำในหน้าเว็บ อาจมีการเปลี่ยนแปลงเนื้อหาในเว็บไซต์โดยไม่แจ้งให้คุณทราบ</translation>
 <translation id="2289385804009217824">ตัด</translation>
 <translation id="2292556288342944218">การเข้าถึงอินเทอร์เน็ตของคุณถูกบล็อก</translation>
 <translation id="2297722699537546652">B5 (ซองจดหมาย)</translation>
@@ -426,6 +429,7 @@
 <translation id="2989742184762224133">เย็บด้วยลวดเย็บกระดาษด้านบน 2 ครั้ง</translation>
 <translation id="2991174974383378012">การแชร์กับเว็บไซต์</translation>
 <translation id="2991571918955627853">คุณไม่สามารถไปที่ <ph name="SITE" /> ได้ในขณะนี้เนื่องจากเว็บไซต์ใช้ HSTS โดยปกติข้อผิดพลาดของเครือข่ายและการโจมตีจะเกิดขึ้นเพียงชั่วคราว หน้านี้จึงอาจใช้งานได้ในภายหลัง</translation>
+<translation id="2996674880327704673">คำแนะนำโดย Google</translation>
 <translation id="3005723025932146533">แสดงสำเนาที่บันทึกไว้</translation>
 <translation id="3008447029300691911">ป้อน CVC สำหรับ <ph name="CREDIT_CARD" /> เมื่อยืนยันแล้ว รายละเอียดบัตรของคุณจะแชร์กับเว็บไซต์นี้</translation>
 <translation id="3010559122411665027">รายการที่เข้ามา "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -438,6 +442,7 @@
 <translation id="3060227939791841287">C9 (ซองจดหมาย)</translation>
 <translation id="3061707000357573562">แพตช์บริการ</translation>
 <translation id="3064966200440839136">ออกจากโหมดไม่ระบุตัวตนเพื่อชำระเงินผ่านแอปพลิเคชันภายนอก ดำเนินการต่อไหม</translation>
+<translation id="3086579638707268289">มีการตรวจสอบกิจกรรมที่คุณทำบนเว็บ</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">เพิ่มที่อยู่สำหรับรับสินค้า</translation>
 <translation id="3105172416063519923">รหัสสินทรัพย์:</translation>
@@ -490,6 +495,7 @@
 <translation id="3369192424181595722">ข้อผิดพลาดของนาฬิกา</translation>
 <translation id="337363190475750230">ยกเลิกการจัดเตรียมแล้ว</translation>
 <translation id="3377188786107721145">ข้อผิดพลาดในการแยกวิเคราะห์นโยบาย</translation>
+<translation id="3377736046129930310">ใช้ฟีเจอร์ล็อกหน้าจอเพื่อยืนยันบัตรได้เร็วขึ้น</translation>
 <translation id="3380365263193509176">ข้อผิดพลาดที่ไม่รู้จัก</translation>
 <translation id="3380864720620200369">รหัสลูกค้า:</translation>
 <translation id="3387261909427947069">วิธีการชำระเงิน</translation>
@@ -649,6 +655,7 @@
 <translation id="4194250254487269611">บันทึกบัตรไม่ได้ในตอนนี้</translation>
 <translation id="4196861286325780578">&amp;ทำซ้ำการย้าย</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />ตรวจสอบไฟร์วอลล์และการกำหนดค่าการป้องกันไวรัส<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">โปรไฟล์ในหน้าจอลงชื่อเข้าใช้</translation>
 <translation id="4215751373031079683">7x9 (ซองจดหมาย)</translation>
 <translation id="4220128509585149162">การขัดข้อง</translation>
 <translation id="422022731706691852">ผู้โจมตีที่อยู่ใน <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> อาจพยายามหลอกล่อให้คุณติดตั้งโปรแกรมที่ทำให้การท่องเว็บเป็นเรื่องอันตราย (ตัวอย่างเช่น การเปลี่ยนหน้าแรกหรือการแสดงโฆษณาเพิ่มเติมในไซต์ที่คุณเข้าชม) <ph name="BEGIN_LEARN_MORE_LINK" />ดูข้อมูลเพิ่มเติม<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -731,6 +738,7 @@
 <translation id="4515275063822566619">ข้อมูลบัตรและที่อยู่มาจาก Chrome และบัญชี Google (<ph name="ACCOUNT_EMAIL" />) คุณสามารถจัดการข้อมูลเหล่านี้ใน<ph name="BEGIN_LINK" />การตั้งค่า<ph name="END_LINK" /></translation>
 <translation id="4517607026994743406">Comm-10 (ซองจดหมาย)</translation>
 <translation id="4522570452068850558">รายละเอียด</translation>
+<translation id="4524138615196389145">ยืนยันบัตรได้เร็วขึ้นโดยใช้ WebAuthn จากนี้ไป</translation>
 <translation id="4524805452350978254">จัดการการ์ด</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -841,6 +849,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">Edp แบบยุโรป</translation>
 <translation id="5115563688576182185">(64 บิต)</translation>
+<translation id="5121469660360593280">แชร์ข้อมูลให้ผู้ดูแลระบบทราบเกี่ยวกับการดำเนินการด้านความปลอดภัยที่ฟีเจอร์ปกป้องผู้ใช้ของ Chrome Enterprise ติดธงไว้ ข้อมูลนี้อาจมี URL ของหน้าที่คุณเข้าชม ชื่อไฟล์หรือข้อมูลเมตา และชื่อผู้ใช้ที่คุณใช้ลงชื่อเข้าใช้อุปกรณ์และ Chrome</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">ยืนยันบัตร</translation>
 <translation id="5135404736266831032">จัดการที่อยู่...</translation>
@@ -852,6 +861,7 @@
 <translation id="5159010409087891077">เปิดหน้าเว็บในหน้าต่างที่ไม่ระบุตัวตนใหม่ (⇧⌘N)</translation>
 <translation id="516920405563544094">ป้อน CVC ของ <ph name="CREDIT_CARD" /> เมื่อยืนยันแล้ว ระบบจะแชร์รายละเอียดของบัตรจากบัญชี Google กับเว็บไซต์นี้</translation>
 <translation id="5169827969064885044">คุณอาจเข้าถึงบัญชีขององค์กรไม่ได้หรือถูกโจรกรรมข้อมูลประจำตัว Chrome ขอแนะนำให้เปลี่ยนรหัสผ่านตอนนี้เลย</translation>
+<translation id="5170017743895942767">การปกป้องผู้ใช้ของ Chrome Enterprise</translation>
 <translation id="5171045022955879922">ค้นหาหรือพิมพ์ URL</translation>
 <translation id="5171689220826475070">กระดาษต่อเนื่องแบบยุโรป</translation>
 <translation id="5172758083709347301">ผู้ใช้คอมพิวเตอร์นี้</translation>
@@ -972,6 +982,7 @@
 <translation id="5730040223043577876">Chrome ขอแนะนำให้รีเซ็ตรหัสผ่านหากคุณใช้รหัสผ่านนี้ซ้ำในเว็บไซต์อื่น</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{บันทึกบัตรลงในบัญชี Google ของคุณ}other{บันทึกบัตรลงในบัญชี Google ของคุณ}}</translation>
 <translation id="5763042198335101085">ป้อนที่อยู่อีเมลที่ถูกต้อง</translation>
+<translation id="5763703224595565476">ผู้ดูแลระบบได้เปิดใช้ฟีเจอร์ปกป้องผู้ใช้ของ Chrome Enterprise ในเบราว์เซอร์ ฟีเจอร์ปกป้องผู้ใช้ของ Chrome Enterprise มีสิทธิ์เข้าถึงข้อมูลบางอย่างของคุณได้</translation>
 <translation id="5765072501007116331">หากต้องการดูวิธีการนำส่งสินค้าและข้อกำหนด โปรดเลือกที่อยู่</translation>
 <translation id="5778550464785688721">การควบคุมอุปกรณ์ MIDI เต็มรูปแบบ</translation>
 <translation id="5781136890105823427">เปิดใช้การทดสอบอยู่</translation>
@@ -1051,6 +1062,7 @@
 <translation id="6094273045989040137">ใส่หมายเหตุ</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">บัญชี Google อาจมีประวัติการท่องเว็บรูปแบบอื่นๆ ที่ <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
+<translation id="6120179357481664955">จำรหัส UPI ไหม</translation>
 <translation id="6132597952260690497">ข้อมูลเกี่ยวกับส่วนขยายและปลั๊กอินที่ติดตั้งไว้</translation>
 <translation id="6146055958333702838">ตรวจสายเคเบิลและรีบูตเราเตอร์ โมเด็ม หรืออุปกรณ์เครือข่ายอื่น
     ที่คุณอาจใช้งานอยู่</translation>
@@ -1066,6 +1078,7 @@
 <translation id="6221345481584921695">เมื่อเร็วๆ นี้ Google Safe Browsing <ph name="BEGIN_LINK" />ตรวจพบมัลแวร์<ph name="END_LINK" />ใน <ph name="SITE" /> เว็บไซต์ที่โดยปกติจะปลอดภัยบางครั้งอาจติดมัลแวร์ เนื้อหาที่เป็นอันตรายมาจาก <ph name="SUBRESOURCE_HOST" /> ซึ่งเป็นผู้เผยแพร่มัลแวร์ที่เป็นที่รู้จัก</translation>
 <translation id="6234122620015464377">ตัดออกหลังเอกสารแต่ละฉบับ</translation>
 <translation id="6240447795304464094">โลโก้ Google Pay</translation>
+<translation id="6241121617266208201">ซ่อนคำแนะนำ</translation>
 <translation id="6251924700383757765">นโยบายความเป็นส่วนตัว</translation>
 <translation id="6254436959401408446">หน่วยความจำไม่เพียงพอที่จะเปิดหน้านี้</translation>
 <translation id="625755898061068298">คุณเลือกปิดใช้คำเตือนด้านความปลอดภัยของเว็บไซต์นี้</translation>
@@ -1112,6 +1125,7 @@
 <translation id="6409754798200046165">คุณเพิ่งใส่รหัสผ่านในเว็บไซต์ที่มีการหลอกลวง Chrome ขอแนะนำให้เปลี่ยนรหัสผ่านตอนนี้เลย</translation>
 <translation id="6410264514553301377">ป้อนวันหมดอายุและ CVC ของ <ph name="CREDIT_CARD" /></translation>
 <translation id="6415778972515849510">Chromium ช่วยคุณปกป้องบัญชี Google และเปลี่ยนรหัสผ่านได้</translation>
+<translation id="6423385022588644828">ยืนยันบัตรได้เร็วขึ้นโดยใช้ Touch ID จากนี้ไป</translation>
 <translation id="6427730057873428458">พับทบ</translation>
 <translation id="6433490469411711332">แก้ไขข้อมูลติดต่อ</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> ปฏิเสธการเชื่อมต่อ</translation>
@@ -1182,12 +1196,14 @@
 <translation id="6786747875388722282">ส่วนขยาย</translation>
 <translation id="6790428901817661496">เล่น</translation>
 <translation id="679355240208270552">ไม่ใช้งานเนื่องจากมีการเปิดใช้การค้นหาเริ่มต้นตามนโยบาย</translation>
+<translation id="6794951432696553238">ยืนยันบัตรได้เร็วขึ้นโดยใช้ Windows Hello จากนี้ไป</translation>
 <translation id="681021252041861472">ช่องที่ต้องกรอก</translation>
 <translation id="6810899417690483278">รหัสการปรับแต่ง</translation>
 <translation id="6825578344716086703">คุณพยายามเข้าถึง <ph name="DOMAIN" /> แต่เซิร์ฟเวอร์แสดงใบรับรองที่ลงนามด้วยอัลกอริทึมลายเซ็นที่ไม่รัดกุม (เช่น SHA-1) ซึ่งหมายความว่าข้อมูลรับรองด้านความปลอดภัยที่เซิร์ฟเวอร์แสดงอาจถูกปลอมแปลงขึ้น และเซิร์ฟเวอร์ดังกล่าวอาจไม่ใช่เซิร์ฟเวอร์ที่คุณคิด (คุณอาจกำลังติดต่อกับผู้โจมตี)</translation>
 <translation id="6826370046007623921">ป้องกันข้อมูลรั่วไหล</translation>
 <translation id="6831043979455480757">แปลภาษา</translation>
 <translation id="6839929833149231406">พื้นที่</translation>
+<translation id="6846340164947227603">ใช้หมายเลขบัตรเสมือน...</translation>
 <translation id="6852204201400771460">โหลดแอปซ้ำไหม</translation>
 <translation id="6865412394715372076">ยืนยันบัตรนี้ไม่ได้ในขณะนี้</translation>
 <translation id="6868206169573555318">เปิดอีกครั้งเพื่ออัปเดต</translation>
@@ -1216,6 +1232,7 @@
 <translation id="6989763994942163495">แสดงการตั้งค่าขั้นสูง...</translation>
 <translation id="6993898126790112050">6x9 (ซองจดหมาย)</translation>
 <translation id="6996312675313362352">แปลภาษา<ph name="ORIGINAL_LANGUAGE" />เสมอ</translation>
+<translation id="7004583254764674281">ใช้ Windows Hello เพื่อยืนยันบัตรได้เร็วขึ้น</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">การเรียกเก็บเงินเหล่านี้อาจเกิดขึ้นครั้งเดียวหรือเป็นเกิดขึ้นซ้ำๆ และอาจไม่แสดงอย่างชัดแจ้ง</translation>
 <translation id="7029809446516969842">รหัสผ่าน</translation>
@@ -1226,6 +1243,7 @@
 <translation id="7064851114919012435">ข้อมูลติดต่อ</translation>
 <translation id="7075452647191940183">คำขอมีขนาดใหญ่เกินไป</translation>
 <translation id="7079718277001814089">เว็บไซต์นี้มีมัลแวร์</translation>
+<translation id="7081308185095828845">ฟีเจอร์นี้ใช้ไม่ได้ในอุปกรณ์ของคุณ</translation>
 <translation id="7087282848513945231">ประเทศ</translation>
 <translation id="7090678807593890770">ค้นหา <ph name="LINK" /> จาก Google</translation>
 <translation id="7108338896283013870">ซ่อน</translation>
@@ -1279,9 +1297,11 @@
 <translation id="733923710415886693">ไม่มีการเปิดเผยใบรับรองของเซิร์ฟเวอร์ผ่านความโปร่งใสของใบรับรอง</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">เป็นพาร์ทเนอร์:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> ได้เปิดใช้ฟีเจอร์ปกป้องผู้ใช้ของ Chrome Enterprise ในเบราว์เซอร์ของคุณ ฟีเจอร์ปกป้องผู้ใช้ของ Chrome Enterprise มีสิทธิ์เข้าถึงข้อมูลบางอย่างของคุณได้</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">บรรทัดคำสั่ง </translation>
 <translation id="7372973238305370288">ผลการค้นหา</translation>
+<translation id="7374733840632556089">ปัญหานี้เกิดจากใบรับรองที่คุณหรือคนอื่นติดตั้งไว้ในอุปกรณ์ เป็นที่ทราบกันว่า ใบรับรองนี้ใช้สำหรับการตรวจสอบและสกัดกั้นเครือข่าย และ Chrome ไม่เชื่อถือใบรับรองนี้ แม้ว่าจะมีบางกรณีที่การตรวจสอบชอบด้วยกฎหมาย เช่น เครือข่ายของบริษัทหรือโรงเรียน แต่ Chrome ก็ยังอยากจะแน่ใจว่าคุณรับรู้ว่ามีการตรวจสอบถึงแม้จะหยุดการตรวจสอบนั้นไม่ได้ก็ตาม การตรวจสอบอาจเกิดขึ้นได้ในทุกเบราว์เซอร์หรือแอปพลิเคชันที่เข้าถึงเว็บ</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">การควบคุมสื่อ</translation>
 <translation id="7378627244592794276">ไม่</translation>
@@ -1310,6 +1330,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />ดูข้อมูลเพิ่มเติม<ph name="END_LINK" />เกี่ยวกับปัญหานี้</translation>
 <translation id="7455133967321480974">ใช้ค่าเริ่มต้นสากล (บล็อก)</translation>
 <translation id="7460618730930299168">การแสดงบนหน้าจอแตกต่างจากที่คุณเลือก ต้องการดำเนินการต่อไหม</translation>
+<translation id="7464821087936825778">กำลังออกจากโหมดค้นหา</translation>
 <translation id="7473891865547856676">ไม่ ขอบคุณ</translation>
 <translation id="7481312909269577407">ส่งต่อ</translation>
 <translation id="7485870689360869515">ไม่พบข้อมูล</translation>
@@ -1531,6 +1552,7 @@
 <translation id="8559762987265718583">ไม่สามารถเริ่มการเชื่อมต่อส่วนตัวกับ <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> ได้เนื่องจากวันที่และเวลาของอุปกรณ์ (<ph name="DATE_AND_TIME" />) ไม่ถูกต้อง</translation>
 <translation id="8564985650692024650">Chromium ขอแนะนำให้รีเซ็ตรหัสผ่าน <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> หากคุณใช้รหัสผ่านนี้ซ้ำในเว็บไซต์อื่น</translation>
 <translation id="8571890674111243710">กำลังแปลหน้าเว็บนี้เป็นภาษา<ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">ใช้ Touch ID เพื่อยืนยันบัตรได้เร็วขึ้น</translation>
 <translation id="858637041960032120">เพิ่มเบอร์โทร
 </translation>
 <translation id="860043288473659153">ชื่อผู้ถือบัตร</translation>
diff --git a/components/strings/components_strings_tr.xtb b/components/strings/components_strings_tr.xtb
index 4608df2f..0b1ed10 100644
--- a/components/strings/components_strings_tr.xtb
+++ b/components/strings/components_strings_tr.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Sayfayı daha sonra yükle</translation>
 <translation id="1015730422737071372">Diğer ayrıntıları sağlayın</translation>
 <translation id="1021110881106174305">Kabul edilen kartlar</translation>
+<translation id="1021753677514347426">Bu sorunun nedeni sizin veya başka birinin cihazınıza yüklediği bir sertifika olabilir. Sertifikanın ağa müdahale etmek ve izlemek amacıyla kullanıldığı bilindiğinden, Chromium bu sertifikaya güvenmez. Okul veya şirket ağı gibi izlemenin meşru olduğu durumlar vardır. İzlemeyi durduramasanız bile Chromium yine de farkında olmanızı sağlamak ister. Web’e erişen her tarayıcı ve uygulamada izleme yapılabilir.</translation>
 <translation id="1032854598605920125">Saat yönünde döndür</translation>
 <translation id="1036348656032585052">Kapat</translation>
 <translation id="1038842779957582377">bilinmeyen ad</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Kilitlenme raporu yakalanma zamanı: <ph name="CRASH_TIME" /> (henüz yüklenmedi veya yoksayıldı)</translation>
 <translation id="1270502636509132238">Alma Yöntemi</translation>
 <translation id="1285320974508926690">Bu siteyi hiçbir zaman çevirme</translation>
+<translation id="1285400217480592994">Chrome'da indirdiğiniz veya yüklediğiniz dosyaların içeriğini tarama.</translation>
 <translation id="1292701964462482250">"Bilgisayarınızdaki yazılım, Chrome'un web'e güvenli bir şekilde bağlanmasını engelliyor" (yalnızca Windows bilgisayarlar)</translation>
 <translation id="1294154142200295408">Komut satırı varyasyonları</translation>
 <translation id="129553762522093515">Son kapatılan</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Telefon numarası</translation>
 <translation id="2277103315734023688">İleri Sar</translation>
 <translation id="2283340219607151381">Adresleri kaydet ve doldur</translation>
+<translation id="2288422996159078444">Yazdığınız her şey, görüntülediğiniz her sayfa ve web'deki diğer tüm etkinlikleriniz izlenir. Sitelerdeki içerik, bilginiz dışında değiştirilebilir.</translation>
 <translation id="2289385804009217824">Kırp</translation>
 <translation id="2292556288342944218">İnternet erişiminiz engellendi</translation>
 <translation id="2297722699537546652">B5 (Zarf)</translation>
@@ -432,6 +435,7 @@
 <translation id="2989742184762224133">Üstte ikili tel zımba</translation>
 <translation id="2991174974383378012">Web Siteleriyle Paylaşma</translation>
 <translation id="2991571918955627853"><ph name="SITE" /> web sitesi HSTS kullandığından şu anda siteyi ziyaret edemezsiniz. Ağ hataları ve saldırılar genellikle geçici olduğundan bu sayfa muhtemelen daha sonra çalışacaktır.</translation>
+<translation id="2996674880327704673">Google Önerileri</translation>
 <translation id="3005723025932146533">Kaydedilen kopyayı göster</translation>
 <translation id="3008447029300691911"><ph name="CREDIT_CARD" /> numaralı kartın CVC kodunu girin. Onayladığınızda kart ayrıntılarınız bu siteyle paylaşılacaktır.</translation>
 <translation id="3010559122411665027">Liste girişi "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -444,6 +448,7 @@
 <translation id="3060227939791841287">C9 (Zarf)</translation>
 <translation id="3061707000357573562">Yama Hizmeti</translation>
 <translation id="3064966200440839136">Harici bir uygulama üzerinden ödeme gerçekleştirmek için gizli moddan çıkılacak. Devam edilsin mi?</translation>
+<translation id="3086579638707268289">Web'de etkinliğiniz izleniyor</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Alınacağı Adres Ekle</translation>
 <translation id="3105172416063519923">Öğe Kimliği:</translation>
@@ -496,6 +501,7 @@
 <translation id="3369192424181595722">Saat hatası</translation>
 <translation id="337363190475750230">Temel hazırlık iptal edildi</translation>
 <translation id="3377188786107721145">Politika ayrıştırma hatası</translation>
+<translation id="3377736046129930310">Kartları daha hızlı onaylamak için ekran kilidini kullanın</translation>
 <translation id="3380365263193509176">Bilinmeyen hata</translation>
 <translation id="3380864720620200369">İstemci Kimliği:</translation>
 <translation id="3387261909427947069">Ödeme Yöntemleri</translation>
@@ -660,6 +666,7 @@
 <translation id="4194250254487269611">Kartınız şu anda kaydedilemiyor</translation>
 <translation id="4196861286325780578">Taşımayı &amp;yeniden yap</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Güvenlik duvarı ve virüsten korunma yapılandırmalarını kontrol etme<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">oturum açma ekran profili</translation>
 <translation id="4215751373031079683">7x9 (Zarf)</translation>
 <translation id="4220128509585149162">Kilitlenmeler</translation>
 <translation id="422022731706691852"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> sitesine saldıranlar sizi yanıltarak göz atma deneyiminize zarar verecek (örneğin, ana sayfanızı değiştirecek veya ziyaret ettiğiniz sitelerde ek reklamlar gösterecek) programlar yüklemenizi sağlayabilirler. <ph name="BEGIN_LEARN_MORE_LINK" />Daha fazla bilgi<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -742,6 +749,7 @@
 <translation id="4515275063822566619">Kart ve adres bilgileri Chrome'dan ve Google Hesabınızdan (<ph name="ACCOUNT_EMAIL" />) alınmaktadır. Bunları <ph name="BEGIN_LINK" />Ayarlar<ph name="END_LINK" />'dan yönetebilirsiniz.</translation>
 <translation id="4517607026994743406">Comm-10 (Zarf)</translation>
 <translation id="4522570452068850558">Ayrıntılar</translation>
+<translation id="4524138615196389145">Bundan böyle WebAuthn özelliğini kullanarak kartlarınızı daha hızlı onaylayın</translation>
 <translation id="4524805452350978254">Kartları yönet</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -853,6 +861,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64 bit)</translation>
+<translation id="5121469660360593280">Chrome Enterprise User Protect tarafından işaretlenen güvenlik işlemleri hakkında Yöneticiniz ile veri paylaşın. Bu veriler ziyaret ettiğiniz sayfaların URL'leri, dosya adları veya meta verilerinin yanı sıra cihazınızda ve Chrome'da oturum açmak için kullandığınız kullanıcı adını içerebilir.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Kartınızı doğrulayın</translation>
 <translation id="5135404736266831032">Adresleri yönet...</translation>
@@ -864,6 +873,7 @@
 <translation id="5159010409087891077">Sayfayı yeni Gizli pencerede açın (⇧⌘N)</translation>
 <translation id="516920405563544094"><ph name="CREDIT_CARD" /> numaralı kartın CVC kodunu girin. Onayladığınızda Google Hesabınızdaki kart bilgileriniz bu siteyle paylaşılır.</translation>
 <translation id="5169827969064885044">Kuruluşunuzun hesabına erişimi kaybedebilir veya kimlik hırsızlığına maruz kalabilirsiniz. Chrome, şifrenizi hemen değiştirmenizi önerir.</translation>
+<translation id="5170017743895942767">Chrome Enterprise Kullanıcı Koruma</translation>
 <translation id="5171045022955879922">Arayın veya URL'yi yazın</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Makine</translation>
@@ -984,6 +994,7 @@
 <translation id="5730040223043577876">Chrome, şifrenizi başka sitelerde kullandıysanız sıfırlamanızı önerir.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Kartı Google Hesabınıza kaydedin}other{Kartları Google Hesabınıza kaydedin}}</translation>
 <translation id="5763042198335101085">Geçerli bir e-posta adresi girin</translation>
+<translation id="5763703224595565476">Yöneticiniz, Chrome'da Enterprise User Protect özelliğini etkinleştirdi. Chrome Enterprise User Protect özelliğinin verilerinizin bir kısmına erişimi vardır.</translation>
 <translation id="5765072501007116331">Teslimat yöntemlerini ve gereksinimleri görmek için bir adres seçin</translation>
 <translation id="5778550464785688721">MIDI cihazları tam denetimi</translation>
 <translation id="5781136890105823427">Deneme etkin</translation>
@@ -1063,6 +1074,7 @@
 <translation id="6094273045989040137">Ek açıklama ekle</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">Google Hesabınızın <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> adresinde başka biçimlerde tarama geçmişi olabilir</translation>
+<translation id="6120179357481664955">UPI ID'nizi hatırlıyor musunuz?</translation>
 <translation id="6132597952260690497">Yüklü uzantılar ve eklentiler hakkında bilgi</translation>
 <translation id="6146055958333702838">Kabloları kontrol edin ve kullandığınız yönlendiricileri, modemleri
     veya diğer ağ cihazlarını yeniden başlatın.</translation>
@@ -1078,6 +1090,7 @@
 <translation id="6221345481584921695">Google Güvenli Tarama yakın bir zamanda <ph name="SITE" /> sitesinde <ph name="BEGIN_LINK" />kötü amaçlı yazılım tespit etti<ph name="END_LINK" />. Normalde güvenli olan web sitelerine bazen kötü amaçlı yazılımlar bulaşır. Kötü amaçlı içerik, kötü amaçlı yazılım dağıtımcısı olduğu bilinen <ph name="SUBRESOURCE_HOST" /> kaynağından gelmektedir.</translation>
 <translation id="6234122620015464377">Her dokümandan sonra kırp</translation>
 <translation id="6240447795304464094">Google Pay logosu</translation>
+<translation id="6241121617266208201">Önerileri gizle</translation>
 <translation id="6251924700383757765">Gizlilik politikası</translation>
 <translation id="6254436959401408446">Bu sayfayı açmaya yetecek kadar bellek yok</translation>
 <translation id="625755898061068298">Bu site için güvenlik uyarılarını devre dışı bırakmayı seçtiniz.</translation>
@@ -1124,6 +1137,7 @@
 <translation id="6409754798200046165">Az önce şifrenizi yanıltıcı bir sitede girdiniz. Chrome, şifrenizi hemen değiştirmenizi önerir.</translation>
 <translation id="6410264514553301377"><ph name="CREDIT_CARD" /> numaralı kartın son kullanma tarihini ve CVC kodunu girin</translation>
 <translation id="6415778972515849510">Chromium, Google Hesabınızı korumanıza ve şifrenizi değiştirmenize yardımcı olabilir.</translation>
+<translation id="6423385022588644828">Bundan böyle Touch ID'yi kullanarak kartlarınızı daha hızlı onaylayın</translation>
 <translation id="6427730057873428458">İki kırımlı katlama</translation>
 <translation id="6433490469411711332">İletişim bilgilerini düzenle</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> bağlanmayı reddetti.</translation>
@@ -1194,12 +1208,14 @@
 <translation id="6786747875388722282">Uzantılar</translation>
 <translation id="6790428901817661496">Oynat</translation>
 <translation id="679355240208270552">Varsayılan arama motoru politika tarafından etkinleştirilmediği için yoksayıldı.</translation>
+<translation id="6794951432696553238">Bundan böyle Windows Hello'yu kullanarak kartlarınızı daha hızlı onaylayın</translation>
 <translation id="681021252041861472">Gerekli Alan</translation>
 <translation id="6810899417690483278">Özelleştirme Kimliği</translation>
 <translation id="6825578344716086703"><ph name="DOMAIN" /> alanına erişme girişiminde bulundunuz ancak sunucu SHA-1 gibi zayıf bir imza algoritması kullanılarak imzalanmış bir sertifika sağladı. Bu, sunucunun sağladığı güvenlik bilgilerinin sahte olabileceği anlamına gelir ve sunucu sizin beklediğiniz sunucu olmayabilir (bir saldırgan ile irtibat kuruyor olabilirsiniz).</translation>
 <translation id="6826370046007623921">Veri Kaybını Önleme</translation>
 <translation id="6831043979455480757">Çevir</translation>
 <translation id="6839929833149231406">Bölge</translation>
+<translation id="6846340164947227603">Sanal kart numarası kullanın...</translation>
 <translation id="6852204201400771460">Uygulama yeniden yüklensin mi?</translation>
 <translation id="6865412394715372076">Bu kart şu anda doğrulanamıyor</translation>
 <translation id="6868206169573555318">Güncellemek için Yeniden Başlat</translation>
@@ -1228,6 +1244,7 @@
 <translation id="6989763994942163495">Gelişmiş ayarları göster...</translation>
 <translation id="6993898126790112050">6x9 (Zarf)</translation>
 <translation id="6996312675313362352"><ph name="ORIGINAL_LANGUAGE" /> dilini daima çevir</translation>
+<translation id="7004583254764674281">Kartları daha hızlı onaylamak için Windows Hello'yu kullanın</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Bu ödemeler bir defalık alınabileceği gibi yinelenen ödemeler de olabilir ve bu durum açıkça belli olmayabilir.</translation>
 <translation id="7029809446516969842">Şifreler</translation>
@@ -1238,6 +1255,7 @@
 <translation id="7064851114919012435">İletişim bilgileri</translation>
 <translation id="7075452647191940183">İstek çok büyük</translation>
 <translation id="7079718277001814089">Bu site kötü amaçlı yazılım içeriyor</translation>
+<translation id="7081308185095828845">Bu özellik cihazınızda kullanılamıyor</translation>
 <translation id="7087282848513945231">Ülke</translation>
 <translation id="7090678807593890770">Google'da <ph name="LINK" /> araması yapın</translation>
 <translation id="7108338896283013870">Gizle</translation>
@@ -1291,9 +1309,11 @@
 <translation id="733923710415886693">Sunucunun sertifikası, Sertifika Şeffaflığı aracılığıyla açıklanmadı.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">İlişkili olma durumu:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" />, tarayıcınızda Chrome Enterprise User Protect özelliğini etkinleştirdi. Chrome Enterprise User Protect özelliğinin verilerinizin bir kısmına erişimi vardır.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Komut Satırı</translation>
 <translation id="7372973238305370288">arama sonucu</translation>
+<translation id="7374733840632556089">Bu sorunun nedeni sizin veya başka birinin cihazınıza yüklediği bir sertifika olabilir. Sertifikanın ağa müdahale etmek ve izlemek amacıyla kullanıldığı bilindiğinden, Chrome bu sertifikaya güvenmez. Okul veya şirket ağı gibi izlemenin meşru olduğu durumlar vardır. İzlemeyi durduramasanız bile Chrome yine de farkında olmanızı sağlamak ister. Web’e erişen her tarayıcı ve uygulamada izleme yapılabilir.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Medya Denetimleri</translation>
 <translation id="7378627244592794276">Hayır</translation>
@@ -1322,6 +1342,7 @@
 <translation id="7451311239929941790">Bu sorun hakkında <ph name="BEGIN_LINK" />daha fazla<ph name="END_LINK" /> bilgi edinme.</translation>
 <translation id="7455133967321480974">Genel varsayılanı kullan (Engelle)</translation>
 <translation id="7460618730930299168">Filtreleme sizin seçiminizden farklı. Devam etmek istiyor musunuz?</translation>
+<translation id="7464821087936825778">Arama modundan çıkılıyor</translation>
 <translation id="7473891865547856676">Hayır, Teşekkürler</translation>
 <translation id="7481312909269577407">İleri</translation>
 <translation id="7485870689360869515">Hiçbir veri bulunamadı.</translation>
@@ -1543,6 +1564,7 @@
 <translation id="8559762987265718583">Cihazınızın tarih ve saati (<ph name="DATE_AND_TIME" />) yanlış olduğundan <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> alan adına gizli bir bağlantı kurulamıyor.</translation>
 <translation id="8564985650692024650">Chromium, <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> şifrenizi başka sitelerde kullandıysanız sıfırlamanızı önerir.</translation>
 <translation id="8571890674111243710">Sayfa <ph name="LANGUAGE" /> diline çevriliyor...</translation>
+<translation id="8574899947864779331">Kartları daha hızlı onaylamak için Touch ID'yi kullanın</translation>
 <translation id="858637041960032120">Telefon no ekle
 </translation>
 <translation id="860043288473659153">Kart sahibinin adı</translation>
diff --git a/components/strings/components_strings_uk.xtb b/components/strings/components_strings_uk.xtb
index 59c0b5e..cbf04f8 100644
--- a/components/strings/components_strings_uk.xtb
+++ b/components/strings/components_strings_uk.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Завантажити сторінку пізніше</translation>
 <translation id="1015730422737071372">Надати додаткову інформацію</translation>
 <translation id="1021110881106174305">Прийняті картки</translation>
+<translation id="1021753677514347426">Ця проблема виникла через сертифікат, який установили ви або інший користувач на пристрої. Цей сертифікат відстежує й перехоплює мережу. Chromium не вважає його надійним. Хоча існують законні випадки відстеження (наприклад, у мережі навчального закладу або компанії), Chromium хоче переконатися, що ви знаєте про ці дії, навіть якщо не можете їх зупинити. Відстеження може відбуватися в будь-якому веб-переглядачі або додатку з доступом до Інтернету.</translation>
 <translation id="1032854598605920125">Обернути за годинниковою стрілкою</translation>
 <translation id="1036348656032585052">Вимкнути</translation>
 <translation id="1038842779957582377">Невідоме ім’я</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Звіт про аварійне завершення роботи о <ph name="CRASH_TIME" /> (ще не завантажено або пропущено)</translation>
 <translation id="1270502636509132238">Спосіб отримання</translation>
 <translation id="1285320974508926690">Ніколи не перекладати цей сайт</translation>
+<translation id="1285400217480592994">Перевіряти вміст файлів, які ви завантажуєте або додаєте в Chrome.</translation>
 <translation id="1292701964462482250">"Програмне забезпечення на вашому комп’ютері перешкоджає веб-переглядачеві Chrome безпечно під’єднуватися до Інтернету" (лише для комп’ютерів з ОС Windows)</translation>
 <translation id="1294154142200295408">Варіанти командного рядка</translation>
 <translation id="129553762522093515">Нещодавно закриті</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Номер телефону</translation>
 <translation id="2277103315734023688">Перейти вперед</translation>
 <translation id="2283340219607151381">Зберігати й заповнювати адреси</translation>
+<translation id="2288422996159078444">Усі дані, що ви вводите, сторінки, які переглядаєте, або інші дії в Інтернеті відстежуються, а контент на сайтах може змінюватися без вашого відома.</translation>
 <translation id="2289385804009217824">Обрізати</translation>
 <translation id="2292556288342944218">Ваш доступ до Інтернету заблоковано</translation>
 <translation id="2297722699537546652">B5 (конверт)</translation>
@@ -426,6 +429,7 @@
 <translation id="2989742184762224133">Двічі скріпити вгорі</translation>
 <translation id="2991174974383378012">Надання інформації веб-сайтам</translation>
 <translation id="2991571918955627853">Зараз не можна перейти на сторінку <ph name="SITE" />, оскільки веб-сайт використовує протокол HSTS. Помилки мережі й атаки зазвичай тимчасові, тому ця сторінка, скоріш за все, запрацює пізніше.</translation>
+<translation id="2996674880327704673">Пропозиції від Google</translation>
 <translation id="3005723025932146533">Показати збережену копію</translation>
 <translation id="3008447029300691911">Введіть код CVC картки <ph name="CREDIT_CARD" />. Щойно ви підтвердите дані картки, цей сайт отримає доступ до них.</translation>
 <translation id="3010559122411665027">Елемент списку "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -438,6 +442,7 @@
 <translation id="3060227939791841287">C9 (конверт)</translation>
 <translation id="3061707000357573562">Служба виправлень</translation>
 <translation id="3064966200440839136">Щоб оплатити в зовнішньому додатку, ви вийдете з режиму анонімного перегляду. Продовжити?</translation>
+<translation id="3086579638707268289">Ваші дії в Інтернеті відстежуються</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Додати адресу отримання</translation>
 <translation id="3105172416063519923">Ідентифікатор об’єкта:</translation>
@@ -490,6 +495,7 @@
 <translation id="3369192424181595722">Помилка годинника</translation>
 <translation id="337363190475750230">Деініціалізовано</translation>
 <translation id="3377188786107721145">Помилка аналізу правила</translation>
+<translation id="3377736046129930310">Використовувати блокування екрана, щоб швидше підтверджувати картки</translation>
 <translation id="3380365263193509176">Невідома помилка</translation>
 <translation id="3380864720620200369">Ідентифікатор клієнта:</translation>
 <translation id="3387261909427947069">Способи оплати</translation>
@@ -650,6 +656,7 @@
 <translation id="4194250254487269611">Не вдається зберегти картку</translation>
 <translation id="4196861286325780578">&amp;Повторити переміщення</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />перевірити конфігурацію брандмауера й антивірусної програми<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">профіль екрана входу</translation>
 <translation id="4215751373031079683">7x9 (конверт)</translation>
 <translation id="4220128509585149162">Збої в роботі</translation>
 <translation id="422022731706691852">Зловмисники можуть використати сайт <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" />, щоб обманом змусити вас установити програми, що можуть погіршувати роботу вашого веб-переглядача (наприклад, змінювати вашу домашню сторінку або показувати додаткову рекламу на сайтах, які ви відвідуєте). <ph name="BEGIN_LEARN_MORE_LINK" />Докладніше<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -732,6 +739,7 @@
 <translation id="4515275063822566619">Дані картки та список адрес містяться в Chrome і вашому обліковому записі Google (<ph name="ACCOUNT_EMAIL" />). Ними можна керувати в <ph name="BEGIN_LINK" />Налаштуваннях<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Comm-10 (конверт)</translation>
 <translation id="4522570452068850558">Деталі</translation>
+<translation id="4524138615196389145">Відтепер ви можете підтверджувати картки швидше за допомогою WebAuthn</translation>
 <translation id="4524805452350978254">Керувати картками</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -842,6 +850,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64-розрядна версія)</translation>
+<translation id="5121469660360593280">Діліться з адміністратором даними про події системи безпеки, про які повідомляє Система захисту користувача Chrome Enterprise. Вони можуть містити URL-адреси відвіданих сторінок, назви файлів або метаданих, а також ім'я користувача, через яке ви входите в обліковий запис на пристрої або в Chrome.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Підтвердьте дані картки</translation>
 <translation id="5135404736266831032">Керувати адресами…</translation>
@@ -853,6 +862,7 @@
 <translation id="5159010409087891077">Відкрийте сторінку в анонімному вікні (⇧⌘N)</translation>
 <translation id="516920405563544094">Введіть код CVC картки <ph name="CREDIT_CARD" />. Щойно ви підтвердите дані картки в обліковому записі Google, цей сайт отримає доступ до них.</translation>
 <translation id="5169827969064885044">Ви можете втратити доступ до облікового запису організації, або хтось може викрасти вашу особисту інформацію. Chrome радить змінити пароль.</translation>
+<translation id="5170017743895942767">Система захисту користувача Chrome Enterprise</translation>
 <translation id="5171045022955879922">Знайдіть або введіть URL-адресу</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Комп’ютер</translation>
@@ -973,6 +983,7 @@
 <translation id="5730040223043577876">Chrome радить скинути пароль, якщо ви застосовували його на інших сайтах.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Збережіть картку в обліковому записі Google}one{Збережіть картки в обліковому записі Google}few{Збережіть картки в обліковому записі Google}many{Збережіть картки в обліковому записі Google}other{Збережіть картки в обліковому записі Google}}</translation>
 <translation id="5763042198335101085">Введіть дійсну електронну адресу</translation>
+<translation id="5763703224595565476">Ваш адміністратор увімкнув Систему захисту користувача Chrome Enterprise у веб-переглядачі. Ця система має доступ до деяких ваших даних.</translation>
 <translation id="5765072501007116331">Укажіть адресу, щоб переглянути способи доставки та вимоги.</translation>
 <translation id="5778550464785688721">Повний контроль пристроїв MIDI</translation>
 <translation id="5781136890105823427">Експеримент увімкнено</translation>
@@ -1052,6 +1063,7 @@
 <translation id="6094273045989040137">Додати примітку</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">Історія веб-перегляду може також зберігатися у вашому обліковому записі Google на сторінці <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /></translation>
+<translation id="6120179357481664955">Запам'ятати ідентифікатор UPI?</translation>
 <translation id="6132597952260690497">Інформація про встановлені розширення та плагіни</translation>
 <translation id="6146055958333702838">Перевірте всі кабелі та перезавантажте всі маршрутизатори, модеми чи інші мережеві
     пристрої, які ви використовуєте.</translation>
@@ -1067,6 +1079,7 @@
 <translation id="6221345481584921695">Функція безпечного перегляду від Google <ph name="BEGIN_LINK" />виявила зловмисне програмне забезпечення<ph name="END_LINK" /> на сайті <ph name="SITE" />. Іноді зловмисне програмне забезпечення заражає зазвичай безпечні веб-сайти. Шкідливий вміст походить із хосту <ph name="SUBRESOURCE_HOST" /> – відомого розповсюджувача зловмисного програмного забезпечення.</translation>
 <translation id="6234122620015464377">Обрізати після кожного документа</translation>
 <translation id="6240447795304464094">Логотип Google Pay</translation>
+<translation id="6241121617266208201">Сховати пропозиції</translation>
 <translation id="6251924700383757765">Політика конфіденційності</translation>
 <translation id="6254436959401408446">Недостатньо пам’яті, щоб відкрити цю сторінку</translation>
 <translation id="625755898061068298">Ви вимкнули показ застережень про небезпеку для цього сайту.</translation>
@@ -1113,6 +1126,7 @@
 <translation id="6409754798200046165">Щойно ви ввели пароль на оманливому сайті. Chrome радить змінити пароль.</translation>
 <translation id="6410264514553301377">Введіть дату закінчення терміну дії та код CVC картки <ph name="CREDIT_CARD" /></translation>
 <translation id="6415778972515849510">Chromium допоможе захистити обліковий запис Google і змінити пароль.</translation>
+<translation id="6423385022588644828">Відтепер ви можете підтверджувати картки швидше за допомогою Touch ID</translation>
 <translation id="6427730057873428458">Зігнути за типом "ворота"</translation>
 <translation id="6433490469411711332">Змінити контактні дані</translation>
 <translation id="6433595998831338502">Хост <ph name="HOST_NAME" /> відхилив запит на з’єднання.</translation>
@@ -1183,12 +1197,14 @@
 <translation id="6786747875388722282">Розширення</translation>
 <translation id="6790428901817661496">Відтворити</translation>
 <translation id="679355240208270552">Ігнорується, оскільки пошукову систему за умовчанням вимкнено правилом.</translation>
+<translation id="6794951432696553238">Відтепер ви можете підтверджувати картки швидше за допомогою Windows Hello</translation>
 <translation id="681021252041861472">Обов’язкове поле</translation>
 <translation id="6810899417690483278">Ідентифікатор налаштування</translation>
 <translation id="6825578344716086703">Ви спробували зв’язатися з доменом <ph name="DOMAIN" />, проте сервер надав сертифікат, підписаний із використанням слабкого алгоритму підпису (як-от SHA-1). Це означає, що облікові дані безпеки, надані сервером, можуть бути сфальсифікованими, а сервер – не тим, який вам потрібен (ви можете передавати свої дані зловмиснику).</translation>
 <translation id="6826370046007623921">Запобігання витокам даних</translation>
 <translation id="6831043979455480757">Перекласти</translation>
 <translation id="6839929833149231406">Область</translation>
+<translation id="6846340164947227603">Скористатися номером віртуальної картки…</translation>
 <translation id="6852204201400771460">Перезапустити додаток?</translation>
 <translation id="6865412394715372076">Зараз цю картку не можна підтвердити</translation>
 <translation id="6868206169573555318">Перезапустити, щоб оновити</translation>
@@ -1217,6 +1233,7 @@
 <translation id="6989763994942163495">Показати розширені налаштування...</translation>
 <translation id="6993898126790112050">6x9 (конверт)</translation>
 <translation id="6996312675313362352">Завжди перекладати з такої мови: <ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">Використовувати Windows Hello, щоб швидше підтверджувати картки</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">Такі стягнення можуть бути одноразовими чи регулярними й неочевидними.</translation>
 <translation id="7029809446516969842">Паролі</translation>
@@ -1227,6 +1244,7 @@
 <translation id="7064851114919012435">Контактна інформація</translation>
 <translation id="7075452647191940183">Запит завеликий</translation>
 <translation id="7079718277001814089">Цей сайт містить зловмисне програмне забезпечення</translation>
+<translation id="7081308185095828845">Ця функція недоступна на вашому пристрої</translation>
 <translation id="7087282848513945231">Країна</translation>
 <translation id="7090678807593890770">Пошукайте за запитом "<ph name="LINK" />" у Google</translation>
 <translation id="7108338896283013870">Сховати</translation>
@@ -1280,9 +1298,11 @@
 <translation id="733923710415886693">Сертифікат сервера не надав інформацію про перевірку.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">Зв'язано:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> вмикає Систему захисту користувача Chrome Enterprise у вашому веб-переглядачі. Ця система має доступ до деяких ваших даних.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Командний рядок</translation>
 <translation id="7372973238305370288">результат пошуку</translation>
+<translation id="7374733840632556089">Ця проблема виникла через сертифікат, який установили ви або інший користувач на пристрої. Цей сертифікат відстежує й перехоплює мережу. Chrome не вважає його надійним. Хоча існують законні випадки відстеження (наприклад, у мережі навчального закладу або компанії), Chrome хоче переконатися, що ви знаєте про ці дії, навіть якщо не можете їх зупинити. Відстеження може відбуватися в будь-якому веб-переглядачі або додатку з доступом до Інтернету.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Елементи керування медіа</translation>
 <translation id="7378627244592794276">Ні</translation>
@@ -1311,6 +1331,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />дізнатися більше<ph name="END_LINK" /> про цю проблему.</translation>
 <translation id="7455133967321480974">Використовувати глобальне налаштування за умовчанням (Блокувати)</translation>
 <translation id="7460618730930299168">Дані відрізняються від вибраних. Продовжити?</translation>
+<translation id="7464821087936825778">Вихід із режиму пошуку</translation>
 <translation id="7473891865547856676">Ні, дякую</translation>
 <translation id="7481312909269577407">Переслати</translation>
 <translation id="7485870689360869515">Даних не знайдено.</translation>
@@ -1532,6 +1553,7 @@
 <translation id="8559762987265718583">Не вдається встановити конфіденційне з’єднання з <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />, оскільки на пристрої встановлено неправильні дату й час (<ph name="DATE_AND_TIME" />).</translation>
 <translation id="8564985650692024650">Chromium радить скинути пароль <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" />, якщо ви застосовували його на інших сайтах.</translation>
 <translation id="8571890674111243710">Виконується переклад сторінки такою мовою: <ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">Використовувати Touch ID, щоб швидше підтверджувати картки</translation>
 <translation id="858637041960032120">Додати тел.номер
 </translation>
 <translation id="860043288473659153">Ім’я та прізвище власника картки</translation>
diff --git a/components/strings/components_strings_ur.xtb b/components/strings/components_strings_ur.xtb
index 9baf728..ea1f0dfd 100644
--- a/components/strings/components_strings_ur.xtb
+++ b/components/strings/components_strings_ur.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">صفحہ بعد میں لوڈ کریں</translation>
 <translation id="1015730422737071372">اضافی تفصیلات فراہم کریں</translation>
 <translation id="1021110881106174305">قبول کردہ کارڈز</translation>
+<translation id="1021753677514347426">‏آپ کے آلہ پر آپ یا کسی اور کے ذریعہ انسٹال کردہ سرٹیفکیٹ کی وجہ سے یہ مسئلہ پیش آتا ہے۔ اس سرٹیفکیٹ کو نیٹ ورکس مانیٹر کرنے اور منتقطع کرنے کے استعمال کے لیے جانا جاتا ہے، اور یہ Chromium کی طرف سے قابل اعتماد نہیں ہے۔ جبکہ مانیٹرنگ کے لئے کچھ جائز حالات موجود ہیں، جیسے اسکول یا کمپنی کے نیٹ ورک پر، Chromium یقینی بنانا چاہتا ہے کہ آپ اس ہونے والی چیززں سے وافق ہیں، چاہے آپ اسے روک نہیں سکتے۔ مانیٹرنگ کسی بھی براؤزر یا ایپلیکیشن میں ہو سکتی ہے جسے ویب تک رسائی حاصل ہے۔</translation>
 <translation id="1032854598605920125">گھڑی کی سمت میں گھمائیں</translation>
 <translation id="1036348656032585052">آف کریں</translation>
 <translation id="1038842779957582377">نامعلوم نام</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">کریش رپورٹ کیپچر کرنے کا وقت <ph name="CRASH_TIME" /> (ابھی تک اپ لوڈ یا نظر انداز نہیں کی گئی)</translation>
 <translation id="1270502636509132238">پِک اپ کا طریقہ</translation>
 <translation id="1285320974508926690">اس سائٹ کا ترجمہ کبھی نہ کریں</translation>
+<translation id="1285400217480592994">‏ان فائلوں کے مواد اسکین کریں جنہیں آپ Chrome میں ڈاؤن لوڈ یا اپ لوڈ کرتے ہیں۔</translation>
 <translation id="1292701964462482250">‏"آپ کے کمپیوٹر میں موجود سافٹ ویئر Chrome کو محفوظ طور پر ویب سے منسلک ہونے سے روک رہا ہے" (صرف Windows کمپیوٹرز کیلئے)</translation>
 <translation id="1294154142200295408">کمانڈ لائن کے تغیرات</translation>
 <translation id="129553762522093515">حال ہی میں بند کردہ</translation>
@@ -285,6 +287,7 @@
 <translation id="2270484714375784793">فون نمبر</translation>
 <translation id="2277103315734023688">آگے کریں</translation>
 <translation id="2283340219607151381">پتوں کو محفوظ کریں اور بھریں</translation>
+<translation id="2288422996159078444">آپ جو بھی ٹائپ کرتے ہیں، جو بھی صفحات آپ دیکھتے ہیں، یا ویب پر دیکھی جانے والی کوئی بھی دوسری سرگرمی، اور سائٹس پر موجود کسی بھی مواد کو آپ کی معلومات کے بغیر تبدیل کیا جا سکتا ہے۔</translation>
 <translation id="2289385804009217824">تراشیں</translation>
 <translation id="2292556288342944218">انٹرنیٹ تک آپ کی رسائی مسدود ہے</translation>
 <translation id="2297722699537546652">B5 ‎(Envelope‎)‎</translation>
@@ -432,6 +435,7 @@
 <translation id="2989742184762224133">اوپر دُہری سٹیپل</translation>
 <translation id="2991174974383378012">ویب سائٹس کے ساتھ اشتراک کرنا</translation>
 <translation id="2991571918955627853">‏آپ ابھی <ph name="SITE" /> ملاحظہ نہیں کر سکتے کیونکہ ویب سائٹ HSTS کا استعمال کرتی ہے۔ نیٹ ورک کی خرابیاں اور حملے عموماً عارضی ہوتے ہیں، لہذا یہ صفحہ شاید بعد میں کام کرے گا۔</translation>
+<translation id="2996674880327704673">‏Google کی تجاویز</translation>
 <translation id="3005723025932146533">محفوظ کردہ کاپی دکھائیں</translation>
 <translation id="3008447029300691911">‏<ph name="CREDIT_CARD" /> کیلئے CVC درج کریں۔ آپ کے توثیق کرنے کے بعد، اس سائٹ کے ساتھ آپ کے کارڈ کی تفصیلات کا اشتراک کیا جائے گا۔</translation>
 <translation id="3010559122411665027">فہرست کا اندراج "<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -444,6 +448,7 @@
 <translation id="3060227939791841287">C9 ‎(Envelope‎)‎</translation>
 <translation id="3061707000357573562">پیچ سروس</translation>
 <translation id="3064966200440839136">کسی خارجی ایپلیکیشن کے ذریعے ادائیگی کرنے کیلئے پوشیدگی وضع کو چھوڑ رہے ہیں۔ جاری رکھیں؟</translation>
+<translation id="3086579638707268289">ویب پر کی جانے والی آپ کی سرگرمی کو مانیٹر کیا جا رہا ہے</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">پک اپ کا پتہ شامل کریں</translation>
 <translation id="3105172416063519923">‏اثاثہ ID:</translation>
@@ -497,6 +502,7 @@
 <translation id="3369192424181595722">گھڑی کی خرابی</translation>
 <translation id="337363190475750230">کالعدم کردہ</translation>
 <translation id="3377188786107721145">پالیسی پارس کرنے کی خرابی</translation>
+<translation id="3377736046129930310">تیزی سے کارڈز کی تصدیق کرنے کیلئے اسکرین لاک استعمال کریں</translation>
 <translation id="3380365263193509176">نامعلوم خرابی</translation>
 <translation id="3380864720620200369">‏کلائنٹ ID:</translation>
 <translation id="3387261909427947069">ادائیگی کے طریقے</translation>
@@ -657,6 +663,7 @@
 <translation id="4194250254487269611">آپ کا کارڈ ابھی محفوظ نہیں کیا جا سکا</translation>
 <translation id="4196861286325780578">منتقلی &amp;واپس لائیں</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />فائروال اور اینٹی وائرس کنفیگریشنز کو چیک کیا جا رہا ہے<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">اسکرین کی پروفائل میں سائن ان کریں</translation>
 <translation id="4215751373031079683">7x9 ‎(Envelope‎)‎</translation>
 <translation id="4220128509585149162">کریشز</translation>
 <translation id="422022731706691852"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> پر موجود حملہ آور آپ کے براؤزنگ کے تجربے کو نقصان پہنچانے والے پروگرامز انسٹال کرنے میں آپ کو پھنسانے کی کوشش کر سکتے ہیں (مثلاً، آپ کا ہوم صفحہ تبدیل کرکے یا آپ جو سائٹس ملاحظہ کرتے ہیں ان پر اضافی اشتہارات دکھا کر)۔ <ph name="BEGIN_LEARN_MORE_LINK" />مزید جانیں<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -739,6 +746,7 @@
 <translation id="4515275063822566619">‏کارڈز اور پتے Chrome اور آپ کے Google اکاؤنٹ (<ph name="ACCOUNT_EMAIL" />) کی جانب سے ہیں۔ آپ <ph name="BEGIN_LINK" />ترتیبات<ph name="END_LINK" /> میں ان کا نظم کر سکتے ہیں۔</translation>
 <translation id="4517607026994743406">Comm-10 ‎(Envelope‎)‎</translation>
 <translation id="4522570452068850558">تفصیلات</translation>
+<translation id="4524138615196389145">‏اب سے WebAuthn کے ذریعے تیزی سے اپنے کارڈز کی تصدیق کریں گے</translation>
 <translation id="4524805452350978254">کارڈز کا نظم کریں</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">فلیش</translation>
@@ -849,6 +857,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64 بٹ)</translation>
+<translation id="5121469660360593280">‏ان سیکیورٹی ایونٹس سے متعلق ڈیٹا کا اشتراک کریں جن کی اطلاع Chrome انٹرپرائز صارف برائے تحفظ نے آپ کے منتظم کو دی تھی۔ اس میں آپ کے ذریعے ملاحظہ کیے جانے والے صفحات کے URLs، فائل کے نام یا میٹا ڈیٹا، اور وہ صارف نام جس کا استعمال آپ اپنے آلہ اور Chrome میں سائن ان کرنے کے لیے استعمال کرتے ہیں، شامل ہو سکتے ہیں۔</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">اپنے کارڈ کی توثیق کریں</translation>
 <translation id="5135404736266831032">پتوں کا نظم کریں...</translation>
@@ -860,6 +869,7 @@
 <translation id="5159010409087891077">‏صفحہ کو ایک نئی پوشیدگی ونڈو میں کھولیں (⇧⌘N)</translation>
 <translation id="516920405563544094">‏<ph name="CREDIT_CARD" /> کا CVC درج کریں۔ آپ کے توثیق کرنے کے بعد، آپ کے Google اکاؤنٹ سے کارڈ کی تفصیلات کا اس سائٹ کے ساتھ اشتراک کر دیا جائے گا۔</translation>
 <translation id="5169827969064885044">‏آپ اپنی تنظیم کے اکاؤنٹ تک رسائی سے محروم ہو سکتے ہیں یا شناخت کی چوری ہو سکتی ہے۔ Chrome آپ کو ابھی اپنا پاس ورڈ تبدیل کرنے کی تجویز کرتا ہے۔</translation>
+<translation id="5170017743895942767">‏Chrome انٹرپرائز صارف برائے تحفظ</translation>
 <translation id="5171045022955879922">‏تلاش کریں یا URL ٹائپ کریں</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">مشین</translation>
@@ -980,6 +990,7 @@
 <translation id="5730040223043577876">‏اگر آپ نے اپنا پاس ورڈ دیگر سائٹس پر دوبارہ استعمال کیا ہے تو Chrome آپ کو اپنا پاس ورڈ ری سیٹ کرنے کی تجویز کرتا ہے۔</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{‏اپنے Google اکاؤنٹ میں کارڈ کو محفوظ کریں}other{‏اپنے Google اکاؤنٹ میں کارڈز کو محفوظ کریں}}</translation>
 <translation id="5763042198335101085">ایک درست ای میل پتہ درج کریں</translation>
+<translation id="5763703224595565476">‏آپ کے منتظم نے آپ کے براؤزر پر Chrome انٹرپرائز صارف برائے تحفظ کو فعال کر دیا ہے۔ Chrome انٹرپرائز صارف برائے تحفظ کو آپ کے کچھ ڈیٹا تک رسائی حاصل ہے۔</translation>
 <translation id="5765072501007116331">ڈیلیوری کے طریقے اور ضروریات دیکھنے کیلئے، ایک پتہ منتخب کریں</translation>
 <translation id="5778550464785688721">‏MIDI آلات مکمل کنٹرول</translation>
 <translation id="5781136890105823427">تجربہ فعال کر دیا گیا</translation>
@@ -1059,6 +1070,7 @@
 <translation id="6094273045989040137">تشریح کریں</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">‏ممکن ہے کہ ‎<ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />‎ پر آپ کے Google اکاؤنٹ میں براؤزنگ کی سرگزشت کی دیگر شکلیں موجود ہوں</translation>
+<translation id="6120179357481664955">‏آپ کی UPI ID یاد رکھیں؟</translation>
 <translation id="6132597952260690497">انسٹال کردہ ایکسٹینشنز اور پلگ انز کے بارے میں معلومات</translation>
 <translation id="6146055958333702838">کوئی بھی کیبلز چیک کریں اور کوئی بھی
     روٹرز، موڈمز
@@ -1075,6 +1087,7 @@
 <translation id="6221345481584921695">‏Google محفوظ براؤزنگ کو حال ہی میں <ph name="SITE" /> پر <ph name="BEGIN_LINK" />میلویئر کا پتہ لگا<ph name="END_LINK" />۔ جو ویب سائٹس عام طور پر محفوظ ہوتی ہیں وہ کبھی کبھی میلویئر سے متاثر ہو جاتی ہیں۔ نقصان دہ مواد <ph name="SUBRESOURCE_HOST" /> سے آتا ہے جو ایک معلوم میلویئر تقسیم کار ہے۔</translation>
 <translation id="6234122620015464377">ہر دستاویز کے بعد تراشیں</translation>
 <translation id="6240447795304464094">‏Google pay کا لوگو</translation>
+<translation id="6241121617266208201">تجاویز چھپائیں</translation>
 <translation id="6251924700383757765">رازداری کی پالیسی</translation>
 <translation id="6254436959401408446">اس صفحہ کو کھولنے کیلئے کافی میموری نہیں ہے</translation>
 <translation id="625755898061068298">آپ نے اس سائٹ کیلئے سیکیورٹی وارننگز کو غیر فعال کرنے کا انتخاب کیا ہے۔</translation>
@@ -1121,6 +1134,7 @@
 <translation id="6409754798200046165">‏آپ نے ابھی ایک پُرفریب سائٹ پر اپنا پاس ورڈ درج کیا ہے۔ Chrome آپ کو ابھی اپنا پاس ورڈ تبدیل کرنے کی تجویز دیتا ہے۔</translation>
 <translation id="6410264514553301377">‏<ph name="CREDIT_CARD" /> کی اختتامی تاریخ اور CVC درج کریں</translation>
 <translation id="6415778972515849510">‏Chromium آپ کی اپنا Google اکاؤنٹ محفوظ اور پاس ورڈ تبدیل کرنے میں مدد کر سکتا ہے۔</translation>
+<translation id="6423385022588644828">‏اب سے Touch ID کے ذریعے تیزی سے اپنے کارڈز کی تصدیق کریں گے</translation>
 <translation id="6427730057873428458">گیٹ فولڈ</translation>
 <translation id="6433490469411711332">رابطہ کی معلومات میں ترمیم کریں</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> نے منسلک ہونے سے منع کر دیا۔</translation>
@@ -1191,12 +1205,14 @@
 <translation id="6786747875388722282">توسیعات</translation>
 <translation id="6790428901817661496">چلائیں</translation>
 <translation id="679355240208270552">نظر انداز کر دیا گیا کیونکہ ڈیفالٹ تلاش پالیسی کے ذریعے فعال نہیں کی گئی ہے۔</translation>
+<translation id="6794951432696553238">‏اب سے Windows Hello کے ذریعے تیزی سے اپنے کارڈز کی تصدیق کریں گے</translation>
 <translation id="681021252041861472">مطلوبہ فیلڈ</translation>
 <translation id="6810899417690483278">‏حسب ضرورت ID</translation>
 <translation id="6825578344716086703">‏آپ نے <ph name="DOMAIN" /> تک پہنچنے کی کوشش کی، لیکن سرور نے ایک کمزور دستخط الگورتھم (جیسے SHA-1) استعمال کرتے ہوئے دستخط کردہ سرٹیفیکیٹ پیش کیا۔ اس کا مطلب یہ ہے کہ شاید سرور کی پیش کردہ سیکیورٹی اسناد میں جعل سازی کی گئی ہے اور ممکن ہے کہ سرور آپ کا متوقع سرور نہ ہو (ممکن ہے آپ کسی حملہ آور کے ساتھ مواصلت کر رہے ہوں)۔</translation>
 <translation id="6826370046007623921">ڈیٹا کے نقصان سے بچاؤ</translation>
 <translation id="6831043979455480757">ترجمہ کریں</translation>
 <translation id="6839929833149231406">علاقہ</translation>
+<translation id="6846340164947227603">ورچوئل کارڈ نمبر استعمال کریں...</translation>
 <translation id="6852204201400771460">ایپ دوبارہ لوڈ کریں؟</translation>
 <translation id="6865412394715372076">ابھی اس کارڈ کی توثیق نہیں کی جا سکتی</translation>
 <translation id="6868206169573555318">اپ ڈیٹ کرنے کیلئے دوبارہ شروع کریں</translation>
@@ -1225,6 +1241,7 @@
 <translation id="6989763994942163495">جدید ترین ترتیبات دکھائیں…</translation>
 <translation id="6993898126790112050">6x9 ‎(Envelope‎)‎</translation>
 <translation id="6996312675313362352"><ph name="ORIGINAL_LANGUAGE" /> کا ہمیشہ ترجمہ کریں</translation>
+<translation id="7004583254764674281">‏تیزی سے کاڈرز کی تصدیق کرنے کیلئے Windows Hello کا استعمال کریں</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">یہ چارجز ایک بار یا بار بار عائد ہوسکتے ہیں اور ہو سکتا ہے کہ واضح نہ ہوں۔</translation>
 <translation id="7029809446516969842">پاس ورڈز</translation>
@@ -1235,6 +1252,7 @@
 <translation id="7064851114919012435">رابطہ کی معلومات</translation>
 <translation id="7075452647191940183">درخواست کافی بڑی ہے</translation>
 <translation id="7079718277001814089">یہ سائٹ میلویئر پر مشتمل ہے</translation>
+<translation id="7081308185095828845">یہ خصوصیت آپ کے آلے پر دستیاب نہیں ہے</translation>
 <translation id="7087282848513945231">کاؤنٹی</translation>
 <translation id="7090678807593890770">‏<ph name="LINK" /> کو Google پر تلاش کریں</translation>
 <translation id="7108338896283013870">چھپائیں</translation>
@@ -1288,9 +1306,11 @@
 <translation id="733923710415886693">سرٹیفیکیٹ کی شفافیت کے ذریعے سرور کے سرٹیفیکیٹ کا انکشاف نہیں کیا گیا۔</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">الحاق یافتہ ہے:</translation>
+<translation id="73479065977517481">‏<ph name="ENROLLMENT_DOMAIN" /> نے آپ کے براؤزر پر Chrome انٹرپرائز صارف برائے تحفظ کو فعال کر دیا ہے۔ Chrome انٹرپرائز صارف برائے تحفظ کو آپ کے کچھ ڈیٹا تک رسائی حاصل ہے۔</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">کمانڈ لائن</translation>
 <translation id="7372973238305370288">تلاش کا نتیجہ</translation>
+<translation id="7374733840632556089">‏آپ کے آلہ پر آپ یا کسی اور کے ذریعہ انسٹال کردہ سرٹیفکیٹ کی وجہ سے یہ مسئلہ پیش آتا ہے۔ اس سرٹیفکیٹ کو نیٹ ورکس مانیٹر کرنے اور منتقطع کرنے کے استعمال کے لیے جانا جاتا ہے، اور یہ Chrome کی طرف سے قابل اعتماد نہیں ہے۔ جبکہ مانیٹرنگ کے لئے کچھ جائز حالات موجود ہیں، جیسے اسکول یا کمپنی کے نیٹ ورک پر، Chrome یقینی بنانا چاہتا ہے کہ آپ ہونے والی چیزوں سے وافق ہیں، چاہے آپ اسے روک نہیں سکتے۔ مانیٹرنگ کسی بھی براؤزر یا ایپلیکیشن میں ہو سکتی ہے جسے ویب تک رسائی حاصل ہے۔</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">میڈیا کنٹرولز</translation>
 <translation id="7378627244592794276">نہیں</translation>
@@ -1319,6 +1339,7 @@
 <translation id="7451311239929941790">اس مسئلہ کے بارے میں <ph name="BEGIN_LINK" />مزید جاننے کی<ph name="END_LINK" />۔</translation>
 <translation id="7455133967321480974">گلوبل ڈیفالٹ استعمال کریں (مسدود کریں)</translation>
 <translation id="7460618730930299168">اسکریننگ آپ کی منتخب کردہ تفصیلات سے مختلف ہے۔ جاری رکھیں؟</translation>
+<translation id="7464821087936825778">تلاش وضع سے باہر نکل رہا ہے</translation>
 <translation id="7473891865547856676">نہیں شکریہ</translation>
 <translation id="7481312909269577407">فارورڈ کریں</translation>
 <translation id="7485870689360869515">کوئی ڈیٹا نہیں ملا۔</translation>
@@ -1540,6 +1561,7 @@
 <translation id="8559762987265718583"><ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> سے ایک نجی کنکشن تشکیل نہیں دیا جا سکتا ہے کیونکہ آپ کے آلے کی تاریخ اور وقت (<ph name="DATE_AND_TIME" />) غلط ہیں۔</translation>
 <translation id="8564985650692024650">‏اگر آپ نے اپنا پاس ورڈ دیگر سائٹس پر دوبارہ استعمال کیا ہے تو Chromium آپ کو اپنا <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> پاس ورڈ ری سیٹ کرنے کی تجویز کرتا ہے۔</translation>
 <translation id="8571890674111243710">صفحہ کا <ph name="LANGUAGE" /> میں ترجمہ کیا جا رہا ہے…</translation>
+<translation id="8574899947864779331">‏تیزی سے اپنے کارڈز کی تصدیق کرنے کے لیے Touch ID استعمال کریں</translation>
 <translation id="858637041960032120">فون نمبر شامل کریں</translation>
 <translation id="860043288473659153">کارڈ کے حامل کا نام</translation>
 <translation id="8616822740383114808">اس ترتیب کو "<ph name="SETTINGS_PAGE" />" میں "<ph name="ENFORCING_SETTING" />" نافذ کرتا ہے</translation>
diff --git a/components/strings/components_strings_uz.xtb b/components/strings/components_strings_uz.xtb
index 01fe06ba..ee490c8 100644
--- a/components/strings/components_strings_uz.xtb
+++ b/components/strings/components_strings_uz.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Sahifani keyinroq yuklash</translation>
 <translation id="1015730422737071372">Qo‘shimcha ma’lumotlarni to‘ldiring</translation>
 <translation id="1021110881106174305">Qabul qilinadigan kartalar</translation>
+<translation id="1021753677514347426">Bu muammo qurilmangizda oʻrnatilgan sertifikat sababli yuz berishi ham mumkin. Bunday sertifikat ishonchli hisoblanmaydi, chunki u odatda tarmoqdagi maʼlumotlarni kuzatish va olish uchun foydalaniladi. Bunday funksiyadan ish joylarida yoki taʼlim muassasalarida foydalanishadi. Nima boʻlganda ham biz ushbu sertifikat mavjudligi haqida sizni ogohlantirmoqchimiz. Har qanday internetga ulangan brauzer yoki ilovada faoliyatni kuzatish mumkin.</translation>
 <translation id="1032854598605920125">Soat mili yo‘nalishida burish</translation>
 <translation id="1036348656032585052">O‘chirib qo‘yish</translation>
 <translation id="1038842779957582377">noma’lum ism</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Xatoliklar hisoboti olingan vaqt: <ph name="CRASH_TIME" /> (inkor qilingan yoki hali yuklanmagan)</translation>
 <translation id="1270502636509132238">Olib ketish usuli</translation>
 <translation id="1285320974508926690">Bu sayt hech qachon tarjima qilinmasin</translation>
+<translation id="1285400217480592994">Chrome orqali yuklab olinayotgan yoki yuklanayotgan fayllar tarkibini tekshirish.</translation>
 <translation id="1292701964462482250">“Kompyuteringizdagi dastur Chrome brauzerini internetga xavfsiz ulanishiga imkon bermayapti” (Faqat Windows o‘rnatilgan tizimlar uchun)</translation>
 <translation id="1294154142200295408">Buyruqlar qatori variantlari</translation>
 <translation id="129553762522093515">Yaqinda yopilganlar</translation>
@@ -283,6 +285,7 @@
 <translation id="2270484714375784793">Telefon raqami</translation>
 <translation id="2277103315734023688">Oldinga o‘tkazish</translation>
 <translation id="2283340219607151381">Manzillarni saqlash va avtomatik kiritish</translation>
+<translation id="2288422996159078444">Internetdagi harakatlaringiz (qidirayotgan soʻrovlar, ochayotgan sahifalar va boshqa amallar) kuzatuv ostida, saytlar kontenti oʻzgarishi mumkin.</translation>
 <translation id="2289385804009217824">Qirqish</translation>
 <translation id="2292556288342944218">Internet taqiqlab qo‘yilgan</translation>
 <translation id="2297722699537546652">B5 (Envelope)</translation>
@@ -435,6 +438,7 @@
 <translation id="2989742184762224133">Yuqoridan 2 ta teshik ochish</translation>
 <translation id="2991174974383378012">Veb-saytlarga ulashish</translation>
 <translation id="2991571918955627853"><ph name="SITE" /> sayti ochilmadi, chunki unda HSTS protokolidan foydalanilmoqda. Bu muammo tarmoq xatoligi yoki saytga hujumlar natijasida yuz bergan bo‘lishi mumkin. Tez orada sayt yana ishlab ketishi mumkin.</translation>
+<translation id="2996674880327704673">Google tavsiyalari</translation>
 <translation id="3005723025932146533">Saqlangan nusxani ko‘rsatish</translation>
 <translation id="3008447029300691911"><ph name="CREDIT_CARD" /> kartasining CVC kodini kiriting. Tasdiqlangandan so‘ng, kartangiz ma’lumotlari bu saytda saqlanib qoladi.</translation>
 <translation id="3010559122411665027">“<ph name="ENTRY_INDEX" />” ro‘yxat bandi: <ph name="ERROR" /></translation>
@@ -447,6 +451,7 @@
 <translation id="3060227939791841287">C9 (Envelope)</translation>
 <translation id="3061707000357573562">Xizmatni tuzatish</translation>
 <translation id="3064966200440839136">Tashqi ilova orqali to‘lash uchun inkognito rejimidan chiqib ketasiz. Davom ettirilsinmi?</translation>
+<translation id="3086579638707268289">Internetdagi faoliyatingiz kuzatuv ostida</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">Olib ketish manzilini qo‘shing</translation>
 <translation id="3105172416063519923">Obyekt identifikatori:</translation>
@@ -497,6 +502,7 @@
 <translation id="3369192424181595722">Soat xatoligi</translation>
 <translation id="337363190475750230">O‘chirib qo‘yilgan</translation>
 <translation id="3377188786107721145">Siyosatni tekshirib chiqish vaqtida xatolik yuz berdi</translation>
+<translation id="3377736046129930310">Kartalarni tezda tasdiqlash uchun ekran qulfidan foydalaning</translation>
 <translation id="3380365263193509176">Noma’lum xatolik</translation>
 <translation id="3380864720620200369">Mijoz-dastur identifikatori:</translation>
 <translation id="3387261909427947069">To‘lov usullari</translation>
@@ -660,6 +666,7 @@
 <translation id="4194250254487269611">Hozir bu kartani saqlash imkonsiz</translation>
 <translation id="4196861286325780578">&amp;Ko‘chirib o‘tkazishni qayta bajarish</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Himoya devori va antivirus sozlamalarini tekshirish<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">kirish ekrani profili</translation>
 <translation id="4215751373031079683">7x9 (Envelope)</translation>
 <translation id="4220128509585149162">Dasturning ishdan chiqishi</translation>
 <translation id="422022731706691852"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> sayti orqali firibgarlar qurilmangizga brauzer faoliyatiga xalaqit qiladigan (masalan, bosh sahifani o‘zgartiradigan yoki saytlarda reklama ko‘rsatadigan) zararli dasturlar o‘rnatishi mumkin. <ph name="BEGIN_LEARN_MORE_LINK" />Batafsil<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -742,6 +749,7 @@
 <translation id="4515275063822566619">Google hisobi (<ph name="ACCOUNT_EMAIL" />), Chrome brauzerida saqlangan karta va manzillar. Siz ularni <ph name="BEGIN_LINK" />Sozlamalar<ph name="END_LINK" /> orqali boshqarishingiz mumkin.</translation>
 <translation id="4517607026994743406">Comm-10 (Envelope)</translation>
 <translation id="4522570452068850558">Tafsilotlar</translation>
+<translation id="4524138615196389145">WebAuthn yordamida kartalaringizni tezda tasdiqlang</translation>
 <translation id="4524805452350978254">Kartalarni boshqarish</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -853,6 +861,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64 bit)</translation>
+<translation id="5121469660360593280">Chrome Enterprise foydalanuvchilarini himoyalash tizimi xavfli boʻlishi mumkin deb aniqlagan xavfsizlikka oid hodisalar haqida administratorga xabar qilib turing. Bu ochilgan sahifalarning URL manzillari, fayl nomlari yoki meta axborotlar, qurilma va Chrome foydalanuvchilari nomlaridan iborat boʻlishi mumkin.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Kartangizni tasdiqlang</translation>
 <translation id="5135404736266831032">Manzillar...</translation>
@@ -864,6 +873,7 @@
 <translation id="5159010409087891077">Sahifani inkognito rejimda ochish (⇧⌘N)</translation>
 <translation id="516920405563544094"><ph name="CREDIT_CARD" /> kartasining CVC kodini kiriting. Tasdiqlangandan so‘ng, Google hisobingizdagi bank karta maʼlumotlari bu saytda saqlanib qoladi.</translation>
 <translation id="5169827969064885044">Tashkilot hisobingiz xavf ostida va o‘g‘irlanishi mumkin. Chrome parolingizni hoziroq o‘zgartirishni tavsiya etadi.</translation>
+<translation id="5170017743895942767">Chrome Enterprise foydalanuvchilarini himoyalash tizimi</translation>
 <translation id="5171045022955879922">Qidiring yoki URL manzili kiriting</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Mahalliy kompyuter</translation>
@@ -984,6 +994,7 @@
 <translation id="5730040223043577876">Parolingizni tashkilot domenidan tashqaridagi saytda kiritgan bo‘lsangiz, uni zudlik bilan o‘zgartirishingizni tavsiya etamiz.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Kartangizni Google hisobingizda saqlang}other{Kartalaringizni Google hisobingizda saqlang}}</translation>
 <translation id="5763042198335101085">Email manzilini xatosiz kiriting</translation>
+<translation id="5763703224595565476">Brauzeringizda administrator tomonidan Chrome Enterprise foydalanuvchilarini himoyalash tizimi faollashtirildi. Chrome Enterprise foydalanuvchilarini himoyalash tizimida ayrim maʼlumotlaringizga ruxsat bor.</translation>
 <translation id="5765072501007116331">Yetkazib berish usuli va talablari bilan tanishish uchun manzilni tanlang</translation>
 <translation id="5778550464785688721">MIDI qurilmalar to‘liq boshqaruvi</translation>
 <translation id="5781136890105823427">Tajribaviy funksiya yoqildi</translation>
@@ -1063,6 +1074,7 @@
 <translation id="6094273045989040137">Izohlash</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">Google hisobingiz orqali bajargan internetdagi faoliyatingizni <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> orqali ko‘rishingiz mumkin.</translation>
+<translation id="6120179357481664955">UPI identifikatori eslab qolinsinmi?</translation>
 <translation id="6132597952260690497">Oʻrnatilgan kengaytma va plaginlar axboroti</translation>
 <translation id="6146055958333702838">Kabel ulanishlarini tekshiring, router, modem yoki boshqa tarmoq qurilmalarini o‘chirib yoqing.</translation>
 <translation id="614940544461990577">Quyidagilarni bajaring:</translation>
@@ -1077,6 +1089,7 @@
 <translation id="6221345481584921695">Google saytlar xavfsizligini tekshirish tizimi <ph name="SITE" /> saytida <ph name="BEGIN_LINK" />zararli dasturiy ta’minotlarni aniqladi<ph name="END_LINK" />. Zararli dasturlar <ph name="SUBRESOURCE_HOST" /> serveridan tarqatilmoqda. Shuni unutmangki, hatto xavfsiz saytlarda ham zararli dasturlar paydo bo‘lishi mumkin. </translation>
 <translation id="6234122620015464377">Har bir hujjat chekkasini qirqish</translation>
 <translation id="6240447795304464094">Google Pay logotipi</translation>
+<translation id="6241121617266208201">Tavsiyalarni berkitish</translation>
 <translation id="6251924700383757765">Maxfiylik siyosati</translation>
 <translation id="6254436959401408446">Sahifani ochish uchun xotira yetishmayapti</translation>
 <translation id="625755898061068298">Bu sayt uchun xavfsizlik bo‘yicha ogohlantirishlarni o‘chirib qo‘ygansiz.</translation>
@@ -1123,6 +1136,7 @@
 <translation id="6409754798200046165">Hozirgina shubhali saytda parol kiritdingiz. Chrome parolingizni hoziroq oʻzgartirishni tavsiya etadi.</translation>
 <translation id="6410264514553301377"><ph name="CREDIT_CARD" /> kartasining amal qilish muddati va CVC kodini kiriting</translation>
 <translation id="6415778972515849510">Chromium Google hisobingizni himoyalash va parolni almashtirish uchun yordam beradi.</translation>
+<translation id="6423385022588644828">Touch ID yordamida kartalaringizni tezda tasdiqlang</translation>
 <translation id="6427730057873428458">Darvozasimon taxlash</translation>
 <translation id="6433490469411711332">Aloqa ma’lumotini tahrirlash</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> serveri ulanish so‘rovini rad etdi.</translation>
@@ -1193,12 +1207,14 @@
 <translation id="6786747875388722282">Kengaytmalar</translation>
 <translation id="6790428901817661496">Ijro etish</translation>
 <translation id="679355240208270552">E’tiborsiz qoldiriladi, chunki qoidada asosiy qidiruv tizimi berilmagan</translation>
+<translation id="6794951432696553238">Windows Hello yordamida kartalaringizni tezda tasdiqlang</translation>
 <translation id="681021252041861472">Majburiy maydoncha</translation>
 <translation id="6810899417690483278">Moslashtirish identifikatori</translation>
 <translation id="6825578344716086703">Siz <ph name="DOMAIN" /> saytiga o‘tmoqchi bo‘ldingiz, lekin server bergan sertifikat ishonchsiz algoritm bilan imzolangan. Bu xavfsizlik ma’lumotlari qalbaki bo‘lishi va server o‘zini boshqa server kabi ko‘rsatayotgan bo‘lishi mumkin (bu sayt firibgarlarniki bo‘lishi ehtimoli bor).</translation>
 <translation id="6826370046007623921">Maʼlumotlarni oʻchib ketishdan saqlash</translation>
 <translation id="6831043979455480757">Tarjima</translation>
 <translation id="6839929833149231406">Tuman</translation>
+<translation id="6846340164947227603">Virtual karta raqamidan foydalanish</translation>
 <translation id="6852204201400771460">Ilova qayta yuklansinmi?</translation>
 <translation id="6865412394715372076">Hozir bu kartani tekshirib bo‘lmaydi</translation>
 <translation id="6868206169573555318">Yangilash uchun qayta ishga tushiring</translation>
@@ -1227,6 +1243,7 @@
 <translation id="6989763994942163495">Kengaytirilgan sozlamalar...</translation>
 <translation id="6993898126790112050">6x9 (Envelope)</translation>
 <translation id="6996312675313362352"><ph name="ORIGINAL_LANGUAGE" /> tilidan har doim tarjima qilinsin</translation>
+<translation id="7004583254764674281">Kartalarni tezroq tasdiqlash uchun Windows Hello ishlating</translation>
 <translation id="7012363358306927923">China UnionPay</translation>
 <translation id="7016992613359344582">To‘lov bir martalik, qayta bo‘lishi yoki umuman bo‘lmasligi ham mumkin.</translation>
 <translation id="7029809446516969842">Parollar</translation>
@@ -1237,6 +1254,7 @@
 <translation id="7064851114919012435">Aloqa ma’lumoti</translation>
 <translation id="7075452647191940183">Yuborilgan soʻrov juda katta</translation>
 <translation id="7079718277001814089">Ehtiyot bo‘ling! Bu sayt zararli.</translation>
+<translation id="7081308185095828845">Bu funksiya qurilmangizda ishlamaydi</translation>
 <translation id="7087282848513945231">Okrug</translation>
 <translation id="7090678807593890770">Google orqali qidiring: <ph name="LINK" /></translation>
 <translation id="7108338896283013870">Berkitish</translation>
@@ -1290,9 +1308,11 @@
 <translation id="733923710415886693">Sertifikatning ishonchlilik belgilari haqidagi ma’lumot server tomonidan taqdim etilmadi.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">Tasarrufidami:</translation>
+<translation id="73479065977517481">Brauzeringizda <ph name="ENROLLMENT_DOMAIN" /> tomonidan Chrome Enterprise foydalanuvchilarini himoyalash tizimi faollashtirildi. Chrome Enterprise foydalanuvchilarini himoyalash tizimida ayrim maʼlumotlaringizga ruxsat bor.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Buyruqlar qatori</translation>
 <translation id="7372973238305370288">qidiruv natijasi</translation>
+<translation id="7374733840632556089">Bu muammo qurilmangizda oʻrnatilgan sertifikat sababli yuz berishi ham mumkin. Bunday sertifikat ishonchli hisoblanmaydi, chunki u odatda tarmoqdagi maʼlumotlarni kuzatish va olish uchun foydalaniladi. Bunday funksiyadan ish joylarida yoki taʼlim muassasalarida foydalanishadi. Nima boʻlganda ham biz ushbu sertifikat mavjudligi haqida sizni ogohlantirmoqchimiz. Har qanday internetga ulangan brauzer yoki ilovada faoliyatni kuzatish mumkin.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Media boshqaruv elementlari</translation>
 <translation id="7378627244592794276">Yo‘q</translation>
@@ -1321,6 +1341,7 @@
 <translation id="7451311239929941790">Bu muammo haqidagi <ph name="BEGIN_LINK" />tafsilotlar<ph name="END_LINK" /> bilan tanishing.</translation>
 <translation id="7455133967321480974">Global birlamchi parametrdan foydalanish (Bloklash)</translation>
 <translation id="7460618730930299168">Bu seans sozlamalari siz tanlagandan farqli. Davom ettirilsinmi?</translation>
+<translation id="7464821087936825778">Qidiruv rejimidan chiqish</translation>
 <translation id="7473891865547856676">Yo‘q, rahmat</translation>
 <translation id="7481312909269577407">Oldinga</translation>
 <translation id="7485870689360869515">Ma‘lumotlar topilmadi.</translation>
@@ -1542,6 +1563,7 @@
 <translation id="8559762987265718583">Tizimdagi sana va vaqt sozlamalari (<ph name="DATE_AND_TIME" />) noto‘g‘ri bo‘lganligi sababli <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> domeni bilan havfsiz aloqa o‘rnatib bo‘lmadi.</translation>
 <translation id="8564985650692024650">Parolingizni <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> domenidan tashqaridagi saytda kiritgan bo‘lsangiz, uni zudlik bilan almashtirishingizni tavsiya etamiz.</translation>
 <translation id="8571890674111243710">Sahifa <ph name="LANGUAGE" /> tiliga o‘girilmoqda...</translation>
+<translation id="8574899947864779331">Kartalarni tezda tasdiqlash uchun Touch ID ishlating</translation>
 <translation id="858637041960032120">Raqam qo‘shing</translation>
 <translation id="860043288473659153">Karta egasining ismi</translation>
 <translation id="8616822740383114808">Bu parametr <ph name="SETTINGS_PAGE" /> sahifasida <ph name="ENFORCING_SETTING" /> tomonidan boshqariladi</translation>
diff --git a/components/strings/components_strings_zh-CN.xtb b/components/strings/components_strings_zh-CN.xtb
index bc6519e..ff6d384 100644
--- a/components/strings/components_strings_zh-CN.xtb
+++ b/components/strings/components_strings_zh-CN.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">保存网页以供日后加载</translation>
 <translation id="1015730422737071372">提供其他详细信息</translation>
 <translation id="1021110881106174305">接受的信用卡</translation>
+<translation id="1021753677514347426">此问题是由您或他人在您设备上安装的某个证书导致的。该证书已知被用于监控和拦截网络,因此不受 Chromium 信任。尽管某些情况下的监控确实是合理的(例如监控学校网络或公司网络),但 Chromium 想确保您知道自己正被监控,即使您无法改变这一事实。监控可能会发生在已联网的任何浏览器或应用中。</translation>
 <translation id="1032854598605920125">顺时针旋转</translation>
 <translation id="1036348656032585052">关闭</translation>
 <translation id="1038842779957582377">未知名称</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">崩溃报告获取时间:<ph name="CRASH_TIME" />(该报告尚未上传或已被忽略)</translation>
 <translation id="1270502636509132238">取货方式</translation>
 <translation id="1285320974508926690">一律不翻译此网站</translation>
+<translation id="1285400217480592994">扫描您在 Chrome 中下载或上传的文件的内容。</translation>
 <translation id="1292701964462482250">“您计算机上的软件导致 Chrome 无法安全地连接到网络”(仅限 Windows 计算机)</translation>
 <translation id="1294154142200295408">命令行变体</translation>
 <translation id="129553762522093515">最近关闭的标签页</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">电话号码</translation>
 <translation id="2277103315734023688">快进</translation>
 <translation id="2283340219607151381">保存并填写地址</translation>
+<translation id="2288422996159078444">您输入的任何内容、查看的任何网页或从事的任何其他网络活动都正被监视。网站上的内容可能会在您不知情的情况下遭到改动。</translation>
 <translation id="2289385804009217824">裁切</translation>
 <translation id="2292556288342944218">您被禁止访问互联网</translation>
 <translation id="2297722699537546652">B5 (Envelope)</translation>
@@ -426,6 +429,7 @@
 <translation id="2989742184762224133">双钉(顶部)</translation>
 <translation id="2991174974383378012">与网站分享</translation>
 <translation id="2991571918955627853">您目前无法访问 <ph name="SITE" />,因为此网站使用了 HSTS。网络错误和攻击通常是暂时的,因此,此网页稍后可能会恢复正常。</translation>
+<translation id="2996674880327704673">Google 提供的建议</translation>
 <translation id="3005723025932146533">显示已保存的版本</translation>
 <translation id="3008447029300691911">输入“<ph name="CREDIT_CARD" />”的银行卡验证码 (CVC)。在您确认后,您的信用卡详情将与此网站共享。</translation>
 <translation id="3010559122411665027">列表条目“<ph name="ENTRY_INDEX" />”:<ph name="ERROR" /></translation>
@@ -438,6 +442,7 @@
 <translation id="3060227939791841287">C9 (Envelope)</translation>
 <translation id="3061707000357573562">修补服务</translation>
 <translation id="3064966200440839136">将要退出隐身模式,以便通过外部应用付款。是否继续?</translation>
+<translation id="3086579638707268289">您在网络上的活动正被监控</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">添加取货地址</translation>
 <translation id="3105172416063519923">资产 ID:</translation>
@@ -488,6 +493,7 @@
 <translation id="3369192424181595722">时钟错误</translation>
 <translation id="337363190475750230">已取消配置</translation>
 <translation id="3377188786107721145">策略解析错误</translation>
+<translation id="3377736046129930310">使用“屏幕锁定”功能更快地确认银行卡</translation>
 <translation id="3380365263193509176">未知错误</translation>
 <translation id="3380864720620200369">客户端 ID:</translation>
 <translation id="3387261909427947069">付款方式</translation>
@@ -646,6 +652,7 @@
 <translation id="4194250254487269611">此刻无法保存您的信用卡信息</translation>
 <translation id="4196861286325780578">恢复移动(&amp;R)</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />检查防火墙和防病毒配置<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">登录屏幕个人资料</translation>
 <translation id="4215751373031079683">7x9 (Envelope)</translation>
 <translation id="4220128509585149162">崩溃</translation>
 <translation id="422022731706691852"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> 上的攻击者可能会试图骗您安装有损浏览体验的程序(例如更改您的主页或在您访问的网站上显示额外的广告)。<ph name="BEGIN_LEARN_MORE_LINK" />了解详情<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -728,6 +735,7 @@
 <translation id="4515275063822566619">信用卡选项和地址选项均来自 Chrome 和您的 Google 帐号 (<ph name="ACCOUNT_EMAIL" />)。您可在<ph name="BEGIN_LINK" />设置<ph name="END_LINK" />中管理这些选项。</translation>
 <translation id="4517607026994743406">Comm-10 (Envelope)</translation>
 <translation id="4522570452068850558">详细信息</translation>
+<translation id="4524138615196389145">从现在开始,您只需使用 WebAuthn 便能更快速地确认银行卡</translation>
 <translation id="4524805452350978254">管理卡片</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -838,6 +846,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64 位)</translation>
+<translation id="5121469660360593280">与您的管理员分享“Chrome 企业级用户保护”功能所报告的安全性事件的相关数据。这可能包括您所访网页的网址、文件名或元数据,以及您在登录设备和 Chrome 时使用的用户名。</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">验证您的银行卡</translation>
 <translation id="5135404736266831032">管理地址…</translation>
@@ -849,6 +858,7 @@
 <translation id="5159010409087891077">在新的无痕式窗口中打开网页 (⇧⌘N)</translation>
 <translation id="516920405563544094">请输入 <ph name="CREDIT_CARD" /> 的银行卡验证码 (CVC)。待您确认后,系统便会将您 Google 帐号中的信用卡详细信息共享给该网站。</translation>
 <translation id="5169827969064885044">您可能会无法再访问所属组织的帐号,或被他人盗用身份信息。Chrome 建议您立即更改密码。</translation>
+<translation id="5170017743895942767">Chrome 企业级用户保护</translation>
 <translation id="5171045022955879922">搜索或输入网址</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">本机</translation>
@@ -969,6 +979,7 @@
 <translation id="5730040223043577876">如果您在其他网站上重复使用了您的密码,Chrome 建议您重置该密码。</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{将这张卡保存在您的 Google 帐号中}other{将这些卡保存在您的 Google 帐号中}}</translation>
 <translation id="5763042198335101085">请输入有效的电子邮件地址</translation>
+<translation id="5763703224595565476">您的管理员已在您的浏览器中启用了“Chrome 企业级用户保护”功能。“Chrome 企业级用户保护”功能可以访问您的部分数据。</translation>
 <translation id="5765072501007116331">要查看递送方式和要求,请选择相应地址</translation>
 <translation id="5778550464785688721">完全控制 MIDI 设备</translation>
 <translation id="5781136890105823427">已启用实验</translation>
@@ -1048,6 +1059,7 @@
 <translation id="6094273045989040137">注释</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">您的 Google 帐号在 <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> 上可能有其他形式的浏览记录</translation>
+<translation id="6120179357481664955">还记得您的 UPI ID 吗?</translation>
 <translation id="6132597952260690497">与已安装的扩展程序和插件相关的信息</translation>
 <translation id="6146055958333702838">请检查所有网线是否都已连好,然后重新启动您可能正在使用的任何路由器、调制解调器或其他网络设备。</translation>
 <translation id="614940544461990577">请试试以下办法:</translation>
@@ -1062,6 +1074,7 @@
 <translation id="6221345481584921695">Google安全浏览功能最近在<ph name="SITE" />上<ph name="BEGIN_LINK" />检测到了恶意软件<ph name="END_LINK" />。平常非常安全的网站有时也会感染恶意软件。检测到的恶意内容来自于<ph name="SUBRESOURCE_HOST" />,这是个已知的恶意软件散布方。</translation>
 <translation id="6234122620015464377">完成每份文档后裁切</translation>
 <translation id="6240447795304464094">Google Pay 徽标</translation>
+<translation id="6241121617266208201">隐藏建议</translation>
 <translation id="6251924700383757765">隐私权政策</translation>
 <translation id="6254436959401408446">内存不足,无法打开此网页</translation>
 <translation id="625755898061068298">您已选择针对此网站停用安全警告功能。</translation>
@@ -1108,6 +1121,7 @@
 <translation id="6409754798200046165">您刚刚在一个欺骗性网站中输入了密码。Chrome 建议您立即更改密码。</translation>
 <translation id="6410264514553301377">请输入“<ph name="CREDIT_CARD" />”的到期日期和银行卡验证码 (CVC)</translation>
 <translation id="6415778972515849510">Chromium 可以帮助您保护您的 Google 帐号和更改密码。</translation>
+<translation id="6423385022588644828">从现在开始,您只需使用 Touch ID 便能更快速地确认银行卡</translation>
 <translation id="6427730057873428458">关门折</translation>
 <translation id="6433490469411711332">修改联系信息</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> 拒绝了我们的连接请求。</translation>
@@ -1178,12 +1192,14 @@
 <translation id="6786747875388722282">扩展程序</translation>
 <translation id="6790428901817661496">播放</translation>
 <translation id="679355240208270552">由于政策未启用默认搜索引擎,因此政策值已被忽略。</translation>
+<translation id="6794951432696553238">从现在开始,您只需使用 Windows Hello 便能更快速地确认银行卡</translation>
 <translation id="681021252041861472">必填字段</translation>
 <translation id="6810899417690483278">自定义 ID</translation>
 <translation id="6825578344716086703">您尝试访问的是 <ph name="DOMAIN" />,但是服务器出示的证书是使用弱签名算法(例如 SHA-1)签署的。这意味着服务器出示的安全凭据可能是伪造的,因此这可能并不是您想要访问的服务器(您可能正在与攻击者进行通信)。</translation>
 <translation id="6826370046007623921">数据泄露防护</translation>
 <translation id="6831043979455480757">翻译</translation>
 <translation id="6839929833149231406">地域</translation>
+<translation id="6846340164947227603">使用虚拟卡号…</translation>
 <translation id="6852204201400771460">要重新加载应用吗?</translation>
 <translation id="6865412394715372076">暂时无法验证此信用卡</translation>
 <translation id="6868206169573555318">重新启动以进行更新</translation>
@@ -1212,6 +1228,7 @@
 <translation id="6989763994942163495">显示高级设置...</translation>
 <translation id="6993898126790112050">6x9 (Envelope)</translation>
 <translation id="6996312675313362352">始终翻译<ph name="ORIGINAL_LANGUAGE" />内容</translation>
+<translation id="7004583254764674281">使用 Windows Hello 更快地确认银行卡</translation>
 <translation id="7012363358306927923">中国银联</translation>
 <translation id="7016992613359344582">这些费用可能只收取一次,也可能会周期性收取,而且可能不易察觉。</translation>
 <translation id="7029809446516969842">密码</translation>
@@ -1222,6 +1239,7 @@
 <translation id="7064851114919012435">联系信息</translation>
 <translation id="7075452647191940183">请求过大</translation>
 <translation id="7079718277001814089">此网站包含恶意软件</translation>
+<translation id="7081308185095828845">您的设备无法使用此功能</translation>
 <translation id="7087282848513945231">县</translation>
 <translation id="7090678807593890770">请在 Google 中搜索“<ph name="LINK" />”</translation>
 <translation id="7108338896283013870">隐藏</translation>
@@ -1275,9 +1293,11 @@
 <translation id="733923710415886693">该服务器的证书未通过证书透明度政策进行披露。</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">有无关联:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> 已在您的浏览器中启用了“Chrome 企业级用户保护”功能。“Chrome 企业级用户保护”功能可以访问您的部分数据。</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">命令行</translation>
 <translation id="7372973238305370288">搜索结果</translation>
+<translation id="7374733840632556089">此问题是由您或他人在您设备上安装的某个证书导致的。该证书已知被用于监控和拦截网络,因此不受 Chrome 信任。尽管某些情况下的监控确实是合理的(例如监控学校网络或公司网络),但 Chrome 想确保您知道自己正被监控,即使您无法改变这一事实。监控可能会发生在已联网的任何浏览器或应用中。</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">媒体控件</translation>
 <translation id="7378627244592794276">否</translation>
@@ -1306,6 +1326,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />详细了解<ph name="END_LINK" />此问题。</translation>
 <translation id="7455133967321480974">使用全局默认设置(阻止)</translation>
 <translation id="7460618730930299168">此处显示的放映时间不同于您的选择。继续?</translation>
+<translation id="7464821087936825778">正在退出搜索模式</translation>
 <translation id="7473891865547856676">不,谢谢</translation>
 <translation id="7481312909269577407">前进</translation>
 <translation id="7485870689360869515">找不到数据。</translation>
@@ -1527,6 +1548,7 @@
 <translation id="8559762987265718583">您设备的日期和时间(<ph name="DATE_AND_TIME" />)不正确,因此无法与 <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> 建立私密连接。</translation>
 <translation id="8564985650692024650">如果您在其他网站上重复使用了您的 <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> 密码,Chromium 建议您重置该密码。</translation>
 <translation id="8571890674111243710">正在将网页翻译成<ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">使用 Touch ID 更快地确认银行卡</translation>
 <translation id="858637041960032120">添加电话号码
 </translation>
 <translation id="860043288473659153">持卡人姓名</translation>
diff --git a/components/strings/components_strings_zh-HK.xtb b/components/strings/components_strings_zh-HK.xtb
index bf2a4dd..bba34333 100644
--- a/components/strings/components_strings_zh-HK.xtb
+++ b/components/strings/components_strings_zh-HK.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">稍後載入網頁</translation>
 <translation id="1015730422737071372">提供額外詳情</translation>
 <translation id="1021110881106174305">接受的信用卡</translation>
+<translation id="1021753677514347426">發生這個問題是因為你或其他人在裝置上安裝了具有風險的憑證。已知這個憑證是用於監控及攔截網路資訊,且不受 Chromium 信任。雖然有部分監控屬於正當行為 (例如學校或公司網路),Chromium 仍想確保你知曉此情況,即使你無法阻止這類監控。任何存取網路的瀏覽器或應用程式都可能受到監控。</translation>
 <translation id="1032854598605920125">順時針方向旋轉</translation>
 <translation id="1036348656032585052">停用</translation>
 <translation id="1038842779957582377">不明名稱</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">當機報告擷取時間:<ph name="CRASH_TIME" /> (尚未上傳或已略過)</translation>
 <translation id="1270502636509132238">取貨方式</translation>
 <translation id="1285320974508926690">永不翻譯此網站</translation>
+<translation id="1285400217480592994">掃描你透過 Chrome 下載或上傳的檔案。</translation>
 <translation id="1292701964462482250">「您電腦上的軟件正阻止 Chrome 建立安全網絡連線」(僅限 Windows 電腦)</translation>
 <translation id="1294154142200295408">指令的變化</translation>
 <translation id="129553762522093515">最近關閉的分頁</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">電話號碼</translation>
 <translation id="2277103315734023688">向前快轉</translation>
 <translation id="2283340219607151381">儲存和填入地址</translation>
+<translation id="2288422996159078444">你輸入的內容、瀏覽的網頁或任何其他網路活動都會遭到監視,而且網站內容可能會在你不知情的情況下遭到變更。</translation>
 <translation id="2289385804009217824">修剪</translation>
 <translation id="2292556288342944218">您的互聯網存取權已被封鎖</translation>
 <translation id="2297722699537546652">B5 (信封)</translation>
@@ -426,6 +429,7 @@
 <translation id="2989742184762224133">雙釘 (頂端)</translation>
 <translation id="2991174974383378012">與其他網站分享</translation>
 <translation id="2991571918955627853">您目前無法瀏覽 <ph name="SITE" />,因為此網站使用 HSTS。網絡錯誤和攻擊行為通常是暫時性問題,所以此網頁應會在稍後回復正常。</translation>
+<translation id="2996674880327704673">Google 建議的項目</translation>
 <translation id="3005723025932146533">顯示儲存的複本</translation>
 <translation id="3008447029300691911">請輸入 <ph name="CREDIT_CARD" /> 的信用卡驗證碼 (CVC)。完成驗證後,系統會與這個網站共用您的信用卡資料。</translation>
 <translation id="3010559122411665027">清單項目「<ph name="ENTRY_INDEX" />」:<ph name="ERROR" /></translation>
@@ -438,6 +442,7 @@
 <translation id="3060227939791841287">C9 (信封)</translation>
 <translation id="3061707000357573562">修補服務</translation>
 <translation id="3064966200440839136">即將退出無痕模式,改用外部應用程式付款,要繼續嗎?</translation>
+<translation id="3086579638707268289">你的網路活動正遭到監控</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">新增取貨地址</translation>
 <translation id="3105172416063519923">資產識別碼:</translation>
@@ -490,6 +495,7 @@
 <translation id="3369192424181595722">時鐘錯誤</translation>
 <translation id="337363190475750230">已取消佈建</translation>
 <translation id="3377188786107721145">政策解析錯誤</translation>
+<translation id="3377736046129930310">使用螢幕鎖定功能更快速地確認卡片資訊</translation>
 <translation id="3380365263193509176">未知的錯誤</translation>
 <translation id="3380864720620200369">用戶端 ID:</translation>
 <translation id="3387261909427947069">付款方法</translation>
@@ -649,6 +655,7 @@
 <translation id="4194250254487269611">目前無法儲存您的信用卡</translation>
 <translation id="4196861286325780578">重做移動(&amp;R)</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />檢查防火牆和防毒軟件設定<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">登入畫面設定檔</translation>
 <translation id="4215751373031079683">7x9 (信封)</translation>
 <translation id="4220128509585149162">當機</translation>
 <translation id="422022731706691852"><ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" />上的攻擊者可能會企圖誘使您安裝妨礙瀏覽體驗的程式 (例如變更您的首頁,或在您瀏覽的網站上顯示多餘的廣告)。<ph name="BEGIN_LEARN_MORE_LINK" />瞭解詳情<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -731,6 +738,7 @@
 <translation id="4515275063822566619">信用卡和地址選項均來自 Chrome 和您的 Google 帳戶 (<ph name="ACCOUNT_EMAIL" />)。您可在「<ph name="BEGIN_LINK" />設定<ph name="END_LINK" />」中管理這些選項。</translation>
 <translation id="4517607026994743406">Comm-10 (信封)</translation>
 <translation id="4522570452068850558">詳情</translation>
+<translation id="4524138615196389145">現在就開始使用 WebAuthn,加快確認卡片的速度</translation>
 <translation id="4524805452350978254">管理付款卡</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -841,6 +849,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64 位元)</translation>
+<translation id="5121469660360593280">將 Chrome Enterprise 使用者防護功能標記的安全性事件相關資料提供給系統管理員。這些資料可能包括你造訪的網頁網址、檔案名稱或中繼資料,以及用於登入裝置和 Chrome 的使用者名稱。</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">驗證信用卡</translation>
 <translation id="5135404736266831032">管理地址…</translation>
@@ -852,6 +861,7 @@
 <translation id="5159010409087891077">在新無痕式視窗中開啟網頁 (⇧⌘N)</translation>
 <translation id="516920405563544094">請輸入 <ph name="CREDIT_CARD" /> 的信用卡驗證碼 (CVC)。確認後,您的 Google 帳戶會與這個網站共用您的信用卡資料。</translation>
 <translation id="5169827969064885044">您有可能會失去機構帳戶存取權,或會遭身份盜用。Chrome 建議您立即變更密碼。</translation>
+<translation id="5170017743895942767">Chrome Enterprise 使用者防護</translation>
 <translation id="5171045022955879922">搜尋或輸入網址</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">本機</translation>
@@ -972,6 +982,7 @@
 <translation id="5730040223043577876">如果您已在其他網站上重用密碼,Chrome 建議您重設密碼。</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{將卡儲存至您的 Google 帳戶}other{將卡儲存至您的 Google 帳戶}}</translation>
 <translation id="5763042198335101085">請輸入有效的電郵地址</translation>
+<translation id="5763703224595565476">你的系統管理員已為你的瀏覽器啟用 Chrome Enterprise 使用者防護功能。Chrome Enterprise 使用者保護功能可以存取你的部分資料。</translation>
 <translation id="5765072501007116331">如要查看送貨方式和要求,請選取一個地址</translation>
 <translation id="5778550464785688721">MIDI 裝置完整控制</translation>
 <translation id="5781136890105823427">實驗已啟用</translation>
@@ -1051,6 +1062,7 @@
 <translation id="6094273045989040137">加入註釋</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">您的 Google 帳戶在 <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> 上可能有其他形式的瀏覽記錄</translation>
+<translation id="6120179357481664955">還記得你的 UPI ID 嗎?</translation>
 <translation id="6132597952260690497">已安裝的擴充程式和外掛程式相關資料</translation>
 <translation id="6146055958333702838">檢查連接線,或重新啟動路由器、數據機或其他使用中的
     網絡裝置。</translation>
@@ -1066,6 +1078,7 @@
 <translation id="6221345481584921695">Google 安全瀏覽功能最近在 <ph name="SITE" /> 上<ph name="BEGIN_LINK" />偵測到惡意軟件<ph name="END_LINK" />。即使是平常可以安全使用的網站,有時也會被惡意軟件感染。這些惡意內容來自已知的惡意軟件散佈網站 <ph name="SUBRESOURCE_HOST" />。</translation>
 <translation id="6234122620015464377">完成每份文件後修剪</translation>
 <translation id="6240447795304464094">Google Pay 標誌</translation>
+<translation id="6241121617266208201">隱藏建議項目</translation>
 <translation id="6251924700383757765">私隱權政策</translation>
 <translation id="6254436959401408446">記憶體不足,因此無法開啟此網頁</translation>
 <translation id="625755898061068298">您已選擇關閉此網站的安全警告。</translation>
@@ -1112,6 +1125,7 @@
 <translation id="6409754798200046165">您剛才在欺詐網站上輸入了密碼。Chrome 建議您立即變更密碼。</translation>
 <translation id="6410264514553301377">請輸入 <ph name="CREDIT_CARD" /> 的到期日和信用卡驗證碼 (CVC)</translation>
 <translation id="6415778972515849510">Chromium 可助您保護 Google 帳戶並變更密碼。</translation>
+<translation id="6423385022588644828">現在就開始使用 Touch ID,加快確認卡片的速度</translation>
 <translation id="6427730057873428458">摺頁</translation>
 <translation id="6433490469411711332">編輯聯絡人資料</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> 已拒絕連線。</translation>
@@ -1182,12 +1196,14 @@
 <translation id="6786747875388722282">擴充功能</translation>
 <translation id="6790428901817661496">播放</translation>
 <translation id="679355240208270552">由於政策未啟用預設搜尋設定,因此系統已忽略政策值。</translation>
+<translation id="6794951432696553238">現在就開始使用 Windows Hello,加快確認卡片的速度</translation>
 <translation id="681021252041861472">必填欄位</translation>
 <translation id="6810899417690483278">自訂 ID</translation>
 <translation id="6825578344716086703">您曾嘗試連接至 <ph name="DOMAIN" />,但伺服器的憑證使用了防護力較弱的簽名演算法 (例如 SHA-1)。這代表伺服器提供的安全憑證可能是偽造的憑證,而此伺服器亦可能並非您的目標伺服器 (您可能正在與攻擊者通訊)。</translation>
 <translation id="6826370046007623921">資料遺失防護</translation>
 <translation id="6831043979455480757">翻譯</translation>
 <translation id="6839929833149231406">地區</translation>
+<translation id="6846340164947227603">使用虛擬卡號...</translation>
 <translation id="6852204201400771460">要重新載入應用程式嗎?</translation>
 <translation id="6865412394715372076">目前無法驗證此信用卡</translation>
 <translation id="6868206169573555318">重新啟動即可更新</translation>
@@ -1216,6 +1232,7 @@
 <translation id="6989763994942163495">顯示進階設定…</translation>
 <translation id="6993898126790112050">6x9 (信封)</translation>
 <translation id="6996312675313362352">一律翻譯<ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">使用 Windows Hello 更快速地確認卡片資訊</translation>
 <translation id="7012363358306927923">中國銀聯</translation>
 <translation id="7016992613359344582">這些費用可能是一次性或會重複收取,而收費時亦可能難以察覺。</translation>
 <translation id="7029809446516969842">密碼</translation>
@@ -1226,6 +1243,7 @@
 <translation id="7064851114919012435">聯絡人資訊</translation>
 <translation id="7075452647191940183">要求過大</translation>
 <translation id="7079718277001814089">此網站含有惡意軟件</translation>
+<translation id="7081308185095828845">你的裝置不支援這項功能</translation>
 <translation id="7087282848513945231">郡</translation>
 <translation id="7090678807593890770">請透過 Google 搜尋「<ph name="LINK" />」</translation>
 <translation id="7108338896283013870">隱藏</translation>
@@ -1279,9 +1297,11 @@
 <translation id="733923710415886693">伺服器憑證並未透過憑證透明度政策披露。</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">是否已建立關聯:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> 已為你的瀏覽器啟用 Chrome Enterprise 使用者保護功能。Chrome Enterprise 使用者保護功能可以存取你的部分資料。</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">命令列</translation>
 <translation id="7372973238305370288">搜尋結果</translation>
+<translation id="7374733840632556089">發生這個問題是因為你或其他人在裝置上安裝了具有風險的憑證。已知這個憑證是用於監控及攔截網路資訊,且不受 Chrome 信任。雖然有部分監控屬於正當行為 (例如學校或公司網路),Chrome 仍想確保你知曉此情況,即使你無法阻止這類監控。任何存取網路的瀏覽器或應用程式都可能受到監控。</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">媒體控制項</translation>
 <translation id="7378627244592794276">不需要</translation>
@@ -1310,6 +1330,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />進一步瞭解<ph name="END_LINK" />這個問題。</translation>
 <translation id="7455133967321480974">使用全域預設值 (封鎖)</translation>
 <translation id="7460618730930299168">放映的內容與您所選的不同,要繼續嗎?</translation>
+<translation id="7464821087936825778">結束搜尋模式</translation>
 <translation id="7473891865547856676">不用了,謝謝</translation>
 <translation id="7481312909269577407">向前</translation>
 <translation id="7485870689360869515">找不到任何數據。</translation>
@@ -1531,6 +1552,7 @@
 <translation id="8559762987265718583">您裝置的日期和時間 (<ph name="DATE_AND_TIME" />) 不正確,因此無法建立私人連線至 <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" />。</translation>
 <translation id="8564985650692024650">如果您已在其他網站上重用 <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> 密碼,Chromium 建議您重設密碼。</translation>
 <translation id="8571890674111243710">正在將網頁翻譯成<ph name="LANGUAGE" />…</translation>
+<translation id="8574899947864779331">使用 Touch ID 更快速地確認卡片資訊</translation>
 <translation id="858637041960032120">新增電話號碼</translation>
 <translation id="860043288473659153">持卡人姓名</translation>
 <translation id="8616822740383114808">此設定由「<ph name="ENFORCING_SETTING" />」在「<ph name="SETTINGS_PAGE" />」強制執行</translation>
diff --git a/components/strings/components_strings_zh-TW.xtb b/components/strings/components_strings_zh-TW.xtb
index c29d71e..c2da8e6 100644
--- a/components/strings/components_strings_zh-TW.xtb
+++ b/components/strings/components_strings_zh-TW.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">稍後再載入頁面</translation>
 <translation id="1015730422737071372">提供其他詳細資訊</translation>
 <translation id="1021110881106174305">接受的信用卡</translation>
+<translation id="1021753677514347426">發生這個問題是因為你或其他人在裝置上安裝了具有風險的憑證。已知這個憑證是用於監控及攔截網路資訊,且不受 Chromium 信任。雖然有部分監控屬於正當行為 (例如學校或公司網路),Chromium 仍想確保你知曉此情況,即使你無法阻止這類監控。任何存取網路的瀏覽器或應用程式都可能受到監控。</translation>
 <translation id="1032854598605920125">順時針旋轉</translation>
 <translation id="1036348656032585052">關閉</translation>
 <translation id="1038842779957582377">不明名稱</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">當機報告擷取時間:<ph name="CRASH_TIME" /> (尚未上傳或略過)</translation>
 <translation id="1270502636509132238">取件方式</translation>
 <translation id="1285320974508926690">一律不翻譯此網站</translation>
+<translation id="1285400217480592994">掃描你透過 Chrome 下載或上傳的檔案。</translation>
 <translation id="1292701964462482250">「你的電腦上有軟體阻止 Chrome 建立安全的網路連線」(僅限 Windows 電腦)</translation>
 <translation id="1294154142200295408">命令列變化版本</translation>
 <translation id="129553762522093515">最近關閉的分頁</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">電話號碼</translation>
 <translation id="2277103315734023688">快轉</translation>
 <translation id="2283340219607151381">儲存及填入地址</translation>
+<translation id="2288422996159078444">你輸入的內容、瀏覽的網頁或任何其他網路活動都會遭到監視,而且網站內容可能會在你不知情的情況下遭到變更。</translation>
 <translation id="2289385804009217824">裁切</translation>
 <translation id="2292556288342944218">您的網際網路存取權遭到封鎖</translation>
 <translation id="2297722699537546652">B5 (信封)</translation>
@@ -426,6 +429,7 @@
 <translation id="2989742184762224133">雙釘 (頂端)</translation>
 <translation id="2991174974383378012">與網站分享</translation>
 <translation id="2991571918955627853">目前無法造訪 <ph name="SITE" />,因為這個網站使用 HSTS。網路錯誤和攻擊行為通常是暫時性的,因此這個網頁可能稍後就會恢復正常狀態。</translation>
+<translation id="2996674880327704673">Google 建議的項目</translation>
 <translation id="3005723025932146533">顯示儲存的複本</translation>
 <translation id="3008447029300691911">請輸入 <ph name="CREDIT_CARD" /> 的信用卡安全碼。完成驗證後,這個網站就會取得您的信用卡詳細資訊。</translation>
 <translation id="3010559122411665027">清單項目「<ph name="ENTRY_INDEX" />」:<ph name="ERROR" /></translation>
@@ -438,6 +442,7 @@
 <translation id="3060227939791841287">C9 (信封)</translation>
 <translation id="3061707000357573562">修補服務</translation>
 <translation id="3064966200440839136">即將離開無痕模式,改為使用外部應用程式付款,要繼續嗎?</translation>
+<translation id="3086579638707268289">你的網路活動正遭到監控</translation>
 <translation id="3095940652251934233">Statement</translation>
 <translation id="3096100844101284527">新增取件地址</translation>
 <translation id="3105172416063519923">資產 ID:</translation>
@@ -490,6 +495,7 @@
 <translation id="3369192424181595722">時鐘錯誤</translation>
 <translation id="337363190475750230">已取消佈建</translation>
 <translation id="3377188786107721145">政策解析錯誤</translation>
+<translation id="3377736046129930310">使用螢幕鎖定功能更快速地確認卡片資訊</translation>
 <translation id="3380365263193509176">未知的錯誤</translation>
 <translation id="3380864720620200369">用戶端 ID:</translation>
 <translation id="3387261909427947069">付款方式</translation>
@@ -650,6 +656,7 @@
 <translation id="4194250254487269611">目前無法儲存你的信用卡</translation>
 <translation id="4196861286325780578">重做移動(&amp;R)</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />檢查防火牆和防毒軟體設定<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">登入畫面設定檔</translation>
 <translation id="4215751373031079683">7x9 (信封)</translation>
 <translation id="4220128509585149162">當機</translation>
 <translation id="422022731706691852">攻擊者可能會試圖透過 <ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> 誘使你安裝對瀏覽體驗有害 (例如變更你的首頁,或是在你造訪的網站上顯示多餘的廣告) 的程式。<ph name="BEGIN_LEARN_MORE_LINK" />瞭解詳情<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -732,6 +739,7 @@
 <translation id="4515275063822566619">信用卡和地址資訊皆來自 Chrome 和你的 Google 帳戶 (<ph name="ACCOUNT_EMAIL" />)。你可以在<ph name="BEGIN_LINK" />設定<ph name="END_LINK" />頁面管理這些資訊。</translation>
 <translation id="4517607026994743406">Comm-10 (信封)</translation>
 <translation id="4522570452068850558">詳細資訊</translation>
+<translation id="4524138615196389145">現在就開始使用 WebAuthn,加快確認卡片的速度</translation>
 <translation id="4524805452350978254">管理卡片</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Flash</translation>
@@ -842,6 +850,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64 位元)</translation>
+<translation id="5121469660360593280">將 Chrome Enterprise 使用者防護功能標記的安全性事件相關資料提供給系統管理員。這些資料可能包括你造訪的網頁網址、檔案名稱或中繼資料,以及用於登入裝置和 Chrome 的使用者名稱。</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">請驗證卡片</translation>
 <translation id="5135404736266831032">管理地址...</translation>
@@ -853,6 +862,7 @@
 <translation id="5159010409087891077">在新的無痕式視窗中開啟網頁 (⇧ + ⌘ + N 鍵)</translation>
 <translation id="516920405563544094">請輸入 <ph name="CREDIT_CARD" /> 的信用卡安全碼。經你確認後,這個網站就會取得你的 Google 帳戶中的信用卡詳細資料。</translation>
 <translation id="5169827969064885044">你可能會失去貴機構帳戶的存取權,或身分遭到冒用。Chrome 建議你立即變更密碼。</translation>
+<translation id="5170017743895942767">Chrome Enterprise 使用者防護</translation>
 <translation id="5171045022955879922">搜尋或輸入網址</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">本機</translation>
@@ -973,6 +983,7 @@
 <translation id="5730040223043577876">如果你在其他網站上重複使用過你的密碼,Chrome 會建議你重設密碼。</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{將卡片儲存到你的 Google 帳戶}other{將卡片儲存到你的 Google 帳戶}}</translation>
 <translation id="5763042198335101085">請輸入有效的電子郵件地址</translation>
+<translation id="5763703224595565476">你的系統管理員已為你的瀏覽器啟用 Chrome Enterprise 使用者防護功能。Chrome Enterprise 使用者保護功能可以存取你的部分資料。</translation>
 <translation id="5765072501007116331">如要查看快遞方式和相關規定,請選取一個地址</translation>
 <translation id="5778550464785688721">MIDI 裝置完整控制</translation>
 <translation id="5781136890105823427">實驗已啟用</translation>
@@ -1052,6 +1063,7 @@
 <translation id="6094273045989040137">註解</translation>
 <translation id="6104072995492677441">JIS B6</translation>
 <translation id="610911394827799129">你的 Google 帳戶仍可能保留了其他類型的瀏覽記錄 (可前往 <ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" /> 查詢)。</translation>
+<translation id="6120179357481664955">還記得你的 UPI ID 嗎?</translation>
 <translation id="6132597952260690497">已安裝的擴充功能和外掛程式相關資訊</translation>
 <translation id="6146055958333702838">檢查您的網路線是否穩固連接。重新啟動您可能正在使用的任何路由器、
     數據機或其他網路裝置。</translation>
@@ -1067,6 +1079,7 @@
 <translation id="6221345481584921695">Google 安全瀏覽功能最近在 <ph name="SITE" /> 上<ph name="BEGIN_LINK" />偵測到惡意軟體<ph name="END_LINK" />。即使是平常可以安全使用的網站,有時也會遭到惡意軟體感染。這些惡意內容來自已知的惡意軟體散佈網站 <ph name="SUBRESOURCE_HOST" />。</translation>
 <translation id="6234122620015464377">完成每份文件後裁切</translation>
 <translation id="6240447795304464094">Google Pay 標誌</translation>
+<translation id="6241121617266208201">隱藏建議項目</translation>
 <translation id="6251924700383757765">隱私權政策</translation>
 <translation id="6254436959401408446">記憶體不足,無法開啟這個網頁</translation>
 <translation id="625755898061068298">你已選擇針對這個網站停用安全性警告功能。</translation>
@@ -1113,6 +1126,7 @@
 <translation id="6409754798200046165">你剛才在詐騙網站上輸入了密碼。Chrome 建議你立即變更密碼。</translation>
 <translation id="6410264514553301377">輸入 <ph name="CREDIT_CARD" /> 的到期日和信用卡安全碼</translation>
 <translation id="6415778972515849510">Chromium 可協助你保護 Google 帳戶並變更密碼。</translation>
+<translation id="6423385022588644828">現在就開始使用 Touch ID,加快確認卡片的速度</translation>
 <translation id="6427730057873428458">開門摺</translation>
 <translation id="6433490469411711332">編輯聯絡資訊</translation>
 <translation id="6433595998831338502"><ph name="HOST_NAME" /> 拒絕連線。</translation>
@@ -1183,12 +1197,14 @@
 <translation id="6786747875388722282">擴充功能</translation>
 <translation id="6790428901817661496">播放</translation>
 <translation id="679355240208270552">由於政策未啟用預設搜尋設定,因此遭到忽略。</translation>
+<translation id="6794951432696553238">現在就開始使用 Windows Hello,加快確認卡片的速度</translation>
 <translation id="681021252041861472">必填欄位</translation>
 <translation id="6810899417690483278">自訂 ID</translation>
 <translation id="6825578344716086703">你嘗試連上 <ph name="DOMAIN" />,但伺服器的憑證是以防護力薄弱的簽章演算法 (例如 SHA-1) 進行簽署。這代表伺服器提供的安全性憑證可能遭到偽造,而且這個伺服器可能並不是你的目標伺服器 (你的連線對象可能是攻擊者的電腦)。</translation>
 <translation id="6826370046007623921">資料遺失防護</translation>
 <translation id="6831043979455480757">翻譯</translation>
 <translation id="6839929833149231406">區域</translation>
+<translation id="6846340164947227603">使用虛擬卡號...</translation>
 <translation id="6852204201400771460">要重新載入應用程式嗎?</translation>
 <translation id="6865412394715372076">目前無法驗證這張信用卡</translation>
 <translation id="6868206169573555318">重新啟動即可更新</translation>
@@ -1217,6 +1233,7 @@
 <translation id="6989763994942163495">顯示進階設定...</translation>
 <translation id="6993898126790112050">6x9 (信封)</translation>
 <translation id="6996312675313362352">一律翻譯<ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">使用 Windows Hello 更快速地確認卡片資訊</translation>
 <translation id="7012363358306927923">中國銀聯</translation>
 <translation id="7016992613359344582">這些費用可能只收取一次,也可能屬於週期性費用,而且你不一定會注意到自己需要付費。</translation>
 <translation id="7029809446516969842">密碼</translation>
@@ -1227,6 +1244,7 @@
 <translation id="7064851114919012435">聯絡資訊</translation>
 <translation id="7075452647191940183">要求過大</translation>
 <translation id="7079718277001814089">這個網站含有惡意軟體</translation>
+<translation id="7081308185095828845">你的裝置不支援這項功能</translation>
 <translation id="7087282848513945231">郡/縣</translation>
 <translation id="7090678807593890770">請透過 Google 搜尋「<ph name="LINK" />」</translation>
 <translation id="7108338896283013870">隱藏</translation>
@@ -1280,9 +1298,11 @@
 <translation id="733923710415886693">伺服器憑證未依憑證透明化政策公開。</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">是否已建立關聯:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> 已為你的瀏覽器啟用 Chrome Enterprise 使用者保護功能。Chrome Enterprise 使用者保護功能可以存取你的部分資料。</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">命令列</translation>
 <translation id="7372973238305370288">搜尋結果</translation>
+<translation id="7374733840632556089">發生這個問題是因為你或其他人在裝置上安裝了具有風險的憑證。已知這個憑證是用於監控及攔截網路資訊,且不受 Chrome 信任。雖然有部分監控屬於正當行為 (例如學校或公司網路),Chrome 仍想確保你知曉此情況,即使你無法阻止這類監控。任何存取網路的瀏覽器或應用程式都可能受到監控。</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">媒體控制項</translation>
 <translation id="7378627244592794276">不需要</translation>
@@ -1311,6 +1331,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />進一步瞭解<ph name="END_LINK" />這個問題。</translation>
 <translation id="7455133967321480974">使用全域預設值 (封鎖)</translation>
 <translation id="7460618730930299168">放映場次細節與你所選取的不同。要繼續嗎?</translation>
+<translation id="7464821087936825778">結束搜尋模式</translation>
 <translation id="7473891865547856676">不用了,謝謝</translation>
 <translation id="7481312909269577407">往前</translation>
 <translation id="7485870689360869515">找不到任何資料。</translation>
@@ -1532,6 +1553,7 @@
 <translation id="8559762987265718583">你裝置的日期和時間 (<ph name="DATE_AND_TIME" />) 不正確,因此無法與 <ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> 建立私人連線。</translation>
 <translation id="8564985650692024650">如果你在其他網站上重複使用過你的 <ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> 密碼,Chromium 會建議你重設密碼。</translation>
 <translation id="8571890674111243710">正在將網頁翻譯成<ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">使用 Touch ID 更快速地確認卡片資訊</translation>
 <translation id="858637041960032120">新增電話號碼</translation>
 <translation id="860043288473659153">持卡人姓名</translation>
 <translation id="8616822740383114808">這項設定由「<ph name="ENFORCING_SETTING" />」在「<ph name="SETTINGS_PAGE" />」強制執行</translation>
diff --git a/components/strings/components_strings_zu.xtb b/components/strings/components_strings_zu.xtb
index 08dc64a..f355deb 100644
--- a/components/strings/components_strings_zu.xtb
+++ b/components/strings/components_strings_zu.xtb
@@ -5,6 +5,7 @@
 <translation id="1010200102790553230">Layisha ikhasi kamuva</translation>
 <translation id="1015730422737071372">Nikeza imininingwane engeziwe</translation>
 <translation id="1021110881106174305">Amakhadi amukelwe</translation>
+<translation id="1021753677514347426">Le nkinga yenzeka ngenxa yesitifiketi noma othile ufake kudivayisi yakho. Isitifiketi saziwa ngokusetshenziswa ukwengamela amanethiwekhi e-intercept, futhi asithembekile ku-Chromium. Ngenkathi ezinye izimo zokufinyelela zokwengamela zikhona, njengasesikoleni noma inethiwekhi yenkmpani, i-Chromium ifuna ukuqinisekisa ukuthi uyaqaphela ukuthi lokhu kuyenzeka, ngisho noma ungeke ukwazi ukukumisa. Ukwengamela kungenzeka kunoma isiphi isiphequluli noma uhlelo lokusebenza olufinyelela iwebhu.</translation>
 <translation id="1032854598605920125">Zungezisa ngokulandela iwashi</translation>
 <translation id="1036348656032585052">Vala</translation>
 <translation id="1038842779957582377">igama elingaziwa</translation>
@@ -67,6 +68,7 @@
 <translation id="1264126396475825575">Umbiko wokusaphazeka uthwetshulwe nge-<ph name="CRASH_TIME" /> (akulayishiwe okwamanje noma kuzitshiwe)</translation>
 <translation id="1270502636509132238">Indlela yokulandwa</translation>
 <translation id="1285320974508926690">Ungalokothi uhumushe leli sayithi</translation>
+<translation id="1285400217480592994">Skena okuqukethwe kwamafayela owalandayo noma owalayishayo ku-Chrome.</translation>
 <translation id="1292701964462482250">"Isofthiwe kukhompuyutha yakho imisa i-Chrome kusukela ekuxhumekeni ngokuphepha kuwebhu" (Amakhompyutha e-Windows kuphela)</translation>
 <translation id="1294154142200295408">Ukuhluka komugqa womyalo</translation>
 <translation id="129553762522093515">Ivalwe kamuva nje</translation>
@@ -284,6 +286,7 @@
 <translation id="2270484714375784793">Inombolo yefoni</translation>
 <translation id="2277103315734023688">Funela phambili</translation>
 <translation id="2283340219607151381">Londoloza futhi ugcwalise amakheli</translation>
+<translation id="2288422996159078444">Noma yini oyithayiphayo, noma imaphi amakhasi owabukayo, noma imuphi umsebenzi kuwebhu obukwayo. Okuqukethwe kumasayithi kungashintshwa ngaphandle kolwazi lwakho.</translation>
 <translation id="2289385804009217824">Lungisa</translation>
 <translation id="2292556288342944218">Ukufinyelela kwakho ku-inthanethi kuvinjiwe</translation>
 <translation id="2297722699537546652">B5 (Envelope)</translation>
@@ -436,6 +439,7 @@
 <translation id="2989742184762224133">Ukunamathisela okubili phezulu</translation>
 <translation id="2991174974383378012">Yabelana namawebhusayithi</translation>
 <translation id="2991571918955627853">Awukwazi ukuvakashela i-<ph name="SITE" /> okwamanje ngoba amawebhusayithi asebenzisa i-HSTS. Amaphutha enethiwekhi nokuhlasela kuvale ukuba okwesikhashana, ngakho-ke leli khasi lizosebenza kamuva.</translation>
+<translation id="2996674880327704673">Iziphakamiso nge-Google</translation>
 <translation id="3005723025932146533">Bonisa ikhophi elondoloziwe</translation>
 <translation id="3008447029300691911">Faka i-CVC ye-<ph name="CREDIT_CARD" />. Uma usuqinisekile, imininingwane yekhadi lakho izokwabiwa naleli sayithi.</translation>
 <translation id="3010559122411665027">Ukufakwa kuhlu kwe-"<ph name="ENTRY_INDEX" />": <ph name="ERROR" /></translation>
@@ -448,6 +452,7 @@
 <translation id="3060227939791841287">C9 (Envelope)</translation>
 <translation id="3061707000357573562">Isevisi yepeshi</translation>
 <translation id="3064966200440839136">Ushiya imodi ye-incognito ukuze udlale ngohlelo lokusebenza lwangaphandle. Qhubeka?</translation>
+<translation id="3086579638707268289">Umsebenzi wakho kuwebhu uyangamelwa</translation>
 <translation id="3095940652251934233">Isitatimende</translation>
 <translation id="3096100844101284527">Engeza ikheli lokulandwa</translation>
 <translation id="3105172416063519923">I-ID yefa:</translation>
@@ -498,6 +503,7 @@
 <translation id="3369192424181595722">Iphutha lewashi</translation>
 <translation id="337363190475750230">Iyekiswe ukunikezwa</translation>
 <translation id="3377188786107721145">Iphutha lokuncozula inqubomgomo</translation>
+<translation id="3377736046129930310">Sebenzisa ukukhiya kwesikrini ukuze uqinisekise amakhadi ngokushesha</translation>
 <translation id="3380365263193509176">Iphutha elingaziwa</translation>
 <translation id="3380864720620200369">I-ID yeklayenti:</translation>
 <translation id="3387261909427947069">Izindlela zokukhokha</translation>
@@ -662,6 +668,7 @@
 <translation id="4194250254487269611">Ikhadi lakho alikwazi ukulondolozwa khona manje</translation>
 <translation id="4196861286325780578">&amp;Yenza futhi ukuhambisa</translation>
 <translation id="4203896806696719780"><ph name="BEGIN_LINK" />Ukuhlola i-firewall nokulungiswa kwesivikeli magciwane<ph name="END_LINK" /></translation>
+<translation id="4214357935346142455">iphrofayela yesikrini sokungena ngemvume</translation>
 <translation id="4215751373031079683">7x9 (Envelope)</translation>
 <translation id="4220128509585149162">Ukuphahlazeka</translation>
 <translation id="422022731706691852">Abahlaseli ku-<ph name="BEGIN_BOLD" /><ph name="SITE" /><ph name="END_BOLD" /> bangazama ukukukhohlisa ukuthi ufake izinhlelo ezilimaza umuzwa wakho wokuphequlula (isibonelo, ngokushintsha ikhasi lakho lasekhaya noma ukubonisa izelula ezingeziwe kumasayithi owavakashelayo). <ph name="BEGIN_LEARN_MORE_LINK" />Funda kabanzi<ph name="END_LEARN_MORE_LINK" /></translation>
@@ -744,6 +751,7 @@
 <translation id="4515275063822566619">Amakhadi namakheli avela ku-Chrome naku-akhawunti yakho ye-Google (<ph name="ACCOUNT_EMAIL" />). Ungawaphatha <ph name="BEGIN_LINK" />Kuzilungiselelo<ph name="END_LINK" />.</translation>
 <translation id="4517607026994743406">Ikholomu-10 (Envelope)</translation>
 <translation id="4522570452068850558">Imininingwane</translation>
+<translation id="4524138615196389145">Qinisekisa amakhadi wakho ngokushesha ngokusebenzisa i-WebAuthn kusuka manje</translation>
 <translation id="4524805452350978254">Phatha amakhadi</translation>
 <translation id="455113658016510503">A9</translation>
 <translation id="4552089082226364758">Ifuleshi</translation>
@@ -855,6 +863,7 @@
 <translation id="5112422516732747637">A5</translation>
 <translation id="5115216390227830982">European-Edp</translation>
 <translation id="5115563688576182185">(64-bhithi)</translation>
+<translation id="5121469660360593280">Yabelana ngedatha mayelana nemicimbi yokuphepha ezimakiwe nge-Chrome Enterprise User Protect ngomlawuli wakho. Lokhu kungafaka ama-URL amakhasi owavakashele, amagama amafayela noma ethemathada, kanye negama lomsebenzisi olisebenzisela ukungena ngfemvume kudivayisi yakho naku-Chrome.</translation>
 <translation id="5125394840236832993">B-Plus</translation>
 <translation id="5126510351761255129">Qinisekisa ikhadi lakho</translation>
 <translation id="5135404736266831032">Phatha amakheli...</translation>
@@ -866,6 +875,7 @@
 <translation id="5159010409087891077">Vula ikhasi kuwindi elisha le-incognito (⇧⌘N)</translation>
 <translation id="516920405563544094">Faka i-CVC ye-<ph name="CREDIT_CARD" />. Ngemuva kokuqinisekisa, imininingwane yekhadi kusuka ku-akhawunti yakho ye-Google izokwabiwa naleli sayithi.</translation>
 <translation id="5169827969064885044">Ungalahlekelwa ukufinyelela ku-akhawunti yenhlangano yakho noma uzwe ukuntshontshwa kobunikazi. I-Chrome incoma ukushintsha iphasiwedi yakho manje.</translation>
+<translation id="5170017743895942767">I-Chrome Enterprise User Protect</translation>
 <translation id="5171045022955879922">Sesha noma thayipha i-URL</translation>
 <translation id="5171689220826475070">Fanfold-European</translation>
 <translation id="5172758083709347301">Umshini</translation>
@@ -986,6 +996,7 @@
 <translation id="5730040223043577876">I-Chrome incoma ukusetha kabusha iphasiwedi yakho uma uphinde wayisebenzisa kwamanye amasayithi.</translation>
 <translation id="5737183892635480227">{NUM_CARDS,plural, =1{Londoloza ikhadi ku-akhawunti yakho ye-Google}one{Londoloza amakhadi ku-akhawunti yakho ye-Google}other{Londoloza amakhadi ku-akhawunti yakho ye-Google}}</translation>
 <translation id="5763042198335101085">Faka ikheli le-imeyili elivumelekile</translation>
+<translation id="5763703224595565476">Umlawuli wakho unikwe amandla ku-Chrome Enterprise User Protect kusiphequluli sakho. I-Chrome Enterprise User Protect inokufinyelela kwenye idatha yakho.</translation>
 <translation id="5765072501007116331">Ukuze ubone izindlela zokulethwa nezidingo, khetha ikheli</translation>
 <translation id="5778550464785688721">Ukulawula okugcwele kwamadivayisi we-MIDI</translation>
 <translation id="5781136890105823427">Ukuhlolwa kunikwe amandla</translation>
@@ -1065,6 +1076,7 @@
 <translation id="6094273045989040137">Chasisa</translation>
 <translation id="6104072995492677441">I-JIS B6</translation>
 <translation id="610911394827799129">I-akhawunti yakho ye-Google ingaba namanye amafomu omlando wokuphequlula ku-<ph name="BEGIN_LINK" />myactivity.google.com<ph name="END_LINK" />.</translation>
+<translation id="6120179357481664955">Khumbula i-UPI ID yakho?</translation>
 <translation id="6132597952260690497">Ulwazi olumayelana nezandiso ezifakiwe nama-plugin</translation>
 <translation id="6146055958333702838">Hlola noma yiziphi izintambo uphinde uqalise kabusha kunoma yimiphi imizila, amamodemu, noma amanye amadivayisi
         wenethiwekhi okungahle ukuthi uyawasebenzisa.</translation>
@@ -1080,6 +1092,7 @@
 <translation id="6221345481584921695">Kamuva nje Ukuphequlula Okuphephile kwe-Google <ph name="BEGIN_LINK" />kuthole i-malware<ph name="END_LINK" /> ku-<ph name="SITE" />. Ngokuvamile amawebhusayithi aphephile ngezinye izikhathi afakwa i-malware. Okuqukethwe okunonya kusuka ku-<ph name="SUBRESOURCE_HOST" />, isisabalalisi esaziwayo se-malware.</translation>
 <translation id="6234122620015464377">Sika ngemuva kwedokhumenti ngalinye</translation>
 <translation id="6240447795304464094">Ilogo ye-Google Pay</translation>
+<translation id="6241121617266208201">Fihla iziphakamiso</translation>
 <translation id="6251924700383757765">Inqubomgomo yobumfihlo</translation>
 <translation id="6254436959401408446">Ayikho imemori eyanele ukuvula leli khasi</translation>
 <translation id="625755898061068298">Ukhethe ukukhubaza izexwayiso zokuvikela zaleli sayithi.</translation>
@@ -1126,6 +1139,7 @@
 <translation id="6409754798200046165">Usanda kufaka iphasiwedi yakho kusayithi elikhohlisayo. I-Chrome incoma ukushintsha iphasiwedi yakho manje.</translation>
 <translation id="6410264514553301377">Faka idethi yokuphelelwa isikhathi ne-CVC ye-<ph name="CREDIT_CARD" /></translation>
 <translation id="6415778972515849510">I-Chromium ingakusiza ukuthi uvikele i-akhawunti yakho ye-Google uphinde uguqule iphasiwedi yakho.</translation>
+<translation id="6423385022588644828">Qinisekisa amakhadi akho ngokushesha ngokusebenzisa i-Touch ID kusuka manje</translation>
 <translation id="6427730057873428458">Ukugoqa kwesango</translation>
 <translation id="6433490469411711332">Hlela ulwazi loxhumana naye</translation>
 <translation id="6433595998831338502">I-<ph name="HOST_NAME" /> inqabe ukuxhumeka.</translation>
@@ -1196,12 +1210,14 @@
 <translation id="6786747875388722282">Izandiso</translation>
 <translation id="6790428901817661496">Dlala</translation>
 <translation id="679355240208270552">Kuzithsiwe ngoba usesho oluzenzakalelayo alinikiwe amandla inqubomgomo.</translation>
+<translation id="6794951432696553238">Qinisekisa amakhad akho ngokushesha ngokusebenzisa i-Windows Hello kusuka manje</translation>
 <translation id="681021252041861472">Inkambu edingekile</translation>
 <translation id="6810899417690483278">Yenza ngezfiso i-ID</translation>
 <translation id="6825578344716086703">Uzame ukufika ku-<ph name="DOMAIN" />, kodwa iseva iphrezente isitifiketi esisayiniwe kusetshenziswa i-algorithm yesiginesha ebuthaka. Lokhu kusho ukuthi izifakazelo zokuvikela eziphrezentwe yiseva kungenzeka zenziwe ngomkhonyovu, futhi iseva kungenzeka kungabi yiseva oyilindele (kungenzeka ukuthi uxhumeka nomhlaseli).</translation>
 <translation id="6826370046007623921">Ukunqandwa Kokulahleka Kwedatha</translation>
 <translation id="6831043979455480757">Humusha</translation>
 <translation id="6839929833149231406">Indawo</translation>
+<translation id="6846340164947227603">Sebenzisa inombolo yekhadi yokubuka...</translation>
 <translation id="6852204201400771460">Layisha kabusha uhlelo lokusebenza?</translation>
 <translation id="6865412394715372076">Leli khadi alikwazi ukuqinisekiswa khona manje</translation>
 <translation id="6868206169573555318">Qalisa kabusha isibuyekezo</translation>
@@ -1230,6 +1246,7 @@
 <translation id="6989763994942163495">Bonisa izilungiselelo ezithuthukisiwe...</translation>
 <translation id="6993898126790112050">6x9 (Envelope)</translation>
 <translation id="6996312675313362352">Hlala uhumusha isi-<ph name="ORIGINAL_LANGUAGE" /></translation>
+<translation id="7004583254764674281">Sebenzisa i-Windows Hello ukuqinisekisa amkhadi ngokushesha</translation>
 <translation id="7012363358306927923">I-China UnionPay</translation>
 <translation id="7016992613359344582">Lawo mashaji angahle abe isikhathi esisodwa noma avele kaningi futhi kungenzeka angacaci.</translation>
 <translation id="7029809446516969842">Amaphasiwedi</translation>
@@ -1240,6 +1257,7 @@
 <translation id="7064851114919012435">Ulwazi loxhumana naye</translation>
 <translation id="7075452647191940183">Isicelo sikhulu kakhulu</translation>
 <translation id="7079718277001814089">Leli sayithi liqukethe uhlelo olungayilungele ikhompyutha</translation>
+<translation id="7081308185095828845">Lesi sici asitholakali kudivayisi yakho</translation>
 <translation id="7087282848513945231">Izwe</translation>
 <translation id="7090678807593890770">Sesha i-Google nge-<ph name="LINK" /></translation>
 <translation id="7108338896283013870">Fihla</translation>
@@ -1293,9 +1311,11 @@
 <translation id="733923710415886693">Isitifiketi seseva asizange sidalulwe ngokubonisa ngale kwesitifiketi.</translation>
 <translation id="734600844861828519">11x15</translation>
 <translation id="7346048084945669753">Iyinxusa:</translation>
+<translation id="73479065977517481"><ph name="ENROLLMENT_DOMAIN" /> inike amandla i-Chrome Enterprise User Protect kusiphequluli sakho. I-Chrome Enterprise User Protect inokufinyelela kwenye idatha yakho.</translation>
 <translation id="7349430561505560861">A4-Extra</translation>
 <translation id="7353601530677266744">Umugqa womyalo</translation>
 <translation id="7372973238305370288">umphumela wosesho</translation>
+<translation id="7374733840632556089">Le nkinga yenzeka ngenxa yesitifiketi noma othile ufake kudivayisi yakho. Isitifiketi saziwa ngokusetshenziswa ukwengamela amanethiwekhi e-intercept, futhi asithembekile ku-Chrome. Ngenkathi ezinye izimo zokufinyelela zokwengamela zikhona, njengasesikoleni noma inethiwekhi yenkmpani, i-Chrome ifuna ukuqinisekisa ukuthi uyaqaphela ukuthi lokhu kuyenzeka, ngisho noma ungeke ukwazi ukukumisa. Ukwengamela kungenzeka kunoma isiphi isiphequluli noma uhlelo lokusebenza olufinyelela iwebhu.</translation>
 <translation id="7377249249140280793"><ph name="RELATIVE_DATE" /> - <ph name="FULL_DATE" /></translation>
 <translation id="7378594059915113390">Izilawuli zemidiya</translation>
 <translation id="7378627244592794276">Cha</translation>
@@ -1324,6 +1344,7 @@
 <translation id="7451311239929941790"><ph name="BEGIN_LINK" />Ifunda kabanzi<ph name="END_LINK" /> mayelana nale nkinga.</translation>
 <translation id="7455133967321480974">Sebenzisa okuzenzakalelayo komhlaba (Vimba)</translation>
 <translation id="7460618730930299168">ukuskrina kuhlukile kusukela kulokho okukhethile. Qhubeka?</translation>
+<translation id="7464821087936825778">Ukuphuma kwemodi yosesho</translation>
 <translation id="7473891865547856676">Cha ngiyabonga</translation>
 <translation id="7481312909269577407">Dlulisela</translation>
 <translation id="7485870689360869515">Ayikho idatha etholiwe.</translation>
@@ -1545,6 +1566,7 @@
 <translation id="8559762987265718583">Uxhumano oluyimfihlo oluya ku-<ph name="BEGIN_BOLD" /><ph name="DOMAIN" /><ph name="END_BOLD" /> alukwazi ukusungulwa ngoba idethi nesikhathi sedivayisi yakho (<ph name="DATE_AND_TIME" />) azilungile.</translation>
 <translation id="8564985650692024650">I-Chromium incoma ukusetha kabusha iphasiwedi yakho ye-<ph name="BEGIN_BOLD" /><ph name="ORG_NAME" /><ph name="END_BOLD" /> uma uphinde wayisebenzisa kwamanye amasayithi.</translation>
 <translation id="8571890674111243710">Ihumushela ikhasi ku-<ph name="LANGUAGE" />...</translation>
+<translation id="8574899947864779331">Sebenzisa i-Touch ID ukuqinisekisa amakhadi ngokushesha</translation>
 <translation id="858637041960032120">Engeza inombolo yefoni</translation>
 <translation id="860043288473659153">Igama lomnikazi wekhadi</translation>
 <translation id="8616822740383114808">Lesi silungiselelo siphoqelelwe i-"<ph name="ENFORCING_SETTING" />" ku-"<ph name="SETTINGS_PAGE" />"</translation>
diff --git a/components/sync/BUILD.gn b/components/sync/BUILD.gn
index 9cd3ae8b..a3f6ca3d 100644
--- a/components/sync/BUILD.gn
+++ b/components/sync/BUILD.gn
@@ -583,6 +583,7 @@
     "driver/glue/sync_engine_impl_unittest.cc",
     "driver/model_association_manager_unittest.cc",
     "driver/model_type_controller_unittest.cc",
+    "driver/passphrase_type_metrics_provider_unittest.cc",
     "driver/profile_sync_service_startup_unittest.cc",
     "driver/profile_sync_service_unittest.cc",
     "driver/shared_change_processor_unittest.cc",
@@ -683,6 +684,7 @@
     "//base",
     "//base/test:test_support",
     "//components/invalidation/impl",
+    "//components/metrics",
     "//components/os_crypt",
     "//components/os_crypt:test_support",
     "//components/prefs:test_support",
diff --git a/components/sync/base/hash_util.cc b/components/sync/base/hash_util.cc
index bacefca..f2594d80 100644
--- a/components/sync/base/hash_util.cc
+++ b/components/sync/base/hash_util.cc
@@ -37,7 +37,7 @@
     case sync_pb::AutofillWalletSpecifics::CUSTOMER_DATA:
       return specifics.customer_data().id();
     case sync_pb::AutofillWalletSpecifics::CREDIT_CARD_CLOUD_TOKEN_DATA:
-      return specifics.cloud_token_data().masked_card_id();
+      return specifics.cloud_token_data().instrument_token();
     case sync_pb::AutofillWalletSpecifics::UNKNOWN:
       NOTREACHED();
       return std::string();
diff --git a/components/sync/base/pref_names.cc b/components/sync/base/pref_names.cc
index 8968a2e..9a77d5a 100644
--- a/components/sync/base/pref_names.cc
+++ b/components/sync/base/pref_names.cc
@@ -41,7 +41,6 @@
 // OS user selectable types.
 const char kSyncOsApps[] = "sync.os_apps";
 const char kSyncOsPreferences[] = "sync.os_preferences";
-const char kSyncOsPrinters[] = "sync.os_printers";
 #endif
 
 // Booleans specifying whether the user has selected to sync the following
diff --git a/components/sync/base/pref_names.h b/components/sync/base/pref_names.h
index 3142b87..4e40b21 100644
--- a/components/sync/base/pref_names.h
+++ b/components/sync/base/pref_names.h
@@ -22,7 +22,6 @@
 extern const char kSyncAllOsTypes[];
 extern const char kSyncOsApps[];
 extern const char kSyncOsPreferences[];
-extern const char kSyncOsPrinters[];
 #endif
 
 extern const char kSyncApps[];
diff --git a/components/sync/base/sync_prefs.cc b/components/sync/base/sync_prefs.cc
index d9a834e..98bbe61 100644
--- a/components/sync/base/sync_prefs.cc
+++ b/components/sync/base/sync_prefs.cc
@@ -132,8 +132,6 @@
       return prefs::kSyncOsApps;
     case UserSelectableOsType::kOsPreferences:
       return prefs::kSyncOsPreferences;
-    case UserSelectableOsType::kPrinters:
-      return prefs::kSyncOsPrinters;
     case UserSelectableOsType::kWifiConfigurations:
       return prefs::kSyncWifiConfigurations;
   }
diff --git a/components/sync/base/user_selectable_type.cc b/components/sync/base/user_selectable_type.cc
index 956c9c86..6e942250 100644
--- a/components/sync/base/user_selectable_type.cc
+++ b/components/sync/base/user_selectable_type.cc
@@ -106,9 +106,7 @@
     case UserSelectableOsType::kOsPreferences:
       return {"osPreferences",
               OS_PREFERENCES,
-              {OS_PREFERENCES, OS_PRIORITY_PREFERENCES}};
-    case UserSelectableOsType::kPrinters:
-      return {"printers", PRINTERS, {PRINTERS}};
+              {OS_PREFERENCES, OS_PRIORITY_PREFERENCES, PRINTERS}};
     case UserSelectableOsType::kWifiConfigurations:
       return {"wifiConfigurations", WIFI_CONFIGURATIONS, {WIFI_CONFIGURATIONS}};
   }
diff --git a/components/sync/base/user_selectable_type.h b/components/sync/base/user_selectable_type.h
index c38afe6..380f5a8 100644
--- a/components/sync/base/user_selectable_type.h
+++ b/components/sync/base/user_selectable_type.h
@@ -51,7 +51,6 @@
   kFirstType = kOsApps,
 
   kOsPreferences,
-  kPrinters,
   kWifiConfigurations,
   kLastType = kWifiConfigurations
 };
diff --git a/components/sync/driver/BUILD.gn b/components/sync/driver/BUILD.gn
index edd59339..aaad9aa5 100644
--- a/components/sync/driver/BUILD.gn
+++ b/components/sync/driver/BUILD.gn
@@ -49,6 +49,8 @@
     "model_type_controller.h",
     "non_ui_syncable_service_based_model_type_controller.cc",
     "non_ui_syncable_service_based_model_type_controller.h",
+    "passphrase_type_metrics_provider.cc",
+    "passphrase_type_metrics_provider.h",
     "profile_sync_service.cc",
     "profile_sync_service.h",
     "shared_change_processor.cc",
@@ -110,6 +112,7 @@
     "//components/data_use_measurement/core",
     "//components/invalidation/impl:feature_list",
     "//components/keyed_service/core",
+    "//components/metrics",
     "//components/os_crypt",
     "//components/prefs",
     "//components/signin/public/identity_manager",
diff --git a/components/sync/driver/DEPS b/components/sync/driver/DEPS
index 41574719..d3ecea9 100644
--- a/components/sync/driver/DEPS
+++ b/components/sync/driver/DEPS
@@ -2,6 +2,7 @@
   "+chromeos/constants",
   "+components/invalidation",
   "+components/keyed_service/core",
+  "+components/metrics",
   "+components/os_crypt",
   "+components/policy",
   "+components/pref_registry",
diff --git a/components/sync/driver/model_type_controller.cc b/components/sync/driver/model_type_controller.cc
index b14e4446c..d70ec097 100644
--- a/components/sync/driver/model_type_controller.cc
+++ b/components/sync/driver/model_type_controller.cc
@@ -43,25 +43,39 @@
 
 }  // namespace
 
+ModelTypeController::ModelTypeController(ModelType type)
+    : DataTypeController(type) {}
+
 ModelTypeController::ModelTypeController(
     ModelType type,
     std::unique_ptr<ModelTypeControllerDelegate> delegate_for_full_sync_mode)
-    : DataTypeController(type) {
-  delegate_map_.emplace(SyncMode::kFull,
-                        std::move(delegate_for_full_sync_mode));
+    : ModelTypeController(type) {
+  InitModelTypeController(std::move(delegate_for_full_sync_mode), nullptr);
 }
 
 ModelTypeController::ModelTypeController(
     ModelType type,
     std::unique_ptr<ModelTypeControllerDelegate> delegate_for_full_sync_mode,
     std::unique_ptr<ModelTypeControllerDelegate> delegate_for_transport_mode)
-    : ModelTypeController(type, std::move(delegate_for_full_sync_mode)) {
-  delegate_map_.emplace(SyncMode::kTransportOnly,
-                        std::move(delegate_for_transport_mode));
+    : ModelTypeController(type) {
+  InitModelTypeController(std::move(delegate_for_full_sync_mode),
+                          std::move(delegate_for_transport_mode));
 }
 
 ModelTypeController::~ModelTypeController() {}
 
+void ModelTypeController::InitModelTypeController(
+    std::unique_ptr<ModelTypeControllerDelegate> delegate_for_full_sync_mode,
+    std::unique_ptr<ModelTypeControllerDelegate> delegate_for_transport_mode) {
+  DCHECK(delegate_map_.empty());
+  delegate_map_.emplace(SyncMode::kFull,
+                        std::move(delegate_for_full_sync_mode));
+  if (delegate_for_transport_mode) {
+    delegate_map_.emplace(SyncMode::kTransportOnly,
+                          std::move(delegate_for_transport_mode));
+  }
+}
+
 std::unique_ptr<DataTypeActivationResponse>
 ModelTypeController::ActivateManuallyForNigori() {
   // To avoid abuse of this temporary API, we restrict it to NIGORI.
diff --git a/components/sync/driver/model_type_controller.h b/components/sync/driver/model_type_controller.h
index 4f29a348..feba0a8 100644
--- a/components/sync/driver/model_type_controller.h
+++ b/components/sync/driver/model_type_controller.h
@@ -28,6 +28,7 @@
 // DataTypeController implementation for Unified Sync and Storage model types.
 class ModelTypeController : public DataTypeController {
  public:
+  // For datatypes that do not run in transport-only mode.
   ModelTypeController(
       ModelType type,
       std::unique_ptr<ModelTypeControllerDelegate> delegate_for_full_sync_mode);
@@ -61,6 +62,15 @@
   void RecordMemoryUsageAndCountsHistograms() override;
 
  protected:
+  // Subclasses that use this constructor must call InitModelTypeController().
+  explicit ModelTypeController(ModelType type);
+
+  // |delegate_for_transport_mode| may be null if the type does not run in
+  // transport mode.
+  void InitModelTypeController(
+      std::unique_ptr<ModelTypeControllerDelegate> delegate_for_full_sync_mode,
+      std::unique_ptr<ModelTypeControllerDelegate> delegate_for_transport_mode);
+
   void ReportModelError(SyncError::ErrorType error_type,
                         const ModelError& error);
 
diff --git a/components/sync/driver/non_ui_syncable_service_based_model_type_controller.cc b/components/sync/driver/non_ui_syncable_service_based_model_type_controller.cc
index f0a4b649..d004905 100644
--- a/components/sync/driver/non_ui_syncable_service_based_model_type_controller.cc
+++ b/components/sync/driver/non_ui_syncable_service_based_model_type_controller.cc
@@ -8,7 +8,9 @@
 
 #include "base/bind.h"
 #include "base/memory/weak_ptr.h"
+#include "components/sync/base/model_type.h"
 #include "components/sync/model_impl/client_tag_based_model_type_processor.h"
+#include "components/sync/model_impl/forwarding_model_type_controller_delegate.h"
 #include "components/sync/model_impl/proxy_model_type_controller_delegate.h"
 #include "components/sync/model_impl/syncable_service_based_bridge.h"
 
@@ -44,6 +46,7 @@
 
   ~BridgeBuilder() { DCHECK(task_runner_->RunsTasksInCurrentSequence()); }
 
+  // Indirectly called for each operation by ProxyModelTypeControllerDelegate.
   base::WeakPtr<ModelTypeControllerDelegate> GetBridgeDelegate() {
     DCHECK(task_runner_->RunsTasksInCurrentSequence());
     DCHECK(bridge_);
@@ -120,6 +123,7 @@
                             std::move(syncable_service_provider), dump_stack,
                             task_runner),
           CustomOnTaskRunnerDeleter(task_runner));
+  // Note that the binding owns the BridgeBuilder instance.
   return base::BindRepeating(&BridgeBuilder::GetBridgeDelegate,
                              std::move(bridge_builder));
 }
@@ -132,16 +136,26 @@
         OnceModelTypeStoreFactory store_factory,
         SyncableServiceProvider syncable_service_provider,
         const base::RepeatingClosure& dump_stack,
-        scoped_refptr<base::SequencedTaskRunner> task_runner)
-    : ModelTypeController(
-          type,
-          std::make_unique<ProxyModelTypeControllerDelegate>(
-              task_runner,
-              BuildDelegateProvider(type,
-                                    std::move(store_factory),
-                                    std::move(syncable_service_provider),
-                                    dump_stack,
-                                    task_runner))) {}
+        scoped_refptr<base::SequencedTaskRunner> task_runner,
+        bool allow_transport_mode)
+    : ModelTypeController(type) {
+  auto full_sync_mode_delegate =
+      std::make_unique<ProxyModelTypeControllerDelegate>(
+          task_runner,
+          BuildDelegateProvider(type, std::move(store_factory),
+                                std::move(syncable_service_provider),
+                                dump_stack, task_runner));
+  // In transport mode we want the same behavior as full sync mode, so we use
+  // the same thread-proxying delegate, which shares the BridgeBuilder, which
+  // shares the underlying ModelTypeSyncBridge.
+  auto transport_mode_delegate =
+      allow_transport_mode
+          ? std::make_unique<ForwardingModelTypeControllerDelegate>(
+                full_sync_mode_delegate.get())
+          : nullptr;
+  InitModelTypeController(std::move(full_sync_mode_delegate),
+                          std::move(transport_mode_delegate));
+}
 
 NonUiSyncableServiceBasedModelTypeController::
     ~NonUiSyncableServiceBasedModelTypeController() {}
diff --git a/components/sync/driver/non_ui_syncable_service_based_model_type_controller.h b/components/sync/driver/non_ui_syncable_service_based_model_type_controller.h
index 2f8985e..320221a 100644
--- a/components/sync/driver/non_ui_syncable_service_based_model_type_controller.h
+++ b/components/sync/driver/non_ui_syncable_service_based_model_type_controller.h
@@ -34,12 +34,15 @@
 
   // |syncable_service_provider| and |store_factory| will be run on the backend
   // sequence, i.e. |task_runner|.
+  // |allow_transport_mode| will sync the data in both full-sync mode and in
+  // transport-only mode.
   NonUiSyncableServiceBasedModelTypeController(
       ModelType type,
       OnceModelTypeStoreFactory store_factory,
       SyncableServiceProvider syncable_service_provider,
       const base::RepeatingClosure& dump_stack,
-      scoped_refptr<base::SequencedTaskRunner> task_runner);
+      scoped_refptr<base::SequencedTaskRunner> task_runner,
+      bool allow_transport_mode = false);
   ~NonUiSyncableServiceBasedModelTypeController() override;
 
  private:
diff --git a/components/sync/driver/passphrase_type_metrics_provider.cc b/components/sync/driver/passphrase_type_metrics_provider.cc
new file mode 100644
index 0000000..d5ff05a
--- /dev/null
+++ b/components/sync/driver/passphrase_type_metrics_provider.cc
@@ -0,0 +1,77 @@
+// 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/sync/driver/passphrase_type_metrics_provider.h"
+
+#include "base/containers/flat_set.h"
+#include "base/logging.h"
+#include "base/metrics/histogram_functions.h"
+#include "components/sync/base/passphrase_enums.h"
+#include "components/sync/driver/sync_service.h"
+#include "components/sync/driver/sync_user_settings.h"
+
+namespace syncer {
+
+namespace {
+
+base::Optional<PassphraseTypeForMetrics> GetPassphraseTypeForSingleProfile(
+    const SyncService& sync_service) {
+  if (sync_service.GetTransportState() != SyncService::TransportState::ACTIVE) {
+    return base::nullopt;
+  }
+
+  const SyncUserSettings* user_settings = sync_service.GetUserSettings();
+  // Guaranteed by sync transport state.
+  DCHECK(user_settings);
+
+  switch (user_settings->GetPassphraseType()) {
+    case PassphraseType::kImplicitPassphrase:
+      return PassphraseTypeForMetrics::kImplicitPassphrase;
+    case PassphraseType::kKeystorePassphrase:
+      return PassphraseTypeForMetrics::kKeystorePassphrase;
+    case PassphraseType::kFrozenImplicitPassphrase:
+      return PassphraseTypeForMetrics::kFrozenImplicitPassphrase;
+    case PassphraseType::kCustomPassphrase:
+      return PassphraseTypeForMetrics::kCustomPassphrase;
+    case PassphraseType::kTrustedVaultPassphrase:
+      return PassphraseTypeForMetrics::kTrustedVaultPassphrase;
+  }
+
+  NOTREACHED();
+  return base::nullopt;
+}
+
+PassphraseTypeForMetrics GetPassphraseTypeForAllProfiles(
+    const std::vector<const SyncService*>& sync_services) {
+  base::flat_set<base::Optional<PassphraseTypeForMetrics>> passphrase_types;
+  for (const SyncService* sync_service : sync_services) {
+    DCHECK(sync_service);
+    passphrase_types.insert(GetPassphraseTypeForSingleProfile(*sync_service));
+  }
+
+  if (passphrase_types.size() > 1) {
+    return PassphraseTypeForMetrics::kInconsistentStateAcrossProfiles;
+  }
+  if (passphrase_types.empty() || !passphrase_types.begin()->has_value()) {
+    return PassphraseTypeForMetrics::kNoActiveSyncingProfiles;
+  }
+  return **passphrase_types.begin();
+}
+
+}  // namespace
+
+PassphraseTypeMetricsProvider::PassphraseTypeMetricsProvider(
+    const GetAllSyncServicesCallback& get_all_sync_services_callback)
+    : get_all_sync_services_callback_(get_all_sync_services_callback) {}
+
+PassphraseTypeMetricsProvider::~PassphraseTypeMetricsProvider() = default;
+
+void PassphraseTypeMetricsProvider::ProvideCurrentSessionData(
+    metrics::ChromeUserMetricsExtension* uma_proto) {
+  base::UmaHistogramEnumeration(
+      "Sync.PassphraseType2",
+      GetPassphraseTypeForAllProfiles(get_all_sync_services_callback_.Run()));
+}
+
+}  // namespace syncer
diff --git a/components/sync/driver/passphrase_type_metrics_provider.h b/components/sync/driver/passphrase_type_metrics_provider.h
new file mode 100644
index 0000000..43f1879
--- /dev/null
+++ b/components/sync/driver/passphrase_type_metrics_provider.h
@@ -0,0 +1,66 @@
+// 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 COMPONENTS_SYNC_DRIVER_PASSPHRASE_TYPE_METRICS_PROVIDER_H_
+#define COMPONENTS_SYNC_DRIVER_PASSPHRASE_TYPE_METRICS_PROVIDER_H_
+
+#include <vector>
+
+#include "base/callback.h"
+#include "components/metrics/metrics_provider.h"
+
+namespace syncer {
+
+class SyncService;
+
+// Used for UMA. Exposed in the header file for testing.
+enum class PassphraseTypeForMetrics {
+  // Used if there are no syncing profiles or all syncing profiles are not in
+  // ACTIVE sync transport state.
+  kNoActiveSyncingProfiles,
+  // Used if there are multiple syncing profiles with different passphrase
+  // types or with different sync transport state is ACTIVE values.
+  kInconsistentStateAcrossProfiles,
+  // Further values correspond to regular PassphraseType. Used if there is only
+  // one syncing profile or all profiles have the same PassphraseType.
+  kImplicitPassphrase,
+  kKeystorePassphrase,
+  kFrozenImplicitPassphrase,
+  kCustomPassphrase,
+  kTrustedVaultPassphrase,
+  kMaxValue = kTrustedVaultPassphrase
+};
+
+// A registerable metrics provider that will emit sync passphrase type upon UMA
+// upload. If it's impossible to detect real passphrase type, special enum
+// values will be used (kNoActiveSyncingProfiles and
+// kVariousStateAcrossProfiles).
+class PassphraseTypeMetricsProvider : public metrics::MetricsProvider {
+ public:
+  using GetAllSyncServicesCallback =
+      base::RepeatingCallback<std::vector<const SyncService*>()>;
+
+  // All SyncServices returned by |get_all_sync_services_callback| must be not
+  // null.
+  explicit PassphraseTypeMetricsProvider(
+      const GetAllSyncServicesCallback& get_all_sync_services_callback);
+
+  PassphraseTypeMetricsProvider(const PassphraseTypeMetricsProvider& other) =
+      delete;
+  PassphraseTypeMetricsProvider& operator=(
+      const PassphraseTypeMetricsProvider& other) = delete;
+
+  ~PassphraseTypeMetricsProvider() override;
+
+  // MetricsProvider overrides.
+  void ProvideCurrentSessionData(
+      metrics::ChromeUserMetricsExtension* uma_proto) override;
+
+ private:
+  const GetAllSyncServicesCallback get_all_sync_services_callback_;
+};
+
+}  // namespace syncer
+
+#endif  // COMPONENTS_SYNC_DRIVER_PASSPHRASE_TYPE_METRICS_PROVIDER_H_
diff --git a/components/sync/driver/passphrase_type_metrics_provider_unittest.cc b/components/sync/driver/passphrase_type_metrics_provider_unittest.cc
new file mode 100644
index 0000000..0f25622
--- /dev/null
+++ b/components/sync/driver/passphrase_type_metrics_provider_unittest.cc
@@ -0,0 +1,127 @@
+// 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/sync/driver/passphrase_type_metrics_provider.h"
+
+#include <memory>
+#include <vector>
+
+#include "base/bind.h"
+#include "base/optional.h"
+#include "base/test/metrics/histogram_tester.h"
+#include "components/sync/base/passphrase_enums.h"
+#include "components/sync/driver/mock_sync_service.h"
+#include "components/sync/driver/sync_user_settings_mock.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace syncer {
+
+namespace {
+
+using testing::Return;
+
+class PassphraseTypeMetricsProviderTest : public testing::Test {
+ public:
+  PassphraseTypeMetricsProviderTest() = default;
+  ~PassphraseTypeMetricsProviderTest() override = default;
+
+  void SetUp() override {
+    // Using base::Unretained() here is safe, because |metrics_provider_| can't
+    // outlive this and |sync_services_|.
+    metrics_provider_ = std::make_unique<PassphraseTypeMetricsProvider>(
+        base::BindRepeating(&PassphraseTypeMetricsProviderTest::GetSyncServices,
+                            base::Unretained(this)));
+  }
+
+  // Adds sync service, which will be provided to |metrics_provider_|.
+  void AddSyncService(PassphraseType passphrase_type,
+                      bool sync_transport_active = true) {
+    sync_services_.emplace_back(
+        std::make_unique<testing::NiceMock<MockSyncService>>());
+    if (sync_transport_active) {
+      // Will return DISABLED otherwise.
+      ON_CALL(*sync_services_.back(), GetTransportState())
+          .WillByDefault(Return(SyncService::TransportState::ACTIVE));
+    }
+    ON_CALL(*sync_services_.back()->GetMockUserSettings(), GetPassphraseType())
+        .WillByDefault(Return(passphrase_type));
+  }
+
+  void ExpectRecordedPassphraseType(PassphraseTypeForMetrics expected) {
+    base::HistogramTester histogram_tester;
+    metrics_provider_->ProvideCurrentSessionData(nullptr);
+    histogram_tester.ExpectUniqueSample("Sync.PassphraseType2", expected, 1);
+  }
+
+ private:
+  std::vector<const SyncService*> GetSyncServices() const {
+    std::vector<const SyncService*> result;
+    for (const auto& sync_service : sync_services_) {
+      result.push_back(sync_service.get());
+    }
+    return result;
+  }
+
+  std::vector<std::unique_ptr<MockSyncService>> sync_services_;
+  std::unique_ptr<PassphraseTypeMetricsProvider> metrics_provider_;
+};
+
+TEST_F(PassphraseTypeMetricsProviderTest, ShouldRecordNoSyncingProfiles) {
+  ExpectRecordedPassphraseType(
+      PassphraseTypeForMetrics::kNoActiveSyncingProfiles);
+}
+
+TEST_F(PassphraseTypeMetricsProviderTest, ShouldRecordSyncTransportInactive) {
+  AddSyncService(PassphraseType::kKeystorePassphrase,
+                 /*sync_transport_active=*/false);
+  ExpectRecordedPassphraseType(
+      PassphraseTypeForMetrics::kNoActiveSyncingProfiles);
+}
+
+TEST_F(PassphraseTypeMetricsProviderTest, ShouldRecordMultipleSyncingProfiles) {
+  AddSyncService(PassphraseType::kImplicitPassphrase);
+  AddSyncService(PassphraseType::kKeystorePassphrase);
+  ExpectRecordedPassphraseType(
+      PassphraseTypeForMetrics::kInconsistentStateAcrossProfiles);
+}
+
+TEST_F(PassphraseTypeMetricsProviderTest,
+       ShouldRecordKeystorePassphraseWithMultipleProfiles) {
+  AddSyncService(PassphraseType::kKeystorePassphrase);
+  AddSyncService(PassphraseType::kKeystorePassphrase);
+  ExpectRecordedPassphraseType(PassphraseTypeForMetrics::kKeystorePassphrase);
+}
+
+TEST_F(PassphraseTypeMetricsProviderTest, ShouldRecordImplicitPassphrase) {
+  AddSyncService(PassphraseType::kImplicitPassphrase);
+  ExpectRecordedPassphraseType(PassphraseTypeForMetrics::kImplicitPassphrase);
+}
+
+TEST_F(PassphraseTypeMetricsProviderTest, ShouldRecordKeystorePassphrase) {
+  AddSyncService(PassphraseType::kKeystorePassphrase);
+  ExpectRecordedPassphraseType(PassphraseTypeForMetrics::kKeystorePassphrase);
+}
+
+TEST_F(PassphraseTypeMetricsProviderTest,
+       ShouldRecordFrozenImplicitPassphrase) {
+  AddSyncService(PassphraseType::kFrozenImplicitPassphrase);
+  ExpectRecordedPassphraseType(
+      PassphraseTypeForMetrics::kFrozenImplicitPassphrase);
+}
+
+TEST_F(PassphraseTypeMetricsProviderTest, ShouldRecordCustomPassphrase) {
+  AddSyncService(PassphraseType::kCustomPassphrase);
+  ExpectRecordedPassphraseType(PassphraseTypeForMetrics::kCustomPassphrase);
+}
+
+TEST_F(PassphraseTypeMetricsProviderTest, ShouldRecordTrustedVaultPassphrase) {
+  AddSyncService(PassphraseType::kTrustedVaultPassphrase);
+  ExpectRecordedPassphraseType(
+      PassphraseTypeForMetrics::kTrustedVaultPassphrase);
+}
+
+}  // namespace
+
+}  // namespace syncer
diff --git a/components/sync/driver/profile_sync_service.cc b/components/sync/driver/profile_sync_service.cc
index 4bbd40df..441f3df7 100644
--- a/components/sync/driver/profile_sync_service.cc
+++ b/components/sync/driver/profile_sync_service.cc
@@ -1399,9 +1399,9 @@
 #if defined(OS_CHROMEOS)
   // Chrome OS system types are not tied to browser sync-the-feature.
   if (chromeos::features::IsSplitSettingsSyncEnabled()) {
-    allowed_types.PutAll({APP_LIST, APPS, ARC_PACKAGE, OS_PREFERENCES,
-                          OS_PRIORITY_PREFERENCES, PRINTERS,
-                          WIFI_CONFIGURATIONS});
+    allowed_types.PutAll({APP_LIST, APP_SETTINGS, APPS, ARC_PACKAGE,
+                          OS_PREFERENCES, OS_PRIORITY_PREFERENCES, PRINTERS,
+                          WEB_APPS, WIFI_CONFIGURATIONS});
   }
 #endif  // defined(OS_CHROMEOS)
 
diff --git a/components/sync/driver/sync_service_crypto.cc b/components/sync/driver/sync_service_crypto.cc
index e0462da8..ec77ad4 100644
--- a/components/sync/driver/sync_service_crypto.cc
+++ b/components/sync/driver/sync_service_crypto.cc
@@ -247,26 +247,33 @@
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   // This should only be called when the engine has been initialized.
   DCHECK(state_.engine);
-  DCHECK_NE(state_.required_user_action,
-            RequiredUserAction::kPassphraseRequiredForDecryption)
-      << "Can not set explicit passphrase when decryption is needed.";
-
-  DVLOG(1) << "Setting explicit passphrase for encryption.";
-  if (state_.required_user_action ==
-      RequiredUserAction::kPassphraseRequiredForEncryption) {
-    // |kPassphraseRequiredForEncryption| implies that the cryptographer does
-    // not have pending keys. Hence, as long as we're not trying to do an
-    // invalid passphrase change (e.g. explicit -> explicit or explicit ->
-    // implicit), we know this will succeed. If for some reason a new
-    // encryption key arrives via sync later, the SyncEncryptionHandler will
-    // trigger another OnPassphraseRequired().
-    state_.required_user_action = RequiredUserAction::kNone;
-    notify_observers_.Run();
-  }
-
   // We should never be called with an empty passphrase.
   DCHECK(!passphrase.empty());
 
+  switch (state_.required_user_action) {
+    case RequiredUserAction::kNone:
+      break;
+    case RequiredUserAction::kPassphraseRequiredForDecryption:
+    case RequiredUserAction::kFetchingTrustedVaultKeys:
+    case RequiredUserAction::kTrustedVaultKeyRequired:
+      // Cryptographer has pending keys.
+      NOTREACHED()
+          << "Can not set explicit passphrase when decryption is needed.";
+      return;
+    case RequiredUserAction::kPassphraseRequiredForEncryption:
+      // |kPassphraseRequiredForEncryption| implies that the cryptographer does
+      // not have pending keys. Hence, as long as we're not trying to do an
+      // invalid passphrase change (e.g. explicit -> explicit or explicit ->
+      // implicit), we know this will succeed. If for some reason a new
+      // encryption key arrives via sync later, the SyncEncryptionHandler will
+      // trigger another OnPassphraseRequired().
+      state_.required_user_action = RequiredUserAction::kNone;
+      notify_observers_.Run();
+      break;
+  }
+
+  DVLOG(1) << "Setting explicit passphrase for encryption.";
+
   // SetEncryptionPassphrase() should never be called if we are currently
   // encrypted with an explicit passphrase.
   DCHECK(!IsExplicitPassphrase(state_.cached_passphrase_type));
diff --git a/components/sync/driver/sync_type_preference_provider.h b/components/sync/driver/sync_type_preference_provider.h
index 0ce36db..aa184f5 100644
--- a/components/sync/driver/sync_type_preference_provider.h
+++ b/components/sync/driver/sync_type_preference_provider.h
@@ -11,7 +11,6 @@
 
 class SyncTypePreferenceProvider {
  public:
-  virtual UserSelectableTypeSet GetForcedTypes() const = 0;
   virtual bool IsEncryptEverythingAllowed() const = 0;
 
  protected:
diff --git a/components/sync/driver/sync_user_settings.h b/components/sync/driver/sync_user_settings.h
index 159dcba..4cb2bfb 100644
--- a/components/sync/driver/sync_user_settings.h
+++ b/components/sync/driver/sync_user_settings.h
@@ -67,10 +67,6 @@
   // UserSelectableType is registered iff main corresponding  ModelType is
   // registered.
   virtual UserSelectableTypeSet GetRegisteredSelectableTypes() const = 0;
-  // Returns the set of types which are enforced programmatically and can not
-  // be disabled by the user (e.g. enforced for supervised users). Types are
-  // not guaranteed to be registered.
-  virtual UserSelectableTypeSet GetForcedTypes() const = 0;
 
 #if defined(OS_CHROMEOS)
   // As above, but for Chrome OS-specific data types. These are controlled by
diff --git a/components/sync/driver/sync_user_settings_impl.cc b/components/sync/driver/sync_user_settings_impl.cc
index bfc5de0..55628dc6 100644
--- a/components/sync/driver/sync_user_settings_impl.cc
+++ b/components/sync/driver/sync_user_settings_impl.cc
@@ -94,7 +94,6 @@
 
 UserSelectableTypeSet SyncUserSettingsImpl::GetSelectedTypes() const {
   UserSelectableTypeSet types = prefs_->GetSelectedTypes();
-  types.PutAll(GetForcedTypes());
   types.RetainAll(GetRegisteredSelectableTypes());
   return types;
 }
@@ -165,13 +164,6 @@
 }
 #endif  // defined(OS_CHROMEOS)
 
-UserSelectableTypeSet SyncUserSettingsImpl::GetForcedTypes() const {
-  if (preference_provider_) {
-    return preference_provider_->GetForcedTypes();
-  }
-  return UserSelectableTypeSet();
-}
-
 bool SyncUserSettingsImpl::IsEncryptEverythingAllowed() const {
   return !preference_provider_ ||
          preference_provider_->IsEncryptEverythingAllowed();
diff --git a/components/sync/driver/sync_user_settings_impl.h b/components/sync/driver/sync_user_settings_impl.h
index d1fd467a6..c7d7663e 100644
--- a/components/sync/driver/sync_user_settings_impl.h
+++ b/components/sync/driver/sync_user_settings_impl.h
@@ -46,7 +46,6 @@
   void SetSelectedTypes(bool sync_everything,
                         UserSelectableTypeSet types) override;
   UserSelectableTypeSet GetRegisteredSelectableTypes() const override;
-  UserSelectableTypeSet GetForcedTypes() const override;
 
 #if defined(OS_CHROMEOS)
   bool IsSyncAllOsTypesEnabled() const override;
diff --git a/components/sync/driver/sync_user_settings_mock.h b/components/sync/driver/sync_user_settings_mock.h
index c630d39..0ba8326 100644
--- a/components/sync/driver/sync_user_settings_mock.h
+++ b/components/sync/driver/sync_user_settings_mock.h
@@ -31,7 +31,6 @@
   MOCK_CONST_METHOD0(GetSelectedTypes, UserSelectableTypeSet());
   MOCK_METHOD2(SetSelectedTypes, void(bool, UserSelectableTypeSet));
   MOCK_CONST_METHOD0(GetRegisteredSelectableTypes, UserSelectableTypeSet());
-  MOCK_CONST_METHOD0(GetForcedTypes, UserSelectableTypeSet());
 
 #if defined(OS_CHROMEOS)
   MOCK_CONST_METHOD0(IsSyncAllOsTypesEnabled, bool());
diff --git a/components/sync/driver/test_sync_user_settings.cc b/components/sync/driver/test_sync_user_settings.cc
index b0fe7aa..68b8a6a 100644
--- a/components/sync/driver/test_sync_user_settings.cc
+++ b/components/sync/driver/test_sync_user_settings.cc
@@ -92,10 +92,6 @@
   return UserSelectableTypeSet::All();
 }
 
-UserSelectableTypeSet TestSyncUserSettings::GetForcedTypes() const {
-  return {};
-}
-
 #if defined(OS_CHROMEOS)
 bool TestSyncUserSettings::IsSyncAllOsTypesEnabled() const {
   return sync_all_os_types_enabled_;
diff --git a/components/sync/driver/test_sync_user_settings.h b/components/sync/driver/test_sync_user_settings.h
index 6ad37d7f..12afc48 100644
--- a/components/sync/driver/test_sync_user_settings.h
+++ b/components/sync/driver/test_sync_user_settings.h
@@ -35,7 +35,6 @@
   void SetSelectedTypes(bool sync_everything,
                         UserSelectableTypeSet types) override;
   UserSelectableTypeSet GetRegisteredSelectableTypes() const override;
-  UserSelectableTypeSet GetForcedTypes() const override;
 
 #if defined(OS_CHROMEOS)
   bool IsSyncAllOsTypesEnabled() const override;
diff --git a/components/sync_bookmarks/bookmark_model_merger.cc b/components/sync_bookmarks/bookmark_model_merger.cc
index eae153ef..579848ee 100644
--- a/components/sync_bookmarks/bookmark_model_merger.cc
+++ b/components/sync_bookmarks/bookmark_model_merger.cc
@@ -5,7 +5,6 @@
 #include "components/sync_bookmarks/bookmark_model_merger.h"
 
 #include <algorithm>
-#include <memory>
 #include <set>
 #include <string>
 #include <utility>
@@ -205,66 +204,44 @@
 
 }  // namespace
 
-class BookmarkModelMerger::RemoteTreeNode final {
- public:
-  // Constructs a tree given |update| as root and recursively all descendants by
-  // traversing |*updates_per_parent_id|. |update| and |updates_per_parent_id|
-  // must not be null. All updates |*updates_per_parent_id| must represent valid
-  // updates. Updates corresponding from descendant nodes are moved away from
-  // |*updates_per_parent_id|.
-  static RemoteTreeNode BuildTree(
-      std::unique_ptr<syncer::UpdateResponseData> update,
-      UpdatesPerParentId* updates_per_parent_id);
+BookmarkModelMerger::RemoteTreeNode::RemoteTreeNode() = default;
 
-  ~RemoteTreeNode() = default;
+BookmarkModelMerger::RemoteTreeNode::~RemoteTreeNode() = default;
 
-  // Allow moves, useful during construction.
-  RemoteTreeNode(RemoteTreeNode&&) = default;
-  RemoteTreeNode& operator=(RemoteTreeNode&&) = default;
+BookmarkModelMerger::RemoteTreeNode::RemoteTreeNode(
+    BookmarkModelMerger::RemoteTreeNode&&) = default;
+BookmarkModelMerger::RemoteTreeNode& BookmarkModelMerger::RemoteTreeNode::
+operator=(BookmarkModelMerger::RemoteTreeNode&&) = default;
 
-  const syncer::EntityData& entity() const { return *update_->entity; }
-  int64_t response_version() const { return update_->response_version; }
+void BookmarkModelMerger::RemoteTreeNode::EmplaceSelfAndDescendantsByGUID(
+    std::unordered_map<std::string, const RemoteTreeNode*>*
+        guid_to_remote_node_map) const {
+  DCHECK(guid_to_remote_node_map);
 
-  // Direct children nodes, sorted by ascending unique position. These are
-  // guaranteed to be valid updates (e.g. IsValidBookmarkSpecifics()).
-  const std::vector<RemoteTreeNode>& children() const { return children_; }
+  const std::string& guid = entity().specifics.bookmark().guid();
+  if (!guid.empty()) {
+    DCHECK(base::IsValidGUID(guid));
 
-  // Recursively emplaces all GUIDs (this node and descendants) into
-  // |*guid_to_remote_node_map|, which must not be null.
-  void EmplaceSelfAndDescendantsByGUID(
-      std::unordered_map<std::string, const RemoteTreeNode*>*
-          guid_to_remote_node_map) const {
-    DCHECK(guid_to_remote_node_map);
-
-    const std::string& guid = entity().specifics.bookmark().guid();
-    if (!guid.empty()) {
-      DCHECK(base::IsValidGUID(guid));
-
-      // Duplicate GUIDs have been sorted out before.
-      bool success = guid_to_remote_node_map->emplace(guid, this).second;
-      DCHECK(success);
-    }
-
-    for (const RemoteTreeNode& child : children_) {
-      child.EmplaceSelfAndDescendantsByGUID(guid_to_remote_node_map);
-    }
+    // Duplicate GUIDs have been sorted out before.
+    bool success = guid_to_remote_node_map->emplace(guid, this).second;
+    DCHECK(success);
   }
 
- private:
-  static bool UniquePositionLessThan(const RemoteTreeNode& lhs,
-                                     const RemoteTreeNode& rhs) {
-    const syncer::UniquePosition a_pos =
-        syncer::UniquePosition::FromProto(lhs.entity().unique_position);
-    const syncer::UniquePosition b_pos =
-        syncer::UniquePosition::FromProto(rhs.entity().unique_position);
-    return a_pos.LessThan(b_pos);
+  for (const RemoteTreeNode& child : children_) {
+    child.EmplaceSelfAndDescendantsByGUID(guid_to_remote_node_map);
   }
+}
 
-  RemoteTreeNode() = default;
-
-  std::unique_ptr<syncer::UpdateResponseData> update_;
-  std::vector<RemoteTreeNode> children_;
-};
+// static
+bool BookmarkModelMerger::RemoteTreeNode::UniquePositionLessThan(
+    const RemoteTreeNode& lhs,
+    const RemoteTreeNode& rhs) {
+  const syncer::UniquePosition a_pos =
+      syncer::UniquePosition::FromProto(lhs.entity().unique_position);
+  const syncer::UniquePosition b_pos =
+      syncer::UniquePosition::FromProto(rhs.entity().unique_position);
+  return a_pos.LessThan(b_pos);
+}
 
 // static
 BookmarkModelMerger::RemoteTreeNode
diff --git a/components/sync_bookmarks/bookmark_model_merger.h b/components/sync_bookmarks/bookmark_model_merger.h
index 9b592000..bf0783ec 100644
--- a/components/sync_bookmarks/bookmark_model_merger.h
+++ b/components/sync_bookmarks/bookmark_model_merger.h
@@ -5,6 +5,7 @@
 #ifndef COMPONENTS_SYNC_BOOKMARKS_BOOKMARK_MODEL_MERGER_H_
 #define COMPONENTS_SYNC_BOOKMARKS_BOOKMARK_MODEL_MERGER_H_
 
+#include <memory>
 #include <string>
 #include <unordered_map>
 #include <vector>
@@ -50,7 +51,52 @@
 
  private:
   // Internal representation of a remote tree, composed of nodes.
-  class RemoteTreeNode;
+  class RemoteTreeNode final {
+   private:
+    using UpdatesPerParentId =
+        std::unordered_map<base::StringPiece,
+                           syncer::UpdateResponseDataList,
+                           base::StringPieceHash>;
+
+   public:
+    // Constructs a tree given |update| as root and recursively all descendants
+    // by traversing |*updates_per_parent_id|. |update| and
+    // |updates_per_parent_id| must not be null. All updates
+    // |*updates_per_parent_id| must represent valid updates. Updates
+    // corresponding from descendant nodes are moved away from
+    // |*updates_per_parent_id|.
+    static RemoteTreeNode BuildTree(
+        std::unique_ptr<syncer::UpdateResponseData> update,
+        UpdatesPerParentId* updates_per_parent_id);
+
+    ~RemoteTreeNode();
+
+    // Allow moves, useful during construction.
+    RemoteTreeNode(RemoteTreeNode&&);
+    RemoteTreeNode& operator=(RemoteTreeNode&&);
+
+    const syncer::EntityData& entity() const { return *update_->entity; }
+    int64_t response_version() const { return update_->response_version; }
+
+    // Direct children nodes, sorted by ascending unique position. These are
+    // guaranteed to be valid updates (e.g. IsValidBookmarkSpecifics()).
+    const std::vector<RemoteTreeNode>& children() const { return children_; }
+
+    // Recursively emplaces all GUIDs (this node and descendants) into
+    // |*guid_to_remote_node_map|, which must not be null.
+    void EmplaceSelfAndDescendantsByGUID(
+        std::unordered_map<std::string, const RemoteTreeNode*>*
+            guid_to_remote_node_map) const;
+
+   private:
+    static bool UniquePositionLessThan(const RemoteTreeNode& lhs,
+                                       const RemoteTreeNode& rhs);
+
+    RemoteTreeNode();
+
+    std::unique_ptr<syncer::UpdateResponseData> update_;
+    std::vector<RemoteTreeNode> children_;
+  };
 
   // A forest composed of multiple trees where the root of each tree represents
   // a permanent node, keyed by server-defined unique tag of the root.
diff --git a/components/url_formatter/spoof_checks/idn_spoof_checker.cc b/components/url_formatter/spoof_checks/idn_spoof_checker.cc
index 97ab442..0077293 100644
--- a/components/url_formatter/spoof_checks/idn_spoof_checker.cc
+++ b/components/url_formatter/spoof_checks/idn_spoof_checker.cc
@@ -69,6 +69,14 @@
   TopDomainEntry result_;
 };
 
+// Stores whole-script-confusable information about a written script.
+// Used to populate a list of WholeScriptConfusable structs.
+struct WholeScriptConfusableData {
+  const char* const script_regex;
+  const char* const latin_lookalike_letters;
+  const std::vector<std::string> allowed_tlds;
+};
+
 void OnThreadTermination(void* regex_matcher) {
   delete reinterpret_cast<icu::RegexMatcher*>(regex_matcher);
 }
@@ -119,6 +127,16 @@
 
 }  // namespace
 
+IDNSpoofChecker::WholeScriptConfusable::WholeScriptConfusable(
+    std::unique_ptr<icu::UnicodeSet> arg_all_letters,
+    std::unique_ptr<icu::UnicodeSet> arg_latin_lookalike_letters,
+    const std::vector<std::string>& arg_allowed_tlds)
+    : all_letters(std::move(arg_all_letters)),
+      latin_lookalike_letters(std::move(arg_latin_lookalike_letters)),
+      allowed_tlds(arg_allowed_tlds) {}
+
+IDNSpoofChecker::WholeScriptConfusable::~WholeScriptConfusable() = default;
+
 IDNSpoofChecker::IDNSpoofChecker() {
   UErrorCode status = U_ZERO_ERROR;
   checker_ = uspoof_open(&status);
@@ -173,15 +191,22 @@
       icu::UnicodeSet(UNICODE_STRING_SIMPLE("[\\u0300-\\u0339]"), status);
   combining_diacritics_exceptions_.freeze();
 
-  // These Cyrillic letters look like Latin. A domain label entirely made of
-  // these letters is blocked as a simplified whole-script-spoofable.
-  cyrillic_letters_latin_alike_ = icu::UnicodeSet(
-      icu::UnicodeString::fromUTF8("[аысԁеԍһіюјӏорԗԛѕԝхуъЬҽпгѵѡ]"), status);
-  cyrillic_letters_latin_alike_.freeze();
-
-  cyrillic_letters_ =
-      icu::UnicodeSet(UNICODE_STRING_SIMPLE("[[:Cyrl:]]"), status);
-  cyrillic_letters_.freeze();
+  const WholeScriptConfusableData kWholeScriptConfusables[] = {
+      {// Cyrillic
+       "[[:Cyrl:]]",
+       "[аысԁеԍһіюјӏорԗԛѕԝхуъЬҽпгѵѡ]",
+       // TLDs containing most of the Cyrillic domains.
+       {"bg", "by", "kz", "pyc", "ru", "su", "ua", "uz"}},
+  };
+  for (const WholeScriptConfusableData& data : kWholeScriptConfusables) {
+    auto all_letters = std::make_unique<icu::UnicodeSet>(
+        icu::UnicodeString::fromUTF8(data.script_regex), status);
+    auto latin_lookalikes = std::make_unique<icu::UnicodeSet>(
+        icu::UnicodeString::fromUTF8(data.latin_lookalike_letters), status);
+    auto script = std::make_unique<WholeScriptConfusable>(
+        std::move(all_letters), std::move(latin_lookalikes), data.allowed_tlds);
+    wholescriptconfusables_.push_back(std::move(script));
+  }
 
   // These characters are, or look like, digits. A domain label entirely made of
   // digit-lookalikes or digits is blocked.
@@ -350,8 +375,8 @@
   // If there's no script mixing, the input is regarded as safe without any
   // extra check unless it falls into one of three categories:
   //   - contains Kana letter exceptions
-  //   - the TLD is ASCII and the input is made entirely of Cyrillic letters
-  //     that look like Latin letters.
+  //   - the TLD is ASCII and the input is made entirely of whole script
+  //     characters confusable that look like Latin letters.
   //   - it has combining diacritic marks.
   // Note that the following combinations of scripts are treated as a 'logical'
   // single script.
@@ -364,11 +389,14 @@
   if (result == USPOOF_SINGLE_SCRIPT_RESTRICTIVE &&
       kana_letters_exceptions_.containsNone(label_string) &&
       combining_diacritics_exceptions_.containsNone(label_string)) {
-    // Check Cyrillic confusable only for TLDs where Cyrillic characters are
-    // uncommon.
-    return IsCyrillicTopLevelDomain(top_level_domain,
-                                    top_level_domain_unicode) ||
-           !IsMadeOfLatinAlikeCyrillic(label_string);
+    for (auto const& script : wholescriptconfusables_) {
+      if (IsLabelWholeScriptConfusableForScript(*script.get(), label_string) &&
+          !IsWholeScriptConfusableAllowedForTLD(*script.get(), top_level_domain,
+                                                top_level_domain_unicode)) {
+        return false;
+      }
+    }
+    return true;
   }
 
   // Disallow domains that contain only numbers and number-spoofs.
@@ -650,25 +678,6 @@
   uspoof_setAllowedUnicodeSet(checker_, &allowed_set, status);
 }
 
-bool IDNSpoofChecker::IsMadeOfLatinAlikeCyrillic(
-    const icu::UnicodeString& label) {
-  // Collect all the Cyrillic letters in |label_string| and see if they're
-  // a subset of |cyrillic_letters_latin_alike_|.
-  // A shortcut of defining cyrillic_letters_latin_alike_ to include [0-9] and
-  // [_-] and checking if the set contains all letters of |label|
-  // would work in most cases, but not if a label has non-letters outside
-  // ASCII.
-  icu::UnicodeSet cyrillic_in_label;
-  icu::StringCharacterIterator it(label);
-  for (it.setToStart(); it.hasNext();) {
-    const UChar32 c = it.next32PostInc();
-    if (cyrillic_letters_.contains(c))
-      cyrillic_in_label.add(c);
-  }
-  return !cyrillic_in_label.isEmpty() &&
-         cyrillic_letters_latin_alike_.containsAll(cyrillic_in_label);
-}
-
 bool IDNSpoofChecker::IsDigitLookalike(const icu::UnicodeString& label) {
   bool has_lookalike_char = false;
   icu::StringCharacterIterator it(label);
@@ -686,19 +695,41 @@
   return has_lookalike_char;
 }
 
-bool IDNSpoofChecker::IsCyrillicTopLevelDomain(
+// static
+bool IDNSpoofChecker::IsWholeScriptConfusableAllowedForTLD(
+    const WholeScriptConfusable& script,
     base::StringPiece tld,
-    base::StringPiece16 tld_unicode) const {
+    base::StringPiece16 tld_unicode) {
   icu::UnicodeString tld_string(
       FALSE /* isTerminated */, tld_unicode.data(),
       base::checked_cast<int32_t>(tld_unicode.size()));
-  if (cyrillic_letters_.containsSome(tld_string)) {
+  // Allow if the TLD contains any letter from the script, in which case it's
+  // likely to be a TLD in that script.
+  if (script.all_letters->containsSome(tld_string)) {
     return true;
   }
-  // These ASCII TLDs contain a large number of domains with Cyrillic
-  // characters.
-  return tld == "bg" || tld == "by" || tld == "kz" || tld == "pyc" ||
-         tld == "ru" || tld == "su" || tld == "ua" || tld == "uz";
+  return base::Contains(script.allowed_tlds, tld);
+}
+
+// static
+bool IDNSpoofChecker::IsLabelWholeScriptConfusableForScript(
+    const WholeScriptConfusable& script,
+    const icu::UnicodeString& label) {
+  // Collect all the letters of |label| using |script.all_letters| and see if
+  // they're a subset of |script.latin_lookalike_letters|.
+  // An alternative approach is to include [0-9] and [_-] in script.all_letters
+  // and checking if it contains all letters of |label|. However, this would not
+  // work if a label has non-letters outside ASCII.
+  icu::UnicodeSet label_characters_belonging_to_script;
+  icu::StringCharacterIterator it(label);
+  for (it.setToStart(); it.hasNext();) {
+    const UChar32 c = it.next32PostInc();
+    if (script.all_letters->contains(c))
+      label_characters_belonging_to_script.add(c);
+  }
+  return !label_characters_belonging_to_script.isEmpty() &&
+         script.latin_lookalike_letters->containsAll(
+             label_characters_belonging_to_script);
 }
 
 // static
diff --git a/components/url_formatter/spoof_checks/idn_spoof_checker.h b/components/url_formatter/spoof_checks/idn_spoof_checker.h
index f2bf909..dd171a9 100644
--- a/components/url_formatter/spoof_checks/idn_spoof_checker.h
+++ b/components/url_formatter/spoof_checks/idn_spoof_checker.h
@@ -90,28 +90,53 @@
   static void RestoreTrieParamsForTesting();
 
  private:
+  // Store information about various language scripts whose letters can be used
+  // to make whole-script-confusable spoofs (e.g. ѕсоре[.]com where all letters
+  // in ѕсоре are Cyrillic).
+  struct WholeScriptConfusable {
+    WholeScriptConfusable(
+        std::unique_ptr<icu::UnicodeSet> arg_all_letters,
+        std::unique_ptr<icu::UnicodeSet> arg_latin_lookalike_letters,
+        const std::vector<std::string>& allowed_tlds);
+    ~WholeScriptConfusable();
+
+    // Captures all letters belonging to this script.
+    std::unique_ptr<icu::UnicodeSet> all_letters;
+    // The subset of all_letters that look like Latin ASCII letters. A domain
+    // label entirely made of them is blocked as a simplified
+    // whole-script-spoofable, unless the TLD of the domain is explicitly
+    // allowed by |allowed_tlds|.
+    std::unique_ptr<icu::UnicodeSet> latin_lookalike_letters;
+    // List of top level domains where whole-script-confusable domains are
+    // allowed for this script.
+    const std::vector<std::string> allowed_tlds;
+  };
+
+  // Returns true if all the letters belonging to |script| in |label| also
+  // belong to a set of Latin lookalike letters for that script.
+  static bool IsLabelWholeScriptConfusableForScript(
+      const WholeScriptConfusable& script,
+      const icu::UnicodeString& label);
+  // Returns true if |tld| is a top level domain most likely to contain a large
+  // number of domains in |script| (as in, written script). |tld_unicode| can be
+  // empty if |tld| is not well formed punycode.
+  static bool IsWholeScriptConfusableAllowedForTLD(
+      const WholeScriptConfusable& wsc,
+      base::StringPiece tld,
+      base::StringPiece16 tld_unicode);
+
   // Sets allowed characters in IDN labels and turns on USPOOF_CHAR_LIMIT.
   void SetAllowedUnicodeSet(UErrorCode* status);
 
-  // Returns true if all the Cyrillic letters in |label| belong to a set of
-  // Cyrillic letters that look like ASCII Latin letters.
-  bool IsMadeOfLatinAlikeCyrillic(const icu::UnicodeString& label);
   // Returns true if the string is entirely made up of either digits or
   // characters that look like digits (but not exclusively actual digits).
   bool IsDigitLookalike(const icu::UnicodeString& label);
-  // Returns true if |tld| is a top level domain most likely to contain a large
-  // number of Cyrillic domains. |tld_unicode| can be empty if |tld| is not well
-  // formed punycode.
-  bool IsCyrillicTopLevelDomain(base::StringPiece tld,
-                                base::StringPiece16 tld_unicode) const;
 
   USpoofChecker* checker_;
   icu::UnicodeSet deviation_characters_;
   icu::UnicodeSet non_ascii_latin_letters_;
   icu::UnicodeSet kana_letters_exceptions_;
   icu::UnicodeSet combining_diacritics_exceptions_;
-  icu::UnicodeSet cyrillic_letters_;
-  icu::UnicodeSet cyrillic_letters_latin_alike_;
   icu::UnicodeSet digits_;
   icu::UnicodeSet digit_lookalikes_;
   icu::UnicodeSet lgc_letters_n_ascii_;
@@ -119,6 +144,9 @@
   std::unique_ptr<icu::Transliterator> diacritic_remover_;
   std::unique_ptr<icu::Transliterator> extra_confusable_mapper_;
 
+  // List of scripts containing whole-script-confusable information.
+  std::vector<std::unique_ptr<WholeScriptConfusable>> wholescriptconfusables_;
+
   IDNSpoofChecker(const IDNSpoofChecker&) = delete;
   void operator=(const IDNSpoofChecker&) = delete;
 };
diff --git a/components/user_manager/fake_user_manager.cc b/components/user_manager/fake_user_manager.cc
index 263ed08..68a49f97 100644
--- a/components/user_manager/fake_user_manager.cc
+++ b/components/user_manager/fake_user_manager.cc
@@ -9,22 +9,28 @@
 
 #include "base/callback.h"
 #include "base/command_line.h"
+#include "base/single_thread_task_runner.h"
 #include "base/system/sys_info.h"
-#include "base/task_runner.h"
 #include "chromeos/constants/chromeos_switches.h"
 #include "components/user_manager/user_names.h"
 #include "components/user_manager/user_type.h"
 
 namespace {
 
-class FakeTaskRunner : public base::TaskRunner {
+class FakeTaskRunner : public base::SingleThreadTaskRunner {
  public:
+  // base::SingleThreadTaskRunner:
   bool PostDelayedTask(const base::Location& from_here,
                        base::OnceClosure task,
                        base::TimeDelta delay) override {
     std::move(task).Run();
     return true;
   }
+  bool PostNonNestableDelayedTask(const base::Location& from_here,
+                                  base::OnceClosure task,
+                                  base::TimeDelta delay) override {
+    return PostDelayedTask(from_here, std::move(task), delay);
+  }
   bool RunsTasksInCurrentSequence() const override { return true; }
 
  protected:
diff --git a/components/user_manager/user_manager_base.cc b/components/user_manager/user_manager_base.cc
index 3dbeae2..6fac5905 100644
--- a/components/user_manager/user_manager_base.cc
+++ b/components/user_manager/user_manager_base.cc
@@ -18,10 +18,10 @@
 #include "base/logging.h"
 #include "base/macros.h"
 #include "base/metrics/histogram_macros.h"
+#include "base/single_thread_task_runner.h"
 #include "base/strings/string_util.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
-#include "base/task_runner.h"
 #include "base/values.h"
 #include "components/prefs/pref_registry_simple.h"
 #include "components/prefs/pref_service.h"
@@ -107,8 +107,9 @@
   known_user::RegisterPrefs(registry);
 }
 
-UserManagerBase::UserManagerBase(scoped_refptr<base::TaskRunner> task_runner)
-    : task_runner_(task_runner) {}
+UserManagerBase::UserManagerBase(
+    scoped_refptr<base::SingleThreadTaskRunner> task_runner)
+    : task_runner_(std::move(task_runner)) {}
 
 UserManagerBase::~UserManagerBase() {
   // Can't use STLDeleteElements because of the private destructor of User.
diff --git a/components/user_manager/user_manager_base.h b/components/user_manager/user_manager_base.h
index 94e57832..feecb1f 100644
--- a/components/user_manager/user_manager_base.h
+++ b/components/user_manager/user_manager_base.h
@@ -13,6 +13,7 @@
 
 #include "base/feature_list.h"
 #include "base/macros.h"
+#include "base/memory/scoped_refptr.h"
 #include "base/memory/weak_ptr.h"
 #include "base/observer_list.h"
 #include "base/synchronization/lock.h"
@@ -27,7 +28,7 @@
 
 namespace base {
 class ListValue;
-class TaskRunner;
+class SingleThreadTaskRunner;
 }
 
 namespace user_manager {
@@ -40,9 +41,9 @@
 // Base implementation of the UserManager interface.
 class USER_MANAGER_EXPORT UserManagerBase : public UserManager {
  public:
-  // Creates UserManagerBase with |task_runner| for UI thread and
-  // |blocking_task_runner| for SequencedWorkerPool.
-  explicit UserManagerBase(scoped_refptr<base::TaskRunner> task_runner);
+  // Creates UserManagerBase with |task_runner| for UI thread.
+  explicit UserManagerBase(
+      scoped_refptr<base::SingleThreadTaskRunner> task_runner);
   ~UserManagerBase() override;
 
   // Registers UserManagerBase preferences.
@@ -391,7 +392,7 @@
   bool last_session_active_account_id_initialized_ = false;
 
   // TaskRunner for UI thread.
-  scoped_refptr<base::TaskRunner> task_runner_;
+  scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
 
   base::WeakPtrFactory<UserManagerBase> weak_factory_{this};
 
diff --git a/components/variations/service/variations_field_trial_creator.cc b/components/variations/service/variations_field_trial_creator.cc
index e9bb5a78..9009c19 100644
--- a/components/variations/service/variations_field_trial_creator.cc
+++ b/components/variations/service/variations_field_trial_creator.cc
@@ -236,8 +236,8 @@
     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_));
+  auto IsEnterpriseCallback = base::BindRepeating(
+      &VariationsServiceClient::IsEnterprise, base::Unretained(client_));
   std::unique_ptr<ClientFilterableState> state =
       std::make_unique<ClientFilterableState>(IsEnterpriseCallback);
   state->locale = application_locale_;
diff --git a/components/variations/service/variations_service.cc b/components/variations/service/variations_service.cc
index 2623a24..e17e607 100644
--- a/components/variations/service/variations_service.cc
+++ b/components/variations/service/variations_service.cc
@@ -643,8 +643,8 @@
 
   DCHECK(!request_scheduler_);
   request_scheduler_.reset(VariationsRequestScheduler::Create(
-      base::Bind(&VariationsService::FetchVariationsSeed,
-                 weak_ptr_factory_.GetWeakPtr()),
+      base::BindRepeating(&VariationsService::FetchVariationsSeed,
+                          weak_ptr_factory_.GetWeakPtr()),
       local_state_));
   // Note that the act of starting the scheduler will start the fetch, if the
   // scheduler deems appropriate.
diff --git a/components/variations/service/variations_service_unittest.cc b/components/variations/service/variations_service_unittest.cc
index 94a5cf48..107879e 100644
--- a/components/variations/service/variations_service_unittest.cc
+++ b/components/variations/service/variations_service_unittest.cc
@@ -320,7 +320,8 @@
     if (!metrics_state_manager_) {
       metrics_state_manager_ = metrics::MetricsStateManager::Create(
           &prefs_, enabled_state_provider_.get(), base::string16(),
-          base::Bind(&StubStoreClientInfo), base::Bind(&StubLoadClientInfo));
+          base::BindRepeating(&StubStoreClientInfo),
+          base::BindRepeating(&StubLoadClientInfo));
     }
     return metrics_state_manager_.get();
   }
diff --git a/components/variations/variations_request_scheduler.cc b/components/variations/variations_request_scheduler.cc
index 42c47b6..151f440d 100644
--- a/components/variations/variations_request_scheduler.cc
+++ b/components/variations/variations_request_scheduler.cc
@@ -13,8 +13,8 @@
 namespace variations {
 
 VariationsRequestScheduler::VariationsRequestScheduler(
-    const base::Closure& task) : task_(task) {
-}
+    const base::RepeatingClosure& task)
+    : task_(task) {}
 
 VariationsRequestScheduler::~VariationsRequestScheduler() {
 }
@@ -56,14 +56,14 @@
   return base::TimeDelta::FromMinutes(30);
 }
 
-base::Closure VariationsRequestScheduler::task() const {
+base::RepeatingClosure VariationsRequestScheduler::task() const {
   return task_;
 }
 
 #if !defined(OS_ANDROID) && !defined(OS_IOS)
 // static
 VariationsRequestScheduler* VariationsRequestScheduler::Create(
-    const base::Closure& task,
+    const base::RepeatingClosure& task,
     PrefService* local_state) {
   return new VariationsRequestScheduler(task);
 }
diff --git a/components/variations/variations_request_scheduler.h b/components/variations/variations_request_scheduler.h
index 2b945010..72ca48da 100644
--- a/components/variations/variations_request_scheduler.h
+++ b/components/variations/variations_request_scheduler.h
@@ -35,25 +35,25 @@
   virtual void OnAppEnterForeground();
 
   // Factory method for this class.
-  static VariationsRequestScheduler* Create(const base::Closure& task,
+  static VariationsRequestScheduler* Create(const base::RepeatingClosure& task,
                                             PrefService* local_state);
 
  protected:
   // |task| is the closure to call when the scheduler deems ready.
-  explicit VariationsRequestScheduler(const base::Closure& task);
+  explicit VariationsRequestScheduler(const base::RepeatingClosure& task);
 
   // Returns the time interval between variations seed fetches.
   base::TimeDelta GetFetchPeriod() const;
 
   // Getter for derived classes.
-  base::Closure task() const;
+  base::RepeatingClosure task() const;
 
  private:
   FRIEND_TEST_ALL_PREFIXES(VariationsRequestSchedulerTest,
                            ScheduleFetchShortly);
 
   // The task scheduled by this class.
-  base::Closure task_;
+  base::RepeatingClosure task_;
 
   // The timer used to repeatedly ping the server. Keep this as an instance
   // member so if VariationsRequestScheduler goes out of scope, the timer is
diff --git a/components/variations/variations_request_scheduler_mobile.cc b/components/variations/variations_request_scheduler_mobile.cc
index 32528e1..d0f350a 100644
--- a/components/variations/variations_request_scheduler_mobile.cc
+++ b/components/variations/variations_request_scheduler_mobile.cc
@@ -17,10 +17,9 @@
 }  // namespace
 
 VariationsRequestSchedulerMobile::VariationsRequestSchedulerMobile(
-    const base::Closure& task,
-    PrefService* local_state) :
-  VariationsRequestScheduler(task), local_state_(local_state) {
-}
+    const base::RepeatingClosure& task,
+    PrefService* local_state)
+    : VariationsRequestScheduler(task), local_state_(local_state) {}
 
 VariationsRequestSchedulerMobile::~VariationsRequestSchedulerMobile() {
 }
@@ -60,7 +59,7 @@
 
 // static
 VariationsRequestScheduler* VariationsRequestScheduler::Create(
-    const base::Closure& task,
+    const base::RepeatingClosure& task,
     PrefService* local_state) {
   return new VariationsRequestSchedulerMobile(task, local_state);
 }
diff --git a/components/variations/variations_request_scheduler_mobile.h b/components/variations/variations_request_scheduler_mobile.h
index 838373f..ee1e117d 100644
--- a/components/variations/variations_request_scheduler_mobile.h
+++ b/components/variations/variations_request_scheduler_mobile.h
@@ -21,7 +21,7 @@
  public:
   // |task} is the closure to call when the scheduler deems ready. |local_state|
   // is the PrefService that contains the time of the last fetch.
-  explicit VariationsRequestSchedulerMobile(const base::Closure& task,
+  explicit VariationsRequestSchedulerMobile(const base::RepeatingClosure& task,
                                             PrefService* local_state);
   ~VariationsRequestSchedulerMobile() override;
 
diff --git a/components/variations/variations_request_scheduler_mobile_unittest.cc b/components/variations/variations_request_scheduler_mobile_unittest.cc
index a457c4d..9482572 100644
--- a/components/variations/variations_request_scheduler_mobile_unittest.cc
+++ b/components/variations/variations_request_scheduler_mobile_unittest.cc
@@ -28,7 +28,8 @@
   prefs.registry()->RegisterTimePref(prefs::kVariationsLastFetchTime,
                                      base::Time::Now());
   int executed = 0;
-  const base::Closure task = base::Bind(&Increment, &executed);
+  const base::RepeatingClosure task =
+      base::BindRepeating(&Increment, &executed);
   VariationsRequestSchedulerMobile scheduler(task, &prefs);
   scheduler.Start();
   // We expect it the task to not have triggered.
@@ -41,7 +42,8 @@
   base::Time old = base::Time::Now() - base::TimeDelta::FromHours(24);
   prefs.registry()->RegisterTimePref(prefs::kVariationsLastFetchTime, old);
   int executed = 0;
-  const base::Closure task = base::Bind(&Increment, &executed);
+  const base::RepeatingClosure task =
+      base::BindRepeating(&Increment, &executed);
   VariationsRequestSchedulerMobile scheduler(task, &prefs);
   scheduler.Start();
   // We expect the task to have triggered.
@@ -57,7 +59,8 @@
   prefs.registry()->RegisterTimePref(prefs::kVariationsLastFetchTime,
                                      base::Time::Now());
   int executed = 0;
-  const base::Closure task = base::Bind(&Increment, &executed);
+  const base::RepeatingClosure task =
+      base::BindRepeating(&Increment, &executed);
   VariationsRequestSchedulerMobile scheduler(task, &prefs);
 
   // Verify timer not running.
@@ -83,7 +86,8 @@
   base::Time old = base::Time::Now() - base::TimeDelta::FromHours(24);
   prefs.registry()->RegisterTimePref(prefs::kVariationsLastFetchTime, old);
   int executed = 0;
-  const base::Closure task = base::Bind(&Increment, &executed);
+  const base::RepeatingClosure task =
+      base::BindRepeating(&Increment, &executed);
   VariationsRequestSchedulerMobile scheduler(task, &prefs);
 
   // Verify timer not running.
@@ -109,7 +113,8 @@
   base::Time old = base::Time::Now() - base::TimeDelta::FromHours(24);
   prefs.registry()->RegisterTimePref(prefs::kVariationsLastFetchTime, old);
   int executed = 0;
-  const base::Closure task = base::Bind(&Increment, &executed);
+  const base::RepeatingClosure task =
+      base::BindRepeating(&Increment, &executed);
   VariationsRequestSchedulerMobile scheduler(task, &prefs);
 
   scheduler.Start();
diff --git a/components/variations/variations_request_scheduler_unittest.cc b/components/variations/variations_request_scheduler_unittest.cc
index c035bcd..57390ce2 100644
--- a/components/variations/variations_request_scheduler_unittest.cc
+++ b/components/variations/variations_request_scheduler_unittest.cc
@@ -14,7 +14,7 @@
 TEST(VariationsRequestSchedulerTest, ScheduleFetchShortly) {
   base::test::SingleThreadTaskEnvironment task_environment;
 
-  const base::Closure task = base::DoNothing();
+  const base::RepeatingClosure task = base::DoNothing();
   VariationsRequestScheduler scheduler(task);
   EXPECT_FALSE(scheduler.one_shot_timer_.IsRunning());
 
diff --git a/components/variations/variations_seed_processor.h b/components/variations/variations_seed_processor.h
index 140dc271..8c3cd73e 100644
--- a/components/variations/variations_seed_processor.h
+++ b/components/variations/variations_seed_processor.h
@@ -33,8 +33,8 @@
 // Helper class to instantiate field trials from a variations seed.
 class VariationsSeedProcessor {
  public:
-  typedef base::Callback<void(uint32_t, const base::string16&)>
-      UIStringOverrideCallback;
+  using UIStringOverrideCallback =
+      base::RepeatingCallback<void(uint32_t, const base::string16&)>;
 
   VariationsSeedProcessor();
   virtual ~VariationsSeedProcessor();
diff --git a/components/variations/variations_seed_processor_unittest.cc b/components/variations/variations_seed_processor_unittest.cc
index f167e2e..0adc5ed 100644
--- a/components/variations/variations_seed_processor_unittest.cc
+++ b/components/variations/variations_seed_processor_unittest.cc
@@ -91,8 +91,8 @@
   typedef std::map<uint32_t, base::string16> OverrideMap;
 
   TestOverrideStringCallback()
-      : callback_(base::Bind(&TestOverrideStringCallback::Override,
-                             base::Unretained(this))) {}
+      : callback_(base::BindRepeating(&TestOverrideStringCallback::Override,
+                                      base::Unretained(this))) {}
 
   virtual ~TestOverrideStringCallback() {}
 
diff --git a/components/visitedlink/browser/visitedlink_writer.cc b/components/visitedlink/browser/visitedlink_writer.cc
index 09e0a04d..b90a1ab 100644
--- a/components/visitedlink/browser/visitedlink_writer.cc
+++ b/components/visitedlink/browser/visitedlink_writer.cc
@@ -31,9 +31,9 @@
 #include "url/gurl.h"
 
 #if defined(OS_WIN)
-#include <windows.h>
 #include <io.h>
 #include <shlobj.h>
+#include <windows.h>
 #endif  // defined(OS_WIN)
 
 using content::BrowserThread;
@@ -257,8 +257,8 @@
     // state. On the next start table will be rebuilt.
     base::FilePath filename;
     GetDatabaseFileName(&filename);
-    PostIOTask(FROM_HERE,
-               base::Bind(IgnoreResult(&base::DeleteFile), filename, false));
+    PostIOTask(FROM_HERE, base::BindOnce(IgnoreResult(&base::DeleteFile),
+                                         filename, false));
   }
 }
 
@@ -343,9 +343,9 @@
 }
 
 void VisitedLinkWriter::PostIOTask(const base::Location& from_here,
-                                   const base::Closure& task) {
+                                   base::OnceClosure task) {
   DCHECK(persist_to_disk_);
-  file_task_runner_->PostTask(from_here, task);
+  file_task_runner_->PostTask(from_here, std::move(task));
 }
 
 void VisitedLinkWriter::AddURL(const GURL& url) {
@@ -573,7 +573,7 @@
     file_ = static_cast<FILE**>(calloc(1, sizeof(*file_)));
     base::FilePath filename;
     GetDatabaseFileName(&filename);
-    PostIOTask(FROM_HERE, base::Bind(&AsyncOpen, file_, filename));
+    PostIOTask(FROM_HERE, base::BindOnce(&AsyncOpen, file_, filename));
   }
 
   // Write the new header.
@@ -590,7 +590,7 @@
               table_length_ * sizeof(Fingerprint));
 
   // The hash table may have shrunk, so make sure this is the end.
-  PostIOTask(FROM_HERE, base::Bind(&AsyncTruncate, file_));
+  PostIOTask(FROM_HERE, base::BindOnce(&AsyncTruncate, file_));
 }
 
 bool VisitedLinkWriter::InitFromFile() {
@@ -605,24 +605,24 @@
 
   table_is_loading_from_file_ = true;
 
-  TableLoadCompleteCallback callback = base::Bind(
+  TableLoadCompleteCallback callback = base::BindOnce(
       &VisitedLinkWriter::OnTableLoadComplete, weak_ptr_factory_.GetWeakPtr());
 
-  PostIOTask(FROM_HERE,
-             base::Bind(&VisitedLinkWriter::LoadFromFile, filename, callback));
+  PostIOTask(FROM_HERE, base::BindOnce(&VisitedLinkWriter::LoadFromFile,
+                                       filename, std::move(callback)));
 
   return true;
 }
 
 // static
-void VisitedLinkWriter::LoadFromFile(
-    const base::FilePath& filename,
-    const TableLoadCompleteCallback& callback) {
+void VisitedLinkWriter::LoadFromFile(const base::FilePath& filename,
+                                     TableLoadCompleteCallback callback) {
   scoped_refptr<LoadFromFileResult> load_from_file_result;
   bool success = LoadApartFromFile(filename, &load_from_file_result);
 
-  base::PostTask(FROM_HERE, {BrowserThread::UI},
-                 base::BindOnce(callback, success, load_from_file_result));
+  base::PostTask(
+      FROM_HERE, {BrowserThread::UI},
+      base::BindOnce(std::move(callback), success, load_from_file_result));
 }
 
 // static
@@ -898,7 +898,7 @@
   mapped_table_memory_ = base::MappedReadOnlyRegion();
   if (!persist_to_disk_ || !file_)
     return;
-  PostIOTask(FROM_HERE, base::Bind(&AsyncClose, file_));
+  PostIOTask(FROM_HERE, base::BindOnce(&AsyncClose, file_));
   // AsyncClose() will close the file and free the memory pointed by |file_|.
   file_ = nullptr;
 }
@@ -979,18 +979,18 @@
   // These table sizes are selected to be the maximum prime number less than
   // a "convenient" multiple of 1K.
   static const int table_sizes[] = {
-      16381,    // 16K  = 16384   <- don't shrink below this table size
-                //                   (should be == default_table_size)
-      32767,    // 32K  = 32768
-      65521,    // 64K  = 65536
-      130051,   // 128K = 131072
-      262127,   // 256K = 262144
-      524269,   // 512K = 524288
-      1048549,  // 1M   = 1048576
-      2097143,  // 2M   = 2097152
-      4194301,  // 4M   = 4194304
-      8388571,  // 8M   = 8388608
-      16777199,  // 16M  = 16777216
+      16381,      // 16K  = 16384   <- don't shrink below this table size
+                  //                   (should be == default_table_size)
+      32767,      // 32K  = 32768
+      65521,      // 64K  = 65536
+      130051,     // 128K = 131072
+      262127,     // 256K = 262144
+      524269,     // 512K = 524288
+      1048549,    // 1M   = 1048576
+      2097143,    // 2M   = 2097152
+      4194301,    // 4M   = 4194304
+      8388571,    // 8M   = 8388608
+      16777199,   // 16M  = 16777216
       33554347};  // 32M  = 33554432
 
   // Try to leave the table 33% full.
@@ -1057,10 +1057,8 @@
   table_builder_ = nullptr;  // Will release our reference to the builder.
 
   // Notify the unit test that the rebuild is complete (will be NULL in prod.)
-  if (!rebuild_complete_task_.is_null()) {
-    rebuild_complete_task_.Run();
-    rebuild_complete_task_.Reset();
-  }
+  if (!rebuild_complete_task_.is_null())
+    std::move(rebuild_complete_task_).Run();
 }
 
 void VisitedLinkWriter::WriteToFile(FILE** file,
@@ -1069,9 +1067,10 @@
                                     int32_t data_size) {
   DCHECK(persist_to_disk_);
   DCHECK(!table_is_loading_from_file_);
-  PostIOTask(FROM_HERE,
-      base::Bind(&AsyncWrite, file, offset,
-                 std::string(static_cast<const char*>(data), data_size)));
+  PostIOTask(
+      FROM_HERE,
+      base::BindOnce(&AsyncWrite, file, offset,
+                     std::string(static_cast<const char*>(data), data_size)));
 }
 
 void VisitedLinkWriter::WriteUsedItemCountToFile() {
diff --git a/components/visitedlink/browser/visitedlink_writer.h b/components/visitedlink/browser/visitedlink_writer.h
index 13730c6..6f0d8cf 100644
--- a/components/visitedlink/browser/visitedlink_writer.h
+++ b/components/visitedlink/browser/visitedlink_writer.h
@@ -150,9 +150,9 @@
   // Sets a task to execute when the next rebuild from history is complete.
   // This is used by unit tests to wait for the rebuild to complete before
   // they continue. The pointer will be owned by this object after the call.
-  void set_rebuild_complete_task(const base::Closure& task) {
+  void set_rebuild_complete_task(base::OnceClosure task) {
     DCHECK(rebuild_complete_task_.is_null());
-    rebuild_complete_task_ = task;
+    rebuild_complete_task_ = std::move(task);
   }
 
   // returns the number of items in the table for testing verification
@@ -163,9 +163,7 @@
 
   // Call to cause the entire database file to be re-written from scratch
   // to disk. Used by the performance tester.
-  void RewriteFile() {
-    WriteFullTable();
-  }
+  void RewriteFile() { WriteFullTable(); }
 #endif
 
  private:
@@ -178,7 +176,7 @@
   // thread.
   struct LoadFromFileResult;
 
-  using TableLoadCompleteCallback = base::Callback<void(
+  using TableLoadCompleteCallback = base::OnceCallback<void(
       bool success,
       scoped_refptr<LoadFromFileResult> load_from_file_result)>;
 
@@ -224,7 +222,7 @@
   // These functions are only called if |persist_to_disk_| is true.
 
   // Posts the given task to the blocking worker pool with our options.
-  void PostIOTask(const base::Location& from_here, const base::Closure& task);
+  void PostIOTask(const base::Location& from_here, base::OnceClosure task);
 
   // Writes the entire table to disk. It will leave the table file open and
   // the handle to it will be stored in file_.
@@ -237,7 +235,7 @@
   // is called from the background thread. It must be first in the sequence of
   // background operations with the database file.
   static void LoadFromFile(const base::FilePath& filename,
-                           const TableLoadCompleteCallback& callback);
+                           TableLoadCompleteCallback callback);
 
   // Load the table from the database file. Returns true on success.
   // Fills parameter |load_from_file_result| on success. It is called from
@@ -473,7 +471,7 @@
 
   // When set, indicates the task that should be run after the next rebuild from
   // history is complete.
-  base::Closure rebuild_complete_task_;
+  base::OnceClosure rebuild_complete_task_;
 
   // Set to prevent us from attempting to rebuild the database from global
   // history if we have an error opening the file. This is used for testing,
diff --git a/components/visitedlink/renderer/visitedlink_reader.cc b/components/visitedlink/renderer/visitedlink_reader.cc
index 02e8ecc..855977c 100644
--- a/components/visitedlink/renderer/visitedlink_reader.cc
+++ b/components/visitedlink/renderer/visitedlink_reader.cc
@@ -21,9 +21,11 @@
   FreeTable();
 }
 
-base::Callback<void(mojo::PendingReceiver<mojom::VisitedLinkNotificationSink>)>
+base::RepeatingCallback<
+    void(mojo::PendingReceiver<mojom::VisitedLinkNotificationSink>)>
 VisitedLinkReader::GetBindCallback() {
-  return base::Bind(&VisitedLinkReader::Bind, weak_factory_.GetWeakPtr());
+  return base::BindRepeating(&VisitedLinkReader::Bind,
+                             weak_factory_.GetWeakPtr());
 }
 
 // Initializes the table with the given shared memory handle. This memory is
diff --git a/components/visitedlink/renderer/visitedlink_reader.h b/components/visitedlink/renderer/visitedlink_reader.h
index 0166078..2706fae 100644
--- a/components/visitedlink/renderer/visitedlink_reader.h
+++ b/components/visitedlink/renderer/visitedlink_reader.h
@@ -25,7 +25,7 @@
   VisitedLinkReader();
   ~VisitedLinkReader() override;
 
-  base::Callback<
+  base::RepeatingCallback<
       void(mojo::PendingReceiver<mojom::VisitedLinkNotificationSink>)>
   GetBindCallback();
 
diff --git a/components/visitedlink/test/visitedlink_unittest.cc b/components/visitedlink/test/visitedlink_unittest.cc
index 83428116..75de331 100644
--- a/components/visitedlink/test/visitedlink_unittest.cc
+++ b/components/visitedlink/test/visitedlink_unittest.cc
@@ -79,8 +79,7 @@
 void TestVisitedLinkDelegate::RebuildTable(
     const scoped_refptr<URLEnumerator>& enumerator) {
   for (URLs::const_iterator itr = rebuild_urls_.begin();
-       itr != rebuild_urls_.end();
-       ++itr)
+       itr != rebuild_urls_.end(); ++itr)
     enumerator->OnURL(*itr);
   enumerator->OnComplete(true);
 }
@@ -102,9 +101,7 @@
 };
 
 TestURLIterator::TestURLIterator(const URLs& urls)
-    : iterator_(urls.begin()),
-      end_(urls.end()) {
-}
+    : iterator_(urls.begin()), end_(urls.end()) {}
 
 const GURL& TestURLIterator::NextURL() {
   return *(iterator_++);
@@ -119,9 +116,7 @@
 class TrackingVisitedLinkEventListener : public VisitedLinkWriter::Listener {
  public:
   TrackingVisitedLinkEventListener()
-      : reset_count_(0),
-        completely_reset_count_(0),
-        add_count_(0) {}
+      : reset_count_(0), completely_reset_count_(0), add_count_(0) {}
 
   void NewTable(base::ReadOnlySharedMemoryRegion* table_region) override {
     if (table_region->IsValid()) {
@@ -617,7 +612,7 @@
   int completely_reset_event_count_;
   int new_table_count_;
 
-  base::Closure quit_closure_;
+  base::OnceClosure quit_closure_;
   mojo::ReceiverSet<mojom::VisitedLinkNotificationSink> receiver_;
 
   DISALLOW_COPY_AND_ASSIGN(VisitCountingContext);
@@ -630,9 +625,9 @@
       content::BrowserContext* browser_context,
       VisitCountingContext* context)
       : MockRenderProcessHost(browser_context) {
-    OverrideBinderForTesting(
-        mojom::VisitedLinkNotificationSink::Name_,
-        base::Bind(&VisitCountingContext::Bind, base::Unretained(context)));
+    OverrideBinderForTesting(mojom::VisitedLinkNotificationSink::Name_,
+                             base::BindRepeating(&VisitCountingContext::Bind,
+                                                 base::Unretained(context)));
     content::NotificationService::current()->Notify(
         content::NOTIFICATION_RENDERER_PROCESS_CREATED,
         content::Source<RenderProcessHost>(this),
diff --git a/components/viz/common/frame_sinks/copy_output_request.h b/components/viz/common/frame_sinks/copy_output_request.h
index d38cfde..a62fca6 100644
--- a/components/viz/common/frame_sinks/copy_output_request.h
+++ b/components/viz/common/frame_sinks/copy_output_request.h
@@ -9,7 +9,7 @@
 
 #include "base/callback.h"
 #include "base/optional.h"
-#include "base/task_runner.h"
+#include "base/sequenced_task_runner.h"
 #include "base/unguessable_token.h"
 #include "components/viz/common/frame_sinks/copy_output_result.h"
 #include "components/viz/common/resources/single_release_callback.h"
@@ -59,7 +59,8 @@
   // Requests that the result callback be run as a task posted to the given
   // |task_runner|. If this is not set, the result callback could be run from
   // any context.
-  void set_result_task_runner(scoped_refptr<base::TaskRunner> task_runner) {
+  void set_result_task_runner(
+      scoped_refptr<base::SequencedTaskRunner> task_runner) {
     result_task_runner_ = std::move(task_runner);
   }
   bool has_result_task_runner() const { return !!result_task_runner_; }
@@ -127,7 +128,7 @@
 
   const ResultFormat result_format_;
   CopyOutputRequestCallback result_callback_;
-  scoped_refptr<base::TaskRunner> result_task_runner_;
+  scoped_refptr<base::SequencedTaskRunner> result_task_runner_;
   gfx::Vector2d scale_from_;
   gfx::Vector2d scale_to_;
   base::Optional<base::UnguessableToken> source_;
diff --git a/components/viz/host/hit_test/hit_test_query.h b/components/viz/host/hit_test/hit_test_query.h
index 91b5bcd..e97163b0 100644
--- a/components/viz/host/hit_test/hit_test_query.h
+++ b/components/viz/host/hit_test/hit_test_query.h
@@ -109,6 +109,10 @@
     return hit_test_data_;
   }
 
+  // Returns true if |id| is present in |hit_test_data|. If |id| is present
+  // |index| is set accordingly.
+  bool FindIndexOfFrameSink(const FrameSinkId& id, size_t* index) const;
+
  protected:
   // The FindTargetForLocation() functions call into this.
   // If |is_location_relative_to_parent| is true, |location| is relative to
@@ -148,10 +152,6 @@
 
   void RecordSlowPathHitTestReasons(uint32_t) const;
 
-  // Returns true if |id| is present in |hit_test_data|. If |id| is present
-  // |index| is set accordingly.
-  bool FindIndexOfFrameSink(const FrameSinkId& id, size_t* index) const;
-
   std::vector<AggregatedHitTestRegion> hit_test_data_;
 
   DISALLOW_COPY_AND_ASSIGN(HitTestQuery);
diff --git a/components/viz/service/display/display.cc b/components/viz/service/display/display.cc
index 0ef05d3..d4800b0 100644
--- a/components/viz/service/display/display.cc
+++ b/components/viz/service/display/display.cc
@@ -88,12 +88,6 @@
     UMA_HISTOGRAM_CUSTOM_TIMES(
         "Graphics.PresentationTimestamp.LargePresentationDelta", difference,
         base::TimeDelta::FromMinutes(3), base::TimeDelta::FromHours(1), 50);
-
-    // Ignore long presentation times for the tests that override time
-    if (!base::subtle::ScopedTimeClockOverrides::overrides_active()) {
-      // In debug builds, just crash immediately.
-      DCHECK(false);
-    }
   }
   return feedback;
 }
diff --git a/components/viz/service/display/overlay_processor_mac.cc b/components/viz/service/display/overlay_processor_mac.cc
index 2e4a467..9aae73aa 100644
--- a/components/viz/service/display/overlay_processor_mac.cc
+++ b/components/viz/service/display/overlay_processor_mac.cc
@@ -35,7 +35,9 @@
 }
 
 gfx::Rect OverlayProcessorMac::GetAndResetOverlayDamage() {
-  return gfx::Rect();
+  gfx::Rect result = ca_overlay_damage_rect_;
+  ca_overlay_damage_rect_ = gfx::Rect();
+  return result;
 }
 
 void OverlayProcessorMac::ProcessForOverlays(
@@ -73,6 +75,7 @@
   // CALayer overlays are all-or-nothing. If all quads were replaced with
   // layers then mark the output surface as already handled.
   output_surface_already_handled_ = true;
+  ca_overlay_damage_rect_ = render_pass->output_rect;
   *damage_rect = gfx::Rect();
 }
 
diff --git a/components/viz/service/display/overlay_processor_mac.h b/components/viz/service/display/overlay_processor_mac.h
index 5b24400..462b41a 100644
--- a/components/viz/service/display/overlay_processor_mac.h
+++ b/components/viz/service/display/overlay_processor_mac.h
@@ -64,9 +64,10 @@
  private:
   const bool could_overlay_;
   const bool enable_ca_overlay_;
+  gfx::Rect ca_overlay_damage_rect_;
 
  protected:
-  // Proteccted for testing.
+  // Protected for testing.
   // TODO(weiliangc): Eventually fold the CaLayerOverlayProcessor into this
   // class.
   std::unique_ptr<CALayerOverlayProcessor> ca_layer_overlay_processor_;
diff --git a/components/viz/service/display/skia_renderer.cc b/components/viz/service/display/skia_renderer.cc
index 9051462..91712c7 100644
--- a/components/viz/service/display/skia_renderer.cc
+++ b/components/viz/service/display/skia_renderer.cc
@@ -2163,8 +2163,8 @@
       return nullptr;
 
     const char* hdr = R"(
-layout(ctype=float) uniform half offset;
-layout(ctype=float) uniform half multiplier;
+uniform half offset;
+uniform half multiplier;
 
 void main(inout half4 color) {
   // un-premultiply alpha
diff --git a/components/viz/service/display_embedder/skia_output_device.cc b/components/viz/service/display_embedder/skia_output_device.cc
index f056a00..a48a773 100644
--- a/components/viz/service/display_embedder/skia_output_device.cc
+++ b/components/viz/service/display_embedder/skia_output_device.cc
@@ -8,6 +8,7 @@
 
 #include "base/logging.h"
 #include "components/viz/service/display/dc_layer_overlay.h"
+#include "gpu/command_buffer/service/memory_tracking.h"
 #include "third_party/skia/include/core/SkSurface.h"
 #include "ui/gfx/gpu_fence.h"
 #include "ui/gfx/presentation_feedback.h"
@@ -16,10 +17,13 @@
 
 SkiaOutputDevice::SkiaOutputDevice(
     bool need_swap_semaphore,
+    gpu::MemoryTracker* memory_tracker,
     DidSwapBufferCompleteCallback did_swap_buffer_complete_callback)
     : need_swap_semaphore_(need_swap_semaphore),
       did_swap_buffer_complete_callback_(
-          std::move(did_swap_buffer_complete_callback)) {}
+          std::move(did_swap_buffer_complete_callback)),
+      memory_type_tracker_(
+          std::make_unique<gpu::MemoryTypeTracker>(memory_tracker)) {}
 
 SkiaOutputDevice::~SkiaOutputDevice() = default;
 
diff --git a/components/viz/service/display_embedder/skia_output_device.h b/components/viz/service/display_embedder/skia_output_device.h
index e2a7093..82822077 100644
--- a/components/viz/service/display_embedder/skia_output_device.h
+++ b/components/viz/service/display_embedder/skia_output_device.h
@@ -37,6 +37,11 @@
 class GLImage;
 }
 
+namespace gpu {
+class MemoryTracker;
+class MemoryTypeTracker;
+}  // namespace gpu
+
 namespace viz {
 
 class SkiaOutputDevice {
@@ -71,6 +76,7 @@
                                    const gfx::Size& pixel_size)>;
   SkiaOutputDevice(
       bool need_swap_semaphore,
+      gpu::MemoryTracker* memory_tracker,
       DidSwapBufferCompleteCallback did_swap_buffer_complete_callback);
   virtual ~SkiaOutputDevice();
 
@@ -160,6 +166,8 @@
   // RGBX format is emulated with RGBA.
   bool is_emulated_rgbx_ = false;
 
+  std::unique_ptr<gpu::MemoryTypeTracker> memory_type_tracker_;
+
   DISALLOW_COPY_AND_ASSIGN(SkiaOutputDevice);
 };
 
diff --git a/components/viz/service/display_embedder/skia_output_device_buffer_queue.cc b/components/viz/service/display_embedder/skia_output_device_buffer_queue.cc
index 3cc3c19..34a3c67 100644
--- a/components/viz/service/display_embedder/skia_output_device_buffer_queue.cc
+++ b/components/viz/service/display_embedder/skia_output_device_buffer_queue.cc
@@ -189,10 +189,11 @@
 SkiaOutputDeviceBufferQueue::SkiaOutputDeviceBufferQueue(
     scoped_refptr<gl::GLSurface> gl_surface,
     SkiaOutputSurfaceDependency* deps,
-    const DidSwapBufferCompleteCallback& did_swap_buffer_complete_callback,
     gpu::MemoryTracker* memory_tracker,
+    const DidSwapBufferCompleteCallback& did_swap_buffer_complete_callback,
     uint32_t shared_image_usage)
     : SkiaOutputDevice(false /*need_swap_semaphore */,
+                       memory_tracker,
                        did_swap_buffer_complete_callback),
       dependency_(deps),
       gl_surface_(gl_surface),
@@ -226,12 +227,12 @@
 SkiaOutputDeviceBufferQueue::SkiaOutputDeviceBufferQueue(
     scoped_refptr<gl::GLSurface> gl_surface,
     SkiaOutputSurfaceDependency* deps,
-    const DidSwapBufferCompleteCallback& did_swap_buffer_complete_callback,
-    gpu::MemoryTracker* memory_tracker)
+    gpu::MemoryTracker* memory_tracker,
+    const DidSwapBufferCompleteCallback& did_swap_buffer_complete_callback)
     : SkiaOutputDeviceBufferQueue(gl_surface,
                                   deps,
-                                  did_swap_buffer_complete_callback,
                                   memory_tracker,
+                                  did_swap_buffer_complete_callback,
                                   kSharedImageUsage) {}
 
 SkiaOutputDeviceBufferQueue::~SkiaOutputDeviceBufferQueue() {
@@ -242,8 +243,8 @@
 std::unique_ptr<SkiaOutputDeviceBufferQueue>
 SkiaOutputDeviceBufferQueue::Create(
     SkiaOutputSurfaceDependency* deps,
-    const DidSwapBufferCompleteCallback& did_swap_buffer_complete_callback,
-    gpu::MemoryTracker* memory_tracker) {
+    gpu::MemoryTracker* memory_tracker,
+    const DidSwapBufferCompleteCallback& did_swap_buffer_complete_callback) {
 #if defined(OS_ANDROID)
   if (!features::IsAndroidSurfaceControlEnabled())
     return nullptr;
@@ -268,8 +269,8 @@
   }
 
   return std::make_unique<SkiaOutputDeviceBufferQueue>(
-      std::move(gl_surface), deps, did_swap_buffer_complete_callback,
-      memory_tracker);
+      std::move(gl_surface), deps, memory_tracker,
+      did_swap_buffer_complete_callback);
 #else
   return nullptr;
 #endif
diff --git a/components/viz/service/display_embedder/skia_output_device_buffer_queue.h b/components/viz/service/display_embedder/skia_output_device_buffer_queue.h
index 56de33f..2ad1af2 100644
--- a/components/viz/service/display_embedder/skia_output_device_buffer_queue.h
+++ b/components/viz/service/display_embedder/skia_output_device_buffer_queue.h
@@ -15,10 +15,6 @@
 class GLSurface;
 }  // namespace gl
 
-namespace gpu {
-class MemoryTracker;
-}  // namespace gpu
-
 namespace viz {
 
 class SkiaOutputSurfaceDependency;
@@ -29,20 +25,20 @@
   SkiaOutputDeviceBufferQueue(
       scoped_refptr<gl::GLSurface> gl_surface,
       SkiaOutputSurfaceDependency* deps,
-      const DidSwapBufferCompleteCallback& did_swap_buffer_complete_callback,
-      gpu::MemoryTracker* memory_tracker);
+      gpu::MemoryTracker* memory_tracker,
+      const DidSwapBufferCompleteCallback& did_swap_buffer_complete_callback);
   SkiaOutputDeviceBufferQueue(
       scoped_refptr<gl::GLSurface> gl_surface,
       SkiaOutputSurfaceDependency* deps,
-      const DidSwapBufferCompleteCallback& did_swap_buffer_complete_callback,
       gpu::MemoryTracker* memory_tracker,
+      const DidSwapBufferCompleteCallback& did_swap_buffer_complete_callback,
       uint32_t shared_image_usage);
   ~SkiaOutputDeviceBufferQueue() override;
 
   static std::unique_ptr<SkiaOutputDeviceBufferQueue> Create(
       SkiaOutputSurfaceDependency* deps,
-      const DidSwapBufferCompleteCallback& did_swap_buffer_complete_callback,
-      gpu::MemoryTracker* memory_tracker);
+      gpu::MemoryTracker* memory_tracker,
+      const DidSwapBufferCompleteCallback& did_swap_buffer_complete_callback);
 
   void SwapBuffers(BufferPresentedCallback feedback,
                    std::vector<ui::LatencyInfo> latency_info) override;
diff --git a/components/viz/service/display_embedder/skia_output_device_buffer_queue_unittest.cc b/components/viz/service/display_embedder/skia_output_device_buffer_queue_unittest.cc
index a82dc62..19ab3df 100644
--- a/components/viz/service/display_embedder/skia_output_device_buffer_queue_unittest.cc
+++ b/components/viz/service/display_embedder/skia_output_device_buffer_queue_unittest.cc
@@ -201,8 +201,8 @@
 
     std::unique_ptr<SkiaOutputDeviceBufferQueue> onscreen_device =
         std::make_unique<SkiaOutputDeviceBufferQueue>(
-            gl_surface_, dependency_.get(), present_callback,
-            memory_tracker_.get(), shared_image_usage);
+            gl_surface_, dependency_.get(), memory_tracker_.get(),
+            present_callback, shared_image_usage);
 
     output_device_ = std::move(onscreen_device);
   }
diff --git a/components/viz/service/display_embedder/skia_output_device_dawn.cc b/components/viz/service/display_embedder/skia_output_device_dawn.cc
index 86dfa310..5accafa 100644
--- a/components/viz/service/display_embedder/skia_output_device_dawn.cc
+++ b/components/viz/service/display_embedder/skia_output_device_dawn.cc
@@ -32,8 +32,10 @@
 SkiaOutputDeviceDawn::SkiaOutputDeviceDawn(
     DawnContextProvider* context_provider,
     gfx::AcceleratedWidget widget,
+    gpu::MemoryTracker* memory_tracker,
     DidSwapBufferCompleteCallback did_swap_buffer_complete_callback)
     : SkiaOutputDevice(/*need_swap_semaphore=*/false,
+                       memory_tracker,
                        did_swap_buffer_complete_callback),
       context_provider_(context_provider),
       widget_(widget) {
diff --git a/components/viz/service/display_embedder/skia_output_device_dawn.h b/components/viz/service/display_embedder/skia_output_device_dawn.h
index 02545e5..86ea07d1 100644
--- a/components/viz/service/display_embedder/skia_output_device_dawn.h
+++ b/components/viz/service/display_embedder/skia_output_device_dawn.h
@@ -24,6 +24,7 @@
   SkiaOutputDeviceDawn(
       DawnContextProvider* context_provider,
       gfx::AcceleratedWidget widget,
+      gpu::MemoryTracker* memory_tracker,
       DidSwapBufferCompleteCallback did_swap_buffer_complete_callback);
   ~SkiaOutputDeviceDawn() override;
 
diff --git a/components/viz/service/display_embedder/skia_output_device_gl.cc b/components/viz/service/display_embedder/skia_output_device_gl.cc
index 42105545..78fd8d9 100644
--- a/components/viz/service/display_embedder/skia_output_device_gl.cc
+++ b/components/viz/service/display_embedder/skia_output_device_gl.cc
@@ -32,8 +32,10 @@
     gpu::MailboxManager* mailbox_manager,
     scoped_refptr<gl::GLSurface> gl_surface,
     scoped_refptr<gpu::gles2::FeatureInfo> feature_info,
+    gpu::MemoryTracker* memory_tracker,
     DidSwapBufferCompleteCallback did_swap_buffer_complete_callback)
     : SkiaOutputDevice(/*need_swap_semaphore=*/false,
+                       memory_tracker,
                        std::move(did_swap_buffer_complete_callback)),
       mailbox_manager_(mailbox_manager),
       gl_surface_(std::move(gl_surface)) {
diff --git a/components/viz/service/display_embedder/skia_output_device_gl.h b/components/viz/service/display_embedder/skia_output_device_gl.h
index 8e65866..7ad1096 100644
--- a/components/viz/service/display_embedder/skia_output_device_gl.h
+++ b/components/viz/service/display_embedder/skia_output_device_gl.h
@@ -43,6 +43,7 @@
       gpu::MailboxManager* mailbox_manager,
       scoped_refptr<gl::GLSurface> gl_surface,
       scoped_refptr<gpu::gles2::FeatureInfo> feature_info,
+      gpu::MemoryTracker* memory_tracker,
       DidSwapBufferCompleteCallback did_swap_buffer_complete_callback);
   ~SkiaOutputDeviceGL() override;
 
diff --git a/components/viz/service/display_embedder/skia_output_device_offscreen.cc b/components/viz/service/display_embedder/skia_output_device_offscreen.cc
index 98b5e317..7c2a4a83 100644
--- a/components/viz/service/display_embedder/skia_output_device_offscreen.cc
+++ b/components/viz/service/display_embedder/skia_output_device_offscreen.cc
@@ -26,10 +26,10 @@
     gpu::MemoryTracker* memory_tracker,
     DidSwapBufferCompleteCallback did_swap_buffer_complete_callback)
     : SkiaOutputDevice(false /*need_swap_semaphore */,
+                       memory_tracker,
                        did_swap_buffer_complete_callback),
       context_state_(context_state),
-      has_alpha_(has_alpha),
-      memory_tracker_(memory_tracker) {
+      has_alpha_(has_alpha) {
   capabilities_.flipped_output_surface = flipped;
   capabilities_.supports_post_sub_buffer = true;
 }
@@ -101,7 +101,7 @@
     size_t estimated_size = info.computeMinByteSize();
     backbuffer_estimated_size_ = estimated_size;
   }
-  memory_tracker_->TrackMemoryAllocatedChange(backbuffer_estimated_size_);
+  memory_type_tracker_->TrackMemAlloc(backbuffer_estimated_size_);
 }
 
 void SkiaOutputDeviceOffscreen::DiscardBackbuffer() {
@@ -109,7 +109,7 @@
     sk_surface_.reset();
     DeleteGrBackendTexture(context_state_.get(), &backend_texture_);
     backend_texture_ = GrBackendTexture();
-    memory_tracker_->TrackMemoryAllocatedChange(-backbuffer_estimated_size_);
+    memory_type_tracker_->TrackMemFree(backbuffer_estimated_size_);
     backbuffer_estimated_size_ = 0u;
   }
 }
diff --git a/components/viz/service/display_embedder/skia_output_device_offscreen.h b/components/viz/service/display_embedder/skia_output_device_offscreen.h
index d0513b13..3fd4700 100644
--- a/components/viz/service/display_embedder/skia_output_device_offscreen.h
+++ b/components/viz/service/display_embedder/skia_output_device_offscreen.h
@@ -52,7 +52,6 @@
   gfx::Size size_;
   uint64_t backbuffer_estimated_size_ = 0;
   sk_sp<SkColorSpace> sk_color_space_;
-  gpu::MemoryTracker* const memory_tracker_;
 
   DISALLOW_COPY_AND_ASSIGN(SkiaOutputDeviceOffscreen);
 };
diff --git a/components/viz/service/display_embedder/skia_output_device_vulkan.cc b/components/viz/service/display_embedder/skia_output_device_vulkan.cc
index be4ccc0..e39d0f05 100644
--- a/components/viz/service/display_embedder/skia_output_device_vulkan.cc
+++ b/components/viz/service/display_embedder/skia_output_device_vulkan.cc
@@ -22,8 +22,10 @@
 SkiaOutputDeviceVulkan::SkiaOutputDeviceVulkan(
     VulkanContextProvider* context_provider,
     gpu::SurfaceHandle surface_handle,
+    gpu::MemoryTracker* memory_tracker,
     DidSwapBufferCompleteCallback did_swap_buffer_complete_callback)
     : SkiaOutputDevice(true /*need_swap_semaphore */,
+                       memory_tracker,
                        did_swap_buffer_complete_callback),
       context_provider_(context_provider),
       surface_handle_(surface_handle) {
diff --git a/components/viz/service/display_embedder/skia_output_device_vulkan.h b/components/viz/service/display_embedder/skia_output_device_vulkan.h
index 129cd9f..c47b9dc 100644
--- a/components/viz/service/display_embedder/skia_output_device_vulkan.h
+++ b/components/viz/service/display_embedder/skia_output_device_vulkan.h
@@ -27,6 +27,7 @@
   SkiaOutputDeviceVulkan(
       VulkanContextProvider* context_provider,
       gpu::SurfaceHandle surface_handle,
+      gpu::MemoryTracker* memory_tracker,
       DidSwapBufferCompleteCallback did_swap_buffer_complete_callback);
   ~SkiaOutputDeviceVulkan() override;
 
diff --git a/components/viz/service/display_embedder/skia_output_surface_dependency_impl.cc b/components/viz/service/display_embedder/skia_output_surface_dependency_impl.cc
index 963e4f06..ea1cd03 100644
--- a/components/viz/service/display_embedder/skia_output_surface_dependency_impl.cc
+++ b/components/viz/service/display_embedder/skia_output_surface_dependency_impl.cc
@@ -112,13 +112,12 @@
       FROM_HERE,
       base::BindOnce(&gl::GLSurface::AddRef, base::Unretained(surface)));
   auto release_callback = base::BindOnce(
-      [](const scoped_refptr<base::TaskRunner>& runner,
+      [](const scoped_refptr<base::SequencedTaskRunner>& runner,
          gl::GLSurface* surface) {
         runner->PostTask(FROM_HERE, base::BindOnce(&gl::GLSurface::Release,
                                                    base::Unretained(surface)));
       },
-      base::WrapRefCounted(gpu_service_impl_->main_runner()),
-      base::Unretained(surface));
+      gpu_service_impl_->main_runner(), base::Unretained(surface));
   return base::ScopedClosureRunner(std::move(release_callback));
 }
 
diff --git a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
index 6935b02..40f6cc2 100644
--- a/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
+++ b/components/viz/service/display_embedder/skia_output_surface_impl_on_gpu.cc
@@ -1439,8 +1439,8 @@
       if (gl_surface_->IsSurfaceless()) {
         std::unique_ptr<SkiaOutputDeviceBufferQueue> onscreen_device =
             std::make_unique<SkiaOutputDeviceBufferQueue>(
-                gl_surface_, dependency_, did_swap_buffer_complete_callback_,
-                memory_tracker_.get());
+                gl_surface_, dependency_, memory_tracker_.get(),
+                did_swap_buffer_complete_callback_);
         supports_alpha_ = onscreen_device->supports_alpha();
         output_device_ = std::move(onscreen_device);
 
@@ -1448,7 +1448,7 @@
         std::unique_ptr<SkiaOutputDeviceGL> onscreen_device =
             std::make_unique<SkiaOutputDeviceGL>(
                 dependency_->GetMailboxManager(), gl_surface_, feature_info_,
-                did_swap_buffer_complete_callback_);
+                memory_tracker_.get(), did_swap_buffer_complete_callback_);
 
         onscreen_device->Initialize(gr_context(), context);
         supports_alpha_ = onscreen_device->supports_alpha();
@@ -1485,11 +1485,11 @@
     } else {
       output_device_ = std::make_unique<SkiaOutputDeviceVulkan>(
           vulkan_context_provider_, dependency_->GetSurfaceHandle(),
-          did_swap_buffer_complete_callback_);
+          memory_tracker_.get(), did_swap_buffer_complete_callback_);
     }
 #else
     auto output_device = SkiaOutputDeviceBufferQueue::Create(
-        dependency_, did_swap_buffer_complete_callback_, memory_tracker_.get());
+        dependency_, memory_tracker_.get(), did_swap_buffer_complete_callback_);
     if (output_device) {
       // TODO(https://crbug.com/1012401): don't depend on GL.
       gl_surface_ = output_device->gl_surface();
@@ -1497,7 +1497,7 @@
     } else {
       output_device_ = std::make_unique<SkiaOutputDeviceVulkan>(
           vulkan_context_provider_, dependency_->GetSurfaceHandle(),
-          did_swap_buffer_complete_callback_);
+          memory_tracker_.get(), did_swap_buffer_complete_callback_);
     }
 #endif
   }
@@ -1525,7 +1525,7 @@
 #else
     output_device_ = std::make_unique<SkiaOutputDeviceDawn>(
         dawn_context_provider_, dependency_->GetSurfaceHandle(),
-        did_swap_buffer_complete_callback_);
+        memory_tracker_.get(), did_swap_buffer_complete_callback_);
 #endif
   }
 #endif
diff --git a/components/viz/service/display_embedder/software_output_device_x11.cc b/components/viz/service/display_embedder/software_output_device_x11.cc
index 58be4eb..87f8b6b 100644
--- a/components/viz/service/display_embedder/software_output_device_x11.cc
+++ b/components/viz/service/display_embedder/software_output_device_x11.cc
@@ -25,10 +25,10 @@
 
 SoftwareOutputDeviceX11::SoftwareOutputDeviceX11(
     gfx::AcceleratedWidget widget,
-    base::TaskRunner* gpu_task_runner)
+    scoped_refptr<base::SequencedTaskRunner> gpu_task_runner)
     : x11_software_bitmap_presenter_(widget,
                                      task_runner_.get(),
-                                     gpu_task_runner) {
+                                     std::move(gpu_task_runner)) {
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
 }
 
diff --git a/components/viz/service/display_embedder/software_output_device_x11.h b/components/viz/service/display_embedder/software_output_device_x11.h
index 69e8f7ba..aec703d5 100644
--- a/components/viz/service/display_embedder/software_output_device_x11.h
+++ b/components/viz/service/display_embedder/software_output_device_x11.h
@@ -19,8 +19,9 @@
 
 class VIZ_SERVICE_EXPORT SoftwareOutputDeviceX11 : public SoftwareOutputDevice {
  public:
-  SoftwareOutputDeviceX11(gfx::AcceleratedWidget widget,
-                          base::TaskRunner* gpu_task_runner);
+  SoftwareOutputDeviceX11(
+      gfx::AcceleratedWidget widget,
+      scoped_refptr<base::SequencedTaskRunner> gpu_task_runner);
 
   ~SoftwareOutputDeviceX11() override;
 
diff --git a/components/viz/service/gl/gpu_service_impl.h b/components/viz/service/gl/gpu_service_impl.h
index 0e2df086..bd0d9149 100644
--- a/components/viz/service/gl/gpu_service_impl.h
+++ b/components/viz/service/gl/gpu_service_impl.h
@@ -244,7 +244,9 @@
     return gpu_channel_manager_->sync_point_manager();
   }
 
-  base::TaskRunner* main_runner() { return main_runner_.get(); }
+  scoped_refptr<base::SingleThreadTaskRunner>& main_runner() {
+    return main_runner_;
+  }
 
   gpu::GpuWatchdogThread* watchdog_thread() { return watchdog_thread_.get(); }
 
diff --git a/components/viz/service/main/viz_main_impl.cc b/components/viz/service/main/viz_main_impl.cc
index fb12ae2..e78bfc02 100644
--- a/components/viz/service/main/viz_main_impl.cc
+++ b/components/viz/service/main/viz_main_impl.cc
@@ -242,7 +242,9 @@
       gpu_service_->gpu_channel_manager()->gpu_preferences(),
       gpu_service_->shared_image_manager(),
       gpu_service_->gpu_channel_manager()->program_cache(),
-      gpu_service_->GetContextState());
+      // Unretained is safe since |gpu_service_| outlives |task_executor_|.
+      base::BindRepeating(&GpuServiceImpl::GetContextState,
+                          base::Unretained(gpu_service_.get())));
 
   viz_compositor_thread_runner_->CreateFrameSinkManager(
       std::move(params), task_executor_.get(), gpu_service_.get());
diff --git a/components/viz/test/test_gpu_service_holder.cc b/components/viz/test/test_gpu_service_holder.cc
index ad5b45b..b6c5d2e 100644
--- a/components/viz/test/test_gpu_service_holder.cc
+++ b/components/viz/test/test_gpu_service_holder.cc
@@ -245,7 +245,9 @@
       gpu_service_->gpu_channel_manager()->gpu_preferences(),
       gpu_service_->shared_image_manager(),
       gpu_service_->gpu_channel_manager()->program_cache(),
-      gpu_service_->GetContextState());
+      // Unretained is safe since |gpu_service_| outlives |task_executor_|.
+      base::BindRepeating(&GpuServiceImpl::GetContextState,
+                          base::Unretained(gpu_service_.get())));
 
   // TODO(weiliangc): Since SkiaOutputSurface should not depend on command
   // buffer, the |gpu_task_sequence_| should be coming from
diff --git a/components/webcrypto/BUILD.gn b/components/webcrypto/BUILD.gn
index 1c092f1..80ffa08 100644
--- a/components/webcrypto/BUILD.gn
+++ b/components/webcrypto/BUILD.gn
@@ -2,8 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-import("//testing/test.gni")
 import("//testing/libfuzzer/fuzzer_test.gni")
+import("//testing/test.gni")
 
 static_library("webcrypto") {
   sources = [
diff --git a/components/webdata/common/web_data_results.h b/components/webdata/common/web_data_results.h
index 7b128193..271ec9c 100644
--- a/components/webdata/common/web_data_results.h
+++ b/components/webdata/common/web_data_results.h
@@ -32,6 +32,8 @@
   AUTOFILL_PROFILE_RESULT,      // WDResult<AutofillProfile>
   AUTOFILL_PROFILES_RESULT,     // WDResult<std::vector<
                                 //     std::unique_ptr<AutofillProfile>>>
+  AUTOFILL_CLOUDTOKEN_RESULT,   // WDResult<std::vector<std::unique_ptr<
+                                //     CreditCardCloudTokenData>>>
   AUTOFILL_CREDITCARD_RESULT,   // WDResult<CreditCard>
   AUTOFILL_CREDITCARDS_RESULT,  // WDResult<std::vector<
                                 //     std::unique_ptr<CreditCard>>>
diff --git a/components/zucchini/disassembler_elf.cc b/components/zucchini/disassembler_elf.cc
index fdc104f..ad2cafd1 100644
--- a/components/zucchini/disassembler_elf.cc
+++ b/components/zucchini/disassembler_elf.cc
@@ -44,6 +44,15 @@
 // from SectionJudgement values.
 template <class Traits>
 int JudgeSection(size_t image_size, const typename Traits::Elf_Shdr* section) {
+  // BufferRegion uses |size_t| this can be 32-bit in some cases. For Elf64
+  // |sh_addr|, |sh_offset| and |sh_size| are 64-bit this can result in
+  // overflows in the subsequent validation steps.
+  if (!base::IsValueInRangeForNumericType<size_t>(section->sh_addr) ||
+      !base::IsValueInRangeForNumericType<size_t>(section->sh_offset) ||
+      !base::IsValueInRangeForNumericType<size_t>(section->sh_size)) {
+    return SECTION_IS_MALFORMED;
+  }
+
   // Examine RVA range: Reject if numerical overflow may happen.
   if (!BufferRegion{section->sh_addr, section->sh_size}.FitsIn(kSizeBound))
     return SECTION_IS_MALFORMED;
@@ -219,6 +228,9 @@
 template <class Traits>
 bool DisassemblerElf<Traits>::ParseHeader() {
   BufferSource source(image_);
+  // Ensure any offsets will fit within the |image_|'s bounds.
+  if (!base::IsValueInRangeForNumericType<offset_t>(image_.size()))
+    return false;
 
   // Ensures |header_| is valid later on.
   if (!QuickDetect(image_))
diff --git a/content/app/BUILD.gn b/content/app/BUILD.gn
index 12a65831..48144dd 100644
--- a/content/app/BUILD.gn
+++ b/content/app/BUILD.gn
@@ -28,11 +28,11 @@
     "//content/public/common:common_sources",
     "//content/public/common:service_names",
     "//crypto",
+    "//mojo/core/embedder",
+    "//ppapi/buildflags",
     "//services/service_manager/embedder",
     "//services/service_manager/public/mojom",
     "//services/tracing/public/cpp",
-    "//mojo/core/embedder",
-    "//ppapi/buildflags",
     "//ui/base",
     "//ui/gfx",
     "//ui/gfx/geometry",
diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn
index 68acf78..2e97941 100644
--- a/content/browser/BUILD.gn
+++ b/content/browser/BUILD.gn
@@ -123,6 +123,7 @@
     "//media",
     "//media:media_buildflags",
     "//media/capture",
+    "//media/capture:capture_switches",
     "//media/learning/impl",
     "//media/midi",
     "//media/midi:mojo",
diff --git a/content/browser/accessibility/browser_accessibility_android.cc b/content/browser/accessibility/browser_accessibility_android.cc
index 4dbca7c..cfcad4a 100644
--- a/content/browser/accessibility/browser_accessibility_android.cc
+++ b/content/browser/accessibility/browser_accessibility_android.cc
@@ -627,9 +627,6 @@
     case ax::mojom::Role::kComment:
       message_id = IDS_AX_ROLE_COMMENT;
       break;
-    case ax::mojom::Role::kCommentSection:
-      message_id = IDS_AX_ROLE_COMMENT_SECTION;
-      break;
     case ax::mojom::Role::kComplementary:
       message_id = IDS_AX_ROLE_COMPLEMENTARY;
       break;
@@ -983,9 +980,6 @@
     case ax::mojom::Role::kRegion:
       message_id = IDS_AX_ROLE_REGION;
       break;
-    case ax::mojom::Role::kRevision:
-      message_id = IDS_AX_ROLE_REVISION;
-      break;
     case ax::mojom::Role::kRootWebArea:
       // No role description.
       break;
diff --git a/content/browser/accessibility/browser_accessibility_cocoa.mm b/content/browser/accessibility/browser_accessibility_cocoa.mm
index 7d23b8972..7d47a60 100644
--- a/content/browser/accessibility/browser_accessibility_cocoa.mm
+++ b/content/browser/accessibility/browser_accessibility_cocoa.mm
@@ -1958,9 +1958,6 @@
     case ax::mojom::Role::kComment:
       return base::SysUTF16ToNSString(
           content_client->GetLocalizedString(IDS_AX_ROLE_COMMENT));
-    case ax::mojom::Role::kCommentSection:
-      return base::SysUTF16ToNSString(
-          content_client->GetLocalizedString(IDS_AX_ROLE_COMMENT_SECTION));
     case ax::mojom::Role::kComplementary:
       return base::SysUTF16ToNSString(
           content_client->GetLocalizedString(IDS_AX_ROLE_COMPLEMENTARY));
@@ -2006,9 +2003,6 @@
     case ax::mojom::Role::kRegion:
       return base::SysUTF16ToNSString(
           content_client->GetLocalizedString(IDS_AX_ROLE_REGION));
-    case ax::mojom::Role::kRevision:
-      return base::SysUTF16ToNSString(
-          content_client->GetLocalizedString(IDS_AX_ROLE_REVISION));
     case ax::mojom::Role::kSection:
       // A <section> element uses the 'region' ARIA role mapping.
       return base::SysUTF16ToNSString(
diff --git a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
index f680b15..1cb90173 100644
--- a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
+++ b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
@@ -516,6 +516,10 @@
   RunAriaTest(FILE_PATH_LITERAL("aria1.1-combobox.html"));
 }
 
+IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityAriaComment) {
+  RunAriaTest(FILE_PATH_LITERAL("aria-comment.html"));
+}
+
 IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest,
                        AccessibilityAriaComplementary) {
   RunAriaTest(FILE_PATH_LITERAL("aria-complementary.html"));
diff --git a/content/browser/accessibility/web_contents_accessibility_android.cc b/content/browser/accessibility/web_contents_accessibility_android.cc
index 0ff5a19..9754500 100644
--- a/content/browser/accessibility/web_contents_accessibility_android.cc
+++ b/content/browser/accessibility/web_contents_accessibility_android.cc
@@ -1151,11 +1151,6 @@
   // as that will result in loading inline text boxes for the whole tree.
   if (node != node->manager()->GetRoot())
     node->manager()->LoadInlineTextBoxes(*node);
-
-  // Auto-focus links, because some websites have skip links that are
-  // only visible when focused. See http://crbug.com/657157
-  if (node->IsLink() && node->manager()->GetFocus() != node)
-    node->manager()->SetFocus(*node);
 }
 
 bool WebContentsAccessibilityAndroid::IsSlider(JNIEnv* env,
diff --git a/content/browser/appcache/appcache_host.cc b/content/browser/appcache/appcache_host.cc
index 9830a3b..5309671 100644
--- a/content/browser/appcache/appcache_host.cc
+++ b/content/browser/appcache/appcache_host.cc
@@ -204,7 +204,8 @@
     // continue whether it was set or not.
 
     AppCachePolicy* policy = service()->appcache_policy();
-    if (policy && !policy->CanCreateAppCache(manifest_url, first_party_url_)) {
+    if (policy && !policy->CanCreateAppCache(
+                      manifest_url, site_for_cookies_.RepresentativeUrl())) {
       FinishCacheSelection(nullptr, nullptr, mojo::ReportBadMessageCallback());
       frontend()->EventRaised(
           blink::mojom::AppCacheEventID::APPCACHE_CHECKING_EVENT);
@@ -389,8 +390,8 @@
   if (AppCacheRequestHandler::IsMainResourceType(resource_type)) {
     // Store the first party origin so that it can be used later in SelectCache
     // for checking whether the creation of the appcache is allowed.
-    first_party_url_ = request->GetSiteForCookies();
-    first_party_url_initialized_ = true;
+    site_for_cookies_ = request->GetSiteForCookies();
+    site_for_cookies_initialized_ = true;
     return base::WrapUnique(new AppCacheRequestHandler(
         this, resource_type, should_reset_appcache, std::move(request)));
   }
diff --git a/content/browser/appcache/appcache_host.h b/content/browser/appcache/appcache_host.h
index 48d0253..bcbab92 100644
--- a/content/browser/appcache/appcache_host.h
+++ b/content/browser/appcache/appcache_host.h
@@ -213,10 +213,13 @@
            !pending_selected_manifest_url_.is_empty();
   }
 
-  const GURL& first_party_url() const { return first_party_url_; }
-  void SetFirstPartyUrlForTesting(const GURL& url) {
-    first_party_url_ = url;
-    first_party_url_initialized_ = true;
+  const net::SiteForCookies& site_for_cookies() const {
+    return site_for_cookies_;
+  }
+  void SetSiteForCookiesForTesting(
+      const net::SiteForCookies& site_for_cookies) {
+    site_for_cookies_ = site_for_cookies;
+    site_for_cookies_initialized_ = true;
   }
 
   // Returns a weak pointer reference to the host.
@@ -379,9 +382,9 @@
   // Used to inform the QuotaManager of what origins are currently in use.
   url::Origin origin_in_use_;
 
-  // First party url to be used in policy checks.
-  GURL first_party_url_;
-  bool first_party_url_initialized_ = false;
+  // To be used in policy checks.
+  net::SiteForCookies site_for_cookies_;
+  bool site_for_cookies_initialized_ = false;
 
   FRIEND_TEST_ALL_PREFIXES(content::AppCacheGroupTest, CleanupUnusedGroup);
   FRIEND_TEST_ALL_PREFIXES(content::AppCacheGroupTest, QueueUpdate);
diff --git a/content/browser/appcache/appcache_host_unittest.cc b/content/browser/appcache/appcache_host_unittest.cc
index fe8c779..0568ac3 100644
--- a/content/browser/appcache/appcache_host_unittest.cc
+++ b/content/browser/appcache/appcache_host_unittest.cc
@@ -511,7 +511,8 @@
     AppCacheHost host(kHostIdForTest, kProcessIdForTest, kRenderFrameIdForTest,
                       mojo::NullRemote(), &service_);
     host.set_frontend_for_testing(&mock_frontend_);
-    host.SetFirstPartyUrlForTesting(kDocAndOriginUrl);
+    host.SetSiteForCookiesForTesting(
+        net::SiteForCookies::FromUrl(kDocAndOriginUrl));
     host.SelectCache(kDocAndOriginUrl, blink::mojom::kAppCacheNoCacheId,
                      kManifestUrl);
     EXPECT_EQ(1, mock_quota_proxy->GetInUseCount(kOrigin));
@@ -560,7 +561,8 @@
     AppCacheHost host(kHostIdForTest, kProcessIdForTest, kRenderFrameIdForTest,
                       mojo::NullRemote(), &service_);
     host.set_frontend_for_testing(&mock_frontend_);
-    host.SetFirstPartyUrlForTesting(kDocAndOriginUrl);
+    host.SetSiteForCookiesForTesting(
+        net::SiteForCookies::FromUrl(kDocAndOriginUrl));
     host.SelectCache(kDocAndOriginUrl, blink::mojom::kAppCacheNoCacheId,
                      kManifestUrl);
     EXPECT_EQ(1, mock_quota_proxy->GetInUseCount(kOrigin));
diff --git a/content/browser/appcache/appcache_request.h b/content/browser/appcache/appcache_request.h
index ede2c2b..cb811f77 100644
--- a/content/browser/appcache/appcache_request.h
+++ b/content/browser/appcache/appcache_request.h
@@ -40,7 +40,9 @@
   const std::string& GetMethod() const { return request_.method; }
 
   // Used for cookie policy.
-  const GURL& GetSiteForCookies() const { return request_.site_for_cookies; }
+  net::SiteForCookies GetSiteForCookies() const {
+    return request_.site_for_cookies;
+  }
 
   // The referrer for this request.
   const GURL GetReferrer() const { return request_.referrer; }
diff --git a/content/browser/appcache/appcache_request_handler.cc b/content/browser/appcache/appcache_request_handler.cc
index 4ba5288..9c8972d 100644
--- a/content/browser/appcache/appcache_request_handler.cc
+++ b/content/browser/appcache/appcache_request_handler.cc
@@ -358,8 +358,10 @@
     return;
 
   AppCachePolicy* policy = host_->service()->appcache_policy();
-  bool was_blocked_by_policy = !manifest_url.is_empty() && policy &&
-      !policy->CanLoadAppCache(manifest_url, host_->first_party_url());
+  bool was_blocked_by_policy =
+      !manifest_url.is_empty() && policy &&
+      !policy->CanLoadAppCache(manifest_url,
+                               host_->site_for_cookies().RepresentativeUrl());
 
   if (was_blocked_by_policy) {
     if (IsResourceTypeFrame(resource_type_)) {
diff --git a/content/browser/appcache/appcache_storage_impl_unittest.cc b/content/browser/appcache/appcache_storage_impl_unittest.cc
index d81c2917..0488683 100644
--- a/content/browser/appcache/appcache_storage_impl_unittest.cc
+++ b/content/browser/appcache/appcache_storage_impl_unittest.cc
@@ -1655,7 +1655,8 @@
                              kMockProcessId, GetBadMessageCallback());
       AppCacheHost* host1 = service_->GetHost(host1_id_);
       const GURL kEmptyPageUrl(GetMockUrl("empty.html"));
-      host1->SetFirstPartyUrlForTesting(kEmptyPageUrl);
+      host1->SetSiteForCookiesForTesting(
+          net::SiteForCookies::FromUrl(kEmptyPageUrl));
       host1->SelectCache(kEmptyPageUrl, blink::mojom::kAppCacheNoCacheId,
                          GetMockUrl("manifest"));
     } else {
diff --git a/content/browser/appcache/appcache_update_job_unittest.cc b/content/browser/appcache/appcache_update_job_unittest.cc
index dfa6b715..b0b4a84 100644
--- a/content/browser/appcache/appcache_update_job_unittest.cc
+++ b/content/browser/appcache/appcache_update_job_unittest.cc
@@ -2426,7 +2426,8 @@
 
     MockFrontend* frontend = MakeMockFrontend();
     AppCacheHost* host = MakeHost(frontend);
-    host->SetFirstPartyUrlForTesting(kManifestUrl);
+    host->SetSiteForCookiesForTesting(
+        net::SiteForCookies::FromUrl(kManifestUrl));
     host->SelectCache(MockHttpServer::GetMockUrl("files/empty1"),
                       blink::mojom::kAppCacheNoCacheId, kManifestUrl);
 
diff --git a/content/browser/appcache/appcache_update_url_loader_request.cc b/content/browser/appcache/appcache_update_url_loader_request.cc
index a8f27a6..59d46d9 100644
--- a/content/browser/appcache/appcache_update_url_loader_request.cc
+++ b/content/browser/appcache/appcache_update_url_loader_request.cc
@@ -90,7 +90,7 @@
 
 void AppCacheUpdateJob::UpdateURLLoaderRequest::SetSiteForCookies(
     const GURL& site_for_cookies) {
-  request_.site_for_cookies = site_for_cookies;
+  request_.site_for_cookies = net::SiteForCookies::FromUrl(site_for_cookies);
 }
 
 void AppCacheUpdateJob::UpdateURLLoaderRequest::SetInitiator(
diff --git a/content/browser/back_forward_cache_browsertest.cc b/content/browser/back_forward_cache_browsertest.cc
index 83a39e3..8dc650d7 100644
--- a/content/browser/back_forward_cache_browsertest.cc
+++ b/content/browser/back_forward_cache_browsertest.cc
@@ -3091,8 +3091,9 @@
 // Test that a page which has an inflight geolocation query can be bfcached,
 // and verify that the page does not observe any geolocation while the page
 // was inside bfcache.
+// The test is flaky on multiple platforms: crbug.com/1033270
 IN_PROC_BROWSER_TEST_F(GeolocationBackForwardCacheBrowserTest,
-                       CancelGeolocationRequestInFlight) {
+                       DISABLED_CancelGeolocationRequestInFlight) {
   ASSERT_TRUE(embedded_test_server()->Start());
   GURL url_a(embedded_test_server()->GetURL("/title1.html"));
   GURL url_b(embedded_test_server()->GetURL("b.com", "/title1.html"));
@@ -4484,8 +4485,8 @@
                        DisableBFCacheForLowEndDevices) {
   EXPECT_FALSE(IsBackForwardCacheEnabled());
   ASSERT_TRUE(embedded_test_server()->Start());
-  const GURL url_a(embedded_test_server()->GetURL("a.com", "/title1.html"));
-  const GURL url_b(embedded_test_server()->GetURL("b.com", "/title1.html"));
+  GURL url_a(embedded_test_server()->GetURL("a.com", "/title1.html"));
+  GURL url_b(embedded_test_server()->GetURL("b.com", "/title1.html"));
 
   // 1) Navigate to A.
   EXPECT_TRUE(NavigateToURL(shell(), url_a));
@@ -4526,8 +4527,8 @@
 IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTestForHighMemoryDevices,
                        EnableBFCacheForHighMemoryDevices) {
   ASSERT_TRUE(embedded_test_server()->Start());
-  const GURL url_a(embedded_test_server()->GetURL("a.com", "/title1.html"));
-  const GURL url_b(embedded_test_server()->GetURL("b.com", "/title1.html"));
+  GURL url_a(embedded_test_server()->GetURL("a.com", "/title1.html"));
+  GURL url_b(embedded_test_server()->GetURL("b.com", "/title1.html"));
 
   // 1) Navigate to A.
   EXPECT_TRUE(NavigateToURL(shell(), url_a));
@@ -4897,4 +4898,120 @@
   EXPECT_TRUE(echo_deleted);
 }
 
+IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTest, OutstandingFetchNotCached) {
+  net::test_server::ControllableHttpResponse response(embedded_test_server(),
+                                                      "/fetch");
+  ASSERT_TRUE(embedded_test_server()->Start());
+
+  GURL url_a(embedded_test_server()->GetURL("a.com", "/title1.html"));
+  GURL url_b(embedded_test_server()->GetURL("b.com", "/title1.html"));
+
+  // 1) Navigate to A.
+  EXPECT_TRUE(NavigateToURL(shell(), url_a));
+  RenderFrameHostImpl* rfh_a = current_frame_host();
+  RenderFrameDeletedObserver delete_observer_rfh_a(rfh_a);
+  // Ensure that there are no lingering requests from page load itself.
+  EXPECT_FALSE(rfh_a->scheduler_tracked_features() &
+               (1ull << static_cast<size_t>(
+                    blink::scheduler::WebSchedulerTrackedFeature::
+                        kOutstandingNetworkRequest)));
+
+  // 2) Create a fetch() request.
+  EXPECT_TRUE(ExecJs(rfh_a, "fetch('/fetch');"));
+  response.WaitForRequest();
+
+  // 3) Navigate to B.
+  ASSERT_TRUE(NavigateToURL(shell(), url_b));
+
+  // 4) Go back.
+  web_contents()->GetController().GoBack();
+  EXPECT_TRUE(WaitForLoadStop(shell()->web_contents()));
+
+  ExpectNotRestored(
+      {BackForwardCacheMetrics::NotRestoredReason::kBlocklistedFeatures},
+      FROM_HERE);
+  ExpectBlocklistedFeature(
+      blink::scheduler::WebSchedulerTrackedFeature::kOutstandingNetworkRequest,
+      FROM_HERE);
+}
+
+IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTest, OutstandingXHRNotCached) {
+  net::test_server::ControllableHttpResponse response(embedded_test_server(),
+                                                      "/xhr");
+  ASSERT_TRUE(embedded_test_server()->Start());
+
+  GURL url_a(embedded_test_server()->GetURL("a.com", "/title1.html"));
+  GURL url_b(embedded_test_server()->GetURL("b.com", "/title1.html"));
+
+  // 1) Navigate to A.
+  EXPECT_TRUE(NavigateToURL(shell(), url_a));
+  RenderFrameHostImpl* rfh_a = current_frame_host();
+  RenderFrameDeletedObserver delete_observer_rfh_a(rfh_a);
+  // Ensure that there are no lingering requests from page load itself.
+  EXPECT_FALSE(rfh_a->scheduler_tracked_features() &
+               (1ull << static_cast<size_t>(
+                    blink::scheduler::WebSchedulerTrackedFeature::
+                        kOutstandingNetworkRequest)));
+
+  // 2) Create a XMLHttpRequest.
+  EXPECT_TRUE(ExecJs(rfh_a, R"(
+    var req = new XMLHttpRequest();
+    req.open("GET", "/xhr");
+    req.send();
+  )"));
+  response.WaitForRequest();
+
+  // 3) Navigate to B.
+  ASSERT_TRUE(NavigateToURL(shell(), url_b));
+
+  // 4) Go back.
+  web_contents()->GetController().GoBack();
+  EXPECT_TRUE(WaitForLoadStop(shell()->web_contents()));
+
+  ExpectNotRestored(
+      {BackForwardCacheMetrics::NotRestoredReason::kBlocklistedFeatures},
+      FROM_HERE);
+  ExpectBlocklistedFeature(
+      blink::scheduler::WebSchedulerTrackedFeature::kOutstandingNetworkRequest,
+      FROM_HERE);
+}
+
+IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTest, NotFetchedScriptNotCached) {
+  net::test_server::ControllableHttpResponse response(
+      embedded_test_server(),
+      "/back_forward_cache/script-which-does-not-exist.js");
+  ASSERT_TRUE(embedded_test_server()->Start());
+
+  GURL url_a(embedded_test_server()->GetURL(
+      "a.com", "/back_forward_cache/page_with_nonexistent_script.html"));
+  GURL url_b(embedded_test_server()->GetURL("b.com", "/title1.html"));
+
+  // 1) Navigate to A.
+  TestNavigationObserver navigation_observer1(web_contents());
+  shell()->LoadURL(url_a);
+  navigation_observer1.WaitForNavigationFinished();
+  response.WaitForRequest();
+
+  RenderFrameHostImpl* rfh_a = current_frame_host();
+  RenderFrameDeletedObserver delete_observer_rfh_a(rfh_a);
+
+  // 2) Navigate to B.
+  TestNavigationObserver navigation_observer2(web_contents());
+  shell()->LoadURL(url_b);
+  navigation_observer2.WaitForNavigationFinished();
+
+  delete_observer_rfh_a.WaitUntilDeleted();
+
+  // 3) Go back.
+  web_contents()->GetController().GoBack();
+  EXPECT_TRUE(WaitForLoadStop(shell()->web_contents()));
+
+  ExpectNotRestored(
+      {BackForwardCacheMetrics::NotRestoredReason::kBlocklistedFeatures},
+      FROM_HERE);
+  ExpectBlocklistedFeature(
+      blink::scheduler::WebSchedulerTrackedFeature::kOutstandingNetworkRequest,
+      FROM_HERE);
+}
+
 }  // namespace content
diff --git a/content/browser/bad_message.h b/content/browser/bad_message.h
index d29ce2e..007152e 100644
--- a/content/browser/bad_message.h
+++ b/content/browser/bad_message.h
@@ -246,6 +246,7 @@
   MDDH_INVALID_STREAM_SELECTION_INFO = 218,
   REGISTER_PROTOCOL_HANDLER_INVALID_URL = 219,
   NC_SAME_DOCUMENT_POST_COMMIT_ERROR = 220,
+  RFH_INVALID_WEB_UI_CONTROLLER = 221,
 
   // Please add new elements here. The naming convention is abbreviated class
   // name (e.g. RenderFrameHost becomes RFH) plus a unique description of the
diff --git a/content/browser/browser_interface_binders.cc b/content/browser/browser_interface_binders.cc
index 338269cb..f50d13f 100644
--- a/content/browser/browser_interface_binders.cc
+++ b/content/browser/browser_interface_binders.cc
@@ -10,6 +10,7 @@
 #include "build/build_config.h"
 #include "cc/base/switches.h"
 #include "content/browser/background_fetch/background_fetch_service_impl.h"
+#include "content/browser/bad_message.h"
 #include "content/browser/browser_main_loop.h"
 #include "content/browser/content_index/content_index_service_impl.h"
 #include "content/browser/cookie_store/cookie_store_context.h"
@@ -52,7 +53,6 @@
 #include "media/mojo/mojom/media_metrics_provider.mojom.h"
 #include "media/mojo/mojom/video_decode_perf_history.mojom.h"
 #include "media/mojo/services/video_decode_perf_history.h"
-#include "services/device/public/mojom/constants.mojom.h"
 #include "services/device/public/mojom/sensor_provider.mojom.h"
 #include "services/device/public/mojom/vibration_manager.mojom.h"
 #include "services/network/public/mojom/restricted_cookie_manager.mojom.h"
@@ -174,19 +174,26 @@
 void BindProcessInternalsHandler(
     content::RenderFrameHost* host,
     mojo::PendingReceiver<::mojom::ProcessInternalsHandler> receiver) {
-  // This should not be requested by subframes, so terminate the renderer if
-  // it issues such a request.
-  if (host->GetParent()) {
-    host->GetProcess()->ShutdownForBadMessage(
-        content::RenderProcessHost::CrashReportMode::GENERATE_CRASH_DUMP);
-    return;
-  }
-
   auto* contents = WebContents::FromRenderFrameHost(host);
   DCHECK_EQ(contents->GetLastCommittedURL().host_piece(),
             kChromeUIProcessInternalsHost);
-  static_cast<ProcessInternalsUI*>(contents->GetWebUI()->GetController())
-      ->BindProcessInternalsHandler(std::move(receiver), host);
+
+  content::WebUI* web_ui = contents->GetWebUI();
+
+  // Performs a safe downcast to the concrete ProcessInternalsUI subclass.
+  ProcessInternalsUI* process_internals_ui =
+      web_ui ? web_ui->GetController()->GetAs<ProcessInternalsUI>() : nullptr;
+
+  // This is expected to be called only for main frames and for the right WebUI
+  // pages matching the same WebUI associated to the RenderFrameHost.
+  if (host->GetParent() || !process_internals_ui) {
+    ReceivedBadMessage(
+        host->GetProcess(),
+        bad_message::BadMessageReason::RFH_INVALID_WEB_UI_CONTROLLER);
+    return;
+  }
+
+  process_internals_ui->BindProcessInternalsHandler(std::move(receiver), host);
 }
 
 void BindQuotaDispatcherHost(
diff --git a/content/browser/cache_storage/cache_storage_cache_unittest.cc b/content/browser/cache_storage/cache_storage_cache_unittest.cc
index d82701c..927e49b 100644
--- a/content/browser/cache_storage/cache_storage_cache_unittest.cc
+++ b/content/browser/cache_storage/cache_storage_cache_unittest.cc
@@ -498,7 +498,7 @@
         std::vector<std::string>() /* cors_exposed_header_names */,
         nullptr /* side_data_blob */,
         nullptr /* side_data_blob_for_cache_put */,
-        nullptr /* content_security_policy */,
+        std::vector<network::mojom::ContentSecurityPolicyPtr>(),
         false /* loaded_with_credentials */);
   }
 
diff --git a/content/browser/cache_storage/cache_storage_manager_unittest.cc b/content/browser/cache_storage/cache_storage_manager_unittest.cc
index d14b500..16036fe 100644
--- a/content/browser/cache_storage/cache_storage_manager_unittest.cc
+++ b/content/browser/cache_storage/cache_storage_manager_unittest.cc
@@ -664,7 +664,7 @@
         std::vector<std::string>() /* cors_exposed_header_names */,
         nullptr /* side_data_blob */,
         nullptr /* side_data_blob_for_cache_put */,
-        nullptr /* content_security_policy */,
+        std::vector<network::mojom::ContentSecurityPolicyPtr>(),
         false /* loaded_with_credentials */);
 
     blink::mojom::BatchOperationPtr operation =
diff --git a/content/browser/cache_storage/legacy/legacy_cache_storage_cache.cc b/content/browser/cache_storage/legacy/legacy_cache_storage_cache.cc
index 87c198b..43b27c3 100644
--- a/content/browser/cache_storage/legacy/legacy_cache_storage_cache.cc
+++ b/content/browser/cache_storage/legacy/legacy_cache_storage_cache.cc
@@ -357,7 +357,7 @@
           metadata.response().cors_exposed_header_names().begin(),
           metadata.response().cors_exposed_header_names().end()),
       nullptr /* side_data_blob */, nullptr /* side_data_blob_for_cache_put */,
-      nullptr /* content_security_policy */,
+      std::vector<network::mojom::ContentSecurityPolicyPtr>(),
       metadata.response().loaded_with_credentials());
 }
 
diff --git a/content/browser/code_cache/generated_code_cache_unittest.cc b/content/browser/code_cache/generated_code_cache_unittest.cc
index e924c6f..fecfedbf 100644
--- a/content/browser/code_cache/generated_code_cache_unittest.cc
+++ b/content/browser/code_cache/generated_code_cache_unittest.cc
@@ -40,7 +40,9 @@
 
   void TearDown() override {
     disk_cache::FlushCacheThreadForTesting();
+    generated_code_cache_.reset();
     task_environment_.RunUntilIdle();
+    EXPECT_TRUE(cache_dir_.Delete()) << cache_dir_.GetPath();
   }
 
   // This function initializes the cache and waits till the transaction is
@@ -115,9 +117,9 @@
   }
 
  protected:
+  base::ScopedTempDir cache_dir_;
   base::test::TaskEnvironment task_environment_;
   std::unique_ptr<GeneratedCodeCache> generated_code_cache_;
-  base::ScopedTempDir cache_dir_;
   std::string received_data_;
   base::Time received_response_time_;
   bool received_;
diff --git a/content/browser/device/device_service.cc b/content/browser/device/device_service.cc
index a19a4e3a..ac9994f 100644
--- a/content/browser/device/device_service.cc
+++ b/content/browser/device/device_service.cc
@@ -18,7 +18,6 @@
 #include "content/public/common/content_client.h"
 #include "mojo/public/cpp/bindings/remote.h"
 #include "services/device/device_service.h"
-#include "services/device/public/mojom/constants.mojom.h"
 #include "services/network/public/cpp/cross_thread_pending_shared_url_loader_factory.h"
 #include "services/network/public/mojom/network_service_test.mojom.h"
 #include "services/network/public/mojom/url_loader.mojom.h"
diff --git a/content/browser/devtools/devtools_session.cc b/content/browser/devtools/devtools_session.cc
index 749442a..616a16b 100644
--- a/content/browser/devtools/devtools_session.cc
+++ b/content/browser/devtools/devtools_session.cc
@@ -21,6 +21,19 @@
 namespace content {
 namespace {
 
+bool ShouldSendOnIO(const std::string& method) {
+  // Keep in sync with WebDevToolsAgent::ShouldInterruptForMethod.
+  // TODO(petermarshall): find a way to share this.
+  return method == "Debugger.pause" || method == "Debugger.setBreakpoint" ||
+         method == "Debugger.setBreakpointByUrl" ||
+         method == "Debugger.removeBreakpoint" ||
+         method == "Debugger.setBreakpointsActive" ||
+         method == "Debugger.getStackTrace" ||
+         method == "Performance.getMetrics" || method == "Page.crash" ||
+         method == "Runtime.terminateExecution" ||
+         method == "Emulation.setScriptExecutionDisabled";
+}
+
 // Async control commands (such as CSS.enable) are idempotant and can
 // be safely replayed in the new render frame host. We will always forward
 // them to the new renderer on cross process navigation. Main rationale for
@@ -278,13 +291,25 @@
   auto message_ptr = blink::mojom::DevToolsMessage::New();
   message_ptr->data =
       mojo_base::BigBuffer(base::make_span(message.data(), message.size()));
-  if (io_session_) {
-    TRACE_EVENT_WITH_FLOW2("devtools",
-                           "DevToolsSession::DispatchProtocolMessageToAgent",
-                           call_id, TRACE_EVENT_FLAG_FLOW_OUT, "method",
-                           method.c_str(), "call_id", call_id);
-    io_session_->DispatchProtocolCommand(call_id, method,
-                                         std::move(message_ptr));
+
+  if (ShouldSendOnIO(method)) {
+    if (io_session_) {
+      TRACE_EVENT_WITH_FLOW2(
+          "devtools", "DevToolsSession::DispatchProtocolMessageToAgent on IO",
+          call_id, TRACE_EVENT_FLAG_FLOW_OUT, "method", method.c_str(),
+          "call_id", call_id);
+      io_session_->DispatchProtocolCommand(call_id, method,
+                                           std::move(message_ptr));
+    }
+  } else {
+    if (session_) {
+      TRACE_EVENT_WITH_FLOW2("devtools",
+                             "DevToolsSession::DispatchProtocolMessageToAgent",
+                             call_id, TRACE_EVENT_FLAG_FLOW_OUT, "method",
+                             method.c_str(), "call_id", call_id);
+      session_->DispatchProtocolCommand(call_id, method,
+                                        std::move(message_ptr));
+    }
   }
 }
 
diff --git a/content/browser/devtools/devtools_url_loader_interceptor.cc b/content/browser/devtools/devtools_url_loader_interceptor.cc
index d009597..beed2cb 100644
--- a/content/browser/devtools/devtools_url_loader_interceptor.cc
+++ b/content/browser/devtools/devtools_url_loader_interceptor.cc
@@ -1084,13 +1084,12 @@
       GetContentClient()
           ->browser()
           ->ShouldIgnoreSameSiteCookieRestrictionsWhenTopLevel(
-              create_loader_params_->request.site_for_cookies.scheme_piece(),
+              create_loader_params_->request.site_for_cookies.scheme(),
               create_loader_params_->request.url.SchemeIsCryptographic());
   options.set_same_site_cookie_context(
       net::cookie_util::ComputeSameSiteContextForResponse(
           create_loader_params_->request.url,
-          net::SiteForCookies::FromUrl(
-              create_loader_params_->request.site_for_cookies),
+          create_loader_params_->request.site_for_cookies,
           create_loader_params_->request.request_initiator,
           (create_loader_params_->request.attach_same_site_cookies ||
            should_treat_as_first_party)));
@@ -1233,12 +1232,11 @@
       GetContentClient()
           ->browser()
           ->ShouldIgnoreSameSiteCookieRestrictionsWhenTopLevel(
-              request.site_for_cookies.scheme_piece(),
+              request.site_for_cookies.scheme(),
               request.url.SchemeIsCryptographic());
   options.set_same_site_cookie_context(
       net::cookie_util::ComputeSameSiteContextForRequest(
-          request.method, request.url,
-          net::SiteForCookies::FromUrl(request.site_for_cookies),
+          request.method, request.url, request.site_for_cookies,
           request.request_initiator,
           (request.attach_same_site_cookies || should_treat_as_first_party)));
 
diff --git a/content/browser/form_controls_browsertest.cc b/content/browser/form_controls_browsertest.cc
deleted file mode 100644
index 43bc785..0000000
--- a/content/browser/form_controls_browsertest.cc
+++ /dev/null
@@ -1,158 +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.
-
-#include "base/path_service.h"
-#include "base/run_loop.h"
-#include "base/test/scoped_feature_list.h"
-#include "base/threading/thread_restrictions.h"
-#include "build/build_config.h"
-#include "cc/test/pixel_comparator.h"
-#include "cc/test/pixel_test_utils.h"
-#include "content/browser/renderer_host/render_widget_host_impl.h"
-#include "content/public/common/content_paths.h"
-#include "content/public/test/browser_test_utils.h"
-#include "content/public/test/content_browser_test.h"
-#include "content/public/test/content_browser_test_utils.h"
-#include "content/public/test/test_utils.h"
-#include "content/shell/browser/shell.h"
-#include "ui/base/ui_base_features.h"
-#include "ui/display/display_switches.h"
-#include "ui/gfx/image/image.h"
-#include "ui/gfx/skbitmap_operations.h"
-
-// To rebaseline this test on android:
-// 1. Run a CQ+1 dry run
-// 2. Click the failing android bot
-// 3. Find the failing content_browsertests step
-// 4. Click the "Deterministic failure" link for the failing test case
-// 5. Copy the "Actual pixels" data url and paste into browser
-// 6. Save the image into your chromium checkout in content/test/data/forms/
-
-namespace content {
-
-class FormControlsBrowserTest : public ContentBrowserTest {
- public:
-  FormControlsBrowserTest() {}
-
-  void SetUp() override {
-    EnablePixelOutput();
-    ContentBrowserTest::SetUp();
-  }
-
-  void SetUpCommandLine(base::CommandLine* command_line) override {
-    ContentBrowserTest::SetUpCommandLine(command_line);
-    // The --force-device-scale-factor flag helps make the pixel output of
-    // different android trybots more similar.
-    command_line->AppendSwitchASCII(switches::kForceDeviceScaleFactor, "1.0");
-    feature_list_ = std::make_unique<base::test::ScopedFeatureList>();
-    feature_list_->InitWithFeatures({features::kFormControlsRefresh}, {});
-  }
-
-  void TearDown() override { feature_list_.reset(); }
-
-  void AsyncSnapshotCallback(const gfx::Image& image) {
-    got_snapshot_ = true;
-    snapshot_ = image;
-  }
-
-  void RunFormControlsTest(const std::string& expected_filename,
-                           const std::string& body_html,
-                           int screenshot_width,
-                           int screenshot_height) {
-    base::ScopedAllowBlockingForTesting allow_blocking;
-    ASSERT_TRUE(features::IsFormControlsRefreshEnabled());
-
-    std::string url =
-        "data:text/html,<!DOCTYPE html>"
-        "<head>"
-        // The <meta name=viewport> tag helps make the pixel output of
-        // different android trybots more similar.
-        "  <meta name=\"viewport\" content=\"width=640, initial-scale=1, "
-        "    maximum-scale=1, minimum-scale=1\">"
-        "</head>"
-        "<body>" +
-        body_html + "</body>";
-    ASSERT_TRUE(NavigateToURL(shell(), GURL(url)));
-
-    RenderWidgetHostImpl* const rwh =
-        RenderWidgetHostImpl::From(shell()
-                                       ->web_contents()
-                                       ->GetRenderWidgetHostView()
-                                       ->GetRenderWidgetHost());
-    CHECK(rwh);
-    rwh->GetSnapshotFromBrowser(
-        base::BindOnce(&FormControlsBrowserTest::AsyncSnapshotCallback,
-                       base::Unretained(this)),
-        /* from_surface */ true);
-    while (!got_snapshot_)
-      base::RunLoop().RunUntilIdle();
-    SkBitmap bitmap = SkBitmapOperations::CreateTiledBitmap(
-        *snapshot_.ToSkBitmap(), /* src_x */ 0, /* src_y */ 0, screenshot_width,
-        screenshot_height);
-
-    base::FilePath dir_test_data;
-    ASSERT_TRUE(base::PathService::Get(DIR_TEST_DATA, &dir_test_data));
-    std::string filename_with_extension = expected_filename;
-#if defined(OS_ANDROID)
-    filename_with_extension += "_android";
-#endif
-    filename_with_extension += ".png";
-    base::FilePath expected_path =
-        dir_test_data.AppendASCII("forms").AppendASCII(filename_with_extension);
-    SkBitmap expected_bitmap;
-    ASSERT_TRUE(cc::ReadPNGFile(expected_path, &expected_bitmap));
-
-    EXPECT_TRUE(cc::MatchesBitmap(
-        bitmap, expected_bitmap,
-        // We use a fuzzy comparator to accommodate for slight
-        // differences between the kitkat and marshmallow trybots that aren't
-        // visible to the human eye. We use a very low error limit because the
-        // pixels that are different are very similar shades of color.
-        cc::FuzzyPixelComparator(/* discard_alpha */ true,
-                                 /* error_pixels_percentage_limit */ 6.f,
-                                 /* small_error_pixels_percentage_limit */ 0.f,
-                                 /* avg_abs_error_limit */ 4.f,
-                                 /* max_abs_error_limit */ 4.f,
-                                 /* small_error_threshold */ 0)));
-  }
-
-  bool got_snapshot_ = false;
-  gfx::Image snapshot_;
-  std::unique_ptr<base::test::ScopedFeatureList> feature_list_;
-};
-
-IN_PROC_BROWSER_TEST_F(FormControlsBrowserTest, Checkbox) {
-  RunFormControlsTest(
-      "form_controls_browsertest_checkbox",
-      "<input type=checkbox>"
-      "<input type=checkbox checked>"
-      "<input type=checkbox disabled>"
-      "<input type=checkbox checked disabled>"
-      "<input type=checkbox id=\"indeterminate\">"
-      "<script>"
-      "  document.getElementById('indeterminate').indeterminate = true"
-      "</script>",
-      /* screenshot_width */ 130,
-      /* screenshot_height */ 40);
-}
-
-IN_PROC_BROWSER_TEST_F(FormControlsBrowserTest, Radio) {
-  RunFormControlsTest(
-      "form_controls_browsertest_radio",
-      "<input type=radio>"
-      "<input type=radio checked>"
-      "<input type=radio disabled>"
-      "<input type=radio checked disabled>"
-      "<input type=radio id=\"indeterminate\">"
-      "<script>"
-      "  document.getElementById('indeterminate').indeterminate = true"
-      "</script>",
-      /* screenshot_width */ 140,
-      /* screenshot_height */ 40);
-}
-
-// TODO(jarhar): Add tests for other elements from
-//   https://concrete-hardboard.glitch.me
-
-}  // namespace content
diff --git a/content/browser/frame_host/ancestor_throttle.cc b/content/browser/frame_host/ancestor_throttle.cc
index 79aa928..813ce739c 100644
--- a/content/browser/frame_host/ancestor_throttle.cc
+++ b/content/browser/frame_host/ancestor_throttle.cc
@@ -174,11 +174,8 @@
     bool is_response_check) {
   NavigationRequest* request = NavigationRequest::From(navigation_handle());
 
-  bool is_portal = request->frame_tree_node()
-                       ->current_frame_host()
-                       ->GetRenderViewHost()
-                       ->GetDelegate()
-                       ->IsPortal();
+  bool is_portal =
+      request->frame_tree_node()->current_frame_host()->InsidePortal();
   if (request->IsInMainFrame() && !is_portal) {
     // Allow main frame navigations.
     return NavigationThrottle::PROCEED;
@@ -193,14 +190,14 @@
   // existing content-security-policy on the response.
   if (is_response_check && base::FeatureList::IsEnabled(
                                network::features::kOutOfBlinkFrameAncestors)) {
-    if (auto& policy = request->response()->content_security_policy) {
+    if (!request->response()->content_security_policy.empty()) {
       // TODO(arthursonzogni): Remove content::ContentSecurityPolicy in favor of
       // network::mojom::ContentSecurityPolicy, this will avoid conversion
       // between type here.
-      // TODO(lfg): Pass every ContentSecurityPolicy here instead of one.
-      std::vector<ContentSecurityPolicy> policies = {
-          ContentSecurityPolicy(policy.Clone()),
-      };
+      std::vector<ContentSecurityPolicy> policies;
+      policies.reserve(request->response()->content_security_policy.size());
+      for (auto& policy : request->response()->content_security_policy)
+        policies.push_back(ContentSecurityPolicy(policy.Clone()));
       // TODO(lfg): If the initiating document is known and correspond to the
       // navigating frame's current document, consider using:
       // navigation_request().common_params().source_location here instead.
@@ -230,7 +227,7 @@
                 navigation_handle()->IsFormSubmission())) {
           return NavigationThrottle::BLOCK_RESPONSE;
         }
-        if (parent->GetRenderViewHost()->GetDelegate()->IsPortal()) {
+        if (parent->InsidePortal()) {
           parent = parent->ParentOrOuterDelegateFrame();
         } else {
           parent = parent->GetParent();
diff --git a/content/browser/frame_host/cross_process_frame_connector.h b/content/browser/frame_host/cross_process_frame_connector.h
index 3f2c546..b4aead1 100644
--- a/content/browser/frame_host/cross_process_frame_connector.h
+++ b/content/browser/frame_host/cross_process_frame_connector.h
@@ -186,8 +186,7 @@
   RenderFrameProxyHost* frame_proxy_in_parent_renderer_;
 
   bool is_inert_ = false;
-  cc::TouchAction inherited_effective_touch_action_ =
-      cc::TouchAction::kTouchActionAuto;
+  cc::TouchAction inherited_effective_touch_action_ = cc::TouchAction::kAuto;
 
   bool is_throttled_ = false;
   bool subtree_throttled_ = false;
diff --git a/content/browser/frame_host/frame_tree_node.cc b/content/browser/frame_host/frame_tree_node.cc
index cdc38e7..4aa7237 100644
--- a/content/browser/frame_host/frame_tree_node.cc
+++ b/content/browser/frame_host/frame_tree_node.cc
@@ -650,8 +650,8 @@
   return update_result;
 }
 
-void FrameTreeNode::OnSetHasReceivedUserGestureBeforeNavigation(bool value) {
-  render_manager_.OnSetHasReceivedUserGestureBeforeNavigation(value);
+void FrameTreeNode::OnSetHadStickyUserActivationBeforeNavigation(bool value) {
+  render_manager_.OnSetHadStickyUserActivationBeforeNavigation(value);
   replication_state_.has_received_user_gesture_before_nav = value;
 }
 
diff --git a/content/browser/frame_host/frame_tree_node.h b/content/browser/frame_host/frame_tree_node.h
index d2047cf9..b5f142329 100644
--- a/content/browser/frame_host/frame_tree_node.h
+++ b/content/browser/frame_host/frame_tree_node.h
@@ -330,7 +330,7 @@
   // the comment on user_activation_state_ below.
   bool UpdateUserActivationState(blink::UserActivationUpdateType update_type);
 
-  void OnSetHasReceivedUserGestureBeforeNavigation(bool value);
+  void OnSetHadStickyUserActivationBeforeNavigation(bool value);
 
   // Returns the sandbox flags currently in effect for this frame. This includes
   // flags inherited from parent frames, the currently active flags from the
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc
index 3df44b5..e670851 100644
--- a/content/browser/frame_host/render_frame_host_impl.cc
+++ b/content/browser/frame_host/render_frame_host_impl.cc
@@ -2543,6 +2543,15 @@
   if (!is_active())
     return;
 
+  // We need to handle receiving this IPC from a frame that is inside a portal
+  // despite there being a renderer side check (see Document::IsFocusAllowed).
+  // This is because the IPC to notify a page that it is inside a portal (see
+  // WebContentsImpl::NotifyInsidePortal) may race with portal activation, and
+  // we may run into a situation where a frame inside a portal doesn't know it's
+  // inside a portal yet and allows focus.
+  if (InsidePortal())
+    return;
+
   delegate_->SetFocusedFrame(frame_tree_node_, GetSiteInstance());
 }
 
@@ -4027,6 +4036,10 @@
   }
 }
 
+bool RenderFrameHostImpl::InsidePortal() {
+  return GetRenderViewHost()->GetDelegate()->IsPortal();
+}
+
 void RenderFrameHostImpl::OnDidFinishDocumentLoad() {
   dom_content_loaded_ = true;
   delegate_->DOMContentLoaded(this);
@@ -4095,9 +4108,9 @@
   frame_tree_node_->UpdateUserActivationState(update_type);
 }
 
-void RenderFrameHostImpl::ReceivedUserGestureBeforeNavigationChanged(
+void RenderFrameHostImpl::HadStickyUserActivationBeforeNavigationChanged(
     bool value) {
-  frame_tree_node_->OnSetHasReceivedUserGestureBeforeNavigation(value);
+  frame_tree_node_->OnSetHadStickyUserActivationBeforeNavigation(value);
 }
 
 void RenderFrameHostImpl::OnScrollRectToVisibleInParentFrame(
diff --git a/content/browser/frame_host/render_frame_host_impl.h b/content/browser/frame_host/render_frame_host_impl.h
index 404ef39..4ab41f2 100644
--- a/content/browser/frame_host/render_frame_host_impl.h
+++ b/content/browser/frame_host/render_frame_host_impl.h
@@ -1012,6 +1012,9 @@
                               const url::Origin& source_origin,
                               const base::Optional<url::Origin>& target_origin);
 
+  // Returns true if the frame is embedded in a Portal.
+  bool InsidePortal();
+
   blink::mojom::FrameVisibility visibility() const { return visibility_; }
 
   // A CommitCallbackInterceptor is used to modify parameters for or cancel a
@@ -1296,7 +1299,7 @@
   void SuddenTerminationDisablerChanged(
       bool present,
       blink::mojom::SuddenTerminationDisablerType disabler_type) override;
-  void ReceivedUserGestureBeforeNavigationChanged(bool value) override;
+  void HadStickyUserActivationBeforeNavigationChanged(bool value) override;
 
  protected:
   friend class RenderFrameHostFactory;
diff --git a/content/browser/frame_host/render_frame_host_manager.cc b/content/browser/frame_host/render_frame_host_manager.cc
index 240850f..31a9943 100644
--- a/content/browser/frame_host/render_frame_host_manager.cc
+++ b/content/browser/frame_host/render_frame_host_manager.cc
@@ -1070,11 +1070,11 @@
   }
 }
 
-void RenderFrameHostManager::OnSetHasReceivedUserGestureBeforeNavigation(
+void RenderFrameHostManager::OnSetHadStickyUserActivationBeforeNavigation(
     bool value) {
   for (const auto& pair : proxy_hosts_) {
     pair.second->GetAssociatedRemoteFrame()
-        ->SetReceivedUserGestureBeforeNavigation(value);
+        ->SetHadStickyUserActivationBeforeNavigation(value);
   }
 }
 
diff --git a/content/browser/frame_host/render_frame_host_manager.h b/content/browser/frame_host/render_frame_host_manager.h
index c47f7e5..ec0fa457 100644
--- a/content/browser/frame_host/render_frame_host_manager.h
+++ b/content/browser/frame_host/render_frame_host_manager.h
@@ -464,7 +464,7 @@
   // RenderFrame, since that will be handled as part of postMessage.
   void TransferUserActivationFrom(RenderFrameHostImpl* source_rfh);
 
-  void OnSetHasReceivedUserGestureBeforeNavigation(bool value);
+  void OnSetHadStickyUserActivationBeforeNavigation(bool value);
 
   // Sets up the necessary state for a new RenderViewHost.  If |proxy| is not
   // null, it creates a RenderFrameProxy in the target renderer process which is
diff --git a/content/browser/frame_host/render_frame_host_manager_unittest.cc b/content/browser/frame_host/render_frame_host_manager_unittest.cc
index 8b41b1a..f8e508c 100644
--- a/content/browser/frame_host/render_frame_host_manager_unittest.cc
+++ b/content/browser/frame_host/render_frame_host_manager_unittest.cc
@@ -1444,13 +1444,17 @@
 
 // Test that we reuse the same guest SiteInstance if we navigate across sites.
 TEST_F(RenderFrameHostManagerTest, NoSwapOnGuestNavigations) {
-  GURL guest_url(std::string(kGuestScheme).append("://abc123"));
+  // Create a custom site URL for the SiteInstance. There is nothing special
+  // about this URL other than we expect the resulting SiteInstance to return
+  // this exact URL from its GetSiteURL() method.
+  const GURL kGuestSiteUrl("my-guest-scheme://someapp/somepath");
   scoped_refptr<SiteInstance> instance =
-      SiteInstance::CreateForURL(browser_context(), guest_url);
+      SiteInstance::CreateForGuest(browser_context(), kGuestSiteUrl);
   std::unique_ptr<TestWebContents> web_contents(
       TestWebContents::Create(browser_context(), instance));
 
   EXPECT_TRUE(instance->IsGuest());
+  EXPECT_EQ(kGuestSiteUrl, instance->GetSiteURL());
 
   RenderFrameHostManager* manager = web_contents->GetRenderManagerForTesting();
 
diff --git a/content/browser/frame_host/render_frame_proxy_host.cc b/content/browser/frame_host/render_frame_proxy_host.cc
index 229b5c9..0706eb8c07 100644
--- a/content/browser/frame_host/render_frame_proxy_host.cc
+++ b/content/browser/frame_host/render_frame_proxy_host.cc
@@ -577,8 +577,16 @@
 }
 
 void RenderFrameProxyHost::DidFocusFrame() {
-  frame_tree_node_->current_frame_host()->delegate()->SetFocusedFrame(
-      frame_tree_node_, GetSiteInstance());
+  RenderFrameHostImpl* render_frame_host =
+      frame_tree_node_->current_frame_host();
+
+  // We need to handle this case due to a race, see documentation in
+  // RenderFrameHostImpl::DidFocusFrame for more details.
+  if (render_frame_host->InsidePortal())
+    return;
+
+  render_frame_host->delegate()->SetFocusedFrame(frame_tree_node_,
+                                                 GetSiteInstance());
 }
 
 void RenderFrameProxyHost::OnPrintCrossProcessSubframe(const gfx::Rect& rect,
diff --git a/content/browser/geolocation/geolocation_service_impl_unittest.cc b/content/browser/geolocation/geolocation_service_impl_unittest.cc
index 93406a0..78b023e3 100644
--- a/content/browser/geolocation/geolocation_service_impl_unittest.cc
+++ b/content/browser/geolocation/geolocation_service_impl_unittest.cc
@@ -14,7 +14,6 @@
 #include "content/public/test/mock_permission_manager.h"
 #include "content/public/test/navigation_simulator.h"
 #include "content/public/test/test_browser_context.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "content/test/test_render_frame_host.h"
 #include "mojo/public/cpp/bindings/remote.h"
 #include "services/device/public/cpp/test/scoped_geolocation_overrider.h"
@@ -77,7 +76,6 @@
 
   void SetUp() override {
     RenderViewHostImplTestHarness::SetUp();
-    service_manager_context_ = std::make_unique<TestServiceManagerContext>();
     NavigateAndCommit(kMainUrl);
     browser_context_.reset(new content::TestBrowserContext());
     browser_context_->SetPermissionControllerDelegate(
@@ -93,7 +91,6 @@
   void TearDown() override {
     context_.reset();
     geolocation_overrider_.reset();
-    service_manager_context_.reset();
     browser_context_.reset();
     RenderViewHostImplTestHarness::TearDown();
   }
@@ -130,7 +127,6 @@
   }
 
  private:
-  std::unique_ptr<TestServiceManagerContext> service_manager_context_;
   std::unique_ptr<device::ScopedGeolocationOverrider> geolocation_overrider_;
 
   std::unique_ptr<TestBrowserContext> browser_context_;
diff --git a/content/browser/idle/idle_manager_unittest.cc b/content/browser/idle/idle_manager_unittest.cc
index fd72769..e73dd1f 100644
--- a/content/browser/idle/idle_manager_unittest.cc
+++ b/content/browser/idle/idle_manager_unittest.cc
@@ -18,7 +18,6 @@
 #include "content/public/test/mock_permission_manager.h"
 #include "content/public/test/navigation_simulator.h"
 #include "content/public/test/test_browser_context.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "content/test/test_render_frame_host.h"
 #include "mojo/public/cpp/bindings/binding_set.h"
 #include "mojo/public/cpp/bindings/receiver.h"
diff --git a/content/browser/loader/loader_browsertest.cc b/content/browser/loader/loader_browsertest.cc
index 39e4516..09976684 100644
--- a/content/browser/loader/loader_browsertest.cc
+++ b/content/browser/loader/loader_browsertest.cc
@@ -686,18 +686,18 @@
 
 struct RequestData {
   const GURL url;
-  const GURL first_party;
+  const net::SiteForCookies site_for_cookies;
   const base::Optional<url::Origin> initiator;
   const int load_flags;
   const std::string referrer;
 
   RequestData(const GURL& url,
-              const GURL& first_party,
+              const net::SiteForCookies& site_for_cookies,
               const base::Optional<url::Origin>& initiator,
               int load_flags,
               const std::string& referrer)
       : url(url),
-        first_party(first_party),
+        site_for_cookies(site_for_cookies),
         initiator(initiator),
         load_flags(load_flags),
         referrer(referrer) {}
@@ -777,11 +777,13 @@
   // |first_party| and |initiator| that match the URL of the top-level document.
   // The top-level document itself doesn't have an |initiator|.
   const RequestData* first_request = &requests[0];
-  EXPECT_EQ(top_url, first_request->first_party);
+  EXPECT_TRUE(first_request->site_for_cookies.IsEquivalent(
+      net::SiteForCookies::FromUrl(top_url)));
   EXPECT_FALSE(first_request->initiator.has_value());
   for (size_t i = 1; i < requests.size(); i++) {
     const RequestData* request = &requests[i];
-    EXPECT_EQ(top_origin, url::Origin::Create(request->first_party));
+    EXPECT_TRUE(request->site_for_cookies.IsEquivalent(
+        net::SiteForCookies::FromOrigin(top_origin)));
     ASSERT_TRUE(request->initiator.has_value());
     EXPECT_EQ(top_origin, request->initiator);
   }
@@ -843,15 +845,17 @@
   EXPECT_EQ(9u, requests.size());
 
   // The first items loaded are the top-level and nested documents. These should
-  // both have a |first_party| that match the origin of the top-level document.
-  // The top-level document has no initiator and the nested frame is initiated
-  // by the top-level document.
+  // both have a |site_for_cookies| that matches the origin of the top-level
+  // document. The top-level document has no initiator and the nested frame is
+  // initiated by the top-level document.
   EXPECT_EQ(top_url, requests[0].url);
-  EXPECT_EQ(top_origin, url::Origin::Create(requests[0].first_party));
+  EXPECT_TRUE(requests[0].site_for_cookies.IsEquivalent(
+      net::SiteForCookies::FromOrigin(top_origin)));
   EXPECT_FALSE(requests[0].initiator.has_value());
 
   EXPECT_EQ(nested_url, requests[1].url);
-  EXPECT_EQ(top_origin, url::Origin::Create(requests[1].first_party));
+  EXPECT_TRUE(requests[1].site_for_cookies.IsEquivalent(
+      net::SiteForCookies::FromOrigin(top_origin)));
   EXPECT_EQ(top_origin, requests[1].initiator);
 
   // The remaining items are loaded as subresources in the nested document, and
@@ -859,7 +863,7 @@
   // document in which they're embedded.
   for (size_t i = 2; i < requests.size(); i++) {
     SCOPED_TRACE(requests[i].url);
-    EXPECT_EQ(GURL::EmptyGURL(), requests[i].first_party);
+    EXPECT_TRUE(requests[i].site_for_cookies.IsNull());
     EXPECT_EQ(nested_origin, requests[i].initiator);
   }
 }
@@ -879,19 +883,23 @@
   // URL to which they navigate. The navigation was initiated outside of a
   // document, so there is no |initiator|.
   EXPECT_EQ(top_url, requests[0].url);
-  EXPECT_EQ(top_origin, url::Origin::Create(requests[0].first_party));
+  EXPECT_TRUE(requests[0].site_for_cookies.IsEquivalent(
+      net::SiteForCookies::FromOrigin(top_origin)));
   EXPECT_FALSE(requests[0].initiator.has_value());
 
   // Subresource requests have a first-party and initiator that matches the
   // document in which they're embedded.
   EXPECT_EQ(image_url, requests[1].url);
-  EXPECT_EQ(top_origin, url::Origin::Create(requests[1].first_party));
+  EXPECT_TRUE(requests[1].site_for_cookies.IsEquivalent(
+      net::SiteForCookies::FromOrigin(top_origin)));
   EXPECT_EQ(top_origin, requests[1].initiator);
 
   // Same-origin nested frames have a first-party and initiator that matches
-  // the document in which they're embedded.
+  // the document in which they're embedded (since the frame is same site with
+  // toplevel).
   EXPECT_EQ(nested_url, requests[2].url);
-  EXPECT_EQ(top_origin, url::Origin::Create(requests[2].first_party));
+  EXPECT_TRUE(requests[2].site_for_cookies.IsEquivalent(
+      net::SiteForCookies::FromOrigin(top_origin)));
   EXPECT_EQ(top_origin, requests[2].initiator);
 }
 
@@ -919,14 +927,15 @@
   // URL to which they navigate, even if they fail to load. The navigation was
   // initiated outside of a document, so there is no |initiator|.
   EXPECT_EQ(top_url, requests[0].url);
-  EXPECT_EQ(top_origin, url::Origin::Create(requests[0].first_party));
+  EXPECT_TRUE(requests[0].site_for_cookies.IsEquivalent(
+      net::SiteForCookies::FromOrigin(top_origin)));
   EXPECT_FALSE(requests[0].initiator.has_value());
 
   // Auxiliary navigations have a first-party that matches the URL to which they
   // navigate, and an initiator that matches the document that triggered them.
   EXPECT_EQ(auxiliary_url, requests[1].url);
-  EXPECT_EQ(url::Origin::Create(auxiliary_url),
-            url::Origin::Create(requests[1].first_party));
+  EXPECT_TRUE(requests[1].site_for_cookies.IsEquivalent(
+      net::SiteForCookies::FromUrl(auxiliary_url)));
   EXPECT_EQ(top_origin, requests[1].initiator);
 }
 
@@ -962,14 +971,15 @@
   // URL to which they navigate, even if they fail to load. The navigation was
   // initiated outside of a document, so there is no initiator.
   EXPECT_EQ(top_url, requests[0].url);
-  EXPECT_EQ(top_origin, url::Origin::Create(requests[0].first_party));
+  EXPECT_TRUE(requests[0].site_for_cookies.IsEquivalent(
+      net::SiteForCookies::FromOrigin(top_origin)));
   EXPECT_FALSE(requests[0].initiator.has_value());
 
   // Auxiliary navigations have a first-party that matches the URL to which they
   // navigate, and an initiator that matches the document that triggered them.
   EXPECT_EQ(auxiliary_url, requests[1].url);
-  EXPECT_EQ(url::Origin::Create(auxiliary_url),
-            url::Origin::Create(requests[1].first_party));
+  EXPECT_TRUE(requests[1].site_for_cookies.IsEquivalent(
+      net::SiteForCookies::FromUrl(auxiliary_url)));
   EXPECT_EQ(top_origin, requests[1].initiator);
 }
 
@@ -988,7 +998,8 @@
   // URL to which they navigate, even if they fail to load. The navigation was
   // initiated outside of a document, so there is no initiator.
   EXPECT_EQ(top_url, requests[0].url);
-  EXPECT_EQ(top_origin, url::Origin::Create(requests[0].first_party));
+  EXPECT_TRUE(requests[0].site_for_cookies.IsEquivalent(
+      net::SiteForCookies::FromOrigin(top_origin)));
   EXPECT_FALSE(requests[0].initiator.has_value());
 }
 
@@ -1012,23 +1023,26 @@
   // User-initiated top-level navigations have a |first-party|. The navigation
   // was initiated outside of a document, so there are no initiator.
   EXPECT_EQ(top_url, requests[0].url);
-  EXPECT_EQ(top_origin, url::Origin::Create(requests[0].first_party));
+  EXPECT_TRUE(requests[0].site_for_cookies.IsEquivalent(
+      net::SiteForCookies::FromOrigin(top_origin)));
   EXPECT_FALSE(requests[0].initiator.has_value());
 
   EXPECT_EQ(top_js_url, requests[1].url);
-  EXPECT_EQ(top_origin, url::Origin::Create(requests[1].first_party));
+  EXPECT_TRUE(requests[1].site_for_cookies.IsEquivalent(
+      net::SiteForCookies::FromOrigin(top_origin)));
   EXPECT_EQ(top_origin, requests[1].initiator);
 
   // Cross-origin frames have a first-party and initiator that matches the URL
-  // in which they're embedded.
+  // in which they're embedded (if they are the first cross-origin thing)
   EXPECT_EQ(nested_url, requests[2].url);
-  EXPECT_EQ(top_origin, url::Origin::Create(requests[2].first_party));
+  EXPECT_TRUE(requests[2].site_for_cookies.IsEquivalent(
+      net::SiteForCookies::FromOrigin(top_origin)));
   EXPECT_EQ(top_origin, requests[2].initiator);
 
   // Cross-origin subresource requests have a unique first-party, and an
   // initiator that matches the document in which they're embedded.
   EXPECT_EQ(nested_js_url, requests[3].url);
-  EXPECT_EQ(GURL::EmptyGURL(), requests[3].first_party);
+  EXPECT_TRUE(requests[3].site_for_cookies.IsNull());
   EXPECT_EQ(nested_origin, requests[3].initiator);
 }
 
diff --git a/content/browser/loader/navigation_url_loader_impl.cc b/content/browser/loader/navigation_url_loader_impl.cc
index f111550..d5ccf21 100644
--- a/content/browser/loader/navigation_url_loader_impl.cc
+++ b/content/browser/loader/navigation_url_loader_impl.cc
@@ -194,7 +194,8 @@
 
   new_request->method = request_info->common_params->method;
   new_request->url = request_info->common_params->url;
-  new_request->site_for_cookies = request_info->site_for_cookies;
+  new_request->site_for_cookies =
+      net::SiteForCookies::FromUrl(request_info->site_for_cookies);
   new_request->attach_same_site_cookies =
       request_info->begin_params->attach_same_site_cookies;
   new_request->trusted_params = network::ResourceRequest::TrustedParams();
@@ -1087,8 +1088,8 @@
                       if (container_host) {
                         container_host->SetControllerRegistration(
                             nullptr, false /* notify_controllerchange */);
-                        container_host->UpdateUrls(GURL(), GURL(),
-                                                   base::nullopt);
+                        container_host->UpdateUrls(
+                            GURL(), net::SiteForCookies(), base::nullopt);
                       }
                     },
                     // Unretained() is safe because the handle owns the core,
diff --git a/content/browser/media/audible_metrics_unittest.cc b/content/browser/media/audible_metrics_unittest.cc
index e9e9b0a..c5205f2 100644
--- a/content/browser/media/audible_metrics_unittest.cc
+++ b/content/browser/media/audible_metrics_unittest.cc
@@ -10,7 +10,6 @@
 #include "base/test/simple_test_tick_clock.h"
 #include "content/browser/media/media_web_contents_observer.h"
 #include "content/public/test/test_renderer_host.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "content/test/test_web_contents.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -33,8 +32,6 @@
 
   void SetUp() override {
     RenderViewHostTestHarness::SetUp();
-    test_service_manager_context_ =
-        std::make_unique<content::TestServiceManagerContext>();
     audible_metrics_ = std::make_unique<AudibleMetrics>();
 
     // Set the clock to a value different than 0 so the time it gives is
@@ -45,8 +42,6 @@
 
   void TearDown() override {
     audible_metrics_.reset();
-    // Must be reset before browser thread teardown.
-    test_service_manager_context_.reset();
     RenderViewHostTestHarness::TearDown();
   }
 
@@ -82,11 +77,6 @@
   base::HistogramTester histogram_tester_;
   base::UserActionTester user_action_tester_;
 
-  // WebContentsImpl accesses the system Connector, so the Service Manager must
-  // be initialized.
-  std::unique_ptr<content::TestServiceManagerContext>
-      test_service_manager_context_;
-
   DISALLOW_COPY_AND_ASSIGN(AudibleMetricsTest);
 };
 
diff --git a/content/browser/media/media_internals_unittest.cc b/content/browser/media/media_internals_unittest.cc
index db010d5a..ef87be55 100644
--- a/content/browser/media/media_internals_unittest.cc
+++ b/content/browser/media/media_internals_unittest.cc
@@ -19,7 +19,6 @@
 #include "content/public/browser/media_session_service.h"
 #include "content/public/test/browser_task_environment.h"
 #include "content/public/test/test_renderer_host.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "content/test/test_web_contents.h"
 #include "media/base/audio_parameters.h"
 #include "media/base/channel_layout.h"
@@ -41,18 +40,11 @@
 // integer/string values.
 class MediaInternalsTestBase {
  public:
-  MediaInternalsTestBase() = default;
-  virtual ~MediaInternalsTestBase() = default;
-
-  void SetUpServiceManager() {
+  MediaInternalsTestBase() {
     scoped_feature_list_.InitAndEnableFeature(
         media_session::features::kMediaSessionService);
-
-    service_manager_context_ =
-        std::make_unique<content::TestServiceManagerContext>();
   }
-
-  void TearDownServiceManager() { service_manager_context_.reset(); }
+  virtual ~MediaInternalsTestBase() = default;
 
  protected:
   // Extracts and deserializes the JSON update data; merges into |update_data_|.
@@ -115,7 +107,6 @@
 
  private:
   base::test::ScopedFeatureList scoped_feature_list_;
-  std::unique_ptr<content::TestServiceManagerContext> service_manager_context_;
 };
 
 }  // namespace
@@ -131,13 +122,11 @@
       : update_cb_(base::BindRepeating(
             &MediaInternalsVideoCaptureDeviceTest::UpdateCallbackImpl,
             base::Unretained(this))) {
-    SetUpServiceManager();
     media_internals()->AddUpdateCallback(update_cb_);
   }
 
   ~MediaInternalsVideoCaptureDeviceTest() override {
     media_internals()->RemoveUpdateCallback(update_cb_);
-    TearDownServiceManager();
   }
 
  protected:
@@ -231,13 +220,11 @@
         test_component_(GetParam()),
         audio_log_(media_internals()->CreateAudioLog(test_component_,
                                                      kTestComponentID)) {
-    SetUpServiceManager();
     media_internals()->AddUpdateCallback(update_cb_);
   }
 
   virtual ~MediaInternalsAudioLogTest() {
     media_internals()->RemoveUpdateCallback(update_cb_);
-    TearDownServiceManager();
   }
 
  protected:
@@ -334,7 +321,6 @@
 
   void SetUp() override {
     RenderViewHostTestHarness::SetUp();
-    SetUpServiceManager();
 
     update_cb_ =
         base::BindRepeating(&MediaInternalsAudioFocusTest::UpdateCallbackImpl,
@@ -349,7 +335,6 @@
 
   void TearDown() override {
     content::MediaInternals::GetInstance()->RemoveUpdateCallback(update_cb_);
-    TearDownServiceManager();
     RenderViewHostTestHarness::TearDown();
   }
 
diff --git a/content/browser/media/session/media_session_controller_unittest.cc b/content/browser/media/session/media_session_controller_unittest.cc
index 107f78e..5928b87 100644
--- a/content/browser/media/session/media_session_controller_unittest.cc
+++ b/content/browser/media/session/media_session_controller_unittest.cc
@@ -8,7 +8,6 @@
 #include "content/browser/media/session/media_session_controller.h"
 #include "content/browser/media/session/media_session_impl.h"
 #include "content/common/media/media_player_delegate_messages.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "content/test/test_render_view_host.h"
 #include "content/test/test_web_contents.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -20,9 +19,6 @@
   void SetUp() override {
     RenderViewHostImplTestHarness::SetUp();
 
-    test_service_manager_context_ =
-        std::make_unique<content::TestServiceManagerContext>();
-
     id_ = MediaPlayerId(contents()->GetMainFrame(), 0);
     controller_ = CreateController();
   }
@@ -32,7 +28,6 @@
     // destruction relative to the MediaSession instance.
     controller_.reset();
 
-    test_service_manager_context_.reset();
     RenderViewHostImplTestHarness::TearDown();
   }
 
@@ -148,10 +143,6 @@
 
   MediaPlayerId id_ = MediaPlayerId::CreateMediaPlayerIdForTests();
   std::unique_ptr<MediaSessionController> controller_;
-
- private:
-  std::unique_ptr<content::TestServiceManagerContext>
-      test_service_manager_context_;
 };
 
 TEST_F(MediaSessionControllerTest, NoAudioNoSession) {
diff --git a/content/browser/media/session/media_session_controllers_manager_unittest.cc b/content/browser/media/session/media_session_controllers_manager_unittest.cc
index 64778e5fa..d16ca1d 100644
--- a/content/browser/media/session/media_session_controllers_manager_unittest.cc
+++ b/content/browser/media/session/media_session_controllers_manager_unittest.cc
@@ -8,7 +8,6 @@
 #include "base/test/scoped_feature_list.h"
 #include "build/build_config.h"
 #include "content/browser/media/session/media_session_controller.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "content/test/test_render_view_host.h"
 #include "content/test/test_web_contents.h"
 #include "media/base/media_content_type.h"
@@ -69,8 +68,6 @@
 
     scoped_feature_list_.InitWithFeatures(enabled_features, disabled_features);
 
-    service_manager_context_ = std::make_unique<TestServiceManagerContext>();
-
     media_player_id_ = MediaPlayerId(contents()->GetMainFrame(), 1);
     mock_media_session_controller_ =
         std::make_unique<StrictMock<MockMediaSessionController>>(
@@ -109,7 +106,6 @@
     mock_media_session_controller_.reset();
     mock_media_session_controller_ptr_ = nullptr;
     manager_.reset();
-    service_manager_context_.reset();
     RenderViewHostImplTestHarness::TearDown();
   }
 
@@ -120,7 +116,6 @@
   StrictMock<MockMediaSessionController>* mock_media_session_controller_ptr_ =
       nullptr;
   std::unique_ptr<MediaSessionControllersManager> manager_;
-  std::unique_ptr<TestServiceManagerContext> service_manager_context_;
 
  private:
   base::test::ScopedFeatureList scoped_feature_list_;
diff --git a/content/browser/media/session/media_session_impl_service_routing_unittest.cc b/content/browser/media/session/media_session_impl_service_routing_unittest.cc
index afcf9394..47d7836 100644
--- a/content/browser/media/session/media_session_impl_service_routing_unittest.cc
+++ b/content/browser/media/session/media_session_impl_service_routing_unittest.cc
@@ -12,7 +12,6 @@
 #include "base/time/time.h"
 #include "content/browser/media/session/media_session_player_observer.h"
 #include "content/browser/media/session/mock_media_session_service_impl.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "content/test/test_render_view_host.h"
 #include "content/test/test_web_contents.h"
 #include "media/base/media_content_type.h"
@@ -89,9 +88,6 @@
   void SetUp() override {
     RenderViewHostImplTestHarness::SetUp();
 
-    test_service_manager_context_ =
-        std::make_unique<content::TestServiceManagerContext>();
-
     contents()->GetMainFrame()->InitializeRenderFrameIfNeeded();
     contents()->NavigateAndCommit(GURL("http://www.example.com"));
 
@@ -105,7 +101,6 @@
   void TearDown() override {
     services_.clear();
 
-    test_service_manager_context_.reset();
     RenderViewHostImplTestHarness::TearDown();
   }
 
@@ -193,9 +188,6 @@
   media_session::MediaMetadata empty_metadata_;
 
   std::set<MediaSessionAction> actions_;
-
-  std::unique_ptr<content::TestServiceManagerContext>
-      test_service_manager_context_;
 };
 
 TEST_F(MediaSessionImplServiceRoutingTest, NoFrameProducesAudio) {
diff --git a/content/browser/media/session/media_session_impl_uma_unittest.cc b/content/browser/media/session/media_session_impl_uma_unittest.cc
index 0260cd32..b7d434d 100644
--- a/content/browser/media/session/media_session_impl_uma_unittest.cc
+++ b/content/browser/media/session/media_session_impl_uma_unittest.cc
@@ -11,7 +11,6 @@
 #include "base/test/metrics/histogram_tester.h"
 #include "content/browser/media/session/media_session_player_observer.h"
 #include "content/browser/media/session/mock_media_session_service_impl.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "content/test/test_render_view_host.h"
 #include "content/test/test_web_contents.h"
 #include "media/base/media_content_type.h"
@@ -79,9 +78,6 @@
   void SetUp() override {
     RenderViewHostImplTestHarness::SetUp();
 
-    test_service_manager_context_ =
-        std::make_unique<content::TestServiceManagerContext>();
-
     contents()->GetMainFrame()->InitializeRenderFrameIfNeeded();
     StartPlayer();
 
@@ -92,7 +88,6 @@
 
   void TearDown() override {
     mock_media_session_service_.reset();
-    test_service_manager_context_.reset();
     RenderViewHostImplTestHarness::TearDown();
   }
 
@@ -114,10 +109,6 @@
   std::unique_ptr<MockMediaSessionServiceImpl> mock_media_session_service_;
   std::unique_ptr<MockMediaSessionPlayerObserver> player_;
   base::HistogramTester histogram_tester_;
-
- private:
-  std::unique_ptr<content::TestServiceManagerContext>
-      test_service_manager_context_;
 };
 
 TEST_F(MediaSessionImplUmaTest, RecordPauseDefaultOnUISuspend) {
diff --git a/content/browser/portal/portal.cc b/content/browser/portal/portal.cc
index c12180f6..255aab3 100644
--- a/content/browser/portal/portal.cc
+++ b/content/browser/portal/portal.cc
@@ -38,6 +38,7 @@
                std::unique_ptr<WebContents> existing_web_contents)
     : Portal(owner_render_frame_host) {
   SetPortalContents(std::move(existing_web_contents));
+  GetPortalContents()->NotifyInsidePortal(true);
 }
 
 Portal::~Portal() {
@@ -373,6 +374,7 @@
   portal_contents_impl_->GetMainFrame()->OnPortalActivated(
       std::move(predecessor_web_contents), std::move(data),
       std::move(callback));
+  portal_contents_impl_->NotifyInsidePortal(false);
 
   devtools_instrumentation::PortalActivated(outer_contents->GetMainFrame());
 }
diff --git a/content/browser/portal/portal_browsertest.cc b/content/browser/portal/portal_browsertest.cc
index 3c7f951..f819a665 100644
--- a/content/browser/portal/portal_browsertest.cc
+++ b/content/browser/portal/portal_browsertest.cc
@@ -20,6 +20,7 @@
 #include "content/browser/renderer_host/render_widget_host_view_child_frame.h"
 #include "content/browser/web_contents/web_contents_impl.h"
 #include "content/common/frame.mojom-test-utils.h"
+#include "content/public/browser/site_isolation_policy.h"
 #include "content/public/browser/web_contents_delegate.h"
 #include "content/public/common/content_switches.h"
 #include "content/public/test/browser_test_utils.h"
@@ -379,22 +380,25 @@
   // Create portal and wait for navigation.
   // In the case of crbug.com/1002228 , this does not appear to reproduce if the
   // portal element is too small, so we give it an explicit size.
-  PortalCreatedObserver portal_created_observer(main_frame);
-  GURL a_url(embedded_test_server()->GetURL("a.com", "/title1.html"));
-  TestNavigationObserver navigation_observer(a_url);
-  navigation_observer.StartWatchingNewWebContents();
-  EXPECT_TRUE(ExecJs(main_frame,
-                     JsReplace("var portal = document.createElement('portal');"
-                               "portal.src = $1;"
-                               "portal.style.width = '500px';"
-                               "portal.style.height = '500px';"
-                               "portal.style.border = 'solid';"
-                               "document.body.appendChild(portal);",
-                               a_url)));
-  Portal* portal = portal_created_observer.WaitUntilPortalCreated();
+  Portal* portal = nullptr;
+  {
+    PortalCreatedObserver portal_created_observer(main_frame);
+    GURL a_url(embedded_test_server()->GetURL("a.com", "/title1.html"));
+    TestNavigationObserver navigation_observer(a_url);
+    navigation_observer.StartWatchingNewWebContents();
+    EXPECT_TRUE(ExecJs(
+        main_frame, JsReplace("var portal = document.createElement('portal');"
+                              "portal.src = $1;"
+                              "portal.style.width = '500px';"
+                              "portal.style.height = '500px';"
+                              "portal.style.border = 'solid';"
+                              "document.body.appendChild(portal);",
+                              a_url)));
+    portal = portal_created_observer.WaitUntilPortalCreated();
+    navigation_observer.Wait();
+  }
   WebContentsImpl* portal_contents = portal->GetPortalContents();
   RenderFrameHostImpl* portal_frame = portal_contents->GetMainFrame();
-  navigation_observer.Wait();
   WaitForHitTestData(portal_frame);
 
   // Add an out-of-process iframe to the portal.
@@ -445,6 +449,86 @@
   EXPECT_EQ(false, EvalJs(portal_iframe, "clicked"));
 }
 
+// Tests that an OOPIF inside a portal receives input events after the portal is
+// activated.
+IN_PROC_BROWSER_TEST_F(PortalHitTestBrowserTest, InputToOOPIFAfterActivation) {
+  EXPECT_TRUE(NavigateToURL(
+      shell(), embedded_test_server()->GetURL("portal.test", "/title1.html")));
+  WebContentsImpl* web_contents_impl =
+      static_cast<WebContentsImpl*>(shell()->web_contents());
+  RenderFrameHostImpl* main_frame = web_contents_impl->GetMainFrame();
+
+  // Create portal.
+  // TODO(crbug.com/1029330): We currently need to give portal a large enough
+  // size to prevent overlap with iframe as this results in the test becoming
+  // flaky.
+  Portal* portal = nullptr;
+  {
+    PortalCreatedObserver portal_created_observer(main_frame);
+    GURL a_url(embedded_test_server()->GetURL("a.com", "/title1.html"));
+    TestNavigationObserver navigation_observer(a_url);
+    navigation_observer.StartWatchingNewWebContents();
+    EXPECT_TRUE(ExecJs(
+        main_frame, JsReplace("var portal = document.createElement('portal');"
+                              "portal.src = $1;"
+                              "portal.style.width = '500px';"
+                              "portal.style.height = '500px';"
+                              "document.body.appendChild(portal);",
+                              a_url)));
+    portal = portal_created_observer.WaitUntilPortalCreated();
+    navigation_observer.Wait();
+  }
+  WebContentsImpl* portal_contents = portal->GetPortalContents();
+  RenderFrameHostImpl* portal_frame = portal_contents->GetMainFrame();
+  WaitForHitTestData(portal_frame);
+
+  // Add an out-of-process iframe to the portal.
+  GURL b_url(embedded_test_server()->GetURL("b.com", "/title1.html"));
+  TestNavigationObserver iframe_navigation_observer(portal_contents);
+  EXPECT_TRUE(ExecJs(portal_frame,
+                     JsReplace("var iframe = document.createElement('iframe');"
+                               "iframe.src = $1;"
+                               "document.body.appendChild(iframe);",
+                               b_url)));
+  iframe_navigation_observer.Wait();
+  EXPECT_EQ(b_url, iframe_navigation_observer.last_navigation_url());
+
+  RenderFrameHostImpl* oopif = portal_frame->child_at(0)->current_frame_host();
+  RenderWidgetHostViewBase* oopif_view =
+      static_cast<RenderWidgetHostViewBase*>(oopif->GetView());
+  EXPECT_TRUE(oopif_view->IsRenderWidgetHostViewChildFrame());
+  EXPECT_NE(portal_frame->GetSiteInstance(), oopif->GetSiteInstance());
+  WaitForHitTestData(oopif);
+  EXPECT_TRUE(ExecJs(oopif,
+                     "var clicked = false;"
+                     "document.body.onmousedown = _ => clicked = true;"));
+
+  // Activate the portal.
+  {
+    PortalActivatedObserver activated_observer(portal);
+    EXPECT_TRUE(ExecJs(main_frame,
+                       "let portal = document.querySelector('portal');"
+                       "portal.activate().then(() => { "
+                       "  document.body.removeChild(portal); "
+                       "});"));
+    activated_observer.WaitForActivateAndHitTestData();
+  }
+  EXPECT_EQ(shell()->web_contents(), portal_contents);
+
+  // Send a mouse event to the OOPIF.
+  gfx::Point root_location =
+      oopif_view->TransformPointToRootCoordSpace(gfx::Point(10, 10));
+  InputEventAckWaiter waiter(oopif->GetRenderWidgetHost(),
+                             blink::WebInputEvent::kMouseDown);
+  SimulateRoutedMouseEvent(
+      shell()->web_contents(), blink::WebInputEvent::kMouseDown,
+      blink::WebPointerProperties::Button::kLeft, root_location);
+  waiter.Wait();
+
+  // Check that the click event was received by the iframe.
+  EXPECT_EQ(true, EvalJs(oopif, "clicked"));
+}
+
 // Tests that async hit testing does not target portals.
 IN_PROC_BROWSER_TEST_F(PortalBrowserTest, AsyncEventTargetingIgnoresPortals) {
   EXPECT_TRUE(NavigateToURL(
@@ -1379,6 +1463,55 @@
   EXPECT_EQ(pending_url, activated_controller.GetEntryAtIndex(1)->GetURL());
 }
 
+IN_PROC_BROWSER_TEST_F(PortalBrowserTest, DidFocusIPCFromFrameInsidePortal) {
+  EXPECT_TRUE(NavigateToURL(
+      shell(), embedded_test_server()->GetURL("portal.test", "/title1.html")));
+  WebContentsImpl* web_contents_impl =
+      static_cast<WebContentsImpl*>(shell()->web_contents());
+  RenderFrameHostImpl* main_frame = web_contents_impl->GetMainFrame();
+
+  GURL url = embedded_test_server()->GetURL("a.com", "/title1.html");
+  Portal* portal = CreatePortalToUrl(web_contents_impl, url);
+  WebContentsImpl* portal_contents = portal->GetPortalContents();
+  RenderFrameHostImpl* portal_main_frame = portal_contents->GetMainFrame();
+
+  GURL b_url(embedded_test_server()->GetURL("b.com", "/title1.html"));
+  TestNavigationObserver iframe_navigation_observer(portal_contents);
+  EXPECT_TRUE(ExecJs(portal_main_frame,
+                     JsReplace("var iframe = document.createElement('iframe');"
+                               "iframe.src = $1;"
+                               "document.body.appendChild(iframe);",
+                               b_url)));
+  iframe_navigation_observer.Wait();
+  EXPECT_EQ(b_url, iframe_navigation_observer.last_navigation_url());
+
+  web_contents_impl->SetAsFocusedWebContentsIfNecessary();
+  EXPECT_EQ(web_contents_impl->GetFocusedWebContents(), web_contents_impl);
+  EXPECT_EQ(web_contents_impl->GetFocusedFrame(), main_frame);
+
+  // Simulate renderer sending LocalFrameHost::DidFocusFrame IPC.
+  RenderFrameHostImpl* iframe_rfhi =
+      portal_main_frame->child_at(0)->current_frame_host();
+  iframe_rfhi->DidFocusFrame();
+
+  // Focus should not have changed.
+  EXPECT_EQ(web_contents_impl->GetFocusedWebContents(), web_contents_impl);
+  EXPECT_EQ(web_contents_impl->GetFocusedFrame(), main_frame);
+
+  if (!SiteIsolationPolicy::UseDedicatedProcessesForAllSites())
+    return;
+
+  // Simulate renderer sending RemoteFrameHost::DidFocusFrame IPC.
+  RenderFrameProxyHost* iframe_rfph =
+      portal_main_frame->child_at(0)->render_manager()->GetRenderFrameProxyHost(
+          portal_main_frame->GetSiteInstance());
+  iframe_rfph->DidFocusFrame();
+
+  // Focus should not have changed.
+  EXPECT_EQ(web_contents_impl->GetFocusedWebContents(), web_contents_impl);
+  EXPECT_EQ(web_contents_impl->GetFocusedFrame(), main_frame);
+}
+
 class PortalOOPIFBrowserTest : public PortalBrowserTest {
  protected:
   PortalOOPIFBrowserTest() {}
diff --git a/content/browser/process_internals/process_internals_ui.cc b/content/browser/process_internals/process_internals_ui.cc
index abd2eed..d21cdb2a 100644
--- a/content/browser/process_internals/process_internals_ui.cc
+++ b/content/browser/process_internals/process_internals_ui.cc
@@ -43,6 +43,8 @@
   WebUIDataSource::Add(web_contents()->GetBrowserContext(), source);
 }
 
+WEB_UI_CONTROLLER_TYPE_IMPL(ProcessInternalsUI)
+
 ProcessInternalsUI::~ProcessInternalsUI() = default;
 
 void ProcessInternalsUI::RenderFrameCreated(RenderFrameHost* rfh) {
diff --git a/content/browser/process_internals/process_internals_ui.h b/content/browser/process_internals/process_internals_ui.h
index 67a7b9f..47cba88 100644
--- a/content/browser/process_internals/process_internals_ui.h
+++ b/content/browser/process_internals/process_internals_ui.h
@@ -36,6 +36,8 @@
  private:
   std::unique_ptr<::mojom::ProcessInternalsHandler> ui_handler_;
 
+  WEB_UI_CONTROLLER_TYPE_DECL();
+
   DISALLOW_COPY_AND_ASSIGN(ProcessInternalsUI);
 };
 
diff --git a/content/browser/renderer_host/frame_connector_delegate.cc b/content/browser/renderer_host/frame_connector_delegate.cc
index f10065a..27f44d63 100644
--- a/content/browser/renderer_host/frame_connector_delegate.cc
+++ b/content/browser/renderer_host/frame_connector_delegate.cc
@@ -90,7 +90,7 @@
 }
 
 cc::TouchAction FrameConnectorDelegate::InheritedEffectiveTouchAction() const {
-  return cc::TouchAction::kTouchActionAuto;
+  return cc::TouchAction::kAuto;
 }
 
 bool FrameConnectorDelegate::IsHidden() const {
diff --git a/content/browser/renderer_host/input/compositor_event_ack_browsertest.cc b/content/browser/renderer_host/input/compositor_event_ack_browsertest.cc
index 1377b66..4bd3a3f 100644
--- a/content/browser/renderer_host/input/compositor_event_ack_browsertest.cc
+++ b/content/browser/renderer_host/input/compositor_event_ack_browsertest.cc
@@ -260,7 +260,7 @@
   touch_event.SetTimeStamp(ui::EventTimeForNow());
   input_event_router->RouteTouchEvent(root_view, &touch_event,
                                       ui::LatencyInfo());
-  GetWidgetHost()->input_router()->OnSetTouchAction(cc::kTouchActionAuto);
+  GetWidgetHost()->input_router()->OnSetTouchAction(cc::TouchAction::kAuto);
 
   // Send GSB to start scrolling sequence.
   blink::WebGestureEvent gesture_scroll_begin(
diff --git a/content/browser/renderer_host/input/input_router_impl.cc b/content/browser/renderer_host/input/input_router_impl.cc
index 4c23c997a..cd504db1 100644
--- a/content/browser/renderer_host/input/input_router_impl.cc
+++ b/content/browser/renderer_host/input/input_router_impl.cc
@@ -302,7 +302,7 @@
   touch_action_filter_.OnSetWhiteListedTouchAction(touch_action);
   client_->OnSetWhiteListedTouchAction(touch_action);
   if (compositor_touch_action_enabled_) {
-    if (touch_action == cc::kTouchActionAuto)
+    if (touch_action == cc::TouchAction::kAuto)
       FlushDeferredGestureQueue();
     UpdateTouchAckTimeoutEnabled();
   }
@@ -383,7 +383,7 @@
 }
 
 void InputRouterImpl::FlushDeferredGestureQueue() {
-  touch_action_filter_.OnSetTouchAction(cc::kTouchActionAuto);
+  touch_action_filter_.OnSetTouchAction(cc::TouchAction::kAuto);
   ProcessDeferredGestureEventQueue();
 }
 
@@ -401,7 +401,7 @@
     // touch action, then we should set the touch actions to Auto.
     if (!compositor_touch_action_enabled_ &&
         !touch_action_filter_.allowed_touch_action().has_value()) {
-      touch_action_filter_.OnSetTouchAction(cc::kTouchActionAuto);
+      touch_action_filter_.OnSetTouchAction(cc::TouchAction::kAuto);
       if (compositor_touch_action_enabled_)
         touch_event_queue_.StopTimeoutMonitor();
       UpdateTouchAckTimeoutEnabled();
@@ -694,7 +694,7 @@
 
 void InputRouterImpl::ForceSetTouchActionAuto() {
   touch_action_filter_.AppendToGestureSequenceForDebugging("F");
-  touch_action_filter_.OnSetTouchAction(cc::kTouchActionAuto);
+  touch_action_filter_.OnSetTouchAction(cc::TouchAction::kAuto);
   if (compositor_touch_action_enabled_) {
     // TODO(xidachen): Call FlushDeferredGestureQueue when this flag is enabled.
     touch_event_queue_.StopTimeoutMonitor();
@@ -717,17 +717,17 @@
 
   touch_action_filter_.AppendToGestureSequenceForDebugging("S");
   touch_action_filter_.AppendToGestureSequenceForDebugging(
-      base::NumberToString(touch_action).c_str());
+      base::NumberToString(static_cast<int>(touch_action)).c_str());
   touch_action_filter_.OnSetTouchAction(touch_action);
   if (compositor_touch_action_enabled_)
     touch_event_queue_.StopTimeoutMonitor();
 
-  // kTouchActionNone should disable the touch ack timeout.
+  // TouchAction::kNone should disable the touch ack timeout.
   UpdateTouchAckTimeoutEnabled();
 }
 
 void InputRouterImpl::UpdateTouchAckTimeoutEnabled() {
-  // kTouchActionNone will prevent scrolling, in which case the timeout serves
+  // TouchAction::kNone will prevent scrolling, in which case the timeout serves
   // little purpose. It's also a strong signal that touch handling is critical
   // to page functionality, so the timeout could do more harm than good.
   base::Optional<cc::TouchAction> allowed_touch_action =
@@ -736,8 +736,8 @@
       touch_action_filter_.white_listed_touch_action();
   const bool touch_ack_timeout_disabled =
       (allowed_touch_action.has_value() &&
-       allowed_touch_action.value() == cc::kTouchActionNone) ||
-      (white_listed_touch_action == cc::kTouchActionNone);
+       allowed_touch_action.value() == cc::TouchAction::kNone) ||
+      (white_listed_touch_action == cc::TouchAction::kNone);
   touch_event_queue_.SetAckTimeoutEnabled(!touch_ack_timeout_disabled);
 }
 
diff --git a/content/browser/renderer_host/input/input_router_impl_unittest.cc b/content/browser/renderer_host/input/input_router_impl_unittest.cc
index 200d78e..a1439da 100644
--- a/content/browser/renderer_host/input/input_router_impl_unittest.cc
+++ b/content/browser/renderer_host/input/input_router_impl_unittest.cc
@@ -406,7 +406,7 @@
     // InputRouterImpl::SetTouchActionFromMain calls
     // InputRouterImpl::UpdateTouchAckTimeoutEnabled and that will cancel the
     // touch timeout when the touch action is None.
-    input_router_->SetTouchActionFromMain(cc::kTouchActionNone);
+    input_router_->SetTouchActionFromMain(cc::TouchAction::kNone);
   }
 
   void OnSetWhiteListedTouchAction(cc::TouchAction white_listed_touch_action,
@@ -434,7 +434,7 @@
   void PressAndSetTouchActionAuto() {
     PressTouchPoint(1, 1);
     SendTouchEvent();
-    input_router_->OnSetTouchAction(cc::kTouchActionAuto);
+    input_router_->OnSetTouchAction(cc::TouchAction::kAuto);
     GetAndResetDispatchedMessages();
     disposition_handler_->GetAndResetAckCount();
   }
@@ -460,7 +460,7 @@
     ResetTouchAction();
     PressTouchPoint(1, 1);
     base::Optional<ui::DidOverscrollParams> overscroll;
-    base::Optional<cc::TouchAction> touch_action = cc::kTouchActionPan;
+    base::Optional<cc::TouchAction> touch_action = cc::TouchAction::kPan;
     input_router_->SendTouchEvent(TouchEventWithLatencyInfo(touch_event_));
     EXPECT_TRUE(input_router_->touch_event_queue_.IsTimeoutRunningForTesting());
     input_router_->TouchEventHandled(
@@ -472,7 +472,7 @@
     if (compositor_touch_action_enabled) {
       EXPECT_TRUE(
           input_router_->touch_event_queue_.IsTimeoutRunningForTesting());
-      input_router_->SetTouchActionFromMain(cc::kTouchActionPan);
+      input_router_->SetTouchActionFromMain(cc::TouchAction::kPan);
       EXPECT_FALSE(
           input_router_->touch_event_queue_.IsTimeoutRunningForTesting());
     } else {
@@ -713,13 +713,13 @@
 // Test that the active touch sequence count increment when the touch start is
 // ACKed from the main thread.
 TEST_P(InputRouterImplTest, ActiveTouchSequenceCountWithTouchAction) {
-  base::Optional<cc::TouchAction> touch_action(cc::kTouchActionPanY);
+  base::Optional<cc::TouchAction> touch_action(cc::TouchAction::kPanY);
   ActiveTouchSequenceCountTest(touch_action,
                                INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING);
 }
 
 TEST_P(InputRouterImplTest, ActiveTouchSequenceCountWithTouchActionNoConsumer) {
-  base::Optional<cc::TouchAction> touch_action(cc::kTouchActionPanY);
+  base::Optional<cc::TouchAction> touch_action(cc::TouchAction::kPanY);
   ActiveTouchSequenceCountTest(touch_action,
                                INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS);
 }
@@ -730,9 +730,9 @@
                                    : InputEventAckSource::MAIN_THREAD;
   base::Optional<cc::TouchAction> expected_touch_action;
   if (!compositor_touch_action_enabled_)
-    expected_touch_action = cc::kTouchActionAuto;
+    expected_touch_action = cc::TouchAction::kAuto;
   OnTouchEventAckWithAckState(source, INPUT_EVENT_ACK_STATE_CONSUMED,
-                              expected_touch_action, cc::kTouchActionAuto);
+                              expected_touch_action, cc::TouchAction::kAuto);
 }
 
 TEST_P(InputRouterImplTest, TouchActionAutoWithAckStateNotConsumed) {
@@ -741,9 +741,9 @@
                                    : InputEventAckSource::MAIN_THREAD;
   base::Optional<cc::TouchAction> expected_touch_action;
   if (!compositor_touch_action_enabled_)
-    expected_touch_action = cc::kTouchActionAuto;
+    expected_touch_action = cc::TouchAction::kAuto;
   OnTouchEventAckWithAckState(source, INPUT_EVENT_ACK_STATE_NOT_CONSUMED,
-                              expected_touch_action, cc::kTouchActionAuto);
+                              expected_touch_action, cc::TouchAction::kAuto);
 }
 
 TEST_P(InputRouterImplTest, TouchActionAutoWithAckStateConsumedShouldBubble) {
@@ -752,10 +752,10 @@
                                    : InputEventAckSource::MAIN_THREAD;
   base::Optional<cc::TouchAction> expected_touch_action;
   if (!compositor_touch_action_enabled_)
-    expected_touch_action = cc::kTouchActionAuto;
+    expected_touch_action = cc::TouchAction::kAuto;
   OnTouchEventAckWithAckState(source,
                               INPUT_EVENT_ACK_STATE_CONSUMED_SHOULD_BUBBLE,
-                              expected_touch_action, cc::kTouchActionAuto);
+                              expected_touch_action, cc::TouchAction::kAuto);
 }
 
 TEST_P(InputRouterImplTest, TouchActionAutoWithAckStateNoConsumerExists) {
@@ -764,9 +764,9 @@
                                    : InputEventAckSource::MAIN_THREAD;
   base::Optional<cc::TouchAction> expected_touch_action;
   if (!compositor_touch_action_enabled_)
-    expected_touch_action = cc::kTouchActionAuto;
+    expected_touch_action = cc::TouchAction::kAuto;
   OnTouchEventAckWithAckState(source, INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS,
-                              expected_touch_action, cc::kTouchActionAuto);
+                              expected_touch_action, cc::TouchAction::kAuto);
 }
 
 TEST_P(InputRouterImplTest, TouchActionAutoWithAckStateIgnored) {
@@ -775,9 +775,9 @@
                                    : InputEventAckSource::MAIN_THREAD;
   base::Optional<cc::TouchAction> expected_touch_action;
   if (!compositor_touch_action_enabled_)
-    expected_touch_action = cc::kTouchActionAuto;
+    expected_touch_action = cc::TouchAction::kAuto;
   OnTouchEventAckWithAckState(source, INPUT_EVENT_ACK_STATE_IGNORED,
-                              expected_touch_action, cc::kTouchActionAuto);
+                              expected_touch_action, cc::TouchAction::kAuto);
 }
 
 TEST_P(InputRouterImplTest, TouchActionAutoWithAckStateNonBlocking) {
@@ -786,9 +786,9 @@
                                    : InputEventAckSource::MAIN_THREAD;
   base::Optional<cc::TouchAction> expected_touch_action;
   if (!compositor_touch_action_enabled_)
-    expected_touch_action = cc::kTouchActionAuto;
+    expected_touch_action = cc::TouchAction::kAuto;
   OnTouchEventAckWithAckState(source, INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING,
-                              expected_touch_action, cc::kTouchActionAuto);
+                              expected_touch_action, cc::TouchAction::kAuto);
 }
 
 TEST_P(InputRouterImplTest, TouchActionAutoWithAckStateNonBlockingDueToFling) {
@@ -797,10 +797,10 @@
                                    : InputEventAckSource::MAIN_THREAD;
   base::Optional<cc::TouchAction> expected_touch_action;
   if (!compositor_touch_action_enabled_)
-    expected_touch_action = cc::kTouchActionAuto;
+    expected_touch_action = cc::TouchAction::kAuto;
   OnTouchEventAckWithAckState(
       source, INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING_DUE_TO_FLING,
-      expected_touch_action, cc::kTouchActionAuto);
+      expected_touch_action, cc::TouchAction::kAuto);
 }
 
 // Tests that touch-events are sent properly.
@@ -809,7 +809,7 @@
 
   PressTouchPoint(1, 1);
   SendTouchEvent();
-  input_router_->OnSetTouchAction(cc::kTouchActionAuto);
+  input_router_->OnSetTouchAction(cc::TouchAction::kAuto);
   EXPECT_TRUE(client_->GetAndResetFilterEventCalled());
   DispatchedMessages touch_start_event = GetAndResetDispatchedMessages();
   ASSERT_EQ(1U, touch_start_event.size());
@@ -951,7 +951,7 @@
   // Precede the TouchCancel with an appropriate TouchStart;
   PressTouchPoint(1, 1);
   SendTouchEvent();
-  input_router_->OnSetTouchAction(cc::kTouchActionAuto);
+  input_router_->OnSetTouchAction(cc::TouchAction::kAuto);
   DispatchedMessages dispatched_messages = GetAndResetDispatchedMessages();
   ASSERT_EQ(1U, dispatched_messages.size());
   ASSERT_TRUE(dispatched_messages[0]->ToEvent());
@@ -1313,7 +1313,7 @@
   input_router()->NotifySiteIsMobileOptimized(false);
   EXPECT_TRUE(TouchEventTimeoutEnabled());
 
-  // kTouchActionNone (and no other touch-action) should disable the timeout.
+  // TouchAction::kNone (and no other touch-action) should disable the timeout.
   OnHasTouchEventHandlers(true);
   PressTouchPoint(1, 1);
   SendTouchEvent();
@@ -1332,7 +1332,7 @@
 
   PressTouchPoint(1, 1);
   SendTouchEvent();
-  input_router_->OnSetTouchAction(cc::kTouchActionNone);
+  input_router_->OnSetTouchAction(cc::TouchAction::kNone);
   DispatchedMessages touch_press_event3 = GetAndResetDispatchedMessages();
   ASSERT_EQ(1u, touch_press_event3.size());
   ASSERT_TRUE(touch_press_event3[0]->ToEvent());
@@ -1353,11 +1353,11 @@
   PressTouchPoint(1, 1);
   SendTouchEvent();
   ResetTouchAction();
-  input_router_->OnSetTouchAction(cc::kTouchActionAuto);
+  input_router_->OnSetTouchAction(cc::TouchAction::kAuto);
   EXPECT_TRUE(TouchEventTimeoutEnabled());
 }
 
-// Test that a touch sequenced preceded by kTouchActionNone is not affected by
+// Test that a touch sequenced preceded by TouchAction::kNone is not affected by
 // the touch timeout.
 TEST_P(InputRouterImplTest,
        TouchAckTimeoutDisabledForTouchSequenceAfterTouchActionNone) {
@@ -1374,11 +1374,11 @@
   ASSERT_EQ(1U, dispatched_messages.size());
   ASSERT_TRUE(dispatched_messages[0]->ToEvent());
 
-  // kTouchActionNone should disable the timeout.
+  // TouchAction::kNone should disable the timeout.
   CancelTouchTimeout();
   dispatched_messages[0]->ToEvent()->CallCallback(
       InputEventAckSource::MAIN_THREAD, ui::LatencyInfo(),
-      INPUT_EVENT_ACK_STATE_CONSUMED, base::nullopt, cc::kTouchActionNone);
+      INPUT_EVENT_ACK_STATE_CONSUMED, base::nullopt, cc::TouchAction::kNone);
   EXPECT_EQ(1U, disposition_handler_->GetAndResetAckCount());
   EXPECT_FALSE(TouchEventTimeoutEnabled());
 
@@ -1399,7 +1399,7 @@
   // End the touch sequence.
   ReleaseTouchPoint(0);
   SendTouchEvent();
-  input_router_->SetTouchActionFromMain(cc::kTouchActionAuto);
+  input_router_->SetTouchActionFromMain(cc::TouchAction::kAuto);
   dispatched_messages = GetAndResetDispatchedMessages();
   EXPECT_EQ(1U, dispatched_messages.size());
   dispatched_messages[0]->ToEvent()->CallCallback(
@@ -1462,7 +1462,7 @@
 
   touch_press_event1[0]->ToEvent()->CallCallback(
       InputEventAckSource::MAIN_THREAD, ui::LatencyInfo(),
-      INPUT_EVENT_ACK_STATE_CONSUMED, base::nullopt, cc::kTouchActionNone);
+      INPUT_EVENT_ACK_STATE_CONSUMED, base::nullopt, cc::TouchAction::kNone);
   touch_move_event1[0]->ToEvent()->CallCallback(INPUT_EVENT_ACK_STATE_CONSUMED);
 
   // Ensure touch action is still none, as the next touch start hasn't been
@@ -1485,7 +1485,7 @@
   // started.
   touch_press_event2[0]->ToEvent()->CallCallback(
       InputEventAckSource::COMPOSITOR_THREAD, ui::LatencyInfo(),
-      INPUT_EVENT_ACK_STATE_CONSUMED, base::nullopt, cc::kTouchActionAuto);
+      INPUT_EVENT_ACK_STATE_CONSUMED, base::nullopt, cc::TouchAction::kAuto);
   touch_press_event2[0]->ToEvent()->CallCallback(
       INPUT_EVENT_ACK_STATE_CONSUMED);
   touch_move_event2[0]->ToEvent()->CallCallback(INPUT_EVENT_ACK_STATE_CONSUMED);
@@ -1522,7 +1522,7 @@
   CancelTouchTimeout();
   touch_press_event1[0]->ToEvent()->CallCallback(
       InputEventAckSource::MAIN_THREAD, ui::LatencyInfo(),
-      INPUT_EVENT_ACK_STATE_CONSUMED, base::nullopt, cc::kTouchActionNone);
+      INPUT_EVENT_ACK_STATE_CONSUMED, base::nullopt, cc::TouchAction::kNone);
   touch_move_event1[0]->ToEvent()->CallCallback(INPUT_EVENT_ACK_STATE_CONSUMED);
 
   ReleaseTouchPoint(0);
@@ -1596,7 +1596,7 @@
   // Ensure we have touch-action:none, suppressing scroll events.
   dispatched_messages[0]->ToEvent()->CallCallback(
       InputEventAckSource::MAIN_THREAD, ui::LatencyInfo(),
-      INPUT_EVENT_ACK_STATE_CONSUMED, base::nullopt, cc::kTouchActionNone);
+      INPUT_EVENT_ACK_STATE_CONSUMED, base::nullopt, cc::TouchAction::kNone);
   EXPECT_EQ(0U, GetAndResetDispatchedMessages().size());
   dispatched_messages[1]->ToEvent()->CallCallback(
       INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
@@ -1638,7 +1638,7 @@
 
   PressTouchPoint(1, 1);
   SendTouchEvent();
-  input_router_->OnSetTouchAction(cc::kTouchActionAuto);
+  input_router_->OnSetTouchAction(cc::TouchAction::kAuto);
   EXPECT_TRUE(client_->GetAndResetFilterEventCalled());
   DispatchedMessages dispatched_messages = GetAndResetDispatchedMessages();
   ASSERT_EQ(1U, dispatched_messages.size());
@@ -1683,7 +1683,7 @@
   ASSERT_TRUE(dispatched_messages[0]->ToEvent());
   dispatched_messages[0]->ToEvent()->CallCallback(
       InputEventAckSource::MAIN_THREAD, ui::LatencyInfo(),
-      INPUT_EVENT_ACK_STATE_CONSUMED, base::nullopt, cc::kTouchActionNone);
+      INPUT_EVENT_ACK_STATE_CONSUMED, base::nullopt, cc::TouchAction::kNone);
   ReleaseTouchPoint(0);
   SendTouchEvent();
 
@@ -2066,7 +2066,7 @@
   // The white listed touch action is bundled in the ack.
   if (compositor_touch_action_enabled_)
     return;
-  cc::TouchAction touch_action = cc::kTouchActionPanY;
+  cc::TouchAction touch_action = cc::TouchAction::kPanY;
   OnSetWhiteListedTouchAction(touch_action, 0,
                               INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
   cc::TouchAction white_listed_touch_action =
@@ -2122,7 +2122,7 @@
   ASSERT_EQ(1U, dispatched_messages.size());
   ASSERT_TRUE(dispatched_messages[0]->ToEvent());
   InputEventAckSource source = InputEventAckSource::MAIN_THREAD;
-  base::Optional<cc::TouchAction> expected_touch_action = cc::kTouchActionPan;
+  base::Optional<cc::TouchAction> expected_touch_action = cc::TouchAction::kPan;
   if (compositor_touch_action_enabled_)
     source = InputEventAckSource::COMPOSITOR_THREAD;
   dispatched_messages[0]->ToEvent()->CallCallback(
diff --git a/content/browser/renderer_host/input/mock_input_router.cc b/content/browser/renderer_host/input/mock_input_router.cc
index 096d1a6..d3c4e44c 100644
--- a/content/browser/renderer_host/input/mock_input_router.cc
+++ b/content/browser/renderer_host/input/mock_input_router.cc
@@ -38,11 +38,11 @@
 }
 
 base::Optional<cc::TouchAction> MockInputRouter::AllowedTouchAction() {
-  return cc::kTouchActionAuto;
+  return cc::TouchAction::kAuto;
 }
 
 base::Optional<cc::TouchAction> MockInputRouter::ActiveTouchAction() {
-  return cc::kTouchActionAuto;
+  return cc::TouchAction::kAuto;
 }
 
 mojo::PendingRemote<mojom::WidgetInputHandlerHost>
diff --git a/content/browser/renderer_host/input/mock_input_router_client.cc b/content/browser/renderer_host/input/mock_input_router_client.cc
index d153e4a..3cb546c3 100644
--- a/content/browser/renderer_host/input/mock_input_router_client.cc
+++ b/content/browser/renderer_host/input/mock_input_router_client.cc
@@ -23,7 +23,7 @@
       in_flight_event_count_(0),
       filter_state_(INPUT_EVENT_ACK_STATE_NOT_CONSUMED),
       filter_input_event_called_(false),
-      white_listed_touch_action_(cc::kTouchActionAuto) {}
+      white_listed_touch_action_(cc::TouchAction::kAuto) {}
 
 MockInputRouterClient::~MockInputRouterClient() {}
 
@@ -108,7 +108,7 @@
 
 cc::TouchAction MockInputRouterClient::GetAndResetWhiteListedTouchAction() {
   cc::TouchAction white_listed_touch_action = white_listed_touch_action_;
-  white_listed_touch_action_ = cc::kTouchActionAuto;
+  white_listed_touch_action_ = cc::TouchAction::kAuto;
   return white_listed_touch_action;
 }
 
diff --git a/content/browser/renderer_host/input/touch_action_filter.cc b/content/browser/renderer_host/input/touch_action_filter.cc
index ef788d2..b96cf665 100644
--- a/content/browser/renderer_host/input/touch_action_filter.cc
+++ b/content/browser/renderer_host/input/touch_action_filter.cc
@@ -23,11 +23,13 @@
 // Actions on an axis are disallowed if the perpendicular axis has a filter set
 // and no filter is set for the queried axis.
 bool IsYAxisActionDisallowed(cc::TouchAction action) {
-  return (action & cc::kTouchActionPanX) && !(action & cc::kTouchActionPanY);
+  return ((action & cc::TouchAction::kPanX) != cc::TouchAction::kNone) &&
+         ((action & cc::TouchAction::kPanY) == cc::TouchAction::kNone);
 }
 
 bool IsXAxisActionDisallowed(cc::TouchAction action) {
-  return (action & cc::kTouchActionPanY) && !(action & cc::kTouchActionPanX);
+  return ((action & cc::TouchAction::kPanY) != cc::TouchAction::kNone) &&
+         ((action & cc::TouchAction::kPanX) == cc::TouchAction::kNone);
 }
 
 // Report how often the gesture event is or is not dropped due to the current
@@ -138,8 +140,8 @@
             touch_action = white_listed_touch_action_;
           } else {
             gesture_sequence_.append("B");
-            SetTouchAction(cc::kTouchActionAuto);
-            touch_action = cc::kTouchActionAuto;
+            SetTouchAction(cc::TouchAction::kAuto);
+            touch_action = cc::TouchAction::kAuto;
           }
         }
       }
@@ -235,7 +237,8 @@
     // Evaluate the |drop_pinch_events_| here instead of GSB because pinch
     // events could arrive without GSB, e.g. double-tap-drag.
     case WebInputEvent::kGesturePinchBegin:
-      drop_pinch_events_ = (touch_action & cc::kTouchActionPinchZoom) == 0;
+      drop_pinch_events_ = (touch_action & cc::TouchAction::kPinchZoom) ==
+                           cc::TouchAction::kNone;
       FALLTHROUGH;
     case WebInputEvent::kGesturePinchUpdate:
       gesture_sequence_.append("P");
@@ -283,7 +286,8 @@
         gesture_sequence_.clear();
       }
       allow_current_double_tap_event_ =
-          (touch_action & cc::kTouchActionDoubleTapZoom) != 0;
+          (touch_action & cc::TouchAction::kDoubleTapZoom) !=
+          cc::TouchAction::kNone;
       if (!allow_current_double_tap_event_) {
         gesture_event->SetType(WebInputEvent::kGestureTap);
         drop_current_tap_ending_event_ = true;
@@ -321,7 +325,7 @@
       // In theory, the num_of_active_touches_ should be > 0 at this point. But
       // crash reports suggest otherwise.
       if (num_of_active_touches_ <= 0)
-        SetTouchAction(cc::kTouchActionAuto);
+        SetTouchAction(cc::TouchAction::kAuto);
       active_touch_action_ = allowed_touch_action_;
       gesture_sequence_.append(
           base::NumberToString(gesture_event->unique_touch_event_id));
@@ -385,13 +389,13 @@
   // 2. Only subtractive - eg. can't trigger scrolling on a element that
   //    otherwise has scrolling disabling by the addition of a finger.
   allowed_touch_action_ =
-      allowed_touch_action_.value_or(cc::kTouchActionAuto) & touch_action;
+      allowed_touch_action_.value_or(cc::TouchAction::kAuto) & touch_action;
 
   // When user enabled force enable zoom, we should always allow pinch-zoom
   // except for touch-action:none.
-  if (force_enable_zoom_ && allowed_touch_action_ != cc::kTouchActionNone) {
+  if (force_enable_zoom_ && allowed_touch_action_ != cc::TouchAction::kNone) {
     allowed_touch_action_ =
-        allowed_touch_action_.value() | cc::kTouchActionPinchZoom;
+        allowed_touch_action_.value() | cc::TouchAction::kPinchZoom;
   }
   active_touch_action_ = allowed_touch_action_;
   has_deferred_events_ = false;
@@ -417,17 +421,17 @@
 
 void TouchActionFilter::ReportTouchAction() {
   // Report the effective touch action computed by blink such as
-  // kTouchActionNone, kTouchActionPanX, etc.
-  // Since |cc::kTouchActionAuto| is equivalent to |cc::kTouchActionMax|, we
+  // TouchAction::kNone, TouchAction::kPanX, etc.
+  // Since |cc::TouchAction::kAuto| is equivalent to |cc::TouchAction::kMax|, we
   // must add one to the upper bound to be able to visualize the number of
-  // times |cc::kTouchActionAuto| is hit.
+  // times |cc::TouchAction::kAuto| is hit.
   // https://crbug.com/879511, remove this temporary fix.
   if (!active_touch_action_.has_value())
     return;
 
   UMA_HISTOGRAM_ENUMERATION("TouchAction.EffectiveTouchAction",
                             active_touch_action_.value(),
-                            cc::kTouchActionMax + 1);
+                            static_cast<int>(cc::TouchAction::kMax) + 1);
 
   // Report how often the effective touch action computed by blink is or is
   // not equivalent to the whitelisted touch action computed by the
@@ -447,13 +451,13 @@
   // sequenceo.
   if (has_touch_event_handler_) {
     allowed_touch_action_.reset();
-    white_listed_touch_action_ = cc::kTouchActionAuto;
+    white_listed_touch_action_ = cc::TouchAction::kAuto;
   } else {
     // Lack of a touch handler indicates that the page either has no
     // touch-action modifiers or that all its touch-action modifiers are auto.
     // Resetting the touch-action here allows forwarding of subsequent gestures
     // even if the underlying touches never reach the router.
-    SetTouchAction(cc::kTouchActionAuto);
+    SetTouchAction(cc::TouchAction::kAuto);
   }
 }
 
@@ -474,7 +478,8 @@
     // Any GestureScrollBegin with more than one fingers is like a pinch-zoom
     // for touch-actions, see crbug.com/632525. Therefore, we switch to
     // blocked-manipulation mode iff pinch-zoom is disallowed.
-    return (touch_action & cc::kTouchActionPinchZoom) == 0;
+    return (touch_action & cc::TouchAction::kPinchZoom) ==
+           cc::TouchAction::kNone;
   }
 
   const float& deltaXHint = gesture_event.data.scroll_begin.delta_x_hint;
@@ -486,22 +491,23 @@
   const float absDeltaXHint = fabs(deltaXHint);
   const float absDeltaYHint = fabs(deltaYHint);
 
-  cc::TouchAction minimal_conforming_touch_action = cc::kTouchActionNone;
+  cc::TouchAction minimal_conforming_touch_action = cc::TouchAction::kNone;
   if (absDeltaXHint >= absDeltaYHint) {
     if (deltaXHint > 0)
-      minimal_conforming_touch_action |= cc::kTouchActionPanLeft;
+      minimal_conforming_touch_action |= cc::TouchAction::kPanLeft;
     else if (deltaXHint < 0)
-      minimal_conforming_touch_action |= cc::kTouchActionPanRight;
+      minimal_conforming_touch_action |= cc::TouchAction::kPanRight;
   }
   if (absDeltaYHint >= absDeltaXHint) {
     if (deltaYHint > 0)
-      minimal_conforming_touch_action |= cc::kTouchActionPanUp;
+      minimal_conforming_touch_action |= cc::TouchAction::kPanUp;
     else if (deltaYHint < 0)
-      minimal_conforming_touch_action |= cc::kTouchActionPanDown;
+      minimal_conforming_touch_action |= cc::TouchAction::kPanDown;
   }
-  DCHECK(minimal_conforming_touch_action != cc::kTouchActionNone);
+  DCHECK(minimal_conforming_touch_action != cc::TouchAction::kNone);
 
-  return (touch_action & minimal_conforming_touch_action) == 0;
+  return (touch_action & minimal_conforming_touch_action) ==
+         cc::TouchAction::kNone;
 }
 
 void TouchActionFilter::OnHasTouchEventHandlers(bool has_handlers) {
diff --git a/content/browser/renderer_host/input/touch_action_filter_unittest.cc b/content/browser/renderer_host/input/touch_action_filter_unittest.cc
index cfd6b4df..9f93ec2d 100644
--- a/content/browser/renderer_host/input/touch_action_filter_unittest.cc
+++ b/content/browser/renderer_host/input/touch_action_filter_unittest.cc
@@ -44,7 +44,7 @@
   void ResetTouchAction() { filter_.ResetTouchAction(); }
   void ResetActiveTouchAction() { filter_.active_touch_action_.reset(); }
   void ResetWhiteListedTouchAction() {
-    filter_.white_listed_touch_action_ = cc::kTouchActionAuto;
+    filter_.white_listed_touch_action_ = cc::TouchAction::kAuto;
   }
   void SetNoDeferredEvents() { filter_.has_deferred_events_ = false; }
   void SetGestureSequenceInProgress() {
@@ -259,9 +259,9 @@
   WebGestureEvent scroll_end = SyntheticWebGestureEventBuilder::Build(
       WebInputEvent::kGestureScrollEnd, kSourceDevice);
 
-  // cc::kTouchActionAuto doesn't cause any filtering.
+  // cc::TouchAction::kAuto doesn't cause any filtering.
   ResetTouchAction();
-  filter_.OnSetTouchAction(cc::kTouchActionAuto);
+  filter_.OnSetTouchAction(cc::TouchAction::kAuto);
   filter_.IncreaseActiveTouches();
   EXPECT_EQ(filter_.FilterGestureEvent(&tap_down),
             FilterGestureEventResult::kFilterGestureEventAllowed);
@@ -275,9 +275,9 @@
             FilterGestureEventResult::kFilterGestureEventAllowed);
   filter_.DecreaseActiveTouches();
 
-  // cc::kTouchActionNone filters out all scroll events, but no other events.
+  // cc::TouchAction::kNone filters out all scroll events, but no other events.
   ResetTouchAction();
-  filter_.OnSetTouchAction(cc::kTouchActionNone);
+  filter_.OnSetTouchAction(cc::TouchAction::kNone);
   filter_.IncreaseActiveTouches();
   EXPECT_EQ(filter_.FilterGestureEvent(&tap_down),
             FilterGestureEventResult::kFilterGestureEventAllowed);
@@ -295,7 +295,7 @@
 
   // When a new touch sequence begins, the state is reset.
   ResetTouchAction();
-  filter_.OnSetTouchAction(cc::kTouchActionAuto);
+  filter_.OnSetTouchAction(cc::TouchAction::kAuto);
   filter_.IncreaseActiveTouches();
   EXPECT_EQ(filter_.FilterGestureEvent(&tap_down),
             FilterGestureEventResult::kFilterGestureEventAllowed);
@@ -309,13 +309,13 @@
 
   // Setting touch action doesn't impact any in-progress gestures.
   ResetTouchAction();
-  filter_.OnSetTouchAction(cc::kTouchActionAuto);
+  filter_.OnSetTouchAction(cc::TouchAction::kAuto);
   filter_.IncreaseActiveTouches();
   EXPECT_EQ(filter_.FilterGestureEvent(&tap_down),
             FilterGestureEventResult::kFilterGestureEventAllowed);
   EXPECT_EQ(filter_.FilterGestureEvent(&scroll_begin),
             FilterGestureEventResult::kFilterGestureEventAllowed);
-  filter_.OnSetTouchAction(cc::kTouchActionNone);
+  filter_.OnSetTouchAction(cc::TouchAction::kNone);
   EXPECT_EQ(filter_.FilterGestureEvent(&scroll_update),
             FilterGestureEventResult::kFilterGestureEventAllowed);
   EXPECT_EQ(filter_.FilterGestureEvent(&scroll_end),
@@ -324,7 +324,7 @@
 
   // And the state is still cleared for the next gesture.
   ResetTouchAction();
-  filter_.OnSetTouchAction(cc::kTouchActionAuto);
+  filter_.OnSetTouchAction(cc::TouchAction::kAuto);
   filter_.IncreaseActiveTouches();
   EXPECT_EQ(filter_.FilterGestureEvent(&tap_down),
             FilterGestureEventResult::kFilterGestureEventAllowed);
@@ -336,13 +336,13 @@
 
   // Changing the touch action during a gesture has no effect.
   ResetTouchAction();
-  filter_.OnSetTouchAction(cc::kTouchActionNone);
+  filter_.OnSetTouchAction(cc::TouchAction::kNone);
   filter_.IncreaseActiveTouches();
   EXPECT_EQ(filter_.FilterGestureEvent(&tap_down),
             FilterGestureEventResult::kFilterGestureEventAllowed);
   EXPECT_EQ(filter_.FilterGestureEvent(&scroll_begin),
             FilterGestureEventResult::kFilterGestureEventFiltered);
-  filter_.OnSetTouchAction(cc::kTouchActionAuto);
+  filter_.OnSetTouchAction(cc::TouchAction::kAuto);
   EXPECT_EQ(filter_.FilterGestureEvent(&scroll_update),
             FilterGestureEventResult::kFilterGestureEventFiltered);
   EXPECT_EQ(filter_.FilterGestureEvent(&scroll_update),
@@ -360,8 +360,8 @@
   const float kScrollX = 7;
   const float kScrollY = 6;
 
-  PanTest(cc::kTouchActionPanLeft, kScrollX, kScrollY, kDX, kDY, kDX, 0);
-  PanTestForUnidirectionalTouchAction(cc::kTouchActionPanLeft, kScrollX, 0);
+  PanTest(cc::TouchAction::kPanLeft, kScrollX, kScrollY, kDX, kDY, kDX, 0);
+  PanTestForUnidirectionalTouchAction(cc::TouchAction::kPanLeft, kScrollX, 0);
 }
 
 TEST_P(TouchActionFilterTest, PanRight) {
@@ -370,8 +370,8 @@
   const float kScrollX = -7;
   const float kScrollY = 6;
 
-  PanTest(cc::kTouchActionPanRight, kScrollX, kScrollY, kDX, kDY, kDX, 0);
-  PanTestForUnidirectionalTouchAction(cc::kTouchActionPanRight, kScrollX, 0);
+  PanTest(cc::TouchAction::kPanRight, kScrollX, kScrollY, kDX, kDY, kDX, 0);
+  PanTestForUnidirectionalTouchAction(cc::TouchAction::kPanRight, kScrollX, 0);
 }
 
 TEST_P(TouchActionFilterTest, PanX) {
@@ -380,7 +380,7 @@
   const float kScrollX = 7;
   const float kScrollY = 6;
 
-  PanTest(cc::kTouchActionPanX, kScrollX, kScrollY, kDX, kDY, kDX, 0);
+  PanTest(cc::TouchAction::kPanX, kScrollX, kScrollY, kDX, kDY, kDX, 0);
 }
 
 TEST_P(TouchActionFilterTest, PanUp) {
@@ -389,8 +389,8 @@
   const float kScrollX = 6;
   const float kScrollY = 7;
 
-  PanTest(cc::kTouchActionPanUp, kScrollX, kScrollY, kDX, kDY, 0, kDY);
-  PanTestForUnidirectionalTouchAction(cc::kTouchActionPanUp, 0, kScrollY);
+  PanTest(cc::TouchAction::kPanUp, kScrollX, kScrollY, kDX, kDY, 0, kDY);
+  PanTestForUnidirectionalTouchAction(cc::TouchAction::kPanUp, 0, kScrollY);
 }
 
 TEST_P(TouchActionFilterTest, PanDown) {
@@ -399,8 +399,8 @@
   const float kScrollX = 6;
   const float kScrollY = -7;
 
-  PanTest(cc::kTouchActionPanDown, kScrollX, kScrollY, kDX, kDY, 0, kDY);
-  PanTestForUnidirectionalTouchAction(cc::kTouchActionPanDown, 0, kScrollY);
+  PanTest(cc::TouchAction::kPanDown, kScrollX, kScrollY, kDX, kDY, 0, kDY);
+  PanTestForUnidirectionalTouchAction(cc::TouchAction::kPanDown, 0, kScrollY);
 }
 
 TEST_P(TouchActionFilterTest, PanY) {
@@ -409,7 +409,7 @@
   const float kScrollX = 6;
   const float kScrollY = 7;
 
-  PanTest(cc::kTouchActionPanY, kScrollX, kScrollY, kDX, kDY, 0, kDY);
+  PanTest(cc::TouchAction::kPanY, kScrollX, kScrollY, kDX, kDY, 0, kDY);
 }
 
 TEST_P(TouchActionFilterTest, PanXY) {
@@ -423,7 +423,7 @@
   {
     // Scrolls hinted in the X axis are permitted and unmodified.
     ResetTouchAction();
-    filter_.OnSetTouchAction(cc::kTouchActionPan);
+    filter_.OnSetTouchAction(cc::TouchAction::kPan);
     filter_.IncreaseActiveTouches();
     WebGestureEvent scroll_begin =
         SyntheticWebGestureEventBuilder::BuildScrollBegin(-7, 6, kSourceDevice);
@@ -448,7 +448,7 @@
   {
     // Scrolls hinted in the Y axis are permitted and unmodified.
     ResetTouchAction();
-    filter_.OnSetTouchAction(cc::kTouchActionPan);
+    filter_.OnSetTouchAction(cc::TouchAction::kPan);
     filter_.IncreaseActiveTouches();
     WebGestureEvent scroll_begin =
         SyntheticWebGestureEventBuilder::BuildScrollBegin(-6, 7, kSourceDevice);
@@ -473,7 +473,7 @@
   {
     // A two-finger gesture is not allowed.
     ResetTouchAction();
-    filter_.OnSetTouchAction(cc::kTouchActionPan);
+    filter_.OnSetTouchAction(cc::TouchAction::kPan);
     filter_.IncreaseActiveTouches();
     WebGestureEvent scroll_begin =
         SyntheticWebGestureEventBuilder::BuildScrollBegin(-6, 7, kSourceDevice,
@@ -498,15 +498,18 @@
 TEST_P(TouchActionFilterTest, BitMath) {
   // Verify that the simple flag mixing properties we depend on are now
   // trivially true.
-  EXPECT_EQ(cc::kTouchActionNone, cc::kTouchActionNone & cc::kTouchActionAuto);
-  EXPECT_EQ(cc::kTouchActionNone, cc::kTouchActionPanY & cc::kTouchActionPanX);
-  EXPECT_EQ(cc::kTouchActionPan, cc::kTouchActionAuto & cc::kTouchActionPan);
-  EXPECT_EQ(cc::kTouchActionManipulation,
-            cc::kTouchActionAuto & ~cc::kTouchActionDoubleTapZoom);
-  EXPECT_EQ(cc::kTouchActionPanX,
-            cc::kTouchActionPanLeft | cc::kTouchActionPanRight);
-  EXPECT_EQ(cc::kTouchActionAuto,
-            cc::kTouchActionManipulation | cc::kTouchActionDoubleTapZoom);
+  EXPECT_EQ(cc::TouchAction::kNone,
+            cc::TouchAction::kNone & cc::TouchAction::kAuto);
+  EXPECT_EQ(cc::TouchAction::kNone,
+            cc::TouchAction::kPanY & cc::TouchAction::kPanX);
+  EXPECT_EQ(cc::TouchAction::kPan,
+            cc::TouchAction::kAuto & cc::TouchAction::kPan);
+  EXPECT_EQ(cc::TouchAction::kManipulation,
+            cc::TouchAction::kAuto & ~cc::TouchAction::kDoubleTapZoom);
+  EXPECT_EQ(cc::TouchAction::kPanX,
+            cc::TouchAction::kPanLeft | cc::TouchAction::kPanRight);
+  EXPECT_EQ(cc::TouchAction::kAuto,
+            cc::TouchAction::kManipulation | cc::TouchAction::kDoubleTapZoom);
 }
 
 TEST_P(TouchActionFilterTest, MultiTouch) {
@@ -524,8 +527,8 @@
 
   // For multiple points, the intersection is what matters.
   ResetTouchAction();
-  filter_.OnSetTouchAction(cc::kTouchActionNone);
-  filter_.OnSetTouchAction(cc::kTouchActionAuto);
+  filter_.OnSetTouchAction(cc::TouchAction::kNone);
+  filter_.OnSetTouchAction(cc::TouchAction::kAuto);
   filter_.IncreaseActiveTouches();
   EXPECT_EQ(filter_.FilterGestureEvent(&tap_down),
             FilterGestureEventResult::kFilterGestureEventAllowed);
@@ -543,9 +546,9 @@
 
   // Intersection of PAN_X and PAN_Y is NONE.
   ResetTouchAction();
-  filter_.OnSetTouchAction(cc::kTouchActionPanX);
-  filter_.OnSetTouchAction(cc::kTouchActionPanY);
-  filter_.OnSetTouchAction(cc::kTouchActionPan);
+  filter_.OnSetTouchAction(cc::TouchAction::kPanX);
+  filter_.OnSetTouchAction(cc::TouchAction::kPanY);
+  filter_.OnSetTouchAction(cc::TouchAction::kPan);
   filter_.IncreaseActiveTouches();
   EXPECT_EQ(filter_.FilterGestureEvent(&tap_down),
             FilterGestureEventResult::kFilterGestureEventAllowed);
@@ -589,7 +592,7 @@
 
     // Pinch is allowed with touch-action: auto.
     filter_.ResetTouchAction();
-    filter_.OnSetTouchAction(cc::kTouchActionAuto);
+    filter_.OnSetTouchAction(cc::TouchAction::kAuto);
     filter_.IncreaseActiveTouches();
     EXPECT_EQ(filter_.FilterGestureEvent(&tap_down),
               FilterGestureEventResult::kFilterGestureEventAllowed);
@@ -607,7 +610,7 @@
 
     // Pinch is not allowed with touch-action: none.
     filter_.ResetTouchAction();
-    filter_.OnSetTouchAction(cc::kTouchActionNone);
+    filter_.OnSetTouchAction(cc::TouchAction::kNone);
     filter_.IncreaseActiveTouches();
     EXPECT_EQ(filter_.FilterGestureEvent(&tap_down),
               FilterGestureEventResult::kFilterGestureEventAllowed);
@@ -632,7 +635,7 @@
     // Pinch is not allowed with touch-action: pan-x pan-y except for force
     // enable zoom.
     filter_.ResetTouchAction();
-    filter_.OnSetTouchAction(cc::kTouchActionPan);
+    filter_.OnSetTouchAction(cc::TouchAction::kPan);
     filter_.IncreaseActiveTouches();
     EXPECT_EQ(filter_.FilterGestureEvent(&tap_down),
               FilterGestureEventResult::kFilterGestureEventAllowed);
@@ -660,7 +663,7 @@
 
     // Pinch is allowed with touch-action: manipulation.
     filter_.ResetTouchAction();
-    filter_.OnSetTouchAction(cc::kTouchActionManipulation);
+    filter_.OnSetTouchAction(cc::TouchAction::kManipulation);
     filter_.IncreaseActiveTouches();
     EXPECT_EQ(filter_.FilterGestureEvent(&tap_down),
               FilterGestureEventResult::kFilterGestureEventAllowed);
@@ -686,7 +689,7 @@
 
     // Pinch state is automatically reset at the end of a scroll.
     filter_.ResetTouchAction();
-    filter_.OnSetTouchAction(cc::kTouchActionAuto);
+    filter_.OnSetTouchAction(cc::TouchAction::kAuto);
     filter_.IncreaseActiveTouches();
     EXPECT_EQ(filter_.FilterGestureEvent(&tap_down),
               FilterGestureEventResult::kFilterGestureEventAllowed);
@@ -703,7 +706,7 @@
     filter_.DecreaseActiveTouches();
 
     filter_.ResetTouchAction();
-    filter_.OnSetTouchAction(cc::kTouchActionAuto);
+    filter_.OnSetTouchAction(cc::TouchAction::kAuto);
     filter_.IncreaseActiveTouches();
     EXPECT_EQ(filter_.FilterGestureEvent(&pinch_begin),
               FilterGestureEventResult::kFilterGestureEventAllowed);
@@ -715,7 +718,7 @@
 
     // Scrolling is allowed when two fingers are down.
     filter_.ResetTouchAction();
-    filter_.OnSetTouchAction(cc::kTouchActionPinchZoom);
+    filter_.OnSetTouchAction(cc::TouchAction::kPinchZoom);
     filter_.IncreaseActiveTouches();
     EXPECT_EQ(filter_.FilterGestureEvent(&tap_down),
               FilterGestureEventResult::kFilterGestureEventAllowed);
@@ -736,7 +739,7 @@
     // time.
     scroll_begin.data.scroll_begin.pointer_count = 1;
     filter_.ResetTouchAction();
-    filter_.OnSetTouchAction(cc::kTouchActionPinchZoom);
+    filter_.OnSetTouchAction(cc::TouchAction::kPinchZoom);
     filter_.IncreaseActiveTouches();
     EXPECT_EQ(filter_.FilterGestureEvent(&tap_down),
               FilterGestureEventResult::kFilterGestureEventAllowed);
@@ -782,7 +785,7 @@
 
   // Double tap is allowed with touch action auto.
   ResetTouchAction();
-  filter_.OnSetTouchAction(cc::kTouchActionAuto);
+  filter_.OnSetTouchAction(cc::TouchAction::kAuto);
   EXPECT_EQ(filter_.FilterGestureEvent(&tap_down),
             FilterGestureEventResult::kFilterGestureEventAllowed);
   EXPECT_EQ(filter_.FilterGestureEvent(&unconfirmed_tap),
@@ -792,7 +795,7 @@
   ResetTouchAction();
   // Changing the touch action for the second tap doesn't effect the behaviour
   // of the event.
-  filter_.OnSetTouchAction(cc::kTouchActionNone);
+  filter_.OnSetTouchAction(cc::TouchAction::kNone);
   EXPECT_EQ(filter_.FilterGestureEvent(&tap_cancel),
             FilterGestureEventResult::kFilterGestureEventAllowed);
   EXPECT_EQ(filter_.FilterGestureEvent(&tap_down),
@@ -813,7 +816,7 @@
 
   // Double tap is disabled with any touch action other than auto.
   ResetTouchAction();
-  filter_.OnSetTouchAction(cc::kTouchActionManipulation);
+  filter_.OnSetTouchAction(cc::TouchAction::kManipulation);
   filter_.IncreaseActiveTouches();
   EXPECT_EQ(filter_.FilterGestureEvent(&tap_down),
             FilterGestureEventResult::kFilterGestureEventAllowed);
@@ -823,7 +826,7 @@
   // Changing the touch action for the second tap doesn't effect the behaviour
   // of the event. The tap cancel will come as part of the next touch sequence.
   ResetTouchAction();
-  filter_.OnSetTouchAction(cc::kTouchActionAuto);
+  filter_.OnSetTouchAction(cc::TouchAction::kAuto);
   EXPECT_EQ(filter_.FilterGestureEvent(&tap_cancel),
             FilterGestureEventResult::kFilterGestureEventFiltered);
   EXPECT_EQ(filter_.FilterGestureEvent(&tap_down),
@@ -845,7 +848,7 @@
 
   // Single tap is allowed with touch action auto.
   ResetTouchAction();
-  filter_.OnSetTouchAction(cc::kTouchActionAuto);
+  filter_.OnSetTouchAction(cc::TouchAction::kAuto);
   EXPECT_EQ(filter_.FilterGestureEvent(&tap_down),
             FilterGestureEventResult::kFilterGestureEventAllowed);
   EXPECT_EQ(filter_.FilterGestureEvent(&unconfirmed_tap1),
@@ -865,7 +868,7 @@
 
   // With touch action other than auto, tap unconfirmed is turned into tap.
   ResetTouchAction();
-  filter_.OnSetTouchAction(cc::kTouchActionNone);
+  filter_.OnSetTouchAction(cc::TouchAction::kNone);
   filter_.IncreaseActiveTouches();
   EXPECT_EQ(filter_.FilterGestureEvent(&tap_down),
             FilterGestureEventResult::kFilterGestureEventAllowed);
@@ -888,7 +891,7 @@
       WebInputEvent::kGestureScrollEnd, kSourceDevice);
 
   ResetTouchAction();
-  filter_.OnSetTouchAction(cc::kTouchActionNone);
+  filter_.OnSetTouchAction(cc::TouchAction::kNone);
   filter_.IncreaseActiveTouches();
   EXPECT_EQ(filter_.FilterGestureEvent(&tap_down),
             FilterGestureEventResult::kFilterGestureEventAllowed);
@@ -899,7 +902,7 @@
   filter_.DecreaseActiveTouches();
 
   ResetTouchAction();
-  filter_.OnSetTouchAction(cc::kTouchActionNone);
+  filter_.OnSetTouchAction(cc::TouchAction::kNone);
   filter_.IncreaseActiveTouches();
   EXPECT_EQ(filter_.FilterGestureEvent(&tap_down),
             FilterGestureEventResult::kFilterGestureEventAllowed);
@@ -908,7 +911,7 @@
   filter_.DecreaseActiveTouches();
 
   ResetTouchAction();
-  filter_.OnSetTouchAction(cc::kTouchActionAuto);
+  filter_.OnSetTouchAction(cc::TouchAction::kAuto);
   filter_.IncreaseActiveTouches();
   EXPECT_EQ(filter_.FilterGestureEvent(&tap_down),
             FilterGestureEventResult::kFilterGestureEventAllowed);
@@ -933,7 +936,7 @@
   WebGestureEvent scroll_end = SyntheticWebGestureEventBuilder::Build(
       WebInputEvent::kGestureScrollEnd, kSourceDevice);
 
-  filter_.OnSetTouchAction(cc::kTouchActionNone);
+  filter_.OnSetTouchAction(cc::TouchAction::kNone);
   filter_.IncreaseActiveTouches();
   EXPECT_EQ(filter_.FilterGestureEvent(&tap_down),
             FilterGestureEventResult::kFilterGestureEventAllowed);
@@ -947,7 +950,7 @@
   // Even though the allowed action is auto after the reset, the remaining
   // scroll and pinch events should be suppressed.
   ResetTouchAction();
-  filter_.OnSetTouchAction(cc::kTouchActionAuto);
+  filter_.OnSetTouchAction(cc::TouchAction::kAuto);
   EXPECT_EQ(filter_.FilterGestureEvent(&pinch_update),
             FilterGestureEventResult::kFilterGestureEventFiltered);
   EXPECT_EQ(filter_.FilterGestureEvent(&pinch_end),
@@ -957,7 +960,7 @@
   filter_.DecreaseActiveTouches();
 
   // A new scroll and pinch sequence should be allowed.
-  filter_.OnSetTouchAction(cc::kTouchActionAuto);
+  filter_.OnSetTouchAction(cc::TouchAction::kAuto);
   filter_.IncreaseActiveTouches();
   EXPECT_EQ(filter_.FilterGestureEvent(&scroll_begin),
             FilterGestureEventResult::kFilterGestureEventAllowed);
@@ -968,7 +971,7 @@
 
   // Resetting from auto to auto mid-stream should have no effect.
   ResetTouchAction();
-  filter_.OnSetTouchAction(cc::kTouchActionAuto);
+  filter_.OnSetTouchAction(cc::TouchAction::kAuto);
   EXPECT_EQ(filter_.FilterGestureEvent(&pinch_update),
             FilterGestureEventResult::kFilterGestureEventAllowed);
   EXPECT_EQ(filter_.FilterGestureEvent(&pinch_end),
@@ -983,7 +986,7 @@
 TEST_P(TouchActionFilterTest, TouchActionNotResetWithinGestureSequence) {
   filter_.OnHasTouchEventHandlers(true);
   EXPECT_FALSE(filter_.allowed_touch_action().has_value());
-  filter_.OnSetTouchAction(cc::kTouchActionPanY);
+  filter_.OnSetTouchAction(cc::TouchAction::kPanY);
 
   WebGestureEvent tap_down = SyntheticWebGestureEventBuilder::Build(
       WebInputEvent::kGestureTapDown, kSourceDevice);
@@ -998,7 +1001,7 @@
   filter_.IncreaseActiveTouches();
   EXPECT_EQ(filter_.FilterGestureEvent(&tap_down),
             FilterGestureEventResult::kFilterGestureEventAllowed);
-  EXPECT_EQ(cc::kTouchActionPanY, ActiveTouchAction().value());
+  EXPECT_EQ(cc::TouchAction::kPanY, ActiveTouchAction().value());
 
   EXPECT_EQ(filter_.FilterGestureEvent(&scroll_begin),
             FilterGestureEventResult::kFilterGestureEventAllowed);
@@ -1008,7 +1011,7 @@
   filter_.DecreaseActiveTouches();
   filter_.ReportAndResetTouchAction();
   EXPECT_FALSE(filter_.allowed_touch_action().has_value());
-  EXPECT_EQ(cc::kTouchActionPanY, ActiveTouchAction().value());
+  EXPECT_EQ(cc::TouchAction::kPanY, ActiveTouchAction().value());
   // In fling or fling boosting case, we will see ScrollUpdate after the touch
   // end.
   EXPECT_EQ(filter_.FilterGestureEvent(&scroll_update),
@@ -1018,7 +1021,7 @@
   // The |allowed_touch_action_| should have been reset, but not the
   // |scrolling_touch_action_|.
   EXPECT_FALSE(filter_.allowed_touch_action().has_value());
-  EXPECT_EQ(cc::kTouchActionPanY, ActiveTouchAction().value());
+  EXPECT_EQ(cc::TouchAction::kPanY, ActiveTouchAction().value());
 }
 
 // The following 3 tests ensures that when the IPC message
@@ -1034,7 +1037,7 @@
   filter_.OnHasTouchEventHandlers(true);
   EXPECT_TRUE(ActiveTouchAction().has_value());
 
-  filter_.OnSetTouchAction(cc::kTouchActionPan);
+  filter_.OnSetTouchAction(cc::TouchAction::kPan);
   // Simulate a simple tap gesture.
   WebGestureEvent tap = SyntheticWebGestureEventBuilder::Build(
       WebInputEvent::kGestureTap, kSourceDevice);
@@ -1060,15 +1063,15 @@
   filter_.IncreaseActiveTouches();
   EXPECT_EQ(filter_.FilterGestureEvent(&tap_down),
             FilterGestureEventResult::kFilterGestureEventAllowed);
-  EXPECT_EQ(ActiveTouchAction().value(), cc::kTouchActionAuto);
+  EXPECT_EQ(ActiveTouchAction().value(), cc::TouchAction::kAuto);
   filter_.OnHasTouchEventHandlers(true);
   EXPECT_EQ(filter_.FilterGestureEvent(&tap_cancel),
             FilterGestureEventResult::kFilterGestureEventAllowed);
   EXPECT_TRUE(ActiveTouchAction().has_value());
-  filter_.OnSetTouchAction(cc::kTouchActionPan);
+  filter_.OnSetTouchAction(cc::TouchAction::kPan);
   EXPECT_EQ(filter_.FilterGestureEvent(&tap_down),
             FilterGestureEventResult::kFilterGestureEventAllowed);
-  EXPECT_EQ(ActiveTouchAction().value(), cc::kTouchActionPan);
+  EXPECT_EQ(ActiveTouchAction().value(), cc::TouchAction::kPan);
   EXPECT_EQ(filter_.FilterGestureEvent(&tap_cancel),
             FilterGestureEventResult::kFilterGestureEventAllowed);
   EXPECT_EQ(filter_.FilterGestureEvent(&double_tap),
@@ -1097,10 +1100,10 @@
   EXPECT_EQ(filter_.FilterGestureEvent(&tap_cancel),
             FilterGestureEventResult::kFilterGestureEventAllowed);
   filter_.OnHasTouchEventHandlers(true);
-  filter_.OnSetTouchAction(cc::kTouchActionPan);
+  filter_.OnSetTouchAction(cc::TouchAction::kPan);
   EXPECT_EQ(filter_.FilterGestureEvent(&scroll_begin),
             FilterGestureEventResult::kFilterGestureEventAllowed);
-  EXPECT_EQ(ActiveTouchAction().value(), cc::kTouchActionPan);
+  EXPECT_EQ(ActiveTouchAction().value(), cc::TouchAction::kPan);
   EXPECT_EQ(filter_.FilterGestureEvent(&scroll_update),
             FilterGestureEventResult::kFilterGestureEventAllowed);
   EXPECT_EQ(filter_.FilterGestureEvent(&scroll_end),
@@ -1125,7 +1128,7 @@
             FilterGestureEventResult::kFilterGestureEventAllowed);
   EXPECT_EQ(filter_.FilterGestureEvent(&long_tap),
             FilterGestureEventResult::kFilterGestureEventAllowed);
-  EXPECT_EQ(ActiveTouchAction().value(), cc::kTouchActionAuto);
+  EXPECT_EQ(ActiveTouchAction().value(), cc::TouchAction::kAuto);
 
   filter_.OnHasTouchEventHandlers(true);
   EXPECT_FALSE(ActiveTouchAction().has_value());
@@ -1140,7 +1143,7 @@
             FilterGestureEventResult::kFilterGestureEventAllowed);
   EXPECT_EQ(filter_.FilterGestureEvent(&two_finger_tap),
             FilterGestureEventResult::kFilterGestureEventAllowed);
-  EXPECT_EQ(ActiveTouchAction().value(), cc::kTouchActionAuto);
+  EXPECT_EQ(ActiveTouchAction().value(), cc::TouchAction::kAuto);
 
   filter_.OnHasTouchEventHandlers(true);
   EXPECT_FALSE(ActiveTouchAction().has_value());
@@ -1152,14 +1155,14 @@
   EXPECT_FALSE(filter_.allowed_touch_action().has_value());
 
   // Receive a touch start ack, set the touch action.
-  filter_.OnSetTouchAction(cc::kTouchActionPanY);
+  filter_.OnSetTouchAction(cc::TouchAction::kPanY);
   filter_.IncreaseActiveTouches();
   filter_.OnHasTouchEventHandlers(false);
-  EXPECT_EQ(ActiveTouchAction().value(), cc::kTouchActionPanY);
-  EXPECT_EQ(filter_.allowed_touch_action().value(), cc::kTouchActionPanY);
+  EXPECT_EQ(ActiveTouchAction().value(), cc::TouchAction::kPanY);
+  EXPECT_EQ(filter_.allowed_touch_action().value(), cc::TouchAction::kPanY);
   filter_.OnHasTouchEventHandlers(true);
-  EXPECT_EQ(ActiveTouchAction().value(), cc::kTouchActionPanY);
-  EXPECT_EQ(filter_.allowed_touch_action().value(), cc::kTouchActionPanY);
+  EXPECT_EQ(ActiveTouchAction().value(), cc::TouchAction::kPanY);
+  EXPECT_EQ(filter_.allowed_touch_action().value(), cc::TouchAction::kPanY);
 }
 
 TEST_P(TouchActionFilterTest, ResetTouchActionWithActiveTouch) {
@@ -1168,20 +1171,20 @@
   EXPECT_FALSE(filter_.allowed_touch_action().has_value());
 
   // Receive a touch start ack, set the touch action.
-  filter_.OnSetTouchAction(cc::kTouchActionPanY);
+  filter_.OnSetTouchAction(cc::TouchAction::kPanY);
   filter_.IncreaseActiveTouches();
 
   // Somehow we get the ACK for the second touch start before the ACK for the
   // first touch end.
-  filter_.OnSetTouchAction(cc::kTouchActionPan);
+  filter_.OnSetTouchAction(cc::TouchAction::kPan);
   filter_.IncreaseActiveTouches();
 
   // The first touch end comes, we report and reset touch action. The touch
   // actions should still have value.
   filter_.DecreaseActiveTouches();
   filter_.ReportAndResetTouchAction();
-  EXPECT_EQ(ActiveTouchAction().value(), cc::kTouchActionPanY);
-  EXPECT_EQ(filter_.allowed_touch_action().value(), cc::kTouchActionPanY);
+  EXPECT_EQ(ActiveTouchAction().value(), cc::TouchAction::kPanY);
+  EXPECT_EQ(filter_.allowed_touch_action().value(), cc::TouchAction::kPanY);
 
   // The ack for the second touch end comes, the touch actions will be reset.
   filter_.DecreaseActiveTouches();
@@ -1238,10 +1241,10 @@
   WebGestureEvent scroll_end = SyntheticWebGestureEventBuilder::Build(
       WebInputEvent::kGestureScrollEnd, kSourceDevice);
 
-  filter_.OnSetWhiteListedTouchAction(cc::kTouchActionPan);
+  filter_.OnSetWhiteListedTouchAction(cc::TouchAction::kPan);
   if (!compositor_touch_action_enabled_)
-    filter_.OnSetTouchAction(cc::kTouchActionPan);
-  EXPECT_EQ(filter_.white_listed_touch_action(), cc::kTouchActionPan);
+    filter_.OnSetTouchAction(cc::TouchAction::kPan);
+  EXPECT_EQ(filter_.white_listed_touch_action(), cc::TouchAction::kPan);
   SetGestureSequenceInProgress();
   EXPECT_EQ(filter_.FilterGestureEvent(&scroll_begin),
             FilterGestureEventResult::kFilterGestureEventAllowed);
@@ -1254,10 +1257,10 @@
   ResetTouchAction();
   ResetActiveTouchAction();
   ResetWhiteListedTouchAction();
-  filter_.OnSetWhiteListedTouchAction(cc::kTouchActionPan);
+  filter_.OnSetWhiteListedTouchAction(cc::TouchAction::kPan);
   if (!compositor_touch_action_enabled_)
-    filter_.OnSetTouchAction(cc::kTouchActionPan);
-  EXPECT_EQ(filter_.white_listed_touch_action(), cc::kTouchActionPan);
+    filter_.OnSetTouchAction(cc::TouchAction::kPan);
+  EXPECT_EQ(filter_.white_listed_touch_action(), cc::TouchAction::kPan);
   WebGestureEvent pinch_begin = SyntheticWebGestureEventBuilder::Build(
       WebInputEvent::kGesturePinchBegin, kSourceDevice);
   WebGestureEvent pinch_update =
@@ -1286,11 +1289,11 @@
   ResetTouchAction();
   ResetActiveTouchAction();
   ResetWhiteListedTouchAction();
-  filter_.OnSetWhiteListedTouchAction(cc::kTouchActionPanY);
+  filter_.OnSetWhiteListedTouchAction(cc::TouchAction::kPanY);
   if (!compositor_touch_action_enabled_)
-    filter_.OnSetTouchAction(cc::kTouchActionPanY);
+    filter_.OnSetTouchAction(cc::TouchAction::kPanY);
   SetNoDeferredEvents();
-  EXPECT_EQ(filter_.white_listed_touch_action(), cc::kTouchActionPanY);
+  EXPECT_EQ(filter_.white_listed_touch_action(), cc::TouchAction::kPanY);
   SetGestureSequenceInProgress();
   EXPECT_EQ(filter_.FilterGestureEvent(&scroll_begin),
             FilterGestureEventResult::kFilterGestureEventAllowed);
@@ -1309,11 +1312,11 @@
   ResetTouchAction();
   ResetActiveTouchAction();
   ResetWhiteListedTouchAction();
-  filter_.OnSetWhiteListedTouchAction(cc::kTouchActionPanX);
+  filter_.OnSetWhiteListedTouchAction(cc::TouchAction::kPanX);
   if (!compositor_touch_action_enabled_)
-    filter_.OnSetTouchAction(cc::kTouchActionPanX);
+    filter_.OnSetTouchAction(cc::TouchAction::kPanX);
   SetNoDeferredEvents();
-  EXPECT_EQ(filter_.white_listed_touch_action(), cc::kTouchActionPanX);
+  EXPECT_EQ(filter_.white_listed_touch_action(), cc::TouchAction::kPanX);
 
   dy = 0;
   scroll_begin =
@@ -1334,8 +1337,8 @@
       SyntheticWebGestureEventBuilder::BuildScrollBegin(dx, dy, kSourceDevice);
   scroll_update = SyntheticWebGestureEventBuilder::BuildScrollUpdate(
       dx, dy, 0, kSourceDevice);
-  filter_.OnSetWhiteListedTouchAction(cc::kTouchActionPanX);
-  EXPECT_EQ(filter_.white_listed_touch_action(), cc::kTouchActionPanX);
+  filter_.OnSetWhiteListedTouchAction(cc::TouchAction::kPanX);
+  EXPECT_EQ(filter_.white_listed_touch_action(), cc::TouchAction::kPanX);
   SetGestureSequenceInProgress();
   if (compositor_touch_action_enabled_) {
     EXPECT_EQ(filter_.FilterGestureEvent(&scroll_begin),
@@ -1357,18 +1360,18 @@
 TEST_P(TouchActionFilterTest, WhiteListedTouchActionResetToAuto) {
   filter_.OnHasTouchEventHandlers(true);
 
-  filter_.OnSetWhiteListedTouchAction(cc::kTouchActionPan);
-  EXPECT_EQ(filter_.white_listed_touch_action(), cc::kTouchActionPan);
+  filter_.OnSetWhiteListedTouchAction(cc::TouchAction::kPan);
+  EXPECT_EQ(filter_.white_listed_touch_action(), cc::TouchAction::kPan);
   ResetTouchAction();
-  EXPECT_EQ(filter_.white_listed_touch_action(), cc::kTouchActionAuto);
+  EXPECT_EQ(filter_.white_listed_touch_action(), cc::TouchAction::kAuto);
 }
 
 TEST_P(TouchActionFilterTest, WhiteListedTouchActionAutoNoHasHandlers) {
   filter_.OnHasTouchEventHandlers(false);
-  EXPECT_EQ(filter_.white_listed_touch_action(), cc::kTouchActionAuto);
+  EXPECT_EQ(filter_.white_listed_touch_action(), cc::TouchAction::kAuto);
 
   ResetTouchAction();
-  EXPECT_EQ(filter_.white_listed_touch_action(), cc::kTouchActionAuto);
+  EXPECT_EQ(filter_.white_listed_touch_action(), cc::TouchAction::kAuto);
 }
 
 TEST_P(TouchActionFilterTest, ResetBeforeHasHandlerSet) {
@@ -1386,8 +1389,8 @@
     return;
   filter_.OnHasTouchEventHandlers(true);
 
-  filter_.OnSetWhiteListedTouchAction(cc::kTouchActionPan);
-  EXPECT_EQ(filter_.white_listed_touch_action(), cc::kTouchActionPan);
+  filter_.OnSetWhiteListedTouchAction(cc::TouchAction::kPan);
+  EXPECT_EQ(filter_.white_listed_touch_action(), cc::TouchAction::kPan);
 
   int dx = 2, dy = 5;
   WebGestureEvent scroll_begin =
@@ -1406,7 +1409,7 @@
   EXPECT_EQ(filter_.FilterGestureEvent(&scroll_end),
             FilterGestureEventResult::kFilterGestureEventAllowed);
 
-  EXPECT_EQ(filter_.white_listed_touch_action(), cc::kTouchActionPan);
+  EXPECT_EQ(filter_.white_listed_touch_action(), cc::TouchAction::kPan);
 }
 
 // Having a gesture scroll begin without tap down should set touch action to
@@ -1417,18 +1420,18 @@
   EXPECT_FALSE(filter_.allowed_touch_action().has_value());
 
   if (compositor_touch_action_enabled_)
-    filter_.OnSetWhiteListedTouchAction(cc::kTouchActionPan);
+    filter_.OnSetWhiteListedTouchAction(cc::TouchAction::kPan);
   else
-    filter_.OnSetTouchAction(cc::kTouchActionPan);
+    filter_.OnSetTouchAction(cc::TouchAction::kPan);
   WebGestureEvent scroll_begin =
       SyntheticWebGestureEventBuilder::BuildScrollBegin(5, 0, kSourceDevice);
   EXPECT_EQ(filter_.FilterGestureEvent(&scroll_begin),
             FilterGestureEventResult::kFilterGestureEventAllowed);
   if (compositor_touch_action_enabled_) {
-    EXPECT_EQ(filter_.white_listed_touch_action(), cc::kTouchActionPan);
+    EXPECT_EQ(filter_.white_listed_touch_action(), cc::TouchAction::kPan);
   } else {
-    EXPECT_EQ(ActiveTouchAction().value(), cc::kTouchActionPan);
-    EXPECT_EQ(filter_.allowed_touch_action().value(), cc::kTouchActionPan);
+    EXPECT_EQ(ActiveTouchAction().value(), cc::TouchAction::kPan);
+    EXPECT_EQ(filter_.allowed_touch_action().value(), cc::TouchAction::kPan);
   }
 
   ResetTouchAction();
@@ -1440,12 +1443,12 @@
   // Ensure that there is no crash at GSB if both |allowed_| and |active_|
   // touch action have no value.
   if (compositor_touch_action_enabled_)
-    filter_.OnSetWhiteListedTouchAction(cc::kTouchActionPan);
+    filter_.OnSetWhiteListedTouchAction(cc::TouchAction::kPan);
   EXPECT_EQ(filter_.FilterGestureEvent(&scroll_begin),
             FilterGestureEventResult::kFilterGestureEventAllowed);
   if (!compositor_touch_action_enabled_) {
-    EXPECT_EQ(filter_.allowed_touch_action().value(), cc::kTouchActionAuto);
-    EXPECT_EQ(ActiveTouchAction().value(), cc::kTouchActionAuto);
+    EXPECT_EQ(filter_.allowed_touch_action().value(), cc::TouchAction::kAuto);
+    EXPECT_EQ(ActiveTouchAction().value(), cc::TouchAction::kAuto);
   }
 }
 
@@ -1460,7 +1463,7 @@
   EXPECT_EQ(filter_.FilterGestureEvent(&tap_down),
             FilterGestureEventResult::kFilterGestureEventAllowed);
   EXPECT_TRUE(ActiveTouchAction().has_value());
-  EXPECT_EQ(ActiveTouchAction().value(), cc::kTouchActionAuto);
+  EXPECT_EQ(ActiveTouchAction().value(), cc::TouchAction::kAuto);
 }
 
 // Regression test for crbug.com/771330. One can start one finger panning y, and
@@ -1468,7 +1471,7 @@
 // if the allowed touch action doesn't allow it.
 TEST_P(TouchActionFilterTest, PinchZoomStartsWithOneFingerPanDisallowed) {
   filter_.OnHasTouchEventHandlers(true);
-  filter_.OnSetTouchAction(cc::kTouchActionPanY);
+  filter_.OnSetTouchAction(cc::TouchAction::kPanY);
   WebGestureEvent scroll_begin =
       SyntheticWebGestureEventBuilder::BuildScrollBegin(0, 3, kSourceDevice);
   WebGestureEvent scroll_update =
@@ -1508,13 +1511,13 @@
   EXPECT_FALSE(ActiveTouchAction().has_value());
   EXPECT_FALSE(filter_.allowed_touch_action().has_value());
 
-  filter_.OnSetTouchAction(cc::kTouchActionPan);
+  filter_.OnSetTouchAction(cc::TouchAction::kPan);
   WebGestureEvent scroll_begin =
       SyntheticWebGestureEventBuilder::BuildScrollBegin(5, 0, kSourceDevice);
   EXPECT_EQ(filter_.FilterGestureEvent(&scroll_begin),
             FilterGestureEventResult::kFilterGestureEventAllowed);
-  EXPECT_EQ(ActiveTouchAction().value(), cc::kTouchActionPan);
-  EXPECT_EQ(filter_.allowed_touch_action().value(), cc::kTouchActionPan);
+  EXPECT_EQ(ActiveTouchAction().value(), cc::TouchAction::kPan);
+  EXPECT_EQ(filter_.allowed_touch_action().value(), cc::TouchAction::kPan);
 }
 
 TEST_P(TouchActionFilterTest, TouchpadScroll) {
@@ -1522,9 +1525,9 @@
       SyntheticWebGestureEventBuilder::BuildScrollBegin(
           2, 3, blink::WebGestureDevice::kTouchpad);
 
-  // cc::kTouchActionNone filters out only touchscreen scroll events.
+  // cc::TouchAction::kNone filters out only touchscreen scroll events.
   ResetTouchAction();
-  filter_.OnSetTouchAction(cc::kTouchActionNone);
+  filter_.OnSetTouchAction(cc::TouchAction::kNone);
   EXPECT_EQ(filter_.FilterGestureEvent(&scroll_begin),
             FilterGestureEventResult::kFilterGestureEventAllowed);
 }
diff --git a/content/browser/renderer_host/media/DEPS b/content/browser/renderer_host/media/DEPS
index 7e8e421..16bc5028 100644
--- a/content/browser/renderer_host/media/DEPS
+++ b/content/browser/renderer_host/media/DEPS
@@ -4,4 +4,7 @@
   "media_stream_ui_proxy(_unittest)?\.cc": [
     "+content/browser/frame_host",
   ],
+  "service_video_capture_device_launcher\.cc": [
+    "+media/capture/capture_switches.h",
+  ],
 }
diff --git a/content/browser/renderer_host/media/media_stream_manager_unittest.cc b/content/browser/renderer_host/media/media_stream_manager_unittest.cc
index 4b243b10..a6489cc 100644
--- a/content/browser/renderer_host/media/media_stream_manager_unittest.cc
+++ b/content/browser/renderer_host/media/media_stream_manager_unittest.cc
@@ -24,7 +24,6 @@
 #include "content/public/common/content_client.h"
 #include "content/public/common/content_switches.h"
 #include "content/public/test/browser_task_environment.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "media/audio/audio_device_description.h"
 #include "media/audio/audio_system_impl.h"
 #include "media/audio/fake_audio_log_factory.h"
@@ -191,7 +190,6 @@
         std::make_unique<media::AudioSystemImpl>(audio_manager_.get());
     auto video_capture_provider = std::make_unique<MockVideoCaptureProvider>();
     video_capture_provider_ = video_capture_provider.get();
-    service_manager_context_ = std::make_unique<TestServiceManagerContext>();
     media_stream_manager_ = std::make_unique<MediaStreamManager>(
         audio_system_.get(), audio_manager_->GetTaskRunner(),
         std::move(video_capture_provider));
@@ -211,7 +209,6 @@
 
   ~MediaStreamManagerTest() override {
     audio_manager_->Shutdown();
-    service_manager_context_.reset();
   }
 
   MOCK_METHOD1(Response, void(int index));
@@ -390,8 +387,6 @@
   base::RunLoop run_loop_;
 
  private:
-  std::unique_ptr<TestServiceManagerContext> service_manager_context_;
-
   DISALLOW_COPY_AND_ASSIGN(MediaStreamManagerTest);
 };
 
diff --git a/content/browser/renderer_host/media/render_frame_audio_input_stream_factory_unittest.cc b/content/browser/renderer_host/media/render_frame_audio_input_stream_factory_unittest.cc
index 230a03b..beb8415d 100644
--- a/content/browser/renderer_host/media/render_frame_audio_input_stream_factory_unittest.cc
+++ b/content/browser/renderer_host/media/render_frame_audio_input_stream_factory_unittest.cc
@@ -25,7 +25,6 @@
 #include "content/public/test/mock_render_process_host.h"
 #include "content/public/test/test_browser_context.h"
 #include "content/public/test/test_renderer_host.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "content/public/test/test_utils.h"
 #include "media/audio/audio_system_impl.h"
 #include "media/audio/fake_audio_log_factory.h"
@@ -59,8 +58,6 @@
  public:
   MAYBE_RenderFrameAudioInputStreamFactoryTest()
       : RenderViewHostTestHarness(),
-        test_service_manager_context_(
-            std::make_unique<TestServiceManagerContext>()),
         audio_manager_(std::make_unique<media::TestAudioThread>(),
                        &log_factory_),
         audio_system_(media::AudioSystemImpl::CreateInstance()),
@@ -87,7 +84,6 @@
     ForwardingAudioStreamFactory::OverrideStreamFactoryBinderForTesting(
         base::NullCallback());
     audio_manager_.Shutdown();
-    test_service_manager_context_.reset();
     RenderViewHostTestHarness::TearDown();
   }
 
@@ -187,7 +183,6 @@
   const bool kAGC = false;
   const uint32_t kSharedMemoryCount = 123;
   MockStreamFactory audio_service_stream_factory_;
-  std::unique_ptr<TestServiceManagerContext> test_service_manager_context_;
   media::FakeAudioLogFactory log_factory_;
   media::FakeAudioManager audio_manager_;
   std::unique_ptr<media::AudioSystem> audio_system_;
diff --git a/content/browser/renderer_host/media/render_frame_audio_output_stream_factory_unittest.cc b/content/browser/renderer_host/media/render_frame_audio_output_stream_factory_unittest.cc
index e06a1a7e..07247f8 100644
--- a/content/browser/renderer_host/media/render_frame_audio_output_stream_factory_unittest.cc
+++ b/content/browser/renderer_host/media/render_frame_audio_output_stream_factory_unittest.cc
@@ -23,7 +23,6 @@
 #include "content/public/browser/render_process_host.h"
 #include "content/public/test/mock_render_process_host.h"
 #include "content/public/test/test_renderer_host.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "media/audio/audio_system_impl.h"
 #include "media/audio/fake_audio_log_factory.h"
 #include "media/audio/fake_audio_manager.h"
@@ -51,9 +50,7 @@
     : public RenderViewHostTestHarness {
  public:
   RenderFrameAudioOutputStreamFactoryTest()
-      : test_service_manager_context_(
-            std::make_unique<TestServiceManagerContext>()),
-        audio_manager_(std::make_unique<media::TestAudioThread>(),
+      : audio_manager_(std::make_unique<media::TestAudioThread>(),
                        &log_factory_),
         audio_system_(media::AudioSystemImpl::CreateInstance()),
         media_stream_manager_(std::make_unique<MediaStreamManager>(
@@ -79,7 +76,6 @@
     ForwardingAudioStreamFactory::OverrideStreamFactoryBinderForTesting(
         base::NullCallback());
     audio_manager_.Shutdown();
-    test_service_manager_context_.reset();
     RenderViewHostTestHarness::TearDown();
   }
 
@@ -120,7 +116,6 @@
   const media::AudioParameters kParams =
       media::AudioParameters::UnavailableDeviceParams();
   MockStreamFactory audio_service_stream_factory_;
-  std::unique_ptr<TestServiceManagerContext> test_service_manager_context_;
   media::FakeAudioLogFactory log_factory_;
   media::FakeAudioManager audio_manager_;
   std::unique_ptr<media::AudioSystem> audio_system_;
diff --git a/content/browser/renderer_host/media/service_video_capture_device_launcher.cc b/content/browser/renderer_host/media/service_video_capture_device_launcher.cc
index 019a8f0..21c851f 100644
--- a/content/browser/renderer_host/media/service_video_capture_device_launcher.cc
+++ b/content/browser/renderer_host/media/service_video_capture_device_launcher.cc
@@ -13,7 +13,7 @@
 #include "content/browser/renderer_host/media/service_launched_video_capture_device.h"
 #include "content/public/browser/browser_task_traits.h"
 #include "content/public/browser/browser_thread.h"
-#include "media/base/media_switches.h"
+#include "media/capture/capture_switches.h"
 #include "media/capture/video/video_capture_device.h"
 #include "media/capture/video/video_frame_receiver_on_task_runner.h"
 #include "mojo/public/cpp/bindings/pending_remote.h"
diff --git a/content/browser/renderer_host/pepper/pepper_browser_font_singleton_host.cc b/content/browser/renderer_host/pepper/pepper_browser_font_singleton_host.cc
index ae32b88..a44a242 100644
--- a/content/browser/renderer_host/pepper/pepper_browser_font_singleton_host.cc
+++ b/content/browser/renderer_host/pepper/pepper_browser_font_singleton_host.cc
@@ -25,7 +25,7 @@
   FontMessageFilter();
 
   // ppapi::host::ResourceMessageFilter implementation.
-  scoped_refptr<base::TaskRunner> OverrideTaskRunnerForMessage(
+  scoped_refptr<base::SequencedTaskRunner> OverrideTaskRunnerForMessage(
       const IPC::Message& msg) override;
   int32_t OnResourceMessageReceived(
       const IPC::Message& msg,
@@ -44,8 +44,8 @@
 
 FontMessageFilter::~FontMessageFilter() {}
 
-scoped_refptr<base::TaskRunner> FontMessageFilter::OverrideTaskRunnerForMessage(
-    const IPC::Message& msg) {
+scoped_refptr<base::SequencedTaskRunner>
+FontMessageFilter::OverrideTaskRunnerForMessage(const IPC::Message& msg) {
   // Use the font list SequencedTaskRunner to get the font list (currently the
   // only message) since getting the font list is non-threadsafe on Linux (for
   // versions of Pango predating 2013).
diff --git a/content/browser/renderer_host/pepper/pepper_flash_file_message_filter.cc b/content/browser/renderer_host/pepper/pepper_flash_file_message_filter.cc
index b6d6b27..fe3311b 100644
--- a/content/browser/renderer_host/pepper/pepper_flash_file_message_filter.cc
+++ b/content/browser/renderer_host/pepper/pepper_flash_file_message_filter.cc
@@ -70,7 +70,7 @@
   return profile_path.Append(kPepperDataDirname);
 }
 
-scoped_refptr<base::TaskRunner>
+scoped_refptr<base::SequencedTaskRunner>
 PepperFlashFileMessageFilter::OverrideTaskRunnerForMessage(
     const IPC::Message& msg) {
   // The blocking pool provides a pool of threads to run file
@@ -81,9 +81,9 @@
   // the plugin has multiple threads, it cannot make assumptions about
   // ordering of IPC message sends, so it cannot make assumptions
   // about ordering of operations caused by those IPC messages.
-  return scoped_refptr<base::TaskRunner>(base::CreateSequencedTaskRunner(
+  return base::CreateSequencedTaskRunner(
       {base::ThreadPool(), base::MayBlock(), base::TaskPriority::USER_VISIBLE,
-       base::TaskShutdownBehavior::BLOCK_SHUTDOWN}));
+       base::TaskShutdownBehavior::BLOCK_SHUTDOWN});
 }
 
 int32_t PepperFlashFileMessageFilter::OnResourceMessageReceived(
diff --git a/content/browser/renderer_host/pepper/pepper_flash_file_message_filter.h b/content/browser/renderer_host/pepper/pepper_flash_file_message_filter.h
index 9a8abad..3a9c990 100644
--- a/content/browser/renderer_host/pepper/pepper_flash_file_message_filter.h
+++ b/content/browser/renderer_host/pepper/pepper_flash_file_message_filter.h
@@ -49,7 +49,7 @@
   ~PepperFlashFileMessageFilter() override;
 
   // ppapi::host::ResourceMessageFilter overrides.
-  scoped_refptr<base::TaskRunner> OverrideTaskRunnerForMessage(
+  scoped_refptr<base::SequencedTaskRunner> OverrideTaskRunnerForMessage(
       const IPC::Message& msg) override;
   int32_t OnResourceMessageReceived(
       const IPC::Message& msg,
diff --git a/content/browser/renderer_host/pepper/pepper_host_resolver_message_filter.cc b/content/browser/renderer_host/pepper/pepper_host_resolver_message_filter.cc
index 9c21d2e..0af085f 100644
--- a/content/browser/renderer_host/pepper/pepper_host_resolver_message_filter.cc
+++ b/content/browser/renderer_host/pepper/pepper_host_resolver_message_filter.cc
@@ -99,7 +99,7 @@
 
 PepperHostResolverMessageFilter::~PepperHostResolverMessageFilter() {}
 
-scoped_refptr<base::TaskRunner>
+scoped_refptr<base::SequencedTaskRunner>
 PepperHostResolverMessageFilter::OverrideTaskRunnerForMessage(
     const IPC::Message& message) {
   if (message.type() == PpapiHostMsg_HostResolver_Resolve::ID)
diff --git a/content/browser/renderer_host/pepper/pepper_host_resolver_message_filter.h b/content/browser/renderer_host/pepper/pepper_host_resolver_message_filter.h
index 917a99c..d65a7982 100644
--- a/content/browser/renderer_host/pepper/pepper_host_resolver_message_filter.h
+++ b/content/browser/renderer_host/pepper/pepper_host_resolver_message_filter.h
@@ -54,7 +54,7 @@
   typedef std::vector<PP_NetAddress_Private> NetAddressList;
 
   // ppapi::host::ResourceMessageFilter overrides.
-  scoped_refptr<base::TaskRunner> OverrideTaskRunnerForMessage(
+  scoped_refptr<base::SequencedTaskRunner> OverrideTaskRunnerForMessage(
       const IPC::Message& message) override;
   int32_t OnResourceMessageReceived(
       const IPC::Message& msg,
diff --git a/content/browser/renderer_host/pepper/pepper_tcp_server_socket_message_filter.cc b/content/browser/renderer_host/pepper/pepper_tcp_server_socket_message_filter.cc
index a59d564..87a4150fa 100644
--- a/content/browser/renderer_host/pepper/pepper_tcp_server_socket_message_filter.cc
+++ b/content/browser/renderer_host/pepper/pepper_tcp_server_socket_message_filter.cc
@@ -104,7 +104,7 @@
       base::BindOnce(&PepperTCPServerSocketMessageFilter::Close, this));
 }
 
-scoped_refptr<base::TaskRunner>
+scoped_refptr<base::SequencedTaskRunner>
 PepperTCPServerSocketMessageFilter::OverrideTaskRunnerForMessage(
     const IPC::Message& message) {
   switch (message.type()) {
diff --git a/content/browser/renderer_host/pepper/pepper_tcp_server_socket_message_filter.h b/content/browser/renderer_host/pepper/pepper_tcp_server_socket_message_filter.h
index 79939fcc..492dc587 100644
--- a/content/browser/renderer_host/pepper/pepper_tcp_server_socket_message_filter.h
+++ b/content/browser/renderer_host/pepper/pepper_tcp_server_socket_message_filter.h
@@ -80,7 +80,7 @@
 
   // ppapi::host::ResourceMessageFilter overrides.
   void OnFilterDestroyed() override;
-  scoped_refptr<base::TaskRunner> OverrideTaskRunnerForMessage(
+  scoped_refptr<base::SequencedTaskRunner> OverrideTaskRunnerForMessage(
       const IPC::Message& message) override;
   int32_t OnResourceMessageReceived(
       const IPC::Message& msg,
diff --git a/content/browser/renderer_host/pepper/pepper_tcp_socket_message_filter.cc b/content/browser/renderer_host/pepper/pepper_tcp_socket_message_filter.cc
index 93c47ac..f283588 100644
--- a/content/browser/renderer_host/pepper/pepper_tcp_socket_message_filter.cc
+++ b/content/browser/renderer_host/pepper/pepper_tcp_socket_message_filter.cc
@@ -19,6 +19,7 @@
 #include "content/public/browser/browser_context.h"
 #include "content/public/browser/browser_task_traits.h"
 #include "content/public/browser/browser_thread.h"
+#include "content/public/browser/render_frame_host.h"
 #include "content/public/browser/render_process_host.h"
 #include "content/public/browser/storage_partition.h"
 #include "content/public/common/socket_permission_request.h"
@@ -174,7 +175,7 @@
                  base::BindOnce(&PepperTCPSocketMessageFilter::Close, this));
 }
 
-scoped_refptr<base::TaskRunner>
+scoped_refptr<base::SequencedTaskRunner>
 PepperTCPSocketMessageFilter::OverrideTaskRunnerForMessage(
     const IPC::Message& message) {
   switch (message.type()) {
@@ -405,10 +406,15 @@
   if (!network_context)
     return PP_ERROR_FAILED;
 
+  RenderFrameHost* render_frame_host =
+      RenderFrameHost::FromID(render_process_id_, render_frame_id_);
+  if (!render_frame_host)
+    return PP_ERROR_FAILED;
+
   // TODO(mmenke): Pass in correct NetworkIsolationKey.
   network_context->ResolveHost(net::HostPortPair(host, port),
-                               net::NetworkIsolationKey::Todo(), nullptr,
-                               receiver_.BindNewPipeAndPassRemote());
+                               render_frame_host->GetNetworkIsolationKey(),
+                               nullptr, receiver_.BindNewPipeAndPassRemote());
   receiver_.set_disconnect_handler(
       base::BindOnce(&PepperTCPSocketMessageFilter::OnComplete,
                      base::Unretained(this), net::ERR_NAME_NOT_RESOLVED,
diff --git a/content/browser/renderer_host/pepper/pepper_tcp_socket_message_filter.h b/content/browser/renderer_host/pepper/pepper_tcp_socket_message_filter.h
index cbea55b..429cb68 100644
--- a/content/browser/renderer_host/pepper/pepper_tcp_socket_message_filter.h
+++ b/content/browser/renderer_host/pepper/pepper_tcp_socket_message_filter.h
@@ -108,7 +108,7 @@
 
   // ppapi::host::ResourceMessageFilter overrides.
   void OnFilterDestroyed() override;
-  scoped_refptr<base::TaskRunner> OverrideTaskRunnerForMessage(
+  scoped_refptr<base::SequencedTaskRunner> OverrideTaskRunnerForMessage(
       const IPC::Message& message) override;
   int32_t OnResourceMessageReceived(
       const IPC::Message& msg,
diff --git a/content/browser/renderer_host/pepper/pepper_truetype_font_list_host.cc b/content/browser/renderer_host/pepper/pepper_truetype_font_list_host.cc
index d5d0d24..adb4382 100644
--- a/content/browser/renderer_host/pepper/pepper_truetype_font_list_host.cc
+++ b/content/browser/renderer_host/pepper/pepper_truetype_font_list_host.cc
@@ -28,7 +28,7 @@
   TrueTypeFontMessageFilter();
 
   // ppapi::host::ResourceMessageFilter implementation.
-  scoped_refptr<base::TaskRunner> OverrideTaskRunnerForMessage(
+  scoped_refptr<base::SequencedTaskRunner> OverrideTaskRunnerForMessage(
       const IPC::Message& msg) override;
   int32_t OnResourceMessageReceived(
       const IPC::Message& msg,
@@ -49,7 +49,7 @@
 
 TrueTypeFontMessageFilter::~TrueTypeFontMessageFilter() {}
 
-scoped_refptr<base::TaskRunner>
+scoped_refptr<base::SequencedTaskRunner>
 TrueTypeFontMessageFilter::OverrideTaskRunnerForMessage(
     const IPC::Message& msg) {
   // Use the font list SequencedTaskRunner to get the font list (currently the
diff --git a/content/browser/renderer_host/pepper/pepper_udp_socket_message_filter.cc b/content/browser/renderer_host/pepper/pepper_udp_socket_message_filter.cc
index 0f465dfe..5489e84 100644
--- a/content/browser/renderer_host/pepper/pepper_udp_socket_message_filter.cc
+++ b/content/browser/renderer_host/pepper/pepper_udp_socket_message_filter.cc
@@ -131,7 +131,7 @@
                  base::BindOnce(&PepperUDPSocketMessageFilter::Close, this));
 }
 
-scoped_refptr<base::TaskRunner>
+scoped_refptr<base::SequencedTaskRunner>
 PepperUDPSocketMessageFilter::OverrideTaskRunnerForMessage(
     const IPC::Message& message) {
   switch (message.type()) {
diff --git a/content/browser/renderer_host/pepper/pepper_udp_socket_message_filter.h b/content/browser/renderer_host/pepper/pepper_udp_socket_message_filter.h
index ca0eb1e..d816abb 100644
--- a/content/browser/renderer_host/pepper/pepper_udp_socket_message_filter.h
+++ b/content/browser/renderer_host/pepper/pepper_udp_socket_message_filter.h
@@ -106,7 +106,7 @@
 
   // ppapi::host::ResourceMessageFilter overrides.
   void OnFilterDestroyed() override;
-  scoped_refptr<base::TaskRunner> OverrideTaskRunnerForMessage(
+  scoped_refptr<base::SequencedTaskRunner> OverrideTaskRunnerForMessage(
       const IPC::Message& message) override;
   int32_t OnResourceMessageReceived(
       const IPC::Message& msg,
diff --git a/content/browser/renderer_host/pepper/pepper_vpn_provider_message_filter_chromeos.cc b/content/browser/renderer_host/pepper/pepper_vpn_provider_message_filter_chromeos.cc
index 1bf1361..c9731558 100644
--- a/content/browser/renderer_host/pepper/pepper_vpn_provider_message_filter_chromeos.cc
+++ b/content/browser/renderer_host/pepper/pepper_vpn_provider_message_filter_chromeos.cc
@@ -89,7 +89,7 @@
   }
 }
 
-scoped_refptr<base::TaskRunner>
+scoped_refptr<base::SequencedTaskRunner>
 PepperVpnProviderMessageFilter::OverrideTaskRunnerForMessage(
     const IPC::Message& message) {
   switch (message.type()) {
diff --git a/content/browser/renderer_host/pepper/pepper_vpn_provider_message_filter_chromeos.h b/content/browser/renderer_host/pepper/pepper_vpn_provider_message_filter_chromeos.h
index a948dcfd..bddf1a6 100644
--- a/content/browser/renderer_host/pepper/pepper_vpn_provider_message_filter_chromeos.h
+++ b/content/browser/renderer_host/pepper/pepper_vpn_provider_message_filter_chromeos.h
@@ -16,7 +16,6 @@
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/memory/weak_ptr.h"
-#include "base/task_runner.h"
 #include "content/browser/renderer_host/pepper/browser_ppapi_host_impl.h"
 #include "content/common/content_export.h"
 #include "content/public/browser/vpn_service_proxy.h"
@@ -41,7 +40,7 @@
                                  PP_Instance instance);
 
   // ppapi::host::ResourceMessageFilter overrides.
-  scoped_refptr<base::TaskRunner> OverrideTaskRunnerForMessage(
+  scoped_refptr<base::SequencedTaskRunner> OverrideTaskRunnerForMessage(
       const IPC::Message& message) override;
   int32_t OnResourceMessageReceived(
       const IPC::Message& msg,
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc
index f89531f..f298d190 100644
--- a/content/browser/renderer_host/render_process_host_impl.cc
+++ b/content/browser/renderer_host/render_process_host_impl.cc
@@ -195,6 +195,7 @@
 #include "ipc/ipc_logging.h"
 #include "media/audio/audio_manager.h"
 #include "media/base/media_switches.h"
+#include "media/capture/capture_switches.h"
 #include "media/media_buildflags.h"
 #include "media/mojo/services/video_decode_perf_history.h"
 #include "media/webrtc/webrtc_switches.h"
@@ -1451,8 +1452,8 @@
   // to get a process in the guest's StoragePartition.)
   const bool is_for_guests_only = site_instance && site_instance->IsGuest();
   if (is_for_guests_only &&
-      storage_partition_impl->site_for_service_worker().is_empty()) {
-    storage_partition_impl->set_site_for_service_worker(
+      storage_partition_impl->site_for_guest_service_worker().is_empty()) {
+    storage_partition_impl->set_site_for_guest_service_worker(
         site_instance->GetSiteURL());
   }
 
diff --git a/content/browser/renderer_host/render_widget_host_input_event_router.cc b/content/browser/renderer_host/render_widget_host_input_event_router.cc
index 31d37389..7859f24 100644
--- a/content/browser/renderer_host/render_widget_host_input_event_router.cc
+++ b/content/browser/renderer_host/render_widget_host_input_event_router.cc
@@ -1424,7 +1424,7 @@
 
 bool IsPinchCurrentlyAllowedInTarget(RenderWidgetHostViewBase* target) {
   base::Optional<cc::TouchAction> target_active_touch_action(
-      cc::kTouchActionNone);
+      cc::TouchAction::kNone);
   if (target) {
     target_active_touch_action =
         (static_cast<RenderWidgetHostImpl*>(target->GetRenderWidgetHost()))
@@ -1437,9 +1437,9 @@
   // TODO(wjmaclean): Find out why we can be in the middle of a gesture
   // sequence and not have a valid touch action assigned.
   if (!target_active_touch_action)
-    target_active_touch_action = cc::kTouchActionNone;
-  return (target_active_touch_action.value() &
-          cc::TouchAction::kTouchActionPinchZoom);
+    target_active_touch_action = cc::TouchAction::kNone;
+  return (target_active_touch_action.value() & cc::TouchAction::kPinchZoom) !=
+         cc::TouchAction::kNone;
 }
 
 }  // namespace
diff --git a/content/browser/renderer_host/render_widget_host_unittest.cc b/content/browser/renderer_host/render_widget_host_unittest.cc
index a44c3dd..bf936b09 100644
--- a/content/browser/renderer_host/render_widget_host_unittest.cc
+++ b/content/browser/renderer_host/render_widget_host_unittest.cc
@@ -1570,7 +1570,7 @@
   // Tests RWHI::ForwardGestureEvent().
   PressTouchPoint(0, 1);
   SendTouchEvent();
-  host_->input_router()->OnSetTouchAction(cc::kTouchActionAuto);
+  host_->input_router()->OnSetTouchAction(cc::TouchAction::kAuto);
   dispatched_events =
       host_->mock_widget_input_handler_.GetAndResetDispatchedMessages();
   CheckLatencyInfoComponentInMessage(dispatched_events,
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc
index bc2828a..b5180b1 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
@@ -1776,8 +1776,15 @@
   has_composition_text_ = false;
 
 #if defined(OS_WIN)
-  if (!editable && virtual_keyboard_requested_ && window_)
+  bool dismiss_virtual_keyboard =
+      last_pointer_type_ == ui::EventPointerType::POINTER_TYPE_TOUCH;
+  if (dismiss_virtual_keyboard && !editable && virtual_keyboard_requested_ &&
+      window_) {
     virtual_keyboard_requested_ = false;
+    if (auto* controller = GetInputMethod()->GetInputMethodKeyboardController())
+      controller->DismissVirtualKeyboard();
+    keyboard_observer_.reset(nullptr);
+  }
 #elif defined(OS_FUCHSIA)
   if (!editable && window_) {
     if (input_method) {
@@ -2422,7 +2429,8 @@
 // TODO(crbug.com/1031786): Remove this once TSF fix for input pane policy
 // is serviced
 #elif defined(OS_WIN)
-    if (state->show_ime_if_needed && host()->GetView() &&
+    auto* controller = GetInputMethod()->GetInputMethodKeyboardController();
+    if (controller && state->show_ime_if_needed && host()->GetView() &&
         host()->delegate()) {
       if (show_virtual_keyboard && !virtual_keyboard_requested_) {
         keyboard_observer_.reset(new WinScreenKeyboardObserver(this));
@@ -2437,19 +2445,6 @@
     // moves from UI back to content.
     text_input_manager->NotifySelectionBoundsChanged(updated_view);
   }
-// TODO(crbug.com/1031786): Remove this once TSF fix for input pane policy
-// is serviced
-#if defined(OS_WIN)
-  if (state &&
-      (state->type == ui::TEXT_INPUT_TYPE_NONE ||
-       state->mode == ui::TEXT_INPUT_MODE_NONE) &&
-      virtual_keyboard_requested_) {
-    virtual_keyboard_requested_ = false;
-    if (auto* controller = GetInputMethod()->GetInputMethodKeyboardController())
-      controller->DismissVirtualKeyboard();
-    keyboard_observer_.reset(nullptr);
-  }
-#endif
 
   if (auto* render_widget_host = updated_view->host()) {
     // Monitor the composition information if there is a focused editable node.
diff --git a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
index 2f7108b..5ee299a3 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
@@ -910,7 +910,7 @@
   void PressAndSetTouchActionAuto() {
     PressTouchPoint(0, 1);
     SendTouchEvent();
-    widget_host_->input_router()->OnSetTouchAction(cc::kTouchActionAuto);
+    widget_host_->input_router()->OnSetTouchAction(cc::TouchAction::kAuto);
     MockWidgetInputHandler::MessageVector events =
         GetAndResetDispatchedMessages();
     EXPECT_EQ("TouchStart", GetMessageNames(events));
@@ -1465,7 +1465,7 @@
   EXPECT_TRUE(press.synchronous_handling_disabled());
   EXPECT_EQ(ui::MotionEvent::Action::DOWN, pointer_state().GetAction());
   EXPECT_EQ(1U, pointer_state().GetPointerCount());
-  widget_host_->input_router()->OnSetTouchAction(cc::kTouchActionAuto);
+  widget_host_->input_router()->OnSetTouchAction(cc::TouchAction::kAuto);
 
   view_->OnTouchEvent(&move);
   base::RunLoop().RunUntilIdle();
@@ -2400,7 +2400,7 @@
 
   view_->OnTouchEvent(&press0);
   view_->GetFocusedWidget()->input_router()->OnSetTouchAction(
-      cc::kTouchActionAuto);
+      cc::TouchAction::kAuto);
   base::RunLoop().RunUntilIdle();
 
   MockWidgetInputHandler::MessageVector events =
@@ -4510,7 +4510,7 @@
   // The test sends an intermingled sequence of touch and gesture events.
   PressTouchPoint(0, 1);
   SendTouchEvent();
-  widget_host_->input_router()->OnSetTouchAction(cc::kTouchActionAuto);
+  widget_host_->input_router()->OnSetTouchAction(cc::TouchAction::kAuto);
   MockWidgetInputHandler::MessageVector events =
       GetAndResetDispatchedMessages();
   EXPECT_EQ("TouchStart", GetMessageNames(events));
@@ -5651,7 +5651,7 @@
   // Simulate touch press and release to generate a GestureTap.
   generator.EnterPenPointerMode();
   generator.PressTouch();
-  widget_host_->input_router()->OnSetTouchAction(cc::kTouchActionAuto);
+  widget_host_->input_router()->OnSetTouchAction(cc::TouchAction::kAuto);
   generator.ReleaseTouch();
   base::RunLoop().RunUntilIdle();
   MockWidgetInputHandler::MessageVector events =
diff --git a/content/browser/service_worker/service_worker_browsertest.cc b/content/browser/service_worker/service_worker_browsertest.cc
index 0990390..9231ce3 100644
--- a/content/browser/service_worker/service_worker_browsertest.cc
+++ b/content/browser/service_worker/service_worker_browsertest.cc
@@ -719,7 +719,8 @@
         33 /* dummy render process id */, true /* is_parent_frame_secure */,
         wrapper()->context()->AsWeakPtr(), &remote_endpoints_.back());
     const GURL url = embedded_test_server()->GetURL("/service_worker/host");
-    host->container_host()->UpdateUrls(url, url, url::Origin::Create(url));
+    host->container_host()->UpdateUrls(url, net::SiteForCookies::FromUrl(url),
+                                       url::Origin::Create(url));
     host->container_host()->SetControllerRegistration(
         registration_, false /* notify_controllerchange */);
   }
diff --git a/content/browser/service_worker/service_worker_container_host.cc b/content/browser/service_worker/service_worker_container_host.cc
index 411536e..5828a8943 100644
--- a/content/browser/service_worker/service_worker_container_host.cc
+++ b/content/browser/service_worker/service_worker_container_host.cc
@@ -731,7 +731,7 @@
 
 void ServiceWorkerContainerHost::UpdateUrls(
     const GURL& url,
-    const GURL& site_for_cookies,
+    const net::SiteForCookies& site_for_cookies,
     const base::Optional<url::Origin>& top_frame_origin) {
   DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
   GURL previous_url = url_;
@@ -837,14 +837,14 @@
   DCHECK(context_);
   if (ServiceWorkerContext::IsServiceWorkerOnUIEnabled()) {
     return GetContentClient()->browser()->AllowServiceWorkerOnUI(
-        scope, site_for_cookies(), top_frame_origin(), script_url,
-        context_->wrapper()->browser_context(),
+        scope, site_for_cookies().RepresentativeUrl(), top_frame_origin(),
+        script_url, context_->wrapper()->browser_context(),
         base::BindRepeating(&WebContentsImpl::FromRenderFrameHostID,
                             process_id_, frame_id_));
   } else {
     return GetContentClient()->browser()->AllowServiceWorkerOnIO(
-        scope, site_for_cookies(), top_frame_origin(), script_url,
-        context_->wrapper()->resource_context(),
+        scope, site_for_cookies().RepresentativeUrl(), top_frame_origin(),
+        script_url, context_->wrapper()->resource_context(),
         base::BindRepeating(&WebContentsImpl::FromRenderFrameHostID,
                             process_id_, frame_id_));
   }
diff --git a/content/browser/service_worker/service_worker_container_host.h b/content/browser/service_worker/service_worker_container_host.h
index 5157af29..682a1a09 100644
--- a/content/browser/service_worker/service_worker_container_host.h
+++ b/content/browser/service_worker/service_worker_container_host.h
@@ -18,6 +18,7 @@
 #include "mojo/public/cpp/bindings/associated_remote.h"
 #include "mojo/public/cpp/bindings/receiver_set.h"
 #include "mojo/public/cpp/bindings/remote.h"
+#include "net/cookies/site_for_cookies.h"
 #include "third_party/blink/public/common/service_worker/service_worker_status_code.h"
 #include "third_party/blink/public/mojom/service_worker/service_worker_client.mojom.h"
 #include "third_party/blink/public/mojom/service_worker/service_worker_container.mojom.h"
@@ -229,7 +230,7 @@
   // Sets |url_|, |site_for_cookies_| and |top_frame_origin_|. For service
   // worker clients, updates the client uuid if it's a cross-origin transition.
   void UpdateUrls(const GURL& url,
-                  const GURL& site_for_cookies,
+                  const net::SiteForCookies& site_for_cookies,
                   const base::Optional<url::Origin>& top_frame_origin);
 
   // For service worker clients. Makes this client be controlled by
@@ -296,11 +297,13 @@
   // is_response_committed() is true, the URL should no longer change.
   const GURL& url() const { return url_; }
 
-  // The URL representing the site_for_cookies for this context. See
+  // Representing the first party for cookies, if any, for this context. See
   // |URLRequest::site_for_cookies()| for details.
   // For service worker execution contexts, site_for_cookies() always
-  // returns the service worker script URL.
-  const GURL& site_for_cookies() const { return site_for_cookies_; }
+  // corresponds to the service worker script URL.
+  const net::SiteForCookies& site_for_cookies() const {
+    return site_for_cookies_;
+  }
 
   // The URL representing the first-party site for this context.
   // For service worker execution contexts, top_frame_origin() always
@@ -502,7 +505,7 @@
 
   // See comments for the getter functions.
   GURL url_;
-  GURL site_for_cookies_;
+  net::SiteForCookies site_for_cookies_;
   base::Optional<url::Origin> top_frame_origin_;
 
   // For window clients. A token used internally to identify this context in
diff --git a/content/browser/service_worker/service_worker_context_core.cc b/content/browser/service_worker/service_worker_context_core.cc
index 0610681..3ae2ed3 100644
--- a/content/browser/service_worker/service_worker_context_core.cc
+++ b/content/browser/service_worker/service_worker_context_core.cc
@@ -131,8 +131,7 @@
   // iteration, because (1) hosts in BackForwardCache should never be exposed to
   // web as clients and (2) hosts could be in an unknown state after eviction
   // and before deletion.
-  if (IsBackForwardCacheEnabled() &&
-      ServiceWorkerContext::IsServiceWorkerOnUIEnabled()) {
+  if (IsBackForwardCacheEnabled()) {
     if (container_host->IsInBackForwardCache())
       return false;
   }
@@ -149,8 +148,7 @@
   // iteration, because (1) hosts in BackForwardCache should never be exposed to
   // web as clients and (2) hosts could be in an unknown state after eviction
   // and before deletion.
-  if (IsBackForwardCacheEnabled() &&
-      ServiceWorkerContext::IsServiceWorkerOnUIEnabled()) {
+  if (IsBackForwardCacheEnabled()) {
     if (container_host->IsInBackForwardCache())
       return false;
   }
diff --git a/content/browser/service_worker/service_worker_context_unittest.cc b/content/browser/service_worker/service_worker_context_unittest.cc
index 333b1e2..cdb5a6d2 100644
--- a/content/browser/service_worker/service_worker_context_unittest.cc
+++ b/content/browser/service_worker/service_worker_context_unittest.cc
@@ -968,7 +968,8 @@
   base::WeakPtr<ServiceWorkerProviderHost> host1 = CreateProviderHostForWindow(
       kRenderProcessId1, true /* is_parent_frame_secure */,
       context()->AsWeakPtr(), &remote_endpoints.back());
-  host1->container_host()->UpdateUrls(kOrigin1, kOrigin1,
+  host1->container_host()->UpdateUrls(kOrigin1,
+                                      net::SiteForCookies::FromUrl(kOrigin1),
                                       url::Origin::Create(kOrigin1));
 
   // Host2 : process_id=2, origin2.
@@ -976,7 +977,8 @@
   base::WeakPtr<ServiceWorkerProviderHost> host2 = CreateProviderHostForWindow(
       kRenderProcessId2, true /* is_parent_frame_secure */,
       context()->AsWeakPtr(), &remote_endpoints.back());
-  host2->container_host()->UpdateUrls(kOrigin2, kOrigin2,
+  host2->container_host()->UpdateUrls(kOrigin2,
+                                      net::SiteForCookies::FromUrl(kOrigin2),
                                       url::Origin::Create(kOrigin2));
 
   // Host3 : process_id=2, origin1.
@@ -984,7 +986,8 @@
   base::WeakPtr<ServiceWorkerProviderHost> host3 = CreateProviderHostForWindow(
       kRenderProcessId2, true /* is_parent_frame_secure */,
       context()->AsWeakPtr(), &remote_endpoints.back());
-  host3->container_host()->UpdateUrls(kOrigin1, kOrigin1,
+  host3->container_host()->UpdateUrls(kOrigin1,
+                                      net::SiteForCookies::FromUrl(kOrigin1),
                                       url::Origin::Create(kOrigin1));
 
   // Host4 : process_id=2, origin2, for ServiceWorker.
diff --git a/content/browser/service_worker/service_worker_controllee_request_handler.cc b/content/browser/service_worker/service_worker_controllee_request_handler.cc
index 7e39c220..9ae71aa6 100644
--- a/content/browser/service_worker/service_worker_controllee_request_handler.cc
+++ b/content/browser/service_worker/service_worker_controllee_request_handler.cc
@@ -281,13 +281,15 @@
   if (ServiceWorkerContext::IsServiceWorkerOnUIEnabled()) {
     allow_service_worker =
         GetContentClient()->browser()->AllowServiceWorkerOnUI(
-            registration->scope(), container_host_->site_for_cookies(),
+            registration->scope(),
+            container_host_->site_for_cookies().RepresentativeUrl(),
             container_host_->top_frame_origin(), /*script_url=*/GURL(),
             browser_context_, container_host_->web_contents_getter());
   } else {
     allow_service_worker =
         GetContentClient()->browser()->AllowServiceWorkerOnIO(
-            registration->scope(), container_host_->site_for_cookies(),
+            registration->scope(),
+            container_host_->site_for_cookies().RepresentativeUrl(),
             container_host_->top_frame_origin(), /*script_url=*/GURL(),
             resource_context_, container_host_->web_contents_getter());
   }
diff --git a/content/browser/service_worker/service_worker_job_unittest.cc b/content/browser/service_worker/service_worker_job_unittest.cc
index 647de5a..9cc0e91 100644
--- a/content/browser/service_worker/service_worker_job_unittest.cc
+++ b/content/browser/service_worker/service_worker_job_unittest.cc
@@ -1061,7 +1061,8 @@
 
   // Make an in-scope client.
   ServiceWorkerContainerHost* client = CreateControllee();
-  client->UpdateUrls(in_scope, in_scope, url::Origin::Create(in_scope));
+  client->UpdateUrls(in_scope, net::SiteForCookies::FromUrl(in_scope),
+                     url::Origin::Create(in_scope));
 
   // Make an in-scope reserved client.
   std::unique_ptr<ServiceWorkerProviderHostAndInfo> host_and_info =
@@ -1069,12 +1070,13 @@
                                          /*are_ancestors_secure=*/true);
   ServiceWorkerContainerHost* reserved_client =
       host_and_info->host->container_host();
-  reserved_client->UpdateUrls(in_scope, in_scope,
+  reserved_client->UpdateUrls(in_scope, net::SiteForCookies::FromUrl(in_scope),
                               url::Origin::Create(in_scope));
 
   // Make an out-scope client.
   ServiceWorkerContainerHost* out_scope_client = CreateControllee();
-  out_scope_client->UpdateUrls(out_scope, out_scope,
+  out_scope_client->UpdateUrls(out_scope,
+                               net::SiteForCookies::FromUrl(out_scope),
                                url::Origin::Create(out_scope));
 
   // Make a new registration.
diff --git a/content/browser/service_worker/service_worker_navigation_loader_unittest.cc b/content/browser/service_worker/service_worker_navigation_loader_unittest.cc
index ff7f5219..df4c567 100644
--- a/content/browser/service_worker/service_worker_navigation_loader_unittest.cc
+++ b/content/browser/service_worker/service_worker_navigation_loader_unittest.cc
@@ -394,7 +394,8 @@
                                       &provider_endpoints_)
               ->container_host()
               ->GetWeakPtr();
-      container_host_->UpdateUrls(request->url, request->url,
+      container_host_->UpdateUrls(request->url,
+                                  net::SiteForCookies::FromUrl(request->url),
                                   url::Origin::Create(request->url));
       container_host_->AddMatchingRegistration(registration_.get());
       container_host_->SetControllerRegistration(
@@ -523,7 +524,8 @@
           ->container_host()
           ->GetWeakPtr();
   container_host_->UpdateUrls(
-      GURL("https://example.com/"), GURL("https://example.com/"),
+      GURL("https://example.com/"),
+      net::SiteForCookies::FromUrl(GURL("https://example.com/")),
       url::Origin::Create(GURL("https://example.com/")));
 
   // Perform the request.
diff --git a/content/browser/service_worker/service_worker_object_host_unittest.cc b/content/browser/service_worker/service_worker_object_host_unittest.cc
index c87f067..09ffc09 100644
--- a/content/browser/service_worker/service_worker_object_host_unittest.cc
+++ b/content/browser/service_worker/service_worker_object_host_unittest.cc
@@ -221,8 +221,8 @@
       CreateProviderHostForWindow(
           helper_->mock_render_process_id(), true /* is_parent_frame_secure */,
           helper_->context()->AsWeakPtr(), &remote_endpoint);
-  provider_host->container_host()->UpdateUrls(scope, scope,
-                                              url::Origin::Create(scope));
+  provider_host->container_host()->UpdateUrls(
+      scope, net::SiteForCookies::FromUrl(scope), url::Origin::Create(scope));
   blink::mojom::ServiceWorkerRegistrationObjectInfoPtr registration_info =
       GetRegistrationFromRemote(remote_endpoint.host_remote()->get(), scope);
   // |version_| is the installing version of |registration_| now.
@@ -373,7 +373,8 @@
           helper_->context()->AsWeakPtr(), &remote_endpoint);
   SetProviderHostRenderFrameId(provider_host.get(), frame_host->GetRoutingID());
   ServiceWorkerContainerHost* container_host = provider_host->container_host();
-  container_host->UpdateUrls(scope, scope, url::Origin::Create(scope));
+  container_host->UpdateUrls(scope, net::SiteForCookies::FromUrl(scope),
+                             url::Origin::Create(scope));
 
   // Prepare a ServiceWorkerObjectHost for the worker.
   blink::mojom::ServiceWorkerObjectInfoPtr info =
diff --git a/content/browser/service_worker/service_worker_process_manager.cc b/content/browser/service_worker/service_worker_process_manager.cc
index 0b40e9e..e63a4d07 100644
--- a/content/browser/service_worker/service_worker_process_manager.cc
+++ b/content/browser/service_worker/service_worker_process_manager.cc
@@ -110,16 +110,16 @@
   // Create a SiteInstance to get the renderer process from. Use the site URL
   // from the StoragePartition in case this StoragePartition is for guests
   // (e.g., <webview>).
-  bool use_url_from_storage_partition =
+  const bool is_guest =
       storage_partition_ &&
-      !storage_partition_->site_for_service_worker().is_empty();
+      !storage_partition_->site_for_guest_service_worker().is_empty();
+  const GURL service_worker_url =
+      is_guest ? storage_partition_->site_for_guest_service_worker()
+               : script_url;
   scoped_refptr<SiteInstanceImpl> site_instance =
       SiteInstanceImpl::CreateForServiceWorker(
-          browser_context_,
-          use_url_from_storage_partition
-              ? storage_partition_->site_for_service_worker()
-              : script_url,
-          can_use_existing_process);
+          browser_context_, service_worker_url, can_use_existing_process,
+          is_guest);
 
   // Get the process from the SiteInstance.
   RenderProcessHost* rph = site_instance->GetProcess();
diff --git a/content/browser/service_worker/service_worker_process_manager_unittest.cc b/content/browser/service_worker/service_worker_process_manager_unittest.cc
index 8cf04777..67d7c2a 100644
--- a/content/browser/service_worker/service_worker_process_manager_unittest.cc
+++ b/content/browser/service_worker/service_worker_process_manager_unittest.cc
@@ -200,14 +200,11 @@
 }
 
 // Tests that ServiceWorkerProcessManager uses
-// StoragePartitionImpl::site_for_service_worker() when it's set. This enables
-// finding the appropriate process when inside a StoragePartition for guests
-// (e.g., the <webview> tag). https://crbug.com/781313
+// StoragePartitionImpl::site_for_guest_service_worker() when it's set. This
+// enables finding the appropriate process when inside a StoragePartition for
+// guests (e.g., the <webview> tag). https://crbug.com/781313
 TEST_F(ServiceWorkerProcessManagerTest,
        AllocateWorkerProcess_StoragePartitionForGuests) {
-  const GURL kGuestSiteUrl =
-      GURL(std::string(content::kGuestScheme).append("://someapp/somepath"));
-
   // Allocate a process to a worker. It should use |script_url_| as the
   // site URL of the SiteInstance.
   {
@@ -225,24 +222,29 @@
     EXPECT_EQ(
         GURL("http://example.com"),
         render_process_host_factory_->last_site_instance_used()->GetSiteURL());
+    EXPECT_FALSE(
+        render_process_host_factory_->last_site_instance_used()->IsGuest());
 
     // Release the process.
     process_manager_->ReleaseWorkerProcess(kEmbeddedWorkerId);
   }
 
   // Now change ServiceWorkerProcessManager to use a StoragePartition with
-  // |site_for_service_worker| set. We must set |site_for_service_worker|
-  // manually since the production codepath in CreateRenderProcessHost() isn't
-  // hit here since we are using RenderProcessHostFactory.
+  // |site_for_guest_service_worker| set. We must set
+  // |site_for_guest_service_worker| manually since the production codepath in
+  // CreateRenderProcessHost() isn't hit here since we are using
+  // RenderProcessHostFactory.
+  const GURL kGuestSiteUrl("my-guest-scheme://someapp/somepath");
   scoped_refptr<SiteInstanceImpl> site_instance =
-      SiteInstanceImpl::CreateForURL(browser_context_.get(), kGuestSiteUrl);
+      SiteInstanceImpl::CreateForGuest(browser_context_.get(), kGuestSiteUrl);
   EXPECT_TRUE(site_instance->IsGuest());
   // It'd be more realistic to create a non-default StoragePartition, but there
   // would be no added value to this test since MockRenderProcessHost is not
   // StoragePartition-aware.
   StoragePartitionImpl* storage_partition = static_cast<StoragePartitionImpl*>(
       BrowserContext::GetDefaultStoragePartition(browser_context_.get()));
-  storage_partition->set_site_for_service_worker(site_instance->GetSiteURL());
+  storage_partition->set_site_for_guest_service_worker(
+      site_instance->GetSiteURL());
   process_manager_->set_storage_partition(storage_partition);
 
   // Allocate a process to a worker. It should use kGuestSiteUrl instead of
@@ -258,6 +260,8 @@
     EXPECT_EQ(
         kGuestSiteUrl,
         render_process_host_factory_->last_site_instance_used()->GetSiteURL());
+    EXPECT_TRUE(
+        render_process_host_factory_->last_site_instance_used()->IsGuest());
 
     // Release the process.
     process_manager_->ReleaseWorkerProcess(kEmbeddedWorkerId);
diff --git a/content/browser/service_worker/service_worker_provider_host.cc b/content/browser/service_worker/service_worker_provider_host.cc
index 5edcce5..fa38627 100644
--- a/content/browser/service_worker/service_worker_provider_host.cc
+++ b/content/browser/service_worker/service_worker_provider_host.cc
@@ -155,9 +155,10 @@
   DCHECK_NE(blink::mojom::ServiceWorkerProviderType::kUnknown, type);
   if (type == blink::mojom::ServiceWorkerProviderType::kForServiceWorker) {
     DCHECK(running_hosted_version_);
-    container_host_->UpdateUrls(running_hosted_version_->script_url(),
-                                running_hosted_version_->script_url(),
-                                running_hosted_version_->script_origin());
+    container_host_->UpdateUrls(
+        running_hosted_version_->script_url(),
+        net::SiteForCookies::FromUrl(running_hosted_version_->script_url()),
+        running_hosted_version_->script_origin());
   }
 }
 
diff --git a/content/browser/service_worker/service_worker_provider_host_unittest.cc b/content/browser/service_worker/service_worker_provider_host_unittest.cc
index e0a20516..b31d4ea 100644
--- a/content/browser/service_worker/service_worker_provider_host_unittest.cc
+++ b/content/browser/service_worker/service_worker_provider_host_unittest.cc
@@ -152,7 +152,8 @@
   ServiceWorkerRemoteProviderEndpoint PrepareServiceWorkerProviderHost(
       const GURL& document_url) {
     ServiceWorkerRemoteProviderEndpoint remote_endpoint;
-    GURL site_for_cookies = document_url;
+    net::SiteForCookies site_for_cookies =
+        net::SiteForCookies::FromUrl(document_url);
     url::Origin top_frame_origin = url::Origin::Create(document_url);
     CreateProviderHostInternal(document_url, site_for_cookies, top_frame_origin,
                                &remote_endpoint);
@@ -162,7 +163,7 @@
   ServiceWorkerRemoteProviderEndpoint
   PrepareServiceWorkerProviderHostWithSiteForCookies(
       const GURL& document_url,
-      const GURL& site_for_cookies,
+      const net::SiteForCookies& site_for_cookies,
       const base::Optional<url::Origin>& top_frame_origin) {
     ServiceWorkerRemoteProviderEndpoint remote_endpoint;
     CreateProviderHostInternal(document_url, site_for_cookies, top_frame_origin,
@@ -172,7 +173,8 @@
 
   base::WeakPtr<ServiceWorkerProviderHost> CreateProviderHost(
       const GURL& document_url) {
-    GURL site_for_cookies = document_url;
+    net::SiteForCookies site_for_cookies =
+        net::SiteForCookies::FromUrl(document_url);
     url::Origin top_frame_origin = url::Origin::Create(document_url);
     remote_endpoints_.emplace_back();
     return CreateProviderHostInternal(document_url, site_for_cookies,
@@ -186,15 +188,17 @@
     base::WeakPtr<ServiceWorkerProviderHost> host = CreateProviderHostForWindow(
         helper_->mock_render_process_id(), false /* is_parent_frame_secure */,
         helper_->context()->AsWeakPtr(), &remote_endpoints_.back());
-    host->container_host()->UpdateUrls(document_url, document_url,
-                                       url::Origin::Create(document_url));
+    host->container_host()->UpdateUrls(
+        document_url, net::SiteForCookies::FromUrl(document_url),
+        url::Origin::Create(document_url));
     return host;
   }
 
   void FinishNavigation(ServiceWorkerContainerHost* container_host) {
     // In production code, the loader/request handler does this.
     const GURL url("https://www.example.com/page");
-    container_host->UpdateUrls(url, url, url::Origin::Create(url));
+    container_host->UpdateUrls(url, net::SiteForCookies::FromUrl(url),
+                               url::Origin::Create(url));
 
     // In production code this is called from NavigationRequest in the browser
     // process right before navigation commit.
@@ -322,7 +326,7 @@
  private:
   base::WeakPtr<ServiceWorkerProviderHost> CreateProviderHostInternal(
       const GURL& document_url,
-      const GURL& site_for_cookies,
+      const net::SiteForCookies& site_for_cookies,
       const base::Optional<url::Origin>& top_frame_origin,
       ServiceWorkerRemoteProviderEndpoint* remote_endpoint) {
     base::WeakPtr<ServiceWorkerProviderHost> host = CreateProviderHostForWindow(
@@ -370,7 +374,7 @@
   // SetDocumentUrl sets all of matching registrations
   container_host->UpdateUrls(
       GURL("https://www.example.com/example1"),
-      GURL("https://www.example.com/example1"),
+      net::SiteForCookies::FromUrl(GURL("https://www.example.com/example1")),
       url::Origin::Create(GURL("https://www.example.com/example1")));
   ASSERT_EQ(registration2_, container_host->MatchRegistration());
   container_host->RemoveMatchingRegistration(registration2_.get());
@@ -379,7 +383,7 @@
   // SetDocumentUrl with another origin also updates matching registrations
   container_host->UpdateUrls(
       GURL("https://other.example.com/example"),
-      GURL("https://other.example.com/example"),
+      net::SiteForCookies::FromUrl(GURL("https://other.example.com/example")),
       url::Origin::Create(GURL("https://other.example.com/example")));
   ASSERT_EQ(registration3_, container_host->MatchRegistration());
   container_host->RemoveMatchingRegistration(registration3_.get());
@@ -395,21 +399,21 @@
 
   // Insecure document URL.
   provider_host_secure_parent->container_host()->UpdateUrls(
-      GURL("http://host"), GURL("http://host"),
+      GURL("http://host"), net::SiteForCookies::FromUrl(GURL("http://host")),
       url::Origin::Create(GURL("http://host")));
   EXPECT_FALSE(provider_host_secure_parent->container_host()
                    ->IsContextSecureForServiceWorker());
 
   // Insecure parent frame.
   provider_host_insecure_parent->container_host()->UpdateUrls(
-      GURL("https://host"), GURL("https://host"),
+      GURL("https://host"), net::SiteForCookies::FromUrl(GURL("https://host")),
       url::Origin::Create(GURL("https://host")));
   EXPECT_FALSE(provider_host_insecure_parent->container_host()
                    ->IsContextSecureForServiceWorker());
 
   // Secure URL and parent frame.
   provider_host_secure_parent->container_host()->UpdateUrls(
-      GURL("https://host"), GURL("https://host"),
+      GURL("https://host"), net::SiteForCookies::FromUrl(GURL("https://host")),
       url::Origin::Create(GURL("https://host")));
   EXPECT_TRUE(provider_host_secure_parent->container_host()
                   ->IsContextSecureForServiceWorker());
@@ -420,12 +424,14 @@
   EXPECT_TRUE(url.is_valid());
   EXPECT_FALSE(IsOriginSecure(url));
   EXPECT_TRUE(OriginCanAccessServiceWorkers(url));
-  provider_host_secure_parent->container_host()->UpdateUrls(url, url, origin);
+  provider_host_secure_parent->container_host()->UpdateUrls(
+      url, net::SiteForCookies::FromUrl(url), origin);
   EXPECT_TRUE(provider_host_secure_parent->container_host()
                   ->IsContextSecureForServiceWorker());
 
   // Exceptional service worker scheme with insecure parent frame.
-  provider_host_insecure_parent->container_host()->UpdateUrls(url, url, origin);
+  provider_host_insecure_parent->container_host()->UpdateUrls(
+      url, net::SiteForCookies::FromUrl(url), origin);
   EXPECT_FALSE(provider_host_insecure_parent->container_host()
                    ->IsContextSecureForServiceWorker());
 }
@@ -438,11 +444,14 @@
   ServiceWorkerContainerHost* container_host = host->container_host();
   const std::string uuid1 = container_host->client_uuid();
   EXPECT_EQ(url1, container_host->url());
-  EXPECT_EQ(url1, container_host->site_for_cookies());
+  EXPECT_TRUE(container_host->site_for_cookies().IsEquivalent(
+      net::SiteForCookies::FromUrl(url1)));
 
-  container_host->UpdateUrls(url2, url2, url::Origin::Create(url2));
+  container_host->UpdateUrls(url2, net::SiteForCookies::FromUrl(url2),
+                             url::Origin::Create(url2));
   EXPECT_EQ(url2, container_host->url());
-  EXPECT_EQ(url2, container_host->site_for_cookies());
+  EXPECT_TRUE(container_host->site_for_cookies().IsEquivalent(
+      net::SiteForCookies::FromUrl(url2)));
   EXPECT_EQ(uuid1, container_host->client_uuid());
 
   EXPECT_EQ(container_host, context_->GetContainerHostByClientID(
@@ -457,11 +466,14 @@
   ServiceWorkerContainerHost* container_host = host->container_host();
   const std::string uuid1 = container_host->client_uuid();
   EXPECT_EQ(url1, container_host->url());
-  EXPECT_EQ(url1, container_host->site_for_cookies());
+  EXPECT_TRUE(container_host->site_for_cookies().IsEquivalent(
+      net::SiteForCookies::FromUrl(url1)));
 
-  container_host->UpdateUrls(url2, url2, url::Origin::Create(url2));
+  container_host->UpdateUrls(url2, net::SiteForCookies::FromUrl(url2),
+                             url::Origin::Create(url2));
   EXPECT_EQ(url2, container_host->url());
-  EXPECT_EQ(url2, container_host->site_for_cookies());
+  EXPECT_TRUE(container_host->site_for_cookies().IsEquivalent(
+      net::SiteForCookies::FromUrl(url2)));
   EXPECT_NE(uuid1, container_host->client_uuid());
 
   EXPECT_FALSE(context_->GetContainerHostByClientID(uuid1));
@@ -618,7 +630,7 @@
   ServiceWorkerRemoteProviderEndpoint remote_endpoint =
       PrepareServiceWorkerProviderHostWithSiteForCookies(
           GURL("https://www.example.com/foo"),
-          GURL("https://www.example.com/top"),
+          net::SiteForCookies::FromUrl(GURL("https://www.example.com/top")),
           url::Origin::Create(GURL("https://www.example.com")));
 
   EXPECT_EQ(blink::mojom::ServiceWorkerErrorType::kDisabled,
@@ -628,8 +640,10 @@
   ASSERT_EQ(1ul, test_browser_client.logs().size());
   EXPECT_EQ(GURL("https://www.example.com/scope"),
             test_browser_client.logs()[0].scope);
-  EXPECT_EQ(GURL("https://www.example.com/top"),
-            test_browser_client.logs()[0].site_for_cookies);
+  EXPECT_TRUE(net::SiteForCookies::FromUrl(
+                  test_browser_client.logs()[0].site_for_cookies)
+                  .IsEquivalent(net::SiteForCookies::FromUrl(
+                      GURL("https://www.example.com/top"))));
   EXPECT_EQ(url::Origin::Create(GURL("https://www.example.com")),
             test_browser_client.logs()[0].top_frame_origin);
   EXPECT_EQ(GURL("https://www.example.com/bar"),
@@ -641,8 +655,11 @@
   ASSERT_EQ(2ul, test_browser_client.logs().size());
   EXPECT_EQ(GURL("https://www.example.com/foo"),
             test_browser_client.logs()[1].scope);
-  EXPECT_EQ(GURL("https://www.example.com/top"),
-            test_browser_client.logs()[1].site_for_cookies);
+  EXPECT_TRUE(net::SiteForCookies::FromUrl(
+                  test_browser_client.logs()[1].site_for_cookies)
+                  .IsEquivalent(net::SiteForCookies::FromUrl(
+                      GURL("https://www.example.com/top"))));
+
   EXPECT_EQ(url::Origin::Create(GURL("https://www.example.com")),
             test_browser_client.logs()[1].top_frame_origin);
   EXPECT_EQ(GURL(), test_browser_client.logs()[1].script_url);
@@ -652,8 +669,10 @@
   ASSERT_EQ(3ul, test_browser_client.logs().size());
   EXPECT_EQ(GURL("https://www.example.com/foo"),
             test_browser_client.logs()[2].scope);
-  EXPECT_EQ(GURL("https://www.example.com/top"),
-            test_browser_client.logs()[2].site_for_cookies);
+  EXPECT_TRUE(net::SiteForCookies::FromUrl(
+                  test_browser_client.logs()[2].site_for_cookies)
+                  .IsEquivalent(net::SiteForCookies::FromUrl(
+                      GURL("https://www.example.com/top"))));
   EXPECT_EQ(url::Origin::Create(GURL("https://www.example.com")),
             *test_browser_client.logs()[2].top_frame_origin);
   EXPECT_EQ(GURL(), test_browser_client.logs()[2].script_url);
@@ -686,8 +705,10 @@
   ASSERT_EQ(1ul, test_browser_client.logs().size());
   EXPECT_EQ(GURL("https://www.example.com/scope"),
             test_browser_client.logs()[0].scope);
-  EXPECT_EQ(GURL("https://www.example.com/sw.js"),
-            test_browser_client.logs()[0].site_for_cookies);
+  EXPECT_TRUE(net::SiteForCookies::FromUrl(
+                  test_browser_client.logs()[0].site_for_cookies)
+                  .IsEquivalent(net::SiteForCookies::FromUrl(
+                      GURL("https://www.example.com/sw.js"))));
   EXPECT_EQ(url::Origin::Create(GURL("https://www.example.com")),
             test_browser_client.logs()[0].top_frame_origin);
   SetBrowserClientForTesting(old_browser_client);
@@ -974,7 +995,8 @@
         ServiceWorkerProviderHost::CreateForWebWorker(
             context_->AsWeakPtr(), helper_->mock_render_process_id(),
             provider_type, std::move(host_receiver), std::move(client_remote));
-    host->container_host()->UpdateUrls(url, url, url::Origin::Create(url));
+    host->container_host()->UpdateUrls(url, net::SiteForCookies::FromUrl(url),
+                                       url::Origin::Create(url));
     EXPECT_FALSE(CanFindClientContainerHost(host->container_host()));
     host->container_host()->CompleteWebWorkerPreparation(
         network::mojom::CrossOriginEmbedderPolicy::kNone);
@@ -1063,7 +1085,8 @@
   EXPECT_FALSE(container_host->is_response_committed());
   EXPECT_FALSE(container_host->is_execution_ready());
 
-  container_host->UpdateUrls(url, url, url::Origin::Create(url));
+  container_host->UpdateUrls(url, net::SiteForCookies::FromUrl(url),
+                             url::Origin::Create(url));
   container_host->CompleteWebWorkerPreparation(
       network::mojom::CrossOriginEmbedderPolicy::kNone);
 
diff --git a/content/browser/service_worker/service_worker_registration_unittest.cc b/content/browser/service_worker/service_worker_registration_unittest.cc
index 024ad861..ffd06e8 100644
--- a/content/browser/service_worker/service_worker_registration_unittest.cc
+++ b/content/browser/service_worker/service_worker_registration_unittest.cc
@@ -430,7 +430,8 @@
         context()->AsWeakPtr(), &remote_endpoint_);
     DCHECK(remote_endpoint_.client_receiver()->is_valid());
     DCHECK(remote_endpoint_.host_remote()->is_bound());
-    host_->container_host()->UpdateUrls(kUrl, kUrl, url::Origin::Create(kUrl));
+    host_->container_host()->UpdateUrls(
+        kUrl, net::SiteForCookies::FromUrl(kUrl), url::Origin::Create(kUrl));
     host_->container_host()->SetControllerRegistration(
         registration_, false /* notify_controllerchange */);
 
@@ -938,8 +939,9 @@
     base::WeakPtr<ServiceWorkerProviderHost> host = CreateProviderHostForWindow(
         helper_->mock_render_process_id(), true /* is_parent_frame_secure */,
         context()->AsWeakPtr(), &remote_endpoint);
-    host->container_host()->UpdateUrls(document_url, document_url,
-                                       url::Origin::Create(document_url));
+    host->container_host()->UpdateUrls(
+        document_url, net::SiteForCookies::FromUrl(document_url),
+        url::Origin::Create(document_url));
     if (out_host)
       *out_host = host;
     return remote_endpoint;
@@ -1059,8 +1061,8 @@
 
   ASSERT_TRUE(bad_messages_.empty());
   GURL url("https://does.not.exist/");
-  provider_host->container_host()->UpdateUrls(url, url,
-                                              url::Origin::Create(url));
+  provider_host->container_host()->UpdateUrls(
+      url, net::SiteForCookies::FromUrl(url), url::Origin::Create(url));
   CallUpdate(registration_host.get(), /*out_error_msg=*/nullptr);
   EXPECT_EQ(1u, bad_messages_.size());
 }
@@ -1168,7 +1170,8 @@
   base::WeakPtr<ServiceWorkerProviderHost> host = CreateProviderHostForWindow(
       helper_->mock_render_process_id(), true /* is_parent_frame_secure */,
       context()->AsWeakPtr(), &remote_endpoint);
-  host->container_host()->UpdateUrls(kScope, kScope,
+  host->container_host()->UpdateUrls(kScope,
+                                     net::SiteForCookies::FromUrl(kScope),
                                      url::Origin::Create(kScope));
   version->AddControllee(host->container_host());
 
@@ -1234,7 +1237,8 @@
 
   ASSERT_TRUE(bad_messages_.empty());
   provider_host->container_host()->UpdateUrls(
-      GURL("https://does.not.exist/"), GURL("https://does.not.exist/"),
+      GURL("https://does.not.exist/"),
+      net::SiteForCookies::FromUrl(GURL("https://does.not.exist/")),
       url::Origin::Create(GURL("https://does.not.exist/")));
   CallUnregister(registration_host.get());
   EXPECT_EQ(1u, bad_messages_.size());
diff --git a/content/browser/service_worker/service_worker_single_script_update_checker.cc b/content/browser/service_worker/service_worker_single_script_update_checker.cc
index d06ea54..0413b84 100644
--- a/content/browser/service_worker/service_worker_single_script_update_checker.cc
+++ b/content/browser/service_worker/service_worker_single_script_update_checker.cc
@@ -127,7 +127,8 @@
   uint32_t options = network::mojom::kURLLoadOptionNone;
   network::ResourceRequest resource_request;
   resource_request.url = script_url;
-  resource_request.site_for_cookies = main_script_url;
+  resource_request.site_for_cookies =
+      net::SiteForCookies::FromUrl(main_script_url);
   resource_request.do_not_prompt_for_login = true;
   resource_request.headers = default_headers;
   resource_request.referrer_policy = Referrer::ReferrerPolicyForUrlRequest(
diff --git a/content/browser/service_worker/service_worker_version_unittest.cc b/content/browser/service_worker/service_worker_version_unittest.cc
index 582aad91..66b4562b 100644
--- a/content/browser/service_worker/service_worker_version_unittest.cc
+++ b/content/browser/service_worker/service_worker_version_unittest.cc
@@ -178,7 +178,8 @@
         controllee_process_id, true /* is_parent_frame_secure */,
         helper_->context()->AsWeakPtr(), &remote_endpoint);
     host->container_host()->UpdateUrls(
-        registration_->scope(), registration_->scope(),
+        registration_->scope(),
+        net::SiteForCookies::FromUrl(registration_->scope()),
         url::Origin::Create(registration_->scope()));
     host->container_host()->SetControllerRegistration(
         registration_, false /* notify_controllerchange */);
@@ -429,7 +430,8 @@
       33 /* dummy render process id */, true /* is_parent_frame_secure */,
       helper_->context()->AsWeakPtr(), &remote_endpoint);
   host->container_host()->UpdateUrls(
-      registration_->scope(), registration_->scope(),
+      registration_->scope(),
+      net::SiteForCookies::FromUrl(registration_->scope()),
       url::Origin::Create(registration_->scope()));
   host->container_host()->SetControllerRegistration(registration_, false);
   EXPECT_TRUE(version_->HasControllee());
@@ -1197,7 +1199,8 @@
       std::move(host_and_info->host);
   remote_endpoint.BindForWindow(std::move(host_and_info->info));
   host->container_host()->UpdateUrls(
-      registration_->scope(), registration_->scope(),
+      registration_->scope(),
+      net::SiteForCookies::FromUrl(registration_->scope()),
       url::Origin::Create(registration_->scope()));
   host->container_host()->SetControllerRegistration(
       registration_, false /* notify_controllerchange */);
diff --git a/content/browser/site_instance_impl.cc b/content/browser/site_instance_impl.cc
index 6a0c85c..efaf7cc 100644
--- a/content/browser/site_instance_impl.cc
+++ b/content/browser/site_instance_impl.cc
@@ -62,7 +62,8 @@
       can_associate_with_spare_process_(true),
       has_site_(false),
       process_reuse_policy_(ProcessReusePolicy::DEFAULT),
-      is_for_service_worker_(false) {
+      is_for_service_worker_(false),
+      is_guest_(false) {
   DCHECK(browsing_instance);
 }
 
@@ -111,15 +112,22 @@
 scoped_refptr<SiteInstanceImpl> SiteInstanceImpl::CreateForServiceWorker(
     BrowserContext* browser_context,
     const GURL& url,
-    bool can_reuse_process) {
-  // This will create a new SiteInstance and BrowsingInstance.
-  scoped_refptr<BrowsingInstance> instance(
-      new BrowsingInstance(browser_context));
+    bool can_reuse_process,
+    bool is_guest) {
+  scoped_refptr<SiteInstanceImpl> site_instance;
 
-  // We do NOT want to allow the default site instance here because workers
-  // need to be kept separate from other sites.
-  scoped_refptr<SiteInstanceImpl> site_instance =
-      instance->GetSiteInstanceForURL(url, /* allow_default_instance */ false);
+  if (is_guest) {
+    site_instance = CreateForGuest(browser_context, url);
+  } else {
+    // This will create a new SiteInstance and BrowsingInstance.
+    scoped_refptr<BrowsingInstance> instance(
+        new BrowsingInstance(browser_context));
+
+    // We do NOT want to allow the default site instance here because workers
+    // need to be kept separate from other sites.
+    site_instance = instance->GetSiteInstanceForURL(
+        url, /* allow_default_instance */ false);
+  }
   site_instance->is_for_service_worker_ = true;
 
   // Attempt to reuse a renderer process if possible. Note that in the
@@ -137,6 +145,25 @@
 }
 
 // static
+scoped_refptr<SiteInstanceImpl> SiteInstanceImpl::CreateForGuest(
+    content::BrowserContext* browser_context,
+    const GURL& guest_site_url) {
+  DCHECK(browser_context);
+  DCHECK_NE(guest_site_url, GetDefaultSiteURL());
+  scoped_refptr<SiteInstanceImpl> site_instance = base::WrapRefCounted(
+      new SiteInstanceImpl(new BrowsingInstance(browser_context)));
+
+  site_instance->is_guest_ = true;
+
+  // Setting site and lock directly without the site URL conversions we
+  // do for user provided URLs. Callers expect GetSiteURL() to return the
+  // value they provide in |guest_site_url|.
+  site_instance->SetSiteAndLockInternal(guest_site_url, guest_site_url);
+
+  return site_instance;
+}
+
+// static
 scoped_refptr<SiteInstanceImpl>
 SiteInstanceImpl::CreateReusableInstanceForTesting(
     BrowserContext* browser_context,
@@ -315,13 +342,29 @@
   // SiteInstance more than once.
   DCHECK(!has_site_);
 
+  original_url_ = url;
+
+  // Convert |url| into appropriate site and lock URLs that can be passed to
+  // SetSiteAndLockInternal(). We must do this transformation for any arbitrary
+  // URL we get from a user, a navigation, or script.
+  GURL site_url;
+  GURL lock_url;
+  browsing_instance_->GetSiteAndLockForURL(
+      url, /* allow_default_instance */ false, &site_url, &lock_url);
+
+  SetSiteAndLockInternal(site_url, lock_url);
+}
+
+void SiteInstanceImpl::SetSiteAndLockInternal(const GURL& site_url,
+                                              const GURL& lock_url) {
+  // TODO(acolwell): Add logic to validate |site_url| and |lock_url| are valid.
+  DCHECK(!has_site_);
+
   // Remember that this SiteInstance has been used to load a URL, even if the
   // URL is invalid.
   has_site_ = true;
-  BrowserContext* browser_context = browsing_instance_->GetBrowserContext();
-  original_url_ = url;
-  browsing_instance_->GetSiteAndLockForURL(
-      url, /* allow_default_instance */ false, &site_, &lock_url_);
+  site_ = site_url;
+  lock_url_ = lock_url;
 
   // Now that we have a site, register it with the BrowsingInstance.  This
   // ensures that we won't create another SiteInstance for this site within
@@ -330,6 +373,7 @@
   browsing_instance_->RegisterSiteInstance(this);
 
   // Update the process reuse policy based on the site.
+  BrowserContext* browser_context = browsing_instance_->GetBrowserContext();
   bool should_use_process_per_site =
       RenderProcessHost::ShouldUseProcessPerSite(browser_context, site_);
   if (should_use_process_per_site) {
@@ -517,6 +561,14 @@
 }
 
 // static
+scoped_refptr<SiteInstance> SiteInstance::CreateForGuest(
+    content::BrowserContext* browser_context,
+    const GURL& guest_site_url) {
+  DCHECK(browser_context);
+  return SiteInstanceImpl::CreateForGuest(browser_context, guest_site_url);
+}
+
+// static
 bool SiteInstance::ShouldAssignSiteForURL(const GURL& url) {
   return SiteInstanceImpl::ShouldAssignSiteForURL(url);
 }
@@ -546,7 +598,7 @@
 }
 
 bool SiteInstanceImpl::IsGuest() {
-  return site_.SchemeIs(kGuestScheme);
+  return is_guest_;
 }
 
 bool SiteInstanceImpl::IsOriginalUrlSameSite(
@@ -696,10 +748,6 @@
     const GURL& real_url,
     bool should_use_effective_urls,
     bool allow_default_site_url) {
-  // TODO(fsamuel, creis): For some reason appID is not recognized as a host.
-  if (real_url.SchemeIs(kGuestScheme))
-    return real_url;
-
   // Explicitly group chrome-error: URLs based on their host component.
   // These URLs are special because we want to group them like other URLs
   // with a host even though they are considered "no access" and
@@ -830,12 +878,6 @@
     return false;
   }
 
-  // Exclude "chrome-guest:" URLs from the default SiteInstance to ensure that
-  // guest specific process selection, process swapping, and storage partition
-  // behavior is preserved.
-  if (url.SchemeIs(kGuestScheme))
-    return false;
-
   // Exclude "file://" URLs from the default SiteInstance to prevent the
   // default SiteInstance process from accumulating file access grants that
   // could be exploited by other non-isolated sites.
diff --git a/content/browser/site_instance_impl.h b/content/browser/site_instance_impl.h
index 59edc1f..caa100b3 100644
--- a/content/browser/site_instance_impl.h
+++ b/content/browser/site_instance_impl.h
@@ -36,15 +36,29 @@
                                    const ChildProcessTerminationInfo& info) = 0;
   };
 
+  // Methods for creating new SiteInstances. The documentation for these methods
+  // are on the SiteInstance::Create* methods with the same name.
   static scoped_refptr<SiteInstanceImpl> Create(
       BrowserContext* browser_context);
   static scoped_refptr<SiteInstanceImpl> CreateForURL(
       BrowserContext* browser_context,
       const GURL& url);
+  static scoped_refptr<SiteInstanceImpl> CreateForGuest(
+      content::BrowserContext* browser_context,
+      const GURL& guest_site_url);
+
+  // Creates a SiteInstance that will be use for a service worker.
+  // |url| - The script URL for the service worker if |is_guest| is false.
+  //         The <webview> guest site URL if |is_guest| is true.
+  // |can_reuse_process| - Set to true if the new SiteInstance can use the
+  //                       same process as the renderer for |url|.
+  // |is_guest| - Set to true if the new SiteInstance is for a <webview>
+  // guest.
   static scoped_refptr<SiteInstanceImpl> CreateForServiceWorker(
       BrowserContext* browser_context,
       const GURL& url,
-      bool can_reuse_process = false);
+      bool can_reuse_process = false,
+      bool is_guest = false);
 
   // Creates a SiteInstance for |url| like CreateForURL() would except the
   // instance that is returned has its process_reuse_policy set to
@@ -356,6 +370,13 @@
   // a dedicated process.
   void MaybeSetBrowsingInstanceDefaultProcess();
 
+  // Sets |site_| and |lock_| with |site_url| and |lock_url| respectively
+  // and registers this object with |browsing_instance_|. SetSite() calls
+  // this method to set the site and lock for a user provided URL. This
+  // method should only be called by code that need to set the site and
+  // lock directly without any "url to site URL" transformation.
+  void SetSiteAndLockInternal(const GURL& site_url, const GURL& lock_url);
+
   // Returns the site for the given URL, which includes only the scheme and
   // registered domain.  Returns an empty GURL if the URL has no host.
   // |should_use_effective_urls| specifies whether to resolve |url| to an
@@ -440,6 +461,10 @@
   // Whether the SiteInstance was created for a service worker.
   bool is_for_service_worker_;
 
+  // Whether the SiteInstance was created for a <webview> guest.
+  // TODO(734722): Move this into the SecurityPrincipal once it is available.
+  bool is_guest_;
+
   base::ObserverList<Observer, true>::Unchecked observers_;
 
   DISALLOW_COPY_AND_ASSIGN(SiteInstanceImpl);
diff --git a/content/browser/site_instance_impl_unittest.cc b/content/browser/site_instance_impl_unittest.cc
index af3b97eb..350a053 100644
--- a/content/browser/site_instance_impl_unittest.cc
+++ b/content/browser/site_instance_impl_unittest.cc
@@ -458,14 +458,6 @@
   site_url = SiteInstance::GetSiteForURL(&context, test_url);
   EXPECT_EQ(GURL("http://google.com"), site_url);
 
-  // Guest URLs are special and need to have the path in the site as well,
-  // since it affects the StoragePartition configuration.
-  std::string guest_url(kGuestScheme);
-  guest_url.append("://abc123/path");
-  test_url = GURL(guest_url);
-  site_url = SiteInstance::GetSiteForURL(&context, test_url);
-  EXPECT_EQ(test_url, site_url);
-
   DrainMessageLoop();
 }
 
@@ -1402,7 +1394,6 @@
   const GURL kNonIsolatedUrl("https://bar.com/");
   const GURL kIsolatedUrl("https://isolated.com/");
   const GURL kFileUrl("file:///C:/Downloads/");
-  const GURL kGuestUrl(std::string(kGuestScheme) + "://abc123/path");
 
   ChildProcessSecurityPolicyImpl::GetInstance()->AddIsolatedOrigins(
       {url::Origin::Create(kIsolatedUrl)}, IsolatedOriginSource::TEST);
@@ -1410,8 +1401,7 @@
   auto instance1 = SiteInstanceImpl::CreateForURL(context(), kNonIsolatedUrl);
   auto instance2 = SiteInstanceImpl::CreateForURL(context(), kIsolatedUrl);
   auto instance3 = SiteInstanceImpl::CreateForURL(context(), kFileUrl);
-  auto instance4 = SiteInstanceImpl::CreateForURL(context(), kGuestUrl);
-  auto instance5 =
+  auto instance4 =
       SiteInstanceImpl::CreateForURL(context(), GURL(url::kAboutBlankURL));
 
   if (AreDefaultSiteInstancesEnabled()) {
@@ -1427,14 +1417,42 @@
   EXPECT_FALSE(instance3->IsDefaultSiteInstance());
   EXPECT_EQ(GURL("file:"), instance3->GetSiteURL());
 
-  EXPECT_FALSE(instance4->IsDefaultSiteInstance());
-  EXPECT_EQ(kGuestUrl, instance4->GetSiteURL());
-
   // about:blank URLs generate a SiteInstance without the site URL set because
   // ShouldAssignSiteForURL() returns false and the expectation is that the
   // site URL will be set at a later time.
-  EXPECT_FALSE(instance5->IsDefaultSiteInstance());
-  EXPECT_FALSE(instance5->HasSite());
+  EXPECT_FALSE(instance4->IsDefaultSiteInstance());
+  EXPECT_FALSE(instance4->HasSite());
+}
+
+TEST_F(SiteInstanceTest, CreateForGuest) {
+  const GURL kGuestUrl(std::string(kGuestScheme) + "://abc123/path");
+
+  // Verify that a SiteInstance created with CreateForURL() is not considered
+  // a <webview> guest and has the path removed for the site URL like any other
+  // standard URL.
+  auto instance1 = SiteInstanceImpl::CreateForURL(context(), kGuestUrl);
+  EXPECT_FALSE(instance1->IsGuest());
+  if (AreAllSitesIsolatedForTesting()) {
+    EXPECT_NE(kGuestUrl, instance1->GetSiteURL());
+    EXPECT_EQ(GURL(std::string(kGuestScheme) + "://abc123/"),
+              instance1->GetSiteURL());
+  } else {
+    EXPECT_TRUE(instance1->IsDefaultSiteInstance());
+  }
+
+  // Verify that a SiteInstance created with CreateForGuest() is considered
+  // a <webview> guest and has a site URL that is identical to what was passed
+  // to CreateForGuest().
+  auto instance2 = SiteInstanceImpl::CreateForGuest(context(), kGuestUrl);
+  EXPECT_TRUE(instance2->IsGuest());
+  EXPECT_EQ(kGuestUrl, instance2->GetSiteURL());
+
+  // Verify that a SiteInstance being considered a <webview> guest does not
+  // depend on using a specific scheme.
+  const GURL kGuestUrl2("my-special-scheme://abc123/path");
+  auto instance3 = SiteInstanceImpl::CreateForGuest(context(), kGuestUrl2);
+  EXPECT_TRUE(instance3->IsGuest());
+  EXPECT_EQ(kGuestUrl2, instance3->GetSiteURL());
 }
 
 TEST_F(SiteInstanceTest, DoesSiteRequireDedicatedProcess) {
diff --git a/content/browser/site_per_process_browsertest.cc b/content/browser/site_per_process_browsertest.cc
index c49a4a3..ab29bfd 100644
--- a/content/browser/site_per_process_browsertest.cc
+++ b/content/browser/site_per_process_browsertest.cc
@@ -12946,18 +12946,18 @@
                             child_thread_observer.get());
   base::Optional<cc::TouchAction> effective_touch_action;
   base::Optional<cc::TouchAction> whitelisted_touch_action;
-  cc::TouchAction expected_touch_action = cc::kTouchActionPan;
+  cc::TouchAction expected_touch_action = cc::TouchAction::kPan;
   // Gestures are filtered by the intersection of touch-action values of the
   // touched element and all its ancestors up to the one that implements the
   // gesture. Since iframe allows scrolling, touch action pan restrictions will
-  // not affect iframe's descendants, so we expect kTouchActionPan instead of
-  // kTouchActionAuto in iframe's child.
+  // not affect iframe's descendants, so we expect TouchAction::kPan instead of
+  // TouchAction::kAuto in iframe's child.
   GetTouchActionsForChild(router, rwhv_root, rwhv_child, point_inside_child,
                           effective_touch_action, whitelisted_touch_action);
   if (!compositor_touch_action_enabled_) {
     EXPECT_EQ(expected_touch_action, effective_touch_action.has_value()
                                          ? effective_touch_action.value()
-                                         : cc::kTouchActionAuto);
+                                         : cc::TouchAction::kAuto);
   }
   if (whitelisted_touch_action.has_value())
     EXPECT_EQ(expected_touch_action, whitelisted_touch_action.value());
@@ -12966,13 +12966,13 @@
       ExecuteScript(shell(), "document.body.style.touchAction = 'auto'"));
   WaitForTouchActionUpdated(root_thread_observer.get(),
                             child_thread_observer.get());
-  expected_touch_action = cc::kTouchActionAuto;
+  expected_touch_action = cc::TouchAction::kAuto;
   GetTouchActionsForChild(router, rwhv_root, rwhv_child, point_inside_child,
                           effective_touch_action, whitelisted_touch_action);
   if (compositor_touch_action_enabled_) {
     EXPECT_EQ(expected_touch_action, effective_touch_action.has_value()
                                          ? effective_touch_action.value()
-                                         : cc::kTouchActionAuto);
+                                         : cc::TouchAction::kAuto);
   }
   if (whitelisted_touch_action.has_value())
     EXPECT_EQ(expected_touch_action, whitelisted_touch_action.value());
@@ -13034,12 +13034,12 @@
                             child_thread_observer.get());
   base::Optional<cc::TouchAction> effective_touch_action;
   base::Optional<cc::TouchAction> whitelisted_touch_action;
-  cc::TouchAction expected_touch_action = cc::kTouchActionPan;
+  cc::TouchAction expected_touch_action = cc::TouchAction::kPan;
   GetTouchActionsForChild(router, rwhv_root, rwhv_child, point_inside_child,
                           effective_touch_action, whitelisted_touch_action);
   cc::TouchAction effective_touch_action_result =
       effective_touch_action.has_value() ? effective_touch_action.value()
-                                         : cc::kTouchActionAuto;
+                                         : cc::TouchAction::kAuto;
   // TouchAction might have not been propagated to child frames yet, loop until
   // we get the expected touch action value.
   if (!compositor_touch_action_enabled_) {
@@ -13048,7 +13048,7 @@
                               effective_touch_action, whitelisted_touch_action);
       effective_touch_action_result = effective_touch_action.has_value()
                                           ? effective_touch_action.value()
-                                          : cc::kTouchActionAuto;
+                                          : cc::TouchAction::kAuto;
     }
   }
   if (whitelisted_touch_action.has_value())
@@ -13066,14 +13066,14 @@
                           effective_touch_action, whitelisted_touch_action);
   effective_touch_action_result = effective_touch_action.has_value()
                                       ? effective_touch_action.value()
-                                      : cc::kTouchActionAuto;
+                                      : cc::TouchAction::kAuto;
   if (!compositor_touch_action_enabled_) {
     while (expected_touch_action != effective_touch_action_result) {
       GetTouchActionsForChild(router, rwhv_root, rwhv_child, point_inside_child,
                               effective_touch_action, whitelisted_touch_action);
       effective_touch_action_result = effective_touch_action.has_value()
                                           ? effective_touch_action.value()
-                                          : cc::kTouchActionAuto;
+                                          : cc::TouchAction::kAuto;
     }
   }
   if (whitelisted_touch_action.has_value())
@@ -13085,19 +13085,19 @@
       "document.getElementById('parent-div').style.touchAction = 'auto'"));
   WaitForTouchActionUpdated(root_thread_observer.get(),
                             child_thread_observer.get());
-  expected_touch_action = cc::kTouchActionAuto;
+  expected_touch_action = cc::TouchAction::kAuto;
   GetTouchActionsForChild(router, rwhv_root, rwhv_child, point_inside_child,
                           effective_touch_action, whitelisted_touch_action);
   effective_touch_action_result = effective_touch_action.has_value()
                                       ? effective_touch_action.value()
-                                      : cc::kTouchActionAuto;
+                                      : cc::TouchAction::kAuto;
   if (!compositor_touch_action_enabled_) {
     while (expected_touch_action != effective_touch_action_result) {
       GetTouchActionsForChild(router, rwhv_root, rwhv_child, point_inside_child,
                               effective_touch_action, whitelisted_touch_action);
       effective_touch_action_result = effective_touch_action.has_value()
                                           ? effective_touch_action.value()
-                                          : cc::kTouchActionAuto;
+                                          : cc::TouchAction::kAuto;
     }
   }
   if (whitelisted_touch_action.has_value())
@@ -13152,13 +13152,13 @@
                             child_thread_observer.get());
   base::Optional<cc::TouchAction> effective_touch_action;
   base::Optional<cc::TouchAction> whitelisted_touch_action;
-  cc::TouchAction expected_touch_action = cc::kTouchActionPan;
+  cc::TouchAction expected_touch_action = cc::TouchAction::kPan;
   GetTouchActionsForChild(router, rwhv_root, rwhv_child, point_inside_child,
                           effective_touch_action, whitelisted_touch_action);
   if (!compositor_touch_action_enabled_) {
     EXPECT_EQ(expected_touch_action, effective_touch_action.has_value()
                                          ? effective_touch_action.value()
-                                         : cc::kTouchActionAuto);
+                                         : cc::TouchAction::kAuto);
   }
   if (whitelisted_touch_action.has_value())
     EXPECT_EQ(expected_touch_action, whitelisted_touch_action.value());
@@ -13186,7 +13186,7 @@
   if (!compositor_touch_action_enabled_) {
     EXPECT_EQ(expected_touch_action, effective_touch_action.has_value()
                                          ? effective_touch_action.value()
-                                         : cc::kTouchActionAuto);
+                                         : cc::TouchAction::kAuto);
   }
   if (whitelisted_touch_action.has_value())
     EXPECT_EQ(expected_touch_action, whitelisted_touch_action.value());
diff --git a/content/browser/site_per_process_hit_test_browsertest.cc b/content/browser/site_per_process_hit_test_browsertest.cc
index be71582..3347159 100644
--- a/content/browser/site_per_process_hit_test_browsertest.cc
+++ b/content/browser/site_per_process_hit_test_browsertest.cc
@@ -4683,10 +4683,10 @@
   // There's no intrinsic reason the following values can't be equal, but they
   // aren't at present, and if they become the same this test will need to be
   // updated to accommodate.
-  EXPECT_NE(cc::kTouchActionAuto, cc::kTouchActionNone);
+  EXPECT_NE(cc::TouchAction::kAuto, cc::TouchAction::kNone);
 
   // Verify the child's input router is initially not set. The TouchStart event
-  // will trigger kTouchActionNone being sent back to the browser.
+  // will trigger TouchAction::kNone being sent back to the browser.
   RenderWidgetHostImpl* child_render_widget_host =
       root->child_at(0)->current_frame_host()->GetRenderWidgetHost();
   EXPECT_FALSE(child_render_widget_host->input_router()
@@ -4731,7 +4731,7 @@
 
   // Verify the presence of the touch handler in the child frame correctly
   // propagates touch-action:none information back to the child's input router.
-  EXPECT_EQ(cc::kTouchActionNone,
+  EXPECT_EQ(cc::TouchAction::kNone,
             child_render_widget_host->input_router()->AllowedTouchAction());
 }
 
@@ -4758,10 +4758,10 @@
   // There's no intrinsic reason the following values can't be equal, but they
   // aren't at present, and if they become the same this test will need to be
   // updated to accommodate.
-  EXPECT_NE(cc::kTouchActionAuto, cc::kTouchActionNone);
+  EXPECT_NE(cc::TouchAction::kAuto, cc::TouchAction::kNone);
 
   // Verify the main frame's input router is initially not set. The
-  // TouchStart event will trigger kTouchActionNone being sent back to the
+  // TouchStart event will trigger TouchAction::kNone being sent back to the
   // browser.
   RenderWidgetHostImpl* render_widget_host =
       root->current_frame_host()->GetRenderWidgetHost();
@@ -4802,7 +4802,7 @@
 
   // Verify the presence of the touch handler in the child frame correctly
   // propagates touch-action:none information back to the child's input router.
-  EXPECT_EQ(cc::kTouchActionNone,
+  EXPECT_EQ(cc::TouchAction::kNone,
             render_widget_host->input_router()->AllowedTouchAction());
 }
 
@@ -5334,8 +5334,13 @@
 // Test that performing a touchpad pinch over an OOPIF offers the synthetic
 // wheel events to the child and causes the page scale factor to change for
 // the main frame (given that the child did not consume the wheel).
+#if defined(OS_LINUX)
+#define MAYBE_TouchpadPinchOverOOPIF DISABLED_TouchpadPinchOverOOPIF
+#else
+#define MAYBE_TouchpadPinchOverOOPIF TouchpadPinchOverOOPIF
+#endif
 IN_PROC_BROWSER_TEST_F(SitePerProcessHitTestBrowserTest,
-                       TouchpadPinchOverOOPIF) {
+                       MAYBE_TouchpadPinchOverOOPIF) {
   GURL main_url(embedded_test_server()->GetURL(
       "/frame_tree/page_with_positioned_frame.html"));
   EXPECT_TRUE(NavigateToURL(shell(), main_url));
diff --git a/content/browser/sms/sms_service_unittest.cc b/content/browser/sms/sms_service_unittest.cc
index bf1be9d..6d298263 100644
--- a/content/browser/sms/sms_service_unittest.cc
+++ b/content/browser/sms/sms_service_unittest.cc
@@ -25,7 +25,6 @@
 #include "content/public/test/navigation_simulator.h"
 #include "content/public/test/test_browser_context.h"
 #include "content/public/test/test_renderer_host.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "mojo/public/cpp/bindings/remote.h"
 #include "mojo/public/cpp/test_support/test_utils.h"
 #include "services/service_manager/public/cpp/bind_source_info.h"
diff --git a/content/browser/storage_partition_impl.h b/content/browser/storage_partition_impl.h
index 8dde533..840e38d 100644
--- a/content/browser/storage_partition_impl.h
+++ b/content/browser/storage_partition_impl.h
@@ -285,14 +285,14 @@
   // is the site URL to use when creating a SiteInstance for a service worker.
   // Typically one would use the script URL of the service worker (e.g.,
   // "https://example.com/sw.js"), but if this StoragePartition is for guests,
-  // one must use the "chrome-guest://blahblah" site URL to ensure that the
+  // one must use the <webview> guest site URL to ensure that the
   // service worker stays in this StoragePartition. This is an empty GURL if
   // this StoragePartition is not for guests.
-  void set_site_for_service_worker(const GURL& site_for_service_worker) {
-    site_for_service_worker_ = site_for_service_worker;
+  void set_site_for_guest_service_worker(const GURL& site_for_service_worker) {
+    site_for_guest_service_worker_ = site_for_service_worker;
   }
-  const GURL& site_for_service_worker() const {
-    return site_for_service_worker_;
+  const GURL& site_for_guest_service_worker() const {
+    return site_for_guest_service_worker_;
   }
 
   // Use the network context to retrieve the origin policy manager.
@@ -493,8 +493,8 @@
   mojo::Remote<network::mojom::OriginPolicyManager>
       origin_policy_manager_for_browser_process_;
 
-  // See comments for site_for_service_worker().
-  GURL site_for_service_worker_;
+  // See comments for site_for_guest_service_worker().
+  GURL site_for_guest_service_worker_;
 
   // Track number of running deletion. For test use only.
   int deletion_helpers_running_;
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index 0e6546d6..db7c4010 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -1785,6 +1785,8 @@
         inner_render_view_host);
   }
 
+  inner_web_contents_impl->RecursivelyUnregisterFrameSinkIds();
+
   // Create a link to our outer WebContents.
   node_.AttachInnerWebContents(std::move(inner_web_contents),
                                render_frame_host_impl);
@@ -1823,6 +1825,7 @@
 
 std::unique_ptr<WebContents> WebContentsImpl::DetachFromOuterWebContents() {
   DCHECK(node_.outer_web_contents());
+  RecursivelyUnregisterFrameSinkIds();
   if (RenderWidgetHostViewBase* view =
           static_cast<RenderWidgetHostViewBase*>(GetMainFrame()->GetView())) {
     view->Destroy();
@@ -1840,20 +1843,25 @@
   DCHECK_EQ(web_contents.get(), this);
   node_.SetFocusedWebContents(this);
   CreateRenderWidgetHostViewForRenderManager(GetRenderViewHost());
+  RecursivelyRegisterFrameSinkIds();
   return web_contents;
 }
 
 void WebContentsImpl::RecursivelyRegisterFrameSinkIds() {
-  auto* view = static_cast<RenderWidgetHostViewBase*>(
-      GetRenderManager()->GetRenderWidgetHostView());
-  DCHECK(view);
-  if (!view->IsRenderWidgetHostViewChildFrame())
-    return;
-  static_cast<RenderWidgetHostViewChildFrame*>(view)->RegisterFrameSinkId();
+  for (auto* view : GetRenderWidgetHostViewsInWebContentsTree()) {
+    auto* rwhvb = static_cast<RenderWidgetHostViewBase*>(view);
+    if (rwhvb->IsRenderWidgetHostViewChildFrame())
+      static_cast<RenderWidgetHostViewChildFrame*>(view)->RegisterFrameSinkId();
+  }
+}
 
-  for (auto* inner_web_contents : node_.GetInnerWebContents()) {
-    static_cast<WebContentsImpl*>(inner_web_contents)
-        ->RecursivelyRegisterFrameSinkIds();
+void WebContentsImpl::RecursivelyUnregisterFrameSinkIds() {
+  for (auto* view : GetRenderWidgetHostViewsInWebContentsTree()) {
+    auto* rwhvb = static_cast<RenderWidgetHostViewBase*>(view);
+    if (rwhvb->IsRenderWidgetHostViewChildFrame()) {
+      static_cast<RenderWidgetHostViewChildFrame*>(view)
+          ->UnregisterFrameSinkId();
+    }
   }
 }
 
@@ -1873,6 +1881,10 @@
   GetMainFrame()->UpdateAXTreeData();
 }
 
+void WebContentsImpl::NotifyInsidePortal(bool inside_portal) {
+  SendPageMessage(new PageMsg_SetInsidePortal(MSG_ROUTING_NONE, inside_portal));
+}
+
 void WebContentsImpl::DidChangeVisibleSecurityState() {
   if (delegate_)
     delegate_->VisibleSecurityStateChanged(this);
@@ -2162,6 +2174,23 @@
   return set;
 }
 
+std::set<RenderWidgetHostView*>
+WebContentsImpl::GetRenderWidgetHostViewsInWebContentsTree() {
+  std::set<RenderWidgetHostView*> result;
+  GetRenderWidgetHostViewsInWebContentsTree(result);
+  return result;
+}
+
+void WebContentsImpl::GetRenderWidgetHostViewsInWebContentsTree(
+    std::set<RenderWidgetHostView*>& result) {
+  std::set<RenderWidgetHostView*> views = GetRenderWidgetHostViewsInTree();
+  result.insert(views.begin(), views.end());
+  for (auto* inner_web_contents : GetInnerWebContents()) {
+    static_cast<WebContentsImpl*>(inner_web_contents)
+        ->GetRenderWidgetHostViewsInWebContentsTree(result);
+  }
+}
+
 void WebContentsImpl::Activate() {
   if (delegate_)
     delegate_->ActivateContents(this);
@@ -6178,6 +6207,7 @@
 }
 
 void WebContentsImpl::SetAsFocusedWebContentsIfNecessary() {
+  DCHECK(!portal());
   // Only change focus if we are not currently focused.
   WebContentsImpl* old_contents = GetFocusedWebContents();
   if (old_contents == this)
@@ -6206,6 +6236,7 @@
 
 void WebContentsImpl::SetFocusedFrame(FrameTreeNode* node,
                                       SiteInstance* source) {
+  DCHECK(!portal());
   frame_tree_.SetFocusedFrame(node, source);
 
   if (auto* inner_contents = node_.GetInnerWebContentsInFrame(node)) {
diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h
index 36d5b73..4859c122 100644
--- a/content/browser/web_contents/web_contents_impl.h
+++ b/content/browser/web_contents/web_contents_impl.h
@@ -1105,6 +1105,10 @@
   void set_portal(Portal* portal) { portal_ = portal; }
   Portal* portal() const { return portal_; }
 
+  // Sends a page message to notify every process in the frame tree if the
+  // web contents is a portal web contents.
+  void NotifyInsidePortal(bool inside_portal);
+
   // Notifies observers that AppCache was accessed. Public so AppCache code can
   // call this directly.
   void OnAppCacheAccessed(const GURL& manifest_url, bool blocked_by_policy);
@@ -1292,6 +1296,12 @@
   // all the unique RenderWidgetHostViews.
   std::set<RenderWidgetHostView*> GetRenderWidgetHostViewsInTree();
 
+  // Traverses all the WebContents in the WebContentsTree and creates a set of
+  // all the unique RenderWidgetHostViews.
+  std::set<RenderWidgetHostView*> GetRenderWidgetHostViewsInWebContentsTree();
+  void GetRenderWidgetHostViewsInWebContentsTree(
+      std::set<RenderWidgetHostView*>& result);
+
   // Called with the result of a DownloadImage() request.
   void OnDidDownloadImage(ImageDownloadCallback callback,
                           int id,
@@ -1384,9 +1394,15 @@
   // These functions are helpers in managing a hierarchy of WebContents
   // involved in rendering inner WebContents.
 
-  // Registers FrameSinkIds for all WebContents in the subtree of
-  // WebContentsTree, rooted at |contents|.
+  // The following functions register and unregister FrameSinkIds for all
+  // WebContents in the subtree of WebContentsTree rooted at |contents|. They
+  // are used when attaching/detaching an inner web contents. Frame sink ids are
+  // initially registered when a view is created, and they are registered with
+  // the outermost WebContents, which changes when attaching/detaching a
+  // WebContents so we need to unregister and reregister these ids for all
+  // persisting views in the WebContents.
   void RecursivelyRegisterFrameSinkIds();
+  void RecursivelyUnregisterFrameSinkIds();
 
   // When multiple WebContents are present within a tab or window, a single one
   // is focused and will route keyboard events in most cases to a RenderWidget
diff --git a/content/browser/web_package/mock_web_bundle_reader_factory.cc b/content/browser/web_package/mock_web_bundle_reader_factory.cc
index 54335d6..2f8f1d2 100644
--- a/content/browser/web_package/mock_web_bundle_reader_factory.cc
+++ b/content/browser/web_package/mock_web_bundle_reader_factory.cc
@@ -162,7 +162,10 @@
 class MockWebBundleReaderFactoryImpl final : public MockWebBundleReaderFactory {
  public:
   MockWebBundleReaderFactoryImpl() : MockWebBundleReaderFactory() {}
-  ~MockWebBundleReaderFactoryImpl() override = default;
+  ~MockWebBundleReaderFactoryImpl() override {
+    EXPECT_TRUE(!temp_dir_.IsValid() || temp_dir_.Delete())
+        << temp_dir_.GetPath();
+  }
 
   scoped_refptr<WebBundleReader> CreateReader(
       const std::string& test_file_data) override {
diff --git a/content/browser/web_package/web_bundle_blob_data_source.cc b/content/browser/web_package/web_bundle_blob_data_source.cc
index 6b3e423..da1670f 100644
--- a/content/browser/web_package/web_bundle_blob_data_source.cc
+++ b/content/browser/web_package/web_bundle_blob_data_source.cc
@@ -294,20 +294,21 @@
   return weak_factory_.GetWeakPtr();
 }
 
-void WebBundleBlobDataSource::BlobDataSourceCore::GetSize(
-    GetSizeCallback callback) {
-  DCHECK_CURRENTLY_ON(BrowserThread::IO);
-  std::move(callback).Run(content_length_);
-}
-
 void WebBundleBlobDataSource::BlobDataSourceCore::Read(uint64_t offset,
                                                        uint64_t length,
                                                        ReadCallback callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
-  if (!IsValidRange(offset, length, content_length_)) {
+  if (offset >= static_cast<uint64_t>(content_length_)) {
     std::move(callback).Run(base::nullopt);
     return;
   }
+  int64_t offset_plus_length;
+  if (!base::CheckAdd(offset, length).AssignIfValid(&offset_plus_length)) {
+    std::move(callback).Run(base::nullopt);
+    return;
+  }
+  if (offset_plus_length > content_length_)
+    length = content_length_ - offset;
   WaitForBlob(base::BindOnce(
       &WebBundleBlobDataSource::BlobDataSourceCore::OnBlobReadyForRead,
       base::Unretained(this), offset, length, std::move(callback)));
diff --git a/content/browser/web_package/web_bundle_blob_data_source.h b/content/browser/web_package/web_bundle_blob_data_source.h
index b4f2602b..328676ca 100644
--- a/content/browser/web_package/web_bundle_blob_data_source.h
+++ b/content/browser/web_package/web_bundle_blob_data_source.h
@@ -70,7 +70,6 @@
 
    private:
     // Implements data_decoder::mojom::BundleDataSource.
-    void GetSize(GetSizeCallback callback) override;
     void Read(uint64_t offset, uint64_t length, ReadCallback callback) override;
 
     void StreamingBlobDone(storage::BlobBuilderFromStream* builder,
diff --git a/content/browser/web_package/web_bundle_blob_data_source_unittest.cc b/content/browser/web_package/web_bundle_blob_data_source_unittest.cc
index d45496b..423f7f72 100644
--- a/content/browser/web_package/web_bundle_blob_data_source_unittest.cc
+++ b/content/browser/web_package/web_bundle_blob_data_source_unittest.cc
@@ -78,23 +78,6 @@
   DISALLOW_COPY_AND_ASSIGN(WebBundleBlobDataSourceTest);
 };
 
-TEST_F(WebBundleBlobDataSourceTest, GetSize) {
-  const std::string kData = "Test Data";
-  mojo::Remote<data_decoder::mojom::BundleDataSource> remote_source;
-  auto source = CreateTestDataSource(kData, &remote_source);
-
-  base::RunLoop run_loop;
-  uint64_t size_result = 0;
-  remote_source->GetSize(base::BindOnce(
-      [](base::OnceClosure closure, uint64_t* size_result, uint64_t size) {
-        *size_result = size;
-        std::move(closure).Run();
-      },
-      run_loop.QuitClosure(), &size_result));
-  run_loop.Run();
-  EXPECT_EQ(kData.size(), size_result);
-}
-
 TEST_F(WebBundleBlobDataSourceTest, Read) {
   const std::string kData = "Test Data";
   mojo::Remote<data_decoder::mojom::BundleDataSource> remote_source;
@@ -120,6 +103,30 @@
   EXPECT_EQ('t', (*read_result)[2]);
 }
 
+TEST_F(WebBundleBlobDataSourceTest, Read_EndOfSourceReached) {
+  const std::string kData = "Test Data";
+  mojo::Remote<data_decoder::mojom::BundleDataSource> remote_source;
+  auto source = CreateTestDataSource(kData, &remote_source);
+
+  base::RunLoop run_loop;
+  base::Optional<std::vector<uint8_t>> read_result;
+  remote_source->Read(
+      6, 100,
+      base::BindOnce(
+          [](base::OnceClosure closure,
+             base::Optional<std::vector<uint8_t>>* read_result,
+             const base::Optional<std::vector<uint8_t>>& result) {
+            *read_result = result;
+            std::move(closure).Run();
+          },
+          run_loop.QuitClosure(), &read_result));
+  run_loop.Run();
+  ASSERT_EQ(3u, read_result->size());
+  EXPECT_EQ('a', (*read_result)[0]);
+  EXPECT_EQ('t', (*read_result)[1]);
+  EXPECT_EQ('a', (*read_result)[2]);
+}
+
 TEST_F(WebBundleBlobDataSourceTest, Read_OutOfRangeError) {
   const std::string kData = "Test Data";
   mojo::Remote<data_decoder::mojom::BundleDataSource> remote_source;
@@ -128,7 +135,7 @@
   base::RunLoop run_loop;
   base::Optional<std::vector<uint8_t>> read_result;
   remote_source->Read(
-      1, 100,
+      10, 100,
       base::BindOnce(
           [](base::OnceClosure closure,
              base::Optional<std::vector<uint8_t>>* read_result,
diff --git a/content/browser/web_package/web_bundle_url_loader_factory_unittest.cc b/content/browser/web_package/web_bundle_url_loader_factory_unittest.cc
index 56cfa2d..3652830 100644
--- a/content/browser/web_package/web_bundle_url_loader_factory_unittest.cc
+++ b/content/browser/web_package/web_bundle_url_loader_factory_unittest.cc
@@ -66,6 +66,13 @@
     resource_request_.method = net::HttpRequestHeaders::kGetMethod;
   }
 
+  void TearDown() override {
+    // Shut down the loader factory and allow its cleanup tasks in the
+    // ThreadPool to run so that temp dirs can be deleted.
+    loader_factory_.reset();
+    task_environment_.RunUntilIdle();
+  }
+
   // This function creates a URLLoader with |resource_request_|, and simulates
   // a response for WebBundleReader::ReadResponse with |response| if it
   // is given. |response| can contain nullptr to simulate the case ReadResponse
diff --git a/content/browser/webauth/authenticator_impl_unittest.cc b/content/browser/webauth/authenticator_impl_unittest.cc
index b5290a5..3f695f1 100644
--- a/content/browser/webauth/authenticator_impl_unittest.cc
+++ b/content/browser/webauth/authenticator_impl_unittest.cc
@@ -38,7 +38,6 @@
 #include "content/public/common/content_client.h"
 #include "content/public/common/content_features.h"
 #include "content/public/test/browser_test_utils.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "content/test/test_render_frame_host.h"
 #include "device/base/features.h"
 #include "device/bluetooth/bluetooth_adapter_factory.h"
@@ -907,8 +906,6 @@
 
 // Verify behavior for various combinations of origins and RP IDs.
 TEST_F(AuthenticatorImplTest, AppIdExtensionValues) {
-  TestServiceManagerContext smc;
-
   for (const auto& test_case : kValidAppIdCases) {
     SCOPED_TRACE(std::string(test_case.origin) + " " +
                  std::string(test_case.claimed_authority));
@@ -1001,7 +998,6 @@
 
 // Requests originating from cryptotoken should only target U2F devices.
 TEST_F(AuthenticatorImplTest, CryptoTokenU2fOnly) {
-  TestServiceManagerContext smc;
   SimulateNavigation(GURL(kTestOrigin1));
   auto task_runner = base::MakeRefCounted<base::TestMockTimeTaskRunner>(
       base::Time::Now(), base::TimeTicks::Now());
@@ -1038,7 +1034,6 @@
 // Test that Cryptotoken requests should only be dispatched to USB
 // authenticators.
 TEST_F(AuthenticatorImplTest, CryptotokenUsbOnly) {
-  TestServiceManagerContext smc;
   SimulateNavigation(GURL(kTestOrigin1));
   auto task_runner = base::MakeRefCounted<base::TestMockTimeTaskRunner>(
       base::Time::Now(), base::TimeTicks::Now());
@@ -1090,7 +1085,6 @@
 
 // Requests originating from cryptotoken should only target U2F devices.
 TEST_F(AuthenticatorImplTest, AttestationPermitted) {
-  TestServiceManagerContext smc;
   SimulateNavigation(GURL(kTestOrigin1));
   auto task_runner = base::MakeRefCounted<base::TestMockTimeTaskRunner>(
       base::Time::Now(), base::TimeTicks::Now());
@@ -1289,8 +1283,6 @@
 }
 
 TEST_F(AuthenticatorImplTest, OversizedCredentialId) {
-  TestServiceManagerContext service_manager_context;
-
   // 255 is the maximum size of a U2F credential ID. We also test one greater
   // (256) to ensure that nothing untoward happens.
   const std::vector<size_t> kSizes = {255, 256};
@@ -1371,7 +1363,6 @@
   auto bluetooth_values = SetUpMockBluetooth();
   EnableFeature(features::kWebAuthCable);
 
-  TestServiceManagerContext service_manager_context;
   SimulateNavigation(GURL(kTestOrigin1));
 
   for (bool is_cable_device : {false, true}) {
@@ -1459,8 +1450,6 @@
 }
 
 TEST_F(AuthenticatorImplTest, MakeCredentialAlreadyRegistered) {
-  TestServiceManagerContext service_manager_context;
-
   SimulateNavigation(GURL(kTestOrigin1));
   mojo::Remote<blink::mojom::Authenticator> authenticator =
       ConnectToAuthenticator();
@@ -1482,8 +1471,6 @@
 }
 
 TEST_F(AuthenticatorImplTest, MakeCredentialPendingRequest) {
-  TestServiceManagerContext service_manager_context;
-
   SimulateNavigation(GURL(kTestOrigin1));
   mojo::Remote<blink::mojom::Authenticator> authenticator =
       ConnectToAuthenticator();
@@ -1511,8 +1498,6 @@
 }
 
 TEST_F(AuthenticatorImplTest, GetAssertionPendingRequest) {
-  TestServiceManagerContext service_manager_context;
-
   SimulateNavigation(GURL(kTestOrigin1));
   mojo::Remote<blink::mojom::Authenticator> authenticator =
       ConnectToAuthenticator();
@@ -1539,8 +1524,6 @@
 }
 
 TEST_F(AuthenticatorImplTest, NavigationDuringOperation) {
-  TestServiceManagerContext service_manager_context;
-
   SimulateNavigation(GURL(kTestOrigin1));
   mojo::Remote<blink::mojom::Authenticator> authenticator =
       ConnectToAuthenticator();
@@ -1567,8 +1550,6 @@
 }
 
 TEST_F(AuthenticatorImplTest, InvalidResponse) {
-  TestServiceManagerContext service_manager_context;
-
   virtual_device_factory_->mutable_state()->simulate_invalid_response = true;
   SimulateNavigation(GURL(kTestOrigin1));
 
@@ -1606,7 +1587,6 @@
 }
 
 TEST_F(AuthenticatorImplTest, Ctap2AssertionWithUnknownCredential) {
-  TestServiceManagerContext service_manager_context;
   SimulateNavigation(GURL(kTestOrigin1));
 
   for (bool return_immediate_invalid_credential_error : {false, true}) {
@@ -1643,8 +1623,6 @@
 }
 
 TEST_F(AuthenticatorImplTest, GetAssertionResponseWithAttestedCredentialData) {
-  TestServiceManagerContext service_manager_context;
-
   device::VirtualCtap2Device::Config config;
   config.return_attested_cred_data_in_get_assertion_response = true;
   virtual_device_factory_->SetCtap2Config(config);
@@ -1833,7 +1811,6 @@
   }
 
   void RunTestCases(const std::vector<TestCase>& tests) {
-    TestServiceManagerContext smc_;
     mojo::Remote<blink::mojom::Authenticator> authenticator =
         ConnectToAuthenticator();
 
@@ -2321,7 +2298,6 @@
 
 TEST_F(AuthenticatorContentBrowserClientTest,
        MakeCredentialRequestStartedCallback) {
-  TestServiceManagerContext smc;
   NavigateAndCommit(GURL(kTestOrigin1));
   mojo::Remote<blink::mojom::Authenticator> authenticator =
       ConnectToAuthenticator();
@@ -2338,7 +2314,6 @@
 
 TEST_F(AuthenticatorContentBrowserClientTest,
        GetAssertionRequestStartedCallback) {
-  TestServiceManagerContext smc;
   NavigateAndCommit(GURL(kTestOrigin1));
   mojo::Remote<blink::mojom::Authenticator> authenticator =
       ConnectToAuthenticator();
@@ -2381,8 +2356,6 @@
   }
 
   {
-    TestServiceManagerContext service_manager_context;
-
     PublicKeyCredentialRequestOptionsPtr options =
         GetTestPublicKeyCredentialRequestOptions();
 
@@ -2456,7 +2429,6 @@
 
 TEST_F(AuthenticatorContentBrowserClientTest,
        CryptotokenBypassesAttestationConsentPrompt) {
-  TestServiceManagerContext smc;
   SimulateNavigation(GURL(kTestOrigin1));
   auto task_runner = base::MakeRefCounted<base::TestMockTimeTaskRunner>(
       base::Time::Now(), base::TimeTicks::Now());
@@ -2491,7 +2463,6 @@
   // environment, Chrome's AuthenticatorRequestClientDelegate will show an
   // informative error and wait for the user to cancel the request.)
   EnableFeature(features::kWebAuthCable);
-  TestServiceManagerContext service_manager_context;
   SimulateNavigation(GURL(kTestOrigin1));
 
   PublicKeyCredentialRequestOptionsPtr options =
@@ -2767,7 +2738,6 @@
 }
 
 TEST_F(AuthenticatorImplTest, Transports) {
-  TestServiceManagerContext smc;
   NavigateAndCommit(GURL(kTestOrigin1));
   mojo::Remote<blink::mojom::Authenticator> authenticator =
       ConnectToAuthenticator();
@@ -2806,7 +2776,6 @@
 }
 
 TEST_F(AuthenticatorImplTest, ExtensionHMACSecret) {
-  TestServiceManagerContext smc;
   NavigateAndCommit(GURL(kTestOrigin1));
 
   for (const bool include_extension : {false, true}) {
@@ -2866,7 +2835,6 @@
 // lists get probed silently to work around authenticators rejecting exclude
 // lists exceeding a certain size.
 TEST_F(AuthenticatorImplTest, MakeCredentialWithLargeExcludeList) {
-  TestServiceManagerContext smc;
   NavigateAndCommit(GURL(kTestOrigin1));
 
   for (bool has_excluded_credential : {false, true}) {
@@ -2903,7 +2871,6 @@
 // lists get probed silently to work around authenticators rejecting allow lists
 // exceeding a certain size.
 TEST_F(AuthenticatorImplTest, GetAssertionWithLargeAllowList) {
-  TestServiceManagerContext smc;
   NavigateAndCommit(GURL(kTestOrigin1));
 
   for (bool has_allowed_credential : {false, true}) {
@@ -2940,7 +2907,6 @@
 // Tests that, regardless of batching support, GetAssertion requests with a
 // single allowed credential ID don't result in a silent probing request.
 TEST_F(AuthenticatorImplTest, GetAssertionSingleElementAllowListDoesNotProbe) {
-  TestServiceManagerContext smc;
   NavigateAndCommit(GURL(kTestOrigin1));
 
   for (bool supports_batching : {false, true}) {
@@ -2980,7 +2946,6 @@
 // Tests that an allow list that fits into a single batch does not result in a
 // silent probing request.
 TEST_F(AuthenticatorImplTest, GetAssertionSingleBatchListDoesNotProbe) {
-  TestServiceManagerContext smc;
   NavigateAndCommit(GURL(kTestOrigin1));
 
   for (bool allow_list_fits_single_batch : {false, true}) {
@@ -3022,7 +2987,6 @@
 }
 
 TEST_F(AuthenticatorImplTest, NoUnexpectedAuthenticatorExtensions) {
-  TestServiceManagerContext smc;
   NavigateAndCommit(GURL(kTestOrigin1));
 
   device::VirtualCtap2Device::Config config;
@@ -3058,7 +3022,6 @@
 // Tests that on an authenticator that supports batching, exclude lists that fit
 // into a single batch are sent without probing.
 TEST_F(AuthenticatorImplTest, ExcludeListBatching) {
-  TestServiceManagerContext smc;
   NavigateAndCommit(GURL(kTestOrigin1));
 
   for (bool authenticator_has_excluded_credential : {false, true}) {
@@ -3309,8 +3272,6 @@
                                                 "PIN set"};
 
 TEST_F(PINAuthenticatorImplTest, MakeCredential) {
-  TestServiceManagerContext smc;
-
   typedef int Expectations[3][3];
   // kExpectedWithUISupport enumerates the expected behaviour when the embedder
   // supports prompting the user for a PIN.
@@ -3412,7 +3373,6 @@
 }
 
 TEST_F(PINAuthenticatorImplTest, MakeCredentialSoftLock) {
-  TestServiceManagerContext smc;
   virtual_device_factory_->mutable_state()->pin = kTestPIN;
   virtual_device_factory_->mutable_state()->retries = 8;
 
@@ -3432,7 +3392,6 @@
 }
 
 TEST_F(PINAuthenticatorImplTest, MakeCredentialHardLock) {
-  TestServiceManagerContext smc;
   virtual_device_factory_->mutable_state()->pin = kTestPIN;
   virtual_device_factory_->mutable_state()->retries = 1;
 
@@ -3451,8 +3410,6 @@
 }
 
 TEST_F(PINAuthenticatorImplTest, GetAssertion) {
-  TestServiceManagerContext smc;
-
   typedef int Expectations[3][3];
   // kExpectedWithUISupport enumerates the expected behaviour when the embedder
   // supports prompting the user for a PIN.
@@ -3542,7 +3499,6 @@
 }
 
 TEST_F(PINAuthenticatorImplTest, GetAssertionSoftLock) {
-  TestServiceManagerContext smc;
   virtual_device_factory_->mutable_state()->pin = kTestPIN;
   virtual_device_factory_->mutable_state()->retries = 8;
 
@@ -3565,7 +3521,6 @@
 }
 
 TEST_F(PINAuthenticatorImplTest, GetAssertionHardLock) {
-  TestServiceManagerContext smc;
   virtual_device_factory_->mutable_state()->pin = kTestPIN;
   virtual_device_factory_->mutable_state()->retries = 1;
 
@@ -3604,7 +3559,6 @@
 };
 
 TEST_F(InternalUVAuthenticatorImplTest, MakeCredential) {
-  TestServiceManagerContext smc;
   mojo::Remote<blink::mojom::Authenticator> authenticator =
       ConnectToAuthenticator();
 
@@ -3645,7 +3599,6 @@
 }
 
 TEST_F(InternalUVAuthenticatorImplTest, MakeCredentialCryptotoken) {
-  TestServiceManagerContext smc;
   auto task_runner = base::MakeRefCounted<base::TestMockTimeTaskRunner>(
       base::Time::Now(), base::TimeTicks::Now());
   auto authenticator = ConstructAuthenticatorWithTimer(task_runner);
@@ -3675,7 +3628,6 @@
 }
 
 TEST_F(InternalUVAuthenticatorImplTest, GetAssertion) {
-  TestServiceManagerContext smc;
   mojo::Remote<blink::mojom::Authenticator> authenticator =
       ConnectToAuthenticator();
   ASSERT_TRUE(virtual_device_factory_->mutable_state()->InjectRegistration(
@@ -3722,7 +3674,6 @@
 }
 
 TEST_F(InternalUVAuthenticatorImplTest, GetAssertionCryptotoken) {
-  TestServiceManagerContext smc;
   mojo::Remote<blink::mojom::Authenticator> authenticator =
       ConnectToAuthenticator();
   url::AddStandardScheme("chrome-extension", url::SCHEME_WITH_HOST);
@@ -3895,7 +3846,6 @@
 };
 
 TEST_F(ResidentKeyAuthenticatorImplTest, MakeCredential) {
-  TestServiceManagerContext smc;
   mojo::Remote<blink::mojom::Authenticator> authenticator =
       ConnectToAuthenticator();
 
@@ -3934,7 +3884,6 @@
 }
 
 TEST_F(ResidentKeyAuthenticatorImplTest, StorageFull) {
-  TestServiceManagerContext smc;
   mojo::Remote<blink::mojom::Authenticator> authenticator =
       ConnectToAuthenticator();
 
@@ -3966,7 +3915,6 @@
       /*credential_id=*/{{4, 3, 2, 1}}, kTestRelyingPartyId,
       /*user_id=*/{{1, 2, 3, 4}}, base::nullopt, base::nullopt));
 
-  TestServiceManagerContext smc;
   mojo::Remote<blink::mojom::Authenticator> authenticator =
       ConnectToAuthenticator();
   TestGetAssertionCallback callback_receiver;
@@ -3986,7 +3934,6 @@
       /*credential_id=*/{{4, 3, 2, 1}}, kTestRelyingPartyId,
       /*user_id=*/{{1, 2, 3, 4}}, base::nullopt, "Test User"));
 
-  TestServiceManagerContext smc;
   mojo::Remote<blink::mojom::Authenticator> authenticator =
       ConnectToAuthenticator();
   TestGetAssertionCallback callback_receiver;
@@ -4008,7 +3955,6 @@
       /*credential_id=*/{{4, 3, 2, 2}}, kTestRelyingPartyId,
       /*user_id=*/{{5, 6, 7, 8}}, "test2@example.com", "Test User 2"));
 
-  TestServiceManagerContext smc;
   mojo::Remote<blink::mojom::Authenticator> authenticator =
       ConnectToAuthenticator();
   TestGetAssertionCallback callback_receiver;
@@ -4035,7 +3981,6 @@
       /*credential_id=*/{{4, 3, 2, 1}}, kTestRelyingPartyId,
       /*user_id=*/{{1, 2, 3, 4}}, base::nullopt, base::nullopt));
 
-  TestServiceManagerContext smc;
   mojo::Remote<blink::mojom::Authenticator> authenticator =
       ConnectToAuthenticator();
   TestGetAssertionCallback callback_receiver;
@@ -4068,7 +4013,6 @@
 }
 
 TEST_F(ResidentKeyAuthenticatorImplTest, CredProtectRegistration) {
-  TestServiceManagerContext smc;
   mojo::Remote<blink::mojom::Authenticator> authenticator =
       ConnectToAuthenticator();
 
@@ -4223,7 +4167,6 @@
       ->registrations.begin()
       ->second.protection = device::CredProtect::kUVRequired;
 
-  TestServiceManagerContext smc;
   mojo::Remote<blink::mojom::Authenticator> authenticator =
       ConnectToAuthenticator();
   TestGetAssertionCallback callback_receiver;
@@ -4252,7 +4195,6 @@
       /*credential_id=*/{{4, 3, 2, 1}}, kTestRelyingPartyId,
       /*user_id=*/{{1, 2, 3, 4}}, base::nullopt, base::nullopt));
 
-  TestServiceManagerContext smc;
   mojo::Remote<blink::mojom::Authenticator> authenticator =
       ConnectToAuthenticator();
   TestGetAssertionCallback callback_receiver;
@@ -4276,7 +4218,6 @@
 TEST_F(ResidentKeyAuthenticatorImplTest, WinCredProtectApiVersion) {
   // The canned response returned by the Windows API fake is for acme.com.
   NavigateAndCommit(GURL("https://acme.com"));
-  TestServiceManagerContext smc;
   for (const bool supports_cred_protect : {false, true}) {
     SCOPED_TRACE(testing::Message()
                  << "supports_cred_protect: " << supports_cred_protect);
@@ -4332,7 +4273,6 @@
       kTestRelyingPartyId,
       /*user_id=*/{{2}}, base::nullopt, base::nullopt));
 
-  TestServiceManagerContext smc;
   mojo::Remote<blink::mojom::Authenticator> authenticator =
       ConnectToAuthenticator();
   TestGetAssertionCallback callback_receiver;
diff --git a/content/browser/webrtc/webrtc_video_capture_service_browsertest.cc b/content/browser/webrtc/webrtc_video_capture_service_browsertest.cc
index 2f3851c..dc7e4532 100644
--- a/content/browser/webrtc/webrtc_video_capture_service_browsertest.cc
+++ b/content/browser/webrtc/webrtc_video_capture_service_browsertest.cc
@@ -510,7 +510,7 @@
   }
 
   base::Thread virtual_device_thread_;
-  scoped_refptr<base::TaskRunner> main_task_runner_;
+  scoped_refptr<base::SequencedTaskRunner> main_task_runner_;
 
  private:
   base::TimeDelta CalculateTimeSinceFirstInvocation() {
diff --git a/content/browser/webrtc/webrtc_video_capture_shared_device_browsertest.cc b/content/browser/webrtc/webrtc_video_capture_shared_device_browsertest.cc
index 930ea54..538b6a4 100644
--- a/content/browser/webrtc/webrtc_video_capture_shared_device_browsertest.cc
+++ b/content/browser/webrtc/webrtc_video_capture_shared_device_browsertest.cc
@@ -131,7 +131,7 @@
             subscriber_.InitWithNewPipeAndPassReceiver());
   }
 
-  scoped_refptr<base::TaskRunner> main_task_runner_;
+  scoped_refptr<base::SequencedTaskRunner> main_task_runner_;
   std::unique_ptr<video_capture::MockVideoFrameHandler>
       mock_video_frame_handler_;
 
diff --git a/content/browser/worker_host/shared_worker_host.cc b/content/browser/worker_host/shared_worker_host.cc
index a1c77db..09a620ef 100644
--- a/content/browser/worker_host/shared_worker_host.cc
+++ b/content/browser/worker_host/shared_worker_host.cc
@@ -14,6 +14,7 @@
 #include "base/unguessable_token.h"
 #include "content/browser/appcache/appcache_navigation_handle.h"
 #include "content/browser/devtools/shared_worker_devtools_manager.h"
+#include "content/browser/frame_host/render_frame_host_impl.h"
 #include "content/browser/interface_provider_filtering.h"
 #include "content/browser/service_worker/service_worker_navigation_handle.h"
 #include "content/browser/service_worker/service_worker_object_host.h"
@@ -442,6 +443,17 @@
   service_worker_handle_ = std::move(service_worker_handle);
 }
 
+void SharedWorkerHost::PruneNonExistentClients() {
+  DCHECK(!started_);
+
+  // It isn't necessary to send a notification to the removed clients since they
+  // are about to be destroyed anyway.
+  clients_.remove_if([](const ClientInfo& client_info) {
+    return !RenderFrameHostImpl::FromID(client_info.client_process_id,
+                                        client_info.frame_id);
+  });
+}
+
 bool SharedWorkerHost::HasClients() const {
   return !clients_.empty();
 }
diff --git a/content/browser/worker_host/shared_worker_host.h b/content/browser/worker_host/shared_worker_host.h
index d858232..dbc94c8 100644
--- a/content/browser/worker_host/shared_worker_host.h
+++ b/content/browser/worker_host/shared_worker_host.h
@@ -115,6 +115,10 @@
   void SetServiceWorkerHandle(
       std::unique_ptr<ServiceWorkerNavigationHandle> service_worker_handle);
 
+  // Removes all clients whose RenderFrameHost has been destroyed before the
+  // shared worker was started.
+  void PruneNonExistentClients();
+
   // Returns true if this worker is connected to at least one client.
   bool HasClients() const;
 
diff --git a/content/browser/worker_host/shared_worker_service_impl.cc b/content/browser/worker_host/shared_worker_service_impl.cc
index 196019e..74fd9dc 100644
--- a/content/browser/worker_host/shared_worker_service_impl.cc
+++ b/content/browser/worker_host/shared_worker_service_impl.cc
@@ -357,6 +357,7 @@
   // CreateWorker() and StartWorker() calls. Doing so avoids starting a shared
   // worker and immediately stopping it because its sole client is already being
   // torn down.
+  host->PruneNonExistentClients();
   if (!host->HasClients()) {
     DestroyHost(host.get());
     return;
diff --git a/content/browser/worker_host/worker_script_fetch_initiator.cc b/content/browser/worker_host/worker_script_fetch_initiator.cc
index c25a3d2c..a40310c 100644
--- a/content/browser/worker_host/worker_script_fetch_initiator.cc
+++ b/content/browser/worker_host/worker_script_fetch_initiator.cc
@@ -120,7 +120,7 @@
 
   resource_request = std::make_unique<network::ResourceRequest>();
   resource_request->url = script_url;
-  resource_request->site_for_cookies = script_url;
+  resource_request->site_for_cookies = net::SiteForCookies::FromUrl(script_url);
   resource_request->trusted_params = network::ResourceRequest::TrustedParams();
   resource_request->trusted_params->network_isolation_key =
       trusted_network_isolation_key;
diff --git a/content/child/BUILD.gn b/content/child/BUILD.gn
index 218d0b4..46e72e5 100644
--- a/content/child/BUILD.gn
+++ b/content/child/BUILD.gn
@@ -110,7 +110,6 @@
     "//net",
     "//services/device/public/cpp:device_features",
     "//services/device/public/cpp/power_monitor",
-    "//services/device/public/mojom:constants",
     "//services/resource_coordinator/public/cpp/memory_instrumentation",
     "//services/service_manager/public/cpp",
     "//services/service_manager/public/mojom",
diff --git a/content/common/background_fetch/background_fetch_types.cc b/content/common/background_fetch/background_fetch_types.cc
index b8df93a0..ca509f6 100644
--- a/content/common/background_fetch/background_fetch_types.cc
+++ b/content/common/background_fetch/background_fetch_types.cc
@@ -37,7 +37,7 @@
       response->cors_exposed_header_names,
       CloneSerializedBlob(response->side_data_blob),
       CloneSerializedBlob(response->side_data_blob_for_cache_put),
-      response->content_security_policy.Clone(),
+      mojo::Clone(response->content_security_policy),
       response->loaded_with_credentials);
 }
 
diff --git a/content/common/input/web_touch_event_traits.h b/content/common/input/web_touch_event_traits.h
index ff27930..08a46cd 100644
--- a/content/common/input/web_touch_event_traits.h
+++ b/content/common/input/web_touch_event_traits.h
@@ -7,7 +7,7 @@
 
 #include "base/time/time.h"
 #include "content/common/content_export.h"
-#include "third_party/blink/public/platform/web_input_event.h"
+#include "third_party/blink/public/platform/web_touch_event.h"
 
 namespace blink {
 class WebTouchEvent;
diff --git a/content/common/page_messages.h b/content/common/page_messages.h
index 50e77ced..bab308c3 100644
--- a/content/common/page_messages.h
+++ b/content/common/page_messages.h
@@ -54,6 +54,10 @@
 // Sends updated preferences to the renderer.
 IPC_MESSAGE_ROUTED1(PageMsg_SetRendererPrefs, blink::mojom::RendererPreferences)
 
+// Sent to all renderers when a portal web contents is activated or if a
+// web contents is adopted as a portal.
+IPC_MESSAGE_ROUTED1(PageMsg_SetInsidePortal, bool /* inside_portal */)
+
 // -----------------------------------------------------------------------------
 // Messages sent from the renderer to the browser.
 
diff --git a/content/common/service_worker/service_worker_loader_helpers.cc b/content/common/service_worker/service_worker_loader_helpers.cc
index 83f2b89..66c3534 100644
--- a/content/common/service_worker/service_worker_loader_helpers.cc
+++ b/content/common/service_worker/service_worker_loader_helpers.cc
@@ -109,7 +109,8 @@
     out_head->cache_storage_cache_name.clear();
   out_head->cors_exposed_header_names = response.cors_exposed_header_names;
   out_head->did_service_worker_navigation_preload = false;
-  out_head->content_security_policy = response.content_security_policy.Clone();
+  out_head->content_security_policy =
+      mojo::Clone(response.content_security_policy);
 }
 
 // static
diff --git a/content/public/android/BUILD.gn b/content/public/android/BUILD.gn
index 6171bb0..f72cb567 100644
--- a/content/public/android/BUILD.gn
+++ b/content/public/android/BUILD.gn
@@ -96,13 +96,13 @@
 
   srcjar_deps = [
     ":common_aidl",
-    ":generate_sandboxed_service_srcjar",
-    ":is_ready_to_pay_service_aidl",
     ":content_public_android_java_enums_srcjar",
     ":content_public_android_java_switches_srcjar",
+    ":generate_sandboxed_service_srcjar",
+    ":is_ready_to_pay_service_aidl",
     "//content/browser/accessibility:content_browser_accessibility_java_enums_srcjar",
-    "//ui/touch_selection:ui_touch_selection_enums_srcjar",
     "//ui/touch_selection:ui_touch_handle_orientation_srcjar",
+    "//ui/touch_selection:ui_touch_selection_enums_srcjar",
   ]
 
   java_files = [
diff --git a/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java b/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java
index c59b133..c26722a 100644
--- a/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java
+++ b/content/public/android/java/src/org/chromium/content/browser/accessibility/WebContentsAccessibilityImpl.java
@@ -67,7 +67,6 @@
     private static final String ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE =
             "ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE";
     private static final int WINDOW_CONTENT_CHANGED_DELAY_MS = 500;
-    private static final int SCROLLED_TO_ANCHOR_DELAY_MS = 500;
 
     // Constants from AccessibilityNodeInfo defined in the M SDK.
     // Source: https://developer.android.com/reference/android/R.id.html
@@ -102,7 +101,6 @@
     protected int mAccessibilityFocusId;
     protected int mSelectionNodeId;
     private Runnable mSendWindowContentChangedRunnable;
-    private Runnable mScrolledToAnchorRunnable;
     private View mAutofillPopupView;
     private CaptioningController mCaptioningController;
 
@@ -1058,27 +1056,8 @@
     }
 
     @CalledByNative
-    private void handleScrolledToAnchor(final int id) {
-        // "Scrolled to anchor" means that the user followed a same-page link;
-        // the id here is of the element that was scrolled into view, and that
-        // should be where accessibility focus lands.
-        //
-        // However, in practice there's a race condition because following a
-        // same-page link often results in a focus change from the same-page link
-        // that was focused previously.
-        //
-        // As a result, it works better to move accessibility focus to the new
-        // location after a short delay, after the focus change.
-        if (mScrolledToAnchorRunnable != null) return;
-        mScrolledToAnchorRunnable = new Runnable() {
-            @Override
-            public void run() {
-                moveAccessibilityFocusToId(id);
-                mScrolledToAnchorRunnable = null;
-            }
-        };
-
-        mView.postDelayed(mScrolledToAnchorRunnable, SCROLLED_TO_ANCHOR_DELAY_MS);
+    private void handleScrolledToAnchor(int id) {
+        moveAccessibilityFocusToId(id);
     }
 
     @CalledByNative
diff --git a/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java b/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java
index 07e39327..88f42a3 100644
--- a/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java
+++ b/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java
@@ -1240,10 +1240,12 @@
     @CalledByNative
     void onSelectionEvent(
             @SelectionEventType int eventType, int left, int top, int right, int bottom) {
-        // The selection action mode requires that the selection coordinates to form a non-empty
-        // rect.
-        assert left < right;
-        assert top < bottom;
+        // Ensure the provided selection coordinates form a non-empty rect, as required by
+        // the selection action mode.
+        // NOTE: the native side ensures the rectangle is not empty, but that's done using floating
+        // point, which means it's entirely possible for this code to receive an empty rect.
+        if (left == right) ++right;
+        if (top == bottom) ++bottom;
 
         switch (eventType) {
             case SelectionEventType.SELECTION_HANDLES_SHOWN:
diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc
index 53c37587..6b11e44 100644
--- a/content/public/browser/content_browser_client.cc
+++ b/content/public/browser/content_browser_client.cc
@@ -11,6 +11,7 @@
 #include "base/guid.h"
 #include "base/logging.h"
 #include "base/no_destructor.h"
+#include "base/sequenced_task_runner.h"
 #include "build/build_config.h"
 #include "content/public/browser/authenticator_request_client_delegate.h"
 #include "content/public/browser/browser_accessibility_state.h"
@@ -56,7 +57,7 @@
 
 void ContentBrowserClient::PostAfterStartupTask(
     const base::Location& from_here,
-    const scoped_refptr<base::TaskRunner>& task_runner,
+    const scoped_refptr<base::SequencedTaskRunner>& task_runner,
     base::OnceClosure task) {
   task_runner->PostTask(from_here, std::move(task));
 }
diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h
index db0836db..272fa03d 100644
--- a/content/public/browser/content_browser_client.h
+++ b/content/public/browser/content_browser_client.h
@@ -69,6 +69,7 @@
 namespace base {
 class CommandLine;
 class FilePath;
+class SequencedTaskRunner;
 }  // namespace base
 
 namespace blink {
@@ -231,7 +232,7 @@
   // Note: see related BrowserThread::PostAfterStartupTask.
   virtual void PostAfterStartupTask(
       const base::Location& from_here,
-      const scoped_refptr<base::TaskRunner>& task_runner,
+      const scoped_refptr<base::SequencedTaskRunner>& task_runner,
       base::OnceClosure task);
 
   // Allows the embedder to indicate whether it considers startup to be
diff --git a/content/public/browser/render_widget_host_view.h b/content/public/browser/render_widget_host_view.h
index a820a19..6b0d290 100644
--- a/content/public/browser/render_widget_host_view.h
+++ b/content/public/browser/render_widget_host_view.h
@@ -19,6 +19,7 @@
 #include "ui/gfx/range/range.h"
 
 namespace gfx {
+class Insets;
 class Point;
 class Rect;
 class Size;
diff --git a/content/public/browser/site_instance.h b/content/public/browser/site_instance.h
index a718f531..e3095f3 100644
--- a/content/public/browser/site_instance.h
+++ b/content/public/browser/site_instance.h
@@ -173,6 +173,13 @@
       content::BrowserContext* browser_context,
       const GURL& url);
 
+  // Factory method to create a SiteInstance for a <webview> guest in a new
+  // BrowsingInstance.
+  // TODO(734722): Replace this method once SecurityPrincipal is available.
+  static scoped_refptr<SiteInstance> CreateForGuest(
+      content::BrowserContext* browser_context,
+      const GURL& guest_site_url);
+
   // Determine if a URL should "use up" a site.  URLs such as about:blank or
   // chrome-native:// leave the site unassigned.
   static bool ShouldAssignSiteForURL(const GURL& url);
diff --git a/content/public/browser/web_ui_controller.h b/content/public/browser/web_ui_controller.h
index fcab8862..bf308f1 100644
--- a/content/public/browser/web_ui_controller.h
+++ b/content/public/browser/web_ui_controller.h
@@ -68,7 +68,7 @@
 // Type for the subclass.
 #define WEB_UI_CONTROLLER_TYPE_DECL()            \
   static constexpr int kWebUIControllerType = 0; \
-  Type GetType() override final;                 \
+  Type GetType() final;                          \
   friend class content::WebUIController
 
 // This macro instantiates the static variable declared by the previous macro.
diff --git a/content/public/test/browser_test_utils.cc b/content/public/test/browser_test_utils.cc
index 98708c6..701f1c45 100644
--- a/content/public/test/browser_test_utils.cc
+++ b/content/public/test/browser_test_utils.cc
@@ -3241,7 +3241,7 @@
   request->render_frame_id = render_frame_id;
   request->load_flags = load_flags;
   // Allow access to SameSite cookies in tests.
-  request->site_for_cookies = url;
+  request->site_for_cookies = net::SiteForCookies::FromUrl(url);
 
   content::SimpleURLLoaderTestHelper simple_loader_helper;
   std::unique_ptr<network::SimpleURLLoader> simple_loader =
diff --git a/content/public/test/test_service_manager_context.cc b/content/public/test/test_service_manager_context.cc
deleted file mode 100644
index c7d2116..0000000
--- a/content/public/test/test_service_manager_context.cc
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/public/test/test_service_manager_context.h"
-
-#include "base/task/post_task.h"
-#include "content/browser/child_process_launcher.h"
-#include "content/browser/service_manager/service_manager_context.h"
-#include "content/public/browser/browser_task_traits.h"
-#include "content/public/common/service_manager_connection.h"
-
-namespace content {
-
-TestServiceManagerContext::TestServiceManagerContext() {
-  context_.reset(new ServiceManagerContext(
-      base::CreateSingleThreadTaskRunner({BrowserThread::IO})));
-  auto* system_connection = ServiceManagerConnection::GetForProcess();
-  system_connection->Start();
-}
-
-TestServiceManagerContext::~TestServiceManagerContext() {
-  ServiceManagerConnection::DestroyForProcess();
-}
-
-}  // namespace content
diff --git a/content/public/test/test_service_manager_context.h b/content/public/test/test_service_manager_context.h
deleted file mode 100644
index 01a3e9d7..0000000
--- a/content/public/test/test_service_manager_context.h
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CONTENT_PUBLIC_TEST_TEST_SERVICE_MANAGER_CONTEXT_H_
-#define CONTENT_PUBLIC_TEST_TEST_SERVICE_MANAGER_CONTEXT_H_
-
-#include <memory>
-
-#include "base/macros.h"
-
-namespace content {
-
-class ServiceManagerContext;
-
-// Helper class to expose the internal content::ServiceManagerContext type to
-// non-browser unit tests which need to construct one.
-class TestServiceManagerContext {
- public:
-  TestServiceManagerContext();
-  ~TestServiceManagerContext();
-
- private:
-  std::unique_ptr<ServiceManagerContext> context_;
-
-  DISALLOW_COPY_AND_ASSIGN(TestServiceManagerContext);
-};
-
-}  // namespace content
-
-#endif  // CONTENT_PUBLIC_TEST_TEST_SERVICE_MANAGER_CONTEXT_H_
diff --git a/content/public/test/test_utils.cc b/content/public/test/test_utils.cc
index 3b7ed8e..c1902b8 100644
--- a/content/public/test/test_utils.cc
+++ b/content/public/test/test_utils.cc
@@ -39,7 +39,6 @@
 #include "content/public/common/process_type.h"
 #include "content/public/common/url_constants.h"
 #include "content/public/test/test_launcher.h"
-#include "content/public/test/test_service_manager_context.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/blink/public/common/fetch/fetch_api_request_headers_map.h"
 #include "third_party/blink/public/mojom/fetch/fetch_api_request.mojom.h"
@@ -323,8 +322,7 @@
   run_loop_.Quit();
 }
 
-InProcessUtilityThreadHelper::InProcessUtilityThreadHelper()
-    : shell_context_(new TestServiceManagerContext) {
+InProcessUtilityThreadHelper::InProcessUtilityThreadHelper() {
   RenderProcessHost::SetRunRendererInProcess(true);
 }
 
diff --git a/content/public/test/test_utils.h b/content/public/test/test_utils.h
index bbeb62a..3e0b9865 100644
--- a/content/public/test/test_utils.h
+++ b/content/public/test/test_utils.h
@@ -39,7 +39,6 @@
 namespace content {
 
 class RenderFrameHost;
-class TestServiceManagerContext;
 
 // Create an blink::mojom::FetchAPIRequestPtr with given fields.
 blink::mojom::FetchAPIRequestPtr CreateFetchAPIRequest(
@@ -292,7 +291,6 @@
       const ChildProcessData& data) override;
 
   base::OnceClosure quit_closure_;
-  std::unique_ptr<TestServiceManagerContext> shell_context_;
   base::WeakPtrFactory<InProcessUtilityThreadHelper> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(InProcessUtilityThreadHelper);
diff --git a/content/renderer/BUILD.gn b/content/renderer/BUILD.gn
index 03c8e863..cd22029 100644
--- a/content/renderer/BUILD.gn
+++ b/content/renderer/BUILD.gn
@@ -379,7 +379,6 @@
     "//services/audio/public/mojom",
     "//services/device/public/cpp/generic_sensor",
     "//services/device/public/mojom",
-    "//services/device/public/mojom:constants",
     "//services/device/public/mojom:usb",
     "//services/image_annotation/public/cpp:cpp",
     "//services/image_annotation/public/mojom:mojom",
diff --git a/content/renderer/accessibility/blink_ax_tree_source.cc b/content/renderer/accessibility/blink_ax_tree_source.cc
index 58c498b3..c771eda 100644
--- a/content/renderer/accessibility/blink_ax_tree_source.cc
+++ b/content/renderer/accessibility/blink_ax_tree_source.cc
@@ -859,6 +859,7 @@
       dst->AddIntAttribute(ax::mojom::IntAttribute::kHierarchicalLevel,
                            src.HeadingLevel());
     } else if ((dst->role == ax::mojom::Role::kTreeItem ||
+                dst->role == ax::mojom::Role::kComment ||
                 dst->role == ax::mojom::Role::kListItem ||
                 dst->role == ax::mojom::Role::kRow) &&
                src.HierarchicalLevel()) {
diff --git a/content/renderer/categorized_worker_pool.cc b/content/renderer/categorized_worker_pool.cc
index c5e02ef..7e010566 100644
--- a/content/renderer/categorized_worker_pool.cc
+++ b/content/renderer/categorized_worker_pool.cc
@@ -80,7 +80,6 @@
                        base::TimeDelta delay) override {
     return PostNonNestableDelayedTask(from_here, std::move(task), delay);
   }
-  bool RunsTasksInCurrentSequence() const override { return true; }
 
   // Overridden from base::SequencedTaskRunner:
   bool PostNonNestableDelayedTask(const base::Location& from_here,
@@ -121,6 +120,8 @@
     return true;
   }
 
+  bool RunsTasksInCurrentSequence() const override { return true; }
+
  private:
   ~CategorizedWorkerPoolSequencedTaskRunner() override {
     {
@@ -257,10 +258,6 @@
   return true;
 }
 
-bool CategorizedWorkerPool::RunsTasksInCurrentSequence() const {
-  return true;
-}
-
 void CategorizedWorkerPool::Run(
     const std::vector<cc::TaskCategory>& categories,
     base::ConditionVariable* has_ready_to_run_tasks_cv) {
diff --git a/content/renderer/categorized_worker_pool.h b/content/renderer/categorized_worker_pool.h
index 768786c..24c1b2a0 100644
--- a/content/renderer/categorized_worker_pool.h
+++ b/content/renderer/categorized_worker_pool.h
@@ -41,7 +41,6 @@
   bool PostDelayedTask(const base::Location& from_here,
                        base::OnceClosure task,
                        base::TimeDelta delay) override;
-  bool RunsTasksInCurrentSequence() const override;
 
   // Overridden from cc::TaskGraphRunner:
   cc::NamespaceToken GenerateNamespaceToken() override;
diff --git a/content/renderer/loader/resource_dispatcher_unittest.cc b/content/renderer/loader/resource_dispatcher_unittest.cc
index 033d9041..2bad8890 100644
--- a/content/renderer/loader/resource_dispatcher_unittest.cc
+++ b/content/renderer/loader/resource_dispatcher_unittest.cc
@@ -118,7 +118,8 @@
 
     request->method = "GET";
     request->url = GURL(kTestPageUrl);
-    request->site_for_cookies = GURL(kTestPageUrl);
+    request->site_for_cookies =
+        net::SiteForCookies::FromUrl(GURL(kTestPageUrl));
     request->referrer_policy = Referrer::GetDefaultReferrerPolicy();
     request->resource_type = static_cast<int>(ResourceType::kSubResource);
     request->priority = net::LOW;
diff --git a/content/renderer/loader/web_url_loader_impl.cc b/content/renderer/loader/web_url_loader_impl.cc
index 18b15fc..3372c38 100644
--- a/content/renderer/loader/web_url_loader_impl.cc
+++ b/content/renderer/loader/web_url_loader_impl.cc
@@ -311,13 +311,11 @@
         extra_data->allow_cross_origin_auth_prompt();
   }
 
-  if (first_party.is_valid() &&  // empty site_for_cookies means cross-site.
-      net::registry_controlled_domains::SameDomainOrHost(
-          first_party, request_url,
-          net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES)) {
+  if (first_party.IsFirstParty(request_url)) {
     // If the first party is secure but the subresource is not, this is
     // mixed-content. Do not allow the image.
-    if (!allow_cross_origin_auth_prompt && IsOriginSecure(first_party) &&
+    if (!allow_cross_origin_auth_prompt &&
+        IsOriginSecure(first_party.RepresentativeUrl()) &&
         !IsOriginSecure(request_url)) {
       return true;
     }
@@ -632,7 +630,8 @@
 
   resource_request->method = method;
   resource_request->url = url_;
-  resource_request->site_for_cookies = request.SiteForCookies();
+  resource_request->site_for_cookies =
+      net::SiteForCookies::FromUrl(request.SiteForCookies());
   resource_request->upgrade_if_insecure = request.UpgradeIfInsecure();
   resource_request->is_revalidating = request.IsRevalidating();
   if (!request.RequestorOrigin().IsNull()) {
@@ -854,7 +853,7 @@
 
   url_ = WebURL(redirect_info.new_url);
   return client_->WillFollowRedirect(
-      url_, redirect_info.new_site_for_cookies,
+      url_, redirect_info.new_site_for_cookies.RepresentativeUrl(),
       WebString::FromUTF8(redirect_info.new_referrer),
       Referrer::NetReferrerPolicyToBlinkReferrerPolicy(
           redirect_info.new_referrer_policy),
diff --git a/content/renderer/loader/web_url_loader_impl_unittest.cc b/content/renderer/loader/web_url_loader_impl_unittest.cc
index 2c2a620..ee44eaf 100644
--- a/content/renderer/loader/web_url_loader_impl_unittest.cc
+++ b/content/renderer/loader/web_url_loader_impl_unittest.cc
@@ -324,7 +324,8 @@
     redirect_info.status_code = 302;
     redirect_info.new_method = "GET";
     redirect_info.new_url = GURL(kTestURL);
-    redirect_info.new_site_for_cookies = GURL(kTestURL);
+    redirect_info.new_site_for_cookies =
+        net::SiteForCookies::FromUrl(GURL(kTestURL));
     peer()->OnReceivedRedirect(redirect_info,
                                network::mojom::URLResponseHead::New());
     EXPECT_TRUE(client()->did_receive_redirect());
@@ -336,7 +337,8 @@
     redirect_info.status_code = 302;
     redirect_info.new_method = "GET";
     redirect_info.new_url = GURL(kTestHTTPSURL);
-    redirect_info.new_site_for_cookies = GURL(kTestHTTPSURL);
+    redirect_info.new_site_for_cookies =
+        net::SiteForCookies::FromUrl(GURL(kTestHTTPSURL));
     peer()->OnReceivedRedirect(redirect_info,
                                network::mojom::URLResponseHead::New());
     EXPECT_TRUE(client()->did_receive_redirect());
diff --git a/content/renderer/render_frame_proxy.cc b/content/renderer/render_frame_proxy.cc
index 79329b1..623cb11 100644
--- a/content/renderer/render_frame_proxy.cc
+++ b/content/renderer/render_frame_proxy.cc
@@ -341,7 +341,7 @@
     web_frame_->UpdateUserActivationState(
         blink::UserActivationUpdateType::kNotifyActivation);
   }
-  web_frame_->SetHasReceivedUserGestureBeforeNavigation(
+  web_frame_->SetHadStickyUserActivationBeforeNavigation(
       state.has_received_user_gesture_before_nav);
 
   web_frame_->ResetReplicatedContentSecurityPolicy();
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index 4caa5a8b..a85a854 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -1275,6 +1275,7 @@
     IPC_MESSAGE_HANDLER(PageMsg_UpdateTextAutosizerPageInfoForRemoteMainFrames,
                         OnTextAutosizerPageInfoChanged)
     IPC_MESSAGE_HANDLER(PageMsg_SetRendererPrefs, OnSetRendererPrefs)
+    IPC_MESSAGE_HANDLER(PageMsg_SetInsidePortal, OnSetInsidePortal)
 
     // Adding a new message? Add platform independent ones first, then put the
     // platform specific ones at the end.
@@ -2011,6 +2012,10 @@
     webview()->SetTextAutosizePageInfo(page_info);
 }
 
+void RenderViewImpl::OnSetInsidePortal(bool inside_portal) {
+  webview()->SetInsidePortal(inside_portal);
+}
+
 void RenderViewImpl::SetFocus(bool enable) {
   // This is only called from RenderFrameProxy.
   CHECK(!webview()->MainFrame()->IsWebLocalFrame());
diff --git a/content/renderer/render_view_impl.h b/content/renderer/render_view_impl.h
index 8799409..e97bd2c9 100644
--- a/content/renderer/render_view_impl.h
+++ b/content/renderer/render_view_impl.h
@@ -464,6 +464,7 @@
   void RestorePageFromBackForwardCache(base::TimeTicks navigation_start);
   void OnTextAutosizerPageInfoChanged(
       const blink::WebTextAutosizerPageInfo& page_info);
+  void OnSetInsidePortal(bool inside_portal);
 
   // Adding a new message handler? Please add it in alphabetical order above
   // and put it in the same position in the .cc file.
diff --git a/content/renderer/worker/worker_thread_registry.cc b/content/renderer/worker/worker_thread_registry.cc
index 97cb93c..04ee7c6 100644
--- a/content/renderer/worker/worker_thread_registry.cc
+++ b/content/renderer/worker/worker_thread_registry.cc
@@ -42,7 +42,7 @@
     g_worker_data_tls = LAZY_INSTANCE_INITIALIZER;
 
 // A task-runner that refuses to run any tasks.
-class DoNothingTaskRunner : public base::TaskRunner {
+class DoNothingTaskRunner : public base::SequencedTaskRunner {
  public:
   DoNothingTaskRunner() {}
 
@@ -55,6 +55,12 @@
     return false;
   }
 
+  bool PostNonNestableDelayedTask(const base::Location& from_here,
+                                  base::OnceClosure task,
+                                  base::TimeDelta delay) override {
+    return false;
+  }
+
   bool RunsTasksInCurrentSequence() const override { return false; }
 };
 
@@ -131,7 +137,8 @@
   g_worker_data_tls.Pointer()->Set(nullptr);
 }
 
-base::TaskRunner* WorkerThreadRegistry::GetTaskRunnerFor(int worker_id) {
+base::SequencedTaskRunner* WorkerThreadRegistry::GetTaskRunnerFor(
+    int worker_id) {
   base::AutoLock locker(task_runner_map_lock_);
   return base::Contains(task_runner_map_, worker_id)
              ? task_runner_map_[worker_id]
diff --git a/content/renderer/worker/worker_thread_registry.h b/content/renderer/worker/worker_thread_registry.h
index 0dd3fa3..6235c9e1 100644
--- a/content/renderer/worker/worker_thread_registry.h
+++ b/content/renderer/worker/worker_thread_registry.h
@@ -15,7 +15,7 @@
 #include "content/public/renderer/worker_thread.h"
 
 namespace base {
-class TaskRunner;
+class SequencedTaskRunner;
 }
 
 namespace content {
@@ -33,7 +33,7 @@
   // Always returns a non-null task runner regardless of whether the
   // corresponding worker thread is gone or not. If the thread is already gone
   // the tasks posted onto the task runner will be silently discarded.
-  base::TaskRunner* GetTaskRunnerFor(int worker_id);
+  base::SequencedTaskRunner* GetTaskRunnerFor(int worker_id);
 
  private:
   friend class WorkerThread;
@@ -49,9 +49,10 @@
   // end up being handled as per usual in the main-thread, causing incorrect
   // results. |task_runner_for_dead_worker_| is used to handle such messages,
   // which silently discards all the tasks it receives.
-  scoped_refptr<base::TaskRunner> task_runner_for_dead_worker_;
+  scoped_refptr<base::SequencedTaskRunner> task_runner_for_dead_worker_;
 
-  std::map<int /* worker_thread_id */, base::TaskRunner*> task_runner_map_;
+  std::map<int /* worker_thread_id */, base::SequencedTaskRunner*>
+      task_runner_map_;
   base::Lock task_runner_map_lock_;
 };
 
diff --git a/content/shell/browser/shell_devtools_bindings.cc b/content/shell/browser/shell_devtools_bindings.cc
index 2ee3232..b82adc4e 100644
--- a/content/shell/browser/shell_devtools_bindings.cc
+++ b/content/shell/browser/shell_devtools_bindings.cc
@@ -318,7 +318,7 @@
     resource_request->url = gurl;
     // TODO(caseq): this preserves behavior of URLFetcher-based implementation.
     // We really need to pass proper first party origin from the front-end.
-    resource_request->site_for_cookies = gurl;
+    resource_request->site_for_cookies = net::SiteForCookies::FromUrl(gurl);
     resource_request->headers.AddHeadersFromString(headers);
 
     auto* partition = content::BrowserContext::GetStoragePartitionForSite(
diff --git a/content/shell/browser/web_test/leak_detector.cc b/content/shell/browser/web_test/leak_detector.cc
index 31b9cdb..ad423cb91 100644
--- a/content/shell/browser/web_test/leak_detector.cc
+++ b/content/shell/browser/web_test/leak_detector.cc
@@ -30,9 +30,8 @@
 const int kInitialNumberOfLiveFrames = 1;
 const int kInitialNumberOfWorkerGlobalScopes = 0;
 const int kInitialNumberOfLiveResourceFetchers = 1;
-// Each Document has a ScriptRunner and a ScriptedAnimationController,
-// which are ContextLifecycleStateObservers.
-const int kInitialNumberOfLiveContextLifecycleStateObservers = 2;
+// Each Document has a ScriptRunner, which is a ContextLifecycleStateObserver.
+const int kInitialNumberOfLiveContextLifecycleStateObservers = 1;
 
 // This includes not only about:blank's context but also ScriptRegexp (e.g.
 // created by isValidEmailAddress in EmailInputType.cpp). The leak detector
diff --git a/content/shell/test_runner/web_ax_object_proxy.cc b/content/shell/test_runner/web_ax_object_proxy.cc
index 0f04b93..7c59faa 100644
--- a/content/shell/test_runner/web_ax_object_proxy.cc
+++ b/content/shell/test_runner/web_ax_object_proxy.cc
@@ -71,8 +71,6 @@
       return result.append("ComboBoxMenuButton");
     case ax::mojom::Role::kComment:
       return result.append("Comment");
-    case ax::mojom::Role::kCommentSection:
-      return result.append("CommentSection");
     case ax::mojom::Role::kComplementary:
       return result.append("Complementary");
     case ax::mojom::Role::kContentDeletion:
@@ -299,8 +297,6 @@
       return result.append("RadioGroup");
     case ax::mojom::Role::kRegion:
       return result.append("Region");
-    case ax::mojom::Role::kRevision:
-      return result.append("Revision");
     case ax::mojom::Role::kRow:
       return result.append("Row");
     case ax::mojom::Role::kRowGroup:
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
index 68759448..6ff4f17 100644
--- a/content/test/BUILD.gn
+++ b/content/test/BUILD.gn
@@ -205,8 +205,6 @@
     "../public/test/test_renderer_host.h",
     "../public/test/test_service.cc",
     "../public/test/test_service.h",
-    "../public/test/test_service_manager_context.cc",
-    "../public/test/test_service_manager_context.h",
     "../public/test/test_storage_partition.cc",
     "../public/test/test_storage_partition.h",
     "../public/test/test_synchronous_compositor_android.cc",
@@ -873,7 +871,6 @@
     "../browser/file_system/fileapi_browsertest.cc",
     "../browser/find_request_manager_browsertest.cc",
     "../browser/font_unique_name_lookup/font_unique_name_browsertest.cc",
-    "../browser/form_controls_browsertest.cc",
     "../browser/frame_host/ancestor_throttle_browsertest.cc",
     "../browser/frame_host/back_forward_cache_metrics_browsertest.cc",
     "../browser/frame_host/blocked_scheme_navigation_browsertest.cc",
diff --git a/content/test/content_browser_test_test.cc b/content/test/content_browser_test_test.cc
index 75415ed..5a8f3e920 100644
--- a/content/test/content_browser_test_test.cc
+++ b/content/test/content_browser_test_test.cc
@@ -115,7 +115,13 @@
 }
 
 // Tests that browser tests print the callstack on asserts.
-IN_PROC_BROWSER_TEST_F(ContentBrowserTest, BrowserCrashCallStack) {
+// Disabled on Windows crbug.com/1034784
+#if defined(OS_WIN)
+#define MAYBE_BrowserCrashCallStack DISABLED_BrowserCrashCallStack
+#else
+#define MAYBE_BrowserCrashCallStack BrowserCrashCallStack
+#endif
+IN_PROC_BROWSER_TEST_F(ContentBrowserTest, MAYBE_BrowserCrashCallStack) {
   base::ScopedAllowBlockingForTesting allow_blocking;
   base::ScopedTempDir temp_dir;
   ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
diff --git a/content/test/data/accessibility/aria/annotation-roles-expected-android.txt b/content/test/data/accessibility/aria/annotation-roles-expected-android.txt
index 14b5a1e..1bd2f49 100644
--- a/content/test/data/accessibility/aria/annotation-roles-expected-android.txt
+++ b/content/test/data/accessibility/aria/annotation-roles-expected-android.txt
@@ -1,7 +1,5 @@
 android.webkit.WebView focusable focused scrollable
 ++android.view.View role_description='comment' name='comment'
-++android.view.View role_description='comment section' name='comment section'
-++android.view.View role_description='revision' name='revision'
 ++android.view.View role_description='suggestion' name='suggestion'
 ++android.view.View
 ++++android.view.View name='This is '
diff --git a/content/test/data/accessibility/aria/annotation-roles-expected-auralinux.txt b/content/test/data/accessibility/aria/annotation-roles-expected-auralinux.txt
index b15f3c7f..59a9ddc 100644
--- a/content/test/data/accessibility/aria/annotation-roles-expected-auralinux.txt
+++ b/content/test/data/accessibility/aria/annotation-roles-expected-auralinux.txt
@@ -1,7 +1,5 @@
 [document web]
 ++[section] name='comment' xml-roles:comment
-++[section] name='comment section' xml-roles:commentsection
-++[section] name='revision' xml-roles:revision
 ++[section] name='suggestion' xml-roles:suggestion
 ++[paragraph]
 ++++[static] name='This is '
diff --git a/content/test/data/accessibility/aria/annotation-roles-expected-blink.txt b/content/test/data/accessibility/aria/annotation-roles-expected-blink.txt
index b2a3be4..40126fb 100644
--- a/content/test/data/accessibility/aria/annotation-roles-expected-blink.txt
+++ b/content/test/data/accessibility/aria/annotation-roles-expected-blink.txt
@@ -1,8 +1,6 @@
 rootWebArea
 ++genericContainer ignored
 ++++comment name='comment'
-++++commentSection name='comment section'
-++++revision name='revision'
 ++++suggestion name='suggestion'
 ++++paragraph
 ++++++staticText name='This is '
diff --git a/content/test/data/accessibility/aria/annotation-roles-expected-mac.txt b/content/test/data/accessibility/aria/annotation-roles-expected-mac.txt
index cdaed3e..924f76b 100644
--- a/content/test/data/accessibility/aria/annotation-roles-expected-mac.txt
+++ b/content/test/data/accessibility/aria/annotation-roles-expected-mac.txt
@@ -1,7 +1,5 @@
 AXWebArea AXRoleDescription='HTML content'
 ++AXGroup AXRoleDescription='comment' AXDescription='comment'
-++AXGroup AXRoleDescription='commentsection' AXDescription='comment section'
-++AXGroup AXRoleDescription='revision' AXDescription='revision'
 ++AXGroup AXRoleDescription='suggestion' AXDescription='suggestion'
 ++AXGroup AXRoleDescription='group'
 ++++AXStaticText AXRoleDescription='text' AXValue='This is '
diff --git a/content/test/data/accessibility/aria/annotation-roles-expected-uia-win.txt b/content/test/data/accessibility/aria/annotation-roles-expected-uia-win.txt
index dd983061..a05833c 100644
--- a/content/test/data/accessibility/aria/annotation-roles-expected-uia-win.txt
+++ b/content/test/data/accessibility/aria/annotation-roles-expected-uia-win.txt
@@ -1,7 +1,5 @@
 document LocalizedControlType='document'
 ++group Name='comment'
-++group Name='comment section'
-++group Name='revision'
 ++group Name='suggestion'
 ++group LocalizedControlType='group'
 ++++description Name='This is '
diff --git a/content/test/data/accessibility/aria/annotation-roles-expected-win.txt b/content/test/data/accessibility/aria/annotation-roles-expected-win.txt
index 8c7229fa..29e89f3 100644
--- a/content/test/data/accessibility/aria/annotation-roles-expected-win.txt
+++ b/content/test/data/accessibility/aria/annotation-roles-expected-win.txt
@@ -1,10 +1,8 @@
 ROLE_SYSTEM_DOCUMENT READONLY FOCUSABLE
 ++IA2_ROLE_COMMENT name='comment' xml-roles:comment
-++IA2_ROLE_SECTION name='comment section' xml-roles:commentsection
-++IA2_ROLE_SECTION name='revision' xml-roles:revision
 ++IA2_ROLE_SUGGESTION name='suggestion' xml-roles:suggestion
 ++IA2_ROLE_PARAGRAPH
 ++++ROLE_SYSTEM_STATICTEXT name='This is '
 ++++IA2_ROLE_MARK xml-roles:mark
 ++++++ROLE_SYSTEM_STATICTEXT name='highlighted'
-++++ROLE_SYSTEM_STATICTEXT name='.'
\ No newline at end of file
+++++ROLE_SYSTEM_STATICTEXT name='.'
diff --git a/content/test/data/accessibility/aria/annotation-roles.html b/content/test/data/accessibility/aria/annotation-roles.html
index 28c8cf22..e6276b8 100644
--- a/content/test/data/accessibility/aria/annotation-roles.html
+++ b/content/test/data/accessibility/aria/annotation-roles.html
@@ -2,16 +2,16 @@
 @MAC-ALLOW:AXRole*
 @MAC-ALLOW:AXSubrole*
 @WIN-ALLOW:xml-roles:*
+@WIN-DENY:level*
 @AURALINUX-ALLOW:xml-roles*
 @UIA-WIN-ALLOW:LocalizedControlType*
 @UIA-WIN-DENY:LocalizedControlType='text'
+@BLINK-DENY:hierarchicalLevel*
 -->
 <!DOCTYPE html>
 <html>
 <body>
   <div role="comment" aria-label="comment"></div>
-  <div role="commentsection" aria-label="comment section"></div>
-  <div role="revision" aria-label="revision"></div>
   <div role="suggestion" aria-label="suggestion"></div>
   <p>This is <span role="mark">highlighted</span>.</p>
 </body>
diff --git a/content/test/data/accessibility/aria/aria-comment-expected-blink.txt b/content/test/data/accessibility/aria/aria-comment-expected-blink.txt
new file mode 100644
index 0000000..78e84fd4
--- /dev/null
+++ b/content/test/data/accessibility/aria/aria-comment-expected-blink.txt
@@ -0,0 +1,16 @@
+rootWebArea
+++genericContainer ignored
+++++comment name='Top level (Element hierarchy)' hierarchicalLevel=1 setSize=3 posInSet=1
+++++++comment name='Reply 1' hierarchicalLevel=2 setSize=2 posInSet=1
+++++++++group setSize=1
+++++++++++comment name='Reply-to-reply 1' hierarchicalLevel=3 setSize=1 posInSet=1
+++++++comment name='Reply 2' hierarchicalLevel=2 setSize=2 posInSet=2
+++++comment name='Top level (aria-owns hierarchy)' hierarchicalLevel=1 setSize=3 posInSet=2
+++++++comment name='Reply 1' hierarchicalLevel=2 setSize=2 posInSet=1
+++++++++comment name='Reply to reply 1' hierarchicalLevel=3 setSize=1 posInSet=1
+++++++comment name='Reply 2' hierarchicalLevel=2 setSize=2 posInSet=2
+++++comment name='Top level (aria-level hierarchy)' hierarchicalLevel=1 setSize=3 posInSet=3
+++++comment name='Reply 1' hierarchicalLevel=2 setSize=2 posInSet=1
+++++comment name='Reply to reply 1' hierarchicalLevel=3 setSize=1 posInSet=1
+++++comment name='Reply 2' hierarchicalLevel=2 setSize=2 posInSet=2
+++++comment name='Out of place' hierarchicalLevel=5 setSize=10 posInSet=9
diff --git a/content/test/data/accessibility/aria/aria-comment.html b/content/test/data/accessibility/aria/aria-comment.html
new file mode 100644
index 0000000..68851a0d
--- /dev/null
+++ b/content/test/data/accessibility/aria/aria-comment.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<!--
+@BLINK-ALLOW:setSize*
+@BLINK-ALLOW:posInSet*
+@BLINK-ALLOW:hierarchicalLevel*
+-->
+<html>
+<body>
+  <!-- Element hierarchy -->
+  <div role="comment" aria-label="Top level (Element hierarchy)">
+    <div role="comment" aria-label="Reply 1">
+      <div role="group">
+        <div role="comment" aria-label="Reply-to-reply 1"></div>
+      </div>
+    </div>
+    <div role="comment" aria-label="Reply 2"></div>
+  </div>
+
+  <!-- aria-owns hierarchy -->
+  <div role="comment" aria-label="Top level (aria-owns hierarchy)" aria-owns="reply1 reply2"></div>
+  <div role="comment" id="reply1" aria-label="Reply 1" aria-owns="replytoreply1"></div>
+  <div id="replytoreply1" role="comment" aria-label="Reply to reply 1"></div>
+  <div id="reply2" role="comment" aria-label="Reply 2"></div>
+
+  <!-- aria-level hierarchy -->
+  <div role="comment" aria-level="1" aria-label="Top level (aria-level hierarchy)"></div>
+  <div role="comment" aria-level="2" aria-label="Reply 1"></div>
+  <div role="comment" aria-level="3" aria-label="Reply to reply 1"></div>
+  <div role="comment" aria-level="2" aria-label="Reply 2"></div>
+
+  <!-- Ensure aria-posinset, aria-setsize are utilized -->
+  <div role="comment" aria-level="5" aria-posinset="9" aria-setsize="10" aria-label="Out of place">
+</body>
+</html>
diff --git a/content/test/data/accessibility/html/math-expected-android.txt b/content/test/data/accessibility/html/math-expected-android.txt
index 08773777..373d69de 100644
--- a/content/test/data/accessibility/html/math-expected-android.txt
+++ b/content/test/data/accessibility/html/math-expected-android.txt
@@ -1,3 +1,5 @@
 android.webkit.WebView focusable focused scrollable
-++android.view.View
-++++android.view.View role_description='math' name='a2 + b2'
+++android.view.View role_description='math'
+++++android.view.View name='a2'
+++++android.view.View name='+'
+++++android.view.View name='b2'
diff --git a/content/test/data/accessibility/html/math-expected-auralinux.txt b/content/test/data/accessibility/html/math-expected-auralinux.txt
index 1f1ee9f1..9a0de8de 100644
--- a/content/test/data/accessibility/html/math-expected-auralinux.txt
+++ b/content/test/data/accessibility/html/math-expected-auralinux.txt
@@ -1,10 +1,10 @@
 [document web]
-++[section]
-++++[math]
+++[math]
+++++[section]
 ++++++[static] name='a'
 ++++++[static] name='2'
-++++++[static] name=' '
+++++[section]
 ++++++[static] name='+'
-++++++[static] name=' '
+++++[section]
 ++++++[static] name='b'
 ++++++[static] name='2'
diff --git a/content/test/data/accessibility/html/math-expected-mac.txt b/content/test/data/accessibility/html/math-expected-mac.txt
index 7760f0c7..ad484e6 100644
--- a/content/test/data/accessibility/html/math-expected-mac.txt
+++ b/content/test/data/accessibility/html/math-expected-mac.txt
@@ -1,10 +1,10 @@
 AXWebArea AXRoleDescription='HTML content'
-++AXGroup AXRoleDescription='group'
-++++AXGroup AXSubrole=AXDocumentMath AXRoleDescription='math'
+++AXGroup AXSubrole=AXDocumentMath AXRoleDescription='math'
+++++AXGroup AXRoleDescription='group'
 ++++++AXStaticText AXRoleDescription='text' AXValue='a'
 ++++++AXStaticText AXRoleDescription='text' AXValue='2'
-++++++AXStaticText AXRoleDescription='text' AXValue=' '
+++++AXGroup AXRoleDescription='group'
 ++++++AXStaticText AXRoleDescription='text' AXValue='+'
-++++++AXStaticText AXRoleDescription='text' AXValue=' '
+++++AXGroup AXRoleDescription='group'
 ++++++AXStaticText AXRoleDescription='text' AXValue='b'
-++++++AXStaticText AXRoleDescription='text' AXValue='2'
\ No newline at end of file
+++++++AXStaticText AXRoleDescription='text' AXValue='2'
diff --git a/content/test/data/accessibility/html/math-expected-uia-win.txt b/content/test/data/accessibility/html/math-expected-uia-win.txt
index 93d1ee9..dc1172f1 100644
--- a/content/test/data/accessibility/html/math-expected-uia-win.txt
+++ b/content/test/data/accessibility/html/math-expected-uia-win.txt
@@ -3,8 +3,8 @@
 ++++group
 ++++++description Name='a'
 ++++++description Name='2'
-++++++description Name=' '
+++++group
 ++++++description Name='+'
-++++++description Name=' '
+++++group
 ++++++description Name='b'
 ++++++description Name='2'
diff --git a/content/test/data/accessibility/html/math-expected-win.txt b/content/test/data/accessibility/html/math-expected-win.txt
index cabf39b..b47a44f 100644
--- a/content/test/data/accessibility/html/math-expected-win.txt
+++ b/content/test/data/accessibility/html/math-expected-win.txt
@@ -1,10 +1,10 @@
 ROLE_SYSTEM_DOCUMENT READONLY FOCUSABLE
-++IA2_ROLE_SECTION
-++++ROLE_SYSTEM_EQUATION inner_html='<newline>    <mrow><newline>      <msup><mi>a</mi><mn>2</mn></msup><newline>      <mo>+</mo><newline>      <msup><mi>b</mi><mn>2</mn></msup><newline>    </mrow><newline> '
+++ROLE_SYSTEM_EQUATION inner_html='<newline>    <mrow><newline>      <msup><mi>a</mi><mn>2</mn></msup><newline>      <mo>+</mo><newline>      <msup><mi>b</mi><mn>2</mn></msup><newline>    </mrow><newline> '
+++++IA2_ROLE_SECTION
 ++++++ROLE_SYSTEM_STATICTEXT name='a'
 ++++++ROLE_SYSTEM_STATICTEXT name='2'
-++++++ROLE_SYSTEM_STATICTEXT name=' '
+++++IA2_ROLE_SECTION
 ++++++ROLE_SYSTEM_STATICTEXT name='+'
-++++++ROLE_SYSTEM_STATICTEXT name=' '
+++++IA2_ROLE_SECTION
 ++++++ROLE_SYSTEM_STATICTEXT name='b'
 ++++++ROLE_SYSTEM_STATICTEXT name='2'
diff --git a/content/test/data/back_forward_cache/page_with_nonexistent_script.html b/content/test/data/back_forward_cache/page_with_nonexistent_script.html
new file mode 100644
index 0000000..84e0840
--- /dev/null
+++ b/content/test/data/back_forward_cache/page_with_nonexistent_script.html
@@ -0,0 +1 @@
+<script src="script-which-does-not-exist.js"/>
diff --git a/content/test/data/forms/form_controls_browsertest_checkbox.png b/content/test/data/forms/form_controls_browsertest_checkbox.png
deleted file mode 100644
index 20b1656..0000000
--- a/content/test/data/forms/form_controls_browsertest_checkbox.png
+++ /dev/null
Binary files differ
diff --git a/content/test/data/forms/form_controls_browsertest_checkbox_android.png b/content/test/data/forms/form_controls_browsertest_checkbox_android.png
deleted file mode 100644
index 07eef94d..0000000
--- a/content/test/data/forms/form_controls_browsertest_checkbox_android.png
+++ /dev/null
Binary files differ
diff --git a/content/test/data/forms/form_controls_browsertest_radio.png b/content/test/data/forms/form_controls_browsertest_radio.png
deleted file mode 100644
index cbc21ab2..0000000
--- a/content/test/data/forms/form_controls_browsertest_radio.png
+++ /dev/null
Binary files differ
diff --git a/content/test/data/forms/form_controls_browsertest_radio_android.png b/content/test/data/forms/form_controls_browsertest_radio_android.png
deleted file mode 100644
index 0126008..0000000
--- a/content/test/data/forms/form_controls_browsertest_radio_android.png
+++ /dev/null
Binary files differ
diff --git a/content/test/gpu/gpu_tests/test_expectations/context_lost_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/context_lost_expectations.txt
index 261ba27..c3501892 100644
--- a/content/test/gpu/gpu_tests/test_expectations/context_lost_expectations.txt
+++ b/content/test/gpu/gpu_tests/test_expectations/context_lost_expectations.txt
@@ -1,6 +1,6 @@
 # tags: [ android linux lion mac mountainlion win win7 win8 win10]
 # tags: [ debug ]
-# tags: [ nvidia qualcomm-adreno-(tm)-418 qualcomm-adreno-(tm)-420 ]
+# tags: [ intel nvidia qualcomm-adreno-(tm)-418 qualcomm-adreno-(tm)-420 ]
 # tags: [ asan no-asan ]
 # results: [ Failure RetryOnFailure Skip ]
 
@@ -51,3 +51,6 @@
 # Mac NVIDIA only uses the low-power GPU.
 crbug.com/681341 [ mac nvidia ] ContextLost_MacWebGLMultisamplingHighPowerSwitchLosesContext [ Skip ]
 crbug.com/681341 [ mac nvidia ] ContextLost_MacWebGLPreserveDBHighPowerSwitchLosesContext [ Skip ]
+
+# Linux Intel Flake
+crbug.com/1034008 [ linux intel ] ContextLost_WebGLContextLostInHiddenTab [ RetryOnFailure ]
diff --git a/content/test/gpu/gpu_tests/test_expectations/webgl2_conformance_expectations.txt b/content/test/gpu/gpu_tests/test_expectations/webgl2_conformance_expectations.txt
index 84b07b4e..49c4b5e6 100644
--- a/content/test/gpu/gpu_tests/test_expectations/webgl2_conformance_expectations.txt
+++ b/content/test/gpu/gpu_tests/test_expectations/webgl2_conformance_expectations.txt
@@ -189,7 +189,7 @@
 
 # Win / NVIDIA Quadro P400 / D3D11 flaky failures
 crbug.com/680754 [ d3d11 win nvidia-0x1cb3 ] deqp/data/gles3/shaders/functions.html [ Failure ]
-crbug.com/921052 [ d3d11 win nvidia-0x1cb3 ] deqp/functional/gles3/framebufferblit/depth_stencil.html [ RetryOnFailure ]
+crbug.com/921052 [ d3d11 win nvidia-0x1cb3 ] deqp/functional/gles3/framebufferblit/depth_stencil.html [ Skip ]
 crbug.com/680754 [ d3d11 win nvidia-0x1cb3 ] deqp/functional/gles3/transformfeedback/basic_types_interleaved_lines.html [ Failure ]
 crbug.com/680754 [ d3d11 win nvidia-0x1cb3 ] deqp/functional/gles3/transformfeedback/basic_types_interleaved_triangles.html [ Failure ]
 crbug.com/680754 [ d3d11 win nvidia-0x1cb3 ] deqp/functional/gles3/transformfeedback/basic_types_separate_lines.html [ Failure ]
diff --git a/content/test/navigation_simulator_impl.cc b/content/test/navigation_simulator_impl.cc
index 8cb5b7e..7e4536a 100644
--- a/content/test/navigation_simulator_impl.cc
+++ b/content/test/navigation_simulator_impl.cc
@@ -472,7 +472,7 @@
   redirect_info.status_code = 302;
   redirect_info.new_method = "GET";
   redirect_info.new_url = new_url;
-  redirect_info.new_site_for_cookies = new_url;
+  redirect_info.new_site_for_cookies = net::SiteForCookies::FromUrl(new_url);
   redirect_info.new_referrer = referrer_->url.spec();
   redirect_info.new_referrer_policy =
       Referrer::ReferrerPolicyForUrlRequest(referrer_->policy);
diff --git a/content/test/portal/portal_activated_observer.cc b/content/test/portal/portal_activated_observer.cc
index a08735a9..251498b 100644
--- a/content/test/portal/portal_activated_observer.cc
+++ b/content/test/portal/portal_activated_observer.cc
@@ -6,6 +6,11 @@
 
 #include "base/auto_reset.h"
 #include "base/run_loop.h"
+#include "components/viz/host/host_frame_sink_manager.h"
+#include "content/browser/compositor/surface_utils.h"
+#include "content/browser/renderer_host/render_widget_host_view_base.h"
+#include "content/browser/web_contents/web_contents_impl.h"
+#include "content/public/test/hit_test_region_observer.h"
 
 namespace content {
 
@@ -44,6 +49,38 @@
   return *result_;
 }
 
+void PortalActivatedObserver::WaitForActivateAndHitTestData() {
+  RenderFrameHostImpl* portal_frame =
+      interceptor_->GetPortalContents()->GetMainFrame();
+  WaitForActivate();
+
+  RenderWidgetHostViewBase* view =
+      portal_frame->GetRenderWidgetHost()->GetView();
+  viz::FrameSinkId root_frame_sink_id = view->GetRootFrameSinkId();
+  HitTestRegionObserver observer(root_frame_sink_id);
+  observer.WaitForHitTestData();
+
+  while (true) {
+    const auto& display_hit_test_query_map =
+        GetHostFrameSinkManager()->display_hit_test_query();
+    auto it = display_hit_test_query_map.find(root_frame_sink_id);
+    // On Mac, we create a new root layer after activation, so the hit test data
+    // may not have anything for the new layer yet.
+    if (it != display_hit_test_query_map.end()) {
+      viz::HitTestQuery* query = it->second.get();
+      size_t index = 0;
+      if (query->FindIndexOfFrameSink(view->GetFrameSinkId(), &index)) {
+        // The hit test region for the portal frame should be at index 1 after
+        // activation, so we wait for the hit test data to update until it's in
+        // this state.
+        if (index == 1)
+          return;
+      }
+    }
+    observer.WaitForHitTestDataChange();
+  }
+}
+
 void PortalActivatedObserver::OnPortalActivate() {
   DCHECK(!has_activated_)
       << "PortalActivatedObserver can't handle overlapping activations.";
diff --git a/content/test/portal/portal_activated_observer.h b/content/test/portal/portal_activated_observer.h
index f0ef3424..294ee3a 100644
--- a/content/test/portal/portal_activated_observer.h
+++ b/content/test/portal/portal_activated_observer.h
@@ -44,6 +44,10 @@
   // point.
   blink::mojom::PortalActivateResult WaitForActivateResult();
 
+  // Waits for the Activate method to be called by the predecessor renderer and
+  // for hit test data to be refreshed.
+  void WaitForActivateAndHitTestData();
+
  private:
   // PortalInterceptorForTesting::Observer:
   void OnPortalActivate() override;
diff --git a/content/test/test_navigation_url_loader.cc b/content/test/test_navigation_url_loader.cc
index dff8f9c..da8a291 100644
--- a/content/test/test_navigation_url_loader.cc
+++ b/content/test/test_navigation_url_loader.cc
@@ -44,7 +44,8 @@
   redirect_info.status_code = 302;
   redirect_info.new_method = "GET";
   redirect_info.new_url = redirect_url;
-  redirect_info.new_site_for_cookies = redirect_url;
+  redirect_info.new_site_for_cookies =
+      net::SiteForCookies::FromUrl(redirect_url);
   auto response_head = network::mojom::URLResponseHead::New();
   CallOnRequestRedirected(redirect_info, std::move(response_head));
 }
diff --git a/dbus/bus.cc b/dbus/bus.cc
index 80b7526..aab05d13 100644
--- a/dbus/bus.cc
+++ b/dbus/bus.cc
@@ -842,14 +842,14 @@
   }
 }
 
-base::TaskRunner* Bus::GetDBusTaskRunner() {
+base::SequencedTaskRunner* Bus::GetDBusTaskRunner() {
   if (dbus_task_runner_)
     return dbus_task_runner_.get();
   else
     return GetOriginTaskRunner();
 }
 
-base::TaskRunner* Bus::GetOriginTaskRunner() {
+base::SequencedTaskRunner* Bus::GetOriginTaskRunner() {
   DCHECK(origin_task_runner_);
   return origin_task_runner_.get();
 }
diff --git a/dbus/bus.h b/dbus/bus.h
index 9c53491..445cd0515 100644
--- a/dbus/bus.h
+++ b/dbus/bus.h
@@ -24,7 +24,6 @@
 
 namespace base {
 class SequencedTaskRunner;
-class TaskRunner;
 }
 
 namespace dbus {
@@ -38,7 +37,7 @@
 //
 // For asynchronous operations such as an asynchronous method call, the
 // bus object will use a task runner to monitor the underlying file
-// descriptor used for D-Bus communication. By default, the bus will use
+// descriptor used for D-Bus communication. By default, the bus will usegi
 // the current thread's task runner. If |dbus_task_runner| option is
 // specified, the bus will use that task runner instead.
 //
@@ -547,10 +546,10 @@
   virtual void UnregisterObjectPath(const ObjectPath& object_path);
 
   // Returns the task runner of the D-Bus thread.
-  virtual base::TaskRunner* GetDBusTaskRunner();
+  virtual base::SequencedTaskRunner* GetDBusTaskRunner();
 
   // Returns the task runner of the thread that created the bus.
-  virtual base::TaskRunner* GetOriginTaskRunner();
+  virtual base::SequencedTaskRunner* GetOriginTaskRunner();
 
   // Returns true if the bus has the D-Bus thread.
   virtual bool HasDBusThread();
diff --git a/dbus/exported_object.cc b/dbus/exported_object.cc
index cfb180a..0c94833 100644
--- a/dbus/exported_object.cc
+++ b/dbus/exported_object.cc
@@ -11,6 +11,7 @@
 #include "base/logging.h"
 #include "base/memory/ref_counted.h"
 #include "base/metrics/histogram_macros.h"
+#include "base/sequenced_task_runner.h"
 #include "base/task_runner.h"
 #include "base/threading/thread_restrictions.h"
 #include "base/time/time.h"
diff --git a/dbus/mock_bus.h b/dbus/mock_bus.h
index 2280762..fddc4ad5 100644
--- a/dbus/mock_bus.h
+++ b/dbus/mock_bus.h
@@ -68,8 +68,8 @@
                     void* user_data,
                     DBusError* error));
   MOCK_METHOD1(UnregisterObjectPath, void(const ObjectPath& object_path));
-  MOCK_METHOD0(GetDBusTaskRunner, base::TaskRunner*());
-  MOCK_METHOD0(GetOriginTaskRunner, base::TaskRunner*());
+  MOCK_METHOD0(GetDBusTaskRunner, base::SequencedTaskRunner*());
+  MOCK_METHOD0(GetOriginTaskRunner, base::SequencedTaskRunner*());
   MOCK_METHOD0(HasDBusThread, bool());
   MOCK_METHOD0(AssertOnOriginThread, void());
   MOCK_METHOD0(AssertOnDBusThread, void());
diff --git a/dbus/object_proxy.cc b/dbus/object_proxy.cc
index de5785e..1e6a141c 100644
--- a/dbus/object_proxy.cc
+++ b/dbus/object_proxy.cc
@@ -14,7 +14,6 @@
 #include "base/metrics/histogram_macros.h"
 #include "base/strings/string_piece.h"
 #include "base/strings/stringprintf.h"
-#include "base/task_runner.h"
 #include "base/task_runner_util.h"
 #include "base/threading/scoped_blocking_call.h"
 #include "base/threading/thread.h"
@@ -53,9 +52,10 @@
 }  // namespace
 
 ObjectProxy::ReplyCallbackHolder::ReplyCallbackHolder(
-    scoped_refptr<base::TaskRunner> origin_task_runner,
+    scoped_refptr<base::SequencedTaskRunner> origin_task_runner,
     ResponseOrErrorCallback callback)
-    : origin_task_runner_(origin_task_runner), callback_(std::move(callback)) {
+    : origin_task_runner_(std::move(origin_task_runner)),
+      callback_(std::move(callback)) {
   DCHECK(origin_task_runner_.get());
   DCHECK(!callback_.is_null());
 }
diff --git a/dbus/object_proxy.h b/dbus/object_proxy.h
index 6760131..b2b509b 100644
--- a/dbus/object_proxy.h
+++ b/dbus/object_proxy.h
@@ -16,15 +16,12 @@
 #include "base/callback.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
+#include "base/sequenced_task_runner.h"
 #include "base/strings/string_piece.h"
 #include "base/time/time.h"
 #include "dbus/dbus_export.h"
 #include "dbus/object_path.h"
 
-namespace base {
-class TaskRunner;
-}  // namespace base
-
 namespace dbus {
 
 class Bus;
@@ -225,8 +222,9 @@
    public:
     // Designed to be created on the origin thread.
     // Both |origin_task_runner| and |callback| must not be null.
-    ReplyCallbackHolder(scoped_refptr<base::TaskRunner> origin_task_runner,
-                        ResponseOrErrorCallback callback);
+    ReplyCallbackHolder(
+        scoped_refptr<base::SequencedTaskRunner> origin_task_runner,
+        ResponseOrErrorCallback callback);
 
     // This is movable to be bound to an OnceCallback.
     ReplyCallbackHolder(ReplyCallbackHolder&& other);
@@ -241,7 +239,7 @@
     ResponseOrErrorCallback ReleaseCallback();
 
    private:
-    scoped_refptr<base::TaskRunner> origin_task_runner_;
+    scoped_refptr<base::SequencedTaskRunner> origin_task_runner_;
     ResponseOrErrorCallback callback_;
     DISALLOW_COPY_AND_ASSIGN(ReplyCallbackHolder);
   };
diff --git a/device/bluetooth/dbus/bluetooth_adapter_client.cc b/device/bluetooth/dbus/bluetooth_adapter_client.cc
index f5959ef..9f7288e 100644
--- a/device/bluetooth/dbus/bluetooth_adapter_client.cc
+++ b/device/bluetooth/dbus/bluetooth_adapter_client.cc
@@ -328,7 +328,7 @@
   // BluetoothAdapterClient override.
   void RemoveDevice(const dbus::ObjectPath& object_path,
                     const dbus::ObjectPath& device_path,
-                    const base::Closure& callback,
+                    base::OnceClosure callback,
                     ErrorCallback error_callback) override {
     dbus::MethodCall method_call(bluetooth_adapter::kBluetoothAdapterInterface,
                                  bluetooth_adapter::kRemoveDevice);
@@ -346,7 +346,7 @@
     object_proxy->CallMethodWithErrorCallback(
         &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
         base::BindOnce(&BluetoothAdapterClientImpl::OnSuccess,
-                       weak_ptr_factory_.GetWeakPtr(), callback),
+                       weak_ptr_factory_.GetWeakPtr(), std::move(callback)),
         base::BindOnce(&BluetoothAdapterClientImpl::OnError,
                        weak_ptr_factory_.GetWeakPtr(),
                        std::move(error_callback)));
@@ -355,7 +355,7 @@
   // BluetoothAdapterClient override.
   void SetDiscoveryFilter(const dbus::ObjectPath& object_path,
                           const DiscoveryFilter& discovery_filter,
-                          const base::Closure& callback,
+                          base::OnceClosure callback,
                           ErrorCallback error_callback) override {
     dbus::MethodCall method_call(bluetooth_adapter::kBluetoothAdapterInterface,
                                  bluetooth_adapter::kSetDiscoveryFilter);
@@ -426,7 +426,7 @@
     object_proxy->CallMethodWithErrorCallback(
         &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
         base::BindOnce(&BluetoothAdapterClientImpl::OnSuccess,
-                       weak_ptr_factory_.GetWeakPtr(), callback),
+                       weak_ptr_factory_.GetWeakPtr(), std::move(callback)),
         base::BindOnce(&BluetoothAdapterClientImpl::OnError,
                        weak_ptr_factory_.GetWeakPtr(),
                        std::move(error_callback)));
@@ -435,7 +435,7 @@
   // BluetoothAdapterClient override.
   void CreateServiceRecord(const dbus::ObjectPath& object_path,
                            const bluez::BluetoothServiceRecordBlueZ& record,
-                           const ServiceRecordCallback& callback,
+                           ServiceRecordCallback callback,
                            ErrorCallback error_callback) override {
     dbus::MethodCall method_call(bluetooth_adapter::kBluetoothAdapterInterface,
                                  bluetooth_adapter::kCreateServiceRecord);
@@ -464,7 +464,7 @@
     object_proxy->CallMethodWithErrorCallback(
         &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
         base::BindOnce(&BluetoothAdapterClientImpl::OnCreateServiceRecord,
-                       weak_ptr_factory_.GetWeakPtr(), callback),
+                       weak_ptr_factory_.GetWeakPtr(), std::move(callback)),
         base::BindOnce(&BluetoothAdapterClientImpl::OnError,
                        weak_ptr_factory_.GetWeakPtr(),
                        std::move(error_callback)));
@@ -473,7 +473,7 @@
   // BluetoothAdapterClient override.
   void RemoveServiceRecord(const dbus::ObjectPath& object_path,
                            uint32_t handle,
-                           const base::Closure& callback,
+                           base::OnceClosure callback,
                            ErrorCallback error_callback) override {
     dbus::MethodCall method_call(bluetooth_adapter::kBluetoothAdapterInterface,
                                  bluetooth_adapter::kRemoveServiceRecord);
@@ -490,7 +490,7 @@
     object_proxy->CallMethodWithErrorCallback(
         &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
         base::BindOnce(&BluetoothAdapterClientImpl::OnSuccess,
-                       weak_ptr_factory_.GetWeakPtr(), callback),
+                       weak_ptr_factory_.GetWeakPtr(), std::move(callback)),
         base::BindOnce(&BluetoothAdapterClientImpl::OnError,
                        weak_ptr_factory_.GetWeakPtr(),
                        std::move(error_callback)));
@@ -564,14 +564,14 @@
   }
 
   // Called when a response for successful method call is received.
-  void OnCreateServiceRecord(const ServiceRecordCallback& callback,
+  void OnCreateServiceRecord(ServiceRecordCallback callback,
                              dbus::Response* response) {
     DCHECK(response);
     dbus::MessageReader reader(response);
     uint32_t handle = 0;
     if (!reader.PopUint32(&handle))
       LOG(ERROR) << "Invalid response from CreateServiceRecord.";
-    callback.Run(handle);
+    std::move(callback).Run(handle);
   }
 
   // Called when a response for successful method call is received.
diff --git a/device/bluetooth/dbus/bluetooth_adapter_client.h b/device/bluetooth/dbus/bluetooth_adapter_client.h
index f9e91df..859f3b6 100644
--- a/device/bluetooth/dbus/bluetooth_adapter_client.h
+++ b/device/bluetooth/dbus/bluetooth_adapter_client.h
@@ -147,7 +147,7 @@
   virtual Properties* GetProperties(const dbus::ObjectPath& object_path) = 0;
 
   // Callback used to send back the handle of a created service record.
-  using ServiceRecordCallback = base::Callback<void(uint32_t)>;
+  using ServiceRecordCallback = base::OnceCallback<void(uint32_t)>;
 
   // The ErrorCallback is used by adapter methods to indicate failure.
   // It receives two arguments: the name of the error in |error_name| and
@@ -193,7 +193,7 @@
   // and discards any pairing information.
   virtual void RemoveDevice(const dbus::ObjectPath& object_path,
                             const dbus::ObjectPath& device_path,
-                            const base::Closure& callback,
+                            base::OnceClosure callback,
                             ErrorCallback error_callback) = 0;
 
   // Sets the device discovery filter on the adapter with object path
@@ -204,21 +204,21 @@
   // will be started right after call to StartDiscovery.
   virtual void SetDiscoveryFilter(const dbus::ObjectPath& object_path,
                                   const DiscoveryFilter& discovery_filter,
-                                  const base::Closure& callback,
+                                  base::OnceClosure callback,
                                   ErrorCallback error_callback) = 0;
 
   // Creates the service record |record| on the adapter with the object path
   // |object_path|.
   virtual void CreateServiceRecord(const dbus::ObjectPath& object_path,
                                    const BluetoothServiceRecordBlueZ& record,
-                                   const ServiceRecordCallback& callback,
+                                   ServiceRecordCallback callback,
                                    ErrorCallback error_callback) = 0;
 
   // Removes the service record with the uuid |uuid| on the adapter with the
   // object path |object_path|.
   virtual void RemoveServiceRecord(const dbus::ObjectPath& object_path,
                                    uint32_t handle,
-                                   const base::Closure& callback,
+                                   base::OnceClosure callback,
                                    ErrorCallback error_callback) = 0;
 
   virtual void SetLongTermKeys(
diff --git a/device/bluetooth/dbus/fake_bluetooth_adapter_client.cc b/device/bluetooth/dbus/fake_bluetooth_adapter_client.cc
index 832c7aed..571fea1 100644
--- a/device/bluetooth/dbus/fake_bluetooth_adapter_client.cc
+++ b/device/bluetooth/dbus/fake_bluetooth_adapter_client.cc
@@ -220,7 +220,7 @@
 void FakeBluetoothAdapterClient::RemoveDevice(
     const dbus::ObjectPath& object_path,
     const dbus::ObjectPath& device_path,
-    const base::Closure& callback,
+    base::OnceClosure callback,
     ErrorCallback error_callback) {
   if (object_path != dbus::ObjectPath(kAdapterPath)) {
     std::move(error_callback).Run(kNoResponseError, "");
@@ -229,7 +229,7 @@
 
   VLOG(1) << "RemoveDevice: " << object_path.value() << " "
           << device_path.value();
-  callback.Run();
+  std::move(callback).Run();
 
   FakeBluetoothDeviceClient* device_client =
       static_cast<FakeBluetoothDeviceClient*>(
@@ -248,7 +248,7 @@
 void FakeBluetoothAdapterClient::SetDiscoveryFilter(
     const dbus::ObjectPath& object_path,
     const DiscoveryFilter& discovery_filter,
-    const base::Closure& callback,
+    base::OnceClosure callback,
     ErrorCallback error_callback) {
   if (object_path != dbus::ObjectPath(kAdapterPath)) {
     PostDelayedTask(
@@ -266,24 +266,24 @@
 
   discovery_filter_.reset(new DiscoveryFilter());
   discovery_filter_->CopyFrom(discovery_filter);
-  PostDelayedTask(callback);
+  PostDelayedTask(std::move(callback));
 }
 
 void FakeBluetoothAdapterClient::CreateServiceRecord(
     const dbus::ObjectPath& object_path,
     const bluez::BluetoothServiceRecordBlueZ& record,
-    const ServiceRecordCallback& callback,
+    ServiceRecordCallback callback,
     ErrorCallback error_callback) {
   ++last_handle_;
   records_.insert(
       std::pair<uint32_t, BluetoothServiceRecordBlueZ>(last_handle_, record));
-  callback.Run(last_handle_);
+  std::move(callback).Run(last_handle_);
 }
 
 void FakeBluetoothAdapterClient::RemoveServiceRecord(
     const dbus::ObjectPath& object_path,
     uint32_t handle,
-    const base::Closure& callback,
+    base::OnceClosure callback,
     ErrorCallback error_callback) {
   auto it = records_.find(handle);
   if (it == records_.end()) {
@@ -293,7 +293,7 @@
     return;
   }
   records_.erase(it);
-  callback.Run();
+  std::move(callback).Run();
 }
 
 void FakeBluetoothAdapterClient::SetLongTermKeys(
diff --git a/device/bluetooth/dbus/fake_bluetooth_adapter_client.h b/device/bluetooth/dbus/fake_bluetooth_adapter_client.h
index 53fdfbd..e3b55488 100644
--- a/device/bluetooth/dbus/fake_bluetooth_adapter_client.h
+++ b/device/bluetooth/dbus/fake_bluetooth_adapter_client.h
@@ -64,19 +64,19 @@
                         ErrorCallback error_callback) override;
   void RemoveDevice(const dbus::ObjectPath& object_path,
                     const dbus::ObjectPath& device_path,
-                    const base::Closure& callback,
+                    base::OnceClosure callback,
                     ErrorCallback error_callback) override;
   void SetDiscoveryFilter(const dbus::ObjectPath& object_path,
                           const DiscoveryFilter& discovery_filter,
-                          const base::Closure& callback,
+                          base::OnceClosure callback,
                           ErrorCallback error_callback) override;
   void CreateServiceRecord(const dbus::ObjectPath& object_path,
                            const bluez::BluetoothServiceRecordBlueZ& record,
-                           const ServiceRecordCallback& callback,
+                           ServiceRecordCallback callback,
                            ErrorCallback error_callback) override;
   void RemoveServiceRecord(const dbus::ObjectPath& object_path,
                            uint32_t handle,
-                           const base::Closure& callback,
+                           base::OnceClosure callback,
                            ErrorCallback error_callback) override;
   void SetLongTermKeys(const dbus::ObjectPath& object_path,
                        const std::vector<std::vector<uint8_t>>& long_term_keys,
diff --git a/device/bluetooth/strings/bluetooth_strings_ar.xtb b/device/bluetooth/strings/bluetooth_strings_ar.xtb
index 02ed659..bc67dcd 100644
--- a/device/bluetooth/strings/bluetooth_strings_ar.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_ar.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">الجهاز اللوحي (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">جهاز غير معروف أو غير متوافق (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />، مودم</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />، جهاز صوت سيارة</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />، لوحة مفاتيح</translation>
 <translation id="654594702871184195">صوت (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">الكمبيوتر (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">فيديو (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">الماوس (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />، نوع جهاز غير معروف</translation>
+<translation id="907431882454731668">جهاز ملحق (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">الهاتف (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_az.xtb b/device/bluetooth/strings/bluetooth_strings_az.xtb
index 4ef8a31..2365a34c 100644
--- a/device/bluetooth/strings/bluetooth_strings_az.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_az.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Planşet (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Tanınmayan və ya Dəstəklənməyən Cihaz (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, Modem</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, Avtomobil audio cihazı</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, Klaviatura</translation>
 <translation id="654594702871184195">Audio (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Kompüter (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Video (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Maus (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, Naməlum cihaz növü</translation>
+<translation id="907431882454731668">Periferik qurğu (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Telefon (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_be.xtb b/device/bluetooth/strings/bluetooth_strings_be.xtb
index 67ef85a..b1d5782c 100644
--- a/device/bluetooth/strings/bluetooth_strings_be.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_be.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Планшэт (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Прылада невядомая або не падтрымліваецца (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618">Мадэм (<ph name="DEVICE_NAME" />)</translation>
+<translation id="6459740836740815150">Аўтамабільная аўдыясістэма (<ph name="DEVICE_NAME" />)</translation>
 <translation id="6542922424766292144">Клавіятура (<ph name="DEVICE_NAME" />)</translation>
 <translation id="654594702871184195">Аўдыя (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Камп'ютар (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Відэа (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Мыш (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648">Невядомая прылада (<ph name="DEVICE_NAME" />)</translation>
+<translation id="907431882454731668">Перыферыйная прылада (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Тэлефон (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_bg.xtb b/device/bluetooth/strings/bluetooth_strings_bg.xtb
index ca8e9c4..7413c7c 100644
--- a/device/bluetooth/strings/bluetooth_strings_bg.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_bg.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Таблет (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Неизвестно или неподдържано устройство (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, модем</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, автомобилна аудиосистема</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, клавиатура</translation>
 <translation id="654594702871184195">Аудиосистема (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Компютър (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Видеосистема (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Мишка (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, неизвестен тип устройство</translation>
+<translation id="907431882454731668">Периферно устройство (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Телефон (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_bn.xtb b/device/bluetooth/strings/bluetooth_strings_bn.xtb
index e7748a6..7d24a2c 100644
--- a/device/bluetooth/strings/bluetooth_strings_bn.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_bn.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">ট্যাবলেট (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">অজানা বা অসমর্থিত ডিভাইস (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618">(<ph name="DEVICE_NAME" />) মোডেম</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, গাড়ির অডিও ডিভাইস</translation>
 <translation id="6542922424766292144">(<ph name="DEVICE_NAME" />), কীবোর্ড</translation>
 <translation id="654594702871184195">অডিও (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">কম্পিউটার (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">ভিডিও (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">মাউস (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, ডিভাইসের ধরন অজানা</translation>
+<translation id="907431882454731668">পেরিফেরাল (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">ফোন (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_bs.xtb b/device/bluetooth/strings/bluetooth_strings_bs.xtb
index b145eee..5a38a27 100644
--- a/device/bluetooth/strings/bluetooth_strings_bs.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_bs.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Tabletno računalo (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Nepoznat ili nepodržan uređaj (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, modem</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, audio uređaj u automobilu</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, tastatura</translation>
 <translation id="654594702871184195">Audio (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Računar (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Videozapis (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Miš (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, nepoznata vrsta uređaja</translation>
+<translation id="907431882454731668">Periferni uređaj (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Telefon (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_cs.xtb b/device/bluetooth/strings/bluetooth_strings_cs.xtb
index 9c2f396a..61a1bbc 100644
--- a/device/bluetooth/strings/bluetooth_strings_cs.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_cs.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Tablet (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Neznámé nebo nepodporované zařízení (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, modem</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, audiozařízení auta</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, klávesnice</translation>
 <translation id="654594702871184195">Audiozařízení (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Počítač (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Videozařízení (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Myš (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, neznámý typ zařízení</translation>
+<translation id="907431882454731668">Periferní zařízení (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Telefon (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_da.xtb b/device/bluetooth/strings/bluetooth_strings_da.xtb
index f6bb288..bb69bd9 100644
--- a/device/bluetooth/strings/bluetooth_strings_da.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_da.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Tablet (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Ukendt eller ikke-understøttet enhed (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, modem</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, lydenhed til biler</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, tastatur</translation>
 <translation id="654594702871184195">Lyd (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Computer (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Video (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Mus (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, ukendt enhedstype</translation>
+<translation id="907431882454731668">Ekstern enhed (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Telefon (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_de.xtb b/device/bluetooth/strings/bluetooth_strings_de.xtb
index 90c6f7d0..39e2c1bf 100644
--- a/device/bluetooth/strings/bluetooth_strings_de.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_de.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Tablet (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Unbekanntes oder nicht unterstütztes Gerät (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, Modem</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, Audiogerät im Auto</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, Tastatur</translation>
 <translation id="654594702871184195">Audio (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Computer (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Video (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Maus (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, Unbekannter Gerätetyp</translation>
+<translation id="907431882454731668">Peripheriegerät (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Telefon (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_es-419.xtb b/device/bluetooth/strings/bluetooth_strings_es-419.xtb
index 37a5186e..2c601ce 100644
--- a/device/bluetooth/strings/bluetooth_strings_es-419.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_es-419.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Tablet (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Dispositivo desconocido o no compatible (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, módem</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, dispositivo de audio del automóvil</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, teclado</translation>
 <translation id="654594702871184195">Audio (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Equipo (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Video (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Mouse (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, tipo de dispositivo desconocido</translation>
+<translation id="907431882454731668">Periférico (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Teléfono (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_es.xtb b/device/bluetooth/strings/bluetooth_strings_es.xtb
index 4c95ca4..db07327 100644
--- a/device/bluetooth/strings/bluetooth_strings_es.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_es.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Tablet (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Dispositivo desconocido o no compatible (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, módem</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" /> (dispositivo de audio de coche)</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, teclado</translation>
 <translation id="654594702871184195">Audio (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Ordenador (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Vídeo (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Ratón (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, tipo de dispositivo desconocido</translation>
+<translation id="907431882454731668">Periférico (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Teléfono (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_et.xtb b/device/bluetooth/strings/bluetooth_strings_et.xtb
index 73d2c593..1cf4615 100644
--- a/device/bluetooth/strings/bluetooth_strings_et.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_et.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Tahvelarvuti (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Tundmata või toetamata seade (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, modem</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, auto heliseade</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, klaviatuur</translation>
 <translation id="654594702871184195">Heli (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Arvuti (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Video (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Hiir (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, tundmatu seadmetüüp</translation>
+<translation id="907431882454731668">Välisseade (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Telefon (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_fa.xtb b/device/bluetooth/strings/bluetooth_strings_fa.xtb
index 6271423..a2f8df0e 100644
--- a/device/bluetooth/strings/bluetooth_strings_fa.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_fa.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">رایانهٔ لوحی (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">دستگاه ناشناس یا پشتیبانی نشده (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />، مودم</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />، دستگاه صوتی خودرو</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />، صفحه‌کلید</translation>
 <translation id="654594702871184195">صوتی (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">رایانه (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">ویدئو (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">موشواره (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />، نوع دستگاه ناشناس</translation>
+<translation id="907431882454731668">محیطی (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">تلفن (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_fi.xtb b/device/bluetooth/strings/bluetooth_strings_fi.xtb
index a68a63d..2101dbe 100644
--- a/device/bluetooth/strings/bluetooth_strings_fi.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_fi.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Tabletti (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Tuntematon tai ei-tuettu laite (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, modeemi</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, auton äänilaite</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, näppäimistö</translation>
 <translation id="654594702871184195">Ääni (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Tietokone (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Video (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Hiiri (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, tuntematon laitetyyppi</translation>
+<translation id="907431882454731668">Lisälaite (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Puhelin (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_fil.xtb b/device/bluetooth/strings/bluetooth_strings_fil.xtb
index 69d0d6e..8645a2c 100644
--- a/device/bluetooth/strings/bluetooth_strings_fil.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_fil.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Tablet (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Hindi Kilala o Hindi Sinusuportahang Device (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, Modem</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, Audio device sa kotse</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, Keyboard</translation>
 <translation id="654594702871184195">Audio (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Computer (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Video (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Mouse (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, Hindi kilalang uri ng device</translation>
+<translation id="907431882454731668">Peripheral (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Telepono (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_fr-CA.xtb b/device/bluetooth/strings/bluetooth_strings_fr-CA.xtb
index 3acc534a..72dfaab 100644
--- a/device/bluetooth/strings/bluetooth_strings_fr-CA.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_fr-CA.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Tablette (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Appareil inconnu ou non pris en charge (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, modem</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, appareil audio de voiture</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, clavier</translation>
 <translation id="654594702871184195">Appareil audio (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Ordinateur (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Appareil vidéo (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Souris (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, type d'appareil inconnu</translation>
+<translation id="907431882454731668">Périphérique (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Téléphone (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_fr.xtb b/device/bluetooth/strings/bluetooth_strings_fr.xtb
index 0d5748c..be8c6a5 100644
--- a/device/bluetooth/strings/bluetooth_strings_fr.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_fr.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Tablette (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Appareil inconnu ou non compatible (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, modem</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, appareil audio pour automobile</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, clavier</translation>
 <translation id="654594702871184195">Audio (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Ordinateur (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Vidéo (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Souris (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, type d'appareil inconnu</translation>
+<translation id="907431882454731668">Périphérique (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Téléphone (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_gl.xtb b/device/bluetooth/strings/bluetooth_strings_gl.xtb
index 6bc9435b..4ffc20c 100644
--- a/device/bluetooth/strings/bluetooth_strings_gl.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_gl.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Tableta (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Dispositivo descoñecido ou non compatible (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, módem</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, dispositivo de audio para coche</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, teclado</translation>
 <translation id="654594702871184195">Audio (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Ordenador (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Vídeo (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Rato (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, tipo de dispositivo descoñecido</translation>
+<translation id="907431882454731668">Periférico (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Teléfono (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_gu.xtb b/device/bluetooth/strings/bluetooth_strings_gu.xtb
index 4162fc8..b8e32a32 100644
--- a/device/bluetooth/strings/bluetooth_strings_gu.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_gu.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">ટૅબ્લેટ (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">અજ્ઞાત અથવા અનસપોર્ટેડ ઉપકરણ (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, મોડેમ</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, કાર ઑડિયો ડિવાઇસ</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, કીબોર્ડ</translation>
 <translation id="654594702871184195">ઓડિઓ (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">કમ્પ્યુટર (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">વીડિયો (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">માઉસ (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, ડિવાઇસનો પ્રકાર અજાણ</translation>
+<translation id="907431882454731668">પેરિફેરલ (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">ફોન (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_hr.xtb b/device/bluetooth/strings/bluetooth_strings_hr.xtb
index b596f25..df152b7b 100644
--- a/device/bluetooth/strings/bluetooth_strings_hr.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_hr.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Tabletno računalo (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Nepoznat ili nepodržan uređaj (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, modem</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, automobilski audiouređaj</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, tipkovnica</translation>
 <translation id="654594702871184195">Zvučni sadržaj (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Računalo (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Videosadržaj (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Miš (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, nepoznata vrsta uređaja</translation>
+<translation id="907431882454731668">Periferni (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Telefon (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_hu.xtb b/device/bluetooth/strings/bluetooth_strings_hu.xtb
index 7e4a03c..b5184ec0 100644
--- a/device/bluetooth/strings/bluetooth_strings_hu.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_hu.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Táblagép (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Ismeretlen vagy nem támogatott eszköz (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, modem</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, autós audioeszköz</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, billentyűzet</translation>
 <translation id="654594702871184195">Hangeszköz (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Számítógép (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Videoeszköz (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Egér (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, ismeretlen eszköztípus</translation>
+<translation id="907431882454731668">Periféria (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Telefonszám (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_hy.xtb b/device/bluetooth/strings/bluetooth_strings_hy.xtb
index 9b2091b..ed2eaa9 100644
--- a/device/bluetooth/strings/bluetooth_strings_hy.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_hy.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Գրասալիկ (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Անհայտ կամ չաջակցվող սարք (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, մոդեմ</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, ավտոմեքենայի աուդիո սարք</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, ստեղնաշար</translation>
 <translation id="654594702871184195">Աուդիո սարք (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Համակարգիչ (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Վիդեո սարք (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Մկնիկ (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, անհայտ սարք</translation>
+<translation id="907431882454731668">Արտաքին սարք (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Հեռախոս (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_id.xtb b/device/bluetooth/strings/bluetooth_strings_id.xtb
index 288f39a6e..1842b5b9 100644
--- a/device/bluetooth/strings/bluetooth_strings_id.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_id.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Tablet (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Perangkat Tidak Dikenal atau Tidak Didukung (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, Modem</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, Perangkat audio mobil</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, Keyboard</translation>
 <translation id="654594702871184195">Audio (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Komputer (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Video (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Mouse (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, Jenis perangkat tidak diketahui</translation>
+<translation id="907431882454731668">Periferal (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Ponsel (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_is.xtb b/device/bluetooth/strings/bluetooth_strings_is.xtb
index 2168387..40e3799f 100644
--- a/device/bluetooth/strings/bluetooth_strings_is.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_is.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Spjaldtölva (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Óþekkt eða óstutt tæki (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, mótald</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, hljómtæki í bíl</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, lyklaborð</translation>
 <translation id="654594702871184195">Hljóð (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Tölva (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Skjár (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Mús (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, óþekkt tegund tækis</translation>
+<translation id="907431882454731668">Jaðartæki (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Sími (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_iw.xtb b/device/bluetooth/strings/bluetooth_strings_iw.xtb
index b116165..faa35ed 100644
--- a/device/bluetooth/strings/bluetooth_strings_iw.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_iw.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">טאבלט (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">מכשיר לא ידוע או שאינו נתמך (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, מודם</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, התקן אודיו לרכב</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, מקלדת</translation>
 <translation id="654594702871184195">אודיו (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">מחשב (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">וידאו (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">עכבר (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, מכשיר/התקן לא ידוע</translation>
+<translation id="907431882454731668">ציוד היקפי (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">טלפון (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_ja.xtb b/device/bluetooth/strings/bluetooth_strings_ja.xtb
index 481b871..05304793 100644
--- a/device/bluetooth/strings/bluetooth_strings_ja.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_ja.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">タブレット(<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">不明またはサポートされていないデバイス(<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />、モデム</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />、カーオーディオ機器</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />、キーボード</translation>
 <translation id="654594702871184195">オーディオ(<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">コンピュータ(<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">動画(<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">マウス(<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />、不明なデバイスタイプ</translation>
+<translation id="907431882454731668">周辺機器(<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">電話(<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_ka.xtb b/device/bluetooth/strings/bluetooth_strings_ka.xtb
index 8c95abd..0f55716 100644
--- a/device/bluetooth/strings/bluetooth_strings_ka.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_ka.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">ტაბლეტი (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">უცნობი ან მხარდაჭერის არმქონე მოწყობილობა (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, მოდემი</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, მანქანის აუდიომოწყობილობა</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, კლავიატურა</translation>
 <translation id="654594702871184195">აუდიო (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">კომპიუტერი (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">ვიდეო (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">მაუსი (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, მოწყობილობის ტიპი უცნობია</translation>
+<translation id="907431882454731668">პერიფერიული (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">ტელეფონი (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_kk.xtb b/device/bluetooth/strings/bluetooth_strings_kk.xtb
index aebc513..3a5394d 100644
--- a/device/bluetooth/strings/bluetooth_strings_kk.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_kk.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Планшет (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Белгісіз немесе қолдау көрсетілмеген құрылғы (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, модем</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, көліктің аудио құрылғысы</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, пернетақта</translation>
 <translation id="654594702871184195">Аудио (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Компьютер (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Бейне (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Тінтуір (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, белгісіз құрылғы түрі</translation>
+<translation id="907431882454731668">(<ph name="ADDRESS" />), перифериялық құрылғы</translation>
 <translation id="978248992969828584">Телефон (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_kn.xtb b/device/bluetooth/strings/bluetooth_strings_kn.xtb
index 8722701..83d67ea6 100644
--- a/device/bluetooth/strings/bluetooth_strings_kn.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_kn.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">ಟ್ಯಾಬ್ಲೆಟ್ (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">ಅಪರಿಚಿತ ಅಥವಾ ಬೆಂಬಲಿತವಲ್ಲದ ಸಾಧನ (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, ಮೋಡೆಮ್</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, ಕಾರ್ ಆಡಿಯೋ ಸಾಧನ</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, ಕೀಬೋರ್ಡ್</translation>
 <translation id="654594702871184195">ಆಡಿಯೊ (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">ಕಂಪ್ಯೂಟರ್ (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">ವೀಡಿಯೊ (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">ಮೌಸ್ (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, ಅಪರಿಚಿತ ಸಾಧನದ ಪ್ರಕಾರ</translation>
+<translation id="907431882454731668">ಪೆರಿಫರಲ್ (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">ಫೋನ್ (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_ko.xtb b/device/bluetooth/strings/bluetooth_strings_ko.xtb
index 857b617..6a5163e 100644
--- a/device/bluetooth/strings/bluetooth_strings_ko.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_ko.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">태블릿(<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">알 수 없거나 지원되지 않는 기기(<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, 모뎀</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, 차량 오디오 기기</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, 키보드</translation>
 <translation id="654594702871184195">오디오(<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">컴퓨터(<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">동영상(<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">마우스(<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, 알 수 없는 기기 유형</translation>
+<translation id="907431882454731668">주변기기(<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">전화(<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_ky.xtb b/device/bluetooth/strings/bluetooth_strings_ky.xtb
index 650ab5ab..5049db5 100644
--- a/device/bluetooth/strings/bluetooth_strings_ky.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_ky.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Планшет (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Белгисиз же колдоого алынбаган түзмөк (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, Модем</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, Унаадагы аудио түзмөк</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, Баскычтоп</translation>
 <translation id="654594702871184195">Аудио түзмөк (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Компьютер (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Видео (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Чычкан (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, Белгисиз түзмөктүн түрү</translation>
+<translation id="907431882454731668">Сырткы түзмөк (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Телефон (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_lo.xtb b/device/bluetooth/strings/bluetooth_strings_lo.xtb
index 9311c5b..c48a8a2 100644
--- a/device/bluetooth/strings/bluetooth_strings_lo.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_lo.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">ແທັບເລັດ (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">ອຸປະກອນທີ່ບໍ່ຮູ້ຈັກ ຫຼືບໍ່ຮອງຮັບ (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, ໂມເດັມ</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, ເຄື່ອງສຽງຂອງລົດ</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, ແປ້ນພິມ</translation>
 <translation id="654594702871184195">ສຽງ (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">ຄອມພິວເຕີ (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">ວິດີໂອ (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">ເມົາສ໌ (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, ປະເພດອຸປະກອນທີ່ບໍ່ຮູ້ຈັກ</translation>
+<translation id="907431882454731668">ອຸປະກອນຕໍ່ພ່ວງ (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">ໂທລະ​ສັບ (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_lt.xtb b/device/bluetooth/strings/bluetooth_strings_lt.xtb
index abaf473..f70e3fa 100644
--- a/device/bluetooth/strings/bluetooth_strings_lt.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_lt.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Planšetinis kompiuteris (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Nežinomas arba nepalaikomas įrenginys (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618">„<ph name="DEVICE_NAME" />“, modemas</translation>
+<translation id="6459740836740815150">„<ph name="DEVICE_NAME" />“, automobilio garso įrenginys</translation>
 <translation id="6542922424766292144">„<ph name="DEVICE_NAME" />“, klaviatūra</translation>
 <translation id="654594702871184195">Garso įrašas (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Kompiuteris (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Vaizdo įrašas (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Pelė (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648">„<ph name="DEVICE_NAME" />“, nežinomas įrenginio tipas</translation>
+<translation id="907431882454731668">Išorinis įrenginys (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Telefonas (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_lv.xtb b/device/bluetooth/strings/bluetooth_strings_lv.xtb
index 0b34e57..28d7387 100644
--- a/device/bluetooth/strings/bluetooth_strings_lv.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_lv.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Planšetdators (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Nezināma vai neatbalstīta ierīce (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, modems</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, automašīnas audioierīce</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, tastatūra</translation>
 <translation id="654594702871184195">Audio (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Dators (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Video (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Pele (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, nezināms ierīces veids</translation>
+<translation id="907431882454731668">Perifērijas ierīce (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Tālrunis (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_mk.xtb b/device/bluetooth/strings/bluetooth_strings_mk.xtb
index 84c30168..029741f2 100644
--- a/device/bluetooth/strings/bluetooth_strings_mk.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_mk.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Таблет (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Непознат или неподдржан уред (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, модем</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, аудиоуред за автомобил</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, тастатура</translation>
 <translation id="654594702871184195">Аудио (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Компјутер (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Видео (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Глувче (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, непознат тип уред</translation>
+<translation id="907431882454731668">Периферен уред (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Телефон (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_mn.xtb b/device/bluetooth/strings/bluetooth_strings_mn.xtb
index 6484485a..132db7a 100644
--- a/device/bluetooth/strings/bluetooth_strings_mn.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_mn.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Таблет (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Үл мэдэгдэх, эсвэл дэмжигдээгүй төхөөрөмж (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, модем</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, машины аудио төхөөрөмж</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, гар</translation>
 <translation id="654594702871184195">Аудио (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Компьютер (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Видео (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Хулгана (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, үл мэдэгдэх төхөөрөмжийн төрөл</translation>
+<translation id="907431882454731668">Нэмэлт (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Гар утас (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_ms.xtb b/device/bluetooth/strings/bluetooth_strings_ms.xtb
index 82e55008..41664f3 100644
--- a/device/bluetooth/strings/bluetooth_strings_ms.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_ms.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Tablet (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Peranti Tdak Diketahui atau Tidak Disokong (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, Modem</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, Peranti audio kereta</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, Papan kekunci</translation>
 <translation id="654594702871184195">Audio (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Komputer (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Video (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Tetikus (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, Jenis peranti tidak diketahui</translation>
+<translation id="907431882454731668">Persisian (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Telefon (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_my.xtb b/device/bluetooth/strings/bluetooth_strings_my.xtb
index 42f38112..6f8f690 100644
--- a/device/bluetooth/strings/bluetooth_strings_my.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_my.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">တက်ဘလက် ( <ph name="ADDRESS" /> )</translation>
 <translation id="5376363957846771741">အမည်မသိရ သို့မဟုတ် ပံ့ပိုးမပေးသည့် ကိရိယာ ( <ph name="ADDRESS" /> )</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />၊ မိုဒမ်</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />၊ ကား အသံစက်ပစ္စည်း</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />၊ ကီးဘုတ်</translation>
 <translation id="654594702871184195">အသံ ( <ph name="ADDRESS" /> )</translation>
 <translation id="6744468237221042970">ကွန်ပျူတာ ( <ph name="ADDRESS" /> )</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">ဗီဒီယို ( <ph name="ADDRESS" /> )</translation>
 <translation id="8952558712545617651">မောက်စ် ( <ph name="ADDRESS" /> )</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />၊ အမျိုးအမည်မသိ စက်အမျိုးအစား</translation>
+<translation id="907431882454731668">ချိတ်ဆက်ပစ္စည်း (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">ဖုန်း ( <ph name="ADDRESS" /> )</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_ne.xtb b/device/bluetooth/strings/bluetooth_strings_ne.xtb
index eef71e6..09fa219 100644
--- a/device/bluetooth/strings/bluetooth_strings_ne.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_ne.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">ट्याब्लेट (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">अज्ञात वा समर्थन नभएको यन्त्र ( <ph name="ADDRESS" /> )</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, मोडेम</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, कारको अडियो यन्त्र</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, किबोर्ड</translation>
 <translation id="654594702871184195">अडियो (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">कम्प्युटर (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">भिडियो (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">माउस (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, अज्ञात प्रकारको यन्त्र</translation>
+<translation id="907431882454731668">परिधीय (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">फोन (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_no.xtb b/device/bluetooth/strings/bluetooth_strings_no.xtb
index d44e3c28..21da0e43 100644
--- a/device/bluetooth/strings/bluetooth_strings_no.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_no.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Nettbrett (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Ukjent eller ikke-støttet enhet (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" /> – modem</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" /> – lydenhet for bil</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" /> – tastatur</translation>
 <translation id="654594702871184195">Lyd (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Datamaskin (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Video (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Mus (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" /> – ukjent enhetstype</translation>
+<translation id="907431882454731668">Ekstern enhet (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Telefon (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_or.xtb b/device/bluetooth/strings/bluetooth_strings_or.xtb
index fa940df..38986ca 100644
--- a/device/bluetooth/strings/bluetooth_strings_or.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_or.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">ଟାବଲେଟ୍ (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">ଅଜଣା କିମ୍ବା ଅସମର୍ଥିତ ଡିଭାଇସ୍‌ (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, ମୋଡେମ୍</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, କାରର ଅଡିଓ ଡିଭାଇସ୍</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, କୀବୋର୍ଡ</translation>
 <translation id="654594702871184195">ଅଡିଓ (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">କମ୍ପ୍ୟୁଟର୍ (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">ଭିଡିଓ (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">ମାଉସ୍ (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, ଅଜଣା ଡିଭାଇସ୍ ପ୍ରକାର</translation>
+<translation id="907431882454731668">ପେରିଫେରାଲ୍ (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">ଫୋନ୍ (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_pl.xtb b/device/bluetooth/strings/bluetooth_strings_pl.xtb
index 5f2efdabb..c2fb8377 100644
--- a/device/bluetooth/strings/bluetooth_strings_pl.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_pl.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Tablet (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Nieznane lub nieobsługiwane urządzenie (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, modem</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, samochodowe urządzenie audio</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, klawiatura</translation>
 <translation id="654594702871184195">Dźwiękowe (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Komputer (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Wideo (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Mysz (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, nieznany typ urządzenia</translation>
+<translation id="907431882454731668">Urządzenie peryferyjne (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Telefon (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_pt-BR.xtb b/device/bluetooth/strings/bluetooth_strings_pt-BR.xtb
index b68893f..905f543 100644
--- a/device/bluetooth/strings/bluetooth_strings_pt-BR.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_pt-BR.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Tablet (<ph name="ADDRESS" />​​)</translation>
 <translation id="5376363957846771741">Dispositivo desconhecido ou não suportado (<ph name="ADDRESS" />​)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, modem</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, dispositivo de áudio do carro</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, teclado</translation>
 <translation id="654594702871184195">Áudio (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Computador (<ph name="ADDRESS" />​)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Vídeo (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Mouse (<ph name="ADDRESS" />​​)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, tipo de dispositivo desconhecido</translation>
+<translation id="907431882454731668">Periférico (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Telefone (<ph name="ADDRESS" />​​)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_pt-PT.xtb b/device/bluetooth/strings/bluetooth_strings_pt-PT.xtb
index 1f3401fa..14a56c6 100644
--- a/device/bluetooth/strings/bluetooth_strings_pt-PT.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_pt-PT.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Tablet (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Aparelho Desconhecido ou Não Suportado (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, modem</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, dispositivo de áudio do automóvel</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, teclado</translation>
 <translation id="654594702871184195">Áudio (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Computador (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Vídeo (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Rato (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, tipo de dispositivo desconhecido</translation>
+<translation id="907431882454731668">Periférico (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Telefone (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_ro.xtb b/device/bluetooth/strings/bluetooth_strings_ro.xtb
index 816756c1..7238ae15 100644
--- a/device/bluetooth/strings/bluetooth_strings_ro.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_ro.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Tabletă (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Dispozitiv necunoscut sau neacceptat (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, modem</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, dispozitiv audio pentru mașină</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, tastatură</translation>
 <translation id="654594702871184195">Audio (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Computer (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Video (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Mouse (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, tip de dispozitiv necunoscut</translation>
+<translation id="907431882454731668">Dispozitiv periferic (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Telefon (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_ru.xtb b/device/bluetooth/strings/bluetooth_strings_ru.xtb
index d31cdd9..b3ccef3 100644
--- a/device/bluetooth/strings/bluetooth_strings_ru.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_ru.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Планшетный ПК (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Неизвестное или неподдерживаемое устройство (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, модем</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, автомобильное аудиоустройство</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, клавиатура</translation>
 <translation id="654594702871184195">Аудиоустройство (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Компьютер (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Видеоустройство (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Мышь (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, неизвестный тип устройства</translation>
+<translation id="907431882454731668">Периферийное устройство (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Телефон (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_sl.xtb b/device/bluetooth/strings/bluetooth_strings_sl.xtb
index 8d74bcea..17f3fdd2 100644
--- a/device/bluetooth/strings/bluetooth_strings_sl.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_sl.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Tablični računalnik (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Neznana ali nepodprta naprava (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, modem</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, naprava za zvok v avtomobilu</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, tipkovnica</translation>
 <translation id="654594702871184195">Zvok (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Računalnik (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Video (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Miška (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, neznana vrsta naprave</translation>
+<translation id="907431882454731668">Zunanja dodatna oprema (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Telefon (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_sq.xtb b/device/bluetooth/strings/bluetooth_strings_sq.xtb
index 6f6fc491..76adae4 100644
--- a/device/bluetooth/strings/bluetooth_strings_sq.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_sq.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Tableti (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Pajisje e panjohur ose e pambështetur (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, modem</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, pajisje audio makine</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, tastierë</translation>
 <translation id="654594702871184195">Audioja (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Kompjuteri (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Videoja (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Miu (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, pajisje e panjohur</translation>
+<translation id="907431882454731668">Pajisje periferike (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Telefoni (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_sr.xtb b/device/bluetooth/strings/bluetooth_strings_sr.xtb
index dbcc5722..fc274c890 100644
--- a/device/bluetooth/strings/bluetooth_strings_sr.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_sr.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Таблет (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Непознат или неподржан уређај (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, модем</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, аудио уређај у аутомобилу</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, тастатура</translation>
 <translation id="654594702871184195">Аудио (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Рачунар (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Видео (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Миш (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, непознат тип уређаја</translation>
+<translation id="907431882454731668">Периферни (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Телефон (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_sv.xtb b/device/bluetooth/strings/bluetooth_strings_sv.xtb
index 6afeeb5..2a7df3fc 100644
--- a/device/bluetooth/strings/bluetooth_strings_sv.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_sv.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Surfplatta (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Enheten är okänd eller stöds inte (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, modem</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, ljudenhet för bil</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, tangentbord</translation>
 <translation id="654594702871184195">Ljud (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Dator (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Video (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Mus (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, okänd enhetstyp</translation>
+<translation id="907431882454731668">Kringutrustning (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Telefon (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_te.xtb b/device/bluetooth/strings/bluetooth_strings_te.xtb
index a48332d9c..c53ec0b 100644
--- a/device/bluetooth/strings/bluetooth_strings_te.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_te.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">టాబ్లెట్ (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">తెలియని లేదా మద్దతు లేని పరికరం (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, మోడెమ్</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, కారు ఆడియో పరికరం</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, కీబోర్డ్</translation>
 <translation id="654594702871184195">ఆడియో (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">కంప్యూటర్ (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">వీడియో (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">మౌస్ (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, తెలియని పరికర రకం</translation>
+<translation id="907431882454731668">పెరిఫెరల్ (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">ఫోన్ (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_th.xtb b/device/bluetooth/strings/bluetooth_strings_th.xtb
index 5a27580a..432af8b 100644
--- a/device/bluetooth/strings/bluetooth_strings_th.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_th.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">แท็บเล็ต (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">อุปกรณ์ที่ไม่รู้จักหรือไม่สนับสนุน (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, โมเด็ม</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" /> อุปกรณ์เสียงของรถยนต์</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, แป้นพิมพ์</translation>
 <translation id="654594702871184195">เสียง (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">คอมพิวเตอร์ (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">วิดีโอ (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">เมาส์ (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, ไม่ทราบประเภทอุปกรณ์</translation>
+<translation id="907431882454731668">อุปกรณ์ต่อพ่วง (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">โทรศัพท์ (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_tr.xtb b/device/bluetooth/strings/bluetooth_strings_tr.xtb
index ae7906c..9476c2413 100644
--- a/device/bluetooth/strings/bluetooth_strings_tr.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_tr.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Tablet (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Bilinmeyen veya Desteklenmeyen Cihaz (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, Modem</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, Araba ses sistemi</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, Klavye</translation>
 <translation id="654594702871184195">Ses cihazı (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Bilgisayar (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Video (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Fare (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, Bilinmeyen cihaz türü</translation>
+<translation id="907431882454731668">Çevre birimi (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Telefon (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_uk.xtb b/device/bluetooth/strings/bluetooth_strings_uk.xtb
index 0885a9e4..6343496 100644
--- a/device/bluetooth/strings/bluetooth_strings_uk.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_uk.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Планшетний ПК (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Невідомий чи непідтримуваний пристрій (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, модем</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, аудіопристрій для автомобілів</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, клавіатура</translation>
 <translation id="654594702871184195">Аудіо (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Комп’ютер (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Відео (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Миша (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, невідомий тип пристрою</translation>
+<translation id="907431882454731668">Периферійний пристрій (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Телефон (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_ur.xtb b/device/bluetooth/strings/bluetooth_strings_ur.xtb
index f7caf09..c5f9e282 100644
--- a/device/bluetooth/strings/bluetooth_strings_ur.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_ur.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">ٹیبلیٹ (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">نامعلوم یا غیر تعاون یافتہ آلہ (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />، موڈم</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />، کار کا آڈیو آلہ</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />، کی بورڈ</translation>
 <translation id="654594702871184195">آڈیو (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">کمپیوٹر (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">ویڈیو(<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">ماؤس (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />، آلہ کی نامعلوم قسم</translation>
+<translation id="907431882454731668">پیریفرل (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">فون (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_uz.xtb b/device/bluetooth/strings/bluetooth_strings_uz.xtb
index 7ab861c..744cdf66 100644
--- a/device/bluetooth/strings/bluetooth_strings_uz.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_uz.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Planshet (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Noma’lum yoki qo‘llab-quvvatlanmaydigan qurilma (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, Modem</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, avtomobil audio qurilmasi</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, Klaviatura</translation>
 <translation id="654594702871184195">Audio qurilma (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Kompyuter (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Video qurilma (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Sichqoncha (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, Notanish turdagi qurilma</translation>
+<translation id="907431882454731668">Tashqi qurilma (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Telefon (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_zh-CN.xtb b/device/bluetooth/strings/bluetooth_strings_zh-CN.xtb
index 4a3ffcb..d7a1d26 100644
--- a/device/bluetooth/strings/bluetooth_strings_zh-CN.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_zh-CN.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">平板电脑 (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">未知或不支持的设备 (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />,调制解调器</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />,汽车音频设备</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />,键盘</translation>
 <translation id="654594702871184195">音频 (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">计算机 (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">视频 (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">鼠标 (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />,不明的设备类型</translation>
+<translation id="907431882454731668">外围设备 (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">手机 (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_zh-HK.xtb b/device/bluetooth/strings/bluetooth_strings_zh-HK.xtb
index 9803c17..49fa0955 100644
--- a/device/bluetooth/strings/bluetooth_strings_zh-HK.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_zh-HK.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">平板電腦 (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">不明的或不支援的裝置 (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />,數據機</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />,汽車音訊裝置</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />,鍵盤</translation>
 <translation id="654594702871184195">音訊 (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">電腦 (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">視訊 (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">滑鼠 (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />,不明嘅裝置類型</translation>
+<translation id="907431882454731668">周邊裝置 (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">手機 (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_zh-TW.xtb b/device/bluetooth/strings/bluetooth_strings_zh-TW.xtb
index ce17181..bfceb43 100644
--- a/device/bluetooth/strings/bluetooth_strings_zh-TW.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_zh-TW.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">平板電腦 (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">不明的或不支援的裝置 (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />,數據機</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />,汽車音訊裝置</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />,鍵盤</translation>
 <translation id="654594702871184195">音訊 (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">電腦 (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">視訊 (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">滑鼠 (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />,不明的裝置類型</translation>
+<translation id="907431882454731668">周邊裝置 (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">手機 (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/bluetooth/strings/bluetooth_strings_zu.xtb b/device/bluetooth/strings/bluetooth_strings_zu.xtb
index e327976..44b22aa 100644
--- a/device/bluetooth/strings/bluetooth_strings_zu.xtb
+++ b/device/bluetooth/strings/bluetooth_strings_zu.xtb
@@ -17,6 +17,7 @@
 <translation id="5271696982761495740">Ithebhulethi (<ph name="ADDRESS" />)</translation>
 <translation id="5376363957846771741">Idivayisi engaziwa noma engasekelwe (<ph name="ADDRESS" />)</translation>
 <translation id="5716052956047449618"><ph name="DEVICE_NAME" />, imodemu</translation>
+<translation id="6459740836740815150"><ph name="DEVICE_NAME" />, idivayisi yomsindo wemoto</translation>
 <translation id="6542922424766292144"><ph name="DEVICE_NAME" />, Ikhibhodi</translation>
 <translation id="654594702871184195">Umsindo (<ph name="ADDRESS" />)</translation>
 <translation id="6744468237221042970">Ikhompyutha (<ph name="ADDRESS" />)</translation>
@@ -26,5 +27,6 @@
 <translation id="8866374292072238753">Ividiyo (<ph name="ADDRESS" />)</translation>
 <translation id="8952558712545617651">Imawuzi (<ph name="ADDRESS" />)</translation>
 <translation id="8961448405689538648"><ph name="DEVICE_NAME" />, Uhlobo lwedivayisi olungaziwa</translation>
+<translation id="907431882454731668">I-Peripheral (<ph name="ADDRESS" />)</translation>
 <translation id="978248992969828584">Ifoni (<ph name="ADDRESS" />)</translation>
 </translationbundle>
\ No newline at end of file
diff --git a/device/fido/hid/fido_hid_discovery.cc b/device/fido/hid/fido_hid_discovery.cc
index 80961248..01cb682 100644
--- a/device/fido/hid/fido_hid_discovery.cc
+++ b/device/fido/hid/fido_hid_discovery.cc
@@ -9,7 +9,6 @@
 #include "base/bind.h"
 #include "base/no_destructor.h"
 #include "device/fido/hid/fido_hid_device.h"
-#include "services/device/public/mojom/constants.mojom.h"
 
 namespace device {
 
diff --git a/device/fido/hid/fido_hid_discovery_unittest.cc b/device/fido/hid/fido_hid_discovery_unittest.cc
index 140a94f..f38ed4e 100644
--- a/device/fido/hid/fido_hid_discovery_unittest.cc
+++ b/device/fido/hid/fido_hid_discovery_unittest.cc
@@ -14,7 +14,6 @@
 #include "device/fido/hid/fake_hid_impl_for_testing.h"
 #include "device/fido/hid/fido_hid_device.h"
 #include "device/fido/mock_fido_discovery_observer.h"
-#include "services/device/public/mojom/constants.mojom.h"
 #include "services/device/public/mojom/hid.mojom.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
diff --git a/docs/updating_clang.md b/docs/updating_clang.md
index 2940109..c21f5114 100644
--- a/docs/updating_clang.md
+++ b/docs/updating_clang.md
@@ -60,30 +60,6 @@
       -b linux-chromeos-chrome
     ```
 
-1.  Optional: Start Pinpoint perf tryjobs. These are generally too noisy to
-    catch minor regressions pre-commit, but make sure there are no large
-    regressions.
-
-    a.  (Log in to store OAuth2 token in the depot_tools cache. Only needs to be
-        run once:)
-
-        $ PYTHONPATH=$(dirname $(which git-cl)) python -c"import auth;auth.OAUTH_CLIENT_ID='62121018386-h08uiaftreu4dr3c4alh3l7mogskvb7i.apps.googleusercontent.com';auth.OAUTH_CLIENT_SECRET='vc1fZfV1cZC6mgDSHV-KSPOz';print auth.get_authenticator_for_host('pinpoint',auth.make_auth_config()).login()"
-
-    b.  Generate a fresh Oauth2 token:
-
-        $ TOKEN=$(PYTHONPATH=$(dirname $(which git-cl)) python -c"import auth;print auth.get_authenticator_for_host('pinpoint',auth.make_auth_config()).get_access_token().token")
-
-    c.  Launch Pinpoint job:
-
-        $ curl -H"Authorization: Bearer $TOKEN" -F configuration=chromium-rel-win7-gpu-nvidia \
-            -F target=performance_test_suite -F benchmark=speedometer2 \
-            -F patch=https://chromium-review.googlesource.com/c/chromium/src/+/$(git cl issue | cut -d' ' -f3) \
-            -F start_git_hash=HEAD -F end_git_hash=HEAD https://pinpoint-dot-chromeperf.appspot.com/api/new
-
-    d.  Use the URL returned by the command above to see the progress and result
-        of the tryjob, checking that it doesn't regress significantly (> 10%).
-        Post the URL to the codereview.
-
 1.  Commit roll CL from the first step
 1.  The bots will now pull the prebuilt binary, and goma will have a matching
     binary, too.
diff --git a/extensions/browser/api/web_request/web_request_info.cc b/extensions/browser/api/web_request/web_request_info.cc
index 68e0c48b..54cd9f5 100644
--- a/extensions/browser/api/web_request/web_request_info.cc
+++ b/extensions/browser/api/web_request/web_request_info.cc
@@ -166,7 +166,7 @@
     base::Optional<int64_t> navigation_id)
     : id(request_id),
       url(request.url),
-      site_for_cookies(request.site_for_cookies),
+      site_for_cookies(request.site_for_cookies.RepresentativeUrl()),
       render_process_id(render_process_id),
       routing_id(routing_id),
       frame_id(render_frame_id),
diff --git a/extensions/browser/api/web_request/web_request_proxying_url_loader_factory.cc b/extensions/browser/api/web_request/web_request_proxying_url_loader_factory.cc
index 38f1a7b5..481a45d 100644
--- a/extensions/browser/api/web_request/web_request_proxying_url_loader_factory.cc
+++ b/extensions/browser/api/web_request/web_request_proxying_url_loader_factory.cc
@@ -460,7 +460,8 @@
   redirect_info.status_code = kInternalRedirectStatusCode;
   redirect_info.new_method = request_.method;
   redirect_info.new_url = redirect_url_;
-  redirect_info.new_site_for_cookies = redirect_url_;
+  redirect_info.new_site_for_cookies =
+      net::SiteForCookies::FromUrl(redirect_url_);
 
   auto head = network::mojom::URLResponseHead::New();
   std::string headers = base::StringPrintf(
@@ -809,7 +810,7 @@
     redirect_info.status_code = override_headers_->response_code();
     redirect_info.new_method = request_.method;
     redirect_info.new_url = new_url;
-    redirect_info.new_site_for_cookies = new_url;
+    redirect_info.new_site_for_cookies = net::SiteForCookies::FromUrl(new_url);
 
     // These will get re-bound if a new request is initiated by
     // |FollowRedirect()|.
diff --git a/extensions/browser/api/web_request/web_request_proxying_websocket.cc b/extensions/browser/api/web_request/web_request_proxying_websocket.cc
index ec85efd..77347ec 100644
--- a/extensions/browser/api/web_request/web_request_proxying_websocket.cc
+++ b/extensions/browser/api/web_request/web_request_proxying_websocket.cc
@@ -282,7 +282,7 @@
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
   network::ResourceRequest request;
   request.url = url;
-  request.site_for_cookies = site_for_cookies;
+  request.site_for_cookies = net::SiteForCookies::FromUrl(site_for_cookies);
   if (user_agent) {
     request.headers.SetHeader(net::HttpRequestHeaders::kUserAgent, *user_agent);
   }
diff --git a/extensions/browser/guest_view/web_view/web_view_guest.cc b/extensions/browser/guest_view/web_view/web_view_guest.cc
index 7ab074a4..445dba49 100644
--- a/extensions/browser/guest_view/web_view/web_view_guest.cc
+++ b/extensions/browser/guest_view/web_view/web_view_guest.cc
@@ -371,7 +371,7 @@
     // Create the SiteInstance in a new BrowsingInstance, which will ensure
     // that webview tags are also not allowed to send messages across
     // different partitions.
-    guest_site_instance = content::SiteInstance::CreateForURL(
+    guest_site_instance = content::SiteInstance::CreateForGuest(
         owner_render_process_host->GetBrowserContext(), guest_site);
   }
   WebContents::CreateParams params(
diff --git a/extensions/browser/process_manager.cc b/extensions/browser/process_manager.cc
index 6c235f6a..3c02c62 100644
--- a/extensions/browser/process_manager.cc
+++ b/extensions/browser/process_manager.cc
@@ -37,6 +37,7 @@
 #include "extensions/browser/extension_host.h"
 #include "extensions/browser/extension_registry.h"
 #include "extensions/browser/extension_system.h"
+#include "extensions/browser/extension_util.h"
 #include "extensions/browser/extensions_browser_client.h"
 #include "extensions/browser/lazy_context_id.h"
 #include "extensions/browser/lazy_context_task_queue.h"
@@ -771,8 +772,7 @@
 
   std::string request_uuid = base::GenerateGUID();
   content::ServiceWorkerContext* service_worker_context =
-      content::BrowserContext::GetStoragePartitionForSite(browser_context_,
-                                                          extension->url())
+      util::GetStoragePartitionForExtensionId(extension->id(), browser_context_)
           ->GetServiceWorkerContext();
 
   if (content::ServiceWorkerContext::IsServiceWorkerOnUIEnabled()) {
@@ -837,8 +837,7 @@
 
   int64_t service_worker_version_id = worker_id.version_id;
   content::ServiceWorkerContext* service_worker_context =
-      content::BrowserContext::GetStoragePartitionForSite(browser_context_,
-                                                          extension->url())
+      util::GetStoragePartitionForExtensionId(extension->id(), browser_context_)
           ->GetServiceWorkerContext();
 
   if (content::ServiceWorkerContext::IsServiceWorkerOnUIEnabled()) {
diff --git a/extensions/browser/service_worker_manager.cc b/extensions/browser/service_worker_manager.cc
index cc80965..b066e54f 100644
--- a/extensions/browser/service_worker_manager.cc
+++ b/extensions/browser/service_worker_manager.cc
@@ -9,6 +9,7 @@
 #include "content/public/browser/browser_context.h"
 #include "content/public/browser/service_worker_context.h"
 #include "content/public/browser/storage_partition.h"
+#include "extensions/browser/extension_util.h"
 
 namespace extensions {
 
@@ -24,8 +25,7 @@
     content::BrowserContext* browser_context,
     const Extension* extension,
     UnloadedExtensionReason reason) {
-  content::BrowserContext::GetStoragePartitionForSite(browser_context_,
-                                                      extension->url())
+  util::GetStoragePartitionForExtensionId(extension->id(), browser_context_)
       ->GetServiceWorkerContext()
       ->StopAllServiceWorkersForOrigin(extension->url());
 }
@@ -38,8 +38,7 @@
   // a) Keep track of extensions with registered service workers.
   // b) Add a callback to the (Un)SuspendServiceWorkersOnOrigin() method.
   // c) Check for any orphaned workers.
-  content::BrowserContext::GetStoragePartitionForSite(browser_context_,
-                                                      extension->url())
+  util::GetStoragePartitionForExtensionId(extension->id(), browser_context_)
       ->GetServiceWorkerContext()
       ->DeleteForOrigin(extension->url(), base::DoNothing());
 }
diff --git a/extensions/browser/service_worker_task_queue.cc b/extensions/browser/service_worker_task_queue.cc
index 9551b18..ec55c41 100644
--- a/extensions/browser/service_worker_task_queue.cc
+++ b/extensions/browser/service_worker_task_queue.cc
@@ -19,6 +19,7 @@
 #include "extensions/browser/event_router.h"
 #include "extensions/browser/extension_prefs.h"
 #include "extensions/browser/extension_registry.h"
+#include "extensions/browser/extension_util.h"
 #include "extensions/browser/process_manager.h"
 #include "extensions/browser/service_worker_task_queue_factory.h"
 #include "extensions/common/constants.h"
@@ -304,8 +305,7 @@
       BackgroundInfo::GetBackgroundServiceWorkerScript(extension));
   blink::mojom::ServiceWorkerRegistrationOptions option;
   option.scope = extension->url();
-  content::BrowserContext::GetStoragePartitionForSite(browser_context_,
-                                                      extension->url())
+  util::GetStoragePartitionForExtensionId(extension->id(), browser_context_)
       ->GetServiceWorkerContext()
       ->RegisterServiceWorker(
           script_url, option,
@@ -338,8 +338,7 @@
       LazyContextId(browser_context_, extension_id, extension->url()),
       *sequence);
 
-  content::BrowserContext::GetStoragePartitionForSite(browser_context_,
-                                                      extension->url())
+  util::GetStoragePartitionForExtensionId(extension->id(), browser_context_)
       ->GetServiceWorkerContext()
       ->UnregisterServiceWorker(
           extension->url(),
@@ -356,9 +355,9 @@
     return;
 
   content::StoragePartition* partition =
-      BrowserContext::GetStoragePartitionForSite(
-          lazy_context_id.browser_context(),
-          lazy_context_id.service_worker_scope());
+      util::GetStoragePartitionForExtensionId(
+          lazy_context_id.extension_id(), lazy_context_id.browser_context());
+
   content::ServiceWorkerContext* service_worker_context =
       partition->GetServiceWorkerContext();
 
diff --git a/extensions/common/api/automation.idl b/extensions/common/api/automation.idl
index 7bfd3c37..4979a511 100644
--- a/extensions/common/api/automation.idl
+++ b/extensions/common/api/automation.idl
@@ -100,7 +100,6 @@
     comboBoxGrouping,
     comboBoxMenuButton,
     comment,
-    commentSection,
     complementary,
     contentDeletion,
     contentInsertion,
@@ -230,7 +229,6 @@
     radioButton,
     radioGroup,
     region,
-    revision,
     rootWebArea,
     row,
     rowGroup,
diff --git a/extensions/renderer/api/automation/automation_ax_tree_wrapper.cc b/extensions/renderer/api/automation/automation_ax_tree_wrapper.cc
index a4305c3..8d2d948 100644
--- a/extensions/renderer/api/automation/automation_ax_tree_wrapper.cc
+++ b/extensions/renderer/api/automation/automation_ax_tree_wrapper.cc
@@ -525,8 +525,6 @@
     case api::automation::EVENT_TYPE_DOCUMENTTITLECHANGED:
     case api::automation::EVENT_TYPE_EXPANDEDCHANGED:
     case api::automation::EVENT_TYPE_INVALIDSTATUSCHANGED:
-    case api::automation::EVENT_TYPE_LIVEREGIONCHANGED:
-    case api::automation::EVENT_TYPE_LIVEREGIONCREATED:
     case api::automation::EVENT_TYPE_LOADCOMPLETE:
     case api::automation::EVENT_TYPE_LOADSTART:
     case api::automation::EVENT_TYPE_ROWCOLLAPSED:
@@ -581,6 +579,8 @@
     case api::automation::EVENT_TYPE_CONTROLSCHANGED:
     case api::automation::EVENT_TYPE_FOCUS:
     case api::automation::EVENT_TYPE_IMAGEFRAMEUPDATED:
+    case api::automation::EVENT_TYPE_LIVEREGIONCHANGED:
+    case api::automation::EVENT_TYPE_LIVEREGIONCREATED:
     case api::automation::EVENT_TYPE_LOCATIONCHANGED:
     case api::automation::EVENT_TYPE_MENUEND:
     case api::automation::EVENT_TYPE_MENULISTITEMSELECTED:
diff --git a/fuchsia/engine/browser/frame_impl_browsertest.cc b/fuchsia/engine/browser/frame_impl_browsertest.cc
index 42c4315..b31c373 100644
--- a/fuchsia/engine/browser/frame_impl_browsertest.cc
+++ b/fuchsia/engine/browser/frame_impl_browsertest.cc
@@ -1495,6 +1495,48 @@
   navigation_listener_.RunUntilUrlAndTitleEquals(page1_url, kPage1Title);
 }
 
+IN_PROC_BROWSER_TEST_F(FrameImplTest, ChildFrameNavigationIgnored) {
+  net::test_server::EmbeddedTestServerHandle test_server_handle;
+  ASSERT_TRUE(test_server_handle =
+                  embedded_test_server()->StartAndReturnHandle());
+  GURL page_url(embedded_test_server()->GetURL("/creates_child_frame.html"));
+
+  // Navigate to a page and wait for the navigation to complete.
+  fuchsia::web::FramePtr frame = CreateFrame();
+  fuchsia::web::NavigationControllerPtr controller;
+  frame->GetNavigationController(controller.NewRequest());
+  EXPECT_TRUE(cr_fuchsia::LoadUrlAndExpectResponse(
+      controller.get(), fuchsia::web::LoadUrlParams(), page_url.spec()));
+  fuchsia::web::NavigationState expected_state;
+  expected_state.set_url(page_url.spec());
+  expected_state.set_title("main frame");
+  expected_state.set_is_main_document_loaded(true);
+  navigation_listener_.RunUntilNavigationStateMatches(
+      std::move(expected_state));
+
+  // Notify the page so that it constructs a child iframe.
+  fuchsia::web::WebMessage message;
+  message.set_data(cr_fuchsia::MemBufferFromString("test", "test"));
+  cr_fuchsia::ResultReceiver<fuchsia::web::Frame_PostMessage_Result>
+      post_result;
+  frame->PostMessage(
+      page_url.GetOrigin().spec(), std::move(message),
+      cr_fuchsia::CallbackToFitFunction(post_result.GetReceiveCallback()));
+
+  navigation_listener_.SetBeforeAckHook(
+      base::BindRepeating([](const fuchsia::web::NavigationState& change,
+                             OnNavigationStateChangedCallback callback) {
+        // The child iframe's loading status should not affect the
+        // is_main_document_loaded() bit.
+        if (change.has_is_main_document_loaded())
+          ADD_FAILURE();
+
+        callback();
+      }));
+
+  navigation_listener_.RunUntilUrlAndTitleEquals(page_url, "iframe loaded");
+}
+
 // Tests SetNavigationEventListener() immediately returns a NavigationEvent,
 // even in the absence of a new navigation.
 IN_PROC_BROWSER_TEST_F(FrameImplTest, ImmediateNavigationEvent) {
diff --git a/fuchsia/engine/browser/navigation_controller_impl.cc b/fuchsia/engine/browser/navigation_controller_impl.cc
index 5f5257b..a2f564a8 100644
--- a/fuchsia/engine/browser/navigation_controller_impl.cc
+++ b/fuchsia/engine/browser/navigation_controller_impl.cc
@@ -237,8 +237,10 @@
 
 void NavigationControllerImpl::DidStartNavigation(
     content::NavigationHandle* navigation_handle) {
-  if (navigation_handle->IsSameDocument())
+  if (!navigation_handle->IsInMainFrame() ||
+      navigation_handle->IsSameDocument()) {
     return;
+  }
 
   is_main_document_loaded_ = false;
   OnNavigationEntryChanged();
diff --git a/fuchsia/engine/test/data/child_frame.html b/fuchsia/engine/test/data/child_frame.html
new file mode 100644
index 0000000..c8a1db2
--- /dev/null
+++ b/fuchsia/engine/test/data/child_frame.html
@@ -0,0 +1,6 @@
+<html>
+  <head><title>child frame</title</head>
+  <body>
+    I am a child.
+  </body>
+</html>
diff --git a/fuchsia/engine/test/data/creates_child_frame.html b/fuchsia/engine/test/data/creates_child_frame.html
new file mode 100644
index 0000000..1277daf2
--- /dev/null
+++ b/fuchsia/engine/test/data/creates_child_frame.html
@@ -0,0 +1,17 @@
+<html>
+  <head><title>main frame</title></head>
+  <body>
+  <script>
+    // Create an iFrame in response to a nudge by the test harness (in the form
+    // of a posted message).
+    window.addEventListener('message', function(event) {
+      var iframe = document.createElement('iframe');
+      iframe.src = "child_frame.html";
+      iframe.onload = function() {
+        document.title = 'iframe loaded';
+      };
+      document.body.appendChild(iframe);
+    });
+  </script>
+  </body>
+</html>
diff --git a/google_apis/gaia/gaia_auth_fetcher.cc b/google_apis/gaia/gaia_auth_fetcher.cc
index 1945ff68f..d0b3f75 100644
--- a/google_apis/gaia/gaia_auth_fetcher.cc
+++ b/google_apis/gaia/gaia_auth_fetcher.cc
@@ -301,9 +301,10 @@
   if (credentials_mode != network::mojom::CredentialsMode::kOmit) {
     DCHECK_EQ(GaiaUrls::GetInstance()->gaia_url(), gaia_gurl.GetOrigin())
         << gaia_gurl;
-    resource_request->site_for_cookies = GaiaUrls::GetInstance()->gaia_url();
     url::Origin origin =
         url::Origin::Create(GaiaUrls::GetInstance()->gaia_url());
+    resource_request->site_for_cookies =
+        net::SiteForCookies::FromOrigin(origin);
     resource_request->trusted_params =
         network::ResourceRequest::TrustedParams();
     resource_request->trusted_params->network_isolation_key =
diff --git a/google_apis/gaia/gaia_auth_fetcher_unittest.cc b/google_apis/gaia/gaia_auth_fetcher_unittest.cc
index 2acbb22..8b1c013 100644
--- a/google_apis/gaia/gaia_auth_fetcher_unittest.cc
+++ b/google_apis/gaia/gaia_auth_fetcher_unittest.cc
@@ -516,8 +516,8 @@
   ASSERT_EQ(received_requests_.size(), 1U);
   EXPECT_EQ(network::mojom::CredentialsMode::kInclude,
             received_requests_.at(0).credentials_mode);
-  EXPECT_EQ(GaiaUrls::GetInstance()->gaia_url(),
-            received_requests_.at(0).site_for_cookies);
+  EXPECT_TRUE(received_requests_.at(0).site_for_cookies.IsEquivalent(
+      net::SiteForCookies::FromUrl(GaiaUrls::GetInstance()->gaia_url())));
   auth.TestOnURLLoadCompleteInternal(net::OK, net::HTTP_OK, data);
 }
 
diff --git a/gpu/command_buffer/client/webgpu_implementation.cc b/gpu/command_buffer/client/webgpu_implementation.cc
index 6d788da..a78243a5 100644
--- a/gpu/command_buffer/client/webgpu_implementation.cc
+++ b/gpu/command_buffer/client/webgpu_implementation.cc
@@ -242,30 +242,42 @@
   if (data.size() <= sizeof(cmds::DawnReturnDataHeader)) {
     // TODO(jiawei.shao@intel.com): Lose the context.
     NOTREACHED();
+    return;
   }
   const cmds::DawnReturnDataHeader& dawnReturnDataHeader =
       *reinterpret_cast<const cmds::DawnReturnDataHeader*>(data.data());
 
-  const uint8_t* dawnReturnDataBody =
-      data.data() + sizeof(cmds::DawnReturnDataHeader);
-  size_t dawnReturnDataSize = data.size() - sizeof(cmds::DawnReturnDataHeader);
-
   switch (dawnReturnDataHeader.return_data_type) {
-    case DawnReturnDataType::kDawnCommands:
+    case DawnReturnDataType::kDawnCommands: {
+      if (data.size() < sizeof(cmds::DawnReturnCommandsInfo)) {
+        // TODO(jiawei.shao@intel.com): Lose the context.
+        NOTREACHED();
+        break;
+      }
+
+      const cmds::DawnReturnCommandsInfo* dawn_return_commands_info =
+          reinterpret_cast<const cmds::DawnReturnCommandsInfo*>(data.data());
       if (!wire_client_->HandleCommands(
-              reinterpret_cast<const char*>(dawnReturnDataBody),
-              dawnReturnDataSize)) {
+              reinterpret_cast<const char*>(
+                  dawn_return_commands_info->deserialized_buffer),
+              data.size() - offsetof(cmds::DawnReturnCommandsInfo,
+                                     deserialized_buffer))) {
         // TODO(enga): Lose the context.
         NOTREACHED();
       }
-      break;
+    } break;
     case DawnReturnDataType::kRequestedDawnAdapterProperties: {
+      if (data.size() < sizeof(cmds::DawnReturnAdapterInfo)) {
+        // TODO(jiawei.shao@intel.com): Lose the context.
+        NOTREACHED();
+        break;
+      }
+
       const cmds::DawnReturnAdapterInfo* returned_adapter_info =
-          reinterpret_cast<const cmds::DawnReturnAdapterInfo*>(
-              dawnReturnDataBody);
+          reinterpret_cast<const cmds::DawnReturnAdapterInfo*>(data.data());
 
       GLuint request_adapter_serial =
-          returned_adapter_info->adapter_ids.request_adapter_serial;
+          returned_adapter_info->header.request_adapter_serial;
       auto request_callback_iter =
           request_adapter_callback_map_.find(request_adapter_serial);
       if (request_callback_iter == request_adapter_callback_map_.end()) {
@@ -275,7 +287,7 @@
       }
       auto& request_callback = request_callback_iter->second;
       GLuint adapter_service_id =
-          returned_adapter_info->adapter_ids.adapter_service_id;
+          returned_adapter_info->header.adapter_service_id;
       WGPUDeviceProperties adapter_properties = {};
       const volatile char* deserialized_buffer =
           reinterpret_cast<const volatile char*>(
@@ -286,6 +298,12 @@
       request_adapter_callback_map_.erase(request_callback_iter);
     } break;
     case DawnReturnDataType::kRequestedDeviceReturnInfo: {
+      if (data.size() < sizeof(cmds::DawnReturnRequestDeviceInfo)) {
+        // TODO(jiawei.shao@intel.com): Lose the context.
+        NOTREACHED();
+        break;
+      }
+
       const cmds::DawnReturnRequestDeviceInfo* returned_request_device_info =
           reinterpret_cast<const cmds::DawnReturnRequestDeviceInfo*>(
               data.data());
diff --git a/gpu/command_buffer/common/webgpu_cmd_format.h b/gpu/command_buffer/common/webgpu_cmd_format.h
index a68d823..8a65d461 100644
--- a/gpu/command_buffer/common/webgpu_cmd_format.h
+++ b/gpu/command_buffer/common/webgpu_cmd_format.h
@@ -5,18 +5,9 @@
 #ifndef GPU_COMMAND_BUFFER_COMMON_WEBGPU_CMD_FORMAT_H_
 #define GPU_COMMAND_BUFFER_COMMON_WEBGPU_CMD_FORMAT_H_
 
-#include <stddef.h>
-#include <stdint.h>
-#include <string.h>
-
-#include "base/atomicops.h"
-#include "base/logging.h"
-#include "base/macros.h"
-#include "gpu/command_buffer/common/common_cmd_format.h"
 #include "gpu/command_buffer/common/gl2_types.h"
 #include "gpu/command_buffer/common/webgpu_cmd_enums.h"
 #include "gpu/command_buffer/common/webgpu_cmd_ids.h"
-#include "ui/gfx/buffer_types.h"
 
 namespace gpu {
 namespace webgpu {
@@ -31,25 +22,31 @@
     sizeof(DawnReturnDataHeader) % GPU_DAWN_RETURN_DATA_ALIGNMENT == 0,
     "DawnReturnDataHeader must align to GPU_DAWN_RETURN_DATA_ALIGNMENT");
 
-struct alignas(GPU_DAWN_RETURN_DATA_ALIGNMENT) DawnReturnAdapterIDs {
+struct DawnReturnCommandsInfo {
+  DawnReturnDataHeader return_data_header = {DawnReturnDataType::kDawnCommands};
+  alignas(GPU_DAWN_RETURN_DATA_ALIGNMENT) char deserialized_buffer[];
+};
+
+static_assert(offsetof(DawnReturnCommandsInfo, return_data_header) == 0,
+              "The offset of return_data_header must be 0");
+
+struct DawnReturnAdapterInfoHeader {
+  DawnReturnDataHeader return_data_header = {
+      DawnReturnDataType::kRequestedDawnAdapterProperties};
   uint32_t request_adapter_serial;
   uint32_t adapter_service_id;
 };
 
-static_assert(
-    sizeof(DawnReturnAdapterIDs) % GPU_DAWN_RETURN_DATA_ALIGNMENT == 0,
-    "DawnReturnAdapterIDs must align to GPU_DAWN_RETURN_DATA_ALIGNMENT");
+static_assert(offsetof(DawnReturnAdapterInfoHeader, return_data_header) == 0,
+              "The offset of return_data_header must be 0");
 
-struct alignas(GPU_DAWN_RETURN_DATA_ALIGNMENT) DawnReturnAdapterInfo {
-  DawnReturnAdapterIDs adapter_ids;
-  char deserialized_buffer[];
+struct DawnReturnAdapterInfo {
+  DawnReturnAdapterInfoHeader header;
+  alignas(GPU_DAWN_RETURN_DATA_ALIGNMENT) char deserialized_buffer[];
 };
 
-static_assert(offsetof(DawnReturnAdapterInfo, deserialized_buffer) %
-                      GPU_DAWN_RETURN_DATA_ALIGNMENT ==
-                  0,
-              "The offset of deserialized_buffer must align to "
-              "GPU_DAWN_RETURN_DATA_ALIGNMENT");
+static_assert(offsetof(DawnReturnAdapterInfo, header) == 0,
+              "The offset of header must be 0");
 
 struct DawnReturnRequestDeviceInfo {
   DawnReturnDataHeader return_data_header = {
diff --git a/gpu/command_buffer/service/external_vk_image_backing.cc b/gpu/command_buffer/service/external_vk_image_backing.cc
index cbb9fd8b..2c10c80 100644
--- a/gpu/command_buffer/service/external_vk_image_backing.cc
+++ b/gpu/command_buffer/service/external_vk_image_backing.cc
@@ -212,8 +212,16 @@
     return nullptr;
   }
 
+  // Some vulkan implementations require dedicated memory for sharing memory
+  // object between vulkan instances.
+  VkMemoryDedicatedAllocateInfoKHR dedicated_memory_info = {
+      .sType = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR,
+      .image = image,
+  };
+
   VkExportMemoryAllocateInfoKHR external_info = {
       .sType = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR,
+      .pNext = &dedicated_memory_info,
       .handleTypes = context_state->vk_context_provider()
                          ->GetVulkanImplementation()
                          ->GetExternalImageHandleType(),
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder.cc b/gpu/command_buffer/service/gles2_cmd_decoder.cc
index a3564391d..199f046 100644
--- a/gpu/command_buffer/service/gles2_cmd_decoder.cc
+++ b/gpu/command_buffer/service/gles2_cmd_decoder.cc
@@ -3180,6 +3180,8 @@
     texture_ref_->ForceContextLost();
     texture_ref_ = nullptr;
   }
+  memory_tracker_.TrackMemFree(bytes_allocated_);
+  bytes_allocated_ = 0;
 }
 
 GLenum BackTexture::Target() {
diff --git a/gpu/command_buffer/service/memory_tracking.h b/gpu/command_buffer/service/memory_tracking.h
index e6def1e..6f67b46 100644
--- a/gpu/command_buffer/service/memory_tracking.h
+++ b/gpu/command_buffer/service/memory_tracking.h
@@ -58,7 +58,7 @@
   explicit MemoryTypeTracker(MemoryTracker* memory_tracker)
       : memory_tracker_(memory_tracker) {}
 
-  ~MemoryTypeTracker() = default;
+  ~MemoryTypeTracker() { DCHECK(!mem_represented_); }
 
   void TrackMemAlloc(size_t bytes) {
     DCHECK(bytes >= 0);
diff --git a/gpu/command_buffer/service/webgpu_decoder_impl.cc b/gpu/command_buffer/service/webgpu_decoder_impl.cc
index d24700af..adb00ed1 100644
--- a/gpu/command_buffer/service/webgpu_decoder_impl.cc
+++ b/gpu/command_buffer/service/webgpu_decoder_impl.cc
@@ -14,6 +14,7 @@
 
 #include "base/logging.h"
 #include "base/macros.h"
+#include "base/numerics/checked_math.h"
 #include "base/trace_event/trace_event.h"
 #include "build/build_config.h"
 #include "gpu/command_buffer/common/mailbox.h"
@@ -61,7 +62,7 @@
 WireServerCommandSerializer::WireServerCommandSerializer(DecoderClient* client)
     : client_(client),
       buffer_(kMaxWireBufferSize),
-      put_offset_(sizeof(cmds::DawnReturnDataHeader)) {
+      put_offset_(offsetof(cmds::DawnReturnCommandsInfo, deserialized_buffer)) {
   cmds::DawnReturnDataHeader* return_data_header =
       reinterpret_cast<cmds::DawnReturnDataHeader*>(&buffer_[0]);
   return_data_header->return_data_type = DawnReturnDataType::kDawnCommands;
@@ -69,8 +70,14 @@
 
 void* WireServerCommandSerializer::GetCmdSpace(size_t size) {
   // TODO(enga): Handle chunking commands if size +
-  // sizeof(cmds::DawnReturnDataHeader)> kMaxWireBufferSize.
-  if (size + sizeof(cmds::DawnReturnDataHeader) > kMaxWireBufferSize) {
+  // offsetof(cmds::DawnReturnCommandsInfo, deserialized_buffer)>
+  // kMaxWireBufferSize.
+  size_t total_wire_buffer_size =
+      (base::CheckedNumeric<size_t>(size) +
+       base::CheckedNumeric<size_t>(
+           offsetof(cmds::DawnReturnCommandsInfo, deserialized_buffer)))
+          .ValueOrDie();
+  if (total_wire_buffer_size > kMaxWireBufferSize) {
     NOTREACHED();
     return nullptr;
   }
@@ -89,7 +96,8 @@
     // TODO(enga): Keep track of how much command space the application is using
     // and adjust the buffer size accordingly.
 
-    DCHECK_EQ(put_offset_, sizeof(cmds::DawnReturnDataHeader));
+    DCHECK_EQ(put_offset_,
+              offsetof(cmds::DawnReturnCommandsInfo, deserialized_buffer));
     next_offset = put_offset_ + size;
   }
 
@@ -99,7 +107,8 @@
 }
 
 bool WireServerCommandSerializer::Flush() {
-  if (put_offset_ > sizeof(cmds::DawnReturnDataHeader)) {
+  if (put_offset_ >
+      offsetof(cmds::DawnReturnCommandsInfo, deserialized_buffer)) {
     TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("gpu.dawn"),
                  "WireServerCommandSerializer::Flush", "bytes", put_offset_);
 
@@ -108,7 +117,7 @@
                             "DawnReturnCommands", return_trace_id++);
 
     client_->HandleReturnData(base::make_span(buffer_.data(), put_offset_));
-    put_offset_ = sizeof(cmds::DawnReturnDataHeader);
+    put_offset_ = offsetof(cmds::DawnReturnCommandsInfo, deserialized_buffer);
   }
   return true;
 }
@@ -121,21 +130,19 @@
 
   size_t serialized_adapter_properties_size =
       dawn_wire::SerializedWGPUDevicePropertiesSize(&adapter_properties);
-  std::vector<char> serialized_buffer(sizeof(cmds::DawnReturnDataHeader) +
-                                      sizeof(cmds::DawnReturnAdapterIDs) +
-                                      serialized_adapter_properties_size);
+  std::vector<char> serialized_buffer(
+      offsetof(cmds::DawnReturnAdapterInfo, deserialized_buffer) +
+      serialized_adapter_properties_size);
+
+  cmds::DawnReturnAdapterInfo* return_adapter_info =
+      reinterpret_cast<cmds::DawnReturnAdapterInfo*>(serialized_buffer.data());
 
   // Set Dawn return data header
-  reinterpret_cast<cmds::DawnReturnDataHeader*>(serialized_buffer.data())
-      ->return_data_type = DawnReturnDataType::kRequestedDawnAdapterProperties;
-
-  // Set adapter ids
-  cmds::DawnReturnAdapterInfo* return_adapter_info =
-      reinterpret_cast<cmds::DawnReturnAdapterInfo*>(
-          serialized_buffer.data() + sizeof(cmds::DawnReturnDataHeader));
-  return_adapter_info->adapter_ids.request_adapter_serial =
-      request_adapter_serial;
-  return_adapter_info->adapter_ids.adapter_service_id = adapter_service_id;
+  return_adapter_info->header = {};
+  DCHECK_EQ(DawnReturnDataType::kRequestedDawnAdapterProperties,
+            return_adapter_info->header.return_data_header.return_data_type);
+  return_adapter_info->header.request_adapter_serial = request_adapter_serial;
+  return_adapter_info->header.adapter_service_id = adapter_service_id;
 
   // Set serialized adapter properties
   dawn_wire::SerializeWGPUDeviceProperties(
diff --git a/gpu/ipc/command_buffer_task_executor.cc b/gpu/ipc/command_buffer_task_executor.cc
index 9bdab66..fb1b239e 100644
--- a/gpu/ipc/command_buffer_task_executor.cc
+++ b/gpu/ipc/command_buffer_task_executor.cc
@@ -21,8 +21,7 @@
     scoped_refptr<gl::GLShareGroup> share_group,
     gl::GLSurfaceFormat share_group_surface_format,
     SharedImageManager* shared_image_manager,
-    gles2::ProgramCache* program_cache,
-    scoped_refptr<SharedContextState> shared_context_state)
+    gles2::ProgramCache* program_cache)
     : gpu_preferences_(gpu_preferences),
       gpu_feature_info_(gpu_feature_info),
       sync_point_manager_(sync_point_manager),
@@ -31,8 +30,7 @@
       share_group_surface_format_(share_group_surface_format),
       program_cache_(program_cache),
       shader_translator_cache_(gpu_preferences_),
-      shared_image_manager_(shared_image_manager),
-      shared_context_state_(std::move(shared_context_state)) {
+      shared_image_manager_(shared_image_manager) {
   DCHECK(mailbox_manager_);
   DCHECK(shared_image_manager_);
 }
diff --git a/gpu/ipc/command_buffer_task_executor.h b/gpu/ipc/command_buffer_task_executor.h
index c9056a3..8c36557 100644
--- a/gpu/ipc/command_buffer_task_executor.h
+++ b/gpu/ipc/command_buffer_task_executor.h
@@ -43,16 +43,14 @@
 // the GPU thread used by InProcessCommandBuffer.
 class GL_IN_PROCESS_CONTEXT_EXPORT CommandBufferTaskExecutor {
  public:
-  CommandBufferTaskExecutor(
-      const GpuPreferences& gpu_preferences,
-      const GpuFeatureInfo& gpu_feature_info,
-      SyncPointManager* sync_point_manager,
-      MailboxManager* mailbox_manager,
-      scoped_refptr<gl::GLShareGroup> share_group,
-      gl::GLSurfaceFormat share_group_surface_format,
-      SharedImageManager* shared_image_manager,
-      gles2::ProgramCache* program_cache,
-      scoped_refptr<SharedContextState> shared_context_state);
+  CommandBufferTaskExecutor(const GpuPreferences& gpu_preferences,
+                            const GpuFeatureInfo& gpu_feature_info,
+                            SyncPointManager* sync_point_manager,
+                            MailboxManager* mailbox_manager,
+                            scoped_refptr<gl::GLShareGroup> share_group,
+                            gl::GLSurfaceFormat share_group_surface_format,
+                            SharedImageManager* shared_image_manager,
+                            gles2::ProgramCache* program_cache);
   virtual ~CommandBufferTaskExecutor();
 
   // Always use virtualized GL contexts if this returns true.
@@ -74,6 +72,9 @@
   // Called if InProcessCommandBuffer is not passed a client TaskRunner.
   virtual void PostNonNestableToClient(base::OnceClosure callback) = 0;
 
+  // Returns the shared offscreen context state.
+  virtual scoped_refptr<SharedContextState> GetSharedContextState() = 0;
+
   const GpuPreferences& gpu_preferences() const { return gpu_preferences_; }
   const GpuFeatureInfo& gpu_feature_info() const { return gpu_feature_info_; }
   gl::GLSurfaceFormat share_group_surface_format() const {
@@ -98,10 +99,6 @@
   }
   SharedImageManager* shared_image_manager() { return shared_image_manager_; }
 
-  scoped_refptr<SharedContextState> shared_context_state() {
-    return shared_context_state_;
-  }
-
   // These methods construct accessed fields if not already initialized.
   scoped_refptr<gl::GLShareGroup> share_group();
   gles2::Outputter* outputter();
@@ -123,7 +120,6 @@
   gles2::ShaderTranslatorCache shader_translator_cache_;
   gles2::FramebufferCompletenessCache framebuffer_completeness_cache_;
   SharedImageManager* shared_image_manager_;
-  const scoped_refptr<SharedContextState> shared_context_state_;
 
   // No-op default initialization is used in in-process mode.
   GpuProcessActivityFlags activity_flags_;
diff --git a/gpu/ipc/gpu_in_process_thread_service.cc b/gpu/ipc/gpu_in_process_thread_service.cc
index 8ec827ab..1d535a5f 100644
--- a/gpu/ipc/gpu_in_process_thread_service.cc
+++ b/gpu/ipc/gpu_in_process_thread_service.cc
@@ -25,7 +25,7 @@
     const GpuPreferences& gpu_preferences,
     SharedImageManager* shared_image_manager,
     gles2::ProgramCache* program_cache,
-    scoped_refptr<SharedContextState> shared_context_state)
+    SharedContextStateGetter shared_context_state_getter)
     : CommandBufferTaskExecutor(gpu_preferences,
                                 gpu_feature_info,
                                 sync_point_manager,
@@ -33,10 +33,10 @@
                                 share_group,
                                 share_group_surface_format,
                                 shared_image_manager,
-                                program_cache,
-                                std::move(shared_context_state)),
+                                program_cache),
       task_runner_(task_runner),
-      scheduler_(scheduler) {}
+      scheduler_(scheduler),
+      shared_context_state_getter_(std::move(shared_context_state_getter)) {}
 
 GpuInProcessThreadService::~GpuInProcessThreadService() = default;
 
@@ -67,4 +67,9 @@
   NOTREACHED();
 }
 
+scoped_refptr<SharedContextState>
+GpuInProcessThreadService::GetSharedContextState() {
+  return shared_context_state_getter_.Run();
+}
+
 }  // namespace gpu
diff --git a/gpu/ipc/gpu_in_process_thread_service.h b/gpu/ipc/gpu_in_process_thread_service.h
index f6f51a1ab4..cefa13f 100644
--- a/gpu/ipc/gpu_in_process_thread_service.h
+++ b/gpu/ipc/gpu_in_process_thread_service.h
@@ -7,6 +7,7 @@
 
 #include <memory>
 
+#include "base/callback.h"
 #include "base/compiler_specific.h"
 #include "base/single_thread_task_runner.h"
 #include "gpu/command_buffer/service/mailbox_manager.h"
@@ -29,6 +30,10 @@
 class GL_IN_PROCESS_CONTEXT_EXPORT GpuInProcessThreadService
     : public CommandBufferTaskExecutor {
  public:
+  // Must be valid to call through lifetime of GpuInProcessThreadService.
+  using SharedContextStateGetter =
+      base::RepeatingCallback<scoped_refptr<SharedContextState>()>;
+
   GpuInProcessThreadService(
       scoped_refptr<base::SingleThreadTaskRunner> task_runner,
       Scheduler* scheduler,
@@ -40,7 +45,7 @@
       const GpuPreferences& gpu_preferences,
       SharedImageManager* shared_image_manager,
       gles2::ProgramCache* program_cache,
-      scoped_refptr<SharedContextState> shared_context_state);
+      SharedContextStateGetter shared_context_state_getter);
   ~GpuInProcessThreadService() override;
 
   // CommandBufferTaskExecutor implementation.
@@ -50,10 +55,12 @@
   void ScheduleOutOfOrderTask(base::OnceClosure task) override;
   void ScheduleDelayedWork(base::OnceClosure task) override;
   void PostNonNestableToClient(base::OnceClosure callback) override;
+  scoped_refptr<SharedContextState> GetSharedContextState() override;
 
  private:
   scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
   Scheduler* scheduler_;
+  SharedContextStateGetter shared_context_state_getter_;
 
   DISALLOW_COPY_AND_ASSIGN(GpuInProcessThreadService);
 };
diff --git a/gpu/ipc/in_process_command_buffer.cc b/gpu/ipc/in_process_command_buffer.cc
index 588e369..b537f340 100644
--- a/gpu/ipc/in_process_command_buffer.cc
+++ b/gpu/ipc/in_process_command_buffer.cc
@@ -535,7 +535,7 @@
   command_buffer_ = std::make_unique<CommandBufferService>(
       this, context_group_->memory_tracker());
 
-  context_state_ = task_executor_->shared_context_state();
+  context_state_ = task_executor_->GetSharedContextState();
 
   if (!surface_) {
     if (is_offscreen_) {
diff --git a/gpu/ipc/in_process_gpu_thread_holder.cc b/gpu/ipc/in_process_gpu_thread_holder.cc
index 21ad070..867bed5 100644
--- a/gpu/ipc/in_process_gpu_thread_holder.cc
+++ b/gpu/ipc/in_process_gpu_thread_holder.cc
@@ -5,6 +5,7 @@
 #include "gpu/ipc/in_process_gpu_thread_holder.h"
 
 #include "base/bind.h"
+#include "base/bind_helpers.h"
 #include "base/command_line.h"
 #include "base/synchronization/waitable_event.h"
 #include "base/threading/thread_task_runner_handle.h"
@@ -73,7 +74,8 @@
   task_executor_ = std::make_unique<GpuInProcessThreadService>(
       task_runner(), scheduler_.get(), sync_point_manager_.get(),
       mailbox_manager_.get(), nullptr, gl::GLSurfaceFormat(), gpu_feature_info_,
-      gpu_preferences_, shared_image_manager_.get(), nullptr, nullptr);
+      gpu_preferences_, shared_image_manager_.get(), nullptr,
+      base::BindRepeating([] { return scoped_refptr<SharedContextState>(); }));
 
   completion->Signal();
 }
diff --git a/gpu/ipc/service/gpu_watchdog_thread_v2.cc b/gpu/ipc/service/gpu_watchdog_thread_v2.cc
index 970e6e5..790a842f 100644
--- a/gpu/ipc/service/gpu_watchdog_thread_v2.cc
+++ b/gpu/ipc/service/gpu_watchdog_thread_v2.cc
@@ -10,6 +10,7 @@
 #include "base/bit_cast.h"
 #include "base/debug/alias.h"
 #include "base/files/file_path.h"
+#include "base/files/file_util.h"
 #include "base/message_loop/message_loop_current.h"
 #include "base/metrics/histogram_functions.h"
 #include "base/metrics/persistent_histogram_allocator.h"
@@ -44,6 +45,12 @@
   }
 #endif
 
+#if defined(USE_X11)
+  tty_file_ = base::OpenFile(
+      base::FilePath(FILE_PATH_LITERAL("/sys/class/tty/tty0/active")), "r");
+  host_tty_ = GetActiveTTY();
+#endif
+
   Arm();
 }
 
@@ -58,6 +65,11 @@
   if (watched_thread_handle_)
     CloseHandle(watched_thread_handle_);
 #endif
+
+#if defined(USE_X11)
+  if (tty_file_)
+    fclose(tty_file_);
+#endif
 }
 
 // static
@@ -392,7 +404,8 @@
       WatchedThreadNeedsMoreTime(disarmed || gpu_makes_progress);
 
   // No gpu hang is detected. Continue with another OnWatchdogTimeout task
-  if (disarmed || gpu_makes_progress || watched_thread_needs_more_time) {
+  if (disarmed || gpu_makes_progress || watched_thread_needs_more_time ||
+      ContinueOnNonHostX11ServerTty()) {
     last_on_watchdog_timeout_timeticks_ = base::TimeTicks::Now();
     last_arm_disarm_counter_ =
         base::subtle::NoBarrier_Load(&arm_disarm_counter_);
@@ -711,6 +724,34 @@
   return foregrounded_event_ && num_of_timeout_after_foregrounded_ <= count;
 }
 
+#if defined(USE_X11)
+int GpuWatchdogThreadImplV2::GetActiveTTY() {
+  char tty_string[8] = {0};
+  if (tty_file_ && !fseek(tty_file_, 0, SEEK_SET) &&
+      fread(tty_string, 1, 7, tty_file_)) {
+    int tty_number;
+    if (sscanf(tty_string, "tty%d\n", &tty_number) == 1)
+      return tty_number;
+  }
+  return -1;
+}
+#endif
+
+bool GpuWatchdogThreadImplV2::ContinueOnNonHostX11ServerTty() {
+#if defined(USE_X11)
+  int active_tty = GetActiveTTY();
+  bool is_on_host_tty = host_tty_ == active_tty;
+
+  // Don't crash if we're not on the TTY of our host X11 server.
+  if (host_tty_ != -1 && active_tty != -1 && !is_on_host_tty) {
+    GpuWatchdogTimeoutHistogram(
+        GpuWatchdogTimeoutEvent::kContinueOnNonHostServerTty);
+    return true;
+  } else
+#endif
+    return false;
+}
+
 // For gpu testing only. Return whether a GPU hang was detected or not.
 bool GpuWatchdogThreadImplV2::IsGpuHangDetectedForTesting() {
   DCHECK(is_test_mode_);
@@ -733,5 +774,4 @@
       base::BindOnce(&base::WaitableEvent::Signal, base::Unretained(&event)));
   event.Wait();
 }
-
 }  // namespace gpu
diff --git a/gpu/ipc/service/gpu_watchdog_thread_v2.h b/gpu/ipc/service/gpu_watchdog_thread_v2.h
index f9a63c7..944d2af 100644
--- a/gpu/ipc/service/gpu_watchdog_thread_v2.h
+++ b/gpu/ipc/service/gpu_watchdog_thread_v2.h
@@ -36,7 +36,10 @@
   // The GPU makes progress within 60 sec in OnWatchdogTimeout(). The GPU main
   // thread is not killed.
   kProgressAfterWait,
-  kMaxValue = kProgressAfterWait,
+  // Just continue if it's not on the TTY of our host X11 server.
+  kContinueOnNonHostServerTty,
+
+  kMaxValue = kContinueOnNonHostServerTty,
 };
 
 class GPU_IPC_SERVICE_EXPORT GpuWatchdogThreadImplV2
@@ -127,6 +130,12 @@
   bool WithinOneMinFromPowerResumed();
   bool WithinOneMinFromForegrounded();
 
+#if defined(USE_X11)
+  int GetActiveTTY();
+#endif
+  // The watchdog continues when it's not on the TTY of our host X11 server.
+  bool ContinueOnNonHostX11ServerTty();
+
   // This counter is only written on the gpu thread, and read on both threads.
   base::subtle::Atomic32 arm_disarm_counter_ = 0;
   // The counter number read in the last OnWatchdogTimeout() on the watchdog
@@ -176,6 +185,11 @@
   base::TimeDelta time_in_extra_timeouts_;
 #endif
 
+#if defined(USE_X11)
+  FILE* tty_file_ = nullptr;
+  int host_tty_ = -1;
+#endif
+
   // The system has entered the power suspension mode.
   bool in_power_suspension_ = false;
 
diff --git a/infra/config/buckets/ci.star b/infra/config/buckets/ci.star
index 2e947bc..9d9780b 100644
--- a/infra/config/buckets/ci.star
+++ b/infra/config/buckets/ci.star
@@ -1163,7 +1163,7 @@
     name,
     cores=32,
     execution_timeout=20 * time.hour,
-    goma_backend=None,
+    goma_backend=goma.backend.RBE_PROD,
     **kwargs):
   return fyi_builder(
       name = name,
@@ -1175,7 +1175,6 @@
 
 fyi_coverage_builder(
     name = 'android-code-coverage',
-    goma_backend = goma.backend.RBE_PROD,
     use_java_coverage = True,
     ssd = True,
 )
@@ -1190,6 +1189,7 @@
     name = 'ios-simulator-code-coverage',
     caches = [XCODE_IOS_11_CACHE],
     cores = None,
+    goma_backend = None,  # TODO(crbug.com/950413): Use goma.backend.RBE_PROD
     os = os.MAC_ANY,
     use_clang_coverage = True,
     properties = {
@@ -1199,14 +1199,12 @@
 
 fyi_coverage_builder(
     name = 'linux-chromeos-code-coverage',
-    goma_backend = goma.backend.RBE_PROD,
     ssd = True,
     use_clang_coverage = True,
 )
 
 fyi_coverage_builder(
     name = 'linux-code-coverage',
-    goma_backend = goma.backend.RBE_PROD,
     os = None,
     use_clang_coverage = True,
 )
@@ -1215,7 +1213,6 @@
     name = 'mac-code-coverage',
     builderless = True,
     cores = 24,
-    goma_backend = goma.backend.RBE_PROD,
     os = os.MAC_ANY,
     ssd = True,
     use_clang_coverage = True,
@@ -1224,7 +1221,6 @@
 fyi_coverage_builder(
     name = 'win10-code-coverage',
     builderless = True,
-    goma_backend = goma.backend.RBE_PROD,
     goma_enable_ats = True,
     os = os.WINDOWS_DEFAULT,
     ssd = True,
diff --git a/infra/config/buckets/try.star b/infra/config/buckets/try.star
index 65c1a84..111d4aa 100644
--- a/infra/config/buckets/try.star
+++ b/infra/config/buckets/try.star
@@ -405,11 +405,13 @@
 blink_builder(
     name = 'win10-blink-rel',
     os = os.WINDOWS_ANY,
+    builderless = True,
 )
 
 blink_builder(
     name = 'win7-blink-rel',
     os = os.WINDOWS_ANY,
+    builderless = True,
 )
 
 
@@ -419,6 +421,8 @@
       cores = None,
       goma_backend = goma.backend.RBE_PROD,
       os = os.MAC_ANY,
+      builderless = True,
+      ssd = True,
       **kwargs
   )
 
@@ -682,21 +686,6 @@
 
 gpu_android_builder(
     name = 'gpu-fyi-try-android-p-pixel-2-skv-32',
-    tryjob = tryjob(
-        # Some locations disabled due to limited capacity.
-        location_regexp = [
-            #'.+/[+]/cc/.+',
-            '.+/[+]/components/viz/.+',
-            '.+/[+]/content/test/gpu/gpu_tests/.+py',
-            '.+/[+]/content/test/gpu/gpu_tests/test_expectations/pixel_expectations.txt',
-            '.+/[+]/gpu/vulkan/.+',
-            #'.+/[+]/media/gpu/.+',
-            '.+/[+]/services/viz/.+',
-            #'.+/[+]/third_party/blink/renderer/platform/graphics/gpu/.+',
-            #'.+/[+]/third_party/skia/src/gpu/.+',
-            #'.+/[+]/third_party/skia/include/gpu/.+',
-        ],
-    ),
 )
 
 gpu_android_builder(
@@ -1253,7 +1242,7 @@
     *,
     name,
     cores=None,
-    goma_backend = goma.backend.RBE_PROD,
+    goma_backend=goma.backend.RBE_PROD,
     os=os.MAC_ANY,
     **kwargs):
   return try_builder(
@@ -1262,6 +1251,7 @@
       goma_backend = goma_backend,
       mastername = 'tryserver.chromium.mac',
       os = os,
+      ssd = True,
       **kwargs
   )
 
@@ -1269,26 +1259,29 @@
     name = 'mac-osxbeta-rel',
     builderless = True,
     os = os.MAC_DEFAULT,
-    ssd = True,
 )
 
-# NOTE: the following 3 trybots aren't sensitive to Mac version on which
+# NOTE: the following 4 trybots aren't sensitive to Mac version on which
 # they are built, hence no additional dimension is specified.
 # The 10.xx version translates to which bots will run isolated tests.
 mac_builder(
     name = 'mac_chromium_10.10',
+    builderless = True,
 )
 
 mac_builder(
     name = 'mac_chromium_10.12_rel_ng',
+    builderless = True,
 )
 
 mac_builder(
     name = 'mac_chromium_10.13_rel_ng',
+    builderless = True,
 )
 
 mac_builder(
     name = 'mac_chromium_10.14_rel_ng',
+    builderless = True,
 )
 
 mac_builder(
@@ -1305,16 +1298,17 @@
     builderless = True,
     goma_jobs = goma.jobs.J150,
     os = os.MAC_10_13,
-    ssd = True,
     tryjob = tryjob(),
 )
 
 mac_builder(
     name = 'mac_chromium_compile_rel_ng',
+    builderless = True,
 )
 
 mac_builder(
     name = 'mac_chromium_dbg_ng',
+    builderless = True,
 )
 
 mac_builder(
@@ -1565,6 +1559,12 @@
 )
 
 win_builder(
+    name = 'win10_chromium_x64_coverage_rel_ng',
+    os = os.WINDOWS_10,
+    use_clang_coverage = True
+)
+
+win_builder(
     name = 'win10_chromium_x64_rel_ng_exp',
     builderless = False,
     os = os.WINDOWS_ANY,
@@ -1583,8 +1583,6 @@
 
 win_builder(
     name = 'win_chromium_compile_dbg_ng',
-    goma_backend = None,
-    goma_enable_ats = False,
     goma_jobs = goma.jobs.J150,
     tryjob = tryjob(),
 )
diff --git a/infra/config/consoles/chromium.goma.migration.star b/infra/config/consoles/chromium.goma.migration.star
index 0996dbc..885053c 100644
--- a/infra/config/consoles/chromium.goma.migration.star
+++ b/infra/config/consoles/chromium.goma.migration.star
@@ -827,6 +827,10 @@
             short_name = 'x86',
         ),
         luci.console_view_entry(
+            builder = 'ci/android-code-coverage-native',
+            category = 'misc|android',
+        ),
+        luci.console_view_entry(
             builder = 'ci/Win ASan Release',
             category = 'win|week1|asan',
         ),
diff --git a/infra/config/consoles/luci.chromium.try.star b/infra/config/consoles/luci.chromium.try.star
index b2e2964ba..506e77d4 100644
--- a/infra/config/consoles/luci.chromium.try.star
+++ b/infra/config/consoles/luci.chromium.try.star
@@ -163,6 +163,7 @@
         'try/win7-rel',
         'try/win10_chromium_x64_dbg_ng',
         'try/win10_chromium_x64_rel_ng',
+        'try/win10_chromium_x64_coverage_rel_ng',
         'try/win10_chromium_x64_rel_ng_exp',
         'try/win-angle-deqp-rel-32',
         'try/win-angle-deqp-rel-64',
diff --git a/infra/config/generated/commit-queue.cfg b/infra/config/generated/commit-queue.cfg
index 8c853ca..12c1bd49 100644
--- a/infra/config/generated/commit-queue.cfg
+++ b/infra/config/generated/commit-queue.cfg
@@ -371,11 +371,7 @@
       >
       builders: <
         name: "chromium/try/gpu-fyi-try-android-p-pixel-2-skv-32"
-        location_regexp: ".+/[+]/components/viz/.+"
-        location_regexp: ".+/[+]/content/test/gpu/gpu_tests/.+py"
-        location_regexp: ".+/[+]/content/test/gpu/gpu_tests/test_expectations/pixel_expectations.txt"
-        location_regexp: ".+/[+]/gpu/vulkan/.+"
-        location_regexp: ".+/[+]/services/viz/.+"
+        includable_only: true
       >
       builders: <
         name: "chromium/try/gpu-fyi-try-android-q-pixel-2-deqp-vk-32"
@@ -1037,6 +1033,10 @@
         includable_only: true
       >
       builders: <
+        name: "chromium/try/win10_chromium_x64_coverage_rel_ng"
+        includable_only: true
+      >
+      builders: <
         name: "chromium/try/win10_chromium_x64_dbg_ng"
         includable_only: true
       >
diff --git a/infra/config/generated/cq-builders.md b/infra/config/generated/cq-builders.md
index d81c3f2..6afb4d3 100644
--- a/infra/config/generated/cq-builders.md
+++ b/infra/config/generated/cq-builders.md
@@ -205,15 +205,6 @@
   Path regular expressions:
   * [`//chromecast/.+`](https://cs.chromium.org/chromium/src/chromecast/)
 
-* [gpu-fyi-try-android-p-pixel-2-skv-32](https://ci.chromium.org/p/chromium/builders/try/gpu-fyi-try-android-p-pixel-2-skv-32) ([definition](https://cs.chromium.org/search?q=package:%5Echromium$+file:/cq.star$+-file:/beta/+-file:/stable/+gpu-fyi-try-android-p-pixel-2-skv-32)) ([matching builders](https://cs.chromium.org/search?q=+file:trybots.py+gpu-fyi-try-android-p-pixel-2-skv-32))
-
-  Path regular expressions:
-  * [`//components/viz/.+`](https://cs.chromium.org/chromium/src/components/viz/)
-  * [`//content/test/gpu/gpu_tests/.+py`](https://cs.chromium.org/search?q=package:%5Echromium$+file:content/test/gpu/gpu_tests/.+py)
-  * [`//content/test/gpu/gpu_tests/test_expectations/pixel_expectations.txt`](https://cs.chromium.org/search?q=package:%5Echromium$+file:content/test/gpu/gpu_tests/test_expectations/pixel_expectations.txt)
-  * [`//gpu/vulkan/.+`](https://cs.chromium.org/chromium/src/gpu/vulkan/)
-  * [`//services/viz/.+`](https://cs.chromium.org/chromium/src/services/viz/)
-
 * [ios-simulator-cronet](https://ci.chromium.org/p/chromium/builders/try/ios-simulator-cronet) ([definition](https://cs.chromium.org/search?q=package:%5Echromium$+file:/cq.star$+-file:/beta/+-file:/stable/+ios-simulator-cronet)) ([matching builders](https://cs.chromium.org/search?q=+file:trybots.py+ios-simulator-cronet))
 
   Path regular expressions:
diff --git a/infra/config/generated/cr-buildbucket.cfg b/infra/config/generated/cr-buildbucket.cfg
index de5c90b..f207bd5 100644
--- a/infra/config/generated/cr-buildbucket.cfg
+++ b/infra/config/generated/cr-buildbucket.cfg
@@ -5870,6 +5870,7 @@
         cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
         cipd_version: "refs/heads/master"
         properties_j: "$build/code_coverage:{\"use_clang_coverage\":true}"
+        properties_j: "$build/goma:{\"rpc_extra_params\":\"?prod\",\"server_host\":\"goma.chromium.org\"}"
         properties_j: "$kitchen:{\"devshell\":true,\"git_auth\":true}"
         properties_j: "mastername:\"chromium.fyi\""
       >
@@ -16866,9 +16867,10 @@
       name: "mac10.10-blink-rel"
       swarming_host: "chromium-swarm.appspot.com"
       swarming_tags: "vpython:native-python-wrapper"
-      dimensions: "builder:mac10.10-blink-rel"
+      dimensions: "builderless:1"
       dimensions: "cpu:x86-64"
       dimensions: "os:Mac"
+      dimensions: "ssd:1"
       recipe: <
         name: "chromium_trybot"
         cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
@@ -16893,9 +16895,10 @@
       name: "mac10.11-blink-rel"
       swarming_host: "chromium-swarm.appspot.com"
       swarming_tags: "vpython:native-python-wrapper"
-      dimensions: "builder:mac10.11-blink-rel"
+      dimensions: "builderless:1"
       dimensions: "cpu:x86-64"
       dimensions: "os:Mac"
+      dimensions: "ssd:1"
       recipe: <
         name: "chromium_trybot"
         cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
@@ -16920,9 +16923,10 @@
       name: "mac10.12-blink-rel"
       swarming_host: "chromium-swarm.appspot.com"
       swarming_tags: "vpython:native-python-wrapper"
-      dimensions: "builder:mac10.12-blink-rel"
+      dimensions: "builderless:1"
       dimensions: "cpu:x86-64"
       dimensions: "os:Mac"
+      dimensions: "ssd:1"
       recipe: <
         name: "chromium_trybot"
         cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
@@ -16947,9 +16951,10 @@
       name: "mac10.13-blink-rel"
       swarming_host: "chromium-swarm.appspot.com"
       swarming_tags: "vpython:native-python-wrapper"
-      dimensions: "builder:mac10.13-blink-rel"
+      dimensions: "builderless:1"
       dimensions: "cpu:x86-64"
       dimensions: "os:Mac"
+      dimensions: "ssd:1"
       recipe: <
         name: "chromium_trybot"
         cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
@@ -16974,9 +16979,10 @@
       name: "mac10.13_retina-blink-rel"
       swarming_host: "chromium-swarm.appspot.com"
       swarming_tags: "vpython:native-python-wrapper"
-      dimensions: "builder:mac10.13_retina-blink-rel"
+      dimensions: "builderless:1"
       dimensions: "cpu:x86-64"
       dimensions: "os:Mac"
+      dimensions: "ssd:1"
       recipe: <
         name: "chromium_trybot"
         cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
@@ -17001,9 +17007,10 @@
       name: "mac10.14-blink-rel"
       swarming_host: "chromium-swarm.appspot.com"
       swarming_tags: "vpython:native-python-wrapper"
-      dimensions: "builder:mac10.14-blink-rel"
+      dimensions: "builderless:1"
       dimensions: "cpu:x86-64"
       dimensions: "os:Mac"
+      dimensions: "ssd:1"
       recipe: <
         name: "chromium_trybot"
         cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
@@ -17028,9 +17035,10 @@
       name: "mac_chromium_10.10"
       swarming_host: "chromium-swarm.appspot.com"
       swarming_tags: "vpython:native-python-wrapper"
-      dimensions: "builder:mac_chromium_10.10"
+      dimensions: "builderless:1"
       dimensions: "cpu:x86-64"
       dimensions: "os:Mac"
+      dimensions: "ssd:1"
       recipe: <
         name: "chromium_trybot"
         cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
@@ -17055,9 +17063,10 @@
       name: "mac_chromium_10.12_rel_ng"
       swarming_host: "chromium-swarm.appspot.com"
       swarming_tags: "vpython:native-python-wrapper"
-      dimensions: "builder:mac_chromium_10.12_rel_ng"
+      dimensions: "builderless:1"
       dimensions: "cpu:x86-64"
       dimensions: "os:Mac"
+      dimensions: "ssd:1"
       recipe: <
         name: "chromium_trybot"
         cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
@@ -17082,9 +17091,10 @@
       name: "mac_chromium_10.13_rel_ng"
       swarming_host: "chromium-swarm.appspot.com"
       swarming_tags: "vpython:native-python-wrapper"
-      dimensions: "builder:mac_chromium_10.13_rel_ng"
+      dimensions: "builderless:1"
       dimensions: "cpu:x86-64"
       dimensions: "os:Mac"
+      dimensions: "ssd:1"
       recipe: <
         name: "chromium_trybot"
         cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
@@ -17109,9 +17119,10 @@
       name: "mac_chromium_10.14_rel_ng"
       swarming_host: "chromium-swarm.appspot.com"
       swarming_tags: "vpython:native-python-wrapper"
-      dimensions: "builder:mac_chromium_10.14_rel_ng"
+      dimensions: "builderless:1"
       dimensions: "cpu:x86-64"
       dimensions: "os:Mac"
+      dimensions: "ssd:1"
       recipe: <
         name: "chromium_trybot"
         cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
@@ -17139,6 +17150,7 @@
       dimensions: "builder:mac_chromium_archive_rel_ng"
       dimensions: "cpu:x86-64"
       dimensions: "os:Mac"
+      dimensions: "ssd:1"
       recipe: <
         name: "chromium_trybot"
         cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
@@ -17166,6 +17178,7 @@
       dimensions: "builder:mac_chromium_asan_rel_ng"
       dimensions: "cpu:x86-64"
       dimensions: "os:Mac"
+      dimensions: "ssd:1"
       recipe: <
         name: "chromium_trybot"
         cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
@@ -17218,9 +17231,10 @@
       name: "mac_chromium_compile_rel_ng"
       swarming_host: "chromium-swarm.appspot.com"
       swarming_tags: "vpython:native-python-wrapper"
-      dimensions: "builder:mac_chromium_compile_rel_ng"
+      dimensions: "builderless:1"
       dimensions: "cpu:x86-64"
       dimensions: "os:Mac"
+      dimensions: "ssd:1"
       recipe: <
         name: "chromium_trybot"
         cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
@@ -17245,9 +17259,10 @@
       name: "mac_chromium_dbg_ng"
       swarming_host: "chromium-swarm.appspot.com"
       swarming_tags: "vpython:native-python-wrapper"
-      dimensions: "builder:mac_chromium_dbg_ng"
+      dimensions: "builderless:1"
       dimensions: "cpu:x86-64"
       dimensions: "os:Mac"
+      dimensions: "ssd:1"
       recipe: <
         name: "chromium_trybot"
         cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
@@ -17302,6 +17317,7 @@
       dimensions: "builder:mac_upload_clang"
       dimensions: "cpu:x86-64"
       dimensions: "os:Mac"
+      dimensions: "ssd:1"
       recipe: <
         name: "chromium_upload_clang"
         cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
@@ -17814,10 +17830,11 @@
       name: "win10-blink-rel"
       swarming_host: "chromium-swarm.appspot.com"
       swarming_tags: "vpython:native-python-wrapper"
-      dimensions: "builder:win10-blink-rel"
+      dimensions: "builderless:1"
       dimensions: "cores:8"
       dimensions: "cpu:x86-64"
       dimensions: "os:Windows"
+      dimensions: "ssd:0"
       recipe: <
         name: "chromium_trybot"
         cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
@@ -17838,6 +17855,36 @@
       >
     >
     builders: <
+      name: "win10_chromium_x64_coverage_rel_ng"
+      swarming_host: "chromium-swarm.appspot.com"
+      swarming_tags: "vpython:native-python-wrapper"
+      dimensions: "builderless:1"
+      dimensions: "cores:8"
+      dimensions: "cpu:x86-64"
+      dimensions: "os:Windows-10"
+      dimensions: "ssd:0"
+      recipe: <
+        name: "chromium_trybot"
+        cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
+        cipd_version: "refs/heads/master"
+        properties_j: "$build/code_coverage:{\"use_clang_coverage\":true}"
+        properties_j: "$build/goma:{\"enable_ats\":true,\"rpc_extra_params\":\"?prod\",\"server_host\":\"goma.chromium.org\"}"
+        properties_j: "$kitchen:{\"devshell\":true,\"git_auth\":true}"
+        properties_j: "mastername:\"tryserver.chromium.win\""
+      >
+      execution_timeout_secs: 14400
+      expiration_secs: 7200
+      caches: <
+        name: "win_toolchain"
+        path: "win_toolchain"
+      >
+      build_numbers: YES
+      service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com"
+      task_template_canary_percentage: <
+        value: 5
+      >
+    >
+    builders: <
       name: "win10_chromium_x64_dbg_ng"
       swarming_host: "chromium-swarm.appspot.com"
       swarming_tags: "vpython:native-python-wrapper"
@@ -17928,10 +17975,11 @@
       name: "win7-blink-rel"
       swarming_host: "chromium-swarm.appspot.com"
       swarming_tags: "vpython:native-python-wrapper"
-      dimensions: "builder:win7-blink-rel"
+      dimensions: "builderless:1"
       dimensions: "cores:8"
       dimensions: "cpu:x86-64"
       dimensions: "os:Windows"
+      dimensions: "ssd:0"
       recipe: <
         name: "chromium_trybot"
         cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
@@ -18022,7 +18070,7 @@
         name: "chromium_trybot"
         cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
         cipd_version: "refs/heads/master"
-        properties_j: "$build/goma:{\"jobs\":150}"
+        properties_j: "$build/goma:{\"enable_ats\":true,\"jobs\":150,\"rpc_extra_params\":\"?prod\",\"server_host\":\"goma.chromium.org\"}"
         properties_j: "$kitchen:{\"devshell\":true,\"git_auth\":true}"
         properties_j: "mastername:\"tryserver.chromium.win\""
       >
diff --git a/infra/config/generated/luci-milo.cfg b/infra/config/generated/luci-milo.cfg
index dd7e07d..71bf751 100644
--- a/infra/config/generated/luci-milo.cfg
+++ b/infra/config/generated/luci-milo.cfg
@@ -5262,6 +5262,10 @@
     short_name: "x86"
   >
   builders: <
+    name: "buildbucket/luci.chromium.ci/android-code-coverage-native"
+    category: "misc|android"
+  >
+  builders: <
     name: "buildbucket/luci.chromium.ci/Win ASan Release"
     category: "win|week1|asan"
   >
@@ -10149,6 +10153,9 @@
     name: "buildbucket/luci.chromium.try/win10_chromium_x64_rel_ng"
   >
   builders: <
+    name: "buildbucket/luci.chromium.try/win10_chromium_x64_coverage_rel_ng"
+  >
+  builders: <
     name: "buildbucket/luci.chromium.try/win10_chromium_x64_rel_ng_exp"
   >
   builders: <
diff --git a/infra/config/generated/tricium-prod.cfg b/infra/config/generated/tricium-prod.cfg
index 52f3e13..31e8437e 100644
--- a/infra/config/generated/tricium-prod.cfg
+++ b/infra/config/generated/tricium-prod.cfg
@@ -31,12 +31,13 @@
       builder: "linux-clang-tidy-rel"
     }
 
-    # 5400sec == 90min. It takes 40mins to build tidy, which we want to stop
-    # doing before we launch this for real. 45ish minutes seems like a
-    # reasonable overall timeout, since the bot itself times out tidy after
-    # 30mins. It's generally expected to take around 5-10mins to get results
-    # back for reasonably-sized CLs.
-    deadline: 5400
+    # 2700sec == 45min. It's generally expected to take <10mins to get results
+    # for reasonably-sized CLs, but the tidy bots:
+    # - can 'only' run on 8 files at a time (where 1 'average' file is expected
+    #   to take 1-2 minutes or so of CPU).
+    # - in the case of a bug or otherwise pathological file, the bots time out
+    #   individual clang-tidy invocations after 30 minutes.
+    deadline: 2700
   }
 }
 
diff --git a/infra/config/tricium-prod.cfg b/infra/config/tricium-prod.cfg
index 52f3e13..31e8437e 100644
--- a/infra/config/tricium-prod.cfg
+++ b/infra/config/tricium-prod.cfg
@@ -31,12 +31,13 @@
       builder: "linux-clang-tidy-rel"
     }
 
-    # 5400sec == 90min. It takes 40mins to build tidy, which we want to stop
-    # doing before we launch this for real. 45ish minutes seems like a
-    # reasonable overall timeout, since the bot itself times out tidy after
-    # 30mins. It's generally expected to take around 5-10mins to get results
-    # back for reasonably-sized CLs.
-    deadline: 5400
+    # 2700sec == 45min. It's generally expected to take <10mins to get results
+    # for reasonably-sized CLs, but the tidy bots:
+    # - can 'only' run on 8 files at a time (where 1 'average' file is expected
+    #   to take 1-2 minutes or so of CPU).
+    # - in the case of a bug or otherwise pathological file, the bots time out
+    #   individual clang-tidy invocations after 30 minutes.
+    deadline: 2700
   }
 }
 
diff --git a/ios/chrome/app/resources/ios_chrome_repack.gni b/ios/chrome/app/resources/ios_chrome_repack.gni
index 71fceda56..a6defc9c 100644
--- a/ios/chrome/app/resources/ios_chrome_repack.gni
+++ b/ios/chrome/app/resources/ios_chrome_repack.gni
@@ -2,8 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-import("//tools/grit/repack.gni")
 import("//build/config/chrome_build.gni")
+import("//tools/grit/repack.gni")
 
 # Wraps repack_locales(), setting the source_patterns and deps required for
 # Chrome.
diff --git a/ios/chrome/browser/flags/about_flags.mm b/ios/chrome/browser/flags/about_flags.mm
index 1c6c5de..20393573 100644
--- a/ios/chrome/browser/flags/about_flags.mm
+++ b/ios/chrome/browser/flags/about_flags.mm
@@ -589,7 +589,7 @@
      FEATURE_VALUE_TYPE(kDownloadInfobarMessagesUI)},
     {"desktop-version-default", flag_descriptions::kDefaultToDesktopOnIPadName,
      flag_descriptions::kDefaultToDesktopOnIPadDescription, flags_ui::kOsIos,
-     FEATURE_VALUE_TYPE(web::features::kDefaultToDesktopOnIPad)},
+     FEATURE_VALUE_TYPE(web::features::kUseDefaultUserAgentInWebClient)},
     {"mobile-google-srp", flag_descriptions::kMobileGoogleSRPName,
      flag_descriptions::kMobileGoogleSRPDescription, flags_ui::kOsIos,
      FEATURE_VALUE_TYPE(web::kMobileGoogleSRP)},
diff --git a/ios/chrome/browser/metrics/BUILD.gn b/ios/chrome/browser/metrics/BUILD.gn
index 56a10ec..9a35d54 100644
--- a/ios/chrome/browser/metrics/BUILD.gn
+++ b/ios/chrome/browser/metrics/BUILD.gn
@@ -144,6 +144,7 @@
   ]
   deps = [
     ":metrics",
+    ":tab_usage_recorder_metrics",
     "//base",
     "//components/google/core/common",
     "//ios/chrome/browser",
@@ -160,6 +161,17 @@
   libs = [ "UIKit.framework" ]
 }
 
+source_set("tab_usage_recorder_metrics") {
+  configs += [ "//build/config/compiler:enable_arc" ]
+  sources = [
+    "tab_usage_recorder_metrics.h",
+    "tab_usage_recorder_metrics.mm",
+  ]
+  deps = [
+    "//base",
+  ]
+}
+
 source_set("unit_tests_internal") {
   configs += [ "//build/config/compiler:enable_arc" ]
   testonly = true
@@ -194,6 +206,7 @@
   ]
   deps = [
     ":metrics_internal",
+    ":tab_usage_recorder_metrics",
     ":test_support",
     "//base",
     "//base/test:test_support",
@@ -243,18 +256,23 @@
   ]
   testonly = true
   sources = [
+    "tab_usage_recorder_egtest.mm",
     "ukm_egtest.mm",
   ]
   deps = [
     ":eg_test_support+eg2",
+    ":tab_usage_recorder_metrics",
     "//base/test:test_support",
     "//components/strings:components_strings_grit",
     "//ios/chrome/app/strings:ios_strings_grit",
     "//ios/chrome/browser/ui/authentication:eg_test_support+eg2",
+    "//ios/chrome/test:eg_test_support+eg2",
     "//ios/chrome/test/earl_grey:eg_test_support+eg2",
     "//ios/public/provider/chrome/browser/signin:fake_chrome_identity",
     "//ios/testing/earl_grey:eg_test_support+eg2",
     "//ios/third_party/earl_grey2:test_lib",
+    "//ios/web/public/test:element_selector",
+    "//ios/web/public/test/http_server",
     "//ui/base:base",
   ]
   libs = [ "UIKit.framework" ]
@@ -266,8 +284,6 @@
   sources = [
     "metrics_app_interface.h",
     "metrics_app_interface.mm",
-    "tab_usage_recorder_test_util.h",
-    "tab_usage_recorder_test_util.mm",
   ]
   deps = [
     ":metrics",
@@ -278,6 +294,7 @@
     "//ios/chrome/app:app_internal",
     "//ios/chrome/app/strings",
     "//ios/chrome/browser",
+    "//ios/chrome/browser/metrics:metrics_internal",
     "//ios/chrome/browser/tabs",
     "//ios/chrome/browser/ui/main",
     "//ios/chrome/browser/ui/popup_menu:constants",
@@ -326,6 +343,7 @@
     "//components/ukm",
     "//ios/chrome/browser",
     "//ios/chrome/browser/metrics",
+    "//ios/chrome/browser/metrics:metrics_internal",
     "//ios/chrome/test/app:test_support",
     "//ios/testing:nserror_support",
     "//services/metrics/public/cpp:metrics_cpp",
@@ -345,6 +363,9 @@
   ]
   deps = [
     "//base",
+    "//base/test:test_support",
+    "//ios/chrome/test:eg_test_support+eg2",
+    "//ios/chrome/test/earl_grey:eg_test_support+eg2",
     "//ios/testing/earl_grey:eg_test_support+eg2",
     "//ios/third_party/earl_grey2:test_lib",
   ]
diff --git a/ios/chrome/browser/metrics/tab_usage_recorder.h b/ios/chrome/browser/metrics/tab_usage_recorder.h
index c2adc29..02ef996 100644
--- a/ios/chrome/browser/metrics/tab_usage_recorder.h
+++ b/ios/chrome/browser/metrics/tab_usage_recorder.h
@@ -12,6 +12,7 @@
 #include "base/containers/circular_deque.h"
 #include "base/macros.h"
 #include "base/time/time.h"
+#include "ios/chrome/browser/metrics/tab_usage_recorder_metrics.h"
 #import "ios/chrome/browser/web_state_list/web_state_list_observer.h"
 #include "ios/web/public/web_state_observer.h"
 
@@ -22,104 +23,10 @@
 class WebState;
 }
 
-// Histogram names (visible for testing only).
-
-// The name of the histogram that records the state of the selected tab
-// (i.e. the tab being switched to).
-extern const char kSelectedTabHistogramName[];
-
-// The name of the histogram that records the number of page loads before an
-// evicted tab is selected.
-extern const char kPageLoadsBeforeEvictedTabSelected[];
-
-// The name of the histogram tracking the reload time for a previously-evicted
-// tab.
-extern const char kEvictedTabReloadTime[];
-
-// The name of the histogram for whether or not the reload of a
-// previously-evicted tab completed successfully.
-extern const char kEvictedTabReloadSuccessRate[];
-
-// The name of the histogram for whether or not the user switched tabs before an
-// evicted tab completed reloading.
-extern const char kDidUserWaitForEvictedTabReload[];
-
-// The name of the histogram that records time intervals between restores of
-// previously-evicted tabs.  The first restore seen in a session will record the
-// time since the session started.
-extern const char kTimeBetweenRestores[];
-
-// The name of the histogram that records time intervals between the last
-// restore of a previously-evicted tab and the end of the session.
-extern const char kTimeAfterLastRestore[];
-
-// Name of histogram to record whether a memory warning had been recently
-// received when a renderer termination occurred.
-extern const char kRendererTerminationSawMemoryWarning[];
-
-// Name of histogram to record the number of alive renderers when a renderer
-// termination is received.
-extern const char kRendererTerminationAliveRenderers[];
-
-// Name of histogram to record the number of renderers that were alive shortly
-// before a renderer termination. This metric is being recorded in case the OS
-// kills renderers in batches.
-extern const char kRendererTerminationRecentlyAliveRenderers[];
-
-// Name of histogram for recording the state of the tab when the renderer is
-// terminated.
-extern const char kRendererTerminationStateHistogram[];
-
-// The recently alive renderer count metric counts all renderers that were alive
-// x seconds before a renderer termination. |kSecondsBeforeRendererTermination|
-// specifies x.
-extern const int kSecondsBeforeRendererTermination;
-
 // Reports usage about the lifecycle of a single TabModel's tabs.
 class TabUsageRecorder : public web::WebStateObserver,
                          public WebStateListObserver {
  public:
-  enum TabStateWhenSelected {
-    IN_MEMORY = 0,
-    EVICTED,
-    EVICTED_DUE_TO_COLD_START,
-    PARTIALLY_EVICTED,             // Currently, used only by Android.
-    EVICTED_DUE_TO_BACKGROUNDING,  // Deprecated
-    EVICTED_DUE_TO_INCOGNITO,
-    RELOADED_DUE_TO_COLD_START_FG_TAB_ON_START,   // Android.
-    RELOADED_DUE_TO_COLD_START_BG_TAB_ON_SWITCH,  // Android.
-    LAZY_LOAD_FOR_OPEN_IN_NEW_TAB,                // Android
-    STOPPED_DUE_TO_LOADING_WHEN_BACKGROUNDING,    // Deprecated.
-    EVICTED_DUE_TO_LOADING_WHEN_BACKGROUNDING,    // Deprecated.
-    EVICTED_DUE_TO_RENDERER_TERMINATION,
-    TAB_STATE_COUNT,
-  };
-
-  enum LoadDoneState {
-    LOAD_FAILURE,
-    LOAD_SUCCESS,
-    LOAD_DONE_STATE_COUNT,
-  };
-
-  enum EvictedTabUserBehavior {
-    USER_WAITED,
-    USER_DID_NOT_WAIT,
-    USER_LEFT_CHROME,
-    USER_BEHAVIOR_COUNT,
-  };
-
-  // Enum corresponding to UMA's TabForegroundState, for
-  // Tab.StateAtRendererTermination. Must be kept in sync with the UMA enum.
-  enum RendererTerminationTabState {
-    // These two values are for when the app is in the foreground.
-    FOREGROUND_TAB_FOREGROUND_APP = 0,
-    BACKGROUND_TAB_FOREGROUND_APP,
-    // These are for when the app is in the background or inactive.
-    FOREGROUND_TAB_BACKGROUND_APP,
-    BACKGROUND_TAB_BACKGROUND_APP,
-    TERMINATION_TAB_STATE_COUNT
-  };
-
   // Initializes the TabUsageRecorder to watch |web_state_list|.
   TabUsageRecorder(WebStateList* web_state_list,
                    PrerenderService* prerender_service);
@@ -194,7 +101,8 @@
 
   // Returns the state of the given tab.  Call only once per tab, as it removes
   // the tab from |evicted_web_states_|.
-  TabStateWhenSelected ExtractWebStateState(web::WebState* web_state);
+  tab_usage_recorder::TabStateWhenSelected ExtractWebStateState(
+      web::WebState* web_state);
 
   // Records various time metrics when a restore of an evicted tab begins.
   void RecordRestoreStartTime();
@@ -250,7 +158,8 @@
   web::WebState* evicted_web_state_ = nullptr;
 
   // State of |evicted_web_state_| at the time it became the current tab.
-  TabStateWhenSelected evicted_web_state_state_ = IN_MEMORY;
+  tab_usage_recorder::TabStateWhenSelected evicted_web_state_state_ =
+      tab_usage_recorder::IN_MEMORY;
 
   // Keep track of the tab last selected when this tab model was switched
   // away from to another mode (e.g. to incognito).
@@ -266,7 +175,8 @@
   base::TimeTicks evicted_web_state_reload_start_time_;
 
   // Keep track of the tabs that have a known eviction cause.
-  std::map<web::WebState*, TabStateWhenSelected> evicted_web_states_;
+  std::map<web::WebState*, tab_usage_recorder::TabStateWhenSelected>
+      evicted_web_states_;
 
   // The WebStateList containing all the monitored tabs.
   WebStateList* web_state_list_;  // weak
diff --git a/ios/chrome/browser/metrics/tab_usage_recorder.mm b/ios/chrome/browser/metrics/tab_usage_recorder.mm
index 1442644a..aa695bcd 100644
--- a/ios/chrome/browser/metrics/tab_usage_recorder.mm
+++ b/ios/chrome/browser/metrics/tab_usage_recorder.mm
@@ -23,57 +23,6 @@
 #error "This file requires ARC support."
 #endif
 
-// The histogram recording the state of the tab the user switches to.
-const char kSelectedTabHistogramName[] =
-    "Tab.StatusWhenSwitchedBackToForeground";
-
-// The histogram to record the number of page loads before an evicted tab is
-// selected.
-const char kPageLoadsBeforeEvictedTabSelected[] =
-    "Tab.PageLoadsSinceLastSwitchToEvictedTab";
-
-// Records the time it takes for an evicted tab to reload.
-const char kEvictedTabReloadTime[] = "Tab.RestoreTime";
-
-// Records success vs failure of an evicted tab's reload.
-const char kEvictedTabReloadSuccessRate[] = "Tab.RestoreResult";
-
-// Records whether or not the user switched tabs before an evicted tab finished
-// reloading.
-const char kDidUserWaitForEvictedTabReload[] = "Tab.RestoreUserPersistence";
-
-// The name of the histogram that records time intervals between tab restores.
-const char kTimeBetweenRestores[] = "Tabs.TimeBetweenRestores";
-
-// The name of the histogram that records time intervals since the last restore.
-const char kTimeAfterLastRestore[] = "Tabs.TimeAfterLastRestore";
-
-// Name of histogram to record whether a memory warning had been recently
-// received when a renderer termination occurred.
-const char kRendererTerminationSawMemoryWarning[] =
-    "Tab.RendererTermination.RecentlyReceivedMemoryWarning";
-
-// Name of histogram to record the number of alive renderers when a renderer
-// termination is received.
-const char kRendererTerminationAliveRenderers[] =
-    "Tab.RendererTermination.AliveRenderersCount";
-
-// Name of histogram to record the number of renderers that were alive shortly
-// before a renderer termination. This metric is being recorded in case the OS
-// kills renderers in batches.
-const char kRendererTerminationRecentlyAliveRenderers[] =
-    "Tab.RendererTermination.RecentlyAliveRenderersCount";
-
-// Name of histogram for recording the state of the tab when the renderer is
-// terminated.
-const char kRendererTerminationStateHistogram[] =
-    "Tab.StateAtRendererTermination";
-
-// The recently alive renderer count metric counts all renderers that were alive
-// x seconds before a renderer termination. |kSecondsBeforeRendererTermination|
-// specifies x.
-const int kSecondsBeforeRendererTermination = 2;
-
 TabUsageRecorder::TabUsageRecorder(WebStateList* web_state_list,
                                    PrerenderService* prerender_service)
     : restore_start_time_(base::TimeTicks::Now()),
@@ -153,7 +102,8 @@
   // being processed as a switch to the foreground tab.
   for (web::WebState* web_state : web_states) {
     if (web_state != active_web_state) {
-      evicted_web_states_[web_state] = EVICTED_DUE_TO_COLD_START;
+      evicted_web_states_[web_state] =
+          tab_usage_recorder::EVICTED_DUE_TO_COLD_START;
     }
   }
 }
@@ -184,8 +134,10 @@
   // user did not wait for the evicted tab to finish reloading.
   if (old_web_state == evicted_web_state_ && old_web_state != new_web_state &&
       evicted_web_state_reload_start_time_ != base::TimeTicks()) {
-    UMA_HISTOGRAM_ENUMERATION(kDidUserWaitForEvictedTabReload,
-                              USER_DID_NOT_WAIT, USER_BEHAVIOR_COUNT);
+    UMA_HISTOGRAM_ENUMERATION(
+        tab_usage_recorder::kDidUserWaitForEvictedTabReload,
+        tab_usage_recorder::USER_DID_NOT_WAIT,
+        tab_usage_recorder::USER_BEHAVIOR_COUNT);
   }
   ResetEvictedTab();
 
@@ -197,17 +149,20 @@
   DCHECK(!prerender_service_ ||
          !prerender_service_->IsWebStatePrerendered(new_web_state));
 
-  TabStateWhenSelected web_state_state = ExtractWebStateState(new_web_state);
-  if (web_state_state != IN_MEMORY) {
+  tab_usage_recorder::TabStateWhenSelected web_state_state =
+      ExtractWebStateState(new_web_state);
+  if (web_state_state != tab_usage_recorder::IN_MEMORY) {
     // Keep track of the current 'evicted' tab.
     evicted_web_state_ = new_web_state;
     evicted_web_state_state_ = web_state_state;
-    UMA_HISTOGRAM_COUNTS_1M(kPageLoadsBeforeEvictedTabSelected, page_loads_);
+    UMA_HISTOGRAM_COUNTS_1M(
+        tab_usage_recorder::kPageLoadsBeforeEvictedTabSelected, page_loads_);
     ResetPageLoads();
   }
 
-  UMA_HISTOGRAM_ENUMERATION(kSelectedTabHistogramName, web_state_state,
-                            TAB_STATE_COUNT);
+  UMA_HISTOGRAM_ENUMERATION(tab_usage_recorder::kSelectedTabHistogramName,
+                            web_state_state,
+                            tab_usage_recorder::TAB_STATE_COUNT);
 }
 
 void TabUsageRecorder::RecordPrimaryTabModelChange(
@@ -244,8 +199,10 @@
     // that the user did not wait for it to load.
     if (evicted_web_state_ &&
         evicted_web_state_reload_start_time_ != base::TimeTicks()) {
-      UMA_HISTOGRAM_ENUMERATION(kDidUserWaitForEvictedTabReload,
-                                USER_DID_NOT_WAIT, USER_BEHAVIOR_COUNT);
+      UMA_HISTOGRAM_ENUMERATION(
+          tab_usage_recorder::kDidUserWaitForEvictedTabReload,
+          tab_usage_recorder::USER_DID_NOT_WAIT,
+          tab_usage_recorder::USER_BEHAVIOR_COUNT);
     }
     ResetEvictedTab();
   }
@@ -258,15 +215,18 @@
   if (web_state == evicted_web_state_) {
     if (success) {
       LOCAL_HISTOGRAM_TIMES(
-          kEvictedTabReloadTime,
+          tab_usage_recorder::kEvictedTabReloadTime,
           base::TimeTicks::Now() - evicted_web_state_reload_start_time_);
     }
-    UMA_HISTOGRAM_ENUMERATION(kEvictedTabReloadSuccessRate,
-                              success ? LOAD_SUCCESS : LOAD_FAILURE,
-                              LOAD_DONE_STATE_COUNT);
+    UMA_HISTOGRAM_ENUMERATION(tab_usage_recorder::kEvictedTabReloadSuccessRate,
+                              success ? tab_usage_recorder::LOAD_SUCCESS
+                                      : tab_usage_recorder::LOAD_FAILURE,
+                              tab_usage_recorder::LOAD_DONE_STATE_COUNT);
 
-    UMA_HISTOGRAM_ENUMERATION(kDidUserWaitForEvictedTabReload, USER_WAITED,
-                              USER_BEHAVIOR_COUNT);
+    UMA_HISTOGRAM_ENUMERATION(
+        tab_usage_recorder::kDidUserWaitForEvictedTabReload,
+        tab_usage_recorder::USER_WAITED,
+        tab_usage_recorder::USER_BEHAVIOR_COUNT);
     ResetEvictedTab();
   }
 }
@@ -281,15 +241,19 @@
                                           bool web_state_visible,
                                           bool application_active) {
   // Log the tab state for the termination.
-  const RendererTerminationTabState web_state_state =
-      application_active ? (web_state_visible ? FOREGROUND_TAB_FOREGROUND_APP
-                                              : BACKGROUND_TAB_FOREGROUND_APP)
-                         : (web_state_visible ? FOREGROUND_TAB_BACKGROUND_APP
-                                              : BACKGROUND_TAB_BACKGROUND_APP);
+  const tab_usage_recorder::RendererTerminationTabState web_state_state =
+      application_active
+          ? (web_state_visible
+                 ? tab_usage_recorder::FOREGROUND_TAB_FOREGROUND_APP
+                 : tab_usage_recorder::BACKGROUND_TAB_FOREGROUND_APP)
+          : (web_state_visible
+                 ? tab_usage_recorder::FOREGROUND_TAB_BACKGROUND_APP
+                 : tab_usage_recorder::BACKGROUND_TAB_BACKGROUND_APP);
 
-  UMA_HISTOGRAM_ENUMERATION(kRendererTerminationStateHistogram,
-                            static_cast<int>(web_state_state),
-                            static_cast<int>(TERMINATION_TAB_STATE_COUNT));
+  UMA_HISTOGRAM_ENUMERATION(
+      tab_usage_recorder::kRendererTerminationStateHistogram,
+      static_cast<int>(web_state_state),
+      static_cast<int>(tab_usage_recorder::TERMINATION_TAB_STATE_COUNT));
   if (!web_state_visible) {
     if (WebStateAlreadyEvicted(terminated_web_state)) {
       // A web state may get notified multiple times that it's been evicted.
@@ -298,7 +262,7 @@
       return;
     }
     evicted_web_states_[terminated_web_state] =
-        EVICTED_DUE_TO_RENDERER_TERMINATION;
+        tab_usage_recorder::EVICTED_DUE_TO_RENDERER_TERMINATION;
   }
   base::TimeTicks now = base::TimeTicks::Now();
   termination_timestamps_.push_back(now);
@@ -308,19 +272,21 @@
   BOOL saw_memory_warning =
       [defaults boolForKey:previous_session_info_constants::
                                kDidSeeMemoryWarningShortlyBeforeTerminating];
-  UMA_HISTOGRAM_BOOLEAN(kRendererTerminationSawMemoryWarning,
-                        saw_memory_warning);
+  UMA_HISTOGRAM_BOOLEAN(
+      tab_usage_recorder::kRendererTerminationSawMemoryWarning,
+      saw_memory_warning);
 
   // Log number of live tabs after the renderer termination. This count does not
   // include |terminated_web_state|.
   int live_web_states_count = GetLiveWebStatesCount();
-  UMA_HISTOGRAM_COUNTS_100(kRendererTerminationAliveRenderers,
-                           live_web_states_count);
+  UMA_HISTOGRAM_COUNTS_100(
+      tab_usage_recorder::kRendererTerminationAliveRenderers,
+      live_web_states_count);
 
   // Clear |termination_timestamps_| of timestamps older than
   // |kSecondsBeforeRendererTermination| ago.
-  base::TimeDelta seconds_before =
-      base::TimeDelta::FromSeconds(kSecondsBeforeRendererTermination);
+  base::TimeDelta seconds_before = base::TimeDelta::FromSeconds(
+      tab_usage_recorder::kSecondsBeforeRendererTermination);
   base::TimeTicks timestamp_boundary = now - seconds_before;
   while (termination_timestamps_.front() < timestamp_boundary) {
     termination_timestamps_.pop_front();
@@ -330,8 +296,9 @@
   // alive within the past |kSecondsBeforeRendererTermination|.
   NSUInteger recently_live_web_states_count =
       live_web_states_count + termination_timestamps_.size();
-  UMA_HISTOGRAM_COUNTS_100(kRendererTerminationRecentlyAliveRenderers,
-                           recently_live_web_states_count);
+  UMA_HISTOGRAM_COUNTS_100(
+      tab_usage_recorder::kRendererTerminationRecentlyAliveRenderers,
+      recently_live_web_states_count);
 
   ukm::SourceId source_id =
       ukm::GetSourceIdForWebStateDocument(terminated_web_state);
@@ -347,12 +314,14 @@
 
 void TabUsageRecorder::AppDidEnterBackground() {
   base::TimeTicks time_now = base::TimeTicks::Now();
-  LOCAL_HISTOGRAM_TIMES(kTimeAfterLastRestore, time_now - restore_start_time_);
-
+  LOCAL_HISTOGRAM_TIMES(tab_usage_recorder::kTimeAfterLastRestore,
+                        time_now - restore_start_time_);
   if (evicted_web_state_ &&
       evicted_web_state_reload_start_time_ != base::TimeTicks()) {
-    UMA_HISTOGRAM_ENUMERATION(kDidUserWaitForEvictedTabReload, USER_LEFT_CHROME,
-                              USER_BEHAVIOR_COUNT);
+    UMA_HISTOGRAM_ENUMERATION(
+        tab_usage_recorder::kDidUserWaitForEvictedTabReload,
+        tab_usage_recorder::USER_LEFT_CHROME,
+        tab_usage_recorder::USER_BEHAVIOR_COUNT);
     ResetEvictedTab();
   }
 }
@@ -377,7 +346,7 @@
 
 void TabUsageRecorder::ResetEvictedTab() {
   evicted_web_state_ = nullptr;
-  evicted_web_state_state_ = IN_MEMORY;
+  evicted_web_state_state_ = tab_usage_recorder::IN_MEMORY;
   evicted_web_state_reload_start_time_ = base::TimeTicks();
 }
 
@@ -402,25 +371,26 @@
   return iter != evicted_web_states_.end();
 }
 
-TabUsageRecorder::TabStateWhenSelected TabUsageRecorder::ExtractWebStateState(
+tab_usage_recorder::TabStateWhenSelected TabUsageRecorder::ExtractWebStateState(
     web::WebState* web_state) {
   if (!web_state->IsEvicted())
-    return IN_MEMORY;
+    return tab_usage_recorder::IN_MEMORY;
 
   auto iter = evicted_web_states_.find(web_state);
   if (iter != evicted_web_states_.end()) {
-    TabStateWhenSelected web_state_state = iter->second;
+    tab_usage_recorder::TabStateWhenSelected web_state_state = iter->second;
     evicted_web_states_.erase(iter);
     return web_state_state;
   }
 
-  return EVICTED;
+  return tab_usage_recorder::EVICTED;
 }
 
 void TabUsageRecorder::RecordRestoreStartTime() {
   base::TimeTicks time_now = base::TimeTicks::Now();
   // Record the time delta since the last eviction reload was seen.
-  LOCAL_HISTOGRAM_TIMES(kTimeBetweenRestores, time_now - restore_start_time_);
+  LOCAL_HISTOGRAM_TIMES(tab_usage_recorder::kTimeBetweenRestores,
+                        time_now - restore_start_time_);
   restore_start_time_ = time_now;
   evicted_web_state_reload_start_time_ = time_now;
 }
diff --git a/ios/chrome/browser/metrics/tab_usage_recorder_egtest.mm b/ios/chrome/browser/metrics/tab_usage_recorder_egtest.mm
index 41ae2aa4..ac4b5ca 100644
--- a/ios/chrome/browser/metrics/tab_usage_recorder_egtest.mm
+++ b/ios/chrome/browser/metrics/tab_usage_recorder_egtest.mm
@@ -2,8 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#import <EarlGrey/EarlGrey.h>
-
 #include <memory>
 
 #include "base/bind.h"
@@ -12,31 +10,21 @@
 #include "base/strings/utf_string_conversions.h"
 #import "base/test/ios/wait_util.h"
 #include "components/strings/grit/components_strings.h"
-#import "ios/chrome/browser/metrics/tab_usage_recorder.h"
-#import "ios/chrome/browser/metrics/tab_usage_recorder_test_util.h"
-#import "ios/chrome/browser/ui/settings/settings_table_view_controller.h"
-#import "ios/chrome/browser/ui/toolbar/public/toolbar_constants.h"
-#include "ios/chrome/browser/ui/util/ui_util.h"
-#import "ios/chrome/browser/ui/util/uikit_ui_util.h"
-#import "ios/chrome/test/app/browsing_data_test_util.h"
-#import "ios/chrome/test/app/chrome_test_util.h"
-#import "ios/chrome/test/app/histogram_test_util.h"
-#import "ios/chrome/test/app/tab_test_util.h"
+#import "ios/chrome/browser/metrics/metrics_app_interface.h"
+#import "ios/chrome/browser/metrics/tab_usage_recorder_metrics.h"
 #import "ios/chrome/test/earl_grey/chrome_actions.h"
 #import "ios/chrome/test/earl_grey/chrome_earl_grey.h"
 #import "ios/chrome/test/earl_grey/chrome_earl_grey_ui.h"
 #import "ios/chrome/test/earl_grey/chrome_matchers.h"
 #import "ios/chrome/test/earl_grey/chrome_test_case.h"
 #import "ios/chrome/test/scoped_eg_synchronization_disabler.h"
-#import "ios/web/public/test/earl_grey/web_view_matchers.h"
+#import "ios/testing/earl_grey/earl_grey_test.h"
 #include "ios/web/public/test/element_selector.h"
 #include "ios/web/public/test/http_server/delayed_response_provider.h"
 #include "ios/web/public/test/http_server/html_response_provider.h"
 #import "ios/web/public/test/http_server/http_server.h"
 #include "ios/web/public/test/http_server/http_server_util.h"
-#import "ios/web/public/web_state.h"
 #include "ui/base/l10n/l10n_util_mac.h"
-#include "url/gurl.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
@@ -46,11 +34,9 @@
 using chrome_test_util::SettingsDoneButton;
 using chrome_test_util::SettingsMenuButton;
 using chrome_test_util::SettingsMenuPrivacyButton;
+using chrome_test_util::TabGridCellAtIndex;
 using chrome_test_util::WebViewMatcher;
 
-using tab_usage_recorder_test_util::OpenNewIncognitoTabUsingUIAndEvictMainTabs;
-using tab_usage_recorder_test_util::SwitchToNormalMode;
-
 namespace {
 
 const char kTestUrl1[] =
@@ -59,11 +45,14 @@
 const char kTestUrl2[] =
     "http://ios/testing/data/http_server_files/fullscreen.html";
 const char kURL2FirstWord[] = "Rugby";
-const char kClearPageScript[] = "document.body.innerHTML='';";
+NSString* const kClearPageScript = @"document.body.innerHTML='';";
 
 // The delay to use to serve slow URLs.
 const CGFloat kSlowURLDelay = 3;
 
+// The delay to use to wait for pate starting loading.
+const CGFloat kWaitForPageLoadTimeout = 3;
+
 // The delay to use to serve very slow URLS -- tests using this delay expect the
 // page to never load.
 const CGFloat kVerySlowURLDelay = 20;
@@ -114,6 +103,39 @@
                                                           condition),
              @"Waiting for tab to close");
 }
+
+void SwitchToNormalMode() {
+  GREYAssertTrue([ChromeEarlGrey isIncognitoMode],
+                 @"Switching to normal mode is only allowed from Incognito.");
+
+  // Enter the tab grid to switch modes.
+  [ChromeEarlGrey showTabSwitcher];
+
+  // Switch modes and exit the tab grid.
+  const int tab_index = [ChromeEarlGrey indexOfActiveNormalTab];
+  [[EarlGrey
+      selectElementWithMatcher:chrome_test_util::TabGridOpenTabsPanelButton()]
+      performAction:grey_tap()];
+  [[EarlGrey selectElementWithMatcher:TabGridCellAtIndex(tab_index)]
+      performAction:grey_tap()];
+
+  BOOL success = NO;
+  // Turn off synchronization of GREYAssert to test the pending states.
+  {
+    ScopedSynchronizationDisabler disabler;
+    success =
+        base::test::ios::WaitUntilConditionOrTimeout(kWaitElementTimeout, ^{
+          return ![ChromeEarlGrey isIncognitoMode];
+        });
+  }
+
+  if (!success) {
+    // TODO(crbug.com/951600): Avoid asserting directly unless the test fails,
+    // due to timing issues.
+    GREYFail(@"Failed to switch to normal mode.");
+  }
+}
+
 }  // namespace
 
 // Test for the TabUsageRecorder class.
@@ -122,15 +144,24 @@
 
 @implementation TabUsageRecorderTestCase
 
+- (void)setUp {
+  [super setUp];
+  GREYAssertNil([MetricsAppInterface setupHistogramTester],
+                @"Cannot setup histogram tester.");
+  [ChromeEarlGrey removeBrowsingCache];
+}
+
+- (void)tearDown {
+  GREYAssertNil([MetricsAppInterface releaseHistogramTester],
+                @"Cannot reset histogram tester.");
+  [super tearDown];
+}
+
 // Tests that the recorder actual recorde tab state.
 // TODO(crbug.com/934228) The test is flaky.
 - (void)DISABLED_testTabSwitchRecorder {
   web::test::SetUpFileBasedHttpServer();
-  chrome_test_util::HistogramTester histogramTester;
   [ChromeEarlGrey resetTabUsageRecorder];
-  FailureBlock failureBlock = ^(NSString* error) {
-    GREYFail(error);
-  };
 
   // Open two tabs with urls.
   OpenTwoTabs();
@@ -141,12 +172,24 @@
   // Verify that one in-memory tab switch has been recorded.
   // histogramTester.ExpectTotalCount(kSelectedTabHistogramName, 1,
   // failureBlock);
-  histogramTester.ExpectUniqueSample(
-      kSelectedTabHistogramName, TabUsageRecorder::IN_MEMORY, 1, failureBlock);
+  NSError* error = [MetricsAppInterface
+      expectTotalCount:1
+          forHistogram:@(tab_usage_recorder::kSelectedTabHistogramName)];
+  if (error) {
+    GREYFail([error description]);
+  }
+  error = [MetricsAppInterface
+      expectUniqueSampleWithCount:1
+                        forBucket:tab_usage_recorder::IN_MEMORY
+                     forHistogram:
+                         @(tab_usage_recorder::kSelectedTabHistogramName)];
+  if (error) {
+    GREYFail([error description]);
+  }
 
   // Evict the tab.
-  GREYAssertTrue(OpenNewIncognitoTabUsingUIAndEvictMainTabs(),
-                 @"Failed to open Incognito Tab");
+  [ChromeEarlGrey openNewIncognitoTab];
+  [ChromeEarlGrey evictOtherTabModelTabs];
 
   GREYAssertTrue([ChromeEarlGrey isIncognitoMode],
                  @"Failed to switch to incognito mode");
@@ -156,22 +199,27 @@
 
   [ChromeEarlGrey waitForWebStateContainingText:kURL1FirstWord];
 
-  histogramTester.ExpectTotalCount(kSelectedTabHistogramName, 2, failureBlock);
-  histogramTester.ExpectBucketCount(kSelectedTabHistogramName,
-                                    TabUsageRecorder::EVICTED, 1, failureBlock);
+  error = [MetricsAppInterface
+      expectTotalCount:2
+          forHistogram:@(tab_usage_recorder::kSelectedTabHistogramName)];
+  if (error) {
+    GREYFail([error description]);
+  }
+  error = [MetricsAppInterface
+       expectCount:1
+         forBucket:tab_usage_recorder::EVICTED
+      forHistogram:@(tab_usage_recorder::kSelectedTabHistogramName)];
+  if (error) {
+    GREYFail([error description]);
+  }
 }
 
 // Verifies the UMA metric for page loads before a tab eviction by loading
 // some tabs, forcing a tab eviction, then checking the histogram.
 - (void)testPageLoadCountBeforeEvictedTab {
   web::test::SetUpFileBasedHttpServer();
-  chrome_test_util::HistogramTester histogramTester;
   [ChromeEarlGrey resetTabUsageRecorder];
   const GURL url1 = web::test::HttpServer::MakeUrl(kTestUrl1);
-  FailureBlock failureBlock = ^(NSString* error) {
-    GREYFail(error);
-  };
-
   // This test opens three tabs.
   const int numberOfTabs = 3;
   [ChromeEarlGrey closeAllTabsInCurrentMode];
@@ -188,54 +236,59 @@
   [ChromeEarlGrey selectTabAtIndex:0];
 
   // Verify that no page-load count has been recorded.
-  histogramTester.ExpectTotalCount(kPageLoadsBeforeEvictedTabSelected, 0,
-                                   failureBlock);
+  NSError* error = [MetricsAppInterface
+      expectTotalCount:0
+          forHistogram:
+              @(tab_usage_recorder::kPageLoadsBeforeEvictedTabSelected)];
+
+  if (error) {
+    GREYFail([error description]);
+  }
 
   // Reload each tab.
   for (NSUInteger i = 0; i < numberOfTabs; i++) {
     [ChromeEarlGrey selectTabAtIndex:i];
     // Clear the page so that we can check when page reload is complete.
-    __block bool finished = false;
-    chrome_test_util::GetCurrentWebState()->ExecuteJavaScript(
-        base::UTF8ToUTF16(kClearPageScript),
-        base::BindOnce(^(const base::Value*) {
-          finished = true;
-        }));
+    [ChromeEarlGrey executeJavaScript:kClearPageScript];
 
-    GREYAssert(base::test::ios::WaitUntilConditionOrTimeout(1.0,
-                                                            ^{
-                                                              return finished;
-                                                            }),
-               @"JavaScript to reload each tab did not finish");
-    [ChromeEarlGreyUI reload];
+    [ChromeEarlGrey reload];
     [ChromeEarlGrey waitForWebStateContainingText:kURL1FirstWord];
   }
 
   // Evict the tab. Create a dummy tab so that switching back to normal mode
   // does not trigger a reload immediately.
   [ChromeEarlGrey openNewTab];
-  GREYAssertTrue(OpenNewIncognitoTabUsingUIAndEvictMainTabs(),
-                 @"Failed to open Incognito Tab");
+  [ChromeEarlGrey openNewIncognitoTab];
+  [ChromeEarlGrey evictOtherTabModelTabs];
   [ChromeEarlGrey waitForIncognitoTabCount:1];
 
   // Switch back to the normal tabs. Should be on tab one.
   SwitchToNormalMode();
 
   [ChromeEarlGrey selectTabAtIndex:0];
+#if defined(CHROME_EARL_GREY_2)
+  // TODO(crbug.com/1033879): Remove this timer once the sync is fixed.
+  base::test::ios::SpinRunLoopWithMinDelay(base::TimeDelta::FromSeconds(1));
+#endif
   [ChromeEarlGrey waitForWebStateContainingText:kURL1FirstWord];
 
   // Verify that one page-load count has been recorded. It should contain two
   // page loads for each tab created.
-  histogramTester.ExpectTotalCount(kPageLoadsBeforeEvictedTabSelected, 1,
-                                   failureBlock);
+  error = [MetricsAppInterface
+      expectTotalCount:1
+          forHistogram:
+              @(tab_usage_recorder::kPageLoadsBeforeEvictedTabSelected)];
 
-  std::unique_ptr<base::HistogramSamples> samples =
-      histogramTester.GetHistogramSamplesSinceCreation(
-          kPageLoadsBeforeEvictedTabSelected);
-  int sampleSum = samples ? samples->sum() : 0;
-  GREYAssertEqual(sampleSum, numberOfTabs * 2,
-                  @"Expected page loads is %d, actual %d.", numberOfTabs * 2,
-                  sampleSum);
+  if (error) {
+    GREYFail([error description]);
+  }
+
+  error = [MetricsAppInterface
+         expectSum:numberOfTabs * 2
+      forHistogram:@(tab_usage_recorder::kPageLoadsBeforeEvictedTabSelected)];
+  if (error) {
+    GREYFail([error description]);
+  }
 }
 
 // Tests that tabs reloaded on cold start are reported as
@@ -243,64 +296,78 @@
 // TODO(crbug.com/934228) The test is disabled due to flakiness.
 - (void)DISABLED_testColdLaunchReloadCount {
   web::test::SetUpFileBasedHttpServer();
-  chrome_test_util::HistogramTester histogramTester;
   [ChromeEarlGrey resetTabUsageRecorder];
 
   // Open two tabs with urls.
   OpenTwoTabs();
   [ChromeEarlGrey waitForMainTabCount:2];
+
   // Set the normal tabs as 'cold start' tabs.
   [ChromeEarlGrey setCurrentTabsToBeColdStartTabs];
 
   // Open two incognito tabs with urls, clearing normal tabs from memory.
-  GREYAssertTrue(OpenNewIncognitoTabUsingUIAndEvictMainTabs(),
-                 @"Failed to open first Incognito Tab");
-  GREYAssertTrue(OpenNewIncognitoTabUsingUIAndEvictMainTabs(),
-                 @"Failed to open second Incognito Tab");
+  [ChromeEarlGrey openNewIncognitoTab];
+  [ChromeEarlGrey evictOtherTabModelTabs];
+  [ChromeEarlGrey openNewIncognitoTab];
+  [ChromeEarlGrey evictOtherTabModelTabs];
 
   [ChromeEarlGrey waitForIncognitoTabCount:2];
 
   // Switch back to the normal tabs.
   SwitchToNormalMode();
-
+  {
+    ScopedSynchronizationDisabler disabler;
+    Wait(chrome_test_util::ToolsMenuButton(), @"Tool Menu");
+  }
   [ChromeEarlGrey waitForWebStateContainingText:kURL2FirstWord];
 
   // Select the other one so it also reloads.
   [ChromeEarlGrey selectTabAtIndex:0];
   [ChromeEarlGrey waitForWebStateContainingText:kURL1FirstWord];
-  FailureBlock failureBlock = ^(NSString* error) {
-    GREYFail(error);
-  };
+
   // Make sure that one of the 2 tab loads (excluding the selected tab) is
   // counted as a cold start eviction.
-  histogramTester.ExpectBucketCount(kSelectedTabHistogramName,
-                                    TabUsageRecorder::EVICTED_DUE_TO_COLD_START,
-                                    1, failureBlock);
+  NSError* error = [MetricsAppInterface
+       expectCount:1
+         forBucket:tab_usage_recorder::EVICTED_DUE_TO_COLD_START
+      forHistogram:@(tab_usage_recorder::kSelectedTabHistogramName)];
+  if (error) {
+    GREYFail([error description]);
+  }
+  error = [MetricsAppInterface
+       expectCount:0
+         forBucket:tab_usage_recorder::IN_MEMORY
+      forHistogram:@(tab_usage_recorder::kSelectedTabHistogramName)];
+  if (error) {
+    GREYFail([error description]);
+  }
 
-  histogramTester.ExpectBucketCount(
-      kSelectedTabHistogramName, TabUsageRecorder::IN_MEMORY, 0, failureBlock);
   // Re-select the same tab and make sure it is not counted again as evicted.
   [ChromeEarlGrey selectTabAtIndex:1];
   [ChromeEarlGrey selectTabAtIndex:0];
 
   [ChromeEarlGrey waitForWebStateContainingText:kURL1FirstWord];
-  histogramTester.ExpectBucketCount(kSelectedTabHistogramName,
-                                    TabUsageRecorder::EVICTED_DUE_TO_COLD_START,
-                                    1, failureBlock);
-
-  histogramTester.ExpectBucketCount(
-      kSelectedTabHistogramName, TabUsageRecorder::IN_MEMORY, 2, failureBlock);
+  error = [MetricsAppInterface
+       expectCount:1
+         forBucket:tab_usage_recorder::EVICTED_DUE_TO_COLD_START
+      forHistogram:@(tab_usage_recorder::kSelectedTabHistogramName)];
+  if (error) {
+    GREYFail([error description]);
+  }
+  error = [MetricsAppInterface
+       expectCount:2
+         forBucket:tab_usage_recorder::IN_MEMORY
+      forHistogram:@(tab_usage_recorder::kSelectedTabHistogramName)];
+  if (error) {
+    GREYFail([error description]);
+  }
 }
 
 // Tests that tabs reloads after backgrounding and eviction.
 // TODO(crbug.com/934228) The test is flaky.
 - (void)DISABLED_testBackgroundingReloadCount {
   web::test::SetUpFileBasedHttpServer();
-  chrome_test_util::HistogramTester histogramTester;
   [ChromeEarlGrey resetTabUsageRecorder];
-  FailureBlock failureBlock = ^(NSString* error) {
-    GREYFail(error);
-  };
 
   // Open two tabs with urls.
   OpenTwoTabs();
@@ -310,14 +377,27 @@
   [ChromeEarlGrey simulateTabsBackgrounding];
 
   // Open incognito and clear normal tabs from memory.
-  GREYAssertTrue(OpenNewIncognitoTabUsingUIAndEvictMainTabs(),
-                 @"Failed to open Incognito Tab");
+  [ChromeEarlGrey openNewIncognitoTab];
+  [ChromeEarlGrey evictOtherTabModelTabs];
   GREYAssertTrue([ChromeEarlGrey isIncognitoMode],
                  @"Failed to switch to incognito mode");
-  histogramTester.ExpectTotalCount(kEvictedTabReloadTime, 0, failureBlock);
+  NSError* error = [MetricsAppInterface
+      expectTotalCount:0
+          forHistogram:@(tab_usage_recorder::kEvictedTabReloadTime)];
+  if (error) {
+    GREYFail([error description]);
+  }
 
   // Switch back to the normal tabs.
   SwitchToNormalMode();
+  // Wait for the page starting to load. It is possible that the page finish
+  // loading before this test. In that case the wait will timeout. Ignore the
+  // result.
+  bool unused =
+      base::test::ios::WaitUntilConditionOrTimeout(kWaitForPageLoadTimeout, ^{
+        return [ChromeEarlGrey isLoading];
+      });
+  (void)unused;
 
   [ChromeEarlGrey waitForWebStateContainingText:kURL2FirstWord];
 
@@ -326,14 +406,25 @@
   [[EarlGrey
       selectElementWithMatcher:chrome_test_util::OmniboxText(url2.GetContent())]
       assertWithMatcher:grey_notNil()];
-  histogramTester.ExpectTotalCount(kEvictedTabReloadTime, 1, failureBlock);
+
+  error = [MetricsAppInterface
+      expectTotalCount:1
+          forHistogram:@(tab_usage_recorder::kEvictedTabReloadTime)];
+  if (error) {
+    GREYFail([error description]);
+  }
 
   [ChromeEarlGrey selectTabAtIndex:0];
   [ChromeEarlGrey waitForWebStateContainingText:kURL1FirstWord];
   [[EarlGrey
       selectElementWithMatcher:chrome_test_util::OmniboxText(url1.GetContent())]
       assertWithMatcher:grey_notNil()];
-  histogramTester.ExpectTotalCount(kEvictedTabReloadTime, 2, failureBlock);
+  error = [MetricsAppInterface
+      expectTotalCount:2
+          forHistogram:@(tab_usage_recorder::kEvictedTabReloadTime)];
+  if (error) {
+    GREYFail([error description]);
+  }
 }
 
 // Verify correct recording of metrics when the reloading of an evicted tab
@@ -341,28 +432,39 @@
 // TODO(crbug.com/934228) The test is flaky.
 - (void)DISABLED_testEvictedTabReloadSuccess {
   web::test::SetUpFileBasedHttpServer();
-  chrome_test_util::HistogramTester histogramTester;
-  FailureBlock failureBlock = ^(NSString* error) {
-    GREYFail(error);
-  };
 
   [ChromeEarlGrey closeAllTabsInCurrentMode];
   GURL URL = web::test::HttpServer::MakeUrl(kTestUrl1);
   NewMainTabWithURL(URL, kURL1FirstWord);
-  GREYAssertTrue(OpenNewIncognitoTabUsingUIAndEvictMainTabs(),
-                 @"Failed to open Incognito Tab");
+  [ChromeEarlGrey openNewIncognitoTab];
+  [ChromeEarlGrey evictOtherTabModelTabs];
   SwitchToNormalMode();
 
   [ChromeEarlGrey waitForWebStateContainingText:kURL1FirstWord];
   [ChromeEarlGrey waitForMainTabCount:1];
 
-  histogramTester.ExpectUniqueSample(kEvictedTabReloadSuccessRate,
-                                     TabUsageRecorder::LOAD_SUCCESS, 1,
-                                     failureBlock);
-  histogramTester.ExpectUniqueSample(kDidUserWaitForEvictedTabReload,
-                                     TabUsageRecorder::USER_WAITED, 1,
-                                     failureBlock);
-  histogramTester.ExpectTotalCount(kEvictedTabReloadTime, 1, failureBlock);
+  NSError* error = [MetricsAppInterface
+      expectUniqueSampleWithCount:1
+                        forBucket:tab_usage_recorder::LOAD_SUCCESS
+                     forHistogram:
+                         @(tab_usage_recorder::kEvictedTabReloadSuccessRate)];
+  if (error) {
+    GREYFail([error description]);
+  }
+  error = [MetricsAppInterface
+      expectUniqueSampleWithCount:1
+                        forBucket:tab_usage_recorder::USER_WAITED
+                     forHistogram:@(tab_usage_recorder::
+                                        kDidUserWaitForEvictedTabReload)];
+  if (error) {
+    GREYFail([error description]);
+  }
+  error = [MetricsAppInterface
+      expectTotalCount:1
+          forHistogram:@(tab_usage_recorder::kEvictedTabReloadTime)];
+  if (error) {
+    GREYFail([error description]);
+  }
 }
 
 // Test that USER_DID_NOT_WAIT is reported if the user does not wait for the
@@ -371,45 +473,54 @@
   std::map<GURL, std::string> responses;
   const GURL slowURL = web::test::HttpServer::MakeUrl("http://slow");
   responses[slowURL] = "Slow Page";
-
   web::test::SetUpHttpServer(std::make_unique<web::DelayedResponseProvider>(
       std::make_unique<HtmlResponseProvider>(responses), kSlowURLDelay));
 
-  chrome_test_util::HistogramTester histogramTester;
-  FailureBlock failureBlock = ^(NSString* error) {
-    GREYFail(error);
-  };
-
   // A blank tab needed to switch to it after reloading.
   [ChromeEarlGrey openNewTab];
-  [ChromeEarlGrey openNewTab];
-  [ChromeEarlGrey loadURL:slowURL waitForCompletion:NO];
-  GREYAssertTrue(OpenNewIncognitoTabUsingUIAndEvictMainTabs(),
-                 @"Failed to open Incognito Tab");
+  [ChromeEarlGrey loadURL:slowURL waitForCompletion:YES];
+  // Wait for the page starting to load. It is possible that the page finish
+  // loading before this test. In that case the wait will timeout. Ignore the
+  // result.
+  bool unused =
+      base::test::ios::WaitUntilConditionOrTimeout(kWaitForPageLoadTimeout, ^{
+        return [ChromeEarlGrey isLoading];
+      });
+  (void)unused;
+  [ChromeEarlGrey waitForPageToFinishLoading];
 
-  web::test::SetUpHttpServer(std::make_unique<web::DelayedResponseProvider>(
-      std::make_unique<HtmlResponseProvider>(responses), kSlowURLDelay));
+  [ChromeEarlGrey openNewIncognitoTab];
+  [ChromeEarlGrey evictOtherTabModelTabs];
+  [ChromeEarlGrey removeBrowsingCache];
 
   SwitchToNormalMode();
+  // TODO(crbug.com/640977): EarlGrey synchronize on some animations when a
+  // page is loading. Need to handle synchronization manually for this test.
   {
-    // Turn off synchronization of GREYAssert to test the pending states.
     ScopedSynchronizationDisabler disabler;
-    GREYAssert(
-        [[GREYCondition conditionWithName:@"Wait for tab to restart loading."
-                                    block:^BOOL() {
-                                      return [ChromeEarlGrey isLoading];
-                                    }] waitWithTimeout:kWaitElementTimeout],
-        @"Tab did not start loading.");
+    Wait(chrome_test_util::ToolsMenuButton(), @"Tool Menu");
+    // This method is not synced on EarlGrey.
+    [ChromeEarlGrey selectTabAtIndex:0];
+    // Wait for the page starting to load. It is possible that the page finish
+    // loading before this test. In that case the wait will timeout. Ignore the
+    // result.
+    bool unused =
+        base::test::ios::WaitUntilConditionOrTimeout(kWaitForPageLoadTimeout, ^{
+          return [ChromeEarlGrey isLoading];
+        });
+    (void)unused;
   }
 
-  // This method is not synced on EarlGrey.
-  [ChromeEarlGrey selectTabAtIndex:0];
 
   // Do not test the kEvictedTabReloadSuccessRate, as the timing of the two
   // page loads cannot be guaranteed.  The test would be flaky.
-  histogramTester.ExpectBucketCount(kDidUserWaitForEvictedTabReload,
-                                    TabUsageRecorder::USER_DID_NOT_WAIT, 1,
-                                    failureBlock);
+  NSError* error = [MetricsAppInterface
+       expectCount:1
+         forBucket:tab_usage_recorder::USER_DID_NOT_WAIT
+      forHistogram:@(tab_usage_recorder::kDidUserWaitForEvictedTabReload)];
+  if (error) {
+    GREYFail([error description]);
+  }
 }
 
 // Test that the USER_DID_NOT_WAIT metric is logged when the user opens an NTP
@@ -419,43 +530,48 @@
   const GURL slowURL = web::test::HttpServer::MakeUrl("http://slow");
   responses[slowURL] = "Slow Page";
 
-  web::test::SetUpHttpServer(std::make_unique<HtmlResponseProvider>(responses));
-
-  chrome_test_util::HistogramTester histogramTester;
-  FailureBlock failureBlock = ^(NSString* error) {
-    GREYFail(error);
-  };
+  web::test::SetUpHttpServer(std::make_unique<web::DelayedResponseProvider>(
+      std::make_unique<HtmlResponseProvider>(responses), kSlowURLDelay));
 
   NewMainTabWithURL(slowURL, "Slow");
-
-  GREYAssertTrue(OpenNewIncognitoTabUsingUIAndEvictMainTabs(),
-                 @"Failed to open Incognito Tab");
-
-  web::test::SetUpHttpServer(std::make_unique<web::DelayedResponseProvider>(
-      std::make_unique<HtmlResponseProvider>(responses), kVerySlowURLDelay));
+  // Wait for the page starting to load. It is possible that the page finish
+  // loading before this test. In that case the wait will timeout. Ignore the
+  // result.
+  bool unused =
+      base::test::ios::WaitUntilConditionOrTimeout(kWaitForPageLoadTimeout, ^{
+        return [ChromeEarlGrey isLoading];
+      });
+  (void)unused;
+  [ChromeEarlGrey waitForPageToFinishLoading];
+  [ChromeEarlGrey openNewIncognitoTab];
+  [ChromeEarlGrey evictOtherTabModelTabs];
 
   [ChromeEarlGrey removeBrowsingCache];
 
   SwitchToNormalMode();
-
-  // Letting page load start.
-  base::test::ios::SpinRunLoopWithMinDelay(base::TimeDelta::FromSecondsD(0.5));
-
+  // Wait for the page starting to load. It is possible that the page finish
+  // loading before this test. In that case the wait will timeout. Ignore the
+  // result.
+  unused =
+      base::test::ios::WaitUntilConditionOrTimeout(kWaitForPageLoadTimeout, ^{
+        return [ChromeEarlGrey isLoading];
+      });
+  (void)unused;
   // TODO(crbug.com/640977): EarlGrey synchronize on some animations when a
   // page is loading. Need to handle synchronization manually for this test.
   {
     ScopedSynchronizationDisabler disabler;
-    // Make sure the button is here and displayed before tapping it.
-    id<GREYMatcher> toolMenuMatcher =
-        grey_allOf(grey_accessibilityID(kToolbarToolsMenuButtonIdentifier),
-                   grey_sufficientlyVisible(), nil);
-    Wait(toolMenuMatcher, @"Tool Menu");
-
-    [ChromeEarlGrey openNewTab];
+    Wait(chrome_test_util::ToolsMenuButton(), @"Tool Menu");
   }
-  histogramTester.ExpectBucketCount(kDidUserWaitForEvictedTabReload,
-                                    TabUsageRecorder::USER_DID_NOT_WAIT, 1,
-                                    failureBlock);
+
+  [ChromeEarlGrey openNewTab];
+  NSError* error = [MetricsAppInterface
+       expectCount:1
+         forBucket:tab_usage_recorder::USER_DID_NOT_WAIT
+      forHistogram:@(tab_usage_recorder::kDidUserWaitForEvictedTabReload)];
+  if (error) {
+    GREYFail([error description]);
+  }
 }
 
 // Test that the USER_DID_NOT_WAIT metric is not logged when the user opens
@@ -467,30 +583,50 @@
 
   web::test::SetUpHttpServer(std::make_unique<web::DelayedResponseProvider>(
       std::make_unique<HtmlResponseProvider>(responses), kSlowURLDelay));
-
-  chrome_test_util::HistogramTester histogramTester;
-  FailureBlock failureBlock = ^(NSString* error) {
-    GREYFail(error);
-  };
-
   NewMainTabWithURL(slowURL, responses[slowURL]);
-  GREYAssertTrue(OpenNewIncognitoTabUsingUIAndEvictMainTabs(),
-                 @"Failed to open Incognito Tab");
+  // Wait for the page starting to load. It is possible that the page finish
+  // loading before this test. In that case the wait will timeout. Ignore the
+  // result.
+  bool unused =
+      base::test::ios::WaitUntilConditionOrTimeout(kWaitForPageLoadTimeout, ^{
+        return [ChromeEarlGrey isLoading];
+      });
+  (void)unused;
+  [ChromeEarlGrey waitForPageToFinishLoading];
+  [ChromeEarlGrey openNewIncognitoTab];
+  [ChromeEarlGrey evictOtherTabModelTabs];
 
+  [ChromeEarlGrey removeBrowsingCache];
   SwitchToNormalMode();
-
+  // Wait for the page starting to load. It is possible that the page finish
+  // loading before this test. In that case the wait will timeout. Ignore the
+  // result.
+  unused =
+      base::test::ios::WaitUntilConditionOrTimeout(kWaitForPageLoadTimeout, ^{
+        return [ChromeEarlGrey isLoading];
+      });
+  (void)unused;
   [ChromeEarlGreyUI openSettingsMenu];
+
   [ChromeEarlGreyUI tapSettingsMenuButton:SettingsMenuPrivacyButton()];
   [[EarlGrey selectElementWithMatcher:SettingsDoneButton()]
       performAction:grey_tap()];
   [ChromeEarlGrey waitForWebStateContainingText:responses[slowURL]];
 
-  histogramTester.ExpectBucketCount(kDidUserWaitForEvictedTabReload,
-                                    TabUsageRecorder::USER_DID_NOT_WAIT, 0,
-                                    failureBlock);
-  histogramTester.ExpectBucketCount(kDidUserWaitForEvictedTabReload,
-                                    TabUsageRecorder::USER_WAITED, 1,
-                                    failureBlock);
+  NSError* error = [MetricsAppInterface
+       expectCount:0
+         forBucket:tab_usage_recorder::USER_DID_NOT_WAIT
+      forHistogram:@(tab_usage_recorder::kDidUserWaitForEvictedTabReload)];
+  if (error) {
+    GREYFail([error description]);
+  }
+  error = [MetricsAppInterface
+       expectCount:1
+         forBucket:tab_usage_recorder::USER_WAITED
+      forHistogram:@(tab_usage_recorder::kDidUserWaitForEvictedTabReload)];
+  if (error) {
+    GREYFail([error description]);
+  }
 }
 
 // Tests that leaving Chrome while an evicted tab is reloading triggers the
@@ -502,11 +638,28 @@
 
   web::test::SetUpHttpServer(std::make_unique<HtmlResponseProvider>(responses));
 
-  chrome_test_util::HistogramTester histogramTester;
   [ChromeEarlGrey openNewTab];
-  [ChromeEarlGrey loadURL:slowURL waitForCompletion:NO];
-  GREYAssertTrue(OpenNewIncognitoTabUsingUIAndEvictMainTabs(),
-                 @"Failed to open Incognito Tab");
+  [ChromeEarlGrey loadURL:slowURL waitForCompletion:YES];
+  // Wait for the page starting to load. It is possible that the page finish
+  // loading before this test. In that case the wait will timeout. Ignore the
+  // result.
+  bool unused =
+      base::test::ios::WaitUntilConditionOrTimeout(kWaitForPageLoadTimeout, ^{
+        return [ChromeEarlGrey isLoading];
+      });
+  (void)unused;
+  [ChromeEarlGrey waitForPageToFinishLoading];
+
+  int nb_incognito_tab = [ChromeEarlGrey incognitoTabCount];
+  [ChromeEarlGrey openNewIncognitoTab];
+  [ChromeEarlGrey waitForIncognitoTabCount:(nb_incognito_tab + 1)];
+  [ChromeEarlGrey evictOtherTabModelTabs];
+  GREYAssert(base::test::ios::WaitUntilConditionOrTimeout(
+                 kWaitElementTimeout,
+                 ^{
+                   return [ChromeEarlGrey isIncognitoMode];
+                 }),
+             @"Fail to switch to incognito mode.");
 
   web::test::SetUpHttpServer(std::make_unique<web::DelayedResponseProvider>(
       std::make_unique<HtmlResponseProvider>(responses), kVerySlowURLDelay));
@@ -514,28 +667,28 @@
   [ChromeEarlGrey removeBrowsingCache];
 
   SwitchToNormalMode();
+  // Wait for the page starting to load. It is possible that the page finish
+  // loading before this test. In that case the wait will timeout. Ignore the
+  // result.
+  unused =
+      base::test::ios::WaitUntilConditionOrTimeout(kWaitForPageLoadTimeout, ^{
+        return [ChromeEarlGrey isLoading];
+      });
+  (void)unused;
 
-  // Letting page load start.
-  base::test::ios::SpinRunLoopWithMinDelay(base::TimeDelta::FromSecondsD(0.5));
-
-  // TODO(crbug.com/640977): EarlGrey synchronize on some animations when a
-  // page is loading. Need to handle synchronization manually for this test.
   {
     ScopedSynchronizationDisabler disabler;
-    id<GREYMatcher> toolMenuMatcher =
-        grey_allOf(grey_accessibilityID(kToolbarToolsMenuButtonIdentifier),
-                   grey_sufficientlyVisible(), nil);
-    Wait(toolMenuMatcher, @"Tool Menu");
+    Wait(chrome_test_util::ToolsMenuButton(), @"Tool Menu");
 
     [ChromeEarlGrey simulateTabsBackgrounding];
   }
-
-  FailureBlock failureBlock = ^(NSString* error) {
-    GREYFail(error);
-  };
-  histogramTester.ExpectBucketCount(kDidUserWaitForEvictedTabReload,
-                                    TabUsageRecorder::USER_LEFT_CHROME, 1,
-                                    failureBlock);
+  NSError* error = [MetricsAppInterface
+       expectCount:1
+         forBucket:tab_usage_recorder::USER_LEFT_CHROME
+      forHistogram:@(tab_usage_recorder::kDidUserWaitForEvictedTabReload)];
+  if (error) {
+    GREYFail([error description]);
+  }
 }
 
 // Tests that backgrounding a tab that was not evicted while it is loading does
@@ -548,25 +701,27 @@
   web::test::SetUpHttpServer(std::make_unique<web::DelayedResponseProvider>(
       std::make_unique<HtmlResponseProvider>(responses), kSlowURLDelay));
 
-  chrome_test_util::HistogramTester histogramTester;
-
   // We need two tabs to be able to switch.
   [ChromeEarlGrey openNewTab];
-  {
-    ScopedSynchronizationDisabler disabler;
-    [ChromeEarlGrey loadURL:slowURL waitForCompletion:NO];
 
-    // Ensure loading starts but is not finished.
-    base::test::ios::SpinRunLoopWithMaxDelay(base::TimeDelta::FromSeconds(1));
-    [ChromeEarlGrey selectTabAtIndex:0];
+  [ChromeEarlGrey loadURL:slowURL waitForCompletion:NO];
+  // Wait for the page starting to load. It is possible that the page finish
+  // loading before this test. In that case the wait will timeout. Ignore the
+  // result.
+  bool unused =
+      base::test::ios::WaitUntilConditionOrTimeout(kWaitForPageLoadTimeout, ^{
+        return [ChromeEarlGrey isLoading];
+      });
+  (void)unused;
+  [ChromeEarlGrey selectTabAtIndex:0];
+
+  NSError* error = [MetricsAppInterface
+       expectCount:0
+         forBucket:tab_usage_recorder::USER_LEFT_CHROME
+      forHistogram:@(tab_usage_recorder::kDidUserWaitForEvictedTabReload)];
+  if (error) {
+    GREYFail([error description]);
   }
-
-  FailureBlock failureBlock = ^(NSString* error) {
-    GREYFail(error);
-  };
-  histogramTester.ExpectBucketCount(kDidUserWaitForEvictedTabReload,
-                                    TabUsageRecorder::USER_LEFT_CHROME, 0,
-                                    failureBlock);
 }
 
 // Tests that redirecting pages are not reloaded after eviction.
@@ -576,7 +731,6 @@
   GURL destinationURL = web::test::HttpServer::MakeUrl(
       "http://ios/testing/data/http_server_files/destination.html");
   web::test::SetUpFileBasedHttpServer();
-  chrome_test_util::HistogramTester histogramTester;
   [ChromeEarlGrey resetTabUsageRecorder];
 
   NewMainTabWithURL(redirectURL, "arrived");
@@ -587,28 +741,34 @@
 
   NSUInteger tabIndex = [ChromeEarlGrey mainTabCount] - 1;
   [ChromeEarlGrey openNewTab];
-  GREYAssertTrue(OpenNewIncognitoTabUsingUIAndEvictMainTabs(),
-                 @"Failed to open Incognito Tab");
+  [ChromeEarlGrey openNewIncognitoTab];
+  [ChromeEarlGrey evictOtherTabModelTabs];
 
   SwitchToNormalMode();
 
   [ChromeEarlGrey selectTabAtIndex:tabIndex];
+#if defined(CHROME_EARL_GREY_2)
+  // TODO(crbug.com/1033879): Remove this timer once the sync is fixed.
+  base::test::ios::SpinRunLoopWithMinDelay(base::TimeDelta::FromSeconds(1));
+#endif
   [ChromeEarlGrey waitForWebStateContainingText:"arrived"];
 
-  FailureBlock failureBlock = ^(NSString* error) {
-    GREYFail(error);
-  };
   // Verify that one page-load count has been recorded.  It should contain a
   // sum of 1 - one sample with 1 page load.
-  histogramTester.ExpectTotalCount(kPageLoadsBeforeEvictedTabSelected, 1,
-                                   failureBlock);
+  NSError* error = [MetricsAppInterface
+      expectTotalCount:1
+          forHistogram:
+              @(tab_usage_recorder::kPageLoadsBeforeEvictedTabSelected)];
+  if (error) {
+    GREYFail([error description]);
+  }
 
-  std::unique_ptr<base::HistogramSamples> samples =
-      histogramTester.GetHistogramSamplesSinceCreation(
-          kPageLoadsBeforeEvictedTabSelected);
-  int sampleSum = samples->sum();
-  GREYAssertEqual(sampleSum, 1, @"Expected page loads is %d, actual is %d.", 1,
-                  sampleSum);
+  error = [MetricsAppInterface
+         expectSum:1
+      forHistogram:@(tab_usage_recorder::kPageLoadsBeforeEvictedTabSelected)];
+  if (error) {
+    GREYFail([error description]);
+  }
 }
 
 // Tests that navigations are correctly reported in
@@ -625,7 +785,6 @@
       destinationURL.spec().c_str());
   responses[destinationURL] = "Whee!";
   web::test::SetUpHttpServer(std::make_unique<HtmlResponseProvider>(responses));
-  chrome_test_util::HistogramTester histogramTester;
   [ChromeEarlGrey resetTabUsageRecorder];
 
   // Open a tab with a link to click.
@@ -635,30 +794,41 @@
 
   [ChromeEarlGrey waitForWebStateContainingText:"Whee"];
   NSUInteger tabIndex = [ChromeEarlGrey mainTabCount] - 1;
+
   [ChromeEarlGrey openNewTab];
-  GREYAssertTrue(OpenNewIncognitoTabUsingUIAndEvictMainTabs(),
-                 @"Failed to open Incognito Tab");
+  [ChromeEarlGrey openNewIncognitoTab];
+  [ChromeEarlGrey evictOtherTabModelTabs];
   SwitchToNormalMode();
 
   [ChromeEarlGrey selectTabAtIndex:tabIndex];
+  // Wait for the page starting to load. It is possible that the page finish
+  // loading before this test. In that case the wait will timeout. Ignore the
+  // result.
+  bool unused =
+      base::test::ios::WaitUntilConditionOrTimeout(kWaitForPageLoadTimeout, ^{
+        return [ChromeEarlGrey isLoading];
+      });
+  (void)unused;
   [ChromeEarlGrey waitForWebStateContainingText:"Whee"];
 
   // Verify that the page-load count has been recorded.  It should contain a
   // sum of 2 - one sample with 2 page loads.
-  std::unique_ptr<base::HistogramSamples> samples =
-      histogramTester.GetHistogramSamplesSinceCreation(
-          kPageLoadsBeforeEvictedTabSelected);
-  int sampleSum = samples->sum();
-  GREYAssertEqual(sampleSum, 2, @"Expected page loads is %d, actual %d.", 2,
-                  sampleSum);
+  NSError* error = [MetricsAppInterface
+         expectSum:2
+      forHistogram:@(tab_usage_recorder::kPageLoadsBeforeEvictedTabSelected)];
+  if (error) {
+    GREYFail([error description]);
+  }
 
-  FailureBlock failureBlock = ^(NSString* error) {
-    GREYFail(error);
-  };
   // Verify that only one evicted tab was selected.  This is to make sure the
   // link click did not generate an evicted-tab-reload count.
-  histogramTester.ExpectBucketCount(kSelectedTabHistogramName,
-                                    TabUsageRecorder::EVICTED, 1, failureBlock);
+  error = [MetricsAppInterface
+       expectCount:1
+         forBucket:tab_usage_recorder::EVICTED
+      forHistogram:@(tab_usage_recorder::kSelectedTabHistogramName)];
+  if (error) {
+    GREYFail([error description]);
+  }
 }
 
 // Tests that opening links in a new tab will not evict the source tab.
@@ -678,7 +848,6 @@
                          destinationURL.spec().c_str());
   responses[destinationURL] = "Whee!";
   web::test::SetUpHttpServer(std::make_unique<HtmlResponseProvider>(responses));
-  chrome_test_util::HistogramTester histogramTester;
   [ChromeEarlGrey resetTabUsageRecorder];
 
   // Open a tab with a link to click.
@@ -699,24 +868,30 @@
   [[GREYUIThreadExecutor sharedInstance] drainUntilIdle];
   [ChromeEarlGrey waitForWebStateContainingText:"Whee"];
 
-  FailureBlock failureBlock = ^(NSString* error) {
-    GREYFail(error);
-  };
-  histogramTester.ExpectTotalCount(kSelectedTabHistogramName, 1, failureBlock);
-  histogramTester.ExpectBucketCount(
-      kSelectedTabHistogramName, TabUsageRecorder::IN_MEMORY, 1, failureBlock);
+  NSError* error = [MetricsAppInterface
+      expectTotalCount:1
+          forHistogram:@(tab_usage_recorder::kSelectedTabHistogramName)];
+  if (error) {
+    GREYFail([error description]);
+  }
+  error = [MetricsAppInterface
+       expectCount:1
+         forBucket:tab_usage_recorder::IN_MEMORY
+      forHistogram:@(tab_usage_recorder::kSelectedTabHistogramName)];
+  if (error) {
+    GREYFail([error description]);
+  }
 }
 
 // Tests that opening tabs from external app will not cause tab eviction.
 - (void)testOpenFromApp {
   web::test::SetUpFileBasedHttpServer();
-  chrome_test_util::HistogramTester histogramTester;
   [ChromeEarlGrey resetTabUsageRecorder];
 
   [ChromeEarlGrey openNewTab];
   GURL url(kTestUrl1);
 
-  chrome_test_util::OpenChromeFromExternalApp(url);
+  [ChromeEarlGrey openURLFromExternalApp:url];
 
   // Add a delay to ensure the tab has fully opened.  Because the check below
   // is for zero metrics recorded, it adds no flakiness.  However, this pause
@@ -725,20 +900,21 @@
   base::test::ios::SpinRunLoopWithMaxDelay(
       base::TimeDelta::FromMilliseconds(500));
 
-  FailureBlock failureBlock = ^(NSString* error) {
-    GREYFail(error);
-  };
   // Verify that zero Tab.StatusWhenSwitchedBackToForeground metrics were
   // recorded.  Tabs created at the time the user switches to them should not
   // be counted in this metric.
-  histogramTester.ExpectTotalCount(kSelectedTabHistogramName, 0, failureBlock);
+  NSError* error = [MetricsAppInterface
+      expectTotalCount:0
+          forHistogram:@(tab_usage_recorder::kSelectedTabHistogramName)];
+  if (error) {
+    GREYFail([error description]);
+  }
 }
 
 // Verify that evicted tabs that are deleted are removed from the evicted tabs
 // map.
 - (void)testTabDeletion {
   web::test::SetUpFileBasedHttpServer();
-  chrome_test_util::HistogramTester histogramTester;
   [ChromeEarlGrey resetTabUsageRecorder];
   // Add an autorelease pool to delete the closed tabs before the end of the
   // test.
@@ -759,8 +935,7 @@
 
     // Close two of the three open tabs without selecting them first.
     // This should delete the tab objects, even though they're still being
-    // tracked
-    // by the tab usage recorder in its |evicted_tabs_| map.
+    // tracked by the tab usage recorder in its |evicted_tabs_| map.
     CloseTabAtIndexAndSync(1);
 
     GREYAssertEqual([ChromeEarlGrey mainTabCount], 2,
diff --git a/ios/chrome/browser/metrics/tab_usage_recorder_metrics.h b/ios/chrome/browser/metrics/tab_usage_recorder_metrics.h
new file mode 100644
index 0000000..a462a39
--- /dev/null
+++ b/ios/chrome/browser/metrics/tab_usage_recorder_metrics.h
@@ -0,0 +1,116 @@
+// 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 IOS_CHROME_BROWSER_METRICS_TAB_USAGE_RECORDER_METRICS_H_
+#define IOS_CHROME_BROWSER_METRICS_TAB_USAGE_RECORDER_METRICS_H_
+
+namespace tab_usage_recorder {
+// Histogram names (visible for testing only).
+
+// The name of the histogram that records the state of the selected tab
+// (i.e. the tab being switched to).
+extern const char kSelectedTabHistogramName[];
+
+// The name of the histogram that records the number of page loads before an
+// evicted tab is selected.
+extern const char kPageLoadsBeforeEvictedTabSelected[];
+
+// The name of the histogram tracking the reload time for a previously-evicted
+// tab.
+extern const char kEvictedTabReloadTime[];
+
+// The name of the histogram for whether or not the reload of a
+// previously-evicted tab completed successfully.
+extern const char kEvictedTabReloadSuccessRate[];
+
+// The name of the histogram for whether or not the user switched tabs before an
+// evicted tab completed reloading.
+extern const char kDidUserWaitForEvictedTabReload[];
+
+// The name of the histogram that records time intervals between restores of
+// previously-evicted tabs.  The first restore seen in a session will record the
+// time since the session started.
+extern const char kTimeBetweenRestores[];
+
+// The name of the histogram that records time intervals between the last
+// restore of a previously-evicted tab and the end of the session.
+extern const char kTimeAfterLastRestore[];
+
+// Name of histogram to record whether a memory warning had been recently
+// received when a renderer termination occurred.
+extern const char kRendererTerminationSawMemoryWarning[];
+
+// Name of histogram to record the number of alive renderers when a renderer
+// termination is received.
+extern const char kRendererTerminationAliveRenderers[];
+
+// Name of histogram to record the number of renderers that were alive shortly
+// before a renderer termination. This metric is being recorded in case the OS
+// kills renderers in batches.
+extern const char kRendererTerminationRecentlyAliveRenderers[];
+
+// Name of histogram for recording the state of the tab when the renderer is
+// terminated.
+extern const char kRendererTerminationStateHistogram[];
+
+// The recently alive renderer count metric counts all renderers that were alive
+// x seconds before a renderer termination. |kSecondsBeforeRendererTermination|
+// specifies x.
+extern const int kSecondsBeforeRendererTermination;
+
+// enum for
+// kSelectedTabHistogramName[] = "Tab.StatusWhenSwitchedBackToForeground"
+// histogram.
+enum TabStateWhenSelected {
+  IN_MEMORY = 0,                  // Memory resident
+  EVICTED = 1,                    // Evicted and reloaded
+  EVICTED_DUE_TO_COLD_START = 2,  // Reloaded due to cold start
+  PARTIALLY_EVICTED =
+      3,  // Partially evicted (Currently, used only by Android.)
+  EVICTED_DUE_TO_BACKGROUNDING =
+      4,                         // Reloaded due to backgrounding (Deprecated)
+  EVICTED_DUE_TO_INCOGNITO = 5,  // Reloaded due to incognito
+  RELOADED_DUE_TO_COLD_START_FG_TAB_ON_START =
+      6,  // Reloaded due to cold start (fg tab on start) (Android)
+  RELOADED_DUE_TO_COLD_START_BG_TAB_ON_SWITCH =
+      7,  // Reloaded due to cold start (bg tab on switch) (Android)
+  LAZY_LOAD_FOR_OPEN_IN_NEW_TAB =
+      8,  // Lazy load for 'Open in new tab' (Android)
+  STOPPED_DUE_TO_LOADING_WHEN_BACKGROUNDING =
+      9,  // Stopped due to page loading when backgrounding (Deprecated)
+  EVICTED_DUE_TO_LOADING_WHEN_BACKGROUNDING =
+      10,  // Evicted due to page loading when backgrounding (Deprecated)
+  EVICTED_DUE_TO_RENDERER_TERMINATION =
+      11,  // Evicted due to OS terminating the renderer
+  TAB_STATE_COUNT = 12,
+};
+
+enum LoadDoneState {
+  LOAD_FAILURE,
+  LOAD_SUCCESS,
+  LOAD_DONE_STATE_COUNT,
+};
+
+enum EvictedTabUserBehavior {
+  USER_WAITED,
+  USER_DID_NOT_WAIT,
+  USER_LEFT_CHROME,
+  USER_BEHAVIOR_COUNT,
+};
+
+// Enum corresponding to UMA's TabForegroundState, for
+// Tab.StateAtRendererTermination. Must be kept in sync with the UMA enum.
+enum RendererTerminationTabState {
+  // These two values are for when the app is in the foreground.
+  FOREGROUND_TAB_FOREGROUND_APP = 0,
+  BACKGROUND_TAB_FOREGROUND_APP,
+  // These are for when the app is in the background or inactive.
+  FOREGROUND_TAB_BACKGROUND_APP,
+  BACKGROUND_TAB_BACKGROUND_APP,
+  TERMINATION_TAB_STATE_COUNT
+};
+
+}  // namespace tab_usage_recorder
+
+#endif  // IOS_CHROME_BROWSER_METRICS_TAB_USAGE_RECORDER_METRICS_H_
diff --git a/ios/chrome/browser/metrics/tab_usage_recorder_metrics.mm b/ios/chrome/browser/metrics/tab_usage_recorder_metrics.mm
new file mode 100644
index 0000000..6273b38d
--- /dev/null
+++ b/ios/chrome/browser/metrics/tab_usage_recorder_metrics.mm
@@ -0,0 +1,64 @@
+// 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 "ios/chrome/browser/metrics/tab_usage_recorder_metrics.h"
+
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
+namespace tab_usage_recorder {
+
+// The histogram recording the state of the tab the user switches to.
+const char kSelectedTabHistogramName[] =
+    "Tab.StatusWhenSwitchedBackToForeground";
+
+// The histogram to record the number of page loads before an evicted tab is
+// selected.
+const char kPageLoadsBeforeEvictedTabSelected[] =
+    "Tab.PageLoadsSinceLastSwitchToEvictedTab";
+
+// Records the time it takes for an evicted tab to reload.
+const char kEvictedTabReloadTime[] = "Tab.RestoreTime";
+
+// Records success vs failure of an evicted tab's reload.
+const char kEvictedTabReloadSuccessRate[] = "Tab.RestoreResult";
+
+// Records whether or not the user switched tabs before an evicted tab finished
+// reloading.
+const char kDidUserWaitForEvictedTabReload[] = "Tab.RestoreUserPersistence";
+
+// The name of the histogram that records time intervals between tab restores.
+const char kTimeBetweenRestores[] = "Tabs.TimeBetweenRestores";
+
+// The name of the histogram that records time intervals since the last restore.
+const char kTimeAfterLastRestore[] = "Tabs.TimeAfterLastRestore";
+
+// Name of histogram to record whether a memory warning had been recently
+// received when a renderer termination occurred.
+const char kRendererTerminationSawMemoryWarning[] =
+    "Tab.RendererTermination.RecentlyReceivedMemoryWarning";
+
+// Name of histogram to record the number of alive renderers when a renderer
+// termination is received.
+const char kRendererTerminationAliveRenderers[] =
+    "Tab.RendererTermination.AliveRenderersCount";
+
+// Name of histogram to record the number of renderers that were alive shortly
+// before a renderer termination. This metric is being recorded in case the OS
+// kills renderers in batches.
+const char kRendererTerminationRecentlyAliveRenderers[] =
+    "Tab.RendererTermination.RecentlyAliveRenderersCount";
+
+// Name of histogram for recording the state of the tab when the renderer is
+// terminated.
+const char kRendererTerminationStateHistogram[] =
+    "Tab.StateAtRendererTermination";
+
+// The recently alive renderer count metric counts all renderers that were alive
+// x seconds before a renderer termination. |kSecondsBeforeRendererTermination|
+// specifies x.
+const int kSecondsBeforeRendererTermination = 2;
+
+}  // namespace tab_usage_recorder
diff --git a/ios/chrome/browser/metrics/tab_usage_recorder_test_util.h b/ios/chrome/browser/metrics/tab_usage_recorder_test_util.h
deleted file mode 100644
index 7ff4d42..0000000
--- a/ios/chrome/browser/metrics/tab_usage_recorder_test_util.h
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef IOS_CHROME_BROWSER_METRICS_TAB_USAGE_RECORDER_TEST_UTIL_H_
-#define IOS_CHROME_BROWSER_METRICS_TAB_USAGE_RECORDER_TEST_UTIL_H_
-
-#include "base/compiler_specific.h"
-
-@class NSError;
-
-namespace tab_usage_recorder_test_util {
-
-// Opens a new incognito tab using the UI and evicts any main tab model tabs.
-// Returns false on failure.
-bool OpenNewIncognitoTabUsingUIAndEvictMainTabs() WARN_UNUSED_RESULT;
-
-// Switches to normal mode using the tab switcher and selects the
-// previously-selected normal tab. Assumes current mode is Incognito.
-// Induces EG assert on failure.
-void SwitchToNormalMode();
-
-}  // namespace tab_usage_recorder_test_util
-
-#endif  // IOS_CHROME_BROWSER_METRICS_TAB_USAGE_RECORDER_TEST_UTIL_H_
diff --git a/ios/chrome/browser/metrics/tab_usage_recorder_test_util.mm b/ios/chrome/browser/metrics/tab_usage_recorder_test_util.mm
deleted file mode 100644
index 46bb625..0000000
--- a/ios/chrome/browser/metrics/tab_usage_recorder_test_util.mm
+++ /dev/null
@@ -1,94 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ios/chrome/browser/metrics/tab_usage_recorder_test_util.h"
-
-#import <EarlGrey/EarlGrey.h>
-#import <Foundation/Foundation.h>
-
-#import "base/ios/block_types.h"
-#import "base/test/ios/wait_util.h"
-#import "ios/chrome/app/main_controller.h"
-#import "ios/chrome/browser/tabs/tab_model.h"
-#import "ios/chrome/browser/ui/main/browser_interface_provider.h"
-#import "ios/chrome/browser/ui/popup_menu/popup_menu_constants.h"
-#include "ios/chrome/browser/ui/util/ui_util.h"
-#include "ios/chrome/browser/web_state_list/web_state_list.h"
-#include "ios/chrome/grit/ios_strings.h"
-#import "ios/chrome/test/app/chrome_test_util.h"
-#import "ios/chrome/test/earl_grey/chrome_earl_grey.h"
-#import "ios/chrome/test/earl_grey/chrome_earl_grey_ui.h"
-#import "ios/chrome/test/earl_grey/chrome_matchers.h"
-#import "ios/chrome/test/scoped_eg_synchronization_disabler.h"
-#import "ios/testing/nserror_util.h"
-#include "ui/base/l10n/l10n_util_mac.h"
-
-#if !defined(__has_feature) || !__has_feature(objc_arc)
-#error "This file requires ARC support."
-#endif
-
-using base::test::ios::WaitUntilConditionOrTimeout;
-
-namespace {
-
-// The delay to wait for an element to appear before tapping on it.
-const NSTimeInterval kWaitElementTimeout = 3;
-
-}  // namespace
-
-namespace tab_usage_recorder_test_util {
-
-bool OpenNewIncognitoTabUsingUIAndEvictMainTabs() {
-  int nb_incognito_tab = [ChromeEarlGrey incognitoTabCount];
-  [ChromeEarlGreyUI openToolsMenu];
-  id<GREYMatcher> new_incognito_tab_button_matcher =
-      grey_accessibilityID(kToolsMenuNewIncognitoTabId);
-  [[EarlGrey selectElementWithMatcher:new_incognito_tab_button_matcher]
-      performAction:grey_tap()];
-  [ChromeEarlGrey waitForIncognitoTabCount:(nb_incognito_tab + 1)];
-  bool success = WaitUntilConditionOrTimeout(kWaitElementTimeout, ^{
-    return [ChromeEarlGrey isIncognitoMode];
-  });
-  if (!success) {
-    return false;
-  }
-
-  [ChromeEarlGrey evictOtherTabModelTabs];
-  return true;
-}
-
-void SwitchToNormalMode() {
-  GREYAssertTrue([ChromeEarlGrey isIncognitoMode],
-                 @"Switching to normal mode is only allowed from Incognito.");
-
-  // Enter the tab grid to switch modes.
-  [ChromeEarlGrey showTabSwitcher];
-
-  // Switch modes and exit the tab grid.
-  TabModel* model = chrome_test_util::GetMainController()
-                        .interfaceProvider.mainInterface.tabModel;
-  const int tab_index = model.webStateList->active_index();
-  [[EarlGrey
-      selectElementWithMatcher:chrome_test_util::TabGridOpenTabsPanelButton()]
-      performAction:grey_tap()];
-  [[EarlGrey selectElementWithMatcher:chrome_test_util::TabGridCellAtIndex(
-                                          tab_index)] performAction:grey_tap()];
-
-  BOOL success = NO;
-  // Turn off synchronization of GREYAssert to test the pending states.
-  {
-    ScopedSynchronizationDisabler disabler;
-    success = WaitUntilConditionOrTimeout(kWaitElementTimeout, ^{
-      return ![ChromeEarlGrey isIncognitoMode];
-    });
-  }
-
-  if (!success) {
-    // TODO(crbug.com/951600): Avoid asserting directly unless the test fails,
-    // due to timing issues.
-    GREYFail(@"Failed to switch to normal mode.");
-  }
-}
-
-}  // namespace tab_usage_recorder_test_util
diff --git a/ios/chrome/browser/metrics/tab_usage_recorder_unittest.mm b/ios/chrome/browser/metrics/tab_usage_recorder_unittest.mm
index 40a1d63..1fccd95 100644
--- a/ios/chrome/browser/metrics/tab_usage_recorder_unittest.mm
+++ b/ios/chrome/browser/metrics/tab_usage_recorder_unittest.mm
@@ -102,8 +102,9 @@
   web::TestWebState* mock_tab_b = InsertTestWebState(kURL, IN_MEMORY);
 
   tab_usage_recorder_.RecordTabSwitched(mock_tab_a, mock_tab_b);
-  histogram_tester_.ExpectUniqueSample(kSelectedTabHistogramName,
-                                       TabUsageRecorder::IN_MEMORY, 1);
+  histogram_tester_.ExpectUniqueSample(
+      tab_usage_recorder::kSelectedTabHistogramName,
+      tab_usage_recorder::IN_MEMORY, 1);
 }
 
 TEST_F(TabUsageRecorderTest, SwitchToEvictedTab) {
@@ -111,8 +112,9 @@
   web::TestWebState* mock_tab_b = InsertTestWebState(kURL, NOT_IN_MEMORY);
 
   tab_usage_recorder_.RecordTabSwitched(mock_tab_a, mock_tab_b);
-  histogram_tester_.ExpectUniqueSample(kSelectedTabHistogramName,
-                                       TabUsageRecorder::EVICTED, 1);
+  histogram_tester_.ExpectUniqueSample(
+      tab_usage_recorder::kSelectedTabHistogramName,
+      tab_usage_recorder::EVICTED, 1);
 }
 
 TEST_F(TabUsageRecorderTest, SwitchFromEvictedTab) {
@@ -120,8 +122,9 @@
   web::TestWebState* mock_tab_b = InsertTestWebState(kURL, IN_MEMORY);
 
   tab_usage_recorder_.RecordTabSwitched(mock_tab_a, mock_tab_b);
-  histogram_tester_.ExpectUniqueSample(kSelectedTabHistogramName,
-                                       TabUsageRecorder::IN_MEMORY, 1);
+  histogram_tester_.ExpectUniqueSample(
+      tab_usage_recorder::kSelectedTabHistogramName,
+      tab_usage_recorder::IN_MEMORY, 1);
 }
 
 TEST_F(TabUsageRecorderTest, SwitchBetweenEvictedTabs) {
@@ -129,8 +132,9 @@
   web::TestWebState* mock_tab_b = InsertTestWebState(kURL, NOT_IN_MEMORY);
 
   tab_usage_recorder_.RecordTabSwitched(mock_tab_a, mock_tab_b);
-  histogram_tester_.ExpectUniqueSample(kSelectedTabHistogramName,
-                                       TabUsageRecorder::EVICTED, 1);
+  histogram_tester_.ExpectUniqueSample(
+      tab_usage_recorder::kSelectedTabHistogramName,
+      tab_usage_recorder::EVICTED, 1);
 }
 
 TEST_F(TabUsageRecorderTest, CountPageLoadsBeforeEvictedTab) {
@@ -143,8 +147,8 @@
     tab_usage_recorder_.RecordPageLoadStart(mock_tab_a);
   }
   tab_usage_recorder_.RecordTabSwitched(mock_tab_a, mock_tab_b);
-  histogram_tester_.ExpectUniqueSample(kPageLoadsBeforeEvictedTabSelected,
-                                       kNumReloads, 1);
+  histogram_tester_.ExpectUniqueSample(
+      tab_usage_recorder::kPageLoadsBeforeEvictedTabSelected, kNumReloads, 1);
 }
 
 // Tests that chrome:// URLs are not counted in page load stats.
@@ -159,7 +163,8 @@
   }
 
   tab_usage_recorder_.RecordTabSwitched(mock_tab_a, mock_tab_b);
-  histogram_tester_.ExpectTotalCount(kPageLoadsBeforeEvictedTabSelected, 0);
+  histogram_tester_.ExpectTotalCount(
+      tab_usage_recorder::kPageLoadsBeforeEvictedTabSelected, 0);
 }
 
 // Tests that page load stats is not updated for an evicted tab that has a
@@ -177,7 +182,8 @@
   test_navigation_manager->SetPendingItem(item);
 
   tab_usage_recorder_.RecordTabSwitched(old_tab, new_evicted_tab);
-  histogram_tester_.ExpectTotalCount(kPageLoadsBeforeEvictedTabSelected, 0);
+  histogram_tester_.ExpectTotalCount(
+      tab_usage_recorder::kPageLoadsBeforeEvictedTabSelected, 0);
 }
 
 TEST_F(TabUsageRecorderTest, TestColdStartTabs) {
@@ -194,12 +200,14 @@
   tab_usage_recorder_.RecordTabSwitched(mock_tab_a, mock_tab_b);
   // Switch from B (cold start evicted) to C (evicted).
   tab_usage_recorder_.RecordTabSwitched(mock_tab_b, mock_tab_c);
-  histogram_tester_.ExpectTotalCount(kSelectedTabHistogramName, 2);
+  histogram_tester_.ExpectTotalCount(
+      tab_usage_recorder::kSelectedTabHistogramName, 2);
   histogram_tester_.ExpectBucketCount(
-      kSelectedTabHistogramName, TabUsageRecorder::EVICTED_DUE_TO_COLD_START,
-      1);
-  histogram_tester_.ExpectBucketCount(kSelectedTabHistogramName,
-                                      TabUsageRecorder::EVICTED, 1);
+      tab_usage_recorder::kSelectedTabHistogramName,
+      tab_usage_recorder::EVICTED_DUE_TO_COLD_START, 1);
+  histogram_tester_.ExpectBucketCount(
+      tab_usage_recorder::kSelectedTabHistogramName,
+      tab_usage_recorder::EVICTED, 1);
 }
 
 TEST_F(TabUsageRecorderTest, TestSwitchedModeTabs) {
@@ -212,11 +220,14 @@
   tab_usage_recorder_.RecordTabSwitched(mock_tab_a, mock_tab_b);
   // Switch from B (incognito evicted) to C (evicted).
   tab_usage_recorder_.RecordTabSwitched(mock_tab_b, mock_tab_c);
-  histogram_tester_.ExpectTotalCount(kSelectedTabHistogramName, 2);
+  histogram_tester_.ExpectTotalCount(
+      tab_usage_recorder::kSelectedTabHistogramName, 2);
   histogram_tester_.ExpectBucketCount(
-      kSelectedTabHistogramName, TabUsageRecorder::EVICTED_DUE_TO_INCOGNITO, 0);
-  histogram_tester_.ExpectBucketCount(kSelectedTabHistogramName,
-                                      TabUsageRecorder::EVICTED, 2);
+      tab_usage_recorder::kSelectedTabHistogramName,
+      tab_usage_recorder::EVICTED_DUE_TO_INCOGNITO, 0);
+  histogram_tester_.ExpectBucketCount(
+      tab_usage_recorder::kSelectedTabHistogramName,
+      tab_usage_recorder::EVICTED, 2);
 }
 
 TEST_F(TabUsageRecorderTest, TestEvictedTabReloadTime) {
@@ -225,7 +236,8 @@
   tab_usage_recorder_.RecordTabSwitched(mock_tab_a, mock_tab_b);
   tab_usage_recorder_.RecordPageLoadStart(mock_tab_b);
   tab_usage_recorder_.RecordPageLoadDone(mock_tab_b, true);
-  histogram_tester_.ExpectTotalCount(kEvictedTabReloadTime, 1);
+  histogram_tester_.ExpectTotalCount(tab_usage_recorder::kEvictedTabReloadTime,
+                                     1);
 }
 
 TEST_F(TabUsageRecorderTest, TestEvictedTabReloadSuccess) {
@@ -234,8 +246,9 @@
   tab_usage_recorder_.RecordTabSwitched(mock_tab_a, mock_tab_b);
   tab_usage_recorder_.RecordPageLoadStart(mock_tab_b);
   tab_usage_recorder_.RecordPageLoadDone(mock_tab_b, true);
-  histogram_tester_.ExpectUniqueSample(kEvictedTabReloadSuccessRate,
-                                       TabUsageRecorder::LOAD_SUCCESS, 1);
+  histogram_tester_.ExpectUniqueSample(
+      tab_usage_recorder::kEvictedTabReloadSuccessRate,
+      tab_usage_recorder::LOAD_SUCCESS, 1);
 }
 
 TEST_F(TabUsageRecorderTest, TestEvictedTabReloadFailure) {
@@ -244,8 +257,9 @@
   tab_usage_recorder_.RecordTabSwitched(mock_tab_a, mock_tab_b);
   tab_usage_recorder_.RecordPageLoadStart(mock_tab_b);
   tab_usage_recorder_.RecordPageLoadDone(mock_tab_b, false);
-  histogram_tester_.ExpectUniqueSample(kEvictedTabReloadSuccessRate,
-                                       TabUsageRecorder::LOAD_FAILURE, 1);
+  histogram_tester_.ExpectUniqueSample(
+      tab_usage_recorder::kEvictedTabReloadSuccessRate,
+      tab_usage_recorder::LOAD_FAILURE, 1);
 }
 
 TEST_F(TabUsageRecorderTest, TestUserWaitedForEvictedTabLoad) {
@@ -255,8 +269,9 @@
   tab_usage_recorder_.RecordPageLoadStart(mock_tab_b);
   tab_usage_recorder_.RecordPageLoadDone(mock_tab_b, true);
   tab_usage_recorder_.RecordTabSwitched(mock_tab_b, mock_tab_a);
-  histogram_tester_.ExpectUniqueSample(kDidUserWaitForEvictedTabReload,
-                                       TabUsageRecorder::USER_WAITED, 1);
+  histogram_tester_.ExpectUniqueSample(
+      tab_usage_recorder::kDidUserWaitForEvictedTabReload,
+      tab_usage_recorder::USER_WAITED, 1);
 }
 
 TEST_F(TabUsageRecorderTest, TestUserDidNotWaitForEvictedTabLoad) {
@@ -265,8 +280,9 @@
   tab_usage_recorder_.RecordTabSwitched(mock_tab_a, mock_tab_b);
   tab_usage_recorder_.RecordPageLoadStart(mock_tab_b);
   tab_usage_recorder_.RecordTabSwitched(mock_tab_b, mock_tab_a);
-  histogram_tester_.ExpectUniqueSample(kDidUserWaitForEvictedTabReload,
-                                       TabUsageRecorder::USER_DID_NOT_WAIT, 1);
+  histogram_tester_.ExpectUniqueSample(
+      tab_usage_recorder::kDidUserWaitForEvictedTabReload,
+      tab_usage_recorder::USER_DID_NOT_WAIT, 1);
 }
 
 TEST_F(TabUsageRecorderTest, TestUserBackgroundedDuringEvictedTabLoad) {
@@ -275,8 +291,9 @@
   tab_usage_recorder_.RecordTabSwitched(mock_tab_a, mock_tab_b);
   tab_usage_recorder_.RecordPageLoadStart(mock_tab_b);
   tab_usage_recorder_.AppDidEnterBackground();
-  histogram_tester_.ExpectUniqueSample(kDidUserWaitForEvictedTabReload,
-                                       TabUsageRecorder::USER_LEFT_CHROME, 1);
+  histogram_tester_.ExpectUniqueSample(
+      tab_usage_recorder::kDidUserWaitForEvictedTabReload,
+      tab_usage_recorder::USER_LEFT_CHROME, 1);
 }
 
 TEST_F(TabUsageRecorderTest, TestTimeBetweenRestores) {
@@ -288,7 +305,8 @@
   tab_usage_recorder_.RecordTabSwitched(mock_tab_b, mock_tab_a);
   // Should record the time since previous restore until this restore.
   tab_usage_recorder_.RecordPageLoadStart(mock_tab_a);
-  histogram_tester_.ExpectTotalCount(kTimeBetweenRestores, 2);
+  histogram_tester_.ExpectTotalCount(tab_usage_recorder::kTimeBetweenRestores,
+                                     2);
 }
 
 TEST_F(TabUsageRecorderTest, TestTimeAfterLastRestore) {
@@ -300,7 +318,8 @@
   tab_usage_recorder_.RecordTabSwitched(mock_tab_a, mock_tab_b);
   // Should record nothing.
   tab_usage_recorder_.RecordPageLoadStart(mock_tab_b);
-  histogram_tester_.ExpectTotalCount(kTimeAfterLastRestore, 1);
+  histogram_tester_.ExpectTotalCount(tab_usage_recorder::kTimeAfterLastRestore,
+                                     1);
 }
 
 // Verifies that metrics are recorded correctly when a renderer terminates.
@@ -320,12 +339,14 @@
   // Add |kExpiredTimesAddedCount| expired timestamps and one recent timestamp
   // to the termination timestamp list.
   for (int seconds = kExpiredTimesAddedCount; seconds > 0; seconds--) {
-    int expired_time_delta = kSecondsBeforeRendererTermination + seconds;
+    int expired_time_delta =
+        tab_usage_recorder::kSecondsBeforeRendererTermination + seconds;
     AddTimeToDequeInTabUsageRecorder(
         now - base::TimeDelta::FromSeconds(expired_time_delta));
   }
   base::TimeTicks recent_time =
-      now - base::TimeDelta::FromSeconds(kSecondsBeforeRendererTermination / 2);
+      now - base::TimeDelta::FromSeconds(
+                tab_usage_recorder::kSecondsBeforeRendererTermination / 2);
   AddTimeToDequeInTabUsageRecorder(recent_time);
 
   mock_tab_a->OnRenderProcessGone();
@@ -334,24 +355,27 @@
   BOOL saw_memory_warning =
       [defaults boolForKey:previous_session_info_constants::
                                kDidSeeMemoryWarningShortlyBeforeTerminating];
-  histogram_tester_.ExpectUniqueSample(kRendererTerminationSawMemoryWarning,
-                                       saw_memory_warning, 1);
-  histogram_tester_.ExpectUniqueSample(kRendererTerminationAliveRenderers,
-                                       kAliveTabsCountAtRendererTermination, 1);
+  histogram_tester_.ExpectUniqueSample(
+      tab_usage_recorder::kRendererTerminationSawMemoryWarning,
+      saw_memory_warning, 1);
+  histogram_tester_.ExpectUniqueSample(
+      tab_usage_recorder::kRendererTerminationAliveRenderers,
+      kAliveTabsCountAtRendererTermination, 1);
   // Tests that the logged count of recently alive renderers is equal to the
   // live count at termination plus the recent termination and the
   // renderer terminated just now.
   histogram_tester_.ExpectUniqueSample(
-      kRendererTerminationRecentlyAliveRenderers,
+      tab_usage_recorder::kRendererTerminationRecentlyAliveRenderers,
       kAliveTabsCountAtRendererTermination + 2, 1);
 
   // Regression test for crbug.com/935205
   // Terminate the same tab again. Verify that it isn't double-counted.
   mock_tab_a->OnRenderProcessGone();
-  histogram_tester_.ExpectUniqueSample(kRendererTerminationAliveRenderers,
-                                       kAliveTabsCountAtRendererTermination, 1);
   histogram_tester_.ExpectUniqueSample(
-      kRendererTerminationRecentlyAliveRenderers,
+      tab_usage_recorder::kRendererTerminationAliveRenderers,
+      kAliveTabsCountAtRendererTermination, 1);
+  histogram_tester_.ExpectUniqueSample(
+      tab_usage_recorder::kRendererTerminationRecentlyAliveRenderers,
       kAliveTabsCountAtRendererTermination + 2, 1);
 }
 
@@ -366,8 +390,8 @@
   tab_usage_recorder_.RecordTabSwitched(mock_tab_a, mock_tab_b);
 
   histogram_tester_.ExpectUniqueSample(
-      kSelectedTabHistogramName,
-      TabUsageRecorder::EVICTED_DUE_TO_RENDERER_TERMINATION, 1);
+      tab_usage_recorder::kSelectedTabHistogramName,
+      tab_usage_recorder::EVICTED_DUE_TO_RENDERER_TERMINATION, 1);
 }
 
 // Verifies that Tab.StateAtRendererTermination metric is correctly reported
@@ -380,13 +404,13 @@
   mock_tab_a->WasShown();
   mock_tab_a->OnRenderProcessGone();
   histogram_tester_.ExpectBucketCount(
-      kRendererTerminationStateHistogram,
-      TabUsageRecorder::FOREGROUND_TAB_FOREGROUND_APP, 1);
+      tab_usage_recorder::kRendererTerminationStateHistogram,
+      tab_usage_recorder::FOREGROUND_TAB_FOREGROUND_APP, 1);
 
   mock_tab_b->OnRenderProcessGone();
   histogram_tester_.ExpectBucketCount(
-      kRendererTerminationStateHistogram,
-      TabUsageRecorder::BACKGROUND_TAB_FOREGROUND_APP, 1);
+      tab_usage_recorder::kRendererTerminationStateHistogram,
+      tab_usage_recorder::BACKGROUND_TAB_FOREGROUND_APP, 1);
 }
 
 // Verifies that Tab.StateAtRendererTermination metric is correctly reported
@@ -400,13 +424,13 @@
   mock_tab_a->WasShown();
   mock_tab_a->OnRenderProcessGone();
   histogram_tester_.ExpectBucketCount(
-      kRendererTerminationStateHistogram,
-      TabUsageRecorder::FOREGROUND_TAB_BACKGROUND_APP, 1);
+      tab_usage_recorder::kRendererTerminationStateHistogram,
+      tab_usage_recorder::FOREGROUND_TAB_BACKGROUND_APP, 1);
 
   mock_tab_b->OnRenderProcessGone();
   histogram_tester_.ExpectBucketCount(
-      kRendererTerminationStateHistogram,
-      TabUsageRecorder::BACKGROUND_TAB_BACKGROUND_APP, 1);
+      tab_usage_recorder::kRendererTerminationStateHistogram,
+      tab_usage_recorder::BACKGROUND_TAB_BACKGROUND_APP, 1);
 }
 
 // Verifies that Tab.StateAtRendererTermination metric is correctly reported
@@ -420,11 +444,11 @@
   mock_tab_a->WasShown();
   mock_tab_a->OnRenderProcessGone();
   histogram_tester_.ExpectBucketCount(
-      kRendererTerminationStateHistogram,
-      TabUsageRecorder::FOREGROUND_TAB_BACKGROUND_APP, 1);
+      tab_usage_recorder::kRendererTerminationStateHistogram,
+      tab_usage_recorder::FOREGROUND_TAB_BACKGROUND_APP, 1);
 
   mock_tab_b->OnRenderProcessGone();
   histogram_tester_.ExpectBucketCount(
-      kRendererTerminationStateHistogram,
-      TabUsageRecorder::BACKGROUND_TAB_BACKGROUND_APP, 1);
+      tab_usage_recorder::kRendererTerminationStateHistogram,
+      tab_usage_recorder::BACKGROUND_TAB_BACKGROUND_APP, 1);
 }
diff --git a/ios/chrome/browser/sync/ios_chrome_synced_tab_delegate.mm b/ios/chrome/browser/sync/ios_chrome_synced_tab_delegate.mm
index 5adf419..61a91c8 100644
--- a/ios/chrome/browser/sync/ios_chrome_synced_tab_delegate.mm
+++ b/ios/chrome/browser/sync/ios_chrome_synced_tab_delegate.mm
@@ -89,6 +89,7 @@
   DCHECK_GE(i, 0);
   if (GetSessionStorageIfNeeded()) {
     NSArray* item_storages = session_storage_.itemStorages;
+    DCHECK_LT(i, static_cast<int>(item_storages.count));
     CRWNavigationItemStorage* item = item_storages[i];
     return item.virtualURL;
   }
@@ -128,6 +129,8 @@
     sessions::SerializedNavigationEntry* serialized_entry) const {
   if (GetSessionStorageIfNeeded()) {
     NSArray* item_storages = session_storage_.itemStorages;
+    DCHECK_GE(i, 0);
+    DCHECK_LT(i, static_cast<int>(item_storages.count));
     CRWNavigationItemStorage* item = item_storages[i];
     *serialized_entry =
         sessions::IOSSerializedNavigationBuilder::FromNavigationStorageItem(
@@ -220,10 +223,19 @@
   // is displayed. Before restoration, the session storage must be used.
   bool should_use_storage =
       web_state_->GetNavigationManager()->IsRestoreSessionInProgress();
+  bool storage_has_tabs = false;
   if (should_use_storage && !session_storage_) {
     session_storage_ = web_state_->BuildSessionStorage();
+    storage_has_tabs = session_storage_.itemStorages.count;
+#if DCHECK_IS_ON()
+    if (storage_has_tabs) {
+      DCHECK_GE(session_storage_.lastCommittedItemIndex, 0);
+      DCHECK_LT(session_storage_.lastCommittedItemIndex,
+                static_cast<int>(session_storage_.itemStorages.count));
+    }
+#endif
   }
-  return should_use_storage;
+  return should_use_storage && storage_has_tabs;
 }
 
 WEB_STATE_USER_DATA_KEY_IMPL(IOSChromeSyncedTabDelegate)
diff --git a/ios/chrome/browser/ui/bookmarks/BUILD.gn b/ios/chrome/browser/ui/bookmarks/BUILD.gn
index e6a72aa..52540ce4 100644
--- a/ios/chrome/browser/ui/bookmarks/BUILD.gn
+++ b/ios/chrome/browser/ui/bookmarks/BUILD.gn
@@ -183,8 +183,6 @@
     "//ios/chrome/browser/ui/table_view:feature_flags",
     "//ios/chrome/test/app:test_support",
     "//ios/chrome/test/earl_grey:test_support",
-    "//ios/public/provider/chrome/browser/signin:fake_chrome_identity",
-    "//ios/public/provider/chrome/browser/signin:test_support",
     "//ios/testing/earl_grey:earl_grey_support",
     "//ios/third_party/earl_grey:earl_grey+link",
     "//ios/web/public/test/http_server",
@@ -225,6 +223,8 @@
     "//ios/chrome/browser/ui/table_view:feature_flags",
     "//ios/chrome/test/app:test_support",
     "//ios/chrome/test/earl_grey:test_support",
+    "//ios/public/provider/chrome/browser/signin:fake_chrome_identity",
+    "//ios/public/provider/chrome/browser/signin:test_support",
     "//ios/public/provider/chrome/browser/signin:test_support",
     "//ios/testing:nserror_support",
     "//ios/testing/earl_grey:earl_grey_support",
@@ -244,12 +244,14 @@
   testonly = true
   sources = [
     "bookmarks_accessibility_egtest.mm",
+    "bookmarks_promo_egtest.mm",
   ]
   deps = [
     ":bookmarks_ui",
     ":eg_test_support+eg2",
     "//base/test:test_support",
     "//ios/chrome/app/strings",
+    "//ios/chrome/browser/ui/authentication:eg_test_support+eg2",
     "//ios/chrome/test/earl_grey:eg_test_support+eg2",
     "//ios/testing/earl_grey:eg_test_support+eg2",
     "//ios/third_party/earl_grey2:test_lib",
@@ -284,6 +286,7 @@
     "//ios/chrome/browser/ui/popup_menu:constants",
     "//ios/chrome/browser/ui/table_view:feature_flags",
     "//ios/chrome/test/app:test_support",
+    "//ios/public/provider/chrome/browser/signin:fake_chrome_identity",
     "//ios/public/provider/chrome/browser/signin:test_support",
     "//ios/testing:nserror_support",
     "//ios/testing/earl_grey:eg_app_support+eg2",
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey.h b/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey.h
index de80721..d340970 100644
--- a/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey.h
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey.h
@@ -27,6 +27,8 @@
 // cases will properly synchronize the UI for Earl Grey tests.
 @interface BookmarkEarlGreyImpl : BaseEGTestHelperImpl
 
+#pragma mark - Setup and Teardown
+
 // Clear Bookmarks top most row position cache.
 - (void)clearBookmarksPositionCache;
 
@@ -34,6 +36,24 @@
 // GREYAssert is induced if test bookmarks can not be loaded.
 - (void)setupStandardBookmarks;
 
+#pragma mark - Promo
+
+// Checks that the promo has already been seen or not. GREYAssert is induced if
+// the opposite is true.
+- (void)verifyPromoAlreadySeen:(BOOL)seen;
+
+// Checks that the promo has already been seen or not.
+- (void)setPromoAlreadySeen:(BOOL)seen;
+
+// Sets that the promo has already been seen |times| number of times.
+- (void)setPromoAlreadySeenNumberOfTimes:(int)times;
+
+// Returns the number of times a Promo has been seen.
+- (int)numberOfTimesPromoAlreadySeen;
+
+// Sets up a FakeIdentity and returns the email of this Identity.
+- (NSString*)setupFakeIdentity;
+
 @end
 
 #endif  // IOS_CHROME_BROWSER_UI_BOOKMARKS_BOOKMARK_EARL_GREY_H_
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey.mm b/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey.mm
index c8c117f..13cf33c5 100644
--- a/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey.mm
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey.mm
@@ -41,6 +41,8 @@
 
 @implementation BookmarkEarlGreyImpl
 
+#pragma mark - Setup and Teardown
+
 - (void)clearBookmarksPositionCache {
   [BookmarkEarlGreyAppInterface clearBookmarksPositionCache];
 }
@@ -60,4 +62,27 @@
                                 fourthURL:spec4]);
 }
 
+#pragma mark - Promo
+
+- (void)verifyPromoAlreadySeen:(BOOL)seen {
+  EG_TEST_HELPER_ASSERT_NO_ERROR(
+      [BookmarkEarlGreyAppInterface verifyPromoAlreadySeen:seen]);
+}
+
+- (void)setPromoAlreadySeen:(BOOL)seen {
+  [BookmarkEarlGreyAppInterface setPromoAlreadySeen:seen];
+}
+
+- (void)setPromoAlreadySeenNumberOfTimes:(int)times {
+  [BookmarkEarlGreyAppInterface setPromoAlreadySeenNumberOfTimes:times];
+}
+
+- (int)numberOfTimesPromoAlreadySeen {
+  return [BookmarkEarlGreyAppInterface numberOfTimesPromoAlreadySeen];
+}
+
+- (NSString*)setupFakeIdentity {
+  return [BookmarkEarlGreyAppInterface setupFakeIdentity];
+}
+
 @end
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey_app_interface.h b/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey_app_interface.h
index 12b761d..f6823fa1 100644
--- a/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey_app_interface.h
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey_app_interface.h
@@ -21,6 +21,21 @@
                                        thirdURL:(NSString*)thirdURL
                                       fourthURL:(NSString*)fourthURL;
 
+// Checks that the promo has already been seen or not.
++ (NSError*)verifyPromoAlreadySeen:(BOOL)seen;
+
+// Checks that the promo has already been seen or not.
++ (void)setPromoAlreadySeen:(BOOL)seen;
+
+// Sets that the promo has already been seen |times| number of times.
++ (void)setPromoAlreadySeenNumberOfTimes:(int)times;
+
+// Returns the number of times a Promo has been seen.
++ (int)numberOfTimesPromoAlreadySeen;
+
+// Sets up a FakeIdentity and returns the email of this Identity.
++ (NSString*)setupFakeIdentity;
+
 @end
 
 #endif  // IOS_CHROME_BROWSER_UI_BOOKMARKS_BOOKMARK_EARL_GREY_APP_INTERFACE_H_
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey_app_interface.mm b/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey_app_interface.mm
index 5358b55..ab637c2 100644
--- a/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey_app_interface.mm
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey_app_interface.mm
@@ -7,10 +7,14 @@
 #include "base/strings/sys_string_conversions.h"
 #import "base/test/ios/wait_util.h"
 #include "components/bookmarks/browser/bookmark_model.h"
+#include "components/prefs/pref_service.h"
 #include "ios/chrome/browser/bookmarks/bookmark_model_factory.h"
 #include "ios/chrome/browser/browser_state/chrome_browser_state.h"
+#include "ios/chrome/browser/pref_names.h"
 #import "ios/chrome/browser/ui/bookmarks/bookmark_path_cache.h"
 #import "ios/chrome/test/app/chrome_test_util.h"
+#import "ios/public/provider/chrome/browser/signin/fake_chrome_identity.h"
+#import "ios/public/provider/chrome/browser/signin/fake_chrome_identity_service.h"
 #import "ios/testing/nserror_util.h"
 #import "ios/web/public/test/http_server/http_server.h"
 #include "url/gurl.h"
@@ -79,6 +83,44 @@
   return nil;
 }
 
++ (NSError*)verifyPromoAlreadySeen:(BOOL)seen {
+  ios::ChromeBrowserState* browserState =
+      chrome_test_util::GetOriginalBrowserState();
+  PrefService* prefs = browserState->GetPrefs();
+  if (prefs->GetBoolean(prefs::kIosBookmarkPromoAlreadySeen) == seen) {
+    return nil;
+  }
+  NSString* errorDescription =
+      (seen) ? @"Expected promo already seen, but it wasn't."
+             : @"Expected promo not already seen, but it was.";
+  return testing::NSErrorWithLocalizedDescription(errorDescription);
+}
+
++ (void)setPromoAlreadySeen:(BOOL)seen {
+  PrefService* prefs = chrome_test_util::GetOriginalBrowserState()->GetPrefs();
+  prefs->SetBoolean(prefs::kIosBookmarkPromoAlreadySeen, seen);
+}
+
++ (void)setPromoAlreadySeenNumberOfTimes:(int)times {
+  PrefService* prefs = chrome_test_util::GetOriginalBrowserState()->GetPrefs();
+  prefs->SetInteger(prefs::kIosBookmarkSigninPromoDisplayedCount, times);
+}
+
++ (int)numberOfTimesPromoAlreadySeen {
+  PrefService* prefs = chrome_test_util::GetOriginalBrowserState()->GetPrefs();
+  return prefs->GetInteger(prefs::kIosBookmarkSigninPromoDisplayedCount);
+}
+
++ (NSString*)setupFakeIdentity {
+  FakeChromeIdentity* identity =
+      [FakeChromeIdentity identityWithEmail:@"foo1@gmail.com"
+                                     gaiaID:@"foo1ID"
+                                       name:@"Fake Foo 1"];
+  ios::FakeChromeIdentityService::GetInstanceFromChromeProvider()->AddIdentity(
+      identity);
+  return identity.userEmail;
+}
+
 #pragma mark - Helpers
 
 + (BOOL)waitForBookmarkModelLoaded:(BOOL)loaded {
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey_utils.h b/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey_utils.h
index c904335..b997a7e 100644
--- a/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey_utils.h
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey_utils.h
@@ -32,12 +32,6 @@
 // Asserts that a folder called |title| exists.
 + (void)assertFolderExists:(NSString*)title;
 
-// Checks that the promo has already been seen or not.
-+ (void)verifyPromoAlreadySeen:(BOOL)seen;
-
-// Checks that the promo has already been seen or not.
-+ (void)setPromoAlreadySeen:(BOOL)seen;
-
 + (void)assertExistenceOfBookmarkWithURL:(NSString*)URL name:(NSString*)name;
 
 + (void)assertAbsenceOfBookmarkWithURL:(NSString*)URL;
diff --git a/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey_utils.mm b/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey_utils.mm
index 31179d05..c5af1d9 100644
--- a/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey_utils.mm
+++ b/ios/chrome/browser/ui/bookmarks/bookmark_earl_grey_utils.mm
@@ -189,26 +189,6 @@
   GREYAssert(folderExists, assertMessage);
 }
 
-+ (void)verifyPromoAlreadySeen:(BOOL)seen {
-  ios::ChromeBrowserState* browserState =
-      chrome_test_util::GetOriginalBrowserState();
-  PrefService* prefs = browserState->GetPrefs();
-  if (prefs->GetBoolean(prefs::kIosBookmarkPromoAlreadySeen) == seen) {
-    return;
-  }
-  NSString* errorDesc = (seen)
-                            ? @"Expected promo already seen, but it wasn't."
-                            : @"Expected promo not already seen, but it was.";
-  GREYFail(errorDesc);
-}
-
-+ (void)setPromoAlreadySeen:(BOOL)seen {
-  ios::ChromeBrowserState* browserState =
-      chrome_test_util::GetOriginalBrowserState();
-  PrefService* prefs = browserState->GetPrefs();
-  prefs->SetBoolean(prefs::kIosBookmarkPromoAlreadySeen, seen);
-}
-
 + (void)assertExistenceOfBookmarkWithURL:(NSString*)URL name:(NSString*)name {
   bookmarks::BookmarkModel* bookmarkModel =
       ios::BookmarkModelFactory::GetForBrowserState(
diff --git a/ios/chrome/browser/ui/bookmarks/bookmarks_promo_egtest.mm b/ios/chrome/browser/ui/bookmarks/bookmarks_promo_egtest.mm
index 6147855..ac38308 100644
--- a/ios/chrome/browser/ui/bookmarks/bookmarks_promo_egtest.mm
+++ b/ios/chrome/browser/ui/bookmarks/bookmarks_promo_egtest.mm
@@ -6,22 +6,15 @@
 #import <XCTest/XCTest.h>
 
 #include "base/ios/ios_util.h"
-#include "components/prefs/pref_service.h"
-#include "ios/chrome/browser/browser_state/chrome_browser_state.h"
-#include "ios/chrome/browser/pref_names.h"
 #import "ios/chrome/browser/ui/authentication/signin_earl_grey_ui.h"
-#import "ios/chrome/browser/ui/authentication/signin_earlgrey_utils.h"
+#import "ios/chrome/browser/ui/bookmarks/bookmark_earl_grey.h"
 #import "ios/chrome/browser/ui/bookmarks/bookmark_earl_grey_ui.h"
-#import "ios/chrome/browser/ui/bookmarks/bookmark_earl_grey_utils.h"
 #import "ios/chrome/browser/ui/bookmarks/bookmark_ui_constants.h"
 #include "ios/chrome/grit/ios_strings.h"
-#import "ios/chrome/test/app/chrome_test_util.h"
 #import "ios/chrome/test/earl_grey/chrome_earl_grey.h"
 #import "ios/chrome/test/earl_grey/chrome_earl_grey_ui.h"
 #import "ios/chrome/test/earl_grey/chrome_matchers.h"
 #import "ios/chrome/test/earl_grey/chrome_test_case.h"
-#import "ios/public/provider/chrome/browser/signin/fake_chrome_identity.h"
-#import "ios/public/provider/chrome/browser/signin/fake_chrome_identity_service.h"
 #import "ios/testing/earl_grey/earl_grey_test.h"
 #include "ui/base/l10n/l10n_util.h"
 
@@ -51,24 +44,32 @@
 - (void)tearDown {
   [super tearDown];
   [ChromeEarlGrey clearBookmarks];
-  [BookmarkEarlGreyUtils clearBookmarksPositionCache];
+  [BookmarkEarlGrey clearBookmarksPositionCache];
 }
 
 #pragma mark - BookmarksPromoTestCase Tests
 
 // Tests that the promo view is only seen at root level and not in any of the
 // child nodes.
-- (void)testPromoViewIsSeenOnlyInRootNode {
-  [BookmarkEarlGreyUtils setupStandardBookmarks];
+// TODO(crbug.com/1034183): Enable for EG2 once NavigateBackButtonTo() is fixed.
+#if defined(CHROME_EARL_GREY_2)
+#define MAYBE_testPromoViewIsSeenOnlyInRootNode \
+  DISABLED_testPromoViewIsSeenOnlyInRootNode
+#else
+#define MAYBE_testPromoViewIsSeenOnlyInRootNode \
+  testPromoViewIsSeenOnlyInRootNode
+#endif
+- (void)MAYBE_testPromoViewIsSeenOnlyInRootNode {
+  [BookmarkEarlGrey setupStandardBookmarks];
   [BookmarkEarlGreyUI openBookmarks];
 
   // We are going to set the PromoAlreadySeen preference. Set a teardown handler
   // to reset it.
   [self setTearDownHandler:^{
-    [BookmarkEarlGreyUtils setPromoAlreadySeen:NO];
+    [BookmarkEarlGrey setPromoAlreadySeen:NO];
   }];
   // Check that sign-in promo view is visible.
-  [BookmarkEarlGreyUtils verifyPromoAlreadySeen:NO];
+  [BookmarkEarlGrey verifyPromoAlreadySeen:NO];
   [SigninEarlGreyUI
       checkSigninPromoVisibleWithMode:SigninPromoViewModeColdState];
 
@@ -79,7 +80,7 @@
   [SigninEarlGreyUI checkSigninPromoNotVisible];
 
   // Check that the promo already seen state is not updated.
-  [BookmarkEarlGreyUtils verifyPromoAlreadySeen:NO];
+  [BookmarkEarlGrey verifyPromoAlreadySeen:NO];
 
   // Come back to root node, and the promo view should appear.
   [[EarlGrey selectElementWithMatcher:NavigateBackButtonTo(@"Bookmarks")]
@@ -92,16 +93,16 @@
 
 // Tests that tapping No thanks on the promo make it disappear.
 - (void)testPromoNoThanksMakeItDisappear {
-  [BookmarkEarlGreyUtils setupStandardBookmarks];
+  [BookmarkEarlGrey setupStandardBookmarks];
   [BookmarkEarlGreyUI openBookmarks];
 
   // We are going to set the PromoAlreadySeen preference. Set a teardown handler
   // to reset it.
   [self setTearDownHandler:^{
-    [BookmarkEarlGreyUtils setPromoAlreadySeen:NO];
+    [BookmarkEarlGrey setPromoAlreadySeen:NO];
   }];
   // Check that sign-in promo view is visible.
-  [BookmarkEarlGreyUtils verifyPromoAlreadySeen:NO];
+  [BookmarkEarlGrey verifyPromoAlreadySeen:NO];
   [SigninEarlGreyUI
       checkSigninPromoVisibleWithMode:SigninPromoViewModeColdState];
 
@@ -114,7 +115,7 @@
   [SigninEarlGreyUI checkSigninPromoNotVisible];
 
   // Check that the promo already seen state is updated.
-  [BookmarkEarlGreyUtils verifyPromoAlreadySeen:YES];
+  [BookmarkEarlGrey verifyPromoAlreadySeen:YES];
 }
 
 // Tests the tapping on the primary button of sign-in promo view in a cold
@@ -124,7 +125,7 @@
   [BookmarkEarlGreyUI openBookmarks];
 
   // Check that sign-in promo view are visible.
-  [BookmarkEarlGreyUtils verifyPromoAlreadySeen:NO];
+  [BookmarkEarlGrey verifyPromoAlreadySeen:NO];
   [SigninEarlGreyUI
       checkSigninPromoVisibleWithMode:SigninPromoViewModeColdState];
 
@@ -140,7 +141,7 @@
                      uppercaseString])] performAction:grey_tap()];
 
   // Check that the bookmarks UI reappeared and the cell is still here.
-  [BookmarkEarlGreyUtils verifyPromoAlreadySeen:NO];
+  [BookmarkEarlGrey verifyPromoAlreadySeen:NO];
   [SigninEarlGreyUI
       checkSigninPromoVisibleWithMode:SigninPromoViewModeColdState];
 }
@@ -149,16 +150,14 @@
 // state makes the confirmaiton sheet appear, and the promo still appears after
 // dismissing the sheet.
 - (void)testSignInPromoWithWarmStateUsingPrimaryButton {
-  [BookmarkEarlGreyUtils setupStandardBookmarks];
+  [BookmarkEarlGrey setupStandardBookmarks];
   [BookmarkEarlGreyUI openBookmarks];
 
   // Set up a fake identity.
-  FakeChromeIdentity* identity = [SigninEarlGreyUtils fakeIdentity1];
-  ios::FakeChromeIdentityService::GetInstanceFromChromeProvider()->AddIdentity(
-      identity);
+  [BookmarkEarlGrey setupFakeIdentity];
 
   // Check that promo is visible.
-  [BookmarkEarlGreyUtils verifyPromoAlreadySeen:NO];
+  [BookmarkEarlGrey verifyPromoAlreadySeen:NO];
   [SigninEarlGreyUI
       checkSigninPromoVisibleWithMode:SigninPromoViewModeWarmState];
 
@@ -178,22 +177,20 @@
   [SigninEarlGreyUI
       checkSigninPromoVisibleWithMode:SigninPromoViewModeWarmState];
 
-  [BookmarkEarlGreyUtils verifyPromoAlreadySeen:NO];
+  [BookmarkEarlGrey verifyPromoAlreadySeen:NO];
 }
 
 // Tests the tapping on the secondary button of sign-in promo view in a warm
 // state makes the sign-in sheet appear, and the promo still appears after
 // dismissing the sheet.
 - (void)testSignInPromoWithWarmStateUsingSecondaryButton {
-  [BookmarkEarlGreyUtils setupStandardBookmarks];
+  [BookmarkEarlGrey setupStandardBookmarks];
   [BookmarkEarlGreyUI openBookmarks];
   // Set up a fake identity.
-  FakeChromeIdentity* identity = [SigninEarlGreyUtils fakeIdentity1];
-  ios::FakeChromeIdentityService::GetInstanceFromChromeProvider()->AddIdentity(
-      identity);
+  NSString* identityEmail = [BookmarkEarlGrey setupFakeIdentity];
 
   // Check that sign-in promo view are visible.
-  [BookmarkEarlGreyUtils verifyPromoAlreadySeen:NO];
+  [BookmarkEarlGrey verifyPromoAlreadySeen:NO];
   [SigninEarlGreyUI
       checkSigninPromoVisibleWithMode:SigninPromoViewModeWarmState];
 
@@ -204,7 +201,7 @@
       performAction:grey_tap()];
 
   // Select the identity to dismiss the identity chooser.
-  [SigninEarlGreyUI selectIdentityWithEmail:identity.userEmail];
+  [SigninEarlGreyUI selectIdentityWithEmail:identityEmail];
 
   // Tap the CANCEL button.
   [[EarlGrey selectElementWithMatcher:
@@ -213,26 +210,23 @@
                      uppercaseString])] performAction:grey_tap()];
 
   // Check that the bookmarks UI reappeared and the cell is still here.
-  [BookmarkEarlGreyUtils verifyPromoAlreadySeen:NO];
+  [BookmarkEarlGrey verifyPromoAlreadySeen:NO];
   [SigninEarlGreyUI
       checkSigninPromoVisibleWithMode:SigninPromoViewModeWarmState];
 }
 
 // Tests that the sign-in promo should not be shown after been shown 19 times.
 - (void)testAutomaticSigninPromoDismiss {
-  ios::ChromeBrowserState* browser_state =
-      chrome_test_util::GetOriginalBrowserState();
-  PrefService* prefs = browser_state->GetPrefs();
-  prefs->SetInteger(prefs::kIosBookmarkSigninPromoDisplayedCount, 19);
+  [BookmarkEarlGrey setPromoAlreadySeenNumberOfTimes:19];
   [BookmarkEarlGreyUI openBookmarks];
   // Check the sign-in promo view is visible.
   [SigninEarlGreyUI
       checkSigninPromoVisibleWithMode:SigninPromoViewModeColdState];
   // Check the sign-in promo already-seen state didn't change.
-  [BookmarkEarlGreyUtils verifyPromoAlreadySeen:NO];
-  GREYAssertEqual(
-      20, prefs->GetInteger(prefs::kIosBookmarkSigninPromoDisplayedCount),
-      @"Should have incremented the display count");
+  [BookmarkEarlGrey verifyPromoAlreadySeen:NO];
+  GREYAssertEqual(20, [BookmarkEarlGrey numberOfTimesPromoAlreadySeen],
+                  @"Should have incremented the display count");
+
   // Close the bookmark view and open it again.
   [[EarlGrey selectElementWithMatcher:BookmarkHomeDoneButton()]
       performAction:grey_tap()];
diff --git a/ios/chrome/browser/ui/browser_view/BUILD.gn b/ios/chrome/browser/ui/browser_view/BUILD.gn
index 9e55e26..7e1c21c4 100644
--- a/ios/chrome/browser/ui/browser_view/BUILD.gn
+++ b/ios/chrome/browser/ui/browser_view/BUILD.gn
@@ -264,6 +264,7 @@
     "//ios/chrome/browser/ui/popup_menu:constants",
     "//ios/chrome/browser/ui/table_view",
     "//ios/chrome/browser/ui/util",
+    "//ios/chrome/test:eg_test_support",
     "//ios/chrome/test/app:test_support",
     "//ios/chrome/test/earl_grey:test_support",
     "//ios/testing/earl_grey:earl_grey_support",
@@ -297,6 +298,7 @@
     "//ios/chrome/app/strings",
     "//ios/chrome/browser/ntp:features",
     "//ios/chrome/browser/ui/popup_menu:constants",
+    "//ios/chrome/test:eg_test_support+eg2",
     "//ios/chrome/test/earl_grey:eg_test_support+eg2",
     "//ios/testing/earl_grey:eg_test_support+eg2",
     "//ios/third_party/earl_grey2:test_lib",
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 031659d4..86326dc 100644
--- a/ios/chrome/browser/ui/browser_view/browser_view_controller.mm
+++ b/ios/chrome/browser/ui/browser_view/browser_view_controller.mm
@@ -4518,6 +4518,8 @@
   // Cleanup steps needed for both UI Refresh and stack-view style animations.
   UIView* webStateView = [self viewForWebState:webState];
   auto commonCompletion = ^{
+    webStateView.frame = self.contentArea.bounds;
+    newPage.userInteractionEnabled = YES;
     if (currentAnimationIdentifier != _NTPAnimationIdentifier) {
       // Prevent the completion block from being executed if a new animation has
       // started in between. |self.foregroundTabWasAddedCompletionBlock| isn't
@@ -4527,8 +4529,6 @@
       return;
     }
 
-    webStateView.frame = self.contentArea.bounds;
-    newPage.userInteractionEnabled = YES;
     self.inNewTabAnimation = NO;
     // Use the model's currentWebState here because it is possible that it can
     // be reset to a new value before the new Tab animation finished (e.g.
diff --git a/ios/chrome/browser/ui/browser_view/browser_view_controller_egtest.mm b/ios/chrome/browser/ui/browser_view/browser_view_controller_egtest.mm
index ffb2cf98..9593220 100644
--- a/ios/chrome/browser/ui/browser_view/browser_view_controller_egtest.mm
+++ b/ios/chrome/browser/ui/browser_view/browser_view_controller_egtest.mm
@@ -7,10 +7,12 @@
 #include "base/feature_list.h"
 #include "base/strings/sys_string_conversions.h"
 #include "components/strings/grit/components_strings.h"
+#include "ios/chrome/grit/ios_strings.h"
 #import "ios/chrome/test/earl_grey/chrome_earl_grey.h"
 #import "ios/chrome/test/earl_grey/chrome_earl_grey_ui.h"
 #import "ios/chrome/test/earl_grey/chrome_matchers.h"
 #import "ios/chrome/test/earl_grey/chrome_test_case.h"
+#import "ios/chrome/test/scoped_eg_synchronization_disabler.h"
 #import "ios/testing/earl_grey/earl_grey_test.h"
 #include "ios/web/public/test/http_server/html_response_provider.h"
 #import "ios/web/public/test/http_server/http_server.h"
@@ -28,6 +30,55 @@
 
 @implementation BrowserViewControllerTestCase
 
+// Tests that the NTP is interactable even when multiple NTP are opened during
+// the animation of the first NTP opening. See crbug.com/1032544.
+- (void)testPageInteractable {
+  // Scope for the synchronization disabled.
+  {
+    ScopedSynchronizationDisabler syncDisabler;
+
+    [ChromeEarlGrey openNewTab];
+
+    // Wait for 0.05s before opening the new one.
+    GREYCondition* myCondition = [GREYCondition conditionWithName:@"Wait block"
+                                                            block:^BOOL {
+                                                              return NO;
+                                                            }];
+    BOOL success = [myCondition waitWithTimeout:0.05];
+    success = NO;
+
+    [ChromeEarlGrey openNewTab];
+  }  // End of the sync disabler scope.
+
+  [ChromeEarlGrey waitForMainTabCount:3];
+
+  [[EarlGrey
+      selectElementWithMatcher:chrome_test_util::ButtonWithAccessibilityLabelId(
+                                   IDS_IOS_CONTENT_SUGGESTIONS_BOOKMARKS)]
+      performAction:grey_tap()];
+  [[EarlGrey
+      selectElementWithMatcher:chrome_test_util::HeaderWithAccessibilityLabelId(
+                                   IDS_IOS_CONTENT_SUGGESTIONS_BOOKMARKS)]
+      assertWithMatcher:grey_sufficientlyVisible()];
+  [[EarlGrey
+      selectElementWithMatcher:chrome_test_util::NavigationBarDoneButton()]
+      performAction:grey_tap()];
+
+  [ChromeEarlGrey selectTabAtIndex:1];
+
+  [[EarlGrey
+      selectElementWithMatcher:chrome_test_util::ButtonWithAccessibilityLabelId(
+                                   IDS_IOS_CONTENT_SUGGESTIONS_BOOKMARKS)]
+      performAction:grey_tap()];
+  [[EarlGrey
+      selectElementWithMatcher:chrome_test_util::HeaderWithAccessibilityLabelId(
+                                   IDS_IOS_CONTENT_SUGGESTIONS_BOOKMARKS)]
+      assertWithMatcher:grey_sufficientlyVisible()];
+  [[EarlGrey
+      selectElementWithMatcher:chrome_test_util::NavigationBarDoneButton()]
+      performAction:grey_tap()];
+}
+
 // Tests that evaluating JavaScript in the omnibox (e.g, a bookmarklet) works.
 - (void)testJavaScriptInOmnibox {
   // TODO(crbug.com/703855): Keyboard entry inside the omnibox fails only on
diff --git a/ios/chrome/browser/ui/location_bar/BUILD.gn b/ios/chrome/browser/ui/location_bar/BUILD.gn
index e2f33cb..b169a2b 100644
--- a/ios/chrome/browser/ui/location_bar/BUILD.gn
+++ b/ios/chrome/browser/ui/location_bar/BUILD.gn
@@ -78,7 +78,6 @@
     "//ios/public/provider/chrome/browser:browser",
     "//ios/public/provider/chrome/browser/voice",
     "//ios/third_party/material_components_ios",
-    "//ios/web/common",
     "//ios/web/public:public",
     "//ios/web/public/security",
     "//skia",
diff --git a/ios/chrome/browser/ui/location_bar/location_bar_mediator.mm b/ios/chrome/browser/ui/location_bar/location_bar_mediator.mm
index 611b990..7799381 100644
--- a/ios/chrome/browser/ui/location_bar/location_bar_mediator.mm
+++ b/ios/chrome/browser/ui/location_bar/location_bar_mediator.mm
@@ -24,7 +24,6 @@
 #import "ios/chrome/browser/web_state_list/web_state_list_observer_bridge.h"
 #import "ios/chrome/grit/ios_strings.h"
 #include "ios/chrome/grit/ios_theme_resources.h"
-#import "ios/web/common/origin_util.h"
 #include "ios/web/public/navigation/navigation_item.h"
 #import "ios/web/public/navigation/navigation_manager.h"
 #include "ios/web/public/security/ssl_status.h"
@@ -316,15 +315,8 @@
     return [self imageForOfflinePage];
   }
 
-  security_state::SecurityLevel securityLevel =
-      self.locationBarModel->GetSecurityLevel();
-
-  bool shouldDowngrade = security_state::ShouldDowngradeNeutralStyling(
-      securityLevel, self.locationBarModel->GetURL(),
-      base::BindRepeating(&web::IsOriginSecure));
-
-  return GetLocationBarSecurityIconForSecurityState(securityLevel,
-                                                    shouldDowngrade);
+  return GetLocationBarSecurityIconForSecurityState(
+      self.locationBarModel->GetSecurityLevel());
 }
 
 // Returns a location icon for offline pages.
diff --git a/ios/chrome/browser/ui/omnibox/omnibox_util.h b/ios/chrome/browser/ui/omnibox/omnibox_util.h
index ad5643c..44df11d 100644
--- a/ios/chrome/browser/ui/omnibox/omnibox_util.h
+++ b/ios/chrome/browser/ui/omnibox/omnibox_util.h
@@ -31,19 +31,14 @@
 // Returns the asset with "always template" rendering mode.
 UIImage* GetLocationBarSecurityIcon(LocationBarSecurityIconType icon);
 
-// Converts the |security_level| to an appropriate security icon type. If
-// |should_downgrade| is true, the info icon should be downgraded to a
-// grey triangle for non-secure connections.
+// Converts the |security_level| to an appropriate security icon type.
 LocationBarSecurityIconType GetLocationBarSecurityIconTypeForSecurityState(
-    security_state::SecurityLevel security_level,
-    bool should_downgrade);
+    security_state::SecurityLevel security_level);
 
 // Converts the |security_level| to an appropriate icon in "always template"
-// rendering mode. If |should_downgrade| is true, the info icon should be
-// downgraded to a grey triangle for non-secure connections.
+// rendering mode.
 UIImage* GetLocationBarSecurityIconForSecurityState(
-    security_state::SecurityLevel security_level,
-    bool should_downgrade);
+    security_state::SecurityLevel security_level);
 
 #pragma mark - Legacy utils.
 
diff --git a/ios/chrome/browser/ui/omnibox/omnibox_util.mm b/ios/chrome/browser/ui/omnibox/omnibox_util.mm
index 6445a4f..7df9cc0 100644
--- a/ios/chrome/browser/ui/omnibox/omnibox_util.mm
+++ b/ios/chrome/browser/ui/omnibox/omnibox_util.mm
@@ -87,12 +87,12 @@
 
 // Converts the |security_level| to an appropriate security icon type.
 LocationBarSecurityIconType GetLocationBarSecurityIconTypeForSecurityState(
-    security_state::SecurityLevel security_level,
-    bool should_downgrade) {
+    security_state::SecurityLevel security_level) {
   switch (security_level) {
     case security_state::NONE:
+      return INFO;
     case security_state::WARNING:
-      if (should_downgrade)
+      if (security_state::ShouldShowDangerTriangleForWarningLevel())
         return NOT_SECURE_WARNING;
       return INFO;
     case security_state::EV_SECURE:
@@ -110,11 +110,9 @@
 // Converts the |security_level| to an appropriate icon in "always template"
 // rendering mode.
 UIImage* GetLocationBarSecurityIconForSecurityState(
-    security_state::SecurityLevel security_level,
-    bool should_downgrade) {
+    security_state::SecurityLevel security_level) {
   LocationBarSecurityIconType iconType =
-      GetLocationBarSecurityIconTypeForSecurityState(security_level,
-                                                     should_downgrade);
+      GetLocationBarSecurityIconTypeForSecurityState(security_level);
   return GetLocationBarSecurityIcon(iconType);
 }
 
diff --git a/ios/chrome/browser/ui/page_info/BUILD.gn b/ios/chrome/browser/ui/page_info/BUILD.gn
index 978ce4d7..529472c 100644
--- a/ios/chrome/browser/ui/page_info/BUILD.gn
+++ b/ios/chrome/browser/ui/page_info/BUILD.gn
@@ -30,7 +30,6 @@
     "//ios/chrome/common",
     "//ios/chrome/common/colors",
     "//ios/web",
-    "//ios/web/common",
     "//ios/web/public/security",
     "//ui/base",
     "//ui/gfx",
diff --git a/ios/chrome/browser/ui/page_info/page_info_model.cc b/ios/chrome/browser/ui/page_info/page_info_model.cc
index 3a57f87..5cff2621 100644
--- a/ios/chrome/browser/ui/page_info/page_info_model.cc
+++ b/ios/chrome/browser/ui/page_info/page_info_model.cc
@@ -27,7 +27,6 @@
 #include "ios/chrome/grit/ios_chromium_strings.h"
 #include "ios/chrome/grit/ios_strings.h"
 #include "ios/chrome/grit/ios_theme_resources.h"
-#import "ios/web/common/origin_util.h"
 #include "ios/web/public/security/ssl_status.h"
 #include "net/cert/cert_status_flags.h"
 #include "net/cert/x509_certificate.h"
@@ -75,9 +74,7 @@
     // Not HTTPS. This maps to the WARNING security level. Show the grey
     // triangle icon in page info based on the same logic used to determine
     // the iconography in the omnibox.
-    if (security_state::ShouldDowngradeNeutralStyling(
-            security_state::SecurityLevel::WARNING, url,
-            base::BindRepeating(&web::IsOriginSecure))) {
+    if (security_state::ShouldShowDangerTriangleForWarningLevel()) {
       icon_id = ICON_STATE_ERROR;
     } else {
       icon_id = ICON_STATE_INFO;
@@ -121,12 +118,12 @@
             IDS_IOS_PAGE_INFO_SECURITY_TAB_SECURE_IDENTITY, issuer_name));
       }
       if (ssl.content_status == web::SSLStatus::DISPLAYED_INSECURE_CONTENT) {
-        // HTTPS with mixed content. This maps to the NONE security level. Show
-        // the grey triangle icon in page info based on the same logic used to
-        // determine the iconography in the omnibox.
-        if (security_state::ShouldDowngradeNeutralStyling(
-                security_state::SecurityLevel::NONE, url,
-                base::BindRepeating(&web::IsOriginSecure))) {
+        // HTTPS with mixed content. This maps to the WARNING security level
+        // in M80, so assume the WARNING state when determining whether to
+        // swap the icon for a grey triangle. This will result in an
+        // inconsistency between the omnibox and page info if the mixed
+        // content WARNING feature is disabled.
+        if (security_state::ShouldShowDangerTriangleForWarningLevel()) {
           icon_id = ICON_STATE_ERROR;
         } else {
           icon_id = ICON_STATE_INFO;
diff --git a/ios/chrome/browser/ui/popup_menu/popup_menu_action_handler.mm b/ios/chrome/browser/ui/popup_menu/popup_menu_action_handler.mm
index ddc36d3b..3e364be6 100644
--- a/ios/chrome/browser/ui/popup_menu/popup_menu_action_handler.mm
+++ b/ios/chrome/browser/ui/popup_menu/popup_menu_action_handler.mm
@@ -99,6 +99,9 @@
       RecordAction(UserMetricsAction("MobileMenuHelp"));
       [self.dispatcher showHelpPage];
       break;
+    case PopupMenuActionOpenDownloads:
+      [self.dispatcher showDownloadsFolder];
+      break;
     case PopupMenuActionTextZoom:
       RecordAction(UserMetricsAction("MobileMenuTextZoom"));
       break;
diff --git a/ios/chrome/browser/ui/reading_list/BUILD.gn b/ios/chrome/browser/ui/reading_list/BUILD.gn
index b0af74c..909c8f1 100644
--- a/ios/chrome/browser/ui/reading_list/BUILD.gn
+++ b/ios/chrome/browser/ui/reading_list/BUILD.gn
@@ -187,6 +187,7 @@
     "//ios/chrome/browser/ui/table_view:feature_flags",
     "//ios/chrome/browser/ui/table_view:views",
     "//ios/chrome/browser/ui/table_view/cells",
+    "//ios/chrome/browser/ui/util",
     "//ios/chrome/test/app:test_support",
     "//ios/chrome/test/earl_grey:test_support",
     "//ios/testing/earl_grey:earl_grey_support",
@@ -224,6 +225,7 @@
     "//ios/chrome/app/strings:ios_strings_grit",
     "//ios/chrome/browser/ui/popup_menu:constants",
     "//ios/chrome/browser/ui/table_view:constants",
+    "//ios/chrome/browser/ui/util",
     "//ios/chrome/test/earl_grey:eg_test_support+eg2",
     "//ios/testing/earl_grey:eg_test_support+eg2",
     "//ios/third_party/earl_grey2:test_lib",
diff --git a/ios/chrome/browser/ui/reading_list/reading_list_egtest.mm b/ios/chrome/browser/ui/reading_list/reading_list_egtest.mm
index c44b62c..6e45c70 100644
--- a/ios/chrome/browser/ui/reading_list/reading_list_egtest.mm
+++ b/ios/chrome/browser/ui/reading_list/reading_list_egtest.mm
@@ -19,6 +19,7 @@
 #import "ios/chrome/browser/ui/reading_list/reading_list_app_interface.h"
 #import "ios/chrome/browser/ui/reading_list/reading_list_constants.h"
 #import "ios/chrome/browser/ui/table_view/table_view_constants.h"
+#import "ios/chrome/browser/ui/util/ui_util.h"
 #include "ios/chrome/grit/ios_strings.h"
 #import "ios/chrome/test/earl_grey/chrome_actions_app_interface.h"
 #import "ios/chrome/test/earl_grey/chrome_earl_grey.h"
@@ -29,13 +30,12 @@
 #import "ios/testing/earl_grey/earl_grey_test.h"
 #import "ios/web/public/navigation/navigation_manager.h"
 #import "ios/web/public/navigation/reload_type.h"
+#include "net/base/network_change_notifier.h"
 #include "net/test/embedded_test_server/default_handlers.h"
 #include "net/test/embedded_test_server/http_request.h"
 #include "net/test/embedded_test_server/http_response.h"
 #include "net/test/embedded_test_server/request_handler_util.h"
 
-#include "net/base/network_change_notifier.h"
-
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
 #endif
@@ -240,9 +240,8 @@
   TapToolbarButtonWithID(kReadingListToolbarEditButtonID);
 }
 
-// Adds a read and an unread entry to the model, opens the reading list menu and
-// enter edit mode.
-void AddEntriesAndEnterEdit() {
+// Adds 2 read and 2 unread entries to the model, opens the reading list menu.
+void AddEntriesAndOpenReadingList() {
   GREYAssertNil(
       [ReadingListAppInterface addEntryWithURL:[NSURL URLWithString:kReadURL]
                                          title:kReadTitle
@@ -265,7 +264,10 @@
       @"Unable to add Reading List item");
 
   OpenReadingList();
+}
 
+void AddEntriesAndEnterEdit() {
+  AddEntriesAndOpenReadingList();
   TapToolbarButtonWithID(kReadingListToolbarEditButtonID);
 }
 
@@ -646,6 +648,39 @@
   AssertToolbarMarkButtonText(IDS_IOS_READING_LIST_MARK_UNREAD_BUTTON);
 }
 
+// Tests that the "Cancel", "Edit" and "Mark Unread" buttons are not visible
+// after delete (using swipe).
+- (void)testVisibleButtonsAfterSwipeDeletion {
+  // Reading list's view width is narrower on Ipad Air (iOS 12) than on other
+  // devices. The grey_swipeSlowInDirection action deletes the element instead
+  // of displaying the 'Delete' button.
+  if (@available(iOS 13, *)) {
+  } else {
+    if (IsIPadIdiom())
+      EARL_GREY_TEST_SKIPPED(@"Test skipped on Ipad Air 2, iOS12.");
+  }
+
+  AddEntriesAndOpenReadingList();
+
+  [[EarlGrey
+      selectElementWithMatcher:
+          grey_allOf(
+              chrome_test_util::StaticTextWithAccessibilityLabel(kReadTitle),
+              grey_ancestor(grey_kindOfClassName(@"TableViewURLCell")),
+              grey_sufficientlyVisible(), nil)]
+      performAction:grey_swipeFastInDirection(kGREYDirectionLeft)];
+
+  [[EarlGrey
+      selectElementWithMatcher:grey_allOf(grey_text(@"Delete"),
+                                          grey_ancestor(grey_kindOfClassName(
+                                              @"UISwipeActionPullView")),
+                                          nil)] performAction:grey_tap()];
+
+  AssertToolbarButtonNotVisibleWithID(kReadingListToolbarMarkButtonID);
+  AssertToolbarButtonNotVisibleWithID(kReadingListToolbarCancelButtonID);
+  AssertToolbarButtonVisibleWithID(kReadingListToolbarEditButtonID);
+}
+
 // Tests that only the "Cancel", "Delete" and "Mark Read" buttons are showing
 // when not editing.
 - (void)testVisibleButtonsOnlyUnreadEntrySelected {
@@ -675,11 +710,19 @@
 // Tests the deletion of selected entries.
 - (void)testDeleteEntries {
   AddEntriesAndEnterEdit();
-
   TapEntry(kReadTitle2);
 
+  AssertToolbarButtonVisibleWithID(kReadingListToolbarDeleteButtonID);
+  AssertToolbarButtonVisibleWithID(kReadingListToolbarCancelButtonID);
+  AssertToolbarButtonNotVisibleWithID(kReadingListToolbarEditButtonID);
+
   TapToolbarButtonWithID(kReadingListToolbarDeleteButtonID);
 
+  AssertToolbarButtonNotVisibleWithID(kReadingListToolbarMarkButtonID);
+  AssertToolbarButtonNotVisibleWithID(kReadingListToolbarDeleteButtonID);
+  AssertToolbarButtonNotVisibleWithID(kReadingListToolbarCancelButtonID);
+  AssertToolbarButtonVisibleWithID(kReadingListToolbarEditButtonID);
+
   AssertEntryVisible(kReadTitle);
   AssertEntryNotVisible(kReadTitle2);
   AssertEntryVisible(kUnreadTitle);
@@ -688,6 +731,27 @@
                  static_cast<long>(kNumberReadEntries - 1));
   XCTAssertEqual([ReadingListAppInterface unreadEntriesCount],
                  kNumberUnreadEntries);
+
+  TapToolbarButtonWithID(kReadingListToolbarEditButtonID);
+  TapEntry(kReadTitle);
+  TapToolbarButtonWithID(kReadingListToolbarDeleteButtonID);
+  [[EarlGrey
+      selectElementWithMatcher:grey_allOf(
+                                   grey_text(@"Read"),
+                                   grey_ancestor(grey_kindOfClassName(
+                                       @"_UITableViewHeaderFooterContentView")),
+                                   nil)] assertWithMatcher:grey_nil()];
+
+  TapToolbarButtonWithID(kReadingListToolbarEditButtonID);
+  TapEntry(kUnreadTitle);
+  TapEntry(kUnreadTitle2);
+  TapToolbarButtonWithID(kReadingListToolbarDeleteButtonID);
+  [[EarlGrey
+      selectElementWithMatcher:grey_allOf(
+                                   grey_text(@"Unread"),
+                                   grey_ancestor(grey_kindOfClassName(
+                                       @"_UITableViewHeaderFooterContentView")),
+                                   nil)] assertWithMatcher:grey_nil()];
 }
 
 // Tests the deletion of all read entries.
diff --git a/ios/chrome/browser/ui/reading_list/reading_list_table_view_controller.mm b/ios/chrome/browser/ui/reading_list/reading_list_table_view_controller.mm
index 30805d6a..8acf1fc 100644
--- a/ios/chrome/browser/ui/reading_list/reading_list_table_view_controller.mm
+++ b/ios/chrome/browser/ui/reading_list/reading_list_table_view_controller.mm
@@ -139,6 +139,7 @@
   if (!editing) {
     self.editingWithToolbarButtons = NO;
     if (self.needsSectionCleanupAfterEditing) {
+      [self removeEmptySections];
       self.needsSectionCleanupAfterEditing = NO;
     }
   }
@@ -242,11 +243,11 @@
      forRowAtIndexPath:(NSIndexPath*)indexPath {
   DCHECK_EQ(editingStyle, UITableViewCellEditingStyleDelete);
   base::RecordAction(base::UserMetricsAction("MobileReadingListDeleteEntry"));
-  // The UIKit animation for the swipe-to-delete gesture throws an exception if
-  // the section of the deleted item is removed before the animation is
-  // finished.  To prevent this from happening, record that cleanup is needed
-  // and remove the section when self.tableView.editing is reset to NO when the
-  // animation finishes.
+
+  // On IOS 12, the UIKit animation for the swipe-to-delete gesture throws an
+  // exception if the section of the deleted item is removed before the
+  // animation is finished. This is still needed on IOS 13 to prevent displaying
+  // Cancel and Mark all buttons, see crbug.com/1022763.
   self.needsSectionCleanupAfterEditing = YES;
   [self deleteItemsAtIndexPaths:@[ indexPath ]
                      endEditing:NO
@@ -779,9 +780,9 @@
     [self.dataSource removeEntryFromItem:item];
   };
   [self updateItemsAtIndexPaths:indexPaths withItemUpdater:updater];
-  if (endEditing)
+  if (endEditing) {
     [self exitEditingModeAnimated:YES];
-
+  }
   // Update the model and table view for the deleted items.
   UITableView* tableView = self.tableView;
   NSArray* sortedIndexPaths =
diff --git a/ios/chrome/browser/web/BUILD.gn b/ios/chrome/browser/web/BUILD.gn
index 7d34a87..eebe57d 100644
--- a/ios/chrome/browser/web/BUILD.gn
+++ b/ios/chrome/browser/web/BUILD.gn
@@ -306,6 +306,7 @@
     "//ios/chrome/browser/passwords",
     "//ios/chrome/browser/web",
     "//ios/chrome/test/fakes",
+    "//ios/web/common:features",
     "//ios/web/common:web_view_creation_util",
     "//ios/web/public/test",
     "//ios/web/public/test/fakes",
diff --git a/ios/chrome/browser/web/chrome_web_client.h b/ios/chrome/browser/web/chrome_web_client.h
index 7507a24f..14a1c285 100644
--- a/ios/chrome/browser/web/chrome_web_client.h
+++ b/ios/chrome/browser/web/chrome_web_client.h
@@ -61,6 +61,7 @@
                         base::OnceCallback<void(NSString*)> callback) override;
   UIView* GetWindowedContainer() override;
   bool ForceMobileVersionByDefault(const GURL& url) override;
+  web::UserAgentType GetDefaultUserAgent(UIView* web_view) override;
 
  private:
   // Returns a string describing the product name and version, of the
diff --git a/ios/chrome/browser/web/chrome_web_client.mm b/ios/chrome/browser/web/chrome_web_client.mm
index 153c914..55c5fba 100644
--- a/ios/chrome/browser/web/chrome_web_client.mm
+++ b/ios/chrome/browser/web/chrome_web_client.mm
@@ -266,9 +266,21 @@
 }
 
 bool ChromeWebClient::ForceMobileVersionByDefault(const GURL& url) {
-  DCHECK(base::FeatureList::IsEnabled(web::features::kDefaultToDesktopOnIPad));
+  DCHECK(base::FeatureList::IsEnabled(
+      web::features::kUseDefaultUserAgentInWebClient));
   if (base::FeatureList::IsEnabled(web::kMobileGoogleSRP)) {
     return google_util::IsGoogleSearchUrl(url);
   }
   return false;
 }
+
+web::UserAgentType ChromeWebClient::GetDefaultUserAgent(UIView* web_view) {
+  DCHECK(base::FeatureList::IsEnabled(
+      web::features::kUseDefaultUserAgentInWebClient));
+  BOOL isRegularRegular = web_view.traitCollection.horizontalSizeClass ==
+                              UIUserInterfaceSizeClassRegular &&
+                          web_view.traitCollection.verticalSizeClass ==
+                              UIUserInterfaceSizeClassRegular;
+  return isRegularRegular ? web::UserAgentType::DESKTOP
+                          : web::UserAgentType::MOBILE;
+}
diff --git a/ios/chrome/browser/web/chrome_web_client_unittest.mm b/ios/chrome/browser/web/chrome_web_client_unittest.mm
index eb39f58..12ea75e1 100644
--- a/ios/chrome/browser/web/chrome_web_client_unittest.mm
+++ b/ios/chrome/browser/web/chrome_web_client_unittest.mm
@@ -19,6 +19,7 @@
 #include "ios/chrome/browser/chrome_url_constants.h"
 #include "ios/chrome/browser/passwords/password_manager_features.h"
 #import "ios/chrome/browser/web/error_page_util.h"
+#include "ios/web/common/features.h"
 #import "ios/web/common/web_view_creation_util.h"
 #import "ios/web/public/test/error_test_util.h"
 #import "ios/web/public/test/fakes/test_web_state.h"
@@ -30,6 +31,7 @@
 #include "testing/gtest/include/gtest/gtest.h"
 #include "testing/gtest_mac.h"
 #include "testing/platform_test.h"
+#import "third_party/ocmock/OCMock/OCMock.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
 #error "This file requires ARC support."
@@ -332,3 +334,71 @@
       net::ErrorToShortString(net::ERR_CERT_COMMON_NAME_INVALID));
   EXPECT_TRUE([page containsString:error_string]);
 }
+
+// Tests the default user agent for different views.
+TEST_F(ChromeWebClientTest, DefaultUserAgent) {
+  base::test::ScopedFeatureList scoped_feature_list;
+  scoped_feature_list.InitAndEnableFeature(
+      web::features::kUseDefaultUserAgentInWebClient);
+
+  ChromeWebClient web_client;
+
+  UITraitCollection* regular_vertical_size_class = [UITraitCollection
+      traitCollectionWithVerticalSizeClass:UIUserInterfaceSizeClassRegular];
+  UITraitCollection* regular_horizontal_size_class = [UITraitCollection
+      traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassRegular];
+  UITraitCollection* compact_vertical_size_class = [UITraitCollection
+      traitCollectionWithVerticalSizeClass:UIUserInterfaceSizeClassCompact];
+  UITraitCollection* compact_horizontal_size_class = [UITraitCollection
+      traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassCompact];
+
+  UIView* view = [[UIView alloc] init];
+  UITraitCollection* original_traits = view.traitCollection;
+
+  UITraitCollection* regular_regular =
+      [UITraitCollection traitCollectionWithTraitsFromCollections:@[
+        original_traits, regular_vertical_size_class,
+        regular_horizontal_size_class
+      ]];
+  UITraitCollection* regular_compact =
+      [UITraitCollection traitCollectionWithTraitsFromCollections:@[
+        original_traits, regular_vertical_size_class,
+        compact_horizontal_size_class
+      ]];
+  UITraitCollection* compact_regular =
+      [UITraitCollection traitCollectionWithTraitsFromCollections:@[
+        original_traits, compact_vertical_size_class,
+        regular_horizontal_size_class
+      ]];
+  UITraitCollection* compact_compact =
+      [UITraitCollection traitCollectionWithTraitsFromCollections:@[
+        original_traits, compact_vertical_size_class,
+        compact_horizontal_size_class
+      ]];
+
+  // Check that desktop is returned for Regular x Regular.
+  id mock_regular_regular_view = OCMClassMock([UIView class]);
+  OCMStub([mock_regular_regular_view traitCollection])
+      .andReturn(regular_regular);
+  EXPECT_EQ(web::UserAgentType::DESKTOP,
+            web_client.GetDefaultUserAgent(mock_regular_regular_view));
+
+  // Check that mobile is returned for all other combinations.
+  id mock_regular_compact_view = OCMClassMock([UIView class]);
+  OCMStub([mock_regular_compact_view traitCollection])
+      .andReturn(regular_compact);
+  EXPECT_EQ(web::UserAgentType::MOBILE,
+            web_client.GetDefaultUserAgent(mock_regular_compact_view));
+
+  id mock_compact_regular_view = OCMClassMock([UIView class]);
+  OCMStub([mock_compact_regular_view traitCollection])
+      .andReturn(compact_regular);
+  EXPECT_EQ(web::UserAgentType::MOBILE,
+            web_client.GetDefaultUserAgent(mock_compact_regular_view));
+
+  id mock_compact_compact_view = OCMClassMock([UIView class]);
+  OCMStub([mock_compact_compact_view traitCollection])
+      .andReturn(compact_compact);
+  EXPECT_EQ(web::UserAgentType::MOBILE,
+            web_client.GetDefaultUserAgent(mock_compact_compact_view));
+}
diff --git a/ios/chrome/test/app/tab_test_util.h b/ios/chrome/test/app/tab_test_util.h
index 0a4232e..20e7b0b 100644
--- a/ios/chrome/test/app/tab_test_util.h
+++ b/ios/chrome/test/app/tab_test_util.h
@@ -46,6 +46,9 @@
 // Closes tab with the given index in current mode (incognito or normal).
 void CloseTabAtIndex(NSUInteger index);
 
+// Returns the index of active tab in normal (non-incognito) mode.
+NSUInteger GetIndexOfActiveNormalTab();
+
 // Closes all tabs in the current mode (incognito or normal), and does not wait
 // for the UI to complete. If current mode is Incognito, mode will be switched
 // normal after closing all tabs.
diff --git a/ios/chrome/test/app/tab_test_util.mm b/ios/chrome/test/app/tab_test_util.mm
index 9c319b5dae..c6abe8e4 100644
--- a/ios/chrome/test/app/tab_test_util.mm
+++ b/ios/chrome/test/app/tab_test_util.mm
@@ -134,6 +134,12 @@
   }
 }
 
+NSUInteger GetIndexOfActiveNormalTab() {
+  TabModel* model = chrome_test_util::GetMainController()
+                        .interfaceProvider.mainInterface.tabModel;
+  return model.webStateList->active_index();
+}
+
 void CloseAllTabsInCurrentMode() {
   [GetCurrentTabModel() closeAllTabs];
 }
diff --git a/ios/chrome/test/earl_grey/chrome_earl_grey.h b/ios/chrome/test/earl_grey/chrome_earl_grey.h
index 12ba56f..4f3593bd 100644
--- a/ios/chrome/test/earl_grey/chrome_earl_grey.h
+++ b/ios/chrome/test/earl_grey/chrome_earl_grey.h
@@ -133,6 +133,9 @@
 // GREYAssert is induced.
 - (void)waitForIncognitoTabCount:(NSUInteger)count;
 
+// Loads |URL| as if it was opened from an external application.
+- (void)openURLFromExternalApp:(const GURL&)URL;
+
 #pragma mark - Settings Utilities (EG2)
 
 // Sets value for content setting.
@@ -261,6 +264,9 @@
 // Returns the number of incognito tabs.
 - (NSUInteger)incognitoTabCount WARN_UNUSED_RESULT;
 
+// Returns the index of active tab in normal (non-incognito) mode.
+- (NSUInteger)indexOfActiveNormalTab;
+
 // Simulates a backgrounding and raises an EarlGrey exception if simulation not
 // succeeded.
 - (void)simulateTabsBackgrounding;
diff --git a/ios/chrome/test/earl_grey/chrome_earl_grey.mm b/ios/chrome/test/earl_grey/chrome_earl_grey.mm
index 92a42f5..aac576e 100644
--- a/ios/chrome/test/earl_grey/chrome_earl_grey.mm
+++ b/ios/chrome/test/earl_grey/chrome_earl_grey.mm
@@ -15,6 +15,7 @@
 #import "ios/testing/earl_grey/earl_grey_test.h"
 #import "ios/testing/nserror_util.h"
 #include "ios/web/public/test/element_selector.h"
+#include "net/base/mac/url_conversions.h"
 
 #if defined(CHROME_EARL_GREY_1)
 #import <WebKit/WebKit.h>
@@ -182,6 +183,11 @@
   }
 }
 
+- (void)openURLFromExternalApp:(const GURL&)URL {
+  NSString* spec = base::SysUTF8ToNSString(URL.spec());
+  [ChromeEarlGreyAppInterface openURLFromExternalApp:spec];
+}
+
 #pragma mark - Tab Utilities (EG2)
 
 - (void)selectTabAtIndex:(NSUInteger)index {
@@ -440,6 +446,10 @@
   EG_TEST_HELPER_ASSERT_TRUE(tabCountEqual, errorString);
 }
 
+- (NSUInteger)indexOfActiveNormalTab {
+  return [ChromeEarlGreyAppInterface indexOfActiveNormalTab];
+}
+
 - (void)waitForRestoreSessionToFinish {
   GREYCondition* finishedRestoreSession = [GREYCondition
       conditionWithName:kWaitForRestoreSessionToFinishError
diff --git a/ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.h b/ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.h
index 3e9eeec..4849377 100644
--- a/ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.h
+++ b/ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.h
@@ -50,6 +50,9 @@
 // or one of |view|'s ancestors.  If no guide is found, returns nil.
 + (NamedGuide*)guideWithName:(NSString*)name view:(UIView*)view;
 
+// Loads |URL| as if it was opened from an external application.
++ (void)openURLFromExternalApp:(NSString*)URL;
+
 #pragma mark - Tab Utilities (EG2)
 
 // Selects tab with given index in current mode (incognito or main
@@ -138,6 +141,9 @@
 // Returns a unique identifier for the next Tab.
 + (NSString*)nextTabID;
 
+// Returns the index of active tab in normal mode.
++ (NSUInteger)indexOfActiveNormalTab;
+
 #pragma mark - WebState Utilities (EG2)
 
 // Attempts to tap the element with |element_id| within window.frames[0] of the
diff --git a/ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.mm b/ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.mm
index 1c75758..cdb512e 100644
--- a/ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.mm
+++ b/ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.mm
@@ -42,6 +42,7 @@
 #import "ios/web/public/ui/crw_web_view_proxy.h"
 #import "ios/web/public/web_client.h"
 #import "ios/web/public/web_state.h"
+#include "net/base/mac/url_conversions.h"
 #import "services/metrics/public/cpp/ukm_recorder.h"
 
 #if !defined(__has_feature) || !__has_feature(objc_arc)
@@ -107,6 +108,11 @@
   return [NamedGuide guideWithName:name view:view];
 }
 
++ (void)openURLFromExternalApp:(NSString*)URL {
+  chrome_test_util::OpenChromeFromExternalApp(
+      GURL(base::SysNSStringToUTF8(URL)));
+}
+
 #pragma mark - Tab Utilities (EG2)
 
 + (void)selectTabAtIndex:(NSUInteger)index {
@@ -229,6 +235,10 @@
   return TabIdTabHelper::FromWebState(web_state)->tab_id();
 }
 
++ (NSUInteger)indexOfActiveNormalTab {
+  return chrome_test_util::GetIndexOfActiveNormalTab();
+}
+
 #pragma mark - WebState Utilities (EG2)
 
 + (NSError*)tapWebStateElementInIFrameWithID:(NSString*)elementID {
diff --git a/ios/showcase/BUILD.gn b/ios/showcase/BUILD.gn
index 1602ae60..b2f9a9b 100644
--- a/ios/showcase/BUILD.gn
+++ b/ios/showcase/BUILD.gn
@@ -57,8 +57,8 @@
     "//ios/testing/earl_grey:eg_app_support+eg2",
   ]
   bundle_deps = [
-    "//ios/showcase/core/resources",
     "//ios/chrome/app/resources",
+    "//ios/showcase/core/resources",
     "//ios/third_party/earl_grey2:app_framework+bundle",
     "//ios/third_party/gtx:gtx+bundle",
   ]
diff --git a/ios/web/common/features.h b/ios/web/common/features.h
index f288edd..cbaf6d5 100644
--- a/ios/web/common/features.h
+++ b/ios/web/common/features.h
@@ -45,8 +45,10 @@
 // Feature flag for the new error page workflow, using JavaScript.
 extern const base::Feature kUseJSForErrorPage;
 
-// Feature flag to request the desktop version of web pages on iPad.
-extern const base::Feature kDefaultToDesktopOnIPad;
+// When enabled, for each navigation, the default user agent is chosen by the
+// WebClient GetDefaultUserAgent() method. If it is disabled, the mobile version
+// is requested by default.
+extern const base::Feature kUseDefaultUserAgentInWebClient;
 
 // Use WKWebView.loading to update WebState::IsLoading.
 // TODO(crbug.com/1006012): Clean up this flag after experiment.
diff --git a/ios/web/common/features.mm b/ios/web/common/features.mm
index cc70a2e..76f1301 100644
--- a/ios/web/common/features.mm
+++ b/ios/web/common/features.mm
@@ -41,8 +41,8 @@
 const base::Feature kUseJSForErrorPage{"UseJSForErrorPage",
                                        base::FEATURE_DISABLED_BY_DEFAULT};
 
-const base::Feature kDefaultToDesktopOnIPad{"DefaultToDesktopOnIPad",
-                                            base::FEATURE_DISABLED_BY_DEFAULT};
+const base::Feature kUseDefaultUserAgentInWebClient{
+    "UseDefaultUserAgentInWebClient", base::FEATURE_DISABLED_BY_DEFAULT};
 
 bool UseWKWebViewLoading() {
   return base::FeatureList::IsEnabled(web::features::kUseWKWebViewLoading);
diff --git a/ios/web/common/user_agent.h b/ios/web/common/user_agent.h
index ff2e374..d6cbb3b2 100644
--- a/ios/web/common/user_agent.h
+++ b/ios/web/common/user_agent.h
@@ -21,7 +21,9 @@
   AUTOMATIC,
 
   // TODO(crbug.com/1025227): Update comments.
-  // The default user agent type if kDefaultToDesktopOnIPad isn't enabled.  Used
+  // The default user agent type if kUseDefaultUserAgentInWebClient isn't
+  // enabled.
+  // Used
   // to specify a mobile browser user agent.
   MOBILE,
 
@@ -36,10 +38,6 @@
 // correspond with a UserAgentType, UserAgentType::NONE will be returned.
 UserAgentType GetUserAgentTypeWithDescription(const std::string& description);
 
-// Returns the UserAgentType that should be used by default for the web content,
-// based on the size class of |web_view|.
-UserAgentType GetDefaultUserAgent(UIView* web_view);
-
 // Returns the os cpu info portion for a user agent.
 std::string BuildOSCpuInfo(UserAgentType type);
 
diff --git a/ios/web/common/user_agent.mm b/ios/web/common/user_agent.mm
index 653fe9f7..0d84a73 100644
--- a/ios/web/common/user_agent.mm
+++ b/ios/web/common/user_agent.mm
@@ -56,7 +56,8 @@
 std::string GetUserAgentTypeDescription(UserAgentType type) {
   switch (type) {
     case UserAgentType::AUTOMATIC:
-      DCHECK(base::FeatureList::IsEnabled(features::kDefaultToDesktopOnIPad));
+      DCHECK(base::FeatureList::IsEnabled(
+          features::kUseDefaultUserAgentInWebClient));
       return std::string(kUserAgentTypeAutomaticDescription);
     case UserAgentType::NONE:
       return std::string(kUserAgentTypeNoneDescription);
@@ -75,15 +76,6 @@
   return UserAgentType::NONE;
 }
 
-UserAgentType GetDefaultUserAgent(UIView* web_view) {
-  DCHECK(base::FeatureList::IsEnabled(features::kDefaultToDesktopOnIPad));
-  BOOL isRegularRegular = web_view.traitCollection.horizontalSizeClass ==
-                              UIUserInterfaceSizeClassRegular &&
-                          web_view.traitCollection.verticalSizeClass ==
-                              UIUserInterfaceSizeClassRegular;
-  return isRegularRegular ? UserAgentType::DESKTOP : UserAgentType::MOBILE;
-}
-
 std::string BuildOSCpuInfo(web::UserAgentType type) {
   std::string os_cpu;
   DCHECK_EQ(web::UserAgentType::MOBILE, type);
diff --git a/ios/web/common/user_agent_unittest.mm b/ios/web/common/user_agent_unittest.mm
index b884878..0982b27 100644
--- a/ios/web/common/user_agent_unittest.mm
+++ b/ios/web/common/user_agent_unittest.mm
@@ -94,69 +94,4 @@
                                       "my_product_name"));
 }
 
-// Tests the default user agent for different views.
-TEST_F(UserAgentTest, DefaultUserAgent) {
-  base::test::ScopedFeatureList scoped_feature_list;
-  scoped_feature_list.InitAndEnableFeature(features::kDefaultToDesktopOnIPad);
-
-  UITraitCollection* regular_vertical_size_class = [UITraitCollection
-      traitCollectionWithVerticalSizeClass:UIUserInterfaceSizeClassRegular];
-  UITraitCollection* regular_horizontal_size_class = [UITraitCollection
-      traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassRegular];
-  UITraitCollection* compact_vertical_size_class = [UITraitCollection
-      traitCollectionWithVerticalSizeClass:UIUserInterfaceSizeClassCompact];
-  UITraitCollection* compact_horizontal_size_class = [UITraitCollection
-      traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassCompact];
-
-  UIView* view = [[UIView alloc] init];
-  UITraitCollection* original_traits = view.traitCollection;
-
-  UITraitCollection* regular_regular =
-      [UITraitCollection traitCollectionWithTraitsFromCollections:@[
-        original_traits, regular_vertical_size_class,
-        regular_horizontal_size_class
-      ]];
-  UITraitCollection* regular_compact =
-      [UITraitCollection traitCollectionWithTraitsFromCollections:@[
-        original_traits, regular_vertical_size_class,
-        compact_horizontal_size_class
-      ]];
-  UITraitCollection* compact_regular =
-      [UITraitCollection traitCollectionWithTraitsFromCollections:@[
-        original_traits, compact_vertical_size_class,
-        regular_horizontal_size_class
-      ]];
-  UITraitCollection* compact_compact =
-      [UITraitCollection traitCollectionWithTraitsFromCollections:@[
-        original_traits, compact_vertical_size_class,
-        compact_horizontal_size_class
-      ]];
-
-  // Check that desktop is returned for Regular x Regular.
-  id mock_regular_regular_view = OCMClassMock([UIView class]);
-  OCMStub([mock_regular_regular_view traitCollection])
-      .andReturn(regular_regular);
-  EXPECT_EQ(web::UserAgentType::DESKTOP,
-            web::GetDefaultUserAgent(mock_regular_regular_view));
-
-  // Check that mobile is returned for all other combinations.
-  id mock_regular_compact_view = OCMClassMock([UIView class]);
-  OCMStub([mock_regular_compact_view traitCollection])
-      .andReturn(regular_compact);
-  EXPECT_EQ(web::UserAgentType::MOBILE,
-            web::GetDefaultUserAgent(mock_regular_compact_view));
-
-  id mock_compact_regular_view = OCMClassMock([UIView class]);
-  OCMStub([mock_compact_regular_view traitCollection])
-      .andReturn(compact_regular);
-  EXPECT_EQ(web::UserAgentType::MOBILE,
-            web::GetDefaultUserAgent(mock_compact_regular_view));
-
-  id mock_compact_compact_view = OCMClassMock([UIView class]);
-  OCMStub([mock_compact_compact_view traitCollection])
-      .andReturn(compact_compact);
-  EXPECT_EQ(web::UserAgentType::MOBILE,
-            web::GetDefaultUserAgent(mock_compact_compact_view));
-}
-
 }  // namespace web
diff --git a/ios/web/navigation/navigation_item_impl.mm b/ios/web/navigation/navigation_item_impl.mm
index b42cd61e..53f1002 100644
--- a/ios/web/navigation/navigation_item_impl.mm
+++ b/ios/web/navigation/navigation_item_impl.mm
@@ -53,7 +53,7 @@
       should_skip_serialization_(false),
       navigation_initiation_type_(web::NavigationInitiationType::NONE),
       is_untrusted_(false) {
-  if (base::FeatureList::IsEnabled(features::kDefaultToDesktopOnIPad)) {
+  if (base::FeatureList::IsEnabled(features::kUseDefaultUserAgentInWebClient)) {
     // TODO(crbug.com/1025227): Once it is enabled by default, move it to the
     // default constructor.
     user_agent_type_ = UserAgentType::AUTOMATIC;
@@ -77,6 +77,7 @@
       ssl_(item.ssl_),
       timestamp_(item.timestamp_),
       user_agent_type_(item.user_agent_type_),
+      user_agent_type_inheritance_(item.user_agent_type_inheritance_),
       http_request_headers_([item.http_request_headers_ mutableCopy]),
       serialized_state_object_([item.serialized_state_object_ copy]),
       is_created_from_push_state_(item.is_created_from_push_state_),
@@ -112,7 +113,7 @@
                      /*update_inherited_user_agent =*/true);
   } else if (GetUserAgentType() == web::UserAgentType::NONE) {
     UserAgentType type =
-        base::FeatureList::IsEnabled(features::kDefaultToDesktopOnIPad)
+        base::FeatureList::IsEnabled(features::kUseDefaultUserAgentInWebClient)
             ? UserAgentType::AUTOMATIC
             : UserAgentType::MOBILE;
     SetUserAgentType(type, /*update_inherited_user_agent =*/true);
@@ -366,7 +367,8 @@
       stringWithFormat:
           @"url:%s virtual_url_:%s originalurl:%s referrer: %s title:%s "
           @"transition:%d "
-           "displayState:%@ userAgentType:%s is_create_from_push_state: %@ "
+           "displayState:%@ userAgentType:%s userAgentForInheritance:%s "
+           "is_create_from_push_state: %@ "
            "has_state_been_replaced: %@ is_created_from_hash_change: %@ "
            "navigation_initiation_type: %d",
           url_.spec().c_str(), virtual_url_.spec().c_str(),
@@ -374,6 +376,7 @@
           base::UTF16ToUTF8(title_).c_str(), transition_type_,
           page_display_state_.GetDescription(),
           GetUserAgentTypeDescription(user_agent_type_).c_str(),
+          GetUserAgentTypeDescription(user_agent_type_inheritance_).c_str(),
           is_created_from_push_state_ ? @"true" : @"false",
           has_state_been_replaced_ ? @"true" : @"false",
           is_created_from_hash_change_ ? @"true" : @"false",
diff --git a/ios/web/navigation/wk_based_navigation_manager_impl_unittest.mm b/ios/web/navigation/wk_based_navigation_manager_impl_unittest.mm
index eb5164a..d0cc8c40 100644
--- a/ios/web/navigation/wk_based_navigation_manager_impl_unittest.mm
+++ b/ios/web/navigation/wk_based_navigation_manager_impl_unittest.mm
@@ -1006,7 +1006,7 @@
 
 // Tests that LoadURLWithParams from detached mode restores backward history and
 // adds the new item at the end.
-TEST_F(WKBasedNavigationManagerDetachedModeTest, DISABLED_LoadURLWithParams) {
+TEST_F(WKBasedNavigationManagerDetachedModeTest, LoadURLWithParams) {
   manager_->DetachFromWebView();
   delegate_.RemoveWebView();
 
diff --git a/ios/web/navigation/wk_navigation_util.h b/ios/web/navigation/wk_navigation_util.h
index cb5c684..1748ce14 100644
--- a/ios/web/navigation/wk_navigation_util.h
+++ b/ios/web/navigation/wk_navigation_util.h
@@ -45,6 +45,7 @@
 
 // Returns true if |url| is a placeholder URL or restore_session.html URL.
 bool IsWKInternalUrl(const GURL& url);
+bool IsWKInternalUrl(NSURL* url);
 
 // Returns true if |url| is an app specific url or an about:// scheme
 // non-placeholder url.
@@ -67,6 +68,7 @@
 
 // Returns true if the base URL of |url| is restore_session.html.
 bool IsRestoreSessionUrl(const GURL& url);
+bool IsRestoreSessionUrl(NSURL* url);
 
 // Creates a restore_session.html URL that encodes the specified |target_url| in
 // the URL fragment with a "targetUrl=" prefix. When this URL is loaded in the
@@ -84,6 +86,7 @@
 
 // Returns true if |URL| is a placeholder navigation URL.
 bool IsPlaceholderUrl(const GURL& url);
+bool IsPlaceholderUrl(NSURL* url);
 
 // Creates the URL for the placeholder navigation required for Native View and
 // WebUI URLs.
diff --git a/ios/web/navigation/wk_navigation_util.mm b/ios/web/navigation/wk_navigation_util.mm
index e132fc9..c226b79 100644
--- a/ios/web/navigation/wk_navigation_util.mm
+++ b/ios/web/navigation/wk_navigation_util.mm
@@ -82,6 +82,10 @@
   return IsPlaceholderUrl(url) || IsRestoreSessionUrl(url);
 }
 
+bool IsWKInternalUrl(NSURL* url) {
+  return IsPlaceholderUrl(url) || IsRestoreSessionUrl(url);
+}
+
 bool URLNeedsUserAgentType(const GURL& url) {
   if (web::GetWebClient()->IsAppSpecificURL(url))
     return false;
@@ -160,6 +164,13 @@
   return url.SchemeIsFile() && url.path() == GetRestoreSessionBaseUrl().path();
 }
 
+bool IsRestoreSessionUrl(NSURL* url) {
+  return
+      [url.scheme isEqual:@"file"] &&
+      [url.path
+          isEqual:base::SysUTF8ToNSString(GetRestoreSessionBaseUrl().path())];
+}
+
 GURL CreateRedirectUrl(const GURL& target_url) {
   GURL::Replacements replacements;
   std::string ref =
@@ -190,6 +201,14 @@
                                                 base::CompareCase::SENSITIVE);
 }
 
+bool IsPlaceholderUrl(NSURL* url) {
+  // about:blank NSURLs don't have nil host and query, so use absolute string
+  // matching.
+  return [url.scheme isEqual:@"about"] &&
+         ([url.absoluteString hasPrefix:@"about:blank?for="] ||
+          [url.absoluteString hasPrefix:@"about://blank?for="]);
+}
+
 GURL CreatePlaceholderUrlForUrl(const GURL& original_url) {
   if (!original_url.is_valid())
     return GURL::EmptyGURL();
diff --git a/ios/web/navigation/wk_navigation_util_unittest.mm b/ios/web/navigation/wk_navigation_util_unittest.mm
index dd618914..aa5a52a 100644
--- a/ios/web/navigation/wk_navigation_util_unittest.mm
+++ b/ios/web/navigation/wk_navigation_util_unittest.mm
@@ -82,6 +82,7 @@
                           &restore_session_url, &first_index);
   ASSERT_EQ(0, first_index);
   ASSERT_TRUE(IsRestoreSessionUrl(restore_session_url));
+  ASSERT_TRUE(IsRestoreSessionUrl(net::NSURLWithGURL(restore_session_url)));
 
   std::string session_json =
       net::UnescapeBinaryURLComponent(restore_session_url.ref());
@@ -133,6 +134,7 @@
       /*last_committed_item_index=*/0, items, &restore_session_url,
       &first_index);
   ASSERT_TRUE(IsRestoreSessionUrl(restore_session_url));
+  ASSERT_TRUE(IsRestoreSessionUrl(net::NSURLWithGURL(restore_session_url)));
 
   // Extract session JSON from restoration URL.
   base::JSONReader::ValueWithError value_with_error =
@@ -167,6 +169,7 @@
       &first_index);
   ASSERT_EQ(0, first_index);
   ASSERT_TRUE(IsRestoreSessionUrl(restore_session_url));
+  ASSERT_TRUE(IsRestoreSessionUrl(net::NSURLWithGURL(restore_session_url)));
 
   // Extract session JSON from restoration URL.
   base::JSONReader::ValueWithError value_with_error =
@@ -211,6 +214,7 @@
       &first_index);
   ASSERT_EQ(150, first_index);
   ASSERT_TRUE(IsRestoreSessionUrl(restore_session_url));
+  ASSERT_TRUE(IsRestoreSessionUrl(net::NSURLWithGURL(restore_session_url)));
 
   // Extract session JSON from restoration URL.
   base::JSONReader::ValueWithError value_with_error =
@@ -256,6 +260,7 @@
       &restore_session_url, &first_index);
   ASSERT_EQ(38, first_index);
   ASSERT_TRUE(IsRestoreSessionUrl(restore_session_url));
+  ASSERT_TRUE(IsRestoreSessionUrl(net::NSURLWithGURL(restore_session_url)));
 
   // Extract session JSON from restoration URL.
   base::JSONReader::ValueWithError value_with_error =
@@ -288,8 +293,11 @@
 
 TEST_F(WKNavigationUtilTest, IsNotRestoreSessionUrl) {
   EXPECT_FALSE(IsRestoreSessionUrl(GURL()));
+  EXPECT_FALSE(IsRestoreSessionUrl([NSURL URLWithString:@""]));
   EXPECT_FALSE(IsRestoreSessionUrl(GURL("file://somefile")));
+  EXPECT_FALSE(IsRestoreSessionUrl([NSURL URLWithString:@"file://somefile"]));
   EXPECT_FALSE(IsRestoreSessionUrl(GURL("http://www.1.com")));
+  EXPECT_FALSE(IsRestoreSessionUrl([NSURL URLWithString:@"http://www.1.com"]));
 }
 
 // Tests that CreateRedirectUrl and ExtractTargetURL used back-to-back is an
@@ -308,12 +316,21 @@
   // Valid placeholder URLs.
   EXPECT_TRUE(IsPlaceholderUrl(GURL("about:blank?for=")));
   EXPECT_TRUE(IsPlaceholderUrl(GURL("about:blank?for=chrome%3A%2F%2Fnewtab")));
+  EXPECT_TRUE(IsPlaceholderUrl([NSURL URLWithString:@"about:blank?for="]));
+  EXPECT_TRUE(IsPlaceholderUrl(GURL("about:blank?for=chrome%3A%2F%2Fnewtab")));
+  EXPECT_TRUE(IsPlaceholderUrl(
+      [NSURL URLWithString:@"about:blank?for=chrome%3A%2F%2Fnewtab"]));
 
   // Not an about:blank URL.
   EXPECT_FALSE(IsPlaceholderUrl(GURL::EmptyGURL()));
+  EXPECT_FALSE(IsPlaceholderUrl([NSURL URLWithString:@""]));
+
   // Missing ?for= query parameter.
   EXPECT_FALSE(IsPlaceholderUrl(GURL("about:blank")));
+  EXPECT_FALSE(IsPlaceholderUrl([NSURL URLWithString:@"about:blank"]));
   EXPECT_FALSE(IsPlaceholderUrl(GURL("about:blank?chrome:%3A%2F%2Fnewtab")));
+  EXPECT_FALSE(IsPlaceholderUrl(
+      [NSURL URLWithString:@"about:blank?chrome:%3A%2F%2Fnewtab"]));
 }
 
 TEST_F(WKNavigationUtilTest, EncodReturnsEmptyOnInvalidUrls) {
diff --git a/ios/web/public/web_client.h b/ios/web/public/web_client.h
index e0f5ef7..e845e20 100644
--- a/ios/web/public/web_client.h
+++ b/ios/web/public/web_client.h
@@ -190,6 +190,10 @@
   // desktop version. This method can be overriden to avoid having specific URL
   // being requested in desktop mode when the default mode is desktop.
   virtual bool ForceMobileVersionByDefault(const GURL& url);
+
+  // Returns the UserAgentType that should be used by default for the web
+  // content, based on the size class of |web_view|.
+  virtual UserAgentType GetDefaultUserAgent(UIView* web_view);
 };
 
 }  // namespace web
diff --git a/ios/web/web_client.mm b/ios/web/web_client.mm
index 5a99fa4..c869459 100644
--- a/ios/web/web_client.mm
+++ b/ios/web/web_client.mm
@@ -116,4 +116,8 @@
   return false;
 }
 
+UserAgentType WebClient::GetDefaultUserAgent(UIView* web_view) {
+  return UserAgentType::MOBILE;
+}
+
 }  // namespace web
diff --git a/ios/web/web_state/ui/crw_web_controller.mm b/ios/web/web_state/ui/crw_web_controller.mm
index d5bb7da..398fdded 100644
--- a/ios/web/web_state/ui/crw_web_controller.mm
+++ b/ios/web/web_state/ui/crw_web_controller.mm
@@ -621,8 +621,7 @@
   // TODO(crbug.com/738020): Investigate if this method is still needed and if
   // it can be implemented using NavigationManager API after removal of legacy
   // navigation stack.
-  GURL webViewURL = net::GURLWithNSURL(self.webView.URL);
-  if (self.webView && !IsWKInternalUrl(webViewURL)) {
+  if (self.webView && !IsWKInternalUrl(self.webView.URL)) {
     return [self webURLWithTrustLevel:trustLevel];
   }
   // Any non-web URL source is trusted.
diff --git a/ios/web/web_state/ui/crw_web_request_controller.mm b/ios/web/web_state/ui/crw_web_request_controller.mm
index afe7aa6..cc1ef45 100644
--- a/ios/web/web_state/ui/crw_web_request_controller.mm
+++ b/ios/web/web_state/ui/crw_web_request_controller.mm
@@ -546,9 +546,9 @@
       self.currentNavItem->GetUserAgentType();
 
   if (itemUserAgentType == web::UserAgentType::AUTOMATIC) {
-    DCHECK(
-        base::FeatureList::IsEnabled(web::features::kDefaultToDesktopOnIPad));
-    itemUserAgentType = web::GetDefaultUserAgent(self.webView);
+    DCHECK(base::FeatureList::IsEnabled(
+        web::features::kUseDefaultUserAgentInWebClient));
+    itemUserAgentType = web::GetWebClient()->GetDefaultUserAgent(self.webView);
     self.currentNavItem->SetUserAgentType(
         itemUserAgentType, /*update_inherited_user_agent =*/false);
   } else if (itemUserAgentType == web::UserAgentType::NONE &&
diff --git a/ios/web/web_state/ui/crw_web_view_scroll_view_proxy_unittest.mm b/ios/web/web_state/ui/crw_web_view_scroll_view_proxy_unittest.mm
index c8ad6f790..4bde02c 100644
--- a/ios/web/web_state/ui/crw_web_view_scroll_view_proxy_unittest.mm
+++ b/ios/web/web_state/ui/crw_web_view_scroll_view_proxy_unittest.mm
@@ -30,307 +30,311 @@
 class CRWWebViewScrollViewProxyTest : public PlatformTest {
  protected:
   void SetUp() override {
-    mockScrollView_ = [OCMockObject niceMockForClass:[UIScrollView class]];
-    webViewScrollViewProxy_ = [[CRWWebViewScrollViewProxy alloc] init];
+    mock_underlying_scroll_view_ = OCMClassMock([UIScrollView class]);
+    web_view_scroll_view_proxy_ = [[CRWWebViewScrollViewProxy alloc] init];
   }
   ~CRWWebViewScrollViewProxyTest() override {
-    [webViewScrollViewProxy_ setScrollView:nil];
+    [web_view_scroll_view_proxy_ setScrollView:nil];
   }
-  id mockScrollView_;
-  CRWWebViewScrollViewProxy* webViewScrollViewProxy_;
+  id mock_underlying_scroll_view_;
+  CRWWebViewScrollViewProxy* web_view_scroll_view_proxy_;
 };
 
 // Tests that the UIScrollViewDelegate is set correctly.
 TEST_F(CRWWebViewScrollViewProxyTest, Delegate) {
-  [static_cast<UIScrollView*>([mockScrollView_ expect])
-      setDelegate:webViewScrollViewProxy_.delegateProxy];
-  [webViewScrollViewProxy_ setScrollView:mockScrollView_];
-  EXPECT_OCMOCK_VERIFY(mockScrollView_);
+  OCMExpect([static_cast<UIScrollView*>(mock_underlying_scroll_view_)
+      setDelegate:web_view_scroll_view_proxy_.delegateProxy]);
+  [web_view_scroll_view_proxy_ setScrollView:mock_underlying_scroll_view_];
+  EXPECT_OCMOCK_VERIFY(mock_underlying_scroll_view_);
 }
 
 // Tests that setting 2 scroll views consecutively, clears the delegate of the
 // previous scroll view.
 TEST_F(CRWWebViewScrollViewProxyTest, MultipleScrollView) {
-  UIScrollView* mockScrollView1 = [[UIScrollView alloc] init];
-  UIScrollView* mockScrollView2 = [[UIScrollView alloc] init];
-  [webViewScrollViewProxy_ setScrollView:mockScrollView1];
-  [webViewScrollViewProxy_ setScrollView:mockScrollView2];
-  EXPECT_FALSE([mockScrollView1 delegate]);
-  EXPECT_EQ(webViewScrollViewProxy_.delegateProxy, [mockScrollView2 delegate]);
-  [webViewScrollViewProxy_ setScrollView:nil];
+  UIScrollView* mock_scroll_view1 = [[UIScrollView alloc] init];
+  UIScrollView* mock_scroll_view2 = [[UIScrollView alloc] init];
+  [web_view_scroll_view_proxy_ setScrollView:mock_scroll_view1];
+  [web_view_scroll_view_proxy_ setScrollView:mock_scroll_view2];
+  EXPECT_FALSE([mock_scroll_view1 delegate]);
+  EXPECT_EQ(web_view_scroll_view_proxy_.delegateProxy,
+            [mock_scroll_view2 delegate]);
+  [web_view_scroll_view_proxy_ setScrollView:nil];
 }
 
 // Tests that when releasing a scroll view from the CRWWebViewScrollViewProxy,
 // the UIScrollView's delegate is also cleared.
 TEST_F(CRWWebViewScrollViewProxyTest, DelegateClearingUp) {
-  UIScrollView* mockScrollView1 = [[UIScrollView alloc] init];
-  [webViewScrollViewProxy_ setScrollView:mockScrollView1];
-  EXPECT_EQ(webViewScrollViewProxy_.delegateProxy, [mockScrollView1 delegate]);
-  [webViewScrollViewProxy_ setScrollView:nil];
-  EXPECT_FALSE([mockScrollView1 delegate]);
+  UIScrollView* mock_scroll_view1 = [[UIScrollView alloc] init];
+  [web_view_scroll_view_proxy_ setScrollView:mock_scroll_view1];
+  EXPECT_EQ(web_view_scroll_view_proxy_.delegateProxy,
+            [mock_scroll_view1 delegate]);
+  [web_view_scroll_view_proxy_ setScrollView:nil];
+  EXPECT_FALSE([mock_scroll_view1 delegate]);
 }
 
 // Tests that CRWWebViewScrollViewProxy returns the correct property values from
 // the underlying UIScrollView.
 TEST_F(CRWWebViewScrollViewProxyTest, ScrollViewPresent) {
-  [webViewScrollViewProxy_ setScrollView:mockScrollView_];
-  BOOL yes = YES;
-  [[[mockScrollView_ stub] andReturnValue:OCMOCK_VALUE(yes)] isZooming];
-  EXPECT_TRUE([webViewScrollViewProxy_ isZooming]);
+  [web_view_scroll_view_proxy_ setScrollView:mock_underlying_scroll_view_];
+  OCMStub([mock_underlying_scroll_view_ isZooming]).andReturn(YES);
+  EXPECT_TRUE([web_view_scroll_view_proxy_ isZooming]);
 
   // Arbitrary point.
   const CGPoint point = CGPointMake(10, 10);
-  [[[mockScrollView_ stub] andReturnValue:[NSValue valueWithCGPoint:point]]
-      contentOffset];
+  OCMStub([mock_underlying_scroll_view_ contentOffset]).andReturn(point);
   EXPECT_TRUE(
-      CGPointEqualToPoint(point, [webViewScrollViewProxy_ contentOffset]));
+      CGPointEqualToPoint(point, [web_view_scroll_view_proxy_ contentOffset]));
 
   // Arbitrary inset.
-  const UIEdgeInsets contentInset = UIEdgeInsetsMake(10, 10, 10, 10);
-  [[[mockScrollView_ stub]
-      andReturnValue:[NSValue valueWithUIEdgeInsets:contentInset]]
-      contentInset];
+  const UIEdgeInsets content_inset = UIEdgeInsetsMake(10, 10, 10, 10);
+  OCMStub([mock_underlying_scroll_view_ contentInset]).andReturn(content_inset);
   EXPECT_TRUE(UIEdgeInsetsEqualToEdgeInsets(
-      contentInset, [webViewScrollViewProxy_ contentInset]));
+      content_inset, [web_view_scroll_view_proxy_ contentInset]));
 
   // Arbitrary inset.
-  const UIEdgeInsets scrollIndicatorInsets = UIEdgeInsetsMake(20, 20, 20, 20);
-  [[[mockScrollView_ stub]
-      andReturnValue:[NSValue valueWithUIEdgeInsets:scrollIndicatorInsets]]
-      scrollIndicatorInsets];
+  const UIEdgeInsets scroll_indicator_insets = UIEdgeInsetsMake(20, 20, 20, 20);
+  OCMStub([mock_underlying_scroll_view_ scrollIndicatorInsets])
+      .andReturn(scroll_indicator_insets);
   EXPECT_TRUE(UIEdgeInsetsEqualToEdgeInsets(
-      scrollIndicatorInsets, [webViewScrollViewProxy_ scrollIndicatorInsets]));
+      scroll_indicator_insets,
+      [web_view_scroll_view_proxy_ scrollIndicatorInsets]));
 
   // Arbitrary size.
-  const CGSize contentSize = CGSizeMake(19, 19);
-  [[[mockScrollView_ stub] andReturnValue:[NSValue valueWithCGSize:contentSize]]
-      contentSize];
-  EXPECT_TRUE(
-      CGSizeEqualToSize(contentSize, [webViewScrollViewProxy_ contentSize]));
+  const CGSize content_size = CGSizeMake(19, 19);
+  OCMStub([mock_underlying_scroll_view_ contentSize]).andReturn(content_size);
+  EXPECT_TRUE(CGSizeEqualToSize(content_size,
+                                [web_view_scroll_view_proxy_ contentSize]));
 
   // Arbitrary rect.
   const CGRect frame = CGRectMake(2, 4, 5, 1);
-  [[[mockScrollView_ stub] andReturnValue:[NSValue valueWithCGRect:frame]]
-      frame];
-  EXPECT_TRUE(CGRectEqualToRect(frame, [webViewScrollViewProxy_ frame]));
+  OCMStub([mock_underlying_scroll_view_ frame]).andReturn(frame);
+  EXPECT_TRUE(CGRectEqualToRect(frame, [web_view_scroll_view_proxy_ frame]));
 
-  [[[mockScrollView_ expect] andReturnValue:@YES] isDecelerating];
-  EXPECT_TRUE([webViewScrollViewProxy_ isDecelerating]);
+  OCMExpect([mock_underlying_scroll_view_ isDecelerating]).andReturn(YES);
+  EXPECT_TRUE([web_view_scroll_view_proxy_ isDecelerating]);
 
-  [[[mockScrollView_ expect] andReturnValue:@NO] isDecelerating];
-  EXPECT_FALSE([webViewScrollViewProxy_ isDecelerating]);
+  OCMExpect([mock_underlying_scroll_view_ isDecelerating]).andReturn(NO);
+  EXPECT_FALSE([web_view_scroll_view_proxy_ isDecelerating]);
 
-  [[[mockScrollView_ expect] andReturnValue:@YES] isDragging];
-  EXPECT_TRUE([webViewScrollViewProxy_ isDragging]);
+  OCMExpect([mock_underlying_scroll_view_ isDragging]).andReturn(YES);
+  EXPECT_TRUE([web_view_scroll_view_proxy_ isDragging]);
 
-  [[[mockScrollView_ expect] andReturnValue:@NO] isDragging];
-  EXPECT_FALSE([webViewScrollViewProxy_ isDragging]);
+  OCMExpect([mock_underlying_scroll_view_ isDragging]).andReturn(NO);
+  EXPECT_FALSE([web_view_scroll_view_proxy_ isDragging]);
 
-  [[[mockScrollView_ expect] andReturnValue:@YES] isTracking];
-  EXPECT_TRUE([webViewScrollViewProxy_ isTracking]);
+  OCMExpect([mock_underlying_scroll_view_ isTracking]).andReturn(YES);
+  EXPECT_TRUE([web_view_scroll_view_proxy_ isTracking]);
 
-  [[[mockScrollView_ expect] andReturnValue:@NO] isTracking];
-  EXPECT_FALSE([webViewScrollViewProxy_ isTracking]);
+  OCMExpect([mock_underlying_scroll_view_ isTracking]).andReturn(NO);
+  EXPECT_FALSE([web_view_scroll_view_proxy_ isTracking]);
 
-  [[[mockScrollView_ expect] andReturnValue:@YES] scrollsToTop];
-  EXPECT_TRUE([webViewScrollViewProxy_ scrollsToTop]);
+  OCMExpect([mock_underlying_scroll_view_ scrollsToTop]).andReturn(YES);
+  EXPECT_TRUE([web_view_scroll_view_proxy_ scrollsToTop]);
 
-  [[[mockScrollView_ expect] andReturnValue:@NO] scrollsToTop];
-  EXPECT_FALSE([webViewScrollViewProxy_ scrollsToTop]);
+  OCMExpect([mock_underlying_scroll_view_ scrollsToTop]).andReturn(NO);
+  EXPECT_FALSE([web_view_scroll_view_proxy_ scrollsToTop]);
 
   NSArray<__kindof UIView*>* subviews = [NSArray array];
-  [[[mockScrollView_ expect] andReturn:subviews] subviews];
-  EXPECT_EQ(subviews, [webViewScrollViewProxy_ subviews]);
+  OCMExpect([mock_underlying_scroll_view_ subviews]).andReturn(subviews);
+  EXPECT_EQ(subviews, [web_view_scroll_view_proxy_ subviews]);
 
-  [[[mockScrollView_ expect]
-      andReturnValue:@(UIScrollViewContentInsetAdjustmentAutomatic)]
-      contentInsetAdjustmentBehavior];
+  OCMExpect([mock_underlying_scroll_view_ contentInsetAdjustmentBehavior])
+      .andReturn(UIScrollViewContentInsetAdjustmentAutomatic);
   EXPECT_EQ(UIScrollViewContentInsetAdjustmentAutomatic,
-            [webViewScrollViewProxy_ contentInsetAdjustmentBehavior]);
+            [web_view_scroll_view_proxy_ contentInsetAdjustmentBehavior]);
 
-  [[[mockScrollView_ expect]
-      andReturnValue:@(UIScrollViewContentInsetAdjustmentNever)]
-      contentInsetAdjustmentBehavior];
+  OCMExpect([mock_underlying_scroll_view_ contentInsetAdjustmentBehavior])
+      .andReturn(UIScrollViewContentInsetAdjustmentNever);
   EXPECT_EQ(UIScrollViewContentInsetAdjustmentNever,
-            [webViewScrollViewProxy_ contentInsetAdjustmentBehavior]);
-  [[[mockScrollView_ expect] andReturnValue:@(NO)] clipsToBounds];
-  EXPECT_FALSE([webViewScrollViewProxy_ clipsToBounds]);
-  [[[mockScrollView_ expect] andReturnValue:@(YES)] clipsToBounds];
-  EXPECT_TRUE([webViewScrollViewProxy_ clipsToBounds]);
+            [web_view_scroll_view_proxy_ contentInsetAdjustmentBehavior]);
+
+  OCMExpect([mock_underlying_scroll_view_ clipsToBounds]).andReturn(NO);
+  EXPECT_FALSE([web_view_scroll_view_proxy_ clipsToBounds]);
+
+  OCMExpect([mock_underlying_scroll_view_ clipsToBounds]).andReturn(YES);
+  EXPECT_TRUE([web_view_scroll_view_proxy_ clipsToBounds]);
 }
 
 // Tests that CRWWebViewScrollViewProxy returns the correct property values when
 // there is no underlying UIScrollView.
 TEST_F(CRWWebViewScrollViewProxyTest, ScrollViewAbsent) {
-  [webViewScrollViewProxy_ setScrollView:nil];
+  [web_view_scroll_view_proxy_ setScrollView:nil];
 
   EXPECT_TRUE(CGPointEqualToPoint(CGPointZero,
-                                  [webViewScrollViewProxy_ contentOffset]));
+                                  [web_view_scroll_view_proxy_ contentOffset]));
   EXPECT_TRUE(UIEdgeInsetsEqualToEdgeInsets(
-      UIEdgeInsetsZero, [webViewScrollViewProxy_ contentInset]));
+      UIEdgeInsetsZero, [web_view_scroll_view_proxy_ contentInset]));
   EXPECT_TRUE(UIEdgeInsetsEqualToEdgeInsets(
-      UIEdgeInsetsZero, [webViewScrollViewProxy_ scrollIndicatorInsets]));
+      UIEdgeInsetsZero, [web_view_scroll_view_proxy_ scrollIndicatorInsets]));
   EXPECT_TRUE(
-      CGSizeEqualToSize(CGSizeZero, [webViewScrollViewProxy_ contentSize]));
-  EXPECT_TRUE(CGRectEqualToRect(CGRectZero, [webViewScrollViewProxy_ frame]));
-  EXPECT_FALSE([webViewScrollViewProxy_ isDecelerating]);
-  EXPECT_FALSE([webViewScrollViewProxy_ isDragging]);
-  EXPECT_FALSE([webViewScrollViewProxy_ isTracking]);
-  EXPECT_FALSE([webViewScrollViewProxy_ scrollsToTop]);
-  EXPECT_EQ((NSUInteger)0, [webViewScrollViewProxy_ subviews].count);
+      CGSizeEqualToSize(CGSizeZero, [web_view_scroll_view_proxy_ contentSize]));
+  EXPECT_TRUE(
+      CGRectEqualToRect(CGRectZero, [web_view_scroll_view_proxy_ frame]));
+  EXPECT_FALSE([web_view_scroll_view_proxy_ isDecelerating]);
+  EXPECT_FALSE([web_view_scroll_view_proxy_ isDragging]);
+  EXPECT_FALSE([web_view_scroll_view_proxy_ isTracking]);
+  EXPECT_FALSE([web_view_scroll_view_proxy_ scrollsToTop]);
+  EXPECT_EQ((NSUInteger)0, [web_view_scroll_view_proxy_ subviews].count);
   EXPECT_EQ(UIScrollViewContentInsetAdjustmentAutomatic,
-            [webViewScrollViewProxy_ contentInsetAdjustmentBehavior]);
-  EXPECT_FALSE([webViewScrollViewProxy_ clipsToBounds]);
+            [web_view_scroll_view_proxy_ contentInsetAdjustmentBehavior]);
+  EXPECT_FALSE([web_view_scroll_view_proxy_ clipsToBounds]);
 
   // Make sure setting the properties is fine too.
   // Arbitrary point.
   const CGPoint kPoint = CGPointMake(10, 10);
-  [webViewScrollViewProxy_ setContentOffset:kPoint];
+  [web_view_scroll_view_proxy_ setContentOffset:kPoint];
   // Arbitrary inset.
   const UIEdgeInsets kContentInset = UIEdgeInsetsMake(10, 10, 10, 10);
-  [webViewScrollViewProxy_ setContentInset:kContentInset];
-  [webViewScrollViewProxy_ setScrollIndicatorInsets:kContentInset];
+  [web_view_scroll_view_proxy_ setContentInset:kContentInset];
+  [web_view_scroll_view_proxy_ setScrollIndicatorInsets:kContentInset];
   // Arbitrary size.
   const CGSize kContentSize = CGSizeMake(19, 19);
-  [webViewScrollViewProxy_ setContentSize:kContentSize];
+  [web_view_scroll_view_proxy_ setContentSize:kContentSize];
 }
 
 // Tests that CRWWebViewScrollViewProxy returns the correct property values when
 // they are set while there isn't an underlying scroll view, then a new scroll
 // view is set.
 TEST_F(CRWWebViewScrollViewProxyTest, ScrollViewAbsentThenReset) {
-  [webViewScrollViewProxy_ setScrollView:nil];
-  UIScrollView* scrollView = [[UIScrollView alloc] init];
+  [web_view_scroll_view_proxy_ setScrollView:nil];
+  UIScrollView* underlying_scroll_view = [[UIScrollView alloc] init];
 
-  [[mockScrollView_ expect] setClipsToBounds:YES];
-  [webViewScrollViewProxy_ setClipsToBounds:YES];
-  [[mockScrollView_ expect] setContentInsetAdjustmentBehavior:
-                                UIScrollViewContentInsetAdjustmentNever];
-  [webViewScrollViewProxy_ setContentInsetAdjustmentBehavior:
-                               UIScrollViewContentInsetAdjustmentNever];
+  OCMExpect([mock_underlying_scroll_view_ setClipsToBounds:YES]);
+  [web_view_scroll_view_proxy_ setClipsToBounds:YES];
+  OCMExpect([mock_underlying_scroll_view_
+      setContentInsetAdjustmentBehavior:
+          UIScrollViewContentInsetAdjustmentNever]);
+  [web_view_scroll_view_proxy_ setContentInsetAdjustmentBehavior:
+                                   UIScrollViewContentInsetAdjustmentNever];
 
-  [webViewScrollViewProxy_ setScrollView:scrollView];
+  [web_view_scroll_view_proxy_ setScrollView:underlying_scroll_view];
 
-  [webViewScrollViewProxy_ setScrollView:mockScrollView_];
+  [web_view_scroll_view_proxy_ setScrollView:mock_underlying_scroll_view_];
 
-  EXPECT_OCMOCK_VERIFY(mockScrollView_);
+  EXPECT_OCMOCK_VERIFY(mock_underlying_scroll_view_);
 }
 
 // Tests that CRWWebViewScrollViewProxy returns the correct property values when
 // they are set while there is an underlying scroll view, then a new scroll view
 // is set.
 TEST_F(CRWWebViewScrollViewProxyTest, ScrollViewPresentThenReset) {
-  [webViewScrollViewProxy_ setScrollView:nil];
-  UIScrollView* scrollView = [[UIScrollView alloc] init];
+  [web_view_scroll_view_proxy_ setScrollView:nil];
+  UIScrollView* underlying_scroll_view = [[UIScrollView alloc] init];
 
-  [webViewScrollViewProxy_ setScrollView:scrollView];
-  [[mockScrollView_ expect] setClipsToBounds:YES];
-  [webViewScrollViewProxy_ setClipsToBounds:YES];
-  [[mockScrollView_ expect] setContentInsetAdjustmentBehavior:
-                                UIScrollViewContentInsetAdjustmentNever];
-  [webViewScrollViewProxy_ setContentInsetAdjustmentBehavior:
-                               UIScrollViewContentInsetAdjustmentNever];
+  [web_view_scroll_view_proxy_ setScrollView:underlying_scroll_view];
+  OCMExpect([mock_underlying_scroll_view_ setClipsToBounds:YES]);
+  [web_view_scroll_view_proxy_ setClipsToBounds:YES];
+  OCMExpect([mock_underlying_scroll_view_
+      setContentInsetAdjustmentBehavior:
+          UIScrollViewContentInsetAdjustmentNever]);
+  [web_view_scroll_view_proxy_ setContentInsetAdjustmentBehavior:
+                                   UIScrollViewContentInsetAdjustmentNever];
 
-  [webViewScrollViewProxy_ setScrollView:mockScrollView_];
+  [web_view_scroll_view_proxy_ setScrollView:mock_underlying_scroll_view_];
 
-  EXPECT_OCMOCK_VERIFY(mockScrollView_);
+  EXPECT_OCMOCK_VERIFY(mock_underlying_scroll_view_);
 }
 
 // Tests releasing a scroll view when none is owned by the
 // CRWWebViewScrollViewProxy.
 TEST_F(CRWWebViewScrollViewProxyTest, ReleasingAScrollView) {
-  [webViewScrollViewProxy_ setScrollView:nil];
+  [web_view_scroll_view_proxy_ setScrollView:nil];
 }
 
 // Tests that CRWWebViewScrollViewProxy correctly delegates property setters to
 // the underlying UIScrollView.
 TEST_F(CRWWebViewScrollViewProxyTest, ScrollViewSetProperties) {
-  [webViewScrollViewProxy_ setScrollView:mockScrollView_];
+  [web_view_scroll_view_proxy_ setScrollView:mock_underlying_scroll_view_];
 
-  [[mockScrollView_ expect] setContentInsetAdjustmentBehavior:
-                                UIScrollViewContentInsetAdjustmentNever];
-  [webViewScrollViewProxy_ setContentInsetAdjustmentBehavior:
-                               UIScrollViewContentInsetAdjustmentNever];
-  [mockScrollView_ verify];
+  OCMExpect([mock_underlying_scroll_view_
+      setContentInsetAdjustmentBehavior:
+          UIScrollViewContentInsetAdjustmentNever]);
+  [web_view_scroll_view_proxy_ setContentInsetAdjustmentBehavior:
+                                   UIScrollViewContentInsetAdjustmentNever];
+  EXPECT_OCMOCK_VERIFY(mock_underlying_scroll_view_);
 }
 
 // Tests that -setContentInsetAdjustmentBehavior: works even if it is called
 // before setting the scroll view.
 TEST_F(CRWWebViewScrollViewProxyTest,
        SetContentInsetAdjustmentBehaviorBeforeSettingScrollView) {
-  [[mockScrollView_ expect] setContentInsetAdjustmentBehavior:
-                                UIScrollViewContentInsetAdjustmentNever];
+  OCMExpect([mock_underlying_scroll_view_
+      setContentInsetAdjustmentBehavior:
+          UIScrollViewContentInsetAdjustmentNever]);
 
-  [webViewScrollViewProxy_ setScrollView:nil];
-  [webViewScrollViewProxy_ setContentInsetAdjustmentBehavior:
-                               UIScrollViewContentInsetAdjustmentNever];
-  [webViewScrollViewProxy_ setScrollView:mockScrollView_];
+  [web_view_scroll_view_proxy_ setScrollView:nil];
+  [web_view_scroll_view_proxy_ setContentInsetAdjustmentBehavior:
+                                   UIScrollViewContentInsetAdjustmentNever];
+  [web_view_scroll_view_proxy_ setScrollView:mock_underlying_scroll_view_];
 
-  [mockScrollView_ verify];
+  EXPECT_OCMOCK_VERIFY(mock_underlying_scroll_view_);
 }
 
 // Tests that -setClipsToBounds: works even if it is called before setting the
 // scroll view.
 TEST_F(CRWWebViewScrollViewProxyTest, SetClipsToBoundsBeforeSettingScrollView) {
-  [[mockScrollView_ expect] setClipsToBounds:YES];
+  OCMExpect([mock_underlying_scroll_view_ setClipsToBounds:YES]);
 
-  [webViewScrollViewProxy_ setScrollView:nil];
-  [webViewScrollViewProxy_ setClipsToBounds:YES];
-  [webViewScrollViewProxy_ setScrollView:mockScrollView_];
+  [web_view_scroll_view_proxy_ setScrollView:nil];
+  [web_view_scroll_view_proxy_ setClipsToBounds:YES];
+  [web_view_scroll_view_proxy_ setScrollView:mock_underlying_scroll_view_];
 
-  [mockScrollView_ verify];
+  EXPECT_OCMOCK_VERIFY(mock_underlying_scroll_view_);
 }
 
 // Tests that frame changes are communicated to observers.
 TEST_F(CRWWebViewScrollViewProxyTest, FrameDidChange) {
-  UIScrollView* scroll_view = [[UIScrollView alloc] initWithFrame:CGRectZero];
-  [webViewScrollViewProxy_ setScrollView:scroll_view];
-  id mock_delegate = [OCMockObject
-      niceMockForProtocol:@protocol(CRWWebViewScrollViewProxyObserver)];
-  [webViewScrollViewProxy_ addObserver:mock_delegate];
-  [[mock_delegate expect]
-      webViewScrollViewFrameDidChange:webViewScrollViewProxy_];
-  scroll_view.frame = CGRectMake(1, 2, 3, 4);
-  [mock_delegate verify];
-  [webViewScrollViewProxy_ setScrollView:nil];
+  UIScrollView* underlying_scroll_view =
+      [[UIScrollView alloc] initWithFrame:CGRectZero];
+  [web_view_scroll_view_proxy_ setScrollView:underlying_scroll_view];
+  id mock_delegate =
+      OCMProtocolMock(@protocol(CRWWebViewScrollViewProxyObserver));
+  [web_view_scroll_view_proxy_ addObserver:mock_delegate];
+  OCMExpect([mock_delegate
+      webViewScrollViewFrameDidChange:web_view_scroll_view_proxy_]);
+  underlying_scroll_view.frame = CGRectMake(1, 2, 3, 4);
+  EXPECT_OCMOCK_VERIFY(mock_delegate);
+  [web_view_scroll_view_proxy_ setScrollView:nil];
 }
 
 // Tests that contentInset changes are communicated to observers.
 TEST_F(CRWWebViewScrollViewProxyTest, ContentInsetDidChange) {
-  UIScrollView* scroll_view = [[UIScrollView alloc] initWithFrame:CGRectZero];
-  [webViewScrollViewProxy_ setScrollView:scroll_view];
-  id mock_delegate = [OCMockObject
-      niceMockForProtocol:@protocol(CRWWebViewScrollViewProxyObserver)];
-  [webViewScrollViewProxy_ addObserver:mock_delegate];
-  [[mock_delegate expect]
-      webViewScrollViewDidResetContentInset:webViewScrollViewProxy_];
-  scroll_view.contentInset = UIEdgeInsetsMake(0, 1, 2, 3);
-  [mock_delegate verify];
-  [webViewScrollViewProxy_ setScrollView:nil];
+  UIScrollView* underlying_scroll_view =
+      [[UIScrollView alloc] initWithFrame:CGRectZero];
+  [web_view_scroll_view_proxy_ setScrollView:underlying_scroll_view];
+  id mock_delegate =
+      OCMProtocolMock(@protocol(CRWWebViewScrollViewProxyObserver));
+  [web_view_scroll_view_proxy_ addObserver:mock_delegate];
+  OCMExpect([mock_delegate
+      webViewScrollViewDidResetContentInset:web_view_scroll_view_proxy_]);
+  underlying_scroll_view.contentInset = UIEdgeInsetsMake(0, 1, 2, 3);
+  EXPECT_OCMOCK_VERIFY(mock_delegate);
+  [web_view_scroll_view_proxy_ setScrollView:nil];
 }
 
 // Verifies that method calls to -asUIScrollView are simply forwarded to the
 // underlying scroll view if the method is not implemented in
 // CRWWebViewScrollViewProxy.
 TEST_F(CRWWebViewScrollViewProxyTest, AsUIScrollViewWithUnderlyingScrollView) {
-  [webViewScrollViewProxy_ setScrollView:mockScrollView_];
+  [web_view_scroll_view_proxy_ setScrollView:mock_underlying_scroll_view_];
 
   // Verifies that a return value is properly propagated.
   // -viewPrintFormatter is not implemented in CRWWebViewScrollViewProxy.
   UIViewPrintFormatter* print_formatter_mock =
       OCMClassMock([UIViewPrintFormatter class]);
-  OCMStub([mockScrollView_ viewPrintFormatter]).andReturn(print_formatter_mock);
+  OCMStub([mock_underlying_scroll_view_ viewPrintFormatter])
+      .andReturn(print_formatter_mock);
   EXPECT_EQ(print_formatter_mock,
-            [[webViewScrollViewProxy_ asUIScrollView] viewPrintFormatter]);
+            [[web_view_scroll_view_proxy_ asUIScrollView] viewPrintFormatter]);
 
   // Verifies that a parameter is properly propagated.
   // -drawRect: is not implemented in CRWWebViewScrollViewProxy.
   CGRect rect = CGRectMake(0, 0, 1, 1);
-  OCMExpect([mockScrollView_ drawRect:rect]);
-  [[webViewScrollViewProxy_ asUIScrollView] drawRect:rect];
-  EXPECT_OCMOCK_VERIFY((id)mockScrollView_);
+  OCMExpect([mock_underlying_scroll_view_ drawRect:rect]);
+  [[web_view_scroll_view_proxy_ asUIScrollView] drawRect:rect];
+  EXPECT_OCMOCK_VERIFY((id)mock_underlying_scroll_view_);
 
-  [webViewScrollViewProxy_ setScrollView:nil];
+  [web_view_scroll_view_proxy_ setScrollView:nil];
 }
 
 // Verifies that method calls to -asUIScrollView are no-op if the underlying
@@ -338,30 +342,31 @@
 // CRWWebViewScrollViewProxy.
 TEST_F(CRWWebViewScrollViewProxyTest,
        AsUIScrollViewWithoutUnderlyingScrollView) {
-  [webViewScrollViewProxy_ setScrollView:nil];
+  [web_view_scroll_view_proxy_ setScrollView:nil];
 
   // Any methods should return nil when the underlying scroll view is nil.
-  EXPECT_EQ(nil, [[webViewScrollViewProxy_ asUIScrollView] viewPrintFormatter]);
+  EXPECT_EQ(nil,
+            [[web_view_scroll_view_proxy_ asUIScrollView] viewPrintFormatter]);
 
   // It is expected that nothing happens. Just verifies that it doesn't crash.
   CGRect rect = CGRectMake(0, 0, 1, 1);
-  [[webViewScrollViewProxy_ asUIScrollView] drawRect:rect];
+  [[web_view_scroll_view_proxy_ asUIScrollView] drawRect:rect];
 }
 
 // Verify that -[CRWWebViewScrollViewProxy isKindOfClass:] works as expected.
 TEST_F(CRWWebViewScrollViewProxyTest, IsKindOfClass) {
   // The proxy is a kind of its own class.
-  EXPECT_TRUE([webViewScrollViewProxy_
+  EXPECT_TRUE([web_view_scroll_view_proxy_
       isKindOfClass:[CRWWebViewScrollViewProxy class]]);
 
   // The proxy prentends itself to be a kind of UIScrollView.
-  EXPECT_TRUE([webViewScrollViewProxy_ isKindOfClass:[UIScrollView class]]);
+  EXPECT_TRUE([web_view_scroll_view_proxy_ isKindOfClass:[UIScrollView class]]);
 
   // It should return YES for ancestor classes of UIScrollView.
-  EXPECT_TRUE([webViewScrollViewProxy_ isKindOfClass:[UIView class]]);
+  EXPECT_TRUE([web_view_scroll_view_proxy_ isKindOfClass:[UIView class]]);
 
   // Returns NO if none of above applies.
-  EXPECT_FALSE([webViewScrollViewProxy_ isKindOfClass:[NSString class]]);
+  EXPECT_FALSE([web_view_scroll_view_proxy_ isKindOfClass:[NSString class]]);
 }
 
 // Verify that -[CRWWebViewScrollViewProxy respondsToSelector:] works as
@@ -369,45 +374,45 @@
 TEST_F(CRWWebViewScrollViewProxyTest, RespondsToSelector) {
   // A method defined in CRWWebViewScrollViewProxy but not in UIScrollView.
   EXPECT_TRUE(
-      [webViewScrollViewProxy_ respondsToSelector:@selector(addObserver:)]);
+      [web_view_scroll_view_proxy_ respondsToSelector:@selector(addObserver:)]);
 
   // A method defined in CRWWebViewScrollViewProxy and also in UIScrollView.
-  EXPECT_TRUE(
-      [webViewScrollViewProxy_ respondsToSelector:@selector(contentOffset)]);
+  EXPECT_TRUE([web_view_scroll_view_proxy_
+      respondsToSelector:@selector(contentOffset)]);
 
   // A method defined in UIScrollView but not in CRWWebViewScrollViewProxy.
-  EXPECT_TRUE(
-      [webViewScrollViewProxy_ respondsToSelector:@selector(indexDisplayMode)]);
+  EXPECT_TRUE([web_view_scroll_view_proxy_
+      respondsToSelector:@selector(indexDisplayMode)]);
 
   // A method defined in UIView (a superclass of UIScrollView) but not in
   // CRWWebViewScrollViewProxy.
-  EXPECT_TRUE([webViewScrollViewProxy_
+  EXPECT_TRUE([web_view_scroll_view_proxy_
       respondsToSelector:@selector(viewPrintFormatter)]);
 
   // A method defined in none of above.
-  EXPECT_FALSE(
-      [webViewScrollViewProxy_ respondsToSelector:@selector(containsString:)]);
+  EXPECT_FALSE([web_view_scroll_view_proxy_
+      respondsToSelector:@selector(containsString:)]);
 }
 
-// Tests delegate method forwarding to [webViewScrollViewProxy_
+// Tests delegate method forwarding to [web_view_scroll_view_proxy_
 // asUIScrollView].delegate when:
-//   - [webViewScrollViewProxy_ asUIScrollView].delegate is not nil
+//   - [web_view_scroll_view_proxy_ asUIScrollView].delegate is not nil
 //   - CRWWebViewScrollViewDelegateProxy implements the method
 //
 // Expects that a method call to the delegate of the underlying scroll view is
-// forwarded to [webViewScrollViewProxy_ asUIScrollView].delegate.
+// forwarded to [web_view_scroll_view_proxy_ asUIScrollView].delegate.
 TEST_F(CRWWebViewScrollViewProxyTest,
        ProxyDelegateMethodForwardingForImplementedMethod) {
   UIScrollView* underlying_scroll_view = [[UIScrollView alloc] init];
-  [webViewScrollViewProxy_ setScrollView:underlying_scroll_view];
+  [web_view_scroll_view_proxy_ setScrollView:underlying_scroll_view];
 
   id<UIScrollViewDelegate> mock_proxy_delegate =
       OCMProtocolMock(@protocol(UIScrollViewDelegate));
-  [webViewScrollViewProxy_ asUIScrollView].delegate = mock_proxy_delegate;
+  [web_view_scroll_view_proxy_ asUIScrollView].delegate = mock_proxy_delegate;
 
   UIView* mock_view = OCMClassMock([UIView class]);
   OCMExpect([mock_proxy_delegate
-      scrollViewWillBeginZooming:[webViewScrollViewProxy_ asUIScrollView]
+      scrollViewWillBeginZooming:[web_view_scroll_view_proxy_ asUIScrollView]
                         withView:mock_view]);
 
   EXPECT_TRUE([underlying_scroll_view.delegate
@@ -417,29 +422,29 @@
                         withView:mock_view];
 
   EXPECT_OCMOCK_VERIFY(static_cast<id>(mock_proxy_delegate));
-  [webViewScrollViewProxy_ setScrollView:nil];
+  [web_view_scroll_view_proxy_ setScrollView:nil];
 }
 
-// Tests delegate method forwarding to [webViewScrollViewProxy_
+// Tests delegate method forwarding to [web_view_scroll_view_proxy_
 // asUIScrollView].delegate when:
-//   - [webViewScrollViewProxy_ asUIScrollView].delegate is not nil
+//   - [web_view_scroll_view_proxy_ asUIScrollView].delegate is not nil
 //   - CRWWebViewScrollViewDelegateProxy does *not* implement the method
 //
 // Expects that a method call to the delegate of the underlying scroll view is
-// forwarded to [webViewScrollViewProxy_ asUIScrollView].delegate.
+// forwarded to [web_view_scroll_view_proxy_ asUIScrollView].delegate.
 TEST_F(CRWWebViewScrollViewProxyTest,
        ProxyDelegateMethodForwardingForUnimplementedMethod) {
   UIScrollView* underlying_scroll_view = [[UIScrollView alloc] init];
-  [webViewScrollViewProxy_ setScrollView:underlying_scroll_view];
+  [web_view_scroll_view_proxy_ setScrollView:underlying_scroll_view];
 
   id<UIScrollViewDelegate> mock_proxy_delegate =
       OCMProtocolMock(@protocol(UIScrollViewDelegate));
-  [webViewScrollViewProxy_ asUIScrollView].delegate = mock_proxy_delegate;
+  [web_view_scroll_view_proxy_ asUIScrollView].delegate = mock_proxy_delegate;
 
   UIView* mock_view = OCMClassMock([UIView class]);
-  OCMExpect(
-      [mock_proxy_delegate
-          viewForZoomingInScrollView:[webViewScrollViewProxy_ asUIScrollView]])
+  OCMExpect([mock_proxy_delegate
+                viewForZoomingInScrollView:[web_view_scroll_view_proxy_
+                                               asUIScrollView]])
       .andReturn(mock_view);
 
   EXPECT_TRUE([underlying_scroll_view.delegate
@@ -448,12 +453,12 @@
                            viewForZoomingInScrollView:underlying_scroll_view]);
 
   EXPECT_OCMOCK_VERIFY(static_cast<id>(mock_proxy_delegate));
-  [webViewScrollViewProxy_ setScrollView:nil];
+  [web_view_scroll_view_proxy_ setScrollView:nil];
 }
 
-// Tests delegate method forwarding to [webViewScrollViewProxy_
+// Tests delegate method forwarding to [web_view_scroll_view_proxy_
 // asUIScrollView].delegate when:
-//   - [webViewScrollViewProxy_ asUIScrollView].delegate is nil
+//   - [web_view_scroll_view_proxy_ asUIScrollView].delegate is nil
 //   - CRWWebViewScrollViewDelegateProxy implements the method
 //
 // Expects that the delegate of the underlying scroll view responds to the
@@ -461,9 +466,9 @@
 TEST_F(CRWWebViewScrollViewProxyTest,
        ProxyDelegateMethodForwardingForImplementedMethodWhenDelegateIsNil) {
   UIScrollView* underlying_scroll_view = [[UIScrollView alloc] init];
-  [webViewScrollViewProxy_ setScrollView:underlying_scroll_view];
+  [web_view_scroll_view_proxy_ setScrollView:underlying_scroll_view];
 
-  [webViewScrollViewProxy_ asUIScrollView].delegate = nil;
+  [web_view_scroll_view_proxy_ asUIScrollView].delegate = nil;
 
   EXPECT_TRUE([underlying_scroll_view.delegate
       respondsToSelector:@selector(scrollViewWillBeginZooming:withView:)]);
@@ -473,12 +478,12 @@
       scrollViewWillBeginZooming:underlying_scroll_view
                         withView:mock_view];
 
-  [webViewScrollViewProxy_ setScrollView:nil];
+  [web_view_scroll_view_proxy_ setScrollView:nil];
 }
 
-// Tests delegate method forwarding to [webViewScrollViewProxy_
+// Tests delegate method forwarding to [web_view_scroll_view_proxy_
 // asUIScrollView].delegate when:
-//   - [webViewScrollViewProxy_ asUIScrollView].delegate is nil
+//   - [web_view_scroll_view_proxy_ asUIScrollView].delegate is nil
 //   - CRWWebViewScrollViewDelegateProxy does *not* implement the method
 //
 // Expects that the delegate of the underlying scroll view does *not* respond to
@@ -486,14 +491,14 @@
 TEST_F(CRWWebViewScrollViewProxyTest,
        ProxyDelegateMethodForwardingForUnimplementedMethodWhenDelegateIsNil) {
   UIScrollView* underlying_scroll_view = [[UIScrollView alloc] init];
-  [webViewScrollViewProxy_ setScrollView:underlying_scroll_view];
+  [web_view_scroll_view_proxy_ setScrollView:underlying_scroll_view];
 
-  [webViewScrollViewProxy_ asUIScrollView].delegate = nil;
+  [web_view_scroll_view_proxy_ asUIScrollView].delegate = nil;
 
   EXPECT_FALSE([underlying_scroll_view.delegate
       respondsToSelector:@selector(viewForZoomingInScrollView:)]);
 
-  [webViewScrollViewProxy_ setScrollView:nil];
+  [web_view_scroll_view_proxy_ setScrollView:nil];
 }
 
 // Verifies that adding a key-value observer to a CRWWebViewScrollViewProxy
@@ -501,12 +506,12 @@
 TEST_F(CRWWebViewScrollViewProxyTest, AddKVObserver) {
   UIScrollView* underlying_scroll_view = [[UIScrollView alloc] init];
   underlying_scroll_view.contentOffset = CGPointZero;
-  [webViewScrollViewProxy_ setScrollView:underlying_scroll_view];
+  [web_view_scroll_view_proxy_ setScrollView:underlying_scroll_view];
 
   // Add a key-value observer to a CRWWebViewScrollViewProxy.
   NSObject* observer = OCMClassMock([NSObject class]);
   int context = 0;
-  [webViewScrollViewProxy_
+  [web_view_scroll_view_proxy_
       addObserver:observer
        forKeyPath:@"contentOffset"
           options:NSKeyValueObservingOptionOld | NSKeyValueObservingOptionNew
@@ -522,13 +527,14 @@
     NSKeyValueChangeNewKey : @(new_offset)
   };
   OCMExpect([observer observeValueForKeyPath:@"contentOffset"
-                                    ofObject:webViewScrollViewProxy_
+                                    ofObject:web_view_scroll_view_proxy_
                                       change:expected_change
                                      context:&context]);
   underlying_scroll_view.contentOffset = new_offset;
 
   EXPECT_OCMOCK_VERIFY(static_cast<id>(observer));
-  [webViewScrollViewProxy_ removeObserver:observer forKeyPath:@"contentOffset"];
+  [web_view_scroll_view_proxy_ removeObserver:observer
+                                   forKeyPath:@"contentOffset"];
 }
 
 // Verifies that removing a key-value observer from a CRWWebViewScrollViewProxy
@@ -536,17 +542,18 @@
 TEST_F(CRWWebViewScrollViewProxyTest, RemoveKVObserver) {
   UIScrollView* underlying_scroll_view = [[UIScrollView alloc] init];
   underlying_scroll_view.contentOffset = CGPointZero;
-  [webViewScrollViewProxy_ setScrollView:underlying_scroll_view];
+  [web_view_scroll_view_proxy_ setScrollView:underlying_scroll_view];
 
   // Add and then remove a key-value observer.
   NSObject* observer = OCMClassMock([NSObject class]);
   int context = 0;
-  [webViewScrollViewProxy_
+  [web_view_scroll_view_proxy_
       addObserver:observer
        forKeyPath:@"contentOffset"
           options:NSKeyValueObservingOptionOld | NSKeyValueObservingOptionNew
           context:&context];
-  [webViewScrollViewProxy_ removeObserver:observer forKeyPath:@"contentOffset"];
+  [web_view_scroll_view_proxy_ removeObserver:observer
+                                   forKeyPath:@"contentOffset"];
 
   // The observer should not be notified of a change after the removal.
   CGPoint new_offset = CGPointMake(10, 20);
@@ -557,7 +564,7 @@
   };
   [[static_cast<id>(observer) reject]
       observeValueForKeyPath:@"contentOffset"
-                    ofObject:webViewScrollViewProxy_
+                    ofObject:web_view_scroll_view_proxy_
                       change:expected_change
                      context:&context];
   underlying_scroll_view.contentOffset = new_offset;
diff --git a/ios/web_view/BUILD.gn b/ios/web_view/BUILD.gn
index 87404f2..d9089b3 100644
--- a/ios/web_view/BUILD.gn
+++ b/ios/web_view/BUILD.gn
@@ -256,9 +256,9 @@
     "internal/autofill/cwv_credit_card_verifier.mm",
     "internal/autofill/cwv_credit_card_verifier_internal.h",
     "internal/passwords/cwv_password.mm",
-    "internal/passwords/cwv_password_internal.h",
     "internal/passwords/cwv_password_controller.h",
     "internal/passwords/cwv_password_controller.mm",
+    "internal/passwords/cwv_password_internal.h",
   ]
 }
 
@@ -279,14 +279,14 @@
   "//components/gcm_driver",
   "//components/history/core/common",
   "//components/image_fetcher/ios",
-  "//components/invalidation/impl",
   "//components/infobars/core",
+  "//components/invalidation/impl",
   "//components/keyed_service/core",
   "//components/keyed_service/ios",
   "//components/language/core/browser",
   "//components/language/core/common",
+  "//components/language/ios/browser",
   "//components/leveldb_proto",
-  "//services/network:network_service",
   "//components/password_manager/core/browser",
   "//components/password_manager/core/browser:affiliation",
   "//components/password_manager/core/common",
@@ -295,17 +295,17 @@
   "//components/prefs",
   "//components/proxy_config",
   "//components/signin/core/browser",
-  "//components/signin/public/webdata",
   "//components/signin/ios/browser",
   "//components/signin/ios/browser:active_state_manager",
   "//components/signin/public/identity_manager",
   "//components/signin/public/identity_manager/ios",
+  "//components/signin/public/webdata",
+  "//components/ssl_errors",
   "//components/strings:components_strings_grit",
   "//components/sync",
   "//components/sync_device_info",
-  "//components/sync_user_events",
-  "//components/language/ios/browser",
   "//components/sync_sessions",
+  "//components/sync_user_events",
   "//components/translate/core/browser",
   "//components/translate/core/common",
   "//components/translate/ios/browser",
@@ -315,7 +315,6 @@
   "//components/version_info:version_string",
   "//components/web_resource",
   "//components/webdata_services",
-  "//components/ssl_errors",
   "//google_apis",
   "//ios/components/io_thread",
   "//ios/net",
@@ -323,14 +322,15 @@
   "//ios/web/common",
   "//ios/web/common:user_agent",
   "//ios/web/public",
-  "//ios/web/public/init",
   "//ios/web/public/deprecated",
-  "//ios/web/public/security",
+  "//ios/web/public/init",
   "//ios/web/public/js_messaging",
+  "//ios/web/public/security",
   "//ios/web/public/web_view_only",
   "//net",
   "//net:extras",
   "//services/metrics/public/cpp:metrics_cpp",
+  "//services/network:network_service",
   "//ui/base",
   "//url",
 ]
diff --git a/media/OWNERS b/media/OWNERS
index 6d0a313..b332f27 100644
--- a/media/OWNERS
+++ b/media/OWNERS
@@ -14,6 +14,7 @@
 liberato@chromium.org
 sandersd@chromium.org
 tguilbert@chromium.org
+tmathmeyer@chromium.org
 wolenetz@chromium.org
 xhwang@chromium.org
 
diff --git a/media/audio/fuchsia/audio_output_stream_fuchsia.cc b/media/audio/fuchsia/audio_output_stream_fuchsia.cc
index c37e754..a3f7a94e 100644
--- a/media/audio/fuchsia/audio_output_stream_fuchsia.cc
+++ b/media/audio/fuchsia/audio_output_stream_fuchsia.cc
@@ -258,8 +258,8 @@
                                    min_lead_time_.value() -
                                    parameters_.GetBufferDuration() / 2;
   timer_.Start(FROM_HERE, next_pump_time - now,
-               base::Bind(&AudioOutputStreamFuchsia::PumpSamples,
-                          base::Unretained(this)));
+               base::BindOnce(&AudioOutputStreamFuchsia::PumpSamples,
+                              base::Unretained(this)));
 }
 
 }  // namespace media
diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc
index 5f33919..d089b39 100644
--- a/media/base/media_switches.cc
+++ b/media/base/media_switches.cc
@@ -182,10 +182,6 @@
 const char kOverrideHardwareSecureCodecsForTesting[] =
     "override-hardware-secure-codecs-for-testing";
 
-// Enables GpuMemoryBuffer-based buffer pool.
-const char kVideoCaptureUseGpuMemoryBuffer[] =
-    "video-capture-use-gpu-memory-buffer";
-
 namespace autoplay {
 
 // Autoplay policy that requires a document user activation.
diff --git a/media/base/media_switches.h b/media/base/media_switches.h
index 6bf98832..62de414 100644
--- a/media/base/media_switches.h
+++ b/media/base/media_switches.h
@@ -84,8 +84,6 @@
 MEDIA_EXPORT extern const char kOverrideEnabledCdmInterfaceVersion[];
 MEDIA_EXPORT extern const char kOverrideHardwareSecureCodecsForTesting[];
 
-MEDIA_EXPORT extern const char kVideoCaptureUseGpuMemoryBuffer[];
-
 namespace autoplay {
 
 MEDIA_EXPORT extern const char kDocumentUserActivationRequiredPolicy[];
diff --git a/media/capture/BUILD.gn b/media/capture/BUILD.gn
index 9e06dd2..c30e0fa0 100644
--- a/media/capture/BUILD.gn
+++ b/media/capture/BUILD.gn
@@ -17,6 +17,15 @@
   ]
 }
 
+component("capture_switches") {
+  defines = [ "CAPTURE_IMPLEMENTATION" ]
+  sources = [
+    "capture_export.h",
+    "capture_switches.cc",
+    "capture_switches.h",
+  ]
+}
+
 # Things needed by //media/capture/mojom/video_capture_types.mojom.
 jumbo_component("capture_base") {
   defines = [ "CAPTURE_IMPLEMENTATION" ]
diff --git a/media/capture/capture_switches.cc b/media/capture/capture_switches.cc
new file mode 100644
index 0000000..6f88b43
--- /dev/null
+++ b/media/capture/capture_switches.cc
@@ -0,0 +1,13 @@
+// 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 "media/capture/capture_switches.h"
+
+namespace switches {
+
+// Enables GpuMemoryBuffer-based buffer pool.
+const char kVideoCaptureUseGpuMemoryBuffer[] =
+    "video-capture-use-gpu-memory-buffer";
+
+}  // namespace switches
diff --git a/media/capture/capture_switches.h b/media/capture/capture_switches.h
new file mode 100644
index 0000000..cccc92a
--- /dev/null
+++ b/media/capture/capture_switches.h
@@ -0,0 +1,16 @@
+// 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 MEDIA_CAPTURE_CAPTURE_SWITCHES_H_
+#define MEDIA_CAPTURE_CAPTURE_SWITCHES_H_
+
+#include "media/capture/capture_export.h"
+
+namespace switches {
+
+CAPTURE_EXPORT extern const char kVideoCaptureUseGpuMemoryBuffer[];
+
+}  // namespace switches
+
+#endif  // MEDIA_CAPTURE_CAPTURE_SWITCHES_H_
diff --git a/media/capture/video/chromeos/video_capture_device_chromeos_halv3.cc b/media/capture/video/chromeos/video_capture_device_chromeos_halv3.cc
index 70ae8f6..2ab0056 100644
--- a/media/capture/video/chromeos/video_capture_device_chromeos_halv3.cc
+++ b/media/capture/video/chromeos/video_capture_device_chromeos_halv3.cc
@@ -95,7 +95,7 @@
 
   base::WeakPtr<VideoCaptureDeviceChromeOSHalv3> device_;
   scoped_refptr<base::SingleThreadTaskRunner> device_task_runner_;
-  scoped_refptr<base::TaskRunner> dbus_task_runner_;
+  scoped_refptr<base::SingleThreadTaskRunner> dbus_task_runner_;
 
   DISALLOW_COPY_AND_ASSIGN(PowerManagerClientProxy);
 };
diff --git a/media/gpu/chromeos/fourcc.cc b/media/gpu/chromeos/fourcc.cc
index 6bf141b..07ff7f9 100644
--- a/media/gpu/chromeos/fourcc.cc
+++ b/media/gpu/chromeos/fourcc.cc
@@ -18,7 +18,6 @@
 
 namespace media {
 
-Fourcc::Fourcc() : value_(Fourcc::INVALID) {}
 Fourcc::Fourcc(Fourcc::Value fourcc) : value_(fourcc) {}
 Fourcc::~Fourcc() = default;
 Fourcc& Fourcc::operator=(const Fourcc& other) = default;
@@ -50,8 +49,9 @@
 }
 
 // static
-Fourcc Fourcc::FromVideoPixelFormat(VideoPixelFormat pixel_format,
-                                    bool single_planar) {
+base::Optional<Fourcc> Fourcc::FromVideoPixelFormat(
+    VideoPixelFormat pixel_format,
+    bool single_planar) {
   if (single_planar) {
     switch (pixel_format) {
       case PIXEL_FORMAT_ARGB:
@@ -134,15 +134,13 @@
         break;
     }
   }
-  NOTREACHED() << "Unmapped " << VideoPixelFormatToString(pixel_format)
-               << " for " << (single_planar ? "single-planar" : "multi-planar");
-  return Fourcc();
+  DVLOGF(3) << "Unmapped " << VideoPixelFormatToString(pixel_format) << " for "
+            << (single_planar ? "single-planar" : "multi-planar");
+  return base::nullopt;
 }
 
 VideoPixelFormat Fourcc::ToVideoPixelFormat() const {
   switch (value_) {
-    case Fourcc::INVALID:
-      return PIXEL_FORMAT_UNKNOWN;
     case Fourcc::AR24:
       return PIXEL_FORMAT_ARGB;
     case Fourcc::AB24:
@@ -183,7 +181,7 @@
     case Fourcc::MM21:
       return PIXEL_FORMAT_NV12;
   }
-  DLOG(WARNING) << "Unmapped Fourcc: " << ToString();
+  NOTREACHED() << "Unmapped Fourcc: " << ToString();
   return PIXEL_FORMAT_UNKNOWN;
 }
 
@@ -204,7 +202,7 @@
 
 #if BUILDFLAG(USE_VAAPI)
 // static
-Fourcc Fourcc::FromVAFourCC(uint32_t va_fourcc) {
+base::Optional<Fourcc> Fourcc::FromVAFourCC(uint32_t va_fourcc) {
   switch (va_fourcc) {
     case VA_FOURCC_I420:
       return Fourcc(Fourcc::YU12);
@@ -227,14 +225,12 @@
     case VA_FOURCC_ARGB:
       return Fourcc(Fourcc::RGB4);
   }
-  DLOG(WARNING) << "Unmapped VAFourCC: " << FourccToString(va_fourcc);
-  return Fourcc();
+  DVLOGF(3) << "Unmapped VAFourCC: " << FourccToString(va_fourcc);
+  return base::nullopt;
 }
 
-uint32_t Fourcc::ToVAFourCC() const {
+base::Optional<uint32_t> Fourcc::ToVAFourCC() const {
   switch (value_) {
-    case Fourcc::INVALID:
-      return 0;
     case Fourcc::YU12:
       return VA_FOURCC_I420;
     case Fourcc::NV12:
@@ -262,10 +258,13 @@
     case Fourcc::YM16:
     case Fourcc::MT21:
     case Fourcc::MM21:
-      break;
+      // VAAPI does not know about these formats, so signal this by returning
+      // nullopt.
+      DVLOGF(3) << "Fourcc not convertible to VaFourCC: " << ToString();
+      return base::nullopt;
   }
-  DLOG(WARNING) << "Unmapped fourcc: " << ToString();
-  return 0;
+  NOTREACHED() << "Unmapped Fourcc: " << ToString();
+  return base::nullopt;
 }
 
 #endif  // BUILDFLAG(USE_VAAPI)
@@ -276,7 +275,6 @@
 
 bool Fourcc::IsMultiPlanar() const {
   switch (value_) {
-    case INVALID:
     case AR24:
     case AB24:
     case XR24:
diff --git a/media/gpu/chromeos/fourcc.h b/media/gpu/chromeos/fourcc.h
index 7aaa4635..a478d386 100644
--- a/media/gpu/chromeos/fourcc.h
+++ b/media/gpu/chromeos/fourcc.h
@@ -108,19 +108,13 @@
     // Maps to V4L2_PIX_FMT_MM21.
     // It is used for MT8183 hardware video decoder.
     MM21 = ComposeFourcc('M', 'M', '2', '1'),
-
-    // Invalid
-    INVALID = 0,
   };
 
-  // Constructor for invalid Fourcc.
-  Fourcc();
   explicit Fourcc(Fourcc::Value fourcc);
   Fourcc& operator=(const Fourcc& fourcc);
   ~Fourcc();
 
   bool operator==(const Fourcc& rhs) const { return value_ == rhs.value_; }
-  explicit operator bool() const { return value_ != Fourcc::INVALID; }
 
   // Factory methods:
 
@@ -129,11 +123,12 @@
   static base::Optional<Fourcc> FromUint32(uint32_t fourcc);
 
   // Converts a VideoPixelFormat to Fourcc.
-  // Returns Fourcc::INVALID for invalid input.
+  // Returns nullopt for invalid input.
   // Note that a VideoPixelFormat may have two Fourcc counterparts. Caller has
   // to specify if it is for single-planar or multi-planar format.
-  static Fourcc FromVideoPixelFormat(VideoPixelFormat pixel_format,
-                                     bool single_planar = true);
+  static base::Optional<Fourcc> FromVideoPixelFormat(
+      VideoPixelFormat pixel_format,
+      bool single_planar = true);
 #if BUILDFLAG(USE_V4L2_CODEC)
   // Converts a V4L2PixFmt to Fourcc.
   // Returns nullopt for invalid input.
@@ -141,8 +136,8 @@
 #endif  // BUILDFLAG(USE_V4L2_CODEC)
 #if BUILDFLAG(USE_VAAPI)
   // Converts a VAFourCC to Fourcc.
-  // Returns Fourcc::INVALID for invalid input.
-  static Fourcc FromVAFourCC(uint32_t va_fourcc);
+  // Returns nullopt for invalid input.
+  static base::Optional<Fourcc> FromVAFourCC(uint32_t va_fourcc);
 #endif  // BUILDFLAG(USE_VAAPI)
 
   // Value getters:
@@ -156,8 +151,8 @@
 #endif  // BUILDFLAG(USE_V4L2_CODEC)
 #if BUILDFLAG(USE_VAAPI)
   // Returns the VAFourCC counterpart of the value.
-  // Returns 0 if no mapping is found.
-  uint32_t ToVAFourCC() const;
+  // Returns nullopt if no mapping is found.
+  base::Optional<uint32_t> ToVAFourCC() const;
 #endif  // BUILDFLAG(USE_VAAPI)
 
   // Returns whether |value_| is multi planar format.
diff --git a/media/gpu/chromeos/fourcc_unittests.cc b/media/gpu/chromeos/fourcc_unittests.cc
index 8536b8e2..4c153e6 100644
--- a/media/gpu/chromeos/fourcc_unittests.cc
+++ b/media/gpu/chromeos/fourcc_unittests.cc
@@ -91,68 +91,91 @@
 TEST(FourccTest, VideoPixelFormatToV4L2PixFmt) {
   EXPECT_EQ(
       V4L2_PIX_FMT_NV12,
-      Fourcc::FromVideoPixelFormat(PIXEL_FORMAT_NV12, true).ToV4L2PixFmt());
+      Fourcc::FromVideoPixelFormat(PIXEL_FORMAT_NV12, true)->ToV4L2PixFmt());
   EXPECT_EQ(
       V4L2_PIX_FMT_NV12M,
-      Fourcc::FromVideoPixelFormat(PIXEL_FORMAT_NV12, false).ToV4L2PixFmt());
+      Fourcc::FromVideoPixelFormat(PIXEL_FORMAT_NV12, false)->ToV4L2PixFmt());
 
   EXPECT_EQ(
       V4L2_PIX_FMT_YUV420,
-      Fourcc::FromVideoPixelFormat(PIXEL_FORMAT_I420, true).ToV4L2PixFmt());
+      Fourcc::FromVideoPixelFormat(PIXEL_FORMAT_I420, true)->ToV4L2PixFmt());
   EXPECT_EQ(
       V4L2_PIX_FMT_YUV420M,
-      Fourcc::FromVideoPixelFormat(PIXEL_FORMAT_I420, false).ToV4L2PixFmt());
+      Fourcc::FromVideoPixelFormat(PIXEL_FORMAT_I420, false)->ToV4L2PixFmt());
 
   EXPECT_EQ(
       V4L2_PIX_FMT_YVU420,
-      Fourcc::FromVideoPixelFormat(PIXEL_FORMAT_YV12, true).ToV4L2PixFmt());
+      Fourcc::FromVideoPixelFormat(PIXEL_FORMAT_YV12, true)->ToV4L2PixFmt());
   EXPECT_EQ(
       V4L2_PIX_FMT_YVU420M,
-      Fourcc::FromVideoPixelFormat(PIXEL_FORMAT_YV12, false).ToV4L2PixFmt());
+      Fourcc::FromVideoPixelFormat(PIXEL_FORMAT_YV12, false)->ToV4L2PixFmt());
 }
 #endif  // BUILDFLAG(USE_V4L2_CODEC)
 
 #if BUILDFLAG(USE_VAAPI)
+// Checks that converting a VaFourCC to Fourcc and back to VaFourCC
+// yields the same format as the original one.
+static void CheckFromVAFourCCAndBack(uint32_t va_fourcc) {
+  base::Optional<Fourcc> fourcc = Fourcc::FromVAFourCC(va_fourcc);
+  EXPECT_NE(fourcc, base::nullopt);
+  base::Optional<uint32_t> to_va_fourcc = fourcc->ToVAFourCC();
+  EXPECT_NE(to_va_fourcc, base::nullopt);
+  EXPECT_EQ(*to_va_fourcc, va_fourcc);
+}
+
+TEST(FourccTest, FromVaFourCCAndBack) {
+  CheckFromVAFourCCAndBack(VA_FOURCC_I420);
+  CheckFromVAFourCCAndBack(VA_FOURCC_NV12);
+  CheckFromVAFourCCAndBack(VA_FOURCC_NV21);
+  CheckFromVAFourCCAndBack(VA_FOURCC_YV12);
+  CheckFromVAFourCCAndBack(VA_FOURCC_YUY2);
+  CheckFromVAFourCCAndBack(VA_FOURCC_RGBA);
+  CheckFromVAFourCCAndBack(VA_FOURCC_RGBX);
+  CheckFromVAFourCCAndBack(VA_FOURCC_BGRA);
+  CheckFromVAFourCCAndBack(VA_FOURCC_BGRX);
+  CheckFromVAFourCCAndBack(VA_FOURCC_ARGB);
+}
+
 TEST(FourccTest, VAFourCCToVideoPixelFormat) {
   EXPECT_EQ(PIXEL_FORMAT_I420,
-            Fourcc::FromVAFourCC(VA_FOURCC_I420).ToVideoPixelFormat());
+            Fourcc::FromVAFourCC(VA_FOURCC_I420)->ToVideoPixelFormat());
   EXPECT_EQ(PIXEL_FORMAT_NV12,
-            Fourcc::FromVAFourCC(VA_FOURCC_NV12).ToVideoPixelFormat());
+            Fourcc::FromVAFourCC(VA_FOURCC_NV12)->ToVideoPixelFormat());
   EXPECT_EQ(PIXEL_FORMAT_NV21,
-            Fourcc::FromVAFourCC(VA_FOURCC_NV21).ToVideoPixelFormat());
+            Fourcc::FromVAFourCC(VA_FOURCC_NV21)->ToVideoPixelFormat());
   EXPECT_EQ(PIXEL_FORMAT_YV12,
-            Fourcc::FromVAFourCC(VA_FOURCC_YV12).ToVideoPixelFormat());
+            Fourcc::FromVAFourCC(VA_FOURCC_YV12)->ToVideoPixelFormat());
   EXPECT_EQ(PIXEL_FORMAT_YUY2,
-            Fourcc::FromVAFourCC(VA_FOURCC_YUY2).ToVideoPixelFormat());
+            Fourcc::FromVAFourCC(VA_FOURCC_YUY2)->ToVideoPixelFormat());
   EXPECT_EQ(PIXEL_FORMAT_ABGR,
-            Fourcc::FromVAFourCC(VA_FOURCC_RGBA).ToVideoPixelFormat());
+            Fourcc::FromVAFourCC(VA_FOURCC_RGBA)->ToVideoPixelFormat());
   EXPECT_EQ(PIXEL_FORMAT_XBGR,
-            Fourcc::FromVAFourCC(VA_FOURCC_RGBX).ToVideoPixelFormat());
+            Fourcc::FromVAFourCC(VA_FOURCC_RGBX)->ToVideoPixelFormat());
   EXPECT_EQ(PIXEL_FORMAT_ARGB,
-            Fourcc::FromVAFourCC(VA_FOURCC_BGRA).ToVideoPixelFormat());
+            Fourcc::FromVAFourCC(VA_FOURCC_BGRA)->ToVideoPixelFormat());
   EXPECT_EQ(PIXEL_FORMAT_XRGB,
-            Fourcc::FromVAFourCC(VA_FOURCC_BGRX).ToVideoPixelFormat());
+            Fourcc::FromVAFourCC(VA_FOURCC_BGRX)->ToVideoPixelFormat());
 }
 
 TEST(FourccTest, VideoPixelFormatToVAFourCC) {
   EXPECT_EQ(static_cast<uint32_t>(VA_FOURCC_I420),
-            Fourcc::FromVideoPixelFormat(PIXEL_FORMAT_I420).ToVAFourCC());
+            *Fourcc::FromVideoPixelFormat(PIXEL_FORMAT_I420)->ToVAFourCC());
   EXPECT_EQ(static_cast<uint32_t>(VA_FOURCC_NV12),
-            Fourcc::FromVideoPixelFormat(PIXEL_FORMAT_NV12).ToVAFourCC());
+            *Fourcc::FromVideoPixelFormat(PIXEL_FORMAT_NV12)->ToVAFourCC());
   EXPECT_EQ(static_cast<uint32_t>(VA_FOURCC_NV21),
-            Fourcc::FromVideoPixelFormat(PIXEL_FORMAT_NV21).ToVAFourCC());
+            *Fourcc::FromVideoPixelFormat(PIXEL_FORMAT_NV21)->ToVAFourCC());
   EXPECT_EQ(static_cast<uint32_t>(VA_FOURCC_YV12),
-            Fourcc::FromVideoPixelFormat(PIXEL_FORMAT_YV12).ToVAFourCC());
+            *Fourcc::FromVideoPixelFormat(PIXEL_FORMAT_YV12)->ToVAFourCC());
   EXPECT_EQ(static_cast<uint32_t>(VA_FOURCC_YUY2),
-            Fourcc::FromVideoPixelFormat(PIXEL_FORMAT_YUY2).ToVAFourCC());
+            *Fourcc::FromVideoPixelFormat(PIXEL_FORMAT_YUY2)->ToVAFourCC());
   EXPECT_EQ(static_cast<uint32_t>(VA_FOURCC_RGBA),
-            Fourcc::FromVideoPixelFormat(PIXEL_FORMAT_ABGR).ToVAFourCC());
+            *Fourcc::FromVideoPixelFormat(PIXEL_FORMAT_ABGR)->ToVAFourCC());
   EXPECT_EQ(static_cast<uint32_t>(VA_FOURCC_RGBX),
-            Fourcc::FromVideoPixelFormat(PIXEL_FORMAT_XBGR).ToVAFourCC());
+            *Fourcc::FromVideoPixelFormat(PIXEL_FORMAT_XBGR)->ToVAFourCC());
   EXPECT_EQ(static_cast<uint32_t>(VA_FOURCC_BGRA),
-            Fourcc::FromVideoPixelFormat(PIXEL_FORMAT_ARGB).ToVAFourCC());
+            *Fourcc::FromVideoPixelFormat(PIXEL_FORMAT_ARGB)->ToVAFourCC());
   EXPECT_EQ(static_cast<uint32_t>(VA_FOURCC_BGRX),
-            Fourcc::FromVideoPixelFormat(PIXEL_FORMAT_XRGB).ToVAFourCC());
+            *Fourcc::FromVideoPixelFormat(PIXEL_FORMAT_XRGB)->ToVAFourCC());
 }
 #endif  // BUILDFLAG(USE_VAAPI)
 
diff --git a/media/gpu/chromeos/gpu_buffer_layout.cc b/media/gpu/chromeos/gpu_buffer_layout.cc
index cd6abad..553499b 100644
--- a/media/gpu/chromeos/gpu_buffer_layout.cc
+++ b/media/gpu/chromeos/gpu_buffer_layout.cc
@@ -35,7 +35,7 @@
     const std::vector<ColorPlaneLayout>& planes) {
   // TODO(akahuang): Check planes.size() is equal to the expected value
   // according to |fourcc|.
-  if (!fourcc || size.IsEmpty() || planes.size() == 0) {
+  if (size.IsEmpty() || planes.size() == 0) {
     VLOGF(1) << "Invalid parameters. fourcc: " << fourcc.ToString()
              << ", size: " << size.ToString()
              << ", planes: " << VectorToString(planes);
diff --git a/media/gpu/chromeos/image_processor_factory.cc b/media/gpu/chromeos/image_processor_factory.cc
index 44962288..ca1e596e 100644
--- a/media/gpu/chromeos/image_processor_factory.cc
+++ b/media/gpu/chromeos/image_processor_factory.cc
@@ -52,7 +52,7 @@
     supported_fourccs.push_back(*fourcc);
   }
 
-  const Fourcc output_fourcc = out_format_picker.Run(supported_fourccs);
+  const auto output_fourcc = out_format_picker.Run(supported_fourccs);
   if (!output_fourcc)
     return nullptr;
 
@@ -72,14 +72,14 @@
     gfx::Size output_size(visible_size.width(), visible_size.height());
     size_t num_planes = 0;
     if (!V4L2ImageProcessor::TryOutputFormat(
-            input_fourcc.ToV4L2PixFmt(), output_fourcc.ToV4L2PixFmt(),
+            input_fourcc.ToV4L2PixFmt(), output_fourcc->ToV4L2PixFmt(),
             input_size, &output_size, &num_planes)) {
       VLOGF(2) << "Failed to get output size and plane count of IP";
       continue;
     }
 
     return v4l2_vda_helpers::CreateImageProcessor(
-        input_fourcc, output_fourcc, input_size, output_size, visible_size,
+        input_fourcc, *output_fourcc, input_size, output_size, visible_size,
         num_buffers, V4L2Device::Create(), ImageProcessor::OutputMode::IMPORT,
         std::move(client_task_runner), std::move(error_cb));
   }
diff --git a/media/gpu/chromeos/image_processor_factory.h b/media/gpu/chromeos/image_processor_factory.h
index 0ceb3817..7ab5b4c 100644
--- a/media/gpu/chromeos/image_processor_factory.h
+++ b/media/gpu/chromeos/image_processor_factory.h
@@ -22,7 +22,7 @@
 class MEDIA_GPU_EXPORT ImageProcessorFactory {
  public:
   // Callback to pick a valid format from given |candidates| formats.
-  using PickFormatCB = base::RepeatingCallback<Fourcc(
+  using PickFormatCB = base::RepeatingCallback<base::Optional<Fourcc>(
       const std::vector<Fourcc>& /* candidates */)>;
 
   // Factory method to create ImageProcessor.
diff --git a/media/gpu/chromeos/image_processor_test.cc b/media/gpu/chromeos/image_processor_test.cc
index 80b1231..c43e5ff 100644
--- a/media/gpu/chromeos/image_processor_test.cc
+++ b/media/gpu/chromeos/image_processor_test.cc
@@ -86,9 +86,10 @@
       test::Image* const output_image,
       const std::vector<VideoFrame::StorageType>& output_storage_types) {
     Fourcc input_fourcc =
-        Fourcc::FromVideoPixelFormat(input_image.PixelFormat());
+        *Fourcc::FromVideoPixelFormat(input_image.PixelFormat());
     Fourcc output_fourcc =
-        Fourcc::FromVideoPixelFormat(output_image->PixelFormat());
+        *Fourcc::FromVideoPixelFormat(output_image->PixelFormat());
+
     auto input_layout = test::CreateVideoFrameLayout(input_image.PixelFormat(),
                                                      input_image.Size());
     auto output_layout = test::CreateVideoFrameLayout(
@@ -144,7 +145,6 @@
 
     auto ip_client = test::ImageProcessorClient::Create(
         input_config, output_config, kNumBuffers, std::move(frame_processors));
-    LOG_ASSERT(ip_client) << "Failed to create ImageProcessorClient";
     return ip_client;
   }
 };
@@ -167,6 +167,7 @@
   auto ip_client = CreateImageProcessorClient(
       input_image, {VideoFrame::STORAGE_OWNED_MEMORY}, &output_image,
       {VideoFrame::STORAGE_OWNED_MEMORY});
+  ASSERT_TRUE(ip_client);
 
   ip_client->Process(input_image, output_image);
 
@@ -197,6 +198,7 @@
   auto ip_client = CreateImageProcessorClient(
       input_image, {VideoFrame::STORAGE_DMABUFS}, &output_image,
       {VideoFrame::STORAGE_OWNED_MEMORY});
+  ASSERT_TRUE(ip_client);
 
   ip_client->Process(input_image, output_image);
 
@@ -217,7 +219,7 @@
   auto ip_client =
       CreateImageProcessorClient(input_image, {VideoFrame::STORAGE_DMABUFS},
                                  &output_image, {VideoFrame::STORAGE_DMABUFS});
-
+  ASSERT_TRUE(ip_client);
   ip_client->Process(input_image, output_image);
 
   EXPECT_TRUE(ip_client->WaitUntilNumImageProcessed(1u));
@@ -239,7 +241,7 @@
   auto ip_client = CreateImageProcessorClient(
       input_image, {VideoFrame::STORAGE_GPU_MEMORY_BUFFER}, &output_image,
       {VideoFrame::STORAGE_GPU_MEMORY_BUFFER});
-
+  ASSERT_TRUE(ip_client);
   ip_client->Process(input_image, output_image);
 
   EXPECT_TRUE(ip_client->WaitUntilNumImageProcessed(1u));
diff --git a/media/gpu/chromeos/platform_video_frame_pool_unittest.cc b/media/gpu/chromeos/platform_video_frame_pool_unittest.cc
index 5571c76b..bd7aa3d 100644
--- a/media/gpu/chromeos/platform_video_frame_pool_unittest.cc
+++ b/media/gpu/chromeos/platform_video_frame_pool_unittest.cc
@@ -79,7 +79,8 @@
     scoped_refptr<VideoFrame> frame = pool_->GetFrame();
     frame->set_timestamp(base::TimeDelta::FromMilliseconds(timestamp_ms));
 
-    EXPECT_EQ(layout_->fourcc(), Fourcc::FromVideoPixelFormat(frame->format()));
+    EXPECT_EQ(layout_->fourcc(),
+              *Fourcc::FromVideoPixelFormat(frame->format()));
     EXPECT_EQ(layout_->size(), frame->coded_size());
     EXPECT_EQ(visible_rect_, frame->visible_rect());
     EXPECT_EQ(natural_size_, frame->natural_size());
diff --git a/media/gpu/chromeos/video_decoder_pipeline.cc b/media/gpu/chromeos/video_decoder_pipeline.cc
index a86ce3b..1931032 100644
--- a/media/gpu/chromeos/video_decoder_pipeline.cc
+++ b/media/gpu/chromeos/video_decoder_pipeline.cc
@@ -8,6 +8,7 @@
 
 #include "base/bind.h"
 #include "base/memory/ptr_util.h"
+#include "base/optional.h"
 #include "base/sequenced_task_runner.h"
 #include "base/task/post_task.h"
 #include "base/task/task_traits.h"
@@ -28,7 +29,8 @@
 
 // Pick a compositor renderable format from |candidates|.
 // Return zero if not found.
-Fourcc PickRenderableFourcc(const std::vector<Fourcc>& candidates) {
+base::Optional<Fourcc> PickRenderableFourcc(
+    const std::vector<Fourcc>& candidates) {
   // Hardcode compositor renderable format now.
   // TODO: figure out a way to pick the best one dynamically.
   // Prefer YVU420 and NV12 because ArcGpuVideoDecodeAccelerator only supports
@@ -48,7 +50,7 @@
       return Fourcc(value);
     }
   }
-  return Fourcc();
+  return base::nullopt;
 }
 
 }  //  namespace
@@ -500,7 +502,7 @@
   std::vector<Fourcc> fourccs;
   for (const auto& candidate : candidates)
     fourccs.push_back(candidate.first);
-  const Fourcc renderable_fourcc = PickRenderableFourcc(fourccs);
+  const auto renderable_fourcc = PickRenderableFourcc(fourccs);
   if (renderable_fourcc)
     return renderable_fourcc;
 
diff --git a/media/gpu/v4l2/v4l2_video_encode_accelerator.cc b/media/gpu/v4l2/v4l2_video_encode_accelerator.cc
index ec21bdc..7e9b6a2 100644
--- a/media/gpu/v4l2/v4l2_video_encode_accelerator.cc
+++ b/media/gpu/v4l2/v4l2_video_encode_accelerator.cc
@@ -21,6 +21,7 @@
 #include "base/callback_helpers.h"
 #include "base/command_line.h"
 #include "base/numerics/safe_conversions.h"
+#include "base/optional.h"
 #include "base/single_thread_task_runner.h"
 #include "base/stl_util.h"
 #include "base/task/post_task.h"
@@ -99,14 +100,20 @@
 
 namespace {
 // Convert VideoFrameLayout to ImageProcessor::PortConfig.
-ImageProcessor::PortConfig VideoFrameLayoutToPortConfig(
+base::Optional<ImageProcessor::PortConfig> VideoFrameLayoutToPortConfig(
     const VideoFrameLayout& layout,
     const gfx::Size& visible_size,
     const std::vector<VideoFrame::StorageType>& preferred_storage_types) {
-  return ImageProcessor::PortConfig(
-      Fourcc::FromVideoPixelFormat(layout.format(), !layout.is_multi_planar()),
-      layout.coded_size(), layout.planes(), visible_size,
-      preferred_storage_types);
+  auto fourcc =
+      Fourcc::FromVideoPixelFormat(layout.format(), !layout.is_multi_planar());
+  if (!fourcc) {
+    DVLOGF(1) << "Failed to create Fourcc from video pixel format "
+              << VideoPixelFormatToString(layout.format());
+    return base::nullopt;
+  }
+  return ImageProcessor::PortConfig(*fourcc, layout.coded_size(),
+                                    layout.planes(), visible_size,
+                                    preferred_storage_types);
 }
 }  // namespace
 
@@ -314,12 +321,18 @@
   // However, it doesn't matter VideoFrame::STORAGE_OWNED_MEMORY is specified
   // for |input_storage_type| here, as long as VideoFrame on Process()'s data
   // can be accessed by VideoFrame::data().
+  auto input_config = VideoFrameLayoutToPortConfig(
+      input_layout, visible_size, {VideoFrame::STORAGE_OWNED_MEMORY});
+  if (!input_config)
+    return false;
+  auto output_config = VideoFrameLayoutToPortConfig(
+      output_layout, visible_size,
+      {VideoFrame::STORAGE_DMABUFS, VideoFrame::STORAGE_OWNED_MEMORY});
+  if (!output_config)
+    return false;
+
   image_processor_ = ImageProcessorFactory::Create(
-      VideoFrameLayoutToPortConfig(input_layout, visible_size,
-                                   {VideoFrame::STORAGE_OWNED_MEMORY}),
-      VideoFrameLayoutToPortConfig(
-          output_layout, visible_size,
-          {VideoFrame::STORAGE_DMABUFS, VideoFrame::STORAGE_OWNED_MEMORY}),
+      *input_config, *output_config,
       // Try OutputMode::ALLOCATE first because we want v4l2IP chooses
       // ALLOCATE mode. For libyuvIP, it accepts only IMPORT.
       {ImageProcessor::OutputMode::ALLOCATE,
@@ -580,8 +593,11 @@
       case H264NALU::kIDRSlice:
         // Only inject if we have both headers cached, and enough space for both
         // the headers and the NALU itself.
-        if (cached_sps_.empty() || cached_pps_.empty() ||
-            cached_h264_header_size_ + nalu.size + kH264StartCodeSize >
+        if (cached_sps_.empty() || cached_pps_.empty()) {
+          VLOGF(1) << "Cannot inject IDR slice without SPS and PPS";
+          break;
+        }
+        if (cached_h264_header_size_ + nalu.size + kH264StartCodeSize >
                 remaining_dst_size) {
           VLOGF(1) << "Not enough space to inject a stream header before IDR";
           break;
@@ -1079,7 +1095,7 @@
   size_t num_planes = V4L2Device::GetNumPlanesOfV4L2PixFmt(
       Fourcc::FromVideoPixelFormat(device_input_layout_->format(),
                                    !device_input_layout_->is_multi_planar())
-          .ToV4L2PixFmt());
+          ->ToV4L2PixFmt());
 
   // Create GpuMemoryBufferHandle for native_input_mode.
   gfx::GpuMemoryBufferHandle gmb_handle;
@@ -1361,10 +1377,13 @@
 
   // First see if the device can use the provided format directly.
   std::vector<uint32_t> pix_fmt_candidates;
-  uint32_t pix_fmt =
-      Fourcc::FromVideoPixelFormat(input_format, false).ToV4L2PixFmt();
-  if (pix_fmt)
-    pix_fmt_candidates.push_back(pix_fmt);
+  auto input_fourcc = Fourcc::FromVideoPixelFormat(input_format, false);
+  if (!input_fourcc) {
+    DVLOGF(2) << "Invalid input format "
+              << VideoPixelFormatToString(input_format);
+    return false;
+  }
+  pix_fmt_candidates.push_back(input_fourcc->ToV4L2PixFmt());
   // Second try preferred input formats for both single-planar and
   // multi-planar.
   for (auto preferred_format :
diff --git a/media/gpu/vaapi/BUILD.gn b/media/gpu/vaapi/BUILD.gn
index 3c2abbf..c2968fb4 100644
--- a/media/gpu/vaapi/BUILD.gn
+++ b/media/gpu/vaapi/BUILD.gn
@@ -35,14 +35,14 @@
     "accelerated_video_encoder.h",
     "h264_encoder.cc",
     "h264_encoder.h",
+    "h264_vaapi_video_decoder_delegate.cc",
+    "h264_vaapi_video_decoder_delegate.h",
     "va_surface.cc",
     "va_surface.h",
     "vaapi_common.cc",
     "vaapi_common.h",
     "vaapi_dmabuf_video_frame_mapper.cc",
     "vaapi_dmabuf_video_frame_mapper.h",
-    "vaapi_h264_accelerator.cc",
-    "vaapi_h264_accelerator.h",
     "vaapi_image_decode_accelerator_worker.cc",
     "vaapi_image_decode_accelerator_worker.h",
     "vaapi_image_decoder.cc",
@@ -63,20 +63,22 @@
     "vaapi_video_decode_accelerator.h",
     "vaapi_video_decoder.cc",
     "vaapi_video_decoder.h",
+    "vaapi_video_decoder_delegate.cc",
+    "vaapi_video_decoder_delegate.h",
     "vaapi_video_encode_accelerator.cc",
     "vaapi_video_encode_accelerator.h",
-    "vaapi_vp8_accelerator.cc",
-    "vaapi_vp8_accelerator.h",
-    "vaapi_vp9_accelerator.cc",
-    "vaapi_vp9_accelerator.h",
     "vaapi_webp_decoder.cc",
     "vaapi_webp_decoder.h",
     "vaapi_wrapper.cc",
     "vaapi_wrapper.h",
     "vp8_encoder.cc",
     "vp8_encoder.h",
+    "vp8_vaapi_video_decoder_delegate.cc",
+    "vp8_vaapi_video_decoder_delegate.h",
     "vp9_encoder.cc",
     "vp9_encoder.h",
+    "vp9_vaapi_video_decoder_delegate.cc",
+    "vp9_vaapi_video_decoder_delegate.h",
   ]
 
   configs += [
diff --git a/media/gpu/vaapi/vaapi_h264_accelerator.cc b/media/gpu/vaapi/h264_vaapi_video_decoder_delegate.cc
similarity index 90%
rename from media/gpu/vaapi/vaapi_h264_accelerator.cc
rename to media/gpu/vaapi/h264_vaapi_video_decoder_delegate.cc
index bab7411..49c53d2 100644
--- a/media/gpu/vaapi/vaapi_h264_accelerator.cc
+++ b/media/gpu/vaapi/h264_vaapi_video_decoder_delegate.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 "media/gpu/vaapi/vaapi_h264_accelerator.h"
+#include "media/gpu/vaapi/h264_vaapi_video_decoder_delegate.h"
 
 #include <va/va.h>
 
@@ -35,21 +35,14 @@
 
 }  // namespace
 
-VaapiH264Accelerator::VaapiH264Accelerator(
-    DecodeSurfaceHandler<VASurface>* vaapi_dec,
+H264VaapiVideoDecoderDelegate::H264VaapiVideoDecoderDelegate(
+    DecodeSurfaceHandler<VASurface>* const vaapi_dec,
     scoped_refptr<VaapiWrapper> vaapi_wrapper)
-    : vaapi_wrapper_(vaapi_wrapper), vaapi_dec_(vaapi_dec) {
-  DCHECK(vaapi_wrapper_);
-  DCHECK(vaapi_dec_);
-  DETACH_FROM_SEQUENCE(sequence_checker_);
-}
+    : VaapiVideoDecoderDelegate(vaapi_dec, std::move(vaapi_wrapper)) {}
 
-VaapiH264Accelerator::~VaapiH264Accelerator() {
-  // TODO(mcasas): consider enabling the checker, https://crbug.com/789160
-  // DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-}
+H264VaapiVideoDecoderDelegate::~H264VaapiVideoDecoderDelegate() = default;
 
-scoped_refptr<H264Picture> VaapiH264Accelerator::CreateH264Picture() {
+scoped_refptr<H264Picture> H264VaapiVideoDecoderDelegate::CreateH264Picture() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   const auto va_surface = vaapi_dec_->CreateSurface();
   if (!va_surface)
@@ -65,7 +58,7 @@
   va_pic->flags = VA_PICTURE_H264_INVALID;
 }
 
-Status VaapiH264Accelerator::SubmitFrameMetadata(
+Status H264VaapiVideoDecoderDelegate::SubmitFrameMetadata(
     const H264SPS* sps,
     const H264PPS* pps,
     const H264DPB& dpb,
@@ -180,7 +173,7 @@
              : Status::kFail;
 }
 
-Status VaapiH264Accelerator::SubmitSlice(
+Status H264VaapiVideoDecoderDelegate::SubmitSlice(
     const H264PPS* pps,
     const H264SliceHeader* slice_hdr,
     const H264Picture::Vector& ref_pic_list0,
@@ -286,7 +279,8 @@
              : Status::kFail;
 }
 
-Status VaapiH264Accelerator::SubmitDecode(scoped_refptr<H264Picture> pic) {
+Status H264VaapiVideoDecoderDelegate::SubmitDecode(
+    scoped_refptr<H264Picture> pic) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 
   const bool success = vaapi_wrapper_->ExecuteAndDestroyPendingBuffers(
@@ -294,7 +288,8 @@
   return success ? Status::kOk : Status::kFail;
 }
 
-bool VaapiH264Accelerator::OutputPicture(scoped_refptr<H264Picture> pic) {
+bool H264VaapiVideoDecoderDelegate::OutputPicture(
+    scoped_refptr<H264Picture> pic) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 
   const VaapiH264Picture* vaapi_pic = pic->AsVaapiH264Picture();
@@ -304,13 +299,14 @@
   return true;
 }
 
-void VaapiH264Accelerator::Reset() {
+void H264VaapiVideoDecoderDelegate::Reset() {
   DETACH_FROM_SEQUENCE(sequence_checker_);
   vaapi_wrapper_->DestroyPendingBuffers();
 }
 
-void VaapiH264Accelerator::FillVAPicture(VAPictureH264* va_pic,
-                                         scoped_refptr<H264Picture> pic) {
+void H264VaapiVideoDecoderDelegate::FillVAPicture(
+    VAPictureH264* va_pic,
+    scoped_refptr<H264Picture> pic) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   VASurfaceID va_surface_id = VA_INVALID_SURFACE;
 
@@ -341,9 +337,10 @@
   va_pic->BottomFieldOrderCnt = pic->bottom_field_order_cnt;
 }
 
-int VaapiH264Accelerator::FillVARefFramesFromDPB(const H264DPB& dpb,
-                                                 VAPictureH264* va_pics,
-                                                 int num_pics) {
+int H264VaapiVideoDecoderDelegate::FillVARefFramesFromDPB(
+    const H264DPB& dpb,
+    VAPictureH264* va_pics,
+    int num_pics) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   H264Picture::Vector::const_reverse_iterator rit;
   int i;
diff --git a/media/gpu/vaapi/vaapi_h264_accelerator.h b/media/gpu/vaapi/h264_vaapi_video_decoder_delegate.h
similarity index 70%
rename from media/gpu/vaapi/vaapi_h264_accelerator.h
rename to media/gpu/vaapi/h264_vaapi_video_decoder_delegate.h
index f817558e..d196678b 100644
--- a/media/gpu/vaapi/vaapi_h264_accelerator.h
+++ b/media/gpu/vaapi/h264_vaapi_video_decoder_delegate.h
@@ -2,28 +2,28 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef MEDIA_GPU_VAAPI_VAAPI_H264_ACCELERATOR_H_
-#define MEDIA_GPU_VAAPI_VAAPI_H264_ACCELERATOR_H_
+#ifndef MEDIA_GPU_VAAPI_H264_VAAPI_VIDEO_DECODER_DELEGATE_H_
+#define MEDIA_GPU_VAAPI_H264_VAAPI_VIDEO_DECODER_DELEGATE_H_
 
+#include "base/memory/scoped_refptr.h"
 #include "base/sequence_checker.h"
-#include "media/filters/vp9_parser.h"
 #include "media/gpu/h264_decoder.h"
+#include "media/gpu/vaapi/vaapi_video_decoder_delegate.h"
+#include "media/video/h264_parser.h"
 
 // Verbatim from va/va.h, where typedef is used.
 typedef struct _VAPictureH264 VAPictureH264;
 
 namespace media {
 
-template <class T> class DecodeSurfaceHandler;
 class H264Picture;
-class VASurface;
-class VaapiWrapper;
 
-class VaapiH264Accelerator : public H264Decoder::H264Accelerator {
+class H264VaapiVideoDecoderDelegate : public H264Decoder::H264Accelerator,
+                                      public VaapiVideoDecoderDelegate {
  public:
-  VaapiH264Accelerator(DecodeSurfaceHandler<VASurface>* vaapi_dec,
-                       const scoped_refptr<VaapiWrapper> vaapi_wrapper);
-  ~VaapiH264Accelerator() override;
+  H264VaapiVideoDecoderDelegate(DecodeSurfaceHandler<VASurface>* vaapi_dec,
+                                scoped_refptr<VaapiWrapper> vaapi_wrapper);
+  ~H264VaapiVideoDecoderDelegate() override;
 
   // H264Decoder::H264Accelerator implementation.
   scoped_refptr<H264Picture> CreateH264Picture() override;
@@ -52,14 +52,9 @@
                              VAPictureH264* va_pics,
                              int num_pics);
 
-  const scoped_refptr<VaapiWrapper> vaapi_wrapper_;
-  DecodeSurfaceHandler<VASurface>* vaapi_dec_;
-
-  SEQUENCE_CHECKER(sequence_checker_);
-
-  DISALLOW_COPY_AND_ASSIGN(VaapiH264Accelerator);
+  DISALLOW_COPY_AND_ASSIGN(H264VaapiVideoDecoderDelegate);
 };
 
 }  // namespace media
 
-#endif  // MEDIA_GPU_VAAPI_VAAPI_H264_ACCELERATOR_H_
+#endif  // MEDIA_GPU_VAAPI_H264_VAAPI_VIDEO_DECODER_DELEGATE_H_
diff --git a/media/gpu/vaapi/vaapi_image_processor.cc b/media/gpu/vaapi/vaapi_image_processor.cc
index 02305e0..f95707a 100644
--- a/media/gpu/vaapi/vaapi_image_processor.cc
+++ b/media/gpu/vaapi/vaapi_image_processor.cc
@@ -107,8 +107,21 @@
   return nullptr;
 #endif
 
-  if (!IsSupported(input_config.fourcc.ToVAFourCC(),
-                   output_config.fourcc.ToVAFourCC(), input_config.size,
+  auto input_vafourcc = input_config.fourcc.ToVAFourCC();
+  if (!input_vafourcc) {
+    VLOGF(2) << "Input fourcc " << input_config.fourcc.ToString()
+             << " not compatible with VAAPI.";
+    return nullptr;
+  }
+
+  auto output_vafourcc = output_config.fourcc.ToVAFourCC();
+  if (!output_vafourcc) {
+    VLOGF(2) << "Output fourcc " << output_config.fourcc.ToString()
+             << " not compatible with VAAPI.";
+    return nullptr;
+  }
+
+  if (!IsSupported(*input_vafourcc, *output_vafourcc, input_config.size,
                    output_config.size)) {
     return nullptr;
   }
diff --git a/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc b/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc
index a01a28b4..69000815 100644
--- a/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc
+++ b/media/gpu/vaapi/vaapi_mjpeg_decode_accelerator.cc
@@ -465,9 +465,16 @@
   // For DMA-buf backed |dst_frame|, we will import it as a VA surface and use
   // VPP to convert the decoded |surface| into it, if the formats and sizes are
   // supported.
-  const uint32_t video_frame_va_fourcc =
-      Fourcc::FromVideoPixelFormat(dst_frame->format()).ToVAFourCC();
-  if (video_frame_va_fourcc == kInvalidVaFourcc) {
+  const auto video_frame_fourcc =
+      Fourcc::FromVideoPixelFormat(dst_frame->format());
+  if (!video_frame_fourcc) {
+    VLOGF(1) << "Unsupported video frame format: " << dst_frame->format();
+    NotifyError(task_id, PLATFORM_FAILURE);
+    return;
+  }
+
+  const auto video_frame_va_fourcc = video_frame_fourcc->ToVAFourCC();
+  if (!video_frame_va_fourcc) {
     VLOGF(1) << "Unsupported video frame format: " << dst_frame->format();
     NotifyError(task_id, PLATFORM_FAILURE);
     return;
@@ -477,7 +484,7 @@
   if (dst_frame->HasDmaBufs() &&
       VaapiWrapper::IsVppResolutionAllowed(surface->size()) &&
       VaapiWrapper::IsVppSupportedForJpegDecodedSurfaceToFourCC(
-          surface->format(), video_frame_va_fourcc)) {
+          surface->format(), *video_frame_va_fourcc)) {
     if (!OutputPictureVppOnTaskRunner(surface, task_id, std::move(dst_frame))) {
       VLOGF(1) << "Output picture using VPP failed";
       NotifyError(task_id, PLATFORM_FAILURE);
@@ -490,7 +497,7 @@
   // 2. VPP doesn't support the format conversion. This is intended for AMD
   //    VAAPI driver whose VPP only supports converting decoded 4:2:0 JPEGs.
   std::unique_ptr<ScopedVAImage> image =
-      decoder_.GetImage(video_frame_va_fourcc, &status);
+      decoder_.GetImage(*video_frame_va_fourcc, &status);
   if (status != VaapiImageDecodeStatus::kSuccess) {
     NotifyError(task_id, VaapiJpegDecodeStatusToError(status));
     return;
diff --git a/media/gpu/vaapi/vaapi_utils.h b/media/gpu/vaapi/vaapi_utils.h
index e3742db0..8fc4eef 100644
--- a/media/gpu/vaapi/vaapi_utils.h
+++ b/media/gpu/vaapi/vaapi_utils.h
@@ -29,8 +29,6 @@
 struct VAContextAndScopedVASurfaceDeleter;
 struct Vp8FrameHeader;
 
-constexpr uint32_t kInvalidVaFourcc = 0u;
-
 // Class to map a given VABuffer, identified by |buffer_id|, for its lifetime.
 // This class must operate under |lock_| acquired.
 class ScopedVABufferMapping {
diff --git a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
index 31343cd..68f163a 100644
--- a/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
+++ b/media/gpu/vaapi/vaapi_video_decode_accelerator.cc
@@ -30,11 +30,11 @@
 #include "media/gpu/accelerated_video_decoder.h"
 #include "media/gpu/h264_decoder.h"
 #include "media/gpu/macros.h"
+#include "media/gpu/vaapi/h264_vaapi_video_decoder_delegate.h"
 #include "media/gpu/vaapi/vaapi_common.h"
-#include "media/gpu/vaapi/vaapi_h264_accelerator.h"
 #include "media/gpu/vaapi/vaapi_picture.h"
-#include "media/gpu/vaapi/vaapi_vp8_accelerator.h"
-#include "media/gpu/vaapi/vaapi_vp9_accelerator.h"
+#include "media/gpu/vaapi/vp8_vaapi_video_decoder_delegate.h"
+#include "media/gpu/vaapi/vp9_vaapi_video_decoder_delegate.h"
 #include "media/gpu/vp8_decoder.h"
 #include "media/gpu/vp9_decoder.h"
 #include "media/video/picture.h"
@@ -201,15 +201,15 @@
 
   if (profile >= H264PROFILE_MIN && profile <= H264PROFILE_MAX) {
     decoder_.reset(new H264Decoder(
-        std::make_unique<VaapiH264Accelerator>(this, vaapi_wrapper_), profile,
-        config.container_color_space));
+        std::make_unique<H264VaapiVideoDecoderDelegate>(this, vaapi_wrapper_),
+        profile, config.container_color_space));
   } else if (profile >= VP8PROFILE_MIN && profile <= VP8PROFILE_MAX) {
     decoder_.reset(new VP8Decoder(
-        std::make_unique<VaapiVP8Accelerator>(this, vaapi_wrapper_)));
+        std::make_unique<VP8VaapiVideoDecoderDelegate>(this, vaapi_wrapper_)));
   } else if (profile >= VP9PROFILE_MIN && profile <= VP9PROFILE_MAX) {
     decoder_.reset(new VP9Decoder(
-        std::make_unique<VaapiVP9Accelerator>(this, vaapi_wrapper_), profile,
-        config.container_color_space));
+        std::make_unique<VP9VaapiVideoDecoderDelegate>(this, vaapi_wrapper_),
+        profile, config.container_color_space));
   } else {
     VLOGF(1) << "Unsupported profile " << GetProfileName(profile);
     return false;
diff --git a/media/gpu/vaapi/vaapi_video_decoder.cc b/media/gpu/vaapi/vaapi_video_decoder.cc
index 3d3af09..87a1d3c 100644
--- a/media/gpu/vaapi/vaapi_video_decoder.cc
+++ b/media/gpu/vaapi/vaapi_video_decoder.cc
@@ -17,11 +17,11 @@
 #include "media/gpu/chromeos/dmabuf_video_frame_pool.h"
 #include "media/gpu/gpu_video_decode_accelerator_helpers.h"
 #include "media/gpu/macros.h"
+#include "media/gpu/vaapi/h264_vaapi_video_decoder_delegate.h"
 #include "media/gpu/vaapi/va_surface.h"
-#include "media/gpu/vaapi/vaapi_h264_accelerator.h"
-#include "media/gpu/vaapi/vaapi_vp8_accelerator.h"
-#include "media/gpu/vaapi/vaapi_vp9_accelerator.h"
 #include "media/gpu/vaapi/vaapi_wrapper.h"
+#include "media/gpu/vaapi/vp8_vaapi_video_decoder_delegate.h"
+#include "media/gpu/vaapi/vp9_vaapi_video_decoder_delegate.h"
 
 namespace media {
 
@@ -405,8 +405,10 @@
   const base::Optional<VideoPixelFormat> format =
       GfxBufferFormatToVideoPixelFormat(GetBufferFormat());
   CHECK(format);
-  frame_pool_->RequestFrames(Fourcc::FromVideoPixelFormat(*format), pic_size_,
-                             visible_rect, natural_size,
+  auto format_fourcc = Fourcc::FromVideoPixelFormat(*format);
+  CHECK(format_fourcc);
+  frame_pool_->RequestFrames(*format_fourcc, pic_size_, visible_rect,
+                             natural_size,
                              decoder_->GetRequiredNumOfPictures());
 
   // All pending decode operations will be completed before triggering a
@@ -525,15 +527,15 @@
 
   if (profile_ >= H264PROFILE_MIN && profile_ <= H264PROFILE_MAX) {
     decoder_.reset(new H264Decoder(
-        std::make_unique<VaapiH264Accelerator>(this, vaapi_wrapper_), profile_,
-        color_space_));
+        std::make_unique<H264VaapiVideoDecoderDelegate>(this, vaapi_wrapper_),
+        profile_, color_space_));
   } else if (profile_ >= VP8PROFILE_MIN && profile_ <= VP8PROFILE_MAX) {
     decoder_.reset(new VP8Decoder(
-        std::make_unique<VaapiVP8Accelerator>(this, vaapi_wrapper_)));
+        std::make_unique<VP8VaapiVideoDecoderDelegate>(this, vaapi_wrapper_)));
   } else if (profile_ >= VP9PROFILE_MIN && profile_ <= VP9PROFILE_MAX) {
     decoder_.reset(new VP9Decoder(
-        std::make_unique<VaapiVP9Accelerator>(this, vaapi_wrapper_), profile_,
-        color_space_));
+        std::make_unique<VP9VaapiVideoDecoderDelegate>(this, vaapi_wrapper_),
+        profile_, color_space_));
   } else {
     VLOGF(1) << "Unsupported profile " << GetProfileName(profile_);
     return false;
diff --git a/media/gpu/vaapi/vaapi_video_decoder_delegate.cc b/media/gpu/vaapi/vaapi_video_decoder_delegate.cc
new file mode 100644
index 0000000..df101be
--- /dev/null
+++ b/media/gpu/vaapi/vaapi_video_decoder_delegate.cc
@@ -0,0 +1,27 @@
+// 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 "media/gpu/vaapi/vaapi_video_decoder_delegate.h"
+
+#include "media/gpu/decode_surface_handler.h"
+#include "media/gpu/vaapi/va_surface.h"
+#include "media/gpu/vaapi/vaapi_wrapper.h"
+
+namespace media {
+
+VaapiVideoDecoderDelegate::VaapiVideoDecoderDelegate(
+    DecodeSurfaceHandler<VASurface>* const vaapi_dec,
+    scoped_refptr<VaapiWrapper> vaapi_wrapper)
+    : vaapi_dec_(vaapi_dec), vaapi_wrapper_(std::move(vaapi_wrapper)) {
+  DCHECK(vaapi_wrapper_);
+  DCHECK(vaapi_dec_);
+  DETACH_FROM_SEQUENCE(sequence_checker_);
+}
+
+VaapiVideoDecoderDelegate::~VaapiVideoDecoderDelegate() {
+  // TODO(mcasas): consider enabling the checker, https://crbug.com/789160
+  // DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+}
+
+}  // namespace media
diff --git a/media/gpu/vaapi/vaapi_video_decoder_delegate.h b/media/gpu/vaapi/vaapi_video_decoder_delegate.h
new file mode 100644
index 0000000..71b1fd6
--- /dev/null
+++ b/media/gpu/vaapi/vaapi_video_decoder_delegate.h
@@ -0,0 +1,39 @@
+// 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 MEDIA_GPU_VAAPI_VAAPI_VIDEO_DECODER_DELEGATE_H_
+#define MEDIA_GPU_VAAPI_VAAPI_VIDEO_DECODER_DELEGATE_H_
+
+#include "base/memory/scoped_refptr.h"
+#include "base/sequence_checker.h"
+
+namespace media {
+
+template <class T>
+class DecodeSurfaceHandler;
+class VaapiWrapper;
+class VASurface;
+
+// The common part of each AcceleratedVideoDecoder's Accelerator for VA-API.
+class VaapiVideoDecoderDelegate {
+ public:
+  VaapiVideoDecoderDelegate(DecodeSurfaceHandler<VASurface>* const vaapi_dec,
+                            scoped_refptr<VaapiWrapper> vaapi_wrapper);
+  virtual ~VaapiVideoDecoderDelegate();
+
+  VaapiVideoDecoderDelegate(const VaapiVideoDecoderDelegate&) = delete;
+  VaapiVideoDecoderDelegate& operator=(const VaapiVideoDecoderDelegate&) =
+      delete;
+
+ protected:
+  // Both owned by caller.
+  DecodeSurfaceHandler<VASurface>* const vaapi_dec_;
+  const scoped_refptr<VaapiWrapper> vaapi_wrapper_;
+
+  SEQUENCE_CHECKER(sequence_checker_);
+};
+
+}  // namespace media
+
+#endif  // MEDIA_GPU_VAAPI_VAAPI_VIDEO_DECODER_DELEGATE_H_
diff --git a/media/gpu/vaapi/vaapi_vp8_accelerator.h b/media/gpu/vaapi/vaapi_vp8_accelerator.h
deleted file mode 100644
index a3bb9f0..0000000
--- a/media/gpu/vaapi/vaapi_vp8_accelerator.h
+++ /dev/null
@@ -1,42 +0,0 @@
-// 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.
-
-#ifndef MEDIA_GPU_VAAPI_VAAPI_VP8_ACCELERATOR_H_
-#define MEDIA_GPU_VAAPI_VAAPI_VP8_ACCELERATOR_H_
-
-#include "base/sequence_checker.h"
-#include "media/gpu/vp8_decoder.h"
-#include "media/parsers/vp8_parser.h"
-
-namespace media {
-
-template <class T> class DecodeSurfaceHandler;
-class VASurface;
-class VP8Picture;
-class VaapiWrapper;
-
-class VaapiVP8Accelerator : public VP8Decoder::VP8Accelerator {
- public:
-  VaapiVP8Accelerator(DecodeSurfaceHandler<VASurface>* vaapi_dec,
-                      scoped_refptr<VaapiWrapper> vaapi_wrapper);
-  ~VaapiVP8Accelerator() override;
-
-  // VP8Decoder::VP8Accelerator implementation.
-  scoped_refptr<VP8Picture> CreateVP8Picture() override;
-  bool SubmitDecode(scoped_refptr<VP8Picture> picture,
-                    const Vp8ReferenceFrameVector& reference_frames) override;
-  bool OutputPicture(const scoped_refptr<VP8Picture>& pic) override;
-
- private:
-  const scoped_refptr<VaapiWrapper> vaapi_wrapper_;
-  DecodeSurfaceHandler<VASurface>* vaapi_dec_;
-
-  SEQUENCE_CHECKER(sequence_checker_);
-
-  DISALLOW_COPY_AND_ASSIGN(VaapiVP8Accelerator);
-};
-
-}  // namespace media
-
-#endif  // MEDIA_GPU_VAAPI_VAAPI_VP8_ACCELERATOR_H_
diff --git a/media/gpu/vaapi/vaapi_vp9_accelerator.h b/media/gpu/vaapi/vaapi_vp9_accelerator.h
deleted file mode 100644
index b7e553cb..0000000
--- a/media/gpu/vaapi/vaapi_vp9_accelerator.h
+++ /dev/null
@@ -1,49 +0,0 @@
-// 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.
-
-#ifndef MEDIA_GPU_VAAPI_VAAPI_VP9_ACCELERATOR_H_
-#define MEDIA_GPU_VAAPI_VAAPI_VP9_ACCELERATOR_H_
-
-#include "base/sequence_checker.h"
-#include "media/filters/vp9_parser.h"
-#include "media/gpu/vp9_decoder.h"
-
-namespace media {
-
-template <class T> class DecodeSurfaceHandler;
-class VASurface;
-class VP9Picture;
-class VaapiWrapper;
-
-class VaapiVP9Accelerator : public VP9Decoder::VP9Accelerator {
- public:
-  VaapiVP9Accelerator(DecodeSurfaceHandler<VASurface>* vaapi_dec,
-                      scoped_refptr<VaapiWrapper> vaapi_wrapper);
-  ~VaapiVP9Accelerator() override;
-
-  // VP9Decoder::VP9Accelerator implementation.
-  scoped_refptr<VP9Picture> CreateVP9Picture() override;
-  bool SubmitDecode(scoped_refptr<VP9Picture> pic,
-                    const Vp9SegmentationParams& seg,
-                    const Vp9LoopFilterParams& lf,
-                    const Vp9ReferenceFrameVector& reference_frames,
-                    const base::Closure& done_cb) override;
-
-  bool OutputPicture(scoped_refptr<VP9Picture> pic) override;
-  bool IsFrameContextRequired() const override;
-  bool GetFrameContext(scoped_refptr<VP9Picture> pic,
-                       Vp9FrameContext* frame_ctx) override;
-
- private:
-  const scoped_refptr<VaapiWrapper> vaapi_wrapper_;
-  DecodeSurfaceHandler<VASurface>* vaapi_dec_;
-
-  SEQUENCE_CHECKER(sequence_checker_);
-
-  DISALLOW_COPY_AND_ASSIGN(VaapiVP9Accelerator);
-};
-
-}  // namespace media
-
-#endif  // MEDIA_GPU_VAAPI_VAAPI_VP9_ACCELERATOR_H_
diff --git a/media/gpu/vaapi/vaapi_vp8_accelerator.cc b/media/gpu/vaapi/vp8_vaapi_video_decoder_delegate.cc
similarity index 67%
rename from media/gpu/vaapi/vaapi_vp8_accelerator.cc
rename to media/gpu/vaapi/vp8_vaapi_video_decoder_delegate.cc
index 0a8780b2..640f2165 100644
--- a/media/gpu/vaapi/vaapi_vp8_accelerator.cc
+++ b/media/gpu/vaapi/vp8_vaapi_video_decoder_delegate.cc
@@ -2,30 +2,24 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "media/gpu/vaapi/vaapi_vp8_accelerator.h"
+#include "media/gpu/vaapi/vp8_vaapi_video_decoder_delegate.h"
 
 #include "media/gpu/decode_surface_handler.h"
+#include "media/gpu/vaapi/va_surface.h"
 #include "media/gpu/vaapi/vaapi_common.h"
 #include "media/gpu/vaapi/vaapi_utils.h"
 #include "media/gpu/vaapi/vaapi_wrapper.h"
 
 namespace media {
 
-VaapiVP8Accelerator::VaapiVP8Accelerator(
-    DecodeSurfaceHandler<VASurface>* vaapi_dec,
+VP8VaapiVideoDecoderDelegate::VP8VaapiVideoDecoderDelegate(
+    DecodeSurfaceHandler<VASurface>* const vaapi_dec,
     scoped_refptr<VaapiWrapper> vaapi_wrapper)
-    : vaapi_wrapper_(vaapi_wrapper), vaapi_dec_(vaapi_dec) {
-  DCHECK(vaapi_wrapper_);
-  DCHECK(vaapi_dec_);
-  DETACH_FROM_SEQUENCE(sequence_checker_);
-}
+    : VaapiVideoDecoderDelegate(vaapi_dec, std::move(vaapi_wrapper)) {}
 
-VaapiVP8Accelerator::~VaapiVP8Accelerator() {
-  // TODO(mcasas): consider enabling the checker, https://crbug.com/789160
-  // DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-}
+VP8VaapiVideoDecoderDelegate::~VP8VaapiVideoDecoderDelegate() = default;
 
-scoped_refptr<VP8Picture> VaapiVP8Accelerator::CreateVP8Picture() {
+scoped_refptr<VP8Picture> VP8VaapiVideoDecoderDelegate::CreateVP8Picture() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   const auto va_surface = vaapi_dec_->CreateSurface();
   if (!va_surface)
@@ -34,7 +28,7 @@
   return new VaapiVP8Picture(std::move(va_surface));
 }
 
-bool VaapiVP8Accelerator::SubmitDecode(
+bool VP8VaapiVideoDecoderDelegate::SubmitDecode(
     scoped_refptr<VP8Picture> pic,
     const Vp8ReferenceFrameVector& reference_frames) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
@@ -49,7 +43,8 @@
   return vaapi_wrapper_->ExecuteAndDestroyPendingBuffers(va_surface_id);
 }
 
-bool VaapiVP8Accelerator::OutputPicture(const scoped_refptr<VP8Picture>& pic) {
+bool VP8VaapiVideoDecoderDelegate::OutputPicture(
+    const scoped_refptr<VP8Picture>& pic) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 
   const VaapiVP8Picture* vaapi_pic = pic->AsVaapiVP8Picture();
diff --git a/media/gpu/vaapi/vp8_vaapi_video_decoder_delegate.h b/media/gpu/vaapi/vp8_vaapi_video_decoder_delegate.h
new file mode 100644
index 0000000..8de977c
--- /dev/null
+++ b/media/gpu/vaapi/vp8_vaapi_video_decoder_delegate.h
@@ -0,0 +1,37 @@
+// 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.
+
+#ifndef MEDIA_GPU_VAAPI_VP8_VAAPI_VIDEO_DECODER_DELEGATE_H_
+#define MEDIA_GPU_VAAPI_VP8_VAAPI_VIDEO_DECODER_DELEGATE_H_
+
+#include "base/memory/scoped_refptr.h"
+#include "base/sequence_checker.h"
+#include "media/gpu/vaapi/vaapi_video_decoder_delegate.h"
+#include "media/gpu/vp8_decoder.h"
+#include "media/parsers/vp8_parser.h"
+
+namespace media {
+
+class VP8Picture;
+
+class VP8VaapiVideoDecoderDelegate : public VP8Decoder::VP8Accelerator,
+                                     public VaapiVideoDecoderDelegate {
+ public:
+  VP8VaapiVideoDecoderDelegate(DecodeSurfaceHandler<VASurface>* const vaapi_dec,
+                               scoped_refptr<VaapiWrapper> vaapi_wrapper);
+
+  ~VP8VaapiVideoDecoderDelegate() override;
+
+  // VP8Decoder::VP8Accelerator implementation.
+  scoped_refptr<VP8Picture> CreateVP8Picture() override;
+  bool SubmitDecode(scoped_refptr<VP8Picture> picture,
+                    const Vp8ReferenceFrameVector& reference_frames) override;
+  bool OutputPicture(const scoped_refptr<VP8Picture>& pic) override;
+
+  DISALLOW_COPY_AND_ASSIGN(VP8VaapiVideoDecoderDelegate);
+};
+
+}  // namespace media
+
+#endif  // MEDIA_GPU_VAAPI_VP8_VAAPI_VIDEO_DECODER_DELEGATE_H_
diff --git a/media/gpu/vaapi/vaapi_vp9_accelerator.cc b/media/gpu/vaapi/vp9_vaapi_video_decoder_delegate.cc
similarity index 87%
rename from media/gpu/vaapi/vaapi_vp9_accelerator.cc
rename to media/gpu/vaapi/vp9_vaapi_video_decoder_delegate.cc
index 9896fb23..b976789 100644
--- a/media/gpu/vaapi/vaapi_vp9_accelerator.cc
+++ b/media/gpu/vaapi/vp9_vaapi_video_decoder_delegate.cc
@@ -2,34 +2,27 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "media/gpu/vaapi/vaapi_vp9_accelerator.h"
+#include "media/gpu/vaapi/vp9_vaapi_video_decoder_delegate.h"
 
 #include <type_traits>
 
 #include "base/stl_util.h"
 #include "media/gpu/decode_surface_handler.h"
 #include "media/gpu/macros.h"
+#include "media/gpu/vaapi/va_surface.h"
 #include "media/gpu/vaapi/vaapi_common.h"
 #include "media/gpu/vaapi/vaapi_wrapper.h"
-#include "media/gpu/vp9_picture.h"
 
 namespace media {
 
-VaapiVP9Accelerator::VaapiVP9Accelerator(
-    DecodeSurfaceHandler<VASurface>* vaapi_dec,
+VP9VaapiVideoDecoderDelegate::VP9VaapiVideoDecoderDelegate(
+    DecodeSurfaceHandler<VASurface>* const vaapi_dec,
     scoped_refptr<VaapiWrapper> vaapi_wrapper)
-    : vaapi_wrapper_(vaapi_wrapper), vaapi_dec_(vaapi_dec) {
-  DCHECK(vaapi_wrapper_);
-  DCHECK(vaapi_dec_);
-  DETACH_FROM_SEQUENCE(sequence_checker_);
-}
+    : VaapiVideoDecoderDelegate(vaapi_dec, std::move(vaapi_wrapper)) {}
 
-VaapiVP9Accelerator::~VaapiVP9Accelerator() {
-  // TODO(mcasas): consider enabling the checker, https://crbug.com/789160
-  // CHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-}
+VP9VaapiVideoDecoderDelegate::~VP9VaapiVideoDecoderDelegate() = default;
 
-scoped_refptr<VP9Picture> VaapiVP9Accelerator::CreateVP9Picture() {
+scoped_refptr<VP9Picture> VP9VaapiVideoDecoderDelegate::CreateVP9Picture() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   const auto va_surface = vaapi_dec_->CreateSurface();
   if (!va_surface)
@@ -38,7 +31,7 @@
   return new VaapiVP9Picture(std::move(va_surface));
 }
 
-bool VaapiVP9Accelerator::SubmitDecode(
+bool VP9VaapiVideoDecoderDelegate::SubmitDecode(
     scoped_refptr<VP9Picture> pic,
     const Vp9SegmentationParams& seg,
     const Vp9LoopFilterParams& lf,
@@ -157,7 +150,8 @@
       pic->AsVaapiVP9Picture()->va_surface()->id());
 }
 
-bool VaapiVP9Accelerator::OutputPicture(scoped_refptr<VP9Picture> pic) {
+bool VP9VaapiVideoDecoderDelegate::OutputPicture(
+    scoped_refptr<VP9Picture> pic) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 
   const VaapiVP9Picture* vaapi_pic = pic->AsVaapiVP9Picture();
@@ -167,12 +161,13 @@
   return true;
 }
 
-bool VaapiVP9Accelerator::IsFrameContextRequired() const {
+bool VP9VaapiVideoDecoderDelegate::IsFrameContextRequired() const {
   return false;
 }
 
-bool VaapiVP9Accelerator::GetFrameContext(scoped_refptr<VP9Picture> pic,
-                                          Vp9FrameContext* frame_ctx) {
+bool VP9VaapiVideoDecoderDelegate::GetFrameContext(
+    scoped_refptr<VP9Picture> pic,
+    Vp9FrameContext* frame_ctx) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   NOTIMPLEMENTED() << "Frame context update not supported";
   return false;
diff --git a/media/gpu/vaapi/vp9_vaapi_video_decoder_delegate.h b/media/gpu/vaapi/vp9_vaapi_video_decoder_delegate.h
new file mode 100644
index 0000000..07a79cb
--- /dev/null
+++ b/media/gpu/vaapi/vp9_vaapi_video_decoder_delegate.h
@@ -0,0 +1,43 @@
+// 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.
+
+#ifndef MEDIA_GPU_VAAPI_VP9_VAAPI_VIDEO_DECODER_DELEGATE_H_
+#define MEDIA_GPU_VAAPI_VP9_VAAPI_VIDEO_DECODER_DELEGATE_H_
+
+#include "base/memory/scoped_refptr.h"
+#include "base/sequence_checker.h"
+#include "media/filters/vp9_parser.h"
+#include "media/gpu/vaapi/vaapi_video_decoder_delegate.h"
+#include "media/gpu/vp9_decoder.h"
+
+namespace media {
+
+class VP9Picture;
+
+class VP9VaapiVideoDecoderDelegate : public VP9Decoder::VP9Accelerator,
+                                     public VaapiVideoDecoderDelegate {
+ public:
+  VP9VaapiVideoDecoderDelegate(DecodeSurfaceHandler<VASurface>* const vaapi_dec,
+                               scoped_refptr<VaapiWrapper> vaapi_wrapper);
+  ~VP9VaapiVideoDecoderDelegate() override;
+
+  // VP9Decoder::VP9Accelerator implementation.
+  scoped_refptr<VP9Picture> CreateVP9Picture() override;
+  bool SubmitDecode(scoped_refptr<VP9Picture> pic,
+                    const Vp9SegmentationParams& seg,
+                    const Vp9LoopFilterParams& lf,
+                    const Vp9ReferenceFrameVector& reference_frames,
+                    const base::Closure& done_cb) override;
+
+  bool OutputPicture(scoped_refptr<VP9Picture> pic) override;
+  bool IsFrameContextRequired() const override;
+  bool GetFrameContext(scoped_refptr<VP9Picture> pic,
+                       Vp9FrameContext* frame_ctx) override;
+
+  DISALLOW_COPY_AND_ASSIGN(VP9VaapiVideoDecoderDelegate);
+};
+
+}  // namespace media
+
+#endif  // MEDIA_GPU_VAAPI_VP9_VAAPI_VIDEO_DECODER_DELEGATE_H_
diff --git a/media/gpu/video_encode_accelerator_unittest.cc b/media/gpu/video_encode_accelerator_unittest.cc
index 7834f03..eccda2a 100644
--- a/media/gpu/video_encode_accelerator_unittest.cc
+++ b/media/gpu/video_encode_accelerator_unittest.cc
@@ -220,7 +220,7 @@
 // "--num_frames_to_encode". Ignored if 0.
 int g_num_frames_to_encode = 0;
 
-#ifdef ARCH_CPU_ARMEL
+#if defined(ARCH_CPU_ARM_FAMILY)
 // ARM performs CPU cache management with CPU cache line granularity. We thus
 // need to ensure our buffers are CPU cache line-aligned (64 byte-aligned).
 // Otherwise newer kernels will refuse to accept them, and on older kernels
diff --git a/media/mojo/clients/mojo_video_encode_accelerator.cc b/media/mojo/clients/mojo_video_encode_accelerator.cc
index e5bb6bb..d4d7b42 100644
--- a/media/mojo/clients/mojo_video_encode_accelerator.cc
+++ b/media/mojo/clients/mojo_video_encode_accelerator.cc
@@ -12,7 +12,6 @@
 #include "media/base/video_frame.h"
 #include "media/gpu/gpu_video_accelerator_util.h"
 #include "media/mojo/common/mojo_shared_buffer_video_frame.h"
-#include "media/mojo/mojom/video_encoder_info.mojom.h"
 #include "mojo/public/cpp/bindings/pending_receiver.h"
 #include "mojo/public/cpp/bindings/receiver.h"
 #include "mojo/public/cpp/system/platform_handle.h"
@@ -100,15 +99,6 @@
       supported_profiles_);
 }
 
-VideoEncoderInfo MojoVideoEncodeAccelerator::GetEncoderInfo() {
-  DVLOG(2) << __func__;
-  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  DCHECK(vea_.is_bound());
-  VideoEncoderInfo encoder_info;
-  vea_->GetEncoderInfo(&encoder_info);
-  return encoder_info;
-}
-
 bool MojoVideoEncodeAccelerator::Initialize(const Config& config,
                                             Client* client) {
   DVLOG(2) << __func__ << " " << config.AsHumanReadableString();
diff --git a/media/mojo/clients/mojo_video_encode_accelerator.h b/media/mojo/clients/mojo_video_encode_accelerator.h
index 3eb2091..17bebb3 100644
--- a/media/mojo/clients/mojo_video_encode_accelerator.h
+++ b/media/mojo/clients/mojo_video_encode_accelerator.h
@@ -36,7 +36,6 @@
 
   // VideoEncodeAccelerator implementation.
   SupportedProfiles GetSupportedProfiles() override;
-  VideoEncoderInfo GetEncoderInfo() override;
   bool Initialize(const Config& config, Client* client) override;
   void Encode(scoped_refptr<VideoFrame> frame, bool force_keyframe) override;
   void UseOutputBitstreamBuffer(BitstreamBuffer buffer) override;
diff --git a/media/mojo/clients/mojo_video_encode_accelerator_unittest.cc b/media/mojo/clients/mojo_video_encode_accelerator_unittest.cc
index ba82b444..4b2f69d1 100644
--- a/media/mojo/clients/mojo_video_encode_accelerator_unittest.cc
+++ b/media/mojo/clients/mojo_video_encode_accelerator_unittest.cc
@@ -35,9 +35,6 @@
   MockMojoVideoEncodeAccelerator() = default;
 
   // mojom::VideoEncodeAccelerator impl.
-  void GetEncoderInfo(GetEncoderInfoCallback callback) override {
-    return std::move(callback).Run(media::VideoEncoderInfo());
-  }
   void Initialize(
       const media::VideoEncodeAccelerator::Config& config,
       mojo::PendingRemote<mojom::VideoEncodeAcceleratorClient> client,
diff --git a/media/mojo/mojom/BUILD.gn b/media/mojo/mojom/BUILD.gn
index cd05750..96becce1 100644
--- a/media/mojo/mojom/BUILD.gn
+++ b/media/mojo/mojom/BUILD.gn
@@ -38,7 +38,6 @@
     "video_decode_stats_recorder.mojom",
     "video_decoder.mojom",
     "video_encode_accelerator.mojom",
-    "video_encoder_info.mojom",
     "watch_time_recorder.mojom",
   ]
 
@@ -127,7 +126,6 @@
     "audio_decoder_config_mojom_traits_unittest.cc",
     "cdm_key_information_mojom_traits_unittest.cc",
     "video_decoder_config_mojom_traits_unittest.cc",
-    "video_encoder_info_mojom_traits_unittest.cc",
     "video_frame_mojom_traits_unittest.cc",
   ]
 
@@ -136,7 +134,6 @@
     "//base/test:test_support",
     "//media:test_support",
     "//media/mojo:test_support",
-    "//mojo/public/cpp/test_support:test_utils",
     "//testing/gmock",
     "//testing/gtest",
     "//ui/gfx:test_support",
diff --git a/media/mojo/mojom/media_types.mojom b/media/mojo/mojom/media_types.mojom
index 36c2442..b745cec1 100644
--- a/media/mojo/mojom/media_types.mojom
+++ b/media/mojo/mojom/media_types.mojom
@@ -325,7 +325,9 @@
     // but we can't do that with native enums.
     VideoCodecProfile profile;
     gfx.mojom.Size video_size;
-    int32 frames_per_sec = 0;
+    // Frames per second may ultimately be a bucketed as an integer, but we want
+    // to do that as late as possible. Using a double avoids early truncation.
+    double frames_per_sec = 0;
     // Name of the key system used for EME playbacks.
     string key_system;
     // Indicates when CDM will use HW secure decoding for EME playbacks.
diff --git a/media/mojo/mojom/typemaps.gni b/media/mojo/mojom/typemaps.gni
index 783cac04..987ebfc 100644
--- a/media/mojo/mojom/typemaps.gni
+++ b/media/mojo/mojom/typemaps.gni
@@ -20,7 +20,6 @@
   "//media/mojo/mojom/video_decoder.typemap",
   "//media/mojo/mojom/video_decoder_config.typemap",
   "//media/mojo/mojom/video_encode_accelerator.typemap",
-  "//media/mojo/mojom/video_encoder_info.typemap",
   "//media/mojo/mojom/video_frame.typemap",
 ]
 
diff --git a/media/mojo/mojom/video_encode_accelerator.mojom b/media/mojo/mojom/video_encode_accelerator.mojom
index 8fafc15..f0adb26 100644
--- a/media/mojo/mojom/video_encode_accelerator.mojom
+++ b/media/mojo/mojom/video_encode_accelerator.mojom
@@ -7,7 +7,6 @@
 import "media/mojo/mojom/media_types.mojom";
 import "mojo/public/mojom/base/time.mojom";
 import "ui/gfx/geometry/mojom/geometry.mojom";
-import "media/mojo/mojom/video_encoder_info.mojom";
 
 // This file is the Mojo version of the media::VideoEncodeAccelerator interface
 // and describes the communication between a Client and a remote "service"
@@ -83,14 +82,8 @@
     PLATFORM_FAILURE
   };
 
-  // Return a VideoEncoderInfo of an underlying VideoEncodeAccelerator.
-  // This needs to be called AFTER initialization is successfully done,
-  // otherwise the returned VideoEncoderInfo doesn't tell the true info of
-  // the encoder.
-  [Sync]
-  GetEncoderInfo() => (VideoEncoderInfo result);
-
   // Responded by VideoEncodeAcceleratorClient.RequireBitstreamBuffers().
+  // TODO(mcasas): Update to asynchronous, https://crbug.com/744210.
   [Sync]
   Initialize(VideoEncodeAcceleratorConfig config,
              pending_remote<VideoEncodeAcceleratorClient> client)
diff --git a/media/mojo/mojom/video_encoder_info.mojom b/media/mojo/mojom/video_encoder_info.mojom
deleted file mode 100644
index e02bead..0000000
--- a/media/mojo/mojom/video_encoder_info.mojom
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-module media.mojom;
-
-import "ui/gfx/geometry/mojom/geometry.mojom";
-
-struct ScalingSettings {
-  uint8 min_qp;
-  uint8 max_qp;
-};
-
-struct ResolutionBitrateLimit {
-  gfx.mojom.Size frame_size;
-  int32 min_start_bitrate_bps;
-  int32 min_bitrate_bps;
-  int32 max_bitrate_bps;
-};
-
-struct VideoEncoderInfo {
-  string implementation_name;
-
-  bool supports_native_handle;
-  bool has_trusted_rate_controller;
-  bool is_hardware_accelerated;
-  bool supports_simulcast;
-
-  ScalingSettings scaling_settings;
-  // This array size is equal to media::VideoEncoderInfo::kMaxSpatialLayers.
-  array<array<uint8>, 5> fps_allocation;
-  array<ResolutionBitrateLimit> resolution_bitrate_limits;
-};
diff --git a/media/mojo/mojom/video_encoder_info.typemap b/media/mojo/mojom/video_encoder_info.typemap
deleted file mode 100644
index 3ba40e8..0000000
--- a/media/mojo/mojom/video_encoder_info.typemap
+++ /dev/null
@@ -1,30 +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.
-
-mojom = "//media/mojo/mojom/video_encoder_info.mojom"
-
-public_headers = [ "//media/video/video_encoder_info.h" ]
-
-traits_headers = [ "//media/mojo/mojom/video_encoder_info_mojom_traits.h" ]
-
-sources = [
-  "//media/mojo/mojom/video_encoder_info_mojom_traits.cc",
-  "//media/mojo/mojom/video_encoder_info_mojom_traits.h",
-]
-
-public_deps = [
-  "//base",
-  "//media",
-]
-
-deps = [
-  "//media/base/ipc",
-  "//ui/gfx/geometry/mojom:mojom_traits",
-]
-
-type_mappings = [
-  "media.mojom.ScalingSettings=::media::ScalingSettings",
-  "media.mojom.ResolutionBitrateLimit=::media::ResolutionBitrateLimit",
-  "media.mojom.VideoEncoderInfo=::media::VideoEncoderInfo",
-]
diff --git a/media/mojo/mojom/video_encoder_info_mojom_traits.cc b/media/mojo/mojom/video_encoder_info_mojom_traits.cc
deleted file mode 100644
index 32262cc..0000000
--- a/media/mojo/mojom/video_encoder_info_mojom_traits.cc
+++ /dev/null
@@ -1,57 +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.
-
-#include "media/mojo/mojom/video_encoder_info_mojom_traits.h"
-
-namespace mojo {
-
-// static
-bool StructTraits<
-    media::mojom::ScalingSettingsDataView,
-    media::ScalingSettings>::Read(media::mojom::ScalingSettingsDataView data,
-                                  media::ScalingSettings* out) {
-  out->min_qp = data.min_qp();
-  out->max_qp = data.max_qp();
-  return true;
-}
-
-// static
-bool StructTraits<media::mojom::ResolutionBitrateLimitDataView,
-                  media::ResolutionBitrateLimit>::
-    Read(media::mojom::ResolutionBitrateLimitDataView data,
-         media::ResolutionBitrateLimit* out) {
-  if (!data.ReadFrameSize(&out->frame_size))
-    return false;
-  out->min_start_bitrate_bps = data.min_start_bitrate_bps();
-  out->min_bitrate_bps = data.min_bitrate_bps();
-  out->max_bitrate_bps = data.max_bitrate_bps();
-  return true;
-}
-
-// static
-bool StructTraits<
-    media::mojom::VideoEncoderInfoDataView,
-    media::VideoEncoderInfo>::Read(media::mojom::VideoEncoderInfoDataView data,
-                                   media::VideoEncoderInfo* out) {
-  out->supports_native_handle = data.supports_native_handle();
-  out->has_trusted_rate_controller = data.has_trusted_rate_controller();
-  out->is_hardware_accelerated = data.is_hardware_accelerated();
-  out->supports_simulcast = data.supports_simulcast();
-
-  if (!data.ReadImplementationName(&out->implementation_name))
-    return false;
-
-  if (!data.ReadScalingSettings(&out->scaling_settings))
-    return false;
-
-  base::span<std::vector<uint8_t>> fps_allocation(out->fps_allocation);
-  if (!data.ReadFpsAllocation(&fps_allocation))
-    return false;
-
-  if (!data.ReadResolutionBitrateLimits(&out->resolution_bitrate_limits))
-    return false;
-
-  return true;
-}
-}  // namespace mojo
diff --git a/media/mojo/mojom/video_encoder_info_mojom_traits.h b/media/mojo/mojom/video_encoder_info_mojom_traits.h
deleted file mode 100644
index be13d82..0000000
--- a/media/mojo/mojom/video_encoder_info_mojom_traits.h
+++ /dev/null
@@ -1,98 +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.
-
-#ifndef MEDIA_MOJO_MOJOM_VIDEO_ENCODER_INFO_MOJOM_TRAITS_H_
-#define MEDIA_MOJO_MOJOM_VIDEO_ENCODER_INFO_MOJOM_TRAITS_H_
-
-#include "base/containers/span.h"
-#include "media/mojo/mojom/video_encoder_info.mojom.h"
-#include "media/video/video_encoder_info.h"
-#include "ui/gfx/geometry/mojom/geometry_mojom_traits.h"
-
-namespace mojo {
-
-template <>
-class StructTraits<media::mojom::ScalingSettingsDataView,
-                   media::ScalingSettings> {
- public:
-  static int32_t min_qp(const media::ScalingSettings& scaling_settings) {
-    return scaling_settings.min_qp;
-  }
-  static int32_t max_qp(const media::ScalingSettings& scaling_settings) {
-    return scaling_settings.max_qp;
-  }
-
-  static bool Read(media::mojom::ScalingSettingsDataView data,
-                   media::ScalingSettings* out);
-};
-
-template <>
-class StructTraits<media::mojom::ResolutionBitrateLimitDataView,
-                   media::ResolutionBitrateLimit> {
- public:
-  static const gfx::Size& frame_size(
-      const media::ResolutionBitrateLimit& resolution_bitrate_limit) {
-    return resolution_bitrate_limit.frame_size;
-  }
-  static int min_start_bitrate_bps(
-      const media::ResolutionBitrateLimit& resolution_bitrate_limit) {
-    return resolution_bitrate_limit.min_start_bitrate_bps;
-  }
-  static int min_bitrate_bps(
-      const media::ResolutionBitrateLimit& resolution_bitrate_limit) {
-    return resolution_bitrate_limit.min_bitrate_bps;
-  }
-  static int max_bitrate_bps(
-      const media::ResolutionBitrateLimit& resolution_bitrate_limit) {
-    return resolution_bitrate_limit.max_bitrate_bps;
-  }
-  static bool Read(media::mojom::ResolutionBitrateLimitDataView data,
-                   media::ResolutionBitrateLimit* out);
-};
-
-template <>
-class StructTraits<media::mojom::VideoEncoderInfoDataView,
-                   media::VideoEncoderInfo> {
- public:
-  static const std::string& implementation_name(
-      const media::VideoEncoderInfo& video_encoder_info) {
-    return video_encoder_info.implementation_name;
-  }
-  static bool supports_native_handle(
-      const media::VideoEncoderInfo& video_encoder_info) {
-    return video_encoder_info.supports_native_handle;
-  }
-  static bool has_trusted_rate_controller(
-      const media::VideoEncoderInfo& video_encoder_info) {
-    return video_encoder_info.has_trusted_rate_controller;
-  }
-  static bool is_hardware_accelerated(
-      const media::VideoEncoderInfo& video_encoder_info) {
-    return video_encoder_info.is_hardware_accelerated;
-  }
-  static bool supports_simulcast(
-      const media::VideoEncoderInfo& video_encoder_info) {
-    return video_encoder_info.supports_simulcast;
-  }
-  static const media::ScalingSettings& scaling_settings(
-      const media::VideoEncoderInfo& video_encoder_info) {
-    return video_encoder_info.scaling_settings;
-  }
-  static base::span<const std::vector<uint8_t>,
-                    media::VideoEncoderInfo::kMaxSpatialLayers>
-  fps_allocation(const media::VideoEncoderInfo& video_encoder_info) {
-    return video_encoder_info.fps_allocation;
-  }
-  static const std::vector<media::ResolutionBitrateLimit>&
-  resolution_bitrate_limits(const media::VideoEncoderInfo& video_encoder_info) {
-    return video_encoder_info.resolution_bitrate_limits;
-  }
-
-  static bool Read(media::mojom::VideoEncoderInfoDataView data,
-                   media::VideoEncoderInfo* out);
-};
-
-}  // namespace mojo
-
-#endif  // MEDIA_MOJO_MOJOM_VIDEO_ENCODER_INFO_MOJOM_TRAITS_H_
diff --git a/media/mojo/mojom/video_encoder_info_mojom_traits_unittest.cc b/media/mojo/mojom/video_encoder_info_mojom_traits_unittest.cc
deleted file mode 100644
index 455ac3b..0000000
--- a/media/mojo/mojom/video_encoder_info_mojom_traits_unittest.cc
+++ /dev/null
@@ -1,88 +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.
-
-#include "media/mojo/mojom/video_encoder_info_mojom_traits.h"
-
-#include "media/video/video_encoder_info.h"
-
-#include "mojo/public/cpp/test_support/test_utils.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace media {
-
-// These binary operators are implemented here because they are used in this
-// unittest. They cannot be enclosed by anonymous namespace, because they must
-// be visible by gtest in linking.
-bool operator==(const ::media::ScalingSettings& l,
-                const ::media::ScalingSettings& r) {
-  return l.min_qp == r.min_qp && l.max_qp == r.max_qp;
-}
-
-bool operator!=(const ::media::ScalingSettings& l,
-                const ::media::ScalingSettings& r) {
-  return !(l == r);
-}
-
-bool operator==(const ::media::ResolutionBitrateLimit& l,
-                const ::media::ResolutionBitrateLimit& r) {
-  return (l.frame_size == r.frame_size &&
-          l.min_start_bitrate_bps == r.min_start_bitrate_bps &&
-          l.min_bitrate_bps == r.min_bitrate_bps &&
-          l.max_bitrate_bps == r.max_bitrate_bps);
-}
-
-bool operator!=(const ::media::ResolutionBitrateLimit& l,
-                const ::media::ResolutionBitrateLimit& r) {
-  return !(l == r);
-}
-
-bool operator==(const ::media::VideoEncoderInfo& l,
-                const ::media::VideoEncoderInfo& r) {
-  if (l.implementation_name != r.implementation_name)
-    return false;
-  if (l.supports_native_handle != r.supports_native_handle)
-    return false;
-  if (l.has_trusted_rate_controller != r.has_trusted_rate_controller)
-    return false;
-  if (l.is_hardware_accelerated != r.is_hardware_accelerated)
-    return false;
-  if (l.supports_simulcast != r.supports_simulcast)
-    return false;
-  if (l.scaling_settings != r.scaling_settings)
-    return false;
-  for (size_t i = 0; i < ::media::VideoEncoderInfo::kMaxSpatialLayers; ++i) {
-    if (l.fps_allocation[i] != r.fps_allocation[i])
-      return false;
-  }
-  if (l.resolution_bitrate_limits != r.resolution_bitrate_limits)
-    return false;
-  return true;
-}
-
-TEST(VideoEncoderInfoStructTraitTest, RoundTrip) {
-  ::media::VideoEncoderInfo input;
-  input.implementation_name = "FakeVideoEncodeAccelerator";
-  // Scaling settings.
-  input.scaling_settings.min_qp = 12;
-  input.scaling_settings.max_qp = 123;
-  // FPS allocation.
-  for (size_t i = 0; i < ::media::VideoEncoderInfo::kMaxSpatialLayers; ++i)
-    input.fps_allocation[i] = {5, 5, 10};
-  // Resolution bitrate limits.
-  input.resolution_bitrate_limits.push_back(::media::ResolutionBitrateLimit(
-      gfx::Size(123, 456), 123456, 123456, 789012));
-  input.resolution_bitrate_limits.push_back(::media::ResolutionBitrateLimit(
-      gfx::Size(789, 1234), 1234567, 1234567, 7890123));
-  // Other bool values.
-  input.supports_native_handle = true;
-  input.has_trusted_rate_controller = true;
-  input.is_hardware_accelerated = true;
-  input.supports_simulcast = true;
-
-  ::media::VideoEncoderInfo output = input;
-  ASSERT_TRUE(mojo::test::SerializeAndDeserialize<mojom::VideoEncoderInfo>(
-      &input, &output));
-  EXPECT_EQ(input, output);
-}
-}  // namespace media
diff --git a/media/mojo/services/mojo_video_encode_accelerator_service.cc b/media/mojo/services/mojo_video_encode_accelerator_service.cc
index 806ea5b..aa1fb3c8 100644
--- a/media/mojo/services/mojo_video_encode_accelerator_service.cc
+++ b/media/mojo/services/mojo_video_encode_accelerator_service.cc
@@ -10,7 +10,6 @@
 #include "base/logging.h"
 #include "media/base/bind_to_current_loop.h"
 #include "media/base/limits.h"
-#include "media/mojo/mojom/video_encoder_info.mojom.h"
 #include "mojo/public/cpp/bindings/self_owned_receiver.h"
 #include "mojo/public/cpp/system/platform_handle.h"
 
@@ -44,16 +43,6 @@
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 }
 
-void MojoVideoEncodeAcceleratorService::GetEncoderInfo(
-    GetEncoderInfoCallback callback) {
-  if (!encoder_) {
-    std::move(callback).Run(VideoEncoderInfo());
-    return;
-  }
-
-  std::move(callback).Run(encoder_->GetEncoderInfo());
-}
-
 void MojoVideoEncodeAcceleratorService::Initialize(
     const media::VideoEncodeAccelerator::Config& config,
     mojo::PendingRemote<mojom::VideoEncodeAcceleratorClient> client,
diff --git a/media/mojo/services/mojo_video_encode_accelerator_service.h b/media/mojo/services/mojo_video_encode_accelerator_service.h
index 60e89dec..1298518 100644
--- a/media/mojo/services/mojo_video_encode_accelerator_service.h
+++ b/media/mojo/services/mojo_video_encode_accelerator_service.h
@@ -53,7 +53,6 @@
   ~MojoVideoEncodeAcceleratorService() override;
 
   // mojom::VideoEncodeAccelerator impl.
-  void GetEncoderInfo(GetEncoderInfoCallback callback) override;
   void Initialize(
       const media::VideoEncodeAccelerator::Config& config,
       mojo::PendingRemote<mojom::VideoEncodeAcceleratorClient> client,
diff --git a/media/mojo/services/test_helpers.cc b/media/mojo/services/test_helpers.cc
index 80c6eb6..585d90c 100644
--- a/media/mojo/services/test_helpers.cc
+++ b/media/mojo/services/test_helpers.cc
@@ -7,9 +7,9 @@
 namespace media {
 
 mojom::PredictionFeatures MakeFeatures(VideoCodecProfile profile,
-                                       gfx::Size video_size,
-                                       int frames_per_sec,
-                                       std::string key_system,
+                                       const gfx::Size& video_size,
+                                       double frames_per_sec,
+                                       const std::string& key_system,
                                        bool use_hw_secure_codecs) {
   mojom::PredictionFeatures features;
   features.profile = profile;
@@ -21,9 +21,9 @@
 }
 
 mojom::PredictionFeaturesPtr MakeFeaturesPtr(VideoCodecProfile profile,
-                                             gfx::Size video_size,
-                                             int frames_per_sec,
-                                             std::string key_system,
+                                             const gfx::Size& video_size,
+                                             double frames_per_sec,
+                                             const std::string& key_system,
                                              bool use_hw_secure_codecs) {
   mojom::PredictionFeaturesPtr features = mojom::PredictionFeatures::New();
   *features = MakeFeatures(profile, video_size, frames_per_sec, key_system,
diff --git a/media/mojo/services/test_helpers.h b/media/mojo/services/test_helpers.h
index 17c3781..cad003d 100644
--- a/media/mojo/services/test_helpers.h
+++ b/media/mojo/services/test_helpers.h
@@ -12,15 +12,15 @@
 namespace media {
 
 mojom::PredictionFeatures MakeFeatures(VideoCodecProfile profile,
-                                       gfx::Size video_size,
-                                       int frames_per_sec,
-                                       std::string key_system = "",
+                                       const gfx::Size& video_size,
+                                       double frames_per_sec,
+                                       const std::string& key_system = "",
                                        bool use_hw_secure_codecs = false);
 
 mojom::PredictionFeaturesPtr MakeFeaturesPtr(VideoCodecProfile profile,
-                                             gfx::Size video_size,
-                                             int frames_per_sec,
-                                             std::string key_system = "",
+                                             const gfx::Size& video_size,
+                                             double frames_per_sec,
+                                             const std::string& key_system = "",
                                              bool use_hw_secure_codecs = false);
 
 mojom::PredictionTargets MakeTargets(uint32_t frames_decoded,
diff --git a/media/mojo/services/video_decode_perf_history.cc b/media/mojo/services/video_decode_perf_history.cc
index 9a63156f..069f7e4 100644
--- a/media/mojo/services/video_decode_perf_history.cc
+++ b/media/mojo/services/video_decode_perf_history.cc
@@ -236,7 +236,7 @@
   DVLOG(3)
       << __func__
       << base::StringPrintf(
-             " profile:%s size:%s fps:%d decoded:%d dropped:%d efficient:%d",
+             " profile:%s size:%s fps:%f decoded:%d dropped:%d efficient:%d",
              GetProfileName(features.profile).c_str(),
              features.video_size.ToString().c_str(), features.frames_per_sec,
              targets.frames_decoded, targets.frames_dropped,
diff --git a/media/muxers/BUILD.gn b/media/muxers/BUILD.gn
index 9d0bea0..8a8b132a 100644
--- a/media/muxers/BUILD.gn
+++ b/media/muxers/BUILD.gn
@@ -37,6 +37,7 @@
     "//media:test_support",
     "//testing/gmock",
     "//testing/gtest",
+    "//third_party/libwebm",
   ]
 
   configs += [
diff --git a/media/muxers/webm_muxer.cc b/media/muxers/webm_muxer.cc
index c5b819f..50887a38 100644
--- a/media/muxers/webm_muxer.cc
+++ b/media/muxers/webm_muxer.cc
@@ -70,23 +70,91 @@
   }
 }
 
+base::Optional<mkvmuxer::Colour> ColorFromColorSpace(
+    const gfx::ColorSpace& color) {
+  using mkvmuxer::Colour;
+  using MatrixID = gfx::ColorSpace::MatrixID;
+  using RangeID = gfx::ColorSpace::RangeID;
+  using TransferID = gfx::ColorSpace::TransferID;
+  using PrimaryID = gfx::ColorSpace::PrimaryID;
+  Colour colour;
+  int matrix_coefficients;
+  switch (color.GetMatrixID()) {
+    case MatrixID::BT709:
+      matrix_coefficients = Colour::kBt709;
+      break;
+    case MatrixID::BT2020_NCL:
+      matrix_coefficients = Colour::kBt2020NonConstantLuminance;
+      break;
+    default:
+      return base::nullopt;
+  }
+  colour.set_matrix_coefficients(matrix_coefficients);
+  int range;
+  switch (color.GetRangeID()) {
+    case RangeID::LIMITED:
+      range = Colour::kBroadcastRange;
+      break;
+    case RangeID::FULL:
+      range = Colour::kFullRange;
+      break;
+    default:
+      return base::nullopt;
+  }
+  colour.set_range(range);
+  int transfer_characteristics;
+  switch (color.GetTransferID()) {
+    case TransferID::BT709:
+      transfer_characteristics = Colour::kIturBt709Tc;
+      break;
+    case TransferID::IEC61966_2_1:
+      transfer_characteristics = Colour::kIec6196621;
+      break;
+    case TransferID::SMPTEST2084:
+      transfer_characteristics = Colour::kSmpteSt2084;
+      break;
+    default:
+      return base::nullopt;
+  }
+  colour.set_transfer_characteristics(transfer_characteristics);
+  int primaries;
+  switch (color.GetPrimaryID()) {
+    case PrimaryID::BT709:
+      primaries = Colour::kIturBt709P;
+      break;
+    case PrimaryID::BT2020:
+      primaries = Colour::kIturBt2020;
+      break;
+    default:
+      return base::nullopt;
+  }
+  colour.set_primaries(primaries);
+  return colour;
+}
+
 }  // anonymous namespace
 
 WebmMuxer::VideoParameters::VideoParameters(
-    scoped_refptr<media::VideoFrame> frame) {
-  visible_rect_size = frame->visible_rect().size();
-  frame_rate = 0.0;
+    scoped_refptr<media::VideoFrame> frame)
+    : visible_rect_size(frame->visible_rect().size()),
+      frame_rate(0.0),
+      codec(kUnknownVideoCodec),
+      color_space(frame->ColorSpace()) {
   ignore_result(frame->metadata()->GetDouble(VideoFrameMetadata::FRAME_RATE,
                                              &frame_rate));
-  codec = kUnknownVideoCodec;
 }
 
-WebmMuxer::VideoParameters::VideoParameters(gfx::Size visible_rect_size_param,
-                                            double frame_rate_param,
-                                            VideoCodec codec)
-    : visible_rect_size(visible_rect_size_param),
-      frame_rate(frame_rate_param),
-      codec(codec) {}
+WebmMuxer::VideoParameters::VideoParameters(
+    gfx::Size visible_rect_size,
+    double frame_rate,
+    VideoCodec codec,
+    base::Optional<gfx::ColorSpace> color_space)
+    : visible_rect_size(visible_rect_size),
+      frame_rate(frame_rate),
+      codec(codec),
+      color_space(color_space) {}
+
+WebmMuxer::VideoParameters::VideoParameters(const VideoParameters&) = default;
 
 WebmMuxer::VideoParameters::~VideoParameters() = default;
 
@@ -150,7 +218,8 @@
     // |track_index_|, cannot be zero (!), initialize WebmMuxer in that case.
     // http://www.matroska.org/technical/specs/index.html#Tracks
     video_codec_ = params.codec;
-    AddVideoTrack(params.visible_rect_size, GetFrameRate(params));
+    AddVideoTrack(params.visible_rect_size, GetFrameRate(params),
+                  params.color_space);
     if (first_frame_timestamp_video_.is_null())
       first_frame_timestamp_video_ = timestamp;
   }
@@ -225,7 +294,10 @@
   }
 }
 
-void WebmMuxer::AddVideoTrack(const gfx::Size& frame_size, double frame_rate) {
+void WebmMuxer::AddVideoTrack(
+    const gfx::Size& frame_size,
+    double frame_rate,
+    const base::Optional<gfx::ColorSpace>& color_space) {
   DCHECK(thread_checker_.CalledOnValidThread());
   DCHECK_EQ(0u, video_track_index_)
       << "WebmMuxer can only be initialized once.";
@@ -240,6 +312,11 @@
   mkvmuxer::VideoTrack* const video_track =
       reinterpret_cast<mkvmuxer::VideoTrack*>(
           segment_.GetTrackByNumber(video_track_index_));
+  if (color_space) {
+    auto colour = ColorFromColorSpace(*color_space);
+    if (colour)
+      video_track->SetColour(*colour);
+  }
   DCHECK(video_track);
   video_track->set_codec_id(MkvCodeIcForMediaVideoCodecId(video_codec_));
   DCHECK_EQ(0ull, video_track->crop_right());
diff --git a/media/muxers/webm_muxer.h b/media/muxers/webm_muxer.h
index 2c6bc55..0d9b8c6 100644
--- a/media/muxers/webm_muxer.h
+++ b/media/muxers/webm_muxer.h
@@ -20,6 +20,7 @@
 #include "media/base/audio_codecs.h"
 #include "media/base/media_export.h"
 #include "media/base/video_codecs.h"
+#include "media/base/video_color_space.h"
 #include "third_party/libwebm/source/mkvmuxer.hpp"
 #include "ui/gfx/geometry/size.h"
 
@@ -53,13 +54,16 @@
   // media::VideoFrame.
   struct MEDIA_EXPORT VideoParameters {
     VideoParameters(scoped_refptr<media::VideoFrame> frame);
-    VideoParameters(gfx::Size visible_rect_size_param,
-                    double frame_rate_param,
-                    VideoCodec codec);
+    VideoParameters(gfx::Size visible_rect_size,
+                    double frame_rate,
+                    VideoCodec codec,
+                    base::Optional<gfx::ColorSpace> color_space);
+    VideoParameters(const VideoParameters&);
     ~VideoParameters();
     gfx::Size visible_rect_size;
     double frame_rate;
     VideoCodec codec;
+    base::Optional<gfx::ColorSpace> color_space;
   };
 
   // |audio_codec| should coincide with whatever is sent in OnEncodedAudio(),
@@ -95,7 +99,9 @@
   // AddVideoTrack adds |frame_size| and |frame_rate| to the Segment
   // info, although individual frames passed to OnEncodedVideo() can have any
   // frame size.
-  void AddVideoTrack(const gfx::Size& frame_size, double frame_rate);
+  void AddVideoTrack(const gfx::Size& frame_size,
+                     double frame_rate,
+                     const base::Optional<gfx::ColorSpace>& color_space);
   void AddAudioTrack(const media::AudioParameters& params);
 
   // IMkvWriter interface.
diff --git a/media/muxers/webm_muxer_unittest.cc b/media/muxers/webm_muxer_unittest.cc
index afa0923..4ac14000 100644
--- a/media/muxers/webm_muxer_unittest.cc
+++ b/media/muxers/webm_muxer_unittest.cc
@@ -85,6 +85,14 @@
     return parameters;
   }
 
+  mkvmuxer::Colour* GetVideoTrackColor() const {
+    mkvmuxer::VideoTrack* const video_track =
+        reinterpret_cast<mkvmuxer::VideoTrack*>(
+            webm_muxer_.segment_.GetTrackByNumber(
+                webm_muxer_.video_track_index_));
+    return video_track->colour();
+  }
+
   WebmMuxer webm_muxer_;
 
   size_t last_encoded_length_;
@@ -257,6 +265,64 @@
                                           base::TimeTicks::Now()));
 }
 
+TEST_P(WebmMuxerTest, ColorSpaceREC709IsPropagatedToTrack) {
+  WebmMuxer::VideoParameters params(gfx::Size(1, 1), 0, media::kCodecVP9,
+                                    gfx::ColorSpace::CreateREC709());
+  webm_muxer_.OnEncodedVideo(params, "abab", {}, base::TimeTicks::Now(),
+                             true /* keyframe */);
+  mkvmuxer::Colour* colour = GetVideoTrackColor();
+  EXPECT_EQ(colour->primaries(), mkvmuxer::Colour::kIturBt709P);
+  EXPECT_EQ(colour->transfer_characteristics(), mkvmuxer::Colour::kIturBt709Tc);
+  EXPECT_EQ(colour->matrix_coefficients(), mkvmuxer::Colour::kBt709);
+  EXPECT_EQ(colour->range(), mkvmuxer::Colour::kBroadcastRange);
+}
+
+TEST_P(WebmMuxerTest, ColorSpaceExtendedSRGBIsPropagatedToTrack) {
+  WebmMuxer::VideoParameters params(
+      gfx::Size(1, 1), 0, media::kCodecVP9,
+      gfx::ColorSpace(gfx::ColorSpace::PrimaryID::BT709,
+                      gfx::ColorSpace::TransferID::IEC61966_2_1,
+                      gfx::ColorSpace::MatrixID::BT709,
+                      gfx::ColorSpace::RangeID::LIMITED));
+  webm_muxer_.OnEncodedVideo(params, "banana", {}, base::TimeTicks::Now(),
+                             true /* keyframe */);
+  mkvmuxer::Colour* colour = GetVideoTrackColor();
+  EXPECT_EQ(colour->primaries(), mkvmuxer::Colour::kIturBt709P);
+  EXPECT_EQ(colour->transfer_characteristics(), mkvmuxer::Colour::kIec6196621);
+  EXPECT_EQ(colour->matrix_coefficients(), mkvmuxer::Colour::kBt709);
+  EXPECT_EQ(colour->range(), mkvmuxer::Colour::kBroadcastRange);
+}
+
+TEST_P(WebmMuxerTest, ColorSpaceHDR10IsPropagatedToTrack) {
+  WebmMuxer::VideoParameters params(
+      gfx::Size(1, 1), 0, media::kCodecVP9,
+      gfx::ColorSpace(gfx::ColorSpace::PrimaryID::BT2020,
+                      gfx::ColorSpace::TransferID::SMPTEST2084,
+                      gfx::ColorSpace::MatrixID::BT2020_NCL,
+                      gfx::ColorSpace::RangeID::LIMITED));
+  webm_muxer_.OnEncodedVideo(params, "cafebabe", {}, base::TimeTicks::Now(),
+                             true /* keyframe */);
+  mkvmuxer::Colour* colour = GetVideoTrackColor();
+  EXPECT_EQ(colour->primaries(), mkvmuxer::Colour::kIturBt2020);
+  EXPECT_EQ(colour->transfer_characteristics(), mkvmuxer::Colour::kSmpteSt2084);
+  EXPECT_EQ(colour->matrix_coefficients(),
+            mkvmuxer::Colour::kBt2020NonConstantLuminance);
+  EXPECT_EQ(colour->range(), mkvmuxer::Colour::kBroadcastRange);
+}
+
+TEST_P(WebmMuxerTest, ColorSpaceFullRangeHDR10IsPropagatedToTrack) {
+  WebmMuxer::VideoParameters params(
+      gfx::Size(1, 1), 0, media::kCodecVP9,
+      gfx::ColorSpace(gfx::ColorSpace::PrimaryID::BT2020,
+                      gfx::ColorSpace::TransferID::SMPTEST2084,
+                      gfx::ColorSpace::MatrixID::BT2020_NCL,
+                      gfx::ColorSpace::RangeID::FULL));
+  webm_muxer_.OnEncodedVideo(params, "beatles", {}, base::TimeTicks::Now(),
+                             true /* keyframe */);
+  mkvmuxer::Colour* colour = GetVideoTrackColor();
+  EXPECT_EQ(colour->range(), mkvmuxer::Colour::kFullRange);
+}
+
 // This test verifies that when video data comes before audio data, we save the
 // encoded video frames and add it to the video track when audio data arrives.
 TEST_P(WebmMuxerTest, VideoIsStoredWhileWaitingForAudio) {
diff --git a/media/video/BUILD.gn b/media/video/BUILD.gn
index ce37aa9..668d7e3 100644
--- a/media/video/BUILD.gn
+++ b/media/video/BUILD.gn
@@ -39,8 +39,6 @@
     "video_decode_accelerator.h",
     "video_encode_accelerator.cc",
     "video_encode_accelerator.h",
-    "video_encoder_info.cc",
-    "video_encoder_info.h",
   ]
 
   if (proprietary_codecs && enable_platform_hevc) {
diff --git a/media/video/video_encode_accelerator.cc b/media/video/video_encode_accelerator.cc
index 385df4e..3e61991 100644
--- a/media/video/video_encode_accelerator.cc
+++ b/media/video/video_encode_accelerator.cc
@@ -100,11 +100,6 @@
 
 VideoEncodeAccelerator::SupportedProfile::~SupportedProfile() = default;
 
-VideoEncoderInfo VideoEncodeAccelerator::GetEncoderInfo() {
-  // TODO(hiroh): Implements this on each VideoEncodeAccelerator.
-  return VideoEncoderInfo();
-}
-
 void VideoEncodeAccelerator::Flush(FlushCallback flush_callback) {
   // TODO(owenlin): implements this https://crbug.com/755889.
   NOTIMPLEMENTED();
diff --git a/media/video/video_encode_accelerator.h b/media/video/video_encode_accelerator.h
index 22acc17..ecf6d6a 100644
--- a/media/video/video_encode_accelerator.h
+++ b/media/video/video_encode_accelerator.h
@@ -22,7 +22,6 @@
 #include "media/base/video_decoder_config.h"
 #include "media/base/video_frame.h"
 #include "media/video/h264_parser.h"
-#include "media/video/video_encoder_info.h"
 
 namespace media {
 
@@ -222,8 +221,6 @@
   // can be called before Initialize().
   virtual SupportedProfiles GetSupportedProfiles() = 0;
 
-  virtual VideoEncoderInfo GetEncoderInfo();
-
   // Initializes the video encoder with specific configuration.  Called once per
   // encoder construction.  This call is synchronous and returns true iff
   // initialization is successful.
diff --git a/media/video/video_encoder_info.cc b/media/video/video_encoder_info.cc
deleted file mode 100644
index 05db2543..0000000
--- a/media/video/video_encoder_info.cc
+++ /dev/null
@@ -1,31 +0,0 @@
-// 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 "media/video/video_encoder_info.h"
-
-namespace media {
-
-ScalingSettings::ScalingSettings() = default;
-ScalingSettings::ScalingSettings(int min_qp, int max_qp)
-    : min_qp(min_qp), max_qp(max_qp) {}
-ScalingSettings::~ScalingSettings() = default;
-
-ResolutionBitrateLimit::ResolutionBitrateLimit() = default;
-ResolutionBitrateLimit::ResolutionBitrateLimit(const ResolutionBitrateLimit&) =
-    default;
-ResolutionBitrateLimit::ResolutionBitrateLimit(const gfx::Size& frame_size,
-                                               int min_start_bitrate_bps,
-                                               int min_bitrate_bps,
-                                               int max_bitrate_bps)
-    : frame_size(frame_size),
-      min_start_bitrate_bps(min_start_bitrate_bps),
-      min_bitrate_bps(min_bitrate_bps),
-      max_bitrate_bps(max_bitrate_bps) {}
-ResolutionBitrateLimit::~ResolutionBitrateLimit() = default;
-
-VideoEncoderInfo::VideoEncoderInfo() = default;
-VideoEncoderInfo::VideoEncoderInfo(const VideoEncoderInfo&) = default;
-VideoEncoderInfo::~VideoEncoderInfo() = default;
-
-}  // namespace media
diff --git a/media/video/video_encoder_info.h b/media/video/video_encoder_info.h
deleted file mode 100644
index 04899878..0000000
--- a/media/video/video_encoder_info.h
+++ /dev/null
@@ -1,65 +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.
-
-#ifndef MEDIA_VIDEO_VIDEO_ENCODER_INFO_H_
-#define MEDIA_VIDEO_VIDEO_ENCODER_INFO_H_
-
-#include <stdint.h>
-#include <string>
-#include <vector>
-
-#include "media/base/media_export.h"
-#include "ui/gfx/geometry/size.h"
-
-namespace media {
-
-// These chromium classes are the corresponding classes in webrtc project.
-// See third_party/webrtc/api/video_codecs/video_encoder.h for the detail.
-
-struct MEDIA_EXPORT ScalingSettings {
-  ScalingSettings();
-  ScalingSettings(int min_qp, int max_qp);
-  ~ScalingSettings();
-
-  int min_qp = 4;
-  int max_qp = 157;
-};
-
-struct MEDIA_EXPORT ResolutionBitrateLimit {
-  ResolutionBitrateLimit();
-  ResolutionBitrateLimit(const ResolutionBitrateLimit&);
-  ResolutionBitrateLimit(const gfx::Size& frame_size,
-                         int min_start_bitrate_bps,
-                         int min_bitrate_bps,
-                         int max_bitrate_bps);
-  ~ResolutionBitrateLimit();
-
-  gfx::Size frame_size;
-  int min_start_bitrate_bps = 0;
-  int min_bitrate_bps = 0;
-  int max_bitrate_bps = 0;
-};
-
-struct MEDIA_EXPORT VideoEncoderInfo {
-  static constexpr size_t kMaxSpatialLayers = 5;
-
-  VideoEncoderInfo();
-  VideoEncoderInfo(const VideoEncoderInfo&);
-  ~VideoEncoderInfo();
-
-  std::string implementation_name;
-
-  bool supports_native_handle = false;
-  bool has_trusted_rate_controller = false;
-  bool is_hardware_accelerated = true;
-  bool supports_simulcast = false;
-
-  ScalingSettings scaling_settings;
-  std::vector<uint8_t> fps_allocation[kMaxSpatialLayers];
-  std::vector<ResolutionBitrateLimit> resolution_bitrate_limits;
-};
-
-}  // namespace media
-
-#endif  // MEDIA_VIDEO_VIDEO_ENCODER_INFO_H_
diff --git a/mojo/core/channel.h b/mojo/core/channel.h
index 53e356b..62447f8 100644
--- a/mojo/core/channel.h
+++ b/mojo/core/channel.h
@@ -11,7 +11,7 @@
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/process/process_handle.h"
-#include "base/task_runner.h"
+#include "base/single_thread_task_runner.h"
 #include "build/build_config.h"
 #include "mojo/core/connection_params.h"
 #include "mojo/core/platform_handle_in_transit.h"
@@ -273,7 +273,7 @@
       Delegate* delegate,
       ConnectionParams connection_params,
       HandlePolicy handle_policy,
-      scoped_refptr<base::TaskRunner> io_task_runner);
+      scoped_refptr<base::SingleThreadTaskRunner> io_task_runner);
 
   // Allows the caller to change the Channel's HandlePolicy after construction.
   void set_handle_policy(HandlePolicy policy) { handle_policy_ = policy; }
diff --git a/mojo/core/channel_fuchsia.cc b/mojo/core/channel_fuchsia.cc
index 3f4caa0..8ca1055 100644
--- a/mojo/core/channel_fuchsia.cc
+++ b/mojo/core/channel_fuchsia.cc
@@ -159,7 +159,7 @@
   ChannelFuchsia(Delegate* delegate,
                  ConnectionParams connection_params,
                  HandlePolicy handle_policy,
-                 scoped_refptr<base::TaskRunner> io_task_runner)
+                 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner)
       : Channel(delegate, handle_policy),
         self_(this),
         handle_(
@@ -397,7 +397,7 @@
   scoped_refptr<Channel> self_;
 
   zx::channel handle_;
-  scoped_refptr<base::TaskRunner> io_task_runner_;
+  scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_;
 
   // These members are only used on the IO thread.
   std::unique_ptr<base::MessagePumpForIO::ZxHandleWatchController> read_watch_;
@@ -417,7 +417,7 @@
     Delegate* delegate,
     ConnectionParams connection_params,
     HandlePolicy handle_policy,
-    scoped_refptr<base::TaskRunner> io_task_runner) {
+    scoped_refptr<base::SingleThreadTaskRunner> io_task_runner) {
   return new ChannelFuchsia(delegate, std::move(connection_params),
                             handle_policy, std::move(io_task_runner));
 }
diff --git a/mojo/core/channel_mac.cc b/mojo/core/channel_mac.cc
index b866163..8c54af1 100644
--- a/mojo/core/channel_mac.cc
+++ b/mojo/core/channel_mac.cc
@@ -47,7 +47,7 @@
   ChannelMac(Delegate* delegate,
              ConnectionParams connection_params,
              HandlePolicy handle_policy,
-             scoped_refptr<base::TaskRunner> io_task_runner)
+             scoped_refptr<base::SingleThreadTaskRunner> io_task_runner)
       : Channel(delegate, handle_policy, DispatchBufferPolicy::kUnmanaged),
         self_(this),
         io_task_runner_(io_task_runner),
@@ -654,7 +654,7 @@
   // Keeps the Channel alive at least until explicit shutdown on the IO thread.
   scoped_refptr<ChannelMac> self_;
 
-  scoped_refptr<base::TaskRunner> io_task_runner_;
+  scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_;
 
   base::mac::ScopedMachReceiveRight receive_port_;
   base::mac::ScopedMachSendRight send_port_;
@@ -709,7 +709,7 @@
     Channel::Delegate* delegate,
     ConnectionParams connection_params,
     Channel::HandlePolicy handle_policy,
-    scoped_refptr<base::TaskRunner> io_task_runner) {
+    scoped_refptr<base::SingleThreadTaskRunner> io_task_runner) {
   return new ChannelMac(delegate, std::move(connection_params), handle_policy,
                         io_task_runner);
 }
diff --git a/mojo/core/channel_mac_fuzzer.cc b/mojo/core/channel_mac_fuzzer.cc
index 8b2382a..592ce25 100644
--- a/mojo/core/channel_mac_fuzzer.cc
+++ b/mojo/core/channel_mac_fuzzer.cc
@@ -26,7 +26,7 @@
     logging::SetMinLogLevel(logging::LOG_FATAL);
   }
 
-  scoped_refptr<base::TaskRunner> io_task_runner() {
+  scoped_refptr<base::SingleThreadTaskRunner> io_task_runner() {
     return io_task_executor_.task_runner();
   }
 
diff --git a/mojo/core/channel_posix.cc b/mojo/core/channel_posix.cc
index a821eba..7b52b42 100644
--- a/mojo/core/channel_posix.cc
+++ b/mojo/core/channel_posix.cc
@@ -98,7 +98,7 @@
   ChannelPosix(Delegate* delegate,
                ConnectionParams connection_params,
                HandlePolicy handle_policy,
-               scoped_refptr<base::TaskRunner> io_task_runner)
+               scoped_refptr<base::SingleThreadTaskRunner> io_task_runner)
       : Channel(delegate, handle_policy),
         self_(this),
         io_task_runner_(io_task_runner) {
@@ -552,7 +552,7 @@
   // or accepted over |server_|.
   base::ScopedFD socket_;
 
-  scoped_refptr<base::TaskRunner> io_task_runner_;
+  scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_;
 
   // These watchers must only be accessed on the IO thread.
   std::unique_ptr<base::MessagePumpForIO::FdWatchController> read_watcher_;
@@ -583,7 +583,7 @@
     Delegate* delegate,
     ConnectionParams connection_params,
     HandlePolicy handle_policy,
-    scoped_refptr<base::TaskRunner> io_task_runner) {
+    scoped_refptr<base::SingleThreadTaskRunner> io_task_runner) {
   return new ChannelPosix(delegate, std::move(connection_params), handle_policy,
                           io_task_runner);
 }
diff --git a/mojo/core/channel_unittest.cc b/mojo/core/channel_unittest.cc
index b3841913..097c979f 100644
--- a/mojo/core/channel_unittest.cc
+++ b/mojo/core/channel_unittest.cc
@@ -196,7 +196,7 @@
  public:
   ChannelTestShutdownAndWriteDelegate(
       PlatformChannelEndpoint endpoint,
-      scoped_refptr<base::TaskRunner> task_runner,
+      scoped_refptr<base::SingleThreadTaskRunner> task_runner,
       scoped_refptr<Channel> client_channel,
       std::unique_ptr<base::Thread> client_thread,
       base::RepeatingClosure quit_closure)
diff --git a/mojo/core/channel_win.cc b/mojo/core/channel_win.cc
index a927dbb..7b66eae 100644
--- a/mojo/core/channel_win.cc
+++ b/mojo/core/channel_win.cc
@@ -36,7 +36,7 @@
   ChannelWin(Delegate* delegate,
              ConnectionParams connection_params,
              HandlePolicy handle_policy,
-             scoped_refptr<base::TaskRunner> io_task_runner)
+             scoped_refptr<base::SingleThreadTaskRunner> io_task_runner)
       : Channel(delegate, handle_policy),
         self_(this),
         io_task_runner_(io_task_runner) {
@@ -357,7 +357,7 @@
   // Indicates whether |handle_| must wait for a connection.
   bool needs_connection_ = false;
 
-  const scoped_refptr<base::TaskRunner> io_task_runner_;
+  const scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_;
 
   base::MessagePumpForIO::IOContext connect_context_;
   base::MessagePumpForIO::IOContext read_context_;
@@ -384,7 +384,7 @@
     Delegate* delegate,
     ConnectionParams connection_params,
     HandlePolicy handle_policy,
-    scoped_refptr<base::TaskRunner> io_task_runner) {
+    scoped_refptr<base::SingleThreadTaskRunner> io_task_runner) {
   return new ChannelWin(delegate, std::move(connection_params), handle_policy,
                         io_task_runner);
 }
diff --git a/mojo/core/core.cc b/mojo/core/core.cc
index d923787..27e88aa81 100644
--- a/mojo/core/core.cc
+++ b/mojo/core/core.cc
@@ -59,7 +59,7 @@
 constexpr base::StringPiece kIsolatedInvitationPipeName = {"\0\0\0\0", 4};
 
 void InvokeProcessErrorCallbackOnTaskRunner(
-    scoped_refptr<base::TaskRunner> task_runner,
+    scoped_refptr<base::SequencedTaskRunner> task_runner,
     MojoProcessErrorHandler handler,
     uintptr_t context,
     const std::string& error,
@@ -93,7 +93,7 @@
 // -- see Core::SendInvitation) will be destroyed.
 class ProcessDisconnectHandler {
  public:
-  ProcessDisconnectHandler(scoped_refptr<base::TaskRunner> task_runner,
+  ProcessDisconnectHandler(scoped_refptr<base::SequencedTaskRunner> task_runner,
                            MojoProcessErrorHandler handler,
                            uintptr_t context)
       : task_runner_(std::move(task_runner)),
@@ -107,18 +107,19 @@
   }
 
  private:
-  const scoped_refptr<base::TaskRunner> task_runner_;
+  const scoped_refptr<base::SequencedTaskRunner> task_runner_;
   const MojoProcessErrorHandler handler_;
   const uintptr_t context_;
 
   DISALLOW_COPY_AND_ASSIGN(ProcessDisconnectHandler);
 };
 
-void RunMojoProcessErrorHandler(ProcessDisconnectHandler* disconnect_handler,
-                                scoped_refptr<base::TaskRunner> task_runner,
-                                MojoProcessErrorHandler handler,
-                                uintptr_t context,
-                                const std::string& error) {
+void RunMojoProcessErrorHandler(
+    ProcessDisconnectHandler* disconnect_handler,
+    scoped_refptr<base::SequencedTaskRunner> task_runner,
+    MojoProcessErrorHandler handler,
+    uintptr_t context,
+    const std::string& error) {
   InvokeProcessErrorCallbackOnTaskRunner(task_runner, handler, context, error,
                                          MOJO_PROCESS_ERROR_FLAG_NONE);
 }
@@ -136,8 +137,7 @@
     // If this races with IO thread shutdown the callback will be dropped and
     // the NodeController will be shutdown on this thread anyway, which is also
     // just fine.
-    scoped_refptr<base::TaskRunner> io_task_runner =
-        node_controller_->io_task_runner();
+    auto io_task_runner = node_controller_->io_task_runner();
     io_task_runner->PostTask(FROM_HERE,
                              base::BindOnce(&Core::PassNodeControllerToIOThread,
                                             std::move(node_controller_)));
@@ -146,8 +146,9 @@
       ->UnregisterAndDeleteDumpProviderSoon(std::move(handles_));
 }
 
-void Core::SetIOTaskRunner(scoped_refptr<base::TaskRunner> io_task_runner) {
-  GetNodeController()->SetIOTaskRunner(io_task_runner);
+void Core::SetIOTaskRunner(
+    scoped_refptr<base::SingleThreadTaskRunner> io_task_runner) {
+  GetNodeController()->SetIOTaskRunner(std::move(io_task_runner));
 }
 
 NodeController* Core::GetNodeController() {
diff --git a/mojo/core/core.h b/mojo/core/core.h
index c134af8..eaed40c 100644
--- a/mojo/core/core.h
+++ b/mojo/core/core.h
@@ -12,8 +12,8 @@
 #include "base/callback.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
+#include "base/single_thread_task_runner.h"
 #include "base/synchronization/lock.h"
-#include "base/task_runner.h"
 #include "build/build_config.h"
 #include "mojo/core/dispatcher.h"
 #include "mojo/core/handle_signals_state.h"
@@ -45,7 +45,8 @@
 
   // Called exactly once, shortly after construction, and before any other
   // methods are called on this object.
-  void SetIOTaskRunner(scoped_refptr<base::TaskRunner> io_task_runner);
+  void SetIOTaskRunner(
+      scoped_refptr<base::SingleThreadTaskRunner> io_task_runner);
 
   // Retrieves the NodeController for the current process.
   NodeController* GetNodeController();
diff --git a/mojo/core/embedder/scoped_ipc_support.cc b/mojo/core/embedder/scoped_ipc_support.cc
index f6f90c80..4bfbc9e 100644
--- a/mojo/core/embedder/scoped_ipc_support.cc
+++ b/mojo/core/embedder/scoped_ipc_support.cc
@@ -22,10 +22,10 @@
 }  // namespace
 
 ScopedIPCSupport::ScopedIPCSupport(
-    scoped_refptr<base::TaskRunner> io_thread_task_runner,
+    scoped_refptr<base::SingleThreadTaskRunner> io_thread_task_runner,
     ShutdownPolicy shutdown_policy)
     : shutdown_policy_(shutdown_policy) {
-  Core::Get()->SetIOTaskRunner(io_thread_task_runner);
+  Core::Get()->SetIOTaskRunner(std::move(io_thread_task_runner));
 }
 
 ScopedIPCSupport::~ScopedIPCSupport() {
diff --git a/mojo/core/embedder/scoped_ipc_support.h b/mojo/core/embedder/scoped_ipc_support.h
index 8afcd00d..aba6e712 100644
--- a/mojo/core/embedder/scoped_ipc_support.h
+++ b/mojo/core/embedder/scoped_ipc_support.h
@@ -9,7 +9,7 @@
 #include "base/memory/ref_counted.h"
 
 namespace base {
-class TaskRunner;
+class SingleThreadTaskRunner;
 }
 
 namespace mojo {
@@ -102,8 +102,9 @@
     FAST,
   };
 
-  ScopedIPCSupport(scoped_refptr<base::TaskRunner> io_thread_task_runner,
-                   ShutdownPolicy shutdown_policy);
+  ScopedIPCSupport(
+      scoped_refptr<base::SingleThreadTaskRunner> io_thread_task_runner,
+      ShutdownPolicy shutdown_policy);
   ~ScopedIPCSupport();
 
  private:
diff --git a/mojo/core/node_channel.cc b/mojo/core/node_channel.cc
index 3baa524..b9246d35 100644
--- a/mojo/core/node_channel.cc
+++ b/mojo/core/node_channel.cc
@@ -169,7 +169,7 @@
     Delegate* delegate,
     ConnectionParams connection_params,
     Channel::HandlePolicy channel_handle_policy,
-    scoped_refptr<base::TaskRunner> io_task_runner,
+    scoped_refptr<base::SingleThreadTaskRunner> io_task_runner,
     const ProcessErrorCallback& process_error_callback) {
 #if defined(OS_NACL_SFI)
   LOG(FATAL) << "Multi-process not yet supported on NaCl-SFI";
@@ -462,11 +462,12 @@
 }
 #endif  // defined(OS_WIN)
 
-NodeChannel::NodeChannel(Delegate* delegate,
-                         ConnectionParams connection_params,
-                         Channel::HandlePolicy channel_handle_policy,
-                         scoped_refptr<base::TaskRunner> io_task_runner,
-                         const ProcessErrorCallback& process_error_callback)
+NodeChannel::NodeChannel(
+    Delegate* delegate,
+    ConnectionParams connection_params,
+    Channel::HandlePolicy channel_handle_policy,
+    scoped_refptr<base::SingleThreadTaskRunner> io_task_runner,
+    const ProcessErrorCallback& process_error_callback)
     : delegate_(delegate),
       io_task_runner_(io_task_runner),
       process_error_callback_(process_error_callback)
diff --git a/mojo/core/node_channel.h b/mojo/core/node_channel.h
index 94ff025d..ab392c5 100644
--- a/mojo/core/node_channel.h
+++ b/mojo/core/node_channel.h
@@ -13,8 +13,8 @@
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/process/process_handle.h"
+#include "base/single_thread_task_runner.h"
 #include "base/synchronization/lock.h"
-#include "base/task_runner.h"
 #include "build/build_config.h"
 #include "mojo/core/channel.h"
 #include "mojo/core/connection_params.h"
@@ -80,7 +80,7 @@
       Delegate* delegate,
       ConnectionParams connection_params,
       Channel::HandlePolicy channel_handle_policy,
-      scoped_refptr<base::TaskRunner> io_task_runner,
+      scoped_refptr<base::SingleThreadTaskRunner> io_task_runner,
       const ProcessErrorCallback& process_error_callback);
 
   static Channel::MessagePtr CreateEventMessage(size_t capacity,
@@ -159,7 +159,7 @@
   NodeChannel(Delegate* delegate,
               ConnectionParams connection_params,
               Channel::HandlePolicy channel_handle_policy,
-              scoped_refptr<base::TaskRunner> io_task_runner,
+              scoped_refptr<base::SingleThreadTaskRunner> io_task_runner,
               const ProcessErrorCallback& process_error_callback);
   ~NodeChannel() override;
 
@@ -176,7 +176,7 @@
   void WriteChannelMessage(Channel::MessagePtr message);
 
   Delegate* const delegate_;
-  const scoped_refptr<base::TaskRunner> io_task_runner_;
+  const scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_;
   const ProcessErrorCallback process_error_callback_;
 
   base::Lock channel_lock_;
diff --git a/mojo/core/node_controller.cc b/mojo/core/node_controller.cc
index 9b878dc..58dfda0 100644
--- a/mojo/core/node_controller.cc
+++ b/mojo/core/node_controller.cc
@@ -110,7 +110,7 @@
 class ThreadDestructionObserver
     : public base::MessageLoopCurrent::DestructionObserver {
  public:
-  static void Create(scoped_refptr<base::TaskRunner> task_runner,
+  static void Create(scoped_refptr<base::SingleThreadTaskRunner> task_runner,
                      base::OnceClosure callback) {
     if (task_runner->RunsTasksInCurrentSequence()) {
       // Owns itself.
@@ -154,7 +154,7 @@
 }
 
 void NodeController::SetIOTaskRunner(
-    scoped_refptr<base::TaskRunner> task_runner) {
+    scoped_refptr<base::SingleThreadTaskRunner> task_runner) {
   io_task_runner_ = task_runner;
   ThreadDestructionObserver::Create(
       io_task_runner_,
diff --git a/mojo/core/node_controller.h b/mojo/core/node_controller.h
index 9129781..12b3838 100644
--- a/mojo/core/node_controller.h
+++ b/mojo/core/node_controller.h
@@ -20,7 +20,7 @@
 #include "base/memory/ref_counted.h"
 #include "base/memory/writable_shared_memory_region.h"
 #include "base/optional.h"
-#include "base/task_runner.h"
+#include "base/single_thread_task_runner.h"
 #include "build/build_config.h"
 #include "mojo/core/atomic_flag.h"
 #include "mojo/core/node_channel.h"
@@ -58,13 +58,14 @@
   const ports::NodeName& name() const { return name_; }
   Core* core() const { return core_; }
   ports::Node* node() const { return node_.get(); }
-  scoped_refptr<base::TaskRunner> io_task_runner() const {
+  scoped_refptr<base::SingleThreadTaskRunner> io_task_runner() const {
     return io_task_runner_;
   }
 
   // Called exactly once, shortly after construction, and before any other
   // methods are called on this object.
-  void SetIOTaskRunner(scoped_refptr<base::TaskRunner> io_task_runner);
+  void SetIOTaskRunner(
+      scoped_refptr<base::SingleThreadTaskRunner> io_task_runner);
 
   // Sends an invitation to a remote process (via |connection_params|) to join
   // this process's graph of connected processes as a broker client.
@@ -252,7 +253,7 @@
   Core* const core_;
   const ports::NodeName name_;
   const std::unique_ptr<ports::Node> node_;
-  scoped_refptr<base::TaskRunner> io_task_runner_;
+  scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_;
 
   // Guards |peers_| and |pending_peer_messages_|.
   base::Lock peers_lock_;
diff --git a/mojo/public/cpp/bindings/connection_group.cc b/mojo/public/cpp/bindings/connection_group.cc
index 97e0031..fc3f48f9 100644
--- a/mojo/public/cpp/bindings/connection_group.cc
+++ b/mojo/public/cpp/bindings/connection_group.cc
@@ -66,13 +66,14 @@
 // static
 ConnectionGroup::Ref ConnectionGroup::Create(
     base::RepeatingClosure callback,
-    scoped_refptr<base::TaskRunner> task_runner) {
+    scoped_refptr<base::SequencedTaskRunner> task_runner) {
   return Ref(base::WrapRefCounted(
       new ConnectionGroup(std::move(callback), std::move(task_runner))));
 }
 
-ConnectionGroup::ConnectionGroup(base::RepeatingClosure callback,
-                                 scoped_refptr<base::TaskRunner> task_runner)
+ConnectionGroup::ConnectionGroup(
+    base::RepeatingClosure callback,
+    scoped_refptr<base::SequencedTaskRunner> task_runner)
     : notification_callback_(std::move(callback)),
       notification_task_runner_(std::move(task_runner)) {}
 
diff --git a/mojo/public/cpp/bindings/connection_group.h b/mojo/public/cpp/bindings/connection_group.h
index 82b03db..ca3f8f21 100644
--- a/mojo/public/cpp/bindings/connection_group.h
+++ b/mojo/public/cpp/bindings/connection_group.h
@@ -11,7 +11,7 @@
 #include "base/component_export.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
-#include "base/task_runner.h"
+#include "base/sequenced_task_runner.h"
 
 namespace mojo {
 
@@ -83,7 +83,7 @@
   // to zero, |callback| is invoked on |task_runner|. If |task_runner| is null
   // (useless except perhaps in tests), |callback| is ignored.
   static Ref Create(base::RepeatingClosure callback,
-                    scoped_refptr<base::TaskRunner> task_runner);
+                    scoped_refptr<base::SequencedTaskRunner> task_runner);
 
   unsigned int GetNumRefsForTesting() const { return num_refs_; }
 
@@ -92,7 +92,7 @@
   friend class Ref;
 
   ConnectionGroup(base::RepeatingClosure callback,
-                  scoped_refptr<base::TaskRunner> task_runner);
+                  scoped_refptr<base::SequencedTaskRunner> task_runner);
   virtual ~ConnectionGroup();
 
   void AddGroupRef();
@@ -100,7 +100,7 @@
   void SetParentGroup(Ref parent_group);
 
   const base::RepeatingClosure notification_callback_;
-  const scoped_refptr<base::TaskRunner> notification_task_runner_;
+  const scoped_refptr<base::SequencedTaskRunner> notification_task_runner_;
 
   // A reference to this group's parent group, if any.
   Ref parent_group_;
diff --git a/mojo/public/interfaces/bindings/tests/BUILD.gn b/mojo/public/interfaces/bindings/tests/BUILD.gn
index e30fbae..8921a939 100644
--- a/mojo/public/interfaces/bindings/tests/BUILD.gn
+++ b/mojo/public/interfaces/bindings/tests/BUILD.gn
@@ -7,8 +7,8 @@
 group("test_data_deps") {
   testonly = true
   data_deps = [
-    ":test_interfaces_js_data_deps",
     ":test_associated_interfaces_js_data_deps",
+    ":test_interfaces_js_data_deps",
     ":validation_test_data",
     ":validation_test_data_list",
   ]
diff --git a/mojo/public/tools/bindings/chromium_bindings_configuration.gni b/mojo/public/tools/bindings/chromium_bindings_configuration.gni
index 35840ba..677b4fa8 100644
--- a/mojo/public/tools/bindings/chromium_bindings_configuration.gni
+++ b/mojo/public/tools/bindings/chromium_bindings_configuration.gni
@@ -11,6 +11,7 @@
   "//chromecast/typemaps.gni",
   "//chromeos/typemaps.gni",
   "//chromeos/components/multidevice/mojom/typemaps.gni",
+  "//chromeos/services/cros_healthd/public/mojom/typemaps.gni",
   "//chromeos/services/device_sync/public/mojom/typemaps.gni",
   "//chromeos/services/network_config/public/mojom/typemaps.gni",
   "//chromeos/services/secure_channel/public/mojom/typemaps.gni",
diff --git a/mojo/public/tools/bindings/mojom.gni b/mojo/public/tools/bindings/mojom.gni
index 1283a41..273a3e17 100644
--- a/mojo/public/tools/bindings/mojom.gni
+++ b/mojo/public/tools/bindings/mojom.gni
@@ -71,9 +71,9 @@
 mojom_generator_script = "$mojom_generator_root/mojom_bindings_generator.py"
 mojom_generator_sources = [
   "$mojom_generator_root/generators/mojom_cpp_generator.py",
+  "$mojom_generator_root/generators/mojom_java_generator.py",
   "$mojom_generator_root/generators/mojom_js_generator.py",
   "$mojom_generator_root/generators/mojom_ts_generator.py",
-  "$mojom_generator_root/generators/mojom_java_generator.py",
   "$mojom_generator_root/pylib/mojom/__init__.py",
   "$mojom_generator_root/pylib/mojom/error.py",
   "$mojom_generator_root/pylib/mojom/generate/__init__.py",
diff --git a/net/BUILD.gn b/net/BUILD.gn
index af1e65c..39255bb 100644
--- a/net/BUILD.gn
+++ b/net/BUILD.gn
@@ -2507,6 +2507,7 @@
     "data/ssl/certificates/825_days_1_second_after_2018_03_01.pem",
     "data/ssl/certificates/825_days_after_2018_03_01.pem",
     "data/ssl/certificates/826_days_after_2018_03_01.pem",
+    "data/ssl/certificates/900_days_after_2019_07_01.pem",
     "data/ssl/certificates/BUILD.gn",
     "data/ssl/certificates/README",
     "data/ssl/certificates/aia-cert.pem",
@@ -2923,8 +2924,6 @@
       "test/url_request/url_request_mock_http_job.h",
       "test/url_request/url_request_test_job_backed_by_file.cc",
       "test/url_request/url_request_test_job_backed_by_file.h",
-      "url_request/test_url_request_interceptor.cc",
-      "url_request/test_url_request_interceptor.h",
     ]
   }
 
diff --git a/net/android/BUILD.gn b/net/android/BUILD.gn
index ce7b43a..0df37035 100644
--- a/net/android/BUILD.gn
+++ b/net/android/BUILD.gn
@@ -37,8 +37,8 @@
   ]
   annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
   srcjar_deps = [
-    ":net_errors_java",
     ":net_android_java_enums_srcjar",
+    ":net_errors_java",
   ]
 }
 
diff --git a/net/base/directory_lister.h b/net/base/directory_lister.h
index 3f8b5418..c986273 100644
--- a/net/base/directory_lister.h
+++ b/net/base/directory_lister.h
@@ -16,7 +16,7 @@
 #include "net/base/net_export.h"
 
 namespace base {
-class TaskRunner;
+class SequencedTaskRunner;
 }
 
 namespace net {
@@ -111,7 +111,7 @@
 
     const base::FilePath dir_;
     const ListingType type_;
-    const scoped_refptr<base::TaskRunner> origin_task_runner_;
+    const scoped_refptr<base::SequencedTaskRunner> origin_task_runner_;
 
     // Only used on the origin thread.
     DirectoryLister* lister_;
diff --git a/net/base/prioritized_task_runner.cc b/net/base/prioritized_task_runner.cc
index a0f04863..112a58f 100644
--- a/net/base/prioritized_task_runner.cc
+++ b/net/base/prioritized_task_runner.cc
@@ -48,15 +48,13 @@
 
   task_runner_->PostTaskAndReply(
       from_here,
-      base::BindOnce(&PrioritizedTaskRunner::RunPostTaskAndReply, this),
+      base::BindOnce(&PrioritizedTaskRunner::RunTaskAndPostReply, this),
       base::BindOnce(&PrioritizedTaskRunner::RunReply, this));
 }
 
 PrioritizedTaskRunner::~PrioritizedTaskRunner() = default;
 
-void PrioritizedTaskRunner::RunPostTaskAndReply() {
-  DCHECK(task_runner_->RunsTasksInCurrentSequence());
-
+void PrioritizedTaskRunner::RunTaskAndPostReply() {
   // Find the next job to run.
   Job job;
   {
diff --git a/net/base/prioritized_task_runner.h b/net/base/prioritized_task_runner.h
index 33014e46..8fa34f3 100644
--- a/net/base/prioritized_task_runner.h
+++ b/net/base/prioritized_task_runner.h
@@ -111,7 +111,7 @@
     }
   };
 
-  void RunPostTaskAndReply();
+  void RunTaskAndPostReply();
   void RunReply();
 
   ~PrioritizedTaskRunner();
diff --git a/net/base/prioritized_task_runner_unittest.cc b/net/base/prioritized_task_runner_unittest.cc
index d4cf712..cfe9df792 100644
--- a/net/base/prioritized_task_runner_unittest.cc
+++ b/net/base/prioritized_task_runner_unittest.cc
@@ -113,11 +113,12 @@
 
   base::RunLoop run_loop;
 
-  auto thread_check = [](scoped_refptr<base::TaskRunner> expected_task_runner,
-                         base::OnceClosure callback) {
-    EXPECT_TRUE(expected_task_runner->RunsTasksInCurrentSequence());
-    std::move(callback).Run();
-  };
+  auto thread_check =
+      [](scoped_refptr<base::SequencedTaskRunner> expected_task_runner,
+         base::OnceClosure callback) {
+        EXPECT_TRUE(expected_task_runner->RunsTasksInCurrentSequence());
+        std::move(callback).Run();
+      };
 
   prioritized_task_runner->PostTaskAndReply(
       FROM_HERE,
diff --git a/net/cert/cert_verify_proc_blocklist.inc b/net/cert/cert_verify_proc_blocklist.inc
index 4dcccc8..cc1a0bc 100644
--- a/net/cert/cert_verify_proc_blocklist.inc
+++ b/net/cert/cert_verify_proc_blocklist.inc
@@ -319,8 +319,21 @@
         {0xc6, 0x91, 0x0d, 0x0b, 0xa9, 0xed, 0xdf, 0x59, 0x33, 0x34, 0x14,
          0x9f, 0xed, 0xfe, 0x87, 0x38, 0x5f, 0x37, 0xb6, 0x25, 0x35, 0x4b,
          0xb4, 0x39, 0x5c, 0x0a, 0xe2, 0xc8, 0xdf, 0x48, 0xe1, 0x7c},
+        // 44a244105569a730791f509b24c3d7838a462216bb0f560ef87fbe76c2e6005a.pem
+        {0xb0, 0xfc, 0xce, 0x78, 0xc1, 0x66, 0x4e, 0x29, 0x35, 0x44, 0xc1,
+         0x43, 0xe3, 0xd2, 0x68, 0x9f, 0x72, 0x3f, 0x5b, 0x6e, 0x63, 0x17,
+         0x10, 0x7e, 0x16, 0x3d, 0x22, 0xba, 0x80, 0x69, 0x79, 0x4a},
 };
 
 // Hashes of SubjectPublicKeyInfos known to be used for interception by a
 // party other than the device or machine owner.
-static constexpr uint8_t kKnownInterceptionList[0][crypto::kSHA256Length] = {};
+static constexpr uint8_t kKnownInterceptionList[][crypto::kSHA256Length] = {
+    // 143315c857a9386973ed16840899c3f96b894a7a612c444efb691f14b0dedd87.pem
+    {0xa4, 0xe9, 0xaf, 0x01, 0x41, 0x6e, 0x3a, 0x02, 0x9b, 0x5d, 0x35, 0xe5,
+     0xb1, 0x19, 0xde, 0x00, 0xcf, 0xe1, 0x56, 0xc5, 0xcf, 0x95, 0xfc, 0x82,
+     0x3c, 0xf6, 0xd0, 0x5e, 0x3c, 0x1a, 0x82, 0x37},
+    // 44a244105569a730791f509b24c3d7838a462216bb0f560ef87fbe76c2e6005a.pem
+    {0xb0, 0xfc, 0xce, 0x78, 0xc1, 0x66, 0x4e, 0x29, 0x35, 0x44, 0xc1, 0x43,
+     0xe3, 0xd2, 0x68, 0x9f, 0x72, 0x3f, 0x5b, 0x6e, 0x63, 0x17, 0x10, 0x7e,
+     0x16, 0x3d, 0x22, 0xba, 0x80, 0x69, 0x79, 0x4a},
+};
diff --git a/net/cert/cert_verify_proc_mac.cc b/net/cert/cert_verify_proc_mac.cc
index 3c1b5b85..2753a150 100644
--- a/net/cert/cert_verify_proc_mac.cc
+++ b/net/cert/cert_verify_proc_mac.cc
@@ -81,7 +81,134 @@
   }
 }
 
-CertStatus CertStatusFromOSStatus(OSStatus status) {
+// Beginning with macOS 10.13, certificate verification is dispatched
+// to trustd, which uses OSStatus internally to track errors, and
+// then maps the internal codes into CSSM codes for applications still
+// calling the deprecated (since 10.7) APIs.
+//
+// The mapping is maintained in SecPolicyChecks.list, to see the
+// checks applied to leaves/intermediates/roots/chains and what
+// failure of those checks will cause, both the OSStatus and the
+// mapped CSSM error code.
+//
+// Not all checks in the table are applicable; some only apply to
+// Apple-specific services (e.g. iTunes checking for an Apple
+// policy), so only those applicable to TLS are mapped here.
+//
+// The downside is that it does mean that as Apple introduces
+// additional checks (e.g. as done in 10.15), any failures of these
+// checks are initially mapped to ERR_CERT_INVALID for safety, even
+// if there may be a more applicable CertStatus code.
+CertStatus CertStatusFromOSStatusAtLeastOS10_13(OSStatus status) {
+  switch (status) {
+    case noErr:
+      return 0;
+
+    case CSSMERR_APPLETP_HOSTNAME_MISMATCH:
+      return CERT_STATUS_COMMON_NAME_INVALID;
+
+    case CSSMERR_TP_CERT_EXPIRED:
+    case CSSMERR_TP_CERT_NOT_VALID_YET:
+      return CERT_STATUS_DATE_INVALID;
+
+    case CSSMERR_APPLETP_TRUST_SETTING_DENY:
+    case CSSMERR_TP_NOT_TRUSTED:
+    // CSSMERR_TP_VERIFY_ACTION_FAILED is used when CT is required
+    // and not present. The OS rejected this chain, and so mapping
+    // to CERT_STATUS_CT_COMPLIANCE_FAILED (which is informational,
+    // as policy enforcement is not handled in the CertVerifier)
+    // would cause this error to be ignored and mapped to
+    // CERT_STATUS_INVALID. Rather than do that, mark it simply as
+    // "untrusted". The CT_COMPLIANCE_FAILED bit is not set, since
+    // it's not necessarily a compliance failure with the embedder's
+    // CT policy. It's a bit of a hack, but hopefully temporary.
+    // TP_NOT_TRUSTED is somewhat similar. It applies for
+    // situations where a root isn't trusted or an intermediate
+    // isn't trusted, when a key is restricted, or when the calling
+    // application requested CT enforcement (which CertVerifier
+    // should never being doing).
+    case CSSMERR_TP_VERIFY_ACTION_FAILED:
+      return CERT_STATUS_AUTHORITY_INVALID;
+
+    case CSSMERR_APPLETP_INVALID_AUTHORITY_ID:
+    case CSSMERR_APPLETP_INVALID_CA:
+    case CSSMERR_APPLETP_INVALID_EMPTY_SUBJECT:
+    case CSSMERR_APPLETP_INVALID_EXTENDED_KEY_USAGE:
+    case CSSMERR_APPLETP_INVALID_KEY_USAGE:
+    case CSSMERR_APPLETP_MISSING_REQUIRED_EXTENSION:
+    case CSSMERR_APPLETP_NO_BASIC_CONSTRAINTS:
+    case CSSMERR_APPLETP_PATH_LEN_CONSTRAINT:
+    case CSSMERR_APPLETP_UNKNOWN_CERT_EXTEN:
+    case CSSMERR_APPLETP_UNKNOWN_CRITICAL_EXTEN:
+    case CSSMERR_CSP_ALGID_MISMATCH:
+    // INVALID_POLICY_IDENTIFIERS and INVALID_NAME are used for
+    // certificates that violate the constraints imposed upon the
+    // issuer. Nominally this could be mapped to
+    // CERT_STATUS_AUTHORITY_INVALID, except the trustd behaviour
+    // is to treat this as a fatal (non-recoverable) error. That
+    // behavior is preserved here for consistency with Safari.
+    case CSSMERR_TP_INVALID_POLICY_IDENTIFIERS:
+    case CSSMERR_TP_INVALID_NAME:
+      return CERT_STATUS_INVALID;
+
+    // In trustd, an unsupported algorithm is CSP_ALGID_MISMATCH,
+    // which should cause a path building failure, while supported
+    // but weak algorithms use this code.
+    case CSSMERR_CSP_INVALID_DIGEST_ALGORITHM:
+      return CERT_STATUS_WEAK_SIGNATURE_ALGORITHM;
+
+    // In trustd, certificates that are too weak to process, period,
+    // are mapped to INVALID_CERTIFICATE. However, certificates which
+    // are too weak according to compliance policies (e.g. restrictions
+    // for publicly trusted certificates) are mapped to UNSUPPORTED_KEY_SIZE.
+    case CSSMERR_CSP_UNSUPPORTED_KEY_SIZE:
+      return CERT_STATUS_WEAK_KEY;
+
+    case CSSMERR_TP_CERT_REVOKED:
+      return CERT_STATUS_REVOKED;
+
+    case CSSMERR_APPLETP_INCOMPLETE_REVOCATION_CHECK:
+      return CERT_STATUS_UNABLE_TO_CHECK_REVOCATION;
+
+    // In the trustd world, if a CRL suspends a certificate,
+    // that's signaled by TP_CERT_REVOKED, with the revocation
+    // reason available in the error details dictionary. The
+    // SUSPENDED error is repurposed to indicate failure to
+    // comply with the macOS 10.15+ limits on certificate
+    // lifetimes - https://support.apple.com/en-us/HT210176
+    case CSSMERR_TP_CERT_SUSPENDED:
+      return CERT_STATUS_VALIDITY_TOO_LONG;
+
+    // CSSMERR_TP_INVALID_CERTIFICATE is unfortunate. It may be
+    // used to signal a weak key (CERT_STATUS_WEAK_KEY), which
+    // would be accompanied by a kSecTrustResultFatalTrustFailure, while
+    // the other situations (such as an invalid certificate, a
+    // name constraint violation, or a policy constraint violation)
+    // would be accompanied by a kSecTrustResultRecoverableTrustFailure.
+    // However, CertVerifier treats these as inverted: name constraint or
+    // policy violations are fatal (CERT_STATUS_INVALID), while WEAK_KEY
+    // may be recoverable.
+    // Further, because macOS attempts to gather all the errors, a different
+    // fatal error may have occurred elsewhere in the chain, so the overall
+    // result can't be used to distinguish individual certificate errors.
+    // For this complicated reason, the weak key case is mapped to
+    // CERT_STATUS_INVALID for safety, rather than mapping the policy
+    // violations as weak keys.
+    case CSSMERR_TP_INVALID_CERTIFICATE:
+      return CERT_STATUS_INVALID;
+
+    default: {
+      // Failure was due to something Chromium doesn't define a
+      // specific status for (such as basic constraints violation, or
+      // unknown critical extension)
+      OSSTATUS_LOG(WARNING, status)
+          << "Unknown error mapped to CERT_STATUS_INVALID";
+      return CERT_STATUS_INVALID;
+    }
+  }
+}
+
+CertStatus CertStatusFromOSStatusAtMostOS10_12(OSStatus status) {
   switch (status) {
     case noErr:
       return 0;
@@ -143,7 +270,6 @@
       return CERT_STATUS_UNABLE_TO_CHECK_REVOCATION;
 
     case CSSMERR_APPLETP_SSL_BAD_EXT_KEY_USE:
-      // TODO(wtc): Should we add CERT_STATUS_WRONG_USAGE?
       return CERT_STATUS_INVALID;
 
     case errSecInternalError:
@@ -171,6 +297,13 @@
   }
 }
 
+CertStatus CertStatusFromOSStatus(OSStatus status) {
+  if (base::mac::IsAtLeastOS10_13()) {
+    return CertStatusFromOSStatusAtLeastOS10_13(status);
+  }
+  return CertStatusFromOSStatusAtMostOS10_12(status);
+}
+
 // Creates a series of SecPolicyRefs to be added to a SecTrustRef used to
 // validate a certificate for an SSL server. |flags| is a bitwise-OR of
 // VerifyFlags that can further alter how trust is validated, such as how
@@ -976,13 +1109,22 @@
       verify_result->cert_status |= CERT_STATUS_AUTHORITY_INVALID;
       break;
 
+    case kSecTrustResultFatalTrustFailure:
+      // Certificate chain has a failure that cannot be overridden by the user.
     case kSecTrustResultRecoverableTrustFailure:
       // Certificate chain has a failure that can be overridden by the user.
-      if (cssm_result == CSSMERR_TP_VERIFY_ACTION_FAILED) {
+
+      // Prior to 10.13, a violation of key size restrictions would, at minimum,
+      // result in a TP_VERIFY_ACTION_FAILED error. In 10.13+, this error has
+      // different semantics, and weak keys can no longer be distinguished
+      // as such.
+      if (base::mac::IsAtMostOS10_12() &&
+          cssm_result == CSSMERR_TP_VERIFY_ACTION_FAILED) {
         policy_failed = true;
       } else {
         verify_result->cert_status |= CertStatusFromOSStatus(cssm_result);
       }
+
       // Walk the chain of error codes in the CSSM_TP_APPLE_EVIDENCE_INFO
       // structure which can catch multiple errors from each certificate.
       for (CFIndex index = 0, chain_count = CFArrayGetCount(completed_chain);
@@ -1015,11 +1157,10 @@
             mapped_status = CERT_STATUS_WEAK_SIGNATURE_ALGORITHM;
             weak_key_or_signature_algorithm = true;
             policy_fail_already_mapped = true;
-          } else if (policy_failed &&
+          } else if (base::mac::IsOS10_12() && policy_failed &&
                      (flags & CertVerifyProc::VERIFY_REV_CHECKING_ENABLED) &&
                      chain_info[index].StatusCodes[status_code_index] ==
-                         CSSMERR_TP_VERIFY_ACTION_FAILED &&
-                     base::mac::IsOS10_12()) {
+                         CSSMERR_TP_VERIFY_ACTION_FAILED) {
             // On early versions of 10.12, using
             // kSecRevocationRequirePositiveResponse flag causes a
             // CSSMERR_TP_VERIFY_ACTION_FAILED status if revocation couldn't be
diff --git a/net/cert/cert_verify_proc_mac_unittest.cc b/net/cert/cert_verify_proc_mac_unittest.cc
index 6b2572a51..01d2a68 100644
--- a/net/cert/cert_verify_proc_mac_unittest.cc
+++ b/net/cert/cert_verify_proc_mac_unittest.cc
@@ -11,6 +11,7 @@
 #include "base/logging.h"
 #include "base/mac/mac_util.h"
 #include "base/macros.h"
+#include "base/memory/scoped_refptr.h"
 #include "net/base/net_errors.h"
 #include "net/cert/cert_verifier.h"
 #include "net/cert/cert_verify_result.h"
@@ -106,7 +107,8 @@
   int flags = 0;
   CertVerifyResult verify_result;
 
-  scoped_refptr<CertVerifyProc> verify_proc = new CertVerifyProcMac;
+  scoped_refptr<CertVerifyProc> verify_proc =
+      base::MakeRefCounted<CertVerifyProcMac>();
   int error = verify_proc->Verify(
       cert.get(), "127.0.0.1", /*ocsp_response=*/std::string(),
       /*sct_list=*/std::string(), flags, crl_set.get(), CertificateList(),
@@ -165,7 +167,8 @@
 
   int flags = 0;
   CertVerifyResult verify_result;
-  scoped_refptr<CertVerifyProc> verify_proc = new CertVerifyProcMac;
+  scoped_refptr<CertVerifyProc> verify_proc =
+      base::MakeRefCounted<CertVerifyProcMac>();
   int error = verify_proc->Verify(
       cert.get(), "gms.hongleong.com.my", /*ocsp_response=*/std::string(),
       /*sct_list=*/std::string(), flags, CRLSet::BuiltinCRLSet().get(),
@@ -213,7 +216,8 @@
   // large_key.pem may need to be regenerated with a larger key.
   int flags = 0;
   CertVerifyResult verify_result;
-  scoped_refptr<CertVerifyProc> verify_proc = new CertVerifyProcMac;
+  scoped_refptr<CertVerifyProc> verify_proc =
+      base::MakeRefCounted<CertVerifyProcMac>();
   int error = verify_proc->Verify(
       cert.get(), "127.0.0.1", /*ocsp_response=*/std::string(),
       /*sct_list=*/std::string(), flags, CRLSet::BuiltinCRLSet().get(),
@@ -222,6 +226,37 @@
   EXPECT_TRUE(verify_result.cert_status & CERT_STATUS_INVALID);
 }
 
+// Test that CertVerifierMac on 10.15+ appropriately flags certificates
+// that violate https://support.apple.com/en-us/HT210176 as having
+// too long validity, rather than being invalid certificates.
+TEST(CertVerifyProcMacTest, CertValidityTooLong) {
+  // Load root_ca_cert.pem into the test root store.
+  ScopedTestRoot test_root(
+      ImportCertFromFile(GetTestCertsDirectory(), "root_ca_cert.pem").get());
+
+  scoped_refptr<X509Certificate> cert(ImportCertFromFile(
+      GetTestCertsDirectory(), "900_days_after_2019_07_01.pem"));
+
+  int flags = 0;
+  CertVerifyResult verify_result;
+  scoped_refptr<CertVerifyProc> verify_proc =
+      base::MakeRefCounted<CertVerifyProcMac>();
+  int error = verify_proc->Verify(
+      cert.get(), "127.0.0.1", /*ocsp_response=*/std::string(),
+      /*sct_list=*/std::string(), flags, CRLSet::BuiltinCRLSet().get(),
+      CertificateList(), &verify_result);
+
+  if (base::mac::IsAtLeastOS10_15()) {
+    EXPECT_THAT(error, IsError(ERR_CERT_VALIDITY_TOO_LONG));
+    EXPECT_EQ((verify_result.cert_status & CERT_STATUS_ALL_ERRORS),
+              CERT_STATUS_VALIDITY_TOO_LONG);
+  } else {
+    EXPECT_THAT(error, IsOk());
+    EXPECT_FALSE(verify_result.cert_status & CERT_STATUS_VALIDITY_TOO_LONG);
+    EXPECT_FALSE(verify_result.cert_status & CERT_STATUS_INVALID);
+  }
+}
+
 }  // namespace
 
 }  // namespace net
diff --git a/net/cookies/canonical_cookie.cc b/net/cookies/canonical_cookie.cc
index b9743cc9..7a4d553 100644
--- a/net/cookies/canonical_cookie.cc
+++ b/net/cookies/canonical_cookie.cc
@@ -640,6 +640,8 @@
          (effective_same_site == CookieEffectiveSameSite::STRICT_MODE) ||
          (effective_same_site ==
           CookieEffectiveSameSite::LAX_MODE_ALLOW_UNSAFE))) {
+      // TODO(crbug.com/1034014): Change enum to one with less confusing
+      // phrasing.
       UMA_HISTOGRAM_ENUMERATION("Cookie.SameSiteDifferentSchemeResponse",
                                 options.same_site_cookie_context_full(),
                                 CookieOptions::SameSiteCookieContext::COUNT);
diff --git a/net/cookies/site_for_cookies.cc b/net/cookies/site_for_cookies.cc
index 4f978acc..8c152a6 100644
--- a/net/cookies/site_for_cookies.cc
+++ b/net/cookies/site_for_cookies.cc
@@ -5,6 +5,7 @@
 #include "net/cookies/site_for_cookies.h"
 
 #include "base/strings/strcat.h"
+#include "base/strings/string_util.h"
 #include "net/base/registry_controlled_domains/registry_controlled_domain.h"
 
 namespace net {
@@ -32,6 +33,24 @@
     default;
 
 // static
+bool SiteForCookies::FromWire(const std::string& scheme,
+                              const std::string& registrable_domain,
+                              SiteForCookies* out) {
+  // Make sure scheme meets precondition of methods like
+  // GURL::SchemeIsCryptographic.
+  if (!base::IsStringASCII(scheme) || base::ToLowerASCII(scheme) != scheme)
+    return false;
+
+  // registrable_domain_ should also be canonicalized.
+  SiteForCookies candidate(scheme, registrable_domain);
+  if (registrable_domain != candidate.registrable_domain_)
+    return false;
+
+  *out = std::move(candidate);
+  return true;
+}
+
+// static
 SiteForCookies SiteForCookies::FromOrigin(const url::Origin& origin) {
   // Opaque origins are not first-party to anything.
   if (origin.opaque())
diff --git a/net/cookies/site_for_cookies.h b/net/cookies/site_for_cookies.h
index 8c69867..680a9a1 100644
--- a/net/cookies/site_for_cookies.h
+++ b/net/cookies/site_for_cookies.h
@@ -42,6 +42,16 @@
   SiteForCookies& operator=(const SiteForCookies& other);
   SiteForCookies& operator=(SiteForCookies&& other);
 
+  // Tries to construct an instance from (potentially untrusted) values of
+  // scheme() and registrable_domain() that got received over an RPC.
+  //
+  // Returns whether successful or not. Doesn't touch |*out| if false is
+  // returned.  This returning |true| does not mean that whoever sent the values
+  // did not lie, merely that they are well-formed.
+  static bool FromWire(const std::string& scheme,
+                       const std::string& registrable_domain,
+                       SiteForCookies* out);
+
   // If the origin is opaque, returns SiteForCookies that matches nothing.
   //
   // If it's not, returns one that matches URLs which are considered to be
@@ -73,7 +83,12 @@
   GURL RepresentativeUrl() const;
 
   // Guaranteed to be lowercase.
-  base::StringPiece scheme() const { return scheme_; }
+  const std::string& scheme() const { return scheme_; }
+
+  const std::string& registrable_domain() const { return registrable_domain_; }
+
+  // Returns true if this SiteForCookies matches nothing.
+  bool IsNull() const { return scheme_.empty(); }
 
  private:
   SiteForCookies(const std::string& scheme, const std::string& host);
diff --git a/net/cookies/site_for_cookies_unittest.cc b/net/cookies/site_for_cookies_unittest.cc
index ace583b..30ef061 100644
--- a/net/cookies/site_for_cookies_unittest.cc
+++ b/net/cookies/site_for_cookies_unittest.cc
@@ -140,5 +140,33 @@
       SiteForCookies::FromUrl(GURL("http://www.example.org:631"))));
 }
 
+TEST(SiteForCookiesTest, Wire) {
+  SiteForCookies out;
+
+  // Empty one.
+  EXPECT_TRUE(SiteForCookies::FromWire("", "", &out));
+  EXPECT_TRUE(out.IsNull());
+
+  // Not a valid scheme.
+  EXPECT_FALSE(SiteForCookies::FromWire("aH", "example.com", &out));
+  EXPECT_TRUE(out.IsNull());
+
+  // Not a eTLD + 1 (or something hosty).
+  EXPECT_FALSE(SiteForCookies::FromWire("http", "sub.example.com", &out));
+  EXPECT_TRUE(out.IsNull());
+
+  // This is fine, though.
+  EXPECT_TRUE(SiteForCookies::FromWire("https", "127.0.0.1", &out));
+  EXPECT_FALSE(out.IsNull());
+  EXPECT_EQ("SiteForCookies: {scheme=https; registrable_domain=127.0.0.1}",
+            out.ToDebugString());
+
+  // As is actual eTLD+1.
+  EXPECT_TRUE(SiteForCookies::FromWire("wss", "example.com", &out));
+  EXPECT_FALSE(out.IsNull());
+  EXPECT_EQ("SiteForCookies: {scheme=wss; registrable_domain=example.com}",
+            out.ToDebugString());
+}
+
 }  // namespace
 }  // namespace net
diff --git a/net/cookies/test_cookie_access_delegate.cc b/net/cookies/test_cookie_access_delegate.cc
index 34bd2b1..4189383 100644
--- a/net/cookies/test_cookie_access_delegate.cc
+++ b/net/cookies/test_cookie_access_delegate.cc
@@ -23,8 +23,8 @@
 bool TestCookieAccessDelegate::ShouldIgnoreSameSiteRestrictions(
     const GURL& url,
     const SiteForCookies& site_for_cookies) const {
-  auto it = ignore_samesite_restrictions_schemes_.find(
-      site_for_cookies.scheme().as_string());
+  auto it =
+      ignore_samesite_restrictions_schemes_.find(site_for_cookies.scheme());
   if (it == ignore_samesite_restrictions_schemes_.end())
     return false;
   if (it->second)
diff --git a/net/data/ssl/blocklist/143315c857a9386973ed16840899c3f96b894a7a612c444efb691f14b0dedd87.pem b/net/data/ssl/blocklist/143315c857a9386973ed16840899c3f96b894a7a612c444efb691f14b0dedd87.pem
new file mode 100644
index 0000000..ba6ec90
--- /dev/null
+++ b/net/data/ssl/blocklist/143315c857a9386973ed16840899c3f96b894a7a612c444efb691f14b0dedd87.pem
@@ -0,0 +1,157 @@
+Certificate:

+    Data:

+        Version: 3 (0x2)

+        Serial Number:

+            08:91:9e:e2:76:8f:8c:21:ec:72:d8:6c:45:76:fb:8c

+        Signature Algorithm: sha256WithRSAEncryption

+        Issuer: C = US, O = DigiCert Inc, CN = DigiCert SHA2 Secure Server CA

+        Validity

+            Not Before: Dec 16 00:00:00 2019 GMT

+            Not After : Dec 20 12:00:00 2021 GMT

+        Subject: C = US, ST = California, L = Walnut Creek, O = Lucas Garron Torres, CN = known-interception.badssl.com

+        Subject Public Key Info:

+            Public Key Algorithm: rsaEncryption

+                RSA Public-Key: (2048 bit)

+                Modulus:

+                    00:c7:8f:2d:12:d9:25:d6:57:dd:e3:64:40:67:0c:

+                    cb:0a:d4:21:69:57:93:ca:53:57:d1:b2:f7:61:87:

+                    a5:73:ac:15:39:2a:bc:38:00:0c:bf:d4:84:45:cc:

+                    c2:9f:67:81:62:89:e5:74:0e:c4:00:30:18:ef:de:

+                    e9:5b:b0:53:3e:2f:f3:c1:33:a6:ca:05:5d:eb:63:

+                    6d:b4:ea:19:e0:c2:60:34:08:90:48:ec:1a:6f:39:

+                    3f:0f:5b:0c:6d:1d:6f:a8:ba:4a:13:e0:a0:59:f6:

+                    b9:54:7d:6f:66:7e:72:85:09:64:62:17:f1:a9:47:

+                    05:56:97:7f:ec:3b:d9:1d:48:cb:2d:17:a2:83:d5:

+                    4d:d8:01:7c:ba:8a:09:d0:3c:96:fc:14:49:18:b8:

+                    d3:f2:e6:e1:67:6b:d5:e3:43:a9:eb:28:ba:25:86:

+                    d1:24:90:fe:33:f0:cc:2e:7a:8f:d4:14:f7:fe:b1:

+                    e5:7d:35:1d:59:ba:08:cf:77:10:a4:8f:a5:f0:91:

+                    9e:1f:cd:7f:32:34:fc:ff:bc:1a:35:6b:af:c7:d8:

+                    4e:17:a1:df:a1:a3:e4:5b:4b:9f:6e:d5:33:e8:99:

+                    ec:db:47:70:f5:a7:99:cb:71:1d:64:3e:17:b8:2c:

+                    2c:68:69:ea:d9:3f:79:b5:a9:ee:eb:10:97:6e:97:

+                    ae:eb

+                Exponent: 65537 (0x10001)

+        X509v3 extensions:

+            X509v3 Authority Key Identifier: 

+                keyid:0F:80:61:1C:82:31:61:D5:2F:28:E7:8D:46:38:B4:2C:E1:C6:D9:E2

+

+            X509v3 Subject Key Identifier: 

+                65:16:4E:26:8D:41:4F:B4:D6:33:61:17:51:AE:7E:09:DF:6C:C8:2C

+            X509v3 Subject Alternative Name: 

+                DNS:known-interception.badssl.com, DNS:www.known-interception.badssl.com

+            X509v3 Key Usage: critical

+                Digital Signature, Key Encipherment

+            X509v3 Extended Key Usage: 

+                TLS Web Server Authentication, TLS Web Client Authentication

+            X509v3 CRL Distribution Points: 

+

+                Full Name:

+                  URI:http://crl3.digicert.com/ssca-sha2-g6.crl

+

+                Full Name:

+                  URI:http://crl4.digicert.com/ssca-sha2-g6.crl

+

+            X509v3 Certificate Policies: 

+                Policy: 2.16.840.1.114412.1.1

+                  CPS: https://www.digicert.com/CPS

+                Policy: 2.23.140.1.2.3

+

+            Authority Information Access: 

+                OCSP - URI:http://ocsp.digicert.com

+                CA Issuers - URI:http://cacerts.digicert.com/DigiCertSHA2SecureServerCA.crt

+

+            X509v3 Basic Constraints: critical

+                CA:FALSE

+            CT Precertificate SCTs: 

+                Signed Certificate Timestamp:

+                    Version   : v1 (0x0)

+                    Log ID    : A4:B9:09:90:B4:18:58:14:87:BB:13:A2:CC:67:70:0A:

+                                3C:35:98:04:F9:1B:DF:B8:E3:77:CD:0E:C8:0D:DC:10

+                    Timestamp : Dec 16 19:25:03.735 2019 GMT

+                    Extensions: none

+                    Signature : ecdsa-with-SHA256

+                                30:46:02:21:00:BF:58:DF:CB:40:35:C7:EB:56:A3:3D:

+                                33:A7:15:99:78:92:16:00:51:73:BF:E4:83:29:3A:95:

+                                9A:4E:70:E2:B5:02:21:00:CC:CD:B2:E9:28:B1:E1:84:

+                                59:77:99:FD:28:75:59:06:48:21:E7:16:18:7A:40:78:

+                                5A:C2:4A:97:BE:83:82:BC

+                Signed Certificate Timestamp:

+                    Version   : v1 (0x0)

+                    Log ID    : 44:94:65:2E:B0:EE:CE:AF:C4:40:07:D8:A8:FE:28:C0:

+                                DA:E6:82:BE:D8:CB:31:B5:3F:D3:33:96:B5:B6:81:A8

+                    Timestamp : Dec 16 19:25:03.808 2019 GMT

+                    Extensions: none

+                    Signature : ecdsa-with-SHA256

+                                30:45:02:20:22:7C:CB:BA:4B:E1:C4:0F:93:0C:69:8F:

+                                E5:06:A3:04:FA:D2:3F:F4:24:1C:DF:29:AC:7B:E2:51:

+                                06:35:B2:FC:02:21:00:D4:75:B0:0F:88:B0:2A:0B:CA:

+                                89:B9:B9:09:CE:85:92:CD:13:B9:18:86:ED:DE:9A:37:

+                                58:A2:44:10:3B:67:87

+                Signed Certificate Timestamp:

+                    Version   : v1 (0x0)

+                    Log ID    : BB:D9:DF:BC:1F:8A:71:B5:93:94:23:97:AA:92:7B:47:

+                                38:57:95:0A:AB:52:E8:1A:90:96:64:36:8E:1E:D1:85

+                    Timestamp : Dec 16 19:25:03.896 2019 GMT

+                    Extensions: none

+                    Signature : ecdsa-with-SHA256

+                                30:46:02:21:00:CB:60:EE:F3:90:EF:DB:D8:39:0F:58:

+                                3D:DE:42:F2:F6:D4:68:E3:CB:7C:59:55:DC:35:C4:76:

+                                6A:E4:D9:D4:9F:02:21:00:A1:83:D6:3F:22:5B:DD:7C:

+                                BC:17:18:F8:D2:FC:BF:A5:77:1C:1E:B9:8A:7C:E2:4C:

+                                14:B9:C8:27:35:99:23:96

+    Signature Algorithm: sha256WithRSAEncryption

+         bb:e4:97:22:2e:43:11:dd:42:56:5f:d9:d4:0d:c9:c9:7c:c6:

+         47:5b:a8:6b:17:94:b3:ae:b3:63:d6:6b:68:17:87:b5:78:49:

+         68:a0:13:13:39:76:93:34:b9:29:46:a1:7e:8c:17:e1:e1:27:

+         0a:46:8e:1e:fd:e2:56:06:18:86:9a:ab:e1:e1:03:eb:ef:c3:

+         a4:3f:e3:2c:7a:9a:c7:95:5e:85:84:a5:1e:52:63:f1:4e:4a:

+         79:45:93:d3:92:6d:f6:9d:be:a6:20:31:bb:90:2e:71:a4:27:

+         66:44:f8:24:51:b1:03:69:2c:b3:4c:ec:69:10:c1:84:92:9b:

+         2a:89:4e:13:29:10:97:dd:59:35:40:25:b0:87:a4:56:aa:87:

+         f4:1a:c5:2b:53:53:7b:cb:47:d4:59:64:e1:11:37:86:71:c8:

+         18:78:84:66:86:51:a5:d8:3c:b8:9a:10:d0:d4:98:29:40:6a:

+         8b:8e:3d:c6:a3:9b:09:93:19:fc:87:76:45:98:d2:c7:c8:b7:

+         a5:3f:f2:2e:c5:15:59:0e:fe:17:36:40:7a:35:5a:a7:2d:f5:

+         c0:b5:80:95:3a:3c:a7:54:46:8a:a0:67:e9:69:35:b2:3c:9a:

+         51:ef:58:a6:ff:6d:7e:61:17:a4:d8:1f:42:88:90:0d:5a:91:

+         3e:6c:90:98

+-----BEGIN CERTIFICATE-----

+MIIG4zCCBcugAwIBAgIQCJGe4naPjCHscthsRXb7jDANBgkqhkiG9w0BAQsFADBN

+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMScwJQYDVQQDEx5E

+aWdpQ2VydCBTSEEyIFNlY3VyZSBTZXJ2ZXIgQ0EwHhcNMTkxMjE2MDAwMDAwWhcN

+MjExMjIwMTIwMDAwWjB/MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5p

+YTEVMBMGA1UEBxMMV2FsbnV0IENyZWVrMRwwGgYDVQQKExNMdWNhcyBHYXJyb24g

+VG9ycmVzMSYwJAYDVQQDEx1rbm93bi1pbnRlcmNlcHRpb24uYmFkc3NsLmNvbTCC

+ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMePLRLZJdZX3eNkQGcMywrU

+IWlXk8pTV9Gy92GHpXOsFTkqvDgADL/UhEXMwp9ngWKJ5XQOxAAwGO/e6VuwUz4v

+88EzpsoFXetjbbTqGeDCYDQIkEjsGm85Pw9bDG0db6i6ShPgoFn2uVR9b2Z+coUJ

+ZGIX8alHBVaXf+w72R1Iyy0XooPVTdgBfLqKCdA8lvwUSRi40/Lm4Wdr1eNDqeso

+uiWG0SSQ/jPwzC56j9QU9/6x5X01HVm6CM93EKSPpfCRnh/NfzI0/P+8GjVrr8fY

+Theh36Gj5FtLn27VM+iZ7NtHcPWnmctxHWQ+F7gsLGhp6tk/ebWp7usQl26XrusC

+AwEAAaOCA4swggOHMB8GA1UdIwQYMBaAFA+AYRyCMWHVLyjnjUY4tCzhxtniMB0G

+A1UdDgQWBBRlFk4mjUFPtNYzYRdRrn4J32zILDBLBgNVHREERDBCgh1rbm93bi1p

+bnRlcmNlcHRpb24uYmFkc3NsLmNvbYIhd3d3Lmtub3duLWludGVyY2VwdGlvbi5i

+YWRzc2wuY29tMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYI

+KwYBBQUHAwIwawYDVR0fBGQwYjAvoC2gK4YpaHR0cDovL2NybDMuZGlnaWNlcnQu

+Y29tL3NzY2Etc2hhMi1nNi5jcmwwL6AtoCuGKWh0dHA6Ly9jcmw0LmRpZ2ljZXJ0

+LmNvbS9zc2NhLXNoYTItZzYuY3JsMEwGA1UdIARFMEMwNwYJYIZIAYb9bAEBMCow

+KAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMwCAYGZ4EM

+AQIDMHwGCCsGAQUFBwEBBHAwbjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGln

+aWNlcnQuY29tMEYGCCsGAQUFBzAChjpodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5j

+b20vRGlnaUNlcnRTSEEyU2VjdXJlU2VydmVyQ0EuY3J0MAwGA1UdEwEB/wQCMAAw

+ggGABgorBgEEAdZ5AgQCBIIBcASCAWwBagB3AKS5CZC0GFgUh7sTosxncAo8NZgE

++RvfuON3zQ7IDdwQAAABbxArzXcAAAQDAEgwRgIhAL9Y38tANcfrVqM9M6cVmXiS

+FgBRc7/kgyk6lZpOcOK1AiEAzM2y6Six4YRZd5n9KHVZBkgh5xYYekB4WsJKl76D

+grwAdgBElGUusO7Or8RAB9io/ijA2uaCvtjLMbU/0zOWtbaBqAAAAW8QK83AAAAE

+AwBHMEUCICJ8y7pL4cQPkwxpj+UGowT60j/0JBzfKax74lEGNbL8AiEA1HWwD4iw

+KgvKibm5Cc6Fks0TuRiG7d6aN1iiRBA7Z4cAdwC72d+8H4pxtZOUI5eqkntHOFeV

+CqtS6BqQlmQ2jh7RhQAAAW8QK84YAAAEAwBIMEYCIQDLYO7zkO/b2DkPWD3eQvL2

+1Gjjy3xZVdw1xHZq5NnUnwIhAKGD1j8iW918vBcY+NL8v6V3HB65inziTBS5yCc1

+mSOWMA0GCSqGSIb3DQEBCwUAA4IBAQC75JciLkMR3UJWX9nUDcnJfMZHW6hrF5Sz

+rrNj1mtoF4e1eElooBMTOXaTNLkpRqF+jBfh4ScKRo4e/eJWBhiGmqvh4QPr78Ok

+P+MseprHlV6FhKUeUmPxTkp5RZPTkm32nb6mIDG7kC5xpCdmRPgkUbEDaSyzTOxp

+EMGEkpsqiU4TKRCX3Vk1QCWwh6RWqof0GsUrU1N7y0fUWWThETeGccgYeIRmhlGl

+2Dy4mhDQ1JgpQGqLjj3Go5sJkxn8h3ZFmNLHyLelP/IuxRVZDv4XNkB6NVqnLfXA

+tYCVOjynVEaKoGfpaTWyPJpR71im/21+YRek2B9CiJANWpE+bJCY

+-----END CERTIFICATE-----

diff --git a/net/data/ssl/blocklist/44a244105569a730791f509b24c3d7838a462216bb0f560ef87fbe76c2e6005a.pem b/net/data/ssl/blocklist/44a244105569a730791f509b24c3d7838a462216bb0f560ef87fbe76c2e6005a.pem
new file mode 100644
index 0000000..61cfc15
--- /dev/null
+++ b/net/data/ssl/blocklist/44a244105569a730791f509b24c3d7838a462216bb0f560ef87fbe76c2e6005a.pem
@@ -0,0 +1,157 @@
+Certificate:

+    Data:

+        Version: 3 (0x2)

+        Serial Number:

+            03:2f:9c:4e:f4:4d:1e:c9:00:42:67:7e:d9:d4:df:83

+        Signature Algorithm: sha256WithRSAEncryption

+        Issuer: C = US, O = DigiCert Inc, CN = DigiCert SHA2 Secure Server CA

+        Validity

+            Not Before: Dec 16 00:00:00 2019 GMT

+            Not After : Dec 20 12:00:00 2021 GMT

+        Subject: C = US, ST = California, L = Walnut Creek, O = Lucas Garron Torres, CN = blocked-interception.badssl.com

+        Subject Public Key Info:

+            Public Key Algorithm: rsaEncryption

+                RSA Public-Key: (2048 bit)

+                Modulus:

+                    00:9c:c4:b1:a6:98:0a:77:0f:b9:a9:36:04:99:68:

+                    dc:0e:b1:5d:7e:ef:5d:bf:c4:75:e9:bf:16:d7:ca:

+                    07:02:10:fe:3a:80:f1:26:42:6d:c2:ca:9d:e7:5b:

+                    2e:77:d0:3b:b1:a5:ce:b4:84:6a:4f:f0:a2:4a:99:

+                    97:fe:b0:c2:5d:d4:0f:26:3a:ea:4e:d6:f5:9b:c9:

+                    87:aa:fc:b1:ff:83:fd:33:ce:5b:5b:d5:0a:94:e8:

+                    67:24:a3:b7:86:99:dd:69:92:10:5f:67:5c:01:b1:

+                    d2:9f:10:bf:7c:23:a5:e1:bd:34:99:5d:f5:8f:8b:

+                    b0:22:b9:8b:e5:03:b9:30:d4:91:ff:2b:6c:13:9c:

+                    00:22:26:a8:27:30:7f:75:c4:cb:85:04:31:39:68:

+                    c9:72:37:71:62:b7:db:f5:65:a1:55:37:2e:94:e6:

+                    e4:c2:2e:01:90:92:32:d6:07:5c:00:ea:1b:bd:5b:

+                    62:3d:32:39:de:2a:68:39:39:b4:b5:b3:14:e9:02:

+                    00:6e:bb:bd:6a:ac:0e:35:2b:e3:3e:8b:83:51:51:

+                    59:63:f0:bf:e2:f3:cc:00:24:88:28:77:8f:c6:61:

+                    f0:84:c6:20:cf:68:0f:dd:e6:bc:9c:04:6d:fe:fa:

+                    52:d7:7f:1e:96:c2:e0:f8:42:7f:ff:68:2b:da:f3:

+                    5b:c5

+                Exponent: 65537 (0x10001)

+        X509v3 extensions:

+            X509v3 Authority Key Identifier: 

+                keyid:0F:80:61:1C:82:31:61:D5:2F:28:E7:8D:46:38:B4:2C:E1:C6:D9:E2

+

+            X509v3 Subject Key Identifier: 

+                A9:05:22:41:ED:F9:98:F1:E7:EF:27:E1:2A:2F:C0:1B:1D:C0:AE:D4

+            X509v3 Subject Alternative Name: 

+                DNS:blocked-interception.badssl.com, DNS:www.blocked-interception.badssl.com

+            X509v3 Key Usage: critical

+                Digital Signature, Key Encipherment

+            X509v3 Extended Key Usage: 

+                TLS Web Server Authentication, TLS Web Client Authentication

+            X509v3 CRL Distribution Points: 

+

+                Full Name:

+                  URI:http://crl3.digicert.com/ssca-sha2-g6.crl

+

+                Full Name:

+                  URI:http://crl4.digicert.com/ssca-sha2-g6.crl

+

+            X509v3 Certificate Policies: 

+                Policy: 2.16.840.1.114412.1.1

+                  CPS: https://www.digicert.com/CPS

+                Policy: 2.23.140.1.2.3

+

+            Authority Information Access: 

+                OCSP - URI:http://ocsp.digicert.com

+                CA Issuers - URI:http://cacerts.digicert.com/DigiCertSHA2SecureServerCA.crt

+

+            X509v3 Basic Constraints: critical

+                CA:FALSE

+            CT Precertificate SCTs: 

+                Signed Certificate Timestamp:

+                    Version   : v1 (0x0)

+                    Log ID    : A4:B9:09:90:B4:18:58:14:87:BB:13:A2:CC:67:70:0A:

+                                3C:35:98:04:F9:1B:DF:B8:E3:77:CD:0E:C8:0D:DC:10

+                    Timestamp : Dec 16 19:27:47.556 2019 GMT

+                    Extensions: none

+                    Signature : ecdsa-with-SHA256

+                                30:45:02:20:6E:DC:0C:F1:EC:26:57:3F:B8:FB:21:9E:

+                                0C:BA:58:39:9D:09:57:48:DE:BC:B4:65:63:6D:02:09:

+                                78:64:F9:1B:02:21:00:86:1E:3F:6E:01:B8:27:4F:45:

+                                04:68:AD:04:4A:E4:CB:2F:68:EE:00:58:AB:FF:69:45:

+                                F9:93:03:3E:ED:5D:8D

+                Signed Certificate Timestamp:

+                    Version   : v1 (0x0)

+                    Log ID    : 44:94:65:2E:B0:EE:CE:AF:C4:40:07:D8:A8:FE:28:C0:

+                                DA:E6:82:BE:D8:CB:31:B5:3F:D3:33:96:B5:B6:81:A8

+                    Timestamp : Dec 16 19:27:47.472 2019 GMT

+                    Extensions: none

+                    Signature : ecdsa-with-SHA256

+                                30:45:02:21:00:C5:2A:BF:4F:52:59:2B:21:68:69:B6:

+                                2C:96:B2:9E:48:76:A6:BD:01:95:C1:1A:A7:98:F6:7E:

+                                A7:BB:9D:27:91:02:20:46:9E:A8:1E:22:66:08:A2:4A:

+                                B2:88:A3:E4:89:A0:8A:F3:E0:10:35:5B:2A:3F:EC:AD:

+                                99:88:86:8C:5D:F7:EA

+                Signed Certificate Timestamp:

+                    Version   : v1 (0x0)

+                    Log ID    : BB:D9:DF:BC:1F:8A:71:B5:93:94:23:97:AA:92:7B:47:

+                                38:57:95:0A:AB:52:E8:1A:90:96:64:36:8E:1E:D1:85

+                    Timestamp : Dec 16 19:27:47.558 2019 GMT

+                    Extensions: none

+                    Signature : ecdsa-with-SHA256

+                                30:45:02:21:00:95:10:28:21:D3:32:AD:8E:41:39:D2:

+                                D5:DB:C9:B8:A7:0D:AA:16:CC:F2:37:5D:FC:36:1A:93:

+                                CE:72:73:77:84:02:20:0F:49:96:AC:F0:B4:95:8D:24:

+                                84:BA:6B:DD:D3:1E:66:41:A7:C3:94:74:D6:10:E3:EE:

+                                FA:A7:BD:98:4A:62:BE

+    Signature Algorithm: sha256WithRSAEncryption

+         3d:74:18:ea:0d:07:64:53:de:94:ea:0d:fa:9e:87:8d:d6:32:

+         38:a0:c2:be:09:96:1c:65:32:78:85:6e:aa:ca:5f:ea:ed:82:

+         51:00:58:2a:a3:5f:f4:ba:c1:db:3d:7f:19:fb:7e:a5:b5:d1:

+         4f:b6:3a:36:a4:f7:d9:e8:49:59:c8:d5:eb:d4:c9:8d:d8:8f:

+         2a:d1:b5:16:ca:3a:11:c4:d5:da:8a:38:76:fb:57:34:a6:09:

+         ae:48:3b:c4:3d:5d:62:ec:3a:54:4e:59:d2:11:19:18:88:91:

+         5a:6c:b3:6b:76:8c:ed:b0:61:c3:cf:83:90:f7:aa:8d:88:ce:

+         90:f5:16:35:dd:51:ff:6f:1f:d4:09:b7:57:74:30:54:bd:61:

+         a1:eb:bc:cd:67:d5:3c:c2:e5:4c:26:ee:08:c1:de:1e:12:12:

+         64:ec:d9:2c:d6:49:01:31:f8:b2:4c:48:cc:f9:7d:3e:49:5b:

+         b2:87:5d:c1:09:af:60:1b:ed:1f:6d:4c:ee:b1:ec:a2:37:9c:

+         57:72:d6:5e:8b:ab:d4:39:05:a1:d6:b4:0b:a3:9c:3c:cf:1e:

+         ed:4c:51:d7:7f:b1:3e:15:c8:f8:5b:51:29:a9:16:99:d1:12:

+         e5:a1:37:86:73:46:e4:b9:b6:db:48:0b:75:a4:51:d0:f7:a4:

+         ee:e5:4a:b1

+-----BEGIN CERTIFICATE-----

+MIIG6DCCBdCgAwIBAgIQAy+cTvRNHskAQmd+2dTfgzANBgkqhkiG9w0BAQsFADBN

+MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMScwJQYDVQQDEx5E

+aWdpQ2VydCBTSEEyIFNlY3VyZSBTZXJ2ZXIgQ0EwHhcNMTkxMjE2MDAwMDAwWhcN

+MjExMjIwMTIwMDAwWjCBgTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3Ju

+aWExFTATBgNVBAcTDFdhbG51dCBDcmVlazEcMBoGA1UEChMTTHVjYXMgR2Fycm9u

+IFRvcnJlczEoMCYGA1UEAxMfYmxvY2tlZC1pbnRlcmNlcHRpb24uYmFkc3NsLmNv

+bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJzEsaaYCncPuak2BJlo

+3A6xXX7vXb/Edem/FtfKBwIQ/jqA8SZCbcLKnedbLnfQO7GlzrSEak/wokqZl/6w

+wl3UDyY66k7W9ZvJh6r8sf+D/TPOW1vVCpToZySjt4aZ3WmSEF9nXAGx0p8Qv3wj

+peG9NJld9Y+LsCK5i+UDuTDUkf8rbBOcACImqCcwf3XEy4UEMTloyXI3cWK32/Vl

+oVU3LpTm5MIuAZCSMtYHXADqG71bYj0yOd4qaDk5tLWzFOkCAG67vWqsDjUr4z6L

+g1FRWWPwv+LzzAAkiCh3j8Zh8ITGIM9oD93mvJwEbf76Utd/HpbC4PhCf/9oK9rz

+W8UCAwEAAaOCA40wggOJMB8GA1UdIwQYMBaAFA+AYRyCMWHVLyjnjUY4tCzhxtni

+MB0GA1UdDgQWBBSpBSJB7fmY8efvJ+EqL8AbHcCu1DBPBgNVHREESDBGgh9ibG9j

+a2VkLWludGVyY2VwdGlvbi5iYWRzc2wuY29tgiN3d3cuYmxvY2tlZC1pbnRlcmNl

+cHRpb24uYmFkc3NsLmNvbTAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYB

+BQUHAwEGCCsGAQUFBwMCMGsGA1UdHwRkMGIwL6AtoCuGKWh0dHA6Ly9jcmwzLmRp

+Z2ljZXJ0LmNvbS9zc2NhLXNoYTItZzYuY3JsMC+gLaArhilodHRwOi8vY3JsNC5k

+aWdpY2VydC5jb20vc3NjYS1zaGEyLWc2LmNybDBMBgNVHSAERTBDMDcGCWCGSAGG

+/WwBATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BT

+MAgGBmeBDAECAzB8BggrBgEFBQcBAQRwMG4wJAYIKwYBBQUHMAGGGGh0dHA6Ly9v

+Y3NwLmRpZ2ljZXJ0LmNvbTBGBggrBgEFBQcwAoY6aHR0cDovL2NhY2VydHMuZGln

+aWNlcnQuY29tL0RpZ2lDZXJ0U0hBMlNlY3VyZVNlcnZlckNBLmNydDAMBgNVHRMB

+Af8EAjAAMIIBfgYKKwYBBAHWeQIEAgSCAW4EggFqAWgAdgCkuQmQtBhYFIe7E6LM

+Z3AKPDWYBPkb37jjd80OyA3cEAAAAW8QLk1kAAAEAwBHMEUCIG7cDPHsJlc/uPsh

+ngy6WDmdCVdI3ry0ZWNtAgl4ZPkbAiEAhh4/bgG4J09FBGitBErkyy9o7gBYq/9p

+RfmTAz7tXY0AdgBElGUusO7Or8RAB9io/ijA2uaCvtjLMbU/0zOWtbaBqAAAAW8Q

+Lk0QAAAEAwBHMEUCIQDFKr9PUlkrIWhptiyWsp5Idqa9AZXBGqeY9n6nu50nkQIg

+Rp6oHiJmCKJKsoij5ImgivPgEDVbKj/srZmIhoxd9+oAdgC72d+8H4pxtZOUI5eq

+kntHOFeVCqtS6BqQlmQ2jh7RhQAAAW8QLk1mAAAEAwBHMEUCIQCVECgh0zKtjkE5

+0tXbybinDaoWzPI3Xfw2GpPOcnN3hAIgD0mWrPC0lY0khLpr3dMeZkGnw5R01hDj

+7vqnvZhKYr4wDQYJKoZIhvcNAQELBQADggEBAD10GOoNB2RT3pTqDfqeh43WMjig

+wr4JlhxlMniFbqrKX+rtglEAWCqjX/S6wds9fxn7fqW10U+2Ojak99noSVnI1evU

+yY3YjyrRtRbKOhHE1dqKOHb7VzSmCa5IO8Q9XWLsOlROWdIRGRiIkVpss2t2jO2w

+YcPPg5D3qo2IzpD1FjXdUf9vH9QJt1d0MFS9YaHrvM1n1TzC5Uwm7gjB3h4SEmTs

+2SzWSQEx+LJMSMz5fT5JW7KHXcEJr2Ab7R9tTO6x7KI3nFdy1l6Lq9Q5BaHWtAuj

+nDzPHu1MUdd/sT4VyPhbUSmpFpnREuWhN4ZzRuS5tttIC3WkUdD3pO7lSrE=

+-----END CERTIFICATE-----

diff --git a/net/data/ssl/blocklist/README.md b/net/data/ssl/blocklist/README.md
index 11afdd05..64c03fe 100644
--- a/net/data/ssl/blocklist/README.md
+++ b/net/data/ssl/blocklist/README.md
@@ -287,6 +287,14 @@
 
   * [c6910d0ba9eddf593334149fedfe87385f37b625354bb4395c0ae2c8df48e17c.pem](c6910d0ba9eddf593334149fedfe87385f37b625354bb4395c0ae2c8df48e17c.pem)
 
+### blocked-interception.badssl.com
+
+  * [44a244105569a730791f509b24c3d7838a462216bb0f560ef87fbe76c2e6005a](44a244105569a730791f509b24c3d7838a462216bb0f560ef87fbe76c2e6005a.pem)
+
+### known-interception.badssl.com
+
+  * [143315c857a9386973ed16840899c3f96b894a7a612c444efb691f14b0dedd87](143315c857a9386973ed16840899c3f96b894a7a612c444efb691f14b0dedd87.pem)
+
 ### revoked.grc.com
 
   * [53d48e7b8869a3314f213fd2e0178219ca09022dbe50053bf6f76fccd61e8112.pem](53d48e7b8869a3314f213fd2e0178219ca09022dbe50053bf6f76fccd61e8112.pem)
diff --git a/net/data/ssl/certificates/900_days_after_2019_07_01.pem b/net/data/ssl/certificates/900_days_after_2019_07_01.pem
new file mode 100644
index 0000000..14514b06
--- /dev/null
+++ b/net/data/ssl/certificates/900_days_after_2019_07_01.pem
@@ -0,0 +1,84 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number: 32 (0x20)
+    Signature Algorithm: sha256WithRSAEncryption
+        Issuer: C=US, ST=California, L=Mountain View, O=Test CA, CN=Test Root CA
+        Validity
+            Not Before: Jul  1 00:00:00 2019 GMT
+            Not After : Dec 17 00:00:00 2021 GMT
+        Subject: C=US, ST=California, L=Mountain View, O=Test CA, CN=127.0.0.1
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+                Public-Key: (2048 bit)
+                Modulus:
+                    00:d2:76:d1:5f:28:08:6d:97:b7:6c:31:e1:7f:dd:
+                    ff:c9:46:ac:c5:39:26:20:35:6d:50:58:4f:36:1f:
+                    e9:c4:04:03:c3:80:d4:c0:a4:7d:8a:77:a9:72:76:
+                    66:31:cb:24:5b:ed:cc:e5:b4:25:ec:7d:8c:74:58:
+                    82:d4:0b:af:09:d6:01:6c:45:d3:d3:3f:d7:c8:87:
+                    f7:91:21:0b:59:fe:40:50:ba:a2:b7:c3:a5:2b:35:
+                    36:78:e8:b1:73:fe:f4:a3:b6:cc:b0:30:6f:01:cd:
+                    4a:5c:d4:93:2b:a3:37:c5:c5:55:2c:92:8f:da:5d:
+                    5b:6e:dc:e0:73:17:35:d6:f5:1c:29:3d:f8:1d:37:
+                    98:41:65:9f:b1:f2:54:ec:39:35:95:3b:14:fd:60:
+                    8e:63:0d:6d:3f:63:b7:18:8b:90:73:43:d4:0d:05:
+                    d9:81:c8:5d:09:cc:43:a0:a7:fd:05:5f:fb:f2:b7:
+                    bc:24:54:46:64:01:86:33:ca:45:7a:b0:70:1f:3e:
+                    04:ad:33:38:74:44:2a:40:f2:e0:6a:e2:de:ed:c1:
+                    20:3e:af:46:6b:c9:25:a5:15:54:56:7a:3a:7c:8f:
+                    27:21:4f:d2:b6:5a:1f:21:8e:75:62:8b:40:58:f9:
+                    54:8d:8e:20:1f:5f:9b:6e:65:44:b4:c3:a6:83:8b:
+                    6d:d5
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: critical
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                D2:C1:43:17:52:15:0E:E2:4C:0C:BA:1B:EB:F5:E6:EF:F5:09:B0:EC
+            X509v3 Authority Key Identifier: 
+                keyid:9B:26:0B:8A:98:A9:BB:1D:B9:1F:1C:E3:1A:40:33:ED:8E:17:88:AB
+
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication, TLS Web Client Authentication
+            X509v3 Subject Alternative Name: 
+                IP Address:127.0.0.1
+    Signature Algorithm: sha256WithRSAEncryption
+         bf:d2:85:20:48:0c:a9:b5:6c:76:13:d1:ef:56:6f:0d:42:cd:
+         ae:97:26:7a:99:f3:d4:72:66:5e:db:ae:28:94:2f:9b:86:d5:
+         94:00:5e:aa:c5:f6:f6:40:1b:99:1b:0f:5d:7e:74:95:2e:ef:
+         b8:bf:df:80:6c:b3:97:f2:e7:c8:4a:da:12:73:f4:ab:ea:a0:
+         74:63:57:e0:9f:5f:1e:7e:f3:c7:de:e7:4c:69:54:92:d9:67:
+         a9:79:8b:c9:b9:ce:23:96:d2:25:85:4a:32:06:ca:6b:db:bb:
+         02:12:34:02:f2:85:a8:40:81:f5:42:d3:d3:8c:fa:af:ce:29:
+         6a:cd:cf:46:df:88:d6:d4:69:77:19:62:c2:09:b3:a8:00:32:
+         db:a8:9e:66:c3:5e:56:79:8c:76:50:c4:e8:48:60:48:93:a8:
+         af:5c:32:d4:e0:e7:91:1f:12:25:9b:a5:67:0e:4a:bf:eb:84:
+         be:ba:f7:0b:ac:09:60:1b:fe:92:2b:98:1e:23:24:9c:97:fd:
+         5e:ee:5a:2f:c2:80:cc:f6:55:31:77:b2:c4:5d:ff:f2:c7:cd:
+         d8:a8:bb:ee:76:70:7f:04:63:24:df:9f:99:b1:35:79:9e:52:
+         17:73:83:95:55:6e:bb:56:4b:76:c4:d0:b2:03:bf:8c:e7:7d:
+         40:26:9e:3b
+-----BEGIN CERTIFICATE-----
+MIIDvzCCAqegAwIBAgIBIDANBgkqhkiG9w0BAQsFADBjMQswCQYDVQQGEwJVUzET
+MBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzEQMA4G
+A1UECgwHVGVzdCBDQTEVMBMGA1UEAwwMVGVzdCBSb290IENBMB4XDTE5MDcwMTAw
+MDAwMFoXDTIxMTIxNzAwMDAwMFowYDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNh
+bGlmb3JuaWExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxEDAOBgNVBAoMB1Rlc3Qg
+Q0ExEjAQBgNVBAMMCTEyNy4wLjAuMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
+AQoCggEBANJ20V8oCG2Xt2wx4X/d/8lGrMU5JiA1bVBYTzYf6cQEA8OA1MCkfYp3
+qXJ2ZjHLJFvtzOW0Jex9jHRYgtQLrwnWAWxF09M/18iH95EhC1n+QFC6orfDpSs1
+NnjosXP+9KO2zLAwbwHNSlzUkyujN8XFVSySj9pdW27c4HMXNdb1HCk9+B03mEFl
+n7HyVOw5NZU7FP1gjmMNbT9jtxiLkHND1A0F2YHIXQnMQ6Cn/QVf+/K3vCRURmQB
+hjPKRXqwcB8+BK0zOHREKkDy4Gri3u3BID6vRmvJJaUVVFZ6OnyPJyFP0rZaHyGO
+dWKLQFj5VI2OIB9fm25lRLTDpoOLbdUCAwEAAaOBgDB+MAwGA1UdEwEB/wQCMAAw
+HQYDVR0OBBYEFNLBQxdSFQ7iTAy6G+v15u/1CbDsMB8GA1UdIwQYMBaAFJsmC4qY
+qbsduR8c4xpAM+2OF4irMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAP
+BgNVHREECDAGhwR/AAABMA0GCSqGSIb3DQEBCwUAA4IBAQC/0oUgSAyptWx2E9Hv
+Vm8NQs2ulyZ6mfPUcmZe264olC+bhtWUAF6qxfb2QBuZGw9dfnSVLu+4v9+AbLOX
+8ufIStoSc/Sr6qB0Y1fgn18efvPH3udMaVSS2WepeYvJuc4jltIlhUoyBspr27sC
+EjQC8oWoQIH1QtPTjPqvzilqzc9G34jW1Gl3GWLCCbOoADLbqJ5mw15WeYx2UMTo
+SGBIk6ivXDLU4OeRHxIlm6VnDkq/64S+uvcLrAlgG/6SK5geIyScl/1e7lovwoDM
+9lUxd7LEXf/yx83YqLvudnB/BGMk35+ZsTV5nlIXc4OVVW67Vkt2xNCyA7+M531A
+Jp47
+-----END CERTIFICATE-----
diff --git a/net/data/ssl/scripts/generate-test-certs.sh b/net/data/ssl/scripts/generate-test-certs.sh
index 52c9ded0..0a41eec 100755
--- a/net/data/ssl/scripts/generate-test-certs.sh
+++ b/net/data/ssl/scripts/generate-test-certs.sh
@@ -564,6 +564,25 @@
     -out ../certificates/may_2018.pem \
     -config ca.cnf
 
+# Issued after 1 July 2019 (The macOS 10.15+ date for additional
+# policies for locally-trusted certificates - see
+# https://support.apple.com/en-us/HT210176 ) and valid for >825
+# days, even accounting for rounding issues.
+openssl req \
+  -config ../scripts/ee.cnf \
+  -newkey rsa:2048 \
+  -text \
+  -out out/900_days_after_2019_07_01.req
+CA_NAME="req_ca_dn" \
+  openssl ca \
+    -batch \
+    -extensions user_cert \
+    -startdate 190701000000Z \
+    -enddate   211217000000Z \
+    -in out/900_days_after_2019_07_01.req \
+    -out ../certificates/900_days_after_2019_07_01.pem \
+    -config ca.cnf
+
 # Regenerate CRLSets
 ## Block a leaf cert directly by SPKI
 python crlsetutil.py -o ../certificates/crlset_by_leaf_spki.raw \
diff --git a/net/disk_cache/backend_unittest.cc b/net/disk_cache/backend_unittest.cc
index bbd0193..8997a004 100644
--- a/net/disk_cache/backend_unittest.cc
+++ b/net/disk_cache/backend_unittest.cc
@@ -4330,7 +4330,7 @@
       static_cast<disk_cache::SimpleBackendImpl*>(cache_.get());
   auto task_runner = base::CreateSequencedTaskRunner(
       {base::ThreadPool(), base::TaskPriority::USER_VISIBLE, base::MayBlock()});
-  simple_cache->SetWorkerPoolForTesting(task_runner);
+  simple_cache->SetTaskRunnerForTesting(task_runner);
 
   // Create three entries. Priority order is 3, 1, 2 because 3 has the highest
   // request priority and 1 is created before 2.
@@ -4422,7 +4422,7 @@
       static_cast<disk_cache::SimpleBackendImpl*>(cache_.get());
   auto task_runner = base::CreateSequencedTaskRunner(
       {base::ThreadPool(), base::TaskPriority::USER_VISIBLE, base::MayBlock()});
-  simple_cache->SetWorkerPoolForTesting(task_runner);
+  simple_cache->SetTaskRunnerForTesting(task_runner);
 
   // Create three entries. If their priority was honored, they'd run in order
   // 3, 1, 2.
diff --git a/net/disk_cache/blockfile/in_flight_io.cc b/net/disk_cache/blockfile/in_flight_io.cc
index 893108d..f45eb94c 100644
--- a/net/disk_cache/blockfile/in_flight_io.cc
+++ b/net/disk_cache/blockfile/in_flight_io.cc
@@ -6,8 +6,8 @@
 
 #include "base/bind.h"
 #include "base/location.h"
+#include "base/sequenced_task_runner.h"
 #include "base/single_thread_task_runner.h"
-#include "base/task_runner.h"
 #include "base/threading/thread_restrictions.h"
 #include "base/threading/thread_task_runner_handle.h"
 
diff --git a/net/disk_cache/blockfile/in_flight_io.h b/net/disk_cache/blockfile/in_flight_io.h
index 170b72d..6857d370 100644
--- a/net/disk_cache/blockfile/in_flight_io.h
+++ b/net/disk_cache/blockfile/in_flight_io.h
@@ -14,7 +14,7 @@
 #include "base/synchronization/waitable_event.h"
 
 namespace base {
-class TaskRunner;
+class SequencedTaskRunner;
 }  // namespace base
 
 namespace disk_cache {
@@ -129,7 +129,7 @@
   typedef std::set<scoped_refptr<BackgroundIO> > IOList;
 
   IOList io_list_;  // List of pending, in-flight io operations.
-  scoped_refptr<base::TaskRunner> callback_task_runner_;
+  scoped_refptr<base::SequencedTaskRunner> callback_task_runner_;
 
   bool running_;  // True after the first posted operation completes.
 #if DCHECK_IS_ON()
diff --git a/net/disk_cache/simple/simple_backend_impl.cc b/net/disk_cache/simple/simple_backend_impl.cc
index 395993e1..d52155e 100644
--- a/net/disk_cache/simple/simple_backend_impl.cc
+++ b/net/disk_cache/simple/simple_backend_impl.cc
@@ -23,7 +23,6 @@
 #include "base/metrics/field_trial_params.h"
 #include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
-#include "base/sequenced_task_runner.h"
 #include "base/system/sys_info.h"
 #include "base/task/post_task.h"
 #include "base/task/thread_pool/thread_pool_instance.h"
@@ -253,8 +252,8 @@
     index_->WriteToDisk(SimpleIndex::INDEX_WRITE_REASON_SHUTDOWN);
 }
 
-void SimpleBackendImpl::SetWorkerPoolForTesting(
-    scoped_refptr<base::TaskRunner> task_runner) {
+void SimpleBackendImpl::SetTaskRunnerForTesting(
+    scoped_refptr<base::SequencedTaskRunner> task_runner) {
   prioritized_task_runner_ =
       base::MakeRefCounted<net::PrioritizedTaskRunner>(std::move(task_runner));
 }
diff --git a/net/disk_cache/simple/simple_backend_impl.h b/net/disk_cache/simple/simple_backend_impl.h
index debb437d..e966c0f2f 100644
--- a/net/disk_cache/simple/simple_backend_impl.h
+++ b/net/disk_cache/simple/simple_backend_impl.h
@@ -18,8 +18,8 @@
 #include "base/files/file_path.h"
 #include "base/memory/ref_counted.h"
 #include "base/memory/weak_ptr.h"
+#include "base/sequenced_task_runner.h"
 #include "base/strings/string_split.h"
-#include "base/task_runner.h"
 #include "base/time/time.h"
 #include "build/build_config.h"
 #include "net/base/cache_type.h"
@@ -29,11 +29,6 @@
 #include "net/disk_cache/simple/simple_entry_impl.h"
 #include "net/disk_cache/simple/simple_index_delegate.h"
 
-namespace base {
-class SequencedTaskRunner;
-class TaskRunner;
-}  // namespace base
-
 namespace net {
 class PrioritizedTaskRunner;
 }  // namespace net
@@ -79,7 +74,8 @@
 
   SimpleIndex* index() { return index_.get(); }
 
-  void SetWorkerPoolForTesting(scoped_refptr<base::TaskRunner> task_runner);
+  void SetTaskRunnerForTesting(
+      scoped_refptr<base::SequencedTaskRunner> task_runner);
 
   net::Error Init(CompletionOnceCallback completion_callback);
 
diff --git a/net/http/http_proxy_connect_job.cc b/net/http/http_proxy_connect_job.cc
index 232484d..d7769615 100644
--- a/net/http/http_proxy_connect_job.cc
+++ b/net/http/http_proxy_connect_job.cc
@@ -236,6 +236,10 @@
   return false;
 }
 
+ResolveErrorInfo HttpProxyConnectJob::GetResolveErrorInfo() const {
+  return resolve_error_info_;
+}
+
 bool HttpProxyConnectJob::IsSSLError() const {
   return ssl_cert_request_info_ != nullptr;
 }
@@ -447,6 +451,7 @@
 }
 
 int HttpProxyConnectJob::DoTransportConnectComplete(int result) {
+  resolve_error_info_ = nested_connect_job_->GetResolveErrorInfo();
   if (result != OK) {
     UMA_HISTOGRAM_MEDIUM_TIMES("Net.HttpProxy.ConnectLatency.Insecure.Error",
                                base::TimeTicks::Now() - connect_start_time_);
@@ -478,6 +483,7 @@
 }
 
 int HttpProxyConnectJob::DoSSLConnectComplete(int result) {
+  resolve_error_info_ = nested_connect_job_->GetResolveErrorInfo();
   if (result == ERR_SSL_CLIENT_AUTH_CERT_NEEDED) {
     UMA_HISTOGRAM_MEDIUM_TIMES("Net.HttpProxy.ConnectLatency.Secure.Error",
                                base::TimeTicks::Now() - connect_start_time_);
diff --git a/net/http/http_proxy_connect_job.h b/net/http/http_proxy_connect_job.h
index 7a7b967..dac631f 100644
--- a/net/http/http_proxy_connect_job.h
+++ b/net/http/http_proxy_connect_job.h
@@ -16,6 +16,7 @@
 #include "net/base/net_export.h"
 #include "net/base/network_isolation_key.h"
 #include "net/base/request_priority.h"
+#include "net/dns/public/resolve_error_info.h"
 #include "net/http/http_auth.h"
 #include "net/quic/quic_chromium_client_session.h"
 #include "net/socket/connect_job.h"
@@ -109,6 +110,7 @@
   // ConnectJob methods.
   LoadState GetLoadState() const override;
   bool HasEstablishedConnection() const override;
+  ResolveErrorInfo GetResolveErrorInfo() const override;
   bool IsSSLError() const override;
   scoped_refptr<SSLCertRequestInfo> GetCertRequestInfo() override;
 
@@ -224,6 +226,8 @@
   // true even if a new socket is being connected to retry with auth.
   bool has_established_connection_;
 
+  ResolveErrorInfo resolve_error_info_;
+
   std::unique_ptr<ConnectJob> nested_connect_job_;
   std::unique_ptr<ProxyClientSocket> transport_socket_;
 
diff --git a/net/http/http_proxy_connect_job_unittest.cc b/net/http/http_proxy_connect_job_unittest.cc
index 8485a4a..158e631 100644
--- a/net/http/http_proxy_connect_job_unittest.cc
+++ b/net/http/http_proxy_connect_job_unittest.cc
@@ -810,6 +810,22 @@
   }
 }
 
+TEST_P(HttpProxyConnectJobTest, HostResolutionFailure) {
+  session_deps_.host_resolver->rules()->AddSimulatedTimeoutFailure(
+      kHttpProxyHost);
+  session_deps_.host_resolver->rules()->AddSimulatedTimeoutFailure(
+      kHttpsProxyHost);
+
+  TestConnectJobDelegate test_delegate;
+  std::unique_ptr<ConnectJob> connect_job =
+      CreateConnectJobForHttpRequest(&test_delegate, DEFAULT_PRIORITY);
+  test_delegate.StartJobExpectingResult(connect_job.get(),
+                                        ERR_PROXY_CONNECTION_FAILED,
+                                        false /* expect_sync_result */);
+  EXPECT_THAT(connect_job->GetResolveErrorInfo().error,
+              test::IsError(ERR_DNS_TIMED_OUT));
+}
+
 TEST_P(HttpProxyConnectJobTest, RequestPriority) {
   // Make request hang during host resolution, so can observe priority there.
   session_deps_.host_resolver->set_ondemand_mode(true);
diff --git a/net/nqe/network_quality_estimator.cc b/net/nqe/network_quality_estimator.cc
index 2fa357e3..4fa777eb 100644
--- a/net/nqe/network_quality_estimator.cc
+++ b/net/nqe/network_quality_estimator.cc
@@ -387,8 +387,8 @@
   throughput_analyzer_->NotifyBytesRead(request);
 }
 
-void NetworkQualityEstimator::NotifyRequestCompleted(const URLRequest& request,
-                                                     int net_error) {
+void NetworkQualityEstimator::NotifyRequestCompleted(
+    const URLRequest& request) {
   TRACE_EVENT0(NetTracingCategory(),
                "NetworkQualityEstimator::NotifyRequestCompleted");
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
diff --git a/net/nqe/network_quality_estimator.h b/net/nqe/network_quality_estimator.h
index da3d0f8e..c5dfc08 100644
--- a/net/nqe/network_quality_estimator.h
+++ b/net/nqe/network_quality_estimator.h
@@ -190,7 +190,7 @@
 
   // Notifies NetworkQualityEstimator that the response body of |request| has
   // been received.
-  void NotifyRequestCompleted(const URLRequest& request, int net_error);
+  void NotifyRequestCompleted(const URLRequest& request);
 
   // Notifies NetworkQualityEstimator that |request| will be destroyed.
   void NotifyURLRequestDestroyed(const URLRequest& request);
diff --git a/net/proxy_resolution/dhcp_pac_file_fetcher_win.cc b/net/proxy_resolution/dhcp_pac_file_fetcher_win.cc
index b8ca865..8a72638 100644
--- a/net/proxy_resolution/dhcp_pac_file_fetcher_win.cc
+++ b/net/proxy_resolution/dhcp_pac_file_fetcher_win.cc
@@ -144,10 +144,6 @@
     return true;
   }
 
-  bool RunsTasksInCurrentSequence() const override {
-    return task_runner_->RunsTasksInCurrentSequence();
-  }
-
  private:
   struct LocationAndTask {
     LocationAndTask() = default;
diff --git a/net/quic/mock_crypto_client_stream.cc b/net/quic/mock_crypto_client_stream.cc
index 8fb544f..9458af6a 100644
--- a/net/quic/mock_crypto_client_stream.cc
+++ b/net/quic/mock_crypto_client_stream.cc
@@ -87,6 +87,11 @@
 }
 
 bool MockCryptoClientStream::CryptoConnect() {
+  if (session()->connection()->version().KnowsWhichDecrypterToUse()) {
+    session()->connection()->InstallDecrypter(
+        ENCRYPTION_FORWARD_SECURE,
+        std::make_unique<NullDecrypter>(Perspective::IS_CLIENT));
+  }
   if (proof_verify_details_) {
     if (!proof_verify_details_->cert_verify_result.verified_cert
              ->VerifyNameMatch(server_id_.host())) {
diff --git a/net/quic/quic_stream_factory.cc b/net/quic/quic_stream_factory.cc
index d35bfde..ee0fd90 100644
--- a/net/quic/quic_stream_factory.cc
+++ b/net/quic/quic_stream_factory.cc
@@ -1994,11 +1994,6 @@
     *session = nullptr;
     return ERR_CONNECTION_CLOSED;
   }
-  if (connection->version().KnowsWhichDecrypterToUse()) {
-    connection->InstallDecrypter(
-        quic::ENCRYPTION_FORWARD_SECURE,
-        std::make_unique<quic::NullDecrypter>(quic::Perspective::IS_CLIENT));
-  }
   return OK;
 }
 
diff --git a/net/socket/client_socket_handle.cc b/net/socket/client_socket_handle.cc
index 0fd702e..b87ed196 100644
--- a/net/socket/client_socket_handle.cc
+++ b/net/socket/client_socket_handle.cc
@@ -25,6 +25,7 @@
       higher_pool_(nullptr),
       reuse_type_(ClientSocketHandle::UNUSED),
       group_generation_(-1),
+      resolve_error_info_(ResolveErrorInfo(OK)),
       is_ssl_error_(false) {}
 
 ClientSocketHandle::~ClientSocketHandle() {
@@ -163,6 +164,7 @@
 void ClientSocketHandle::SetAdditionalErrorState(ConnectJob* connect_job) {
   connection_attempts_ = connect_job->GetConnectionAttempts();
 
+  resolve_error_info_ = connect_job->GetResolveErrorInfo();
   is_ssl_error_ = connect_job->IsSSLError();
   ssl_cert_request_info_ = connect_job->GetCertRequestInfo();
 }
@@ -241,6 +243,7 @@
 }
 
 void ClientSocketHandle::ResetErrorState() {
+  resolve_error_info_ = ResolveErrorInfo(OK);
   is_ssl_error_ = false;
   ssl_cert_request_info_ = nullptr;
 }
diff --git a/net/socket/client_socket_handle.h b/net/socket/client_socket_handle.h
index 2ac9d88..7a32571 100644
--- a/net/socket/client_socket_handle.h
+++ b/net/socket/client_socket_handle.h
@@ -21,6 +21,7 @@
 #include "net/base/net_errors.h"
 #include "net/base/net_export.h"
 #include "net/base/request_priority.h"
+#include "net/dns/public/resolve_error_info.h"
 #include "net/log/net_log_source.h"
 #include "net/log/net_log_with_source.h"
 #include "net/socket/client_socket_pool.h"
@@ -172,6 +173,7 @@
   void set_connection_attempts(const ConnectionAttempts& attempts) {
     connection_attempts_ = attempts;
   }
+  ResolveErrorInfo resolve_error_info() const { return resolve_error_info_; }
 
   // Only valid if there is no |socket_|.
   bool is_ssl_error() const {
@@ -240,6 +242,7 @@
   base::TimeDelta idle_time_;
   // See ClientSocketPool::ReleaseSocket() for an explanation.
   int64_t group_generation_;
+  ResolveErrorInfo resolve_error_info_;
   bool is_ssl_error_;
   scoped_refptr<SSLCertRequestInfo> ssl_cert_request_info_;
   std::vector<ConnectionAttempt> connection_attempts_;
diff --git a/net/socket/client_socket_pool_base_unittest.cc b/net/socket/client_socket_pool_base_unittest.cc
index 6d7ee44..147b766 100644
--- a/net/socket/client_socket_pool_base_unittest.cc
+++ b/net/socket/client_socket_pool_base_unittest.cc
@@ -34,6 +34,7 @@
 #include "net/base/proxy_server.h"
 #include "net/base/request_priority.h"
 #include "net/base/test_completion_callback.h"
+#include "net/dns/public/resolve_error_info.h"
 #include "net/http/http_response_headers.h"
 #include "net/http/http_response_info.h"
 #include "net/log/net_log.h"
@@ -355,6 +356,10 @@
     return has_established_connection_;
   }
 
+  ResolveErrorInfo GetResolveErrorInfo() const override {
+    return ResolveErrorInfo(OK);
+  }
+
   bool IsSSLError() const override { return store_additional_error_state_; }
 
   scoped_refptr<SSLCertRequestInfo> GetCertRequestInfo() override {
diff --git a/net/socket/connect_job.h b/net/socket/connect_job.h
index a74b7e9..0235808 100644
--- a/net/socket/connect_job.h
+++ b/net/socket/connect_job.h
@@ -20,6 +20,7 @@
 #include "net/base/net_export.h"
 #include "net/base/privacy_mode.h"
 #include "net/base/request_priority.h"
+#include "net/dns/public/resolve_error_info.h"
 #include "net/log/net_log_with_source.h"
 #include "net/socket/connection_attempts.h"
 #include "net/socket/socket_tag.h"
@@ -238,6 +239,9 @@
   // proxy.
   virtual ConnectionAttempts GetConnectionAttempts() const;
 
+  // Returns error information about any host resolution attempt.
+  virtual ResolveErrorInfo GetResolveErrorInfo() const = 0;
+
   // If the ConnectJob failed, returns true if the failure occurred after SSL
   // negotiation started. If the ConnectJob succeeded, the returned value is
   // undefined.
diff --git a/net/socket/connect_job_unittest.cc b/net/socket/connect_job_unittest.cc
index 242cd9a..8c82655 100644
--- a/net/socket/connect_job_unittest.cc
+++ b/net/socket/connect_job_unittest.cc
@@ -13,6 +13,7 @@
 #include "net/base/address_list.h"
 #include "net/base/net_errors.h"
 #include "net/base/request_priority.h"
+#include "net/dns/public/resolve_error_info.h"
 #include "net/log/test_net_log.h"
 #include "net/log/test_net_log_util.h"
 #include "net/socket/connect_job_test_util.h"
@@ -63,6 +64,9 @@
   // From ConnectJob:
   LoadState GetLoadState() const override { return LOAD_STATE_IDLE; }
   bool HasEstablishedConnection() const override { return false; }
+  ResolveErrorInfo GetResolveErrorInfo() const override {
+    return ResolveErrorInfo(net::OK);
+  }
   int ConnectInternal() override {
     SetSocket(std::unique_ptr<StreamSocket>(new MockTCPClientSocket(
         AddressList(), net_log().net_log(), &socket_data_provider_)));
diff --git a/net/socket/socks_client_socket.cc b/net/socket/socks_client_socket.cc
index 848a9cbd..b6cd391 100644
--- a/net/socket/socks_client_socket.cc
+++ b/net/socket/socks_client_socket.cc
@@ -319,6 +319,7 @@
 }
 
 int SOCKSClientSocket::DoResolveHostComplete(int result) {
+  resolve_error_info_ = resolve_host_request_->GetResolveErrorInfo();
   if (result != OK) {
     // Resolving the hostname failed; fail the request rather than automatically
     // falling back to SOCKS4a (since it can be confusing to see invalid IP
@@ -474,4 +475,8 @@
   return transport_socket_->GetLocalAddress(address);
 }
 
+ResolveErrorInfo SOCKSClientSocket::GetResolveErrorInfo() const {
+  return resolve_error_info_;
+}
+
 }  // namespace net
diff --git a/net/socket/socks_client_socket.h b/net/socket/socks_client_socket.h
index 526b4f5..95e6daa65 100644
--- a/net/socket/socks_client_socket.h
+++ b/net/socket/socks_client_socket.h
@@ -20,6 +20,7 @@
 #include "net/base/net_errors.h"
 #include "net/base/net_export.h"
 #include "net/dns/host_resolver.h"
+#include "net/dns/public/resolve_error_info.h"
 #include "net/log/net_log_with_source.h"
 #include "net/socket/stream_socket.h"
 #include "net/traffic_annotation/network_traffic_annotation.h"
@@ -80,6 +81,9 @@
   int GetPeerAddress(IPEndPoint* address) const override;
   int GetLocalAddress(IPEndPoint* address) const override;
 
+  // Returns error information about any host resolution attempt.
+  ResolveErrorInfo GetResolveErrorInfo() const;
+
  private:
   FRIEND_TEST_ALL_PREFIXES(SOCKSClientSocketTest, CompleteHandshake);
   FRIEND_TEST_ALL_PREFIXES(SOCKSClientSocketTest, SOCKS4AFailedDNS);
@@ -144,6 +148,7 @@
   const HostPortPair destination_;
   const NetworkIsolationKey network_isolation_key_;
   RequestPriority priority_;
+  ResolveErrorInfo resolve_error_info_;
 
   NetLogWithSource net_log_;
 
diff --git a/net/socket/socks_client_socket_unittest.cc b/net/socket/socks_client_socket_unittest.cc
index e974ca0..2095aa1 100644
--- a/net/socket/socks_client_socket_unittest.cc
+++ b/net/socket/socks_client_socket_unittest.cc
@@ -349,7 +349,7 @@
 TEST_F(SOCKSClientSocketTest, FailedDNS) {
   const char hostname[] = "unresolved.ipv4.address";
 
-  host_resolver_->rules()->AddSimulatedFailure(hostname);
+  host_resolver_->rules()->AddSimulatedTimeoutFailure(hostname);
 
   RecordingTestNetLog log;
 
@@ -364,6 +364,8 @@
 
   rv = callback_.WaitForResult();
   EXPECT_THAT(rv, IsError(ERR_NAME_NOT_RESOLVED));
+  EXPECT_THAT(user_sock_->GetResolveErrorInfo().error,
+              IsError(ERR_DNS_TIMED_OUT));
   EXPECT_FALSE(user_sock_->IsConnected());
   entries = log.GetEntries();
   EXPECT_TRUE(LogContainsEndEvent(entries, -1, NetLogEventType::SOCKS_CONNECT));
diff --git a/net/socket/socks_connect_job.cc b/net/socket/socks_connect_job.cc
index fb4a6281..6d0e6889 100644
--- a/net/socket/socks_connect_job.cc
+++ b/net/socket/socks_connect_job.cc
@@ -79,6 +79,10 @@
          next_state_ == STATE_SOCKS_CONNECT_COMPLETE;
 }
 
+ResolveErrorInfo SOCKSConnectJob::GetResolveErrorInfo() const {
+  return resolve_error_info_;
+}
+
 base::TimeDelta SOCKSConnectJob::HandshakeTimeoutForTesting() {
   return kSOCKSConnectJobTimeout;
 }
@@ -147,6 +151,7 @@
 }
 
 int SOCKSConnectJob::DoTransportConnectComplete(int result) {
+  resolve_error_info_ = transport_connect_job_->GetResolveErrorInfo();
   if (result != OK)
     return ERR_PROXY_CONNECTION_FAILED;
 
@@ -165,11 +170,12 @@
                                          socks_params_->destination(),
                                          socks_params_->traffic_annotation()));
   } else {
-    socket_.reset(new SOCKSClientSocket(
+    socks_socket_ptr_ = new SOCKSClientSocket(
         transport_connect_job_->PassSocket(), socks_params_->destination(),
         socks_params_->network_isolation_key(), priority(), host_resolver(),
         socks_params_->transport_params()->disable_secure_dns(),
-        socks_params_->traffic_annotation()));
+        socks_params_->traffic_annotation());
+    socket_.reset(socks_socket_ptr_);
   }
   transport_connect_job_.reset();
   return socket_->Connect(
@@ -177,6 +183,8 @@
 }
 
 int SOCKSConnectJob::DoSOCKSConnectComplete(int result) {
+  if (!socks_params_->is_socks_v5())
+    resolve_error_info_ = socks_socket_ptr_->GetResolveErrorInfo();
   if (result != OK) {
     socket_->Disconnect();
     return result;
diff --git a/net/socket/socks_connect_job.h b/net/socket/socks_connect_job.h
index 5474514..7ce44f52 100644
--- a/net/socket/socks_connect_job.h
+++ b/net/socket/socks_connect_job.h
@@ -16,7 +16,9 @@
 #include "net/base/net_export.h"
 #include "net/base/network_isolation_key.h"
 #include "net/base/request_priority.h"
+#include "net/dns/public/resolve_error_info.h"
 #include "net/socket/connect_job.h"
+#include "net/socket/socks_client_socket.h"
 #include "net/traffic_annotation/network_traffic_annotation.h"
 
 namespace net {
@@ -79,6 +81,7 @@
   // ConnectJob methods.
   LoadState GetLoadState() const override;
   bool HasEstablishedConnection() const override;
+  ResolveErrorInfo GetResolveErrorInfo() const override;
 
   // Returns the handshake timeout used by SOCKSConnectJobs.
   static base::TimeDelta HandshakeTimeoutForTesting();
@@ -121,6 +124,9 @@
   State next_state_;
   std::unique_ptr<ConnectJob> transport_connect_job_;
   std::unique_ptr<StreamSocket> socket_;
+  SOCKSClientSocket* socks_socket_ptr_;
+
+  ResolveErrorInfo resolve_error_info_;
 
   DISALLOW_COPY_AND_ASSIGN(SOCKSConnectJob);
 };
diff --git a/net/socket/socks_connect_job_unittest.cc b/net/socket/socks_connect_job_unittest.cc
index b1c9478..b3e23f6 100644
--- a/net/socket/socks_connect_job_unittest.cc
+++ b/net/socket/socks_connect_job_unittest.cc
@@ -23,6 +23,7 @@
 #include "net/socket/socket_tag.h"
 #include "net/socket/socket_test_util.h"
 #include "net/socket/socks_connect_job.h"
+#include "net/socket/transport_client_socket_pool_test_util.h"
 #include "net/socket/transport_connect_job.h"
 #include "net/test/gtest_util.h"
 #include "net/test/test_with_task_environment.h"
@@ -86,7 +87,7 @@
 };
 
 TEST_F(SOCKSConnectJobTest, HostResolutionFailure) {
-  host_resolver_.rules()->AddSimulatedFailure(kProxyHostName);
+  host_resolver_.rules()->AddSimulatedTimeoutFailure(kProxyHostName);
 
   for (bool failure_synchronous : {false, true}) {
     host_resolver_.set_synchronous_mode(failure_synchronous);
@@ -97,6 +98,39 @@
                                       &test_delegate, nullptr /* net_log */);
     test_delegate.StartJobExpectingResult(
         &socks_connect_job, ERR_PROXY_CONNECTION_FAILED, failure_synchronous);
+    EXPECT_THAT(socks_connect_job.GetResolveErrorInfo().error,
+                test::IsError(ERR_DNS_TIMED_OUT));
+  }
+}
+
+TEST_F(SOCKSConnectJobTest, HostResolutionFailureSOCKS4Endpoint) {
+  const char hostname[] = "google.com";
+  host_resolver_.rules()->AddSimulatedTimeoutFailure(hostname);
+
+  for (bool failure_synchronous : {false, true}) {
+    host_resolver_.set_synchronous_mode(failure_synchronous);
+
+    SequencedSocketData sequenced_socket_data{base::span<MockRead>(),
+                                              base::span<MockWrite>()};
+    sequenced_socket_data.set_connect_data(MockConnect(SYNCHRONOUS, OK));
+    client_socket_factory_.AddSocketDataProvider(&sequenced_socket_data);
+
+    scoped_refptr<SOCKSSocketParams> socket_params =
+        base::MakeRefCounted<SOCKSSocketParams>(
+            base::MakeRefCounted<TransportSocketParams>(
+                HostPortPair(kProxyHostName, kProxyPort), NetworkIsolationKey(),
+                false /* disable_secure_dns */, OnHostResolutionCallback()),
+            false /* socks_v5 */, HostPortPair(hostname, kSOCKS4TestPort),
+            NetworkIsolationKey(), TRAFFIC_ANNOTATION_FOR_TESTS);
+
+    TestConnectJobDelegate test_delegate;
+    SOCKSConnectJob socks_connect_job(
+        DEFAULT_PRIORITY, SocketTag(), &common_connect_job_params_,
+        socket_params, &test_delegate, nullptr /* net_log */);
+    test_delegate.StartJobExpectingResult(
+        &socks_connect_job, ERR_NAME_NOT_RESOLVED, failure_synchronous);
+    EXPECT_THAT(socks_connect_job.GetResolveErrorInfo().error,
+                test::IsError(ERR_DNS_TIMED_OUT));
   }
 }
 
diff --git a/net/socket/ssl_connect_job.cc b/net/socket/ssl_connect_job.cc
index 62b1625..a7b8400 100644
--- a/net/socket/ssl_connect_job.cc
+++ b/net/socket/ssl_connect_job.cc
@@ -181,6 +181,10 @@
   return connection_attempts_;
 }
 
+ResolveErrorInfo SSLConnectJob::GetResolveErrorInfo() const {
+  return resolve_error_info_;
+}
+
 bool SSLConnectJob::IsSSLError() const {
   return ssl_negotiation_started_;
 }
@@ -259,6 +263,7 @@
 }
 
 int SSLConnectJob::DoTransportConnectComplete(int result) {
+  resolve_error_info_ = nested_connect_job_->GetResolveErrorInfo();
   ConnectionAttempts connection_attempts =
       nested_connect_job_->GetConnectionAttempts();
   connection_attempts_.insert(connection_attempts_.end(),
@@ -286,6 +291,7 @@
 }
 
 int SSLConnectJob::DoSOCKSConnectComplete(int result) {
+  resolve_error_info_ = nested_connect_job_->GetResolveErrorInfo();
   if (result == OK) {
     next_state_ = STATE_SSL_CONNECT;
     nested_socket_ = nested_connect_job_->PassSocket();
@@ -309,6 +315,7 @@
 }
 
 int SSLConnectJob::DoTunnelConnectComplete(int result) {
+  resolve_error_info_ = nested_connect_job_->GetResolveErrorInfo();
   nested_socket_ = nested_connect_job_->PassSocket();
 
   if (result < 0) {
diff --git a/net/socket/ssl_connect_job.h b/net/socket/ssl_connect_job.h
index 575f4293..b5fab49 100644
--- a/net/socket/ssl_connect_job.h
+++ b/net/socket/ssl_connect_job.h
@@ -16,6 +16,7 @@
 #include "net/base/net_export.h"
 #include "net/base/network_isolation_key.h"
 #include "net/base/privacy_mode.h"
+#include "net/dns/public/resolve_error_info.h"
 #include "net/socket/connect_job.h"
 #include "net/socket/connection_attempts.h"
 #include "net/socket/ssl_client_socket.h"
@@ -106,6 +107,7 @@
                         base::OnceClosure restart_with_auth_callback,
                         ConnectJob* job) override;
   ConnectionAttempts GetConnectionAttempts() const override;
+  ResolveErrorInfo GetResolveErrorInfo() const override;
   bool IsSSLError() const override;
   scoped_refptr<SSLCertRequestInfo> GetCertRequestInfo() override;
 
@@ -165,6 +167,7 @@
   scoped_refptr<SSLCertRequestInfo> ssl_cert_request_info_;
 
   ConnectionAttempts connection_attempts_;
+  ResolveErrorInfo resolve_error_info_;
   // The address of the server the connect job is connected to. Populated if
   // and only if the connect job is connected *directly* to the server (not
   // through an HTTPS CONNECT request or a SOCKS proxy).
diff --git a/net/socket/ssl_connect_job_unittest.cc b/net/socket/ssl_connect_job_unittest.cc
index 33ac9352..7592e416 100644
--- a/net/socket/ssl_connect_job_unittest.cc
+++ b/net/socket/ssl_connect_job_unittest.cc
@@ -442,6 +442,19 @@
   }
 }
 
+TEST_F(SSLConnectJobTest, DirectHostResolutionFailure) {
+  host_resolver_.rules()->AddSimulatedTimeoutFailure("host");
+
+  TestConnectJobDelegate test_delegate;
+  std::unique_ptr<ConnectJob> ssl_connect_job =
+      CreateConnectJob(&test_delegate, ProxyServer::SCHEME_DIRECT);
+  test_delegate.StartJobExpectingResult(ssl_connect_job.get(),
+                                        ERR_NAME_NOT_RESOLVED,
+                                        false /* expect_sync_result */);
+  EXPECT_THAT(ssl_connect_job->GetResolveErrorInfo().error,
+              test::IsError(ERR_DNS_TIMED_OUT));
+}
+
 TEST_F(SSLConnectJobTest, DirectCertError) {
   StaticSocketDataProvider data;
   socket_factory_.AddSocketDataProvider(&data);
@@ -542,6 +555,19 @@
   }
 }
 
+TEST_F(SSLConnectJobTest, SOCKSHostResolutionFailure) {
+  host_resolver_.rules()->AddSimulatedTimeoutFailure("proxy");
+
+  TestConnectJobDelegate test_delegate;
+  std::unique_ptr<ConnectJob> ssl_connect_job =
+      CreateConnectJob(&test_delegate, ProxyServer::SCHEME_SOCKS5);
+  test_delegate.StartJobExpectingResult(ssl_connect_job.get(),
+                                        ERR_PROXY_CONNECTION_FAILED,
+                                        false /* expect_sync_result */);
+  EXPECT_THAT(ssl_connect_job->GetResolveErrorInfo().error,
+              test::IsError(ERR_DNS_TIMED_OUT));
+}
+
 TEST_F(SSLConnectJobTest, SOCKSBasic) {
   for (IoMode io_mode : {SYNCHRONOUS, ASYNC}) {
     SCOPED_TRACE(io_mode);
@@ -685,6 +711,19 @@
   }
 }
 
+TEST_F(SSLConnectJobTest, HttpProxyHostResolutionFailure) {
+  host_resolver_.rules()->AddSimulatedTimeoutFailure("proxy");
+
+  TestConnectJobDelegate test_delegate;
+  std::unique_ptr<ConnectJob> ssl_connect_job =
+      CreateConnectJob(&test_delegate, ProxyServer::SCHEME_HTTP);
+  test_delegate.StartJobExpectingResult(ssl_connect_job.get(),
+                                        ERR_PROXY_CONNECTION_FAILED,
+                                        false /* expect_sync_result */);
+  EXPECT_THAT(ssl_connect_job->GetResolveErrorInfo().error,
+              test::IsError(ERR_DNS_TIMED_OUT));
+}
+
 TEST_F(SSLConnectJobTest, HttpProxyAuthChallenge) {
   MockWrite writes[] = {
       MockWrite(ASYNC, 0,
diff --git a/net/socket/stream_socket.h b/net/socket/stream_socket.h
index e93b9c1..a57f893 100644
--- a/net/socket/stream_socket.h
+++ b/net/socket/stream_socket.h
@@ -11,6 +11,7 @@
 #include "base/macros.h"
 #include "net/base/net_errors.h"
 #include "net/base/net_export.h"
+#include "net/dns/public/resolve_error_info.h"
 #include "net/socket/connection_attempts.h"
 #include "net/socket/next_proto.h"
 #include "net/socket/socket.h"
diff --git a/net/socket/transport_client_socket_pool_unittest.cc b/net/socket/transport_client_socket_pool_unittest.cc
index b6aa900..02f89a4 100644
--- a/net/socket/transport_client_socket_pool_unittest.cc
+++ b/net/socket/transport_client_socket_pool_unittest.cc
@@ -560,7 +560,7 @@
 }
 
 TEST_F(TransportClientSocketPoolTest, InitHostResolutionFailure) {
-  session_deps_.host_resolver->rules()->AddSimulatedFailure(
+  session_deps_.host_resolver->rules()->AddSimulatedTimeoutFailure(
       group_id_.destination().host());
   TestCompletionCallback callback;
   ClientSocketHandle handle;
@@ -572,6 +572,7 @@
                   ClientSocketPool::ProxyAuthCallback(), pool_.get(),
                   NetLogWithSource()));
   EXPECT_THAT(callback.WaitForResult(), IsError(ERR_NAME_NOT_RESOLVED));
+  EXPECT_THAT(handle.resolve_error_info().error, IsError(ERR_DNS_TIMED_OUT));
   ASSERT_EQ(1u, handle.connection_attempts().size());
   EXPECT_TRUE(handle.connection_attempts()[0].endpoint.address().empty());
   EXPECT_THAT(handle.connection_attempts()[0].result,
diff --git a/net/socket/transport_connect_job.cc b/net/socket/transport_connect_job.cc
index 23575474..9d682e9 100644
--- a/net/socket/transport_connect_job.cc
+++ b/net/socket/transport_connect_job.cc
@@ -151,6 +151,10 @@
   return attempts;
 }
 
+ResolveErrorInfo TransportConnectJob::GetResolveErrorInfo() const {
+  return resolve_error_info_;
+}
+
 // static
 void TransportConnectJob::MakeAddressListStartWithIPv4(AddressList* list) {
   for (auto i = list->begin(); i != list->end(); ++i) {
@@ -281,6 +285,7 @@
   // through proxies, |connect_start| should not include dns lookup time.
   connect_timing_.connect_start = connect_timing_.dns_end;
   resolve_result_ = result;
+  resolve_error_info_ = request_->GetResolveErrorInfo();
 
   if (result != OK)
     return result;
diff --git a/net/socket/transport_connect_job.h b/net/socket/transport_connect_job.h
index ad4804e..ee12860 100644
--- a/net/socket/transport_connect_job.h
+++ b/net/socket/transport_connect_job.h
@@ -18,6 +18,7 @@
 #include "net/base/net_export.h"
 #include "net/base/network_isolation_key.h"
 #include "net/dns/host_resolver.h"
+#include "net/dns/public/resolve_error_info.h"
 #include "net/socket/connect_job.h"
 #include "net/socket/connection_attempts.h"
 #include "net/socket/socket_tag.h"
@@ -113,6 +114,7 @@
   LoadState GetLoadState() const override;
   bool HasEstablishedConnection() const override;
   ConnectionAttempts GetConnectionAttempts() const override;
+  ResolveErrorInfo GetResolveErrorInfo() const override;
 
   // Rolls |addrlist| forward until the first IPv4 address, if any.
   // WARNING: this method should only be used to implement the prefer-IPv4 hack.
@@ -171,6 +173,7 @@
   base::OneShotTimer fallback_timer_;
 
   int resolve_result_;
+  ResolveErrorInfo resolve_error_info_;
 
   // Used in the failure case to save connection attempts made on the main and
   // fallback sockets and pass them on in |GetAdditionalErrorState|. (In the
diff --git a/net/socket/transport_connect_job_unittest.cc b/net/socket/transport_connect_job_unittest.cc
index 3f58007..a94d60e6 100644
--- a/net/socket/transport_connect_job_unittest.cc
+++ b/net/socket/transport_connect_job_unittest.cc
@@ -137,7 +137,7 @@
 }
 
 TEST_F(TransportConnectJobTest, HostResolutionFailure) {
-  host_resolver_.rules()->AddSimulatedFailure(kHostName);
+  host_resolver_.rules()->AddSimulatedTimeoutFailure(kHostName);
 
   //  Check sync and async failures.
   for (bool host_resolution_synchronous : {false, true}) {
@@ -149,6 +149,8 @@
     test_delegate.StartJobExpectingResult(&transport_connect_job,
                                           ERR_NAME_NOT_RESOLVED,
                                           host_resolution_synchronous);
+    EXPECT_THAT(transport_connect_job.GetResolveErrorInfo().error,
+                test::IsError(ERR_DNS_TIMED_OUT));
   }
 }
 
diff --git a/net/socket/websocket_transport_client_socket_pool_unittest.cc b/net/socket/websocket_transport_client_socket_pool_unittest.cc
index b71c0825..ae476b1 100644
--- a/net/socket/websocket_transport_client_socket_pool_unittest.cc
+++ b/net/socket/websocket_transport_client_socket_pool_unittest.cc
@@ -186,7 +186,7 @@
 
 TEST_F(WebSocketTransportClientSocketPoolTest, InitHostResolutionFailure) {
   HostPortPair host_port_pair("unresolvable.host.name", 80);
-  host_resolver_->rules()->AddSimulatedFailure(host_port_pair.host());
+  host_resolver_->rules()->AddSimulatedTimeoutFailure(host_port_pair.host());
   TestCompletionCallback callback;
   ClientSocketHandle handle;
   EXPECT_EQ(
@@ -201,6 +201,7 @@
                   callback.callback(), ClientSocketPool::ProxyAuthCallback(),
                   &pool_, NetLogWithSource()));
   EXPECT_THAT(callback.WaitForResult(), IsError(ERR_NAME_NOT_RESOLVED));
+  EXPECT_THAT(handle.resolve_error_info().error, IsError(ERR_DNS_TIMED_OUT));
 }
 
 TEST_F(WebSocketTransportClientSocketPoolTest, InitConnectionFailure) {
diff --git a/net/socket/websocket_transport_connect_job.cc b/net/socket/websocket_transport_connect_job.cc
index c96d542..59ebac2 100644
--- a/net/socket/websocket_transport_connect_job.cc
+++ b/net/socket/websocket_transport_connect_job.cc
@@ -65,6 +65,10 @@
   return false;
 }
 
+ResolveErrorInfo WebSocketTransportConnectJob::GetResolveErrorInfo() const {
+  return resolve_error_info_;
+}
+
 void WebSocketTransportConnectJob::OnIOComplete(int result) {
   result = DoLoop(result);
   if (result != ERR_IO_PENDING)
@@ -125,6 +129,7 @@
   // Overwrite connection start time, since for connections that do not go
   // through proxies, |connect_start| should not include dns lookup time.
   connect_timing_.connect_start = connect_timing_.dns_end;
+  resolve_error_info_ = request_->GetResolveErrorInfo();
 
   if (result != OK)
     return result;
diff --git a/net/socket/websocket_transport_connect_job.h b/net/socket/websocket_transport_connect_job.h
index cfd0ed3..174f5ec 100644
--- a/net/socket/websocket_transport_connect_job.h
+++ b/net/socket/websocket_transport_connect_job.h
@@ -16,6 +16,7 @@
 #include "base/timer/timer.h"
 #include "net/base/net_export.h"
 #include "net/dns/host_resolver.h"
+#include "net/dns/public/resolve_error_info.h"
 #include "net/log/net_log_with_source.h"
 #include "net/socket/transport_connect_job.h"
 
@@ -51,6 +52,7 @@
   // ConnectJob methods.
   LoadState GetLoadState() const override;
   bool HasEstablishedConnection() const override;
+  ResolveErrorInfo GetResolveErrorInfo() const override;
 
  private:
   friend class WebSocketTransportConnectSubJob;
@@ -106,6 +108,8 @@
   bool had_ipv4_;
   bool had_ipv6_;
 
+  ResolveErrorInfo resolve_error_info_;
+
   base::WeakPtrFactory<WebSocketTransportConnectJob> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(WebSocketTransportConnectJob);
diff --git a/net/url_request/redirect_info.cc b/net/url_request/redirect_info.cc
index d716a0c1..11912143 100644
--- a/net/url_request/redirect_info.cc
+++ b/net/url_request/redirect_info.cc
@@ -117,7 +117,7 @@
 RedirectInfo RedirectInfo::ComputeRedirectInfo(
     const std::string& original_method,
     const GURL& original_url,
-    const GURL& original_site_for_cookies,
+    const SiteForCookies& original_site_for_cookies,
     URLRequest::FirstPartyURLPolicy original_first_party_url_policy,
     URLRequest::ReferrerPolicy original_referrer_policy,
     const std::string& original_referrer,
@@ -156,7 +156,8 @@
   // Update the first-party URL if appropriate.
   if (original_first_party_url_policy ==
       URLRequest::UPDATE_FIRST_PARTY_URL_ON_REDIRECT) {
-    redirect_info.new_site_for_cookies = redirect_info.new_url;
+    redirect_info.new_site_for_cookies =
+        SiteForCookies::FromUrl(redirect_info.new_url);
   } else {
     redirect_info.new_site_for_cookies = original_site_for_cookies;
   }
diff --git a/net/url_request/redirect_info.h b/net/url_request/redirect_info.h
index 3e4699fc..67ed940 100644
--- a/net/url_request/redirect_info.h
+++ b/net/url_request/redirect_info.h
@@ -27,7 +27,7 @@
       // request.
       const std::string& original_method,
       const GURL& original_url,
-      const GURL& original_site_for_cookies,
+      const SiteForCookies& original_site_for_cookies,
       URLRequest::FirstPartyURLPolicy original_first_party_url_policy,
       URLRequest::ReferrerPolicy original_referrer_policy,
       const std::string& original_referrer,
@@ -59,8 +59,8 @@
   // The new request URL.
   GURL new_url;
 
-  // The new first-party URL for cookies.
-  GURL new_site_for_cookies;
+  // The new first-party for cookies.
+  SiteForCookies new_site_for_cookies;
 
   // The new HTTP referrer header.
   std::string new_referrer;
diff --git a/net/url_request/redirect_info_unittest.cc b/net/url_request/redirect_info_unittest.cc
index cc304bba..d4047b2 100644
--- a/net/url_request/redirect_info_unittest.cc
+++ b/net/url_request/redirect_info_unittest.cc
@@ -30,7 +30,8 @@
   };
 
   const GURL kOriginalUrl = GURL("https://foo.test/original");
-  const GURL kOriginalSiteForCookies = GURL("https://foo.test/");
+  const SiteForCookies kOriginalSiteForCookies =
+      SiteForCookies::FromUrl(GURL("https://foo.test/"));
   const url::Origin kOriginalTopFrameOrigin = url::Origin::Create(kOriginalUrl);
   const URLRequest::FirstPartyURLPolicy kOriginalFirstPartyUrlPolicy =
       net::URLRequest::NEVER_CHANGE_FIRST_PARTY_URL;
@@ -82,7 +83,8 @@
   };
 
   const std::string kOriginalMethod = "GET";
-  const GURL kOriginalSiteForCookies = GURL("https://foo.test/");
+  const SiteForCookies kOriginalSiteForCookies =
+      SiteForCookies::FromUrl(GURL("https://foo.test/"));
   const URLRequest::FirstPartyURLPolicy kOriginalFirstPartyUrlPolicy =
       net::URLRequest::NEVER_CHANGE_FIRST_PARTY_URL;
   const URLRequest::ReferrerPolicy kOriginalReferrerPolicy =
@@ -121,7 +123,8 @@
 
   const std::string kOriginalMethod = "GET";
   const GURL kOriginalUrl = GURL("https://foo.test/");
-  const GURL kOriginalSiteForCookies = GURL("https://foo.test/");
+  const SiteForCookies kOriginalSiteForCookies =
+      SiteForCookies::FromUrl(GURL("https://foo.test/"));
   const URLRequest::ReferrerPolicy kOriginalReferrerPolicy =
       net::URLRequest::NEVER_CLEAR_REFERRER;
   const std::string kOriginalReferrer = "";
@@ -142,8 +145,8 @@
         base::nullopt /* referrer_policy_header */, kInsecureSchemeWasUpgraded,
         kCopyFragment);
 
-    EXPECT_EQ(GURL(test.expected_new_site_for_cookies),
-              redirect_info.new_site_for_cookies);
+    EXPECT_TRUE(redirect_info.new_site_for_cookies.IsEquivalent(
+        SiteForCookies::FromUrl(GURL(test.expected_new_site_for_cookies))));
   }
 }
 
@@ -421,7 +424,8 @@
   };
 
   const std::string kOriginalMethod = "GET";
-  const GURL kOriginalSiteForCookies = GURL("https://foo.test/");
+  const SiteForCookies kOriginalSiteForCookies =
+      SiteForCookies::FromUrl(GURL("https://foo.test/"));
   const URLRequest::FirstPartyURLPolicy kOriginalFirstPartyUrlPolicy =
       net::URLRequest::NEVER_CHANGE_FIRST_PARTY_URL;
   const bool kInsecureSchemeWasUpgraded = false;
diff --git a/net/url_request/test_url_request_interceptor.cc b/net/url_request/test_url_request_interceptor.cc
deleted file mode 100644
index 32adb31..0000000
--- a/net/url_request/test_url_request_interceptor.cc
+++ /dev/null
@@ -1,199 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "net/url_request/test_url_request_interceptor.h"
-
-#include "base/bind.h"
-#include "base/files/file_util.h"
-#include "base/macros.h"
-#include "base/task_runner.h"
-#include "base/threading/thread_restrictions.h"
-#include "net/http/http_response_headers.h"
-#include "net/http/http_response_info.h"
-#include "net/test/url_request/url_request_test_job_backed_by_file.h"
-#include "net/url_request/url_request.h"
-#include "net/url_request/url_request_filter.h"
-#include "net/url_request/url_request_interceptor.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace net {
-
-namespace {
-
-// This class is needed because URLRequestTestJobBackedByFile always returns a
-// -1 HTTP response status code.
-class TestURLRequestJob : public URLRequestTestJobBackedByFile {
- public:
-  TestURLRequestJob(URLRequest* request,
-                    NetworkDelegate* network_delegate,
-                    const base::FilePath& file_path,
-                    const scoped_refptr<base::TaskRunner>& worker_task_runner)
-      : URLRequestTestJobBackedByFile(request,
-                                      network_delegate,
-                                      file_path,
-                                      worker_task_runner) {}
-
-  void GetResponseInfo(HttpResponseInfo* info) override {
-    info->headers = new net::HttpResponseHeaders("HTTP/1.1 200 OK");
-  }
-
- private:
-  ~TestURLRequestJob() override = default;
-
-  DISALLOW_COPY_AND_ASSIGN(TestURLRequestJob);
-};
-
-}  // namespace
-
-// This class handles the actual URL request interception. It may be constructed
-// on any thread, but all other methods are called on the |network_task_runner|
-// thread. It is destroyed by the URLRequestFilter singleton.
-class TestURLRequestInterceptor::Delegate : public URLRequestInterceptor {
- public:
-  Delegate(const std::string& scheme,
-           const std::string& hostname,
-           const scoped_refptr<base::TaskRunner>& network_task_runner,
-           const scoped_refptr<base::TaskRunner>& worker_task_runner)
-      : scheme_(scheme),
-        hostname_(hostname),
-        network_task_runner_(network_task_runner),
-        worker_task_runner_(worker_task_runner),
-        hit_count_(0) {}
-  ~Delegate() override = default;
-
-  void Register() {
-    URLRequestFilter::GetInstance()->AddHostnameInterceptor(
-        scheme_, hostname_, std::unique_ptr<URLRequestInterceptor>(this));
-  }
-
-  static void Unregister(const std::string& scheme,
-                         const std::string& hostname) {
-    URLRequestFilter::GetInstance()->RemoveHostnameHandler(scheme, hostname);
-  }
-
-  // When requests for |url| arrive, respond with the contents of |path|. The
-  // hostname and scheme of |url| must match the corresponding parameters
-  // passed as constructor arguments.
-  void SetResponse(const GURL& url,
-                   const base::FilePath& path,
-                   bool ignore_query) {
-    DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
-    if (ignore_query) {
-      ignore_query_responses_[url] = path;
-    } else {
-      responses_[url] = path;
-    }
-  }
-
-  // Returns how many requests have been issued that have a stored reply.
-  int GetHitCount() const {
-    base::AutoLock auto_lock(hit_count_lock_);
-    return hit_count_;
-  }
-
- private:
-  typedef std::map<GURL, base::FilePath> ResponseMap;
-
-  // When computing matches, this ignores the query parameters of the url.
-  URLRequestJob* MaybeInterceptRequest(
-      URLRequest* request,
-      NetworkDelegate* network_delegate) const override {
-    DCHECK(network_task_runner_->RunsTasksInCurrentSequence());
-    if (request->url().scheme() != scheme_ ||
-        request->url().host() != hostname_) {
-      return nullptr;
-    }
-
-    auto it = responses_.find(request->url());
-    if (it == responses_.end()) {
-      // Search for this request's url, ignoring any query parameters.
-      GURL url = request->url();
-      if (url.has_query()) {
-        GURL::Replacements replacements;
-        replacements.ClearQuery();
-        url = url.ReplaceComponents(replacements);
-      }
-      it = ignore_query_responses_.find(url);
-      if (it == ignore_query_responses_.end())
-        return nullptr;
-    }
-    {
-      base::AutoLock auto_lock(hit_count_lock_);
-      ++hit_count_;
-    }
-
-    return new TestURLRequestJob(
-        request, network_delegate, it->second, worker_task_runner_);
-  }
-
-  const std::string scheme_;
-  const std::string hostname_;
-
-  const scoped_refptr<base::TaskRunner> network_task_runner_;
-  const scoped_refptr<base::TaskRunner> worker_task_runner_;
-
-  ResponseMap responses_;
-  ResponseMap ignore_query_responses_;
-
-  mutable base::Lock hit_count_lock_;
-  mutable int hit_count_;
-
-  DISALLOW_COPY_AND_ASSIGN(Delegate);
-};
-
-TestURLRequestInterceptor::TestURLRequestInterceptor(
-    const std::string& scheme,
-    const std::string& hostname,
-    const scoped_refptr<base::TaskRunner>& network_task_runner,
-    const scoped_refptr<base::TaskRunner>& worker_task_runner)
-    : scheme_(scheme),
-      hostname_(hostname),
-      network_task_runner_(network_task_runner),
-      delegate_(new Delegate(scheme,
-                             hostname,
-                             network_task_runner_,
-                             worker_task_runner)) {
-  network_task_runner_->PostTask(
-      FROM_HERE,
-      base::BindOnce(&Delegate::Register, base::Unretained(delegate_)));
-}
-
-TestURLRequestInterceptor::~TestURLRequestInterceptor() {
-  network_task_runner_->PostTask(
-      FROM_HERE, base::BindOnce(&Delegate::Unregister, scheme_, hostname_));
-}
-
-void TestURLRequestInterceptor::SetResponse(const GURL& url,
-                                            const base::FilePath& path) {
-  CHECK_EQ(scheme_, url.scheme());
-  CHECK_EQ(hostname_, url.host());
-  network_task_runner_->PostTask(
-      FROM_HERE, base::BindOnce(&Delegate::SetResponse,
-                                base::Unretained(delegate_), url, path, false));
-}
-
-void TestURLRequestInterceptor::SetResponseIgnoreQuery(
-    const GURL& url,
-    const base::FilePath& path) {
-  CHECK_EQ(scheme_, url.scheme());
-  CHECK_EQ(hostname_, url.host());
-  network_task_runner_->PostTask(
-      FROM_HERE, base::BindOnce(&Delegate::SetResponse,
-                                base::Unretained(delegate_), url, path, true));
-}
-
-int TestURLRequestInterceptor::GetHitCount() {
-  return delegate_->GetHitCount();
-}
-
-LocalHostTestURLRequestInterceptor::LocalHostTestURLRequestInterceptor(
-    const scoped_refptr<base::TaskRunner>& network_task_runner,
-    const scoped_refptr<base::TaskRunner>& worker_task_runner)
-    : TestURLRequestInterceptor("http",
-                                "localhost",
-                                network_task_runner,
-                                worker_task_runner) {
-}
-
-}  // namespace net
diff --git a/net/url_request/test_url_request_interceptor.h b/net/url_request/test_url_request_interceptor.h
deleted file mode 100644
index c2ec40fc..0000000
--- a/net/url_request/test_url_request_interceptor.h
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef NET_URL_REQUEST_TEST_URL_REQUEST_INTERCEPTOR_H_
-#define NET_URL_REQUEST_TEST_URL_REQUEST_INTERCEPTOR_H_
-
-#include <string>
-
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-
-class GURL;
-
-namespace base {
-class FilePath;
-class TaskRunner;
-}
-
-namespace net {
-
-// Intercepts HTTP requests and gives pre-defined responses to specified URLs.
-// The pre-defined responses are loaded from files on disk.  The interception
-// occurs while the TestURLRequestInterceptor is alive. This class may be
-// instantiated on any thread.
-class TestURLRequestInterceptor {
- public:
-  // Registers an interceptor for URLs using |scheme| and |hostname|. URLs
-  // passed to "SetResponse" are required to use |scheme| and |hostname|.
-  // |network_task_runner| is the task runner used for network activity
-  // (e.g. where URL requests are processed).
-  // |worker_task_runner| will be used to read the files specified by
-  // either SetResponse() or SetResponseIgnoreQuery() asynchronously. It
-  // must be a task runner allowed to perform disk IO.
-  TestURLRequestInterceptor(
-      const std::string& scheme,
-      const std::string& hostname,
-      const scoped_refptr<base::TaskRunner>& network_task_runner,
-      const scoped_refptr<base::TaskRunner>& worker_task_runner);
-  virtual ~TestURLRequestInterceptor();
-
-  // When requests for |url| arrive, respond with the contents of |path|. The
-  // hostname and scheme of |url| must match the corresponding parameters
-  // passed as constructor arguments.
-  void SetResponse(const GURL& url, const base::FilePath& path);
-
-  // Identical to SetResponse, except that query parameters are ignored on
-  // incoming URLs when comparing against |url|.
-  void SetResponseIgnoreQuery(const GURL& url, const base::FilePath& path);
-
-  // Returns how many requests have been issued that have a stored reply.
-  int GetHitCount();
-
- private:
-  class Delegate;
-
-  const std::string scheme_;
-  const std::string hostname_;
-
-  scoped_refptr<base::TaskRunner> network_task_runner_;
-
-  // After creation, |delegate_| lives on the thread of the
-  // |network_task_runner_|, and a task to delete it is posted from
-  // ~TestURLRequestInterceptor().
-  Delegate* delegate_;
-
-  DISALLOW_COPY_AND_ASSIGN(TestURLRequestInterceptor);
-};
-
-// Specialization of TestURLRequestInterceptor where scheme is "http" and
-// hostname is "localhost".
-class LocalHostTestURLRequestInterceptor : public TestURLRequestInterceptor {
- public:
-  LocalHostTestURLRequestInterceptor(
-      const scoped_refptr<base::TaskRunner>& network_task_runner,
-      const scoped_refptr<base::TaskRunner>& worker_task_runner);
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(LocalHostTestURLRequestInterceptor);
-};
-
-}  // namespace net
-
-#endif  // NET_URL_REQUEST_TEST_URL_REQUEST_INTERCEPTOR_H_
diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc
index 77dac6ff..4f913f01 100644
--- a/net/url_request/url_request.cc
+++ b/net/url_request/url_request.cc
@@ -920,8 +920,7 @@
   method_ = redirect_info.new_method;
   referrer_ = redirect_info.new_referrer;
   referrer_policy_ = redirect_info.new_referrer_policy;
-  site_for_cookies_ =
-      SiteForCookies::FromUrl(redirect_info.new_site_for_cookies);
+  site_for_cookies_ = redirect_info.new_site_for_cookies;
 
   url_chain_.push_back(redirect_info.new_url);
   --redirect_limit_;
diff --git a/net/url_request/url_request.h b/net/url_request/url_request.h
index adca51a..2d3e5c60 100644
--- a/net/url_request/url_request.h
+++ b/net/url_request/url_request.h
@@ -683,10 +683,6 @@
   // encryption, 0 for cached responses.
   int raw_header_size() const { return raw_header_size_; }
 
-  // Returns the error status of the request.
-  // Do not use! Going to be protected!
-  const URLRequestStatus& status() const { return status_; }
-
   const NetworkTrafficAnnotationTag& traffic_annotation() const {
     return traffic_annotation_;
   }
@@ -733,6 +729,9 @@
   // Allow the URLRequestJob class to set our status too.
   void set_status(URLRequestStatus status);
 
+  // Returns the error status of the request.
+  const URLRequestStatus& status() const { return status_; }
+
   // Allow the URLRequestJob to redirect this request. If non-null,
   // |removed_headers| and |modified_headers| are changes
   // applied to the request headers after updating them for the redirect.
diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc
index 4cf19871..2e9a51d 100644
--- a/net/url_request/url_request_http_job.cc
+++ b/net/url_request/url_request_http_job.cc
@@ -430,8 +430,6 @@
 }
 
 void URLRequestHttpJob::StartTransactionInternal() {
-  // This should only be called while the request's status is IO_PENDING.
-  DCHECK_EQ(URLRequestStatus::IO_PENDING, request_->status().status());
   DCHECK(!override_response_headers_);
 
   // NOTE: This method assumes that request_info_ is already setup properly.
@@ -1464,8 +1462,7 @@
   NetworkQualityEstimator* network_quality_estimator =
       request()->context()->network_quality_estimator();
   if (network_quality_estimator) {
-    network_quality_estimator->NotifyRequestCompleted(
-        *request(), request_->status().error());
+    network_quality_estimator->NotifyRequestCompleted(*request());
   }
 
   RecordPerfHistograms(reason);
diff --git a/net/url_request/url_request_http_job_unittest.cc b/net/url_request/url_request_http_job_unittest.cc
index 293b5321..c92b207 100644
--- a/net/url_request/url_request_http_job_unittest.cc
+++ b/net/url_request/url_request_http_job_unittest.cc
@@ -616,7 +616,7 @@
   ASSERT_TRUE(request->is_pending());
   delegate.RunUntilComplete();
 
-  EXPECT_EQ(net::OK, request->status().error());
+  EXPECT_EQ(OK, delegate.request_status());
   EXPECT_EQ(static_cast<int>(content_data.size()),
             request->received_response_content_length());
   EXPECT_EQ(static_cast<int>(response_header.size()),
@@ -650,7 +650,7 @@
   ASSERT_TRUE(request->is_pending());
   delegate.RunUntilComplete();
 
-  EXPECT_EQ(net::OK, request->status().error());
+  EXPECT_EQ(OK, delegate.request_status());
   EXPECT_EQ(static_cast<int>(content_data.size()),
             request->received_response_content_length());
   EXPECT_EQ(static_cast<int>(continue_header.size() + response_header.size()),
@@ -677,7 +677,7 @@
   request->Start();
   base::RunLoop().RunUntilIdle();
 
-  EXPECT_EQ(ERR_ABORTED, request->status().error());
+  EXPECT_EQ(ERR_ABORTED, delegate.request_status());
   EXPECT_EQ(0, request->received_response_content_length());
   EXPECT_EQ(28, request->raw_header_size());
   EXPECT_EQ(CountReadBytes(reads), request->GetTotalReceivedBytes());
@@ -705,7 +705,7 @@
   request->Start();
   delegate.RunUntilComplete();
 
-  EXPECT_EQ(net::OK, request->status().error());
+  EXPECT_EQ(OK, delegate.request_status());
   EXPECT_EQ(static_cast<int>(content_data.size()),
             request->received_response_content_length());
   EXPECT_EQ(static_cast<int>(header_data.size()), request->raw_header_size());
diff --git a/net/url_request/url_request_job.cc b/net/url_request/url_request_job.cc
index 0ce8c96..bd7141c6 100644
--- a/net/url_request/url_request_job.cc
+++ b/net/url_request/url_request_job.cc
@@ -390,8 +390,7 @@
     base::WeakPtr<URLRequestJob> weak_this(weak_factory_.GetWeakPtr());
 
     RedirectInfo redirect_info = RedirectInfo::ComputeRedirectInfo(
-        request_->method(), request_->url(),
-        request_->site_for_cookies().RepresentativeUrl(),
+        request_->method(), request_->url(), request_->site_for_cookies(),
         request_->first_party_url_policy(), request_->referrer_policy(),
         request_->referrer(), http_status_code, new_location,
         net::RedirectUtil::GetReferrerPolicyHeader(
diff --git a/net/url_request/url_request_job_unittest.cc b/net/url_request/url_request_job_unittest.cc
index 9766161..4056dd8 100644
--- a/net/url_request/url_request_job_unittest.cc
+++ b/net/url_request/url_request_job_unittest.cc
@@ -575,7 +575,6 @@
   // so should be false.
   EXPECT_FALSE(d.request_failed());
   EXPECT_EQ(200, req->GetResponseCode());
-  EXPECT_FALSE(req->status().is_success());
   EXPECT_EQ(ERR_CONTENT_DECODING_FAILED, d.request_status());
   EXPECT_TRUE(d.data_received().empty());
   EXPECT_FALSE(network_layer.done_reading_called());
diff --git a/net/url_request/url_request_quic_perftest.cc b/net/url_request/url_request_quic_perftest.cc
index 86150d5..8306d8cd 100644
--- a/net/url_request/url_request_quic_perftest.cc
+++ b/net/url_request/url_request_quic_perftest.cc
@@ -218,7 +218,7 @@
     EXPECT_TRUE(request->is_pending());
     base::RunLoop().Run();
 
-    EXPECT_TRUE(request->status().is_success());
+    EXPECT_EQ(OK, delegate.request_status());
     if (delegate.data_received() == kHelloAltSvcResponse) {
       quic_succeeded = true;
     } else {
diff --git a/net/url_request/url_request_quic_unittest.cc b/net/url_request/url_request_quic_unittest.cc
index fe63dcfd7..801cd472 100644
--- a/net/url_request/url_request_quic_unittest.cc
+++ b/net/url_request/url_request_quic_unittest.cc
@@ -10,6 +10,7 @@
 #include "base/run_loop.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/stringprintf.h"
+#include "base/test/bind_test_util.h"
 #include "build/build_config.h"
 #include "net/base/features.h"
 #include "net/base/load_timing_info.h"
@@ -319,7 +320,8 @@
   request->Start();
   ASSERT_TRUE(request->is_pending());
   delegate.RunUntilComplete();
-  EXPECT_TRUE(request->status().is_success());
+
+  EXPECT_EQ(OK, delegate.request_status());
   EXPECT_EQ(kHelloBodyValue, delegate.data_received());
   EXPECT_TRUE(request->ssl_info().is_valid());
 }
@@ -363,10 +365,8 @@
 
   // Spin the message loop until the client receives the response for the first
   // request.
-  do {
-    base::RunLoop().RunUntilIdle();
-  } while (request_0->status().is_io_pending());
-  EXPECT_TRUE(request_0->status().is_success());
+  delegate_0.RunUntilComplete();
+  EXPECT_EQ(OK, delegate_0.request_status());
 
   // Send a request to /index2.html which pushes /kitten-1.jpg and /favicon.ico.
   // Should cancel push for /kitten-1.jpg.
@@ -380,10 +380,11 @@
 
   // Spin the message loop until the client receives the response for the second
   // request.
-  do {
-    base::RunLoop().RunUntilIdle();
-  } while (request->status().is_io_pending());
-  EXPECT_TRUE(request->status().is_success());
+  delegate.RunUntilComplete();
+  EXPECT_EQ(OK, delegate.request_status());
+  // Wait until all QUIC events are process, some of which happen
+  // asynchronously.
+  base::RunLoop().RunUntilIdle();
 
   // Extract net logs on client side to verify push lookup transactions.
   auto entries = net_log_.GetEntriesWithType(
@@ -460,10 +461,8 @@
 
   // Spin the message loop until the client receives the response for the first
   // request.
-  do {
-    base::RunLoop().RunUntilIdle();
-  } while (request_0->status().is_io_pending());
-  EXPECT_TRUE(request_0->status().is_success());
+  delegate_0.RunUntilComplete();
+  EXPECT_EQ(OK, delegate_0.request_status());
 
   // Send a request to the pushed url: /favicon.ico to pull the resource into
   // cache.
@@ -477,10 +476,8 @@
 
   // Spin the message loop until the client receives the response for the second
   // request.
-  do {
-    base::RunLoop().RunUntilIdle();
-  } while (request_1->status().is_io_pending());
-  EXPECT_TRUE(request_1->status().is_success());
+  delegate_1.RunUntilComplete();
+  EXPECT_EQ(OK, delegate_1.request_status());
 
   // Send a request to /index2.html which pushes /kitten-1.jpg and /favicon.ico.
   // Should cancel push for both pushed resources, since they're already cached.
@@ -494,16 +491,17 @@
 
   // Spin the message loop until the client receives the response for the third
   // request.
-  do {
-    base::RunLoop().RunUntilIdle();
-  } while (request->status().is_io_pending());
-  EXPECT_TRUE(request->status().is_success());
+  delegate.RunUntilComplete();
+  EXPECT_EQ(OK, delegate.request_status());
+  // Wait until all QUIC events are process, some of which happen
+  // asynchronously.
+  base::RunLoop().RunUntilIdle();
 
   // Extract net logs on client side to verify push lookup transactions.
   auto entries = net_log_.GetEntriesWithType(
       NetLogEventType::SERVER_PUSH_LOOKUP_TRANSACTION);
 
-  EXPECT_EQ(4u, entries.size());
+  ASSERT_EQ(4u, entries.size());
 
   std::string value;
   std::string push_url_1 = UrlFromPath(kKittenPath);
@@ -559,10 +557,8 @@
   ASSERT_TRUE(request->is_pending());
 
   // Spin the message loop until the client receives response.
-  do {
-    base::RunLoop().RunUntilIdle();
-  } while (request->status().is_io_pending());
-  EXPECT_TRUE(request->status().is_success());
+  delegate.RunUntilComplete();
+  EXPECT_EQ(OK, delegate.request_status());
 
   // Extract net logs on client side to verify push lookup transactions.
   auto entries = net_log_.GetEntriesWithType(
@@ -620,8 +616,8 @@
   ASSERT_TRUE(request2->is_pending());
   run_loop.Run();
 
-  EXPECT_TRUE(request->status().is_success());
-  EXPECT_TRUE(request2->status().is_success());
+  EXPECT_EQ(OK, delegate.request_status());
+  EXPECT_EQ(OK, delegate2.request_status());
   EXPECT_EQ(kHelloBodyValue, delegate.data_received());
   EXPECT_EQ(kHelloBodyValue, delegate2.data_received());
 }
@@ -644,24 +640,29 @@
       CreateRequest(GURL(UrlFromPath(kHelloPath)), DEFAULT_PRIORITY, &delegate);
 
   request->SetExtraRequestHeaders(extra_headers);
-  request->SetRequestHeadersCallback(base::Bind(
-      &HttpRawRequestHeaders::Assign, base::Unretained(&raw_headers)));
+  request->SetRequestHeadersCallback(
+      base::BindLambdaForTesting([&](HttpRawRequestHeaders raw_headers) {
+        // This should be invoked before the request is completed, or any bytes
+        // are read.
+        EXPECT_FALSE(delegate.response_completed());
+        EXPECT_FALSE(delegate.bytes_received());
+
+        EXPECT_FALSE(raw_headers.headers().empty());
+        std::string value;
+        EXPECT_TRUE(raw_headers.FindHeaderForTest("x-foo", &value));
+        EXPECT_EQ("bar", value);
+        EXPECT_TRUE(raw_headers.FindHeaderForTest("accept-encoding", &value));
+        EXPECT_EQ("gzip, deflate", value);
+        EXPECT_TRUE(raw_headers.FindHeaderForTest(":path", &value));
+        EXPECT_EQ("/hello.txt", value);
+        EXPECT_TRUE(raw_headers.FindHeaderForTest(":authority", &value));
+        EXPECT_EQ("test.example.com", value);
+        EXPECT_TRUE(raw_headers.request_line().empty());
+      }));
   request->Start();
   ASSERT_TRUE(request->is_pending());
-  do {
-    base::RunLoop().RunUntilIdle();
-  } while (!delegate.response_started_count());
-  EXPECT_FALSE(raw_headers.headers().empty());
-  std::string value;
-  EXPECT_TRUE(raw_headers.FindHeaderForTest("x-foo", &value));
-  EXPECT_EQ("bar", value);
-  EXPECT_TRUE(raw_headers.FindHeaderForTest("accept-encoding", &value));
-  EXPECT_EQ("gzip, deflate", value);
-  EXPECT_TRUE(raw_headers.FindHeaderForTest(":path", &value));
-  EXPECT_EQ("/hello.txt", value);
-  EXPECT_TRUE(raw_headers.FindHeaderForTest(":authority", &value));
-  EXPECT_EQ("test.example.com", value);
-  EXPECT_TRUE(raw_headers.request_line().empty());
+  delegate.RunUntilComplete();
+  EXPECT_EQ(OK, delegate.request_status());
 }
 
 }  // namespace net
diff --git a/net/url_request/url_request_redirect_job.cc b/net/url_request/url_request_redirect_job.cc
index 7cd18fd..76f5582 100644
--- a/net/url_request/url_request_redirect_job.cc
+++ b/net/url_request/url_request_redirect_job.cc
@@ -84,7 +84,6 @@
 
 void URLRequestRedirectJob::StartAsync() {
   DCHECK(request_);
-  DCHECK(request_->status().is_success());
 
   receive_headers_end_ = base::TimeTicks::Now();
   response_time_ = base::Time::Now();
diff --git a/net/url_request/url_request_unittest.cc b/net/url_request/url_request_unittest.cc
index 3f94ded3..8ed975b8 100644
--- a/net/url_request/url_request_unittest.cc
+++ b/net/url_request/url_request_unittest.cc
@@ -8094,7 +8094,7 @@
   req->Start();
   d.RunUntilComplete();
 
-  EXPECT_TRUE(req->status().is_success());
+  EXPECT_EQ(OK, d.request_status());
 }
 
 TEST_F(URLRequestTestHTTP, RawBodyBytesNoContentEncoding) {
diff --git a/ppapi/host/resource_message_filter.cc b/ppapi/host/resource_message_filter.cc
index 10203dcb..8583e0b 100644
--- a/ppapi/host/resource_message_filter.cc
+++ b/ppapi/host/resource_message_filter.cc
@@ -6,8 +6,8 @@
 
 #include "base/bind.h"
 #include "base/location.h"
+#include "base/sequenced_task_runner.h"
 #include "base/single_thread_task_runner.h"
-#include "base/task_runner.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "ipc/ipc_message.h"
 #include "ppapi/c/pp_errors.h"
@@ -57,7 +57,8 @@
 
 bool ResourceMessageFilter::HandleMessage(const IPC::Message& msg,
                                           HostMessageContext* context) {
-  scoped_refptr<base::TaskRunner> runner = OverrideTaskRunnerForMessage(msg);
+  scoped_refptr<base::SequencedTaskRunner> runner =
+      OverrideTaskRunnerForMessage(msg);
   if (runner.get()) {
     if (runner->RunsTasksInCurrentSequence()) {
       DispatchMessage(msg, *context);
@@ -88,7 +89,7 @@
     resource_host_->SendReply(context, msg);
 }
 
-scoped_refptr<base::TaskRunner>
+scoped_refptr<base::SequencedTaskRunner>
 ResourceMessageFilter::OverrideTaskRunnerForMessage(const IPC::Message& msg) {
   return nullptr;
 }
diff --git a/ppapi/host/resource_message_filter.h b/ppapi/host/resource_message_filter.h
index b9c4b74..c2333a0 100644
--- a/ppapi/host/resource_message_filter.h
+++ b/ppapi/host/resource_message_filter.h
@@ -13,8 +13,8 @@
 #include "ppapi/host/resource_message_handler.h"
 
 namespace base {
+class SequencedTaskRunner;
 class SingleThreadTaskRunner;
-class TaskRunner;
 }
 
 namespace IPC {
@@ -114,7 +114,7 @@
 
   // If you want the message to be handled on another thread, return a non-null
   // task runner which will target tasks accordingly.
-  virtual scoped_refptr<base::TaskRunner> OverrideTaskRunnerForMessage(
+  virtual scoped_refptr<base::SequencedTaskRunner> OverrideTaskRunnerForMessage(
       const IPC::Message& message);
 
  private:
diff --git a/ppapi/host/resource_message_filter_unittest.cc b/ppapi/host/resource_message_filter_unittest.cc
index b027eff1..0541492c 100644
--- a/ppapi/host/resource_message_filter_unittest.cc
+++ b/ppapi/host/resource_message_filter_unittest.cc
@@ -114,7 +114,7 @@
     return last_task_runner_;
   }
 
-  scoped_refptr<base::TaskRunner> OverrideTaskRunnerForMessage(
+  scoped_refptr<base::SequencedTaskRunner> OverrideTaskRunnerForMessage(
       const IPC::Message& msg) override {
     if (msg.type() == msg_type_)
       return task_runner_;
diff --git a/ppapi/nacl_irt/irt_ppapi.cc b/ppapi/nacl_irt/irt_ppapi.cc
index cb3e8215..adfa824 100644
--- a/ppapi/nacl_irt/irt_ppapi.cc
+++ b/ppapi/nacl_irt/irt_ppapi.cc
@@ -32,7 +32,7 @@
 
   base::SingleThreadTaskExecutor executor;
   ppapi::proxy::PluginGlobals plugin_globals(
-      scoped_refptr<base::TaskRunner>(ppapi::GetIOThread()->task_runner()));
+      ppapi::GetIOThread()->task_runner());
 
   ppapi::PpapiDispatcher ppapi_dispatcher(
       ppapi::GetIOThread()->task_runner(), ppapi::GetShutdownEvent(),
diff --git a/ppapi/proxy/plugin_globals.cc b/ppapi/proxy/plugin_globals.cc
index ed5e1b05..24dab3f 100644
--- a/ppapi/proxy/plugin_globals.cc
+++ b/ppapi/proxy/plugin_globals.cc
@@ -6,6 +6,7 @@
 
 #include "base/macros.h"
 #include "base/message_loop/message_pump_type.h"
+#include "base/single_thread_task_runner.h"
 #include "base/task_runner.h"
 #include "base/threading/thread.h"
 #include "base/threading/thread_task_runner_handle.h"
@@ -57,7 +58,7 @@
 PluginGlobals* PluginGlobals::plugin_globals_ = NULL;
 
 PluginGlobals::PluginGlobals(
-    const scoped_refptr<base::TaskRunner>& ipc_task_runner)
+    const scoped_refptr<base::SingleThreadTaskRunner>& ipc_task_runner)
     : ppapi::PpapiGlobals(),
       plugin_proxy_delegate_(NULL),
       callback_tracker_(new CallbackTracker),
@@ -78,7 +79,7 @@
 
 PluginGlobals::PluginGlobals(
     PerThreadForTest per_thread_for_test,
-    const scoped_refptr<base::TaskRunner>& ipc_task_runner)
+    const scoped_refptr<base::SingleThreadTaskRunner>& ipc_task_runner)
     : ppapi::PpapiGlobals(per_thread_for_test),
       plugin_proxy_delegate_(NULL),
       callback_tracker_(new CallbackTracker),
diff --git a/ppapi/proxy/plugin_globals.h b/ppapi/proxy/plugin_globals.h
index 4663e3d7..cb766f71 100644
--- a/ppapi/proxy/plugin_globals.h
+++ b/ppapi/proxy/plugin_globals.h
@@ -20,8 +20,11 @@
 #include "ppapi/shared_impl/ppapi_globals.h"
 
 namespace base {
+class SingleThreadTaskRunner;
+class TaskRunner;
 class Thread;
 }
+
 namespace IPC {
 class Sender;
 }
@@ -42,9 +45,11 @@
 
 class PPAPI_PROXY_EXPORT PluginGlobals : public PpapiGlobals {
  public:
-  explicit PluginGlobals(const scoped_refptr<base::TaskRunner>& task_runner);
-  PluginGlobals(PpapiGlobals::PerThreadForTest,
-                const scoped_refptr<base::TaskRunner>& task_runner);
+  explicit PluginGlobals(
+      const scoped_refptr<base::SingleThreadTaskRunner>& ipc_task_runner);
+  PluginGlobals(
+      PpapiGlobals::PerThreadForTest,
+      const scoped_refptr<base::SingleThreadTaskRunner>& ipc_task_runner);
   ~PluginGlobals() override;
 
   // Getter for the global singleton. Generally, you should use
@@ -81,7 +86,9 @@
   // Returns the channel for sending to the browser.
   IPC::Sender* GetBrowserSender();
 
-  base::TaskRunner* ipc_task_runner() { return ipc_task_runner_.get(); }
+  base::SingleThreadTaskRunner* ipc_task_runner() {
+    return ipc_task_runner_.get();
+  }
 
   // Returns the language code of the current UI language.
   std::string GetUILanguage();
@@ -176,7 +183,7 @@
 
   std::unique_ptr<BrowserSender> browser_sender_;
 
-  scoped_refptr<base::TaskRunner> ipc_task_runner_;
+  scoped_refptr<base::SingleThreadTaskRunner> ipc_task_runner_;
 
   // Thread for performing potentially blocking file operations. It's created
   // lazily, since it might not be needed.
diff --git a/ppapi/proxy/ppapi_proxy_test.cc b/ppapi/proxy/ppapi_proxy_test.cc
index ecf7d12..0cf09cc 100644
--- a/ppapi/proxy/ppapi_proxy_test.cc
+++ b/ppapi/proxy/ppapi_proxy_test.cc
@@ -226,7 +226,7 @@
 }
 
 void PluginProxyTestHarness::CreatePluginGlobals(
-    const scoped_refptr<base::TaskRunner>& ipc_task_runner) {
+    const scoped_refptr<base::SingleThreadTaskRunner>& ipc_task_runner) {
   if (globals_config_ == PER_THREAD_GLOBALS) {
     plugin_globals_.reset(new PluginGlobals(PpapiGlobals::PerThreadForTest(),
                                             ipc_task_runner));
diff --git a/ppapi/proxy/ppapi_proxy_test.h b/ppapi/proxy/ppapi_proxy_test.h
index d45f128..140735b 100644
--- a/ppapi/proxy/ppapi_proxy_test.h
+++ b/ppapi/proxy/ppapi_proxy_test.h
@@ -15,7 +15,6 @@
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/synchronization/waitable_event.h"
-#include "base/task_runner.h"
 #include "base/test/task_environment.h"
 #include "base/threading/simple_thread.h"
 #include "base/threading/thread.h"
@@ -181,7 +180,7 @@
 
  private:
   void CreatePluginGlobals(
-      const scoped_refptr<base::TaskRunner>& ipc_task_runner);
+      const scoped_refptr<base::SingleThreadTaskRunner>& ipc_task_runner);
 
   GlobalsConfiguration globals_config_;
   std::unique_ptr<PluginGlobals> plugin_globals_;
diff --git a/printing/backend/cups_helper.cc b/printing/backend/cups_helper.cc
index 978820a..039d8f0 100644
--- a/printing/backend/cups_helper.cc
+++ b/printing/backend/cups_helper.cc
@@ -20,6 +20,7 @@
 #include "base/values.h"
 #include "printing/backend/print_backend.h"
 #include "printing/backend/print_backend_consts.h"
+#include "printing/printing_utils.h"
 #include "printing/units.h"
 #include "url/gurl.h"
 
@@ -426,6 +427,7 @@
 }
 
 bool ParsePpdCapabilities(base::StringPiece printer_name,
+                          base::StringPiece locale,
                           base::StringPiece printer_capabilities,
                           PrinterSemanticCapsAndDefaults* printer_info) {
   base::FilePath ppd_file_path;
@@ -474,11 +476,12 @@
   if (ppd->num_sizes > 0 && ppd->sizes) {
     VLOG(1) << "Paper list size - " << ppd->num_sizes;
     ppd_option_t* paper_option = ppdFindOption(ppd, kPageSize);
+    bool is_default_found = false;
     for (int i = 0; i < ppd->num_sizes; ++i) {
       gfx::Size paper_size_microns(
           ConvertUnit(ppd->sizes[i].width, kPointsPerInch, kMicronsPerInch),
           ConvertUnit(ppd->sizes[i].length, kPointsPerInch, kMicronsPerInch));
-      if (paper_size_microns.width() > 0 && paper_size_microns.height() > 0) {
+      if (!paper_size_microns.IsEmpty()) {
         PrinterSemanticCapsAndDefaults::Paper paper;
         paper.size_um = paper_size_microns;
         paper.vendor_id = ppd->sizes[i].name;
@@ -492,11 +495,33 @@
           }
         }
         caps.papers.push_back(paper);
-        if (i == 0 || ppd->sizes[i].marked) {
+        if (ppd->sizes[i].marked) {
           caps.default_paper = paper;
+          is_default_found = true;
         }
       }
     }
+    if (!is_default_found) {
+      gfx::Size locale_paper_microns =
+          GetDefaultPaperSizeFromLocaleMicrons(locale);
+      for (const PrinterSemanticCapsAndDefaults::Paper& paper : caps.papers) {
+        // Set epsilon to 500 microns to allow tolerance of rounded paper sizes.
+        // While the above utility function returns paper sizes in microns, they
+        // are still rounded to the nearest millimeter (1000 microns).
+        constexpr int kSizeEpsilon = 500;
+        if (SizesEqualWithinEpsilon(paper.size_um, locale_paper_microns,
+                                    kSizeEpsilon)) {
+          caps.default_paper = paper;
+          is_default_found = true;
+          break;
+        }
+      }
+
+      // If no default was set in the PPD or if the locale default is not within
+      // the printer's capabilities, select the first on the list.
+      if (!is_default_found)
+        caps.default_paper = caps.papers[0];
+    }
   }
 
   ppdClose(ppd);
diff --git a/printing/backend/cups_helper.h b/printing/backend/cups_helper.h
index b72903f..93a4d79 100644
--- a/printing/backend/cups_helper.h
+++ b/printing/backend/cups_helper.h
@@ -38,6 +38,7 @@
 // semantic options.
 PRINTING_EXPORT bool ParsePpdCapabilities(
     base::StringPiece printer_name,
+    base::StringPiece locale,
     base::StringPiece printer_capabilities,
     PrinterSemanticCapsAndDefaults* printer_info);
 
diff --git a/printing/backend/cups_helper_unittest.cc b/printing/backend/cups_helper_unittest.cc
index 049a647..11952a2 100644
--- a/printing/backend/cups_helper_unittest.cc
+++ b/printing/backend/cups_helper_unittest.cc
@@ -3,200 +3,205 @@
 // found in the LICENSE file.
 
 #include "printing/backend/cups_helper.h"
+
 #include "printing/backend/print_backend.h"
+#include "printing/printing_utils.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
-TEST(PrintBackendCupsHelperTest, TestPpdParsingNoColorDuplexShortEdge) {
-  const char kTestPpdData[] =
-      "*PPD-Adobe: \"4.3\"\n\n"
-      "*OpenGroup: General/General\n\n"
-      "*OpenUI *ColorModel/Color Model: PickOne\n"
-      "*DefaultColorModel: Gray\n"
-      "*ColorModel Gray/Grayscale: \""
-      "<</cupsColorSpace 0/cupsColorOrder 0>>"
-      "setpagedevice\"\n"
-      "*ColorModel Black/Inverted Grayscale: \""
-      "<</cupsColorSpace 3/cupsColorOrder 0>>"
-      "setpagedevice\"\n"
-      "*CloseUI: *ColorModel\n"
-      "*OpenUI *Duplex/2-Sided Printing: PickOne\n"
-      "*DefaultDuplex: DuplexTumble\n"
-      "*Duplex None/Off: \"<</Duplex false>>"
-      "setpagedevice\"\n"
-      "*Duplex DuplexNoTumble/LongEdge: \""
-      "<</Duplex true/Tumble false>>setpagedevice\"\n"
-      "*Duplex DuplexTumble/ShortEdge: \""
-      "<</Duplex true/Tumble true>>setpagedevice\"\n"
-      "*CloseUI: *Duplex\n\n"
-      "*CloseGroup: General\n";
+namespace printing {
 
-  printing::PrinterSemanticCapsAndDefaults caps;
-  EXPECT_TRUE(printing::ParsePpdCapabilities("test", kTestPpdData, &caps));
+namespace {
+
+// Returns true if the papers have the same name, vendor ID, and size.
+bool PapersEqual(const PrinterSemanticCapsAndDefaults::Paper& lhs,
+                 const PrinterSemanticCapsAndDefaults::Paper& rhs) {
+  return lhs.display_name == rhs.display_name &&
+         lhs.vendor_id == rhs.vendor_id && lhs.size_um == rhs.size_um;
+}
+
+}  // namespace
+
+TEST(PrintBackendCupsHelperTest, TestPpdParsingNoColorDuplexShortEdge) {
+  constexpr char kTestPpdData[] =
+      R"(*PPD-Adobe: "4.3"
+*OpenGroup: General/General
+*OpenUI *ColorModel/Color Model: PickOne
+*DefaultColorModel: Gray
+*ColorModel Gray/Grayscale: "
+  <</cupsColorSpace 0/cupsColorOrder 0>>setpagedevice"
+*ColorModel Black/Inverted Grayscale: "
+  <</cupsColorSpace 3/cupsColorOrder 0>>setpagedevice"
+*CloseUI: *ColorModel
+*OpenUI *Duplex/2-Sided Printing: PickOne
+*DefaultDuplex: DuplexTumble
+*Duplex None/Off: "
+  <</Duplex false>>setpagedevice"
+*Duplex DuplexNoTumble/LongEdge: "
+  </Duplex true/Tumble false>>setpagedevice"
+*Duplex DuplexTumble/ShortEdge: "
+  <</Duplex true/Tumble true>>setpagedevice"
+*CloseUI: *Duplex
+*CloseGroup: General)";
+
+  PrinterSemanticCapsAndDefaults caps;
+  EXPECT_TRUE(ParsePpdCapabilities("test", "", kTestPpdData, &caps));
   EXPECT_TRUE(caps.collate_capable);
   EXPECT_TRUE(caps.collate_default);
   EXPECT_TRUE(caps.copies_capable);
-  EXPECT_THAT(caps.duplex_modes, testing::UnorderedElementsAre(
-                                     printing::SIMPLEX, printing::LONG_EDGE,
-                                     printing::SHORT_EDGE));
-  EXPECT_EQ(printing::SHORT_EDGE, caps.duplex_default);
+  EXPECT_THAT(caps.duplex_modes,
+              testing::UnorderedElementsAre(SIMPLEX, LONG_EDGE, SHORT_EDGE));
+  EXPECT_EQ(SHORT_EDGE, caps.duplex_default);
   EXPECT_FALSE(caps.color_changeable);
   EXPECT_FALSE(caps.color_default);
 }
 
 // Test duplex detection code, which regressed in http://crbug.com/103999.
 TEST(PrintBackendCupsHelperTest, TestPpdParsingNoColorDuplexSimples) {
-  const char kTestPpdData[] =
-      "*PPD-Adobe: \"4.3\"\n\n"
-      "*OpenGroup: General/General\n\n"
-      "*OpenUI *Duplex/Double-Sided Printing: PickOne\n"
-      "*DefaultDuplex: None\n"
-      "*Duplex None/Off: "
-      "\"<</Duplex false>>setpagedevice\"\n"
-      "*Duplex DuplexNoTumble/Long Edge (Standard): "
-      "\"<</Duplex true/Tumble false>>setpagedevice\"\n"
-      "*Duplex DuplexTumble/Short Edge (Flip): "
-      "\"<</Duplex true/Tumble true>>setpagedevice\"\n"
-      "*CloseUI: *Duplex\n\n"
-      "*CloseGroup: General\n";
+  constexpr char kTestPpdData[] =
+      R"(*PPD-Adobe: "4.3"
+*OpenGroup: General/General
+*OpenUI *Duplex/Double-Sided Printing: PickOne
+*DefaultDuplex: None
+*Duplex None/Off: "
+  <</Duplex false>>setpagedevice"
+*Duplex DuplexNoTumble/Long Edge (Standard): "
+  <</Duplex true/Tumble false>>setpagedevice"
+*Duplex DuplexTumble/Short Edge (Flip): "
+  <</Duplex true/Tumble true>>setpagedevice"
+*CloseUI: *Duplex
+*CloseGroup: General)";
 
-  printing::PrinterSemanticCapsAndDefaults caps;
-  EXPECT_TRUE(printing::ParsePpdCapabilities("test", kTestPpdData, &caps));
+  PrinterSemanticCapsAndDefaults caps;
+  EXPECT_TRUE(ParsePpdCapabilities("test", "", kTestPpdData, &caps));
   EXPECT_TRUE(caps.collate_capable);
   EXPECT_TRUE(caps.collate_default);
   EXPECT_TRUE(caps.copies_capable);
-  EXPECT_THAT(caps.duplex_modes, testing::UnorderedElementsAre(
-                                     printing::SIMPLEX, printing::LONG_EDGE,
-                                     printing::SHORT_EDGE));
-  EXPECT_EQ(printing::SIMPLEX, caps.duplex_default);
+  EXPECT_THAT(caps.duplex_modes,
+              testing::UnorderedElementsAre(SIMPLEX, LONG_EDGE, SHORT_EDGE));
+  EXPECT_EQ(SIMPLEX, caps.duplex_default);
   EXPECT_FALSE(caps.color_changeable);
   EXPECT_FALSE(caps.color_default);
 }
 
 TEST(PrintBackendCupsHelperTest, TestPpdParsingNoColorNoDuplex) {
-  const char kTestPpdData[] =
-      "*PPD-Adobe: \"4.3\"\n\n"
-      "*OpenGroup: General/General\n\n"
-      "*OpenUI *ColorModel/Color Model: PickOne\n"
-      "*DefaultColorModel: Gray\n"
-      "*ColorModel Gray/Grayscale: \""
-      "<</cupsColorSpace 0/cupsColorOrder 0>>"
-      "setpagedevice\"\n"
-      "*ColorModel Black/Inverted Grayscale: \""
-      "<</cupsColorSpace 3/cupsColorOrder 0>>"
-      "setpagedevice\"\n"
-      "*CloseUI: *ColorModel\n"
-      "*CloseGroup: General\n";
+  constexpr char kTestPpdData[] =
+      R"(*PPD-Adobe: "4.3"
+*OpenGroup: General/General
+*OpenUI *ColorModel/Color Model: PickOne
+*DefaultColorModel: Gray
+*ColorModel Gray/Grayscale: "
+  <</cupsColorSpace 0/cupsColorOrder 0>>setpagedevice"
+*ColorModel Black/Inverted Grayscale: "
+  <</cupsColorSpace 3/cupsColorOrder 0>>setpagedevice"
+*CloseUI: *ColorModel
+*CloseGroup: General)";
 
-  printing::PrinterSemanticCapsAndDefaults caps;
-  EXPECT_TRUE(printing::ParsePpdCapabilities("test", kTestPpdData, &caps));
+  PrinterSemanticCapsAndDefaults caps;
+  EXPECT_TRUE(ParsePpdCapabilities("test", "", kTestPpdData, &caps));
   EXPECT_TRUE(caps.collate_capable);
   EXPECT_TRUE(caps.collate_default);
   EXPECT_TRUE(caps.copies_capable);
   EXPECT_THAT(caps.duplex_modes, testing::UnorderedElementsAre());
-  EXPECT_EQ(printing::UNKNOWN_DUPLEX_MODE, caps.duplex_default);
+  EXPECT_EQ(UNKNOWN_DUPLEX_MODE, caps.duplex_default);
   EXPECT_FALSE(caps.color_changeable);
   EXPECT_FALSE(caps.color_default);
 }
 
 TEST(PrintBackendCupsHelperTest, TestPpdParsingColorTrueDuplexShortEdge) {
-  const char kTestPpdData[] =
-      "*PPD-Adobe: \"4.3\"\n\n"
-      "*ColorDevice: True\n"
-      "*DefaultColorSpace: CMYK\n\n"
-      "*OpenGroup: General/General\n\n"
-      "*OpenUI *ColorModel/Color Model: PickOne\n"
-      "*DefaultColorModel: CMYK\n"
-      "*ColorModel CMYK/Color: "
-      "\"(cmyk) RCsetdevicecolor\"\n"
-      "*ColorModel Gray/Black and White: "
-      "\"(gray) RCsetdevicecolor\"\n"
-      "*CloseUI: *ColorModel\n"
-      "*OpenUI *Duplex/2-Sided Printing: PickOne\n"
-      "*DefaultDuplex: DuplexTumble\n"
-      "*Duplex None/Off: \"<</Duplex false>>"
-      "setpagedevice\"\n"
-      "*Duplex DuplexNoTumble/LongEdge: \""
-      "<</Duplex true/Tumble false>>setpagedevice\"\n"
-      "*Duplex DuplexTumble/ShortEdge: \""
-      "<</Duplex true/Tumble true>>setpagedevice\"\n"
-      "*CloseUI: *Duplex\n\n"
-      "*CloseGroup: General\n";
+  constexpr char kTestPpdData[] =
+      R"(*PPD-Adobe: "4.3"
+*ColorDevice: True
+*DefaultColorSpace: CMYK
+*OpenGroup: General/General
+*OpenUI *ColorModel/Color Model: PickOne
+*DefaultColorModel: CMYK
+*ColorModel CMYK/Color: "(cmyk) RCsetdevicecolor"
+*ColorModel Gray/Black and White: "(gray) RCsetdevicecolor"
+*CloseUI: *ColorModel
+*OpenUI *Duplex/2-Sided Printing: PickOne
+*DefaultDuplex: DuplexTumble
+*Duplex None/Off: "
+  <</Duplex false>>setpagedevice"
+*Duplex DuplexNoTumble/LongEdge: "
+  <</Duplex true/Tumble false>>setpagedevice"
+*Duplex DuplexTumble/ShortEdge: "
+  <</Duplex true/Tumble true>>setpagedevice"
+*CloseUI: *Duplex
+*CloseGroup: General)";
 
-  printing::PrinterSemanticCapsAndDefaults caps;
-  EXPECT_TRUE(printing::ParsePpdCapabilities("test", kTestPpdData, &caps));
+  PrinterSemanticCapsAndDefaults caps;
+  EXPECT_TRUE(ParsePpdCapabilities("test", "", kTestPpdData, &caps));
   EXPECT_TRUE(caps.collate_capable);
   EXPECT_TRUE(caps.collate_default);
   EXPECT_TRUE(caps.copies_capable);
-  EXPECT_THAT(caps.duplex_modes, testing::UnorderedElementsAre(
-                                     printing::SIMPLEX, printing::LONG_EDGE,
-                                     printing::SHORT_EDGE));
-  EXPECT_EQ(printing::SHORT_EDGE, caps.duplex_default);
+  EXPECT_THAT(caps.duplex_modes,
+              testing::UnorderedElementsAre(SIMPLEX, LONG_EDGE, SHORT_EDGE));
+  EXPECT_EQ(SHORT_EDGE, caps.duplex_default);
   EXPECT_TRUE(caps.color_changeable);
   EXPECT_TRUE(caps.color_default);
 }
 
 TEST(PrintBackendCupsHelperTest, TestPpdParsingColorFalseDuplexLongEdge) {
-  const char kTestPpdData[] =
-      "*PPD-Adobe: \"4.3\"\n\n"
-      "*ColorDevice: True\n"
-      "*DefaultColorSpace: CMYK\n\n"
-      "*OpenGroup: General/General\n\n"
-      "*OpenUI *ColorModel/Color Model: PickOne\n"
-      "*DefaultColorModel: Grayscale\n"
-      "*ColorModel Color/Color: "
-      "\"%% FoomaticRIPOptionSetting: ColorModel=Color\"\n"
-      "*FoomaticRIPOptionSetting ColorModel=Color: "
-      "\"JCLDatamode=Color GSCmdLine=Color\"\n"
-      "*ColorModel Grayscale/Grayscale: "
-      "\"%% FoomaticRIPOptionSetting: ColorModel=Grayscale\"\n"
-      "*FoomaticRIPOptionSetting ColorModel=Grayscale: "
-      "\"JCLDatamode=Grayscale GSCmdLine=Grayscale\"\n"
-      "*CloseUI: *ColorModel\n"
-      "*OpenUI *Duplex/2-Sided Printing: PickOne\n"
-      "*DefaultDuplex: DuplexNoTumble\n"
-      "*Duplex None/Off: \"<</Duplex false>>"
-      "setpagedevice\"\n"
-      "*Duplex DuplexNoTumble/LongEdge: \""
-      "<</Duplex true/Tumble false>>setpagedevice\"\n"
-      "*Duplex DuplexTumble/ShortEdge: \""
-      "<</Duplex true/Tumble true>>setpagedevice\"\n"
-      "*CloseUI: *Duplex\n\n"
-      "*CloseGroup: General\n";
+  constexpr char kTestPpdData[] =
+      R"(*PPD-Adobe: "4.3"
+*ColorDevice: True
+*DefaultColorSpace: CMYK
+*OpenGroup: General/General
+*OpenUI *ColorModel/Color Model: PickOne
+*DefaultColorModel: Grayscale
+*ColorModel Color/Color: "
+  %% FoomaticRIPOptionSetting: ColorModel=Color"
+*FoomaticRIPOptionSetting ColorModel=Color: "
+  JCLDatamode=Color GSCmdLine=Color"
+*ColorModel Grayscale/Grayscale: "
+  %% FoomaticRIPOptionSetting: ColorModel=Grayscale"
+*FoomaticRIPOptionSetting ColorModel=Grayscale: "
+  JCLDatamode=Grayscale GSCmdLine=Grayscale"
+*CloseUI: *ColorModel
+*OpenUI *Duplex/2-Sided Printing: PickOne
+*DefaultDuplex: DuplexNoTumble
+*Duplex None/Off: "
+  <</Duplex false>>setpagedevice"
+*Duplex DuplexNoTumble/LongEdge: "
+  <</Duplex true/Tumble false>>setpagedevice"
+*Duplex DuplexTumble/ShortEdge: "
+  <</Duplex true/Tumble true>>setpagedevice"
+*CloseUI: *Duplex
+*CloseGroup: General)";
 
-  printing::PrinterSemanticCapsAndDefaults caps;
-  EXPECT_TRUE(printing::ParsePpdCapabilities("test", kTestPpdData, &caps));
+  PrinterSemanticCapsAndDefaults caps;
+  EXPECT_TRUE(ParsePpdCapabilities("test", "", kTestPpdData, &caps));
   EXPECT_TRUE(caps.collate_capable);
   EXPECT_TRUE(caps.collate_default);
   EXPECT_TRUE(caps.copies_capable);
-  EXPECT_THAT(caps.duplex_modes, testing::UnorderedElementsAre(
-                                     printing::SIMPLEX, printing::LONG_EDGE,
-                                     printing::SHORT_EDGE));
-  EXPECT_EQ(printing::LONG_EDGE, caps.duplex_default);
+  EXPECT_THAT(caps.duplex_modes,
+              testing::UnorderedElementsAre(SIMPLEX, LONG_EDGE, SHORT_EDGE));
+  EXPECT_EQ(LONG_EDGE, caps.duplex_default);
   EXPECT_TRUE(caps.color_changeable);
   EXPECT_FALSE(caps.color_default);
 }
 
 TEST(PrintBackendCupsHelperTest, TestPpdParsingPageSize) {
-  const char kTestPpdData[] =
-      "*PPD-Adobe: \"4.3\"\n\n"
-      "*OpenUI *PageSize: PickOne\n"
-      "*DefaultPageSize: Letter\n"
-      "*PageSize Letter/US Letter: \""
-      "  <</DeferredMediaSelection true /PageSize [612 792] "
-      "  /ImagingBBox null /MediaClass null >> setpagedevice\"\n"
-      "*End\n"
-      "*PageSize Legal/US Legal: \""
-      "  <</DeferredMediaSelection true /PageSize [612 1008] "
-      "  /ImagingBBox null /MediaClass null >> setpagedevice\"\n"
-      "*End\n"
-      "*DefaultPaperDimension: Letter\n"
-      "*PaperDimension Letter/US Letter: \"612   792\"\n"
-      "*PaperDimension Legal/US Legal: \"612  1008\"\n\n"
-      "*CloseUI: *PageSize\n\n";
+  constexpr char kTestPpdData[] =
+      R"(*PPD-Adobe: "4.3"
+*OpenUI *PageSize: PickOne
+*DefaultPageSize: Legal
+*PageSize Letter/US Letter: "
+  <</DeferredMediaSelection true /PageSize [612 792]
+  /ImagingBBox null /MediaClass null >> setpagedevice"
+*End
+*PageSize Legal/US Legal: "
+  <</DeferredMediaSelection true /PageSize [612 1008]
+  /ImagingBBox null /MediaClass null >> setpagedevice"
+*End
+*DefaultPaperDimension: Legal
+*PaperDimension Letter/US Letter: "612   792"
+*PaperDimension Legal/US Legal: "612  1008"
+*CloseUI: *PageSize)";
 
-  printing::PrinterSemanticCapsAndDefaults caps;
-  EXPECT_TRUE(printing::ParsePpdCapabilities("test", kTestPpdData, &caps));
+  PrinterSemanticCapsAndDefaults caps;
+  EXPECT_TRUE(ParsePpdCapabilities("test", "", kTestPpdData, &caps));
   ASSERT_EQ(2UL, caps.papers.size());
   EXPECT_EQ("Letter", caps.papers[0].vendor_id);
   EXPECT_EQ("US Letter", caps.papers[0].display_name);
@@ -206,81 +211,131 @@
   EXPECT_EQ("US Legal", caps.papers[1].display_name);
   EXPECT_EQ(215900, caps.papers[1].size_um.width());
   EXPECT_EQ(355600, caps.papers[1].size_um.height());
+  EXPECT_TRUE(PapersEqual(caps.papers[1], caps.default_paper));
+}
+
+TEST(PrintBackendCupsHelperTest, TestPpdParsingPageSizeNoDefaultSpecified) {
+  constexpr char kTestPpdData[] =
+      R"(*PPD-Adobe: "4.3"
+*OpenUI *PageSize: PickOne
+*PageSize A3/ISO A3: "
+  << /DeferredMediaSelection true /PageSize [842 1191]
+  /ImagingBBox null >> setpagedevice"
+*End
+*PageSize A4/ISO A4: "
+  << /DeferredMediaSelection true /PageSize [595 842]
+  /ImagingBBox null >> setpagedevice"
+*End
+*PageSize Legal/US Legal: "
+  << /DeferredMediaSelection true /PageSize [612 1008]
+  /ImagingBBox null >> setpagedevice"
+*End
+*PageSize Letter/US Letter: "
+  << /DeferredMediaSelection true /PageSize [612 792]
+  /ImagingBBox null >> setpagedevice"
+*End
+*PaperDimension A3/ISO A3: "842 1191"
+*PaperDimension A4/ISO A4: "595 842"
+*PaperDimension Legal/US Legal: "612 1008"
+*PaperDimension Letter/US Letter: "612 792"
+*CloseUI: *PageSize)";
+
+  {
+    PrinterSemanticCapsAndDefaults caps;
+    EXPECT_TRUE(ParsePpdCapabilities("test", "en-US", kTestPpdData, &caps));
+    ASSERT_EQ(4UL, caps.papers.size());
+    EXPECT_EQ("Letter", caps.papers[3].vendor_id);
+    EXPECT_EQ("US Letter", caps.papers[3].display_name);
+    EXPECT_EQ(215900, caps.papers[3].size_um.width());
+    EXPECT_EQ(279400, caps.papers[3].size_um.height());
+    EXPECT_TRUE(PapersEqual(caps.papers[3], caps.default_paper));
+  }
+  {
+    PrinterSemanticCapsAndDefaults caps;
+    EXPECT_TRUE(ParsePpdCapabilities("test", "en-UK", kTestPpdData, &caps));
+    ASSERT_EQ(4UL, caps.papers.size());
+    EXPECT_EQ("A4", caps.papers[1].vendor_id);
+    EXPECT_EQ("ISO A4", caps.papers[1].display_name);
+    EXPECT_EQ(209903, caps.papers[1].size_um.width());
+    EXPECT_EQ(297039, caps.papers[1].size_um.height());
+    EXPECT_TRUE(PapersEqual(caps.papers[1], caps.default_paper));
+  }
 }
 
 TEST(PrintBackendCupsHelperTest, TestPpdParsingBrotherPrinters) {
   {
-    const char kTestPpdData[] =
-        "*PPD-Adobe: \"4.3\"\n\n"
-        "*ColorDevice: True\n"
-        "*OpenUI *BRPrintQuality/Color/Mono: PickOne\n"
-        "*DefaultBRPrintQuality: Auto\n"
-        "*BRPrintQuality Auto/Auto: \"\"\n"
-        "*BRPrintQuality Color/Color: \"\"\n"
-        "*BRPrintQuality Black/Mono: \"\"\n"
-        "*CloseUI: *BRPrintQuality\n\n";
+    constexpr char kTestPpdData[] =
+        R"(*PPD-Adobe: "4.3"
+*ColorDevice: True
+*OpenUI *BRPrintQuality/Color/Mono: PickOne
+*DefaultBRPrintQuality: Auto
+*BRPrintQuality Auto/Auto: ""
+*BRPrintQuality Color/Color: ""
+*BRPrintQuality Black/Mono: ""
+*CloseUI: *BRPrintQuality)";
 
-    printing::PrinterSemanticCapsAndDefaults caps;
-    EXPECT_TRUE(printing::ParsePpdCapabilities("test", kTestPpdData, &caps));
+    PrinterSemanticCapsAndDefaults caps;
+    EXPECT_TRUE(ParsePpdCapabilities("test", "", kTestPpdData, &caps));
     EXPECT_TRUE(caps.color_changeable);
     EXPECT_TRUE(caps.color_default);
-    EXPECT_EQ(printing::BROTHER_BRSCRIPT3_COLOR, caps.color_model);
-    EXPECT_EQ(printing::BROTHER_BRSCRIPT3_BLACK, caps.bw_model);
+    EXPECT_EQ(BROTHER_BRSCRIPT3_COLOR, caps.color_model);
+    EXPECT_EQ(BROTHER_BRSCRIPT3_BLACK, caps.bw_model);
   }
   {
-    const char kTestPpdData[] =
-        "*PPD-Adobe: \"4.3\"\n\n"
-        "*ColorDevice: True\n"
-        "*OpenUI *BRMonoColor/Color / Mono: PickOne\n"
-        "*DefaultBRMonoColor: Auto\n"
-        "*BRMonoColor Auto/Auto: \"\"\n"
-        "*BRMonoColor FullColor/Color: \"\"\n"
-        "*BRMonoColor Mono/Mono: \"\"\n"
-        "*CloseUI: *BRMonoColor\n\n";
+    constexpr char kTestPpdData[] =
+        R"(*PPD-Adobe: "4.3"
+*ColorDevice: True
+*OpenUI *BRMonoColor/Color / Mono: PickOne
+*DefaultBRMonoColor: Auto
+*BRMonoColor Auto/Auto: ""
+*BRMonoColor FullColor/Color: ""
+*BRMonoColor Mono/Mono: ""
+*CloseUI: *BRMonoColor)";
 
-    printing::PrinterSemanticCapsAndDefaults caps;
-    EXPECT_TRUE(printing::ParsePpdCapabilities("test", kTestPpdData, &caps));
+    PrinterSemanticCapsAndDefaults caps;
+    EXPECT_TRUE(ParsePpdCapabilities("test", "", kTestPpdData, &caps));
     EXPECT_TRUE(caps.color_changeable);
     EXPECT_TRUE(caps.color_default);
-    EXPECT_EQ(printing::BROTHER_CUPS_COLOR, caps.color_model);
-    EXPECT_EQ(printing::BROTHER_CUPS_MONO, caps.bw_model);
+    EXPECT_EQ(BROTHER_CUPS_COLOR, caps.color_model);
+    EXPECT_EQ(BROTHER_CUPS_MONO, caps.bw_model);
   }
   {
-    const char kTestPpdData[] =
-        "*PPD-Adobe: \"4.3\"\n\n"
-        "*ColorDevice: True\n"
-        "*OpenUI *BRDuplex/Two-Sided Printing: PickOne\n"
-        "*DefaultBRDuplex: DuplexTumble\n"
-        "*BRDuplex DuplexTumble/Short-Edge Binding: \"\"\n"
-        "*BRDuplex DuplexNoTumble/Long-Edge Binding: \"\"\n"
-        "*BRDuplex None/Off: \"\"\n"
-        "*CloseUI: *BRDuplex\n\n";
+    constexpr char kTestPpdData[] =
+        R"(*PPD-Adobe: "4.3"
+*ColorDevice: True
+*OpenUI *BRDuplex/Two-Sided Printing: PickOne
+*DefaultBRDuplex: DuplexTumble
+*BRDuplex DuplexTumble/Short-Edge Binding: ""
+*BRDuplex DuplexNoTumble/Long-Edge Binding: ""
+*BRDuplex None/Off: ""
+*CloseUI: *BRDuplex)";
 
-    printing::PrinterSemanticCapsAndDefaults caps;
-    EXPECT_TRUE(printing::ParsePpdCapabilities("test", kTestPpdData, &caps));
-    EXPECT_THAT(caps.duplex_modes, testing::UnorderedElementsAre(
-                                       printing::SIMPLEX, printing::LONG_EDGE,
-                                       printing::SHORT_EDGE));
-    EXPECT_EQ(printing::SHORT_EDGE, caps.duplex_default);
+    PrinterSemanticCapsAndDefaults caps;
+    EXPECT_TRUE(ParsePpdCapabilities("test", "", kTestPpdData, &caps));
+    EXPECT_THAT(caps.duplex_modes,
+                testing::UnorderedElementsAre(SIMPLEX, LONG_EDGE, SHORT_EDGE));
+    EXPECT_EQ(SHORT_EDGE, caps.duplex_default);
   }
 }
 
 TEST(PrintBackendCupsHelperTest, TestPpdParsingSamsungPrinters) {
   {
-    const char kTestPpdData[] =
-        "*PPD-Adobe: \"4.3\"\n\n"
-        "*ColorDevice: True\n"
-        "*OpenUI *ColorMode/Color Mode:  Boolean\n"
-        "*DefaultColorMode: True\n"
-        "*ColorMode False/Grayscale: \"\"\n"
-        "*ColorMode True/Color: \"\"\n"
-        "*CloseUI: *ColorMode\n\n";
+    constexpr char kTestPpdData[] =
+        R"(*PPD-Adobe: "4.3"
+*ColorDevice: True
+*OpenUI *ColorMode/Color Mode:  Boolean
+*DefaultColorMode: True
+*ColorMode False/Grayscale: ""
+*ColorMode True/Color: ""
+*CloseUI: *ColorMode)";
 
-    printing::PrinterSemanticCapsAndDefaults caps;
-    EXPECT_TRUE(printing::ParsePpdCapabilities("test", kTestPpdData, &caps));
+    PrinterSemanticCapsAndDefaults caps;
+    EXPECT_TRUE(ParsePpdCapabilities("test", "", kTestPpdData, &caps));
     EXPECT_TRUE(caps.color_changeable);
     EXPECT_TRUE(caps.color_default);
-    EXPECT_EQ(printing::COLORMODE_COLOR, caps.color_model);
-    EXPECT_EQ(printing::COLORMODE_MONOCHROME, caps.bw_model);
+    EXPECT_EQ(COLORMODE_COLOR, caps.color_model);
+    EXPECT_EQ(COLORMODE_MONOCHROME, caps.bw_model);
   }
 }
+
+}  // namespace printing
diff --git a/printing/backend/print_backend_cups.cc b/printing/backend/print_backend_cups.cc
index d5d4da9..c8218a0 100644
--- a/printing/backend/print_backend_cups.cc
+++ b/printing/backend/print_backend_cups.cc
@@ -158,7 +158,7 @@
   if (!GetPrinterCapsAndDefaults(printer_name, &info))
     return false;
 
-  return ParsePpdCapabilities(printer_name, info.printer_capabilities,
+  return ParsePpdCapabilities(printer_name, locale(), info.printer_capabilities,
                               printer_info);
 }
 
diff --git a/printing/printing_utils.cc b/printing/printing_utils.cc
index 353a0aab..96ae1ef 100644
--- a/printing/printing_utils.cc
+++ b/printing/printing_utils.cc
@@ -4,21 +4,26 @@
 
 #include "printing/printing_utils.h"
 
-#include <stddef.h>
+#include <unicode/ulocdata.h>
 
 #include <algorithm>
+#include <cmath>
+#include <string>
 
 #include "base/logging.h"
 #include "base/strings/string_util.h"
 #include "base/strings/utf_string_conversions.h"
+#include "printing/units.h"
 #include "third_party/icu/source/common/unicode/uchar.h"
+#include "ui/gfx/geometry/size.h"
 #include "ui/gfx/text_elider.h"
 
 namespace printing {
 
 namespace {
 
-const size_t kMaxDocumentTitleLength = 80;
+constexpr size_t kMaxDocumentTitleLength = 80;
+constexpr gfx::Size kIsoA4Microns = gfx::Size(210000, 297000);
 
 }  // namespace
 
@@ -63,4 +68,35 @@
                                                kMaxDocumentTitleLength);
 }
 
+gfx::Size GetDefaultPaperSizeFromLocaleMicrons(base::StringPiece locale) {
+  if (locale.empty())
+    return kIsoA4Microns;
+
+  int32_t width = 0;
+  int32_t height = 0;
+  UErrorCode error = U_ZERO_ERROR;
+  ulocdata_getPaperSize(locale.as_string().c_str(), &height, &width, &error);
+  if (error > U_ZERO_ERROR) {
+    // If the call failed, assume Letter paper size.
+    LOG(WARNING) << "ulocdata_getPaperSize failed, using ISO A4 Paper, error: "
+                 << error;
+
+    return kIsoA4Microns;
+  }
+  // Convert millis to microns
+  return gfx::Size(width * 1000, height * 1000);
+}
+
+bool SizesEqualWithinEpsilon(const gfx::Size& lhs,
+                             const gfx::Size& rhs,
+                             int epsilon) {
+  DCHECK_GE(epsilon, 0);
+
+  if (lhs.IsEmpty() && rhs.IsEmpty())
+    return true;
+
+  return std::abs(lhs.width() - rhs.width()) <= epsilon &&
+         std::abs(lhs.height() - rhs.height()) <= epsilon;
+}
+
 }  // namespace printing
diff --git a/printing/printing_utils.h b/printing/printing_utils.h
index b0e1f92..332b5833 100644
--- a/printing/printing_utils.h
+++ b/printing/printing_utils.h
@@ -8,8 +8,13 @@
 #include <stddef.h>
 
 #include "base/strings/string16.h"
+#include "base/strings/string_piece.h"
 #include "printing/printing_export.h"
 
+namespace gfx {
+class Size;
+}
+
 namespace printing {
 
 // Simplify title to resolve issue with some drivers.
@@ -29,6 +34,17 @@
     const base::string16& title,
     size_t length);
 
+// Returns the paper size (microns) most common in the locale to the nearest
+// millimeter. Defaults to ISO A4 for an empty or invalid locale.
+PRINTING_EXPORT gfx::Size GetDefaultPaperSizeFromLocaleMicrons(
+    base::StringPiece locale);
+
+// Returns true if both dimensions of the sizes have a delta less than or equal
+// to the epsilon value.
+PRINTING_EXPORT bool SizesEqualWithinEpsilon(const gfx::Size& lhs,
+                                             const gfx::Size& rhs,
+                                             int epsilon);
+
 }  // namespace printing
 
 #endif  // PRINTING_PRINTING_UTILS_H_
diff --git a/printing/printing_utils_unittest.cc b/printing/printing_utils_unittest.cc
index 4a04427..54154aa1 100644
--- a/printing/printing_utils_unittest.cc
+++ b/printing/printing_utils_unittest.cc
@@ -2,17 +2,24 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+#include "printing/printing_utils.h"
+
 #include <stddef.h>
 
+#include <limits>
+#include <string>
+
 #include "base/strings/utf_string_conversions.h"
-#include "printing/printing_utils.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "ui/gfx/geometry/size.h"
 
 namespace printing {
 
 namespace {
 
-const size_t kTestLength = 8;
+constexpr size_t kTestLength = 8;
+constexpr gfx::Size kIsoA4Microns(210000, 297000);
+constexpr gfx::Size kNaLetterMicrons(216000, 279000);
 
 std::string Simplify(const std::string& title) {
   return base::UTF16ToUTF8(
@@ -46,4 +53,47 @@
   EXPECT_EQ("ab...j: ", Format("abcdefghij", "0123456789"));
 }
 
+TEST(PrintingUtilsTest, GetDefaultPaperSizeFromLocaleMicrons) {
+  // Valid locales
+  EXPECT_EQ(kNaLetterMicrons, GetDefaultPaperSizeFromLocaleMicrons("en-US"));
+  EXPECT_EQ(kNaLetterMicrons, GetDefaultPaperSizeFromLocaleMicrons("en_US"));
+  EXPECT_EQ(kNaLetterMicrons, GetDefaultPaperSizeFromLocaleMicrons("fr-CA"));
+  EXPECT_EQ(kNaLetterMicrons, GetDefaultPaperSizeFromLocaleMicrons("es-CL"));
+  EXPECT_EQ(kIsoA4Microns, GetDefaultPaperSizeFromLocaleMicrons("en_UK"));
+  EXPECT_EQ(kIsoA4Microns, GetDefaultPaperSizeFromLocaleMicrons("fa-IR"));
+
+  // Empty locale
+  EXPECT_EQ(kIsoA4Microns, GetDefaultPaperSizeFromLocaleMicrons(""));
+
+  // Non-existing locale
+  EXPECT_EQ(kIsoA4Microns,
+            GetDefaultPaperSizeFromLocaleMicrons("locale-does-not-exist"));
+}
+
+TEST(PrintingUtilsTest, SizesEqualWithinEpsilon) {
+  constexpr int kMaxInt = std::numeric_limits<int>::max();
+
+  // Large sizes
+  EXPECT_TRUE(SizesEqualWithinEpsilon(gfx::Size(kMaxInt, kMaxInt),
+                                      gfx::Size(kMaxInt - 1, kMaxInt - 1), 1));
+  EXPECT_FALSE(SizesEqualWithinEpsilon(gfx::Size(kMaxInt, kMaxInt),
+                                       gfx::Size(kMaxInt - 1, kMaxInt - 2), 1));
+  EXPECT_TRUE(SizesEqualWithinEpsilon(gfx::Size(kMaxInt, kMaxInt),
+                                      gfx::Size(0, 0), kMaxInt));
+  EXPECT_FALSE(SizesEqualWithinEpsilon(gfx::Size(kMaxInt, kMaxInt),
+                                       gfx::Size(0, 0), kMaxInt - 1));
+
+  // Empty sizes
+  EXPECT_TRUE(SizesEqualWithinEpsilon(gfx::Size(0, 0), gfx::Size(0, 0), 0));
+  EXPECT_TRUE(SizesEqualWithinEpsilon(gfx::Size(1, 0), gfx::Size(0, 2), 0));
+  EXPECT_TRUE(SizesEqualWithinEpsilon(gfx::Size(1, -2), gfx::Size(-1, 2), 0));
+
+  // Common paper sizes
+  EXPECT_FALSE(SizesEqualWithinEpsilon(kNaLetterMicrons, kIsoA4Microns, 1000));
+  EXPECT_TRUE(SizesEqualWithinEpsilon(kNaLetterMicrons,
+                                      gfx::Size(215900, 279400), 500));
+  EXPECT_TRUE(
+      SizesEqualWithinEpsilon(kIsoA4Microns, gfx::Size(210500, 296500), 500));
+}
+
 }  // namespace printing
diff --git a/printing/units.h b/printing/units.h
index 7b83577a..6dcc206 100644
--- a/printing/units.h
+++ b/printing/units.h
@@ -18,30 +18,30 @@
 
 // Length of an inch in CSS's 1pt unit.
 // http://dev.w3.org/csswg/css3-values/#absolute-length-units-cm-mm.-in-pt-pc
-const int kPointsPerInch = 72;
+constexpr int kPointsPerInch = 72;
 
 // Length of an inch in CSS's 1px unit.
 // http://dev.w3.org/csswg/css3-values/#the-px-unit
-const int kPixelsPerInch = 96;
+constexpr int kPixelsPerInch = 96;
 
 // Dpi used to save to PDF or Cloud Print.
-const int kDefaultPdfDpi = 300;
+constexpr int kDefaultPdfDpi = 300;
 
 // LETTER: 8.5 x 11 inches
-const float kLetterWidthInch = 8.5f;
-const float kLetterHeightInch = 11.0f;
+constexpr float kLetterWidthInch = 8.5f;
+constexpr float kLetterHeightInch = 11.0f;
 
 // LEGAL: 8.5 x 14 inches
-const float kLegalWidthInch = 8.5f;
-const float kLegalHeightInch = 14.0f;
+constexpr float kLegalWidthInch = 8.5f;
+constexpr float kLegalHeightInch = 14.0f;
 
 // A4: 8.27 x 11.69 inches
-const float kA4WidthInch = 8.27f;
-const float kA4HeightInch = 11.69f;
+constexpr float kA4WidthInch = 8.27f;
+constexpr float kA4HeightInch = 11.69f;
 
 // A3: 11.69 x 16.54 inches
-const float kA3WidthInch = 11.69f;
-const float kA3HeightInch = 16.54f;
+constexpr float kA3WidthInch = 11.69f;
+constexpr float kA3HeightInch = 16.54f;
 
 // Converts from one unit system to another using integer arithmetics.
 PRINTING_EXPORT int ConvertUnit(double value, int old_unit, int new_unit);
diff --git a/remoting/host/input_monitor/local_mouse_input_monitor_mac.mm b/remoting/host/input_monitor/local_mouse_input_monitor_mac.mm
index fb33809..8bab7fc 100644
--- a/remoting/host/input_monitor/local_mouse_input_monitor_mac.mm
+++ b/remoting/host/input_monitor/local_mouse_input_monitor_mac.mm
@@ -244,8 +244,7 @@
     scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
     LocalInputMonitor::PointerMoveCallback on_mouse_move,
     base::OnceClosure disconnect_callback) {
-  return std::make_unique<LocalMouseInputMonitorMac>(
-      caller_task_runner, ui_task_runner, std::move(on_mouse_move));
+  return nullptr;
 }
 
 }  // namespace remoting
diff --git a/rlz/chromeos/lib/rlz_value_store_chromeos.cc b/rlz/chromeos/lib/rlz_value_store_chromeos.cc
index 5e7a0be..fb74306 100644
--- a/rlz/chromeos/lib/rlz_value_store_chromeos.cc
+++ b/rlz/chromeos/lib/rlz_value_store_chromeos.cc
@@ -121,7 +121,7 @@
 // because DBus code is not thread safe.
 void SetRlzPingSent(int retry_count) {
   // GetSystemBus() could return null in tests.
-  base::TaskRunner* const origin_task_runner =
+  base::SequencedTaskRunner* const origin_task_runner =
       chromeos::DBusThreadManager::Get()->GetSystemBus()
           ? chromeos::DBusThreadManager::Get()
                 ->GetSystemBus()
diff --git a/services/data_decoder/image_decoder_impl_unittest.cc b/services/data_decoder/image_decoder_impl_unittest.cc
index 08669ee..ffa4445b 100644
--- a/services/data_decoder/image_decoder_impl_unittest.cc
+++ b/services/data_decoder/image_decoder_impl_unittest.cc
@@ -62,7 +62,7 @@
     decoder_->DecodeImage(
         image, mojom::ImageCodec::DEFAULT, shrink, kTestMaxImageSize,
         gfx::Size(),  // Take the smallest frame (there's only one frame).
-        base::Bind(&Request::OnRequestDone, base::Unretained(this)));
+        base::BindOnce(&Request::OnRequestDone, base::Unretained(this)));
   }
 
   const SkBitmap& bitmap() const { return bitmap_; }
diff --git a/services/data_decoder/public/cpp/decode_image.cc b/services/data_decoder/public/cpp/decode_image.cc
index 5707600c8..fe18c258 100644
--- a/services/data_decoder/public/cpp/decode_image.cc
+++ b/services/data_decoder/public/cpp/decode_image.cc
@@ -104,8 +104,8 @@
 
   // |call_once| runs |callback| on its first invocation.
   auto call_once = base::AdaptCallbackForRepeating(std::move(callback));
-  decoder.set_disconnect_handler(base::BindOnce(
-      call_once, base::Passed(std::vector<mojom::AnimationFramePtr>())));
+  decoder.set_disconnect_handler(
+      base::BindOnce(call_once, std::vector<mojom::AnimationFramePtr>()));
 
   mojom::ImageDecoder* raw_decoder = decoder.get();
   raw_decoder->DecodeAnimation(
diff --git a/services/data_decoder/public/cpp/safe_web_bundle_parser_unittest.cc b/services/data_decoder/public/cpp/safe_web_bundle_parser_unittest.cc
index f82ddc7..8709166 100644
--- a/services/data_decoder/public/cpp/safe_web_bundle_parser_unittest.cc
+++ b/services/data_decoder/public/cpp/safe_web_bundle_parser_unittest.cc
@@ -101,7 +101,6 @@
 
  private:
   // Implements mojom::BundledDataSource.
-  void GetSize(GetSizeCallback callback) override {}
   void Read(uint64_t offset, uint64_t length, ReadCallback callback) override {}
 
   mojo::Receiver<mojom::BundleDataSource> receiver_;
@@ -140,7 +139,7 @@
   {
     base::RunLoop run_loop;
     parser.ParseMetadata(base::BindOnce(
-        [](base::Closure quit_closure,
+        [](base::OnceClosure quit_closure,
            mojom::BundleMetadataPtr* metadata_result,
            mojom::BundleMetadataPtr metadata,
            mojom::BundleMetadataParseErrorPtr error) {
@@ -164,7 +163,7 @@
         entry.second->response_locations[0]->offset,
         entry.second->response_locations[0]->length,
         base::BindOnce(
-            [](base::Closure quit_closure, const std::string url,
+            [](base::OnceClosure quit_closure, const std::string url,
                std::map<std::string, mojom::BundleResponsePtr>* responses,
                mojom::BundleResponsePtr response,
                mojom::BundleResponseParseErrorPtr error) {
@@ -260,7 +259,7 @@
   base::RunLoop run_loop;
   bool parsed = false;
   parser.ParseMetadata(base::BindOnce(
-      [](base::Closure quit_closure, bool* parsed,
+      [](base::OnceClosure quit_closure, bool* parsed,
          mojom::BundleMetadataPtr metadata,
          mojom::BundleMetadataParseErrorPtr error) {
         EXPECT_FALSE(metadata);
diff --git a/services/data_decoder/public/mojom/BUILD.gn b/services/data_decoder/public/mojom/BUILD.gn
index 435acd8..84c2b20 100644
--- a/services/data_decoder/public/mojom/BUILD.gn
+++ b/services/data_decoder/public/mojom/BUILD.gn
@@ -14,7 +14,6 @@
   ]
 
   public_deps = [
-    ":constants",
     "//mojo/public/mojom/base",
     "//skia/public/mojom",
     "//ui/gfx/geometry/mojom",
@@ -26,9 +25,3 @@
     public_deps += [ "//device/bluetooth/public/mojom" ]
   }
 }
-
-mojom("constants") {
-  sources = [
-    "constants.mojom",
-  ]
-}
diff --git a/services/data_decoder/public/mojom/constants.mojom b/services/data_decoder/public/mojom/constants.mojom
deleted file mode 100644
index 60a96f2..0000000
--- a/services/data_decoder/public/mojom/constants.mojom
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-module data_decoder.mojom;
-
-const string kServiceName = "data_decoder";
diff --git a/services/data_decoder/public/mojom/web_bundle_parser.mojom b/services/data_decoder/public/mojom/web_bundle_parser.mojom
index b912e5bd..ca4c1be 100644
--- a/services/data_decoder/public/mojom/web_bundle_parser.mojom
+++ b/services/data_decoder/public/mojom/web_bundle_parser.mojom
@@ -34,7 +34,8 @@
 
 // Data source that provides application/webbundle data to the parser.
 interface BundleDataSource {
-  GetSize() => (uint64 size);
+  // Reads up to |length| bytes starting with |offset|. Returns a non-null
+  // buffer shorter than |length| iff the end of the stream is reached.
   Read(uint64 offset, uint64 length) => (array<uint8>? buffer);
 };
 
diff --git a/services/data_decoder/web_bundle_parser.cc b/services/data_decoder/web_bundle_parser.cc
index f140da1..e354823 100644
--- a/services/data_decoder/web_bundle_parser.cc
+++ b/services/data_decoder/web_bundle_parser.cc
@@ -311,30 +311,22 @@
   ~MetadataParser() override { data_source_->RemoveObserver(this); }
 
   void Start() {
-    data_source_->GetSize(base::BindOnce(&MetadataParser::DidGetSize,
-                                         weak_factory_.GetWeakPtr()));
+    // First, we will parse `magic`, `version`, and the CBOR header of
+    // `primary-url`.
+    // https://wicg.github.io/webpackage/draft-yasskin-wpack-bundled-exchanges.html#top-level
+    const uint64_t length = sizeof(kBundleMagicBytes) +
+                            sizeof(kVersionB1MagicBytes) +
+                            kMaxCBORItemHeaderSize;
+    data_source_->Read(0, length,
+                       base::BindOnce(&MetadataParser::ParseMagicBytes,
+                                      weak_factory_.GetWeakPtr()));
   }
 
  private:
-  void DidGetSize(uint64_t size) {
-    size_ = size;
-
-    // In the next step, we will parse `magic`, `version`, and the CBOR
-    // header of `primary-url`.
-    // https://wicg.github.io/webpackage/draft-yasskin-wpack-bundled-exchanges.html#top-level
-    const uint64_t length = std::min(size, sizeof(kBundleMagicBytes) +
-                                               sizeof(kVersionB1MagicBytes) +
-                                               kMaxCBORItemHeaderSize);
-    data_source_->Read(0, length,
-                       base::BindOnce(&MetadataParser::ParseMagicBytes,
-                                      weak_factory_.GetWeakPtr(), length));
-  }
-
   // Step 1-4 of
   // https://wicg.github.io/webpackage/draft-yasskin-wpack-bundled-exchanges.html#load-metadata
-  void ParseMagicBytes(uint64_t expected_data_length,
-                       const base::Optional<std::vector<uint8_t>>& data) {
-    if (!data || data->size() != expected_data_length) {
+  void ParseMagicBytes(const base::Optional<std::vector<uint8_t>>& data) {
+    if (!data) {
       RunErrorCallbackAndDestroy("Error reading bundle magic bytes.");
       return;
     }
@@ -381,22 +373,20 @@
 
     // In the next step, we will parse the content of `primary-url`,
     // `section-lengths`, and the CBOR header of `sections`.
-    const uint64_t length = std::min(
-        size_ - input.CurrentOffset(),
-        *url_length + kMaxSectionLengthsCBORSize + kMaxCBORItemHeaderSize * 2);
+    const uint64_t length =
+        *url_length + kMaxSectionLengthsCBORSize + kMaxCBORItemHeaderSize * 2;
     data_source_->Read(input.CurrentOffset(), length,
                        base::BindOnce(&MetadataParser::ParseBundleHeader,
-                                      weak_factory_.GetWeakPtr(), length,
-                                      *url_length, input.CurrentOffset()));
+                                      weak_factory_.GetWeakPtr(), *url_length,
+                                      input.CurrentOffset()));
   }
 
   // Step 5-21 of
   // https://wicg.github.io/webpackage/draft-yasskin-wpack-bundled-exchanges.html#load-metadata
-  void ParseBundleHeader(uint64_t expected_data_length,
-                         uint64_t url_length,
+  void ParseBundleHeader(uint64_t url_length,
                          uint64_t offset_in_stream,
                          const base::Optional<std::vector<uint8_t>>& data) {
-    if (!data || data->size() != expected_data_length) {
+    if (!data) {
       RunErrorCallbackAndDestroy("Error reading bundle header.");
       return;
     }
@@ -534,9 +524,9 @@
 
       // Step 19.4. "Set currentOffset to currentOffset + length."
       if (!base::CheckAdd(current_offset, length)
-               .AssignIfValid(&current_offset) ||
-          current_offset > size_) {
-        RunErrorCallbackAndDestroy("Section doesn't fit in the bundle.");
+               .AssignIfValid(&current_offset)) {
+        RunErrorCallbackAndDestroy(
+            "Integer overflow calculating section offsets.");
         return;
       }
     }
@@ -1098,7 +1088,6 @@
 
   scoped_refptr<SharedBundleDataSource> data_source_;
   ParseMetadataCallback callback_;
-  uint64_t size_;
   bool version_mismatch_ = false;
   GURL fallback_url_;
   SectionOffsets section_offsets_;
@@ -1325,11 +1314,6 @@
     observer->OnDisconnect();
 }
 
-void WebBundleParser::SharedBundleDataSource::GetSize(
-    GetSizeCallback callback) {
-  data_source_->GetSize(std::move(callback));
-}
-
 void WebBundleParser::SharedBundleDataSource::Read(uint64_t offset,
                                                    uint64_t length,
                                                    ReadCallback callback) {
diff --git a/services/data_decoder/web_bundle_parser.h b/services/data_decoder/web_bundle_parser.h
index 3be1cb9..81fe780 100644
--- a/services/data_decoder/web_bundle_parser.h
+++ b/services/data_decoder/web_bundle_parser.h
@@ -39,7 +39,6 @@
     void RemoveObserver(Observer* observer);
 
     // Implements mojom::BundleDataSource.
-    void GetSize(GetSizeCallback callback) override;
     void Read(uint64_t offset, uint64_t length, ReadCallback callback) override;
 
    private:
diff --git a/services/data_decoder/web_bundle_parser_factory.cc b/services/data_decoder/web_bundle_parser_factory.cc
index 413d97f2..1ead65e 100644
--- a/services/data_decoder/web_bundle_parser_factory.cc
+++ b/services/data_decoder/web_bundle_parser_factory.cc
@@ -24,17 +24,15 @@
 
  private:
   // Implements mojom::BundleDataSource.
-  void GetSize(GetSizeCallback callback) override {
-    std::move(callback).Run(file_.GetLength());
-  }
   void Read(uint64_t offset, uint64_t length, ReadCallback callback) override {
     std::vector<uint8_t> buf(length);
-    uint64_t bytes =
-        file_.Read(offset, reinterpret_cast<char*>(buf.data()), length);
-    if (bytes != length)
-      std::move(callback).Run(base::nullopt);
-    else
+    int bytes = file_.Read(offset, reinterpret_cast<char*>(buf.data()), length);
+    if (bytes > 0) {
+      buf.resize(bytes);
       std::move(callback).Run(std::move(buf));
+    } else {
+      std::move(callback).Run(base::nullopt);
+    }
   }
 
   mojo::Receiver<mojom::BundleDataSource> receiver_;
diff --git a/services/data_decoder/web_bundle_parser_factory_unittest.cc b/services/data_decoder/web_bundle_parser_factory_unittest.cc
index 72728db..c6cecfa 100644
--- a/services/data_decoder/web_bundle_parser_factory_unittest.cc
+++ b/services/data_decoder/web_bundle_parser_factory_unittest.cc
@@ -53,31 +53,7 @@
   base::test::TaskEnvironment task_environment_;
 };
 
-TEST_F(WebBundleParserFactoryTest, GetSize) {
-  base::FilePath test_file = base::FilePath(FILE_PATH_LITERAL("hello.wbn"));
-
-  base::File file(GetTestFilePath(test_file),
-                  base::File::FLAG_OPEN | base::File::FLAG_READ);
-  ASSERT_TRUE(file.IsValid());
-  uint64_t file_size = file.GetLength();
-
-  mojo::PendingRemote<mojom::BundleDataSource> remote;
-  auto data_source = CreateFileDataSource(
-      remote.InitWithNewPipeAndPassReceiver(), std::move(file));
-
-  uint64_t result_size;
-  base::RunLoop run_loop;
-  data_source->GetSize(
-      base::BindLambdaForTesting([&result_size, &run_loop](uint64_t size) {
-        result_size = size;
-        run_loop.QuitClosure().Run();
-      }));
-  run_loop.Run();
-
-  EXPECT_EQ(file_size, result_size);
-}
-
-TEST_F(WebBundleParserFactoryTest, Read) {
+TEST_F(WebBundleParserFactoryTest, FileDataSource) {
   base::FilePath test_file =
       GetTestFilePath(base::FilePath(FILE_PATH_LITERAL("hello.wbn")));
 
@@ -141,6 +117,21 @@
             }));
     run_loop.Run();
   }
+  ASSERT_TRUE(result_data);
+  EXPECT_EQ(last16b, *result_data);
+
+  {
+    base::RunLoop run_loop;
+    data_source->Read(
+        file_length + 1, test_length,
+        base::BindLambdaForTesting(
+            [&result_data,
+             &run_loop](const base::Optional<std::vector<uint8_t>>& data) {
+              result_data = data;
+              run_loop.QuitClosure().Run();
+            }));
+    run_loop.Run();
+  }
   ASSERT_FALSE(result_data);
 }
 
diff --git a/services/data_decoder/web_bundle_parser_fuzzer.cc b/services/data_decoder/web_bundle_parser_fuzzer.cc
index 6d2aeba..df56a87 100644
--- a/services/data_decoder/web_bundle_parser_fuzzer.cc
+++ b/services/data_decoder/web_bundle_parser_fuzzer.cc
@@ -23,16 +23,13 @@
  public:
   DataSource(const uint8_t* data, size_t size) : data_(data), size_(size) {}
 
-  void GetSize(GetSizeCallback callback) override {
-    std::move(callback).Run(size_);
-  }
-
   void Read(uint64_t offset, uint64_t length, ReadCallback callback) override {
-    if (offset + length > size_) {
+    if (offset >= size_) {
       std::move(callback).Run(base::nullopt);
       return;
     }
     const uint8_t* start = data_ + offset;
+    length = std::min(length, size_ - offset);
     std::move(callback).Run(std::vector<uint8_t>(start, start + length));
   }
 
@@ -64,8 +61,8 @@
                                    std::move(data_source_remote));
 
     quit_loop_ = run_loop->QuitClosure();
-    parser_->ParseMetadata(base::Bind(&WebBundleParserFuzzer::OnParseMetadata,
-                                      base::Unretained(this)));
+    parser_->ParseMetadata(base::BindOnce(
+        &WebBundleParserFuzzer::OnParseMetadata, base::Unretained(this)));
   }
 
   void OnParseMetadata(data_decoder::mojom::BundleMetadataPtr metadata,
@@ -87,9 +84,10 @@
       return;
     }
 
-    parser_->ParseResponse(locations_[index]->offset, locations_[index]->length,
-                           base::Bind(&WebBundleParserFuzzer::OnParseResponse,
-                                      base::Unretained(this), index));
+    parser_->ParseResponse(
+        locations_[index]->offset, locations_[index]->length,
+        base::BindOnce(&WebBundleParserFuzzer::OnParseResponse,
+                       base::Unretained(this), index));
   }
 
   void OnParseResponse(size_t index,
@@ -101,7 +99,7 @@
  private:
   mojo::Remote<data_decoder::mojom::WebBundleParser> parser_;
   DataSource data_source_;
-  base::Closure quit_loop_;
+  base::OnceClosure quit_loop_;
   std::vector<data_decoder::mojom::BundleResponseLocationPtr> locations_;
 };
 
diff --git a/services/data_decoder/web_bundle_parser_unittest.cc b/services/data_decoder/web_bundle_parser_unittest.cc
index 34d940c6..f259dfe 100644
--- a/services/data_decoder/web_bundle_parser_unittest.cc
+++ b/services/data_decoder/web_bundle_parser_unittest.cc
@@ -43,16 +43,14 @@
   explicit TestDataSource(const std::vector<uint8_t>& data)
       : data_(reinterpret_cast<const char*>(data.data()), data.size()) {}
 
-  void GetSize(GetSizeCallback callback) override {
-    std::move(callback).Run(data_.size());
-  }
-
   void Read(uint64_t offset, uint64_t length, ReadCallback callback) override {
-    if (offset + length > data_.size())
+    if (offset >= data_.size())
       std::move(callback).Run(base::nullopt);
     const uint8_t* start =
         reinterpret_cast<const uint8_t*>(data_.data()) + offset;
-    std::move(callback).Run(std::vector<uint8_t>(start, start + length));
+    uint64_t available_length = std::min(length, data_.size() - offset);
+    std::move(callback).Run(
+        std::vector<uint8_t>(start, start + available_length));
   }
 
   base::StringPiece GetPayload(const mojom::BundleResponsePtr& response) {
diff --git a/services/data_decoder/xml_parser_fuzzer.cc b/services/data_decoder/xml_parser_fuzzer.cc
index 8cd6f62d..7b23ff6 100644
--- a/services/data_decoder/xml_parser_fuzzer.cc
+++ b/services/data_decoder/xml_parser_fuzzer.cc
@@ -15,7 +15,7 @@
 
 namespace {
 
-void OnParseXml(base::Closure quit_loop,
+void OnParseXml(base::OnceClosure quit_loop,
                 base::Optional<base::Value> value,
                 const base::Optional<std::string>& error) {
   std::move(quit_loop).Run();
@@ -38,7 +38,7 @@
   base::SingleThreadTaskExecutor main_thread_task_executor;
   base::RunLoop run_loop;
   xml_parser.Parse(std::string(data_ptr, size),
-                   base::Bind(&OnParseXml, run_loop.QuitClosure()));
+                   base::BindOnce(&OnParseXml, run_loop.QuitClosure()));
   run_loop.Run();
 
   return 0;
diff --git a/services/data_decoder/xml_parser_unittest.cc b/services/data_decoder/xml_parser_unittest.cc
index f0d7868..561826d 100644
--- a/services/data_decoder/xml_parser_unittest.cc
+++ b/services/data_decoder/xml_parser_unittest.cc
@@ -35,7 +35,8 @@
 
   std::unique_ptr<base::Value> actual_value;
   base::Optional<std::string> error;
-  parser.Parse(xml, base::Bind(&TestParseXmlCallback, &actual_value, &error));
+  parser.Parse(xml,
+               base::BindOnce(&TestParseXmlCallback, &actual_value, &error));
   if (json.empty()) {
     EXPECT_TRUE(error);
     EXPECT_FALSE(actual_value)
diff --git a/services/device/battery/battery_monitor_impl.cc b/services/device/battery/battery_monitor_impl.cc
index 0fb7d8c..d537667 100644
--- a/services/device/battery/battery_monitor_impl.cc
+++ b/services/device/battery/battery_monitor_impl.cc
@@ -24,8 +24,9 @@
 BatteryMonitorImpl::BatteryMonitorImpl() : status_to_report_(false) {
   // NOTE: DidChange may be called before AddCallback returns. This is done to
   // report current status.
-  subscription_ = BatteryStatusService::GetInstance()->AddCallback(
-      base::Bind(&BatteryMonitorImpl::DidChange, base::Unretained(this)));
+  subscription_ =
+      BatteryStatusService::GetInstance()->AddCallback(base::BindRepeating(
+          &BatteryMonitorImpl::DidChange, base::Unretained(this)));
 }
 
 BatteryMonitorImpl::~BatteryMonitorImpl() {}
diff --git a/services/device/battery/battery_monitor_impl_unittest.cc b/services/device/battery/battery_monitor_impl_unittest.cc
index 56bd27e0..2c9782ed6 100644
--- a/services/device/battery/battery_monitor_impl_unittest.cc
+++ b/services/device/battery/battery_monitor_impl_unittest.cc
@@ -28,7 +28,7 @@
 
 void ExpectBatteryStatus(bool* out_called,
                          const mojom::BatteryStatus& expected,
-                         const base::Closure& quit_closure,
+                         base::OnceClosure quit_closure,
                          mojom::BatteryStatusPtr status) {
   if (out_called)
     *out_called = true;
@@ -36,7 +36,7 @@
   EXPECT_EQ(expected.charging_time, status->charging_time);
   EXPECT_EQ(expected.discharging_time, status->discharging_time);
   EXPECT_EQ(expected.level, status->level);
-  quit_closure.Run();
+  std::move(quit_closure).Run();
 }
 
 class FakeBatteryStatusManager : public BatteryStatusManager {
@@ -130,7 +130,7 @@
   default_status.discharging_time = std::numeric_limits<double>::infinity();
   default_status.level = 1.0;
   base::RunLoop run_loop;
-  battery_monitor_->QueryNextStatus(base::Bind(
+  battery_monitor_->QueryNextStatus(base::BindOnce(
       &ExpectBatteryStatus, nullptr, default_status, run_loop.QuitClosure()));
   run_loop.Run();
   EXPECT_TRUE(battery_manager()->started());
@@ -148,8 +148,8 @@
   battery_manager()->set_battery_status(status);
 
   base::RunLoop run_loop;
-  battery_monitor_->QueryNextStatus(base::Bind(&ExpectBatteryStatus, nullptr,
-                                               status, run_loop.QuitClosure()));
+  battery_monitor_->QueryNextStatus(base::BindOnce(
+      &ExpectBatteryStatus, nullptr, status, run_loop.QuitClosure()));
   run_loop.Run();
   EXPECT_TRUE(battery_manager()->started());
 }
@@ -168,7 +168,7 @@
 
   // The first time query should succeed.
   base::RunLoop run_loop1;
-  battery_monitor_->QueryNextStatus(base::Bind(
+  battery_monitor_->QueryNextStatus(base::BindOnce(
       &ExpectBatteryStatus, nullptr, status, run_loop1.QuitClosure()));
   run_loop1.Run();
   EXPECT_TRUE(battery_manager()->started());
@@ -177,7 +177,7 @@
   bool called = false;
   status.level = 0.6;
   base::RunLoop run_loop2;
-  battery_monitor_->QueryNextStatus(base::Bind(
+  battery_monitor_->QueryNextStatus(base::BindOnce(
       &ExpectBatteryStatus, &called, status, run_loop2.QuitClosure()));
   base::RunLoop().RunUntilIdle();
   EXPECT_FALSE(called);
diff --git a/services/device/battery/battery_status_manager_linux.cc b/services/device/battery/battery_status_manager_linux.cc
index 3811cc68..1a5cbf7 100644
--- a/services/device/battery/battery_status_manager_linux.cc
+++ b/services/device/battery/battery_status_manager_linux.cc
@@ -304,7 +304,9 @@
     case UPOWER_DEVICE_STATE_FULL: {
       break;
     }
-    default: { status.charging_time = std::numeric_limits<double>::infinity(); }
+    default: {
+      status.charging_time = std::numeric_limits<double>::infinity();
+    }
   }
   return status;
 }
@@ -345,13 +347,13 @@
         system_bus_.get(), UPowerObject::PropertyChangedCallback());
     upower_->proxy()->ConnectToSignal(
         kUPowerServiceName, kUPowerSignalDeviceAdded,
-        base::Bind(&BatteryStatusNotificationThread::DeviceAdded,
-                   base::Unretained(this)),
+        base::BindRepeating(&BatteryStatusNotificationThread::DeviceAdded,
+                            base::Unretained(this)),
         base::DoNothing());
     upower_->proxy()->ConnectToSignal(
         kUPowerServiceName, kUPowerSignalDeviceRemoved,
-        base::Bind(&BatteryStatusNotificationThread::DeviceRemoved,
-                   base::Unretained(this)),
+        base::BindRepeating(&BatteryStatusNotificationThread::DeviceRemoved,
+                            base::Unretained(this)),
         base::DoNothing());
 
     FindBatteryDevice();
@@ -460,8 +462,8 @@
       // to the Changed signal.
       battery_->proxy()->ConnectToSignal(
           kUPowerDeviceInterfaceName, kUPowerDeviceSignalChanged,
-          base::Bind(&BatteryStatusNotificationThread::BatteryChanged,
-                     base::Unretained(this)),
+          base::BindRepeating(&BatteryStatusNotificationThread::BatteryChanged,
+                              base::Unretained(this)),
           base::DoNothing());
     }
   }
@@ -486,8 +488,9 @@
       const dbus::ObjectPath& device_path) {
     return std::make_unique<BatteryObject>(
         system_bus_.get(), device_path,
-        base::Bind(&BatteryStatusNotificationThread::BatteryPropertyChanged,
-                   base::Unretained(this)));
+        base::BindRepeating(
+            &BatteryStatusNotificationThread::BatteryPropertyChanged,
+            base::Unretained(this)));
   }
 
   void DeviceAdded(dbus::Signal* /* signal */) {
diff --git a/services/device/battery/battery_status_manager_linux_unittest.cc b/services/device/battery/battery_status_manager_linux_unittest.cc
index b4c7abfe..6c8b578 100644
--- a/services/device/battery/battery_status_manager_linux_unittest.cc
+++ b/services/device/battery/battery_status_manager_linux_unittest.cc
@@ -504,8 +504,8 @@
 
 void BatteryStatusManagerLinuxTest::StartBatteryStatusManagerLinux() {
   manager_ = BatteryStatusManagerLinux::CreateForTesting(
-      base::Bind(&BatteryStatusManagerLinuxTest::BatteryUpdateCallback,
-                 base::Unretained(this)),
+      base::BindRepeating(&BatteryStatusManagerLinuxTest::BatteryUpdateCallback,
+                          base::Unretained(this)),
       mock_bus_.get());
   manager_->StartListeningBatteryChange();
   SyncWithNotifierThread();
diff --git a/services/device/battery/battery_status_manager_win.cc b/services/device/battery/battery_status_manager_win.cc
index 3c8d973..3e8ba40 100644
--- a/services/device/battery/battery_status_manager_win.cc
+++ b/services/device/battery/battery_status_manager_win.cc
@@ -130,9 +130,10 @@
   bool CreateMessageWindow() {
     // TODO(timvolodine): consider reusing the message window of PowerMonitor.
     window_ = std::make_unique<base::win::MessageWindow>();
-    if (!window_->CreateNamed(base::Bind(&BatteryStatusObserver::HandleMessage,
-                                         base::Unretained(this)),
-                              base::string16(kWindowClassName))) {
+    if (!window_->CreateNamed(
+            base::BindRepeating(&BatteryStatusObserver::HandleMessage,
+                                base::Unretained(this)),
+            base::string16(kWindowClassName))) {
       LOG(ERROR) << "Failed to create message window: " << kWindowClassName;
       window_.reset();
       return false;
diff --git a/services/device/battery/battery_status_service.cc b/services/device/battery/battery_status_service.cc
index 366fbd0..67f6c9f 100644
--- a/services/device/battery/battery_status_service.cc
+++ b/services/device/battery/battery_status_service.cc
@@ -19,11 +19,12 @@
 
 BatteryStatusService::BatteryStatusService()
     : main_thread_task_runner_(base::ThreadTaskRunnerHandle::Get()),
-      update_callback_(base::Bind(&BatteryStatusService::NotifyConsumers,
-                                  base::Unretained(this))),
+      update_callback_(
+          base::BindRepeating(&BatteryStatusService::NotifyConsumers,
+                              base::Unretained(this))),
       status_updated_(false),
       is_shutdown_(false) {
-  callback_list_.set_removal_callback(base::Bind(
+  callback_list_.set_removal_callback(base::BindRepeating(
       &BatteryStatusService::ConsumersChanged, base::Unretained(this)));
 }
 
diff --git a/services/device/battery/battery_status_service.h b/services/device/battery/battery_status_service.h
index 4992788..619e256 100644
--- a/services/device/battery/battery_status_service.h
+++ b/services/device/battery/battery_status_service.h
@@ -20,7 +20,7 @@
 
 class BatteryStatusService {
  public:
-  typedef base::Callback<void(const mojom::BatteryStatus&)>
+  typedef base::RepeatingCallback<void(const mojom::BatteryStatus&)>
       BatteryUpdateCallback;
   typedef base::CallbackList<void(const mojom::BatteryStatus&)>
       BatteryUpdateCallbackList;
diff --git a/services/device/battery/battery_status_service_unittest.cc b/services/device/battery/battery_status_service_unittest.cc
index 58b37ae..67fcdbb0 100644
--- a/services/device/battery/battery_status_service_unittest.cc
+++ b/services/device/battery/battery_status_service_unittest.cc
@@ -62,10 +62,10 @@
   typedef BatteryStatusService::BatteryUpdateSubscription BatterySubscription;
 
   void SetUp() override {
-    callback1_ = base::Bind(&BatteryStatusServiceTest::Callback1,
-                            base::Unretained(this));
-    callback2_ = base::Bind(&BatteryStatusServiceTest::Callback2,
-                            base::Unretained(this));
+    callback1_ = base::BindRepeating(&BatteryStatusServiceTest::Callback1,
+                                     base::Unretained(this));
+    callback2_ = base::BindRepeating(&BatteryStatusServiceTest::Callback2,
+                                     base::Unretained(this));
 
     // We keep a raw pointer to the FakeBatteryManager, which we expect to
     // remain valid for the lifetime of the BatteryStatusService.
diff --git a/services/device/bluetooth/bluetooth_system_unittest.cc b/services/device/bluetooth/bluetooth_system_unittest.cc
index b7aaf18..885f4c9 100644
--- a/services/device/bluetooth/bluetooth_system_unittest.cc
+++ b/services/device/bluetooth/bluetooth_system_unittest.cc
@@ -391,28 +391,28 @@
 
   void RemoveDevice(const dbus::ObjectPath& object_path,
                     const dbus::ObjectPath& device_path,
-                    const base::Closure& callback,
+                    base::OnceClosure callback,
                     ErrorCallback error_callback) override {
     NOTIMPLEMENTED();
   }
 
   void SetDiscoveryFilter(const dbus::ObjectPath& object_path,
                           const DiscoveryFilter& discovery_filter,
-                          const base::Closure& callback,
+                          base::OnceClosure callback,
                           ErrorCallback error_callback) override {
     NOTIMPLEMENTED();
   }
 
   void CreateServiceRecord(const dbus::ObjectPath& object_path,
                            const bluez::BluetoothServiceRecordBlueZ& record,
-                           const ServiceRecordCallback& callback,
+                           ServiceRecordCallback callback,
                            ErrorCallback error_callback) override {
     NOTIMPLEMENTED();
   }
 
   void RemoveServiceRecord(const dbus::ObjectPath& object_path,
                            uint32_t handle,
-                           const base::Closure& callback,
+                           base::OnceClosure callback,
                            ErrorCallback error_callback) override {
     NOTIMPLEMENTED();
   }
diff --git a/services/device/device_service_test_base.cc b/services/device/device_service_test_base.cc
index d6f98d3..0ee8eb5 100644
--- a/services/device/device_service_test_base.cc
+++ b/services/device/device_service_test_base.cc
@@ -14,7 +14,6 @@
 #include "mojo/public/cpp/bindings/binding_set.h"
 #include "services/device/device_service.h"
 #include "services/device/public/cpp/geolocation/location_provider.h"
-#include "services/device/public/mojom/constants.mojom.h"
 #include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h"
 #include "services/network/test/test_network_connection_tracker.h"
 
diff --git a/services/device/fingerprint/fingerprint_chromeos.cc b/services/device/fingerprint/fingerprint_chromeos.cc
index d70726cdc..29cf0d81 100644
--- a/services/device/fingerprint/fingerprint_chromeos.cc
+++ b/services/device/fingerprint/fingerprint_chromeos.cc
@@ -107,8 +107,8 @@
     return;
 
   GetBiodClient()->EndAuthSession(
-      base::Bind(&FingerprintChromeOS::OnCloseAuthSessionForEnroll,
-                 weak_ptr_factory_.GetWeakPtr(), user_id, label));
+      base::BindOnce(&FingerprintChromeOS::OnCloseAuthSessionForEnroll,
+                     weak_ptr_factory_.GetWeakPtr(), user_id, label));
 }
 
 void FingerprintChromeOS::OnCloseAuthSessionForEnroll(
@@ -120,8 +120,8 @@
 
   GetBiodClient()->StartEnrollSession(
       user_id, label,
-      base::Bind(&FingerprintChromeOS::OnStartEnrollSession,
-                 weak_ptr_factory_.GetWeakPtr()));
+      base::BindOnce(&FingerprintChromeOS::OnStartEnrollSession,
+                     weak_ptr_factory_.GetWeakPtr()));
 }
 
 void FingerprintChromeOS::CancelCurrentEnrollSession(
@@ -165,8 +165,8 @@
                             weak_ptr_factory_.GetWeakPtr()));
   } else {
     GetBiodClient()->StartAuthSession(
-        base::Bind(&FingerprintChromeOS::OnStartAuthSession,
-                   weak_ptr_factory_.GetWeakPtr()));
+        base::BindOnce(&FingerprintChromeOS::OnStartAuthSession,
+                       weak_ptr_factory_.GetWeakPtr()));
   }
 }
 
@@ -175,8 +175,8 @@
     return;
 
   GetBiodClient()->StartAuthSession(
-      base::Bind(&FingerprintChromeOS::OnStartAuthSession,
-                 weak_ptr_factory_.GetWeakPtr()));
+      base::BindOnce(&FingerprintChromeOS::OnStartAuthSession,
+                     weak_ptr_factory_.GetWeakPtr()));
 }
 
 void FingerprintChromeOS::EndCurrentAuthSession(
@@ -207,8 +207,8 @@
   mojo::Remote<mojom::FingerprintObserver> observer(
       std::move(pending_observer));
   observer.set_disconnect_handler(
-      base::Bind(&FingerprintChromeOS::OnFingerprintObserverDisconnected,
-                 base::Unretained(this), observer.get()));
+      base::BindOnce(&FingerprintChromeOS::OnFingerprintObserverDisconnected,
+                     base::Unretained(this), observer.get()));
   observers_.push_back(std::move(observer));
 }
 
diff --git a/services/device/fingerprint/fingerprint_chromeos_unittest.cc b/services/device/fingerprint/fingerprint_chromeos_unittest.cc
index 9885388..23e49682 100644
--- a/services/device/fingerprint/fingerprint_chromeos_unittest.cc
+++ b/services/device/fingerprint/fingerprint_chromeos_unittest.cc
@@ -149,14 +149,14 @@
   std::string label;
   chromeos::FakeBiodClient::Get()->StartEnrollSession(
       user_id, label,
-      base::Bind(&FingerprintChromeOSTest::onStartSession,
-                 base::Unretained(this)));
+      base::BindOnce(&FingerprintChromeOSTest::onStartSession,
+                     base::Unretained(this)));
   base::RunLoop().RunUntilIdle();
   GenerateEnrollScanDoneSignal();
   base::RunLoop().RunUntilIdle();
   EXPECT_EQ(observer.enroll_scan_dones(), 1);
 
-  chromeos::FakeBiodClient::Get()->StartAuthSession(base::Bind(
+  chromeos::FakeBiodClient::Get()->StartAuthSession(base::BindOnce(
       &FingerprintChromeOSTest::onStartSession, base::Unretained(this)));
   base::RunLoop().RunUntilIdle();
   GenerateAuthScanDoneSignal();
diff --git a/services/device/generic_sensor/fake_platform_sensor_and_provider.cc b/services/device/generic_sensor/fake_platform_sensor_and_provider.cc
index a9badf7..60d210d 100644
--- a/services/device/generic_sensor/fake_platform_sensor_and_provider.cc
+++ b/services/device/generic_sensor/fake_platform_sensor_and_provider.cc
@@ -6,9 +6,9 @@
 
 #include <utility>
 
+using ::testing::_;
 using ::testing::Invoke;
 using ::testing::Return;
-using ::testing::_;
 
 namespace device {
 
@@ -60,10 +60,10 @@
 
 FakePlatformSensorProvider::FakePlatformSensorProvider() {
   ON_CALL(*this, DoCreateSensorInternal(_, _, _))
-      .WillByDefault(Invoke(
-          [](mojom::SensorType, scoped_refptr<PlatformSensor> sensor,
-             const PlatformSensorProvider::CreateSensorCallback& callback) {
-            callback.Run(std::move(sensor));
+      .WillByDefault(
+          Invoke([](mojom::SensorType, scoped_refptr<PlatformSensor> sensor,
+                    PlatformSensorProvider::CreateSensorCallback callback) {
+            std::move(callback).Run(std::move(sensor));
           }));
 }
 
@@ -79,12 +79,12 @@
 void FakePlatformSensorProvider::CreateSensorInternal(
     mojom::SensorType type,
     SensorReadingSharedBuffer* reading_buffer,
-    const CreateSensorCallback& callback) {
+    CreateSensorCallback callback) {
   DCHECK(type >= mojom::SensorType::kMinValue &&
          type <= mojom::SensorType::kMaxValue);
   auto sensor =
       base::MakeRefCounted<FakePlatformSensor>(type, reading_buffer, this);
-  DoCreateSensorInternal(type, std::move(sensor), callback);
+  DoCreateSensorInternal(type, std::move(sensor), std::move(callback));
 }
 
 MockPlatformSensorClient::MockPlatformSensorClient() {
diff --git a/services/device/generic_sensor/fake_platform_sensor_and_provider.h b/services/device/generic_sensor/fake_platform_sensor_and_provider.h
index eeaac4f..c9e7aba1 100644
--- a/services/device/generic_sensor/fake_platform_sensor_and_provider.h
+++ b/services/device/generic_sensor/fake_platform_sensor_and_provider.h
@@ -55,14 +55,14 @@
   MOCK_METHOD3(DoCreateSensorInternal,
                void(mojom::SensorType,
                     scoped_refptr<PlatformSensor>,
-                    const CreateSensorCallback&));
+                    CreateSensorCallback));
 
   SensorReadingSharedBuffer* GetSensorReadingBuffer(mojom::SensorType type);
 
  private:
   void CreateSensorInternal(mojom::SensorType type,
                             SensorReadingSharedBuffer* reading_buffer,
-                            const CreateSensorCallback& callback) override;
+                            CreateSensorCallback callback) override;
 
   DISALLOW_COPY_AND_ASSIGN(FakePlatformSensorProvider);
 };
diff --git a/services/device/generic_sensor/linux/sensor_data_linux.cc b/services/device/generic_sensor/linux/sensor_data_linux.cc
index b541b66..af15f85d 100644
--- a/services/device/generic_sensor/linux/sensor_data_linux.cc
+++ b/services/device/generic_sensor/linux/sensor_data_linux.cc
@@ -31,7 +31,7 @@
   data->sensor_file_names.push_back(std::move(file_names));
   data->sensor_frequency_file_name = "in_intensity_sampling_frequency";
   data->sensor_scale_name = "in_intensity_scale";
-  data->apply_scaling_func = base::Bind(
+  data->apply_scaling_func = base::BindRepeating(
       [](double scaling_value, double offset, SensorReading& reading) {
         reading.als.value = scaling_value * (reading.als.value + offset);
       });
@@ -79,7 +79,7 @@
 #if defined(OS_CHROMEOS)
   data->sensor_scale_name = "in_accel_base_scale";
   data->sensor_frequency_file_name = "in_accel_base_sampling_frequency";
-  data->apply_scaling_func = base::Bind(
+  data->apply_scaling_func = base::BindRepeating(
       [](double scaling_value, double offset, SensorReading& reading) {
         double scaling = base::kMeanGravityDouble / scaling_value;
         reading.accel.x = scaling * (reading.accel.x + offset);
@@ -90,7 +90,7 @@
   data->sensor_scale_name = "in_accel_scale";
   data->sensor_offset_file_name = "in_accel_offset";
   data->sensor_frequency_file_name = "in_accel_sampling_frequency";
-  data->apply_scaling_func = base::Bind(
+  data->apply_scaling_func = base::BindRepeating(
       [](double scaling_value, double offset, SensorReading& reading) {
         // Adapt Linux reading values to generic sensor api specs.
         reading.accel.x = -scaling_value * (reading.accel.x + offset);
@@ -115,19 +115,20 @@
 #if defined(OS_CHROMEOS)
   data->sensor_scale_name = "in_anglvel_base_scale";
   data->sensor_frequency_file_name = "in_anglvel_base_frequency";
-  data->apply_scaling_func = base::Bind([](double scaling_value, double offset,
-                                           SensorReading& reading) {
-    double scaling = gfx::DegToRad(base::kMeanGravityDouble) / scaling_value;
-    // Adapt CrOS reading values to generic sensor api specs.
-    reading.gyro.x = -scaling * (reading.gyro.x + offset);
-    reading.gyro.y = -scaling * (reading.gyro.y + offset);
-    reading.gyro.z = -scaling * (reading.gyro.z + offset);
-  });
+  data->apply_scaling_func = base::BindRepeating(
+      [](double scaling_value, double offset, SensorReading& reading) {
+        double scaling =
+            gfx::DegToRad(base::kMeanGravityDouble) / scaling_value;
+        // Adapt CrOS reading values to generic sensor api specs.
+        reading.gyro.x = -scaling * (reading.gyro.x + offset);
+        reading.gyro.y = -scaling * (reading.gyro.y + offset);
+        reading.gyro.z = -scaling * (reading.gyro.z + offset);
+      });
 #else
   data->sensor_scale_name = "in_anglvel_scale";
   data->sensor_offset_file_name = "in_anglvel_offset";
   data->sensor_frequency_file_name = "in_anglvel_sampling_frequency";
-  data->apply_scaling_func = base::Bind(
+  data->apply_scaling_func = base::BindRepeating(
       [](double scaling_value, double offset, SensorReading& reading) {
         reading.gyro.x = scaling_value * (reading.gyro.x + offset);
         reading.gyro.y = scaling_value * (reading.gyro.y + offset);
@@ -151,7 +152,7 @@
   data->sensor_scale_name = "in_magn_scale";
   data->sensor_offset_file_name = "in_magn_offset";
   data->sensor_frequency_file_name = "in_magn_sampling_frequency";
-  data->apply_scaling_func = base::Bind(
+  data->apply_scaling_func = base::BindRepeating(
       [](double scaling_value, double offset, SensorReading& reading) {
         double scaling = scaling_value * kMicroteslaInGauss;
         reading.magn.x = scaling * (reading.magn.x + offset);
diff --git a/services/device/generic_sensor/linux/sensor_data_linux.h b/services/device/generic_sensor/linux/sensor_data_linux.h
index 93d9984a..8a03fc2d 100644
--- a/services/device/generic_sensor/linux/sensor_data_linux.h
+++ b/services/device/generic_sensor/linux/sensor_data_linux.h
@@ -19,7 +19,7 @@
 // identify what type of sensor that is and creates a SensorInfoLinux structure
 // that holds all the necessary information to create a PlatformSensorLinux.
 struct SensorPathsLinux {
-  using ReaderFunctor = base::Callback<
+  using ReaderFunctor = base::RepeatingCallback<
       void(double scaling, double offset, SensorReading& reading)>;
 
   SensorPathsLinux();
diff --git a/services/device/generic_sensor/platform_sensor_and_provider_unittest.cc b/services/device/generic_sensor/platform_sensor_and_provider_unittest.cc
index 9032e1f..5218e2d 100644
--- a/services/device/generic_sensor/platform_sensor_and_provider_unittest.cc
+++ b/services/device/generic_sensor/platform_sensor_and_provider_unittest.cc
@@ -35,35 +35,34 @@
   EXPECT_CALL(*provider_, FreeResources()).Times(2);
   provider_->CreateSensor(
       mojom::SensorType::AMBIENT_LIGHT,
-      base::Bind([](scoped_refptr<PlatformSensor> s) { EXPECT_TRUE(s); }));
+      base::BindOnce([](scoped_refptr<PlatformSensor> s) { EXPECT_TRUE(s); }));
   // Failure.
   EXPECT_CALL(*provider_, DoCreateSensorInternal(_, _, _))
-      .WillOnce(Invoke(
-          [](mojom::SensorType, scoped_refptr<PlatformSensor>,
-             const PlatformSensorProvider::CreateSensorCallback& callback) {
-            callback.Run(nullptr);
+      .WillOnce(
+          Invoke([](mojom::SensorType, scoped_refptr<PlatformSensor>,
+                    PlatformSensorProvider::CreateSensorCallback callback) {
+            std::move(callback).Run(nullptr);
           }));
 
   provider_->CreateSensor(
       mojom::SensorType::AMBIENT_LIGHT,
-      base::Bind([](scoped_refptr<PlatformSensor> s) { EXPECT_FALSE(s); }));
+      base::BindOnce([](scoped_refptr<PlatformSensor> s) { EXPECT_FALSE(s); }));
 }
 
 TEST_F(PlatformSensorProviderTest, ResourcesAreNotFreedOnPendingRequest) {
   EXPECT_CALL(*provider_, FreeResources()).Times(0);
   // Suspend.
   EXPECT_CALL(*provider_, DoCreateSensorInternal(_, _, _))
-      .WillOnce(
-          Invoke([](mojom::SensorType, scoped_refptr<PlatformSensor>,
-                    const PlatformSensorProvider::CreateSensorCallback&) {}));
+      .WillOnce(Invoke([](mojom::SensorType, scoped_refptr<PlatformSensor>,
+                          PlatformSensorProvider::CreateSensorCallback) {}));
 
   provider_->CreateSensor(
       mojom::SensorType::AMBIENT_LIGHT,
-      base::Bind([](scoped_refptr<PlatformSensor> s) { NOTREACHED(); }));
+      base::BindOnce([](scoped_refptr<PlatformSensor> s) { NOTREACHED(); }));
 
   provider_->CreateSensor(
       mojom::SensorType::AMBIENT_LIGHT,
-      base::Bind([](scoped_refptr<PlatformSensor> s) { NOTREACHED(); }));
+      base::BindOnce([](scoped_refptr<PlatformSensor> s) { NOTREACHED(); }));
 }
 
 // This test verifies that the shared buffer's default values are 0.
@@ -83,7 +82,7 @@
 TEST_F(PlatformSensorProviderTest, SharedBufferCleared) {
   provider_->CreateSensor(
       mojom::SensorType::AMBIENT_LIGHT,
-      base::Bind([](scoped_refptr<PlatformSensor> sensor) {
+      base::BindOnce([](scoped_refptr<PlatformSensor> sensor) {
         auto client =
             std::make_unique<NiceMock<MockPlatformSensorClient>>(sensor);
         auto config = PlatformSensorConfiguration(10);
diff --git a/services/device/generic_sensor/platform_sensor_and_provider_unittest_win.cc b/services/device/generic_sensor/platform_sensor_and_provider_unittest_win.cc
index 957b0779..459fd42 100644
--- a/services/device/generic_sensor/platform_sensor_and_provider_unittest_win.cc
+++ b/services/device/generic_sensor/platform_sensor_and_provider_unittest_win.cc
@@ -212,8 +212,8 @@
   scoped_refptr<PlatformSensor> CreateSensor(mojom::SensorType type) {
     run_loop_ = std::make_unique<base::RunLoop>();
     provider_->CreateSensor(
-        type, base::Bind(&PlatformSensorAndProviderTestWin::SensorCreated,
-                         base::Unretained(this)));
+        type, base::BindOnce(&PlatformSensorAndProviderTestWin::SensorCreated,
+                             base::Unretained(this)));
     run_loop_->Run();
     scoped_refptr<PlatformSensor> sensor;
     sensor.swap(platform_sensor_);
diff --git a/services/device/generic_sensor/platform_sensor_fusion.cc b/services/device/generic_sensor/platform_sensor_fusion.cc
index 23c6e3e..56b337bd 100644
--- a/services/device/generic_sensor/platform_sensor_fusion.cc
+++ b/services/device/generic_sensor/platform_sensor_fusion.cc
@@ -19,7 +19,7 @@
   static void CreateSensorFusion(
       SensorReadingSharedBuffer* reading_buffer,
       std::unique_ptr<PlatformSensorFusionAlgorithm> fusion_algorithm,
-      const PlatformSensorProviderBase::CreateSensorCallback& callback,
+      PlatformSensorProviderBase::CreateSensorCallback callback,
       PlatformSensorProvider* provider) {
     scoped_refptr<Factory> factory(new Factory(reading_buffer,
                                                std::move(fusion_algorithm),
@@ -32,7 +32,7 @@
 
   Factory(SensorReadingSharedBuffer* reading_buffer,
           std::unique_ptr<PlatformSensorFusionAlgorithm> fusion_algorithm,
-          const PlatformSensorProviderBase::CreateSensorCallback& callback,
+          PlatformSensorProviderBase::CreateSensorCallback callback,
           PlatformSensorProvider* provider)
       : fusion_algorithm_(std::move(fusion_algorithm)),
         result_callback_(std::move(callback)),
@@ -56,7 +56,7 @@
         SensorCreated(std::move(sensor));
       } else {
         provider_->CreateSensor(type,
-                                base::Bind(&Factory::SensorCreated, this));
+                                base::BindOnce(&Factory::SensorCreated, this));
       }
     }
   }
@@ -95,9 +95,9 @@
     SensorReadingSharedBuffer* reading_buffer,
     PlatformSensorProvider* provider,
     std::unique_ptr<PlatformSensorFusionAlgorithm> fusion_algorithm,
-    const PlatformSensorProviderBase::CreateSensorCallback& callback) {
+    PlatformSensorProviderBase::CreateSensorCallback callback) {
   Factory::CreateSensorFusion(reading_buffer, std::move(fusion_algorithm),
-                              callback, provider);
+                              std::move(callback), provider);
 }
 
 PlatformSensorFusion::PlatformSensorFusion(
diff --git a/services/device/generic_sensor/platform_sensor_fusion.h b/services/device/generic_sensor/platform_sensor_fusion.h
index d25a5ab..902fbc4 100644
--- a/services/device/generic_sensor/platform_sensor_fusion.h
+++ b/services/device/generic_sensor/platform_sensor_fusion.h
@@ -41,7 +41,7 @@
       SensorReadingSharedBuffer* reading_buffer,
       PlatformSensorProvider* provider,
       std::unique_ptr<PlatformSensorFusionAlgorithm> fusion_algorithm,
-      const PlatformSensorProviderBase::CreateSensorCallback& callback);
+      PlatformSensorProviderBase::CreateSensorCallback callback);
 
   // PlatformSensor:
   mojom::ReportingMode GetReportingMode() override;
diff --git a/services/device/generic_sensor/platform_sensor_fusion_unittest.cc b/services/device/generic_sensor/platform_sensor_fusion_unittest.cc
index 63e92b28..b3bd493 100644
--- a/services/device/generic_sensor/platform_sensor_fusion_unittest.cc
+++ b/services/device/generic_sensor/platform_sensor_fusion_unittest.cc
@@ -49,18 +49,20 @@
   }
 
   void CreateAccelerometer() {
-    auto callback = base::Bind(&PlatformSensorFusionTest::AccelerometerCallback,
-                               base::Unretained(this));
-    provider_->CreateSensor(SensorType::ACCELEROMETER, callback);
+    auto callback =
+        base::BindOnce(&PlatformSensorFusionTest::AccelerometerCallback,
+                       base::Unretained(this));
+    provider_->CreateSensor(SensorType::ACCELEROMETER, std::move(callback));
     EXPECT_TRUE(accelerometer_callback_called_);
     EXPECT_TRUE(accelerometer_);
     EXPECT_EQ(SensorType::ACCELEROMETER, accelerometer_->GetType());
   }
 
   void CreateMagnetometer() {
-    auto callback = base::Bind(&PlatformSensorFusionTest::MagnetometerCallback,
-                               base::Unretained(this));
-    provider_->CreateSensor(SensorType::MAGNETOMETER, callback);
+    auto callback =
+        base::BindOnce(&PlatformSensorFusionTest::MagnetometerCallback,
+                       base::Unretained(this));
+    provider_->CreateSensor(SensorType::MAGNETOMETER, std::move(callback));
     EXPECT_TRUE(magnetometer_callback_called_);
     EXPECT_TRUE(magnetometer_);
     EXPECT_EQ(SensorType::MAGNETOMETER, magnetometer_->GetType());
@@ -81,12 +83,12 @@
   void CreateFusionSensor(
       std::unique_ptr<PlatformSensorFusionAlgorithm> fusion_algorithm) {
     auto callback =
-        base::Bind(&PlatformSensorFusionTest::PlatformSensorFusionCallback,
-                   base::Unretained(this));
+        base::BindOnce(&PlatformSensorFusionTest::PlatformSensorFusionCallback,
+                       base::Unretained(this));
     SensorType type = fusion_algorithm->fused_type();
     PlatformSensorFusion::Create(provider_->GetSensorReadingBuffer(type),
                                  provider_.get(), std::move(fusion_algorithm),
-                                 callback);
+                                 std::move(callback));
     EXPECT_TRUE(platform_sensor_fusion_callback_called_);
   }
 
@@ -231,10 +233,10 @@
 TEST_F(PlatformSensorFusionTest, SourceSensorIsNotAvailable) {
   // Accelerometer is not available.
   ON_CALL(*provider_, DoCreateSensorInternal(SensorType::ACCELEROMETER, _, _))
-      .WillByDefault(Invoke(
-          [](mojom::SensorType, scoped_refptr<PlatformSensor>,
-             const FakePlatformSensorProvider::CreateSensorCallback& callback) {
-            callback.Run(nullptr);
+      .WillByDefault(
+          Invoke([](mojom::SensorType, scoped_refptr<PlatformSensor>,
+                    FakePlatformSensorProvider::CreateSensorCallback callback) {
+            std::move(callback).Run(nullptr);
           }));
 
   CreateLinearAccelerationFusionSensor();
@@ -272,10 +274,10 @@
 TEST_F(PlatformSensorFusionTest, BothSourceSensorsAreNotAvailable) {
   // Failure.
   ON_CALL(*provider_, DoCreateSensorInternal(_, _, _))
-      .WillByDefault(Invoke(
-          [](mojom::SensorType, scoped_refptr<PlatformSensor>,
-             const FakePlatformSensorProvider::CreateSensorCallback& callback) {
-            callback.Run(nullptr);
+      .WillByDefault(
+          Invoke([](mojom::SensorType, scoped_refptr<PlatformSensor>,
+                    FakePlatformSensorProvider::CreateSensorCallback callback) {
+            std::move(callback).Run(nullptr);
           }));
 
   CreateAbsoluteOrientationEulerAnglesFusionSensor();
@@ -303,10 +305,10 @@
 
   // Magnetometer is not available.
   ON_CALL(*provider_, DoCreateSensorInternal(SensorType::MAGNETOMETER, _, _))
-      .WillByDefault(Invoke(
-          [](mojom::SensorType, scoped_refptr<PlatformSensor>,
-             const FakePlatformSensorProvider::CreateSensorCallback& callback) {
-            callback.Run(nullptr);
+      .WillByDefault(
+          Invoke([](mojom::SensorType, scoped_refptr<PlatformSensor>,
+                    FakePlatformSensorProvider::CreateSensorCallback callback) {
+            std::move(callback).Run(nullptr);
           }));
 
   CreateAbsoluteOrientationEulerAnglesFusionSensor();
@@ -318,10 +320,10 @@
   EXPECT_FALSE(provider_->GetSensor(SensorType::ACCELEROMETER));
   // Magnetometer is not available.
   ON_CALL(*provider_, DoCreateSensorInternal(SensorType::MAGNETOMETER, _, _))
-      .WillByDefault(Invoke(
-          [](mojom::SensorType, scoped_refptr<PlatformSensor>,
-             const FakePlatformSensorProvider::CreateSensorCallback& callback) {
-            callback.Run(nullptr);
+      .WillByDefault(
+          Invoke([](mojom::SensorType, scoped_refptr<PlatformSensor>,
+                    FakePlatformSensorProvider::CreateSensorCallback callback) {
+            std::move(callback).Run(nullptr);
           }));
 
   CreateAbsoluteOrientationEulerAnglesFusionSensor();
diff --git a/services/device/generic_sensor/platform_sensor_provider_android.cc b/services/device/generic_sensor/platform_sensor_provider_android.cc
index 2980627c..5966016d 100644
--- a/services/device/generic_sensor/platform_sensor_provider_android.cc
+++ b/services/device/generic_sensor/platform_sensor_provider_android.cc
@@ -38,7 +38,7 @@
 void PlatformSensorProviderAndroid::CreateSensorInternal(
     mojom::SensorType type,
     SensorReadingSharedBuffer* reading_buffer,
-    const CreateSensorCallback& callback) {
+    CreateSensorCallback callback) {
   JNIEnv* env = AttachCurrentThread();
 
   // Some of the sensors may not be available depending on the device and
@@ -46,16 +46,19 @@
   // option.
   switch (type) {
     case mojom::SensorType::LINEAR_ACCELERATION:
-      CreateLinearAccelerationSensor(env, reading_buffer, callback);
+      CreateLinearAccelerationSensor(env, reading_buffer, std::move(callback));
       break;
     case mojom::SensorType::ABSOLUTE_ORIENTATION_EULER_ANGLES:
-      CreateAbsoluteOrientationEulerAnglesSensor(env, reading_buffer, callback);
+      CreateAbsoluteOrientationEulerAnglesSensor(env, reading_buffer,
+                                                 std::move(callback));
       break;
     case mojom::SensorType::ABSOLUTE_ORIENTATION_QUATERNION:
-      CreateAbsoluteOrientationQuaternionSensor(env, reading_buffer, callback);
+      CreateAbsoluteOrientationQuaternionSensor(env, reading_buffer,
+                                                std::move(callback));
       break;
     case mojom::SensorType::RELATIVE_ORIENTATION_EULER_ANGLES:
-      CreateRelativeOrientationEulerAnglesSensor(env, reading_buffer, callback);
+      CreateRelativeOrientationEulerAnglesSensor(env, reading_buffer,
+                                                 std::move(callback));
       break;
     default: {
       ScopedJavaLocalRef<jobject> sensor =
@@ -63,13 +66,13 @@
                                                    static_cast<jint>(type));
 
       if (!sensor.obj()) {
-        callback.Run(nullptr);
+        std::move(callback).Run(nullptr);
         return;
       }
 
       auto concrete_sensor = base::MakeRefCounted<PlatformSensorAndroid>(
           type, reading_buffer, this, sensor);
-      callback.Run(concrete_sensor);
+      std::move(callback).Run(concrete_sensor);
       break;
     }
   }
@@ -81,7 +84,7 @@
 void PlatformSensorProviderAndroid::CreateLinearAccelerationSensor(
     JNIEnv* env,
     SensorReadingSharedBuffer* reading_buffer,
-    const CreateSensorCallback& callback) {
+    CreateSensorCallback callback) {
   ScopedJavaLocalRef<jobject> sensor = Java_PlatformSensorProvider_createSensor(
       env, j_object_,
       static_cast<jint>(mojom::SensorType::LINEAR_ACCELERATION));
@@ -90,7 +93,7 @@
     auto concrete_sensor = base::MakeRefCounted<PlatformSensorAndroid>(
         mojom::SensorType::LINEAR_ACCELERATION, reading_buffer, this, sensor);
 
-    callback.Run(concrete_sensor);
+    std::move(callback).Run(concrete_sensor);
   } else {
     auto sensor_fusion_algorithm =
         std::make_unique<LinearAccelerationFusionAlgorithmUsingAccelerometer>();
@@ -98,7 +101,8 @@
     // If this PlatformSensorFusion object is successfully initialized,
     // |callback| will be run with a reference to this object.
     PlatformSensorFusion::Create(reading_buffer, this,
-                                 std::move(sensor_fusion_algorithm), callback);
+                                 std::move(sensor_fusion_algorithm),
+                                 std::move(callback));
   }
 }
 
@@ -113,7 +117,7 @@
 void PlatformSensorProviderAndroid::CreateAbsoluteOrientationEulerAnglesSensor(
     JNIEnv* env,
     SensorReadingSharedBuffer* reading_buffer,
-    const CreateSensorCallback& callback) {
+    CreateSensorCallback callback) {
   if (static_cast<bool>(Java_PlatformSensorProvider_hasSensorType(
           env, j_object_,
           static_cast<jint>(
@@ -125,7 +129,8 @@
     // If this PlatformSensorFusion object is successfully initialized,
     // |callback| will be run with a reference to this object.
     PlatformSensorFusion::Create(reading_buffer, this,
-                                 std::move(sensor_fusion_algorithm), callback);
+                                 std::move(sensor_fusion_algorithm),
+                                 std::move(callback));
   } else {
     auto sensor_fusion_algorithm = std::make_unique<
         AbsoluteOrientationEulerAnglesFusionAlgorithmUsingAccelerometerAndMagnetometer>();
@@ -133,7 +138,8 @@
     // If this PlatformSensorFusion object is successfully initialized,
     // |callback| will be run with a reference to this object.
     PlatformSensorFusion::Create(reading_buffer, this,
-                                 std::move(sensor_fusion_algorithm), callback);
+                                 std::move(sensor_fusion_algorithm),
+                                 std::move(callback));
   }
 }
 
@@ -145,7 +151,7 @@
 void PlatformSensorProviderAndroid::CreateAbsoluteOrientationQuaternionSensor(
     JNIEnv* env,
     SensorReadingSharedBuffer* reading_buffer,
-    const CreateSensorCallback& callback) {
+    CreateSensorCallback callback) {
   ScopedJavaLocalRef<jobject> sensor = Java_PlatformSensorProvider_createSensor(
       env, j_object_,
       static_cast<jint>(mojom::SensorType::ABSOLUTE_ORIENTATION_QUATERNION));
@@ -155,7 +161,7 @@
         mojom::SensorType::ABSOLUTE_ORIENTATION_QUATERNION, reading_buffer,
         this, sensor);
 
-    callback.Run(concrete_sensor);
+    std::move(callback).Run(concrete_sensor);
   } else {
     auto sensor_fusion_algorithm =
         std::make_unique<OrientationQuaternionFusionAlgorithmUsingEulerAngles>(
@@ -164,7 +170,8 @@
     // If this PlatformSensorFusion object is successfully initialized,
     // |callback| will be run with a reference to this object.
     PlatformSensorFusion::Create(reading_buffer, this,
-                                 std::move(sensor_fusion_algorithm), callback);
+                                 std::move(sensor_fusion_algorithm),
+                                 std::move(callback));
   }
 }
 
@@ -173,7 +180,7 @@
 void PlatformSensorProviderAndroid::CreateRelativeOrientationEulerAnglesSensor(
     JNIEnv* env,
     SensorReadingSharedBuffer* reading_buffer,
-    const CreateSensorCallback& callback) {
+    CreateSensorCallback callback) {
   if (static_cast<bool>(Java_PlatformSensorProvider_hasSensorType(
           env, j_object_,
           static_cast<jint>(
@@ -185,9 +192,10 @@
     // If this PlatformSensorFusion object is successfully initialized,
     // |callback| will be run with a reference to this object.
     PlatformSensorFusion::Create(reading_buffer, this,
-                                 std::move(sensor_fusion_algorithm), callback);
+                                 std::move(sensor_fusion_algorithm),
+                                 std::move(callback));
   } else {
-    callback.Run(nullptr);
+    std::move(callback).Run(nullptr);
   }
 }
 
diff --git a/services/device/generic_sensor/platform_sensor_provider_android.h b/services/device/generic_sensor/platform_sensor_provider_android.h
index 70aa119..506c4c1 100644
--- a/services/device/generic_sensor/platform_sensor_provider_android.h
+++ b/services/device/generic_sensor/platform_sensor_provider_android.h
@@ -21,24 +21,24 @@
  protected:
   void CreateSensorInternal(mojom::SensorType type,
                             SensorReadingSharedBuffer* reading_buffer,
-                            const CreateSensorCallback& callback) override;
+                            CreateSensorCallback callback) override;
 
  private:
   void CreateLinearAccelerationSensor(JNIEnv* env,
                                       SensorReadingSharedBuffer* reading_buffer,
-                                      const CreateSensorCallback& callback);
+                                      CreateSensorCallback callback);
   void CreateAbsoluteOrientationEulerAnglesSensor(
       JNIEnv* env,
       SensorReadingSharedBuffer* reading_buffer,
-      const CreateSensorCallback& callback);
+      CreateSensorCallback callback);
   void CreateAbsoluteOrientationQuaternionSensor(
       JNIEnv* env,
       SensorReadingSharedBuffer* reading_buffer,
-      const CreateSensorCallback& callback);
+      CreateSensorCallback callback);
   void CreateRelativeOrientationEulerAnglesSensor(
       JNIEnv* env,
       SensorReadingSharedBuffer* reading_buffer,
-      const CreateSensorCallback& callback);
+      CreateSensorCallback callback);
 
   // Java object org.chromium.device.sensors.PlatformSensorProvider
   base::android::ScopedJavaGlobalRef<jobject> j_object_;
diff --git a/services/device/generic_sensor/platform_sensor_provider_base.cc b/services/device/generic_sensor/platform_sensor_provider_base.cc
index 4c08a28..f77f40f 100644
--- a/services/device/generic_sensor/platform_sensor_provider_base.cc
+++ b/services/device/generic_sensor/platform_sensor_provider_base.cc
@@ -27,33 +27,34 @@
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
 }
 
-void PlatformSensorProviderBase::CreateSensor(
-    mojom::SensorType type,
-    const CreateSensorCallback& callback) {
+void PlatformSensorProviderBase::CreateSensor(mojom::SensorType type,
+                                              CreateSensorCallback callback) {
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
 
   if (!CreateSharedBufferIfNeeded()) {
-    callback.Run(nullptr);
+    std::move(callback).Run(nullptr);
     return;
   }
 
   SensorReadingSharedBuffer* reading_buffer =
       GetSensorReadingSharedBufferForType(type);
   if (!reading_buffer) {
-    callback.Run(nullptr);
+    std::move(callback).Run(nullptr);
     return;
   }
 
   auto it = requests_map_.find(type);
   if (it != requests_map_.end()) {
-    it->second.push_back(callback);
+    it->second.push_back(std::move(callback));
   } else {  // This is the first CreateSensor call.
-    requests_map_[type] = CallbackQueue({callback});
+    auto& requests = requests_map_[type];
+    requests.clear();
+    requests.push_back(std::move(callback));
 
     CreateSensorInternal(
         type, reading_buffer,
-        base::Bind(&PlatformSensorProviderBase::NotifySensorCreated,
-                   base::Unretained(this), type));
+        base::BindOnce(&PlatformSensorProviderBase::NotifySensorCreated,
+                       base::Unretained(this), type));
   }
 }
 
@@ -143,15 +144,15 @@
     sensor_map_[type] = sensor.get();
 
   auto it = requests_map_.find(type);
-  CallbackQueue callback_queue = it->second;
-  requests_map_.erase(type);
+  CallbackQueue callback_queue = std::move(it->second);
+  requests_map_.erase(it);
 
   FreeResourcesIfNeeded();
 
   // Inform subscribers about the sensor.
   // |sensor| can be nullptr here.
   for (auto& callback : callback_queue)
-    callback.Run(sensor);
+    std::move(callback).Run(sensor);
 }
 
 std::vector<mojom::SensorType>
diff --git a/services/device/generic_sensor/platform_sensor_provider_base.h b/services/device/generic_sensor/platform_sensor_provider_base.h
index ba7d7c1..c59bc01 100644
--- a/services/device/generic_sensor/platform_sensor_provider_base.h
+++ b/services/device/generic_sensor/platform_sensor_provider_base.h
@@ -18,11 +18,10 @@
 class PlatformSensorProviderBase {
  public:
   using CreateSensorCallback =
-      base::Callback<void(scoped_refptr<PlatformSensor>)>;
+      base::OnceCallback<void(scoped_refptr<PlatformSensor>)>;
 
   // Creates new instance of PlatformSensor.
-  void CreateSensor(mojom::SensorType type,
-                    const CreateSensorCallback& callback);
+  void CreateSensor(mojom::SensorType type, CreateSensorCallback callback);
 
   // Gets previously created instance of PlatformSensor by sensor type |type|.
   scoped_refptr<PlatformSensor> GetSensor(mojom::SensorType type);
@@ -41,7 +40,7 @@
   // Method that must be implemented by platform specific classes.
   virtual void CreateSensorInternal(mojom::SensorType type,
                                     SensorReadingSharedBuffer* reading_buffer,
-                                    const CreateSensorCallback& callback) = 0;
+                                    CreateSensorCallback callback) = 0;
 
   // Implementations might override this method to free resources when there
   // are no sensors left.
diff --git a/services/device/generic_sensor/platform_sensor_provider_linux.cc b/services/device/generic_sensor/platform_sensor_provider_linux.cc
index cd72ab2..2ff9afc8 100644
--- a/services/device/generic_sensor/platform_sensor_provider_linux.cc
+++ b/services/device/generic_sensor/platform_sensor_provider_linux.cc
@@ -58,7 +58,7 @@
 void PlatformSensorProviderLinux::CreateSensorInternal(
     mojom::SensorType type,
     SensorReadingSharedBuffer* reading_buffer,
-    const CreateSensorCallback& callback) {
+    CreateSensorCallback callback) {
   if (!sensor_nodes_enumerated_) {
     if (!sensor_nodes_enumeration_started_) {
       // Unretained() is safe because the deletion of |sensor_device_manager_|
@@ -73,30 +73,30 @@
   }
 
   if (IsFusionSensorType(type)) {
-    CreateFusionSensor(type, reading_buffer, callback);
+    CreateFusionSensor(type, reading_buffer, std::move(callback));
     return;
   }
 
   SensorInfoLinux* sensor_device = GetSensorDevice(type);
   if (!sensor_device) {
-    callback.Run(nullptr);
+    std::move(callback).Run(nullptr);
     return;
   }
 
-  SensorDeviceFound(type, reading_buffer, callback, sensor_device);
+  SensorDeviceFound(type, reading_buffer, std::move(callback), sensor_device);
 }
 
 void PlatformSensorProviderLinux::SensorDeviceFound(
     mojom::SensorType type,
     SensorReadingSharedBuffer* reading_buffer,
-    const PlatformSensorProviderBase::CreateSensorCallback& callback,
+    PlatformSensorProviderBase::CreateSensorCallback callback,
     const SensorInfoLinux* sensor_device) {
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   DCHECK(sensor_device);
 
   scoped_refptr<PlatformSensorLinux> sensor =
       new PlatformSensorLinux(type, reading_buffer, this, sensor_device);
-  callback.Run(sensor);
+  std::move(callback).Run(sensor);
 }
 
 void PlatformSensorProviderLinux::FreeResources() {
@@ -136,8 +136,8 @@
           GetSensorReadingSharedBufferForType(type);
       CreateFusionSensor(
           type, reading_buffer,
-          base::Bind(&PlatformSensorProviderLinux::NotifySensorCreated,
-                     base::Unretained(this), type));
+          base::BindOnce(&PlatformSensorProviderLinux::NotifySensorCreated,
+                         base::Unretained(this), type));
       continue;
     }
 
@@ -196,7 +196,7 @@
 void PlatformSensorProviderLinux::CreateFusionSensor(
     mojom::SensorType type,
     SensorReadingSharedBuffer* reading_buffer,
-    const CreateSensorCallback& callback) {
+    CreateSensorCallback callback) {
   DCHECK(IsFusionSensorType(type));
   std::unique_ptr<PlatformSensorFusionAlgorithm> fusion_algorithm;
   switch (type) {
@@ -232,8 +232,8 @@
   }
 
   DCHECK(fusion_algorithm);
-  PlatformSensorFusion::Create(reading_buffer, this,
-                               std::move(fusion_algorithm), callback);
+  PlatformSensorFusion::Create(
+      reading_buffer, this, std::move(fusion_algorithm), std::move(callback));
 }
 
 }  // namespace device
diff --git a/services/device/generic_sensor/platform_sensor_provider_linux.h b/services/device/generic_sensor/platform_sensor_provider_linux.h
index 9f1b686..4a564385 100644
--- a/services/device/generic_sensor/platform_sensor_provider_linux.h
+++ b/services/device/generic_sensor/platform_sensor_provider_linux.h
@@ -28,7 +28,7 @@
  protected:
   void CreateSensorInternal(mojom::SensorType type,
                             SensorReadingSharedBuffer* reading_buffer,
-                            const CreateSensorCallback& callback) override;
+                            CreateSensorCallback callback) override;
 
   void FreeResources() override;
 
@@ -45,7 +45,7 @@
   void SensorDeviceFound(
       mojom::SensorType type,
       SensorReadingSharedBuffer* reading_buffer,
-      const PlatformSensorProviderBase::CreateSensorCallback& callback,
+      PlatformSensorProviderBase::CreateSensorCallback callback,
       const SensorInfoLinux* sensor_device);
 
   // Returns SensorInfoLinux structure of a requested type.
@@ -73,7 +73,7 @@
 
   void CreateFusionSensor(mojom::SensorType type,
                           SensorReadingSharedBuffer* reading_buffer,
-                          const CreateSensorCallback& callback);
+                          CreateSensorCallback callback);
 
   // Set to true when enumeration is ready.
   bool sensor_nodes_enumerated_;
diff --git a/services/device/generic_sensor/platform_sensor_provider_mac.cc b/services/device/generic_sensor/platform_sensor_provider_mac.cc
index 9954e88..5395a98 100644
--- a/services/device/generic_sensor/platform_sensor_provider_mac.cc
+++ b/services/device/generic_sensor/platform_sensor_provider_mac.cc
@@ -19,18 +19,19 @@
 void PlatformSensorProviderMac::CreateSensorInternal(
     mojom::SensorType type,
     SensorReadingSharedBuffer* reading_buffer,
-    const CreateSensorCallback& callback) {
+    CreateSensorCallback callback) {
   // Create Sensors here.
   switch (type) {
     case mojom::SensorType::AMBIENT_LIGHT: {
       scoped_refptr<PlatformSensor> sensor =
           new PlatformSensorAmbientLightMac(reading_buffer, this);
-      callback.Run(std::move(sensor));
+      std::move(callback).Run(std::move(sensor));
       break;
     }
     case mojom::SensorType::ACCELEROMETER: {
-      callback.Run(base::MakeRefCounted<PlatformSensorAccelerometerMac>(
-          reading_buffer, this));
+      std::move(callback).Run(
+          base::MakeRefCounted<PlatformSensorAccelerometerMac>(reading_buffer,
+                                                               this));
       break;
     }
     case mojom::SensorType::RELATIVE_ORIENTATION_EULER_ANGLES: {
@@ -39,7 +40,8 @@
       // If this PlatformSensorFusion object is successfully initialized,
       // |callback| will be run with a reference to this object.
       PlatformSensorFusion::Create(reading_buffer, this,
-                                   std::move(fusion_algorithm), callback);
+                                   std::move(fusion_algorithm),
+                                   std::move(callback));
       break;
     }
     case mojom::SensorType::RELATIVE_ORIENTATION_QUATERNION: {
@@ -52,11 +54,11 @@
       PlatformSensorFusion::Create(
           reading_buffer, this,
           std::move(orientation_quaternion_fusion_algorithm_using_euler_angles),
-          callback);
+          std::move(callback));
       break;
     }
     default:
-      callback.Run(nullptr);
+      std::move(callback).Run(nullptr);
   }
 }
 
diff --git a/services/device/generic_sensor/platform_sensor_provider_mac.h b/services/device/generic_sensor/platform_sensor_provider_mac.h
index 89520ac..1a7282d 100644
--- a/services/device/generic_sensor/platform_sensor_provider_mac.h
+++ b/services/device/generic_sensor/platform_sensor_provider_mac.h
@@ -17,7 +17,7 @@
  protected:
   void CreateSensorInternal(mojom::SensorType type,
                             SensorReadingSharedBuffer* reading_buffer,
-                            const CreateSensorCallback& callback) override;
+                            CreateSensorCallback callback) override;
 
  private:
   DISALLOW_COPY_AND_ASSIGN(PlatformSensorProviderMac);
diff --git a/services/device/generic_sensor/platform_sensor_provider_unittest_android.cc b/services/device/generic_sensor/platform_sensor_provider_unittest_android.cc
index 7e81e15..6f14fa1 100644
--- a/services/device/generic_sensor/platform_sensor_provider_unittest_android.cc
+++ b/services/device/generic_sensor/platform_sensor_provider_unittest_android.cc
@@ -35,8 +35,8 @@
   provider_->SetSensorManagerToNullForTesting();
   provider_->CreateSensor(
       device::mojom::SensorType::AMBIENT_LIGHT,
-      base::Bind(&PlatformSensorProviderTestAndroid::CreateSensorCallback,
-                 base::Unretained(this)));
+      base::BindOnce(&PlatformSensorProviderTestAndroid::CreateSensorCallback,
+                     base::Unretained(this)));
 }
 
 }  // namespace device
diff --git a/services/device/generic_sensor/platform_sensor_provider_win.cc b/services/device/generic_sensor/platform_sensor_provider_win.cc
index 8440063b..88678f6 100644
--- a/services/device/generic_sensor/platform_sensor_provider_win.cc
+++ b/services/device/generic_sensor/platform_sensor_provider_win.cc
@@ -40,17 +40,18 @@
 void PlatformSensorProviderWin::CreateSensorInternal(
     mojom::SensorType type,
     SensorReadingSharedBuffer* reading_buffer,
-    const CreateSensorCallback& callback) {
+    CreateSensorCallback callback) {
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   if (sensor_manager_) {
-    OnInitSensorManager(type, reading_buffer, callback);
+    OnInitSensorManager(type, reading_buffer, std::move(callback));
   } else {
     com_sta_task_runner_->PostTaskAndReply(
         FROM_HERE,
-        base::Bind(&PlatformSensorProviderWin::InitSensorManager,
-                   base::Unretained(this)),
-        base::Bind(&PlatformSensorProviderWin::OnInitSensorManager,
-                   base::Unretained(this), type, reading_buffer, callback));
+        base::BindOnce(&PlatformSensorProviderWin::InitSensorManager,
+                       base::Unretained(this)),
+        base::BindOnce(&PlatformSensorProviderWin::OnInitSensorManager,
+                       base::Unretained(this), type, reading_buffer,
+                       std::move(callback)));
   }
 }
 
@@ -75,11 +76,11 @@
 void PlatformSensorProviderWin::OnInitSensorManager(
     mojom::SensorType type,
     SensorReadingSharedBuffer* reading_buffer,
-    const CreateSensorCallback& callback) {
+    CreateSensorCallback callback) {
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
 
   if (!sensor_manager_) {
-    callback.Run(nullptr);
+    std::move(callback).Run(nullptr);
     return;
   }
 
@@ -92,7 +93,7 @@
       // |callback| will be run with a reference to this object.
       PlatformSensorFusion::Create(
           reading_buffer, this, std::move(linear_acceleration_fusion_algorithm),
-          callback);
+          std::move(callback));
       break;
     }
 
@@ -100,10 +101,11 @@
     default: {
       base::PostTaskAndReplyWithResult(
           com_sta_task_runner_.get(), FROM_HERE,
-          base::Bind(&PlatformSensorProviderWin::CreateSensorReader,
-                     base::Unretained(this), type),
-          base::Bind(&PlatformSensorProviderWin::SensorReaderCreated,
-                     base::Unretained(this), type, reading_buffer, callback));
+          base::BindOnce(&PlatformSensorProviderWin::CreateSensorReader,
+                         base::Unretained(this), type),
+          base::BindOnce(&PlatformSensorProviderWin::SensorReaderCreated,
+                         base::Unretained(this), type, reading_buffer,
+                         std::move(callback)));
       break;
     }
   }
@@ -112,7 +114,7 @@
 void PlatformSensorProviderWin::SensorReaderCreated(
     mojom::SensorType type,
     SensorReadingSharedBuffer* reading_buffer,
-    const CreateSensorCallback& callback,
+    CreateSensorCallback callback,
     std::unique_ptr<PlatformSensorReaderWinBase> sensor_reader) {
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   if (!sensor_reader) {
@@ -129,7 +131,7 @@
         return;
       }
       default:
-        callback.Run(nullptr);
+        std::move(callback).Run(nullptr);
         return;
     }
   }
@@ -137,7 +139,7 @@
   scoped_refptr<PlatformSensor> sensor =
       new PlatformSensorWin(type, reading_buffer, this, com_sta_task_runner_,
                             std::move(sensor_reader));
-  callback.Run(sensor);
+  std::move(callback).Run(sensor);
 }
 
 std::unique_ptr<PlatformSensorReaderWinBase>
diff --git a/services/device/generic_sensor/platform_sensor_provider_win.h b/services/device/generic_sensor/platform_sensor_provider_win.h
index 95ca3097..d4a1c95 100644
--- a/services/device/generic_sensor/platform_sensor_provider_win.h
+++ b/services/device/generic_sensor/platform_sensor_provider_win.h
@@ -35,19 +35,19 @@
   // PlatformSensorProvider interface implementation.
   void CreateSensorInternal(mojom::SensorType type,
                             SensorReadingSharedBuffer* reading_buffer,
-                            const CreateSensorCallback& callback) override;
+                            CreateSensorCallback callback) override;
 
  private:
   void InitSensorManager();
   void OnInitSensorManager(mojom::SensorType type,
                            SensorReadingSharedBuffer* reading_buffer,
-                           const CreateSensorCallback& callback);
+                           CreateSensorCallback callback);
   std::unique_ptr<PlatformSensorReaderWinBase> CreateSensorReader(
       mojom::SensorType type);
   void SensorReaderCreated(
       mojom::SensorType type,
       SensorReadingSharedBuffer* reading_buffer,
-      const CreateSensorCallback& callback,
+      CreateSensorCallback callback,
       std::unique_ptr<PlatformSensorReaderWinBase> sensor_reader);
 
   scoped_refptr<base::SingleThreadTaskRunner> com_sta_task_runner_;
diff --git a/services/device/generic_sensor/platform_sensor_provider_winrt.cc b/services/device/generic_sensor/platform_sensor_provider_winrt.cc
index 7d38cb4..9ffbc1f 100644
--- a/services/device/generic_sensor/platform_sensor_provider_winrt.cc
+++ b/services/device/generic_sensor/platform_sensor_provider_winrt.cc
@@ -36,7 +36,7 @@
 void PlatformSensorProviderWinrt::CreateSensorInternal(
     mojom::SensorType type,
     SensorReadingSharedBuffer* reading_buffer,
-    const CreateSensorCallback& callback) {
+    CreateSensorCallback callback) {
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
 
   switch (type) {
@@ -48,7 +48,7 @@
       // |callback| will be run with a reference to this object.
       PlatformSensorFusion::Create(
           reading_buffer, this, std::move(linear_acceleration_fusion_algorithm),
-          callback);
+          std::move(callback));
       break;
     }
 
@@ -56,10 +56,11 @@
     default: {
       base::PostTaskAndReplyWithResult(
           com_sta_task_runner_.get(), FROM_HERE,
-          base::Bind(&PlatformSensorProviderWinrt::CreateSensorReader,
-                     base::Unretained(this), type),
-          base::Bind(&PlatformSensorProviderWinrt::SensorReaderCreated,
-                     base::Unretained(this), type, reading_buffer, callback));
+          base::BindOnce(&PlatformSensorProviderWinrt::CreateSensorReader,
+                         base::Unretained(this), type),
+          base::BindOnce(&PlatformSensorProviderWinrt::SensorReaderCreated,
+                         base::Unretained(this), type, reading_buffer,
+                         std::move(callback)));
       break;
     }
   }
@@ -68,7 +69,7 @@
 void PlatformSensorProviderWinrt::SensorReaderCreated(
     mojom::SensorType type,
     SensorReadingSharedBuffer* reading_buffer,
-    const CreateSensorCallback& callback,
+    CreateSensorCallback callback,
     std::unique_ptr<PlatformSensorReaderWinBase> sensor_reader) {
   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
   if (!sensor_reader) {
@@ -85,7 +86,7 @@
         return;
       }
       default:
-        callback.Run(nullptr);
+        std::move(callback).Run(nullptr);
         return;
     }
   }
@@ -93,7 +94,7 @@
       base::MakeRefCounted<PlatformSensorWin>(type, reading_buffer, this,
                                               com_sta_task_runner_,
                                               std::move(sensor_reader));
-  callback.Run(std::move(sensor));
+  std::move(callback).Run(std::move(sensor));
 }
 
 std::unique_ptr<PlatformSensorReaderWinBase>
diff --git a/services/device/generic_sensor/platform_sensor_provider_winrt.h b/services/device/generic_sensor/platform_sensor_provider_winrt.h
index 79512718..78737b4 100644
--- a/services/device/generic_sensor/platform_sensor_provider_winrt.h
+++ b/services/device/generic_sensor/platform_sensor_provider_winrt.h
@@ -37,7 +37,7 @@
   // PlatformSensorProvider interface implementation.
   void CreateSensorInternal(mojom::SensorType type,
                             SensorReadingSharedBuffer* reading_buffer,
-                            const CreateSensorCallback& callback) override;
+                            CreateSensorCallback callback) override;
 
  private:
   std::unique_ptr<PlatformSensorReaderWinBase> CreateSensorReader(
@@ -46,7 +46,7 @@
   void SensorReaderCreated(
       mojom::SensorType type,
       SensorReadingSharedBuffer* reading_buffer,
-      const CreateSensorCallback& callback,
+      CreateSensorCallback callback,
       std::unique_ptr<PlatformSensorReaderWinBase> sensor_reader);
 
   // The Windows.Devices.Sensors WinRT API supports both STA and MTA
@@ -62,4 +62,4 @@
 
 }  // namespace device
 
-#endif  // SERVICES_DEVICE_GENERIC_SENSOR_PLATFORM_SENSOR_PROVIDER_WINRT_H_
\ No newline at end of file
+#endif  // SERVICES_DEVICE_GENERIC_SENSOR_PLATFORM_SENSOR_PROVIDER_WINRT_H_
diff --git a/services/device/generic_sensor/platform_sensor_provider_winrt_unittest.cc b/services/device/generic_sensor/platform_sensor_provider_winrt_unittest.cc
index e5ab0317..228ca68 100644
--- a/services/device/generic_sensor/platform_sensor_provider_winrt_unittest.cc
+++ b/services/device/generic_sensor/platform_sensor_provider_winrt_unittest.cc
@@ -74,7 +74,7 @@
   base::Optional<base::RunLoop> run_loop;
   bool expect_sensor_valid = false;
 
-  base::Callback<void(scoped_refptr<PlatformSensor> sensor)>
+  base::RepeatingCallback<void(scoped_refptr<PlatformSensor> sensor)>
       create_sensor_callback =
           base::BindLambdaForTesting([&](scoped_refptr<PlatformSensor> sensor) {
             if (expect_sensor_valid)
@@ -86,12 +86,13 @@
 
   run_loop.emplace();
   provider->CreateSensor(mojom::SensorType::AMBIENT_LIGHT,
-                         create_sensor_callback);
+                         base::BindOnce(create_sensor_callback));
   run_loop->Run();
 
   expect_sensor_valid = true;
   run_loop.emplace();
-  provider->CreateSensor(mojom::SensorType::GYROSCOPE, create_sensor_callback);
+  provider->CreateSensor(mojom::SensorType::GYROSCOPE,
+                         base::BindOnce(create_sensor_callback));
   run_loop->Run();
 
   // Linear acceleration is a fusion sensor built on top of accelerometer,
@@ -99,7 +100,7 @@
   expect_sensor_valid = true;
   run_loop.emplace();
   provider->CreateSensor(mojom::SensorType::LINEAR_ACCELERATION,
-                         create_sensor_callback);
+                         base::BindOnce(create_sensor_callback));
   run_loop->Run();
 }
 
diff --git a/services/device/generic_sensor/platform_sensor_reader_winrt.cc b/services/device/generic_sensor/platform_sensor_reader_winrt.cc
index 0741f04..185e3fb 100644
--- a/services/device/generic_sensor/platform_sensor_reader_winrt.cc
+++ b/services/device/generic_sensor/platform_sensor_reader_winrt.cc
@@ -105,7 +105,7 @@
     ISensorReadingChangedHandler,
     ISensorReadingChangedEventArgs>::PlatformSensorReaderWinrtBase() {
   get_sensor_factory_callback_ =
-      base::Bind([](ISensorWinrtStatics** sensor_factory) -> HRESULT {
+      base::BindRepeating([](ISensorWinrtStatics** sensor_factory) -> HRESULT {
         return base::win::GetActivationFactory<ISensorWinrtStatics,
                                                runtime_class_id>(
             sensor_factory);
diff --git a/services/device/generic_sensor/platform_sensor_reader_winrt.h b/services/device/generic_sensor/platform_sensor_reader_winrt.h
index 84c0b85..cae0f65 100644
--- a/services/device/generic_sensor/platform_sensor_reader_winrt.h
+++ b/services/device/generic_sensor/platform_sensor_reader_winrt.h
@@ -49,7 +49,7 @@
 class PlatformSensorReaderWinrtBase : public PlatformSensorReaderWinBase {
  public:
   using GetSensorFactoryFunctor =
-      base::Callback<HRESULT(ISensorWinrtStatics**)>;
+      base::RepeatingCallback<HRESULT(ISensorWinrtStatics**)>;
 
   // Sets the client to notify changes about. The consumer should always
   // ensure the lifetime of the client surpasses the lifetime of this class.
@@ -344,4 +344,4 @@
 
 }  // namespace device
 
-#endif  // SERVICES_DEVICE_GENERIC_SENSOR_PLATFORM_SENSOR_READER_WINRT_H_
\ No newline at end of file
+#endif  // SERVICES_DEVICE_GENERIC_SENSOR_PLATFORM_SENSOR_READER_WINRT_H_
diff --git a/services/device/generic_sensor/sensor_provider_impl.cc b/services/device/generic_sensor/sensor_provider_impl.cc
index 0a866e3..298b5314 100644
--- a/services/device/generic_sensor/sensor_provider_impl.cc
+++ b/services/device/generic_sensor/sensor_provider_impl.cc
@@ -67,10 +67,10 @@
 
   scoped_refptr<PlatformSensor> sensor = provider_->GetSensor(type);
   if (!sensor) {
-    PlatformSensorProviderBase::CreateSensorCallback cb = base::Bind(
-        &SensorProviderImpl::SensorCreated, weak_ptr_factory_.GetWeakPtr(),
-        type, base::Passed(&cloned_handle), base::Passed(&callback));
-    provider_->CreateSensor(type, cb);
+    provider_->CreateSensor(
+        type, base::BindOnce(&SensorProviderImpl::SensorCreated,
+                             weak_ptr_factory_.GetWeakPtr(), type,
+                             std::move(cloned_handle), std::move(callback)));
     return;
   }
 
diff --git a/services/device/geolocation/geolocation_impl.cc b/services/device/geolocation/geolocation_impl.cc
index c439c0e..15d1afe 100644
--- a/services/device/geolocation/geolocation_impl.cc
+++ b/services/device/geolocation/geolocation_impl.cc
@@ -98,8 +98,8 @@
 void GeolocationImpl::StartListeningForUpdates() {
   geolocation_subscription_ =
       GeolocationProvider::GetInstance()->AddLocationUpdateCallback(
-          base::Bind(&GeolocationImpl::OnLocationUpdate,
-                     base::Unretained(this)),
+          base::BindRepeating(&GeolocationImpl::OnLocationUpdate,
+                              base::Unretained(this)),
           high_accuracy_);
 }
 
diff --git a/services/device/geolocation/geolocation_provider.h b/services/device/geolocation/geolocation_provider.h
index 04ce5a1..26596a1 100644
--- a/services/device/geolocation/geolocation_provider.h
+++ b/services/device/geolocation/geolocation_provider.h
@@ -32,7 +32,7 @@
  public:
   static GeolocationProvider* GetInstance();
 
-  typedef base::Callback<void(const mojom::Geoposition&)>
+  typedef base::RepeatingCallback<void(const mojom::Geoposition&)>
       LocationUpdateCallback;
   typedef base::CallbackList<void(const mojom::Geoposition&)>::Subscription
       Subscription;
diff --git a/services/device/geolocation/geolocation_provider_impl.cc b/services/device/geolocation/geolocation_provider_impl.cc
index 3e8986a..41f5b82 100644
--- a/services/device/geolocation/geolocation_provider_impl.cc
+++ b/services/device/geolocation/geolocation_provider_impl.cc
@@ -136,9 +136,9 @@
       ignore_location_updates_(false),
       main_task_runner_(base::ThreadTaskRunnerHandle::Get()) {
   DCHECK(main_task_runner_->BelongsToCurrentThread());
-  high_accuracy_callbacks_.set_removal_callback(base::Bind(
+  high_accuracy_callbacks_.set_removal_callback(base::BindRepeating(
       &GeolocationProviderImpl::OnClientsChanged, base::Unretained(this)));
-  low_accuracy_callbacks_.set_removal_callback(base::Bind(
+  low_accuracy_callbacks_.set_removal_callback(base::BindRepeating(
       &GeolocationProviderImpl::OnClientsChanged, base::Unretained(this)));
 }
 
@@ -158,7 +158,7 @@
 
 void GeolocationProviderImpl::OnClientsChanged() {
   DCHECK(main_task_runner_->BelongsToCurrentThread());
-  base::Closure task;
+  base::OnceClosure task;
   if (high_accuracy_callbacks_.empty() && low_accuracy_callbacks_.empty()) {
     DCHECK(IsRunning());
     if (!ignore_location_updates_) {
@@ -166,8 +166,8 @@
       // when the next observer is added we will not provide a stale position.
       position_ = mojom::Geoposition();
     }
-    task = base::Bind(&GeolocationProviderImpl::StopProviders,
-                      base::Unretained(this));
+    task = base::BindOnce(&GeolocationProviderImpl::StopProviders,
+                          base::Unretained(this));
   } else {
     if (!IsRunning()) {
       Start();
@@ -178,11 +178,11 @@
     bool enable_high_accuracy = !high_accuracy_callbacks_.empty();
 
     // Send the current options to the providers as they may have changed.
-    task = base::Bind(&GeolocationProviderImpl::StartProviders,
-                      base::Unretained(this), enable_high_accuracy);
+    task = base::BindOnce(&GeolocationProviderImpl::StartProviders,
+                          base::Unretained(this), enable_high_accuracy);
   }
 
-  task_runner()->PostTask(FROM_HERE, task);
+  task_runner()->PostTask(FROM_HERE, std::move(task));
 }
 
 void GeolocationProviderImpl::StopProviders() {
@@ -228,8 +228,9 @@
   if (arbitrator_)
     return;
 
-  LocationProvider::LocationProviderUpdateCallback callback = base::Bind(
-      &GeolocationProviderImpl::OnLocationUpdate, base::Unretained(this));
+  LocationProvider::LocationProviderUpdateCallback callback =
+      base::BindRepeating(&GeolocationProviderImpl::OnLocationUpdate,
+                          base::Unretained(this));
 
   scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory;
   if (g_pending_url_loader_factory.Get()) {
diff --git a/services/device/geolocation/geolocation_provider_impl.h b/services/device/geolocation/geolocation_provider_impl.h
index 45716d2..baf8925f 100644
--- a/services/device/geolocation/geolocation_provider_impl.h
+++ b/services/device/geolocation/geolocation_provider_impl.h
@@ -37,7 +37,7 @@
 // Callback that returns the embedder's custom location provider. This callback
 // is provided to the Device Service by its embedder.
 using CustomLocationProviderCallback =
-    base::Callback<std::unique_ptr<LocationProvider>()>;
+    base::RepeatingCallback<std::unique_ptr<LocationProvider>()>;
 
 class GeolocationProviderImpl : public GeolocationProvider,
                                 public mojom::GeolocationControl,
diff --git a/services/device/geolocation/geolocation_provider_impl_unittest.cc b/services/device/geolocation/geolocation_provider_impl_unittest.cc
index 454b630..4413f96 100644
--- a/services/device/geolocation/geolocation_provider_impl_unittest.cc
+++ b/services/device/geolocation/geolocation_provider_impl_unittest.cc
@@ -185,7 +185,7 @@
   EXPECT_FALSE(provider()->IsRunning());
   std::unique_ptr<GeolocationProvider::Subscription> subscription =
       provider()->AddLocationUpdateCallback(
-          base::Bind(&DummyFunction, arbitrator()), false);
+          base::BindRepeating(&DummyFunction, arbitrator()), false);
   EXPECT_TRUE(provider()->IsRunning());
   EXPECT_TRUE(ProvidersStarted());
 
@@ -204,8 +204,8 @@
 
   AsyncMockGeolocationObserver first_observer;
   GeolocationProviderImpl::LocationUpdateCallback first_callback =
-      base::Bind(&MockGeolocationObserver::OnLocationUpdate,
-                 base::Unretained(&first_observer));
+      base::BindRepeating(&MockGeolocationObserver::OnLocationUpdate,
+                          base::Unretained(&first_observer));
   EXPECT_CALL(first_observer, OnLocationUpdate(GeopositionEq(first_position)));
   std::unique_ptr<GeolocationProvider::Subscription> subscription =
       provider()->AddLocationUpdateCallback(first_callback, false);
@@ -226,8 +226,8 @@
   // is sent.
   EXPECT_CALL(second_observer, OnLocationUpdate(testing::_)).Times(0);
   GeolocationProviderImpl::LocationUpdateCallback second_callback =
-      base::Bind(&MockGeolocationObserver::OnLocationUpdate,
-                 base::Unretained(&second_observer));
+      base::BindRepeating(&MockGeolocationObserver::OnLocationUpdate,
+                          base::Unretained(&second_observer));
   std::unique_ptr<GeolocationProvider::Subscription> subscription2 =
       provider()->AddLocationUpdateCallback(second_callback, false);
   base::RunLoop().RunUntilIdle();
@@ -251,8 +251,8 @@
   MockGeolocationObserver mock_observer;
   EXPECT_CALL(mock_observer, OnLocationUpdate(GeopositionEq(position)));
   GeolocationProviderImpl::LocationUpdateCallback callback =
-      base::Bind(&MockGeolocationObserver::OnLocationUpdate,
-                 base::Unretained(&mock_observer));
+      base::BindRepeating(&MockGeolocationObserver::OnLocationUpdate,
+                          base::Unretained(&mock_observer));
   std::unique_ptr<GeolocationProvider::Subscription> subscription =
       provider()->AddLocationUpdateCallback(callback, false);
   subscription.reset();
diff --git a/services/device/geolocation/location_api_adapter_android.h b/services/device/geolocation/location_api_adapter_android.h
index 545ccb5..25f218c7 100644
--- a/services/device/geolocation/location_api_adapter_android.h
+++ b/services/device/geolocation/location_api_adapter_android.h
@@ -32,7 +32,8 @@
 // one call to Start().
 class LocationApiAdapterAndroid {
  public:
-  using OnGeopositionCB = base::Callback<void(const mojom::Geoposition&)>;
+  using OnGeopositionCB =
+      base::RepeatingCallback<void(const mojom::Geoposition&)>;
 
   // Starts the underlying location provider.
   // Called on |task_runner_|.
diff --git a/services/device/geolocation/location_arbitrator.cc b/services/device/geolocation/location_arbitrator.cc
index 2efd756..d399293 100644
--- a/services/device/geolocation/location_arbitrator.cc
+++ b/services/device/geolocation/location_arbitrator.cc
@@ -91,8 +91,8 @@
     std::unique_ptr<LocationProvider> provider) {
   if (!provider)
     return;
-  provider->SetUpdateCallback(base::Bind(&LocationArbitrator::OnLocationUpdate,
-                                         base::Unretained(this)));
+  provider->SetUpdateCallback(base::BindRepeating(
+      &LocationArbitrator::OnLocationUpdate, base::Unretained(this)));
   if (is_permission_granted_)
     provider->OnPermissionGranted();
   providers_.push_back(std::move(provider));
diff --git a/services/device/geolocation/location_provider_android.cc b/services/device/geolocation/location_provider_android.cc
index afa485cc..9d198e1 100644
--- a/services/device/geolocation/location_provider_android.cc
+++ b/services/device/geolocation/location_provider_android.cc
@@ -37,8 +37,8 @@
 void LocationProviderAndroid::StartProvider(bool high_accuracy) {
   DCHECK(thread_checker_.CalledOnValidThread());
   LocationApiAdapterAndroid::GetInstance()->Start(
-      base::Bind(&LocationProviderAndroid::NotifyNewGeoposition,
-                 weak_ptr_factory_.GetWeakPtr()),
+      base::BindRepeating(&LocationProviderAndroid::NotifyNewGeoposition,
+                          weak_ptr_factory_.GetWeakPtr()),
       high_accuracy);
 }
 
diff --git a/services/device/geolocation/network_location_provider.cc b/services/device/geolocation/network_location_provider.cc
index 6d1656c..331c9144 100644
--- a/services/device/geolocation/network_location_provider.cc
+++ b/services/device/geolocation/network_location_provider.cc
@@ -38,8 +38,8 @@
     PositionCache* position_cache)
     : wifi_data_provider_manager_(nullptr),
       wifi_data_update_callback_(
-          base::Bind(&NetworkLocationProvider::OnWifiDataUpdate,
-                     base::Unretained(this))),
+          base::BindRepeating(&NetworkLocationProvider::OnWifiDataUpdate,
+                              base::Unretained(this))),
       is_wifi_data_complete_(false),
       position_cache_(position_cache),
       is_permission_granted_(false),
@@ -47,8 +47,8 @@
       request_(new NetworkLocationRequest(
           std::move(url_loader_factory),
           api_key,
-          base::Bind(&NetworkLocationProvider::OnLocationResponse,
-                     base::Unretained(this)))) {
+          base::BindRepeating(&NetworkLocationProvider::OnLocationResponse,
+                              base::Unretained(this)))) {
   DCHECK(position_cache_);
 }
 
diff --git a/services/device/geolocation/public_ip_address_geolocation_provider.cc b/services/device/geolocation/public_ip_address_geolocation_provider.cc
index 84fd0f9..b7b66a20 100644
--- a/services/device/geolocation/public_ip_address_geolocation_provider.cc
+++ b/services/device/geolocation/public_ip_address_geolocation_provider.cc
@@ -40,7 +40,7 @@
       std::make_unique<PublicIpAddressGeolocator>(
           static_cast<net::PartialNetworkTrafficAnnotationTag>(tag),
           public_ip_address_location_notifier_.get(),
-          base::Bind(
+          base::BindRepeating(
               &mojo::UniqueReceiverSet<mojom::Geolocation>::ReportBadMessage,
               base::Unretained(&geolocation_receiver_set_))),
       std::move(receiver));
diff --git a/services/device/geolocation/public_ip_address_geolocator.h b/services/device/geolocation/public_ip_address_geolocator.h
index ab74b888..3bdc13dd 100644
--- a/services/device/geolocation/public_ip_address_geolocator.h
+++ b/services/device/geolocation/public_ip_address_geolocator.h
@@ -23,7 +23,8 @@
 // geolocation.
 class PublicIpAddressGeolocator : public mojom::Geolocation {
  public:
-  using BadMessageCallback = base::Callback<void(const std::string& message)>;
+  using BadMessageCallback =
+      base::RepeatingCallback<void(const std::string& message)>;
 
   // Creates a PublicIpAddressGeolocatorsubscribed to the specified |notifier|.
   // This object will unbind and destroy itself if |notifier| is destroyed.
diff --git a/services/device/geolocation/public_ip_address_geolocator_unittest.cc b/services/device/geolocation/public_ip_address_geolocator_unittest.cc
index 51d412f9..a53cef4 100644
--- a/services/device/geolocation/public_ip_address_geolocator_unittest.cc
+++ b/services/device/geolocation/public_ip_address_geolocator_unittest.cc
@@ -42,14 +42,15 @@
   void SetUp() override {
     // Intercept Mojo bad-message errors.
     mojo::core::SetDefaultProcessErrorCallback(
-        base::Bind(&PublicIpAddressGeolocatorTest::OnMojoBadMessage,
-                   base::Unretained(this)));
+        base::BindRepeating(&PublicIpAddressGeolocatorTest::OnMojoBadMessage,
+                            base::Unretained(this)));
 
     receiver_set_.Add(
         std::make_unique<PublicIpAddressGeolocator>(
             PARTIAL_TRAFFIC_ANNOTATION_FOR_TESTS, notifier_.get(),
-            base::Bind(&PublicIpAddressGeolocatorTest::OnGeolocatorBadMessage,
-                       base::Unretained(this))),
+            base::BindRepeating(
+                &PublicIpAddressGeolocatorTest::OnGeolocatorBadMessage,
+                base::Unretained(this))),
         public_ip_address_geolocator_.BindNewPipeAndPassReceiver());
   }
 
@@ -71,18 +72,18 @@
 
   // Invokes QueryNextPosition on |public_ip_address_geolocator_|, and runs
   // |done_closure| when the response comes back.
-  void QueryNextPosition(base::Closure done_closure) {
+  void QueryNextPosition(base::OnceClosure done_closure) {
     public_ip_address_geolocator_->QueryNextPosition(base::BindOnce(
         &PublicIpAddressGeolocatorTest::OnQueryNextPositionResponse,
-        base::Unretained(this), done_closure));
+        base::Unretained(this), std::move(done_closure)));
   }
 
   // Callback for QueryNextPosition() that records the result in |position_| and
   // then invokes |done_closure|.
-  void OnQueryNextPositionResponse(base::Closure done_closure,
+  void OnQueryNextPositionResponse(base::OnceClosure done_closure,
                                    mojom::GeopositionPtr position) {
     position_ = std::move(position);
-    done_closure.Run();
+    std::move(done_closure).Run();
   }
 
   // Result of the latest completed call to QueryNextPosition.
@@ -133,7 +134,8 @@
           "lat": 10.0,
           "lng": 20.0
         }
-      })", net::HTTP_OK);
+      })",
+                                       net::HTTP_OK);
 
   // Wait for QueryNextPosition to return.
   loop.Run();
@@ -151,8 +153,8 @@
   public_ip_address_geolocator_.set_disconnect_handler(loop.QuitClosure());
 
   // Issue two overlapping calls to QueryNextPosition.
-  QueryNextPosition(base::Closure());
-  QueryNextPosition(base::Closure());
+  QueryNextPosition(base::NullCallback());
+  QueryNextPosition(base::NullCallback());
 
   // This terminates only in case of connection error, which we expect.
   loop.Run();
diff --git a/services/device/geolocation/public_ip_address_location_notifier.cc b/services/device/geolocation/public_ip_address_location_notifier.cc
index 1e25f5b..60dc1ec 100644
--- a/services/device/geolocation/public_ip_address_location_notifier.cc
+++ b/services/device/geolocation/public_ip_address_location_notifier.cc
@@ -78,8 +78,8 @@
   // delay, so that we only react once if multiple network changes occur in a
   // short span of time.
   react_to_network_change_closure_.Reset(
-      base::Bind(&PublicIpAddressLocationNotifier::ReactToNetworkChange,
-                 base::Unretained(this)));
+      base::BindOnce(&PublicIpAddressLocationNotifier::ReactToNetworkChange,
+                     base::Unretained(this)));
   base::SequencedTaskRunnerHandle::Get()->PostDelayedTask(
       FROM_HERE, react_to_network_change_closure_.callback(),
       kNetworkChangeReactionDelay);
diff --git a/services/device/geolocation/public_ip_address_location_notifier.h b/services/device/geolocation/public_ip_address_location_notifier.h
index b0312fb..a51ebd0 100644
--- a/services/device/geolocation/public_ip_address_location_notifier.h
+++ b/services/device/geolocation/public_ip_address_location_notifier.h
@@ -79,7 +79,7 @@
 
   // Cancelable closure to absorb overlapping delayed calls to
   // ReactToNetworkChange.
-  base::CancelableClosure react_to_network_change_closure_;
+  base::CancelableOnceClosure react_to_network_change_closure_;
 
   // Whether we have been notified of a network change since the last network
   // location request was sent.
diff --git a/services/device/geolocation/wifi_data_provider.h b/services/device/geolocation/wifi_data_provider.h
index 38f5f9d6..cc5a645 100644
--- a/services/device/geolocation/wifi_data_provider.h
+++ b/services/device/geolocation/wifi_data_provider.h
@@ -35,7 +35,7 @@
   // obtain.
   virtual bool GetData(WifiData* data) = 0;
 
-  typedef base::Closure WifiDataUpdateCallback;
+  typedef base::RepeatingClosure WifiDataUpdateCallback;
 
   void AddCallback(WifiDataUpdateCallback* callback);
 
diff --git a/services/device/geolocation/wifi_data_provider_manager.h b/services/device/geolocation/wifi_data_provider_manager.h
index b5e5d48..22e8fb0 100644
--- a/services/device/geolocation/wifi_data_provider_manager.h
+++ b/services/device/geolocation/wifi_data_provider_manager.h
@@ -47,7 +47,7 @@
   // Resets the factory function to the default.
   static void ResetFactoryForTesting();
 
-  typedef base::Closure WifiDataUpdateCallback;
+  typedef base::RepeatingClosure WifiDataUpdateCallback;
 
   // Registers a callback, which will be run whenever new data is available.
   // Instantiates the singleton if necessary, and always returns it.
diff --git a/services/device/hid/hid_connection_unittest.cc b/services/device/hid/hid_connection_unittest.cc
index 05c6db2e..f02574a 100644
--- a/services/device/hid/hid_connection_unittest.cc
+++ b/services/device/hid/hid_connection_unittest.cc
@@ -93,8 +93,8 @@
   }
 
   HidService::ConnectCallback GetCallback() {
-    return base::Bind(&TestConnectCallback::SetConnection,
-                      base::Unretained(this));
+    return base::BindRepeating(&TestConnectCallback::SetConnection,
+                               base::Unretained(this));
   }
 
  private:
diff --git a/services/device/hid/hid_service.h b/services/device/hid/hid_service.h
index f5f40e0..209a66d 100644
--- a/services/device/hid/hid_service.h
+++ b/services/device/hid/hid_service.h
@@ -45,7 +45,7 @@
   using GetDevicesCallback =
       base::OnceCallback<void(std::vector<mojom::HidDeviceInfoPtr>)>;
   using ConnectCallback =
-      base::Callback<void(scoped_refptr<HidConnection> connection)>;
+      base::OnceCallback<void(scoped_refptr<HidConnection> connection)>;
 
   static constexpr base::TaskTraits kBlockingTaskTraits = {
       base::ThreadPool(), base::MayBlock(), base::TaskPriority::USER_VISIBLE,
@@ -66,7 +66,7 @@
   // Opens a connection to a device. The callback will be run with null on
   // failure.
   virtual void Connect(const std::string& device_guid,
-                       const ConnectCallback& callback) = 0;
+                       ConnectCallback callback) = 0;
 
  protected:
   friend class HidConnectionTest;
diff --git a/services/device/hid/hid_service_linux.cc b/services/device/hid/hid_service_linux.cc
index 92b57f0..61157bfe 100644
--- a/services/device/hid/hid_service_linux.cc
+++ b/services/device/hid/hid_service_linux.cc
@@ -51,9 +51,9 @@
 
 struct HidServiceLinux::ConnectParams {
   ConnectParams(scoped_refptr<HidDeviceInfo> device_info,
-                const ConnectCallback& callback)
+                ConnectCallback callback)
       : device_info(std::move(device_info)),
-        callback(callback),
+        callback(std::move(callback)),
         task_runner(base::SequencedTaskRunnerHandle::Get()),
         blocking_task_runner(
             base::CreateSequencedTaskRunner(kBlockingTaskTraits)) {}
@@ -211,23 +211,25 @@
 }
 
 void HidServiceLinux::Connect(const std::string& device_guid,
-                              const ConnectCallback& callback) {
+                              ConnectCallback callback) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 
   const auto& map_entry = devices().find(device_guid);
   if (map_entry == devices().end()) {
     base::SequencedTaskRunnerHandle::Get()->PostTask(
-        FROM_HERE, base::BindOnce(callback, nullptr));
+        FROM_HERE, base::BindOnce(std::move(callback), nullptr));
     return;
   }
   scoped_refptr<HidDeviceInfo> device_info = map_entry->second;
 
-  auto params = std::make_unique<ConnectParams>(device_info, callback);
+  auto params =
+      std::make_unique<ConnectParams>(device_info, std::move(callback));
 
 #if defined(OS_CHROMEOS)
   chromeos::PermissionBrokerClient::ErrorCallback error_callback =
       base::BindOnce(&HidServiceLinux::OnPathOpenError,
-                     params->device_info->device_node(), params->callback);
+                     params->device_info->device_node(),
+                     std::move(params->callback));
   chromeos::PermissionBrokerClient::Get()->OpenPath(
       device_info->device_node(),
       base::BindOnce(&HidServiceLinux::OnPathOpenComplete, std::move(params)),
@@ -252,12 +254,12 @@
 
 // static
 void HidServiceLinux::OnPathOpenError(const std::string& device_path,
-                                      const ConnectCallback& callback,
+                                      ConnectCallback callback,
                                       const std::string& error_name,
                                       const std::string& error_message) {
   HID_LOG(EVENT) << "Permission broker failed to open '" << device_path
                  << "': " << error_name << ": " << error_message;
-  callback.Run(nullptr);
+  std::move(callback).Run(nullptr);
 }
 
 #else
@@ -288,7 +290,8 @@
     HID_LOG(EVENT) << "Failed to open '" << params->device_info->device_node()
                    << "': "
                    << base::File::ErrorToString(device_file.error_details());
-    task_runner->PostTask(FROM_HERE, base::BindOnce(params->callback, nullptr));
+    task_runner->PostTask(FROM_HERE,
+                          base::BindOnce(std::move(params->callback), nullptr));
     return;
   }
   params->fd.reset(device_file.TakePlatformFile());
diff --git a/services/device/hid/hid_service_linux.h b/services/device/hid/hid_service_linux.h
index da82d6bf8b..132de1e5 100644
--- a/services/device/hid/hid_service_linux.h
+++ b/services/device/hid/hid_service_linux.h
@@ -24,8 +24,7 @@
   ~HidServiceLinux() override;
 
   // HidService:
-  void Connect(const std::string& device_id,
-               const ConnectCallback& callback) override;
+  void Connect(const std::string& device_id, ConnectCallback callback) override;
   base::WeakPtr<HidService> GetWeakPtr() override;
 
  private:
@@ -40,7 +39,7 @@
   static void OnPathOpenComplete(std::unique_ptr<ConnectParams> params,
                                  base::ScopedFD fd);
   static void OnPathOpenError(const std::string& device_path,
-                              const ConnectCallback& callback,
+                              ConnectCallback callback,
                               const std::string& error_name,
                               const std::string& error_message);
 #else
diff --git a/services/device/hid/hid_service_mac.cc b/services/device/hid/hid_service_mac.cc
index f83c76a3..bb16f5af 100644
--- a/services/device/hid/hid_service_mac.cc
+++ b/services/device/hid/hid_service_mac.cc
@@ -126,13 +126,13 @@
 HidServiceMac::~HidServiceMac() {}
 
 void HidServiceMac::Connect(const std::string& device_guid,
-                            const ConnectCallback& callback) {
+                            ConnectCallback callback) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 
   const auto& map_entry = devices().find(device_guid);
   if (map_entry == devices().end()) {
     base::SequencedTaskRunnerHandle::Get()->PostTask(
-        FROM_HERE, base::BindOnce(callback, nullptr));
+        FROM_HERE, base::BindOnce(std::move(callback), nullptr));
     return;
   }
 
@@ -140,7 +140,7 @@
       FROM_HERE, kBlockingTaskTraits,
       base::BindOnce(&HidServiceMac::OpenOnBlockingThread, map_entry->second),
       base::BindOnce(&HidServiceMac::DeviceOpened, weak_factory_.GetWeakPtr(),
-                     map_entry->second, callback));
+                     map_entry->second, std::move(callback)));
 }
 
 base::WeakPtr<HidService> HidServiceMac::GetWeakPtr() {
@@ -186,13 +186,13 @@
 
 void HidServiceMac::DeviceOpened(
     scoped_refptr<HidDeviceInfo> device_info,
-    const ConnectCallback& callback,
+    ConnectCallback callback,
     base::ScopedCFTypeRef<IOHIDDeviceRef> hid_device) {
   if (hid_device) {
-    callback.Run(base::MakeRefCounted<HidConnectionMac>(
+    std::move(callback).Run(base::MakeRefCounted<HidConnectionMac>(
         std::move(hid_device), std::move(device_info)));
   } else {
-    callback.Run(nullptr);
+    std::move(callback).Run(nullptr);
   }
 }
 
diff --git a/services/device/hid/hid_service_mac.h b/services/device/hid/hid_service_mac.h
index 8d56f8f6..abe4e33 100644
--- a/services/device/hid/hid_service_mac.h
+++ b/services/device/hid/hid_service_mac.h
@@ -26,15 +26,14 @@
   HidServiceMac();
   ~HidServiceMac() override;
 
-  void Connect(const std::string& device_id,
-               const ConnectCallback& connect) override;
+  void Connect(const std::string& device_id, ConnectCallback connect) override;
   base::WeakPtr<HidService> GetWeakPtr() override;
 
  private:
   static base::ScopedCFTypeRef<IOHIDDeviceRef> OpenOnBlockingThread(
       scoped_refptr<HidDeviceInfo> device_info);
   void DeviceOpened(scoped_refptr<HidDeviceInfo> device_info,
-                    const ConnectCallback& callback,
+                    ConnectCallback callback,
                     base::ScopedCFTypeRef<IOHIDDeviceRef> hid_device);
 
   // IOService matching callbacks.
diff --git a/services/device/hid/hid_service_unittest.cc b/services/device/hid/hid_service_unittest.cc
index 6494e966..855ea06 100644
--- a/services/device/hid/hid_service_unittest.cc
+++ b/services/device/hid/hid_service_unittest.cc
@@ -24,12 +24,12 @@
   std::unique_ptr<HidService> service_;
 };
 
-void OnGetDevices(const base::Closure& quit_closure,
+void OnGetDevices(base::OnceClosure quit_closure,
                   std::vector<mojom::HidDeviceInfoPtr> devices) {
   // Since there's no guarantee that any devices are connected at the moment
   // this test doesn't assume anything about the result but it at least verifies
   // that devices can be enumerated without the application crashing.
-  quit_closure.Run();
+  std::move(quit_closure).Run();
 }
 
 }  // namespace
diff --git a/services/device/hid/hid_service_win.cc b/services/device/hid/hid_service_win.cc
index 7caf1b7..ec12d060 100644
--- a/services/device/hid/hid_service_win.cc
+++ b/services/device/hid/hid_service_win.cc
@@ -49,11 +49,12 @@
 HidServiceWin::~HidServiceWin() {}
 
 void HidServiceWin::Connect(const std::string& device_guid,
-                            const ConnectCallback& callback) {
+                            ConnectCallback callback) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   const auto& map_entry = devices().find(device_guid);
   if (map_entry == devices().end()) {
-    task_runner_->PostTask(FROM_HERE, base::BindOnce(callback, nullptr));
+    task_runner_->PostTask(FROM_HERE,
+                           base::BindOnce(std::move(callback), nullptr));
     return;
   }
   scoped_refptr<HidDeviceInfo> device_info = map_entry->second;
@@ -61,13 +62,15 @@
   base::win::ScopedHandle file(OpenDevice(device_info->platform_device_id()));
   if (!file.IsValid()) {
     HID_PLOG(EVENT) << "Failed to open device";
-    task_runner_->PostTask(FROM_HERE, base::BindOnce(callback, nullptr));
+    task_runner_->PostTask(FROM_HERE,
+                           base::BindOnce(std::move(callback), nullptr));
     return;
   }
 
   task_runner_->PostTask(
-      FROM_HERE, base::BindOnce(callback, HidConnectionWin::Create(
-                                              device_info, std::move(file))));
+      FROM_HERE,
+      base::BindOnce(std::move(callback),
+                     HidConnectionWin::Create(device_info, std::move(file))));
 }
 
 base::WeakPtr<HidService> HidServiceWin::GetWeakPtr() {
diff --git a/services/device/hid/hid_service_win.h b/services/device/hid/hid_service_win.h
index a7e67cd..9c11639 100644
--- a/services/device/hid/hid_service_win.h
+++ b/services/device/hid/hid_service_win.h
@@ -10,10 +10,14 @@
 // Must be after windows.h.
 #include <hidclass.h>
 
+// NOTE: <hidsdi.h> must be included beore <hidpi.h>. clang-format will want to
+// reorder them.
+// clang-format off
 extern "C" {
 #include <hidsdi.h>
 #include <hidpi.h>
 }
+// clang-format on
 
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
@@ -34,8 +38,7 @@
   HidServiceWin();
   ~HidServiceWin() override;
 
-  void Connect(const std::string& device_id,
-               const ConnectCallback& callback) override;
+  void Connect(const std::string& device_id, ConnectCallback callback) override;
   base::WeakPtr<HidService> GetWeakPtr() override;
 
  private:
diff --git a/services/device/hid/input_service_linux.cc b/services/device/hid/input_service_linux.cc
index ed6c68e..508c081 100644
--- a/services/device/hid/input_service_linux.cc
+++ b/services/device/hid/input_service_linux.cc
@@ -103,8 +103,8 @@
 InputServiceLinuxImpl::InputServiceLinuxImpl() : observer_(this) {
   DeviceMonitorLinux* monitor = DeviceMonitorLinux::GetInstance();
   observer_.Add(monitor);
-  monitor->Enumerate(base::Bind(&InputServiceLinuxImpl::OnDeviceAdded,
-                                base::Unretained(this)));
+  monitor->Enumerate(base::BindRepeating(&InputServiceLinuxImpl::OnDeviceAdded,
+                                         base::Unretained(this)));
 }
 
 InputServiceLinuxImpl::~InputServiceLinuxImpl() {
diff --git a/services/device/hid/mock_hid_service.cc b/services/device/hid/mock_hid_service.cc
index c0f0939c..364fc82 100644
--- a/services/device/hid/mock_hid_service.cc
+++ b/services/device/hid/mock_hid_service.cc
@@ -32,10 +32,10 @@
 }
 
 void MockHidService::Connect(const std::string& device_id,
-                             const ConnectCallback& callback) {
+                             ConnectCallback callback) {
   const auto& map_entry = devices().find(device_id);
   if (map_entry == devices().end()) {
-    callback.Run(nullptr);
+    std::move(callback).Run(nullptr);
     return;
   }
 
@@ -48,7 +48,7 @@
       base::MakeRefCounted<base::RefCountedBytes>(data, sizeof(data) - 1);
   connection->MockInputReport(std::move(buffer));
 
-  callback.Run(connection);
+  std::move(callback).Run(connection);
 }
 
 const std::map<std::string, scoped_refptr<HidDeviceInfo>>&
diff --git a/services/device/hid/mock_hid_service.h b/services/device/hid/mock_hid_service.h
index 99f0eab..1f35cfb 100644
--- a/services/device/hid/mock_hid_service.h
+++ b/services/device/hid/mock_hid_service.h
@@ -20,8 +20,7 @@
   void FirstEnumerationComplete();
   const std::map<std::string, scoped_refptr<HidDeviceInfo>>& devices() const;
 
-  void Connect(const std::string& device_id,
-               const ConnectCallback& callback) override;
+  void Connect(const std::string& device_id, ConnectCallback callback) override;
 
  private:
   base::WeakPtr<HidService> GetWeakPtr() override;
diff --git a/services/device/media_transfer_protocol/media_transfer_protocol_daemon_client.cc b/services/device/media_transfer_protocol/media_transfer_protocol_daemon_client.cc
index 0d006a6d..7c6f76a 100644
--- a/services/device/media_transfer_protocol/media_transfer_protocol_daemon_client.cc
+++ b/services/device/media_transfer_protocol/media_transfer_protocol_daemon_client.cc
@@ -13,8 +13,8 @@
 #include "dbus/message.h"
 #include "dbus/object_path.h"
 #include "dbus/object_proxy.h"
-#include "services/device/media_transfer_protocol/mtp_storage_info.pb.h"
 #include "services/device/media_transfer_protocol/mtp_file_entry.pb.h"
+#include "services/device/media_transfer_protocol/mtp_storage_info.pb.h"
 #include "third_party/cros_system_api/dbus/service_constants.h"
 
 namespace device {
@@ -24,13 +24,9 @@
 const char kInvalidResponseMsg[] = "Invalid Response: ";
 uint32_t kMaxChunkSize = 1024 * 1024;  // D-Bus has message size limits.
 
-mojom::MtpFileEntry GetMojoMtpFileEntryFromProtobuf(
-    const MtpFileEntry& entry) {
+mojom::MtpFileEntry GetMojoMtpFileEntryFromProtobuf(const MtpFileEntry& entry) {
   return mojom::MtpFileEntry(
-      entry.item_id(),
-      entry.parent_id(),
-      entry.file_name(),
-      entry.file_size(),
+      entry.item_id(), entry.parent_id(), entry.file_name(), entry.file_size(),
       entry.modification_time(),
       static_cast<mojom::MtpFileEntry::FileType>(entry.file_type()));
 }
@@ -38,20 +34,12 @@
 mojom::MtpStorageInfo GetMojoMtpStorageInfoFromProtobuf(
     const MtpStorageInfo& protobuf) {
   return mojom::MtpStorageInfo(
-        protobuf.storage_name(),
-        protobuf.vendor(),
-        protobuf.vendor_id(),
-        protobuf.product(),
-        protobuf.product_id(),
-        protobuf.device_flags(),
-        protobuf.storage_type(),
-        protobuf.filesystem_type(),
-        protobuf.access_capability(),
-        protobuf.max_capacity(),
-        protobuf.free_space_in_bytes(),
-        protobuf.free_space_in_objects(),
-        protobuf.storage_description(),
-        protobuf.volume_identifier());
+      protobuf.storage_name(), protobuf.vendor(), protobuf.vendor_id(),
+      protobuf.product(), protobuf.product_id(), protobuf.device_flags(),
+      protobuf.storage_type(), protobuf.filesystem_type(),
+      protobuf.access_capability(), protobuf.max_capacity(),
+      protobuf.free_space_in_bytes(), protobuf.free_space_in_objects(),
+      protobuf.storage_description(), protobuf.volume_identifier());
 }
 
 // The MediaTransferProtocolDaemonClient implementation.
@@ -274,16 +262,18 @@
     listen_for_changes_called_ = true;
 
     static const SignalEventTuple kSignalEventTuples[] = {
-      { mtpd::kMTPStorageAttached, true },
-      { mtpd::kMTPStorageDetached, false },
+        {mtpd::kMTPStorageAttached, true},
+        {mtpd::kMTPStorageDetached, false},
     };
     for (const auto& event : kSignalEventTuples) {
       proxy_->ConnectToSignal(
           mtpd::kMtpdInterface, event.signal_name,
-          base::Bind(&MediaTransferProtocolDaemonClientImpl::OnMTPStorageSignal,
-                     weak_ptr_factory_.GetWeakPtr(), handler, event.is_attach),
-          base::Bind(&MediaTransferProtocolDaemonClientImpl::OnSignalConnected,
-                     weak_ptr_factory_.GetWeakPtr()));
+          base::BindRepeating(
+              &MediaTransferProtocolDaemonClientImpl::OnMTPStorageSignal,
+              weak_ptr_factory_.GetWeakPtr(), handler, event.is_attach),
+          base::BindOnce(
+              &MediaTransferProtocolDaemonClientImpl::OnSignalConnected,
+              weak_ptr_factory_.GetWeakPtr()));
     }
   }
 
@@ -427,8 +417,7 @@
     file_entries.reserve(entries_protobuf.file_entries_size());
     for (int i = 0; i < entries_protobuf.file_entries_size(); ++i) {
       const auto& entry = entries_protobuf.file_entries(i);
-      file_entries.push_back(
-          GetMojoMtpFileEntryFromProtobuf(entry));
+      file_entries.push_back(GetMojoMtpFileEntryFromProtobuf(entry));
     }
     std::move(callback).Run(file_entries);
   }
@@ -501,13 +490,12 @@
     handler.Run(is_attach, storage_name);
   }
 
-
   // Handles the result of signal connection setup.
   void OnSignalConnected(const std::string& interface,
                          const std::string& signal,
                          bool succeeded) {
-    LOG_IF(ERROR, !succeeded) << "Connect to " << interface << " "
-                              << signal << " failed.";
+    LOG_IF(ERROR, !succeeded)
+        << "Connect to " << interface << " " << signal << " failed.";
   }
 
   dbus::ObjectProxy* const proxy_;
diff --git a/services/device/media_transfer_protocol/media_transfer_protocol_daemon_client.h b/services/device/media_transfer_protocol/media_transfer_protocol_daemon_client.h
index 0bc7246..9266787b 100644
--- a/services/device/media_transfer_protocol/media_transfer_protocol_daemon_client.h
+++ b/services/device/media_transfer_protocol/media_transfer_protocol_daemon_client.h
@@ -88,7 +88,8 @@
   // The first argument is true for attach, false for detach.
   // The second argument is the storage name.
   using MTPStorageEventHandler =
-      base::Callback<void(bool is_attach, const std::string& storage_name)>;
+      base::RepeatingCallback<void(bool is_attach,
+                                   const std::string& storage_name)>;
 
   virtual ~MediaTransferProtocolDaemonClient();
 
diff --git a/services/device/media_transfer_protocol/mtp_device_manager.cc b/services/device/media_transfer_protocol/mtp_device_manager.cc
index 1155f5d0..18eda92 100644
--- a/services/device/media_transfer_protocol/mtp_device_manager.cc
+++ b/services/device/media_transfer_protocol/mtp_device_manager.cc
@@ -43,8 +43,8 @@
   if (bus_) {
     bus_->UnlistenForServiceOwnerChange(
         mtpd::kMtpdServiceName,
-        base::Bind(&MtpDeviceManager::FinishSetupOnOriginThread,
-                   weak_ptr_factory_.GetWeakPtr()));
+        base::BindRepeating(&MtpDeviceManager::FinishSetupOnOriginThread,
+                            weak_ptr_factory_.GetWeakPtr()));
   }
 
   VLOG(1) << "MtpDeviceManager Shutdown completed";
@@ -507,8 +507,8 @@
   mtp_client_ = MediaTransferProtocolDaemonClient::Create(bus_.get());
 
   // Set up signals and start initializing |storage_info_map_|.
-  mtp_client_->ListenForChanges(base::Bind(&MtpDeviceManager::OnStorageChanged,
-                                           weak_ptr_factory_.GetWeakPtr()));
+  mtp_client_->ListenForChanges(base::BindRepeating(
+      &MtpDeviceManager::OnStorageChanged, weak_ptr_factory_.GetWeakPtr()));
   mtp_client_->EnumerateStorages(
       base::BindOnce(&MtpDeviceManager::OnEnumerateStorages,
                      weak_ptr_factory_.GetWeakPtr()),
diff --git a/services/device/power_monitor/power_monitor_message_broadcaster_unittest.cc b/services/device/power_monitor/power_monitor_message_broadcaster_unittest.cc
index 784f8ad8..0f6d10f 100644
--- a/services/device/power_monitor/power_monitor_message_broadcaster_unittest.cc
+++ b/services/device/power_monitor/power_monitor_message_broadcaster_unittest.cc
@@ -19,14 +19,15 @@
 
 class MockClient : public PowerMonitorBroadcastSource::Client {
  public:
-  MockClient(base::Closure service_connected)
-      : service_connected_(service_connected) {}
+  MockClient(base::OnceClosure service_connected)
+      : service_connected_(std::move(service_connected)) {}
   ~MockClient() override = default;
 
   // Implement device::mojom::PowerMonitorClient
   void PowerStateChange(bool on_battery_power) override {
     power_state_changes_++;
-    service_connected_.Run();
+    if (service_connected_)
+      std::move(service_connected_).Run();
   }
   void Suspend() override { suspends_++; }
   void Resume() override { resumes_++; }
@@ -40,7 +41,7 @@
   int power_state_changes_ = 0;  // Count of OnPowerStateChange notifications.
   int suspends_ = 0;             // Count of OnSuspend notifications.
   int resumes_ = 0;              // Count of OnResume notifications.
-  base::Closure service_connected_;
+  base::OnceClosure service_connected_;
 };
 
 class PowerMonitorMessageBroadcasterTest : public DeviceServiceTestBase {
diff --git a/services/device/public/cpp/geolocation/location_provider.h b/services/device/public/cpp/geolocation/location_provider.h
index 66c9fa0..108a2f3d 100644
--- a/services/device/public/cpp/geolocation/location_provider.h
+++ b/services/device/public/cpp/geolocation/location_provider.h
@@ -16,8 +16,8 @@
  public:
   virtual ~LocationProvider() {}
 
-  typedef base::Callback<void(const LocationProvider*,
-                              const mojom::Geoposition&)>
+  typedef base::RepeatingCallback<void(const LocationProvider*,
+                                       const mojom::Geoposition&)>
       LocationProviderUpdateCallback;
 
   // This callback will be used to notify when a new Geoposition becomes
diff --git a/services/device/public/cpp/test/scoped_geolocation_overrider.cc b/services/device/public/cpp/test/scoped_geolocation_overrider.cc
index 57d4d56..987c87e 100644
--- a/services/device/public/cpp/test/scoped_geolocation_overrider.cc
+++ b/services/device/public/cpp/test/scoped_geolocation_overrider.cc
@@ -11,7 +11,6 @@
 #include "services/device/device_service.h"
 #include "services/device/public/cpp/geolocation/geoposition.h"
 #include "services/device/public/cpp/test/scoped_geolocation_overrider.h"
-#include "services/device/public/mojom/constants.mojom.h"
 #include "services/device/public/mojom/geolocation.mojom.h"
 #include "services/device/public/mojom/geolocation_context.mojom.h"
 
diff --git a/services/device/public/mojom/BUILD.gn b/services/device/public/mojom/BUILD.gn
index 542ad89..98f6e0f3 100644
--- a/services/device/public/mojom/BUILD.gn
+++ b/services/device/public/mojom/BUILD.gn
@@ -34,7 +34,6 @@
   ]
 
   public_deps = [
-    ":constants",
     "//mojo/public/mojom/base",
     "//services/network/public/mojom",
     "//services/network/public/mojom:mutable_network_traffic_annotation_interface",
@@ -97,10 +96,6 @@
     "sensor_provider.mojom",
   ]
 
-  public_deps = [
-    ":constants",
-  ]
-
   export_class_attribute_blink = "BLINK_PLATFORM_EXPORT"
   export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1"
   export_header_blink = "third_party/blink/public/platform/web_common.h"
@@ -116,22 +111,6 @@
   scramble_message_ids = false
 }
 
-mojom("constants") {
-  generate_java = true
-  sources = [
-    "constants.mojom",
-  ]
-
-  export_class_attribute_blink = "BLINK_PLATFORM_EXPORT"
-  export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1"
-  export_header_blink = "third_party/blink/public/platform/web_common.h"
-
-  visibility_blink = [
-    "//third_party/blink/renderer/platform:blink_platform_public_deps",
-    ":*",
-  ]
-}
-
 mojom("usb") {
   generate_java = true
   sources = [
diff --git a/services/device/public/mojom/constants.mojom b/services/device/public/mojom/constants.mojom
deleted file mode 100644
index de400fc..0000000
--- a/services/device/public/mojom/constants.mojom
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-module device.mojom;
-
-const string kServiceName = "device";
diff --git a/services/device/test/usb_test_gadget_impl.cc b/services/device/test/usb_test_gadget_impl.cc
index 7a3582f..84095a4 100644
--- a/services/device/test/usb_test_gadget_impl.cc
+++ b/services/device/test/usb_test_gadget_impl.cc
@@ -231,7 +231,7 @@
  private:
   void EnumerateDevices() {
     if (!device_) {
-      usb_service_->GetDevices(base::Bind(
+      usb_service_->GetDevices(base::BindOnce(
           &UsbGadgetFactory::OnDevicesEnumerated, weak_factory_.GetWeakPtr()));
     }
   }
@@ -420,8 +420,8 @@
   ~DeviceAddListener() override = default;
 
   scoped_refptr<UsbDevice> WaitForAdd() {
-    usb_service_->GetDevices(base::Bind(&DeviceAddListener::OnDevicesEnumerated,
-                                        weak_factory_.GetWeakPtr()));
+    usb_service_->GetDevices(base::BindOnce(
+        &DeviceAddListener::OnDevicesEnumerated, weak_factory_.GetWeakPtr()));
     run_loop_.Run();
     return device_;
   }
@@ -484,8 +484,8 @@
 
   void WaitForRemove() {
     usb_service_->GetDevices(
-        base::Bind(&DeviceRemoveListener::OnDevicesEnumerated,
-                   weak_factory_.GetWeakPtr()));
+        base::BindOnce(&DeviceRemoveListener::OnDevicesEnumerated,
+                       weak_factory_.GetWeakPtr()));
     run_loop_.Run();
   }
 
diff --git a/services/device/time_zone_monitor/time_zone_monitor_win.cc b/services/device/time_zone_monitor/time_zone_monitor_win.cc
index 2d45a39..c48164e5 100644
--- a/services/device/time_zone_monitor/time_zone_monitor_win.cc
+++ b/services/device/time_zone_monitor/time_zone_monitor_win.cc
@@ -21,8 +21,8 @@
   TimeZoneMonitorWin()
       : TimeZoneMonitor(),
         singleton_hwnd_observer_(new gfx::SingletonHwndObserver(
-            base::Bind(&TimeZoneMonitorWin::OnWndProc,
-                       base::Unretained(this)))) {}
+            base::BindRepeating(&TimeZoneMonitorWin::OnWndProc,
+                                base::Unretained(this)))) {}
 
   ~TimeZoneMonitorWin() override {}
 
diff --git a/services/device/usb/mojo/device_impl_unittest.cc b/services/device/usb/mojo/device_impl_unittest.cc
index 838921f..d8dc579b 100644
--- a/services/device/usb/mojo/device_impl_unittest.cc
+++ b/services/device/usb/mojo/device_impl_unittest.cc
@@ -75,22 +75,22 @@
 };
 
 void ExpectOpenAndThen(mojom::UsbOpenDeviceError expected,
-                       const base::Closure& continuation,
+                       base::OnceClosure continuation,
                        mojom::UsbOpenDeviceError error) {
   EXPECT_EQ(expected, error);
-  continuation.Run();
+  std::move(continuation).Run();
 }
 
 void ExpectResultAndThen(bool expected_result,
-                         const base::Closure& continuation,
+                         base::OnceClosure continuation,
                          bool actual_result) {
   EXPECT_EQ(expected_result, actual_result);
-  continuation.Run();
+  std::move(continuation).Run();
 }
 
 void ExpectTransferInAndThen(mojom::UsbTransferStatus expected_status,
                              const std::vector<uint8_t>& expected_bytes,
-                             const base::Closure& continuation,
+                             base::OnceClosure continuation,
                              mojom::UsbTransferStatus actual_status,
                              const std::vector<uint8_t>& actual_bytes) {
   EXPECT_EQ(expected_status, actual_status);
@@ -99,12 +99,12 @@
     EXPECT_EQ(expected_bytes[i], actual_bytes[i])
         << "Contents differ at index: " << i;
   }
-  continuation.Run();
+  std::move(continuation).Run();
 }
 
 void ExpectPacketsOutAndThen(
     const std::vector<uint32_t>& expected_packets,
-    const base::Closure& continuation,
+    base::OnceClosure continuation,
     std::vector<UsbIsochronousPacketPtr> actual_packets) {
   ASSERT_EQ(expected_packets.size(), actual_packets.size());
   for (size_t i = 0; i < expected_packets.size(); ++i) {
@@ -113,13 +113,13 @@
     EXPECT_EQ(mojom::UsbTransferStatus::COMPLETED, actual_packets[i]->status)
         << "Packet at index " << i << " not completed.";
   }
-  continuation.Run();
+  std::move(continuation).Run();
 }
 
 void ExpectPacketsInAndThen(
     const std::vector<uint8_t>& expected_bytes,
     const std::vector<uint32_t>& expected_packets,
-    const base::Closure& continuation,
+    base::OnceClosure continuation,
     const std::vector<uint8_t>& actual_bytes,
     std::vector<UsbIsochronousPacketPtr> actual_packets) {
   ASSERT_EQ(expected_packets.size(), actual_packets.size());
@@ -134,14 +134,14 @@
     EXPECT_EQ(expected_bytes[i], actual_bytes[i])
         << "Contents differ at index: " << i;
   }
-  continuation.Run();
+  std::move(continuation).Run();
 }
 
 void ExpectTransferStatusAndThen(mojom::UsbTransferStatus expected_status,
-                                 const base::Closure& continuation,
+                                 base::OnceClosure continuation,
                                  mojom::UsbTransferStatus actual_status) {
   EXPECT_EQ(expected_status, actual_status);
-  continuation.Run();
+  std::move(continuation).Run();
 }
 
 class MockUsbDeviceClient : public mojom::UsbDeviceClient {
diff --git a/services/device/usb/mojo/device_manager_impl.cc b/services/device/usb/mojo/device_manager_impl.cc
index 751f448..b41fa6e 100644
--- a/services/device/usb/mojo/device_manager_impl.cc
+++ b/services/device/usb/mojo/device_manager_impl.cc
@@ -50,17 +50,16 @@
 void DeviceManagerImpl::EnumerateDevicesAndSetClient(
     mojo::PendingAssociatedRemote<mojom::UsbDeviceManagerClient> client,
     EnumerateDevicesAndSetClientCallback callback) {
-  usb_service_->GetDevices(base::Bind(
+  usb_service_->GetDevices(base::BindOnce(
       &DeviceManagerImpl::OnGetDevices, weak_factory_.GetWeakPtr(),
-      /*options=*/nullptr, base::Passed(&client), base::Passed(&callback)));
+      /*options=*/nullptr, std::move(client), std::move(callback)));
 }
 
 void DeviceManagerImpl::GetDevices(mojom::UsbEnumerationOptionsPtr options,
                                    GetDevicesCallback callback) {
-  usb_service_->GetDevices(
-      base::Bind(&DeviceManagerImpl::OnGetDevices, weak_factory_.GetWeakPtr(),
-                 base::Passed(&options), mojo::NullAssociatedRemote(),
-                 base::Passed(&callback)));
+  usb_service_->GetDevices(base::BindOnce(
+      &DeviceManagerImpl::OnGetDevices, weak_factory_.GetWeakPtr(),
+      std::move(options), mojo::NullAssociatedRemote(), std::move(callback)));
 }
 
 void DeviceManagerImpl::GetDevice(
diff --git a/services/device/usb/mojo/device_manager_impl_unittest.cc b/services/device/usb/mojo/device_manager_impl_unittest.cc
index a8fb5c4..b2869d0 100644
--- a/services/device/usb/mojo/device_manager_impl_unittest.cc
+++ b/services/device/usb/mojo/device_manager_impl_unittest.cc
@@ -90,14 +90,14 @@
 };
 
 void ExpectDevicesAndThen(const std::set<std::string>& expected_guids,
-                          const base::Closure& continuation,
+                          base::OnceClosure continuation,
                           std::vector<UsbDeviceInfoPtr> results) {
   EXPECT_EQ(expected_guids.size(), results.size());
   std::set<std::string> actual_guids;
   for (size_t i = 0; i < results.size(); ++i)
     actual_guids.insert(results[i]->guid);
   EXPECT_EQ(expected_guids, actual_guids);
-  continuation.Run();
+  std::move(continuation).Run();
 }
 
 }  // namespace
@@ -214,7 +214,8 @@
 
   {
     base::RunLoop loop;
-    base::Closure barrier = base::BarrierClosure(6, loop.QuitClosure());
+    base::RepeatingClosure barrier =
+        base::BarrierClosure(/*num_closures=*/6, loop.QuitClosure());
     testing::InSequence s;
     EXPECT_CALL(mock_client, DoOnDeviceAdded(_))
         .WillOnce(ExpectGuidAndThen(device1->guid(), barrier))
diff --git a/services/device/usb/usb_descriptors.cc b/services/device/usb/usb_descriptors.cc
index b1bda072..65b28e9c 100644
--- a/services/device/usb/usb_descriptors.cc
+++ b/services/device/usb/usb_descriptors.cc
@@ -105,7 +105,7 @@
 }
 
 void OnReadConfigDescriptor(UsbDeviceDescriptor* desc,
-                            base::Closure closure,
+                            base::OnceClosure closure,
                             UsbTransferStatus status,
                             scoped_refptr<base::RefCountedBytes> buffer,
                             size_t length) {
@@ -123,7 +123,7 @@
 void OnReadConfigDescriptorHeader(scoped_refptr<UsbDeviceHandle> device_handle,
                                   UsbDeviceDescriptor* desc,
                                   uint8_t index,
-                                  base::Closure closure,
+                                  base::OnceClosure closure,
                                   UsbTransferStatus status,
                                   scoped_refptr<base::RefCountedBytes> header,
                                   size_t length) {
@@ -171,7 +171,7 @@
 
   uint8_t num_configurations = desc->num_configurations;
   UsbDeviceDescriptor* desc_ptr = desc.get();
-  base::Closure closure = base::BarrierClosure(
+  base::RepeatingClosure closure = base::BarrierClosure(
       num_configurations,
       base::BindOnce(OnDoneReadingConfigDescriptors, device_handle,
                      std::move(desc), std::move(callback)));
@@ -188,7 +188,7 @@
 }
 
 void StoreStringDescriptor(IndexMap::iterator it,
-                           base::Closure callback,
+                           base::OnceClosure callback,
                            const base::string16& string) {
   it->second = string;
   std::move(callback).Run();
@@ -236,7 +236,7 @@
   for (auto it = index_map->begin(); it != index_map->end(); ++it)
     iterator_map[it->first] = it;
 
-  base::Closure barrier = base::BarrierClosure(
+  base::RepeatingClosure barrier = base::BarrierClosure(
       static_cast<int>(iterator_map.size()),
       base::BindOnce(std::move(callback), std::move(index_map)));
   for (const auto& map_entry : iterator_map) {
diff --git a/services/device/usb/usb_device_handle_unittest.cc b/services/device/usb/usb_device_handle_unittest.cc
index 94cc6625..5b9edae 100644
--- a/services/device/usb/usb_device_handle_unittest.cc
+++ b/services/device/usb/usb_device_handle_unittest.cc
@@ -116,13 +116,13 @@
 };
 
 void ExpectTimeoutAndClose(scoped_refptr<UsbDeviceHandle> handle,
-                           const base::Closure& quit_closure,
+                           base::OnceClosure quit_closure,
                            UsbTransferStatus status,
                            scoped_refptr<base::RefCountedBytes> buffer,
                            size_t transferred) {
   EXPECT_EQ(UsbTransferStatus::TIMEOUT, status);
   handle->Close();
-  quit_closure.Run();
+  std::move(quit_closure).Run();
 }
 
 TEST_F(UsbDeviceHandleTest, InterruptTransfer) {
diff --git a/services/device/usb/usb_device_handle_usbfs.cc b/services/device/usb/usb_device_handle_usbfs.cc
index 4c6f6f3..52aa9a736 100644
--- a/services/device/usb/usb_device_handle_usbfs.cc
+++ b/services/device/usb/usb_device_handle_usbfs.cc
@@ -183,7 +183,7 @@
 
   scoped_refptr<base::RefCountedBytes> control_transfer_buffer;
   scoped_refptr<base::RefCountedBytes> buffer;
-  base::CancelableClosure timeout_closure;
+  base::CancelableOnceClosure timeout_closure;
   bool cancelled = false;
 
   // When the URB is |cancelled| these two flags track whether the URB has both
@@ -914,7 +914,7 @@
     return;
 
   transfer->timeout_closure.Reset(
-      base::Bind(&UsbDeviceHandleUsbfs::OnTimeout, this, transfer));
+      base::BindOnce(&UsbDeviceHandleUsbfs::OnTimeout, this, transfer));
   task_runner_->PostDelayedTask(FROM_HERE, transfer->timeout_closure.callback(),
                                 base::TimeDelta::FromMilliseconds(timeout));
 }
diff --git a/services/device/usb/usb_service.cc b/services/device/usb/usb_service.cc
index 664ab0e7e..0a9d16d 100644
--- a/services/device/usb/usb_service.cc
+++ b/services/device/usb/usb_service.cc
@@ -81,13 +81,13 @@
   return it->second;
 }
 
-void UsbService::GetDevices(const GetDevicesCallback& callback) {
+void UsbService::GetDevices(GetDevicesCallback callback) {
   std::vector<scoped_refptr<UsbDevice>> devices;
   devices.reserve(devices_.size());
   for (const auto& map_entry : devices_)
     devices.push_back(map_entry.second);
   base::SequencedTaskRunnerHandle::Get()->PostTask(
-      FROM_HERE, base::BindOnce(callback, devices));
+      FROM_HERE, base::BindOnce(std::move(callback), devices));
 }
 
 void UsbService::AddObserver(Observer* observer) {
diff --git a/services/device/usb/usb_service.h b/services/device/usb/usb_service.h
index 9436f3b..35e7ac4 100644
--- a/services/device/usb/usb_service.h
+++ b/services/device/usb/usb_service.h
@@ -32,7 +32,7 @@
 class UsbService {
  public:
   using GetDevicesCallback =
-      base::Callback<void(const std::vector<scoped_refptr<UsbDevice>>&)>;
+      base::OnceCallback<void(const std::vector<scoped_refptr<UsbDevice>>&)>;
 
   class Observer {
    public:
@@ -67,7 +67,7 @@
   scoped_refptr<UsbDevice> GetDevice(const std::string& guid);
 
   // Enumerates available devices.
-  virtual void GetDevices(const GetDevicesCallback& callback);
+  virtual void GetDevices(GetDevicesCallback callback);
 
   void AddObserver(Observer* observer);
   void RemoveObserver(Observer* observer);
diff --git a/services/device/usb/usb_service_impl.cc b/services/device/usb/usb_service_impl.cc
index 907286aa..a42b0f75 100644
--- a/services/device/usb/usb_service_impl.cc
+++ b/services/device/usb/usb_service_impl.cc
@@ -144,7 +144,7 @@
     uint8_t manufacturer,
     uint8_t product,
     uint8_t serial_number,
-    const base::Closure& continuation,
+    base::OnceClosure continuation,
     std::unique_ptr<std::map<uint8_t, base::string16>> string_map) {
   if (manufacturer != 0)
     device->set_manufacturer_string((*string_map)[manufacturer]);
@@ -152,11 +152,11 @@
     device->set_product_string((*string_map)[product]);
   if (serial_number != 0)
     device->set_serial_number((*string_map)[serial_number]);
-  continuation.Run();
+  std::move(continuation).Run();
 }
 
 void OnReadBosDescriptor(scoped_refptr<UsbDeviceHandle> device_handle,
-                         const base::Closure& barrier,
+                         base::OnceClosure barrier,
                          const GURL& landing_page) {
   scoped_refptr<UsbDeviceImpl> device =
       static_cast<UsbDeviceImpl*>(device_handle->GetDevice().get());
@@ -164,7 +164,7 @@
   if (landing_page.is_valid())
     device->set_webusb_landing_page(landing_page);
 
-  barrier.Run();
+  std::move(barrier).Run();
 }
 
 void OnDeviceOpenedReadDescriptors(
@@ -234,21 +234,21 @@
     libusb_hotplug_deregister_callback(context_->context(), hotplug_handle_);
 }
 
-void UsbServiceImpl::GetDevices(const GetDevicesCallback& callback) {
+void UsbServiceImpl::GetDevices(GetDevicesCallback callback) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 
   if (usb_unavailable_) {
     task_runner_->PostTask(
-        FROM_HERE,
-        base::BindOnce(callback, std::vector<scoped_refptr<UsbDevice>>()));
+        FROM_HERE, base::BindOnce(std::move(callback),
+                                  std::vector<scoped_refptr<UsbDevice>>()));
     return;
   }
 
   if (hotplug_enabled_ && !enumeration_in_progress_) {
     // The device list is updated live when hotplug events are supported.
-    UsbService::GetDevices(callback);
+    UsbService::GetDevices(std::move(callback));
   } else {
-    pending_enumeration_callbacks_.push_back(callback);
+    pending_enumeration_callbacks_.push_back(std::move(callback));
     RefreshDevices();
   }
 }
@@ -401,8 +401,8 @@
 
     std::vector<GetDevicesCallback> callbacks;
     callbacks.swap(pending_enumeration_callbacks_);
-    for (const GetDevicesCallback& callback : callbacks)
-      callback.Run(result);
+    for (GetDevicesCallback& callback : callbacks)
+      std::move(callback).Run(result);
   }
 
   if (!pending_path_enumerations_.empty()) {
@@ -411,7 +411,7 @@
 }
 
 void UsbServiceImpl::EnumerateDevice(ScopedLibusbDeviceRef platform_device,
-                                     const base::Closure& refresh_complete) {
+                                     base::OnceClosure refresh_complete) {
   DCHECK(context_);
 
   libusb_device_descriptor descriptor;
@@ -419,13 +419,13 @@
   if (rv != LIBUSB_SUCCESS) {
     USB_LOG(EVENT) << "Failed to get device descriptor: "
                    << ConvertPlatformUsbErrorToString(rv);
-    EnumerationFailed(std::move(platform_device), refresh_complete);
+    EnumerationFailed(std::move(platform_device), std::move(refresh_complete));
     return;
   }
 
   if (descriptor.bDeviceClass == LIBUSB_CLASS_HUB) {
     // Don't try to enumerate hubs. We never want to connect to a hub.
-    EnumerationFailed(std::move(platform_device), refresh_complete);
+    EnumerationFailed(std::move(platform_device), std::move(refresh_complete));
     return;
   }
 
@@ -435,7 +435,7 @@
                                                     descriptor);
   base::OnceClosure add_device =
       base::BindOnce(&UsbServiceImpl::AddDevice, weak_factory_.GetWeakPtr(),
-                     refresh_complete, device);
+                     std::move(refresh_complete), device);
 
   bool read_bos_descriptors = descriptor.bcdUSB >= kUsbVersion2_1;
   if (descriptor.iManufacturer == 0 && descriptor.iProduct == 0 &&
@@ -449,7 +449,7 @@
     base::OnceClosure enumeration_failed = base::BindOnce(
         &UsbServiceImpl::EnumerationFailed, weak_factory_.GetWeakPtr(),
         ScopedLibusbDeviceRef(device->platform_device(), context_),
-        refresh_complete);
+        std::move(refresh_complete));
 
     device->Open(base::BindOnce(
         &OnDeviceOpenedReadDescriptors, descriptor.iManufacturer,
@@ -458,11 +458,11 @@
   }
 }
 
-void UsbServiceImpl::AddDevice(const base::Closure& refresh_complete,
+void UsbServiceImpl::AddDevice(base::OnceClosure refresh_complete,
                                scoped_refptr<UsbDeviceImpl> device) {
   if (!base::Contains(devices_being_enumerated_, device->platform_device())) {
     // Device was removed while being enumerated.
-    refresh_complete.Run();
+    std::move(refresh_complete).Run();
     return;
   }
 
@@ -480,7 +480,7 @@
   if (enumeration_ready_)
     NotifyDeviceAdded(device);
 
-  refresh_complete.Run();
+  std::move(refresh_complete).Run();
 }
 
 void UsbServiceImpl::RemoveDevice(scoped_refptr<UsbDeviceImpl> device) {
@@ -545,9 +545,9 @@
 }
 
 void UsbServiceImpl::EnumerationFailed(ScopedLibusbDeviceRef platform_device,
-                                       const base::Closure& refresh_complete) {
+                                       base::OnceClosure refresh_complete) {
   ignored_devices_.push_back(std::move(platform_device));
-  refresh_complete.Run();
+  std::move(refresh_complete).Run();
 }
 
 }  // namespace device
diff --git a/services/device/usb/usb_service_impl.h b/services/device/usb/usb_service_impl.h
index 918be7d..25cf477 100644
--- a/services/device/usb/usb_service_impl.h
+++ b/services/device/usb/usb_service_impl.h
@@ -47,7 +47,7 @@
 
  private:
   // device::UsbService implementation
-  void GetDevices(const GetDevicesCallback& callback) override;
+  void GetDevices(GetDevicesCallback callback) override;
 
 #if defined(OS_WIN)
   // device::DeviceMonitorWin::Observer implementation
@@ -67,9 +67,9 @@
 
   // Creates a new UsbDevice based on the given libusb device.
   void EnumerateDevice(ScopedLibusbDeviceRef platform_device,
-                       const base::Closure& refresh_complete);
+                       base::OnceClosure refresh_complete);
 
-  void AddDevice(const base::Closure& refresh_complete,
+  void AddDevice(base::OnceClosure refresh_complete,
                  scoped_refptr<UsbDeviceImpl> device);
   void RemoveDevice(scoped_refptr<UsbDeviceImpl> device);
 
@@ -85,7 +85,7 @@
   // Add |platform_device| to the |ignored_devices_| and
   // run |refresh_complete|.
   void EnumerationFailed(ScopedLibusbDeviceRef platform_device,
-                         const base::Closure& refresh_complete);
+                         base::OnceClosure refresh_complete);
 
   scoped_refptr<base::SequencedTaskRunner> task_runner_;
 
diff --git a/services/device/usb/usb_service_linux.cc b/services/device/usb/usb_service_linux.cc
index 122278fc..d5cef63 100644
--- a/services/device/usb/usb_service_linux.cc
+++ b/services/device/usb/usb_service_linux.cc
@@ -219,12 +219,12 @@
   NotifyWillDestroyUsbService();
 }
 
-void UsbServiceLinux::GetDevices(const GetDevicesCallback& callback) {
+void UsbServiceLinux::GetDevices(GetDevicesCallback callback) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   if (enumeration_ready())
-    UsbService::GetDevices(callback);
+    UsbService::GetDevices(std::move(callback));
   else
-    enumeration_callbacks_.push_back(callback);
+    enumeration_callbacks_.push_back(std::move(callback));
 }
 
 void UsbServiceLinux::OnDeviceAdded(
@@ -292,8 +292,8 @@
     result.reserve(devices().size());
     for (const auto& map_entry : devices())
       result.push_back(map_entry.second);
-    for (const auto& callback : enumeration_callbacks_)
-      callback.Run(result);
+    for (auto& callback : enumeration_callbacks_)
+      std::move(callback).Run(result);
     enumeration_callbacks_.clear();
   } else if (success && enumeration_ready()) {
     NotifyDeviceAdded(device);
@@ -328,8 +328,8 @@
     result.reserve(devices().size());
     for (const auto& map_entry : devices())
       result.push_back(map_entry.second);
-    for (const auto& callback : enumeration_callbacks_)
-      callback.Run(result);
+    for (auto& callback : enumeration_callbacks_)
+      std::move(callback).Run(result);
     enumeration_callbacks_.clear();
   }
 }
diff --git a/services/device/usb/usb_service_linux.h b/services/device/usb/usb_service_linux.h
index f13ebbd1..d23c10b8 100644
--- a/services/device/usb/usb_service_linux.h
+++ b/services/device/usb/usb_service_linux.h
@@ -26,7 +26,7 @@
   ~UsbServiceLinux() override;
 
   // device::UsbService implementation
-  void GetDevices(const GetDevicesCallback& callback) override;
+  void GetDevices(GetDevicesCallback callback) override;
 
  private:
   using DeviceMap =
diff --git a/services/device/usb/usb_service_unittest.cc b/services/device/usb/usb_service_unittest.cc
index 5f47d48..25196259 100644
--- a/services/device/usb/usb_service_unittest.cc
+++ b/services/device/usb/usb_service_unittest.cc
@@ -35,12 +35,12 @@
   base::TestIOThread io_thread_;
 };
 
-void OnGetDevices(const base::Closure& quit_closure,
+void OnGetDevices(base::OnceClosure quit_closure,
                   const std::vector<scoped_refptr<UsbDevice>>& devices) {
   // Since there's no guarantee that any devices are connected at the moment
   // this test doesn't assume anything about the result but it at least verifies
   // that devices can be enumerated without the application crashing.
-  quit_closure.Run();
+  std::move(quit_closure).Run();
 }
 
 }  // namespace
diff --git a/services/device/usb/usb_service_win.cc b/services/device/usb/usb_service_win.cc
index febfba98..bb14c14 100644
--- a/services/device/usb/usb_service_win.cc
+++ b/services/device/usb/usb_service_win.cc
@@ -309,12 +309,12 @@
   NotifyWillDestroyUsbService();
 }
 
-void UsbServiceWin::GetDevices(const GetDevicesCallback& callback) {
+void UsbServiceWin::GetDevices(GetDevicesCallback callback) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   if (enumeration_ready())
-    UsbService::GetDevices(callback);
+    UsbService::GetDevices(std::move(callback));
   else
-    enumeration_callbacks_.push_back(callback);
+    enumeration_callbacks_.push_back(std::move(callback));
 }
 
 void UsbServiceWin::OnDeviceAdded(const GUID& class_guid,
@@ -353,8 +353,8 @@
     result.reserve(devices().size());
     for (const auto& map_entry : devices())
       result.push_back(map_entry.second);
-    for (const auto& callback : enumeration_callbacks_)
-      callback.Run(result);
+    for (auto& callback : enumeration_callbacks_)
+      std::move(callback).Run(result);
     enumeration_callbacks_.clear();
   }
 }
@@ -373,8 +373,8 @@
   scoped_refptr<UsbDeviceWin> device(new UsbDeviceWin(
       device_path, hub_path, bus_number, port_number, driver_name));
   devices_by_path_[device->device_path()] = device;
-  device->ReadDescriptors(base::Bind(&UsbServiceWin::DeviceReady,
-                                     weak_factory_.GetWeakPtr(), device));
+  device->ReadDescriptors(base::BindOnce(&UsbServiceWin::DeviceReady,
+                                         weak_factory_.GetWeakPtr(), device));
 }
 
 void UsbServiceWin::DeviceReady(scoped_refptr<UsbDeviceWin> device,
@@ -414,8 +414,8 @@
     result.reserve(devices().size());
     for (const auto& map_entry : devices())
       result.push_back(map_entry.second);
-    for (const auto& callback : enumeration_callbacks_)
-      callback.Run(result);
+    for (auto& callback : enumeration_callbacks_)
+      std::move(callback).Run(result);
     enumeration_callbacks_.clear();
   } else if (success && enumeration_ready()) {
     NotifyDeviceAdded(device);
diff --git a/services/device/usb/usb_service_win.h b/services/device/usb/usb_service_win.h
index dab582f..3b53158 100644
--- a/services/device/usb/usb_service_win.h
+++ b/services/device/usb/usb_service_win.h
@@ -29,7 +29,7 @@
   class BlockingTaskRunnerHelper;
 
   // device::UsbService implementation
-  void GetDevices(const GetDevicesCallback& callback) override;
+  void GetDevices(GetDevicesCallback callback) override;
 
   // device::DeviceMonitorWin::Observer implementation
   void OnDeviceAdded(const GUID& class_guid,
diff --git a/services/device/wake_lock/wake_lock.cc b/services/device/wake_lock/wake_lock.cc
index 6f4be353..c41602e 100644
--- a/services/device/wake_lock/wake_lock.cc
+++ b/services/device/wake_lock/wake_lock.cc
@@ -32,8 +32,8 @@
       observer_(observer) {
   DCHECK(observer_);
   AddClient(std::move(receiver));
-  receiver_set_.set_disconnect_handler(
-      base::Bind(&WakeLock::OnConnectionError, base::Unretained(this)));
+  receiver_set_.set_disconnect_handler(base::BindRepeating(
+      &WakeLock::OnConnectionError, base::Unretained(this)));
 }
 
 WakeLock::~WakeLock() {}
diff --git a/services/device/wake_lock/wake_lock.h b/services/device/wake_lock/wake_lock.h
index 41d4325..c2af1aa 100644
--- a/services/device/wake_lock/wake_lock.h
+++ b/services/device/wake_lock/wake_lock.h
@@ -24,7 +24,7 @@
 // Callback that maps a context ID to the NativeView associated with
 // that context. This callback is provided to the Device Service by its
 // embedder.
-using WakeLockContextCallback = base::Callback<gfx::NativeView(int)>;
+using WakeLockContextCallback = base::RepeatingCallback<gfx::NativeView(int)>;
 
 class WakeLock : public mojom::WakeLock {
  public:
diff --git a/services/device/wake_lock/wake_lock_unittest.cc b/services/device/wake_lock/wake_lock_unittest.cc
index d72af77d..e7eec1b 100644
--- a/services/device/wake_lock/wake_lock_unittest.cc
+++ b/services/device/wake_lock/wake_lock_unittest.cc
@@ -82,14 +82,14 @@
         wake_lock_.BindNewPipeAndPassReceiver());
   }
 
-  void OnChangeType(base::Closure quit_closure, bool result) {
+  void OnChangeType(base::OnceClosure quit_closure, bool result) {
     result_ = result;
-    quit_closure.Run();
+    std::move(quit_closure).Run();
   }
 
-  void OnHasWakeLock(base::Closure quit_closure, bool has_wakelock) {
+  void OnHasWakeLock(base::OnceClosure quit_closure, bool has_wakelock) {
     has_wakelock_ = has_wakelock;
-    quit_closure.Run();
+    std::move(quit_closure).Run();
   }
 
   bool ChangeType(mojom::WakeLockType type) {
@@ -97,8 +97,8 @@
 
     base::RunLoop run_loop;
     wake_lock_->ChangeType(
-        type, base::Bind(&WakeLockTest::OnChangeType, base::Unretained(this),
-                         run_loop.QuitClosure()));
+        type, base::BindOnce(&WakeLockTest::OnChangeType,
+                             base::Unretained(this), run_loop.QuitClosure()));
     run_loop.Run();
 
     return result_;
@@ -108,9 +108,9 @@
     has_wakelock_ = false;
 
     base::RunLoop run_loop;
-    wake_lock_->HasWakeLockForTests(base::Bind(&WakeLockTest::OnHasWakeLock,
-                                               base::Unretained(this),
-                                               run_loop.QuitClosure()));
+    wake_lock_->HasWakeLockForTests(base::BindOnce(&WakeLockTest::OnHasWakeLock,
+                                                   base::Unretained(this),
+                                                   run_loop.QuitClosure()));
     run_loop.Run();
 
     return has_wakelock_;
diff --git a/services/network/cors/cors_url_loader.cc b/services/network/cors/cors_url_loader.cc
index 803dc41a..5554f0a 100644
--- a/services/network/cors/cors_url_loader.cc
+++ b/services/network/cors/cors_url_loader.cc
@@ -8,6 +8,7 @@
 #include "base/containers/flat_set.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/stl_util.h"
+#include "base/strings/string_split.h"
 #include "net/base/load_flags.h"
 #include "services/network/cors/preflight_controller.h"
 #include "services/network/loader_util.h"
@@ -77,6 +78,8 @@
   UMA_HISTOGRAM_ENUMERATION("Net.Cors.CompletionStatus", metric);
 }
 
+constexpr const char kTimingAllowOrigin[] = "Timing-Allow-Origin";
+
 }  // namespace
 
 CorsURLLoader::CorsURLLoader(
@@ -269,7 +272,10 @@
     }
   }
 
+  timing_allow_failed_flag_ = !PassesTimingAllowOriginCheck(*response_head);
+
   response_head->response_type = response_tainting_;
+  response_head->timing_allow_passed = !timing_allow_failed_flag_;
   forwarding_client_->OnReceiveResponse(std::move(response_head));
 }
 
@@ -303,6 +309,8 @@
     }
   }
 
+  timing_allow_failed_flag_ = !PassesTimingAllowOriginCheck(*response_head);
+
   // Because we initiate a new request on redirect in some cases, we cannot
   // rely on the redirect logic in the network stack. Hence we need to
   // implement some logic in
@@ -358,6 +366,7 @@
   } else {
     response_head->response_type = response_tainting_;
   }
+  response_head->timing_allow_passed = !timing_allow_failed_flag_;
   forwarding_client_->OnReceiveRedirect(redirect_info,
                                         std::move(response_head));
 }
@@ -617,6 +626,38 @@
   return mojom::FetchResponseType::kBasic;
 }
 
+bool CorsURLLoader::PassesTimingAllowOriginCheck(
+    const mojom::URLResponseHead& response) const {
+  if (timing_allow_failed_flag_)
+    return false;
+
+  if (response_tainting_ == mojom::FetchResponseType::kBasic)
+    return true;
+
+  base::Optional<std::string> tao_header =
+      GetHeaderString(response, kTimingAllowOrigin);
+  if (!tao_header.has_value())
+    return false;
+
+  // Optimization for the common case when the header is a single '*'.
+  if (tao_header == "*")
+    return true;
+
+  url::Origin origin = tainted_ ? url::Origin() : *request_.request_initiator;
+  std::string serialized_origin = origin.Serialize();
+  std::vector<std::string> tao_headers = base::SplitString(
+      *tao_header, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_NONEMPTY);
+  for (const std::string& header : tao_headers) {
+    if (header == "*")
+      return true;
+
+    if (header == serialized_origin)
+      return true;
+  }
+  return false;
+}
+
+// static
 base::Optional<std::string> CorsURLLoader::GetHeaderString(
     const mojom::URLResponseHead& response,
     const std::string& header_name) {
diff --git a/services/network/cors/cors_url_loader.h b/services/network/cors/cors_url_loader.h
index 64d841dc..159d304 100644
--- a/services/network/cors/cors_url_loader.h
+++ b/services/network/cors/cors_url_loader.h
@@ -114,6 +114,9 @@
   // URL (via |origin_access_list_| and |factory_bound_origin_access_list_|).
   bool HasSpecialAccessToDestination() const;
 
+  bool PassesTimingAllowOriginCheck(
+      const mojom::URLResponseHead& response) const;
+
   static base::Optional<std::string> GetHeaderString(
       const mojom::URLResponseHead& response,
       const std::string& header_name);
@@ -164,6 +167,9 @@
   // https://fetch.spec.whatwg.org/#concept-request-redirect-count
   int redirect_count_ = 0;
 
+  // https://fetch.spec.whatwg.org/#timing-allow-failed
+  bool timing_allow_failed_flag_ = false;
+
   // We need to save this for redirect.
   net::MutableNetworkTrafficAnnotationTag traffic_annotation_;
 
diff --git a/services/network/cors/cors_url_loader_unittest.cc b/services/network/cors/cors_url_loader_unittest.cc
index 6482c14..603b7bf 100644
--- a/services/network/cors/cors_url_loader_unittest.cc
+++ b/services/network/cors/cors_url_loader_unittest.cc
@@ -2068,6 +2068,174 @@
                              "LOAD_RESTRICTED_PREFETCH flag is not trusted"));
 }
 
+// Test that Timing-Allow-Origin check passes when a same-origin redirect
+// occurs. The redirect is as follows: [Origin] A -> A -> A.
+TEST_F(CorsURLLoaderTest, TAOCheckPassOnSameOriginRedirect) {
+  const GURL origin("https://example.com");
+  const GURL url("https://example.com/foo.png");
+  const GURL new_url("https://example.com/bar.png");
+
+  CreateLoaderAndStart(origin, url, mojom::RequestMode::kNoCors);
+  RunUntilCreateLoaderAndStartCalled();
+  NotifyLoaderClientOnReceiveRedirect(CreateRedirectInfo(301, "GET", new_url));
+  RunUntilRedirectReceived();
+
+  EXPECT_TRUE(client().response_head()->timing_allow_passed);
+
+  ClearHasReceivedRedirect();
+  FollowRedirect();
+
+  NotifyLoaderClientOnReceiveResponse();
+  NotifyLoaderClientOnComplete(net::OK);
+  RunUntilComplete();
+
+  EXPECT_TRUE(client().response_head()->timing_allow_passed);
+}
+
+TEST_F(CorsURLLoaderTest, TAOCheckFailOnCrossOriginResource1) {
+  const GURL origin("https://example.com");
+  const GURL url("https://other.example.com/foo.png");
+
+  CreateLoaderAndStart(origin, url, mojom::RequestMode::kCors);
+  RunUntilCreateLoaderAndStartCalled();
+  NotifyLoaderClientOnReceiveResponse(
+      {"Access-Control-Allow-Origin: https://example.com"});
+  NotifyLoaderClientOnComplete(net::OK);
+  RunUntilComplete();
+
+  // Note: this testcase will change when we change to the model in which TAO
+  // passes whenever CORS is used.
+  EXPECT_FALSE(client().response_head()->timing_allow_passed);
+}
+
+TEST_F(CorsURLLoaderTest, TAOCheckFailOnCrossOriginResource2) {
+  const GURL origin("https://example.com");
+  const GURL url("https://other.example.com/foo.png");
+
+  CreateLoaderAndStart(origin, url, mojom::RequestMode::kNoCors);
+  RunUntilCreateLoaderAndStartCalled();
+  // null does not work in this case since the tainted origin flag won't be set.
+  NotifyLoaderClientOnReceiveResponse({"Access-Control-Allow-Origin: null"});
+  NotifyLoaderClientOnComplete(net::OK);
+  RunUntilComplete();
+
+  EXPECT_FALSE(client().response_head()->timing_allow_passed);
+}
+
+TEST_F(CorsURLLoaderTest, TAOCheckPassOnCrossOriginResource) {
+  const GURL origin("https://example.com");
+  const GURL url("https://other.example.com/foo.png");
+
+  CreateLoaderAndStart(origin, url, mojom::RequestMode::kNoCors);
+  RunUntilCreateLoaderAndStartCalled();
+  NotifyLoaderClientOnReceiveResponse(
+      {"Timing-Allow-Origin: https://example.com"});
+  NotifyLoaderClientOnComplete(net::OK);
+  RunUntilComplete();
+
+  EXPECT_TRUE(client().response_head()->timing_allow_passed);
+}
+
+// [Origin] A -> B -> A where final redirect does not pass the check.
+TEST_F(CorsURLLoaderTest, TAOCheckFailRedirect1) {
+  const GURL origin("https://example.com");
+  const GURL url("https://other.example.com/foo.png");
+  const GURL new_url("https://example.com/bar.png");
+
+  CreateLoaderAndStart(origin, url, mojom::RequestMode::kNoCors);
+  RunUntilCreateLoaderAndStartCalled();
+  NotifyLoaderClientOnReceiveRedirect(
+      CreateRedirectInfo(301, "GET", new_url),
+      {"Timing-Allow-Origin: https://example.com"});
+  RunUntilRedirectReceived();
+
+  EXPECT_TRUE(client().response_head()->timing_allow_passed);
+
+  ClearHasReceivedRedirect();
+  FollowRedirect();
+
+  // This is insufficient: tainted origin flag will be set.
+  NotifyLoaderClientOnReceiveResponse(
+      {"Timing-Allow-Origin: https://example.com, https://other.example.com"});
+  NotifyLoaderClientOnComplete(net::OK);
+  RunUntilComplete();
+
+  EXPECT_FALSE(client().response_head()->timing_allow_passed);
+}
+
+// [Origin] A -> B -> A where B does not pass the check.
+TEST_F(CorsURLLoaderTest, TAOCheckFailRedirect2) {
+  const GURL origin("https://example.com");
+  const GURL url("https://other.example.com/foo.png");
+  const GURL new_url("https://example.com/bar.png");
+
+  CreateLoaderAndStart(origin, url, mojom::RequestMode::kNoCors);
+  RunUntilCreateLoaderAndStartCalled();
+  NotifyLoaderClientOnReceiveRedirect(CreateRedirectInfo(301, "GET", new_url));
+  RunUntilRedirectReceived();
+
+  EXPECT_FALSE(client().response_head()->timing_allow_passed);
+
+  ClearHasReceivedRedirect();
+  FollowRedirect();
+
+  NotifyLoaderClientOnReceiveResponse({"Timing-Allow-Origin: *"});
+  NotifyLoaderClientOnComplete(net::OK);
+  RunUntilComplete();
+
+  EXPECT_FALSE(client().response_head()->timing_allow_passed);
+}
+
+// [Origin] A -> B -> A
+TEST_F(CorsURLLoaderTest, TAOCheckPassRedirect1) {
+  const GURL origin("https://example.com");
+  const GURL url("https://other.example.com/foo.png");
+  const GURL new_url("https://example.com/bar.png");
+
+  CreateLoaderAndStart(origin, url, mojom::RequestMode::kNoCors);
+  RunUntilCreateLoaderAndStartCalled();
+  NotifyLoaderClientOnReceiveRedirect(
+      CreateRedirectInfo(301, "GET", new_url),
+      {"Timing-Allow-Origin: https://example.com"});
+  RunUntilRedirectReceived();
+
+  EXPECT_TRUE(client().response_head()->timing_allow_passed);
+
+  ClearHasReceivedRedirect();
+  FollowRedirect();
+
+  NotifyLoaderClientOnReceiveResponse({"Timing-Allow-Origin: null"});
+  NotifyLoaderClientOnComplete(net::OK);
+  RunUntilComplete();
+
+  EXPECT_TRUE(client().response_head()->timing_allow_passed);
+}
+
+// [Origin] A -> B -> C
+TEST_F(CorsURLLoaderTest, TAOCheckPassRedirect2) {
+  const GURL origin("https://example.com");
+  const GURL url("https://other1.com/foo.png");
+  const GURL new_url("https://other2.com/bar.png");
+
+  CreateLoaderAndStart(origin, url, mojom::RequestMode::kNoCors);
+  RunUntilCreateLoaderAndStartCalled();
+  NotifyLoaderClientOnReceiveRedirect(
+      CreateRedirectInfo(301, "GET", new_url),
+      {"Timing-Allow-Origin: https://example.com"});
+  RunUntilRedirectReceived();
+
+  EXPECT_TRUE(client().response_head()->timing_allow_passed);
+
+  ClearHasReceivedRedirect();
+  FollowRedirect();
+
+  NotifyLoaderClientOnReceiveResponse({"Timing-Allow-Origin: null"});
+  NotifyLoaderClientOnComplete(net::OK);
+  RunUntilComplete();
+
+  EXPECT_TRUE(client().response_head()->timing_allow_passed);
+}
+
 class CorsURLLoaderExtraSafelistedHeadersTest : public CorsURLLoaderTest {
  public:
   void SetUp() override {
diff --git a/services/network/expect_ct_reporter.cc b/services/network/expect_ct_reporter.cc
index d98a015..cd3a56c6 100644
--- a/services/network/expect_ct_reporter.cc
+++ b/services/network/expect_ct_reporter.cc
@@ -201,7 +201,7 @@
   PreflightInProgress* preflight = preflight_it->second.get();
 
   const int response_code =
-      request->status().is_success() ? request->GetResponseCode() : -1;
+      net_error == net::OK ? request->GetResponseCode() : -1;
 
   // Check that the preflight succeeded: it must have an HTTP OK status code,
   // with the following headers:
@@ -210,8 +210,7 @@
   // - Access-Control-Allow-Headers: Content-Type
 
   if (response_code == -1 || response_code < 200 || response_code > 299) {
-    OnReportFailure(preflight->report_uri, request->status().error(),
-                    response_code);
+    OnReportFailure(preflight->report_uri, net_error, response_code);
     inflight_preflights_.erase(request);
     // Do not use |preflight| after this point, since it has been erased above.
     return;
@@ -221,8 +220,7 @@
       !HasHeaderValues(request, "Access-Control-Allow-Methods", {"post"}) ||
       !HasHeaderValues(request, "Access-Control-Allow-Headers",
                        {"content-type"})) {
-    OnReportFailure(preflight->report_uri, request->status().error(),
-                    response_code);
+    OnReportFailure(preflight->report_uri, net_error, response_code);
     inflight_preflights_.erase(request);
     // Do not use |preflight| after this point, since it has been erased above.
     return;
diff --git a/services/network/network_context_unittest.cc b/services/network/network_context_unittest.cc
index ec2e81c..67b33a8 100644
--- a/services/network/network_context_unittest.cc
+++ b/services/network/network_context_unittest.cc
@@ -5873,7 +5873,8 @@
 
   ResourceRequest first_party_request;
   first_party_request.url = server_url;
-  first_party_request.site_for_cookies = first_party_url;
+  first_party_request.site_for_cookies =
+      net::SiteForCookies::FromUrl(first_party_url);
 
   std::unique_ptr<TestURLLoaderClient> client = FetchRequest(
       first_party_request, network_context.get(), url_loader_options);
@@ -5886,7 +5887,8 @@
 
   ResourceRequest third_party_request;
   third_party_request.url = server_url;
-  third_party_request.site_for_cookies = third_party_url;
+  third_party_request.site_for_cookies =
+      net::SiteForCookies::FromUrl(third_party_url);
 
   client = FetchRequest(third_party_request, network_context.get(),
                         url_loader_options);
@@ -5918,7 +5920,8 @@
 
   ResourceRequest first_party_request;
   first_party_request.url = server_url;
-  first_party_request.site_for_cookies = first_party_url;
+  first_party_request.site_for_cookies =
+      net::SiteForCookies::FromUrl(first_party_url);
 
   std::unique_ptr<TestURLLoaderClient> client = FetchRequest(
       first_party_request, network_context.get(), url_loader_options);
@@ -5931,7 +5934,8 @@
 
   ResourceRequest third_party_request;
   third_party_request.url = server_url;
-  third_party_request.site_for_cookies = third_party_url;
+  third_party_request.site_for_cookies =
+      net::SiteForCookies::FromUrl(third_party_url);
 
   client = FetchRequest(third_party_request, network_context.get(),
                         url_loader_options);
@@ -5963,7 +5967,8 @@
 
   ResourceRequest first_party_request;
   first_party_request.url = server_url;
-  first_party_request.site_for_cookies = first_party_url;
+  first_party_request.site_for_cookies =
+      net::SiteForCookies::FromUrl(first_party_url);
 
   std::unique_ptr<TestURLLoaderClient> client = FetchRequest(
       first_party_request, network_context.get(), url_loader_options);
@@ -5976,7 +5981,8 @@
 
   ResourceRequest third_party_request;
   third_party_request.url = server_url;
-  third_party_request.site_for_cookies = third_party_url;
+  third_party_request.site_for_cookies =
+      net::SiteForCookies::FromUrl(third_party_url);
 
   client = FetchRequest(third_party_request, network_context.get(),
                         url_loader_options);
@@ -6408,7 +6414,8 @@
   ResourceRequest request;
   request.method = std::string(method);
   request.url = url;
-  request.site_for_cookies = url;  // bypass third-party cookie blocking
+  request.site_for_cookies =
+      net::SiteForCookies::FromUrl(url);  // bypass third-party cookie blocking
   request.request_initiator =
       url::Origin::Create(url);  // ensure initiator is set
   return request;
diff --git a/services/network/network_service_network_delegate.cc b/services/network/network_service_network_delegate.cc
index 7fbfb5b..c4f74495 100644
--- a/services/network/network_service_network_delegate.cc
+++ b/services/network/network_service_network_delegate.cc
@@ -182,8 +182,8 @@
   DCHECK_NE(net::ERR_IO_PENDING, net_error);
 
   if (network_context_->domain_reliability_monitor()) {
-    network_context_->domain_reliability_monitor()->OnCompleted(request,
-                                                                started);
+    network_context_->domain_reliability_monitor()->OnCompleted(
+        request, started, net_error);
   }
 
   ForwardProxyErrors(net_error);
diff --git a/services/network/public/cpp/BUILD.gn b/services/network/public/cpp/BUILD.gn
index b8bf0e38..5bc8119 100644
--- a/services/network/public/cpp/BUILD.gn
+++ b/services/network/public/cpp/BUILD.gn
@@ -143,6 +143,8 @@
     "resource_request.h",
     "resource_request_body.cc",
     "resource_request_body.h",
+    "site_for_cookies_mojom_traits.cc",
+    "site_for_cookies_mojom_traits.h",
     "url_loader_completion_status.cc",
     "url_loader_completion_status.h",
     "url_request_mojom_traits.cc",
@@ -217,6 +219,7 @@
     "network_quality_tracker_unittest.cc",
     "proxy_config_mojom_traits_unittest.cc",
     "simple_url_loader_unittest.cc",
+    "site_for_cookies_mojom_traits_unittest.cc",
     "source_stream_to_data_pipe_unittest.cc",
     "url_request_mojom_traits_unittest.cc",
   ]
diff --git a/services/network/public/cpp/content_security_policy.cc b/services/network/public/cpp/content_security_policy.cc
index 3c83f5d..d656fff 100644
--- a/services/network/public/cpp/content_security_policy.cc
+++ b/services/network/public/cpp/content_security_policy.cc
@@ -301,29 +301,58 @@
   return true;
 }
 
+// Parses the frame-ancestor directive of a Content-Security-Policy header.
+bool ParseFrameAncestors(
+    const mojom::ContentSecurityPolicyPtr& content_security_policy_ptr,
+    base::StringPiece frame_ancestors_value) {
+  // A frame-ancestors directive has already been parsed. Skip further
+  // frame-ancestors directives per
+  // https://www.w3.org/TR/CSP3/#parse-serialized-policy.
+  if (FindDirective(mojom::CSPDirective::Name::FrameAncestors,
+                    &(content_security_policy_ptr->directives))) {
+    // TODO(arthursonzogni, lfg): Should a warning be fired to the user here?
+    return true;
+  }
+
+  auto source_list = ParseFrameAncestorsSourceList(frame_ancestors_value);
+
+  // TODO(lfg): Emit a warning to the user when parsing an invalid
+  // expression.
+  if (!source_list)
+    return false;
+
+  content_security_policy_ptr->directives.push_back(mojom::CSPDirective::New(
+      mojom::CSPDirective::Name::FrameAncestors, std::move(source_list)));
+
+  return true;
+}
+
+// Parses the report-uri directive of a Content-Security-Policy header.
+bool ParseReportEndpoint(
+    const mojom::ContentSecurityPolicyPtr& content_security_policy_ptr,
+    const GURL& base_url,
+    base::StringPiece header_value,
+    bool using_reporting_api) {
+  // A report-uri directive has already been parsed. Skip further directives per
+  // https://www.w3.org/TR/CSP3/#parse-serialized-policy.
+  if (!content_security_policy_ptr->report_endpoints.empty())
+    return true;
+
+  if (!ParseReportDirective(base_url, header_value, using_reporting_api,
+                            &(content_security_policy_ptr->report_endpoints))) {
+    // TODO(lfg): Emit a warning to the user when parsing an invalid
+    // expression.
+    return false;
+  }
+
+  return true;
+}
+
 }  // namespace
 
 ContentSecurityPolicy::ContentSecurityPolicy() = default;
 ContentSecurityPolicy::~ContentSecurityPolicy() = default;
 
-ContentSecurityPolicy::ContentSecurityPolicy(
-    mojom::ContentSecurityPolicyPtr content_security_policy_ptr)
-    : content_security_policy_ptr_(std::move(content_security_policy_ptr)) {}
-
-ContentSecurityPolicy::ContentSecurityPolicy(const ContentSecurityPolicy& other)
-    : content_security_policy_ptr_(other.content_security_policy_ptr_.Clone()) {
-}
-
-ContentSecurityPolicy::ContentSecurityPolicy(ContentSecurityPolicy&& other) =
-    default;
-
-ContentSecurityPolicy& ContentSecurityPolicy::operator=(
-    const ContentSecurityPolicy& other) {
-  content_security_policy_ptr_ = other.content_security_policy_ptr_.Clone();
-
-  return *this;
-}
-
 bool ContentSecurityPolicy::Parse(const GURL& base_url,
                                   const net::HttpResponseHeaders& headers) {
   size_t iter = 0;
@@ -338,34 +367,29 @@
 
 bool ContentSecurityPolicy::Parse(const GURL& base_url,
                                   base::StringPiece header_value) {
-  if (!content_security_policy_ptr_) {
-    content_security_policy_ptr_ = mojom::ContentSecurityPolicy::New();
-  }
-
   // RFC7230, section 3.2.2 specifies that headers appearing multiple times can
   // be combined with a comma. Walk the header string, and parse each comma
   // separated chunk as a separate header.
-  //
-  // TODO(arthursonzogni, lfg): The ContentSecurityPolicy policy shouldn't be
-  // combined. Several ContentSecurityPolicies should be produced, not one.
   for (const auto& header :
        base::SplitStringPiece(header_value, ",", base::TRIM_WHITESPACE,
                               base::SPLIT_WANT_NONEMPTY)) {
     DirectivesMap directives = ParseHeaderValue(header);
+    auto content_security_policy_ptr = mojom::ContentSecurityPolicy::New();
 
     auto frame_ancestors = directives.find("frame-ancestors");
     if (frame_ancestors != directives.end()) {
-      if (!ParseFrameAncestors(frame_ancestors->second)) {
-        content_security_policy_ptr_.reset();
+      if (!ParseFrameAncestors(content_security_policy_ptr,
+                               frame_ancestors->second)) {
+        content_security_policy_ptr.reset();
         return false;
       }
     }
 
     auto report_endpoints = directives.find("report-to");
     if (report_endpoints != directives.end()) {
-      if (!content_security_policy_ptr_->use_reporting_api) {
-        content_security_policy_ptr_->use_reporting_api = true;
-        content_security_policy_ptr_->report_endpoints.clear();
+      if (!content_security_policy_ptr->use_reporting_api) {
+        content_security_policy_ptr->use_reporting_api = true;
+        content_security_policy_ptr->report_endpoints.clear();
       }
     } else {
       report_endpoints = directives.find("report-uri");
@@ -373,55 +397,15 @@
 
     if (report_endpoints != directives.end()) {
       if (!ParseReportEndpoint(
-              base_url, report_endpoints->second,
-              content_security_policy_ptr_->use_reporting_api)) {
-        content_security_policy_ptr_.reset();
+              content_security_policy_ptr, base_url, report_endpoints->second,
+              content_security_policy_ptr->use_reporting_api)) {
+        content_security_policy_ptr.reset();
         return false;
       }
     }
-  }
 
-  return true;
-}
-
-bool ContentSecurityPolicy::ParseFrameAncestors(
-    base::StringPiece frame_ancestors_value) {
-  // A frame-ancestors directive has already been parsed. Skip further
-  // frame-ancestors directives per
-  // https://www.w3.org/TR/CSP3/#parse-serialized-policy.
-  if (FindDirective(mojom::CSPDirective::Name::FrameAncestors,
-                    &(content_security_policy_ptr_->directives))) {
-    // TODO(arthursonzogni, lfg): Should a warning be fired to the user here?
-    return true;
-  }
-
-  auto source_list = ParseFrameAncestorsSourceList(frame_ancestors_value);
-
-  // TODO(lfg): Emit a warning to the user when parsing an invalid
-  // expression.
-  if (!source_list)
-    return false;
-
-  content_security_policy_ptr_->directives.push_back(mojom::CSPDirective::New(
-      mojom::CSPDirective::Name::FrameAncestors, std::move(source_list)));
-
-  return true;
-}
-
-bool ContentSecurityPolicy::ParseReportEndpoint(const GURL& base_url,
-                                                base::StringPiece header_value,
-                                                bool using_reporting_api) {
-  // A report-uri directive has already been parsed. Skip further directives per
-  // https://www.w3.org/TR/CSP3/#parse-serialized-policy.
-  if (!content_security_policy_ptr_->report_endpoints.empty())
-    return true;
-
-  if (!ParseReportDirective(
-          base_url, header_value, using_reporting_api,
-          &(content_security_policy_ptr_->report_endpoints))) {
-    // TODO(lfg): Emit a warning to the user when parsing an invalid
-    // expression.
-    return false;
+    content_security_policies_.push_back(
+        std::move(content_security_policy_ptr));
   }
 
   return true;
diff --git a/services/network/public/cpp/content_security_policy.h b/services/network/public/cpp/content_security_policy.h
index bde1a8f..7c65133 100644
--- a/services/network/public/cpp/content_security_policy.h
+++ b/services/network/public/cpp/content_security_policy.h
@@ -23,11 +23,8 @@
   ContentSecurityPolicy();
   ~ContentSecurityPolicy();
 
-  explicit ContentSecurityPolicy(
-      mojom::ContentSecurityPolicyPtr content_security_policy_ptr);
-  ContentSecurityPolicy(const ContentSecurityPolicy& other);
-  ContentSecurityPolicy(ContentSecurityPolicy&& other);
-  ContentSecurityPolicy& operator=(const ContentSecurityPolicy& other);
+  ContentSecurityPolicy(const ContentSecurityPolicy&) = delete;
+  ContentSecurityPolicy& operator=(const ContentSecurityPolicy&) = delete;
 
   // Parses the Content-Security-Policy headers specified in |headers| while
   // requesting |request_url|. The |request_url| is used for violation
@@ -38,24 +35,16 @@
   // Parses a Content-Security-Policy |header|.
   bool Parse(const GURL& base_url, base::StringPiece header);
 
-  const mojom::ContentSecurityPolicyPtr& content_security_policy_ptr() {
-    return content_security_policy_ptr_;
+  const std::vector<mojom::ContentSecurityPolicyPtr>&
+  content_security_policies() {
+    return content_security_policies_;
   }
-  mojom::ContentSecurityPolicyPtr TakeContentSecurityPolicy() {
-    return std::move(content_security_policy_ptr_);
+  std::vector<mojom::ContentSecurityPolicyPtr> TakeContentSecurityPolicy() {
+    return std::move(content_security_policies_);
   }
 
  private:
-
-  // Parses the frame-ancestor directive of a Content-Security-Policy header.
-  bool ParseFrameAncestors(base::StringPiece header_value);
-
-  // Parses the report-uri directive of a Content-Security-Policy header.
-  bool ParseReportEndpoint(const GURL& base_url,
-                           base::StringPiece header_value,
-                           bool using_reporting_api);
-
-  mojom::ContentSecurityPolicyPtr content_security_policy_ptr_;
+  std::vector<mojom::ContentSecurityPolicyPtr> content_security_policies_;
 };
 
 }  // namespace network
diff --git a/services/network/public/cpp/content_security_policy_unittest.cc b/services/network/public/cpp/content_security_policy_unittest.cc
index f68227f..3141df8 100644
--- a/services/network/public/cpp/content_security_policy_unittest.cc
+++ b/services/network/public/cpp/content_security_policy_unittest.cc
@@ -45,11 +45,11 @@
   policy.Parse(GURL("https://example.com/"), *headers);
 
   if (!expected_result) {
-    EXPECT_FALSE(policy.content_security_policy_ptr());
+    EXPECT_EQ(0U, policy.content_security_policies().size());
     return;
   }
   auto& frame_ancestors =
-      policy.content_security_policy_ptr()->directives[0]->source_list;
+      policy.content_security_policies()[0]->directives[0]->source_list;
   EXPECT_EQ(frame_ancestors->sources.size(),
             expected_result->parsed_sources.size());
   for (size_t i = 0; i < expected_result->parsed_sources.size(); i++) {
@@ -183,7 +183,7 @@
     policy.Parse(GURL("https://example.com/"), *headers);
 
     auto& frame_ancestors =
-        policy.content_security_policy_ptr()->directives[0]->source_list;
+        policy.content_security_policies()[0]->directives[0]->source_list;
     EXPECT_EQ(frame_ancestors->sources.size(), 1U);
     EXPECT_EQ(frame_ancestors->sources[0]->scheme, "");
     EXPECT_EQ(frame_ancestors->sources[0]->host, "example.com");
@@ -205,7 +205,7 @@
     policy.Parse(GURL("https://example.com/"), *headers);
 
     auto& frame_ancestors =
-        policy.content_security_policy_ptr()->directives[0]->source_list;
+        policy.content_security_policies()[0]->directives[0]->source_list;
     EXPECT_EQ(frame_ancestors->sources.size(), 1U);
     EXPECT_EQ(frame_ancestors->sources[0]->scheme, "");
     EXPECT_EQ(frame_ancestors->sources[0]->host, "example.org");
@@ -217,8 +217,8 @@
     EXPECT_EQ(frame_ancestors->allow_star, false);
   }
 
-  // Multiple CSP headers with multiple frame-ancestors directives present. Only
-  // the first one is considered.
+  // Multiple CSP headers with multiple frame-ancestors directives present.
+  // Multiple policies should be created.
   {
     scoped_refptr<net::HttpResponseHeaders> headers(
         new net::HttpResponseHeaders("HTTP/1.1 200 OK"));
@@ -227,17 +227,30 @@
     ContentSecurityPolicy policy;
     policy.Parse(GURL("https://example.com/"), *headers);
 
-    auto& frame_ancestors =
-        policy.content_security_policy_ptr()->directives[0]->source_list;
-    EXPECT_EQ(frame_ancestors->sources.size(), 1U);
-    EXPECT_EQ(frame_ancestors->sources[0]->scheme, "");
-    EXPECT_EQ(frame_ancestors->sources[0]->host, "example.com");
-    EXPECT_EQ(frame_ancestors->sources[0]->port, url::PORT_UNSPECIFIED);
-    EXPECT_EQ(frame_ancestors->sources[0]->path, "");
-    EXPECT_EQ(frame_ancestors->sources[0]->is_host_wildcard, false);
-    EXPECT_EQ(frame_ancestors->sources[0]->is_port_wildcard, false);
-    EXPECT_EQ(frame_ancestors->allow_self, false);
-    EXPECT_EQ(frame_ancestors->allow_star, false);
+    EXPECT_EQ(2U, policy.content_security_policies().size());
+    auto& frame_ancestors0 =
+        policy.content_security_policies()[0]->directives[0]->source_list;
+    auto& frame_ancestors1 =
+        policy.content_security_policies()[1]->directives[0]->source_list;
+    EXPECT_EQ(frame_ancestors0->sources.size(), 1U);
+    EXPECT_EQ(frame_ancestors0->sources[0]->scheme, "");
+    EXPECT_EQ(frame_ancestors0->sources[0]->host, "example.com");
+    EXPECT_EQ(frame_ancestors0->sources[0]->port, url::PORT_UNSPECIFIED);
+    EXPECT_EQ(frame_ancestors0->sources[0]->path, "");
+    EXPECT_EQ(frame_ancestors0->sources[0]->is_host_wildcard, false);
+    EXPECT_EQ(frame_ancestors0->sources[0]->is_port_wildcard, false);
+    EXPECT_EQ(frame_ancestors0->allow_self, false);
+    EXPECT_EQ(frame_ancestors0->allow_star, false);
+
+    EXPECT_EQ(frame_ancestors1->sources.size(), 1U);
+    EXPECT_EQ(frame_ancestors1->sources[0]->scheme, "");
+    EXPECT_EQ(frame_ancestors1->sources[0]->host, "example.org");
+    EXPECT_EQ(frame_ancestors1->sources[0]->port, url::PORT_UNSPECIFIED);
+    EXPECT_EQ(frame_ancestors1->sources[0]->path, "");
+    EXPECT_EQ(frame_ancestors1->sources[0]->is_host_wildcard, false);
+    EXPECT_EQ(frame_ancestors1->sources[0]->is_port_wildcard, false);
+    EXPECT_EQ(frame_ancestors1->allow_self, false);
+    EXPECT_EQ(frame_ancestors1->allow_star, false);
   }
 
   // Multiple CSP headers separated by ',' (RFC2616 section 4.2).
@@ -250,21 +263,22 @@
     ContentSecurityPolicy policy;
     policy.Parse(GURL("https://example.com/"), *headers);
 
-    auto& frame_ancestors =
-        policy.content_security_policy_ptr()->directives[0]->source_list;
-    EXPECT_EQ(frame_ancestors->sources.size(), 1U);
-    EXPECT_EQ(frame_ancestors->sources[0]->scheme, "");
-    EXPECT_EQ(frame_ancestors->sources[0]->host, "example.org");
-    EXPECT_EQ(frame_ancestors->sources[0]->port, url::PORT_UNSPECIFIED);
-    EXPECT_EQ(frame_ancestors->sources[0]->path, "");
-    EXPECT_EQ(frame_ancestors->sources[0]->is_host_wildcard, false);
-    EXPECT_EQ(frame_ancestors->sources[0]->is_port_wildcard, false);
-    EXPECT_EQ(frame_ancestors->allow_self, false);
-    EXPECT_EQ(frame_ancestors->allow_star, false);
+    EXPECT_EQ(2U, policy.content_security_policies().size());
+    auto& frame_ancestors1 =
+        policy.content_security_policies()[1]->directives[0]->source_list;
+    EXPECT_EQ(frame_ancestors1->sources.size(), 1U);
+    EXPECT_EQ(frame_ancestors1->sources[0]->scheme, "");
+    EXPECT_EQ(frame_ancestors1->sources[0]->host, "example.org");
+    EXPECT_EQ(frame_ancestors1->sources[0]->port, url::PORT_UNSPECIFIED);
+    EXPECT_EQ(frame_ancestors1->sources[0]->path, "");
+    EXPECT_EQ(frame_ancestors1->sources[0]->is_host_wildcard, false);
+    EXPECT_EQ(frame_ancestors1->sources[0]->is_port_wildcard, false);
+    EXPECT_EQ(frame_ancestors1->allow_self, false);
+    EXPECT_EQ(frame_ancestors1->allow_star, false);
   }
 
   // Multiple CSP headers separated by ',', with multiple frame-ancestors
-  // directives present. Only the first one is considered.
+  // directives present. Multiple policies should be created.
   {
     scoped_refptr<net::HttpResponseHeaders> headers(
         new net::HttpResponseHeaders("HTTP/1.1 200 OK"));
@@ -274,17 +288,30 @@
     ContentSecurityPolicy policy;
     policy.Parse(GURL("https://example.com/"), *headers);
 
-    auto& frame_ancestors =
-        policy.content_security_policy_ptr()->directives[0]->source_list;
-    EXPECT_EQ(frame_ancestors->sources.size(), 1U);
-    EXPECT_EQ(frame_ancestors->sources[0]->scheme, "");
-    EXPECT_EQ(frame_ancestors->sources[0]->host, "example.com");
-    EXPECT_EQ(frame_ancestors->sources[0]->port, url::PORT_UNSPECIFIED);
-    EXPECT_EQ(frame_ancestors->sources[0]->path, "");
-    EXPECT_EQ(frame_ancestors->sources[0]->is_host_wildcard, false);
-    EXPECT_EQ(frame_ancestors->sources[0]->is_port_wildcard, false);
-    EXPECT_EQ(frame_ancestors->allow_self, false);
-    EXPECT_EQ(frame_ancestors->allow_star, false);
+    EXPECT_EQ(2U, policy.content_security_policies().size());
+    auto& frame_ancestors0 =
+        policy.content_security_policies()[0]->directives[0]->source_list;
+    auto& frame_ancestors1 =
+        policy.content_security_policies()[1]->directives[0]->source_list;
+    EXPECT_EQ(frame_ancestors0->sources.size(), 1U);
+    EXPECT_EQ(frame_ancestors0->sources[0]->scheme, "");
+    EXPECT_EQ(frame_ancestors0->sources[0]->host, "example.com");
+    EXPECT_EQ(frame_ancestors0->sources[0]->port, url::PORT_UNSPECIFIED);
+    EXPECT_EQ(frame_ancestors0->sources[0]->path, "");
+    EXPECT_EQ(frame_ancestors0->sources[0]->is_host_wildcard, false);
+    EXPECT_EQ(frame_ancestors0->sources[0]->is_port_wildcard, false);
+    EXPECT_EQ(frame_ancestors0->allow_self, false);
+    EXPECT_EQ(frame_ancestors0->allow_star, false);
+
+    EXPECT_EQ(frame_ancestors1->sources.size(), 1U);
+    EXPECT_EQ(frame_ancestors1->sources[0]->scheme, "");
+    EXPECT_EQ(frame_ancestors1->sources[0]->host, "example.org");
+    EXPECT_EQ(frame_ancestors1->sources[0]->port, url::PORT_UNSPECIFIED);
+    EXPECT_EQ(frame_ancestors1->sources[0]->path, "");
+    EXPECT_EQ(frame_ancestors1->sources[0]->is_host_wildcard, false);
+    EXPECT_EQ(frame_ancestors1->sources[0]->is_port_wildcard, false);
+    EXPECT_EQ(frame_ancestors1->allow_self, false);
+    EXPECT_EQ(frame_ancestors1->allow_star, false);
   }
 
   // Both frame-ancestors and report-to directives present.
@@ -298,13 +325,13 @@
     policy.Parse(GURL("https://example.com/"), *headers);
 
     auto& report_endpoints =
-        policy.content_security_policy_ptr()->report_endpoints;
+        policy.content_security_policies()[0]->report_endpoints;
     EXPECT_EQ(report_endpoints.size(), 1U);
     EXPECT_EQ(report_endpoints[0], "http://example.com/report");
-    EXPECT_TRUE(policy.content_security_policy_ptr()->use_reporting_api);
+    EXPECT_TRUE(policy.content_security_policies()[0]->use_reporting_api);
 
     auto& frame_ancestors =
-        policy.content_security_policy_ptr()->directives[0]->source_list;
+        policy.content_security_policies()[0]->directives[0]->source_list;
     EXPECT_EQ(frame_ancestors->sources.size(), 1U);
     EXPECT_EQ(frame_ancestors->sources[0]->scheme, "");
     EXPECT_EQ(frame_ancestors->sources[0]->host, "example.com");
@@ -328,10 +355,10 @@
     policy.Parse(GURL("https://example.com/"), *headers);
 
     auto& report_endpoints =
-        policy.content_security_policy_ptr()->report_endpoints;
+        policy.content_security_policies()[0]->report_endpoints;
     EXPECT_EQ(report_endpoints.size(), 1U);
     EXPECT_EQ(report_endpoints[0], "http://example.com/report");
-    EXPECT_FALSE(policy.content_security_policy_ptr()->use_reporting_api);
+    EXPECT_FALSE(policy.content_security_policies()[0]->use_reporting_api);
   }
 
   // report-to directive.
@@ -344,10 +371,10 @@
     policy.Parse(GURL("https://example.com/"), *headers);
 
     auto& report_endpoints =
-        policy.content_security_policy_ptr()->report_endpoints;
+        policy.content_security_policies()[0]->report_endpoints;
     EXPECT_EQ(report_endpoints.size(), 1U);
     EXPECT_EQ(report_endpoints[0], "http://example.com/report");
-    EXPECT_TRUE(policy.content_security_policy_ptr()->use_reporting_api);
+    EXPECT_TRUE(policy.content_security_policies()[0]->use_reporting_api);
   }
 
   // Multiple directives. The report-to directive always takes priority.
@@ -355,19 +382,17 @@
     scoped_refptr<net::HttpResponseHeaders> headers(
         new net::HttpResponseHeaders("HTTP/1.1 200 OK"));
     headers->AddHeader(
-        "Content-Security-Policy: report-uri http://example.com/report1");
-    headers->AddHeader(
-        "Content-Security-Policy: report-uri http://example.com/report2");
-    headers->AddHeader(
-        "Content-Security-Policy: report-to http://example.com/report3");
+        "Content-Security-Policy: report-uri http://example.com/report1; "
+        "report-uri http://example.com/report2; report-to "
+        "http://example.com/report3");
     ContentSecurityPolicy policy;
     policy.Parse(GURL("https://example.com/"), *headers);
 
     auto& report_endpoints =
-        policy.content_security_policy_ptr()->report_endpoints;
+        policy.content_security_policies()[0]->report_endpoints;
     EXPECT_EQ(report_endpoints.size(), 1U);
     EXPECT_EQ(report_endpoints[0], "http://example.com/report3");
-    EXPECT_TRUE(policy.content_security_policy_ptr()->use_reporting_api);
+    EXPECT_TRUE(policy.content_security_policies()[0]->use_reporting_api);
   }
   {
     scoped_refptr<net::HttpResponseHeaders> headers(
@@ -380,10 +405,10 @@
     policy.Parse(GURL("https://example.com/"), *headers);
 
     auto& report_endpoints =
-        policy.content_security_policy_ptr()->report_endpoints;
+        policy.content_security_policies()[0]->report_endpoints;
     EXPECT_EQ(report_endpoints.size(), 1U);
     EXPECT_EQ(report_endpoints[0], "http://example.com/report1");
-    EXPECT_TRUE(policy.content_security_policy_ptr()->use_reporting_api);
+    EXPECT_TRUE(policy.content_security_policies()[0]->use_reporting_api);
   }
 }
 
diff --git a/services/network/public/cpp/net_ipc_param_traits.cc b/services/network/public/cpp/net_ipc_param_traits.cc
index 4791422..8871a012 100644
--- a/services/network/public/cpp/net_ipc_param_traits.cc
+++ b/services/network/public/cpp/net_ipc_param_traits.cc
@@ -547,6 +547,31 @@
   l->append(")");
 }
 
+void ParamTraits<net::SiteForCookies>::Write(base::Pickle* m,
+                                             const param_type& p) {
+  WriteParam(m, p.scheme());
+  WriteParam(m, p.registrable_domain());
+}
+
+bool ParamTraits<net::SiteForCookies>::Read(const base::Pickle* m,
+                                            base::PickleIterator* iter,
+                                            param_type* r) {
+  std::string scheme, registrable_domain;
+  if (!ReadParam(m, iter, &scheme) || !ReadParam(m, iter, &registrable_domain))
+    return false;
+
+  return net::SiteForCookies::FromWire(scheme, registrable_domain, r);
+}
+
+void ParamTraits<net::SiteForCookies>::Log(const param_type& p,
+                                           std::string* l) {
+  l->append("(");
+  LogParam(p.scheme(), l);
+  l->append(",");
+  LogParam(p.registrable_domain(), l);
+  l->append(")");
+}
+
 void ParamTraits<url::Origin>::Write(base::Pickle* m, const url::Origin& p) {
   WriteParam(m, p.GetTupleOrPrecursorTupleIfOpaque().scheme());
   WriteParam(m, p.GetTupleOrPrecursorTupleIfOpaque().host());
diff --git a/services/network/public/cpp/net_ipc_param_traits.h b/services/network/public/cpp/net_ipc_param_traits.h
index 651960d5..77cf635 100644
--- a/services/network/public/cpp/net_ipc_param_traits.h
+++ b/services/network/public/cpp/net_ipc_param_traits.h
@@ -219,6 +219,16 @@
 };
 
 template <>
+struct COMPONENT_EXPORT(NETWORK_CPP_BASE) ParamTraits<net::SiteForCookies> {
+  typedef net::SiteForCookies param_type;
+  static void Write(base::Pickle* m, const param_type& p);
+  static bool Read(const base::Pickle* m,
+                   base::PickleIterator* iter,
+                   param_type* r);
+  static void Log(const param_type& p, std::string* l);
+};
+
+template <>
 struct COMPONENT_EXPORT(NETWORK_CPP_BASE) ParamTraits<url::Origin> {
   typedef url::Origin param_type;
   static void Write(base::Pickle* m, const param_type& p);
diff --git a/services/network/public/cpp/resource_request.cc b/services/network/public/cpp/resource_request.cc
index 7006d1a..deadecab 100644
--- a/services/network/public/cpp/resource_request.cc
+++ b/services/network/public/cpp/resource_request.cc
@@ -25,7 +25,7 @@
 
 bool ResourceRequest::EqualsForTesting(const ResourceRequest& request) const {
   return method == request.method && url == request.url &&
-         site_for_cookies == request.site_for_cookies &&
+         site_for_cookies.IsEquivalent(request.site_for_cookies) &&
          attach_same_site_cookies == request.attach_same_site_cookies &&
          update_first_party_url_on_redirect ==
              request.update_first_party_url_on_redirect &&
diff --git a/services/network/public/cpp/resource_request.h b/services/network/public/cpp/resource_request.h
index f6922ef3..7cbd7ae1 100644
--- a/services/network/public/cpp/resource_request.h
+++ b/services/network/public/cpp/resource_request.h
@@ -14,6 +14,7 @@
 #include "base/unguessable_token.h"
 #include "net/base/network_isolation_key.h"
 #include "net/base/request_priority.h"
+#include "net/cookies/site_for_cookies.h"
 #include "net/http/http_request_headers.h"
 #include "net/url_request/url_request.h"
 #include "services/network/public/cpp/resource_request_body.h"
@@ -60,7 +61,7 @@
   // of each field.
   std::string method = "GET";
   GURL url;
-  GURL site_for_cookies;
+  net::SiteForCookies site_for_cookies;
   bool attach_same_site_cookies = false;
   bool update_first_party_url_on_redirect = false;
   base::Optional<url::Origin> request_initiator;
diff --git a/services/network/public/cpp/site_for_cookies.typemap b/services/network/public/cpp/site_for_cookies.typemap
new file mode 100644
index 0000000..7b1a7c8
--- /dev/null
+++ b/services/network/public/cpp/site_for_cookies.typemap
@@ -0,0 +1,12 @@
+# 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.↵
+
+mojom = "//services/network/public/mojom/site_for_cookies.mojom"
+public_headers = [ "//net/cookies/site_for_cookies.h" ]
+traits_headers =
+    [ "//services/network/public/cpp/site_for_cookies_mojom_traits.h" ]
+public_deps = [
+  "//net",
+]
+type_mappings = [ "network.mojom.SiteForCookies=::net::SiteForCookies" ]
diff --git a/services/network/public/cpp/site_for_cookies_mojom_traits.cc b/services/network/public/cpp/site_for_cookies_mojom_traits.cc
new file mode 100644
index 0000000..fb732886
--- /dev/null
+++ b/services/network/public/cpp/site_for_cookies_mojom_traits.cc
@@ -0,0 +1,22 @@
+// 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 "services/network/public/cpp/site_for_cookies_mojom_traits.h"
+#include "net/base/features.h"
+
+namespace mojo {
+
+bool StructTraits<network::mojom::SiteForCookiesDataView, net::SiteForCookies>::
+    Read(network::mojom::SiteForCookiesDataView data,
+         net::SiteForCookies* out) {
+  std::string scheme, registrable_domain;
+  if (!data.ReadScheme(&scheme))
+    return false;
+  if (!data.ReadRegistrableDomain(&registrable_domain))
+    return false;
+
+  return net::SiteForCookies::FromWire(scheme, registrable_domain, out);
+}
+
+}  // namespace mojo
diff --git a/services/network/public/cpp/site_for_cookies_mojom_traits.h b/services/network/public/cpp/site_for_cookies_mojom_traits.h
new file mode 100644
index 0000000..25c0c13
--- /dev/null
+++ b/services/network/public/cpp/site_for_cookies_mojom_traits.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 SERVICES_NETWORK_PUBLIC_CPP_SITE_FOR_COOKIES_MOJOM_TRAITS_H_
+#define SERVICES_NETWORK_PUBLIC_CPP_SITE_FOR_COOKIES_MOJOM_TRAITS_H_
+
+#include <string>
+
+#include "mojo/public/cpp/bindings/struct_traits.h"
+#include "net/cookies/site_for_cookies.h"
+#include "services/network/public/mojom/site_for_cookies.mojom-shared.h"
+
+namespace mojo {
+
+template <>
+struct COMPONENT_EXPORT(NETWORK_CPP_BASE)
+    StructTraits<network::mojom::SiteForCookiesDataView, net::SiteForCookies> {
+  static const std::string& scheme(const net::SiteForCookies& input) {
+    return input.scheme();
+  }
+
+  static const std::string& registrable_domain(
+      const net::SiteForCookies& input) {
+    return input.registrable_domain();
+  }
+
+  static bool Read(network::mojom::SiteForCookiesDataView data,
+                   net::SiteForCookies* out);
+};
+
+}  // namespace mojo
+
+#endif  // SERVICES_NETWORK_PUBLIC_CPP_SITE_FOR_COOKIES_MOJOM_TRAITS_H_
diff --git a/services/network/public/cpp/site_for_cookies_mojom_traits_unittest.cc b/services/network/public/cpp/site_for_cookies_mojom_traits_unittest.cc
new file mode 100644
index 0000000..a970e9b8
--- /dev/null
+++ b/services/network/public/cpp/site_for_cookies_mojom_traits_unittest.cc
@@ -0,0 +1,30 @@
+// 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 "services/network/public/cpp/site_for_cookies_mojom_traits.h"
+
+#include "mojo/public/cpp/test_support/test_utils.h"
+#include "services/network/public/mojom/site_for_cookies.mojom.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "url/gurl.h"
+
+namespace mojo {
+
+TEST(SiteForCookiesMojomTraitsTest, SerializeAndDeserialize) {
+  std::vector<net::SiteForCookies> keys = {
+      net::SiteForCookies(),
+      net::SiteForCookies::FromUrl(GURL("file:///whatver")),
+      net::SiteForCookies::FromUrl(GURL("ws://127.0.0.1/things")),
+      net::SiteForCookies::FromUrl(GURL("https://example.com"))};
+
+  for (auto original : keys) {
+    net::SiteForCookies copied;
+    EXPECT_TRUE(
+        mojo::test::SerializeAndDeserialize<network::mojom::SiteForCookies>(
+            &original, &copied));
+    EXPECT_TRUE(original.IsEquivalent(copied));
+  }
+}
+
+}  // namespace mojo
diff --git a/services/network/public/cpp/typemaps.gni b/services/network/public/cpp/typemaps.gni
index 1408be1..e23ad40 100644
--- a/services/network/public/cpp/typemaps.gni
+++ b/services/network/public/cpp/typemaps.gni
@@ -27,6 +27,7 @@
   "//services/network/public/cpp/p2p.typemap",
   "//services/network/public/cpp/proxy_config.typemap",
   "//services/network/public/cpp/proxy_config_with_annotation.typemap",
+  "//services/network/public/cpp/site_for_cookies.typemap",
   "//services/network/public/cpp/url_loader_completion_status.typemap",
   "//services/network/public/cpp/url_request.typemap",
   "//services/network/public/cpp/url_request_redirect_info.typemap",
diff --git a/services/network/public/cpp/url_request_mojom_traits.h b/services/network/public/cpp/url_request_mojom_traits.h
index 0d2bd3eb..0486795 100644
--- a/services/network/public/cpp/url_request_mojom_traits.h
+++ b/services/network/public/cpp/url_request_mojom_traits.h
@@ -22,6 +22,7 @@
 #include "services/network/public/cpp/network_isolation_key_mojom_traits.h"
 #include "services/network/public/cpp/resource_request.h"
 #include "services/network/public/cpp/resource_request_body.h"
+#include "services/network/public/cpp/site_for_cookies_mojom_traits.h"
 #include "services/network/public/mojom/chunked_data_pipe_getter.mojom.h"
 #include "services/network/public/mojom/data_pipe_getter.mojom.h"
 #include "services/network/public/mojom/url_loader.mojom-shared.h"
@@ -81,7 +82,8 @@
   static const GURL& url(const network::ResourceRequest& request) {
     return request.url;
   }
-  static const GURL& site_for_cookies(const network::ResourceRequest& request) {
+  static const net::SiteForCookies& site_for_cookies(
+      const network::ResourceRequest& request) {
     return request.site_for_cookies;
   }
   static bool attach_same_site_cookies(
diff --git a/services/network/public/cpp/url_request_mojom_traits_unittest.cc b/services/network/public/cpp/url_request_mojom_traits_unittest.cc
index 53e74aed..373f33b1 100644
--- a/services/network/public/cpp/url_request_mojom_traits_unittest.cc
+++ b/services/network/public/cpp/url_request_mojom_traits_unittest.cc
@@ -47,7 +47,8 @@
   network::ResourceRequest original;
   original.method = "POST";
   original.url = GURL("https://example.com/resources/dummy.xml");
-  original.site_for_cookies = GURL("https://example.com/index.html");
+  original.site_for_cookies =
+      net::SiteForCookies::FromUrl(GURL("https://example.com/index.html"));
   original.attach_same_site_cookies = true;
   original.update_first_party_url_on_redirect = false;
   original.request_initiator = url::Origin::Create(original.url);
diff --git a/services/network/public/mojom/BUILD.gn b/services/network/public/mojom/BUILD.gn
index e0da735..74e526c8 100644
--- a/services/network/public/mojom/BUILD.gn
+++ b/services/network/public/mojom/BUILD.gn
@@ -135,6 +135,7 @@
     "quic_transport.mojom",
     "referrer_policy.mojom",
     "restricted_cookie_manager.mojom",
+    "site_for_cookies.mojom",
     "ssl_config.mojom",
     "tcp_socket.mojom",
     "tls_socket.mojom",
diff --git a/services/network/public/mojom/site_for_cookies.mojom b/services/network/public/mojom/site_for_cookies.mojom
new file mode 100644
index 0000000..1b1910c
--- /dev/null
+++ b/services/network/public/mojom/site_for_cookies.mojom
@@ -0,0 +1,13 @@
+// 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.
+
+module network.mojom;
+
+// Mapped to net::SiteForCookies.
+struct SiteForCookies {
+  // These fields should not be used directly, but rather through the mapped
+  // net::SiteForCookies.
+  string scheme;
+  string registrable_domain;
+};
diff --git a/services/network/public/mojom/url_loader.mojom b/services/network/public/mojom/url_loader.mojom
index 57940d9..65770e0 100644
--- a/services/network/public/mojom/url_loader.mojom
+++ b/services/network/public/mojom/url_loader.mojom
@@ -16,6 +16,7 @@
 import "services/network/public/mojom/http_request_headers.mojom";
 import "services/network/public/mojom/network_isolation_key.mojom";
 import "services/network/public/mojom/network_param.mojom";
+import "services/network/public/mojom/site_for_cookies.mojom";
 import "services/network/public/mojom/url_response_head.mojom";
 import "url/mojom/origin.mojom";
 import "url/mojom/url.mojom";
@@ -112,13 +113,13 @@
   // The absolute requested URL encoded in ASCII per the rules of RFC-2396.
   url.mojom.Url url;
 
-  // URL representing the first-party origin for the request, which may be
-  // checked by the third-party cookie blocking policy. This is usually the URL
-  // of the document in the top-level window. Leaving it empty may lead to
-  // undesired cookie blocking. Third-party cookie blocking can be bypassed by
-  // setting site_for_cookies = url, but this should ideally only be
-  // done if there really is no way to determine the correct value.
-  url.mojom.Url site_for_cookies;
+  // Represents the first-party for the request, which may be checked by
+  // the third-party cookie blocking policy or by some cookies. Leaving it empty
+  // may lead to undesired cookie blocking. Third-party cookie blocking can be
+  // bypassed by setting site_for_cookies = SiteForCookies::FromUrl(url), but
+  // this should only be done if the fetch can be reasonably said to be done by
+  // the same principal as what |url| represents.
+  SiteForCookies site_for_cookies;
 
   // Boolean indicating whether SameSite cookies are allowed to be attached
   // to the request. It should be used as additional input to network side
diff --git a/services/network/public/mojom/url_response_head.mojom b/services/network/public/mojom/url_response_head.mojom
index e9fd220e..dde752d 100644
--- a/services/network/public/mojom/url_response_head.mojom
+++ b/services/network/public/mojom/url_response_head.mojom
@@ -177,12 +177,15 @@
   // will be removed in the future.
   bool is_legacy_tls_version = false;
 
+  // https://fetch.spec.whatwg.org/#concept-response-timing-allow-passed
+  bool timing_allow_passed = false;
+
   // If the request received an authentication challenge, the challenge info is
   // recorded here.
   AuthChallengeInfo? auth_challenge_info;
 
   // The parsed content security policy from the response headers.
-  ContentSecurityPolicy? content_security_policy;
+  array<ContentSecurityPolicy> content_security_policy;
 
   // TimeTicks::Now() when the browser received the request from the renderer.
   mojo_base.mojom.TimeTicks request_start;
diff --git a/services/network/resource_scheduler/resource_scheduler.cc b/services/network/resource_scheduler/resource_scheduler.cc
index dc6e9db..5b9ac45 100644
--- a/services/network/resource_scheduler/resource_scheduler.cc
+++ b/services/network/resource_scheduler/resource_scheduler.cc
@@ -274,10 +274,6 @@
   void Start(StartMode start_mode) {
     DCHECK(!ready_);
 
-    // If the request was cancelled, do nothing.
-    if (!request_->status().is_success())
-      return;
-
     // If the request was deferred, need to start it.  Otherwise, will just not
     // defer starting it in the first place, and the value of |start_mode|
     // makes no difference.
diff --git a/services/network/url_loader.cc b/services/network/url_loader.cc
index 96ea5f6..634aa56 100644
--- a/services/network/url_loader.cc
+++ b/services/network/url_loader.cc
@@ -400,8 +400,7 @@
   url_request_ = url_request_context_->CreateRequest(
       GURL(request.url), request.priority, this, traffic_annotation);
   url_request_->set_method(request.method);
-  url_request_->set_site_for_cookies(
-      net::SiteForCookies::FromUrl(request.site_for_cookies));
+  url_request_->set_site_for_cookies(request.site_for_cookies);
   url_request_->set_attach_same_site_cookies(request.attach_same_site_cookies);
   url_request_->SetReferrer(request.referrer.GetAsReferrer().spec());
   url_request_->set_referrer_policy(request.referrer_policy);
@@ -756,9 +755,7 @@
   // avoids polluting the histogram data with data points from cached responses.
   should_pause_reading_body_ = true;
 
-  // If the data pipe has been set up and the request is in IO pending state,
-  // there is a pending read for the response body.
-  if (HasDataPipe() && url_request_->status().is_io_pending()) {
+  if (read_in_progress_) {
     update_body_read_before_paused_ = true;
   } else {
     body_read_before_paused_ = url_request_->GetRawBodyBytes();
@@ -781,7 +778,6 @@
                                    const net::RedirectInfo& redirect_info,
                                    bool* defer_redirect) {
   DCHECK(url_request == url_request_.get());
-  DCHECK(url_request->status().is_success());
 
   DCHECK(!deferred_redirect_url_);
   deferred_redirect_url_ = std::make_unique<GURL>(redirect_info.new_url);
@@ -1046,6 +1042,7 @@
 }
 
 void URLLoader::ReadMore() {
+  DCHECK(!read_in_progress_);
   // Once the MIME type is sniffed, all data is sent as soon as it is read from
   // the network.
   DCHECK(consumer_handle_.is_valid() || !pending_write_);
@@ -1081,6 +1078,7 @@
 
   auto buf = base::MakeRefCounted<NetToMojoIOBuffer>(
       pending_write_.get(), pending_write_buffer_offset_);
+  read_in_progress_ = true;
   int bytes_read = url_request_->Read(
       buf.get(), static_cast<int>(pending_write_buffer_size_ -
                                   pending_write_buffer_offset_));
@@ -1091,6 +1089,9 @@
 }
 
 void URLLoader::DidRead(int num_bytes, bool completed_synchronously) {
+  DCHECK(read_in_progress_);
+  read_in_progress_ = false;
+
   size_t new_data_offset = pending_write_buffer_offset_;
   if (num_bytes > 0) {
     pending_write_buffer_offset_ += num_bytes;
@@ -1167,7 +1168,7 @@
     }
   }
 
-  if (!url_request_->status().is_success() || num_bytes == 0) {
+  if (num_bytes <= 0) {
     // There may be no |pending_write_| if a URLRequestJob cancelled itself in
     // URLRequestJob::OnSuspend() after receiving headers, while there was no
     // pending read.
@@ -1177,8 +1178,8 @@
     // since the concern is the effect that entering suspend mode has on
     // sockets. See https://crbug.com/651120.
     if (pending_write_)
-      CompletePendingWrite(url_request_->status().is_success());
-    NotifyCompleted(url_request_->status().ToNetError());
+      CompletePendingWrite(num_bytes == 0);
+    NotifyCompleted(num_bytes);
     // |this| will have been deleted.
     return;
   }
diff --git a/services/network/url_loader.h b/services/network/url_loader.h
index 5648515..553f15d 100644
--- a/services/network/url_loader.h
+++ b/services/network/url_loader.h
@@ -297,6 +297,9 @@
   mojo::SimpleWatcher writable_handle_watcher_;
   mojo::SimpleWatcher peer_closed_handle_watcher_;
 
+  // True if there's a URLRequest::Read() call in progress.
+  bool read_in_progress_ = false;
+
   // Used when deferring sending the data to the client until mime sniffing is
   // finished.
   mojom::URLResponseHeadPtr response_;
diff --git a/services/network/url_loader_unittest.cc b/services/network/url_loader_unittest.cc
index 3563a4c6..e0f4bf8e 100644
--- a/services/network/url_loader_unittest.cc
+++ b/services/network/url_loader_unittest.cc
@@ -120,7 +120,8 @@
   ResourceRequest request;
   request.method = std::string(method);
   request.url = url;
-  request.site_for_cookies = url;  // bypass third-party cookie blocking
+  request.site_for_cookies =
+      net::SiteForCookies::FromUrl(url);  // bypass third-party cookie blocking
   url::Origin origin = url::Origin::Create(url);
   request.request_initiator = origin;  // ensure initiator is set
   request.is_main_frame = true;
@@ -4338,7 +4339,8 @@
     ResourceRequest request = CreateResourceRequest(
         "GET", https_server.GetURL("/set-cookie?a=b;Secure"));
     // Make this a third-party request.
-    request.site_for_cookies = GURL("http://www.example.com");
+    request.site_for_cookies =
+        net::SiteForCookies::FromUrl(GURL("http://www.example.com"));
 
     base::RunLoop delete_run_loop;
     mojo::PendingRemote<mojom::URLLoader> loader;
@@ -4392,7 +4394,8 @@
     ResourceRequest request = CreateResourceRequest(
         "GET", https_server.GetURL("/set-cookie?a=b;Secure"));
     // Make this a third-party request.
-    request.site_for_cookies = GURL("http://www.example.com");
+    request.site_for_cookies =
+        net::SiteForCookies::FromUrl(GURL("http://www.example.com"));
 
     base::RunLoop delete_run_loop;
     mojo::PendingRemote<mojom::URLLoader> loader;
diff --git a/services/service_manager/tests/connect/BUILD.gn b/services/service_manager/tests/connect/BUILD.gn
index f861a549..b7499748 100644
--- a/services/service_manager/tests/connect/BUILD.gn
+++ b/services/service_manager/tests/connect/BUILD.gn
@@ -25,9 +25,9 @@
   data_deps = [
     ":connect_test_app",
     ":connect_test_class_app",
-    ":connect_test_singleton_app",
     ":connect_test_exe",
     ":connect_test_package",
+    ":connect_test_singleton_app",
   ]
 }
 
diff --git a/services/service_manager/tests/lifecycle/BUILD.gn b/services/service_manager/tests/lifecycle/BUILD.gn
index 04cffb0..e8a2fc3 100644
--- a/services/service_manager/tests/lifecycle/BUILD.gn
+++ b/services/service_manager/tests/lifecycle/BUILD.gn
@@ -23,8 +23,8 @@
 
   data_deps = [
     ":lifecycle_unittest_app",
-    ":lifecycle_unittest_parent",
     ":lifecycle_unittest_package",
+    ":lifecycle_unittest_parent",
   ]
 }
 
diff --git a/services/tracing/public/cpp/BUILD.gn b/services/tracing/public/cpp/BUILD.gn
index e138cbe1..dd65c31 100644
--- a/services/tracing/public/cpp/BUILD.gn
+++ b/services/tracing/public/cpp/BUILD.gn
@@ -64,6 +64,7 @@
       "perfetto/task_runner.h",
       "perfetto/trace_event_data_source.cc",
       "perfetto/trace_event_data_source.h",
+      "perfetto/trace_time.h",
       "perfetto/traced_value_proto_writer.cc",
       "perfetto/traced_value_proto_writer.h",
       "perfetto/track_event_thread_local_event_sink.cc",
diff --git a/services/tracing/public/cpp/perfetto/system_trace_writer.h b/services/tracing/public/cpp/perfetto/system_trace_writer.h
index a4e81d25..cdc96cf 100644
--- a/services/tracing/public/cpp/perfetto/system_trace_writer.h
+++ b/services/tracing/public/cpp/perfetto/system_trace_writer.h
@@ -14,7 +14,9 @@
 #include "base/memory/ref_counted_memory.h"
 #include "base/memory/weak_ptr.h"
 #include "base/threading/sequenced_task_runner_handle.h"
+#include "base/trace_event/trace_event.h"
 #include "services/tracing/public/cpp/perfetto/perfetto_producer.h"
+#include "services/tracing/public/cpp/perfetto/trace_time.h"
 #include "third_party/perfetto/include/perfetto/ext/tracing/core/trace_writer.h"
 #include "third_party/perfetto/protos/perfetto/trace/chrome/chrome_trace_event.pbzero.h"
 #include "third_party/perfetto/protos/perfetto/trace/trace_packet.pbzero.h"
@@ -89,6 +91,9 @@
       {
         perfetto::TraceWriter::TracePacketHandle trace_packet_handle =
             trace_writer_->NewTracePacket();
+        trace_packet_handle->set_timestamp(
+            TRACE_TIME_TICKS_NOW().since_origin().InNanoseconds());
+        trace_packet_handle->set_timestamp_clock_id(kTraceClockId);
         ChromeEventBundleHandle event_bundle =
             ChromeEventBundleHandle(trace_packet_handle->set_chrome_events());
 
diff --git a/services/tracing/public/cpp/perfetto/trace_event_data_source.cc b/services/tracing/public/cpp/perfetto/trace_event_data_source.cc
index 2c264eae..0cb55522 100644
--- a/services/tracing/public/cpp/perfetto/trace_event_data_source.cc
+++ b/services/tracing/public/cpp/perfetto/trace_event_data_source.cc
@@ -36,6 +36,7 @@
 #include "services/tracing/public/cpp/perfetto/macros.h"
 #include "services/tracing/public/cpp/perfetto/perfetto_producer.h"
 #include "services/tracing/public/cpp/perfetto/perfetto_traced_process.h"
+#include "services/tracing/public/cpp/perfetto/trace_time.h"
 #include "services/tracing/public/cpp/perfetto/traced_value_proto_writer.h"
 #include "services/tracing/public/cpp/perfetto/track_event_thread_local_event_sink.h"
 #include "services/tracing/public/cpp/trace_event_args_whitelist.h"
@@ -47,7 +48,6 @@
 #include "third_party/perfetto/include/perfetto/ext/tracing/core/trace_writer.h"
 #include "third_party/perfetto/protos/perfetto/trace/chrome/chrome_metadata.pbzero.h"
 #include "third_party/perfetto/protos/perfetto/trace/chrome/chrome_trace_event.pbzero.h"
-#include "third_party/perfetto/protos/perfetto/trace/clock_snapshot.pbzero.h"
 #include "third_party/perfetto/protos/perfetto/trace/trace_packet.pbzero.h"
 #include "third_party/perfetto/protos/perfetto/trace/track_event/chrome_histogram_sample.pbzero.h"
 #include "third_party/perfetto/protos/perfetto/trace/track_event/process_descriptor.pbzero.h"
@@ -103,19 +103,6 @@
 #endif  // defined(OS_ANDROID) && defined(OFFICIAL_BUILD)
 }
 
-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA)
-// Linux, Android, and Fuchsia all use CLOCK_MONOTONIC. See crbug.com/166153
-// about efforts to unify base::TimeTicks across all platforms.
-constexpr perfetto::protos::pbzero::ClockSnapshot::Clock::BuiltinClocks
-    kTraceClockId = perfetto::protos::pbzero::ClockSnapshot::Clock::MONOTONIC;
-#else
-// Mac and Windows TimeTicks advance when sleeping, so are closest to BOOTTIME
-// in behavior.
-// TODO(eseckler): Support specifying Mac/Win platform clocks in BuiltinClocks.
-constexpr perfetto::protos::pbzero::ClockSnapshot::Clock::BuiltinClocks
-    kTraceClockId = perfetto::protos::pbzero::ClockSnapshot::Clock::BOOTTIME;
-#endif
-
 static_assert(
     sizeof(TraceEventDataSource::SessionFlags) <= sizeof(uint64_t),
     "SessionFlags should remain small to ensure lock-free atomic operations");
@@ -1041,7 +1028,8 @@
     }
     trace_packet = trace_writer_->NewTracePacket();
   }
-  trace_packet->set_incremental_state_cleared(true);
+  trace_packet->set_sequence_flags(
+      perfetto::protos::pbzero::TracePacket::SEQ_INCREMENTAL_STATE_CLEARED);
   trace_packet->set_timestamp(
       TRACE_TIME_TICKS_NOW().since_origin().InNanoseconds());
   trace_packet->set_timestamp_clock_id(kTraceClockId);
diff --git a/services/tracing/public/cpp/perfetto/trace_event_data_source_unittest.cc b/services/tracing/public/cpp/perfetto/trace_event_data_source_unittest.cc
index 5193c7f..02cbd74b 100644
--- a/services/tracing/public/cpp/perfetto/trace_event_data_source_unittest.cc
+++ b/services/tracing/public/cpp/perfetto/trace_event_data_source_unittest.cc
@@ -301,7 +301,9 @@
 
     // ThreadDescriptor is only emitted when incremental state was reset, and
     // thus also always serves as indicator for the state reset to the consumer.
-    EXPECT_TRUE(packet->incremental_state_cleared());
+    EXPECT_EQ(packet->sequence_flags(),
+              static_cast<uint32_t>(perfetto::protos::pbzero::TracePacket::
+                                        SEQ_INCREMENTAL_STATE_CLEARED));
   }
 
   void ExpectProcessDescriptor(const perfetto::protos::TracePacket* packet) {
@@ -320,6 +322,11 @@
                         int64_t absolute_timestamp = 0,
                         int32_t tid_override = 0,
                         int32_t pid_override = 0) {
+    // All TrackEvents need incremental state for delta timestamps / interning.
+    EXPECT_EQ(packet->sequence_flags(),
+              static_cast<uint32_t>(perfetto::protos::pbzero::TracePacket::
+                                        SEQ_NEEDS_INCREMENTAL_STATE));
+
     EXPECT_TRUE(packet->has_track_event());
 
     if (absolute_timestamp > 0) {
diff --git a/services/tracing/public/cpp/perfetto/trace_time.h b/services/tracing/public/cpp/perfetto/trace_time.h
new file mode 100644
index 0000000..3003e25
--- /dev/null
+++ b/services/tracing/public/cpp/perfetto/trace_time.h
@@ -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.
+
+#ifndef SERVICES_TRACING_PUBLIC_CPP_PERFETTO_TRACE_TIME_H_
+#define SERVICES_TRACING_PUBLIC_CPP_PERFETTO_TRACE_TIME_H_
+
+#include "build/build_config.h"
+#include "third_party/perfetto/protos/perfetto/trace/clock_snapshot.pbzero.h"
+
+namespace tracing {
+
+#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA)
+// Linux, Android, and Fuchsia all use CLOCK_MONOTONIC. See crbug.com/166153
+// about efforts to unify base::TimeTicks across all platforms.
+constexpr perfetto::protos::pbzero::ClockSnapshot::Clock::BuiltinClocks
+    kTraceClockId = perfetto::protos::pbzero::ClockSnapshot::Clock::MONOTONIC;
+#else
+// Mac and Windows TimeTicks advance when sleeping, so are closest to BOOTTIME
+// in behavior.
+// TODO(eseckler): Support specifying Mac/Win platform clocks in BuiltinClocks.
+constexpr perfetto::protos::pbzero::ClockSnapshot::Clock::BuiltinClocks
+    kTraceClockId = perfetto::protos::pbzero::ClockSnapshot::Clock::BOOTTIME;
+#endif
+
+}  // namespace tracing
+
+#endif  // SERVICES_TRACING_PUBLIC_CPP_PERFETTO_TRACE_TIME_H_
diff --git a/services/tracing/public/cpp/perfetto/track_event_thread_local_event_sink.cc b/services/tracing/public/cpp/perfetto/track_event_thread_local_event_sink.cc
index 6648aa2..f2f192e 100644
--- a/services/tracing/public/cpp/perfetto/track_event_thread_local_event_sink.cc
+++ b/services/tracing/public/cpp/perfetto/track_event_thread_local_event_sink.cc
@@ -230,14 +230,22 @@
   }
 }
 
-void TrackEventThreadLocalEventSink::PrepareTrackEvent(
+TrackEvent* TrackEventThreadLocalEventSink::PrepareTrackEvent(
     base::trace_event::TraceEvent* trace_event,
     base::trace_event::TraceEventHandle* handle,
-    TrackEvent* track_event) {
+    protozero::MessageHandle<perfetto::protos::pbzero::TracePacket>*
+        trace_packet) {
   // Each event's updates to InternedData are flushed at the end of
   // AddTraceEvent().
   DCHECK(pending_interning_updates_.empty());
 
+  // Delta encoded timestamps and interned data require incremental state.
+  (*trace_packet)
+      ->set_sequence_flags(
+          perfetto::protos::pbzero::TracePacket::SEQ_NEEDS_INCREMENTAL_STATE);
+
+  TrackEvent* track_event = (*trace_packet)->set_track_event();
+
   char phase = trace_event->phase();
 
   // Split COMPLETE events into BEGIN/END pairs. We write the BEGIN here, and
@@ -567,6 +575,8 @@
     interned_source_locations_.Clear();
     interned_log_message_bodies_.Clear();
   }
+
+  return track_event;
 }
 
 void TrackEventThreadLocalEventSink::EmitStoredInternedData(
@@ -718,7 +728,8 @@
   // Emit a new thread descriptor in a separate packet, where we also set
   // the |incremental_state_cleared| flag.
   auto trace_packet = trace_writer_->NewTracePacket();
-  trace_packet->set_incremental_state_cleared(true);
+  trace_packet->set_sequence_flags(
+      perfetto::protos::pbzero::TracePacket::SEQ_INCREMENTAL_STATE_CLEARED);
   EmitThreadDescriptor(&trace_packet, trace_event, explicit_timestamp);
   reset_incremental_state_ = false;
 }
diff --git a/services/tracing/public/cpp/perfetto/track_event_thread_local_event_sink.h b/services/tracing/public/cpp/perfetto/track_event_thread_local_event_sink.h
index 9bb6f4e..d876d3a 100644
--- a/services/tracing/public/cpp/perfetto/track_event_thread_local_event_sink.h
+++ b/services/tracing/public/cpp/perfetto/track_event_thread_local_event_sink.h
@@ -76,12 +76,16 @@
   void ResetIncrementalStateIfNeeded(
       base::trace_event::TraceEvent* trace_event);
 
-  // Fills in all the fields in |track_event| that can be directly deduced from
-  // |trace_event|. Returns all the updates needed to be emitted into the
-  // |InternedData| field.
-  void PrepareTrackEvent(base::trace_event::TraceEvent* trace_event,
-                         base::trace_event::TraceEventHandle* handle,
-                         perfetto::protos::pbzero::TrackEvent* track_event);
+  // Fills in all the fields in |trace_packet| that can be directly deduced from
+  // |trace_event|. Also fills all updates needed to be emitted into the
+  // |InternedData| field into |pending_interning_updates_|. Returns a pointer
+  // to the prepared TrackEvent proto, on which the caller may set further
+  // fields.
+  perfetto::protos::pbzero::TrackEvent* PrepareTrackEvent(
+      base::trace_event::TraceEvent* trace_event,
+      base::trace_event::TraceEventHandle* handle,
+      protozero::MessageHandle<perfetto::protos::pbzero::TracePacket>*
+          trace_packet);
 
   // Given a list of updates to the indexes will fill in |interned_data| to
   // reflect them.
@@ -96,9 +100,10 @@
     ResetIncrementalStateIfNeeded(trace_event);
 
     auto trace_packet = trace_writer_->NewTracePacket();
-    auto* track_event = trace_packet->set_track_event();
-    PrepareTrackEvent(trace_event, handle, track_event);
 
+    // Note: Since |track_event| is a protozero message under |trace_packet|, we
+    // can't modify |trace_packet| further until we're done with |track_event|.
+    auto* track_event = PrepareTrackEvent(trace_event, handle, &trace_packet);
     arg_func(perfetto::EventContext(track_event));
 
     if (!pending_interning_updates_.empty()) {
diff --git a/services/tracing/public/cpp/stack_sampling/tracing_sampler_profiler.cc b/services/tracing/public/cpp/stack_sampling/tracing_sampler_profiler.cc
index 4e390d02..df1e197 100644
--- a/services/tracing/public/cpp/stack_sampling/tracing_sampler_profiler.cc
+++ b/services/tracing/public/cpp/stack_sampling/tracing_sampler_profiler.cc
@@ -248,7 +248,8 @@
     interned_modules_.ResetEmittedState();
 
     auto trace_packet = trace_writer_->NewTracePacket();
-    trace_packet->set_incremental_state_cleared(true);
+    trace_packet->set_sequence_flags(
+        perfetto::protos::pbzero::TracePacket::SEQ_INCREMENTAL_STATE_CLEARED);
 
     // Note: Make sure ThreadDescriptors we emit here won't cause
     // metadata events to be emitted from the JSON exporter which conflict
@@ -272,6 +273,9 @@
   }
 
   auto trace_packet = trace_writer_->NewTracePacket();
+  // Delta encoded timestamps and interned data require incremental state.
+  trace_packet->set_sequence_flags(
+      perfetto::protos::pbzero::TracePacket::SEQ_NEEDS_INCREMENTAL_STATE);
   auto callstack_id = GetCallstackIDAndMaybeEmit(frames, &trace_packet);
   auto* streaming_profile_packet = trace_packet->set_streaming_profile_packet();
   streaming_profile_packet->add_callstack_iid(callstack_id);
diff --git a/services/video_capture/BUILD.gn b/services/video_capture/BUILD.gn
index aef23c4..5cda90b65 100644
--- a/services/video_capture/BUILD.gn
+++ b/services/video_capture/BUILD.gn
@@ -50,6 +50,10 @@
     "//services/viz/public/cpp/gpu",
   ]
 
+  deps = [
+    "//media/capture:capture_switches",
+  ]
+
   if (is_chromeos) {
     public_deps += [ "//media/capture/video/chromeos/mojom:cros_camera" ]
   }
diff --git a/services/video_capture/device_media_to_mojo_adapter.cc b/services/video_capture/device_media_to_mojo_adapter.cc
index b56cc785..15d48b81 100644
--- a/services/video_capture/device_media_to_mojo_adapter.cc
+++ b/services/video_capture/device_media_to_mojo_adapter.cc
@@ -8,7 +8,7 @@
 #include "base/command_line.h"
 #include "base/logging.h"
 #include "media/base/bind_to_current_loop.h"
-#include "media/base/media_switches.h"
+#include "media/capture/capture_switches.h"
 #include "media/capture/video/video_capture_buffer_pool_impl.h"
 #include "media/capture/video/video_capture_buffer_tracker_factory_impl.h"
 #include "media/capture/video/video_frame_receiver_on_task_runner.h"
diff --git a/skia/ext/SkDiscardableMemory_chrome.cc b/skia/ext/SkDiscardableMemory_chrome.cc
index 90adda1e..3a56127 100644
--- a/skia/ext/SkDiscardableMemory_chrome.cc
+++ b/skia/ext/SkDiscardableMemory_chrome.cc
@@ -8,6 +8,7 @@
 
 #include <utility>
 
+#include "base/bind_helpers.h"
 #include "base/memory/discardable_memory.h"
 #include "base/memory/discardable_memory_allocator.h"
 
@@ -37,7 +38,10 @@
 }
 
 SkDiscardableMemory* SkDiscardableMemory::Create(size_t bytes) {
-  return new SkDiscardableMemoryChrome(
-      base::DiscardableMemoryAllocator::GetInstance()
-          ->AllocateLockedDiscardableMemory(bytes));
+  // TODO(crbug.com/1034271): Make the caller handle a nullptr return value,
+  // and do not die when the allocation fails.
+  auto discardable = base::DiscardableMemoryAllocator::GetInstance()
+                         ->AllocateLockedDiscardableMemoryWithRetryOrDie(
+                             bytes, base::DoNothing());
+  return new SkDiscardableMemoryChrome(std::move(discardable));
 }
diff --git a/storage/browser/quota/quota_client.h b/storage/browser/quota/quota_client.h
index fcfe521..952eee9 100644
--- a/storage/browser/quota/quota_client.h
+++ b/storage/browser/quota/quota_client.h
@@ -36,14 +36,13 @@
       base::OnceCallback<void(blink::mojom::QuotaStatusCode status)>;
 
   enum ID {
-    kUnknown = 1 << 0,
-    kFileSystem = 1 << 1,
-    kDatabase = 1 << 2,
-    kAppcache = 1 << 3,
-    kIndexedDatabase = 1 << 4,
-    kServiceWorkerCache = 1 << 5,
-    kServiceWorker = 1 << 6,
-    kBackgroundFetch = 1 << 7,
+    kFileSystem = 1 << 0,
+    kDatabase = 1 << 1,
+    kAppcache = 1 << 2,
+    kIndexedDatabase = 1 << 3,
+    kServiceWorkerCache = 1 << 4,
+    kServiceWorker = 1 << 5,
+    kBackgroundFetch = 1 << 6,
     kAllClientsMask = -1,
   };
 
diff --git a/storage/browser/quota/quota_manager_unittest.cc b/storage/browser/quota/quota_manager_unittest.cc
index 30998ac..69c88a1 100644
--- a/storage/browser/quota/quota_manager_unittest.cc
+++ b/storage/browser/quota/quota_manager_unittest.cc
@@ -1535,12 +1535,14 @@
   task_environment_.RunUntilIdle();
   int64_t predelete_host_pers = usage();
 
-  for (size_t i = 0; i < base::size(kData1); ++i)
+  for (size_t i = 0; i < base::size(kData1); ++i) {
     quota_manager()->NotifyStorageAccessed(
         url::Origin::Create(GURL(kData1[i].origin)), kData1[i].type);
-  for (size_t i = 0; i < base::size(kData2); ++i)
+  }
+  for (size_t i = 0; i < base::size(kData2); ++i) {
     quota_manager()->NotifyStorageAccessed(
-        url::Origin::Create(GURL(kData2[i].origin)), kData2[i].type);
+       url::Origin::Create(GURL(kData2[i].origin)), kData2[i].type);
+  }
   task_environment_.RunUntilIdle();
 
   EvictOriginData(ToOrigin("http://foo.com/"), kTemp);
diff --git a/storage/browser/quota/usage_tracker.cc b/storage/browser/quota/usage_tracker.cc
index 573fca7..1c3e9b4 100644
--- a/storage/browser/quota/usage_tracker.cc
+++ b/storage/browser/quota/usage_tracker.cc
@@ -262,8 +262,6 @@
     info->usage = 0;
 
   switch (client) {
-    case QuotaClient::kUnknown:
-      break;
     case QuotaClient::kFileSystem:
       info->usage_breakdown->fileSystem += usage;
       break;
diff --git a/testing/buildbot/chromium.android.fyi.json b/testing/buildbot/chromium.android.fyi.json
index d57c2015..026c456 100644
--- a/testing/buildbot/chromium.android.fyi.json
+++ b/testing/buildbot/chromium.android.fyi.json
@@ -696,7 +696,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -751,7 +753,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -806,7 +810,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -861,7 +867,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -916,7 +924,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -971,7 +981,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -1026,7 +1038,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -1081,7 +1095,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -1137,7 +1153,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -1193,7 +1211,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -1248,7 +1268,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -1303,7 +1325,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -1358,7 +1382,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -1414,7 +1440,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -1469,7 +1497,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -1524,7 +1554,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -1579,7 +1611,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -1634,7 +1668,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -1689,7 +1725,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -1744,7 +1782,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -1799,7 +1839,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -1857,7 +1899,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -1913,7 +1957,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -1970,7 +2016,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -2025,7 +2073,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -2081,7 +2131,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -2139,7 +2191,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -2195,7 +2249,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -2253,7 +2309,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -2309,7 +2367,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -2365,7 +2425,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -2420,7 +2482,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -2475,7 +2539,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -2530,7 +2596,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -2585,7 +2653,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -2640,7 +2710,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -2695,7 +2767,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -2750,7 +2824,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -2805,7 +2881,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -2860,7 +2938,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -2915,7 +2995,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -2970,7 +3052,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -3025,7 +3109,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -3080,7 +3166,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -3135,7 +3223,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -3190,7 +3280,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -3245,7 +3337,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -3300,7 +3394,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -3355,7 +3451,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -3410,7 +3508,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -3465,7 +3565,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -3520,7 +3622,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -3575,7 +3679,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -3631,7 +3737,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -3686,7 +3794,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -3741,7 +3851,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -3796,7 +3908,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -3851,7 +3965,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -3906,7 +4022,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -3961,7 +4079,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -4016,7 +4136,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -4071,7 +4193,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -4126,7 +4250,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -4181,7 +4307,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -4237,7 +4365,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -4292,7 +4422,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -4347,7 +4479,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -4402,7 +4536,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -4457,7 +4593,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -4516,7 +4654,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -4572,7 +4712,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -4620,7 +4762,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -4653,7 +4797,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -4685,7 +4831,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -4717,7 +4865,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "idempotent": false,
@@ -4767,7 +4917,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -4822,7 +4974,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -4877,7 +5031,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -4932,7 +5088,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -4987,7 +5145,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -5042,7 +5202,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -5097,7 +5259,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -5152,7 +5316,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -5208,7 +5374,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -5264,7 +5432,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -5319,7 +5489,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -5374,7 +5546,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -5429,7 +5603,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -5485,7 +5661,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -5540,7 +5718,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -5595,7 +5775,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -5650,7 +5832,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -5705,7 +5889,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -5763,7 +5949,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -5819,7 +6007,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -5876,7 +6066,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -5931,7 +6123,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -5987,7 +6181,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -6045,7 +6241,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -6101,7 +6299,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -6159,7 +6359,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -6215,7 +6417,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -6271,7 +6475,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -6326,7 +6532,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -6381,7 +6589,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -6436,7 +6646,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -6491,7 +6703,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -6546,7 +6760,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -6601,7 +6817,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -6656,7 +6874,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -6711,7 +6931,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -6766,7 +6988,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -6821,7 +7045,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -6876,7 +7102,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -6931,7 +7159,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -6986,7 +7216,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -7041,7 +7273,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -7096,7 +7330,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -7151,7 +7387,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -7206,7 +7444,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -7261,7 +7501,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -7316,7 +7558,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -7371,7 +7615,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -7426,7 +7672,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -7481,7 +7729,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -7537,7 +7787,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -7592,7 +7844,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -7647,7 +7901,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -7702,7 +7958,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -7757,7 +8015,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -7812,7 +8072,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -7867,7 +8129,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -7922,7 +8186,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -7977,7 +8243,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -8032,7 +8300,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -8087,7 +8357,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -8143,7 +8415,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -8198,7 +8472,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -8253,7 +8529,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -8312,7 +8590,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
@@ -8368,7 +8648,9 @@
               "cpu": "x86-64",
               "device_os": null,
               "device_type": null,
-              "os": "Ubuntu-16.04"
+              "os": "Ubuntu-16.04",
+              "pool": "chromium.tests.avd",
+              "ssd": "1"
             }
           ],
           "named_caches": [
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json
index c97e6f28..f7f2e1b 100644
--- a/testing/buildbot/chromium.fyi.json
+++ b/testing/buildbot/chromium.fyi.json
@@ -28474,6 +28474,36 @@
       }
     ]
   },
+  "mac10.14-blink-rel-dummy": {
+    "isolated_scripts": [
+      {
+        "args": [
+          "--num-retries=3"
+        ],
+        "isolate_name": "blink_web_tests",
+        "merge": {
+          "args": [
+            "--verbose"
+          ],
+          "script": "//third_party/blink/tools/merge_web_test_results.py"
+        },
+        "name": "webkit_layout_tests",
+        "results_handler": "layout tests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "gpu": "8086:0a2e",
+              "hidpi": "0",
+              "os": "Mac-10.14.6"
+            }
+          ],
+          "hard_timeout": 900,
+          "shards": 20
+        }
+      }
+    ]
+  },
   "win-annotator-rel": {
     "scripts": [
       {
diff --git a/testing/buildbot/client.devtools-frontend.integration.json b/testing/buildbot/client.devtools-frontend.integration.json
index 7a02a2d..148b45e 100644
--- a/testing/buildbot/client.devtools-frontend.integration.json
+++ b/testing/buildbot/client.devtools-frontend.integration.json
@@ -27,6 +27,31 @@
       {
         "args": [
           "--num-retries=3",
+          "--layout-tests-directory=../../third_party/devtools-frontend/src/test/webtests/",
+          "http/tests/devtools"
+        ],
+        "isolate_name": "devtools_web_tests",
+        "merge": {
+          "args": [
+            "--verbose"
+          ],
+          "script": "//third_party/blink/tools/merge_web_test_results.py"
+        },
+        "name": "webkit_layout_from_devtools",
+        "results_handler": "layout tests",
+        "swarming": {
+          "can_use_on_swarming_builders": true,
+          "dimension_sets": [
+            {
+              "os": "Ubuntu-16.04"
+            }
+          ],
+          "shards": 4
+        }
+      },
+      {
+        "args": [
+          "--num-retries=3",
           "--fuzzy-diff"
         ],
         "isolate_name": "blink_web_tests",
diff --git a/testing/buildbot/generate_buildbot_json.py b/testing/buildbot/generate_buildbot_json.py
index 4fc29ad..aa51191 100755
--- a/testing/buildbot/generate_buildbot_json.py
+++ b/testing/buildbot/generate_buildbot_json.py
@@ -1098,6 +1098,7 @@
       'mac10.12-blink-rel-dummy',
       'mac10.13_retina-blink-rel-dummy',
       'mac10.13-blink-rel-dummy',
+      'mac10.14-blink-rel-dummy',
       'win7-blink-rel-dummy',
       'win10-blink-rel-dummy',
       'Dummy WebKit Mac10.13',
diff --git a/testing/buildbot/mixins.pyl b/testing/buildbot/mixins.pyl
index 6e0070b..967d82b9 100644
--- a/testing/buildbot/mixins.pyl
+++ b/testing/buildbot/mixins.pyl
@@ -481,6 +481,8 @@
       'dimensions': {
         'device_os': None,
         'device_type': None,
+        'pool': 'chromium.tests.avd',
+        'ssd': '1',
       },
       'named_caches': [
         {
@@ -533,6 +535,8 @@
       'dimensions': {
         'device_os': None,
         'device_type': None,
+        'pool': 'chromium.tests.avd',
+        'ssd': '1',
       },
       'named_caches': [
         {
diff --git a/testing/buildbot/test_suite_exceptions.pyl b/testing/buildbot/test_suite_exceptions.pyl
index 58613b7..55d6054 100644
--- a/testing/buildbot/test_suite_exceptions.pyl
+++ b/testing/buildbot/test_suite_exceptions.pyl
@@ -2024,6 +2024,11 @@
           'shards': 20,
         },
       },
+      'mac10.14-blink-rel-dummy': {
+        'swarming': {
+          'shards': 20,
+        },
+      },
       'WebKit Linux composite_after_paint Dummy Builder': {
         'args': [
           '--additional-driver-flag=--enable-blink-features=CompositeAfterPaint',
diff --git a/testing/buildbot/waterfalls.pyl b/testing/buildbot/waterfalls.pyl
index 9fd5dd1..b9fedb6 100644
--- a/testing/buildbot/waterfalls.pyl
+++ b/testing/buildbot/waterfalls.pyl
@@ -2057,6 +2057,23 @@
           ],
         },
       },
+      'mac10.14-blink-rel-dummy': {
+        'swarming': {
+          'dimension_sets': [
+            {
+              # This matches the dimensions for "Chromium Mac10.14" in
+              # chromium_fyi.py.
+              'gpu': '8086:0a2e',
+              'hidpi': '0',
+              'os': 'Mac-10.14.6',
+            },
+          ],
+          'hard_timeout': 900,
+        },
+        'test_suites': {
+          'isolated_scripts': 'chromium_webkit_isolated_scripts',
+        },
+      },
       'win-annotator-rel': {
         'test_suites': {
           'scripts': 'test_traffic_annotation_auditor_script',
@@ -4188,7 +4205,7 @@
         ],
         'test_suites': {
           'gtest_tests': 'layout_ng_gtests',
-          'isolated_scripts': 'chromium_webkit_isolated_scripts',
+          'isolated_scripts': 'devtools_webkit_isolated_scripts',
         },
       },
     },
diff --git a/testing/iossim/iossim.mm b/testing/iossim/iossim.mm
index 6b36cfb3..2d15872c 100644
--- a/testing/iossim/iossim.mm
+++ b/testing/iossim/iossim.mm
@@ -188,6 +188,16 @@
   return [NSString stringWithCString:abs_path encoding:NSUTF8StringEncoding];
 }
 
+// Specific for XCode 10.1 and lower,
+// search |simctl_list| for a udid matching |sdk_version|.
+NSArray* GetDevicesBySDKForXcode10AndLower(NSDictionary* simctl_list,
+                                           NSString* sdk_version) {
+  // Pre-Xcode 10.2's simulator, xcrun simctl list -j returned "devices"
+  // that looked like "iOS 12.1".
+  NSString* sdk = [@"iOS " stringByAppendingString:sdk_version];
+  return [simctl_list[@"devices"] objectForKey:sdk];
+}
+
 // Search |simctl_list| for a udid matching |device_name| and |sdk_version|.
 NSString* GetDeviceBySDKAndName(NSDictionary* simctl_list,
                                 NSString* device_name,
@@ -213,6 +223,9 @@
     exit(kExitInvalidArguments);
   }
   NSArray* devices = [simctl_list[@"devices"] objectForKey:sdk];
+  if (devices == nil || [devices count] == 0) {
+    devices = GetDevicesBySDKForXcode10AndLower(simctl_list, sdk_version);
+  }
   for (NSDictionary* device in devices) {
     if ([device[@"name"] isEqualToString:device_name]) {
       return device[@"udid"];
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json
index 01f63dd..c30bcc0 100644
--- a/testing/variations/fieldtrial_testing_config.json
+++ b/testing/variations/fieldtrial_testing_config.json
@@ -1128,6 +1128,7 @@
             "platforms": [
                 "android",
                 "chromeos",
+                "ios",
                 "linux",
                 "mac",
                 "windows"
@@ -1147,6 +1148,7 @@
             "platforms": [
                 "android",
                 "chromeos",
+                "ios",
                 "linux",
                 "mac",
                 "windows"
@@ -3420,6 +3422,25 @@
             ]
         }
     ],
+    "LegacyTLSDeprecation": [
+        {
+            "platforms": [
+                "android",
+                "chromeos",
+                "linux",
+                "mac",
+                "windows"
+            ],
+            "experiments": [
+                {
+                    "name": "Enabled",
+                    "enable_features": [
+                        "LegacyTLSWarnings"
+                    ]
+                }
+            ]
+        }
+    ],
     "LowPriorityIframes2": [
         {
             "platforms": [
@@ -5575,6 +5596,7 @@
     "SafeBrowsingRealTimeUrlLookupEnabled": [
         {
             "platforms": [
+                "android",
                 "chromeos",
                 "linux",
                 "mac",
diff --git a/third_party/abseil-cpp/BUILD.gn b/third_party/abseil-cpp/BUILD.gn
index 253a602..8e39203 100644
--- a/third_party/abseil-cpp/BUILD.gn
+++ b/third_party/abseil-cpp/BUILD.gn
@@ -12,9 +12,9 @@
   deps = [
     "absl/types:any",
     "absl/types:bad_any_cast",
-    "absl/types:span",
-    "absl/types:optional",
     "absl/types:bad_optional_access",
+    "absl/types:optional",
+    "absl/types:span",
   ]
 }
 
diff --git a/third_party/android_crazy_linker/BUILD.gn b/third_party/android_crazy_linker/BUILD.gn
index 88bd711..017bf57 100644
--- a/third_party/android_crazy_linker/BUILD.gn
+++ b/third_party/android_crazy_linker/BUILD.gn
@@ -582,8 +582,8 @@
       "src/tests/test_two_shared_relros.cpp",
     ]
     data_deps = [
-      ":crazy_linker_tests_libfoo_with_relro",
       ":crazy_linker_tests_libbar_with_relro",
+      ":crazy_linker_tests_libfoo_with_relro",
     ]
     deps = [
       ":android_crazy_linker",
diff --git a/third_party/blink/common/browser_interface_broker_proxy.cc b/third_party/blink/common/browser_interface_broker_proxy.cc
index fb862df5..1dc9f8eaf 100644
--- a/third_party/blink/common/browser_interface_broker_proxy.cc
+++ b/third_party/blink/common/browser_interface_broker_proxy.cc
@@ -3,6 +3,8 @@
 // found in the LICENSE file.
 
 #include "third_party/blink/public/common/browser_interface_broker_proxy.h"
+#include "base/no_destructor.h"
+#include "base/threading/sequence_local_storage_slot.h"
 
 namespace blink {
 
@@ -50,16 +52,17 @@
 }
 
 BrowserInterfaceBrokerProxy& GetEmptyBrowserInterfaceBroker() {
-  static BrowserInterfaceBrokerProxy* broker_proxy = []() {
-    BrowserInterfaceBrokerProxy* broker_proxy =
-        new BrowserInterfaceBrokerProxy();
+  static base::NoDestructor<
+      base::SequenceLocalStorageSlot<BrowserInterfaceBrokerProxy>>
+      proxy_slot;
+  if (!proxy_slot->GetValuePointer()) {
+    auto& proxy = proxy_slot->GetOrCreateValue();
     mojo::PendingRemote<blink::mojom::BrowserInterfaceBroker> remote;
     ignore_result(remote.InitWithNewPipeAndPassReceiver());
-    broker_proxy->Bind(std::move(remote));
-    return broker_proxy;
-  }();
+    proxy.Bind(std::move(remote));
+  }
 
-  return *broker_proxy;
+  return proxy_slot->GetOrCreateValue();
 }
 
 }  // namespace blink
diff --git a/third_party/blink/common/frame/frame_policy_mojom_traits.cc b/third_party/blink/common/frame/frame_policy_mojom_traits.cc
index 8526cbe..63aba8c 100644
--- a/third_party/blink/common/frame/frame_policy_mojom_traits.cc
+++ b/third_party/blink/common/frame/frame_policy_mojom_traits.cc
@@ -12,7 +12,8 @@
   out->allowed_to_download = in.allowed_to_download();
 
   return in.ReadSandboxFlags(&out->sandbox_flags) &&
-         in.ReadContainerPolicy(&out->container_policy);
+         in.ReadContainerPolicy(&out->container_policy) &&
+         in.ReadRequiredDocumentPolicy(&out->required_document_policy);
 }
 
 }  // namespace mojo
diff --git a/third_party/blink/common/frame/frame_policy_mojom_traits.h b/third_party/blink/common/frame/frame_policy_mojom_traits.h
index e4009769..322e815 100644
--- a/third_party/blink/common/frame/frame_policy_mojom_traits.h
+++ b/third_party/blink/common/frame/frame_policy_mojom_traits.h
@@ -29,6 +29,11 @@
     return frame_policy.sandbox_flags;
   }
 
+  static const blink::DocumentPolicy::FeatureState& required_document_policy(
+      const blink::FramePolicy& frame_policy) {
+    return frame_policy.required_document_policy;
+  }
+
   static bool Read(blink::mojom::FramePolicyDataView in,
                    blink::FramePolicy* out);
 };
diff --git a/third_party/blink/common/manifest/manifest.cc b/third_party/blink/common/manifest/manifest.cc
index 076ef43..f32b662 100644
--- a/third_party/blink/common/manifest/manifest.cc
+++ b/third_party/blink/common/manifest/manifest.cc
@@ -17,6 +17,10 @@
   return src == other.src && type == other.type && sizes == other.sizes;
 }
 
+Manifest::ShortcutItem::ShortcutItem() = default;
+
+Manifest::ShortcutItem::~ShortcutItem() = default;
+
 Manifest::ShareTargetParams::ShareTargetParams() = default;
 
 Manifest::ShareTargetParams::~ShareTargetParams() = default;
@@ -42,7 +46,7 @@
   return name.is_null() && short_name.is_null() && start_url.is_empty() &&
          display == blink::mojom::DisplayMode::kUndefined &&
          orientation == blink::kWebScreenOrientationLockDefault &&
-         icons.empty() && !share_target.has_value() &&
+         icons.empty() && shortcuts.empty() && !share_target.has_value() &&
          related_applications.empty() && !prefer_related_applications &&
          !theme_color && !background_color && gcm_sender_id.is_null() &&
          scope.is_empty();
diff --git a/third_party/blink/common/manifest/manifest_mojom_traits.cc b/third_party/blink/common/manifest/manifest_mojom_traits.cc
index a466445..91878c1 100644
--- a/third_party/blink/common/manifest/manifest_mojom_traits.cc
+++ b/third_party/blink/common/manifest/manifest_mojom_traits.cc
@@ -66,6 +66,9 @@
   if (!data.ReadIcons(&out->icons))
     return false;
 
+  if (!data.ReadShortcuts(&out->shortcuts))
+    return false;
+
   if (!data.ReadShareTarget(&out->share_target))
     return false;
 
@@ -120,6 +123,31 @@
   return true;
 }
 
+bool StructTraits<blink::mojom::ManifestShortcutItemDataView,
+                  ::blink::Manifest::ShortcutItem>::
+    Read(blink::mojom::ManifestShortcutItemDataView data,
+         ::blink::Manifest::ShortcutItem* out) {
+  if (!data.ReadName(&out->name))
+    return false;
+
+  TruncatedString16 string;
+  if (!data.ReadShortName(&string))
+    return false;
+  out->short_name = base::NullableString16(std::move(string.string));
+
+  if (!data.ReadDescription(&string))
+    return false;
+  out->description = base::NullableString16(std::move(string.string));
+
+  if (!data.ReadUrl(&out->url))
+    return false;
+
+  if (!data.ReadIcons(&out->icons))
+    return false;
+
+  return true;
+}
+
 bool StructTraits<blink::mojom::ManifestRelatedApplicationDataView,
                   ::blink::Manifest::RelatedApplication>::
     Read(blink::mojom::ManifestRelatedApplicationDataView data,
diff --git a/third_party/blink/public/common/manifest/manifest.h b/third_party/blink/public/common/manifest/manifest.h
index 63d7325..988fa0c 100644
--- a/third_party/blink/public/common/manifest/manifest.h
+++ b/third_party/blink/public/common/manifest/manifest.h
@@ -61,6 +61,19 @@
     std::vector<Purpose> purpose;
   };
 
+  // Structure representing a shortcut as per the Manifest specification, see:
+  // https://w3c.github.io/manifest/#shortcuts-member
+  struct BLINK_COMMON_EXPORT ShortcutItem {
+    ShortcutItem();
+    ~ShortcutItem();
+
+    base::string16 name;
+    base::NullableString16 short_name;
+    base::NullableString16 description;
+    GURL url;
+    std::vector<ImageResource> icons;
+  };
+
   struct BLINK_COMMON_EXPORT FileFilter {
     base::string16 name;
     std::vector<base::string16> accept;
@@ -162,6 +175,10 @@
   // icons inside the JSON array were invalid.
   std::vector<ImageResource> icons;
 
+  // Empty if the parsing failed, the field was not present, or all the
+  // icons inside the JSON array were invalid.
+  std::vector<ShortcutItem> shortcuts;
+
   // Null if parsing failed or the field was not present.
   base::Optional<ShareTarget> share_target;
 
diff --git a/third_party/blink/public/common/manifest/manifest.typemap b/third_party/blink/public/common/manifest/manifest.typemap
index 13e14ba..7b18d1a 100644
--- a/third_party/blink/public/common/manifest/manifest.typemap
+++ b/third_party/blink/public/common/manifest/manifest.typemap
@@ -20,4 +20,5 @@
   "blink.mojom.ManifestImageResource=::blink::Manifest::ImageResource",
   "blink.mojom.ManifestRelatedApplication=::blink::Manifest::RelatedApplication",
   "blink.mojom.ManifestShareTarget=::blink::Manifest::ShareTarget",
+  "blink.mojom.ManifestShortcutItem=::blink::Manifest::ShortcutItem",
 ]
diff --git a/third_party/blink/public/common/manifest/manifest_mojom_traits.h b/third_party/blink/public/common/manifest/manifest_mojom_traits.h
index f4d45f6..da470705 100644
--- a/third_party/blink/public/common/manifest/manifest_mojom_traits.h
+++ b/third_party/blink/public/common/manifest/manifest_mojom_traits.h
@@ -97,6 +97,11 @@
     return manifest.icons;
   }
 
+  static const std::vector<::blink::Manifest::ShortcutItem>& shortcuts(
+      const ::blink::Manifest& manifest) {
+    return manifest.shortcuts;
+  }
+
   static const base::Optional<::blink::Manifest::ShareTarget>& share_target(
       const ::blink::Manifest& manifest) {
     return manifest.share_target;
@@ -147,6 +152,38 @@
 
 template <>
 struct BLINK_COMMON_EXPORT
+    StructTraits<blink::mojom::ManifestShortcutItemDataView,
+                 ::blink::Manifest::ShortcutItem> {
+  static base::StringPiece16 name(
+      const ::blink::Manifest::ShortcutItem& shortcut) {
+    return internal::TruncateString16(shortcut.name);
+  }
+
+  static base::Optional<base::StringPiece16> short_name(
+      const ::blink::Manifest::ShortcutItem& shortcut) {
+    return internal::TruncateNullableString16(shortcut.short_name);
+  }
+
+  static base::Optional<base::StringPiece16> description(
+      const ::blink::Manifest::ShortcutItem& shortcut) {
+    return internal::TruncateNullableString16(shortcut.description);
+  }
+
+  static const GURL& url(const ::blink::Manifest::ShortcutItem& shortcut) {
+    return shortcut.url;
+  }
+
+  static const std::vector<::blink::Manifest::ImageResource>& icons(
+      const ::blink::Manifest::ShortcutItem& shortcut) {
+    return shortcut.icons;
+  }
+
+  static bool Read(blink::mojom::ManifestShortcutItemDataView data,
+                   ::blink::Manifest::ShortcutItem* out);
+};
+
+template <>
+struct BLINK_COMMON_EXPORT
     StructTraits<blink::mojom::ManifestRelatedApplicationDataView,
                  ::blink::Manifest::RelatedApplication> {
   static base::Optional<base::StringPiece16> platform(
diff --git a/third_party/blink/public/devtools_protocol/browser_protocol.pdl b/third_party/blink/public/devtools_protocol/browser_protocol.pdl
index a6f6384..d9b8997 100644
--- a/third_party/blink/public/devtools_protocol/browser_protocol.pdl
+++ b/third_party/blink/public/devtools_protocol/browser_protocol.pdl
@@ -4260,7 +4260,7 @@
       # Cookie expiration date, session cookie if not set
       optional TimeSinceEpoch expires
       # Cookie Priority.
-      optional CookiePriority priority
+      experimental optional CookiePriority priority
 
   # Authorization challenge for HTTP status code 401 or 407.
   experimental type AuthChallenge extends object
@@ -4604,7 +4604,7 @@
       # Cookie expiration date, session cookie if not set
       optional TimeSinceEpoch expires
       # Cookie Priority type.
-      optional CookiePriority priority
+      experimental optional CookiePriority priority
     returns
       # True if successfully set cookie.
       boolean success
diff --git a/third_party/blink/public/mojom/fetch/fetch_api_response.mojom b/third_party/blink/public/mojom/fetch/fetch_api_response.mojom
index 4ddb5488..e8e5fe8 100644
--- a/third_party/blink/public/mojom/fetch/fetch_api_response.mojom
+++ b/third_party/blink/public/mojom/fetch/fetch_api_response.mojom
@@ -71,8 +71,7 @@
 
   // In case this response had a Content-Security-Policy header, this is the
   // parsed CSP.
-  // TODO(lfg) Add support for multiple policies.
-  network.mojom.ContentSecurityPolicy? content_security_policy;
+  array<network.mojom.ContentSecurityPolicy> content_security_policy;
 
   // True if the response was loaded with a Request where the credentials mode
   // would potentially send cookies to the server:
diff --git a/third_party/blink/public/mojom/frame/frame.mojom b/third_party/blink/public/mojom/frame/frame.mojom
index 13f4b0a..cd08028 100644
--- a/third_party/blink/public/mojom/frame/frame.mojom
+++ b/third_party/blink/public/mojom/frame/frame.mojom
@@ -113,7 +113,7 @@
   // Notifies the browser that the associated frame received a user gesture on
   // a previous navigation on the same eTLD+1. This ensures the state is
   // propagated to any remote frames.
-  ReceivedUserGestureBeforeNavigationChanged(bool has_gesture);
+  HadStickyUserActivationBeforeNavigationChanged(bool has_gesture);
 };
 
 // Implemented in Blink, this interface defines frame-specific methods that will
@@ -237,5 +237,5 @@
 
   // Notifies this remote frame to mark that the previous document on that
   // frame had received a user gesture on the same eTLD+1.
-  SetReceivedUserGestureBeforeNavigation(bool has_gesture);
+  SetHadStickyUserActivationBeforeNavigation(bool has_gesture);
 };
diff --git a/third_party/blink/public/mojom/frame/frame_policy.mojom b/third_party/blink/public/mojom/frame/frame_policy.mojom
index 34fcf40..3607a49 100644
--- a/third_party/blink/public/mojom/frame/frame_policy.mojom
+++ b/third_party/blink/public/mojom/frame/frame_policy.mojom
@@ -5,13 +5,16 @@
 module blink.mojom;
 
 import "third_party/blink/public/mojom/feature_policy/feature_policy.mojom";
+import "third_party/blink/public/mojom/feature_policy/feature_policy_feature.mojom";
+import "third_party/blink/public/mojom/feature_policy/policy_value.mojom";
 
-// This struct holds frame policy value that needs to be passed around between
-// renderer process and browser process during navigation. It is used as a data
-// member of CommonNavigationParams. For details, please refer to
+// This struct holds frame policy value that needs to be passed from browser
+// process to renderer process during navigation. It is used as a data
+// member of CommitNavigationParams. For details, please refer to
 // navigation_params.mojom.
 struct FramePolicy {
   blink.mojom.WebSandboxFlags sandbox_flags;
   array<blink.mojom.ParsedFeaturePolicyDeclaration> container_policy;
+  map<blink.mojom.FeaturePolicyFeature, blink.mojom.PolicyValue> required_document_policy;
   bool allowed_to_download = true;
 };
diff --git a/third_party/blink/public/mojom/manifest/manifest.mojom b/third_party/blink/public/mojom/manifest/manifest.mojom
index 5c62327..ff90a7c 100644
--- a/third_party/blink/public/mojom/manifest/manifest.mojom
+++ b/third_party/blink/public/mojom/manifest/manifest.mojom
@@ -28,6 +28,8 @@
 
   array<ManifestImageResource> icons;
 
+  array<ManifestShortcutItem> shortcuts;
+
   ManifestShareTarget? share_target;
 
   // TODO(harrisjay): This field is non-standard and part of a Chrome
@@ -56,6 +58,24 @@
   url.mojom.Url scope;
 };
 
+// Structure representing a Shortcut Item per the Manifest specification, see:
+// https://w3c.github.io/manifest/#shortcutitem-and-its-members
+struct ManifestShortcutItem {
+  // name is required
+  mojo_base.mojom.String16 name;
+
+  mojo_base.mojom.String16? short_name;
+
+  mojo_base.mojom.String16? description;
+
+  // URL at which the shortcut can be found.
+  // MUST be a valid url. If a shortcut doesn't have a valid URL, it will not be
+  // successfully parsed, thus will not be represented in the Manifest.
+  url.mojom.Url url;
+
+  array<ManifestImageResource> icons;
+};
+
 // Structure representing an icon as per the Manifest specification, see:
 // https://w3c.github.io/manifest/#dom-imageresource
 struct ManifestImageResource {
diff --git a/third_party/blink/public/mojom/quota/quota_types.mojom b/third_party/blink/public/mojom/quota/quota_types.mojom
index 77f41e0..911d72e 100644
--- a/third_party/blink/public/mojom/quota/quota_types.mojom
+++ b/third_party/blink/public/mojom/quota/quota_types.mojom
@@ -4,12 +4,14 @@
 
 module blink.mojom;
 
+// Values are persisted to disk.
+// Do not renumber or delete existing values, to avoid data loss.
 enum StorageType {
-  kTemporary,
-  kPersistent,
-  kSyncable,
-  kQuotaNotManaged,
-  kUnknown,
+  kTemporary = 0,
+  kPersistent = 1,
+  kSyncable = 2,
+  kQuotaNotManaged = 3,
+  kUnknown = 4,
 };
 
 // These values need to match core/dom/exception_code.h.
diff --git a/third_party/blink/public/platform/web_gesture_event.h b/third_party/blink/public/platform/web_gesture_event.h
index 0cdae1ab..52fbeb2 100644
--- a/third_party/blink/public/platform/web_gesture_event.h
+++ b/third_party/blink/public/platform/web_gesture_event.h
@@ -9,6 +9,7 @@
 #include "third_party/blink/public/platform/web_float_size.h"
 #include "third_party/blink/public/platform/web_gesture_device.h"
 #include "third_party/blink/public/platform/web_input_event.h"
+#include "third_party/blink/public/platform/web_pointer_properties.h"
 #include "third_party/blink/public/platform/web_scroll_types.h"
 #include "ui/events/types/scroll_types.h"
 
diff --git a/third_party/blink/public/platform/web_input_event.h b/third_party/blink/public/platform/web_input_event.h
index 6da5f12..732401f 100644
--- a/third_party/blink/public/platform/web_input_event.h
+++ b/third_party/blink/public/platform/web_input_event.h
@@ -34,10 +34,7 @@
 #include <string.h>
 
 #include "base/time/time.h"
-#include "third_party/blink/public/platform/web_common.h"
-#include "third_party/blink/public/platform/web_pointer_properties.h"
-#include "third_party/blink/public/platform/web_rect.h"
-#include "third_party/blink/public/platform/web_touch_point.h"
+#include "third_party/blink/public/platform/web_float_point.h"
 
 namespace blink {
 
diff --git a/third_party/blink/public/platform/web_mouse_event.h b/third_party/blink/public/platform/web_mouse_event.h
index 245b246..4c93146 100644
--- a/third_party/blink/public/platform/web_mouse_event.h
+++ b/third_party/blink/public/platform/web_mouse_event.h
@@ -7,6 +7,7 @@
 
 #include "third_party/blink/public/platform/web_input_event.h"
 #include "third_party/blink/public/platform/web_menu_source_type.h"
+#include "third_party/blink/public/platform/web_pointer_properties.h"
 
 namespace blink {
 
diff --git a/third_party/blink/public/platform/web_touch_event.h b/third_party/blink/public/platform/web_touch_event.h
index 32d8adf..6412873 100644
--- a/third_party/blink/public/platform/web_touch_event.h
+++ b/third_party/blink/public/platform/web_touch_event.h
@@ -6,6 +6,7 @@
 #define THIRD_PARTY_BLINK_PUBLIC_PLATFORM_WEB_TOUCH_EVENT_H_
 
 #include "third_party/blink/public/platform/web_input_event.h"
+#include "third_party/blink/public/platform/web_touch_point.h"
 
 namespace blink {
 
diff --git a/third_party/blink/public/strings/blink_strings.grd b/third_party/blink/public/strings/blink_strings.grd
index 9713b39..d130c9d4 100644
--- a/third_party/blink/public/strings/blink_strings.grd
+++ b/third_party/blink/public/strings/blink_strings.grd
@@ -296,9 +296,6 @@
       <message name="IDS_AX_ROLE_COMMENT" desc="Accessibility role description for a single comment">
         comment
       </message>
-      <message name="IDS_AX_ROLE_COMMENT_SECTION" desc="Accessibility role description for a section of comments">
-        comment section
-      </message>
       <message name="IDS_AX_ROLE_COMPLEMENTARY" desc="Accessibility role description for complementary">
         complementary
       </message>
@@ -525,9 +522,6 @@
       <message name="IDS_AX_ROLE_REGION" desc="Accessibility role description for region">
         region
       </message>
-      <message name="IDS_AX_ROLE_REVISION" desc="Accessibility role description for revision, meaining historical change info tied to this content">
-        revision
-      </message>
       <!-- https://www.w3.org/TR/core-aam-1.1/#role-map-searchbox -->
       <if expr="is_win">
         <message name="IDS_AX_ROLE_SEARCH_BOX" desc="UIA role description for search text field">
diff --git a/third_party/blink/public/strings/translations/blink_strings_af.xtb b/third_party/blink/public/strings/translations/blink_strings_af.xtb
index 4b779c8..7fe7e46 100644
--- a/third_party/blink/public/strings/translations/blink_strings_af.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_af.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Verleng asseblief hierdie teks na <ph name="MIN_CHARACTERS" /> karakters of meer (jy gebruik tans <ph name="CURRENT_LENGTH" /> karakters).</translation>
 <translation id="383465348367842624">'n Deel gevolg deur "<ph name="ATSIGN" />" moenie die simbool "<ph name="INVALIDCHARACTER" />" bevat nie.</translation>
 <translation id="3846214748874656680">Verlaat volskerm</translation>
-<translation id="3889183436948184105">hersiening</translation>
 <translation id="3920932319529768807">samevatting</translation>
 <translation id="3924558731517983934">program</translation>
 <translation id="3944740393230681990">proloog</translation>
@@ -259,7 +258,6 @@
 <translation id="8987927404178983737">Maand</translation>
 <translation id="901493112792887934">huidige tyd in sekondes</translation>
 <translation id="901834265349196618">e-pos</translation>
-<translation id="9023835124071926463">opmerking-afdeling</translation>
 <translation id="9048119486235211610">navigasie</translation>
 <translation id="9062295712474918030">dokument</translation>
 <translation id="9093215626363556771">Verlaat prent-in-prent</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_am.xtb b/third_party/blink/public/strings/translations/blink_strings_am.xtb
index a20f100..f618e99 100644
--- a/third_party/blink/public/strings/translations/blink_strings_am.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_am.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">እባክዎ ይህን ጽሑፍ ወደ <ph name="MIN_CHARACTERS" /> ቁምፊዎች ወይም ከዚያ በላይ ያራዝሙት (አሁን እየተጠቀሙ ያሉት <ph name="CURRENT_LENGTH" />ቁምፊዎችን ነው)።</translation>
 <translation id="383465348367842624">ከ«<ph name="ATSIGN" />» በፊት የሚመጣ ክፍል የ«<ph name="INVALIDCHARACTER" />» ምልክት መያዝ የለበትም።</translation>
 <translation id="3846214748874656680">ከሙሉ ማያገጽ ውጣ</translation>
-<translation id="3889183436948184105">ክለሳ</translation>
 <translation id="3920932319529768807">ድምዳሜ</translation>
 <translation id="3924558731517983934">መተግበሪያ</translation>
 <translation id="3944740393230681990">ቅድመ-ታሪክ</translation>
@@ -259,7 +258,6 @@
 <translation id="8987927404178983737">ወር</translation>
 <translation id="901493112792887934">የአሁኑ ጊዜ በሰከንዶች</translation>
 <translation id="901834265349196618">ኢሜይል</translation>
-<translation id="9023835124071926463">የአስተያየት ክፍል</translation>
 <translation id="9048119486235211610">አሰሳ</translation>
 <translation id="9062295712474918030">ሰነድ</translation>
 <translation id="9093215626363556771">ከስዕል-ውስጥ-ስዕል ውጣ</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_ar.xtb b/third_party/blink/public/strings/translations/blink_strings_ar.xtb
index ad91789..3cf1c689 100644
--- a/third_party/blink/public/strings/translations/blink_strings_ar.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_ar.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">يُرجى إطالة هذا النص إلى <ph name="MIN_CHARACTERS" /> من الحروف أو أكثر (أنت تستخدم حاليًا <ph name="CURRENT_LENGTH" /> من الحروف).</translation>
 <translation id="383465348367842624">الجزء المتبوع بالعلامة "<ph name="ATSIGN" />" يجب ألا يشتمل على الرمز "<ph name="INVALIDCHARACTER" />".</translation>
 <translation id="3846214748874656680">خروج من عرض ملء الشاشة</translation>
-<translation id="3889183436948184105">المراجعة</translation>
 <translation id="3920932319529768807">خاتمة</translation>
 <translation id="3924558731517983934">التطبيق</translation>
 <translation id="3944740393230681990">فاتحة</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">يُرجى إدخال عدد.</translation>
 <translation id="4912536737030637138">إدخال قائمة مراجع</translation>
 <translation id="492244087561876220">تعليق</translation>
+<translation id="4971739861736909480">تم اختيار <ph name="ACCNAME" />.</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> محددة</translation>
 <translation id="4992066212339426712">إعادة الصوت</translation>
 <translation id="49969490063480558">يُرجى إدخال الجزء الذي يلي العلامة "<ph name="ATSIGN" />"، حيث إن "<ph name="INVALIDADDRESS" />" غير مكتمل.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">يُرجى تضمين العلامة "<ph name="ATSIGN" />" في عنوان البريد الإلكتروني، حيث يفتقر "<ph name="INVALIDADDRESS" />" إلى العلامة "<ph name="ATSIGN" />".</translation>
 <translation id="7891486169920085145">أداة التقسيم</translation>
 <translation id="795667975304826397">ّلم يتمّ اختيار أيّ ملفّ</translation>
+<translation id="7962328325860248200">لم يتم اختيار <ph name="ACCNAME" />.</translation>
 <translation id="8034303206267677282">قوية</translation>
 <translation id="8053789581856978548">الحقل النصي للبحث</translation>
 <translation id="8057695513531652401">ملاحظة</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">شهر</translation>
 <translation id="901493112792887934">المدة الحالية بالثواني</translation>
 <translation id="901834265349196618">بريد إلكتروني</translation>
-<translation id="9023835124071926463">قسم التعليقات</translation>
 <translation id="9048119486235211610">تنقل</translation>
 <translation id="9062295712474918030">المستند</translation>
 <translation id="9093215626363556771">الخروج من وضع "نافذة ضمن نافذة"</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_as.xtb b/third_party/blink/public/strings/translations/blink_strings_as.xtb
index 327305a..9fd11dd 100644
--- a/third_party/blink/public/strings/translations/blink_strings_as.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_as.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">অনুগ্ৰহ কৰি এই পাঠটো <ph name="MIN_CHARACTERS" />টা বা তাতকৈ অধিক বর্ণ ব্যৱহাৰ কৰি লিখক (বর্তমান আপুনি <ph name="CURRENT_LENGTH" />টা বর্ণ ব্যৱহাৰ কৰি আছে)।</translation>
 <translation id="383465348367842624">’<ph name="ATSIGN" />’ৰ পাছত আহিব লগা অংশ ’<ph name="INVALIDCHARACTER" />’ চিহ্নত অন্তর্ভুক্ত হ’ব নালাগে।</translation>
 <translation id="3846214748874656680">পূৰ্ণষ্ক্রীণৰ পৰা বাহিৰ হওক</translation>
-<translation id="3889183436948184105">পুনৰীক্ষণ</translation>
 <translation id="3920932319529768807">উপসংহাৰ</translation>
 <translation id="3924558731517983934">এপ্লিকেশ্বন</translation>
 <translation id="3944740393230681990">প্ৰস্তাৱনা</translation>
@@ -256,7 +255,6 @@
 <translation id="8987927404178983737">মাহ</translation>
 <translation id="901493112792887934">ছেকেণ্ডৰ আৰ্হিত বৰ্তমানৰ সময়</translation>
 <translation id="901834265349196618">ইমেইল</translation>
-<translation id="9023835124071926463">মন্তব্যৰ শাখা</translation>
 <translation id="9048119486235211610">নেভিগেশ্বন</translation>
 <translation id="9062295712474918030">নথি</translation>
 <translation id="9093215626363556771">চিত্ৰ ভিতৰত চিত্ৰ ম’ডৰ পৰা প্ৰস্থান কৰক</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_az.xtb b/third_party/blink/public/strings/translations/blink_strings_az.xtb
index c56e593..ed7a97e 100644
--- a/third_party/blink/public/strings/translations/blink_strings_az.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_az.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Lütfən, bu mətni <ph name="MIN_CHARACTERS" /> və ya daha çox simvoladək uzadın (hazırda <ph name="CURRENT_LENGTH" /> simvol istifadə edirsiniz).</translation>
 <translation id="383465348367842624">'<ph name="ATSIGN" />' ilə davam edən hissə '<ph name="INVALIDCHARACTER" />' simvolunu içərməməlidir.</translation>
 <translation id="3846214748874656680">Tam ekrandan çıxın</translation>
-<translation id="3889183436948184105">versiya</translation>
 <translation id="3920932319529768807">nəticə</translation>
 <translation id="3924558731517983934">tətbiq</translation>
 <translation id="3944740393230681990">proloq</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Rəqəm daxil edin.</translation>
 <translation id="4912536737030637138">biblioqrafiya girişi</translation>
 <translation id="492244087561876220">şərh</translation>
+<translation id="4971739861736909480"><ph name="ACCNAME" /> seçilib</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> seçilib</translation>
 <translation id="4992066212339426712">Səssiz rejimdən çıxın</translation>
 <translation id="49969490063480558">'Aşağıdakı bir hissəsi daxil edin <ph name="ATSIGN" /> '. " <ph name="INVALIDADDRESS" /> "Tam deyil.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">E-poçt ünvanına '<ph name="ATSIGN" />' daxil edin. '<ph name="INVALIDADDRESS" />' çatışmayan '<ph name="ATSIGN" />' vardır.</translation>
 <translation id="7891486169920085145">ayırıcı</translation>
 <translation id="795667975304826397">Heç bir fayl seçilməyib</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" /> seçilməyib</translation>
 <translation id="8034303206267677282">güclü</translation>
 <translation id="8053789581856978548">axtarış mətni sahəsi</translation>
 <translation id="8057695513531652401">bildiriş</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Ay</translation>
 <translation id="901493112792887934">saniyə ilə cari vaxt</translation>
 <translation id="901834265349196618">e-poçt</translation>
-<translation id="9023835124071926463">şərh bölməsi</translation>
 <translation id="9048119486235211610">naviqasiya</translation>
 <translation id="9062295712474918030">sənəd</translation>
 <translation id="9093215626363556771">şəkil içində şəkil düyməsindən çıxın</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_be.xtb b/third_party/blink/public/strings/translations/blink_strings_be.xtb
index 97f020f3..f6193c1 100644
--- a/third_party/blink/public/strings/translations/blink_strings_be.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_be.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Павялічце колькасць сімвалаў у гэтым тэксце як мінімум да <ph name="MIN_CHARACTERS" /> (зараз у вас – <ph name="CURRENT_LENGTH" />).</translation>
 <translation id="383465348367842624">У частцы перад "<ph name="ATSIGN" />" не павінна быць сімвала "<ph name="INVALIDCHARACTER" />".</translation>
 <translation id="3846214748874656680">Выключыць поўнаэкранны рэжым</translation>
-<translation id="3889183436948184105">рэдакцыя</translation>
 <translation id="3920932319529768807">заключэнне</translation>
 <translation id="3924558731517983934">праграма</translation>
 <translation id="3944740393230681990">пралог</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Увядзіце лік.</translation>
 <translation id="4912536737030637138">бібліяграфічны запіс</translation>
 <translation id="492244087561876220">каментарый</translation>
+<translation id="4971739861736909480">Выбрана: <ph name="ACCNAME" /></translation>
 <translation id="4975562563186953947">Выбрана: <ph name="SELECTED_COUNT" /></translation>
 <translation id="4992066212339426712">Уключыць гук</translation>
 <translation id="49969490063480558">Увядзіце частку пасля сімвала "<ph name="ATSIGN" />". Адрас "<ph name="INVALIDADDRESS" />" – няпоўны.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">У адрасе электроннай пошты павінен быць сімвал "<ph name="ATSIGN" />". У "<ph name="INVALIDADDRESS" />" няма "<ph name="ATSIGN" />".</translation>
 <translation id="7891486169920085145">раздзяляльнік</translation>
 <translation id="795667975304826397">Файл не выбраны</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" />, не выбрана</translation>
 <translation id="8034303206267677282">важна</translation>
 <translation id="8053789581856978548">поле крытэрыю пошуку</translation>
 <translation id="8057695513531652401">паведамленне</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Месяц</translation>
 <translation id="901493112792887934">колькі секунд прайшло</translation>
 <translation id="901834265349196618">электронная пошта</translation>
-<translation id="9023835124071926463">раздзел каментарыяў</translation>
 <translation id="9048119486235211610">навігацыя</translation>
 <translation id="9062295712474918030">дакумент</translation>
 <translation id="9093215626363556771">выйсці з рэжыму "відарыс у відарысе"</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_bg.xtb b/third_party/blink/public/strings/translations/blink_strings_bg.xtb
index 7689789..e84ab59 100644
--- a/third_party/blink/public/strings/translations/blink_strings_bg.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_bg.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Моля, удължете този текст поне до <ph name="MIN_CHARACTERS" /> знака (понастоящем използвате <ph name="CURRENT_LENGTH" />).</translation>
 <translation id="383465348367842624">Текстът преди „<ph name="ATSIGN" />“ не бива да съдържа символа „<ph name="INVALIDCHARACTER" />“.</translation>
 <translation id="3846214748874656680">Изход от цял екран</translation>
-<translation id="3889183436948184105">корекция</translation>
 <translation id="3920932319529768807">заключение</translation>
 <translation id="3924558731517983934">приложение</translation>
 <translation id="3944740393230681990">пролог</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Моля, въведете номер.</translation>
 <translation id="4912536737030637138">библиографски запис</translation>
 <translation id="492244087561876220">коментар</translation>
+<translation id="4971739861736909480">Избрано е „<ph name="ACCNAME" />“</translation>
 <translation id="4975562563186953947">Избрани: <ph name="SELECTED_COUNT" /></translation>
 <translation id="4992066212339426712">Включване на звука</translation>
 <translation id="49969490063480558">Моля, въведете текст след „<ph name="ATSIGN" />“. „<ph name="INVALIDADDRESS" />“ е непълно.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Моля, включете „<ph name="ATSIGN" />“ в имейл адреса. В/ъв „<ph name="INVALIDADDRESS" />“ липсва „<ph name="ATSIGN" />“.</translation>
 <translation id="7891486169920085145">разделител</translation>
 <translation id="795667975304826397">Няма избран файл</translation>
+<translation id="7962328325860248200">„<ph name="ACCNAME" />“ не е избрано</translation>
 <translation id="8034303206267677282">удебеляване</translation>
 <translation id="8053789581856978548">текстово поле за търсене</translation>
 <translation id="8057695513531652401">известие</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Месец</translation>
 <translation id="901493112792887934">текущо време в секунди</translation>
 <translation id="901834265349196618">имейл</translation>
-<translation id="9023835124071926463">секция за коментари</translation>
 <translation id="9048119486235211610">навигация</translation>
 <translation id="9062295712474918030">документ</translation>
 <translation id="9093215626363556771">изход от режима „Картина в картината“</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_bn.xtb b/third_party/blink/public/strings/translations/blink_strings_bn.xtb
index 669f9220..158d305 100644
--- a/third_party/blink/public/strings/translations/blink_strings_bn.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_bn.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">দয়া করে এই পাঠ্যকে ন্যূনতম <ph name="MIN_CHARACTERS" /> অক্ষরের বা তার বেশি (আপনি বর্তমানে <ph name="CURRENT_LENGTH" />টি অক্ষর ব্যবহার করেছেন) দৈর্ঘের করুন।</translation>
 <translation id="383465348367842624">'<ph name="ATSIGN" />' অনুসরণ করে এমন একটি অংশে '<ph name="INVALIDCHARACTER" />' চিহ্ন থাকা উচিত নয়৷</translation>
 <translation id="3846214748874656680">পূর্ণস্ক্রীন থেকে প্রস্থান করুন</translation>
-<translation id="3889183436948184105">আবার দেখুন</translation>
 <translation id="3920932319529768807">সিদ্ধান্ত</translation>
 <translation id="3924558731517983934">অ্যাপ্লিকেশান</translation>
 <translation id="3944740393230681990">ভূমিকা</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">দয়া করে একটি সংখ্যা লিখুন৷</translation>
 <translation id="4912536737030637138">বিবলিওগ্রাফি এন্ট্রি</translation>
 <translation id="492244087561876220">মন্তব্য</translation>
+<translation id="4971739861736909480"><ph name="ACCNAME" />টি বেছে নেওয়া হয়েছে</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" />টি নির্বাচিত</translation>
 <translation id="4992066212339426712">সশব্দ করুন</translation>
 <translation id="49969490063480558">দয়া করে '<ph name="ATSIGN" />' অনুসরণ করে একটি অংশ লিখুন৷ '<ph name="INVALIDADDRESS" />' অসম্পূর্ণ৷</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">ইমেল আইডিতে অনুগ্রহ করে একটি '<ph name="ATSIGN" />' অন্তর্ভুক্ত করুন৷ '<ph name="INVALIDADDRESS" />'-তে একটি '<ph name="ATSIGN" />' অনুপস্থিত৷</translation>
 <translation id="7891486169920085145">স্প্লিটার</translation>
 <translation id="795667975304826397">কোনও ফাইল চয়ন করা হয় নি</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" /> বেছে নেওয়া হয়নি</translation>
 <translation id="8034303206267677282">প্রভাবশালী</translation>
 <translation id="8053789581856978548">সার্চ পাঠ্য ফিল্ড</translation>
 <translation id="8057695513531652401">বিজ্ঞপ্তি</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">মাস</translation>
 <translation id="901493112792887934">সেকেন্ডে বর্তমান সময়</translation>
 <translation id="901834265349196618">ইমেল আইডি</translation>
-<translation id="9023835124071926463">মন্তব্যের বিভাগ</translation>
 <translation id="9048119486235211610">নেভিগেশন</translation>
 <translation id="9062295712474918030">দস্তাবেজ</translation>
 <translation id="9093215626363556771">ছবির-মধ্যে-ছবি মোড থেকে বেরিয়ে আসুন</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_bs.xtb b/third_party/blink/public/strings/translations/blink_strings_bs.xtb
index 9be1ea43..1cd3b64c 100644
--- a/third_party/blink/public/strings/translations/blink_strings_bs.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_bs.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Postavite dužinu teksta tako da je broj znakova minimalno <ph name="MIN_CHARACTERS" /> ili više (broj znakova koje trenutno koristite je <ph name="CURRENT_LENGTH" />).</translation>
 <translation id="383465348367842624">Dio iza koga slijedi "<ph name="ATSIGN" />" ne smije sadržavati simbol "<ph name="INVALIDCHARACTER" />".</translation>
 <translation id="3846214748874656680">Izađi iz prikaza cijelog ekrana</translation>
-<translation id="3889183436948184105">revizija</translation>
 <translation id="3920932319529768807">zaključak</translation>
 <translation id="3924558731517983934">prijava</translation>
 <translation id="3944740393230681990">prolog</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Unesite broj.</translation>
 <translation id="4912536737030637138">unos bibliografije</translation>
 <translation id="492244087561876220">komentar</translation>
+<translation id="4971739861736909480">Odabran je račun <ph name="ACCNAME" /></translation>
 <translation id="4975562563186953947">Odabrano <ph name="SELECTED_COUNT" /></translation>
 <translation id="4992066212339426712">Uključi zvuk</translation>
 <translation id="49969490063480558">Unesite dio nakon znaka "<ph name="ATSIGN" />". Adresa "<ph name="INVALIDADDRESS" />" je nepotpuna.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">U adresu e-pošte uključite i "<ph name="ATSIGN" />". Adresi "<ph name="INVALIDADDRESS" />" nedostaje znak "<ph name="ATSIGN" />".</translation>
 <translation id="7891486169920085145">razdjelnik</translation>
 <translation id="795667975304826397">Nije izabran nijedan fajl</translation>
+<translation id="7962328325860248200">Nije odabran račun <ph name="ACCNAME" /></translation>
 <translation id="8034303206267677282">jaka</translation>
 <translation id="8053789581856978548">polje za tekst pretraživanja</translation>
 <translation id="8057695513531652401">obavještenje</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Mjesec</translation>
 <translation id="901493112792887934">trenutno vrijeme u sekundama</translation>
 <translation id="901834265349196618">e-pošta</translation>
-<translation id="9023835124071926463">odjeljak za komentare</translation>
 <translation id="9048119486235211610">navigacija</translation>
 <translation id="9062295712474918030">dokument</translation>
 <translation id="9093215626363556771">izlazak iz načina rada slike u slici</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_ca.xtb b/third_party/blink/public/strings/translations/blink_strings_ca.xtb
index 79cd749..f5e4584 100644
--- a/third_party/blink/public/strings/translations/blink_strings_ca.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_ca.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Allargueu aquest text fins a un mínim de <ph name="MIN_CHARACTERS" /> caràcters (ara n'utilitzeu <ph name="CURRENT_LENGTH" />).</translation>
 <translation id="383465348367842624">Un nom d'usuari seguit de "<ph name="ATSIGN" />" no pot contenir el símbol "<ph name="INVALIDCHARACTER" />".</translation>
 <translation id="3846214748874656680">Surt de la pantalla completa</translation>
-<translation id="3889183436948184105">revisió</translation>
 <translation id="3920932319529768807">conclusió</translation>
 <translation id="3924558731517983934">aplicació</translation>
 <translation id="3944740393230681990">pròleg</translation>
@@ -259,7 +258,6 @@
 <translation id="8987927404178983737">Mes</translation>
 <translation id="901493112792887934">temps actual en segons</translation>
 <translation id="901834265349196618">correu electrònic</translation>
-<translation id="9023835124071926463">secció de comentaris</translation>
 <translation id="9048119486235211610">navegació</translation>
 <translation id="9062295712474918030">document</translation>
 <translation id="9093215626363556771">surt del mode de pantalla en pantalla</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_cs.xtb b/third_party/blink/public/strings/translations/blink_strings_cs.xtb
index caa1675..0cd11cd9 100644
--- a/third_party/blink/public/strings/translations/blink_strings_cs.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_cs.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Prodlužte prosím tento text na <ph name="MIN_CHARACTERS" /> či více znaků. (Aktuálně má <ph name="CURRENT_LENGTH" /> znaků.)</translation>
 <translation id="383465348367842624">Část před znakem <ph name="ATSIGN" /> nesmí obsahovat znak <ph name="INVALIDCHARACTER" />.</translation>
 <translation id="3846214748874656680">Ukončit režim na celou obrazovku</translation>
-<translation id="3889183436948184105">verze</translation>
 <translation id="3920932319529768807">závěr</translation>
 <translation id="3924558731517983934">aplikace</translation>
 <translation id="3944740393230681990">prolog</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Zadejte prosím číslo.</translation>
 <translation id="4912536737030637138">bibliografická položka</translation>
 <translation id="492244087561876220">komentář</translation>
+<translation id="4971739861736909480">Vybráno: <ph name="ACCNAME" /></translation>
 <translation id="4975562563186953947">Vybráno: <ph name="SELECTED_COUNT" /></translation>
 <translation id="4992066212339426712">Zapnout zvuk</translation>
 <translation id="49969490063480558">Zadejte část za znakem <ph name="ATSIGN" />. Adresa <ph name="INVALIDADDRESS" /> není úplná.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Do e-mailové adresy zahrňte znak <ph name="ATSIGN" />. V adrese <ph name="INVALIDADDRESS" /> chybí znak <ph name="ATSIGN" />.</translation>
 <translation id="7891486169920085145">rozdělovač</translation>
 <translation id="795667975304826397">Soubor nevybrán</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" /> – nevybráno</translation>
 <translation id="8034303206267677282">silné</translation>
 <translation id="8053789581856978548">pole pro vyhledání textu</translation>
 <translation id="8057695513531652401">oznámení</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Měsíc</translation>
 <translation id="901493112792887934">aktuální čas v sekundách</translation>
 <translation id="901834265349196618">e-mail</translation>
-<translation id="9023835124071926463">sekce komentářů</translation>
 <translation id="9048119486235211610">navigace</translation>
 <translation id="9062295712474918030">dokument</translation>
 <translation id="9093215626363556771">ukončit režim obrazu v obraze</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_da.xtb b/third_party/blink/public/strings/translations/blink_strings_da.xtb
index 36b0a56..18e6eca 100644
--- a/third_party/blink/public/strings/translations/blink_strings_da.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_da.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Forlæng denne tekst til <ph name="MIN_CHARACTERS" /> eller flere tegn (du bruger i øjeblikket <ph name="CURRENT_LENGTH" /> tegn).</translation>
 <translation id="383465348367842624">Den del, der kommer før "<ph name="ATSIGN" />", må ikke indeholde "<ph name="INVALIDCHARACTER" />".</translation>
 <translation id="3846214748874656680">Afslut fuld skærm</translation>
-<translation id="3889183436948184105">revision</translation>
 <translation id="3920932319529768807">konklusion</translation>
 <translation id="3924558731517983934">applikation</translation>
 <translation id="3944740393230681990">prolog</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Angiv et nummer.</translation>
 <translation id="4912536737030637138">bibliografipost</translation>
 <translation id="492244087561876220">kommentar</translation>
+<translation id="4971739861736909480"><ph name="ACCNAME" /> er valgt</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> er valgt</translation>
 <translation id="4992066212339426712">Slå lyden til</translation>
 <translation id="49969490063480558">Angiv den del, der kommer efter "<ph name="ATSIGN" />". "<ph name="INVALIDADDRESS" />" er ufuldstændig.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Mailadressen skal indeholde et "<ph name="ATSIGN" />". "<ph name="INVALIDADDRESS" />" mangler et "<ph name="ATSIGN" />".</translation>
 <translation id="7891486169920085145">splitter</translation>
 <translation id="795667975304826397">Der er ikke valgt nogen fil</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" /> er ikke valgt</translation>
 <translation id="8034303206267677282">stærk</translation>
 <translation id="8053789581856978548">tekstfelt til søgning</translation>
 <translation id="8057695513531652401">meddelelse</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Måned</translation>
 <translation id="901493112792887934">aktuel tid i sekunder</translation>
 <translation id="901834265349196618">mail</translation>
-<translation id="9023835124071926463">kommentarsektion</translation>
 <translation id="9048119486235211610">navigation</translation>
 <translation id="9062295712474918030">dokument</translation>
 <translation id="9093215626363556771">afslut integreret billede</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_de.xtb b/third_party/blink/public/strings/translations/blink_strings_de.xtb
index 1637cc24..4d8006af 100644
--- a/third_party/blink/public/strings/translations/blink_strings_de.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_de.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Verlängern Sie diesen Text auf mindestens <ph name="MIN_CHARACTERS" /> Zeichen. Derzeit verwenden Sie <ph name="CURRENT_LENGTH" /> Zeichen.</translation>
 <translation id="383465348367842624">Vor dem <ph name="ATSIGN" />-Zeichen darf das Zeichen "<ph name="INVALIDCHARACTER" />" nicht verwendet werden.</translation>
 <translation id="3846214748874656680">Vollbildmodus beenden</translation>
-<translation id="3889183436948184105">Überarbeitung</translation>
 <translation id="3920932319529768807">Fazit</translation>
 <translation id="3924558731517983934">Anwendung</translation>
 <translation id="3944740393230681990">Prolog</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Geben Sie eine Nummer ein.</translation>
 <translation id="4912536737030637138">Bibliografieeintrag</translation>
 <translation id="492244087561876220">Kommentar</translation>
+<translation id="4971739861736909480"><ph name="ACCNAME" /> ausgewählt</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> ausgewählt</translation>
 <translation id="4992066212339426712">Stummschaltung aufheben</translation>
 <translation id="49969490063480558">Geben Sie etwas nach dem <ph name="ATSIGN" />-Zeichen ein. Die Angabe "<ph name="INVALIDADDRESS" />" ist unvollständig.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Die E-Mail-Adresse muss ein <ph name="ATSIGN" />-Zeichen enthalten. In der Angabe "<ph name="INVALIDADDRESS" />" fehlt ein <ph name="ATSIGN" />-Zeichen.</translation>
 <translation id="7891486169920085145">Teilungsfunktion</translation>
 <translation id="795667975304826397">Keine ausgewählt</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" /> nicht ausgewählt</translation>
 <translation id="8034303206267677282">Stark</translation>
 <translation id="8053789581856978548">Feld für den Suchtext</translation>
 <translation id="8057695513531652401">Bemerkung</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Monat</translation>
 <translation id="901493112792887934">Aktuelle Dauer in Sekunden</translation>
 <translation id="901834265349196618">E-Mail</translation>
-<translation id="9023835124071926463">Abschnitt für Kommentare</translation>
 <translation id="9048119486235211610">Navigation</translation>
 <translation id="9062295712474918030">Dokument</translation>
 <translation id="9093215626363556771">Bild-im-Bild-Modus beenden</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_el.xtb b/third_party/blink/public/strings/translations/blink_strings_el.xtb
index 4684cfc..e64d852e 100644
--- a/third_party/blink/public/strings/translations/blink_strings_el.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_el.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Αυξήστε την έκταση αυτού του κειμένου στους <ph name="MIN_CHARACTERS" /> χαρακτήρες ή περισσότερο (αυτήν τη στιγμή χρησιμοποιείτε <ph name="CURRENT_LENGTH" /> χαρακτήρες).</translation>
 <translation id="383465348367842624">Το τμήμα της διεύθυνσης πριν το σύμβολο "<ph name="ATSIGN" />" δεν πρέπει να περιέχει το σύμβολο "<ph name="INVALIDCHARACTER" />".</translation>
 <translation id="3846214748874656680">Έξοδος από πλήρη οθόνη</translation>
-<translation id="3889183436948184105">αναθεώρηση</translation>
 <translation id="3920932319529768807">συμπέρασμα</translation>
 <translation id="3924558731517983934">εφαρμογή</translation>
 <translation id="3944740393230681990">πρόλογος</translation>
@@ -259,7 +258,6 @@
 <translation id="8987927404178983737">Μήνας</translation>
 <translation id="901493112792887934">τρέχων χρόνος σε δευτερόλεπτα</translation>
 <translation id="901834265349196618">ηλεκτρονικό ταχυδρομείο</translation>
-<translation id="9023835124071926463">ενότητα σχολίων</translation>
 <translation id="9048119486235211610">πλοήγηση</translation>
 <translation id="9062295712474918030">έγγραφο</translation>
 <translation id="9093215626363556771">έξοδος από τη λειτουργία picture-in-picture</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_en-GB.xtb b/third_party/blink/public/strings/translations/blink_strings_en-GB.xtb
index 05a7ad6c..ee54aad 100644
--- a/third_party/blink/public/strings/translations/blink_strings_en-GB.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_en-GB.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Please lengthen this text to <ph name="MIN_CHARACTERS" /> characters or more (you are currently using <ph name="CURRENT_LENGTH" /> characters).</translation>
 <translation id="383465348367842624">A part followed by '<ph name="ATSIGN" />' should not contain the symbol '<ph name="INVALIDCHARACTER" />'.</translation>
 <translation id="3846214748874656680">Exit full screen</translation>
-<translation id="3889183436948184105">revision</translation>
 <translation id="3920932319529768807">conclusion</translation>
 <translation id="3924558731517983934">application</translation>
 <translation id="3944740393230681990">prologue</translation>
@@ -259,7 +258,6 @@
 <translation id="8987927404178983737">Month</translation>
 <translation id="901493112792887934">current time in seconds</translation>
 <translation id="901834265349196618">email</translation>
-<translation id="9023835124071926463">comment section</translation>
 <translation id="9048119486235211610">navigation</translation>
 <translation id="9062295712474918030">document</translation>
 <translation id="9093215626363556771">exit picture-in-picture</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_es-419.xtb b/third_party/blink/public/strings/translations/blink_strings_es-419.xtb
index 0c804b4..f49f1f73 100644
--- a/third_party/blink/public/strings/translations/blink_strings_es-419.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_es-419.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Alarga el texto a <ph name="MIN_CHARACTERS" /> o más caracteres (actualmente, usas <ph name="CURRENT_LENGTH" /> caracteres).</translation>
 <translation id="383465348367842624">El texto antes del signo "<ph name="ATSIGN" />" no debe incluir el símbolo "<ph name="INVALIDCHARACTER" />".</translation>
 <translation id="3846214748874656680">Salir de pantalla completa</translation>
-<translation id="3889183436948184105">revisión</translation>
 <translation id="3920932319529768807">conclusión</translation>
 <translation id="3924558731517983934">aplicación</translation>
 <translation id="3944740393230681990">prólogo</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Debes ingresar un número.</translation>
 <translation id="4912536737030637138">entrada de bibliografía</translation>
 <translation id="492244087561876220">comentario</translation>
+<translation id="4971739861736909480">Seleccionaste <ph name="ACCNAME" /></translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> elementos seleccionados</translation>
 <translation id="4992066212339426712">Dejar de silenciar</translation>
 <translation id="49969490063480558">Ingresa texto después del signo "<ph name="ATSIGN" />". La dirección "<ph name="INVALIDADDRESS" />" está incompleta.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Incluye un signo "<ph name="ATSIGN" />" en la dirección de correo electrónico. La dirección "<ph name="INVALIDADDRESS" />" no incluye el signo "<ph name="ATSIGN" />".</translation>
 <translation id="7891486169920085145">separador</translation>
 <translation id="795667975304826397">No se eligió archivo</translation>
+<translation id="7962328325860248200">No se seleccionó <ph name="ACCNAME" /></translation>
 <translation id="8034303206267677282">seguro</translation>
 <translation id="8053789581856978548">campo de texto de búsqueda</translation>
 <translation id="8057695513531652401">aviso</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Mes</translation>
 <translation id="901493112792887934">tiempo actual en segundos</translation>
 <translation id="901834265349196618">correo electrónico</translation>
-<translation id="9023835124071926463">sección de comentarios</translation>
 <translation id="9048119486235211610">navegación</translation>
 <translation id="9062295712474918030">documento</translation>
 <translation id="9093215626363556771">salir del modo de pantalla en pantalla</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_es.xtb b/third_party/blink/public/strings/translations/blink_strings_es.xtb
index 63fe8f2..786e057 100644
--- a/third_party/blink/public/strings/translations/blink_strings_es.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_es.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Aumenta la longitud del texto a <ph name="MIN_CHARACTERS" /> caracteres como mínimo (actualmente, el texto tiene <ph name="CURRENT_LENGTH" /> caracteres).</translation>
 <translation id="383465348367842624">El texto seguido del signo "<ph name="ATSIGN" />" no debe incluir el símbolo "<ph name="INVALIDCHARACTER" />".</translation>
 <translation id="3846214748874656680">Salir de pantalla completa</translation>
-<translation id="3889183436948184105">revisión</translation>
 <translation id="3920932319529768807">conclusión</translation>
 <translation id="3924558731517983934">aplicación</translation>
 <translation id="3944740393230681990">prólogo</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Debes introducir un número</translation>
 <translation id="4912536737030637138">entrada bibliográfica</translation>
 <translation id="492244087561876220">comentario</translation>
+<translation id="4971739861736909480">Seleccionados: <ph name="ACCNAME" /></translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> seleccionados</translation>
 <translation id="4992066212339426712">Activar sonido</translation>
 <translation id="49969490063480558">Introduce texto detrás del signo "<ph name="ATSIGN" />". La dirección "<ph name="INVALIDADDRESS" />" está incompleta.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Incluye un signo "<ph name="ATSIGN" />" en la dirección de correo electrónico. La dirección "<ph name="INVALIDADDRESS" />" no incluye el signo "<ph name="ATSIGN" />".</translation>
 <translation id="7891486169920085145">divisor</translation>
 <translation id="795667975304826397">Ningún archivo seleccionado</translation>
+<translation id="7962328325860248200">No seleccionados: <ph name="ACCNAME" /></translation>
 <translation id="8034303206267677282">importante</translation>
 <translation id="8053789581856978548">campo para buscar texto</translation>
 <translation id="8057695513531652401">aviso</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Mes</translation>
 <translation id="901493112792887934">tiempo actual en segundos</translation>
 <translation id="901834265349196618">correo electrónico</translation>
-<translation id="9023835124071926463">sección de comentarios</translation>
 <translation id="9048119486235211610">navegación</translation>
 <translation id="9062295712474918030">documento</translation>
 <translation id="9093215626363556771">salir del modo imagen en imagen</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_et.xtb b/third_party/blink/public/strings/translations/blink_strings_et.xtb
index 0bcbf24..823a116 100644
--- a/third_party/blink/public/strings/translations/blink_strings_et.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_et.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Pikendage teksti vähemalt <ph name="MIN_CHARACTERS" /> tähemärgini (kasutate praegu <ph name="CURRENT_LENGTH" /> tähemärki).</translation>
 <translation id="383465348367842624">Märgile „<ph name="ATSIGN" />” eelnev osa ei tohi sisaldada sümbolit „<ph name="INVALIDCHARACTER" />”.</translation>
 <translation id="3846214748874656680">Täisekraanilt väljumine</translation>
-<translation id="3889183436948184105">redaktsioon</translation>
 <translation id="3920932319529768807">kokkuvõte</translation>
 <translation id="3924558731517983934">rakendus</translation>
 <translation id="3944740393230681990">proloog</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Sisestage arv.</translation>
 <translation id="4912536737030637138">bibliograafia kirje</translation>
 <translation id="492244087561876220">kommentaar</translation>
+<translation id="4971739861736909480">Valitud on <ph name="ACCNAME" /></translation>
 <translation id="4975562563186953947">Valitud on <ph name="SELECTED_COUNT" /> üksust</translation>
 <translation id="4992066212339426712">Tühista vaigistus</translation>
 <translation id="49969490063480558">Sisestage märgile „<ph name="ATSIGN" />” järgnev osa. Aadress „<ph name="INVALIDADDRESS" />” pole täielik.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Lisage e-posti aadressile märk „<ph name="ATSIGN" />”. Aadressist „<ph name="INVALIDADDRESS" />” puudub märk „<ph name="ATSIGN" />”.</translation>
 <translation id="7891486169920085145">jagaja</translation>
 <translation id="795667975304826397">Pole valitud</translation>
+<translation id="7962328325860248200">Üksus <ph name="ACCNAME" /> pole valitud</translation>
 <translation id="8034303206267677282">tugev</translation>
 <translation id="8053789581856978548">otsinguteksti väli</translation>
 <translation id="8057695513531652401">teatis</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">kuu</translation>
 <translation id="901493112792887934">praegune aeg sekundites</translation>
 <translation id="901834265349196618">meil:</translation>
-<translation id="9023835124071926463">kommentaaride jaotis</translation>
 <translation id="9048119486235211610">navigeerimine</translation>
 <translation id="9062295712474918030">dokument</translation>
 <translation id="9093215626363556771">välju režiimist Pilt pildis</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_eu.xtb b/third_party/blink/public/strings/translations/blink_strings_eu.xtb
index a8149fd..bc24f64 100644
--- a/third_party/blink/public/strings/translations/blink_strings_eu.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_eu.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Luzatu testua <ph name="MIN_CHARACTERS" /> karaktere izan ditzan gutxienez (<ph name="CURRENT_LENGTH" /> karaktere erabiltzen ari zara).</translation>
 <translation id="383465348367842624">"<ph name="ATSIGN" />" ikurraren ondoren ezin da "<ph name="INVALIDCHARACTER" />" idatzi.</translation>
 <translation id="3846214748874656680">Irten pantaila osotik</translation>
-<translation id="3889183436948184105">zuzenketa</translation>
 <translation id="3920932319529768807">ondorioa</translation>
 <translation id="3924558731517983934">aplikazioa</translation>
 <translation id="3944740393230681990">hitzaurrea</translation>
@@ -257,7 +256,6 @@
 <translation id="8987927404178983737">Hilabetea</translation>
 <translation id="901493112792887934">uneko denbora segundotan</translation>
 <translation id="901834265349196618">helbide elektronikoa</translation>
-<translation id="9023835124071926463">iruzkinen atala</translation>
 <translation id="9048119486235211610">nabigazioa</translation>
 <translation id="9062295712474918030">dokumentua</translation>
 <translation id="9093215626363556771">irten pantaila txikiko modutik</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_fa.xtb b/third_party/blink/public/strings/translations/blink_strings_fa.xtb
index e256043..7752d43 100644
--- a/third_party/blink/public/strings/translations/blink_strings_fa.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_fa.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">لطفاً این نوشتار را به <ph name="MIN_CHARACTERS" /> نویسه یا بیشتر افزایش دهید (درحال حاضر از <ph name="CURRENT_LENGTH" /> نویسه استفاده می‌کنید).</translation>
 <translation id="383465348367842624">قسمت قبل از «<ph name="ATSIGN" />» نباید حاوی نماد «<ph name="INVALIDCHARACTER" />» باشد.</translation>
 <translation id="3846214748874656680">خروج از حالت تمام صفحه</translation>
-<translation id="3889183436948184105">بازبینی</translation>
 <translation id="3920932319529768807">نتیجه‌گیری</translation>
 <translation id="3924558731517983934">برنامه</translation>
 <translation id="3944740393230681990">گفتار آغازین</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">لطفاً شماره‌ای را وارد کنید.</translation>
 <translation id="4912536737030637138">ورودی فهرست منابع</translation>
 <translation id="492244087561876220">نظر</translation>
+<translation id="4971739861736909480"><ph name="ACCNAME" /> انتخاب شد</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> انتخاب شد</translation>
 <translation id="4992066212339426712">باصدا کردن</translation>
 <translation id="49969490063480558">لطفاً قسمت بعد از «<ph name="ATSIGN" />» را وارد کنید. «<ph name="INVALIDADDRESS" />» ناقص است.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">لطفاً نماد «<ph name="ATSIGN" />» را به نشانی ایمیل اضافه کنید. «<ph name="INVALIDADDRESS" />» در «<ph name="ATSIGN" />» موجود نیست.</translation>
 <translation id="7891486169920085145">تقسیم‌کننده</translation>
 <translation id="795667975304826397">فایلی انتخاب نشده است</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" /> انتخاب نشده است</translation>
 <translation id="8034303206267677282">قوی</translation>
 <translation id="8053789581856978548">فیلد نوشتاری جستجو</translation>
 <translation id="8057695513531652401">اطلاعیه</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">ماه</translation>
 <translation id="901493112792887934">زمان کنونی به ثانیه</translation>
 <translation id="901834265349196618">ایمیل</translation>
-<translation id="9023835124071926463">بخش نظرات</translation>
 <translation id="9048119486235211610">پیمایش</translation>
 <translation id="9062295712474918030">سند</translation>
 <translation id="9093215626363556771">خروج از تصویر در تصویر</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_fi.xtb b/third_party/blink/public/strings/translations/blink_strings_fi.xtb
index c6dc0e37..4b5f210 100644
--- a/third_party/blink/public/strings/translations/blink_strings_fi.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_fi.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Pidennä tämä teksti yli <ph name="MIN_CHARACTERS" /> merkkiin (tällä hetkellä käytössä <ph name="CURRENT_LENGTH" /> merkkiä).</translation>
 <translation id="383465348367842624"><ph name="ATSIGN" />-osaa ennen tulevassa osassa ei pitäisi olla merkkiä <ph name="INVALIDCHARACTER" />.</translation>
 <translation id="3846214748874656680">Sulje koko näytön tila.</translation>
-<translation id="3889183436948184105">muutostiedot</translation>
 <translation id="3920932319529768807">johtopäätös</translation>
 <translation id="3924558731517983934">sovellus</translation>
 <translation id="3944740393230681990">prologi</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Anna numero.</translation>
 <translation id="4912536737030637138">lähdeluettelomerkintä</translation>
 <translation id="492244087561876220">kommentti</translation>
+<translation id="4971739861736909480"><ph name="ACCNAME" /> valittu</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> valittu</translation>
 <translation id="4992066212339426712">Poista mykistys</translation>
 <translation id="49969490063480558">Kirjoita loppuun asti osoite, joka alkaa <ph name="ATSIGN" />. <ph name="INVALIDADDRESS" /> on vielä kesken.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Sähköpostiosoitteeseen kuuluu <ph name="ATSIGN" />-osa. Osoitteesta <ph name="INVALIDADDRESS" /> puuttuu <ph name="ATSIGN" />.</translation>
 <translation id="7891486169920085145">jakaja</translation>
 <translation id="795667975304826397">Ei valittua tiedostoa</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" /> ei valittu</translation>
 <translation id="8034303206267677282">vahva</translation>
 <translation id="8053789581856978548">hakutekstikenttä</translation>
 <translation id="8057695513531652401">ilmoitus</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Kuukausi</translation>
 <translation id="901493112792887934">nykyinen toistoaika sekunteina</translation>
 <translation id="901834265349196618">sähköposti</translation>
-<translation id="9023835124071926463">kommenttiosio</translation>
 <translation id="9048119486235211610">navigointi</translation>
 <translation id="9062295712474918030">dokumentti</translation>
 <translation id="9093215626363556771">sulje kuva kuvassa ‑tila</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_fil.xtb b/third_party/blink/public/strings/translations/blink_strings_fil.xtb
index 73da5ab..47515a5 100644
--- a/third_party/blink/public/strings/translations/blink_strings_fil.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_fil.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Pakihabaan ang text na ito hanggang <ph name="MIN_CHARACTERS" /> (na) character o higit pa (kasalukuyan kang gumagamit ng <ph name="CURRENT_LENGTH" /> (na) character).</translation>
 <translation id="383465348367842624">Hindi dapat naglalaman ng simbolong '<ph name="INVALIDCHARACTER" />' ang bahagi bago ang '<ph name="ATSIGN" />.'</translation>
 <translation id="3846214748874656680">Lumabas sa fullscreen</translation>
-<translation id="3889183436948184105">rebisyon</translation>
 <translation id="3920932319529768807">konklusyon</translation>
 <translation id="3924558731517983934">application</translation>
 <translation id="3944740393230681990">prologue</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Mangyaring maglagay ng numero.</translation>
 <translation id="4912536737030637138">entry sa bibliograpiya</translation>
 <translation id="492244087561876220">komento</translation>
+<translation id="4971739861736909480"><ph name="ACCNAME" /> ang napili</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> ang napili</translation>
 <translation id="4992066212339426712">I-unmute</translation>
 <translation id="49969490063480558">Mangyaring maglagay ng isang bahagi pagkatapos ng '<ph name="ATSIGN" />.' Hindi kumpleto ang '<ph name="INVALIDADDRESS" />.'</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Mangyaring magsama ng '<ph name="ATSIGN" />' sa email address. Kulang ng '<ph name="ATSIGN" />' ang '<ph name="INVALIDADDRESS" />.'</translation>
 <translation id="7891486169920085145">splitter</translation>
 <translation id="795667975304826397">Walang napiling file</translation>
+<translation id="7962328325860248200">Hindi napili ang <ph name="ACCNAME" /></translation>
 <translation id="8034303206267677282">malakas</translation>
 <translation id="8053789581856978548">text field ng paghahanap</translation>
 <translation id="8057695513531652401">paunawa</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Buwan</translation>
 <translation id="901493112792887934">kasalukuyang oras ayon sa segundo</translation>
 <translation id="901834265349196618">email</translation>
-<translation id="9023835124071926463">seksyon ng komento</translation>
 <translation id="9048119486235211610">navigation</translation>
 <translation id="9062295712474918030">dokumento</translation>
 <translation id="9093215626363556771">lumabas sa picture-in-picture</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_fr-CA.xtb b/third_party/blink/public/strings/translations/blink_strings_fr-CA.xtb
index ad126cc..7179dbd 100644
--- a/third_party/blink/public/strings/translations/blink_strings_fr-CA.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_fr-CA.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Veuillez allonger ce texte de manière à ce qu'il comporte au moins <ph name="MIN_CHARACTERS" /> caractères (votre texte compte actuellement <ph name="CURRENT_LENGTH" /> caractères).</translation>
 <translation id="383465348367842624">Le texte précédant « <ph name="ATSIGN" /> » ne doit pas contenir le symbole « <ph name="INVALIDCHARACTER" /> ».</translation>
 <translation id="3846214748874656680">Quitter le mode Plein écran</translation>
-<translation id="3889183436948184105">révision</translation>
 <translation id="3920932319529768807">conclusion</translation>
 <translation id="3924558731517983934">application</translation>
 <translation id="3944740393230681990">prologue</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Veuillez entrer un nombre.</translation>
 <translation id="4912536737030637138">entrée de bibliographie</translation>
 <translation id="492244087561876220">commentaire</translation>
+<translation id="4971739861736909480"><ph name="ACCNAME" /> est sélectionné</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> élément(s) sélectionné(s)</translation>
 <translation id="4992066212339426712">Réactiver le son</translation>
 <translation id="49969490063480558">Veuillez entrer la partie manquante après « <ph name="ATSIGN" /> ». « <ph name="INVALIDADDRESS" /> » est incomplète.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Veuillez ajouter « <ph name="ATSIGN" /> » dans l'adresse de courriel. Il manque un symbole « <ph name="ATSIGN" /> » dans « <ph name="INVALIDADDRESS" /> ».</translation>
 <translation id="7891486169920085145">séparateur</translation>
 <translation id="795667975304826397">Aucun fichier sélectionné</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" /> n'est pas sélectionné</translation>
 <translation id="8034303206267677282">important</translation>
 <translation id="8053789581856978548">champ de recherche textuelle</translation>
 <translation id="8057695513531652401">avis</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Mois</translation>
 <translation id="901493112792887934">Durée actuelle en secondes</translation>
 <translation id="901834265349196618">courriel</translation>
-<translation id="9023835124071926463">section des commentaires</translation>
 <translation id="9048119486235211610">navigation</translation>
 <translation id="9062295712474918030">document</translation>
 <translation id="9093215626363556771">quitter le mode d'incrustation d'image</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_fr.xtb b/third_party/blink/public/strings/translations/blink_strings_fr.xtb
index 2c22641fa..c9e92f55 100644
--- a/third_party/blink/public/strings/translations/blink_strings_fr.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_fr.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Veuillez allonger ce texte pour qu'il comporte au moins <ph name="MIN_CHARACTERS" /> caractères. Il en compte actuellement <ph name="CURRENT_LENGTH" />.</translation>
 <translation id="383465348367842624">La partie suivie du symbole "<ph name="ATSIGN" />" ne doit pas contenir le caractère "<ph name="INVALIDCHARACTER" />".</translation>
 <translation id="3846214748874656680">Quitter le mode plein écran</translation>
-<translation id="3889183436948184105">révision</translation>
 <translation id="3920932319529768807">conclusion</translation>
 <translation id="3924558731517983934">application</translation>
 <translation id="3944740393230681990">prologue</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Veuillez saisir un nombre.</translation>
 <translation id="4912536737030637138">entrée bibliographique</translation>
 <translation id="492244087561876220">commentaire</translation>
+<translation id="4971739861736909480">L'élément "<ph name="ACCNAME" />" est sélectionné</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> élément(s) sélectionné(s)</translation>
 <translation id="4992066212339426712">Réactiver le son</translation>
 <translation id="49969490063480558">Veuillez saisir la partie manquante après le symbole "<ph name="ATSIGN" />". L'adresse "<ph name="INVALIDADDRESS" />" est incomplète.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Veuillez inclure "<ph name="ATSIGN" />" dans l'adresse e-mail. Il manque un symbole "<ph name="ATSIGN" />" dans "<ph name="INVALIDADDRESS" />".</translation>
 <translation id="7891486169920085145">séparateur</translation>
 <translation id="795667975304826397">Aucun fichier choisi</translation>
+<translation id="7962328325860248200">L'élément "<ph name="ACCNAME" />" n'est pas sélectionné</translation>
 <translation id="8034303206267677282">important</translation>
 <translation id="8053789581856978548">champ de recherche de texte</translation>
 <translation id="8057695513531652401">notification</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Mois</translation>
 <translation id="901493112792887934">durée actuelle en secondes</translation>
 <translation id="901834265349196618">e-mail</translation>
-<translation id="9023835124071926463">section de commentaires</translation>
 <translation id="9048119486235211610">navigation</translation>
 <translation id="9062295712474918030">document</translation>
 <translation id="9093215626363556771">quitter le mode PIP</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_gl.xtb b/third_party/blink/public/strings/translations/blink_strings_gl.xtb
index 97b7aaf..739bfd7 100644
--- a/third_party/blink/public/strings/translations/blink_strings_gl.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_gl.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Amplía este texto a <ph name="MIN_CHARACTERS" /> caracteres ou máis. Actualmente estás utilizando <ph name="CURRENT_LENGTH" /> caracteres.</translation>
 <translation id="383465348367842624">O texto seguido do signo "<ph name="ATSIGN" />" non debe conter o símbolo "<ph name="INVALIDCHARACTER" />".</translation>
 <translation id="3846214748874656680">Saír da pantalla completa</translation>
-<translation id="3889183436948184105">revisión</translation>
 <translation id="3920932319529768807">conclusión</translation>
 <translation id="3924558731517983934">aplicación</translation>
 <translation id="3944740393230681990">prólogo</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Introduce un número.</translation>
 <translation id="4912536737030637138">entrada bibliográfica</translation>
 <translation id="492244087561876220">comentario</translation>
+<translation id="4971739861736909480"><ph name="ACCNAME" /> (opción seleccionada)</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> seleccionados</translation>
 <translation id="4992066212339426712">Activar o son</translation>
 <translation id="49969490063480558">Introduce texto despois de "<ph name="ATSIGN" />". O enderezo electrónico "<ph name="INVALIDADDRESS" />" está incompleto.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Inclúe un valor "<ph name="ATSIGN" />" no enderezo de correo electrónico. A "<ph name="INVALIDADDRESS" />" fáltalle un "<ph name="ATSIGN" />".</translation>
 <translation id="7891486169920085145">divisor</translation>
 <translation id="795667975304826397">Non hai ningún ficheiro seleccionado</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" /> (opción non seleccionada)</translation>
 <translation id="8034303206267677282">importante</translation>
 <translation id="8053789581856978548">campo de texto de busca</translation>
 <translation id="8057695513531652401">aviso</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Mes</translation>
 <translation id="901493112792887934">tempo actual en segundos</translation>
 <translation id="901834265349196618">correo electrónico</translation>
-<translation id="9023835124071926463">sección de comentarios</translation>
 <translation id="9048119486235211610">navegación</translation>
 <translation id="9062295712474918030">documento</translation>
 <translation id="9093215626363556771">sae do modo de pantalla superposta</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_gu.xtb b/third_party/blink/public/strings/translations/blink_strings_gu.xtb
index c0fa9c6..a9295d6 100644
--- a/third_party/blink/public/strings/translations/blink_strings_gu.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_gu.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">કૃપા કરીને આ ટેક્સ્ટને <ph name="MIN_CHARACTERS" /> અક્ષર અથવા તેથી વધુ સુધી લંબાવો (તમે હાલમાં <ph name="CURRENT_LENGTH" /> અક્ષરોનો ઉપયોગ કરી રહ્યાં છો).</translation>
 <translation id="383465348367842624">'<ph name="ATSIGN" />' દ્વારા અનુસરાઈ રહેલા ભાગમાં '<ph name="INVALIDCHARACTER" />' પ્રતીક શામેલ હોવું જોઈએ નહીં.</translation>
 <translation id="3846214748874656680">પૂર્ણસ્ક્રીનથી બહાર નીકળો</translation>
-<translation id="3889183436948184105">પુનરાવર્તન</translation>
 <translation id="3920932319529768807">સારાંશ</translation>
 <translation id="3924558731517983934">ઍપ્લિકેશન</translation>
 <translation id="3944740393230681990">પ્રસ્તાવના</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">કૃપા કરીને એક નંબર દાખલ કરો.</translation>
 <translation id="4912536737030637138">ગ્રંથસૂચિની એન્ટ્રી</translation>
 <translation id="492244087561876220">કૉમેન્ટ</translation>
+<translation id="4971739861736909480"><ph name="ACCNAME" />ની પસંદગી કરી</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> પસંદ કર્યા</translation>
 <translation id="4992066212339426712">અનમ્યૂટ કરો</translation>
 <translation id="49969490063480558">કૃપા કરીને '<ph name="ATSIGN" />' ને અનુસરી રહેલો ભાગ દાખલ કરો. '<ph name="INVALIDADDRESS" />' અપૂર્ણ છે.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">કૃપા કરીને ઇમેઇલ સરનામાંમાં '<ph name="ATSIGN" />' શામેલ કરો. '<ph name="INVALIDADDRESS" />'માં '<ph name="ATSIGN" />' ખૂટે છે.</translation>
 <translation id="7891486169920085145">વિભાજનકર્તા</translation>
 <translation id="795667975304826397">કોઈ ફાઇલ પસંદ કરેલી નથી</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" />ની પસંદગી કરી નથી</translation>
 <translation id="8034303206267677282">અગત્યનું</translation>
 <translation id="8053789581856978548">ટેક્સ્ટ ફીલ્ડ શોધો</translation>
 <translation id="8057695513531652401">સૂચના</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">મહિનો</translation>
 <translation id="901493112792887934">સેકન્ડ્સમાં વર્તમાન સમય</translation>
 <translation id="901834265349196618">ઇમેઇલ</translation>
-<translation id="9023835124071926463">કૉમેન્ટ વિભાગ</translation>
 <translation id="9048119486235211610">નેવિગેશન</translation>
 <translation id="9062295712474918030">દસ્તાવેજ</translation>
 <translation id="9093215626363556771">ચિત્ર-માં-ચિત્રમાંથી બહાર નીકળો</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_hi.xtb b/third_party/blink/public/strings/translations/blink_strings_hi.xtb
index a2dc037..181cfcb 100644
--- a/third_party/blink/public/strings/translations/blink_strings_hi.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_hi.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">कृपया इस लेख को <ph name="MIN_CHARACTERS" /> वर्णों या ज़्यादा तक बढ़ाएं (वर्तमान में आप <ph name="CURRENT_LENGTH" /> वर्णों का उपयोग कर रहे हैं).</translation>
 <translation id="383465348367842624">'<ph name="ATSIGN" />' के बाद आने वाले भाग में '<ph name="INVALIDCHARACTER" />' प्रतीक शामिल नहीं होना चाहिए.</translation>
 <translation id="3846214748874656680">पूर्णस्क्रीन से बाहर निकलें</translation>
-<translation id="3889183436948184105">बदलाव</translation>
 <translation id="3920932319529768807">निष्कर्ष</translation>
 <translation id="3924558731517983934">ऐप्लिकेशन</translation>
 <translation id="3944740393230681990">प्रस्तावना</translation>
@@ -257,7 +256,6 @@
 <translation id="8987927404178983737">माह</translation>
 <translation id="901493112792887934">वर्तमान समय, सेकंड में</translation>
 <translation id="901834265349196618">ईमेल</translation>
-<translation id="9023835124071926463">टिप्पणियों वाला सेक्शन</translation>
 <translation id="9048119486235211610">मार्गदर्शक</translation>
 <translation id="9062295712474918030">दस्तावेज़</translation>
 <translation id="9093215626363556771">पिक्चर में पिक्चर से बाहर निकलें</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_hr.xtb b/third_party/blink/public/strings/translations/blink_strings_hr.xtb
index da16eab..53fd477 100644
--- a/third_party/blink/public/strings/translations/blink_strings_hr.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_hr.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Produljite broj znakova u tekstu na minimalno <ph name="MIN_CHARACTERS" />. Trenutačno imate premalo znakova (<ph name="CURRENT_LENGTH" />).</translation>
 <translation id="383465348367842624">Dio adrese ispred znaka "<ph name="ATSIGN" />" ne smije sadržavati simbol "<ph name="INVALIDCHARACTER" />".</translation>
 <translation id="3846214748874656680">Izlaz iz punog zaslona</translation>
-<translation id="3889183436948184105">izmjena</translation>
 <translation id="3920932319529768807">zaključak</translation>
 <translation id="3924558731517983934">aplikacija</translation>
 <translation id="3944740393230681990">prolog</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Unesite broj.</translation>
 <translation id="4912536737030637138">bibliografski unos</translation>
 <translation id="492244087561876220">komentar</translation>
+<translation id="4971739861736909480">Odabranih stavki: <ph name="ACCNAME" /></translation>
 <translation id="4975562563186953947">Odabrano: <ph name="SELECTED_COUNT" /></translation>
 <translation id="4992066212339426712">Uključi zvuk</translation>
 <translation id="49969490063480558">Unesite dio adrese iza znaka "<ph name="ATSIGN" />". "<ph name="INVALIDADDRESS" />" nije potpuna e-adresa.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Uključite znak "<ph name="ATSIGN" />" u e-adresu. U adresi "<ph name="INVALIDADDRESS" />" nedostaje znak "<ph name="ATSIGN" />".</translation>
 <translation id="7891486169920085145">razdjelnik</translation>
 <translation id="795667975304826397">Nije odabrana niti jedna datoteka.</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" /> nije odabrano</translation>
 <translation id="8034303206267677282">jaka</translation>
 <translation id="8053789581856978548">pretraži tekstno polje</translation>
 <translation id="8057695513531652401">obavijest</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Mjesec</translation>
 <translation id="901493112792887934">trenutačno vrijeme u sekundama</translation>
 <translation id="901834265349196618">e-pošta</translation>
-<translation id="9023835124071926463">odjeljak komentara</translation>
 <translation id="9048119486235211610">navigacija</translation>
 <translation id="9062295712474918030">dokument</translation>
 <translation id="9093215626363556771">izlaz iz načina slika u slici</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_hu.xtb b/third_party/blink/public/strings/translations/blink_strings_hu.xtb
index 9cc20a6..3fa1fc1 100644
--- a/third_party/blink/public/strings/translations/blink_strings_hu.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_hu.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Kérjük, <ph name="MIN_CHARACTERS" /> karakter hosszú vagy annál hosszabb szöveget adjon meg (jelenleg <ph name="CURRENT_LENGTH" /> karaktert használ).</translation>
 <translation id="383465348367842624">A „<ph name="ATSIGN" />” előtti rész nem tartalmazhat „<ph name="INVALIDCHARACTER" />” karaktert.</translation>
 <translation id="3846214748874656680">Teljes képernyő – ki</translation>
-<translation id="3889183436948184105">változat</translation>
 <translation id="3920932319529768807">összefoglalás</translation>
 <translation id="3924558731517983934">alkalmazás</translation>
 <translation id="3944740393230681990">prológus</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Kérjük, adjon meg egy számot.</translation>
 <translation id="4912536737030637138">bibliográfiai bejegyzés</translation>
 <translation id="492244087561876220">megjegyzés</translation>
+<translation id="4971739861736909480"><ph name="ACCNAME" /> kiválasztva</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> kiválasztva</translation>
 <translation id="4992066212339426712">Némítás feloldása</translation>
 <translation id="49969490063480558">Kérjük, adja meg a „<ph name="ATSIGN" />” utáni részt is. A(z) „<ph name="INVALIDADDRESS" />” cím nem teljes.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Kérjük, írjon egy „<ph name="ATSIGN" />” karaktert az e-mail címbe. A(z) „<ph name="INVALIDADDRESS" />” címből hiányzik a „<ph name="ATSIGN" />” jel.</translation>
 <translation id="7891486169920085145">felosztó</translation>
 <translation id="795667975304826397">Nincs fájl kiválasztva</translation>
+<translation id="7962328325860248200">A(z) <ph name="ACCNAME" /> fiók nincs kiválasztva</translation>
 <translation id="8034303206267677282">fontos</translation>
 <translation id="8053789581856978548">keresés a szövegmezőben</translation>
 <translation id="8057695513531652401">közlés</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">hónap</translation>
 <translation id="901493112792887934">jelenlegi idő másodpercben</translation>
 <translation id="901834265349196618">e-mail</translation>
-<translation id="9023835124071926463">megjegyzések szakasza</translation>
 <translation id="9048119486235211610">navigáció</translation>
 <translation id="9062295712474918030">dokumentum</translation>
 <translation id="9093215626363556771">kilépés a kép a képben funkcióból</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_hy.xtb b/third_party/blink/public/strings/translations/blink_strings_hy.xtb
index 1e78b15a..3c631d6 100644
--- a/third_party/blink/public/strings/translations/blink_strings_hy.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_hy.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Ընդլայնեք այս տեքստը մինչև <ph name="MIN_CHARACTERS" /> կամ ավելի գրանշան (ներկայումս <ph name="CURRENT_LENGTH" /> գրանշան է):</translation>
 <translation id="383465348367842624">«<ph name="ATSIGN" />»-ին հետևող մասը չպետք է պարունակի «<ph name="INVALIDCHARACTER" />» նշանը:</translation>
 <translation id="3846214748874656680">Դուք գալ լիաէկրան ռեժիմից</translation>
-<translation id="3889183436948184105">տարբերակ</translation>
 <translation id="3920932319529768807">եզրակացություն</translation>
 <translation id="3924558731517983934">հավելված</translation>
 <translation id="3944740393230681990">նախաբան</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Մուտքագրեք համար:</translation>
 <translation id="4912536737030637138">բիբլիոգրաֆիական գրառում</translation>
 <translation id="492244087561876220">մեկնաբանություն</translation>
+<translation id="4971739861736909480">«<ph name="ACCNAME" />» օբյեկտն ընտրված է</translation>
 <translation id="4975562563186953947">Ընտրված է՝ <ph name="SELECTED_COUNT" /></translation>
 <translation id="4992066212339426712">Միացնել ձայնը</translation>
 <translation id="49969490063480558">Մուտքագրեք «<ph name="ATSIGN" />» նշանին հաջորդող մասը: «<ph name="INVALIDADDRESS" />» հասցեն թերի է:</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Էլ․ հասցեն պետք է պարունակի «<ph name="ATSIGN" />» նշանը: «<ph name="INVALIDADDRESS" />» հասցեում «<ph name="ATSIGN" />» նշանը չկա:</translation>
 <translation id="7891486169920085145">բաժանիչ</translation>
 <translation id="795667975304826397">Ընտրված ֆայլ չկա</translation>
+<translation id="7962328325860248200">«<ph name="ACCNAME" />» օբյեկտն ընտրված չէ</translation>
 <translation id="8034303206267677282">կարևոր</translation>
 <translation id="8053789581856978548">որոնման տեքստի վանդակ</translation>
 <translation id="8057695513531652401">ծանոթագրություն</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Ամիս</translation>
 <translation id="901493112792887934">ընթացիկ ժամանակը վայրկյաններով</translation>
 <translation id="901834265349196618">էլփոստ</translation>
-<translation id="9023835124071926463">մեկնաբանությունների բաժին</translation>
 <translation id="9048119486235211610">նավարկում</translation>
 <translation id="9062295712474918030">փաստաթուղթ</translation>
 <translation id="9093215626363556771">դուրս գալ «նկար նկարի մեջ» ռեժիմից</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_id.xtb b/third_party/blink/public/strings/translations/blink_strings_id.xtb
index 1f2c3e9..d021f66 100644
--- a/third_party/blink/public/strings/translations/blink_strings_id.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_id.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Perpanjang teks ini hingga <ph name="MIN_CHARACTERS" /> karakter atau lebih (saat ini Anda menggunakan <ph name="CURRENT_LENGTH" /> karakter).</translation>
 <translation id="383465348367842624">Bagian sebelum '<ph name="ATSIGN" />' tidak boleh berisi simbol '<ph name="INVALIDCHARACTER" />'.</translation>
 <translation id="3846214748874656680">Keluar dari layar penuh</translation>
-<translation id="3889183436948184105">revisi</translation>
 <translation id="3920932319529768807">kesimpulan</translation>
 <translation id="3924558731517983934">aplikasi</translation>
 <translation id="3944740393230681990">prolog</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Masukkan nomor.</translation>
 <translation id="4912536737030637138">entri bibliografi</translation>
 <translation id="492244087561876220">komentar</translation>
+<translation id="4971739861736909480"><ph name="ACCNAME" /> dipilih</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> dipilih</translation>
 <translation id="4992066212339426712">Bunyikan</translation>
 <translation id="49969490063480558">Masukkan bagian setelah '<ph name="ATSIGN" />'. '<ph name="INVALIDADDRESS" />' tidak lengkap.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Sertakan '<ph name="ATSIGN" />' pada alamat email. '<ph name="INVALIDADDRESS" />' tidak memiliki '<ph name="ATSIGN" />'.</translation>
 <translation id="7891486169920085145">pemisah</translation>
 <translation id="795667975304826397">Tidak ada file yang dipilih</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" /> tidak dipilih</translation>
 <translation id="8034303206267677282">kuat</translation>
 <translation id="8053789581856978548">bidang teks penelusuran</translation>
 <translation id="8057695513531652401">pemberitahuan</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Bulan</translation>
 <translation id="901493112792887934">waktu saat ini dalam detik</translation>
 <translation id="901834265349196618">email</translation>
-<translation id="9023835124071926463">bagian komentar</translation>
 <translation id="9048119486235211610">navigasi</translation>
 <translation id="9062295712474918030">dokumen</translation>
 <translation id="9093215626363556771">keluar dari mode picture-in-picture</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_is.xtb b/third_party/blink/public/strings/translations/blink_strings_is.xtb
index 1d9146f..f9384d92 100644
--- a/third_party/blink/public/strings/translations/blink_strings_is.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_is.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Lengdu þennan texta í <ph name="MIN_CHARACTERS" /> stafi eða meira (sem stendur notarðu <ph name="CURRENT_LENGTH" /> stafi).</translation>
 <translation id="383465348367842624">Hlutinn sem kemur á eftir „<ph name="ATSIGN" />“ á ekki að innihalda táknið „<ph name="INVALIDCHARACTER" />“.</translation>
 <translation id="3846214748874656680">Hætta að nota allan skjáinn</translation>
-<translation id="3889183436948184105">endurskoðun</translation>
 <translation id="3920932319529768807">samantekt</translation>
 <translation id="3924558731517983934">forrit</translation>
 <translation id="3944740393230681990">formáli</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Sláðu inn tölu.</translation>
 <translation id="4912536737030637138">færsla í heimildaskrá</translation>
 <translation id="492244087561876220">athugasemd</translation>
+<translation id="4971739861736909480"><ph name="ACCNAME" /> valið</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> valin</translation>
 <translation id="4992066212339426712">Hætta að þagga</translation>
 <translation id="49969490063480558">Sláðu inn hluta á eftir „<ph name="ATSIGN" />“. „<ph name="INVALIDADDRESS" />“ er ólokið.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Hafðu „<ph name="ATSIGN" />“ með í netfanginu. „<ph name="ATSIGN" />“ vantar í „<ph name="INVALIDADDRESS" />“.</translation>
 <translation id="7891486169920085145">skiptir</translation>
 <translation id="795667975304826397">Engin skrá valin</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" /> ekki valið</translation>
 <translation id="8034303206267677282">mikill</translation>
 <translation id="8053789581856978548">textareitur fyrir leit</translation>
 <translation id="8057695513531652401">tilkynning</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Mánuður</translation>
 <translation id="901493112792887934">núverandi tími í sekúndum</translation>
 <translation id="901834265349196618">tölvupóstur</translation>
-<translation id="9023835124071926463">athugasemdahluti</translation>
 <translation id="9048119486235211610">yfirlit</translation>
 <translation id="9062295712474918030">skjal</translation>
 <translation id="9093215626363556771">loka mynd í mynd</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_it.xtb b/third_party/blink/public/strings/translations/blink_strings_it.xtb
index fb335c7..33cadce 100644
--- a/third_party/blink/public/strings/translations/blink_strings_it.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_it.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Prolunga questo testo a <ph name="MIN_CHARACTERS" /> o più caratteri (al momento stai utilizzando <ph name="CURRENT_LENGTH" /> caratteri).</translation>
 <translation id="383465348367842624">Una parte seguita da "<ph name="ATSIGN" />" non deve contenere il simbolo "<ph name="INVALIDCHARACTER" />".</translation>
 <translation id="3846214748874656680">Esci da schermo intero</translation>
-<translation id="3889183436948184105">revisione</translation>
 <translation id="3920932319529768807">conclusioni</translation>
 <translation id="3924558731517983934">applicazione</translation>
 <translation id="3944740393230681990">prologo</translation>
@@ -259,7 +258,6 @@
 <translation id="8987927404178983737">Mese</translation>
 <translation id="901493112792887934">tempo attuale in secondi</translation>
 <translation id="901834265349196618">email</translation>
-<translation id="9023835124071926463">sezione dei commenti</translation>
 <translation id="9048119486235211610">navigazione</translation>
 <translation id="9062295712474918030">documento</translation>
 <translation id="9093215626363556771">esci da picture in picture</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_iw.xtb b/third_party/blink/public/strings/translations/blink_strings_iw.xtb
index 7ca681d..6e51687d 100644
--- a/third_party/blink/public/strings/translations/blink_strings_iw.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_iw.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">הארך טקסט זה ל-<ph name="MIN_CHARACTERS" /> תווים או יותר (אתה משתמש כרגע ב-<ph name="CURRENT_LENGTH" /> תווים).</translation>
 <translation id="383465348367842624">חלק ולאחריו '<ph name="ATSIGN" />' לא אמור לכלול את הסמל '<ph name="INVALIDCHARACTER" />'.</translation>
 <translation id="3846214748874656680">צא ממסך מלא</translation>
-<translation id="3889183436948184105">תיקון</translation>
 <translation id="3920932319529768807">סיכום</translation>
 <translation id="3924558731517983934">יישום</translation>
 <translation id="3944740393230681990">פרולוג</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">יש להזין מספר.</translation>
 <translation id="4912536737030637138">ערך ביבליוגרפי</translation>
 <translation id="492244087561876220">תגובה</translation>
+<translation id="4971739861736909480">הפריט <ph name="ACCNAME" /> נבחר</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> נבחרו</translation>
 <translation id="4992066212339426712">בטל השתקה</translation>
 <translation id="49969490063480558">הזן חלק ולאחריו '<ph name="ATSIGN" />'‏. השדה '<ph name="INVALIDADDRESS" />' אינו מלא.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">כלול '<ph name="ATSIGN" />' בכתובת האימייל. ב-'<ph name="INVALIDADDRESS" />' חסר '<ph name="ATSIGN" />'.</translation>
 <translation id="7891486169920085145">מפצל</translation>
 <translation id="795667975304826397">לא נבחר קובץ</translation>
+<translation id="7962328325860248200">הפריט <ph name="ACCNAME" /> לא נבחר</translation>
 <translation id="8034303206267677282">חשוב</translation>
 <translation id="8053789581856978548">שדה טקסט לחיפוש</translation>
 <translation id="8057695513531652401">הודעה</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">חודש</translation>
 <translation id="901493112792887934">זמן נוכחי בשניות</translation>
 <translation id="901834265349196618">אימייל</translation>
-<translation id="9023835124071926463">קטע התגובות</translation>
 <translation id="9048119486235211610">ניווט</translation>
 <translation id="9062295712474918030">מסמך</translation>
 <translation id="9093215626363556771">יציאה ממצב 'תמונה בתוך תמונה'</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_ja.xtb b/third_party/blink/public/strings/translations/blink_strings_ja.xtb
index ead5a16..3acf4c5 100644
--- a/third_party/blink/public/strings/translations/blink_strings_ja.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_ja.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">このテキストは <ph name="MIN_CHARACTERS" /> 文字以上で指定してください(現在は <ph name="CURRENT_LENGTH" /> 文字です)。</translation>
 <translation id="383465348367842624">「<ph name="ATSIGN" />」の前の文字列に記号「<ph name="INVALIDCHARACTER" />」を使用しないでください。</translation>
 <translation id="3846214748874656680">全画面表示を終了</translation>
-<translation id="3889183436948184105">変更履歴</translation>
 <translation id="3920932319529768807">まとめ</translation>
 <translation id="3924558731517983934">アプリケーション</translation>
 <translation id="3944740393230681990">プロローグ</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">数字を入力してください。</translation>
 <translation id="4912536737030637138">文献情報</translation>
 <translation id="492244087561876220">コメント</translation>
+<translation id="4971739861736909480">「<ph name="ACCNAME" />」は選択済みです</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> 件選択</translation>
 <translation id="4992066212339426712">ミュートを解除</translation>
 <translation id="49969490063480558">「<ph name="INVALIDADDRESS" />」は完全なメールアドレスではありません。「<ph name="ATSIGN" />」に続く文字列を入力してください。</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">メール アドレスに「<ph name="ATSIGN" />」を挿入してください。「<ph name="INVALIDADDRESS" />」内に「<ph name="ATSIGN" />」がありません。</translation>
 <translation id="7891486169920085145">分割バー</translation>
 <translation id="795667975304826397">選択されていません</translation>
+<translation id="7962328325860248200">「<ph name="ACCNAME" />」は選択されていません</translation>
 <translation id="8034303206267677282">重要</translation>
 <translation id="8053789581856978548">検索テキスト欄</translation>
 <translation id="8057695513531652401">注記</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">月</translation>
 <translation id="901493112792887934">現在の時間(秒単位)</translation>
 <translation id="901834265349196618">メール</translation>
-<translation id="9023835124071926463">コメント セクション</translation>
 <translation id="9048119486235211610">ナビゲーション</translation>
 <translation id="9062295712474918030">ドキュメント</translation>
 <translation id="9093215626363556771">ピクチャー イン ピクチャーを終了します</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_ka.xtb b/third_party/blink/public/strings/translations/blink_strings_ka.xtb
index ca83810..efdd173 100644
--- a/third_party/blink/public/strings/translations/blink_strings_ka.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_ka.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">გთხოვთ, გაზარდოთ ეს ტექსტი <ph name="MIN_CHARACTERS" /> ან მეტ სიმბოლომდე (ამჟამად იყენებთ <ph name="CURRENT_LENGTH" /> სიმბოლოს).</translation>
 <translation id="383465348367842624">ნაწილი, რომელსაც მოყვება „<ph name="ATSIGN" />“ არ უნდა შეიცავდეს „<ph name="INVALIDCHARACTER" />“ სიმბოლოს.</translation>
 <translation id="3846214748874656680">სრულეკრანიანი რეჟიმიდან გამოსვლა</translation>
-<translation id="3889183436948184105">რედაქცია</translation>
 <translation id="3920932319529768807">დასკვნა</translation>
 <translation id="3924558731517983934">აპლიკაცია</translation>
 <translation id="3944740393230681990">პროლოგი</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">გთხოვთ შეიყვანეთ ნომერი.</translation>
 <translation id="4912536737030637138">ბიბლიოგრაფიის ჩანაწერი</translation>
 <translation id="492244087561876220">კომენტარი</translation>
+<translation id="4971739861736909480">არჩეულია <ph name="ACCNAME" /></translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> არჩეულია</translation>
 <translation id="4992066212339426712">დადუმების მოხსნა</translation>
 <translation id="49969490063480558">შეიყვანეთ შესაბამისი ნაწილი „<ph name="ATSIGN" />“-ის შემდეგ. „<ph name="INVALIDADDRESS" />“ არასრულია.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">ჩაამატეთ „<ph name="ATSIGN" />“ ელფოსტის მისამართში. „<ph name="INVALIDADDRESS" />“-ში გამოტოვებულია „<ph name="ATSIGN" />“.</translation>
 <translation id="7891486169920085145">გამყოფი</translation>
 <translation id="795667975304826397">ფაილი არ არის არჩეული</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" /> არ არის არჩეული</translation>
 <translation id="8034303206267677282">მნიშვნელოვანი</translation>
 <translation id="8053789581856978548">საძიებო ტექსტის ველი</translation>
 <translation id="8057695513531652401">განცხადება</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">თვე</translation>
 <translation id="901493112792887934">მიმდინარე დრო წამებში</translation>
 <translation id="901834265349196618">ელფოსტა</translation>
-<translation id="9023835124071926463">კომენტარების სექცია</translation>
 <translation id="9048119486235211610">ნავიგაცია</translation>
 <translation id="9062295712474918030">დოკუმენტი</translation>
 <translation id="9093215626363556771">რეჟიმიდან „გამოსახულება გამოსახულებაში“ გასვლა</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_kk.xtb b/third_party/blink/public/strings/translations/blink_strings_kk.xtb
index 777662f..d493a17 100644
--- a/third_party/blink/public/strings/translations/blink_strings_kk.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_kk.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Бұл мәтінді <ph name="MIN_CHARACTERS" /> немесе одан көп таңбаға дейін ұзартыңыз (қазір <ph name="CURRENT_LENGTH" /> таңба).</translation>
 <translation id="383465348367842624">"<ph name="ATSIGN" />" кейінгі бөлім "<ph name="INVALIDCHARACTER" />" белгісін қамтымауы тиіс.</translation>
 <translation id="3846214748874656680">Толық экраннан шығу</translation>
-<translation id="3889183436948184105">нұсқа</translation>
 <translation id="3920932319529768807">қорытынды</translation>
 <translation id="3924558731517983934">қолданба</translation>
 <translation id="3944740393230681990">пролог</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Нөмірді енгізіңіз.</translation>
 <translation id="4912536737030637138">әдебиет жазбасы</translation>
 <translation id="492244087561876220">пікір</translation>
+<translation id="4971739861736909480"><ph name="ACCNAME" /> таңдалды.</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> таңдалды</translation>
 <translation id="4992066212339426712">Дыбысын қосу</translation>
 <translation id="49969490063480558">"<ph name="ATSIGN" />" кейінгі бөлімді енгізіңіз. "<ph name="INVALIDADDRESS" />" толық емес.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Электрондық пошта мекенжайына "<ph name="ATSIGN" />" белгісін енгізіңіз. "<ph name="INVALIDADDRESS" />" мекенжайында "<ph name="ATSIGN" />" жоқ.</translation>
 <translation id="7891486169920085145">бөлгіш</translation>
 <translation id="795667975304826397">Файл таңдалмады</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" /> таңдалмаған</translation>
 <translation id="8034303206267677282">маңызды</translation>
 <translation id="8053789581856978548">мәтіндік іздеу өрісі</translation>
 <translation id="8057695513531652401">ескерту</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Ай</translation>
 <translation id="901493112792887934">ағымдағы уақыт секундар өлшемінде</translation>
 <translation id="901834265349196618">электрондық пошта</translation>
-<translation id="9023835124071926463">пікір бөлімі</translation>
 <translation id="9048119486235211610">навигация</translation>
 <translation id="9062295712474918030">құжат</translation>
 <translation id="9093215626363556771">"суреттегі сурет" режимінен шығу</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_km.xtb b/third_party/blink/public/strings/translations/blink_strings_km.xtb
index 2ccdd08..fcd5385 100644
--- a/third_party/blink/public/strings/translations/blink_strings_km.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_km.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">សូមបន្លាយអត្ថបទនេះឲ្យបាន <ph name="MIN_CHARACTERS" /> តួ ឬច្រើនជាងនេះ (បច្ចុប្បន្ននេះអ្នកកំពុងប្រើ <ph name="CURRENT_LENGTH" /> តួ)។</translation>
 <translation id="383465348367842624">ផ្នែកដែលនៅពីក្រោយ '<ph name="ATSIGN" />' មិនគួរផ្ទុកសញ្ញា '<ph name="INVALIDCHARACTER" />' នេះទេ។</translation>
 <translation id="3846214748874656680">ចាកចេញពីអេក្រង់ពេញ</translation>
-<translation id="3889183436948184105">កំណែប្រែ</translation>
 <translation id="3920932319529768807">សេចក្ដី​បញ្ចប់</translation>
 <translation id="3924558731517983934">កម្មវិធី</translation>
 <translation id="3944740393230681990">បុរេកថា</translation>
@@ -257,7 +256,6 @@
 <translation id="8987927404178983737">ខែ</translation>
 <translation id="901493112792887934">ពេលវេលាបច្ចុប្បន្នជាវិនាទី</translation>
 <translation id="901834265349196618">អ៊ីម៉ែល</translation>
-<translation id="9023835124071926463">ផ្នែកមតិ</translation>
 <translation id="9048119486235211610">ការរុករក</translation>
 <translation id="9062295712474918030">ឯកសារ</translation>
 <translation id="9093215626363556771">ចាកចេញ​ពីមុខងារ​រូបក្នុងរូប</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_kn.xtb b/third_party/blink/public/strings/translations/blink_strings_kn.xtb
index 733118a1..c11afde 100644
--- a/third_party/blink/public/strings/translations/blink_strings_kn.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_kn.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">ಈ ಪಠ್ಯವನ್ನು <ph name="MIN_CHARACTERS" /> ಅಕ್ಷರಗಳಿಗೆ ಅಥವಾ ಅದಕ್ಕಿಂತಲೂ ಹೆಚ್ಚಿಗೆ ಸೀಮಿತಗೊಳಿಸಿ (ನೀವು ಪ್ರಸ್ತುತವಾಗಿ <ph name="CURRENT_LENGTH" /> ಅಕ್ಷರಗಳನ್ನು ಬಳಸುತ್ತಿರುವಿರಿ).</translation>
 <translation id="383465348367842624">'<ph name="ATSIGN" />' ನಂತರದ ಭಾಗವು '<ph name="INVALIDCHARACTER" />' ಚಿಹ್ನೆಯನ್ನು ಒಳಗೊಂಡಿರಬಾರದು.</translation>
 <translation id="3846214748874656680">ಪೂರ್ಣಪರದೆಯಿಂದ ನಿರ್ಗಮಿಸಿ</translation>
-<translation id="3889183436948184105">ಪರಿಷ್ಕರಣೆ</translation>
 <translation id="3920932319529768807">ತೀರ್ಮಾನ</translation>
 <translation id="3924558731517983934">ಅಪ್ಲಿಕೇಶನ್</translation>
 <translation id="3944740393230681990">ಪೀಠಿಕೆ</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">ದಯವಿಟ್ಟು ಸಂಖ್ಯೆಯನ್ನು ನಮೂದಿಸಿ.</translation>
 <translation id="4912536737030637138">ಗ್ರಂಥಸೂಚಿ ನಮೂದು</translation>
 <translation id="492244087561876220">ಕಾಮೆಂಟ್</translation>
+<translation id="4971739861736909480"><ph name="ACCNAME" /> ಅನ್ನು ಆಯ್ಕೆಮಾಡಲಾಗಿದೆ</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> ಆಯ್ಕೆ ಮಾಡಲಾಗಿದೆ</translation>
 <translation id="4992066212339426712">ಅನ್‌ಮ್ಯೂಟ್</translation>
 <translation id="49969490063480558">'<ph name="ATSIGN" />' ನಂತರದ ಒಂದು ಭಾಗವನ್ನು ನಮೂದಿಸಿ. '<ph name="INVALIDADDRESS" />' ಅಪೂರ್ಣವಾಗಿದೆ.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">ಇಮೇಲ್ ವಿಳಾಸದಲ್ಲಿ ಒಂದು '<ph name="ATSIGN" />' ಅನ್ನು ಸೇರಿಸಿ. '<ph name="ATSIGN" />' ನಲ್ಲಿ '<ph name="INVALIDADDRESS" />' ಕಾಣೆಯಾಗಿದೆ.</translation>
 <translation id="7891486169920085145">ಛೇದಕ</translation>
 <translation id="795667975304826397">ಯಾವುದೇ ಫೈಲ್ ಆಯ್ಕೆ ಮಾಡಿಲ್ಲ</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" /> ಅನ್ನು ಆಯ್ಕೆ ಮಾಡಲಾಗಿಲ್ಲ</translation>
 <translation id="8034303206267677282">ಪ್ರಬಲ</translation>
 <translation id="8053789581856978548">ಪಠ್ಯ ಹುಡುಕಾಟದ ಫೀಲ್ಡ್</translation>
 <translation id="8057695513531652401">ಸೂಚನೆ</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">ತಿಂಗಳು</translation>
 <translation id="901493112792887934">ಸೆಕೆಂಡ್‌ಗಳಲ್ಲಿ ಪ್ರಸ್ತುತ ಸಮಯ</translation>
 <translation id="901834265349196618">ಇಮೇಲ್</translation>
-<translation id="9023835124071926463">ಕಾಮೆಂಟ್ ವಿಭಾಗ</translation>
 <translation id="9048119486235211610">ನ್ಯಾವಿಗೇಷನ್</translation>
 <translation id="9062295712474918030">ಡಾಕ್ಯುಮೆಂಟ್</translation>
 <translation id="9093215626363556771">ಚಿತ್ರದಲ್ಲಿನ ಚಿತ್ರದಿಂದ ನಿರ್ಗಮಿಸಿ</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_ko.xtb b/third_party/blink/public/strings/translations/blink_strings_ko.xtb
index e419ae08..4aef9e0 100644
--- a/third_party/blink/public/strings/translations/blink_strings_ko.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_ko.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">이 텍스트를 <ph name="MIN_CHARACTERS" />자 이상으로 늘리세요(현재 <ph name="CURRENT_LENGTH" />자 사용 중).</translation>
 <translation id="383465348367842624">'<ph name="ATSIGN" />' 앞 부분에 '<ph name="INVALIDCHARACTER" />' 기호가 포함되면 안됩니다.</translation>
 <translation id="3846214748874656680">전체화면 종료</translation>
-<translation id="3889183436948184105">개정</translation>
 <translation id="3920932319529768807">결론</translation>
 <translation id="3924558731517983934">애플리케이션</translation>
 <translation id="3944740393230681990">프롤로그</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">숫자를 입력하세요.</translation>
 <translation id="4912536737030637138">참고문헌 항목</translation>
 <translation id="492244087561876220">댓글</translation>
+<translation id="4971739861736909480"><ph name="ACCNAME" /> 선택됨</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" />개 선택됨</translation>
 <translation id="4992066212339426712">음소거 해제</translation>
 <translation id="49969490063480558">'<ph name="ATSIGN" />' 뒷 부분을 입력해 주세요. '<ph name="INVALIDADDRESS" />'(이)가 완전하지 않습니다.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">이메일 주소에 '<ph name="ATSIGN" />'를 포함해 주세요. '<ph name="INVALIDADDRESS" />'에 '<ph name="ATSIGN" />'가 없습니다.</translation>
 <translation id="7891486169920085145">분할선</translation>
 <translation id="795667975304826397">선택된 파일 없음</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" /> 선택되지 않음</translation>
 <translation id="8034303206267677282">굵게</translation>
 <translation id="8053789581856978548">검색어 입력란</translation>
 <translation id="8057695513531652401">안내문</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">월</translation>
 <translation id="901493112792887934">현재 시간(초)</translation>
 <translation id="901834265349196618">이메일</translation>
-<translation id="9023835124071926463">댓글 섹션</translation>
 <translation id="9048119486235211610">탐색</translation>
 <translation id="9062295712474918030">문서</translation>
 <translation id="9093215626363556771">PIP 모드 종료</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_ky.xtb b/third_party/blink/public/strings/translations/blink_strings_ky.xtb
index c5f7492..db7ff47 100644
--- a/third_party/blink/public/strings/translations/blink_strings_ky.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_ky.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Бул текстти <ph name="MIN_CHARACTERS" /> белгиге же андан көбүрөөк кылып узартыңыз (учурда <ph name="CURRENT_LENGTH" /> белги турат).</translation>
 <translation id="383465348367842624">'<ph name="ATSIGN" />' дегенден кийинки бөлүктө '<ph name="INVALIDCHARACTER" />' символу камтылбашы керек.</translation>
 <translation id="3846214748874656680">Толук экран режиминен чыгуу</translation>
-<translation id="3889183436948184105">карап чыгуу</translation>
 <translation id="3920932319529768807">корутунду</translation>
 <translation id="3924558731517983934">колдонмо</translation>
 <translation id="3944740393230681990">пролог</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Номер киргизиңиз.</translation>
 <translation id="4912536737030637138">библиографиялык жазуу</translation>
 <translation id="492244087561876220">пикир</translation>
+<translation id="4971739861736909480"><ph name="ACCNAME" /> тандалды</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> тандалды</translation>
 <translation id="4992066212339426712">Үнүн чыгаруу</translation>
 <translation id="49969490063480558">'<ph name="ATSIGN" />' дегенден кийинки бөлүгүн киргизиңиз. '<ph name="INVALIDADDRESS" />' толук эмес.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">'<ph name="ATSIGN" />' электрондук почта дарегине '<ph name="INVALIDADDRESS" />' кошуңуз, анда '<ph name="ATSIGN" />' жок экен.</translation>
 <translation id="7891486169920085145">бөлгүч</translation>
 <translation id="795667975304826397">Файл тандалган жок</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" /> тандалган жок</translation>
 <translation id="8034303206267677282">күчтүү</translation>
 <translation id="8053789581856978548">издөө текстинин талаасы</translation>
 <translation id="8057695513531652401">эскертүү</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Ай</translation>
 <translation id="901493112792887934">учурдагы убакыт секунд менен</translation>
 <translation id="901834265349196618">электрондук почта</translation>
-<translation id="9023835124071926463">пикир бөлүмү</translation>
 <translation id="9048119486235211610">чабыттоо</translation>
 <translation id="9062295712474918030">документ</translation>
 <translation id="9093215626363556771">сүрөт ичиндеги сүрөт режиминен чыгуу</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_lo.xtb b/third_party/blink/public/strings/translations/blink_strings_lo.xtb
index 11479c29..89619a4 100644
--- a/third_party/blink/public/strings/translations/blink_strings_lo.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_lo.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">ກະລຸນາຂະຫຍາຍຂໍ້ຄວາມນີ້ໃຫ້ຍາວເປັນ <ph name="MIN_CHARACTERS" /> ອັກຂະລະຂຶ້ນໄປ (ປະຈຸບັນ ທ່ານກຳລັງໃຊ້ <ph name="CURRENT_LENGTH" /> ອັກຂະລະ).</translation>
 <translation id="383465348367842624">ສ່ວນ​ຫນຶ່ງ​ຕິດຕາມດ້ວຍ  '<ph name="ATSIGN" />' ບໍ່​ຄວນ​ໃຫ້​ມີ​ສັນ​ຍາ​ລັກ '<ph name="INVALIDCHARACTER" />'.</translation>
 <translation id="3846214748874656680">ອອກຈາກເຕັມໜ້າຈໍ</translation>
-<translation id="3889183436948184105">ການດັດແກ້</translation>
 <translation id="3920932319529768807">ຂໍ້ສະຫຼຸບ</translation>
 <translation id="3924558731517983934">ແອັບພລິເຄຊັນ</translation>
 <translation id="3944740393230681990">ບົດນຳ</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">ກະ​ລຸ​ນາ​ປ້ອນຕົວເລກ​.</translation>
 <translation id="4912536737030637138">ລາຍການບັນນານຸກົມ</translation>
 <translation id="492244087561876220">ຄຳເຫັນ</translation>
+<translation id="4971739861736909480">ເລືອກ <ph name="ACCNAME" /> ແລ້ວ</translation>
 <translation id="4975562563186953947">ເລືອກ <ph name="SELECTED_COUNT" /> ແລ້ວ</translation>
 <translation id="4992066212339426712">ເປີດສຽງ</translation>
 <translation id="49969490063480558">ກະ​ລຸ​ນາ​ໃສ່​ພາກ​ສ່ວນໜຶ່ງ​ຫຼັງຈາກ '<ph name="ATSIGN" />'. '<ph name="INVALIDADDRESS" />' ບໍ່ສໍາເລັດ.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">ກະລຸນາເອົາ '<ph name="ATSIGN" />' ເຂົ້າຢູ່ໃນທີ່ຢູ່ອີເມວ. '<ph name="INVALIDADDRESS" />' ຂາດ '<ph name="ATSIGN" />' ໄປ.</translation>
 <translation id="7891486169920085145">ຕົວແຍກ</translation>
 <translation id="795667975304826397">ບໍ່ມີໄຟລ໌ເລືອກໄວ້</translation>
+<translation id="7962328325860248200">ບໍ່ໄດ້ເລືອກ <ph name="ACCNAME" /></translation>
 <translation id="8034303206267677282">ສຳຄັນ</translation>
 <translation id="8053789581856978548">ຫ້ອງປ້ອນຂໍ້ຄວາມການຄົ້ນຫາ</translation>
 <translation id="8057695513531652401">ແຈ້ງການ</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">ເດືອນ</translation>
 <translation id="901493112792887934">ເວ​ລາ​ປະຈຸ​ບັນ​ເປັນ​ວິ​ນາ​ທີ</translation>
 <translation id="901834265349196618">ອີເມວ</translation>
-<translation id="9023835124071926463">ພາກສ່ວນຄຳເຫັນ</translation>
 <translation id="9048119486235211610">ການນໍາ​ທາງ</translation>
 <translation id="9062295712474918030">ເອກະສານ</translation>
 <translation id="9093215626363556771">ອອກຈາກໂໝດສະແດງຜົນຊ້ອນກັນ</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_lt.xtb b/third_party/blink/public/strings/translations/blink_strings_lt.xtb
index 804ebae..d5c9285 100644
--- a/third_party/blink/public/strings/translations/blink_strings_lt.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_lt.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Pailginkite šį tekstą iki <ph name="MIN_CHARACTERS" /> simb. ar daugiau (šiuo metu naudojate <ph name="CURRENT_LENGTH" /> simb.).</translation>
 <translation id="383465348367842624">Prieš „<ph name="ATSIGN" />“ esančioje dalyje neturėtų būti simbolio „<ph name="INVALIDCHARACTER" />“.</translation>
 <translation id="3846214748874656680">Išjungti viso ekrano režimą</translation>
-<translation id="3889183436948184105">taisymas</translation>
 <translation id="3920932319529768807">išvada</translation>
 <translation id="3924558731517983934">programa</translation>
 <translation id="3944740393230681990">prologas</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Įveskite skaičių.</translation>
 <translation id="4912536737030637138">bibliografijos įrašas</translation>
 <translation id="492244087561876220">komentaras</translation>
+<translation id="4971739861736909480"><ph name="ACCNAME" /> pasirinkta</translation>
 <translation id="4975562563186953947">Pasirinkta: <ph name="SELECTED_COUNT" /></translation>
 <translation id="4992066212339426712">Įjungti garsą</translation>
 <translation id="49969490063480558">Įveskite dalį po „<ph name="ATSIGN" />“. „<ph name="INVALIDADDRESS" />“ nėra visas el. pašto adresas.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Į el. pašto adresą įtraukite „<ph name="ATSIGN" />“. „<ph name="INVALIDADDRESS" />“ trūksta „<ph name="ATSIGN" />“.</translation>
 <translation id="7891486169920085145">skaidiklis</translation>
 <translation id="795667975304826397">Nepasirinktas joks failas</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" /> nepasirinkta</translation>
 <translation id="8034303206267677282">svarbus</translation>
 <translation id="8053789581856978548">paieškos teksto laukas</translation>
 <translation id="8057695513531652401">pranešimas</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Mėnuo</translation>
 <translation id="901493112792887934">dabartinis laikas sekundėmis</translation>
 <translation id="901834265349196618">El. paštas</translation>
-<translation id="9023835124071926463">komentarų skiltis</translation>
 <translation id="9048119486235211610">naršymas</translation>
 <translation id="9062295712474918030">dokumentas</translation>
 <translation id="9093215626363556771">išeiti iš vaizdo vaizde</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_lv.xtb b/third_party/blink/public/strings/translations/blink_strings_lv.xtb
index 29070dd..c46e575 100644
--- a/third_party/blink/public/strings/translations/blink_strings_lv.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_lv.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Lūdzu, papildiniet šo tekstu līdz vismaz <ph name="MIN_CHARACTERS" /> rakstzīmēm (pašlaik tas ietver <ph name="CURRENT_LENGTH" /> rakstzīmes).</translation>
 <translation id="383465348367842624">Daļā, kas atrodas pirms zīmes <ph name="ATSIGN" />, nedrīkst būt ietverts simbols <ph name="INVALIDCHARACTER" />.</translation>
 <translation id="3846214748874656680">Aizvērt pilnekrāna režīmu</translation>
-<translation id="3889183436948184105">pārskatīšana</translation>
 <translation id="3920932319529768807">nobeigums</translation>
 <translation id="3924558731517983934">lietojumprogramma</translation>
 <translation id="3944740393230681990">prologs</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Lūdzu, ievadiet skaitli.</translation>
 <translation id="4912536737030637138">bibliogrāfijas ieraksts</translation>
 <translation id="492244087561876220">komentārs</translation>
+<translation id="4971739861736909480">Atlasīts: <ph name="ACCNAME" /></translation>
 <translation id="4975562563186953947">Atlasīti <ph name="SELECTED_COUNT" /></translation>
 <translation id="4992066212339426712">Ieslēgt skaņu</translation>
 <translation id="49969490063480558">Lūdzu, ievadiet daļu, kas atrodas aiz zīmes <ph name="ATSIGN" />. “<ph name="INVALIDADDRESS" />” ir nepilna adrese.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">E-pasta adresē ietveriet zīmi <ph name="ATSIGN" />. Adresē “<ph name="INVALIDADDRESS" />” trūkst zīmes <ph name="ATSIGN" />.</translation>
 <translation id="7891486169920085145">sadalītājs</translation>
 <translation id="795667975304826397">Nav izvēlēts neviens fails</translation>
+<translation id="7962328325860248200">Nav atlasīts: <ph name="ACCNAME" /></translation>
 <translation id="8034303206267677282">drošs</translation>
 <translation id="8053789581856978548">meklēšanas teksta lauks</translation>
 <translation id="8057695513531652401">paziņojums</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Mēnesis</translation>
 <translation id="901493112792887934">pašreizējais laiks sekundēs</translation>
 <translation id="901834265349196618">e-pasts</translation>
-<translation id="9023835124071926463">komentāru sadaļa</translation>
 <translation id="9048119486235211610">navigācija</translation>
 <translation id="9062295712474918030">dokuments</translation>
 <translation id="9093215626363556771">aizvērt režīmu “attēls attēlā”</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_mk.xtb b/third_party/blink/public/strings/translations/blink_strings_mk.xtb
index 2137abf8..ed47493 100644
--- a/third_party/blink/public/strings/translations/blink_strings_mk.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_mk.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Продолжете го текстот на <ph name="MIN_CHARACTERS" /> знаци или повеќе (во моментов користите <ph name="CURRENT_LENGTH" /> знаци).</translation>
 <translation id="383465348367842624">Дел по кој следува „<ph name="ATSIGN" />“ не треба да го содржи симболот „<ph name="INVALIDCHARACTER" />“.</translation>
 <translation id="3846214748874656680">Излези од цел екран</translation>
-<translation id="3889183436948184105">ревизија</translation>
 <translation id="3920932319529768807">заклучок</translation>
 <translation id="3924558731517983934">апликација</translation>
 <translation id="3944740393230681990">пролог</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Внесете број.</translation>
 <translation id="4912536737030637138">библиографски запис</translation>
 <translation id="492244087561876220">коментар</translation>
+<translation id="4971739861736909480"><ph name="ACCNAME" />, избрано</translation>
 <translation id="4975562563186953947">Избрани: <ph name="SELECTED_COUNT" /></translation>
 <translation id="4992066212339426712">Вклучи звук</translation>
 <translation id="49969490063480558">Внесете дел по „<ph name="ATSIGN" />“. Адресата „<ph name="INVALIDADDRESS" />“ е некомплетна.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Опфатете „<ph name="ATSIGN" />“ во адресата на е-пошта. Во „<ph name="INVALIDADDRESS" />“ недостига „<ph name="ATSIGN" />“.</translation>
 <translation id="7891486169920085145">разделница</translation>
 <translation id="795667975304826397">Нема избрана датотека</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" />, не е избрано</translation>
 <translation id="8034303206267677282">силно</translation>
 <translation id="8053789581856978548">пребарај текстуално поле</translation>
 <translation id="8057695513531652401">напомена</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Месец</translation>
 <translation id="901493112792887934">тековно време во секунди</translation>
 <translation id="901834265349196618">е-пошта</translation>
-<translation id="9023835124071926463">дел со коментари</translation>
 <translation id="9048119486235211610">навигација</translation>
 <translation id="9062295712474918030">документ</translation>
 <translation id="9093215626363556771">излези од „слика во слика“</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_ml.xtb b/third_party/blink/public/strings/translations/blink_strings_ml.xtb
index 8d33edd..0058cb8 100644
--- a/third_party/blink/public/strings/translations/blink_strings_ml.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_ml.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">ഈ ടെക്‌സ്റ്റിന്‍റെ ദൈർഘ്യം <ph name="MIN_CHARACTERS" /> അല്ലെങ്കിൽ അതിൽക്കൂടുതൽ പ്രതീകങ്ങൾ നൽകി കൂട്ടുക. (നിങ്ങൾ നിലവിൽ <ph name="CURRENT_LENGTH" /> പ്രതീകങ്ങളാണ് ഉപയോഗിക്കുന്നത്).</translation>
 <translation id="383465348367842624">'<ph name="ATSIGN" />' എന്നതിനുശേഷം വരുന്ന ഒരു ഭാഗത്തിൽ '<ph name="INVALIDCHARACTER" />' ചിഹ്നം ഉണ്ടാകരുത്.</translation>
 <translation id="3846214748874656680">പൂർണ്ണ സ്‌ക്രീനിൽ നിന്ന് പുറത്തുകടക്കുക</translation>
-<translation id="3889183436948184105">പുനഃപരിശോധന</translation>
 <translation id="3920932319529768807">ഉപസംഹാരം</translation>
 <translation id="3924558731517983934">ആപ്പ്</translation>
 <translation id="3944740393230681990">ആമുഖം</translation>
@@ -257,7 +256,6 @@
 <translation id="8987927404178983737">മാസം</translation>
 <translation id="901493112792887934">നിലവിലെ സമയം നിമിഷങ്ങളിൽ</translation>
 <translation id="901834265349196618">ഇമെയില്‍</translation>
-<translation id="9023835124071926463">കമന്റ് വിഭാഗം</translation>
 <translation id="9048119486235211610">നാവിഗേഷൻ</translation>
 <translation id="9062295712474918030">പ്രമാണം</translation>
 <translation id="9093215626363556771">ചിത്രത്തിനുള്ളിലെ ചിത്രത്തിന് പുറത്ത് കടക്കുക</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_mn.xtb b/third_party/blink/public/strings/translations/blink_strings_mn.xtb
index c2e8ff90..f0114f5 100644
--- a/third_party/blink/public/strings/translations/blink_strings_mn.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_mn.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Энэ текстийг <ph name="MIN_CHARACTERS" /> болон үүнээс дээш тэмдэгтээр уртасгана уу (та одоогоор <ph name="CURRENT_LENGTH" /> тэмдэгт ашиглаж байна).</translation>
 <translation id="383465348367842624">'<ph name="ATSIGN" />'-д хамаарах хэсэг нь '<ph name="INVALIDCHARACTER" />' тэмдэгтийг агуулах ёсгүй.</translation>
 <translation id="3846214748874656680">Бүтэн дэлгэцийг хумих</translation>
-<translation id="3889183436948184105">хийсэн өөрчлөлт</translation>
 <translation id="3920932319529768807">дүгнэлт</translation>
 <translation id="3924558731517983934">апп</translation>
 <translation id="3944740393230681990">эхлэл</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Нэг тоо оруулна уу.</translation>
 <translation id="4912536737030637138">ном зүйн хэсэг</translation>
 <translation id="492244087561876220">тайлбар</translation>
+<translation id="4971739861736909480"><ph name="ACCNAME" />-г сонголоо</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> сонгогдсон</translation>
 <translation id="4992066212339426712">Дууг нээх</translation>
 <translation id="49969490063480558"><ph name="ATSIGN" /> -ны дараа байгаа хэсгийг оруулна уу. " <ph name="INVALIDADDRESS" /> " нь бүрэн бус байна.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Имэйл хаягт "<ph name="ATSIGN" />"-ыг оруулж өгнө үү. '<ph name="INVALIDADDRESS" />'-д <ph name="ATSIGN" /> дутуу байна.</translation>
 <translation id="7891486169920085145">задлагч</translation>
 <translation id="795667975304826397">Ямар ч файл сонгогдоогүй байна</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" />-г сонгоогүй</translation>
 <translation id="8034303206267677282">маш сайн</translation>
 <translation id="8053789581856978548">текстийн талбар хайх</translation>
 <translation id="8057695513531652401">мэдэгдэл</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Сар</translation>
 <translation id="901493112792887934">Секунтаар илэрхийлэгдсэн цаг</translation>
 <translation id="901834265349196618">и-мэйл</translation>
-<translation id="9023835124071926463">сэтгэгдэл бичих хэсэг</translation>
 <translation id="9048119486235211610">удирдлага</translation>
 <translation id="9062295712474918030">документ</translation>
 <translation id="9093215626363556771">дэлгэцэн доторх дэлгэцийг хаах</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_mr.xtb b/third_party/blink/public/strings/translations/blink_strings_mr.xtb
index 64e6dcd..4d4a702c 100644
--- a/third_party/blink/public/strings/translations/blink_strings_mr.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_mr.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">कृपया हा मजकूर <ph name="MIN_CHARACTERS" /> वर्ण किंवा त्यापेक्षा अधिक मोठा करा (तुम्ही सध्‍या <ph name="CURRENT_LENGTH" /> वर्ण वापरत आहात).</translation>
 <translation id="383465348367842624">'<ph name="ATSIGN" />' मागुन येणार्‍या भागामध्ये '<ph name="INVALIDCHARACTER" />' चिन्ह नसावे.</translation>
 <translation id="3846214748874656680">क्षेत्रेमधून बाहेर पडा</translation>
-<translation id="3889183436948184105">पुनरावृत्ती</translation>
 <translation id="3920932319529768807">निष्कर्ष</translation>
 <translation id="3924558731517983934">ॲप्लिकेशन</translation>
 <translation id="3944740393230681990">उपोद्घात</translation>
@@ -257,7 +256,6 @@
 <translation id="8987927404178983737">महिना</translation>
 <translation id="901493112792887934">वर्तमान वेळ सेकंदांमध्ये</translation>
 <translation id="901834265349196618">ईमेल</translation>
-<translation id="9023835124071926463">टिप्पणी विभाग</translation>
 <translation id="9048119486235211610">नेव्हिगेशन</translation>
 <translation id="9062295712474918030">दस्तऐवज</translation>
 <translation id="9093215626363556771">चित्रात-चित्र मधून बाहेर पडा</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_ms.xtb b/third_party/blink/public/strings/translations/blink_strings_ms.xtb
index 00a34c48..8eb86f6 100644
--- a/third_party/blink/public/strings/translations/blink_strings_ms.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_ms.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Sila panjangkan teks ini kepada <ph name="MIN_CHARACTERS" /> aksara atau lebih (anda sedang menggunakan <ph name="CURRENT_LENGTH" /> aksara).</translation>
 <translation id="383465348367842624">Bahagian yang diikuti oleh '<ph name="ATSIGN" />' tidak boleh mengandungi simbol '<ph name="INVALIDCHARACTER" />'.</translation>
 <translation id="3846214748874656680">Keluar dari skrin penuh</translation>
-<translation id="3889183436948184105">semakan</translation>
 <translation id="3920932319529768807">kesimpulan</translation>
 <translation id="3924558731517983934">aplikasi</translation>
 <translation id="3944740393230681990">prolog</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Sila masukkan nombor.</translation>
 <translation id="4912536737030637138">masukan bibliografi</translation>
 <translation id="492244087561876220">ulasan</translation>
+<translation id="4971739861736909480"><ph name="ACCNAME" /> dipilih</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> dipilih</translation>
 <translation id="4992066212339426712">Nyahredam</translation>
 <translation id="49969490063480558">Sila masukkan bahagian selepas '<ph name="ATSIGN" />'. '<ph name="INVALIDADDRESS" />' tidak lengkap.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Sila masukkan '<ph name="ATSIGN" />' dalam alamat e-mel. '<ph name="INVALIDADDRESS" />' tiada '<ph name="ATSIGN" />'.</translation>
 <translation id="7891486169920085145">pemisah</translation>
 <translation id="795667975304826397">Tiada fail dipilih</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" /> tidak dipilih</translation>
 <translation id="8034303206267677282">kuat</translation>
 <translation id="8053789581856978548">medan teks carian</translation>
 <translation id="8057695513531652401">notis</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Bulan</translation>
 <translation id="901493112792887934">masa semasa dalam saat</translation>
 <translation id="901834265349196618">e-mel</translation>
-<translation id="9023835124071926463">bahagian ulasan</translation>
 <translation id="9048119486235211610">navigasi</translation>
 <translation id="9062295712474918030">dokumen</translation>
 <translation id="9093215626363556771">keluar daripada gambar dalam gambar</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_my.xtb b/third_party/blink/public/strings/translations/blink_strings_my.xtb
index 7905da3..ec8cbb0 100644
--- a/third_party/blink/public/strings/translations/blink_strings_my.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_my.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">ကျေးဇူးပြုပြီး ဤစာသားကို စာလုံး <ph name="MIN_CHARACTERS" /> လုံး သို့မဟုတ် ထို့ထက်ပို ရှည်ပေးပါ (သင်သည် ယခု စာလုံး <ph name="CURRENT_LENGTH" /> လုံးကို သုံးထားသည်)။</translation>
 <translation id="383465348367842624">'<ph name="ATSIGN" />'၏ နောက်မှာ ပါလာသည့် အပိုင်း ထဲတွင် သင်္ကေတာ '<ph name="INVALIDCHARACTER" />' မပါရပါ။</translation>
 <translation id="3846214748874656680">မျက်နှာပြင်အပြည့်မှ ထွက်ရန်</translation>
-<translation id="3889183436948184105">ပြန်လည်ပြင်ဆင်မှု</translation>
 <translation id="3920932319529768807">နိဂုံး</translation>
 <translation id="3924558731517983934">အက်ပ်</translation>
 <translation id="3944740393230681990">ပဏာမ</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">နံ</translation>
 <translation id="4912536737030637138">ကျမ်းကိုးစာရင်း အကြောင်းအရာ</translation>
 <translation id="492244087561876220">မှတ်ချက်</translation>
+<translation id="4971739861736909480"><ph name="ACCNAME" /> ကို ရွေးထားသည်</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> ရွေးထား</translation>
 <translation id="4992066212339426712">အသံတိတ်မှုဖြုတ်မည်</translation>
 <translation id="49969490063480558">'<ph name="ATSIGN" />' ၏နောက်တွင် အပိုင်းတစ်ပိုင်း ရိုက်ထည့်ပါ။ '<ph name="INVALIDADDRESS" />' က မပြည့်စုံပါ။</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">ကျေးဇူးပြု၍ အီးမေးလ်လိပ်စာတွင် '<ph name="ATSIGN" />' တစ်ခုပါရှိစေပါ။ '<ph name="INVALIDADDRESS" />' တွင် '<ph name="ATSIGN" />' ပျောက်နေသည်။</translation>
 <translation id="7891486169920085145">ခွဲခြင်းစနစ်</translation>
 <translation id="795667975304826397">ဖိုင် မရွေးထား</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" /> ကို ရွေးမထားပါ</translation>
 <translation id="8034303206267677282">အားကောင်းသည်</translation>
 <translation id="8053789581856978548">ရှာဖွေရေး စာသား အကွက်</translation>
 <translation id="8057695513531652401">သတိပေးချက်</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">လ</translation>
 <translation id="901493112792887934">စက္ကန့်အားဖြင့် လက်ရှိအချိန်</translation>
 <translation id="901834265349196618">အီးမေးလ်</translation>
-<translation id="9023835124071926463">မှတ်ချက်ကဏ္ဍ</translation>
 <translation id="9048119486235211610">သွားလာမှု</translation>
 <translation id="9062295712474918030">စာရွက်စာတမ်း</translation>
 <translation id="9093215626363556771">တစ်ခုပေါ်တစ်ခု ထပ်၍ဖွင့်သည့် မုဒ်မှ ထွက်ရန်</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_ne.xtb b/third_party/blink/public/strings/translations/blink_strings_ne.xtb
index 568d716..004e0e3 100644
--- a/third_party/blink/public/strings/translations/blink_strings_ne.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_ne.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">कृपया यो पाठलाई <ph name="MIN_CHARACTERS" /> अक्षर वा थप (तपाईं हालमा प्रयोग गरिरहेको <ph name="CURRENT_LENGTH" /> अक्षर) सम्म लम्ब्याउनुहोस्।</translation>
 <translation id="383465348367842624">त्यसको पछाडि '<ph name="ATSIGN" />' आउने भागमा '<ph name="INVALIDCHARACTER" />' सङ्केत हुनुहुँदैन।</translation>
 <translation id="3846214748874656680">पूर्ण स्क्रिनबाट निस्कनुहोस्</translation>
-<translation id="3889183436948184105">पुनरावृत्ति</translation>
 <translation id="3920932319529768807">निष्कर्ष</translation>
 <translation id="3924558731517983934">अनुप्रयोग</translation>
 <translation id="3944740393230681990">प्रस्तावना</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">कृपया एक नम्बर प्रविष्टि गर्नुहोस्।</translation>
 <translation id="4912536737030637138">ग्रन्थसूचीको प्रविष्टि</translation>
 <translation id="492244087561876220">टिप्पणी</translation>
+<translation id="4971739861736909480"><ph name="ACCNAME" /> चयन गरियो</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> चयन गरिएको</translation>
 <translation id="4992066212339426712">आवाज खोल्नुहोस्</translation>
 <translation id="49969490063480558">कृपया '<ph name="ATSIGN" />' पछ्याउने एउटा भाग प्रविष्टि गर्नुहोस्। '<ph name="INVALIDADDRESS" />' अपूर्ण छ।</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">कृपया इमेल ठेगानामा एक '<ph name="ATSIGN" />' समावेश गर्नुहोस्। <ph name="INVALIDADDRESS" />' ले एक '<ph name="ATSIGN" />' हराइरहेको छ।</translation>
 <translation id="7891486169920085145">स्प्लिटर</translation>
 <translation id="795667975304826397">कुनैपनि फाइल छानिएको छैन</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" /> चयन गरिएन</translation>
 <translation id="8034303206267677282">बलियो</translation>
 <translation id="8053789581856978548">खोज पाठ क्षेत्र</translation>
 <translation id="8057695513531652401">सूचना</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">महिना</translation>
 <translation id="901493112792887934">सेकेन्डमा हालको समय</translation>
 <translation id="901834265349196618">इमेल</translation>
-<translation id="9023835124071926463">टिप्पणीको खण्ड</translation>
 <translation id="9048119486235211610">नेभिगेसन</translation>
 <translation id="9062295712474918030">कागजात</translation>
 <translation id="9093215626363556771">picture-in-picture बाट बाहिरिनुहोस्‌</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_nl.xtb b/third_party/blink/public/strings/translations/blink_strings_nl.xtb
index 4cb2b1df..df11cc6 100644
--- a/third_party/blink/public/strings/translations/blink_strings_nl.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_nl.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Breid deze tekst uit tot <ph name="MIN_CHARACTERS" /> tekens of meer (je gebruikt momenteel <ph name="CURRENT_LENGTH" /> tekens).</translation>
 <translation id="383465348367842624">Het naamgedeelte vóór '<ph name="ATSIGN" />' mag niet het teken '<ph name="INVALIDCHARACTER" />' bevatten.</translation>
 <translation id="3846214748874656680">Volledig scherm sluiten</translation>
-<translation id="3889183436948184105">revisie</translation>
 <translation id="3920932319529768807">conclusie</translation>
 <translation id="3924558731517983934">app</translation>
 <translation id="3944740393230681990">proloog</translation>
@@ -259,7 +258,6 @@
 <translation id="8987927404178983737">Maand</translation>
 <translation id="901493112792887934">huidige tijd in seconden</translation>
 <translation id="901834265349196618">e-mail</translation>
-<translation id="9023835124071926463">reactiegedeelte</translation>
 <translation id="9048119486235211610">navigatie</translation>
 <translation id="9062295712474918030">document</translation>
 <translation id="9093215626363556771">scherm-in-scherm afsluiten</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_no.xtb b/third_party/blink/public/strings/translations/blink_strings_no.xtb
index 63b01f8..f9058dd7 100644
--- a/third_party/blink/public/strings/translations/blink_strings_no.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_no.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Du må forlenge denne teksten til <ph name="MIN_CHARACTERS" /> tegn eller mer (for øyeblikket bruker du <ph name="CURRENT_LENGTH" /> tegn).</translation>
 <translation id="383465348367842624">En del etterfulgt av «<ph name="ATSIGN" />» kan ikke inneholde symbolet «<ph name="INVALIDCHARACTER" />».</translation>
 <translation id="3846214748874656680">Avslutt fullskjermmodus</translation>
-<translation id="3889183436948184105">versjon</translation>
 <translation id="3920932319529768807">konklusjon</translation>
 <translation id="3924558731517983934">program</translation>
 <translation id="3944740393230681990">prolog</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Skriv inn et tall.</translation>
 <translation id="4912536737030637138">bibliografioppføring</translation>
 <translation id="492244087561876220">kommentar</translation>
+<translation id="4971739861736909480"><ph name="ACCNAME" /> er valgt</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> er valgt</translation>
 <translation id="4992066212339426712">Slå på lyden</translation>
 <translation id="49969490063480558">Skriv inn en del etterfulgt av «<ph name="ATSIGN" />». «<ph name="INVALIDADDRESS" />» er ufullstendig.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Inkluder en «<ph name="ATSIGN" />» i e-postadressen. «<ph name="INVALIDADDRESS" />» mangler en «<ph name="ATSIGN" />».</translation>
 <translation id="7891486169920085145">vindusdeler</translation>
 <translation id="795667975304826397">Ingen fil valgt</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" /> er ikke valgt</translation>
 <translation id="8034303206267677282">sterk</translation>
 <translation id="8053789581856978548">søketekstfelt</translation>
 <translation id="8057695513531652401">merknad</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Måned</translation>
 <translation id="901493112792887934">gjeldende tid i sekunder</translation>
 <translation id="901834265349196618">e-post</translation>
-<translation id="9023835124071926463">kommentardel</translation>
 <translation id="9048119486235211610">navigasjon</translation>
 <translation id="9062295712474918030">dokument</translation>
 <translation id="9093215626363556771">avslutt bilde-i-bilde</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_or.xtb b/third_party/blink/public/strings/translations/blink_strings_or.xtb
index e4f2bcc5..92a487e1 100644
--- a/third_party/blink/public/strings/translations/blink_strings_or.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_or.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">ଦୟାକରି ଏହି ଟେକ୍ସଟ୍‍କୁ <ph name="MIN_CHARACTERS" />ଟି କିମ୍ବା ଅଧିକ ଅକ୍ଷର ପର୍ଯ୍ୟନ୍ତ ଲମ୍ବା କରନ୍ତୁ (ବର୍ତ୍ତମାନ ଆପଣ <ph name="CURRENT_LENGTH" />ଟି ଅକ୍ଷର ବ୍ୟବହାର କରୁଛନ୍ତି)।</translation>
 <translation id="383465348367842624">'<ph name="ATSIGN" />' ପରେ ଆସୁଥିବା ଅଂଶରେ '<ph name="INVALIDCHARACTER" />' ଚିହ୍ନ ରହିବା ଉଚିତ ନୁହେଁ।</translation>
 <translation id="3846214748874656680">ପୂର୍ଣ୍ଣ ସ୍କ୍ରିନ୍‌ରୁ ପ୍ରସ୍ଥାନ କରନ୍ତୁ</translation>
-<translation id="3889183436948184105">ପୁନରାବୃତ୍ତି</translation>
 <translation id="3920932319529768807">ସମାପ୍ତି</translation>
 <translation id="3924558731517983934">ଆପ୍ଲିକେସନ୍</translation>
 <translation id="3944740393230681990">ଭୂମିକା</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">ଦୟାକରି ଗୋଟିଏ ନମ୍ବର ଲେଖନ୍ତୁ।</translation>
 <translation id="4912536737030637138">ଗ୍ରନ୍ଥସୂଚୀ ଏଣ୍ଟ୍ରି</translation>
 <translation id="492244087561876220">ମନ୍ତବ୍ୟ</translation>
+<translation id="4971739861736909480"><ph name="ACCNAME" /> ଚୟନ କରାଯାଇଛି</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" />ଟି ଚୟନ କରାଯାଇଛି</translation>
 <translation id="4992066212339426712">ଅନମ୍ୟୁଟ୍ କରନ୍ତୁ</translation>
 <translation id="49969490063480558">ଦୟାକରି '<ph name="ATSIGN" />'କୁ ଅନୁସରଣ କରୁଥିବା ଏକ ଅଂଶ ଲେଖନ୍ତୁ। '<ph name="INVALIDADDRESS" />' ଅସମ୍ପୂର୍ଣ୍ଣ ଅଛି।</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">ଦୟାକରି ଇମେଲ୍ ଠିକଣାରେ ଏକ '<ph name="ATSIGN" />' ଅନ୍ତର୍ଭୁକ୍ତ କରନ୍ତୁ। '<ph name="INVALIDADDRESS" />' ରେ '<ph name="ATSIGN" />'ମିଳୁନାହିଁ।</translation>
 <translation id="7891486169920085145">ସ୍ପ୍ଲିଟର୍</translation>
 <translation id="795667975304826397">କୌଣସି ଫାଇଲ୍ ଚୟନ କରାଯାଇ ନାହିଁ</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" /> ଚୟନ କରାଯାଇନାହିଁ</translation>
 <translation id="8034303206267677282">ଦୃଢ଼</translation>
 <translation id="8053789581856978548">ଟେକ୍ସଟ୍‍ ଫିଲ୍ଡ ଖୋଜନ୍ତୁ</translation>
 <translation id="8057695513531652401">ବିଜ୍ଞପ୍ତି</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">ମାସ</translation>
 <translation id="901493112792887934">ସେକେଣ୍ଡରେ ବର୍ତ୍ତମାନର ସମୟ</translation>
 <translation id="901834265349196618">ଇମେଲ୍</translation>
-<translation id="9023835124071926463">ମନ୍ତବ୍ୟ ବିଭାଗ</translation>
 <translation id="9048119486235211610">ନାଭିଗେସନ୍</translation>
 <translation id="9062295712474918030">ଡକ୍ୟୁମେଣ୍ଟ</translation>
 <translation id="9093215626363556771">ଛବି-ଭିତରେ-ଛବିରୁ ବାହାରି ଯାଆନ୍ତୁ</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_pa.xtb b/third_party/blink/public/strings/translations/blink_strings_pa.xtb
index aec5558b..0346f17 100644
--- a/third_party/blink/public/strings/translations/blink_strings_pa.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_pa.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">ਕਿਰਪਾ ਕਰਕੇ ਇਸ ਲਿਖਤ ਨੂੰ <ph name="MIN_CHARACTERS" /> ਅੱਖਰਾਂ ਤੱਕ ਜਾਂ ਇਸ ਤੋਂ ਵੱਧ ਵਿੱਚ ਵਧਾਓ (ਇਸ ਵੇਲੇ ਤੁਸੀਂ <ph name="CURRENT_LENGTH" /> ਅੱਖਰ ਵਰਤ ਰਹੇ ਹੋ)।</translation>
 <translation id="383465348367842624">'<ph name="ATSIGN" />' ਤੋਂ ਬਾਅਦ ਦੇ ਭਾਗ ਵਿੱਚ ਚਿੰਨ੍ਹ '<ph name="INVALIDCHARACTER" />' ਨਹੀਂ ਹੋਣਾ ਚਾਹੀਦਾ।</translation>
 <translation id="3846214748874656680">ਫੁਲਸਕ੍ਰੀਨ ਤੋਂ ਬਾਹਰ ਜਾਓ</translation>
-<translation id="3889183436948184105">ਸੰਸ਼ੋਧਨ</translation>
 <translation id="3920932319529768807">ਸਿੱਟਾ</translation>
 <translation id="3924558731517983934">ਐਪਲੀਕੇਸ਼ਨ</translation>
 <translation id="3944740393230681990">ਮੁੱਖਬੰਧ</translation>
@@ -257,7 +256,6 @@
 <translation id="8987927404178983737">ਮਹੀਨਾ</translation>
 <translation id="901493112792887934">ਸਕਿੰਟਾਂ ਵਿੱਚ ਮੌਜੂਦਾ ਸਮਾਂ</translation>
 <translation id="901834265349196618">ਈਮੇਲ</translation>
-<translation id="9023835124071926463">ਟਿੱਪਣੀ ਸੈਕਸ਼ਨ</translation>
 <translation id="9048119486235211610">ਨੈਵੀਗੇਸ਼ਨ</translation>
 <translation id="9062295712474918030">ਦਸਤਾਵੇਜ਼</translation>
 <translation id="9093215626363556771">ਤਸਵੀਰ-ਵਿੱਚ-ਤਸਵੀਰ ਤੋਂ ਬਾਹਰ ਜਾਓ</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_pl.xtb b/third_party/blink/public/strings/translations/blink_strings_pl.xtb
index f8cd1719..4daadccf 100644
--- a/third_party/blink/public/strings/translations/blink_strings_pl.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_pl.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Wydłuż ten tekst przynajmniej do <ph name="MIN_CHARACTERS" /> znaków (teraz używasz <ph name="CURRENT_LENGTH" /> znaków).</translation>
 <translation id="383465348367842624">Część przed znakiem „<ph name="ATSIGN" />” nie może zawierać symbolu „<ph name="INVALIDCHARACTER" />”.</translation>
 <translation id="3846214748874656680">Zamknij pełny ekran</translation>
-<translation id="3889183436948184105">wersja</translation>
 <translation id="3920932319529768807">podsumowanie</translation>
 <translation id="3924558731517983934">aplikacja</translation>
 <translation id="3944740393230681990">prolog</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Wpisz liczbę.</translation>
 <translation id="4912536737030637138">pozycja bibliograficzna</translation>
 <translation id="492244087561876220">komentarz</translation>
+<translation id="4971739861736909480">Wybrano <ph name="ACCNAME" /></translation>
 <translation id="4975562563186953947">Wybrano: <ph name="SELECTED_COUNT" /></translation>
 <translation id="4992066212339426712">Wyłącz wyciszenie</translation>
 <translation id="49969490063480558">Podaj część po znaku „<ph name="ATSIGN" />”. Adres „<ph name="INVALIDADDRESS" />” jest niepełny.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Uwzględnij znak „<ph name="ATSIGN" />” w adresie e-mail. W adresie „<ph name="INVALIDADDRESS" />” brakuje znaku „<ph name="ATSIGN" />”.</translation>
 <translation id="7891486169920085145">podział</translation>
 <translation id="795667975304826397">Nie wybrano pliku</translation>
+<translation id="7962328325860248200">Nie wybrano: <ph name="ACCNAME" /></translation>
 <translation id="8034303206267677282">ważne</translation>
 <translation id="8053789581856978548">pole tekstowe wyszukiwania</translation>
 <translation id="8057695513531652401">uwaga</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Miesiąc</translation>
 <translation id="901493112792887934">bieżący czas w sekundach</translation>
 <translation id="901834265349196618">e-mail</translation>
-<translation id="9023835124071926463">sekcja komentarzy</translation>
 <translation id="9048119486235211610">nawigacja</translation>
 <translation id="9062295712474918030">dokument</translation>
 <translation id="9093215626363556771">wyłącz tryb obrazu w obrazie</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_pt-BR.xtb b/third_party/blink/public/strings/translations/blink_strings_pt-BR.xtb
index c460e53..7c79cfb 100644
--- a/third_party/blink/public/strings/translations/blink_strings_pt-BR.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_pt-BR.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Aumente este texto para <ph name="MIN_CHARACTERS" /> caracteres ou mais. No momento, você está usando <ph name="CURRENT_LENGTH" /> caracteres).</translation>
 <translation id="383465348367842624">Uma parte seguida por "<ph name="ATSIGN" />" não deve conter o símbolo "<ph name="INVALIDCHARACTER" />".</translation>
 <translation id="3846214748874656680">Sair da tela cheia</translation>
-<translation id="3889183436948184105">revisão</translation>
 <translation id="3920932319529768807">conclusão</translation>
 <translation id="3924558731517983934">app</translation>
 <translation id="3944740393230681990">prólogo</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Insira um número.</translation>
 <translation id="4912536737030637138">entrada bibliográfica</translation>
 <translation id="492244087561876220">comentário</translation>
+<translation id="4971739861736909480">Item <ph name="ACCNAME" /> selecionado</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> selecionados</translation>
 <translation id="4992066212339426712">Ativar som</translation>
 <translation id="49969490063480558">Insira uma parte depois de "<ph name="ATSIGN" />". "<ph name="INVALIDADDRESS" />" está incompleto.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Inclua um "<ph name="ATSIGN" />" no endereço de e-mail. "<ph name="INVALIDADDRESS" />" está com um "<ph name="ATSIGN" />" faltando.</translation>
 <translation id="7891486169920085145">divisor</translation>
 <translation id="795667975304826397">Nenhum arquivo selecionado</translation>
+<translation id="7962328325860248200">Item <ph name="ACCNAME" /> não selecionado</translation>
 <translation id="8034303206267677282">forte</translation>
 <translation id="8053789581856978548">campo de texto da pesquisa</translation>
 <translation id="8057695513531652401">aviso</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Mês</translation>
 <translation id="901493112792887934">tempo atual em segundos</translation>
 <translation id="901834265349196618">e-mail</translation>
-<translation id="9023835124071926463">seção de comentários</translation>
 <translation id="9048119486235211610">navegação</translation>
 <translation id="9062295712474918030">documento</translation>
 <translation id="9093215626363556771">sair de picture-in-picture</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_pt-PT.xtb b/third_party/blink/public/strings/translations/blink_strings_pt-PT.xtb
index 634b1fd..6a73168e 100644
--- a/third_party/blink/public/strings/translations/blink_strings_pt-PT.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_pt-PT.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Aumente este texto para <ph name="MIN_CHARACTERS" /> carateres ou mais (está atualmente a utilizar <ph name="CURRENT_LENGTH" /> carateres).</translation>
 <translation id="383465348367842624">Uma parte seguida de "<ph name="ATSIGN" />" não deve conter o símbolo "<ph name="INVALIDCHARACTER" />".</translation>
 <translation id="3846214748874656680">Sair do modo de ecrã inteiro</translation>
-<translation id="3889183436948184105">revisão</translation>
 <translation id="3920932319529768807">conclusão</translation>
 <translation id="3924558731517983934">aplicação</translation>
 <translation id="3944740393230681990">prólogo</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Introduza um número.</translation>
 <translation id="4912536737030637138">entrada da bibliografia</translation>
 <translation id="492244087561876220">comentário</translation>
+<translation id="4971739861736909480">Selecionado: <ph name="ACCNAME" /></translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> selecionados</translation>
 <translation id="4992066212339426712">Reativar o som</translation>
 <translation id="49969490063480558">Introduza uma parte a seguir a "<ph name="ATSIGN" />". "<ph name="INVALIDADDRESS" />" está incompleto.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Inclua um "<ph name="ATSIGN" />" no endereço de email. Falta um "<ph name="ATSIGN" />" em "<ph name="INVALIDADDRESS" />".</translation>
 <translation id="7891486169920085145">divisor</translation>
 <translation id="795667975304826397">Nenhum ficheiro selecionado</translation>
+<translation id="7962328325860248200">Não selecionado: <ph name="ACCNAME" /></translation>
 <translation id="8034303206267677282">forte</translation>
 <translation id="8053789581856978548">campo de texto de pesquisa</translation>
 <translation id="8057695513531652401">aviso</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Mês</translation>
 <translation id="901493112792887934">tempo atual em segundos</translation>
 <translation id="901834265349196618">email</translation>
-<translation id="9023835124071926463">secção de comentários</translation>
 <translation id="9048119486235211610">navegação</translation>
 <translation id="9062295712474918030">documento</translation>
 <translation id="9093215626363556771">sair do modo ecrã no ecrã</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_ro.xtb b/third_party/blink/public/strings/translations/blink_strings_ro.xtb
index 84a56d9..fa47df56 100644
--- a/third_party/blink/public/strings/translations/blink_strings_ro.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_ro.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Mărește acest text la cel puțin <ph name="MIN_CHARACTERS" /> caractere (în prezent folosești <ph name="CURRENT_LENGTH" /> caractere).</translation>
 <translation id="383465348367842624">Valoarea urmată de semnul „<ph name="ATSIGN" />” nu trebuie să conțină simbolul „<ph name="INVALIDCHARACTER" />”.</translation>
 <translation id="3846214748874656680">Ieși din ecranul complet</translation>
-<translation id="3889183436948184105">versiune</translation>
 <translation id="3920932319529768807">concluzie</translation>
 <translation id="3924558731517983934">aplicație</translation>
 <translation id="3944740393230681990">prolog</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Introduceți un număr.</translation>
 <translation id="4912536737030637138">intrare bibliografică</translation>
 <translation id="492244087561876220">comentariu</translation>
+<translation id="4971739861736909480"><ph name="ACCNAME" /> selectat</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> selectate</translation>
 <translation id="4992066212339426712">Activează sunetul</translation>
 <translation id="49969490063480558">Introduceți o valoare după semnul „<ph name="ATSIGN" />”. Adresa „<ph name="INVALIDADDRESS" />” nu este completă.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Includeți semnul „<ph name="ATSIGN" />” în adresa de e-mail. Din adresa „<ph name="INVALIDADDRESS" />” lipsește semnul „<ph name="ATSIGN" />”.</translation>
 <translation id="7891486169920085145">element de divizare</translation>
 <translation id="795667975304826397">Nu ai ales niciun fișier</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" /> nu este selectat</translation>
 <translation id="8034303206267677282">puternic</translation>
 <translation id="8053789581856978548">câmp pentru căutarea textului</translation>
 <translation id="8057695513531652401">anunț</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Lună</translation>
 <translation id="901493112792887934">timp actual în secunde</translation>
 <translation id="901834265349196618">e-mail</translation>
-<translation id="9023835124071926463">secțiunea de comentarii</translation>
 <translation id="9048119486235211610">navigare</translation>
 <translation id="9062295712474918030">document</translation>
 <translation id="9093215626363556771">ieși din modul picture-in-picture</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_ru.xtb b/third_party/blink/public/strings/translations/blink_strings_ru.xtb
index 53df6a5..d39f8f4 100644
--- a/third_party/blink/public/strings/translations/blink_strings_ru.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_ru.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Минимально допустимое количество символов: <ph name="MIN_CHARACTERS" />. Длина текста сейчас: <ph name="CURRENT_LENGTH" />.</translation>
 <translation id="383465348367842624">Часть адреса до символа "<ph name="ATSIGN" />" не должна содержать символ "<ph name="INVALIDCHARACTER" />".</translation>
 <translation id="3846214748874656680">Обычный режим</translation>
-<translation id="3889183436948184105">версия</translation>
 <translation id="3920932319529768807">заключение</translation>
 <translation id="3924558731517983934">приложение</translation>
 <translation id="3944740393230681990">пролог</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Введите число.</translation>
 <translation id="4912536737030637138">запись в библиографии</translation>
 <translation id="492244087561876220">комментарий</translation>
+<translation id="4971739861736909480">Выбрано: <ph name="ACCNAME" /></translation>
 <translation id="4975562563186953947">Выбрано: <ph name="SELECTED_COUNT" /></translation>
 <translation id="4992066212339426712">Включить звук</translation>
 <translation id="49969490063480558">Введите часть адреса после символа "<ph name="ATSIGN" />". Адрес "<ph name="INVALIDADDRESS" />" неполный.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Адрес электронной почты должен содержать символ "<ph name="ATSIGN" />". В адресе "<ph name="INVALIDADDRESS" />" отсутствует символ "<ph name="ATSIGN" />".</translation>
 <translation id="7891486169920085145">разделитель</translation>
 <translation id="795667975304826397">Файл не выбран</translation>
+<translation id="7962328325860248200">Не выбрано: <ph name="ACCNAME" /></translation>
 <translation id="8034303206267677282">важный</translation>
 <translation id="8053789581856978548">поле поиска</translation>
 <translation id="8057695513531652401">примечание</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Месяц</translation>
 <translation id="901493112792887934">текущее время в секундах</translation>
 <translation id="901834265349196618">электронная почта</translation>
-<translation id="9023835124071926463">Раздел комментариев</translation>
 <translation id="9048119486235211610">навигация</translation>
 <translation id="9062295712474918030">документ</translation>
 <translation id="9093215626363556771">выйти из режима "Картинка в картинке"</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_si.xtb b/third_party/blink/public/strings/translations/blink_strings_si.xtb
index 93a0448..9e7b369 100644
--- a/third_party/blink/public/strings/translations/blink_strings_si.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_si.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">රුණාකර මෙම පෙළ අනුලකුණු <ph name="MIN_CHARACTERS" /> කට හෝ ඊට වඩා දිගු කරන්න (ඔබ දැනට අනුලකුණු <ph name="CURRENT_LENGTH" /> ක් භාවිත කරමින් සිටී).</translation>
 <translation id="383465348367842624">'<ph name="ATSIGN" />' ට පසු කොසෙහි '<ph name="INVALIDCHARACTER" />' සංකේතය අඩංගු නොවිය යුතුය.</translation>
 <translation id="3846214748874656680">පූර්ණ තිරයෙන් ඉවත් වන්න</translation>
-<translation id="3889183436948184105">සංශෝධනය</translation>
 <translation id="3920932319529768807">නිගමනය</translation>
 <translation id="3924558731517983934">යෙදුම</translation>
 <translation id="3944740393230681990">උපන්‍යාසය</translation>
@@ -259,7 +258,6 @@
 <translation id="8987927404178983737">මාසය</translation>
 <translation id="901493112792887934">වත්මන් කාලය තත්පර වලින්</translation>
 <translation id="901834265349196618">ඊතැපෑල</translation>
-<translation id="9023835124071926463">අදහස් කොටස</translation>
 <translation id="9048119486235211610">සංචාලනය</translation>
 <translation id="9062295712474918030">ලේඛනය</translation>
 <translation id="9093215626363556771">පින්තූරය-තුළ-පින්තූරයෙන් පිටවන්න</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_sk.xtb b/third_party/blink/public/strings/translations/blink_strings_sk.xtb
index d32be66..31a5081 100644
--- a/third_party/blink/public/strings/translations/blink_strings_sk.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_sk.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Predĺžte tento text aspoň na <ph name="MIN_CHARACTERS" /> alebo viac znakov (momentálny počet znakov je <ph name="CURRENT_LENGTH" />).</translation>
 <translation id="383465348367842624">Časť pred znakom <ph name="ATSIGN" /> by nemala obsahovať symbol <ph name="INVALIDCHARACTER" />.</translation>
 <translation id="3846214748874656680">Ukončiť režim celej obrazovky</translation>
-<translation id="3889183436948184105">verzia</translation>
 <translation id="3920932319529768807">záver</translation>
 <translation id="3924558731517983934">aplikácia</translation>
 <translation id="3944740393230681990">prológ</translation>
@@ -259,7 +258,6 @@
 <translation id="8987927404178983737">Mesiac</translation>
 <translation id="901493112792887934">aktuálny čas v sekundách</translation>
 <translation id="901834265349196618">e-mail</translation>
-<translation id="9023835124071926463">sekcia komentárov</translation>
 <translation id="9048119486235211610">navigácia</translation>
 <translation id="9062295712474918030">dokument</translation>
 <translation id="9093215626363556771">ukončiť obraz v obraze</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_sl.xtb b/third_party/blink/public/strings/translations/blink_strings_sl.xtb
index e9570bf..696a595 100644
--- a/third_party/blink/public/strings/translations/blink_strings_sl.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_sl.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Podaljšajte to besedilo na toliko znakov ali več: <ph name="MIN_CHARACTERS" /> (trenutno uporabljate toliko znakov: <ph name="CURRENT_LENGTH" />).</translation>
 <translation id="383465348367842624">Del pred »<ph name="ATSIGN" />« ne sme vsebovati znaka »<ph name="INVALIDCHARACTER" />«.</translation>
 <translation id="3846214748874656680">Zapri celozaslonski način</translation>
-<translation id="3889183436948184105">različica</translation>
 <translation id="3920932319529768807">sklep</translation>
 <translation id="3924558731517983934">aplikacija</translation>
 <translation id="3944740393230681990">uvod</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Vnesite številko.</translation>
 <translation id="4912536737030637138">bibliografski vnos</translation>
 <translation id="492244087561876220">komentar</translation>
+<translation id="4971739861736909480">Izbran je predmet <ph name="ACCNAME" /></translation>
 <translation id="4975562563186953947">Št. izbranih: <ph name="SELECTED_COUNT" /></translation>
 <translation id="4992066212339426712">Vklopi zvok</translation>
 <translation id="49969490063480558">Vnesite nekaj po znaku »<ph name="ATSIGN" />«. Naslov »<ph name="INVALIDADDRESS" />« je nepopoln.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">V e-poštnem naslovu mora biti znak »<ph name="ATSIGN" />«. V naslovu »<ph name="INVALIDADDRESS" />« manjka »<ph name="ATSIGN" />«.</translation>
 <translation id="7891486169920085145">razdelilnik</translation>
 <translation id="795667975304826397">Nobena datoteka ni izbrana</translation>
+<translation id="7962328325860248200">Predmet <ph name="ACCNAME" /> ni izbran</translation>
 <translation id="8034303206267677282">močno</translation>
 <translation id="8053789581856978548">besedilno polje za iskanje</translation>
 <translation id="8057695513531652401">kritika</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Mesec</translation>
 <translation id="901493112792887934">trenutni čas v sekundah</translation>
 <translation id="901834265349196618">e-pošta</translation>
-<translation id="9023835124071926463">razdelek s komentarji</translation>
 <translation id="9048119486235211610">krmarjenje</translation>
 <translation id="9062295712474918030">dokument</translation>
 <translation id="9093215626363556771">zapiranje načina slike v sliki</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_sq.xtb b/third_party/blink/public/strings/translations/blink_strings_sq.xtb
index c512ddfd..b5ed4c5 100644
--- a/third_party/blink/public/strings/translations/blink_strings_sq.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_sq.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Shkurtoje këtë tekst në <ph name="MIN_CHARACTERS" /> karaktere ose më shumë (aktualisht po përdor <ph name="CURRENT_LENGTH" /> karaktere).</translation>
 <translation id="383465348367842624">Një pjesë e ndjekur nga "<ph name="ATSIGN" />" nuk duhet të përmbajë simbolin "<ph name="INVALIDCHARACTER" />".</translation>
 <translation id="3846214748874656680">Dil nga ekrani i plotë</translation>
-<translation id="3889183436948184105">rishikim</translation>
 <translation id="3920932319529768807">konkluzion</translation>
 <translation id="3924558731517983934">aplikacion</translation>
 <translation id="3944740393230681990">prolog</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Fut një numër.</translation>
 <translation id="4912536737030637138">hyrje bibliografike</translation>
 <translation id="492244087561876220">koment</translation>
+<translation id="4971739861736909480">Përzgjedhur: <ph name="ACCNAME" /></translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> të përzgjedhur</translation>
 <translation id="4992066212339426712">Aktivizo zërin</translation>
 <translation id="49969490063480558">Fut një pjesë pas "<ph name="ATSIGN" />". "<ph name="INVALIDADDRESS" />" është e paplotë.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Përfshi një "<ph name="ATSIGN" />" në adresën e mail-it. Te "<ph name="INVALIDADDRESS" />" mungon një "<ph name="ATSIGN" />".</translation>
 <translation id="7891486169920085145">ndarësi</translation>
 <translation id="795667975304826397">Nuk u zgjodh asnjë skedar</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" /> nuk është zgjedhur</translation>
 <translation id="8034303206267677282">e fortë</translation>
 <translation id="8053789581856978548">fusha për kërkim teksti</translation>
 <translation id="8057695513531652401">njoftim</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Muaji</translation>
 <translation id="901493112792887934">koha aktuale në sekonda</translation>
 <translation id="901834265349196618">mail</translation>
-<translation id="9023835124071926463">seksioni i komenteve</translation>
 <translation id="9048119486235211610">lundrimi</translation>
 <translation id="9062295712474918030">dokument</translation>
 <translation id="9093215626363556771">dil nga "figurë brenda figurës"</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_sr.xtb b/third_party/blink/public/strings/translations/blink_strings_sr.xtb
index 8b364e3..ba466366 100644
--- a/third_party/blink/public/strings/translations/blink_strings_sr.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_sr.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Продужите овај текст на <ph name="MIN_CHARACTERS" /> знак(ов)а или више (тренутно користите <ph name="CURRENT_LENGTH" /> знак(ов)а).</translation>
 <translation id="383465348367842624">Део пре „<ph name="ATSIGN" />“ не треба да садржи симбол „<ph name="INVALIDCHARACTER" />“.</translation>
 <translation id="3846214748874656680">Изађи из целог екрана</translation>
-<translation id="3889183436948184105">ревизија</translation>
 <translation id="3920932319529768807">закључак</translation>
 <translation id="3924558731517983934">апликација</translation>
 <translation id="3944740393230681990">пролог</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Унесите број.</translation>
 <translation id="4912536737030637138">библиографска ставка</translation>
 <translation id="492244087561876220">коментар</translation>
+<translation id="4971739861736909480">Изабрано: <ph name="ACCNAME" /></translation>
 <translation id="4975562563186953947">Изабрано: <ph name="SELECTED_COUNT" /></translation>
 <translation id="4992066212339426712">Укључи звук</translation>
 <translation id="49969490063480558">Унесите неки део после „<ph name="ATSIGN" />“. Адреса „<ph name="INVALIDADDRESS" />“ је непотпуна.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Уврстите „<ph name="ATSIGN" />“ у имејл адресу. У адреси е-поште „<ph name="INVALIDADDRESS" />“ недостаје „<ph name="ATSIGN" />“.</translation>
 <translation id="7891486169920085145">разделник</translation>
 <translation id="795667975304826397">Није одабрано</translation>
+<translation id="7962328325860248200">Није изабрано: <ph name="ACCNAME" /></translation>
 <translation id="8034303206267677282">јако</translation>
 <translation id="8053789581856978548">поље за текст претраге</translation>
 <translation id="8057695513531652401">обавештење</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Месец</translation>
 <translation id="901493112792887934">актуелно време у секундама</translation>
 <translation id="901834265349196618">имејл</translation>
-<translation id="9023835124071926463">одељак са коментарима</translation>
 <translation id="9048119486235211610">навигација</translation>
 <translation id="9062295712474918030">документ</translation>
 <translation id="9093215626363556771">изађи из режима слике у слици</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_sv.xtb b/third_party/blink/public/strings/translations/blink_strings_sv.xtb
index fdad4b8..8a15337 100644
--- a/third_party/blink/public/strings/translations/blink_strings_sv.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_sv.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Lägg till minst <ph name="MIN_CHARACTERS" /> tecken (för närvarande har du angett <ph name="CURRENT_LENGTH" /> tecken).</translation>
 <translation id="383465348367842624">En del följt av <ph name="ATSIGN" /> får inte innehålla symbolen <ph name="INVALIDCHARACTER" />.</translation>
 <translation id="3846214748874656680">Avsluta helskärmsläge</translation>
-<translation id="3889183436948184105">version</translation>
 <translation id="3920932319529768807">resultat</translation>
 <translation id="3924558731517983934">program</translation>
 <translation id="3944740393230681990">prolog</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Ange ett nummer.</translation>
 <translation id="4912536737030637138">bibliografipost</translation>
 <translation id="492244087561876220">kommentar</translation>
+<translation id="4971739861736909480"><ph name="ACCNAME" /> har valts</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> valda</translation>
 <translation id="4992066212339426712">Slå på ljudet</translation>
 <translation id="49969490063480558">Ange en del följt av <ph name="ATSIGN" />. <ph name="INVALIDADDRESS" /> är ofullständig.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Inkludera ett <ph name="ATSIGN" /> i e-postadressen. <ph name="INVALIDADDRESS" /> saknar ett <ph name="ATSIGN" />.</translation>
 <translation id="7891486169920085145">delare</translation>
 <translation id="795667975304826397">Ingen fil har valts</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" /> har inte markerats</translation>
 <translation id="8034303206267677282">starkt</translation>
 <translation id="8053789581856978548">fält för söktext</translation>
 <translation id="8057695513531652401">anmärkning</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Månad</translation>
 <translation id="901493112792887934">aktuell tid i sekunder</translation>
 <translation id="901834265349196618">e-post</translation>
-<translation id="9023835124071926463">kommentarsfält</translation>
 <translation id="9048119486235211610">navigering</translation>
 <translation id="9062295712474918030">dokument</translation>
 <translation id="9093215626363556771">avsluta bild-i-bild-läge</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_sw.xtb b/third_party/blink/public/strings/translations/blink_strings_sw.xtb
index ce30fb46..f23d88c 100644
--- a/third_party/blink/public/strings/translations/blink_strings_sw.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_sw.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Tafadhali refusha maandishi haya hadi herufi <ph name="MIN_CHARACTERS" /> au zaidi (kwa sasa unatumia herufi <ph name="CURRENT_LENGTH" />).</translation>
 <translation id="383465348367842624">Sehemu inayofuatwa na '<ph name="ATSIGN" />' haipaswi kuwa na alama ya '<ph name="INVALIDCHARACTER" />'.</translation>
 <translation id="3846214748874656680">Ondoka kwenye skrini nzima</translation>
-<translation id="3889183436948184105">marekebisho</translation>
 <translation id="3920932319529768807">hitimisho</translation>
 <translation id="3924558731517983934">programu</translation>
 <translation id="3944740393230681990">shairi la utangulizi</translation>
@@ -259,7 +258,6 @@
 <translation id="8987927404178983737">Mwezi</translation>
 <translation id="901493112792887934">muda wa sasa kwa sekunde</translation>
 <translation id="901834265349196618">Barua pepe</translation>
-<translation id="9023835124071926463">sehemu ya maoni</translation>
 <translation id="9048119486235211610">kuvinjari</translation>
 <translation id="9062295712474918030">hati</translation>
 <translation id="9093215626363556771">funga hali ya picha ndani ya picha</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_ta.xtb b/third_party/blink/public/strings/translations/blink_strings_ta.xtb
index bb016e97..427f0b18 100644
--- a/third_party/blink/public/strings/translations/blink_strings_ta.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_ta.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">இந்த உரையை <ph name="MIN_CHARACTERS" /> எழுத்துக்குறிகள் அல்லது அதற்கும் அதிகமாக (தற்போது <ph name="CURRENT_LENGTH" /> எழுத்துக்குறிகளைப் பயன்படுத்துகிறீர்கள்) நீட்டிக்கவும்.</translation>
 <translation id="383465348367842624">'<ph name="ATSIGN" />' ஐத் தொடர்ந்து வரும் பகுதியில் '<ph name="INVALIDCHARACTER" />' சின்னம் இருக்கக்கூடாது.</translation>
 <translation id="3846214748874656680">முழுத்திரை வேண்டாம்</translation>
-<translation id="3889183436948184105">மீள்திருத்தம்</translation>
 <translation id="3920932319529768807">முடிவு</translation>
 <translation id="3924558731517983934">ஆப்ஸ்</translation>
 <translation id="3944740393230681990">முன்னுரை</translation>
@@ -257,7 +256,6 @@
 <translation id="8987927404178983737">மாதம்</translation>
 <translation id="901493112792887934">நடப்பு நேரம் வினாடிகளில்</translation>
 <translation id="901834265349196618">மின்னஞ்சல்</translation>
-<translation id="9023835124071926463">கருத்துப் பிரிவு</translation>
 <translation id="9048119486235211610">வழிசெலுத்தல்</translation>
 <translation id="9062295712474918030">ஆவணம்</translation>
 <translation id="9093215626363556771">பிக்ச்சர்-இன்-பிக்ச்சர் பயன்முறையிலிருந்து வெளியேறும்</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_te.xtb b/third_party/blink/public/strings/translations/blink_strings_te.xtb
index 09798f1..ae05162 100644
--- a/third_party/blink/public/strings/translations/blink_strings_te.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_te.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">దయచేసి ఈ వచనాన్ని <ph name="MIN_CHARACTERS" /> లేదా అంతకంటే ఎక్కువ అక్షరాలకు పొడిగించండి (ప్రస్తుతం మీరు <ph name="CURRENT_LENGTH" /> అక్షరాలను ఉపయోగిస్తున్నారు).</translation>
 <translation id="383465348367842624">'<ph name="ATSIGN" />'కి ముందు ఉన్న భాగంలో '<ph name="INVALIDCHARACTER" />' చిహ్నం ఉండకూడదు.</translation>
 <translation id="3846214748874656680">పూర్తి స్క్రీన్ నుండి నిష్క్రమించు</translation>
-<translation id="3889183436948184105">పునర్విమర్శ</translation>
 <translation id="3920932319529768807">ముగింపు</translation>
 <translation id="3924558731517983934">అప్లికేషన్‌</translation>
 <translation id="3944740393230681990">ప్రారంభం</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">దయచేసి సంఖ్యను నమోదు చేయండి.</translation>
 <translation id="4912536737030637138">వివరణపట్టి నమోదు</translation>
 <translation id="492244087561876220">కామెంట్‌</translation>
+<translation id="4971739861736909480"><ph name="ACCNAME" /> ఎంచుకోబడింది</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> ఎంచుకోబడ్డాయి</translation>
 <translation id="4992066212339426712">అన్‌మ్యూట్ చేయి</translation>
 <translation id="49969490063480558">దయచేసి '<ph name="ATSIGN" />'కి తర్వాత ఉన్న భాగాన్ని నమోదు చేయండి. '<ph name="INVALIDADDRESS" />' అసంపూర్ణంగా ఉంది.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">దయచేసి ఇమెయిల్ చిరునామాలో '<ph name="ATSIGN" />'ని చేర్చండి. '<ph name="INVALIDADDRESS" />'లో '<ph name="ATSIGN" />' లేదు.</translation>
 <translation id="7891486169920085145">విభజన</translation>
 <translation id="795667975304826397">ఫైల్ ఏదీ ఎంచుకోలేదు</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" /> ఎంచుకోబడలేదు</translation>
 <translation id="8034303206267677282">ప్రబలమైనది</translation>
 <translation id="8053789581856978548">శోధన వచనం ఫీల్డ్</translation>
 <translation id="8057695513531652401">గమనిక</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">నెల</translation>
 <translation id="901493112792887934">సెకన్లలో ప్రస్తుత సమయం</translation>
 <translation id="901834265349196618">ఇమెయిల్</translation>
-<translation id="9023835124071926463">కామెంట్ విభాగం</translation>
 <translation id="9048119486235211610">నావిగేషన్</translation>
 <translation id="9062295712474918030">పత్రం</translation>
 <translation id="9093215626363556771">చిత్రంలో చిత్రం మోడ్ నుండి నిష్క్రమింపజేస్తుంది</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_th.xtb b/third_party/blink/public/strings/translations/blink_strings_th.xtb
index 8e6b44e..97f7ebed 100644
--- a/third_party/blink/public/strings/translations/blink_strings_th.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_th.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">โปรดกรอกข้อความนี้ให้มีอักขระอย่างน้อย <ph name="MIN_CHARACTERS" /> ตัว (ตอนนี้คุณมี <ph name="CURRENT_LENGTH" /> ตัว)</translation>
 <translation id="383465348367842624">ส่วนที่ตามด้วย "<ph name="ATSIGN" />" ต้องไม่มีสัญลักษณ์ "<ph name="INVALIDCHARACTER" />"</translation>
 <translation id="3846214748874656680">ออกจากการแสดงเต็มหน้าจอ</translation>
-<translation id="3889183436948184105">การแก้ไข</translation>
 <translation id="3920932319529768807">บทสรุป</translation>
 <translation id="3924558731517983934">แอปพลิเคชัน</translation>
 <translation id="3944740393230681990">อารัมภบท</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">โปรดป้อนตัวเลข</translation>
 <translation id="4912536737030637138">รายการบรรณานุกรม</translation>
 <translation id="492244087561876220">ความคิดเห็น</translation>
+<translation id="4971739861736909480">เลือก <ph name="ACCNAME" /> ไว้</translation>
 <translation id="4975562563186953947">เลือกไว้ <ph name="SELECTED_COUNT" /> รายการ</translation>
 <translation id="4992066212339426712">เปิดเสียง</translation>
 <translation id="49969490063480558">โปรดป้อนส่วนที่ต่อท้าย "<ph name="ATSIGN" />" "<ph name="INVALIDADDRESS" />" นั้นไม่สมบูรณ์</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">โปรดใส่ "<ph name="ATSIGN" />" ในที่อยู่อีเมล "<ph name="INVALIDADDRESS" />" ขาด "<ph name="ATSIGN" />"</translation>
 <translation id="7891486169920085145">ตัวแยก</translation>
 <translation id="795667975304826397">ไม่ได้เลือกไฟล์ใด</translation>
+<translation id="7962328325860248200">ไม่ได้เลือก <ph name="ACCNAME" />ไว้</translation>
 <translation id="8034303206267677282">สำคัญ</translation>
 <translation id="8053789581856978548">ช่องข้อความค้นหา</translation>
 <translation id="8057695513531652401">ประกาศ</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">เดือน</translation>
 <translation id="901493112792887934">เวลาปัจจุบันเป็นวินาที</translation>
 <translation id="901834265349196618">อีเมล</translation>
-<translation id="9023835124071926463">ส่วนความคิดเห็น</translation>
 <translation id="9048119486235211610">การนำทาง</translation>
 <translation id="9062295712474918030">เอกสาร</translation>
 <translation id="9093215626363556771">ออกจากการแสดงภาพซ้อนภาพ</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_tr.xtb b/third_party/blink/public/strings/translations/blink_strings_tr.xtb
index 8e7f27c..60153179 100644
--- a/third_party/blink/public/strings/translations/blink_strings_tr.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_tr.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Lütfen bu metni <ph name="MIN_CHARACTERS" /> karakter veya daha fazla olacak şekilde uzatın (şu anda <ph name="CURRENT_LENGTH" /> karakter kullanıyorsunuz).</translation>
 <translation id="383465348367842624">Başında "<ph name="ATSIGN" />" bulunan kısımda "<ph name="INVALIDCHARACTER" />" simgesi bulunmamalıdır.</translation>
 <translation id="3846214748874656680">Tam ekran modundan çık</translation>
-<translation id="3889183436948184105">düzeltme</translation>
 <translation id="3920932319529768807">sonuç</translation>
 <translation id="3924558731517983934">uygulama</translation>
 <translation id="3944740393230681990">prolog</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Lütfen bir sayı girin.</translation>
 <translation id="4912536737030637138">kaynakça girişi</translation>
 <translation id="492244087561876220">yorum</translation>
+<translation id="4971739861736909480"><ph name="ACCNAME" /> seçildi</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> öğe seçildi</translation>
 <translation id="4992066212339426712">Sesi aç</translation>
 <translation id="49969490063480558">Lütfen "<ph name="ATSIGN" />" işaretinden sonra gelen kısmı ekleyin. "<ph name="INVALIDADDRESS" />", tam bir adres değil.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Lütfen e-posta adresine bir "<ph name="ATSIGN" />" işareti ekleyin. "<ph name="INVALIDADDRESS" />" adresinde "<ph name="ATSIGN" />" eksik.</translation>
 <translation id="7891486169920085145">ayırıcı</translation>
 <translation id="795667975304826397">Dosya seçilmedi</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" /> seçilmedi</translation>
 <translation id="8034303206267677282">önemli</translation>
 <translation id="8053789581856978548">arama metni alanı</translation>
 <translation id="8057695513531652401">bildirim</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Ay</translation>
 <translation id="901493112792887934">saniye olarak geçerli süre</translation>
 <translation id="901834265349196618">e-posta</translation>
-<translation id="9023835124071926463">yorum bölümü</translation>
 <translation id="9048119486235211610">gezinme</translation>
 <translation id="9062295712474918030">doküman</translation>
 <translation id="9093215626363556771">pencere içinde pencere modundan çıkın</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_uk.xtb b/third_party/blink/public/strings/translations/blink_strings_uk.xtb
index c47156e..87474f0d 100644
--- a/third_party/blink/public/strings/translations/blink_strings_uk.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_uk.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">У тексті має бути на менше <ph name="MIN_CHARACTERS" /> символів (ви ввели <ph name="CURRENT_LENGTH" /> символів).</translation>
 <translation id="383465348367842624">Частина перед знаком "<ph name="ATSIGN" />" не може містити символ "<ph name="INVALIDCHARACTER" />".</translation>
 <translation id="3846214748874656680">Вийти з повноекранного режиму</translation>
-<translation id="3889183436948184105">редакція</translation>
 <translation id="3920932319529768807">висновок</translation>
 <translation id="3924558731517983934">додаток</translation>
 <translation id="3944740393230681990">пролог</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Введіть число.</translation>
 <translation id="4912536737030637138">бібліографічний запис</translation>
 <translation id="492244087561876220">коментар</translation>
+<translation id="4971739861736909480">Вибрано <ph name="ACCNAME" /></translation>
 <translation id="4975562563186953947">Вибрано <ph name="SELECTED_COUNT" /></translation>
 <translation id="4992066212339426712">Увімкнути звук</translation>
 <translation id="49969490063480558">Введіть частину електронної адреси після знака "<ph name="ATSIGN" />". Електронна адреса "<ph name="INVALIDADDRESS" />" неповна.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Електронна адреса має містити знак "<ph name="ATSIGN" />". В електронній адресі "<ph name="INVALIDADDRESS" />" знака "<ph name="ATSIGN" />" немає.</translation>
 <translation id="7891486169920085145">розділювач</translation>
 <translation id="795667975304826397">Файл не вибрано</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" />: не вибрано</translation>
 <translation id="8034303206267677282">важливо</translation>
 <translation id="8053789581856978548">текстове поле пошуку</translation>
 <translation id="8057695513531652401">примітка</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Місяць</translation>
 <translation id="901493112792887934">поточний час у секундах</translation>
 <translation id="901834265349196618">електронна адреса</translation>
-<translation id="9023835124071926463">розділ із коментарями</translation>
 <translation id="9048119486235211610">навігація</translation>
 <translation id="9062295712474918030">документ</translation>
 <translation id="9093215626363556771">вийти з режиму "Картинка в картинці"</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_ur.xtb b/third_party/blink/public/strings/translations/blink_strings_ur.xtb
index 8c2fc3f..da9d113e 100644
--- a/third_party/blink/public/strings/translations/blink_strings_ur.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_ur.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">براہ کرم اس متن کو <ph name="MIN_CHARACTERS" /> حروف یا زیادہ تک بڑھائیں (آپ فی الحال <ph name="CURRENT_LENGTH" /> حروف استعمال کر رہے ہیں)۔</translation>
 <translation id="383465348367842624">'<ph name="ATSIGN" />' کے بعد ایک حصہ میں علامت '<ph name="INVALIDCHARACTER" />' شامل نہیں ہونی چاہیے۔</translation>
 <translation id="3846214748874656680">پوری اسکرین سے باہر نکلیں</translation>
-<translation id="3889183436948184105">نظرثانی</translation>
 <translation id="3920932319529768807">اختتامیہ</translation>
 <translation id="3924558731517983934">ایپلیکیشن</translation>
 <translation id="3944740393230681990">تمہید</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">براہ کرم ایک نمبر درج کریں۔</translation>
 <translation id="4912536737030637138">کتابیات کا اندراج</translation>
 <translation id="492244087561876220">تبصرہ</translation>
+<translation id="4971739861736909480"><ph name="ACCNAME" /> منتخب کیا گيا</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> منتخب کر لیا گیا</translation>
 <translation id="4992066212339426712">آواز چلائیں</translation>
 <translation id="49969490063480558">براہ کرم '<ph name="ATSIGN" />' کے بعد ایک حصہ درج کریں۔ '<ph name="INVALIDADDRESS" />' نامکمل ہے۔</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">براہ کرم ای میل پتہ میں ایک '<ph name="ATSIGN" />' شامل کریں۔ '<ph name="INVALIDADDRESS" />' میں '<ph name="ATSIGN" />' غائب ہے۔</translation>
 <translation id="7891486169920085145">تقسیم کنندہ</translation>
 <translation id="795667975304826397">کوئی فائل منتخب نہیں کی گئی</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" /> منتخب کردہ نہیں ہے</translation>
 <translation id="8034303206267677282">مضبوط</translation>
 <translation id="8053789581856978548">متن تلاش کرنے کی فیلڈ</translation>
 <translation id="8057695513531652401">نوٹس</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">ماہ</translation>
 <translation id="901493112792887934">موجودہ وقت سیکنڈ میں ہے</translation>
 <translation id="901834265349196618">ای میل</translation>
-<translation id="9023835124071926463">تبصرہ سیکشن</translation>
 <translation id="9048119486235211610">نیویگیشن</translation>
 <translation id="9062295712474918030">دستاویز</translation>
 <translation id="9093215626363556771">'تصویر میں تصویر' سے باہر نکلیں</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_uz.xtb b/third_party/blink/public/strings/translations/blink_strings_uz.xtb
index 9a8bd60..668bdc4d 100644
--- a/third_party/blink/public/strings/translations/blink_strings_uz.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_uz.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Matndagi belgilar soni <ph name="MIN_CHARACTERS" /> tadan ko‘p bo‘lishi kerak (siz esa <ph name="CURRENT_LENGTH" /> ta belgidan foydalanyapsiz).</translation>
 <translation id="383465348367842624">Manzilning “<ph name="ATSIGN" />” qismida “<ph name="INVALIDCHARACTER" />” belgisi bo‘lmasligi kerak.</translation>
 <translation id="3846214748874656680">To‘liq ekran rejimidan chiqish</translation>
-<translation id="3889183436948184105">tahrir</translation>
 <translation id="3920932319529768807">xulosa</translation>
 <translation id="3924558731517983934">ilova</translation>
 <translation id="3944740393230681990">muqaddima</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Raqam kiriting.</translation>
 <translation id="4912536737030637138">bibliografiya yozuvi</translation>
 <translation id="492244087561876220">fikr</translation>
+<translation id="4971739861736909480"><ph name="ACCNAME" /> tanlandi</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> ta element tanlandi</translation>
 <translation id="4992066212339426712">Ovozni yoqish</translation>
 <translation id="49969490063480558">Elektron manzilning qolgan qismini “<ph name="ATSIGN" />” belgisidan keyin kiriting. “<ph name="INVALIDADDRESS" />” manzili to‘liq emas.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Elektron pochta manzilida “<ph name="ATSIGN" />” belgisi bo‘lishi kerak. “<ph name="INVALIDADDRESS" />” manzilida “<ph name="ATSIGN" />” belgisi yo‘q.</translation>
 <translation id="7891486169920085145">ajratkich</translation>
 <translation id="795667975304826397">Hech qanday fayl tanlanmagan</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" /> tanlanmagan</translation>
 <translation id="8034303206267677282">kuchli</translation>
 <translation id="8053789581856978548">qidiruv maydoni</translation>
 <translation id="8057695513531652401">eslatma</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Oy</translation>
 <translation id="901493112792887934">joriy vaqt soniyalarda</translation>
 <translation id="901834265349196618">e-pochta</translation>
-<translation id="9023835124071926463">fikrlar boʻlimi</translation>
 <translation id="9048119486235211610">navigatsiya</translation>
 <translation id="9062295712474918030">hujjat</translation>
 <translation id="9093215626363556771">tasvir ustida tasvir rejimidan chiqish</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_vi.xtb b/third_party/blink/public/strings/translations/blink_strings_vi.xtb
index 2db3502..35e31ac7 100644
--- a/third_party/blink/public/strings/translations/blink_strings_vi.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_vi.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Hãy kéo dài văn bản này thành <ph name="MIN_CHARACTERS" /> ký tự trở lên (bạn hiện đang sử dụng <ph name="CURRENT_LENGTH" /> ký tự).</translation>
 <translation id="383465348367842624">Phần đứng trước '<ph name="ATSIGN" />' không được chứa biểu tượng '<ph name="INVALIDCHARACTER" />'.</translation>
 <translation id="3846214748874656680">Thoát chế độ toàn màn hình</translation>
-<translation id="3889183436948184105">bản sửa đổi</translation>
 <translation id="3920932319529768807">kết luận</translation>
 <translation id="3924558731517983934">ứng dụng</translation>
 <translation id="3944740393230681990">phần mở đầu</translation>
@@ -257,7 +256,6 @@
 <translation id="8987927404178983737">Tháng</translation>
 <translation id="901493112792887934">thời gian hiện tại bằng giây</translation>
 <translation id="901834265349196618">email</translation>
-<translation id="9023835124071926463">phần nhận xét</translation>
 <translation id="9048119486235211610">điều hướng</translation>
 <translation id="9062295712474918030">tài liệu</translation>
 <translation id="9093215626363556771">thoát chế độ hình trong hình</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_zh-CN.xtb b/third_party/blink/public/strings/translations/blink_strings_zh-CN.xtb
index 90070bd0..89cba3f 100644
--- a/third_party/blink/public/strings/translations/blink_strings_zh-CN.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_zh-CN.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">请将该文本增加为 <ph name="MIN_CHARACTERS" /> 个字符或更多(您当前使用的是 <ph name="CURRENT_LENGTH" /> 个字符)。</translation>
 <translation id="383465348367842624">“<ph name="ATSIGN" />”前面的内容不应包含符号“<ph name="INVALIDCHARACTER" />”。</translation>
 <translation id="3846214748874656680">退出全屏模式</translation>
-<translation id="3889183436948184105">修订历史</translation>
 <translation id="3920932319529768807">总结</translation>
 <translation id="3924558731517983934">应用</translation>
 <translation id="3944740393230681990">序言</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">请输入一个数字。</translation>
 <translation id="4912536737030637138">参考书目</translation>
 <translation id="492244087561876220">评论</translation>
+<translation id="4971739861736909480">已选择“<ph name="ACCNAME" />”</translation>
 <translation id="4975562563186953947">选择了<ph name="SELECTED_COUNT" />项</translation>
 <translation id="4992066212339426712">取消静音</translation>
 <translation id="49969490063480558">请在“<ph name="ATSIGN" />”后面输入内容。“<ph name="INVALIDADDRESS" />”不完整。</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">请在电子邮件地址中包括“<ph name="ATSIGN" />”。“<ph name="INVALIDADDRESS" />”中缺少“<ph name="ATSIGN" />”。</translation>
 <translation id="7891486169920085145">分离器</translation>
 <translation id="795667975304826397">未选择任何文件</translation>
+<translation id="7962328325860248200">未选择“<ph name="ACCNAME" />”</translation>
 <translation id="8034303206267677282">紧急</translation>
 <translation id="8053789581856978548">搜索文本字段</translation>
 <translation id="8057695513531652401">通知</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">月</translation>
 <translation id="901493112792887934">目前时间(以秒为单位)</translation>
 <translation id="901834265349196618">电子邮件</translation>
-<translation id="9023835124071926463">“评论”部分</translation>
 <translation id="9048119486235211610">导航</translation>
 <translation id="9062295712474918030">文档</translation>
 <translation id="9093215626363556771">退出“画中画”模式</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_zh-HK.xtb b/third_party/blink/public/strings/translations/blink_strings_zh-HK.xtb
index d2b018a..55d8ca0 100644
--- a/third_party/blink/public/strings/translations/blink_strings_zh-HK.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_zh-HK.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">請將這段文字加長至 <ph name="MIN_CHARACTERS" /> 個字元或以上 (目前的字數為 <ph name="CURRENT_LENGTH" /> 個)。</translation>
 <translation id="383465348367842624">「<ph name="ATSIGN" />」後面的部分不應包含「<ph name="INVALIDCHARACTER" />」符號。</translation>
 <translation id="3846214748874656680">關閉全屏幕模式</translation>
-<translation id="3889183436948184105">修訂版本</translation>
 <translation id="3920932319529768807">結論</translation>
 <translation id="3924558731517983934">應用程式</translation>
 <translation id="3944740393230681990">序言</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">請輸入一個數字。</translation>
 <translation id="4912536737030637138">參考書目資料</translation>
 <translation id="492244087561876220">留言</translation>
+<translation id="4971739861736909480">已選取「<ph name="ACCNAME" />」</translation>
 <translation id="4975562563186953947">已選取 <ph name="SELECTED_COUNT" /> 個項目</translation>
 <translation id="4992066212339426712">取消靜音</translation>
 <translation id="49969490063480558">請輸入「<ph name="ATSIGN" />」後面的部分。「<ph name="INVALIDADDRESS" />」並不完整。</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">電郵地址中應包括「<ph name="ATSIGN" />」。「<ph name="INVALIDADDRESS" />」中沒有「<ph name="ATSIGN" />」。</translation>
 <translation id="7891486169920085145">分割器</translation>
 <translation id="795667975304826397">未選擇檔案</translation>
+<translation id="7962328325860248200">未選取「<ph name="ACCNAME" />」</translation>
 <translation id="8034303206267677282">強</translation>
 <translation id="8053789581856978548">搜尋文字欄位</translation>
 <translation id="8057695513531652401">聲明</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">月</translation>
 <translation id="901493112792887934">目前時間 (以秒為單位)</translation>
 <translation id="901834265349196618">電郵</translation>
-<translation id="9023835124071926463">留言部分</translation>
 <translation id="9048119486235211610">瀏覽</translation>
 <translation id="9062295712474918030">文件</translation>
 <translation id="9093215626363556771">退出畫中畫</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_zh-TW.xtb b/third_party/blink/public/strings/translations/blink_strings_zh-TW.xtb
index ad68bc5..9cbeb8f 100644
--- a/third_party/blink/public/strings/translations/blink_strings_zh-TW.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_zh-TW.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">請將這段文字加長到 <ph name="MIN_CHARACTERS" /> 個字元以上 (目前使用字元數:<ph name="CURRENT_LENGTH" />)。</translation>
 <translation id="383465348367842624">「<ph name="ATSIGN" />」後面的部分不應包含「<ph name="INVALIDCHARACTER" />」符號。</translation>
 <translation id="3846214748874656680">結束全螢幕</translation>
-<translation id="3889183436948184105">修訂版本</translation>
 <translation id="3920932319529768807">結論</translation>
 <translation id="3924558731517983934">應用程式</translation>
 <translation id="3944740393230681990">序言</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">請輸入一個數字。</translation>
 <translation id="4912536737030637138">參考書目</translation>
 <translation id="492244087561876220">評論</translation>
+<translation id="4971739861736909480">已選取「<ph name="ACCNAME" />」</translation>
 <translation id="4975562563186953947">已選取 <ph name="SELECTED_COUNT" /> 個項目</translation>
 <translation id="4992066212339426712">取消靜音</translation>
 <translation id="49969490063480558">請輸入「<ph name="ATSIGN" />」後面的部分。「<ph name="INVALIDADDRESS" />」不是完整值。</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">請在電子郵件地址中包含「<ph name="ATSIGN" />」。「<ph name="INVALIDADDRESS" />」未包含「<ph name="ATSIGN" />」。</translation>
 <translation id="7891486169920085145">分割器</translation>
 <translation id="795667975304826397">未選擇任何檔案</translation>
+<translation id="7962328325860248200">未選取「<ph name="ACCNAME" />」</translation>
 <translation id="8034303206267677282">強</translation>
 <translation id="8053789581856978548">搜尋文字欄位</translation>
 <translation id="8057695513531652401">聲明</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">月</translation>
 <translation id="901493112792887934">目前時間 (以秒為單位)</translation>
 <translation id="901834265349196618">電子郵件</translation>
-<translation id="9023835124071926463">評論部分</translation>
 <translation id="9048119486235211610">導覽</translation>
 <translation id="9062295712474918030">文件</translation>
 <translation id="9093215626363556771">離開子母畫面</translation>
diff --git a/third_party/blink/public/strings/translations/blink_strings_zu.xtb b/third_party/blink/public/strings/translations/blink_strings_zu.xtb
index 930f2222..02528cac 100644
--- a/third_party/blink/public/strings/translations/blink_strings_zu.xtb
+++ b/third_party/blink/public/strings/translations/blink_strings_zu.xtb
@@ -82,7 +82,6 @@
 <translation id="3822383571486410024">Sicela welule lo mbhalo kuya kuzinhlamvu ezingu-<ph name="MIN_CHARACTERS" /> noma ngaphezulu (okwamanje usebenzisa izinhlamvu ezingu-<ph name="CURRENT_LENGTH" />).</translation>
 <translation id="383465348367842624">Ingxenye elandelwa yi-'<ph name="ATSIGN" />' akumele iqukathe isimbuli engu-'<ph name="INVALIDCHARACTER" />'.</translation>
 <translation id="3846214748874656680">Phuma kusikrini esigcwele</translation>
-<translation id="3889183436948184105">isibuyekezo</translation>
 <translation id="3920932319529768807">isiphetho</translation>
 <translation id="3924558731517983934">uhlelo lokusebenza</translation>
 <translation id="3944740393230681990">isandulela</translation>
@@ -115,6 +114,7 @@
 <translation id="4812940957355064477">Sicela ufake inombolo.</translation>
 <translation id="4912536737030637138">ukufakwa kwe-bibliography</translation>
 <translation id="492244087561876220">amazwana</translation>
+<translation id="4971739861736909480"><ph name="ACCNAME" />okukhethiwe</translation>
 <translation id="4975562563186953947"><ph name="SELECTED_COUNT" /> okukhethiwe</translation>
 <translation id="4992066212339426712">Susa ukuthula</translation>
 <translation id="49969490063480558">Sicela ufake ingxenye elandela i-'<ph name="ATSIGN" />'. I-'<ph name="INVALIDADDRESS" />' ayiphelele.</translation>
@@ -219,6 +219,7 @@
 <translation id="7888071071722539607">Sicela ufake i-'<ph name="ATSIGN" />' kukheli le-imeyili. I-'<ph name="INVALIDADDRESS" />' ishoda nge-'<ph name="ATSIGN" />'.</translation>
 <translation id="7891486169920085145">idabula</translation>
 <translation id="795667975304826397">Alikho ifayela elikhethiwe</translation>
+<translation id="7962328325860248200"><ph name="ACCNAME" /> akukhethiwe</translation>
 <translation id="8034303206267677282">kunamandla</translation>
 <translation id="8053789581856978548">inkambu yokusesha umbhalo</translation>
 <translation id="8057695513531652401">isaziso</translation>
@@ -257,7 +258,6 @@
 <translation id="8987927404178983737">Inyanga</translation>
 <translation id="901493112792887934">isikhathi samanje ngamasekhondi</translation>
 <translation id="901834265349196618">i-imeyili</translation>
-<translation id="9023835124071926463">isigaba samazwana</translation>
 <translation id="9048119486235211610">ukuzulazula</translation>
 <translation id="9062295712474918030">idokhumenti</translation>
 <translation id="9093215626363556771">phuma kusithombe-esithombeni</translation>
diff --git a/third_party/blink/public/web/web_remote_frame.h b/third_party/blink/public/web/web_remote_frame.h
index 7191df0..9262062 100644
--- a/third_party/blink/public/web/web_remote_frame.h
+++ b/third_party/blink/public/web/web_remote_frame.h
@@ -146,7 +146,7 @@
   virtual void TransferUserActivationFrom(
       blink::WebRemoteFrame* source_frame) = 0;
 
-  virtual void SetHasReceivedUserGestureBeforeNavigation(bool value) = 0;
+  virtual void SetHadStickyUserActivationBeforeNavigation(bool value) = 0;
 
   // Scrolls the given rectangle into view. This kicks off the recursive scroll
   // into visible starting from the frame's owner element. The coordinates of
diff --git a/third_party/blink/renderer/bindings/IDLExtendedAttributes.md b/third_party/blink/renderer/bindings/IDLExtendedAttributes.md
index ba30d40..d0f96170 100644
--- a/third_party/blink/renderer/bindings/IDLExtendedAttributes.md
+++ b/third_party/blink/renderer/bindings/IDLExtendedAttributes.md
@@ -178,9 +178,9 @@
 
 Calling the `[Clamp]` version of `setColor()` uses **clampTo()** to coerce the Numbers to octets. Hence calling `context.setColor(-1, 255, 257)` is equivalent to calling `setColorClamped(0, 255, 255)`.
 
-### [Constructor] _(i)_
+### [Constructor] _(i)_ _deprecated_
 
-Standard: [Constructor](https://heycam.github.io/webidl/#Constructor)
+`[Constructor]` is deprecated. Use [constructor operations](https://heycam.github.io/webidl/#idl-constructors) instead.
 
 Summary: `[Constructor]` indicates that the interface should have a constructor, i.e. "new XXX()".
 
@@ -1370,7 +1370,9 @@
 With both `Getter` and `Setter`, allows both cross-origin reads and cross-origin
 writes. This is used for the `Window.location` attribute.
 
-### [CustomConstructor] _(i)_
+### [CustomConstructor] _(i)_ _deprecated_
+
+`[CustomConstructor]` is deprecated. Use [constructor operations](https://heycam.github.io/webidl/#idl-constructors) with `[Custom]`.
 
 Summary: They allow you to write custom bindings for constructors.
 
diff --git a/third_party/blink/renderer/bindings/bindings.gni b/third_party/blink/renderer/bindings/bindings.gni
index 7b70a23f..c2e6aa7 100644
--- a/third_party/blink/renderer/bindings/bindings.gni
+++ b/third_party/blink/renderer/bindings/bindings.gni
@@ -7,6 +7,12 @@
 
 import("//third_party/blink/renderer/bindings/modules/v8/v8.gni")
 
+declare_args() {
+  # If this variable is set true, we use a new code generator to generate code
+  # of IDL dictionaries.  See https://crbug.com/839389 for the details.
+  use_v8_bind_gen_for_dictionary = false
+}
+
 bindings_core_v8_files =
     get_path_info([
                     "core/v8/active_script_wrappable.cc",
diff --git a/third_party/blink/renderer/bindings/core/v8/BUILD.gn b/third_party/blink/renderer/bindings/core/v8/BUILD.gn
index 40e897c5..2acb851a 100644
--- a/third_party/blink/renderer/bindings/core/v8/BUILD.gn
+++ b/third_party/blink/renderer/bindings/core/v8/BUILD.gn
@@ -202,9 +202,13 @@
   bindings_core_generated_interface_files =
       [ "$bindings_core_v8_output_dir/v8_generated_core_bindings.cc" ]
 } else {
+  _core_definition_idl_files = core_definition_idl_files
+  if (use_v8_bind_gen_for_dictionary) {
+    _core_definition_idl_files -= core_dictionary_idl_files
+  }
   bindings_core_generated_interface_files =
       process_file_template(
-          core_definition_idl_files,
+          _core_definition_idl_files,
           [
             "$bindings_core_v8_output_dir/v8_{{source_name_part}}.cc",
             "$bindings_core_v8_output_dir/v8_{{source_name_part}}.h",
@@ -227,6 +231,9 @@
 idl_compiler("generate_bindings_core_v8_interfaces") {
   sources = core_definition_idl_files + core_testing_definition_idl_files +
             generated_webcore_testing_idl_files
+  if (use_v8_bind_gen_for_dictionary) {
+    sources -= core_dictionary_idl_files
+  }
   output_dir = bindings_core_v8_output_dir
   output_name_suffix = ""
   target_component = "core"
@@ -234,6 +241,9 @@
 
 aggregate_generated_bindings("generate_bindings_core_v8_all_interfaces") {
   sources = core_definition_idl_files
+  if (use_v8_bind_gen_for_dictionary) {
+    sources -= core_dictionary_idl_files
+  }
   outputs = [
     "$bindings_core_v8_output_dir/v8_generated_core_bindings.cc",
   ]
@@ -244,7 +254,11 @@
 }
 
 idl_impl("bindings_core_impl_generated") {
-  dict_idls = core_dictionary_idl_files + core_testing_dictionary_idl_files
+  if (use_v8_bind_gen_for_dictionary) {
+    dict_idls = []
+  } else {
+    dict_idls = core_dictionary_idl_files + core_testing_dictionary_idl_files
+  }
   non_dict_outputs = bindings_core_generated_union_type_files +
                      generated_core_testing_callback_function_files +
                      generated_core_callback_function_files
@@ -267,8 +281,10 @@
 # Compile the non-test sources generated above.
 blink_core_sources("bindings_core_impl") {
   _non_testing_sources = get_target_outputs(":bindings_core_impl_generated") -
-                         generated_core_testing_dictionary_files -
                          generated_core_testing_callback_function_files
+  if (!use_v8_bind_gen_for_dictionary) {
+    _non_testing_sources -= generated_core_testing_dictionary_files
+  }
   sources = _non_testing_sources + bindings_core_generated_interface_files +
             get_target_outputs(":bindings_core_origin_trial_features")
 
diff --git a/third_party/blink/renderer/bindings/core/v8/script_wrappable_v8_gc_integration_test.cc b/third_party/blink/renderer/bindings/core/v8/script_wrappable_v8_gc_integration_test.cc
index 3504c8a..2859858 100644
--- a/third_party/blink/renderer/bindings/core/v8/script_wrappable_v8_gc_integration_test.cc
+++ b/third_party/blink/renderer/bindings/core/v8/script_wrappable_v8_gc_integration_test.cc
@@ -8,6 +8,7 @@
 #include "third_party/blink/renderer/bindings/core/v8/v8_gc_controller.h"
 #include "third_party/blink/renderer/core/testing/death_aware_script_wrappable.h"
 #include "third_party/blink/renderer/core/testing/gc_object_liveness_observer.h"
+#include "third_party/blink/renderer/platform/heap/heap.h"
 #include "v8/include/v8.h"
 
 namespace blink {
@@ -31,7 +32,7 @@
   GCObjectLivenessObserver<DeathAwareScriptWrappable> observer;
   {
     v8::HandleScope handle_scope(GetIsolate());
-    DeathAwareScriptWrappable* object = DeathAwareScriptWrappable::Create();
+    auto* object = MakeGarbageCollected<DeathAwareScriptWrappable>();
     observer.Observe(object);
 
     holder.Reset(GetIsolate(),
@@ -52,7 +53,7 @@
   GCObjectLivenessObserver<DeathAwareScriptWrappable> observer;
   {
     v8::HandleScope handle_scope(GetIsolate());
-    DeathAwareScriptWrappable* object = DeathAwareScriptWrappable::Create();
+    auto* object = MakeGarbageCollected<DeathAwareScriptWrappable>();
     observer.Observe(object);
 
     v8::Local<v8::Value> wrapper =
@@ -85,7 +86,7 @@
   GCObjectLivenessObserver<DeathAwareScriptWrappable> observer;
   {
     v8::HandleScope handle_scope(GetIsolate());
-    DeathAwareScriptWrappable* object = DeathAwareScriptWrappable::Create();
+    auto* object = MakeGarbageCollected<DeathAwareScriptWrappable>();
     observer.Observe(object);
 
     // Creates new V8 wrapper and associates it with global scope
@@ -109,7 +110,7 @@
   GCObjectLivenessObserver<DeathAwareScriptWrappable> observer;
   {
     v8::HandleScope handle_scope(GetIsolate());
-    DeathAwareScriptWrappable* object = DeathAwareScriptWrappable::Create();
+    auto* object = MakeGarbageCollected<DeathAwareScriptWrappable>();
     observer.Observe(object);
 
     // Creates new V8 wrapper and associates it with global scope
diff --git a/third_party/blink/renderer/bindings/core/v8/v8_wasm_response_extensions.cc b/third_party/blink/renderer/bindings/core/v8/v8_wasm_response_extensions.cc
index 70ab98f..0aff514f 100644
--- a/third_party/blink/renderer/bindings/core/v8/v8_wasm_response_extensions.cc
+++ b/third_party/blink/renderer/bindings/core/v8/v8_wasm_response_extensions.cc
@@ -359,6 +359,8 @@
       auto client = std::make_shared<WasmStreamingClient>(
           url, raw_resource->GetResponse().ResponseTime());
       streaming->SetClient(client);
+      const std::string& url_utf8 = url.Utf8();
+      streaming->SetUrl(url_utf8.c_str(), url_utf8.size());
       scoped_refptr<CachedMetadata> cached_module =
           cache_handler->GetCachedMetadata(kWasmModuleTag);
       if (cached_module) {
diff --git a/third_party/blink/renderer/bindings/modules/v8/BUILD.gn b/third_party/blink/renderer/bindings/modules/v8/BUILD.gn
index 7f20ac3..6ea1721 100644
--- a/third_party/blink/renderer/bindings/modules/v8/BUILD.gn
+++ b/third_party/blink/renderer/bindings/modules/v8/BUILD.gn
@@ -2,6 +2,7 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+import("//third_party/blink/renderer/bindings/bindings.gni")
 import("//third_party/blink/renderer/bindings/modules/v8/generated.gni")
 import("//third_party/blink/renderer/bindings/scripts/scripts.gni")
 import("//third_party/blink/renderer/modules/modules.gni")
@@ -22,13 +23,20 @@
 
 idl_compiler("generate_bindings_modules_v8_interfaces") {
   sources = modules_definition_idl_files
+  if (use_v8_bind_gen_for_dictionary) {
+    sources -= modules_dictionary_idl_files
+  }
   output_dir = bindings_modules_v8_output_dir
   output_name_suffix = ""
   target_component = "modules"
 }
 
 idl_impl("bindings_modules_impl_generated") {
-  dict_idls = modules_dictionary_idl_files
+  if (use_v8_bind_gen_for_dictionary) {
+    dict_idls = []
+  } else {
+    dict_idls = modules_dictionary_idl_files
+  }
   non_dict_outputs = bindings_modules_generated_union_type_files +
                      generated_modules_callback_function_files
   non_dict_output_dir = bindings_modules_v8_output_dir
diff --git a/third_party/blink/renderer/bindings/scripts/bind_gen/blink_v8_bridge.py b/third_party/blink/renderer/bindings/scripts/bind_gen/blink_v8_bridge.py
index 4839f92..85d59f31 100644
--- a/third_party/blink/renderer/bindings/scripts/bind_gen/blink_v8_bridge.py
+++ b/third_party/blink/renderer/bindings/scripts/bind_gen/blink_v8_bridge.py
@@ -34,7 +34,7 @@
     """
     Returns the name of V8-from/to-Blink bridge class.
     """
-    assert isinstance(idl_definition, web_idl.Interface)
+    assert isinstance(idl_definition, (web_idl.Namespace, web_idl.Interface))
 
     return name_style.class_("v8", idl_definition.identifier)
 
diff --git a/third_party/blink/renderer/bindings/scripts/bind_gen/code_node.py b/third_party/blink/renderer/bindings/scripts/bind_gen/code_node.py
index 44a254fe..2b294a2 100644
--- a/third_party/blink/renderer/bindings/scripts/bind_gen/code_node.py
+++ b/third_party/blink/renderer/bindings/scripts/bind_gen/code_node.py
@@ -781,181 +781,3 @@
 
     def is_duplicated(self):
         return self.upstream_of_scope.is_code_symbol_defined(self._symbol_node)
-
-
-class ConditionalNode(CodeNode):
-    """
-    This is the base class of code nodes that directly contain conditional
-    execution.  Not all the code nodes inside this node will be executed.
-    """
-
-
-class CaseBranchNode(ConditionalNode):
-    """
-    Represents a set of nodes that will be conditionally executed.
-
-    This node mostly follows the concept of 'cond' in Lisp, which is a chain of
-    if - else if - else if - ... - else.
-    """
-
-    def __init__(self, clause_nodes):
-        # clause_nodes = [
-        #   (conditional_node1, body_node1, likeliness1),
-        #   (conditional_node2, body_node2, likeliness2),
-        #   ...,
-        #   (None, body_nodeN, likelinessN),  # Corresponds to 'else { ... }'
-        # ]
-        assert False
-
-
-class ConditionalExitNode(ConditionalNode):
-    """
-    Represents a conditional node that always exits whenever the condition
-    meets.  It's not supposed that the body node does not exit.  Equivalent to
-
-      if (CONDITIONAL) { BODY }
-
-    where BODY ends with a return statement.
-    """
-
-    def __init__(self, cond, body, body_likeliness):
-        assert isinstance(cond, CodeNode)
-        assert isinstance(body, SymbolScopeNode)
-        assert isinstance(body_likeliness, Likeliness.Level)
-
-        gensyms = {
-            "conditional": CodeNode.gensym(),
-            "body": CodeNode.gensym(),
-        }
-        template_text = format_template(
-            """\
-if (${{{conditional}}}) {{
-  ${{{body}}}
-}}\\
-""", **gensyms)
-        template_vars = {
-            gensyms["conditional"]: cond,
-            gensyms["body"]: body,
-        }
-
-        ConditionalNode.__init__(
-            self, template_text=template_text, template_vars=template_vars)
-
-        self._cond_node = cond
-        self._body_node = body
-        self._body_node.set_likeliness(body_likeliness)
-
-
-class LikelyExitNode(ConditionalExitNode):
-    """
-    Represents a conditional exit node where it's likely that the condition
-    meets.
-    """
-
-    def __init__(self, cond, body):
-        ConditionalExitNode.__init__(
-            self, cond=cond, body=body, body_likeliness=Likeliness.LIKELY)
-
-
-class UnlikelyExitNode(ConditionalExitNode):
-    """
-    Represents a conditional exit node where it's unlikely that the condition
-    meets.
-    """
-
-    def __init__(self, cond, body):
-        ConditionalExitNode.__init__(
-            self, cond=cond, body=body, body_likeliness=Likeliness.UNLIKELY)
-
-
-class FunctionDefinitionNode(CodeNode):
-    """Represents a function definition."""
-
-    def __init__(self,
-                 name,
-                 arg_decls,
-                 return_type,
-                 member_initializer_list=None,
-                 local_vars=None,
-                 body=None,
-                 comment=None):
-        """
-        Args:
-            name: Function name node, which may include nested-name-specifier
-                (i.e. 'namespace_name::' and/or 'type_name::').
-            arg_decls: List of argument declaration nodes.
-            return_type: Return type node.
-            member_initializer_list: List of initializer nodes.
-            local_vars: List of SymbolNodes that can be used in the function
-                body.
-            body: Function body node (of type SymbolScopeNode).
-            comment: Function header comment node.
-        """
-        assert isinstance(name, CodeNode)
-        assert isinstance(arg_decls, (list, tuple))
-        assert all(isinstance(arg_decl, CodeNode) for arg_decl in arg_decls)
-        assert isinstance(return_type, CodeNode)
-        if member_initializer_list is None:
-            member_initializer_list = []
-        assert isinstance(member_initializer_list, (list, tuple))
-        assert all(
-            isinstance(initializer, CodeNode)
-            for initializer in member_initializer_list)
-        if local_vars is None:
-            local_vars = []
-        assert isinstance(local_vars, (list, tuple))
-        assert all(
-            isinstance(local_var, SymbolNode) for local_var in local_vars)
-        if body is None:
-            body = SymbolScopeNode()
-        assert isinstance(body, CodeNode)
-        if comment is None:
-            comment = LiteralNode("")
-        assert isinstance(comment, CodeNode)
-
-        gensyms = {
-            "name": CodeNode.gensym(),
-            "arg_decls": CodeNode.gensym(),
-            "return_type": CodeNode.gensym(),
-            "member_initializer_list": CodeNode.gensym(),
-            "body": CodeNode.gensym(),
-            "comment": CodeNode.gensym(),
-        }
-
-        maybe_colon = " : " if member_initializer_list else ""
-
-        template_text = format_template(
-            """\
-${{{comment}}}
-${{{return_type}}} ${{{name}}}(${{{arg_decls}}})\
-{maybe_colon}${{{member_initializer_list}}} {{
-  ${{{body}}}
-}}\\
-""",
-            maybe_colon=maybe_colon,
-            **gensyms)
-        template_vars = {
-            gensyms["name"]:
-            name,
-            gensyms["arg_decls"]:
-            ListNode(arg_decls, separator=", "),
-            gensyms["return_type"]:
-            return_type,
-            gensyms["member_initializer_list"]:
-            ListNode(member_initializer_list, separator=", "),
-            gensyms["body"]:
-            body,
-            gensyms["comment"]:
-            comment,
-        }
-
-        CodeNode.__init__(
-            self, template_text=template_text, template_vars=template_vars)
-
-        self._body_node = body
-
-        self._body_node.register_code_symbols(local_vars)
-
-    @property
-    def body(self):
-        return self._body_node
diff --git a/third_party/blink/renderer/bindings/scripts/bind_gen/code_node_test.py b/third_party/blink/renderer/bindings/scripts/bind_gen/code_node_test.py
index de94c59..bee9252 100644
--- a/third_party/blink/renderer/bindings/scripts/bind_gen/code_node_test.py
+++ b/third_party/blink/renderer/bindings/scripts/bind_gen/code_node_test.py
@@ -4,14 +4,11 @@
 
 import unittest
 
-from .code_node import FunctionDefinitionNode
-from .code_node import LikelyExitNode
-from .code_node import LiteralNode
 from .code_node import ListNode
+from .code_node import LiteralNode
 from .code_node import SymbolNode
 from .code_node import SymbolScopeNode
 from .code_node import TextNode
-from .code_node import UnlikelyExitNode
 from .codegen_utils import render_code_node
 from .mako_renderer import MakoRenderer
 
@@ -118,164 +115,6 @@
 (void)var1;
 """)
 
-    def test_symbol_definition_with_exit_branches(self):
-        root = SymbolScopeNode(separator_last="\n")
-
-        root.register_code_symbols([
-            SymbolNode("var1", "int ${var1} = 1;"),
-            SymbolNode("var2", "int ${var2} = 2;"),
-            SymbolNode("var3", "int ${var3} = 3;"),
-            SymbolNode("var4", "int ${var4} = 4;"),
-            SymbolNode("var5", "int ${var5} = 5;"),
-            SymbolNode("var6", "int ${var6} = 6;"),
-        ])
-
-        root.extend([
-            TextNode("${var1};"),
-            UnlikelyExitNode(
-                cond=TextNode("${var2}"),
-                body=SymbolScopeNode([
-                    TextNode("${var3};"),
-                    TextNode("return ${var4};"),
-                ])),
-            LikelyExitNode(
-                cond=TextNode("${var5}"),
-                body=SymbolScopeNode([
-                    TextNode("return ${var6};"),
-                ])),
-            TextNode("${var3};"),
-        ])
-
-        self.assertRenderResult(
-            root, """\
-int var1 = 1;
-var1;
-int var2 = 2;
-int var3 = 3;
-if (var2) {
-  var3;
-  int var4 = 4;
-  return var4;
-}
-int var5 = 5;
-if (var5) {
-  int var6 = 6;
-  return var6;
-}
-var3;
-""")
-
-    def test_symbol_definition_with_nested_exit_branches(self):
-        root = SymbolScopeNode(separator_last="\n")
-
-        root.register_code_symbols([
-            SymbolNode("var1", "int ${var1} = 1;"),
-            SymbolNode("var2", "int ${var2} = 2;"),
-            SymbolNode("var3", "int ${var3} = 3;"),
-            SymbolNode("var4", "int ${var4} = 4;"),
-            SymbolNode("var5", "int ${var5} = 5;"),
-            SymbolNode("var6", "int ${var6} = 6;"),
-        ])
-
-        root.extend([
-            UnlikelyExitNode(
-                cond=LiteralNode("false"),
-                body=SymbolScopeNode([
-                    UnlikelyExitNode(
-                        cond=LiteralNode("false"),
-                        body=SymbolScopeNode([
-                            TextNode("return ${var1};"),
-                        ])),
-                    LiteralNode("return;"),
-                ])),
-            LikelyExitNode(
-                cond=LiteralNode("true"),
-                body=SymbolScopeNode([
-                    LikelyExitNode(
-                        cond=LiteralNode("true"),
-                        body=SymbolScopeNode([
-                            TextNode("return ${var2};"),
-                        ])),
-                    LiteralNode("return;"),
-                ])),
-        ])
-
-        self.assertRenderResult(
-            root, """\
-if (false) {
-  if (false) {
-    int var1 = 1;
-    return var1;
-  }
-  return;
-}
-if (true) {
-  if (true) {
-    int var2 = 2;
-    return var2;
-  }
-  return;
-}
-""")
-
-    def test_function_definition_minimum(self):
-        root = SymbolScopeNode(separator_last="\n")
-        root.append(
-            FunctionDefinitionNode(
-                name=LiteralNode("blink::bindings::func"),
-                arg_decls=[],
-                return_type=LiteralNode("void")))
-
-        self.assertRenderResult(root, """\
-
-void blink::bindings::func() {
-
-}
-""")
-
-    def test_function_definition_full(self):
-        root = SymbolScopeNode(separator_last="\n")
-
-        local_vars = [
-            SymbolNode("var1", "int ${var1} = 1;"),
-            SymbolNode("var2", "int ${var2} = 2;"),
-        ]
-
-        func_body = SymbolScopeNode([
-            UnlikelyExitNode(
-                cond=TextNode("${var1}"),
-                body=SymbolScopeNode([TextNode("return ${var1};")])),
-            TextNode("return ${var2};"),
-        ])
-
-        root.append(
-            FunctionDefinitionNode(
-                name=LiteralNode("blink::bindings::func"),
-                arg_decls=[LiteralNode("int arg1"),
-                           LiteralNode("int arg2")],
-                return_type=LiteralNode("void"),
-                member_initializer_list=[
-                    LiteralNode("member1(0)"),
-                    LiteralNode("member2(\"str\")")
-                ],
-                local_vars=local_vars,
-                body=func_body,
-                comment=LiteralNode("// comment1\n// comment2")))
-
-        self.assertRenderResult(
-            root, """\
-// comment1
-// comment2
-void blink::bindings::func(int arg1, int arg2) : member1(0), member2("str") {
-  int var1 = 1;
-  if (var1) {
-    return var1;
-  }
-  int var2 = 2;
-  return var2;
-}
-""")
-
     def test_template_error_handling(self):
         renderer = MakoRenderer()
         root = SymbolScopeNode()
diff --git a/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_accumulator.py b/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_accumulator.py
index 910c4bb..7306c534 100644
--- a/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_accumulator.py
+++ b/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_accumulator.py
@@ -14,6 +14,8 @@
         self._include_headers = set()
         # Forward declarations of C++ class
         self._class_decls = set()
+        # Forward declarations of C++ struct
+        self._struct_decls = set()
 
     @property
     def include_headers(self):
@@ -42,3 +44,17 @@
     @staticmethod
     def require_class_decls(class_names):
         return lambda accumulator: accumulator.add_class_decls(class_names)
+
+    @property
+    def struct_decls(self):
+        return self._struct_decls
+
+    def add_struct_decl(self, struct_name):
+        self._struct_decls.add(struct_name)
+
+    def add_struct_decls(self, struct_names):
+        self._struct_decls.update(struct_names)
+
+    @staticmethod
+    def require_struct_decls(struct_names):
+        return lambda accumulator: accumulator.add_struct_decls(struct_names)
diff --git a/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_context.py b/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_context.py
index 7d5955f5..e98f7f8 100644
--- a/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_context.py
+++ b/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_context.py
@@ -5,6 +5,7 @@
 import copy
 
 from . import name_style
+from .codegen_format import NonRenderable
 from .path_manager import PathManager
 
 
@@ -136,13 +137,15 @@
 
         for attr in self._context_attrs.iterkeys():
             value = getattr(self, attr)
-            if value is not None:
-                bindings[attr] = value
+            if value is None:
+                value = NonRenderable()
+            bindings[attr] = value
 
         for attr in self._computational_attrs:
             value = getattr(self, attr)
-            if value is not None:
-                bindings[attr.strip("_")] = value
+            if value is None:
+                value = NonRenderable()
+            bindings[attr.strip("_")] = value
 
         return bindings
 
diff --git a/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_format.py b/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_format.py
index 3b21515..9e5bb9d 100644
--- a/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_format.py
+++ b/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_format.py
@@ -37,3 +37,22 @@
             return kwargs[key]
         else:
             return "{" + key + "}"
+
+
+class NonRenderable(object):
+    """
+    Represents a non-renderable object.
+
+    Unlike a template variable bound to None, which is a valid Python value,
+    this object raises an exception when rendered, just like an unbound template
+    variable.
+    """
+
+    def __init__(self, error_message="Undefined"):
+        self._error_message = error_message
+
+    def __bool__(self):
+        raise NameError(self._error_message)
+
+    def __str__(self):
+        raise NameError(self._error_message)
diff --git a/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py b/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py
index 2635adb..b97272a 100644
--- a/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py
+++ b/third_party/blink/renderer/bindings/scripts/bind_gen/codegen_utils.py
@@ -20,6 +20,25 @@
 """)
 
 
+def make_forward_declarations(accumulator):
+    assert isinstance(accumulator, CodeGenAccumulator)
+
+    class ForwardDeclarations(object):
+        def __init__(self, accumulator):
+            self._accumulator = accumulator
+
+        def __str__(self):
+            return "\n".join([
+                "class {};".format(class_name)
+                for class_name in sorted(self._accumulator.class_decls)
+            ] + [
+                "struct {};".format(struct_name)
+                for struct_name in sorted(self._accumulator.struct_decls)
+            ])
+
+    return LiteralNode(ForwardDeclarations(accumulator))
+
+
 def make_header_include_directives(accumulator):
     assert isinstance(accumulator, CodeGenAccumulator)
 
diff --git a/third_party/blink/renderer/bindings/scripts/bind_gen/dictionary.py b/third_party/blink/renderer/bindings/scripts/bind_gen/dictionary.py
index 9ea80b6..1cbf0ebf 100644
--- a/third_party/blink/renderer/bindings/scripts/bind_gen/dictionary.py
+++ b/third_party/blink/renderer/bindings/scripts/bind_gen/dictionary.py
@@ -20,13 +20,18 @@
 from .code_node_cxx import CxxFuncDefNode
 from .code_node_cxx import CxxIfElseNode
 from .code_node_cxx import CxxLikelyIfNode
+from .codegen_accumulator import CodeGenAccumulator
 from .codegen_context import CodeGenContext
 from .codegen_expr import expr_from_exposure
 from .codegen_format import format_template as _format
+from .codegen_utils import collect_include_headers
 from .codegen_utils import enclose_with_namespace
 from .codegen_utils import make_copyright_header
+from .codegen_utils import make_forward_declarations
+from .codegen_utils import make_header_include_directives
 from .codegen_utils import write_code_node_to_file
 from .mako_renderer import MakoRenderer
+from .path_manager import PathManager
 
 
 _DICT_MEMBER_PRESENCE_PREDICATES = {
@@ -614,11 +619,7 @@
         class_name=class_name,
         base_class_name=base_class_name)
 
-    root_node = SymbolScopeNode(separator_last="\n")
-    root_node.set_renderer(MakoRenderer())
-
     code_node = ListNode()
-
     code_node.extend([
         TextNode("// static"),
         make_get_v8_dict_member_names_def(cg_context),
@@ -638,9 +639,28 @@
             make_dict_member_set_def(cg_context.make_copy(dict_member=member)),
         ])
 
+    root_node = SymbolScopeNode(separator_last="\n")
+    root_node.set_accumulator(CodeGenAccumulator())
+    root_node.set_renderer(MakoRenderer())
+
+    # TODO(crbug.com/1034398): Use api_path() or impl_path() once we migrate
+    # IDL compiler and move generated code of dictionaries.
+    h_file_path = PathManager(dictionary).blink_path(ext="h")
+
+    root_node.accumulator.add_include_headers([
+        "third_party/blink/renderer/platform/bindings/exception_messages.h",
+        "third_party/blink/renderer/platform/bindings/exception_state.h",
+        "third_party/blink/renderer/platform/heap/visitor.h",
+        "v8/include/v8.h",
+    ])
+
     root_node.extend([
         make_copyright_header(),
         TextNode(""),
+        TextNode(_format("#include \"{}\"", h_file_path)),
+        TextNode(""),
+        make_header_include_directives(root_node.accumulator),
+        TextNode(""),
         enclose_with_namespace(code_node, name_style.namespace("blink")),
     ])
 
@@ -659,18 +679,44 @@
         class_name=class_name,
         base_class_name=base_class_name)
 
-    root_node = SymbolScopeNode(separator_last="\n")
-    root_node.set_renderer(MakoRenderer())
-
     code_node = ListNode()
     code_node.extend([
         make_dict_class_def(cg_context),
     ])
 
+    root_node = SymbolScopeNode(separator_last="\n")
+    root_node.set_accumulator(CodeGenAccumulator())
+    root_node.set_renderer(MakoRenderer())
+
+    root_node.accumulator.add_include_headers(
+        collect_include_headers(dictionary))
+    base_class_header = (
+        "third_party/blink/renderer/platform/bindings/dictionary_base.h")
+    if dictionary.inherited:
+        # TODO(crbug.com/1034398): Use api_path() or impl_path() once we
+        # migrate IDL compiler and move generated code of dictionaries.
+        base_class_header = PathManager(
+            dictionary.inherited).blink_path(ext="h")
+    root_node.accumulator.add_include_headers([
+        base_class_header,
+        "v8/include/v8.h",
+    ])
+    root_node.accumulator.add_class_decls([
+        "ExceptionState",
+        "Visitor",
+    ])
+
     root_node.extend([
         make_copyright_header(),
         TextNode(""),
-        enclose_with_namespace(code_node, name_style.namespace("blink")),
+        make_header_include_directives(root_node.accumulator),
+        TextNode(""),
+        enclose_with_namespace(
+            ListNode([
+                make_forward_declarations(root_node.accumulator),
+                TextNode(""),
+                code_node,
+            ]), name_style.namespace("blink")),
     ])
 
     write_code_node_to_file(root_node, filepath)
diff --git a/third_party/blink/renderer/bindings/scripts/bind_gen/interface.py b/third_party/blink/renderer/bindings/scripts/bind_gen/interface.py
index 863ceab..d51d4287 100644
--- a/third_party/blink/renderer/bindings/scripts/bind_gen/interface.py
+++ b/third_party/blink/renderer/bindings/scripts/bind_gen/interface.py
@@ -156,7 +156,8 @@
         # [ImplementedAs=LocalDOMWindow] instead of [ImplementedAs=DOMWindow],
         # and [CrossOrigin] properties should be implemented specifically with
         # DOMWindow class.  Then, we'll have less hacks.
-        if "CrossOrigin" in cg_context.member_like.extended_attributes:
+        if (not cg_context.member_like or
+                "CrossOrigin" in cg_context.member_like.extended_attributes):
             text = ("DOMWindow* ${blink_receiver} = "
                     "${class_name}::ToBlinkUnsafe(${v8_receiver});")
         else:
@@ -545,7 +546,7 @@
     ])
     return SequenceNode([
         T("// [CheckSecurity=ReturnValue]"),
-        UnlikelyExitNode(cond=cond, body=body),
+        CxxUnlikelyIfNode(cond=cond, body=body),
     ])
 
 
diff --git a/third_party/blink/renderer/bindings/scripts/idl_definitions.py b/third_party/blink/renderer/bindings/scripts/idl_definitions.py
index 0888215..34aab20 100644
--- a/third_party/blink/renderer/bindings/scripts/idl_definitions.py
+++ b/third_party/blink/renderer/bindings/scripts/idl_definitions.py
@@ -320,6 +320,7 @@
         # for constructor code generation but we will use a new code generator
         # soon so this kind of workaround should be fine.
         constructor_operations = []
+        custom_constructor_operations = []
         constructor_operations_extended_attributes = {}
 
         def is_blacklisted_attribute_type(idl_type):
@@ -355,17 +356,19 @@
                         self.has_named_property_getter = True
                 self.operations.append(op)
             elif child_class == 'Constructor':
-                constructor, extended_attributes = (
-                    constructor_operation_from_node(child))
-                # Check extended attributes consistency when we previously
-                # handle constructor operations.
-                if constructor_operations:
-                    check_constructor_operations_extended_attributes(
-                        constructor_operations_extended_attributes,
-                        extended_attributes)
-                constructor_operations.append(constructor)
-                constructor_operations_extended_attributes.update(
-                    extended_attributes)
+                operation = constructor_operation_from_node(child)
+                if operation.is_custom:
+                    custom_constructor_operations.append(operation.constructor)
+                else:
+                    # Check extended attributes consistency when we previously
+                    # handle constructor operations.
+                    if constructor_operations:
+                        check_constructor_operations_extended_attributes(
+                            constructor_operations_extended_attributes,
+                            operation.extended_attributes)
+                    constructor_operations.append(operation.constructor)
+                    constructor_operations_extended_attributes.update(
+                        operation.extended_attributes)
             elif child_class == 'Inherit':
                 self.parent = child.GetName()
             elif child_class == 'Stringifier':
@@ -402,8 +405,8 @@
         if 'Unforgeable' in self.extended_attributes:
             raise ValueError('[Unforgeable] cannot appear on interfaces.')
 
-        if constructor_operations:
-            if self.constructors:
+        if constructor_operations or custom_constructor_operations:
+            if self.constructors or self.custom_constructors:
                 raise ValueError('Detected mixed [Constructor] and consructor '
                                  'operations. Do not use both in a single '
                                  'interface.')
@@ -417,6 +420,7 @@
                                  'operations. Do not use both in a single '
                                  'interface')
             self.constructors = constructor_operations
+            self.custom_constructors = custom_constructor_operations
             self.extended_attributes.update(extended_attributes)
 
 
@@ -838,8 +842,7 @@
     # overloading, and thus are stored in temporary lists.
     # However, Named Constructors cannot be overloaded, and thus do not have
     # a list.
-    # FIXME: move Constructor logic into separate function, instead of modifying
-    #        extended attributes in-place.
+    # TODO(bashi): Remove |constructors| and |custom_constructors|.
     constructors = []
     custom_constructors = []
     extended_attributes = {}
@@ -858,13 +861,11 @@
         child = child_node(extended_attribute_node)
         child_class = child and child.GetClass()
         if name == 'Constructor':
-            if child_class and child_class != 'Arguments':
-                raise ValueError('Constructor only supports Arguments as child, but has child of class: %s' % child_class)
-            constructors.append(child)
+            raise ValueError('[Constructor] is deprecated. Use constructor '
+                             'operations')
         elif name == 'CustomConstructor':
-            if child_class and child_class != 'Arguments':
-                raise ValueError('[CustomConstructor] only supports Arguments as child, but has child of class: %s' % child_class)
-            custom_constructors.append(child)
+            raise ValueError('[CustomConstructor] is deprecated. Use '
+                             'constructor operations with [Custom]')
         elif name == 'NamedConstructor':
             if child_class and child_class != 'Call':
                 raise ValueError('[NamedConstructor] only supports Call as child, but has child of class: %s' % child_class)
@@ -906,6 +907,8 @@
     Auxiliary function for IdlInterface.__init__.
     """
 
+    # TODO(bashi): Remove 'Constructors' and 'CustomConstructors'.
+
     constructor_list = extended_attributes.get('Constructors', [])
     constructors = [
         IdlOperation.constructor_from_arguments_node('Constructor', arguments_node)
@@ -932,10 +935,19 @@
     return constructors, custom_constructors
 
 
+class ConstructorOperation(object):
+    """Represents a constructor operation. This is a tentative object used to
+    create constructors in IdlInterface.
+    """
+
+    def __init__(self, constructor, extended_attributes, is_custom):
+        self.constructor = constructor
+        self.extended_attributes = extended_attributes
+        self.is_custom = is_custom
+
+
 def constructor_operation_from_node(node):
-    """Creates a constructor from the given |node|. Returns a tuple of
-    (constructor, extended_attributes) of which extended_attributes are
-    specified on |node|.
+    """Creates a ConstructorOperation from the given |node|.
     """
 
     arguments_node = None
@@ -953,9 +965,21 @@
     if not arguments_node:
         raise ValueError('Expected Arguments node for constructor operation')
 
-    constructor = IdlOperation.constructor_from_arguments_node(
-        'Constructor', arguments_node)
-    return (constructor, extended_attributes)
+    if 'Custom' in extended_attributes:
+        if extended_attributes['Custom']:
+            raise ValueError('[Custom] should not have a value on constructor '
+                             'operations')
+        del extended_attributes['Custom']
+        constructor = IdlOperation.constructor_from_arguments_node(
+            'CustomConstructor', arguments_node)
+        return ConstructorOperation(
+            constructor, extended_attributes, is_custom=True)
+    else:
+        constructor = IdlOperation.constructor_from_arguments_node(
+            'Constructor', arguments_node)
+        return ConstructorOperation(
+            constructor, extended_attributes, is_custom=False)
+
 
 
 def check_constructor_operations_extended_attributes(current_attrs, new_attrs):
@@ -975,7 +999,6 @@
     extended attributes for an interface definition (e.g. [ConstructorCallWith])
     """
 
-    # TODO(bashi): Convert [Custom] to [CustomConstructor].
     converted = {}
     for name, value in extended_attributes.items():
         if name == "CallWith":
diff --git a/third_party/blink/renderer/bindings/scripts/web_idl/idl_compiler.py b/third_party/blink/renderer/bindings/scripts/web_idl/idl_compiler.py
index 847ba334..4fc356e 100644
--- a/third_party/blink/renderer/bindings/scripts/web_idl/idl_compiler.py
+++ b/third_party/blink/renderer/bindings/scripts/web_idl/idl_compiler.py
@@ -164,8 +164,8 @@
             if not hasattr(ir, 'iter_all_members'):
                 return
             if (only_to_members_of_partial_or_mixin
-                    and ((hasattr(ir, 'is_partial') and ir.is_partial) or
-                         (hasattr(ir, 'is_mixin') and ir.is_mixin))):
+                    and not ((hasattr(ir, 'is_partial') and ir.is_partial) or
+                             (hasattr(ir, 'is_mixin') and ir.is_mixin))):
                 return
             for member in ir.iter_all_members():
                 apply_to(member)
diff --git a/third_party/blink/renderer/bindings/tests/idls/core/test_interface_2.idl b/third_party/blink/renderer/bindings/tests/idls/core/test_interface_2.idl
index 210d569..d51574ac 100644
--- a/third_party/blink/renderer/bindings/tests/idls/core/test_interface_2.idl
+++ b/third_party/blink/renderer/bindings/tests/idls/core/test_interface_2.idl
@@ -35,11 +35,11 @@
 
 [
     ActiveScriptWrappable, // Covered by [ActiveScriptWrappable]
-    Constructor,
     // Note that Exposed(Arguments) has no effect on bindings-tests. It is
     // processed in generate_global_constructors.py.
     Exposed(Window FeatureName) // Conflicts with Exposed=(Window,Worker)
 ] interface TestInterface2 {
+    constructor();
     // This interface has only runtime enabled constants.
     [RuntimeEnabled=RuntimeFeature] const unsigned short CONST_VALUE_1 = 1;
 
diff --git a/third_party/blink/renderer/bindings/tests/idls/core/test_interface_constructor.idl b/third_party/blink/renderer/bindings/tests/idls/core/test_interface_constructor.idl
index ff6a42b..59607bf3 100644
--- a/third_party/blink/renderer/bindings/tests/idls/core/test_interface_constructor.idl
+++ b/third_party/blink/renderer/bindings/tests/idls/core/test_interface_constructor.idl
@@ -30,8 +30,12 @@
 
 // Note that length == 0 and overloaded; need other tests for other cases.
 [
-    Constructor,
-    Constructor(
+    MeasureAs=TestFeature
+] interface TestInterfaceConstructor {
+    [CallWith=(ScriptState,ExecutionContext,Document), RaisesException]
+    constructor();
+    [CallWith=(ScriptState,ExecutionContext,Document), RaisesException]
+    constructor(
         double doubleArg,
         DOMString stringArg,
         TestInterfaceEmpty testInterfaceEmptyArg,
@@ -41,12 +45,9 @@
         sequence<(long or TestDictionary)> sequenceLongOrTestDictionaryArg,
         optional USVString? optionalUSVStringArg,
         optional Dictionary optionalDictionaryArg,
-        [DefaultValue=Undefined] optional TestInterfaceEmpty optionalTestInterfaceEmptyArg),
-    Constructor(DOMString arg, optional DOMString optArg),
-    Constructor(DOMString arg, DOMString arg2, DOMString arg3),
-    NamedConstructor=Audio(DOMString arg, optional DOMString optArg),
-    ConstructorCallWith=(ScriptState,ExecutionContext,Document),
-    MeasureAs=TestFeature,
-    RaisesException=Constructor
-] interface TestInterfaceConstructor {
+        [DefaultValue=Undefined] optional TestInterfaceEmpty optionalTestInterfaceEmptyArg);
+    [CallWith=(ScriptState,ExecutionContext,Document), RaisesException]
+    constructor(DOMString arg, optional DOMString optArg);
+    [CallWith=(ScriptState,ExecutionContext,Document), RaisesException]
+    constructor(DOMString arg, DOMString arg2, DOMString arg3);
 };
diff --git a/third_party/blink/renderer/bindings/tests/idls/core/test_interface_constructor_2.idl b/third_party/blink/renderer/bindings/tests/idls/core/test_interface_constructor_2.idl
index 92ff6ff..74439b3 100644
--- a/third_party/blink/renderer/bindings/tests/idls/core/test_interface_constructor_2.idl
+++ b/third_party/blink/renderer/bindings/tests/idls/core/test_interface_constructor_2.idl
@@ -36,17 +36,16 @@
 // Also includes some [DefaultValue] arguments (instead of in
 // TestInterfaceConstructor.idl), otherwise overload resolution check string is
 // extremely long and triggers a lint warning (line length).
-[
+interface TestInterfaceConstructor2 {
     // 2 constructors with same type length, to test overload resolution
-    Constructor(DOMString stringArg),
-    Constructor(Dictionary dictionaryArg),
-    Constructor(sequence<sequence<DOMString>> stringSequenceSequenceArg),
-    Constructor(
+    constructor(DOMString stringArg);
+    constructor(Dictionary dictionaryArg);
+    constructor(sequence<sequence<DOMString>> stringSequenceSequenceArg);
+    constructor(
         TestInterfaceEmpty testInterfaceEmptyArg,
         long longArg,
         [DefaultValue=Undefined] optional DOMString defaultUndefinedOptionalStringArg,
         optional DOMString defaultNullStringOptionalStringArg = null,
         [DefaultValue=Undefined] optional Dictionary defaultUndefinedOptionalDictionaryArg,
-        optional DOMString optionalStringArg)
-] interface TestInterfaceConstructor2 {
+        optional DOMString optionalStringArg);
 };
diff --git a/third_party/blink/renderer/bindings/tests/idls/core/test_interface_constructor_3.idl b/third_party/blink/renderer/bindings/tests/idls/core/test_interface_constructor_3.idl
index 00d23be2..9c2a8cf 100644
--- a/third_party/blink/renderer/bindings/tests/idls/core/test_interface_constructor_3.idl
+++ b/third_party/blink/renderer/bindings/tests/idls/core/test_interface_constructor_3.idl
@@ -29,7 +29,6 @@
  */
 
 // Test for length > 0, non-overloaded constructor.
-[
-    Constructor(DOMString stringArg)
-] interface TestInterfaceConstructor3 {
+interface TestInterfaceConstructor3 {
+    constructor(DOMString stringArg);
 };
diff --git a/third_party/blink/renderer/bindings/tests/idls/core/test_interface_constructor_4.idl b/third_party/blink/renderer/bindings/tests/idls/core/test_interface_constructor_4.idl
index 6213e4e..ca78e24d 100644
--- a/third_party/blink/renderer/bindings/tests/idls/core/test_interface_constructor_4.idl
+++ b/third_party/blink/renderer/bindings/tests/idls/core/test_interface_constructor_4.idl
@@ -7,4 +7,5 @@
 interface TestInterfaceConstructor4 {
     [CallWith=ScriptState, RaisesException] constructor(TestInterfaceConstructor4 testInterface4Arg);
     [CallWith=ScriptState, RaisesException] constructor(USVString usvStringArg);
+    [Custom] constructor(double doubleArg);
 };
diff --git a/third_party/blink/renderer/bindings/tests/idls/core/test_interface_custom_constructor.idl b/third_party/blink/renderer/bindings/tests/idls/core/test_interface_custom_constructor.idl
index 35fccd7..f1197ea 100644
--- a/third_party/blink/renderer/bindings/tests/idls/core/test_interface_custom_constructor.idl
+++ b/third_party/blink/renderer/bindings/tests/idls/core/test_interface_custom_constructor.idl
@@ -28,9 +28,8 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[
-    CustomConstructor,
-    CustomConstructor(TestInterfaceEmpty testInterfaceEmptyArg),
-    CustomConstructor(double doubleArg, optional double optionalDoubleArg)
-] interface TestInterfaceCustomConstructor {
+interface TestInterfaceCustomConstructor {
+    [Custom] constructor();
+    [Custom] constructor(TestInterfaceEmpty testInterfaceEmptyArg);
+    [Custom] constructor(double doubleArg, optional double optionalDoubleArg);
 };
diff --git a/third_party/blink/renderer/bindings/tests/idls/core/test_interface_event_init_constructor.idl b/third_party/blink/renderer/bindings/tests/idls/core/test_interface_event_init_constructor.idl
index 0e307908..75ba61d9 100644
--- a/third_party/blink/renderer/bindings/tests/idls/core/test_interface_event_init_constructor.idl
+++ b/third_party/blink/renderer/bindings/tests/idls/core/test_interface_event_init_constructor.idl
@@ -2,8 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-[
-    Constructor(DOMString type, TestInterfaceEventInit testInterfaceEventInit)
-] interface TestInterfaceEventInitConstructor : Event {
+interface TestInterfaceEventInitConstructor : Event {
+    constructor(DOMString type, TestInterfaceEventInit testInterfaceEventInit);
     readonly attribute DOMString readonlyStringAttribute;
 };
diff --git a/third_party/blink/renderer/bindings/tests/idls/core/test_node.idl b/third_party/blink/renderer/bindings/tests/idls/core/test_node.idl
index aa57fb1..a8f5ff5 100644
--- a/third_party/blink/renderer/bindings/tests/idls/core/test_node.idl
+++ b/third_party/blink/renderer/bindings/tests/idls/core/test_node.idl
@@ -18,9 +18,8 @@
  * Boston, MA 02110-1301, USA.
  */
 
-[
-    Constructor
-] interface TestNode : Node {
+interface TestNode : Node {
+    constructor();
     // These attributes are needed to test [PutForwards] in TestObject.idl.
     attribute DOMString href;
     [RaisesException=Setter] attribute DOMString hrefThrows;
diff --git a/third_party/blink/renderer/bindings/tests/idls/core/test_typedefs.idl b/third_party/blink/renderer/bindings/tests/idls/core/test_typedefs.idl
index 58827ad..2ee5df9 100644
--- a/third_party/blink/renderer/bindings/tests/idls/core/test_typedefs.idl
+++ b/third_party/blink/renderer/bindings/tests/idls/core/test_typedefs.idl
@@ -50,9 +50,8 @@
 typedef (Node or (sequence<long> or Event) or (XMLHttpRequest or DOMString)? or record<DOMString, (ByteString or NodeList)>) NestedUnionType;
 typedef (ULongLong or (BooleanType or TestCallbackInterfaceType)) UnionWithTypedef;
 
-[
-    Constructor(String stringArg)
-] interface TestTypedefs {
+interface TestTypedefs {
+    constructor(String stringArg);
     attribute ULongLong uLongLongAttribute;
     attribute LongWithClamp longWithClampAttribute;
     attribute T tAttribute;
diff --git a/third_party/blink/renderer/bindings/tests/idls/core/test_variadic_constructor_arguments.idl b/third_party/blink/renderer/bindings/tests/idls/core/test_variadic_constructor_arguments.idl
index f1163631..cda75ce 100644
--- a/third_party/blink/renderer/bindings/tests/idls/core/test_variadic_constructor_arguments.idl
+++ b/third_party/blink/renderer/bindings/tests/idls/core/test_variadic_constructor_arguments.idl
@@ -5,8 +5,6 @@
 // Bug 776278: Constructors without overloads were wrongly requiring variadic
 // arguments to be present.
 
-[
-    Constructor(double... args)
-]
 interface TestVariadicConstructorArguments {
+    constructor(double... args);
 };
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor.cc
index 89d035c2..d4a8f22 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor.cc
@@ -26,8 +26,6 @@
 #include "third_party/blink/renderer/platform/bindings/exception_messages.h"
 #include "third_party/blink/renderer/platform/bindings/exception_state.h"
 #include "third_party/blink/renderer/platform/bindings/v8_object_constructor.h"
-#include "third_party/blink/renderer/platform/bindings/v8_per_context_data.h"
-#include "third_party/blink/renderer/platform/bindings/v8_private_property.h"
 #include "third_party/blink/renderer/platform/instrumentation/use_counter.h"
 #include "third_party/blink/renderer/platform/scheduler/public/cooperative_scheduling_manager.h"
 #include "third_party/blink/renderer/platform/wtf/get_ptr.h"
@@ -365,154 +363,6 @@
 
 }  // namespace test_interface_constructor_v8_internal
 
-// Suppress warning: global constructors, because struct WrapperTypeInfo is trivial
-// and does not depend on another global objects.
-#if defined(COMPONENT_BUILD) && defined(WIN32) && defined(__clang__)
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wglobal-constructors"
-#endif
-const WrapperTypeInfo v8_test_interface_constructor_constructor_wrapper_type_info = {
-    gin::kEmbedderBlink,
-    V8TestInterfaceConstructorConstructor::DomTemplate,
-    nullptr,
-    "TestInterfaceConstructor",
-    nullptr,
-    WrapperTypeInfo::kWrapperTypeObjectPrototype,
-    WrapperTypeInfo::kObjectClassId,
-    WrapperTypeInfo::kNotInheritFromActiveScriptWrappable,
-};
-#if defined(COMPONENT_BUILD) && defined(WIN32) && defined(__clang__)
-#pragma clang diagnostic pop
-#endif
-
-static void V8TestInterfaceConstructorConstructorCallback(const v8::FunctionCallbackInfo<v8::Value>& info) {
-  RUNTIME_CALL_TIMER_SCOPE_DISABLED_BY_DEFAULT(info.GetIsolate(), "Blink_TestInterfaceConstructor_ConstructorCallback");
-
-  if (!info.IsConstructCall()) {
-    V8ThrowException::ThrowTypeError(info.GetIsolate(), ExceptionMessages::ConstructorNotCallableAsFunction("Audio"));
-    return;
-  }
-
-  if (ConstructorMode::Current(info.GetIsolate()) == ConstructorMode::kWrapExistingObject) {
-    V8SetReturnValue(info, info.Holder());
-    return;
-  }
-
-  ExceptionState exception_state(info.GetIsolate(), ExceptionState::kConstructionContext, "TestInterfaceConstructor");
-  ScriptState* script_state = ScriptState::From(
-      info.NewTarget().As<v8::Object>()->CreationContext());
-
-  if (UNLIKELY(info.Length() < 1)) {
-    exception_state.ThrowTypeError(ExceptionMessages::NotEnoughArguments(1, info.Length()));
-    return;
-  }
-
-  V8StringResource<> arg;
-  V8StringResource<> opt_arg;
-  int num_args_passed = info.Length();
-  while (num_args_passed > 0) {
-    if (!info[num_args_passed - 1]->IsUndefined())
-      break;
-    --num_args_passed;
-  }
-  arg = info[0];
-  if (!arg.Prepare())
-    return;
-
-  if (UNLIKELY(num_args_passed <= 1)) {
-    ExecutionContext* execution_context = ToExecutionContext(
-        info.NewTarget().As<v8::Object>()->CreationContext());
-    Document& document = *To<Document>(ToExecutionContext(
-        info.NewTarget().As<v8::Object>()->CreationContext()));
-    TestInterfaceConstructor* impl = TestInterfaceConstructor::CreateForJSConstructor(script_state, execution_context, document, arg, exception_state);
-    if (exception_state.HadException()) {
-      return;
-    }
-    v8::Local<v8::Object> wrapper = info.Holder();
-    wrapper = impl->AssociateWithWrapper(info.GetIsolate(), V8TestInterfaceConstructorConstructor::GetWrapperTypeInfo(), wrapper);
-    V8SetReturnValue(info, wrapper);
-    return;
-  }
-  opt_arg = info[1];
-  if (!opt_arg.Prepare())
-    return;
-
-  ExecutionContext* execution_context = ToExecutionContext(
-      info.NewTarget().As<v8::Object>()->CreationContext());
-  Document& document = *To<Document>(ToExecutionContext(
-      info.NewTarget().As<v8::Object>()->CreationContext()));
-  TestInterfaceConstructor* impl = TestInterfaceConstructor::CreateForJSConstructor(script_state, execution_context, document, arg, opt_arg, exception_state);
-  if (exception_state.HadException()) {
-    return;
-  }
-  v8::Local<v8::Object> wrapper = info.Holder();
-  wrapper = impl->AssociateWithWrapper(info.GetIsolate(), V8TestInterfaceConstructorConstructor::GetWrapperTypeInfo(), wrapper);
-  V8SetReturnValue(info, wrapper);
-}
-
-v8::Local<v8::FunctionTemplate> V8TestInterfaceConstructorConstructor::DomTemplate(
-    v8::Isolate* isolate, const DOMWrapperWorld& world) {
-  static int dom_template_key; // This address is used for a key to look up the dom template.
-  V8PerIsolateData* data = V8PerIsolateData::From(isolate);
-  v8::Local<v8::FunctionTemplate> result =
-      data->FindInterfaceTemplate(world, &dom_template_key);
-  if (!result.IsEmpty())
-    return result;
-
-  result = v8::FunctionTemplate::New(isolate, V8TestInterfaceConstructorConstructorCallback);
-  v8::Local<v8::ObjectTemplate> instance_template = result->InstanceTemplate();
-  instance_template->SetInternalFieldCount(V8TestInterfaceConstructor::kInternalFieldCount);
-  result->SetClassName(V8AtomicString(isolate, "Audio"));
-  result->Inherit(V8TestInterfaceConstructor::DomTemplate(isolate, world));
-  data->SetInterfaceTemplate(world, &dom_template_key, result);
-  return result;
-}
-
-void V8TestInterfaceConstructorConstructor::NamedConstructorAttributeGetter(
-    v8::Local<v8::Name> property_name,
-    const v8::PropertyCallbackInfo<v8::Value>& info) {
-  v8::Local<v8::Context> creationContext = info.Holder()->CreationContext();
-  V8PerContextData* per_context_data = V8PerContextData::From(creationContext);
-  if (!per_context_data) {
-    // TODO(yukishiino): Return a valid named constructor even after the context is detached
-    return;
-  }
-
-  v8::Local<v8::Function> named_constructor =
-      per_context_data->ConstructorForType(V8TestInterfaceConstructorConstructor::GetWrapperTypeInfo());
-
-  // Set the prototype of named constructors to the regular constructor.
-  static const V8PrivateProperty::SymbolKey kPrivatePropertyInitialized;
-  auto private_property =
-      V8PrivateProperty::GetSymbol(
-          info.GetIsolate(), kPrivatePropertyInitialized);
-  v8::Local<v8::Context> current_context = info.GetIsolate()->GetCurrentContext();
-  v8::Local<v8::Value> private_value;
-
-  if (!private_property.GetOrUndefined(named_constructor).ToLocal(&private_value) ||
-      private_value->IsUndefined()) {
-    v8::Local<v8::Function> interface =
-        per_context_data->ConstructorForType(V8TestInterfaceConstructor::GetWrapperTypeInfo());
-    v8::Local<v8::Value> interface_prototype =
-        interface->Get(current_context, V8AtomicString(info.GetIsolate(), "prototype"))
-        .ToLocalChecked();
-    // https://heycam.github.io/webidl/#named-constructors
-    // 8. Perform ! DefinePropertyOrThrow(F, "prototype",
-    //        PropertyDescriptor{[[Value]]: proto, [[Writable]]: false,
-    //                           [[Enumerable]]: false,
-    //                           [Configurable]]: false}).
-    const v8::PropertyAttribute prototype_attributes =
-        static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontEnum | v8::DontDelete);
-    bool result = named_constructor->DefineOwnProperty(
-        current_context, V8AtomicString(info.GetIsolate(), "prototype"),
-        interface_prototype, prototype_attributes).ToChecked();
-    CHECK(result);
-    private_property.Set(named_constructor, v8::True(info.GetIsolate()));
-  }
-
-  V8SetReturnValue(info, named_constructor);
-}
-
 static void InstallV8TestInterfaceConstructorTemplate(
     v8::Isolate* isolate,
     const DOMWrapperWorld& world,
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor.h
index 979ebe5..f27bfb2 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor.h
@@ -25,18 +25,6 @@
 
 namespace blink {
 
-extern const WrapperTypeInfo v8_test_interface_constructor_constructor_wrapper_type_info;
-
-class V8TestInterfaceConstructorConstructor {
-  STATIC_ONLY(V8TestInterfaceConstructorConstructor);
- public:
-  static v8::Local<v8::FunctionTemplate> DomTemplate(v8::Isolate*, const DOMWrapperWorld&);
-  static void NamedConstructorAttributeGetter(v8::Local<v8::Name> property_name, const v8::PropertyCallbackInfo<v8::Value>& info);
-  static constexpr const WrapperTypeInfo* GetWrapperTypeInfo() {
-    return &v8_test_interface_constructor_constructor_wrapper_type_info;
-  }
-};
-
 CORE_EXPORT extern const WrapperTypeInfo v8_test_interface_constructor_wrapper_type_info;
 
 class V8TestInterfaceConstructor {
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_4.cc b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_4.cc
index fb79ac6..cac9fddb 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_4.cc
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_4.cc
@@ -146,7 +146,7 @@
     return;
   }
 
-  test_interface_constructor_4_v8_internal::Constructor(info);
+  V8TestInterfaceConstructor4::ConstructorCustom(info);
 }
 
 }  // namespace test_interface_constructor_4_v8_internal
diff --git a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_4.h b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_4.h
index 2cb11fcc..3157c9f 100644
--- a/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_4.h
+++ b/third_party/blink/renderer/bindings/tests/results/core/v8_test_interface_constructor_4.h
@@ -41,6 +41,7 @@
     return &v8_test_interface_constructor_4_wrapper_type_info;
   }
 
+  static void ConstructorCustom(const v8::FunctionCallbackInfo<v8::Value>&);
   static constexpr int kInternalFieldCount = kV8DefaultWrapperInternalFieldCount;
 
   // Callback functions
diff --git a/third_party/blink/renderer/build/scripts/rule_bison.py b/third_party/blink/renderer/build/scripts/rule_bison.py
index 1e54bd4..b623516 100755
--- a/third_party/blink/renderer/build/scripts/rule_bison.py
+++ b/third_party/blink/renderer/build/scripts/rule_bison.py
@@ -33,8 +33,8 @@
 # found in the LICENSE file.
 
 # usage: rule_bison.py INPUT_FILE OUTPUT_DIR BISON_EXE
-# INPUT_FILE is a path to either XPathGrammar.y.
-# OUTPUT_DIR is where the bison-generated .cpp and .h files should be placed.
+# INPUT_FILE is a path to either xpath_grammar.y.
+# OUTPUT_DIR is where the bison-generated .cc and .h files should be placed.
 
 import errno
 import os
@@ -44,79 +44,72 @@
 
 from blinkbuild.name_style_converter import NameStyleConverter
 
-assert len(sys.argv) == 4 or len(sys.argv) == 5
 
-inputFile = sys.argv[1]
-outputDir = sys.argv[2]
-bisonExe = sys.argv[3]
-
-pathToBison = os.path.split(bisonExe)[0]
-if pathToBison:
-    # Make sure this path is in the path so that it can find its auxiliary
-    # binaries (in particular, m4). To avoid other 'm4's being found, insert
-    # at head, rather than tail.
-    os.environ['PATH'] = pathToBison + os.pathsep + os.environ['PATH']
-
-inputName = os.path.basename(inputFile)
-assert inputName == 'xpath_grammar.y'
-prefix = {'xpath_grammar.y': 'xpathyy'}[inputName]
-
-(inputRoot, inputExt) = os.path.splitext(inputName)
-newInputRoot = inputRoot + '_generated'
-
-# The generated .h will be in a different location depending on the bison
-# version.
-outputHTries = [
-    os.path.join(outputDir, newInputRoot + '.cpp.h'),
-    os.path.join(outputDir, newInputRoot + '.hpp'),
-    os.path.join(outputDir, newInputRoot + '.hh'),
-]
-
-for outputHTry in outputHTries:
-    try:
-        os.unlink(outputHTry)
-    except OSError, e:
-        if e.errno != errno.ENOENT:
-            raise
-
-outputCpp = os.path.join(outputDir, newInputRoot + '.cc')
-
-returnCode = subprocess.call([bisonExe, '-d', '-p', prefix, inputFile, '-o', outputCpp])
-assert returnCode == 0
-
-# Find the name that bison used for the generated header file.
-outputHTmp = None
-for outputHTry in outputHTries:
-    try:
-        os.stat(outputHTry)
-        outputHTmp = outputHTry
-        break
-    except OSError, e:
-        if e.errno != errno.ENOENT:
-            raise
-
-assert outputHTmp != None
-
-
-def modifyFile(path, prefixLines, suffixLines):
-    prefixLines = map(lambda s: s + '\n', prefixLines)
-    suffixLines = map(lambda s: s + '\n', suffixLines)
+def modify_file(path, prefix_lines, suffix_lines, replace_list=[]):
+    prefix_lines = map(lambda s: s + '\n', prefix_lines)
+    suffix_lines = map(lambda s: s + '\n', suffix_lines)
     with open(path, 'r') as f:
-        oldLines = f.readlines()
-    newLines = prefixLines + oldLines + suffixLines
+        old_lines = f.readlines()
+    for i in range(len(old_lines)):
+        for src, dest in replace_list:
+            old_lines[i] = old_lines[i].replace(src, dest)
+    new_lines = prefix_lines + old_lines + suffix_lines
     with open(path, 'w') as f:
-        f.writelines(newLines)
+        f.writelines(new_lines)
 
-# Rewrite the generated header with #include guards.
-kClangFormatDisableLine = "// clang-format off"
-outputH = os.path.join(outputDir, newInputRoot + '.h')
-headerGuard = NameStyleConverter(outputH).to_header_guard()
-modifyFile(outputHTmp,
-           [kClangFormatDisableLine,
-            '#ifndef %s' % headerGuard,
-            '#define %s' % headerGuard,
-            ], ['#endif  // %s' % headerGuard]
-           )
-os.rename(outputHTmp, outputH)
 
-modifyFile(outputCpp, [kClangFormatDisableLine], [])
+def main():
+    assert len(sys.argv) == 4
+
+    input_file = sys.argv[1]
+    output_dir = sys.argv[2]
+    bison_exe = sys.argv[3]
+
+    path_to_bison = os.path.split(bison_exe)[0]
+    if path_to_bison:
+        # Make sure this path is in the path so that it can find its auxiliary
+        # binaries (in particular, m4). To avoid other 'm4's being found, insert
+        # at head, rather than tail.
+        os.environ['PATH'] = path_to_bison + os.pathsep + os.environ['PATH']
+
+    input_name = os.path.basename(input_file)
+    assert input_name == 'xpath_grammar.y'
+    prefix = {'xpath_grammar.y': 'xpathyy'}[input_name]
+
+    # Output name without directory and extension.
+    output_basename = os.path.splitext(input_name)[0] + '_generated'
+
+    output_cc = os.path.join(output_dir, output_basename + '.cc')
+    BISON_HEADER_EXT = '.hh'
+    original_output_h = os.path.join(output_dir,
+                                     output_basename + BISON_HEADER_EXT)
+
+    return_code = subprocess.call([bison_exe, '-d', '-p', prefix, input_file,
+                                   '-o', output_cc])
+    assert return_code == 0
+    # If the file doesn't exist, this raise an OSError.
+    os.stat(original_output_h)
+
+    # The generated files contain references to the original "foo.hh" for
+    # #include and #line. We replace them with "foo.h".
+    common_replace_list = [(output_basename + BISON_HEADER_EXT,
+                            output_basename + '.h')]
+
+    # Rewrite the generated header with #include guards.
+    CLANG_FORMAT_DISABLE_LINE = "// clang-format off"
+    output_h = os.path.join(output_dir, output_basename + '.h')
+    header_guard = NameStyleConverter(output_h).to_header_guard()
+    modify_file(original_output_h,
+                [CLANG_FORMAT_DISABLE_LINE,
+                 '#ifndef %s' % header_guard,
+                 '#define %s' % header_guard],
+                ['#endif  // %s' % header_guard],
+                replace_list=common_replace_list)
+    os.rename(original_output_h, output_h)
+
+    modify_file(output_cc, [CLANG_FORMAT_DISABLE_LINE], [],
+                replace_list=common_replace_list)
+
+
+if __name__ == '__main__':
+    main()
diff --git a/third_party/blink/renderer/build/scripts/scripts.gni b/third_party/blink/renderer/build/scripts/scripts.gni
index a864153..06e2920 100644
--- a/third_party/blink/renderer/build/scripts/scripts.gni
+++ b/third_party/blink/renderer/build/scripts/scripts.gni
@@ -82,8 +82,8 @@
 _blink_gen_dir = "$root_gen_dir/third_party/blink/renderer"
 
 make_core_generated_deps = [
-  "//third_party/blink/renderer/core:generated_testing_idls",
   "//third_party/blink/renderer/core:core_event_interfaces",
+  "//third_party/blink/renderer/core:generated_testing_idls",
 ]
 
 # A wrapper for python scripts. This adds the following paths to PYTHONPATH,
diff --git a/third_party/blink/renderer/core/BUILD.gn b/third_party/blink/renderer/core/BUILD.gn
index fe9b069..99c9377a 100644
--- a/third_party/blink/renderer/core/BUILD.gn
+++ b/third_party/blink/renderer/core/BUILD.gn
@@ -948,13 +948,14 @@
 # target.
 targets_generating_sources = [
   ":make_core_generated_atrule_names",
-  ":make_core_generated_css_primitive_value_unit_trie",
-  ":make_core_generated_computed_style_initial_values",
   ":make_core_generated_computed_style_base",
-  ":make_core_generated_css_subclasses",
-  ":make_core_generated_css_property_names",
+  ":make_core_generated_computed_style_initial_values",
+  ":make_core_generated_css_primitive_value_unit_trie",
   ":make_core_generated_css_property_instances",
+  ":make_core_generated_css_property_names",
+  ":make_core_generated_css_subclasses",
   ":make_core_generated_css_value_id_mappings",
+  ":make_core_generated_css_value_keywords",
   ":make_core_generated_cssom_types",
   ":make_core_generated_event_factory",
   ":make_core_generated_event_names",
@@ -963,26 +964,25 @@
   ":make_core_generated_feature_policy_helper",
   ":make_core_generated_html_element_factory",
   ":make_core_generated_html_element_lookup_trie",
+  ":make_core_generated_html_element_type_helpers",
   ":make_core_generated_html_entity_table",
   ":make_core_generated_html_tokenizer_names",
   ":make_core_generated_input_type_names",
   ":make_core_generated_keywords",
-  ":make_core_generated_mathml_names",
   ":make_core_generated_mathml_element_type_helpers",
+  ":make_core_generated_mathml_names",
   ":make_core_generated_media_feature_names",
+  ":make_core_generated_media_features",
   ":make_core_generated_media_type_names",
-  ":make_core_generated_performance_entry_names",
   ":make_core_generated_origin_trials",
+  ":make_core_generated_performance_entry_names",
   ":make_core_generated_style_property_shorthand",
+  ":make_core_generated_svg_element_type_helpers",
   ":make_core_generated_svg_names",
   ":make_core_generated_web_origin_trials",
   ":make_core_generated_xlink_names",
   ":make_core_generated_xml_names",
   ":make_core_generated_xml_ns_names",
-  ":make_core_generated_html_element_type_helpers",
-  ":make_core_generated_css_value_keywords",
-  ":make_core_generated_media_features",
-  ":make_core_generated_svg_element_type_helpers",
 ]
 
 group("all_generators") {
diff --git a/third_party/blink/renderer/core/animation/animation.cc b/third_party/blink/renderer/core/animation/animation.cc
index dd840f3..51b8322 100644
--- a/third_party/blink/renderer/core/animation/animation.cc
+++ b/third_party/blink/renderer/core/animation/animation.cc
@@ -242,16 +242,8 @@
 void Animation::setCurrentTime(double new_current_time,
                                bool is_null,
                                ExceptionState& exception_state) {
-  // TODO(crbug.com/916117): Implement setting current time for scroll-linked
-  // animations.
-  if (timeline_ && timeline_->IsScrollTimeline()) {
-    exception_state.ThrowDOMException(
-        DOMExceptionCode::kNotSupportedError,
-        "Scroll-linked WebAnimation currently does not support setting"
-        " current time.");
-    return;
-  }
-
+  // TODO(crbug.com/924159): Update this after we add support for inactive
+  // timelines and unresolved timeline.currentTime
   if (is_null) {
     // If the current time is resolved, then throw a TypeError.
     if (CurrentTimeInternal()) {
@@ -542,15 +534,7 @@
   current_time_pending_ = false;
 
   // Update hold and start time.
-  if (timeline_ && timeline_->IsScrollTimeline()) {
-    // Special handling for scroll timelines.  The start time is always zero
-    // when the animation is playing. This forces the current time to match
-    // the timeline time. TODO(crbug.com/916117): Resolve in spec.
-    start_time_ = 0;
-    ApplyPendingPlaybackRate();
-    if (playback_rate_ != 0)
-      hold_time_ = base::nullopt;
-  } else if (hold_time_) {
+  if (hold_time_) {
     // A: If animation’s hold time is resolved,
     // A.1. Apply any pending playback rate on animation.
     // A.2. Let new start time be the result of evaluating:
@@ -1022,9 +1006,16 @@
   //    Set animation’s hold time to zero.
   double effective_playback_rate = EffectivePlaybackRate();
   base::Optional<double> current_time = CurrentTimeInternal();
+  // TODO(crbug.com/1012073): This should be able to be extracted into a
+  // function in AnimationTimeline that each child class can override for their
+  // own special behavior.
+  base::Optional<double> initial_hold_time =
+      (timeline_ && timeline_->IsScrollTimeline())
+          ? timeline_->CurrentTimeSeconds()
+          : 0;
   if (effective_playback_rate > 0 && auto_rewind == AutoRewind::kEnabled &&
       (!current_time || current_time < 0 || current_time >= EffectEnd())) {
-    hold_time_ = 0;
+    hold_time_ = initial_hold_time;
   } else if (effective_playback_rate < 0 &&
              auto_rewind == AutoRewind::kEnabled &&
              (!current_time || current_time <= 0 ||
@@ -1037,7 +1028,7 @@
     }
     hold_time_ = EffectEnd();
   } else if (effective_playback_rate == 0 && !current_time) {
-    hold_time_ = 0;
+    hold_time_ = initial_hold_time;
   }
 
   // 4. If animation has a pending play task or a pending pause task,
@@ -1053,7 +1044,15 @@
   //      aborted pause is false, and
   //      animation does not have a pending playback rate,
   //    abort this procedure.
-  if (!hold_time_ && !aborted_pause && !pending_playback_rate_)
+  //
+  // TODO(crbug.com/916117): Remove temporary extra condition for
+  // scroll timelines. This is needed because hold_time_ can be set using
+  // timeline.currentTime, which currently can return null. This check is to
+  // make sure we don't abort in this case.
+  if ((!hold_time_ &&
+       (timeline_ &&
+        !timeline_->IsScrollTimeline() /* Temporary extra condition */)) &&
+      !aborted_pause && !pending_playback_rate_)
     return;
 
   // 6. If animation’s hold time is resolved, let its start time be unresolved.
diff --git a/third_party/blink/renderer/core/animation/animation.idl b/third_party/blink/renderer/core/animation/animation.idl
index 79acca95..bb359722 100644
--- a/third_party/blink/renderer/core/animation/animation.idl
+++ b/third_party/blink/renderer/core/animation/animation.idl
@@ -34,11 +34,9 @@
 
 [
     Exposed=Window,
-    Constructor(optional AnimationEffect? effect = null, optional AnimationTimeline? timeline),
-    ConstructorCallWith=ExecutionContext,
-    RaisesException=Constructor,
     ActiveScriptWrappable
 ] interface Animation : EventTarget {
+    [CallWith=ExecutionContext, RaisesException] constructor(optional AnimationEffect? effect = null, optional AnimationTimeline? timeline);
     [Measure] attribute AnimationEffect? effect;
     // TODO(suzyh): Make timeline mutable.
     [RuntimeEnabled=WebAnimationsAPI] readonly attribute AnimationTimeline? timeline;
diff --git a/third_party/blink/renderer/core/animation/animation_test.cc b/third_party/blink/renderer/core/animation/animation_test.cc
index a224980..1d7ef666 100644
--- a/third_party/blink/renderer/core/animation/animation_test.cc
+++ b/third_party/blink/renderer/core/animation/animation_test.cc
@@ -1353,7 +1353,7 @@
   // Verify start and current times in Pending state.
   scroll_animation->startTime(is_null);
   EXPECT_TRUE(is_null);
-  EXPECT_EQ(0, scroll_animation->currentTime(is_null));
+  EXPECT_EQ(20, scroll_animation->currentTime(is_null));
   EXPECT_FALSE(is_null);
 
   UpdateAllLifecyclePhasesForTest();
diff --git a/third_party/blink/renderer/core/animation/document_timeline.idl b/third_party/blink/renderer/core/animation/document_timeline.idl
index 4244b5a..e62efdb 100644
--- a/third_party/blink/renderer/core/animation/document_timeline.idl
+++ b/third_party/blink/renderer/core/animation/document_timeline.idl
@@ -5,9 +5,8 @@
 // https://drafts.csswg.org/web-animations/#the-documenttimeline-interface
 
 [
-    Constructor(optional DocumentTimelineOptions options),
-    ConstructorCallWith=ExecutionContext,
     RuntimeEnabled=WebAnimationsAPI,
     Exposed=Window
 ] interface DocumentTimeline : AnimationTimeline {
+  [CallWith=ExecutionContext] constructor(optional DocumentTimelineOptions options);
 };
diff --git a/third_party/blink/renderer/core/animation/keyframe_effect.idl b/third_party/blink/renderer/core/animation/keyframe_effect.idl
index c1e196c..683c60a1 100644
--- a/third_party/blink/renderer/core/animation/keyframe_effect.idl
+++ b/third_party/blink/renderer/core/animation/keyframe_effect.idl
@@ -33,12 +33,10 @@
 enum CompositeOperation { "replace", "add", "accumulate" };
 
 [
-    Exposed=Window,
-    Constructor(Element? target, object? keyframes, optional (unrestricted double or KeyframeEffectOptions) options),
-    Constructor(KeyframeEffect source),
-    ConstructorCallWith=ScriptState,
-    RaisesException=Constructor
+    Exposed=Window
 ] interface KeyframeEffect : AnimationEffect {
+  [CallWith=ScriptState, RaisesException] constructor(Element? target, object? keyframes, optional (unrestricted double or KeyframeEffectOptions) options);
+  [CallWith=ScriptState, RaisesException] constructor(KeyframeEffect source);
   attribute Element? target;
   [RuntimeEnabled=WebAnimationsAPI] attribute CompositeOperation composite;
   [CallWith=ScriptState, RuntimeEnabled=WebAnimationsAPI] sequence<object> getKeyframes();
diff --git a/third_party/blink/renderer/core/animation/scroll_timeline.idl b/third_party/blink/renderer/core/animation/scroll_timeline.idl
index bd0cd9c..7ea3821 100644
--- a/third_party/blink/renderer/core/animation/scroll_timeline.idl
+++ b/third_party/blink/renderer/core/animation/scroll_timeline.idl
@@ -5,13 +5,11 @@
 // https://wicg.github.io/scroll-animations/#scrolltimeline-interface
 
 [
-    Constructor(optional ScrollTimelineOptions options),
-    ConstructorCallWith=Document,
     MeasureAs=ScrollTimelineConstructor,
-    RaisesException=Constructor,
     RuntimeEnabled=ScrollTimeline,
     Exposed=Window
 ] interface ScrollTimeline : AnimationTimeline {
+    [CallWith=Document, RaisesException] constructor(optional ScrollTimelineOptions options);
     readonly attribute Element? scrollSource;
     readonly attribute ScrollDirection orientation;
     readonly attribute DOMString startScrollOffset;
diff --git a/third_party/blink/renderer/core/aom/accessible_node.idl b/third_party/blink/renderer/core/aom/accessible_node.idl
index e74c43d7..38fb58f 100644
--- a/third_party/blink/renderer/core/aom/accessible_node.idl
+++ b/third_party/blink/renderer/core/aom/accessible_node.idl
@@ -6,10 +6,9 @@
 // Explainer: https://github.com/WICG/aom/blob/master/explainer.md
 // Spec: https://wicg.github.io/aom/spec/
 [
-    Constructor,
-    ConstructorCallWith=Document,
     RuntimeEnabled=AccessibilityObjectModel
 ] interface AccessibleNode : EventTarget {
+    [CallWith=Document] constructor();
     attribute AccessibleNode? activeDescendant;
     attribute boolean? atomic;
     attribute DOMString? autocomplete;
diff --git a/third_party/blink/renderer/core/aom/accessible_node_list.idl b/third_party/blink/renderer/core/aom/accessible_node_list.idl
index ec9a2b1..68573677 100644
--- a/third_party/blink/renderer/core/aom/accessible_node_list.idl
+++ b/third_party/blink/renderer/core/aom/accessible_node_list.idl
@@ -6,9 +6,9 @@
 // Explainer: https://github.com/WICG/aom/blob/master/explainer.md
 // Spec: https://wicg.github.io/aom/spec/
 [
-    Constructor(optional sequence<AccessibleNode> nodes = []),
     RuntimeEnabled=AccessibilityObjectModel
 ] interface AccessibleNodeList {
+  constructor(optional sequence<AccessibleNode> nodes = []);
   attribute unsigned long length;
   getter AccessibleNode? item(unsigned long index);
   [RaisesException] setter void (unsigned long index, AccessibleNode node);
diff --git a/third_party/blink/renderer/core/clipboard/data_transfer.idl b/third_party/blink/renderer/core/clipboard/data_transfer.idl
index 96b269f0..7209dd8 100644
--- a/third_party/blink/renderer/core/clipboard/data_transfer.idl
+++ b/third_party/blink/renderer/core/clipboard/data_transfer.idl
@@ -29,9 +29,9 @@
 // https://html.spec.whatwg.org/C/#the-datatransfer-interface
 
 [
-    Constructor,
     Exposed=Window
 ] interface DataTransfer {
+    constructor();
     attribute DOMString dropEffect;
     attribute DOMString effectAllowed;
 
diff --git a/third_party/blink/renderer/core/css/css_gradient_value.h b/third_party/blink/renderer/core/css/css_gradient_value.h
index b31412a..6976a76b 100644
--- a/third_party/blink/renderer/core/css/css_gradient_value.h
+++ b/third_party/blink/renderer/core/css/css_gradient_value.h
@@ -196,33 +196,6 @@
 
 class CSSRadialGradientValue final : public CSSGradientValue {
  public:
-  static CSSGradientValue* Create(
-      const CSSValue* first_x,
-      const CSSValue* first_y,
-      const CSSPrimitiveValue* first_radius,
-      const CSSValue* second_x,
-      const CSSValue* second_y,
-      const CSSPrimitiveValue* second_radius,
-      CSSGradientRepeat repeat,
-      CSSGradientType gradient_type = kCSSRadialGradient) {
-    return MakeGarbageCollected<CSSRadialGradientValue>(
-        first_x, first_y, first_radius, second_x, second_y, second_radius,
-        nullptr, nullptr, nullptr, nullptr, repeat, gradient_type);
-  }
-
-  static CSSGradientValue* Create(const CSSValue* center_x,
-                                  const CSSValue* center_y,
-                                  const CSSIdentifierValue* shape,
-                                  const CSSIdentifierValue* sizing_behavior,
-                                  const CSSPrimitiveValue* horizontal_size,
-                                  const CSSPrimitiveValue* vertical_size,
-                                  CSSGradientRepeat repeat,
-                                  CSSGradientType gradient_type) {
-    return MakeGarbageCollected<CSSRadialGradientValue>(
-        center_x, center_y, nullptr, center_x, center_y, nullptr, shape,
-        sizing_behavior, horizontal_size, vertical_size, repeat, gradient_type);
-  }
-
   CSSRadialGradientValue(const CSSValue* first_x,
                          const CSSValue* first_y,
                          const CSSPrimitiveValue* first_radius,
@@ -247,6 +220,46 @@
         end_horizontal_size_(horizontal_size),
         end_vertical_size_(vertical_size) {}
 
+  CSSRadialGradientValue(const CSSValue* first_x,
+                         const CSSValue* first_y,
+                         const CSSPrimitiveValue* first_radius,
+                         const CSSValue* second_x,
+                         const CSSValue* second_y,
+                         const CSSPrimitiveValue* second_radius,
+                         CSSGradientRepeat repeat,
+                         CSSGradientType gradient_type = kCSSRadialGradient)
+      : CSSGradientValue(kRadialGradientClass, repeat, gradient_type),
+        first_x_(first_x),
+        first_y_(first_y),
+        second_x_(second_x),
+        second_y_(second_y),
+        first_radius_(first_radius),
+        second_radius_(second_radius),
+        shape_(nullptr),
+        sizing_behavior_(nullptr),
+        end_horizontal_size_(nullptr),
+        end_vertical_size_(nullptr) {}
+
+  CSSRadialGradientValue(const CSSValue* center_x,
+                         const CSSValue* center_y,
+                         const CSSIdentifierValue* shape,
+                         const CSSIdentifierValue* sizing_behavior,
+                         const CSSPrimitiveValue* horizontal_size,
+                         const CSSPrimitiveValue* vertical_size,
+                         CSSGradientRepeat repeat,
+                         CSSGradientType gradient_type)
+      : CSSGradientValue(kRadialGradientClass, repeat, gradient_type),
+        first_x_(center_x),
+        first_y_(center_y),
+        second_x_(center_x),
+        second_y_(center_y),
+        first_radius_(nullptr),
+        second_radius_(nullptr),
+        shape_(shape),
+        sizing_behavior_(sizing_behavior),
+        end_horizontal_size_(horizontal_size),
+        end_vertical_size_(vertical_size) {}
+
   String CustomCSSText() const;
 
   void SetShape(CSSIdentifierValue* val) { shape_ = val; }
diff --git a/third_party/blink/renderer/core/css/css_image_value.cc b/third_party/blink/renderer/core/css/css_image_value.cc
index 06f072c9..ac0b1a6e9 100644
--- a/third_party/blink/renderer/core/css/css_image_value.cc
+++ b/third_party/blink/renderer/core/css/css_image_value.cc
@@ -40,8 +40,8 @@
 CSSImageValue::CSSImageValue(const AtomicString& raw_value,
                              const KURL& url,
                              const Referrer& referrer,
-                             StyleImage* image,
-                             OriginClean origin_clean)
+                             OriginClean origin_clean,
+                             StyleImage* image)
     : CSSValue(kImageClass),
       relative_url_(raw_value),
       referrer_(referrer),
diff --git a/third_party/blink/renderer/core/css/css_image_value.h b/third_party/blink/renderer/core/css/css_image_value.h
index b8ab4d3..25bc88e5 100644
--- a/third_party/blink/renderer/core/css/css_image_value.h
+++ b/third_party/blink/renderer/core/css/css_image_value.h
@@ -39,42 +39,11 @@
 
 class CORE_EXPORT CSSImageValue : public CSSValue {
  public:
-  static CSSImageValue* Create(const KURL& url,
-                               OriginClean origin_clean,
-                               StyleImage* image = nullptr) {
-    return Create(url.GetString(), url, Referrer(), origin_clean, image);
-  }
-  static CSSImageValue* Create(const AtomicString& relative_url,
-                               const KURL& absolute_url,
-                               OriginClean origin_clean,
-                               StyleImage* image = nullptr) {
-    return Create(relative_url, absolute_url, Referrer(), origin_clean, image);
-  }
-  static CSSImageValue* Create(const String& raw_value,
-                               const KURL& url,
-                               const Referrer& referrer,
-                               OriginClean origin_clean,
-                               StyleImage* image = nullptr) {
-    return Create(AtomicString(raw_value), url, referrer, origin_clean, image);
-  }
-  static CSSImageValue* Create(const AtomicString& raw_value,
-                               const KURL& url,
-                               const Referrer& referrer,
-                               OriginClean origin_clean,
-                               StyleImage* image = nullptr) {
-    return MakeGarbageCollected<CSSImageValue>(raw_value, url, referrer, image,
-                                               origin_clean);
-  }
-  static CSSImageValue* Create(const AtomicString& absolute_url,
-                               OriginClean origin_clean) {
-    return MakeGarbageCollected<CSSImageValue>(absolute_url, origin_clean);
-  }
-
   CSSImageValue(const AtomicString& raw_value,
                 const KURL&,
                 const Referrer&,
-                StyleImage*,
-                OriginClean origin_clean);
+                OriginClean origin_clean,
+                StyleImage* image = nullptr);
   CSSImageValue(const AtomicString& absolute_url, OriginClean origin_clean);
   ~CSSImageValue();
 
@@ -104,12 +73,15 @@
   bool KnownToBeOpaque(const Document&, const ComputedStyle&) const;
 
   CSSImageValue* ValueWithURLMadeAbsolute() const {
-    return Create(KURL(absolute_url_), origin_clean_, cached_image_.Get());
+    return MakeGarbageCollected<CSSImageValue>(
+        absolute_url_, KURL(absolute_url_), Referrer(), origin_clean_,
+        cached_image_.Get());
   }
 
   CSSImageValue* Clone() const {
-    return Create(relative_url_, KURL(absolute_url_), origin_clean_,
-                  cached_image_.Get());
+    return MakeGarbageCollected<CSSImageValue>(
+        relative_url_, KURL(absolute_url_), Referrer(), origin_clean_,
+        cached_image_.Get());
   }
 
   void SetInitiator(const AtomicString& name) { initiator_name_ = name; }
diff --git a/third_party/blink/renderer/core/css/css_pending_substitution_value.h b/third_party/blink/renderer/core/css/css_pending_substitution_value.h
index 70b27184..b5931b6 100644
--- a/third_party/blink/renderer/core/css/css_pending_substitution_value.h
+++ b/third_party/blink/renderer/core/css/css_pending_substitution_value.h
@@ -15,13 +15,6 @@
 
 class CSSPendingSubstitutionValue : public CSSValue {
  public:
-  static CSSPendingSubstitutionValue* Create(
-      CSSPropertyID shorthand_property_id,
-      CSSVariableReferenceValue* shorthand_value) {
-    return MakeGarbageCollected<CSSPendingSubstitutionValue>(
-        shorthand_property_id, shorthand_value);
-  }
-
   CSSPendingSubstitutionValue(CSSPropertyID shorthand_property_id,
                               CSSVariableReferenceValue* shorthand_value)
       : CSSValue(kPendingSubstitutionValueClass),
diff --git a/third_party/blink/renderer/core/css/css_primitive_value_mappings.h b/third_party/blink/renderer/core/css/css_primitive_value_mappings.h
index e49b90b..07945d9c 100644
--- a/third_party/blink/renderer/core/css/css_primitive_value_mappings.h
+++ b/third_party/blink/renderer/core/css/css_primitive_value_mappings.h
@@ -1425,31 +1425,31 @@
 inline TouchAction CSSIdentifierValue::ConvertTo() const {
   switch (value_id_) {
     case CSSValueID::kNone:
-      return TouchAction::kTouchActionNone;
+      return TouchAction::kNone;
     case CSSValueID::kAuto:
-      return TouchAction::kTouchActionAuto;
+      return TouchAction::kAuto;
     case CSSValueID::kPanLeft:
-      return TouchAction::kTouchActionPanLeft;
+      return TouchAction::kPanLeft;
     case CSSValueID::kPanRight:
-      return TouchAction::kTouchActionPanRight;
+      return TouchAction::kPanRight;
     case CSSValueID::kPanX:
-      return TouchAction::kTouchActionPanX;
+      return TouchAction::kPanX;
     case CSSValueID::kPanUp:
-      return TouchAction::kTouchActionPanUp;
+      return TouchAction::kPanUp;
     case CSSValueID::kPanDown:
-      return TouchAction::kTouchActionPanDown;
+      return TouchAction::kPanDown;
     case CSSValueID::kPanY:
-      return TouchAction::kTouchActionPanY;
+      return TouchAction::kPanY;
     case CSSValueID::kManipulation:
-      return TouchAction::kTouchActionManipulation;
+      return TouchAction::kManipulation;
     case CSSValueID::kPinchZoom:
-      return TouchAction::kTouchActionPinchZoom;
+      return TouchAction::kPinchZoom;
     default:
       break;
   }
 
   NOTREACHED();
-  return TouchAction::kTouchActionNone;
+  return TouchAction::kNone;
 }
 
 template <>
diff --git a/third_party/blink/renderer/core/css/css_properties.json5 b/third_party/blink/renderer/core/css/css_properties.json5
index 2e41e7ec9..184d63ed 100644
--- a/third_party/blink/renderer/core/css/css_properties.json5
+++ b/third_party/blink/renderer/core/css/css_properties.json5
@@ -1975,7 +1975,7 @@
       runtime_flag: "ImageOrientation",
       field_group: "*",
       field_template: "primitive",
-      default_value: "false",
+      default_value: "true",
       name_for_methods: "RespectImageOrientation",
       type_name: "bool",
       converter: "ConvertImageOrientation",
@@ -3393,7 +3393,7 @@
       field_size: 6, // FIXME: Make this use "kTouchActionBits".
       field_template: "primitive",
       include_paths: ["third_party/blink/renderer/platform/graphics/touch_action.h"],
-      default_value: "TouchAction::kTouchActionAuto",
+      default_value: "TouchAction::kAuto",
       type_name: "TouchAction",
       converter: "ConvertFlags<blink::TouchAction>",
       keywords: ["auto", "none", "pan-x", "pan-left", "pan-right", "pan-y", "pan-up", "pan-down", "pinch-zoom", "manipulation"],
diff --git a/third_party/blink/renderer/core/css/css_quad_value.h b/third_party/blink/renderer/core/css/css_quad_value.h
index 0f5c9c7e..7f02d75 100644
--- a/third_party/blink/renderer/core/css/css_quad_value.h
+++ b/third_party/blink/renderer/core/css/css_quad_value.h
@@ -32,12 +32,6 @@
  public:
   enum TypeForSerialization { kSerializeAsRect, kSerializeAsQuad };
 
-  static CSSQuadValue* Create(CSSValue* value,
-                              TypeForSerialization serialization_type) {
-    return MakeGarbageCollected<CSSQuadValue>(value, value, value, value,
-                                              serialization_type);
-  }
-
   CSSQuadValue(CSSValue* top,
                CSSValue* right,
                CSSValue* bottom,
@@ -50,6 +44,14 @@
         bottom_(bottom),
         left_(left) {}
 
+  CSSQuadValue(CSSValue* value, TypeForSerialization serialization_type)
+      : CSSValue(kQuadClass),
+        serialization_type_(serialization_type),
+        top_(value),
+        right_(value),
+        bottom_(value),
+        left_(value) {}
+
   CSSValue* Top() const { return top_.Get(); }
   CSSValue* Right() const { return right_.Get(); }
   CSSValue* Bottom() const { return bottom_.Get(); }
diff --git a/third_party/blink/renderer/core/css/css_style_sheet.idl b/third_party/blink/renderer/core/css/css_style_sheet.idl
index 94b6f421..f201ac6 100644
--- a/third_party/blink/renderer/core/css/css_style_sheet.idl
+++ b/third_party/blink/renderer/core/css/css_style_sheet.idl
@@ -21,11 +21,9 @@
 // https://drafts.csswg.org/cssom/#the-cssstylesheet-interface
 
 [
-    ConstructorCallWith=Document,
-    RaisesException=Constructor,
-    Constructor(optional CSSStyleSheetInit options),
     Exposed=Window
 ] interface CSSStyleSheet : StyleSheet {
+    [CallWith=Document, RaisesException] constructor(optional CSSStyleSheetInit options);
     readonly attribute CSSRule? ownerRule;
     [SameObject, RaisesException] readonly attribute CSSRuleList cssRules;
     [RaisesException] unsigned long insertRule(DOMString rule, optional unsigned long index = 0);
diff --git a/third_party/blink/renderer/core/css/css_timing_function_value.h b/third_party/blink/renderer/core/css/css_timing_function_value.h
index 5cab5ad..795abd9 100644
--- a/third_party/blink/renderer/core/css/css_timing_function_value.h
+++ b/third_party/blink/renderer/core/css/css_timing_function_value.h
@@ -66,13 +66,6 @@
 
 class CSSStepsTimingFunctionValue : public CSSValue {
  public:
-  static CSSStepsTimingFunctionValue* Create(
-      int steps,
-      StepsTimingFunction::StepPosition step_position) {
-    return MakeGarbageCollected<CSSStepsTimingFunctionValue>(steps,
-                                                             step_position);
-  }
-
   CSSStepsTimingFunctionValue(int steps,
                               StepsTimingFunction::StepPosition step_position)
       : CSSValue(kStepsTimingFunctionClass),
diff --git a/third_party/blink/renderer/core/css/css_uri_value.cc b/third_party/blink/renderer/core/css/css_uri_value.cc
index b1078fef..242c7273 100644
--- a/third_party/blink/renderer/core/css/css_uri_value.cc
+++ b/third_party/blink/renderer/core/css/css_uri_value.cc
@@ -19,6 +19,9 @@
       is_local_(relative_url.StartsWith('#')),
       absolute_url_(absolute_url) {}
 
+CSSURIValue::CSSURIValue(const AtomicString& absolute_url)
+    : CSSURIValue(absolute_url, absolute_url) {}
+
 CSSURIValue::CSSURIValue(const AtomicString& relative_url, const KURL& url)
     : CSSURIValue(relative_url, AtomicString(url.GetString())) {}
 
@@ -72,9 +75,11 @@
 CSSURIValue* CSSURIValue::ValueWithURLMadeAbsolute(
     const KURL& base_url,
     const WTF::TextEncoding& charset) const {
-  if (!charset.IsValid())
-    return Create(AtomicString(KURL(base_url, relative_url_).GetString()));
-  return Create(
+  if (!charset.IsValid()) {
+    return MakeGarbageCollected<CSSURIValue>(
+        AtomicString(KURL(base_url, relative_url_).GetString()));
+  }
+  return MakeGarbageCollected<CSSURIValue>(
       AtomicString(KURL(base_url, relative_url_, charset).GetString()));
 }
 
diff --git a/third_party/blink/renderer/core/css/css_uri_value.h b/third_party/blink/renderer/core/css/css_uri_value.h
index e49901f..3999c76 100644
--- a/third_party/blink/renderer/core/css/css_uri_value.h
+++ b/third_party/blink/renderer/core/css/css_uri_value.h
@@ -20,16 +20,10 @@
 
 class CORE_EXPORT CSSURIValue : public CSSValue {
  public:
-  static CSSURIValue* Create(const String& relative_url, const KURL& url) {
-    return MakeGarbageCollected<CSSURIValue>(AtomicString(relative_url), url);
-  }
-  static CSSURIValue* Create(const AtomicString& absolute_url) {
-    return MakeGarbageCollected<CSSURIValue>(absolute_url, absolute_url);
-  }
-
   CSSURIValue(const AtomicString&, const KURL&);
   CSSURIValue(const AtomicString& relative_url,
               const AtomicString& absolute_url);
+  CSSURIValue(const AtomicString& absolute_url);
   ~CSSURIValue();
 
   SVGResource* EnsureResourceReference() const;
diff --git a/third_party/blink/renderer/core/css/css_uri_value_test.cc b/third_party/blink/renderer/core/css/css_uri_value_test.cc
index 3b04a119..05d72515 100644
--- a/third_party/blink/renderer/core/css/css_uri_value_test.cc
+++ b/third_party/blink/renderer/core/css/css_uri_value_test.cc
@@ -12,15 +12,15 @@
 namespace {
 
 TEST(CSSURIValueTest, ValueWithURLMadeAbsolute) {
-  cssvalue::CSSURIValue* rel =
-      cssvalue::CSSURIValue::Create("a", KURL("http://foo.com/a"));
+  cssvalue::CSSURIValue* rel = MakeGarbageCollected<cssvalue::CSSURIValue>(
+      "a", KURL("http://foo.com/a"));
   cssvalue::CSSURIValue* abs = rel->ValueWithURLMadeAbsolute(
       KURL("http://bar.com"), WTF::TextEncoding());
   EXPECT_EQ("url(\"http://bar.com/a\")", abs->CssText());
 }
 
 TEST(CSSURIValueTest, AlreadyAbsoluteURLMadeAbsolute) {
-  cssvalue::CSSURIValue* rel = cssvalue::CSSURIValue::Create(
+  cssvalue::CSSURIValue* rel = MakeGarbageCollected<cssvalue::CSSURIValue>(
       "http://baz.com/a", KURL("http://baz.com/a"));
   cssvalue::CSSURIValue* abs = rel->ValueWithURLMadeAbsolute(
       KURL("http://bar.com"), WTF::TextEncoding());
diff --git a/third_party/blink/renderer/core/css/cssom/css_keyword_value.idl b/third_party/blink/renderer/core/css/cssom/css_keyword_value.idl
index 31f6b517..0185871c 100644
--- a/third_party/blink/renderer/core/css/cssom/css_keyword_value.idl
+++ b/third_party/blink/renderer/core/css/cssom/css_keyword_value.idl
@@ -6,9 +6,8 @@
 // example "initial".
 // https://drafts.css-houdini.org/css-typed-om/#keywordvalue-objects
 [
-    Constructor(CSSOMString keyword),
-    Exposed=(Window,LayoutWorklet,PaintWorklet),
-    RaisesException=Constructor
+    Exposed=(Window,LayoutWorklet,PaintWorklet)
 ] interface CSSKeywordValue : CSSStyleValue {
+    [RaisesException] constructor(CSSOMString keyword);
     [RaisesException=Setter] attribute CSSOMString value;
 };
diff --git a/third_party/blink/renderer/core/css/cssom/css_math_invert.idl b/third_party/blink/renderer/core/css/cssom/css_math_invert.idl
index c165677b..5217cd9 100644
--- a/third_party/blink/renderer/core/css/cssom/css_math_invert.idl
+++ b/third_party/blink/renderer/core/css/cssom/css_math_invert.idl
@@ -5,8 +5,8 @@
 // Represents the inverse a CSSNumericValue.
 // https://drafts.css-houdini.org/css-typed-om/#cssmathinvert
 [
-  Constructor(CSSNumberish arg),
   Exposed=(Window,LayoutWorklet,PaintWorklet)
 ] interface CSSMathInvert : CSSMathValue {
+  constructor(CSSNumberish arg);
   readonly attribute CSSNumberish value;
 };
diff --git a/third_party/blink/renderer/core/css/cssom/css_math_max.idl b/third_party/blink/renderer/core/css/cssom/css_math_max.idl
index 4a29b526..d8f8a89d 100644
--- a/third_party/blink/renderer/core/css/cssom/css_math_max.idl
+++ b/third_party/blink/renderer/core/css/cssom/css_math_max.idl
@@ -5,9 +5,8 @@
 // Represents the maximum of one or more CSSNumericValues.
 // https://drafts.css-houdini.org/css-typed-om/#cssmathsum
 [
-  Constructor(CSSNumberish... args),
-  Exposed=(Window,LayoutWorklet,PaintWorklet),
-  RaisesException=Constructor
+  Exposed=(Window,LayoutWorklet,PaintWorklet)
 ] interface CSSMathMax : CSSMathValue {
+  [RaisesException] constructor(CSSNumberish... args);
   readonly attribute CSSNumericArray values;
 };
diff --git a/third_party/blink/renderer/core/css/cssom/css_math_min.idl b/third_party/blink/renderer/core/css/cssom/css_math_min.idl
index fd8fbb1..075499c 100644
--- a/third_party/blink/renderer/core/css/cssom/css_math_min.idl
+++ b/third_party/blink/renderer/core/css/cssom/css_math_min.idl
@@ -5,9 +5,8 @@
 // Represents the minimum of one or more CSSNumericValues.
 // https://drafts.css-houdini.org/css-typed-om/#cssmathsum
 [
-  Constructor(CSSNumberish... args),
-  Exposed=(Window,LayoutWorklet,PaintWorklet),
-  RaisesException=Constructor
+  Exposed=(Window,LayoutWorklet,PaintWorklet)
 ] interface CSSMathMin : CSSMathValue {
+  [RaisesException] constructor(CSSNumberish... args);
   readonly attribute CSSNumericArray values;
 };
diff --git a/third_party/blink/renderer/core/css/cssom/css_math_negate.idl b/third_party/blink/renderer/core/css/cssom/css_math_negate.idl
index 6909553..aa2ef4778 100644
--- a/third_party/blink/renderer/core/css/cssom/css_math_negate.idl
+++ b/third_party/blink/renderer/core/css/cssom/css_math_negate.idl
@@ -5,8 +5,8 @@
 // Represents the negation of a CSSNumericValue.
 // https://drafts.css-houdini.org/css-typed-om/#cssmathnegate
 [
-  Constructor(CSSNumberish arg),
   Exposed=(Window,LayoutWorklet,PaintWorklet)
 ] interface CSSMathNegate : CSSMathValue {
+  constructor(CSSNumberish arg);
   readonly attribute CSSNumberish value;
 };
diff --git a/third_party/blink/renderer/core/css/cssom/css_math_product.idl b/third_party/blink/renderer/core/css/cssom/css_math_product.idl
index f4c4471..abd367d 100644
--- a/third_party/blink/renderer/core/css/cssom/css_math_product.idl
+++ b/third_party/blink/renderer/core/css/cssom/css_math_product.idl
@@ -5,9 +5,8 @@
 // Represents the product of one or more CSSNumericValues.
 // https://drafts.css-houdini.org/css-typed-om/#cssmathsub
 [
-  Constructor(CSSNumberish... args),
-  Exposed=(Window,LayoutWorklet,PaintWorklet),
-  RaisesException=Constructor
+  Exposed=(Window,LayoutWorklet,PaintWorklet)
 ] interface CSSMathProduct : CSSMathValue {
+  [RaisesException] constructor(CSSNumberish... args);
   readonly attribute CSSNumericArray values;
 };
diff --git a/third_party/blink/renderer/core/css/cssom/css_math_sum.idl b/third_party/blink/renderer/core/css/cssom/css_math_sum.idl
index 72b8cb8..dcc74e2 100644
--- a/third_party/blink/renderer/core/css/cssom/css_math_sum.idl
+++ b/third_party/blink/renderer/core/css/cssom/css_math_sum.idl
@@ -5,9 +5,8 @@
 // Represents the sum of one or more CSSNumericValues.
 // https://drafts.css-houdini.org/css-typed-om/#cssmathsum
 [
-  Constructor(CSSNumberish... args),
-  Exposed=(Window,LayoutWorklet,PaintWorklet),
-  RaisesException=Constructor
+  Exposed=(Window,LayoutWorklet,PaintWorklet)
 ] interface CSSMathSum : CSSMathValue {
+  [RaisesException] constructor(CSSNumberish... args);
   readonly attribute CSSNumericArray values;
 };
diff --git a/third_party/blink/renderer/core/css/cssom/css_matrix_component.idl b/third_party/blink/renderer/core/css/cssom/css_matrix_component.idl
index 530e42f..76996802 100644
--- a/third_party/blink/renderer/core/css/cssom/css_matrix_component.idl
+++ b/third_party/blink/renderer/core/css/cssom/css_matrix_component.idl
@@ -6,9 +6,9 @@
 // "transform".
 // Spec: https://drafts.css-houdini.org/css-typed-om/#cssmatrixcomponent
 [
-    Constructor(DOMMatrixReadOnly matrix,
-        optional CSSMatrixComponentOptions options),
     Exposed=(Window,LayoutWorklet,PaintWorklet)
 ] interface CSSMatrixComponent : CSSTransformComponent {
+    constructor(DOMMatrixReadOnly matrix,
+        optional CSSMatrixComponentOptions options);
     attribute DOMMatrix matrix;
 };
diff --git a/third_party/blink/renderer/core/css/cssom/css_perspective.idl b/third_party/blink/renderer/core/css/cssom/css_perspective.idl
index 9cba1d1f..0e763fc 100644
--- a/third_party/blink/renderer/core/css/cssom/css_perspective.idl
+++ b/third_party/blink/renderer/core/css/cssom/css_perspective.idl
@@ -6,9 +6,8 @@
 // like "transform".
 // Spec: https://drafts.css-houdini.org/css-typed-om/#cssperspective
 [
-    Constructor(CSSNumericValue length),
-    Exposed=(Window,LayoutWorklet,PaintWorklet),
-    RaisesException=Constructor
+    Exposed=(Window,LayoutWorklet,PaintWorklet)
 ] interface CSSPerspective : CSSTransformComponent {
+    [RaisesException] constructor(CSSNumericValue length);
     [RaisesException=Setter] attribute CSSNumericValue length;
 };
diff --git a/third_party/blink/renderer/core/css/cssom/css_position_value.idl b/third_party/blink/renderer/core/css/cssom/css_position_value.idl
index 3954abb..6d12b1d 100644
--- a/third_party/blink/renderer/core/css/cssom/css_position_value.idl
+++ b/third_party/blink/renderer/core/css/cssom/css_position_value.idl
@@ -6,10 +6,9 @@
 // background-position.
 // Spec: https://drafts.css-houdini.org/css-typed-om/#positionvalue-objects
 [
-  Constructor(CSSNumericValue x, CSSNumericValue y),
-  Exposed=(Window,LayoutWorklet,PaintWorklet),
-  RaisesException=Constructor
+  Exposed=(Window,LayoutWorklet,PaintWorklet)
 ] interface CSSPositionValue : CSSStyleValue {
+  [RaisesException] constructor(CSSNumericValue x, CSSNumericValue y);
   [RaisesException=Setter] attribute CSSNumericValue x;
   [RaisesException=Setter] attribute CSSNumericValue y;
 };
diff --git a/third_party/blink/renderer/core/css/cssom/css_rotate.idl b/third_party/blink/renderer/core/css/cssom/css_rotate.idl
index 1b19a86..2340f460 100644
--- a/third_party/blink/renderer/core/css/cssom/css_rotate.idl
+++ b/third_party/blink/renderer/core/css/cssom/css_rotate.idl
@@ -6,11 +6,10 @@
 // "transform".
 // Spec: https://drafts.css-houdini.org/css-typed-om/#cssrotate
 [
-    Constructor(CSSNumericValue angleValue),
-    Constructor(CSSNumberish x, CSSNumberish y, CSSNumberish z, CSSNumericValue angle),
-    Exposed=(Window,LayoutWorklet,PaintWorklet),
-    RaisesException=Constructor
+    Exposed=(Window,LayoutWorklet,PaintWorklet)
 ] interface CSSRotate : CSSTransformComponent {
+    [RaisesException] constructor(CSSNumericValue angleValue);
+    [RaisesException] constructor(CSSNumberish x, CSSNumberish y, CSSNumberish z, CSSNumericValue angle);
     [RaisesException=Setter] attribute CSSNumericValue angle;
     [RaisesException=Setter] attribute CSSNumberish x;
     [RaisesException=Setter] attribute CSSNumberish y;
diff --git a/third_party/blink/renderer/core/css/cssom/css_scale.idl b/third_party/blink/renderer/core/css/cssom/css_scale.idl
index 2644e70b..7294dee 100644
--- a/third_party/blink/renderer/core/css/cssom/css_scale.idl
+++ b/third_party/blink/renderer/core/css/cssom/css_scale.idl
@@ -6,10 +6,9 @@
 // "transform".
 // Spec: https://drafts.css-houdini.org/css-typed-om/#cssscale
 [
-    Constructor(CSSNumberish x, CSSNumberish y, optional CSSNumberish z),
-    Exposed=(Window,LayoutWorklet,PaintWorklet),
-    RaisesException=Constructor
+    Exposed=(Window,LayoutWorklet,PaintWorklet)
 ] interface CSSScale : CSSTransformComponent {
+    [RaisesException] constructor(CSSNumberish x, CSSNumberish y, optional CSSNumberish z);
     [RaisesException=Setter] attribute CSSNumberish x;
     [RaisesException=Setter] attribute CSSNumberish y;
     [RaisesException=Setter] attribute CSSNumberish z;
diff --git a/third_party/blink/renderer/core/css/cssom/css_skew.idl b/third_party/blink/renderer/core/css/cssom/css_skew.idl
index 8aed33f..15e91f5d 100644
--- a/third_party/blink/renderer/core/css/cssom/css_skew.idl
+++ b/third_party/blink/renderer/core/css/cssom/css_skew.idl
@@ -6,10 +6,9 @@
 // "transform".
 // Spec: https://drafts.css-houdini.org/css-typed-om/#cssskew
 [
-    Constructor(CSSNumericValue ax, CSSNumericValue ay),
-    Exposed=(Window,LayoutWorklet,PaintWorklet),
-    RaisesException=Constructor
+    Exposed=(Window,LayoutWorklet,PaintWorklet)
 ] interface CSSSkew : CSSTransformComponent {
+    [RaisesException] constructor(CSSNumericValue ax, CSSNumericValue ay);
     [RaisesException=Setter] attribute CSSNumericValue ax;
     [RaisesException=Setter] attribute CSSNumericValue ay;
 };
diff --git a/third_party/blink/renderer/core/css/cssom/css_skew_x.idl b/third_party/blink/renderer/core/css/cssom/css_skew_x.idl
index fc08ea50..a342b898 100644
--- a/third_party/blink/renderer/core/css/cssom/css_skew_x.idl
+++ b/third_party/blink/renderer/core/css/cssom/css_skew_x.idl
@@ -6,9 +6,8 @@
 // "transform".
 // Spec: https://drafts.css-houdini.org/css-typed-om/#cssskewx
 [
-    Constructor(CSSNumericValue ax),
-    Exposed=(Window, Worker, PaintWorklet, LayoutWorklet),
-    RaisesException=Constructor]
-interface CSSSkewX : CSSTransformComponent {
+    Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)
+] interface CSSSkewX : CSSTransformComponent {
+    [RaisesException] constructor(CSSNumericValue ax);
     [RaisesException=Setter] attribute CSSNumericValue ax;
 };
diff --git a/third_party/blink/renderer/core/css/cssom/css_skew_y.idl b/third_party/blink/renderer/core/css/cssom/css_skew_y.idl
index eea0517..5c3130ca 100644
--- a/third_party/blink/renderer/core/css/cssom/css_skew_y.idl
+++ b/third_party/blink/renderer/core/css/cssom/css_skew_y.idl
@@ -6,9 +6,8 @@
 // "transform".
 // Spec: https://drafts.css-houdini.org/css-typed-om/#cssskewy
 [
-    Constructor(CSSNumericValue ay),
-    Exposed=(Window, Worker, PaintWorklet, LayoutWorklet),
-    RaisesException=Constructor]
-interface CSSSkewY : CSSTransformComponent {
+    Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)
+] interface CSSSkewY : CSSTransformComponent {
+    [RaisesException] constructor(CSSNumericValue ay);
     [RaisesException=Setter] attribute CSSNumericValue ay;
 };
diff --git a/third_party/blink/renderer/core/css/cssom/css_transform_value.idl b/third_party/blink/renderer/core/css/cssom/css_transform_value.idl
index 7c654d1..96b6f2a 100644
--- a/third_party/blink/renderer/core/css/cssom/css_transform_value.idl
+++ b/third_party/blink/renderer/core/css/cssom/css_transform_value.idl
@@ -3,10 +3,9 @@
 // found in the LICENSE file.
 
 [
-    Constructor(sequence<CSSTransformComponent> transforms),
-    RaisesException=Constructor,
     Exposed=(Window,LayoutWorklet,PaintWorklet)
 ] interface CSSTransformValue : CSSStyleValue {
+    [RaisesException] constructor(sequence<CSSTransformComponent> transforms);
     iterable<CSSTransformComponent>;
     readonly attribute unsigned long length;
     getter CSSTransformComponent (unsigned long index);
diff --git a/third_party/blink/renderer/core/css/cssom/css_translate.idl b/third_party/blink/renderer/core/css/cssom/css_translate.idl
index 51f2ce9..33c7adb 100644
--- a/third_party/blink/renderer/core/css/cssom/css_translate.idl
+++ b/third_party/blink/renderer/core/css/cssom/css_translate.idl
@@ -6,11 +6,10 @@
 // like "transform".
 // Spec: https://drafts.css-houdini.org/css-typed-om/#csstranslate
 [
-    Constructor(CSSNumericValue x, CSSNumericValue y,
-        optional CSSNumericValue z),
-    Exposed=(Window,LayoutWorklet,PaintWorklet),
-    RaisesException=Constructor
+    Exposed=(Window,LayoutWorklet,PaintWorklet)
 ] interface CSSTranslate : CSSTransformComponent {
+    [RaisesException] constructor(CSSNumericValue x, CSSNumericValue y,
+        optional CSSNumericValue z);
     [RaisesException=Setter] attribute CSSNumericValue x;
     [RaisesException=Setter] attribute CSSNumericValue y;
     [RaisesException=Setter] attribute CSSNumericValue z;
diff --git a/third_party/blink/renderer/core/css/cssom/css_unit_value.idl b/third_party/blink/renderer/core/css/cssom/css_unit_value.idl
index b0be5d7b..92aa8035 100644
--- a/third_party/blink/renderer/core/css/cssom/css_unit_value.idl
+++ b/third_party/blink/renderer/core/css/cssom/css_unit_value.idl
@@ -6,10 +6,9 @@
 // unit (or a naked number or percentage).
 // https://drafts.css-houdini.org/css-typed-om/#cssunitvalue
 [
-  Constructor(double value, CSSOMString unit),
-  RaisesException=Constructor,
   Exposed=(Window,LayoutWorklet,PaintWorklet)
 ] interface CSSUnitValue : CSSNumericValue {
+  [RaisesException] constructor(double value, CSSOMString unit);
   attribute double value;
   readonly attribute CSSOMString unit;
 };
diff --git a/third_party/blink/renderer/core/css/cssom/css_unparsed_value.idl b/third_party/blink/renderer/core/css/cssom/css_unparsed_value.idl
index 685c20f..40696ca 100644
--- a/third_party/blink/renderer/core/css/cssom/css_unparsed_value.idl
+++ b/third_party/blink/renderer/core/css/cssom/css_unparsed_value.idl
@@ -6,9 +6,9 @@
 // They represent a list of string fragments and variable references.
 // Spec: https://drafts.css-houdini.org/css-typed-om/#unparsedvalue-objects
 [
-  Constructor(sequence<CSSUnparsedSegment> members),
   Exposed=(Window,LayoutWorklet,PaintWorklet)
 ] interface CSSUnparsedValue : CSSStyleValue {
+    constructor(sequence<CSSUnparsedSegment> members);
     iterable<CSSUnparsedSegment>;
     readonly attribute unsigned long length;
     [RaisesException] getter CSSUnparsedSegment (unsigned long index);
diff --git a/third_party/blink/renderer/core/css/cssom/css_url_image_value.cc b/third_party/blink/renderer/core/css/cssom/css_url_image_value.cc
index 922cd34..7f593163 100644
--- a/third_party/blink/renderer/core/css/cssom/css_url_image_value.cc
+++ b/third_party/blink/renderer/core/css/cssom/css_url_image_value.cc
@@ -20,8 +20,9 @@
 
   DCHECK(!value_->IsCachePending());
   ImageResourceContent* resource_content = value_->CachedImage()->CachedImage();
+
   return resource_content
-             ? resource_content->IntrinsicSize(kDoNotRespectImageOrientation)
+             ? resource_content->IntrinsicSize(kRespectImageOrientation)
              : IntSize(0, 0);
 }
 
diff --git a/third_party/blink/renderer/core/css/cssom/css_variable_reference_value.idl b/third_party/blink/renderer/core/css/cssom/css_variable_reference_value.idl
index ca46773..1fc1325 100644
--- a/third_party/blink/renderer/core/css/cssom/css_variable_reference_value.idl
+++ b/third_party/blink/renderer/core/css/cssom/css_variable_reference_value.idl
@@ -5,11 +5,10 @@
 // Represents a CSS var() reference in a CSS value.
 // Spec: https://drafts.css-houdini.org/css-typed-om/#cssvariablereferencevalue
 [
-    Constructor(CSSOMString variable, optional CSSUnparsedValue? fallback = null),
     Exposed=(Window,LayoutWorklet,PaintWorklet),
-    RaisesException=Constructor,
     ImplementedAs=CSSStyleVariableReferenceValue
 ] interface CSSVariableReferenceValue {
+    [RaisesException] constructor(CSSOMString variable, optional CSSUnparsedValue? fallback = null);
     [RaisesException=Setter] attribute CSSOMString variable;
     readonly attribute CSSUnparsedValue? fallback;
 };
diff --git a/third_party/blink/renderer/core/css/cssom/paint_worklet_deferred_image.cc b/third_party/blink/renderer/core/css/cssom/paint_worklet_deferred_image.cc
index f37d073..35a58b2 100644
--- a/third_party/blink/renderer/core/css/cssom/paint_worklet_deferred_image.cc
+++ b/third_party/blink/renderer/core/css/cssom/paint_worklet_deferred_image.cc
@@ -37,7 +37,8 @@
 }
 
 void PaintWorkletDeferredImage::DrawTile(GraphicsContext& context,
-                                         const FloatRect& src_rect) {
+                                         const FloatRect& src_rect,
+                                         RespectImageOrientationEnum) {
   DrawInternal(context.Canvas(), FloatRect(), src_rect, context.FillFlags(),
                kClampImageToSourceRect, image_);
 }
@@ -45,7 +46,8 @@
 sk_sp<PaintShader> PaintWorkletDeferredImage::CreateShader(
     const FloatRect& tile_rect,
     const SkMatrix* pattern_matrix,
-    const FloatRect& src_rect) {
+    const FloatRect& src_rect,
+    RespectImageOrientationEnum) {
   SkRect tile = SkRect::MakeXYWH(tile_rect.X(), tile_rect.Y(),
                                  tile_rect.Width(), tile_rect.Height());
   sk_sp<PaintShader> shader = PaintShader::MakeImage(
diff --git a/third_party/blink/renderer/core/css/cssom/paint_worklet_deferred_image.h b/third_party/blink/renderer/core/css/cssom/paint_worklet_deferred_image.h
index 11429a2..d82c5620 100644
--- a/third_party/blink/renderer/core/css/cssom/paint_worklet_deferred_image.h
+++ b/third_party/blink/renderer/core/css/cssom/paint_worklet_deferred_image.h
@@ -38,10 +38,13 @@
             RespectImageOrientationEnum,
             ImageClampingMode,
             ImageDecodingMode) override;
-  void DrawTile(GraphicsContext&, const FloatRect&) override;
+  void DrawTile(GraphicsContext&,
+                const FloatRect&,
+                RespectImageOrientationEnum) override;
   sk_sp<cc::PaintShader> CreateShader(const FloatRect& tile_rect,
                                       const SkMatrix* pattern_matrix,
-                                      const FloatRect& src_rect) final;
+                                      const FloatRect& src_rect,
+                                      RespectImageOrientationEnum) final;
 
  private:
   PaintWorkletDeferredImage(scoped_refptr<PaintWorkletInput> input,
diff --git a/third_party/blink/renderer/core/css/font_face.idl b/third_party/blink/renderer/core/css/font_face.idl
index 3487e4d..5120c44 100644
--- a/third_party/blink/renderer/core/css/font_face.idl
+++ b/third_party/blink/renderer/core/css/font_face.idl
@@ -40,11 +40,10 @@
 [
     ActiveScriptWrappable,
     Exposed=(Window,Worker),
-    // FIXME: This should be (DOMString or BinaryData), where BinaryData is typedef of (ArrayBuffer or ArrayBufferView)
-    Constructor(DOMString family, (DOMString or ArrayBuffer or ArrayBufferView) source, optional FontFaceDescriptors descriptors),
-    ConstructorCallWith=ExecutionContext,
     MeasureAs=FontFaceConstructor
 ] interface FontFace {
+    // FIXME: This should be (DOMString or BinaryData), where BinaryData is typedef of (ArrayBuffer or ArrayBufferView)
+    [CallWith=ExecutionContext] constructor(DOMString family, (DOMString or ArrayBuffer or ArrayBufferView) source, optional FontFaceDescriptors descriptors);
     [RaisesException=Setter, SetterCallWith=ExecutionContext] attribute DOMString family;
     [RaisesException=Setter, SetterCallWith=ExecutionContext] attribute DOMString style;
     [RaisesException=Setter, SetterCallWith=ExecutionContext] attribute DOMString weight;
diff --git a/third_party/blink/renderer/core/css/font_face_set.h b/third_party/blink/renderer/core/css/font_face_set.h
index f71d240..2eff2ce 100644
--- a/third_party/blink/renderer/core/css/font_face_set.h
+++ b/third_party/blink/renderer/core/css/font_face_set.h
@@ -131,11 +131,6 @@
     USING_GARBAGE_COLLECTED_MIXIN(LoadFontPromiseResolver);
 
    public:
-    static LoadFontPromiseResolver* Create(FontFaceArray faces,
-                                           ScriptState* script_state) {
-      return MakeGarbageCollected<LoadFontPromiseResolver>(faces, script_state);
-    }
-
     LoadFontPromiseResolver(FontFaceArray faces, ScriptState* script_state)
         : num_loading_(faces.size()),
           error_occured_(false),
diff --git a/third_party/blink/renderer/core/css/font_face_set_load_event.idl b/third_party/blink/renderer/core/css/font_face_set_load_event.idl
index 59da6a5..517192a3 100644
--- a/third_party/blink/renderer/core/css/font_face_set_load_event.idl
+++ b/third_party/blink/renderer/core/css/font_face_set_load_event.idl
@@ -31,9 +31,9 @@
 // https://drafts.csswg.org/css-font-loading/#fontfacesetloadevent
 
 [
-  Constructor(DOMString type, optional FontFaceSetLoadEventInit eventInitDict),
   // TODO(loonybear): Exposed=(Window,Worker)
   Exposed=Window
 ] interface FontFaceSetLoadEvent : Event {
+    constructor(DOMString type, optional FontFaceSetLoadEventInit eventInitDict);
     [SameObject] readonly attribute FrozenArray<FontFace> fontfaces;
 };
diff --git a/third_party/blink/renderer/core/css/mathml.css b/third_party/blink/renderer/core/css/mathml.css
index 514a4621..878d91f 100644
--- a/third_party/blink/renderer/core/css/mathml.css
+++ b/third_party/blink/renderer/core/css/mathml.css
@@ -29,11 +29,11 @@
 
 /* By default, we only display the MathML formulas without any formatting other than the one specified by the display attribute. */
 math {
-    display: inline;
+    display: inline-math;
 }
 
 math[display="block"] {
-    display: block;
+    display: math;
     text-align: center;
 }
 
@@ -46,13 +46,16 @@
     outline: auto 1px -webkit-focus-ring-color;
 }
 
-/* We hide the PresentationExpression constructions that are children of a <semantics> element.
-   http://www.w3.org/TR/MathML/appendixa.html#parsing_PresentationExpression */
-semantics > mi, semantics > mn, semantics > mo, semantics > mtext, semantics > mspace, semantics > ms, semantics > maligngroup, semantics > malignmark, semantics > mrow, semantics > mfrac, semantics > msqrt, semantics > mroot, semantics > mstyle, semantics > merror, semantics > mpadded, semantics > mphantom, semantics > mfenced, semantics > menclose, semantics > msub, semantics > msup, semantics > msubsup, semantics > munder, semantics > mover, semantics > munderover, semantics > mmultiscripts, semantics > mtable, semantics > mstack, semantics > mlongdiv, semantics > maction {
-    display: none;
+maction, merror, mphantom, mrow, mstyle
+{
+    display: math;
 }
 
-/* However, we display all the annotations. */
-annotation, annotation-xml {
-    display: inline-block;
+mphantom {
+    visibility: hidden;
+}
+
+merror {
+    color: red;
+    background-color: lightYellow;
 }
diff --git a/third_party/blink/renderer/core/css/media_query_list_event.idl b/third_party/blink/renderer/core/css/media_query_list_event.idl
index fdc30d5..4f7f293c 100644
--- a/third_party/blink/renderer/core/css/media_query_list_event.idl
+++ b/third_party/blink/renderer/core/css/media_query_list_event.idl
@@ -5,9 +5,9 @@
 // https://drafts.csswg.org/cssom-view/#mediaquerylistevent
 
 [
-    Exposed=Window,
-    Constructor(DOMString type, optional MediaQueryListEventInit eventInitDict)
+    Exposed=Window
 ] interface MediaQueryListEvent : Event {
+    constructor(DOMString type, optional MediaQueryListEventInit eventInitDict);
     readonly attribute DOMString media;
     readonly attribute boolean matches;
 };
diff --git a/third_party/blink/renderer/core/css/media_query_matcher.h b/third_party/blink/renderer/core/css/media_query_matcher.h
index 8181197..1d4835e 100644
--- a/third_party/blink/renderer/core/css/media_query_matcher.h
+++ b/third_party/blink/renderer/core/css/media_query_matcher.h
@@ -42,8 +42,6 @@
 class CORE_EXPORT MediaQueryMatcher final
     : public GarbageCollected<MediaQueryMatcher> {
  public:
-  static MediaQueryMatcher* Create(Document&);
-
   explicit MediaQueryMatcher(Document&);
   ~MediaQueryMatcher();
 
diff --git a/third_party/blink/renderer/core/css/parser/css_parser_impl.cc b/third_party/blink/renderer/core/css/parser/css_parser_impl.cc
index 69c969f..a998c01c 100644
--- a/third_party/blink/renderer/core/css/parser/css_parser_impl.cc
+++ b/third_party/blink/renderer/core/css/parser/css_parser_impl.cc
@@ -836,7 +836,7 @@
   }
 
   ConsumeDeclarationList(block, StyleRule::kProperty);
-  return StyleRuleProperty::Create(
+  return MakeGarbageCollected<StyleRuleProperty>(
       name, CreateCSSPropertyValueSet(parsed_properties_, context_->Mode()));
 }
 
diff --git a/third_party/blink/renderer/core/css/parser/css_property_parser.cc b/third_party/blink/renderer/core/css/parser/css_property_parser.cc
index 1f6e911c..949dbf7 100644
--- a/third_party/blink/renderer/core/css/parser/css_property_parser.cc
+++ b/third_party/blink/renderer/core/css/parser/css_property_parser.cc
@@ -157,7 +157,8 @@
 
     if (is_shorthand) {
       const cssvalue::CSSPendingSubstitutionValue& pending_value =
-          *cssvalue::CSSPendingSubstitutionValue::Create(property_id, variable);
+          *MakeGarbageCollected<cssvalue::CSSPendingSubstitutionValue>(
+              property_id, variable);
       css_property_parser_helpers::AddExpandedPropertyForValue(
           property_id, pending_value, important, *parsed_properties_);
     } else {
diff --git a/third_party/blink/renderer/core/css/parser/css_property_parser_helpers.cc b/third_party/blink/renderer/core/css/parser/css_property_parser_helpers.cc
index c091695..3a7931c 100644
--- a/third_party/blink/renderer/core/css/parser/css_property_parser_helpers.cc
+++ b/third_party/blink/renderer/core/css/parser/css_property_parser_helpers.cc
@@ -705,9 +705,9 @@
   StringView url = ConsumeUrlAsStringView(range, context);
   if (url.IsNull())
     return nullptr;
-  String url_string = url.ToString();
-  return cssvalue::CSSURIValue::Create(url_string,
-                                       context->CompleteURL(url_string));
+  AtomicString url_string(url.ToString());
+  return MakeGarbageCollected<cssvalue::CSSURIValue>(
+      url_string, context->CompleteURL(url_string));
 }
 
 static int ClampRGBComponent(const CSSPrimitiveValue& value) {
@@ -1313,16 +1313,16 @@
       return nullptr;
   }
 
-  cssvalue::CSSGradientValue* result =
-      (id == CSSValueID::kRadial)
-          ? cssvalue::CSSRadialGradientValue::Create(
-                first_x, first_y, first_radius, second_x, second_y,
-                second_radius, cssvalue::kNonRepeating,
-                cssvalue::kCSSDeprecatedRadialGradient)
-          : MakeGarbageCollected<cssvalue::CSSLinearGradientValue>(
-                first_x, first_y, second_x, second_y, nullptr,
-                cssvalue::kNonRepeating,
-                cssvalue::kCSSDeprecatedLinearGradient);
+  cssvalue::CSSGradientValue* result;
+  if (id == CSSValueID::kRadial) {
+    result = MakeGarbageCollected<cssvalue::CSSRadialGradientValue>(
+        first_x, first_y, first_radius, second_x, second_y, second_radius,
+        cssvalue::kNonRepeating, cssvalue::kCSSDeprecatedRadialGradient);
+  } else {
+    result = MakeGarbageCollected<cssvalue::CSSLinearGradientValue>(
+        first_x, first_y, second_x, second_y, nullptr, cssvalue::kNonRepeating,
+        cssvalue::kCSSDeprecatedLinearGradient);
+  }
   cssvalue::CSSGradientColorStop stop;
   while (ConsumeCommaIncludingWhitespace(args)) {
     if (!ConsumeDeprecatedGradientColorStop(args, stop, css_parser_mode))
@@ -1439,9 +1439,10 @@
     ConsumeCommaIncludingWhitespace(args);
   }
 
-  cssvalue::CSSGradientValue* result = cssvalue::CSSRadialGradientValue::Create(
-      center_x, center_y, shape, size_keyword, horizontal_size, vertical_size,
-      repeating, cssvalue::kCSSPrefixedRadialGradient);
+  cssvalue::CSSGradientValue* result =
+      MakeGarbageCollected<cssvalue::CSSRadialGradientValue>(
+          center_x, center_y, shape, size_keyword, horizontal_size,
+          vertical_size, repeating, cssvalue::kCSSPrefixedRadialGradient);
   return ConsumeGradientColorStops(args, context, result,
                                    ConsumeGradientLengthOrPercent)
              ? result
@@ -1530,9 +1531,10 @@
     return nullptr;
   }
 
-  cssvalue::CSSGradientValue* result = cssvalue::CSSRadialGradientValue::Create(
-      center_x, center_y, shape, size_keyword, horizontal_size, vertical_size,
-      repeating, cssvalue::kCSSRadialGradient);
+  cssvalue::CSSGradientValue* result =
+      MakeGarbageCollected<cssvalue::CSSRadialGradientValue>(
+          center_x, center_y, shape, size_keyword, horizontal_size,
+          vertical_size, repeating, cssvalue::kCSSRadialGradient);
   return ConsumeGradientColorStops(args, context, result,
                                    ConsumeGradientLengthOrPercent)
              ? result
@@ -1770,7 +1772,7 @@
 static CSSValue* CreateCSSImageValueWithReferrer(
     const AtomicString& raw_value,
     const CSSParserContext* context) {
-  CSSValue* image_value = CSSImageValue::Create(
+  CSSValue* image_value = MakeGarbageCollected<CSSImageValue>(
       raw_value, context->CompleteURL(raw_value), context->GetReferrer(),
       context->IsOriginClean() ? OriginClean::kTrue : OriginClean::kFalse);
   return image_value;
diff --git a/third_party/blink/renderer/core/css/properties/computed_style_utils.cc b/third_party/blink/renderer/core/css/properties/computed_style_utils.cc
index b4ee2719..8cbc4df 100644
--- a/third_party/blink/renderer/core/css/properties/computed_style_utils.cc
+++ b/third_party/blink/renderer/core/css/properties/computed_style_utils.cc
@@ -1485,30 +1485,27 @@
 CSSValue* ComputedStyleUtils::TouchActionFlagsToCSSValue(
     TouchAction touch_action) {
   CSSValueList* list = CSSValueList::CreateSpaceSeparated();
-  if (touch_action == TouchAction::kTouchActionAuto) {
+  if (touch_action == TouchAction::kAuto) {
     list->Append(*CSSIdentifierValue::Create(CSSValueID::kAuto));
-  } else if (touch_action == TouchAction::kTouchActionNone) {
+  } else if (touch_action == TouchAction::kNone) {
     list->Append(*CSSIdentifierValue::Create(CSSValueID::kNone));
-  } else if (touch_action == TouchAction::kTouchActionManipulation) {
+  } else if (touch_action == TouchAction::kManipulation) {
     list->Append(*CSSIdentifierValue::Create(CSSValueID::kManipulation));
   } else {
-    if ((touch_action & TouchAction::kTouchActionPanX) ==
-        TouchAction::kTouchActionPanX)
+    if ((touch_action & TouchAction::kPanX) == TouchAction::kPanX)
       list->Append(*CSSIdentifierValue::Create(CSSValueID::kPanX));
-    else if (touch_action & TouchAction::kTouchActionPanLeft)
+    else if ((touch_action & TouchAction::kPanLeft) != TouchAction::kNone)
       list->Append(*CSSIdentifierValue::Create(CSSValueID::kPanLeft));
-    else if (touch_action & TouchAction::kTouchActionPanRight)
+    else if ((touch_action & TouchAction::kPanRight) != TouchAction::kNone)
       list->Append(*CSSIdentifierValue::Create(CSSValueID::kPanRight));
-    if ((touch_action & TouchAction::kTouchActionPanY) ==
-        TouchAction::kTouchActionPanY)
+    if ((touch_action & TouchAction::kPanY) == TouchAction::kPanY)
       list->Append(*CSSIdentifierValue::Create(CSSValueID::kPanY));
-    else if (touch_action & TouchAction::kTouchActionPanUp)
+    else if ((touch_action & TouchAction::kPanUp) != TouchAction::kNone)
       list->Append(*CSSIdentifierValue::Create(CSSValueID::kPanUp));
-    else if (touch_action & TouchAction::kTouchActionPanDown)
+    else if ((touch_action & TouchAction::kPanDown) != TouchAction::kNone)
       list->Append(*CSSIdentifierValue::Create(CSSValueID::kPanDown));
 
-    if ((touch_action & TouchAction::kTouchActionPinchZoom) ==
-        TouchAction::kTouchActionPinchZoom)
+    if ((touch_action & TouchAction::kPinchZoom) == TouchAction::kPinchZoom)
       list->Append(*CSSIdentifierValue::Create(CSSValueID::kPinchZoom));
   }
 
@@ -1658,7 +1655,8 @@
 
       // Canonical form of step timing function is step(n, type) or step(n) even
       // if initially parsed as step-start or step-end.
-      return cssvalue::CSSStepsTimingFunctionValue::Create(steps, position);
+      return MakeGarbageCollected<cssvalue::CSSStepsTimingFunctionValue>(
+          steps, position);
     }
 
     default:
@@ -2041,7 +2039,8 @@
     const Color& current_color) {
   if (paint.type >= SVG_PAINTTYPE_URI_NONE) {
     CSSValueList* values = CSSValueList::CreateSpaceSeparated();
-    values->Append(*cssvalue::CSSURIValue::Create(paint.GetUrl()));
+    values->Append(
+        *MakeGarbageCollected<cssvalue::CSSURIValue>(paint.GetUrl()));
     if (paint.type == SVG_PAINTTYPE_URI_NONE)
       values->Append(*CSSIdentifierValue::Create(CSSValueID::kNone));
     else if (paint.type == SVG_PAINTTYPE_URI_CURRENTCOLOR)
@@ -2061,7 +2060,7 @@
 CSSValue* ComputedStyleUtils::ValueForSVGResource(
     const StyleSVGResource* resource) {
   if (resource)
-    return cssvalue::CSSURIValue::Create(resource->Url());
+    return MakeGarbageCollected<cssvalue::CSSURIValue>(resource->Url());
   return CSSIdentifierValue::Create(CSSValueID::kNone);
 }
 
diff --git a/third_party/blink/renderer/core/css/properties/css_parsing_utils.cc b/third_party/blink/renderer/core/css/properties/css_parsing_utils.cc
index f71c5c32..2785cee6 100644
--- a/third_party/blink/renderer/core/css/properties/css_parsing_utils.cc
+++ b/third_party/blink/renderer/core/css/properties/css_parsing_utils.cc
@@ -176,8 +176,8 @@
   }
 
   range = range_copy;
-  return cssvalue::CSSStepsTimingFunctionValue::Create(steps->GetIntValue(),
-                                                       position);
+  return MakeGarbageCollected<cssvalue::CSSStepsTimingFunctionValue>(
+      steps->GetIntValue(), position);
 }
 
 CSSValue* ConsumeCubicBezier(CSSParserTokenRange& range) {
diff --git a/third_party/blink/renderer/core/css/properties/css_property.h b/third_party/blink/renderer/core/css/properties/css_property.h
index a3d418c..bb1cf89f5 100644
--- a/third_party/blink/renderer/core/css/properties/css_property.h
+++ b/third_party/blink/renderer/core/css/properties/css_property.h
@@ -24,6 +24,8 @@
 
 class CORE_EXPORT CSSProperty : public CSSUnresolvedProperty {
  public:
+  using Flags = uint16_t;
+
   static const CSSProperty& Get(CSSPropertyID);
 
   // For backwards compatibility when passing around CSSUnresolvedProperty
@@ -37,6 +39,7 @@
   bool IDEquals(CSSPropertyID id) const { return PropertyID() == id; }
   bool IsResolvedProperty() const override { return true; }
 
+  Flags GetFlags() const { return flags_; }
   bool IsInterpolable() const { return flags_ & kInterpolable; }
   bool IsCompositableProperty() const { return flags_ & kCompositableProperty; }
   bool IsDescriptor() const { return flags_ & kDescriptor; }
@@ -87,8 +90,7 @@
       size_t length,
       Vector<const CSSProperty*>&);
 
- protected:
-  enum Flag : uint16_t {
+  enum Flag : Flags {
     kInterpolable = 1 << 0,
     kCompositableProperty = 1 << 1,
     kDescriptor = 1 << 2,
@@ -106,7 +108,7 @@
   };
 
   constexpr CSSProperty(CSSPropertyID property_id,
-                        uint16_t flags,
+                        Flags flags,
                         char repetition_separator)
       : CSSUnresolvedProperty(),
         property_id_(property_id),
@@ -115,7 +117,7 @@
 
  private:
   CSSPropertyID property_id_;
-  uint16_t flags_;
+  Flags flags_;
   char repetition_separator_;
 };
 
diff --git a/third_party/blink/renderer/core/css/properties/longhands/longhands_custom.cc b/third_party/blink/renderer/core/css/properties/longhands/longhands_custom.cc
index 7ca4cbf..85ee083 100644
--- a/third_party/blink/renderer/core/css/properties/longhands/longhands_custom.cc
+++ b/third_party/blink/renderer/core/css/properties/longhands/longhands_custom.cc
@@ -799,11 +799,11 @@
 }
 
 const CSSValue* BorderImageOutset::InitialValue() const {
-  DEFINE_STATIC_LOCAL(
-      const Persistent<CSSQuadValue>, value,
-      (CSSQuadValue::Create(CSSNumericLiteralValue::Create(
-                                0, CSSPrimitiveValue::UnitType::kInteger),
-                            CSSQuadValue::kSerializeAsQuad)));
+  DEFINE_STATIC_LOCAL(const Persistent<CSSQuadValue>, value,
+                      (MakeGarbageCollected<CSSQuadValue>(
+                          CSSNumericLiteralValue::Create(
+                              0, CSSPrimitiveValue::UnitType::kInteger),
+                          CSSQuadValue::kSerializeAsQuad)));
   return value;
 }
 
@@ -848,7 +848,7 @@
   DEFINE_STATIC_LOCAL(
       const Persistent<cssvalue::CSSBorderImageSliceValue>, value,
       (MakeGarbageCollected<cssvalue::CSSBorderImageSliceValue>(
-          CSSQuadValue::Create(
+          MakeGarbageCollected<CSSQuadValue>(
               CSSNumericLiteralValue::Create(
                   100, CSSPrimitiveValue::UnitType::kPercentage),
               CSSQuadValue::kSerializeAsQuad),
@@ -904,11 +904,11 @@
 }
 
 const CSSValue* BorderImageWidth::InitialValue() const {
-  DEFINE_STATIC_LOCAL(
-      const Persistent<CSSQuadValue>, value,
-      (CSSQuadValue::Create(CSSNumericLiteralValue::Create(
-                                1, CSSPrimitiveValue::UnitType::kInteger),
-                            CSSQuadValue::kSerializeAsQuad)));
+  DEFINE_STATIC_LOCAL(const Persistent<CSSQuadValue>, value,
+                      (MakeGarbageCollected<CSSQuadValue>(
+                          CSSNumericLiteralValue::Create(
+                              1, CSSPrimitiveValue::UnitType::kInteger),
+                          CSSQuadValue::kSerializeAsQuad)));
   return value;
 }
 
@@ -1362,8 +1362,8 @@
           style, To<ShapeClipPathOperation>(operation)->GetBasicShape());
     }
     if (operation->GetType() == ClipPathOperation::REFERENCE) {
-      return cssvalue::CSSURIValue::Create(
-          To<ReferenceClipPathOperation>(operation)->Url());
+      AtomicString url = To<ReferenceClipPathOperation>(operation)->Url();
+      return MakeGarbageCollected<cssvalue::CSSURIValue>(url);
     }
   }
   return CSSIdentifierValue::Create(CSSValueID::kNone);
@@ -3249,11 +3249,8 @@
   DCHECK(RuntimeEnabledFeatures::ImageOrientationEnabled());
   if (range.Peek().Id() == CSSValueID::kFromImage)
     return css_property_parser_helpers::ConsumeIdent(range);
-  if (range.Peek().GetType() != kNumberToken) {
-    CSSPrimitiveValue* angle = css_property_parser_helpers::ConsumeAngle(
-        range, &context, base::Optional<WebFeature>());
-    if (angle && angle->GetDoubleValue() == 0)
-      return angle;
+  if (range.Peek().Id() == CSSValueID::kNone) {
+    return css_property_parser_helpers::ConsumeIdent(range);
   }
   return nullptr;
 }
@@ -3265,8 +3262,7 @@
     bool allow_visited_style) const {
   if (style.RespectImageOrientation() == kRespectImageOrientation)
     return CSSIdentifierValue::Create(CSSValueID::kFromImage);
-  return CSSNumericLiteralValue::Create(0,
-                                        CSSPrimitiveValue::UnitType::kDegrees);
+  return CSSIdentifierValue::Create(CSSValueID::kNone);
 }
 
 const CSSValue* ImageRendering::CSSValueFromComputedStyleInternal(
diff --git a/third_party/blink/renderer/core/css/resolver/style_adjuster.cc b/third_party/blink/renderer/core/css/resolver/style_adjuster.cc
index 505f382..ac929aa 100644
--- a/third_party/blink/renderer/core/css/resolver/style_adjuster.cc
+++ b/third_party/blink/renderer/core/css/resolver/style_adjuster.cc
@@ -74,7 +74,7 @@
       element && element == element->GetDocument().documentElement() &&
       element->GetDocument().LocalOwner();
   if (style.ScrollsOverflow() || is_child_document)
-    return touch_action | TouchAction::kTouchActionPan;
+    return touch_action | TouchAction::kPan;
   return touch_action;
 }
 
@@ -197,6 +197,22 @@
   style.SetPosition(EPosition::kStatic);
 }
 
+static void AdjustStyleForMarker(ComputedStyle& style,
+                                 const ComputedStyle& parent_style) {
+  if (style.StyleType() != kPseudoIdMarker)
+    return;
+
+  // Style adjustments for markers with 'content: normal' are done in layout.
+  if (!style.GetContentData())
+    return;
+
+  // Outside list markers should generate a block container.
+  if (parent_style.ListStylePosition() == EListStylePosition::kOutside) {
+    DCHECK_EQ(style.Display(), EDisplay::kInline);
+    style.SetDisplay(EDisplay::kInlineBlock);
+  }
+}
+
 static void AdjustStyleForHTMLElement(ComputedStyle& style,
                                       HTMLElement& element) {
   // <div> and <span> are the most common elements on the web, we skip all the
@@ -467,7 +483,7 @@
   bool is_layout_object_needed =
       element && element->LayoutObjectIsNeeded(style);
 
-  TouchAction element_touch_action = TouchAction::kTouchActionAuto;
+  TouchAction element_touch_action = TouchAction::kAuto;
   // Touch actions are only supported by elements that support both the CSS
   // width and height properties.
   // See https://www.w3.org/TR/pointerevents/#the-touch-action-css-property.
@@ -486,7 +502,7 @@
   // Apply touch action inherited from parent frame.
   if (is_child_document && element->GetDocument().GetFrame()) {
     inherited_action &=
-        TouchAction::kTouchActionPan |
+        TouchAction::kPan |
         element->GetDocument().GetFrame()->InheritedEffectiveTouchAction();
   }
 
@@ -500,9 +516,9 @@
   inherited_action =
       AdjustTouchActionForElement(inherited_action, style, element);
 
-  TouchAction enforced_by_policy = TouchAction::kTouchActionNone;
+  TouchAction enforced_by_policy = TouchAction::kNone;
   if (element->GetDocument().IsVerticalScrollEnforced())
-    enforced_by_policy = TouchAction::kTouchActionPanY;
+    enforced_by_policy = TouchAction::kPanY;
 
   // Apply the adjusted parent effective touch actions.
   style.SetEffectiveTouchAction((element_touch_action & inherited_action) |
@@ -608,6 +624,7 @@
     // We don't adjust the first letter style earlier because we may change the
     // display setting in adjustStyeForTagName() above.
     AdjustStyleForFirstLetter(style);
+    AdjustStyleForMarker(style, parent_style);
 
     AdjustStyleForDisplay(style, layout_parent_style,
                           element ? &element->GetDocument() : nullptr);
diff --git a/third_party/blink/renderer/core/css/resolver/style_adjuster_test.cc b/third_party/blink/renderer/core/css/resolver/style_adjuster_test.cc
index f2ed5f9..070db9a 100644
--- a/third_party/blink/renderer/core/css/resolver/style_adjuster_test.cc
+++ b/third_party/blink/renderer/core/css/resolver/style_adjuster_test.cc
@@ -31,13 +31,13 @@
   UpdateAllLifecyclePhasesForTest();
 
   Element* target = ChildDocument().getElementById("target");
-  EXPECT_EQ(TouchAction::kTouchActionNone,
+  EXPECT_EQ(TouchAction::kNone,
             target->GetComputedStyle()->GetEffectiveTouchAction());
 
   Element* owner = GetDocument().getElementById("owner");
   owner->setAttribute(html_names::kStyleAttr, "touch-action: auto");
   UpdateAllLifecyclePhasesForTest();
-  EXPECT_EQ(TouchAction::kTouchActionPinchZoom,
+  EXPECT_EQ(TouchAction::kPinchZoom,
             target->GetComputedStyle()->GetEffectiveTouchAction());
 }
 
@@ -53,7 +53,7 @@
   UpdateAllLifecyclePhasesForTest();
 
   Element* target = GetDocument().getElementById("target");
-  EXPECT_EQ(TouchAction::kTouchActionManipulation,
+  EXPECT_EQ(TouchAction::kManipulation,
             target->GetComputedStyle()->GetEffectiveTouchAction());
 }
 
@@ -69,20 +69,20 @@
   UpdateAllLifecyclePhasesForTest();
 
   Element* target = GetDocument().getElementById("target");
-  EXPECT_EQ(TouchAction::kTouchActionPanX,
+  EXPECT_EQ(TouchAction::kPanX,
             target->GetComputedStyle()->GetEffectiveTouchAction());
 
   Element* ancestor = GetDocument().getElementById("ancestor");
   ancestor->setAttribute(html_names::kStyleAttr, "touch-action: pan-y");
   UpdateAllLifecyclePhasesForTest();
-  EXPECT_EQ(TouchAction::kTouchActionPanY,
+  EXPECT_EQ(TouchAction::kPanY,
             target->GetComputedStyle()->GetEffectiveTouchAction());
 
   Element* potential_scroller =
       GetDocument().getElementById("potential-scroller");
   potential_scroller->setAttribute(html_names::kStyleAttr, "overflow: scroll");
   UpdateAllLifecyclePhasesForTest();
-  EXPECT_EQ(TouchAction::kTouchActionPan,
+  EXPECT_EQ(TouchAction::kPan,
             target->GetComputedStyle()->GetEffectiveTouchAction());
 }
 
@@ -97,13 +97,13 @@
   UpdateAllLifecyclePhasesForTest();
 
   Element* target = GetDocument().getElementById("target");
-  EXPECT_EQ(TouchAction::kTouchActionPanRight,
+  EXPECT_EQ(TouchAction::kPanRight,
             target->GetComputedStyle()->GetEffectiveTouchAction());
 
   Element* parent = GetDocument().getElementById("parent");
   parent->setAttribute(html_names::kStyleAttr, "touch-action: auto");
   UpdateAllLifecyclePhasesForTest();
-  EXPECT_EQ(TouchAction::kTouchActionPanX,
+  EXPECT_EQ(TouchAction::kPanX,
             target->GetComputedStyle()->GetEffectiveTouchAction());
 }
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/css/resolver/style_builder_converter.cc b/third_party/blink/renderer/core/css/resolver/style_builder_converter.cc
index fe1a6a2..950fd0c0 100644
--- a/third_party/blink/renderer/core/css/resolver/style_builder_converter.cc
+++ b/third_party/blink/renderer/core/css/resolver/style_builder_converter.cc
@@ -1683,11 +1683,11 @@
 RespectImageOrientationEnum StyleBuilderConverter::ConvertImageOrientation(
     StyleResolverState& state,
     const CSSValue& value) {
+  // The default is kFromImage, so branch on the only other valid value, kNone
   auto* identifier_value = DynamicTo<CSSIdentifierValue>(value);
-  return identifier_value &&
-                 identifier_value->GetValueID() == CSSValueID::kFromImage
-             ? kRespectImageOrientation
-             : kDoNotRespectImageOrientation;
+  return identifier_value && identifier_value->GetValueID() == CSSValueID::kNone
+             ? kDoNotRespectImageOrientation
+             : kRespectImageOrientation;
 }
 
 scoped_refptr<StylePath> StyleBuilderConverter::ConvertPathOrNone(
diff --git a/third_party/blink/renderer/core/css/resolver/style_cascade.cc b/third_party/blink/renderer/core/css/resolver/style_cascade.cc
index 3b0f06d..fa4726bf 100644
--- a/third_party/blink/renderer/core/css/resolver/style_cascade.cc
+++ b/third_party/blink/renderer/core/css/resolver/style_cascade.cc
@@ -119,7 +119,11 @@
 }
 
 void StyleCascade::Apply(Animator& animator) {
-  Resolver resolver(animator);
+  Resolver resolver(animator, excluder_);
+
+  // Affects the computed value of 'color', hence needs to happen before
+  // high-priority properties.
+  Apply(GetCSSPropertyColorScheme(), resolver);
 
   // TODO(crbug.com/985031): Set bits ::Add-time to know if we need to do this.
   ApplyHighPriority(resolver);
@@ -130,6 +134,29 @@
     const CSSPropertyName& name = iter->key;
     Apply(name, resolver);
   }
+
+  excluder_.Clear();
+}
+
+void StyleCascade::Exclude(CSSProperty::Flag flag, bool set) {
+  excluder_.Exclude(flag, set);
+}
+
+void StyleCascade::Excluder::Exclude(CSSProperty::Flag flag, bool set) {
+  if (set)
+    flags_ |= flag;
+  else
+    flags_ &= ~flag;
+  mask_ |= flag;
+}
+
+bool StyleCascade::Excluder::IsExcluded(const CSSProperty& property) const {
+  return ~(property.GetFlags() ^ flags_) & mask_;
+}
+
+void StyleCascade::Excluder::Clear() {
+  flags_ = 0;
+  mask_ = 0;
 }
 
 void StyleCascade::RemoveAnimationPriority() {
@@ -174,7 +201,7 @@
 
 void StyleCascade::Apply(const CSSPropertyName& name) {
   NullAnimator animator;
-  Resolver resolver(animator);
+  Resolver resolver(animator, excluder_);
   Apply(name, resolver);
 }
 
@@ -192,6 +219,8 @@
   Value cascaded = cascade_.Take(property.GetCSSPropertyName());
   if (cascaded.IsEmpty())
     return;
+  if (resolver.excluder_.IsExcluded(property))
+    return;
 
   const CSSValue* value = cascaded.GetValue();
 
diff --git a/third_party/blink/renderer/core/css/resolver/style_cascade.h b/third_party/blink/renderer/core/css/resolver/style_cascade.h
index d6cbce2..3e1a43d 100644
--- a/third_party/blink/renderer/core/css/resolver/style_cascade.h
+++ b/third_party/blink/renderer/core/css/resolver/style_cascade.h
@@ -8,6 +8,7 @@
 #include "third_party/blink/renderer/core/css/css_property_name.h"
 #include "third_party/blink/renderer/core/css/parser/css_parser_token.h"
 #include "third_party/blink/renderer/core/css/parser/css_parser_token_range.h"
+#include "third_party/blink/renderer/core/css/properties/css_property.h"
 #include "third_party/blink/renderer/platform/heap/handle.h"
 #include "third_party/blink/renderer/platform/wtf/text/text_encoding.h"
 #include "third_party/blink/renderer/platform/wtf/vector.h"
@@ -195,6 +196,45 @@
   // dispatching any CSSPendingInterpolationValues to the given Animator.
   void Apply(Animator&);
 
+  // Excludes properties with a given flag set or unset.
+  //
+  // The exclusion takes effect during Apply, and has no effect for Add.
+  //
+  // Multiple calls to Exclude are combined, and a property is excluded from
+  // application if any of the conditions match.
+  //
+  // For example, the following applies only inherited properties that can't
+  // be interpolated:
+  //
+  //   StyleCascade cascade(state);
+  //   cascade.Add(name1, value1, Priority(Origin::kAuthor));
+  //   cascade.Add(name2, value2, Priority(Origin::kAuthor));
+  //   cascade.Add(name3, value3, Priority(Origin::kAuthor));
+  //   cascade.Exclude(CSSProperty::kInherited, false);
+  //   cascade.Exclude(CSSProperty::kInterpolable, true);
+  //   cascade.Apply();
+  //
+  // Note that calling Apply clears the excludes.
+  //
+  void Exclude(CSSProperty::Flag, bool set);
+
+  class CORE_EXPORT Excluder {
+    STACK_ALLOCATED();
+
+   public:
+    void Exclude(CSSProperty::Flag, bool set);
+    bool IsExcluded(const CSSProperty&) const;
+    void Clear();
+
+   private:
+    // Specifies which bits are significant in flags_. In other words, mask_
+    // contains a '1' at the corresponding position for each flag seen by
+    // Exclude().
+    CSSProperty::Flags mask_ = 0;
+    // Contains the flags to exclude. Only bits set in mask_ matter.
+    CSSProperty::Flags flags_ = 0;
+  };
+
   // Removes all kAnimationPropertyPriority properties from the cascade,
   // without applying the properties. This is used when pre-emptively copying
   // the cascade in case there are animations.
@@ -278,7 +318,8 @@
     friend class StyleCascade;
     friend class TestCascadeResolver;
 
-    Resolver(Animator& animator) : animator_(animator) {}
+    Resolver(Animator& animator, const Excluder& excluder)
+        : animator_(animator), excluder_(excluder) {}
     // If the given property is already being applied, returns true.
     // The return value is the same value you would get from InCycle(), and
     // is just returned for convenience.
@@ -298,6 +339,7 @@
     Animator& animator_;
     wtf_size_t cycle_depth_ = kNotFound;
     Filter filter_;
+    const Excluder& excluder_;
   };
 
   // Automatically locks and unlocks the given property. (See
@@ -501,6 +543,7 @@
   StyleResolverState& state_;
   HeapHashMap<CSSPropertyName, Value> cascade_;
   uint16_t order_ = 0;
+  Excluder excluder_;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/css/resolver/style_cascade_test.cc b/third_party/blink/renderer/core/css/resolver/style_cascade_test.cc
index d72f04ff..dbaef75 100644
--- a/third_party/blink/renderer/core/css/resolver/style_cascade_test.cc
+++ b/third_party/blink/renderer/core/css/resolver/style_cascade_test.cc
@@ -103,6 +103,9 @@
   void Apply(String name) { Apply(*CSSPropertyName::From(name)); }
   void Apply() { cascade_.Apply(); }
   void Apply(StyleCascade::Animator& animator) { cascade_.Apply(animator); }
+  void Exclude(CSSProperty::Flag flag, bool set) {
+    cascade_.Exclude(flag, set);
+  }
 
   HeapVector<CSSPropertyValue, 256> ParseValues(
       const CSSPropertyName& name,
@@ -240,7 +243,7 @@
 
  public:
   TestCascadeResolver(Document& document, StyleAnimator& animator)
-      : document_(&document), resolver_(animator) {}
+      : document_(&document), resolver_(animator, excluder_) {}
   bool InCycle() const { return resolver_.InCycle(); }
   bool DetectCycle(String name) {
     CSSPropertyRef ref(name, *document_);
@@ -254,6 +257,7 @@
   friend class TestCascadeAutoLock;
 
   Member<Document> document_;
+  StyleCascade::Excluder excluder_;
   StyleCascade::Resolver resolver_;
 };
 
@@ -1966,4 +1970,107 @@
   EXPECT_EQ(green, cascade.TakeStyle()->VisitedDependentColor(outline_color));
 }
 
+TEST_F(StyleCascadeTest, ExcludeNothing) {
+  StyleCascade::Excluder excluder;
+  EXPECT_FALSE(excluder.IsExcluded(GetCSSPropertyBackgroundColor()));
+  EXPECT_FALSE(excluder.IsExcluded(GetCSSPropertyColor()));
+  EXPECT_FALSE(excluder.IsExcluded(GetCSSPropertyDisplay()));
+  EXPECT_FALSE(excluder.IsExcluded(GetCSSPropertyFloat()));
+  EXPECT_FALSE(excluder.IsExcluded(GetCSSPropertyInternalVisitedColor()));
+}
+
+TEST_F(StyleCascadeTest, ExcludeInherited) {
+  StyleCascade::Excluder excluder;
+  excluder.Exclude(CSSProperty::kInherited, true);
+  EXPECT_FALSE(excluder.IsExcluded(GetCSSPropertyBackgroundColor()));
+  EXPECT_TRUE(excluder.IsExcluded(GetCSSPropertyColor()));
+  EXPECT_TRUE(excluder.IsExcluded(GetCSSPropertyFontSize()));
+  EXPECT_FALSE(excluder.IsExcluded(GetCSSPropertyDisplay()));
+  EXPECT_FALSE(excluder.IsExcluded(GetCSSPropertyFloat()));
+  EXPECT_TRUE(excluder.IsExcluded(GetCSSPropertyInternalVisitedColor()));
+}
+
+TEST_F(StyleCascadeTest, ExcludeNonInherited) {
+  StyleCascade::Excluder excluder;
+  excluder.Exclude(CSSProperty::kInherited, false);
+  EXPECT_TRUE(excluder.IsExcluded(GetCSSPropertyBackgroundColor()));
+  EXPECT_FALSE(excluder.IsExcluded(GetCSSPropertyColor()));
+  EXPECT_TRUE(excluder.IsExcluded(GetCSSPropertyDisplay()));
+  EXPECT_TRUE(excluder.IsExcluded(GetCSSPropertyFloat()));
+  EXPECT_FALSE(excluder.IsExcluded(GetCSSPropertyInternalVisitedColor()));
+}
+
+TEST_F(StyleCascadeTest, ExcludeVisitedAndInherited) {
+  StyleCascade::Excluder excluder;
+  excluder.Exclude(CSSProperty::kVisited, true);
+  excluder.Exclude(CSSProperty::kInherited, true);
+  EXPECT_FALSE(excluder.IsExcluded(GetCSSPropertyBackgroundColor()));
+  EXPECT_TRUE(excluder.IsExcluded(GetCSSPropertyColor()));
+  EXPECT_FALSE(excluder.IsExcluded(GetCSSPropertyDisplay()));
+  EXPECT_FALSE(excluder.IsExcluded(GetCSSPropertyFloat()));
+  EXPECT_TRUE(
+      excluder.IsExcluded(GetCSSPropertyInternalVisitedBackgroundColor()));
+}
+
+TEST_F(StyleCascadeTest, ExcludeVisitedAndNonInherited) {
+  StyleCascade::Excluder excluder;
+  excluder.Exclude(CSSProperty::kVisited, true);
+  excluder.Exclude(CSSProperty::kInherited, false);
+  EXPECT_TRUE(excluder.IsExcluded(GetCSSPropertyBackgroundColor()));
+  EXPECT_FALSE(excluder.IsExcluded(GetCSSPropertyColor()));
+  EXPECT_TRUE(excluder.IsExcluded(GetCSSPropertyDisplay()));
+  EXPECT_TRUE(excluder.IsExcluded(GetCSSPropertyFloat()));
+  EXPECT_TRUE(excluder.IsExcluded(GetCSSPropertyInternalVisitedColor()));
+}
+
+TEST_F(StyleCascadeTest, ClearExcludes) {
+  StyleCascade::Excluder excluder;
+  excluder.Exclude(CSSProperty::kVisited, true);
+  excluder.Exclude(CSSProperty::kInherited, false);
+  EXPECT_TRUE(excluder.IsExcluded(GetCSSPropertyBackgroundColor()));
+  EXPECT_FALSE(excluder.IsExcluded(GetCSSPropertyColor()));
+  EXPECT_TRUE(excluder.IsExcluded(GetCSSPropertyDisplay()));
+  EXPECT_TRUE(excluder.IsExcluded(GetCSSPropertyFloat()));
+  EXPECT_TRUE(excluder.IsExcluded(GetCSSPropertyInternalVisitedColor()));
+  excluder.Clear();
+  EXPECT_FALSE(excluder.IsExcluded(GetCSSPropertyBackgroundColor()));
+  EXPECT_FALSE(excluder.IsExcluded(GetCSSPropertyColor()));
+  EXPECT_FALSE(excluder.IsExcluded(GetCSSPropertyDisplay()));
+  EXPECT_FALSE(excluder.IsExcluded(GetCSSPropertyFloat()));
+  EXPECT_FALSE(excluder.IsExcluded(GetCSSPropertyInternalVisitedColor()));
+}
+
+TEST_F(StyleCascadeTest, ApplyWithExclude) {
+  TestCascade cascade(GetDocument());
+  cascade.Add("color", "blue", Origin::kAuthor);
+  cascade.Add("background-color", "green", Origin::kAuthor);
+  cascade.Add("display", "inline", Origin::kAuthor);
+  cascade.Apply();
+  cascade.Add("color", "green", Origin::kAuthor);
+  cascade.Add("background-color", "red", Origin::kAuthor);
+  cascade.Add("display", "block", Origin::kAuthor);
+  cascade.Exclude(CSSProperty::kInherited, false);
+  cascade.Apply();
+  EXPECT_EQ("rgb(0, 128, 0)", cascade.ComputedValue("color"));
+  EXPECT_EQ("rgb(0, 128, 0)", cascade.ComputedValue("background-color"));
+  EXPECT_EQ("inline", cascade.ComputedValue("display"));
+}
+
+TEST_F(StyleCascadeTest, ApplyClearsExcludes) {
+  TestCascade cascade(GetDocument());
+  cascade.Add("color", "red", Origin::kAuthor);
+  cascade.Add("background-color", "red", Origin::kAuthor);
+  cascade.Add("display", "inline", Origin::kAuthor);
+  cascade.Exclude(CSSProperty::kInherited, true);
+  cascade.Exclude(CSSProperty::kInherited, false);
+  cascade.Apply();
+  cascade.Add("color", "green", Origin::kAuthor);
+  cascade.Add("background-color", "green", Origin::kAuthor);
+  cascade.Add("display", "block", Origin::kAuthor);
+  cascade.Apply();
+  EXPECT_EQ("rgb(0, 128, 0)", cascade.ComputedValue("color"));
+  EXPECT_EQ("rgb(0, 128, 0)", cascade.ComputedValue("background-color"));
+  EXPECT_EQ("block", cascade.ComputedValue("display"));
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/css/style_rule.h b/third_party/blink/renderer/core/css/style_rule.h
index feaac3a..491ae5ac 100644
--- a/third_party/blink/renderer/core/css/style_rule.h
+++ b/third_party/blink/renderer/core/css/style_rule.h
@@ -189,11 +189,6 @@
 
 class StyleRuleProperty : public StyleRuleBase {
  public:
-  static StyleRuleProperty* Create(const String& name,
-                                   CSSPropertyValueSet* properties) {
-    return MakeGarbageCollected<StyleRuleProperty>(name, properties);
-  }
-
   StyleRuleProperty(const String& name, CSSPropertyValueSet*);
   StyleRuleProperty(const StyleRuleProperty&);
   ~StyleRuleProperty();
diff --git a/third_party/blink/renderer/core/css/style_rule_namespace.h b/third_party/blink/renderer/core/css/style_rule_namespace.h
index 6ae26b4..76331b5 100644
--- a/third_party/blink/renderer/core/css/style_rule_namespace.h
+++ b/third_party/blink/renderer/core/css/style_rule_namespace.h
@@ -14,10 +14,6 @@
 // the parser to pass to a stylesheet
 class StyleRuleNamespace final : public StyleRuleBase {
  public:
-  static StyleRuleNamespace* Create(AtomicString prefix, AtomicString uri) {
-    return MakeGarbageCollected<StyleRuleNamespace>(prefix, uri);
-  }
-
   StyleRuleNamespace(AtomicString prefix, AtomicString uri)
       : StyleRuleBase(kNamespace), prefix_(prefix), uri_(uri) {}
 
diff --git a/third_party/blink/renderer/core/dom/abort_controller.idl b/third_party/blink/renderer/core/dom/abort_controller.idl
index 84afef5..4ebf5e7 100644
--- a/third_party/blink/renderer/core/dom/abort_controller.idl
+++ b/third_party/blink/renderer/core/dom/abort_controller.idl
@@ -5,11 +5,10 @@
 // https://dom.spec.whatwg.org/#interface-abortcontroller
 
 [
-    Constructor,
-    ConstructorCallWith=ExecutionContext,
     Exposed=(Window,Worker),
     Measure
 ] interface AbortController {
+    [CallWith=ExecutionContext] constructor();
     [SameObject] readonly attribute AbortSignal signal;
 
     void abort();
diff --git a/third_party/blink/renderer/core/dom/child_node_list.h b/third_party/blink/renderer/core/dom/child_node_list.h
index b52dc46..80d8608 100644
--- a/third_party/blink/renderer/core/dom/child_node_list.h
+++ b/third_party/blink/renderer/core/dom/child_node_list.h
@@ -70,11 +70,12 @@
   mutable CollectionIndexCache<ChildNodeList, Node> collection_index_cache_;
 };
 
-DEFINE_TYPE_CASTS(ChildNodeList,
-                  NodeList,
-                  nodeList,
-                  nodeList->IsChildNodeList(),
-                  nodeList.IsChildNodeList());
+template <>
+struct DowncastTraits<ChildNodeList> {
+  static bool AllowFrom(const NodeList& nodeList) {
+    return nodeList.IsChildNodeList();
+  }
+};
 
 }  // namespace blink
 
diff --git a/third_party/blink/renderer/core/dom/class_collection.h b/third_party/blink/renderer/core/dom/class_collection.h
index d4f30f19..24f67d94 100644
--- a/third_party/blink/renderer/core/dom/class_collection.h
+++ b/third_party/blink/renderer/core/dom/class_collection.h
@@ -50,11 +50,12 @@
   SpaceSplitString class_names_;
 };
 
-DEFINE_TYPE_CASTS(ClassCollection,
-                  LiveNodeListBase,
-                  collection,
-                  collection->GetType() == kClassCollectionType,
-                  collection.GetType() == kClassCollectionType);
+template <>
+struct DowncastTraits<ClassCollection> {
+  static bool AllowFrom(const LiveNodeListBase& collection) {
+    return collection.GetType() == kClassCollectionType;
+  }
+};
 
 inline bool ClassCollection::ElementMatches(const Element& test_element) const {
   if (!test_element.HasClass())
diff --git a/third_party/blink/renderer/core/dom/comment.idl b/third_party/blink/renderer/core/dom/comment.idl
index 06e5126..428d036 100644
--- a/third_party/blink/renderer/core/dom/comment.idl
+++ b/third_party/blink/renderer/core/dom/comment.idl
@@ -20,8 +20,7 @@
 // https://dom.spec.whatwg.org/#interface-comment
 
 [
-    Constructor(optional DOMString data = ""),
-    ConstructorCallWith=Document,
     Exposed=Window
 ] interface Comment : CharacterData {
+  [CallWith=Document] constructor(optional DOMString data = "");
 };
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
index 08112d9..c0be43b 100644
--- a/third_party/blink/renderer/core/dom/document.cc
+++ b/third_party/blink/renderer/core/dom/document.cc
@@ -1164,8 +1164,6 @@
       document_timing_(*this),
       write_recursion_is_too_deep_(false),
       write_recursion_depth_(0),
-      scripted_animation_controller_(
-          MakeGarbageCollected<ScriptedAnimationController>(this)),
       current_frame_is_throttled_(false),
       registration_context_(initializer.RegistrationContext(this)),
       element_data_cache_clear_timer_(
@@ -2710,7 +2708,7 @@
   // Misc
   {
     PROPAGATE_FROM(document_element_style, GetEffectiveTouchAction,
-                   SetEffectiveTouchAction, TouchAction::kTouchActionAuto);
+                   SetEffectiveTouchAction, TouchAction::kAuto);
     PROPAGATE_FROM(document_element_style, GetScrollBehavior, SetScrollBehavior,
                    kScrollBehaviorAuto);
     PROPAGATE_FROM(document_element_style, DarkColorScheme, SetDarkColorScheme,
@@ -3364,6 +3362,11 @@
 
   probe::DocumentDetached(this);
 
+  // FIXME: consider using ContextLifecycleStateObserver.
+  if (scripted_animation_controller_)
+    scripted_animation_controller_->ClearDocumentPointer();
+  scripted_animation_controller_.Clear();
+
   scripted_idle_task_controller_.Clear();
 
   if (SvgExtensions())
@@ -5685,19 +5688,19 @@
 }
 
 void Document::EnqueueDisplayLockActivationTask(base::OnceClosure task) {
-  scripted_animation_controller_->EnqueueTask(std::move(task));
+  EnsureScriptedAnimationController().EnqueueTask(std::move(task));
 }
 
 void Document::EnqueueAnimationFrameTask(base::OnceClosure task) {
-  scripted_animation_controller_->EnqueueTask(std::move(task));
+  EnsureScriptedAnimationController().EnqueueTask(std::move(task));
 }
 
 void Document::EnqueueAnimationFrameEvent(Event* event) {
-  scripted_animation_controller_->EnqueueEvent(event);
+  EnsureScriptedAnimationController().EnqueueEvent(event);
 }
 
 void Document::EnqueueUniqueAnimationFrameEvent(Event* event) {
-  scripted_animation_controller_->EnqueuePerFrameEvent(event);
+  EnsureScriptedAnimationController().EnqueuePerFrameEvent(event);
 }
 
 void Document::EnqueueScrollEventForNode(Node* target) {
@@ -5707,7 +5710,7 @@
                             ? Event::CreateBubble(event_type_names::kScroll)
                             : Event::Create(event_type_names::kScroll);
   scroll_event->SetTarget(target);
-  scripted_animation_controller_->EnqueuePerFrameEvent(scroll_event);
+  EnsureScriptedAnimationController().EnqueuePerFrameEvent(scroll_event);
 }
 
 void Document::EnqueueScrollEndEventForNode(Node* target) {
@@ -5717,7 +5720,7 @@
           ? Event::CreateBubble(event_type_names::kScrollend)
           : Event::Create(event_type_names::kScrollend);
   scroll_end_event->SetTarget(target);
-  scripted_animation_controller_->EnqueuePerFrameEvent(scroll_end_event);
+  EnsureScriptedAnimationController().EnqueuePerFrameEvent(scroll_end_event);
 }
 
 void Document::EnqueueOverscrollEventForNode(Node* target,
@@ -5728,33 +5731,36 @@
   Event* overscroll_event = OverscrollEvent::Create(
       event_type_names::kOverscroll, bubbles, delta_x, delta_y);
   overscroll_event->SetTarget(target);
-  scripted_animation_controller_->EnqueuePerFrameEvent(overscroll_event);
+  EnsureScriptedAnimationController().EnqueuePerFrameEvent(overscroll_event);
 }
 
 void Document::EnqueueResizeEvent() {
   Event* event = Event::Create(event_type_names::kResize);
   event->SetTarget(domWindow());
-  scripted_animation_controller_->EnqueuePerFrameEvent(event);
+  EnsureScriptedAnimationController().EnqueuePerFrameEvent(event);
 }
 
 void Document::EnqueueMediaQueryChangeListeners(
     HeapVector<Member<MediaQueryListListener>>& listeners) {
-  scripted_animation_controller_->EnqueueMediaQueryChangeListeners(listeners);
+  EnsureScriptedAnimationController().EnqueueMediaQueryChangeListeners(
+      listeners);
 }
 
 void Document::EnqueueVisualViewportScrollEvent() {
   VisualViewportScrollEvent* event = VisualViewportScrollEvent::Create();
   event->SetTarget(domWindow()->visualViewport());
-  scripted_animation_controller_->EnqueuePerFrameEvent(event);
+  EnsureScriptedAnimationController().EnqueuePerFrameEvent(event);
 }
 
 void Document::EnqueueVisualViewportResizeEvent() {
   VisualViewportResizeEvent* event = VisualViewportResizeEvent::Create();
   event->SetTarget(domWindow()->visualViewport());
-  scripted_animation_controller_->EnqueuePerFrameEvent(event);
+  EnsureScriptedAnimationController().EnqueuePerFrameEvent(event);
 }
 
 void Document::DispatchEventsForPrinting() {
+  if (!scripted_animation_controller_)
+    return;
   scripted_animation_controller_->DispatchEventsAndCallbacksForPrinting();
 }
 
@@ -6845,19 +6851,17 @@
   if (!RuntimeEnabledFeatures::MetaColorSchemeEnabled())
     return;
 
-  auto* root_element = documentElement();
-  if (!root_element)
-    return;
-
   const CSSValue* color_scheme = nullptr;
-  for (HTMLMetaElement& meta_element :
-       Traversal<HTMLMetaElement>::DescendantsOf(*root_element)) {
-    if (EqualIgnoringASCIICase(meta_element.GetName(), "color-scheme")) {
-      if ((color_scheme = CSSParser::ParseSingleValue(
-               CSSPropertyID::kColorScheme,
-               meta_element.Content().GetString().StripWhiteSpace(),
-               ElementSheet().Contents()->ParserContext()))) {
-        break;
+  if (auto* head_element = head()) {
+    for (HTMLMetaElement& meta_element :
+         Traversal<HTMLMetaElement>::DescendantsOf(*head_element)) {
+      if (EqualIgnoringASCIICase(meta_element.GetName(), "color-scheme")) {
+        if ((color_scheme = CSSParser::ParseSingleValue(
+                 CSSPropertyID::kColorScheme,
+                 meta_element.Content().GetString().StripWhiteSpace(),
+                 ElementSheet().Contents()->ParserContext()))) {
+          break;
+        }
       }
     }
   }
@@ -7292,9 +7296,15 @@
   frame_->Console().AddMessage(console_message, discard_duplicates);
 }
 
-void Document::TasksWerePaused() {}
+void Document::TasksWerePaused() {
+  if (scripted_animation_controller_)
+    scripted_animation_controller_->Pause();
+}
 
-void Document::TasksWereUnpaused() {}
+void Document::TasksWereUnpaused() {
+  if (scripted_animation_controller_)
+    scripted_animation_controller_->Unpause();
+}
 
 bool Document::TasksNeedPause() {
   Page* page = GetPage();
@@ -7404,17 +7414,33 @@
   UpdateStyleAndLayout();
 }
 
+ScriptedAnimationController& Document::EnsureScriptedAnimationController() {
+  if (!scripted_animation_controller_) {
+    scripted_animation_controller_ =
+        MakeGarbageCollected<ScriptedAnimationController>(this);
+    // We need to make sure that we don't start up the animation controller on a
+    // background tab, for example.
+    if (!GetPage())
+      scripted_animation_controller_->Pause();
+  }
+  return *scripted_animation_controller_;
+}
+
 int Document::RequestAnimationFrame(
     FrameRequestCallbackCollection::FrameCallback* callback) {
-  return scripted_animation_controller_->RegisterFrameCallback(callback);
+  return EnsureScriptedAnimationController().RegisterFrameCallback(callback);
 }
 
 void Document::CancelAnimationFrame(int id) {
+  if (!scripted_animation_controller_)
+    return;
   scripted_animation_controller_->CancelFrameCallback(id);
 }
 
 void Document::ServiceScriptedAnimations(
     base::TimeTicks monotonic_animation_start_time) {
+  if (!scripted_animation_controller_)
+    return;
   auto start_time = base::TimeTicks::Now();
   scripted_animation_controller_->ServiceScriptedAnimations(
       monotonic_animation_start_time);
@@ -7426,17 +7452,18 @@
 
 int Document::RequestPostAnimationFrame(
     FrameRequestCallbackCollection::FrameCallback* cb) {
-  return scripted_animation_controller_->RegisterPostFrameCallback(cb);
+  return EnsureScriptedAnimationController().RegisterPostFrameCallback(cb);
 }
 
 void Document::CancelPostAnimationFrame(int id) {
-  scripted_animation_controller_->CancelPostFrameCallback(id);
+  if (scripted_animation_controller_)
+    scripted_animation_controller_->CancelPostFrameCallback(id);
 }
 
 void Document::RunPostAnimationFrameCallbacks() {
   bool was_throttled = current_frame_is_throttled_;
   current_frame_is_throttled_ = false;
-  if (was_throttled)
+  if (was_throttled || !scripted_animation_controller_)
     return;
   scripted_animation_controller_->RunPostFrameCallbacks();
 }
@@ -7780,6 +7807,8 @@
   if (index != WTF::kNotFound)
     autofocus_candidates_.EraseAt(index);
   autofocus_candidates_.push_back(element);
+  // ScriptedAnimationController invokes FlushAutofocusCandidates().
+  EnsureScriptedAnimationController();
 }
 
 bool Document::HasAutofocusCandidates() const {
@@ -8297,11 +8326,13 @@
 }
 
 bool Document::CurrentFrameHadRAF() const {
-  return scripted_animation_controller_->CurrentFrameHadRAF();
+  return scripted_animation_controller_ &&
+         scripted_animation_controller_->CurrentFrameHadRAF();
 }
 
 bool Document::NextFrameHasPendingRAF() const {
-  return scripted_animation_controller_->NextFrameHasPendingRAF();
+  return scripted_animation_controller_ &&
+         scripted_animation_controller_->NextFrameHasPendingRAF();
 }
 
 void Document::NavigateLocalAdsFrames() {
@@ -8344,6 +8375,9 @@
 }
 
 bool Document::IsFocusAllowed() const {
+  if (frame_ && frame_->GetPage()->InsidePortal())
+    return false;
+
   if (!frame_ || frame_->IsMainFrame() ||
       LocalFrame::HasTransientUserActivation(frame_)) {
     // 'autofocus' runs Element::focus asynchronously at which point the
diff --git a/third_party/blink/renderer/core/dom/document.h b/third_party/blink/renderer/core/dom/document.h
index 7d08c52..6cd3da07 100644
--- a/third_party/blink/renderer/core/dom/document.h
+++ b/third_party/blink/renderer/core/dom/document.h
@@ -1675,6 +1675,7 @@
   bool IsElementNode() const =
       delete;  // This will catch anyone doing an unnecessary check.
 
+  ScriptedAnimationController& EnsureScriptedAnimationController();
   ScriptedIdleTaskController& EnsureScriptedIdleTaskController();
   void InitSecurityContext(const DocumentInit&,
                            const SecurityContextInit& security_initializer);
diff --git a/third_party/blink/renderer/core/dom/document.idl b/third_party/blink/renderer/core/dom/document.idl
index ec4b33c9..550aa4c6 100644
--- a/third_party/blink/renderer/core/dom/document.idl
+++ b/third_party/blink/renderer/core/dom/document.idl
@@ -34,10 +34,9 @@
 // https://html.spec.whatwg.org/C/#documents
 
 [
-    Exposed=Window,
-    Constructor(),
-    ConstructorCallWith=Document
+    Exposed=Window
 ] interface Document : Node {
+    [CallWith=Document] constructor();
     [SameObject] readonly attribute DOMImplementation implementation;
     [ImplementedAs=urlForBinding] readonly attribute USVString URL;
     // FIXME: documentURI should not be nullable.
diff --git a/third_party/blink/renderer/core/dom/document_fragment.idl b/third_party/blink/renderer/core/dom/document_fragment.idl
index e69c55f..ddb78da3 100644
--- a/third_party/blink/renderer/core/dom/document_fragment.idl
+++ b/third_party/blink/renderer/core/dom/document_fragment.idl
@@ -20,10 +20,9 @@
 // https://dom.spec.whatwg.org/#interface-documentfragment
 
 [
-    Constructor,
-    ConstructorCallWith=Document,
     Exposed=Window
 ] interface DocumentFragment : Node {
+  [CallWith=Document] constructor();
 };
 
 DocumentFragment includes ParentNode;
diff --git a/third_party/blink/renderer/core/dom/dom_exception.idl b/third_party/blink/renderer/core/dom/dom_exception.idl
index 2e3e9ad..fee491b 100644
--- a/third_party/blink/renderer/core/dom/dom_exception.idl
+++ b/third_party/blink/renderer/core/dom/dom_exception.idl
@@ -32,10 +32,10 @@
 
 [
     Exposed=(Window,Worker),
-    Constructor(optional DOMString message = "", optional DOMString name = "Error"),
     Serializable,
     DoNotCheckConstants
 ] interface DOMException {
+    constructor(optional DOMString message = "", optional DOMString name = "Error");
 
     readonly attribute unsigned short   code;
     readonly attribute DOMString        name;
diff --git a/third_party/blink/renderer/core/dom/events/custom_event.idl b/third_party/blink/renderer/core/dom/events/custom_event.idl
index 2ae3973..8481868 100644
--- a/third_party/blink/renderer/core/dom/events/custom_event.idl
+++ b/third_party/blink/renderer/core/dom/events/custom_event.idl
@@ -26,10 +26,9 @@
 // https://dom.spec.whatwg.org/#interface-customevent
 
 [
-    Constructor(DOMString type, optional CustomEventInit eventInitDict),
-    ConstructorCallWith=ScriptState,
     Exposed=(Window,Worker)
 ] interface CustomEvent : Event {
+    [CallWith=ScriptState] constructor(DOMString type, optional CustomEventInit eventInitDict);
     [CallWith=ScriptState] readonly attribute any detail;
 
     [Measure, CallWith=ScriptState] void initCustomEvent(DOMString type, optional boolean bubbles = false, optional boolean cancelable = false, optional any detail = null);
diff --git a/third_party/blink/renderer/core/dom/events/event.idl b/third_party/blink/renderer/core/dom/events/event.idl
index 85e3cab..38dfc6a 100644
--- a/third_party/blink/renderer/core/dom/events/event.idl
+++ b/third_party/blink/renderer/core/dom/events/event.idl
@@ -21,9 +21,9 @@
 // https://dom.spec.whatwg.org/#interface-event
 
 [
-    Constructor(DOMString type, optional EventInit eventInitDict),
     Exposed=(Window,Worker,AudioWorklet)
 ] interface Event {
+    constructor(DOMString type, optional EventInit eventInitDict);
     readonly attribute DOMString type;
     readonly attribute EventTarget? target;
     readonly attribute EventTarget? currentTarget;
diff --git a/third_party/blink/renderer/core/dom/events/event_target.idl b/third_party/blink/renderer/core/dom/events/event_target.idl
index 9446764a..af43187 100644
--- a/third_party/blink/renderer/core/dom/events/event_target.idl
+++ b/third_party/blink/renderer/core/dom/events/event_target.idl
@@ -22,11 +22,10 @@
 
 [
     CheckSecurity=Receiver,
-    Constructor(),
-    ConstructorCallWith=ScriptState,
     Exposed=(Window,Worker,AudioWorklet),
     ImmutablePrototype
 ] interface EventTarget {
+    [CallWith=ScriptState] constructor();
     [Custom=CallPrologue] void addEventListener(DOMString type, EventListener? listener, optional (AddEventListenerOptions or boolean) options);
     [Custom=CallPrologue] void removeEventListener(DOMString type, EventListener? listener, optional (EventListenerOptions or boolean) options);
     [ImplementedAs=dispatchEventForBindings, RaisesException, RuntimeCallStatsCounter=EventTargetDispatchEvent] boolean dispatchEvent(Event event);
diff --git a/third_party/blink/renderer/core/dom/live_node_list.h b/third_party/blink/renderer/core/dom/live_node_list.h
index 37f27fe..af5bcea 100644
--- a/third_party/blink/renderer/core/dom/live_node_list.h
+++ b/third_party/blink/renderer/core/dom/live_node_list.h
@@ -79,11 +79,12 @@
   mutable CollectionItemsCache<LiveNodeList, Element> collection_items_cache_;
 };
 
-DEFINE_TYPE_CASTS(LiveNodeList,
-                  LiveNodeListBase,
-                  list,
-                  IsLiveNodeListType(list->GetType()),
-                  IsLiveNodeListType(list.GetType()));
+template <>
+struct DowncastTraits<LiveNodeList> {
+  static bool AllowFrom(const LiveNodeListBase& list) {
+    return IsLiveNodeListType(list.GetType());
+  }
+};
 
 inline void LiveNodeList::InvalidateCacheForAttribute(
     const QualifiedName* attr_name) const {
diff --git a/third_party/blink/renderer/core/dom/live_node_list_base.cc b/third_party/blink/renderer/core/dom/live_node_list_base.cc
index 36c4818..3b946a5 100644
--- a/third_party/blink/renderer/core/dom/live_node_list_base.cc
+++ b/third_party/blink/renderer/core/dom/live_node_list_base.cc
@@ -31,7 +31,7 @@
 void LiveNodeListBase::InvalidateCacheForAttribute(
     const QualifiedName* attr_name) const {
   if (IsLiveNodeListType(GetType()))
-    ToLiveNodeList(this)->InvalidateCacheForAttribute(attr_name);
+    To<LiveNodeList>(this)->InvalidateCacheForAttribute(attr_name);
   else
     ToHTMLCollection(this)->InvalidateCacheForAttribute(attr_name);
 }
diff --git a/third_party/blink/renderer/core/dom/mutation_observer.idl b/third_party/blink/renderer/core/dom/mutation_observer.idl
index 370a5a0..59f2522 100644
--- a/third_party/blink/renderer/core/dom/mutation_observer.idl
+++ b/third_party/blink/renderer/core/dom/mutation_observer.idl
@@ -34,11 +34,10 @@
                                   MutationObserver observer);
 
 [
-    ConstructorCallWith=ScriptState,
-    Constructor(MutationCallback callback),
     ActiveScriptWrappable,
     Exposed=Window
 ] interface MutationObserver {
+    [CallWith=ScriptState] constructor(MutationCallback callback);
     [RaisesException] void observe(Node target, optional MutationObserverInit options);
     void disconnect();
     sequence<MutationRecord> takeRecords();
diff --git a/third_party/blink/renderer/core/dom/node.cc b/third_party/blink/renderer/core/dom/node.cc
index 06b9f760..0eaf78a 100644
--- a/third_party/blink/renderer/core/dom/node.cc
+++ b/third_party/blink/renderer/core/dom/node.cc
@@ -375,36 +375,64 @@
 }
 
 Node* Node::PseudoAwarePreviousSibling() const {
-  if (parentElement() && !previousSibling()) {
-    Element* parent = parentElement();
-    if (IsAfterPseudoElement() && parent->lastChild())
-      return parent->lastChild();
-    if (!IsBeforePseudoElement())
-      return parent->GetPseudoElement(kPseudoIdBefore);
+  Element* parent = parentElement();
+  if (!parent || previousSibling())
+    return previousSibling();
+  switch (GetPseudoId()) {
+    case kPseudoIdAfter:
+      if (Node* previous = parent->lastChild())
+        return previous;
+      FALLTHROUGH;
+    case kPseudoIdNone:
+      if (Node* previous = parent->GetPseudoElement(kPseudoIdBefore))
+        return previous;
+      FALLTHROUGH;
+    case kPseudoIdBefore:
+      if (Node* previous = parent->GetPseudoElement(kPseudoIdMarker))
+        return previous;
+      FALLTHROUGH;
+    case kPseudoIdMarker:
+      break;
+    default:
+      NOTREACHED();
   }
-  return previousSibling();
+  return nullptr;
 }
 
 Node* Node::PseudoAwareNextSibling() const {
-  if (parentElement() && !nextSibling()) {
-    Element* parent = parentElement();
-    if (IsBeforePseudoElement() && parent->HasChildren())
-      return parent->firstChild();
-    if (!IsAfterPseudoElement())
-      return parent->GetPseudoElement(kPseudoIdAfter);
+  Element* parent = parentElement();
+  if (!parent || nextSibling())
+    return nextSibling();
+  switch (GetPseudoId()) {
+    case kPseudoIdMarker:
+      if (Node* next = parent->GetPseudoElement(kPseudoIdBefore))
+        return next;
+      FALLTHROUGH;
+    case kPseudoIdBefore:
+      if (parent->HasChildren())
+        return parent->firstChild();
+      FALLTHROUGH;
+    case kPseudoIdNone:
+      if (Node* next = parent->GetPseudoElement(kPseudoIdAfter))
+        return next;
+      FALLTHROUGH;
+    case kPseudoIdAfter:
+      break;
+    default:
+      NOTREACHED();
   }
-  return nextSibling();
+  return nullptr;
 }
 
 Node* Node::PseudoAwareFirstChild() const {
   if (const auto* current_element = DynamicTo<Element>(this)) {
-    Node* first = current_element->GetPseudoElement(kPseudoIdBefore);
-    if (first)
+    if (Node* first = current_element->GetPseudoElement(kPseudoIdMarker))
       return first;
-    first = current_element->firstChild();
-    if (!first)
-      first = current_element->GetPseudoElement(kPseudoIdAfter);
-    return first;
+    if (Node* first = current_element->GetPseudoElement(kPseudoIdBefore))
+      return first;
+    if (Node* first = current_element->firstChild())
+      return first;
+    return current_element->GetPseudoElement(kPseudoIdAfter);
   }
 
   return firstChild();
@@ -412,13 +440,13 @@
 
 Node* Node::PseudoAwareLastChild() const {
   if (const auto* current_element = DynamicTo<Element>(this)) {
-    Node* last = current_element->GetPseudoElement(kPseudoIdAfter);
-    if (last)
+    if (Node* last = current_element->GetPseudoElement(kPseudoIdAfter))
       return last;
-    last = current_element->lastChild();
-    if (!last)
-      last = current_element->GetPseudoElement(kPseudoIdBefore);
-    return last;
+    if (Node* last = current_element->lastChild())
+      return last;
+    if (Node* last = current_element->GetPseudoElement(kPseudoIdBefore))
+      return last;
+    return current_element->GetPseudoElement(kPseudoIdMarker);
   }
 
   return lastChild();
diff --git a/third_party/blink/renderer/core/dom/node.h b/third_party/blink/renderer/core/dom/node.h
index 698144f..25ed2647 100644
--- a/third_party/blink/renderer/core/dom/node.h
+++ b/third_party/blink/renderer/core/dom/node.h
@@ -80,8 +80,10 @@
 class WebPluginContainerImpl;
 struct PhysicalRect;
 
-const int kNodeStyleChangeShift = 19;
-const int kNodeCustomElementShift = 21;
+const int kDOMNodeTypeShift = 1;
+const int kElementNamespaceTypeShift = 4;
+const int kNodeStyleChangeShift = 17;
+const int kNodeCustomElementShift = 19;
 
 // Values for kChildNeedsStyleRecalcFlag, controlling whether a node gets its
 // style recalculated.
@@ -269,13 +271,28 @@
   void SetComputedStyle(scoped_refptr<const ComputedStyle> computed_style);
 
   // Other methods (not part of DOM)
+  bool IsTextNode() const { return GetDOMNodeType() == DOMNodeType::kText; }
+  bool IsContainerNode() const {
+    auto type = GetDOMNodeType();
+    return type == DOMNodeType::kContainer || type == DOMNodeType::kElement ||
+           type == DOMNodeType::kDocumentFragment;
+  }
+  bool IsElementNode() const {
+    return GetDOMNodeType() == DOMNodeType::kElement;
+  }
+  bool IsDocumentFragment() const {
+    return GetDOMNodeType() == DOMNodeType::kDocumentFragment;
+  }
 
-  bool IsElementNode() const { return GetFlag(kIsElementFlag); }
-  bool IsContainerNode() const { return GetFlag(kIsContainerFlag); }
-  bool IsTextNode() const { return GetFlag(kIsTextFlag); }
-  bool IsHTMLElement() const { return GetFlag(kIsHTMLFlag); }
-  bool IsMathMLElement() const { return GetFlag(kIsMathMLFlag); }
-  bool IsSVGElement() const { return GetFlag(kIsSVGFlag); }
+  bool IsHTMLElement() const {
+    return GetElementNamespaceType() == ElementNamespaceType::kHTML;
+  }
+  bool IsMathMLElement() const {
+    return GetElementNamespaceType() == ElementNamespaceType::kMathML;
+  }
+  bool IsSVGElement() const {
+    return GetElementNamespaceType() == ElementNamespaceType::kSVG;
+  }
 
   DISABLE_CFI_PERF bool IsPseudoElement() const {
     return GetPseudoId() != kPseudoIdNone;
@@ -335,7 +352,6 @@
 
   bool IsDocumentNode() const;
   bool IsTreeScope() const;
-  bool IsDocumentFragment() const { return GetFlag(kIsDocumentFragmentFlag); }
   bool IsShadowRoot() const { return IsDocumentFragment() && IsTreeScope(); }
   bool IsV0InsertionPoint() const { return GetFlag(kIsV0InsertionPointFlag); }
 
@@ -907,58 +923,52 @@
     kHasRareDataFlag = 1,
 
     // Node type flags. These never change once created.
-    kIsTextFlag = 1 << 1,
-    kIsContainerFlag = 1 << 2,
-    kIsElementFlag = 1 << 3,
-    kIsHTMLFlag = 1 << 4,
-    kIsMathMLFlag = 1 << 5,
-    kIsSVGFlag = 1 << 6,
-    kIsDocumentFragmentFlag = 1 << 7,
-    kIsV0InsertionPointFlag = 1 << 8,
+    kDOMNodeTypeMask = 0x7 << kDOMNodeTypeShift,
+    kElementNamespaceTypeMask = 0x3 << kElementNamespaceTypeShift,
+    kIsV0InsertionPointFlag = 1 << 6,
 
     // Changes based on if the element should be treated like a link,
     // ex. When setting the href attribute on an <a>.
-    kIsLinkFlag = 1 << 9,
+    kIsLinkFlag = 1 << 7,
 
     // Changes based on :hover, :active and :focus state.
-    kIsUserActionElementFlag = 1 << 10,
+    kIsUserActionElementFlag = 1 << 8,
 
     // Tree state flags. These change when the element is added/removed
     // from a DOM tree.
-    kIsConnectedFlag = 1 << 11,
-    kIsInShadowTreeFlag = 1 << 12,
+    kIsConnectedFlag = 1 << 9,
+    kIsInShadowTreeFlag = 1 << 10,
 
     // Set by the parser when the children are done parsing.
-    kIsFinishedParsingChildrenFlag = 1 << 13,
+    kIsFinishedParsingChildrenFlag = 1 << 11,
 
     // Flags related to recalcStyle.
-    kHasCustomStyleCallbacksFlag = 1 << 14,
-    kChildNeedsStyleInvalidationFlag = 1 << 15,
-    kNeedsStyleInvalidationFlag = 1 << 16,
-    kChildNeedsDistributionRecalcFlag = 1 << 17,
-    kChildNeedsStyleRecalcFlag = 1 << 18,
-    kStyleChangeMask =
-        1 << kNodeStyleChangeShift | 1 << (kNodeStyleChangeShift + 1),
+    kHasCustomStyleCallbacksFlag = 1 << 12,
+    kChildNeedsStyleInvalidationFlag = 1 << 13,
+    kNeedsStyleInvalidationFlag = 1 << 14,
+    kChildNeedsDistributionRecalcFlag = 1 << 15,
+    kChildNeedsStyleRecalcFlag = 1 << 16,
+    kStyleChangeMask = 0x3 << kNodeStyleChangeShift,
 
     kCustomElementStateMask = 0x3 << kNodeCustomElementShift,
 
-    kHasNameOrIsEditingTextFlag = 1 << 23,
-    kHasEventTargetDataFlag = 1 << 24,
+    kHasNameOrIsEditingTextFlag = 1 << 21,
+    kHasEventTargetDataFlag = 1 << 22,
 
-    kV0CustomElementFlag = 1 << 25,
-    kV0CustomElementUpgradedFlag = 1 << 26,
+    kV0CustomElementFlag = 1 << 23,
+    kV0CustomElementUpgradedFlag = 1 << 24,
 
-    kNeedsReattachLayoutTree = 1 << 27,
-    kChildNeedsReattachLayoutTree = 1 << 28,
+    kNeedsReattachLayoutTree = 1 << 25,
+    kChildNeedsReattachLayoutTree = 1 << 26,
 
-    kHasDuplicateAttributes = 1 << 29,
+    kHasDuplicateAttributes = 1 << 27,
 
-    kForceReattachLayoutTree = 1 << 30,
+    kForceReattachLayoutTree = 1 << 28,
 
     kDefaultNodeFlags = kIsFinishedParsingChildrenFlag,
-  };
 
-  // 0 bits remaining.
+    // 4 bits remaining.
+  };
 
   bool GetFlag(NodeFlags mask) const { return node_flags_ & mask; }
   void SetFlag(bool f, NodeFlags mask) {
@@ -967,18 +977,48 @@
   void SetFlag(NodeFlags mask) { node_flags_ |= mask; }
   void ClearFlag(NodeFlags mask) { node_flags_ &= ~mask; }
 
+  enum class DOMNodeType {
+    kOther = 0,
+    kText = 1 << kDOMNodeTypeShift,
+    kContainer = 2 << kDOMNodeTypeShift,
+    kElement = 3 << kDOMNodeTypeShift,
+    kDocumentFragment = 4 << kDOMNodeTypeShift,
+  };
+  DOMNodeType GetDOMNodeType() const {
+    return static_cast<DOMNodeType>(node_flags_ & kDOMNodeTypeMask);
+  }
+
+  enum class ElementNamespaceType {
+    kOther = 0,
+    kHTML = 1 << kElementNamespaceTypeShift,
+    kMathML = 2 << kElementNamespaceTypeShift,
+    kSVG = 3 << kElementNamespaceTypeShift,
+  };
+  ElementNamespaceType GetElementNamespaceType() const {
+    return static_cast<ElementNamespaceType>(node_flags_ &
+                                             kElementNamespaceTypeMask);
+  }
+
  protected:
   enum ConstructionType {
-    kCreateOther = kIsFinishedParsingChildrenFlag,
-    kCreateText = kDefaultNodeFlags | kIsTextFlag,
-    kCreateContainer = kDefaultNodeFlags | kIsContainerFlag,
-    kCreateElement = kCreateContainer | kIsElementFlag,
-    kCreateShadowRoot =
-        kCreateContainer | kIsDocumentFragmentFlag | kIsInShadowTreeFlag,
-    kCreateDocumentFragment = kCreateContainer | kIsDocumentFragmentFlag,
-    kCreateHTMLElement = kCreateElement | kIsHTMLFlag,
-    kCreateMathMLElement = kCreateElement | kIsMathMLFlag,
-    kCreateSVGElement = kCreateElement | kIsSVGFlag,
+    kCreateOther =
+        kDefaultNodeFlags | static_cast<NodeFlags>(DOMNodeType::kOther),
+    kCreateText =
+        kDefaultNodeFlags | static_cast<NodeFlags>(DOMNodeType::kText),
+    kCreateContainer =
+        kDefaultNodeFlags | static_cast<NodeFlags>(DOMNodeType::kContainer),
+    kCreateElement =
+        kDefaultNodeFlags | static_cast<NodeFlags>(DOMNodeType::kElement),
+    kCreateDocumentFragment =
+        kDefaultNodeFlags |
+        static_cast<NodeFlags>(DOMNodeType::kDocumentFragment),
+    kCreateShadowRoot = kCreateDocumentFragment | kIsInShadowTreeFlag,
+    kCreateHTMLElement =
+        kCreateElement | static_cast<NodeFlags>(ElementNamespaceType::kHTML),
+    kCreateMathMLElement =
+        kCreateElement | static_cast<NodeFlags>(ElementNamespaceType::kMathML),
+    kCreateSVGElement =
+        kCreateElement | static_cast<NodeFlags>(ElementNamespaceType::kSVG),
     kCreateDocument = kCreateContainer | kIsConnectedFlag,
     kCreateV0InsertionPoint = kCreateHTMLElement | kIsV0InsertionPointFlag,
     kCreateEditingText = kCreateText | kHasNameOrIsEditingTextFlag,
diff --git a/third_party/blink/renderer/core/dom/node_lists_node_data.h b/third_party/blink/renderer/core/dom/node_lists_node_data.h
index 09cb9343..4c6ee4b 100644
--- a/third_party/blink/renderer/core/dom/node_lists_node_data.h
+++ b/third_party/blink/renderer/core/dom/node_lists_node_data.h
@@ -39,13 +39,13 @@
  public:
   ChildNodeList* GetChildNodeList(ContainerNode& node) {
     DCHECK(!child_node_list_ || node == child_node_list_->VirtualOwnerNode());
-    return ToChildNodeList(child_node_list_);
+    return To<ChildNodeList>(child_node_list_.Get());
   }
 
   ChildNodeList* EnsureChildNodeList(ContainerNode& node) {
     DCHECK(ThreadState::Current()->IsGCForbidden());
     if (child_node_list_)
-      return ToChildNodeList(child_node_list_);
+      return To<ChildNodeList>(child_node_list_.Get());
     auto* list = MakeGarbageCollected<ChildNodeList>(node);
     child_node_list_ = list;
     return list;
diff --git a/third_party/blink/renderer/core/dom/range.idl b/third_party/blink/renderer/core/dom/range.idl
index c2ee325..e2f5689d 100644
--- a/third_party/blink/renderer/core/dom/range.idl
+++ b/third_party/blink/renderer/core/dom/range.idl
@@ -20,10 +20,9 @@
 
 // https://dom.spec.whatwg.org/#interface-range
 [
-    Constructor,
-    ConstructorCallWith=Document,
     Exposed=Window
 ] interface Range {
+    [CallWith=Document] constructor();
     readonly attribute Node startContainer;
     readonly attribute unsigned long startOffset;
     readonly attribute Node endContainer;
diff --git a/third_party/blink/renderer/core/dom/scripted_animation_controller.cc b/third_party/blink/renderer/core/dom/scripted_animation_controller.cc
index 0d1e264..9346159 100644
--- a/third_party/blink/renderer/core/dom/scripted_animation_controller.cc
+++ b/third_party/blink/renderer/core/dom/scripted_animation_controller.cc
@@ -43,22 +43,27 @@
 }
 
 ScriptedAnimationController::ScriptedAnimationController(Document* document)
-    : ContextLifecycleStateObserver(document), callback_collection_(document) {
-  UpdateStateIfNeeded();
-}
+    : document_(document), callback_collection_(document), suspend_count_(0) {}
 
 void ScriptedAnimationController::Trace(Visitor* visitor) {
-  ContextLifecycleStateObserver::Trace(visitor);
+  visitor->Trace(document_);
   visitor->Trace(callback_collection_);
   visitor->Trace(event_queue_);
   visitor->Trace(media_query_list_listeners_);
   visitor->Trace(per_frame_events_);
 }
 
-void ScriptedAnimationController::ContextLifecycleStateChanged(
-    mojom::FrameLifecycleState state) {
-  if (state == mojom::FrameLifecycleState::kRunning)
-    ScheduleAnimationIfNeeded();
+void ScriptedAnimationController::Pause() {
+  ++suspend_count_;
+}
+
+void ScriptedAnimationController::Unpause() {
+  // It would be nice to put an DCHECK_GT(suspend_count_, 0) here, but in WK1
+  // resume() can be called even when suspend hasn't (if a tab was created in
+  // the background).
+  if (suspend_count_ > 0)
+    --suspend_count_;
+  ScheduleAnimationIfNeeded();
 }
 
 void ScriptedAnimationController::DispatchEventsAndCallbacksForPrinting() {
@@ -137,7 +142,7 @@
 
 void ScriptedAnimationController::ExecuteFrameCallbacks() {
   // dispatchEvents() runs script which can cause the document to be destroyed.
-  if (!GetDocument())
+  if (!document_)
     return;
 
   callback_collection_.ExecuteFrameCallbacks(current_frame_time_ms_,
@@ -154,30 +159,28 @@
 }
 
 bool ScriptedAnimationController::HasScheduledFrameTasks() const {
+  if (suspend_count_)
+    return false;
+
   return callback_collection_.HasFrameCallback() || !task_queue_.IsEmpty() ||
          !event_queue_.IsEmpty() || !media_query_list_listeners_.IsEmpty() ||
-         GetDocument()->HasAutofocusCandidates();
+         (document_ && document_->HasAutofocusCandidates());
 }
 
 void ScriptedAnimationController::ServiceScriptedAnimations(
     base::TimeTicks monotonic_time_now) {
-  if (!GetDocument() || !GetDocument()->GetFrame() ||
-      GetDocument()->IsContextPaused()) {
-    return;
+  if (document_ && document_->Loader()) {
+    current_frame_time_ms_ =
+        document_->Loader()
+            ->GetTiming()
+            .MonotonicTimeToZeroBasedDocumentTime(monotonic_time_now)
+            .InMillisecondsF();
+    current_frame_legacy_time_ms_ =
+        document_->Loader()
+            ->GetTiming()
+            .MonotonicTimeToPseudoWallTime(monotonic_time_now)
+            .InMillisecondsF();
   }
-
-  current_frame_time_ms_ =
-      GetDocument()
-          ->Loader()
-          ->GetTiming()
-          .MonotonicTimeToZeroBasedDocumentTime(monotonic_time_now)
-          .InMillisecondsF();
-  current_frame_legacy_time_ms_ =
-      GetDocument()
-          ->Loader()
-          ->GetTiming()
-          .MonotonicTimeToPseudoWallTime(monotonic_time_now)
-          .InMillisecondsF();
   current_frame_had_raf_ = HasFrameCallback();
 
   if (!HasScheduledFrameTasks())
@@ -188,7 +191,8 @@
   // 10.5. For each fully active Document in docs, flush autofocus
   // candidates for that Document if its browsing context is a top-level
   // browsing context.
-  GetDocument()->FlushAutofocusCandidates();
+  if (document_)
+    document_->FlushAutofocusCandidates();
 
   // 10.8. For each fully active Document in docs, evaluate media
   // queries and report changes for that Document, passing in now as the
@@ -255,15 +259,16 @@
 }
 
 void ScriptedAnimationController::ScheduleAnimationIfNeeded() {
-  if (!GetDocument() || !GetDocument()->GetFrame() ||
-      GetDocument()->IsContextPaused()) {
+  if (suspend_count_ || !document_)
     return;
-  }
+  LocalFrameView* frame_view = document_->View();
+  if (!frame_view)
+    return;
 
   // If there is any pre-frame work to do, schedule an animation
   // unconditionally.
   if (HasScheduledFrameTasks()) {
-    GetDocument()->View()->ScheduleAnimation();
+    frame_view->ScheduleAnimation();
     return;
   }
 
@@ -271,9 +276,11 @@
   // currently running one -- if we're currently running an animation, then any
   // scheduled post-frame tasks will get run at the end of the current frame, so
   // no need to schedule another one.
-  if (callback_collection_.HasPostFrameCallback() &&
-      !GetDocument()->GetPage()->Animator().IsServicingAnimations()) {
-    GetDocument()->View()->ScheduleAnimation();
+  if (!callback_collection_.HasPostFrameCallback())
+    return;
+  if (Page* page = document_->GetPage()) {
+    if (!page->Animator().IsServicingAnimations())
+      frame_view->ScheduleAnimation();
   }
 }
 
diff --git a/third_party/blink/renderer/core/dom/scripted_animation_controller.h b/third_party/blink/renderer/core/dom/scripted_animation_controller.h
index ece38ac..430fe01 100644
--- a/third_party/blink/renderer/core/dom/scripted_animation_controller.h
+++ b/third_party/blink/renderer/core/dom/scripted_animation_controller.h
@@ -28,10 +28,8 @@
 
 #include "third_party/blink/renderer/core/core_export.h"
 #include "third_party/blink/renderer/core/dom/frame_request_callback_collection.h"
-#include "third_party/blink/renderer/core/execution_context/context_lifecycle_state_observer.h"
 #include "third_party/blink/renderer/platform/bindings/name_client.h"
 #include "third_party/blink/renderer/platform/heap/handle.h"
-#include "third_party/blink/renderer/platform/wtf/casting.h"
 #include "third_party/blink/renderer/platform/wtf/text/atomic_string.h"
 #include "third_party/blink/renderer/platform/wtf/text/string_impl.h"
 #include "third_party/blink/renderer/platform/wtf/vector.h"
@@ -45,18 +43,16 @@
 
 class CORE_EXPORT ScriptedAnimationController
     : public GarbageCollected<ScriptedAnimationController>,
-      public ContextLifecycleStateObserver,
       public NameClient {
-  USING_GARBAGE_COLLECTED_MIXIN(ScriptedAnimationController);
-
  public:
   explicit ScriptedAnimationController(Document*);
-  ~ScriptedAnimationController() override = default;
+  virtual ~ScriptedAnimationController() = default;
 
-  void Trace(Visitor*) override;
+  void Trace(Visitor*);
   const char* NameInHeapSnapshot() const override {
     return "ScriptedAnimationController";
   }
+  void ClearDocumentPointer() { document_ = nullptr; }
 
   // Animation frame callbacks are used for requestAnimationFrame().
   typedef int CallbackId;
@@ -86,7 +82,8 @@
   void ServiceScriptedAnimations(base::TimeTicks monotonic_time_now);
   void RunPostFrameCallbacks();
 
-  void ContextLifecycleStateChanged(mojom::FrameLifecycleState) final;
+  void Pause();
+  void Unpause();
 
   void DispatchEventsAndCallbacksForPrinting();
 
@@ -104,9 +101,9 @@
 
   bool HasScheduledFrameTasks() const;
 
-  Document* GetDocument() const { return To<Document>(GetExecutionContext()); }
-
+  Member<Document> document_;
   FrameRequestCallbackCollection callback_collection_;
+  int suspend_count_;
   Vector<base::OnceClosure> task_queue_;
   HeapVector<Member<Event>> event_queue_;
   HeapListHashSet<std::pair<Member<const EventTarget>, const StringImpl*>>
diff --git a/third_party/blink/renderer/core/dom/tag_collection.h b/third_party/blink/renderer/core/dom/tag_collection.h
index d984220..dc6382b2 100644
--- a/third_party/blink/renderer/core/dom/tag_collection.h
+++ b/third_party/blink/renderer/core/dom/tag_collection.h
@@ -73,17 +73,19 @@
   AtomicString local_name_;
 };
 
-DEFINE_TYPE_CASTS(TagCollection,
-                  LiveNodeListBase,
-                  collection,
-                  collection->GetType() == kTagCollectionType,
-                  collection.GetType() == kTagCollectionType);
+template <>
+struct DowncastTraits<TagCollection> {
+  static bool AllowFrom(const LiveNodeListBase& collection) {
+    return collection.GetType() == kTagCollectionType;
+  }
+};
 
-DEFINE_TYPE_CASTS(TagCollectionNS,
-                  LiveNodeListBase,
-                  collection,
-                  collection->GetType() == kTagCollectionNSType,
-                  collection.GetType() == kTagCollectionNSType);
+template <>
+struct DowncastTraits<TagCollectionNS> {
+  static bool AllowFrom(const LiveNodeListBase& collection) {
+    return collection.GetType() == kTagCollectionNSType;
+  }
+};
 
 }  // namespace blink
 
diff --git a/third_party/blink/renderer/core/dom/text.idl b/third_party/blink/renderer/core/dom/text.idl
index d199fd7..7a10043 100644
--- a/third_party/blink/renderer/core/dom/text.idl
+++ b/third_party/blink/renderer/core/dom/text.idl
@@ -20,10 +20,9 @@
 // https://dom.spec.whatwg.org/#interface-text
 
 [
-    Constructor(optional DOMString data = ""),
-    ConstructorCallWith=Document,
     Exposed=Window
 ] interface Text : CharacterData {
+    [CallWith=Document] constructor(optional DOMString data = "");
     [NewObject, DoNotTestNewObject, RaisesException] Text splitText(unsigned long offset);
     [MeasureAs=TextWholeText] readonly attribute DOMString wholeText;
 
diff --git a/third_party/blink/renderer/core/editing/ime/edit_context.idl b/third_party/blink/renderer/core/editing/ime/edit_context.idl
index 18bc5d0..cdf5ecc7 100644
--- a/third_party/blink/renderer/core/editing/ime/edit_context.idl
+++ b/third_party/blink/renderer/core/editing/ime/edit_context.idl
@@ -7,12 +7,11 @@
 // advanced editing scenarios. For more information please refer
 // https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/master/EditContext/explainer.md
 [
-    Constructor(optional EditContextInit options),
-    ConstructorCallWith=ScriptState,
     Exposed=Window,
     ActiveScriptWrappable,
     RuntimeEnabled=EditContext
 ] interface EditContext : EventTarget {
+    [CallWith=ScriptState] constructor(optional EditContextInit options);
     void focus();
     void blur();
     [RaisesException] void updateSelection(unsigned long start, unsigned long end);
diff --git a/third_party/blink/renderer/core/editing/ime/text_format_update_event.idl b/third_party/blink/renderer/core/editing/ime/text_format_update_event.idl
index eb60461..aea74ba 100644
--- a/third_party/blink/renderer/core/editing/ime/text_format_update_event.idl
+++ b/third_party/blink/renderer/core/editing/ime/text_format_update_event.idl
@@ -8,10 +8,10 @@
 // (e.g. backgroundColor, textDecoration, etc.).
 // Explainer: https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/master/EditContext/explainer.md
 [
-    Constructor(optional TextFormatUpdateEventInit options),
     Exposed=Window,
     RuntimeEnabled=EditContext
 ] interface TextFormatUpdateEvent : Event {
+    constructor(optional TextFormatUpdateEventInit options);
     readonly attribute unsigned long formatRangeStart;
     readonly attribute unsigned long formatRangeEnd;
     readonly attribute DOMString underlineColor;
diff --git a/third_party/blink/renderer/core/editing/ime/text_update_event.idl b/third_party/blink/renderer/core/editing/ime/text_update_event.idl
index 5c1122f..ca71b9af 100644
--- a/third_party/blink/renderer/core/editing/ime/text_update_event.idl
+++ b/third_party/blink/renderer/core/editing/ime/text_update_event.idl
@@ -9,10 +9,10 @@
 // fired).
 // Explainer: https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/master/EditContext/explainer.md
 [
-    Constructor(optional TextUpdateEventInit options),
     Exposed=Window,
     RuntimeEnabled=EditContext
 ] interface TextUpdateEvent : Event {
+    constructor(optional TextUpdateEventInit options);
     readonly attribute unsigned long updateRangeStart;
     readonly attribute unsigned long updateRangeEnd;
     readonly attribute DOMString updateText;
diff --git a/third_party/blink/renderer/core/events/animation_event.idl b/third_party/blink/renderer/core/events/animation_event.idl
index b8e9c21..daa8463 100644
--- a/third_party/blink/renderer/core/events/animation_event.idl
+++ b/third_party/blink/renderer/core/events/animation_event.idl
@@ -26,9 +26,9 @@
 // https://drafts.csswg.org/css-animations/#interface-animationevent
 
 [
-    Constructor(DOMString type, optional AnimationEventInit eventInitDict),
     Exposed=Window
 ] interface AnimationEvent : Event {
+    constructor(DOMString type, optional AnimationEventInit eventInitDict);
     readonly attribute DOMString animationName;
     readonly attribute double elapsedTime;
     readonly attribute DOMString pseudoElement;
diff --git a/third_party/blink/renderer/core/events/animation_playback_event.idl b/third_party/blink/renderer/core/events/animation_playback_event.idl
index 7579153e..f76416e5 100644
--- a/third_party/blink/renderer/core/events/animation_playback_event.idl
+++ b/third_party/blink/renderer/core/events/animation_playback_event.idl
@@ -5,10 +5,10 @@
 // https://drafts.csswg.org/web-animations/#the-animationplaybackevent-interface
 
 [
-    Constructor(DOMString type, optional AnimationPlaybackEventInit eventInitDict),
     RuntimeEnabled=WebAnimationsAPI,
     Exposed=Window
 ] interface AnimationPlaybackEvent : Event {
+    constructor(DOMString type, optional AnimationPlaybackEventInit eventInitDict);
     readonly attribute double? currentTime;
     readonly attribute double? timelineTime;
 };
diff --git a/third_party/blink/renderer/core/events/application_cache_error_event.idl b/third_party/blink/renderer/core/events/application_cache_error_event.idl
index dfd0eb5..4a07aff 100644
--- a/third_party/blink/renderer/core/events/application_cache_error_event.idl
+++ b/third_party/blink/renderer/core/events/application_cache_error_event.idl
@@ -9,9 +9,9 @@
 // https://www.w3.org/Bugs/Public/show_bug.cgi?id=22702
 
 [
-    Constructor(DOMString type, optional ApplicationCacheErrorEventInit eventInitDict),
     SecureContext=RestrictAppCacheToSecureContexts
 ] interface ApplicationCacheErrorEvent : Event {
+    constructor(DOMString type, optional ApplicationCacheErrorEventInit eventInitDict);
     readonly attribute DOMString reason;
     readonly attribute DOMString url;
     readonly attribute unsigned short status;
diff --git a/third_party/blink/renderer/core/events/clipboard_event.idl b/third_party/blink/renderer/core/events/clipboard_event.idl
index 34834d53..ebeb3729 100644
--- a/third_party/blink/renderer/core/events/clipboard_event.idl
+++ b/third_party/blink/renderer/core/events/clipboard_event.idl
@@ -5,8 +5,8 @@
 // https://w3c.github.io/clipboard-apis/#clipboard-event-interfaces
 
 [
-    Constructor(DOMString type, optional ClipboardEventInit eventInitDict),
     Exposed=Window
 ] interface ClipboardEvent : Event {
+    constructor(DOMString type, optional ClipboardEventInit eventInitDict);
     readonly attribute DataTransfer? clipboardData;
 };
diff --git a/third_party/blink/renderer/core/events/composition_event.idl b/third_party/blink/renderer/core/events/composition_event.idl
index fd8a179..51e389f 100644
--- a/third_party/blink/renderer/core/events/composition_event.idl
+++ b/third_party/blink/renderer/core/events/composition_event.idl
@@ -26,9 +26,9 @@
 // https://w3c.github.io/uievents/#interface-CompositionEvent
 
 [
-    Constructor(DOMString type, optional CompositionEventInit eventInitDict),
     Exposed=Window
 ] interface CompositionEvent : UIEvent {
+    constructor(DOMString type, optional CompositionEventInit eventInitDict);
     readonly attribute DOMString data;
 
     // https://w3c.github.io/uievents/#idl-interface-CompositionEvent-initializers
diff --git a/third_party/blink/renderer/core/events/drag_event.idl b/third_party/blink/renderer/core/events/drag_event.idl
index ba9e583..73c1a18 100644
--- a/third_party/blink/renderer/core/events/drag_event.idl
+++ b/third_party/blink/renderer/core/events/drag_event.idl
@@ -5,8 +5,8 @@
 // https://html.spec.whatwg.org/C/#dragevent
 
 [
-    Exposed=Window,
-    Constructor(DOMString type, optional DragEventInit eventInitDict)
+    Exposed=Window
 ] interface DragEvent : MouseEvent {
+    constructor(DOMString type, optional DragEventInit eventInitDict);
     [ImplementedAs=getDataTransfer] readonly attribute DataTransfer? dataTransfer;
 };
diff --git a/third_party/blink/renderer/core/events/error_event.idl b/third_party/blink/renderer/core/events/error_event.idl
index 4ceb73c..23fba19 100644
--- a/third_party/blink/renderer/core/events/error_event.idl
+++ b/third_party/blink/renderer/core/events/error_event.idl
@@ -31,10 +31,9 @@
 // https://html.spec.whatwg.org/C/#the-errorevent-interface
 
 [
-    Constructor(DOMString type, optional ErrorEventInit eventInitDict),
-    ConstructorCallWith=ScriptState,
     Exposed=(Window,Worker)
 ] interface ErrorEvent : Event {
+    [CallWith=ScriptState] constructor(DOMString type, optional ErrorEventInit eventInitDict);
     readonly attribute DOMString message;
     readonly attribute DOMString filename;
     readonly attribute unsigned long lineno;
diff --git a/third_party/blink/renderer/core/events/focus_event.idl b/third_party/blink/renderer/core/events/focus_event.idl
index 15b682cd..7e630ae 100644
--- a/third_party/blink/renderer/core/events/focus_event.idl
+++ b/third_party/blink/renderer/core/events/focus_event.idl
@@ -26,8 +26,8 @@
 // https://w3c.github.io/uievents/#interface-FocusEvent
 
 [
-    Constructor(DOMString type, optional FocusEventInit eventInitDict),
     Exposed=Window
 ] interface FocusEvent : UIEvent {
+    constructor(DOMString type, optional FocusEventInit eventInitDict);
     readonly attribute EventTarget? relatedTarget;
 };
diff --git a/third_party/blink/renderer/core/events/hash_change_event.idl b/third_party/blink/renderer/core/events/hash_change_event.idl
index 8e38fdb..922b02a 100644
--- a/third_party/blink/renderer/core/events/hash_change_event.idl
+++ b/third_party/blink/renderer/core/events/hash_change_event.idl
@@ -20,10 +20,10 @@
 // https://html.spec.whatwg.org/C/#the-hashchangeevent-interface
 
 [
-    Constructor(DOMString type, optional HashChangeEventInit eventInitDict),
     // TODO(foolip): Exposed=(Window,Worker)
     Exposed=Window
 ] interface HashChangeEvent : Event {
+    constructor(DOMString type, optional HashChangeEventInit eventInitDict);
     readonly attribute DOMString oldURL;
     readonly attribute DOMString newURL;
 };
diff --git a/third_party/blink/renderer/core/events/input_event.idl b/third_party/blink/renderer/core/events/input_event.idl
index 0ba6e09..8d105e05 100644
--- a/third_party/blink/renderer/core/events/input_event.idl
+++ b/third_party/blink/renderer/core/events/input_event.idl
@@ -6,9 +6,9 @@
 // https://w3c.github.io/uievents/#idl-inputevent
 
 [
-    Constructor(DOMString type, optional InputEventInit eventInitDict),
     Exposed=Window
 ] interface InputEvent : UIEvent {
+    constructor(DOMString type, optional InputEventInit eventInitDict);
     readonly attribute DOMString? data;
     readonly attribute boolean isComposing;
 
diff --git a/third_party/blink/renderer/core/events/keyboard_event.idl b/third_party/blink/renderer/core/events/keyboard_event.idl
index a808fcb99..970be00 100644
--- a/third_party/blink/renderer/core/events/keyboard_event.idl
+++ b/third_party/blink/renderer/core/events/keyboard_event.idl
@@ -21,10 +21,9 @@
 // https://w3c.github.io/uievents/#interface-KeyboardEvent
 
 [
-    Constructor(DOMString type, optional KeyboardEventInit eventInitDict),
-    ConstructorCallWith=ScriptState,
     Exposed=Window
 ] interface KeyboardEvent : UIEvent {
+    [CallWith=ScriptState] constructor(DOMString type, optional KeyboardEventInit eventInitDict);
     // KeyLocationCode
     const unsigned long DOM_KEY_LOCATION_STANDARD = 0x00;
     const unsigned long DOM_KEY_LOCATION_LEFT     = 0x01;
diff --git a/third_party/blink/renderer/core/events/message_event.idl b/third_party/blink/renderer/core/events/message_event.idl
index 5252a70..41a7656 100644
--- a/third_party/blink/renderer/core/events/message_event.idl
+++ b/third_party/blink/renderer/core/events/message_event.idl
@@ -28,10 +28,9 @@
 // https://html.spec.whatwg.org/C/#the-messageevent-interface
 
 [
-    Constructor(DOMString type, optional MessageEventInit eventInitDict),
-    Exposed=(Window,Worker,AudioWorklet),
-    RaisesException=Constructor
+    Exposed=(Window,Worker,AudioWorklet)
 ] interface MessageEvent : Event {
+    [RaisesException] constructor(DOMString type, optional MessageEventInit eventInitDict);
     [CachedAttribute=IsDataDirty, CallWith=ScriptState] readonly attribute any data;
     readonly attribute DOMString origin;
     readonly attribute DOMString lastEventId;
diff --git a/third_party/blink/renderer/core/events/mouse_event.idl b/third_party/blink/renderer/core/events/mouse_event.idl
index 75e6baf4..7a017006 100644
--- a/third_party/blink/renderer/core/events/mouse_event.idl
+++ b/third_party/blink/renderer/core/events/mouse_event.idl
@@ -20,10 +20,9 @@
 // https://w3c.github.io/uievents/#interface-MouseEvent
 
 [
-    Constructor(DOMString type, optional MouseEventInit eventInitDict),
-    ConstructorCallWith=ScriptState,
     Exposed=Window
 ] interface MouseEvent : UIEvent {
+    [CallWith=ScriptState] constructor(DOMString type, optional MouseEventInit eventInitDict);
     [HighEntropy, MeasureAs=MouseEventScreenX] readonly attribute double screenX;
     [HighEntropy, MeasureAs=MouseEventScreenY] readonly attribute double screenY;
     readonly attribute double           clientX;
diff --git a/third_party/blink/renderer/core/events/overscroll_event.idl b/third_party/blink/renderer/core/events/overscroll_event.idl
index 6d67d990..2fec6da 100644
--- a/third_party/blink/renderer/core/events/overscroll_event.idl
+++ b/third_party/blink/renderer/core/events/overscroll_event.idl
@@ -5,9 +5,9 @@
 // TODO(sahel): Add link to w3c. https://crbugs.com/907601
 
 [
-    Constructor(DOMString type, boolean bubbles, optional OverscrollEventInit eventInitDict),
     RuntimeEnabled=OverscrollCustomization
 ] interface OverscrollEvent : Event {
+    constructor(DOMString type, boolean bubbles, optional OverscrollEventInit eventInitDict);
     readonly attribute double deltaX;
     readonly attribute double deltaY;
 };
diff --git a/third_party/blink/renderer/core/events/page_transition_event.idl b/third_party/blink/renderer/core/events/page_transition_event.idl
index 9e85111..cd18a0c1 100644
--- a/third_party/blink/renderer/core/events/page_transition_event.idl
+++ b/third_party/blink/renderer/core/events/page_transition_event.idl
@@ -26,9 +26,9 @@
 // https://html.spec.whatwg.org/C/#the-pagetransitionevent-interface
 
 [
-    Constructor(DOMString type, optional PageTransitionEventInit eventInitDict),
     // TODO(foolip): Exposed=(Window,Worker)
     Exposed=Window
 ] interface PageTransitionEvent : Event {
+    constructor(DOMString type, optional PageTransitionEventInit eventInitDict);
     readonly attribute boolean persisted;
 };
diff --git a/third_party/blink/renderer/core/events/pointer_event.idl b/third_party/blink/renderer/core/events/pointer_event.idl
index 1f39eec..dd67123 100644
--- a/third_party/blink/renderer/core/events/pointer_event.idl
+++ b/third_party/blink/renderer/core/events/pointer_event.idl
@@ -5,9 +5,9 @@
 // https://w3c.github.io/pointerevents/#pointerevent-interface
 
 [
-    Constructor(DOMString type, optional PointerEventInit eventInitDict),
     Exposed=Window
 ] interface PointerEvent : MouseEvent {
+    constructor(DOMString type, optional PointerEventInit eventInitDict);
     [MeasureAs=PointerEventAttributeCount]   readonly    attribute long      pointerId;
     [MeasureAs=PointerEventAttributeCount]   readonly    attribute double    width;
     [MeasureAs=PointerEventAttributeCount]   readonly    attribute double    height;
diff --git a/third_party/blink/renderer/core/events/pop_state_event.idl b/third_party/blink/renderer/core/events/pop_state_event.idl
index 874f5e5..9049f82 100644
--- a/third_party/blink/renderer/core/events/pop_state_event.idl
+++ b/third_party/blink/renderer/core/events/pop_state_event.idl
@@ -27,10 +27,9 @@
 // https://html.spec.whatwg.org/C/#the-popstateevent-interface
 
 [
-    Constructor(DOMString type, optional PopStateEventInit eventInitDict),
-    ConstructorCallWith=ScriptState,
     // TODO(foolip): Exposed=(Window,Worker)
     Exposed=Window
 ] interface PopStateEvent : Event {
+    [CallWith=ScriptState] constructor(DOMString type, optional PopStateEventInit eventInitDict);
     [Custom=Getter] readonly attribute any state;
 };
diff --git a/third_party/blink/renderer/core/events/progress_event.idl b/third_party/blink/renderer/core/events/progress_event.idl
index 5062deab..efd0126 100644
--- a/third_party/blink/renderer/core/events/progress_event.idl
+++ b/third_party/blink/renderer/core/events/progress_event.idl
@@ -26,9 +26,9 @@
 // https://xhr.spec.whatwg.org/#interface-progressevent
 
 [
-    Constructor(DOMString type, optional ProgressEventInit eventInitDict),
     Exposed=(Window,DedicatedWorker,SharedWorker)
 ] interface ProgressEvent : Event {
+    constructor(DOMString type, optional ProgressEventInit eventInitDict);
     readonly attribute boolean lengthComputable;
     readonly attribute unsigned long long loaded;
     readonly attribute unsigned long long total;
diff --git a/third_party/blink/renderer/core/events/promise_rejection_event.idl b/third_party/blink/renderer/core/events/promise_rejection_event.idl
index 1f1c709..3f53e019 100644
--- a/third_party/blink/renderer/core/events/promise_rejection_event.idl
+++ b/third_party/blink/renderer/core/events/promise_rejection_event.idl
@@ -5,10 +5,9 @@
 // https://github.com/domenic/unhandled-rejections-browser-spec
 
 [
-    Constructor(DOMString type, PromiseRejectionEventInit eventInitDict),
-    ConstructorCallWith=ScriptState,
     Exposed=(Window,Worker)
 ] interface PromiseRejectionEvent : Event {
+    [CallWith=ScriptState] constructor(DOMString type, PromiseRejectionEventInit eventInitDict);
     [Custom=Getter] readonly attribute Promise<any> promise;
     [CallWith=ScriptState] readonly attribute any reason;
 };
diff --git a/third_party/blink/renderer/core/events/security_policy_violation_event.idl b/third_party/blink/renderer/core/events/security_policy_violation_event.idl
index cbf041b..12b334f 100644
--- a/third_party/blink/renderer/core/events/security_policy_violation_event.idl
+++ b/third_party/blink/renderer/core/events/security_policy_violation_event.idl
@@ -30,10 +30,10 @@
 };
 
 [
-  Constructor(DOMString type),
-  Constructor(DOMString type, SecurityPolicyViolationEventInit eventInitDict),
   Exposed=(Window,Worker)
 ] interface SecurityPolicyViolationEvent : Event {
+    constructor(DOMString type);
+    constructor(DOMString type, SecurityPolicyViolationEventInit eventInitDict);
     // TODO(foolip): The spec says "documentURL".
     [Measure] readonly attribute DOMString documentURI;
     readonly attribute DOMString referrer;
diff --git a/third_party/blink/renderer/core/events/touch_event.cc b/third_party/blink/renderer/core/events/touch_event.cc
index 874f541..cbd0768 100644
--- a/third_party/blink/renderer/core/events/touch_event.cc
+++ b/third_party/blink/renderer/core/events/touch_event.cc
@@ -54,8 +54,7 @@
 }
 }  // namespace
 
-TouchEvent::TouchEvent()
-    : current_touch_action_(TouchAction::kTouchActionAuto) {}
+TouchEvent::TouchEvent() : current_touch_action_(TouchAction::kAuto) {}
 
 TouchEvent::TouchEvent(const WebCoalescedInputEvent& event,
                        TouchList* touches,
@@ -92,7 +91,7 @@
       touches_(TouchList::Create(initializer->touches())),
       target_touches_(TouchList::Create(initializer->targetTouches())),
       changed_touches_(TouchList::Create(initializer->changedTouches())),
-      current_touch_action_(TouchAction::kTouchActionAuto) {}
+      current_touch_action_(TouchAction::kAuto) {}
 
 TouchEvent::~TouchEvent() = default;
 
@@ -127,7 +126,7 @@
       // Only enable the warning when the current touch action is auto because
       // an author may use touch action but call preventDefault for interop with
       // browsers that don't support touch-action.
-      if (current_touch_action_ == TouchAction::kTouchActionAuto) {
+      if (current_touch_action_ == TouchAction::kAuto) {
         id = "PreventDefaultPassive";
         message =
             "Unable to preventDefault inside passive event listener due to "
@@ -148,7 +147,7 @@
        type() == event_type_names::kTouchmove) &&
       local_dom_window) {
     auto* local_frame = DynamicTo<LocalFrame>(view()->GetFrame());
-    if (local_frame && current_touch_action_ == TouchAction::kTouchActionAuto) {
+    if (local_frame && current_touch_action_ == TouchAction::kAuto) {
       switch (HandlingPassive()) {
         case PassiveMode::kNotPassiveDefault:
           UseCounter::Count(local_dom_window->document(),
diff --git a/third_party/blink/renderer/core/events/touch_event.idl b/third_party/blink/renderer/core/events/touch_event.idl
index 50a667e..99e449d 100644
--- a/third_party/blink/renderer/core/events/touch_event.idl
+++ b/third_party/blink/renderer/core/events/touch_event.idl
@@ -26,9 +26,9 @@
 // https://w3c.github.io/touch-events/#touchevent-interface
 
 [
-    Constructor(DOMString type, optional TouchEventInit eventInitDict),
     Exposed=Window
 ] interface TouchEvent : UIEvent {
+    constructor(DOMString type, optional TouchEventInit eventInitDict);
     readonly attribute TouchList touches;
     readonly attribute TouchList targetTouches;
     readonly attribute TouchList changedTouches;
diff --git a/third_party/blink/renderer/core/events/touch_event_test.cc b/third_party/blink/renderer/core/events/touch_event_test.cc
index ef62cd7..ff58660 100644
--- a/third_party/blink/renderer/core/events/touch_event_test.cc
+++ b/third_party/blink/renderer/core/events/touch_event_test.cc
@@ -70,7 +70,7 @@
     web_touch_event.dispatch_type = dispatch_type;
     return TouchEvent::Create(WebCoalescedInputEvent(web_touch_event), nullptr,
                               nullptr, nullptr, "touchstart", &Window(),
-                              TouchAction::kTouchActionAuto);
+                              TouchAction::kAuto);
   }
 
  private:
diff --git a/third_party/blink/renderer/core/events/transition_event.idl b/third_party/blink/renderer/core/events/transition_event.idl
index 7d09afc9..73cda3f 100644
--- a/third_party/blink/renderer/core/events/transition_event.idl
+++ b/third_party/blink/renderer/core/events/transition_event.idl
@@ -27,9 +27,9 @@
 // https://drafts.csswg.org/css-transitions/#transition-events
 
 [
-    Constructor(DOMString type, optional TransitionEventInit eventInitDict),
     Exposed=Window
 ] interface TransitionEvent : Event {
+    constructor(DOMString type, optional TransitionEventInit eventInitDict);
     readonly attribute DOMString propertyName;
     readonly attribute double elapsedTime;
     readonly attribute DOMString pseudoElement;
diff --git a/third_party/blink/renderer/core/events/ui_event.idl b/third_party/blink/renderer/core/events/ui_event.idl
index ed34dba..28eceaa 100644
--- a/third_party/blink/renderer/core/events/ui_event.idl
+++ b/third_party/blink/renderer/core/events/ui_event.idl
@@ -20,9 +20,9 @@
 // https://w3c.github.io/uievents/#interface-UIEvent
 
 [
-    Constructor(DOMString type, optional UIEventInit eventInitDict),
     Exposed=Window
 ] interface UIEvent : Event {
+    constructor(DOMString type, optional UIEventInit eventInitDict);
     readonly attribute Window? view;
     readonly attribute long detail;
     readonly attribute InputDeviceCapabilities? sourceCapabilities;
diff --git a/third_party/blink/renderer/core/events/wheel_event.idl b/third_party/blink/renderer/core/events/wheel_event.idl
index c95ebd89..a49395b 100644
--- a/third_party/blink/renderer/core/events/wheel_event.idl
+++ b/third_party/blink/renderer/core/events/wheel_event.idl
@@ -22,9 +22,9 @@
 // https://w3c.github.io/uievents/#interface-WheelEvent
 
 [
-    Constructor(DOMString type, optional WheelEventInit eventInitDict),
     Exposed=Window
 ] interface WheelEvent : MouseEvent {
+    constructor(DOMString type, optional WheelEventInit eventInitDict);
     // DeltaModeCode
     const unsigned long DOM_DELTA_PIXEL = 0x00;
     const unsigned long DOM_DELTA_LINE = 0x01;
diff --git a/third_party/blink/renderer/core/execution_context/agent.h b/third_party/blink/renderer/core/execution_context/agent.h
index 5874d969..f82ead9 100644
--- a/third_party/blink/renderer/core/execution_context/agent.h
+++ b/third_party/blink/renderer/core/execution_context/agent.h
@@ -31,16 +31,8 @@
 // Agent is shared across a group of reachable and same-site frames.
 class CORE_EXPORT Agent : public GarbageCollected<Agent> {
  public:
-  static Agent* CreateForWorkerOrWorklet(
-      v8::Isolate* isolate,
-      const base::UnguessableToken& cluster_id,
-      std::unique_ptr<v8::MicrotaskQueue> microtask_queue = nullptr) {
-    return MakeGarbageCollected<Agent>(isolate, cluster_id,
-                                       std::move(microtask_queue));
-  }
-
   // Do not create the instance directly.
-  // Use Agent::CreateForWorkerOrWorklet() or
+  // Use MakeGarbageCollected<Agent>() or
   // WindowAgentFactory::GetAgentForOrigin().
   Agent(v8::Isolate* isolate,
         const base::UnguessableToken& cluster_id,
diff --git a/third_party/blink/renderer/core/exported/web_remote_frame_impl.cc b/third_party/blink/renderer/core/exported/web_remote_frame_impl.cc
index cb69061..57adcf9 100644
--- a/third_party/blink/renderer/core/exported/web_remote_frame_impl.cc
+++ b/third_party/blink/renderer/core/exported/web_remote_frame_impl.cc
@@ -441,8 +441,9 @@
   owner->IntrinsicSizingInfoChanged();
 }
 
-void WebRemoteFrameImpl::SetHasReceivedUserGestureBeforeNavigation(bool value) {
-  GetFrame()->SetDocumentHasReceivedUserGestureBeforeNavigation(value);
+void WebRemoteFrameImpl::SetHadStickyUserActivationBeforeNavigation(
+    bool value) {
+  GetFrame()->SetHadStickyUserActivationBeforeNavigation(value);
 }
 
 v8::Local<v8::Object> WebRemoteFrameImpl::GlobalProxy() const {
diff --git a/third_party/blink/renderer/core/exported/web_remote_frame_impl.h b/third_party/blink/renderer/core/exported/web_remote_frame_impl.h
index fc8045e..5e8dcf8 100644
--- a/third_party/blink/renderer/core/exported/web_remote_frame_impl.h
+++ b/third_party/blink/renderer/core/exported/web_remote_frame_impl.h
@@ -101,7 +101,7 @@
   void BubbleLogicalScroll(WebScrollDirection direction,
                            ScrollGranularity granularity) override;
   void IntrinsicSizingInfoChanged(const WebIntrinsicSizingInfo&) override;
-  void SetHasReceivedUserGestureBeforeNavigation(bool value) override;
+  void SetHadStickyUserActivationBeforeNavigation(bool value) override;
   v8::Local<v8::Object> GlobalProxy() const override;
   WebRect GetCompositingRect() override;
   void RenderFallbackContent() const override;
diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_party/blink/renderer/core/exported/web_view_impl.cc
index ca8b470..a21a254 100644
--- a/third_party/blink/renderer/core/exported/web_view_impl.cc
+++ b/third_party/blink/renderer/core/exported/web_view_impl.cc
@@ -2159,7 +2159,7 @@
     // back out.
     TouchAction action =
         touch_action_util::ComputeEffectiveTouchAction(element);
-    if (!(action & TouchAction::kTouchActionPinchZoom))
+    if (!(static_cast<int>(action) & static_cast<int>(TouchAction::kPinchZoom)))
       zoom_into_legible_scale = false;
   }
 
diff --git a/third_party/blink/renderer/core/fetch/body_stream_buffer.cc b/third_party/blink/renderer/core/fetch/body_stream_buffer.cc
index 40c391e1..044bfdbc 100644
--- a/third_party/blink/renderer/core/fetch/body_stream_buffer.cc
+++ b/third_party/blink/renderer/core/fetch/body_stream_buffer.cc
@@ -99,35 +99,51 @@
   DISALLOW_COPY_AND_ASSIGN(LoaderClient);
 };
 
-BodyStreamBuffer::BodyStreamBuffer(ScriptState* script_state,
+// Use a Create() method to split construction from initialisation.
+// Initialisation may result in nested calls to ContextDestroyed() and so is not
+// safe to do during construction.
+
+// static
+BodyStreamBuffer* BodyStreamBuffer::Create(ScriptState* script_state,
+                                           BytesConsumer* consumer,
+                                           AbortSignal* signal) {
+  auto* buffer = MakeGarbageCollected<BodyStreamBuffer>(PassKey(), script_state,
+                                                        consumer, signal);
+  buffer->Init();
+  return buffer;
+}
+
+BodyStreamBuffer::BodyStreamBuffer(PassKey,
+                                   ScriptState* script_state,
                                    BytesConsumer* consumer,
                                    AbortSignal* signal)
     : UnderlyingSourceBase(script_state),
       script_state_(script_state),
       consumer_(consumer),
       signal_(signal),
-      made_from_readable_stream_(false) {
-  // inside_create_stream_ is set to track down the cause of the crash in
-  // https://crbug.com/1007162.
-  // TODO(ricea): Remove it and the CHECK once the cause is found.
-  inside_create_stream_ = true;
-  CHECK(consumer_);
+      made_from_readable_stream_(false) {}
+
+void BodyStreamBuffer::Init() {
+  DCHECK(consumer_);
 
   stream_ =
       ReadableStream::CreateWithCountQueueingStrategy(script_state_, this, 0);
   stream_broken_ = !stream_;
 
-  // TODO(ricea): Remove this and the CHECK once https://crbug.com/1007162 is
-  // fixed.
-  inside_create_stream_ = false;
-  CHECK(consumer_);
+  // ContextDestroyed() can be called inside the ReadableStream constructor when
+  // a worker thread is being terminated. See https://crbug.com/1007162 for
+  // details. If consumer_ is null, assume that this happened and this object
+  // will never actually be used, and so it is fine to skip the rest of
+  // initialisation.
+  if (!consumer_)
+    return;
 
   consumer_->SetClient(this);
-  if (signal) {
-    if (signal->aborted()) {
+  if (signal_) {
+    if (signal_->aborted()) {
       Abort();
     } else {
-      signal->AddAlgorithm(
+      signal_->AddAlgorithm(
           WTF::Bind(&BodyStreamBuffer::Abort, WrapWeakPersistent(this)));
     }
   }
@@ -255,10 +271,8 @@
   }
   BytesConsumerTee(ExecutionContext::From(script_state_), handle, &dest1,
                    &dest2);
-  *branch1 =
-      MakeGarbageCollected<BodyStreamBuffer>(script_state_, dest1, signal_);
-  *branch2 =
-      MakeGarbageCollected<BodyStreamBuffer>(script_state_, dest2, signal_);
+  *branch1 = BodyStreamBuffer::Create(script_state_, dest1, signal_);
+  *branch2 = BodyStreamBuffer::Create(script_state_, dest2, signal_);
 }
 
 ScriptPromise BodyStreamBuffer::pull(ScriptState* script_state) {
@@ -427,9 +441,6 @@
 
 void BodyStreamBuffer::CancelConsumer() {
   if (consumer_) {
-    // TODO(ricea): Remove this CHECK once the cause of
-    // https://crbug.com/1007162 is found.
-    CHECK(!inside_create_stream_);
     consumer_->Cancel();
     consumer_ = nullptr;
   }
@@ -543,9 +554,6 @@
   if (exception_state.HadException())
     return nullptr;
 
-  // TODO(ricea): Remove this CHECK once the cause of https://crbug.com/1007162
-  // is found.
-  CHECK(!inside_create_stream_);
   BytesConsumer* consumer = consumer_.Release();
 
   CloseAndLockAndDisturb(exception_state);
diff --git a/third_party/blink/renderer/core/fetch/body_stream_buffer.h b/third_party/blink/renderer/core/fetch/body_stream_buffer.h
index e38a66a69..38666cc 100644
--- a/third_party/blink/renderer/core/fetch/body_stream_buffer.h
+++ b/third_party/blink/renderer/core/fetch/body_stream_buffer.h
@@ -7,6 +7,7 @@
 
 #include <memory>
 #include "base/optional.h"
+#include "base/util/type_safety/pass_key.h"
 #include "third_party/blink/renderer/bindings/core/v8/script_promise.h"
 #include "third_party/blink/renderer/bindings/core/v8/script_value.h"
 #include "third_party/blink/renderer/core/core_export.h"
@@ -30,13 +31,23 @@
   USING_GARBAGE_COLLECTED_MIXIN(BodyStreamBuffer);
 
  public:
+  using PassKey = util::PassKey<BodyStreamBuffer>;
+
+  // Create a BodyStreamBuffer for |consumer|.
   // |consumer| must not have a client.
-  // This function must be called with entering an appropriate V8 context.
+  // This function must be called after entering an appropriate V8 context.
   // |signal| should be non-null when this BodyStreamBuffer is associated with a
   // Response that was created by fetch().
-  BodyStreamBuffer(ScriptState*,
-                   BytesConsumer* /* consumer */,
-                   AbortSignal* /* signal */);
+  static BodyStreamBuffer* Create(ScriptState*,
+                                  BytesConsumer* consumer,
+                                  AbortSignal* signal);
+
+  // Create() should be used instead of calling this constructor directly.
+  BodyStreamBuffer(PassKey,
+                   ScriptState*,
+                   BytesConsumer* consumer,
+                   AbortSignal* signal);
+
   BodyStreamBuffer(ScriptState*, ReadableStream* stream);
 
   ReadableStream* Stream() { return stream_; }
@@ -78,6 +89,11 @@
  private:
   class LoaderClient;
 
+  // This method exists to avoid re-entrancy inside the BodyStreamBuffer
+  // constructor. It is called by Create(). It should not be called after
+  // using the ReadableStream* constructor.
+  void Init();
+
   BytesConsumer* ReleaseHandle(ExceptionState&);
   void Abort();
   void Close();
@@ -109,10 +125,6 @@
   bool in_process_data_ = false;
   bool stream_broken_ = false;
 
-  // TODO(ricea): Remove this once the cause of https://crbug.com/1007162 has
-  // been established.
-  bool inside_create_stream_ = false;
-
   DISALLOW_COPY_AND_ASSIGN(BodyStreamBuffer);
 };
 
diff --git a/third_party/blink/renderer/core/fetch/body_stream_buffer_test.cc b/third_party/blink/renderer/core/fetch/body_stream_buffer_test.cc
index 99f4be51..24da94e 100644
--- a/third_party/blink/renderer/core/fetch/body_stream_buffer_test.cc
+++ b/third_party/blink/renderer/core/fetch/body_stream_buffer_test.cc
@@ -114,8 +114,8 @@
   src->Add(Command(Command::kData, "hello, "));
   src->Add(Command(Command::kData, "world"));
   src->Add(Command(Command::kDone));
-  BodyStreamBuffer* buffer = MakeGarbageCollected<BodyStreamBuffer>(
-      scope.GetScriptState(), src, nullptr);
+  BodyStreamBuffer* buffer =
+      BodyStreamBuffer::Create(scope.GetScriptState(), src, nullptr);
 
   BodyStreamBuffer* new1;
   BodyStreamBuffer* new2;
@@ -219,7 +219,7 @@
   auto size = data->length();
   scoped_refptr<BlobDataHandle> blob_data_handle =
       BlobDataHandle::Create(std::move(data), size);
-  BodyStreamBuffer* buffer = MakeGarbageCollected<BodyStreamBuffer>(
+  BodyStreamBuffer* buffer = BodyStreamBuffer::Create(
       scope.GetScriptState(),
       MakeGarbageCollected<BlobBytesConsumer>(scope.GetExecutionContext(),
                                               blob_data_handle),
@@ -244,8 +244,8 @@
   // This BytesConsumer is not drainable.
   BytesConsumer* src = MakeGarbageCollected<ReplayingBytesConsumer>(
       scope.GetDocument().GetTaskRunner(TaskType::kNetworking));
-  BodyStreamBuffer* buffer = MakeGarbageCollected<BodyStreamBuffer>(
-      scope.GetScriptState(), src, nullptr);
+  BodyStreamBuffer* buffer =
+      BodyStreamBuffer::Create(scope.GetScriptState(), src, nullptr);
 
   EXPECT_FALSE(buffer->IsStreamLocked(ASSERT_NO_EXCEPTION).value_or(true));
   EXPECT_FALSE(buffer->IsStreamDisturbed(ASSERT_NO_EXCEPTION).value_or(true));
@@ -293,7 +293,7 @@
   scoped_refptr<EncodedFormData> input_form_data =
       data->EncodeMultiPartFormData();
 
-  BodyStreamBuffer* buffer = MakeGarbageCollected<BodyStreamBuffer>(
+  BodyStreamBuffer* buffer = BodyStreamBuffer::Create(
       scope.GetScriptState(),
       MakeGarbageCollected<FormDataBytesConsumer>(scope.GetExecutionContext(),
                                                   input_form_data),
@@ -317,8 +317,8 @@
   // This BytesConsumer is not drainable.
   BytesConsumer* src = MakeGarbageCollected<ReplayingBytesConsumer>(
       scope.GetDocument().GetTaskRunner(TaskType::kNetworking));
-  BodyStreamBuffer* buffer = MakeGarbageCollected<BodyStreamBuffer>(
-      scope.GetScriptState(), src, nullptr);
+  BodyStreamBuffer* buffer =
+      BodyStreamBuffer::Create(scope.GetScriptState(), src, nullptr);
 
   EXPECT_FALSE(buffer->IsStreamLocked(ASSERT_NO_EXCEPTION).value_or(true));
   EXPECT_FALSE(buffer->IsStreamDisturbed(ASSERT_NO_EXCEPTION).value_or(true));
@@ -370,8 +370,8 @@
   src->Add(Command(Command::kWait));
   src->Add(Command(Command::kData, "hello"));
   src->Add(Command(Command::kDone));
-  BodyStreamBuffer* buffer = MakeGarbageCollected<BodyStreamBuffer>(
-      scope.GetScriptState(), src, nullptr);
+  BodyStreamBuffer* buffer =
+      BodyStreamBuffer::Create(scope.GetScriptState(), src, nullptr);
   buffer->StartLoading(FetchDataLoader::CreateLoaderAsArrayBuffer(), client,
                        ASSERT_NO_EXCEPTION);
 
@@ -408,8 +408,8 @@
   src->Add(Command(Command::kWait));
   src->Add(Command(Command::kData, "hello"));
   src->Add(Command(Command::kDone));
-  BodyStreamBuffer* buffer = MakeGarbageCollected<BodyStreamBuffer>(
-      scope.GetScriptState(), src, nullptr);
+  BodyStreamBuffer* buffer =
+      BodyStreamBuffer::Create(scope.GetScriptState(), src, nullptr);
   buffer->StartLoading(FetchDataLoader::CreateLoaderAsBlobHandle("text/plain"),
                        client, ASSERT_NO_EXCEPTION);
 
@@ -442,8 +442,8 @@
   src->Add(Command(Command::kWait));
   src->Add(Command(Command::kData, "hello"));
   src->Add(Command(Command::kDone));
-  BodyStreamBuffer* buffer = MakeGarbageCollected<BodyStreamBuffer>(
-      scope.GetScriptState(), src, nullptr);
+  BodyStreamBuffer* buffer =
+      BodyStreamBuffer::Create(scope.GetScriptState(), src, nullptr);
   buffer->StartLoading(FetchDataLoader::CreateLoaderAsString(
                            TextResourceDecoderOptions::CreateUTF8Decode()),
                        client, ASSERT_NO_EXCEPTION);
@@ -471,7 +471,7 @@
   EXPECT_CALL(*client, DidFetchDataLoadedString(String("")));
   EXPECT_CALL(checkpoint, Call(2));
 
-  BodyStreamBuffer* buffer = MakeGarbageCollected<BodyStreamBuffer>(
+  BodyStreamBuffer* buffer = BodyStreamBuffer::Create(
       scope.GetScriptState(), BytesConsumer::CreateClosed(), nullptr);
 
   EXPECT_TRUE(buffer->IsStreamClosed(ASSERT_NO_EXCEPTION).value_or(false));
@@ -501,7 +501,7 @@
   EXPECT_CALL(*client, DidFetchDataLoadFailed());
   EXPECT_CALL(checkpoint, Call(2));
 
-  BodyStreamBuffer* buffer = MakeGarbageCollected<BodyStreamBuffer>(
+  BodyStreamBuffer* buffer = BodyStreamBuffer::Create(
       scope.GetScriptState(),
       BytesConsumer::CreateErrored(BytesConsumer::Error()), nullptr);
 
@@ -537,8 +537,8 @@
   src->Add(Command(Command::kWait));
   src->Add(Command(Command::kData, "hello"));
   src->Add(Command(Command::kDone));
-  Persistent<BodyStreamBuffer> buffer = MakeGarbageCollected<BodyStreamBuffer>(
-      scope.GetScriptState(), src, nullptr);
+  Persistent<BodyStreamBuffer> buffer =
+      BodyStreamBuffer::Create(scope.GetScriptState(), src, nullptr);
   buffer->StartLoading(FetchDataLoader::CreateLoaderAsString(
                            TextResourceDecoderOptions::CreateUTF8Decode()),
                        client, ASSERT_NO_EXCEPTION);
@@ -555,8 +555,8 @@
       MakeGarbageCollected<ReplayingBytesConsumer>(
           scope.GetDocument().GetTaskRunner(TaskType::kNetworking));
 
-  BodyStreamBuffer* buffer = MakeGarbageCollected<BodyStreamBuffer>(
-      scope.GetScriptState(), consumer, nullptr);
+  BodyStreamBuffer* buffer =
+      BodyStreamBuffer::Create(scope.GetScriptState(), consumer, nullptr);
   ScriptValue reason(scope.GetIsolate(),
                      V8String(scope.GetIsolate(), "reason"));
   EXPECT_FALSE(consumer->IsCancelled());
@@ -571,8 +571,8 @@
   src->Add(Command(Command::kWait));
   src->Add(Command(Command::kData, "hello"));
   src->Add(Command(Command::kError));
-  Persistent<BodyStreamBuffer> buffer = MakeGarbageCollected<BodyStreamBuffer>(
-      scope.GetScriptState(), src, nullptr);
+  Persistent<BodyStreamBuffer> buffer =
+      BodyStreamBuffer::Create(scope.GetScriptState(), src, nullptr);
 
   auto result =
       scope.GetScriptState()->GetContext()->Global()->CreateDataProperty(
@@ -599,8 +599,8 @@
   // This BytesConsumer is not drainable.
   BytesConsumer* src = MakeGarbageCollected<ReplayingBytesConsumer>(
       scope.GetDocument().GetTaskRunner(TaskType::kNetworking));
-  BodyStreamBuffer* buffer = MakeGarbageCollected<BodyStreamBuffer>(
-      scope.GetScriptState(), src, nullptr);
+  BodyStreamBuffer* buffer =
+      BodyStreamBuffer::Create(scope.GetScriptState(), src, nullptr);
 
   EXPECT_FALSE(buffer->IsAborted());
 }
@@ -611,8 +611,8 @@
   BytesConsumer* src = MakeGarbageCollected<ReplayingBytesConsumer>(
       scope.GetDocument().GetTaskRunner(TaskType::kNetworking));
   auto* signal = MakeGarbageCollected<AbortSignal>(scope.GetExecutionContext());
-  BodyStreamBuffer* buffer = MakeGarbageCollected<BodyStreamBuffer>(
-      scope.GetScriptState(), src, signal);
+  BodyStreamBuffer* buffer =
+      BodyStreamBuffer::Create(scope.GetScriptState(), src, signal);
 
   EXPECT_FALSE(buffer->IsAborted());
   signal->SignalAbort();
@@ -643,8 +643,8 @@
   EXPECT_CALL(checkpoint, Call(3));
 
   auto* signal = MakeGarbageCollected<AbortSignal>(scope.GetExecutionContext());
-  BodyStreamBuffer* buffer = MakeGarbageCollected<BodyStreamBuffer>(
-      scope.GetScriptState(), src, signal);
+  BodyStreamBuffer* buffer =
+      BodyStreamBuffer::Create(scope.GetScriptState(), src, signal);
 
   checkpoint.Call(1);
   signal->SignalAbort();
@@ -677,8 +677,8 @@
   EXPECT_CALL(checkpoint, Call(3));
 
   auto* signal = MakeGarbageCollected<AbortSignal>(scope.GetExecutionContext());
-  BodyStreamBuffer* buffer = MakeGarbageCollected<BodyStreamBuffer>(
-      scope.GetScriptState(), src, signal);
+  BodyStreamBuffer* buffer =
+      BodyStreamBuffer::Create(scope.GetScriptState(), src, signal);
 
   checkpoint.Call(1);
   buffer->StartLoading(loader, client, ASSERT_NO_EXCEPTION);
@@ -712,8 +712,8 @@
   EXPECT_CALL(checkpoint, Call(3));
 
   auto* signal = MakeGarbageCollected<AbortSignal>(scope.GetExecutionContext());
-  BodyStreamBuffer* buffer = MakeGarbageCollected<BodyStreamBuffer>(
-      scope.GetScriptState(), src, signal);
+  BodyStreamBuffer* buffer =
+      BodyStreamBuffer::Create(scope.GetScriptState(), src, signal);
 
   checkpoint.Call(1);
   buffer->StartLoading(loader, client, ASSERT_NO_EXCEPTION);
diff --git a/third_party/blink/renderer/core/fetch/fetch_manager.cc b/third_party/blink/renderer/core/fetch/fetch_manager.cc
index 11e410e..1e37f6d8 100644
--- a/third_party/blink/renderer/core/fetch/fetch_manager.cc
+++ b/third_party/blink/renderer/core/fetch/fetch_manager.cc
@@ -410,8 +410,7 @@
 
   place_holder_body_ = MakeGarbageCollected<PlaceHolderBytesConsumer>();
   FetchResponseData* response_data = FetchResponseData::CreateWithBuffer(
-      MakeGarbageCollected<BodyStreamBuffer>(script_state, place_holder_body_,
-                                             signal_));
+      BodyStreamBuffer::Create(script_state, place_holder_body_, signal_));
   response_data->SetStatus(response.HttpStatusCode());
   if (response.CurrentRequestUrl().ProtocolIsAbout() ||
       response.CurrentRequestUrl().ProtocolIsData() ||
diff --git a/third_party/blink/renderer/core/fetch/fetch_request_data.cc b/third_party/blink/renderer/core/fetch/fetch_request_data.cc
index 6f62d48..265e0a4 100644
--- a/third_party/blink/renderer/core/fetch/fetch_request_data.cc
+++ b/third_party/blink/renderer/core/fetch/fetch_request_data.cc
@@ -89,13 +89,13 @@
 
   if (fetch_api_request.blob) {
     DCHECK(!fetch_api_request.body);
-    request->SetBuffer(MakeGarbageCollected<BodyStreamBuffer>(
+    request->SetBuffer(BodyStreamBuffer::Create(
         script_state,
         MakeGarbageCollected<BlobBytesConsumer>(
             ExecutionContext::From(script_state), fetch_api_request.blob),
         nullptr /* AbortSignal */));
   } else if (fetch_api_request.body) {
-    request->SetBuffer(MakeGarbageCollected<BodyStreamBuffer>(
+    request->SetBuffer(BodyStreamBuffer::Create(
         script_state,
         MakeGarbageCollected<FormDataBytesConsumer>(
             ExecutionContext::From(script_state), fetch_api_request.body),
@@ -173,7 +173,7 @@
   FetchRequestData* request = FetchRequestData::CloneExceptBody();
   if (buffer_) {
     request->buffer_ = buffer_;
-    buffer_ = MakeGarbageCollected<BodyStreamBuffer>(
+    buffer_ = BodyStreamBuffer::Create(
         script_state, BytesConsumer::CreateClosed(), nullptr /* AbortSignal */);
     buffer_->CloseAndLockAndDisturb(exception_state);
     if (exception_state.HadException())
diff --git a/third_party/blink/renderer/core/fetch/fetch_response_data.cc b/third_party/blink/renderer/core/fetch/fetch_response_data.cc
index 6610b216..dc520aa 100644
--- a/third_party/blink/renderer/core/fetch/fetch_response_data.cc
+++ b/third_party/blink/renderer/core/fetch/fetch_response_data.cc
@@ -67,6 +67,15 @@
                                            std::move(report_endpoints));
 }
 
+WTF::Vector<blink::ContentSecurityPolicyPtr> ConvertToBlink(
+    std::vector<ContentSecurityPolicyPtr> policies) {
+  WTF::Vector<blink::ContentSecurityPolicyPtr> blink_policies;
+  for (auto& policy : policies)
+    blink_policies.push_back(ConvertToBlink(std::move(policy)));
+
+  return blink_policies;
+}
+
 }  // namespace mojom
 }  // namespace network
 
diff --git a/third_party/blink/renderer/core/fetch/headers.idl b/third_party/blink/renderer/core/fetch/headers.idl
index 102691f..5b0388d8 100644
--- a/third_party/blink/renderer/core/fetch/headers.idl
+++ b/third_party/blink/renderer/core/fetch/headers.idl
@@ -9,10 +9,9 @@
 // https://fetch.spec.whatwg.org/#headers-class
 
 [
-    Constructor(optional HeadersInit init),
-    Exposed=(Window,Worker),
-    RaisesException=Constructor
+    Exposed=(Window,Worker)
 ] interface Headers {
+    [RaisesException] constructor(optional HeadersInit init);
     [RaisesException] void append(ByteString name, ByteString value);
     [ImplementedAs=remove, RaisesException] void delete(ByteString key);
     [RaisesException] ByteString? get(ByteString key);
diff --git a/third_party/blink/renderer/core/fetch/request.cc b/third_party/blink/renderer/core/fetch/request.cc
index 7029071..28152741 100644
--- a/third_party/blink/renderer/core/fetch/request.cc
+++ b/third_party/blink/renderer/core/fetch/request.cc
@@ -104,7 +104,7 @@
 
   if (V8Blob::HasInstance(body, isolate)) {
     Blob* blob = V8Blob::ToImpl(body.As<v8::Object>());
-    return_buffer = MakeGarbageCollected<BodyStreamBuffer>(
+    return_buffer = BodyStreamBuffer::Create(
         script_state,
         MakeGarbageCollected<BlobBytesConsumer>(execution_context,
                                                 blob->GetBlobDataHandle()),
@@ -114,7 +114,7 @@
     // Avoid calling into V8 from the following constructor parameters, which
     // is potentially unsafe.
     DOMArrayBuffer* array_buffer = V8ArrayBuffer::ToImpl(body.As<v8::Object>());
-    return_buffer = MakeGarbageCollected<BodyStreamBuffer>(
+    return_buffer = BodyStreamBuffer::Create(
         script_state, MakeGarbageCollected<FormDataBytesConsumer>(array_buffer),
         nullptr /* AbortSignal */);
   } else if (body->IsArrayBufferView()) {
@@ -122,7 +122,7 @@
     // is potentially unsafe.
     DOMArrayBufferView* array_buffer_view =
         V8ArrayBufferView::ToImpl(body.As<v8::Object>());
-    return_buffer = MakeGarbageCollected<BodyStreamBuffer>(
+    return_buffer = BodyStreamBuffer::Create(
         script_state,
         MakeGarbageCollected<FormDataBytesConsumer>(array_buffer_view),
         nullptr /* AbortSignal */);
@@ -133,19 +133,19 @@
     // FormDataEncoder::generateUniqueBoundaryString.
     content_type = AtomicString("multipart/form-data; boundary=") +
                    form_data->Boundary().data();
-    return_buffer = MakeGarbageCollected<BodyStreamBuffer>(
-        script_state,
-        MakeGarbageCollected<FormDataBytesConsumer>(execution_context,
-                                                    std::move(form_data)),
-        nullptr /* AbortSignal */);
+    return_buffer =
+        BodyStreamBuffer::Create(script_state,
+                                 MakeGarbageCollected<FormDataBytesConsumer>(
+                                     execution_context, std::move(form_data)),
+                                 nullptr /* AbortSignal */);
   } else if (V8URLSearchParams::HasInstance(body, isolate)) {
     scoped_refptr<EncodedFormData> form_data =
         V8URLSearchParams::ToImpl(body.As<v8::Object>())->ToEncodedFormData();
-    return_buffer = MakeGarbageCollected<BodyStreamBuffer>(
-        script_state,
-        MakeGarbageCollected<FormDataBytesConsumer>(execution_context,
-                                                    std::move(form_data)),
-        nullptr /* AbortSignal */);
+    return_buffer =
+        BodyStreamBuffer::Create(script_state,
+                                 MakeGarbageCollected<FormDataBytesConsumer>(
+                                     execution_context, std::move(form_data)),
+                                 nullptr /* AbortSignal */);
     content_type = "application/x-www-form-urlencoded;charset=UTF-8";
   } else {
     String string = NativeValueTraits<IDLUSVString>::NativeValue(
@@ -153,7 +153,7 @@
     if (exception_state.HadException())
       return nullptr;
 
-    return_buffer = MakeGarbageCollected<BodyStreamBuffer>(
+    return_buffer = BodyStreamBuffer::Create(
         script_state, MakeGarbageCollected<FormDataBytesConsumer>(string),
         nullptr /* AbortSignal */);
     content_type = "text/plain;charset=UTF-8";
@@ -571,7 +571,7 @@
   // non-null, run these substeps:"
   if (input_request && input_request->BodyBuffer()) {
     // "Let |dummyStream| be an empty ReadableStream object."
-    auto* dummy_stream = MakeGarbageCollected<BodyStreamBuffer>(
+    auto* dummy_stream = BodyStreamBuffer::Create(
         script_state, BytesConsumer::CreateClosed(), nullptr);
     // "Set |input|'s request's body to a new body whose stream is
     // |dummyStream|."
diff --git a/third_party/blink/renderer/core/fetch/request.idl b/third_party/blink/renderer/core/fetch/request.idl
index 2b5e12b..1f2fe64 100644
--- a/third_party/blink/renderer/core/fetch/request.idl
+++ b/third_party/blink/renderer/core/fetch/request.idl
@@ -31,11 +31,9 @@
 
 [
     ActiveScriptWrappable,
-    Constructor(RequestInfo input, optional RequestInit requestInitDict),
-    ConstructorCallWith=ScriptState,
-    Exposed=(Window,Worker),
-    RaisesException=Constructor
+    Exposed=(Window,Worker)
 ] interface Request {
+    [CallWith=ScriptState, RaisesException] constructor(RequestInfo input, optional RequestInit requestInitDict);
     readonly attribute ByteString method;
     readonly attribute USVString url;
     [ImplementedAs=getHeaders, SameObject] readonly attribute Headers headers;
diff --git a/third_party/blink/renderer/core/fetch/response.cc b/third_party/blink/renderer/core/fetch/response.cc
index 490adcaa..70a3b28 100644
--- a/third_party/blink/renderer/core/fetch/response.cc
+++ b/third_party/blink/renderer/core/fetch/response.cc
@@ -85,7 +85,7 @@
           script_state, fetch_api_response);
 
   if (fetch_api_response.blob) {
-    response->ReplaceBodyStreamBuffer(MakeGarbageCollected<BodyStreamBuffer>(
+    response->ReplaceBodyStreamBuffer(BodyStreamBuffer::Create(
         script_state,
         MakeGarbageCollected<BlobBytesConsumer>(
             ExecutionContext::From(script_state), fetch_api_response.blob),
@@ -148,7 +148,7 @@
     // https://crbug.com/335871.
   } else if (V8Blob::HasInstance(body, isolate)) {
     Blob* blob = V8Blob::ToImpl(body.As<v8::Object>());
-    body_buffer = MakeGarbageCollected<BodyStreamBuffer>(
+    body_buffer = BodyStreamBuffer::Create(
         script_state,
         MakeGarbageCollected<BlobBytesConsumer>(execution_context,
                                                 blob->GetBlobDataHandle()),
@@ -158,7 +158,7 @@
     // Avoid calling into V8 from the following constructor parameters, which
     // is potentially unsafe.
     DOMArrayBuffer* array_buffer = V8ArrayBuffer::ToImpl(body.As<v8::Object>());
-    body_buffer = MakeGarbageCollected<BodyStreamBuffer>(
+    body_buffer = BodyStreamBuffer::Create(
         script_state, MakeGarbageCollected<FormDataBytesConsumer>(array_buffer),
         nullptr /* AbortSignal */);
   } else if (body->IsArrayBufferView()) {
@@ -166,7 +166,7 @@
     // is potentially unsafe.
     DOMArrayBufferView* array_buffer_view =
         V8ArrayBufferView::ToImpl(body.As<v8::Object>());
-    body_buffer = MakeGarbageCollected<BodyStreamBuffer>(
+    body_buffer = BodyStreamBuffer::Create(
         script_state,
         MakeGarbageCollected<FormDataBytesConsumer>(array_buffer_view),
         nullptr /* AbortSignal */);
@@ -177,19 +177,19 @@
     // FormDataEncoder::generateUniqueBoundaryString.
     content_type = AtomicString("multipart/form-data; boundary=") +
                    form_data->Boundary().data();
-    body_buffer = MakeGarbageCollected<BodyStreamBuffer>(
-        script_state,
-        MakeGarbageCollected<FormDataBytesConsumer>(execution_context,
-                                                    std::move(form_data)),
-        nullptr /* AbortSignal */);
+    body_buffer =
+        BodyStreamBuffer::Create(script_state,
+                                 MakeGarbageCollected<FormDataBytesConsumer>(
+                                     execution_context, std::move(form_data)),
+                                 nullptr /* AbortSignal */);
   } else if (V8URLSearchParams::HasInstance(body, isolate)) {
     scoped_refptr<EncodedFormData> form_data =
         V8URLSearchParams::ToImpl(body.As<v8::Object>())->ToEncodedFormData();
-    body_buffer = MakeGarbageCollected<BodyStreamBuffer>(
-        script_state,
-        MakeGarbageCollected<FormDataBytesConsumer>(execution_context,
-                                                    std::move(form_data)),
-        nullptr /* AbortSignal */);
+    body_buffer =
+        BodyStreamBuffer::Create(script_state,
+                                 MakeGarbageCollected<FormDataBytesConsumer>(
+                                     execution_context, std::move(form_data)),
+                                 nullptr /* AbortSignal */);
     content_type = "application/x-www-form-urlencoded;charset=UTF-8";
   } else if (V8ReadableStream::HasInstance(body, isolate)) {
     UseCounter::Count(execution_context,
@@ -201,7 +201,7 @@
         isolate, body, exception_state);
     if (exception_state.HadException())
       return nullptr;
-    body_buffer = MakeGarbageCollected<BodyStreamBuffer>(
+    body_buffer = BodyStreamBuffer::Create(
         script_state, MakeGarbageCollected<FormDataBytesConsumer>(string),
         nullptr /* AbortSignal */);
     content_type = "text/plain;charset=UTF-8";
diff --git a/third_party/blink/renderer/core/fetch/response.idl b/third_party/blink/renderer/core/fetch/response.idl
index dac40e5..533993a 100644
--- a/third_party/blink/renderer/core/fetch/response.idl
+++ b/third_party/blink/renderer/core/fetch/response.idl
@@ -8,13 +8,11 @@
 
 [
     ActiveScriptWrappable,
+    Exposed=(Window,Worker)
+] interface Response {
     // TODO(yhirano): We use "any" for body because the IDL processor doesn't
     // recognize ReadableStream implemented with V8 extras. Fix it.
-    Constructor(optional any body, optional ResponseInit init),
-    ConstructorCallWith=ScriptState,
-    Exposed=(Window,Worker),
-    RaisesException=Constructor
-] interface Response {
+    [CallWith=ScriptState, RaisesException] constructor(optional any body, optional ResponseInit init);
     [CallWith=ScriptState, NewObject] static Response error();
     [CallWith=ScriptState, NewObject, RaisesException] static Response redirect(USVString url, optional unsigned short status = 302);
     readonly attribute ResponseType type;
diff --git a/third_party/blink/renderer/core/fetch/response_test.cc b/third_party/blink/renderer/core/fetch/response_test.cc
index 019b2009..1232e48 100644
--- a/third_party/blink/renderer/core/fetch/response_test.cc
+++ b/third_party/blink/renderer/core/fetch/response_test.cc
@@ -100,7 +100,7 @@
   src->Add(Command(Command::kData, "Hello, "));
   src->Add(Command(Command::kData, "world"));
   src->Add(Command(Command::kDone));
-  return MakeGarbageCollected<BodyStreamBuffer>(script_state, src, nullptr);
+  return BodyStreamBuffer::Create(script_state, src, nullptr);
 }
 
 TEST(ServiceWorkerResponseTest, BodyStreamBufferCloneDefault) {
@@ -164,7 +164,7 @@
 
 TEST(ServiceWorkerResponseTest, BodyStreamBufferCloneError) {
   V8TestingScope scope;
-  BodyStreamBuffer* buffer = MakeGarbageCollected<BodyStreamBuffer>(
+  BodyStreamBuffer* buffer = BodyStreamBuffer::Create(
       scope.GetScriptState(),
       BytesConsumer::CreateErrored(BytesConsumer::Error()), nullptr);
   FetchResponseData* fetch_response_data =
diff --git a/third_party/blink/renderer/core/fileapi/blob.cc b/third_party/blink/renderer/core/fileapi/blob.cc
index 8d9fbf0..2a89a09f 100644
--- a/third_party/blink/renderer/core/fileapi/blob.cc
+++ b/third_party/blink/renderer/core/fileapi/blob.cc
@@ -216,7 +216,7 @@
 }
 
 ReadableStream* Blob::stream(ScriptState* script_state) const {
-  BodyStreamBuffer* body_buffer = MakeGarbageCollected<BodyStreamBuffer>(
+  BodyStreamBuffer* body_buffer = BodyStreamBuffer::Create(
       script_state,
       MakeGarbageCollected<BlobBytesConsumer>(
           ExecutionContext::From(script_state), blob_data_handle_),
diff --git a/third_party/blink/renderer/core/fileapi/blob.idl b/third_party/blink/renderer/core/fileapi/blob.idl
index 3bc8654..d1b814b2 100644
--- a/third_party/blink/renderer/core/fileapi/blob.idl
+++ b/third_party/blink/renderer/core/fileapi/blob.idl
@@ -32,11 +32,10 @@
 
 typedef (ArrayBuffer or ArrayBufferView or Blob or USVString) BlobPart;
 [
-    Constructor(optional sequence<BlobPart> blobParts, optional BlobPropertyBag options),
-    ConstructorCallWith=ExecutionContext,
     Exposed=(Window,Worker),
     Serializable
 ] interface Blob {
+    [CallWith=ExecutionContext] constructor(optional sequence<BlobPart> blobParts, optional BlobPropertyBag options);
     readonly attribute unsigned long long size;
     readonly attribute DOMString type;
 
diff --git a/third_party/blink/renderer/core/fileapi/file.idl b/third_party/blink/renderer/core/fileapi/file.idl
index e5cf6cc..8113ac9 100644
--- a/third_party/blink/renderer/core/fileapi/file.idl
+++ b/third_party/blink/renderer/core/fileapi/file.idl
@@ -26,11 +26,10 @@
 // https://w3c.github.io/FileAPI/#file-section
 
 [
-    Constructor(sequence<BlobPart> fileBits, USVString fileName, optional FilePropertyBag options),
-    ConstructorCallWith=ExecutionContext,
     Exposed=(Window,Worker),
     Serializable
 ] interface File : Blob {
+    [CallWith=ExecutionContext] constructor(sequence<BlobPart> fileBits, USVString fileName, optional FilePropertyBag options);
     readonly attribute DOMString name;
     readonly attribute long long lastModified;
 
diff --git a/third_party/blink/renderer/core/fileapi/file_reader.idl b/third_party/blink/renderer/core/fileapi/file_reader.idl
index ab2c692..0653767 100644
--- a/third_party/blink/renderer/core/fileapi/file_reader.idl
+++ b/third_party/blink/renderer/core/fileapi/file_reader.idl
@@ -33,10 +33,9 @@
 
 [
     ActiveScriptWrappable,
-    Constructor,
-    ConstructorCallWith=ExecutionContext,
     Exposed=(Window,Worker)
 ] interface FileReader : EventTarget {
+    [CallWith=ExecutionContext] constructor();
     // async read methods
     [RaisesException] void readAsArrayBuffer(Blob blob);
     [RaisesException] void readAsBinaryString(Blob blob);
diff --git a/third_party/blink/renderer/core/fileapi/file_reader_sync.idl b/third_party/blink/renderer/core/fileapi/file_reader_sync.idl
index 2f8ef263..1e20474 100644
--- a/third_party/blink/renderer/core/fileapi/file_reader_sync.idl
+++ b/third_party/blink/renderer/core/fileapi/file_reader_sync.idl
@@ -32,10 +32,9 @@
 
 [
     Exposed=(DedicatedWorker,SharedWorker),
-    Constructor,
-    ConstructorCallWith=ExecutionContext,
     Measure
 ] interface FileReaderSync {
+    [CallWith=ExecutionContext] constructor();
     [RaisesException] ArrayBuffer readAsArrayBuffer(Blob blob);
     [RaisesException] DOMString readAsBinaryString(Blob blob);
     [RaisesException] DOMString readAsText(Blob blob, optional DOMString label);
diff --git a/third_party/blink/renderer/core/frame/frame.h b/third_party/blink/renderer/core/frame/frame.h
index e82f0934..c32683a4 100644
--- a/third_party/blink/renderer/core/frame/frame.h
+++ b/third_party/blink/renderer/core/frame/frame.h
@@ -67,9 +67,6 @@
 
 enum class FrameDetachType { kRemove, kSwap };
 
-// Status of user gesture.
-enum class UserGestureStatus { kActive, kNone };
-
 // Frame is the base class of LocalFrame and RemoteFrame and should only contain
 // functionality shared between both. In particular, any method related to
 // input, layout, or painting probably belongs on LocalFrame.
@@ -171,12 +168,12 @@
   // Transfers user activation state from |other| frame into |this|.
   void TransferUserActivationFrom(Frame* other);
 
-  void SetDocumentHasReceivedUserGestureBeforeNavigation(bool value) {
-    has_received_user_gesture_before_nav_ = value;
+  void SetHadStickyUserActivationBeforeNavigation(bool value) {
+    had_sticky_user_activation_before_nav_ = value;
   }
 
-  bool HasReceivedUserGestureBeforeNavigation() const {
-    return has_received_user_gesture_before_nav_;
+  bool HadStickyUserActivationBeforeNavigation() const {
+    return had_sticky_user_activation_before_nav_;
   }
 
   bool IsAttached() const {
@@ -279,14 +276,14 @@
   // for details on how this state is maintained.
   UserActivationState user_activation_state_;
 
-  bool has_received_user_gesture_before_nav_ = false;
+  bool had_sticky_user_activation_before_nav_ = false;
 
   // This is set to true if this is a subframe, and the frame element in the
   // parent frame's document becomes inert. This should always be false for
   // the main frame.
   bool is_inert_ = false;
 
-  TouchAction inherited_effective_touch_action_ = TouchAction::kTouchActionAuto;
+  TouchAction inherited_effective_touch_action_ = TouchAction::kAuto;
 
   bool visible_to_hit_testing_ = true;
 
diff --git a/third_party/blink/renderer/core/frame/frame_test.cc b/third_party/blink/renderer/core/frame/frame_test.cc
index 56ff72a8..ca5730a 100644
--- a/third_party/blink/renderer/core/frame/frame_test.cc
+++ b/third_party/blink/renderer/core/frame/frame_test.cc
@@ -22,7 +22,7 @@
 
     ASSERT_FALSE(GetDocument().GetFrame()->HasBeenActivated());
     ASSERT_FALSE(
-        GetDocument().GetFrame()->HasReceivedUserGestureBeforeNavigation());
+        GetDocument().GetFrame()->HadStickyUserActivationBeforeNavigation());
   }
 
   void Navigate(const String& destinationUrl, bool user_activated) {
@@ -67,81 +67,81 @@
   LocalFrame::NotifyUserActivation(GetDocument().GetFrame());
   EXPECT_TRUE(GetDocument().GetFrame()->HasBeenActivated());
   EXPECT_FALSE(
-      GetDocument().GetFrame()->HasReceivedUserGestureBeforeNavigation());
+      GetDocument().GetFrame()->HadStickyUserActivationBeforeNavigation());
 
   // Navigate to a different Document. In the main frame, user gesture state
   // will get reset. State will not persist since the domain has changed.
   NavigateDifferentDomain();
   EXPECT_FALSE(GetDocument().GetFrame()->HasBeenActivated());
   EXPECT_FALSE(
-      GetDocument().GetFrame()->HasReceivedUserGestureBeforeNavigation());
+      GetDocument().GetFrame()->HadStickyUserActivationBeforeNavigation());
 }
 
 TEST_F(FrameTest, NavigateSameDomainMultipleTimes) {
   LocalFrame::NotifyUserActivation(GetDocument().GetFrame());
   EXPECT_TRUE(GetDocument().GetFrame()->HasBeenActivated());
   EXPECT_FALSE(
-      GetDocument().GetFrame()->HasReceivedUserGestureBeforeNavigation());
+      GetDocument().GetFrame()->HadStickyUserActivationBeforeNavigation());
 
   // Navigate to a different Document in the same domain.  In the main frame,
   // user gesture state will get reset, but persisted state will be true.
   NavigateSameDomain("page1");
   EXPECT_FALSE(GetDocument().GetFrame()->HasBeenActivated());
   EXPECT_TRUE(
-      GetDocument().GetFrame()->HasReceivedUserGestureBeforeNavigation());
+      GetDocument().GetFrame()->HadStickyUserActivationBeforeNavigation());
 
   // Navigate to a different Document in the same domain, the persisted
   // state will be true.
   NavigateSameDomain("page2");
   EXPECT_FALSE(GetDocument().GetFrame()->HasBeenActivated());
   EXPECT_TRUE(
-      GetDocument().GetFrame()->HasReceivedUserGestureBeforeNavigation());
+      GetDocument().GetFrame()->HadStickyUserActivationBeforeNavigation());
 
   // Navigate to the same URL in the same domain, the persisted state
   // will be true, but the user gesture state will be reset.
   NavigateSameDomain("page2");
   EXPECT_FALSE(GetDocument().GetFrame()->HasBeenActivated());
   EXPECT_TRUE(
-      GetDocument().GetFrame()->HasReceivedUserGestureBeforeNavigation());
+      GetDocument().GetFrame()->HadStickyUserActivationBeforeNavigation());
 
   // Navigate to a different Document in the same domain, the persisted
   // state will be true.
   NavigateSameDomain("page3");
   EXPECT_FALSE(GetDocument().GetFrame()->HasBeenActivated());
   EXPECT_TRUE(
-      GetDocument().GetFrame()->HasReceivedUserGestureBeforeNavigation());
+      GetDocument().GetFrame()->HadStickyUserActivationBeforeNavigation());
 }
 
 TEST_F(FrameTest, NavigateSameDomainDifferentDomain) {
   LocalFrame::NotifyUserActivation(GetDocument().GetFrame());
   EXPECT_TRUE(GetDocument().GetFrame()->HasBeenActivated());
   EXPECT_FALSE(
-      GetDocument().GetFrame()->HasReceivedUserGestureBeforeNavigation());
+      GetDocument().GetFrame()->HadStickyUserActivationBeforeNavigation());
 
   // Navigate to a different Document in the same domain.  In the main frame,
   // user gesture state will get reset, but persisted state will be true.
   NavigateSameDomain("page1");
   EXPECT_FALSE(GetDocument().GetFrame()->HasBeenActivated());
   EXPECT_TRUE(
-      GetDocument().GetFrame()->HasReceivedUserGestureBeforeNavigation());
+      GetDocument().GetFrame()->HadStickyUserActivationBeforeNavigation());
 
   // Navigate to a different Document in a different domain, the persisted
   // state will be reset.
   NavigateDifferentDomain();
   EXPECT_FALSE(GetDocument().GetFrame()->HasBeenActivated());
   EXPECT_FALSE(
-      GetDocument().GetFrame()->HasReceivedUserGestureBeforeNavigation());
+      GetDocument().GetFrame()->HadStickyUserActivationBeforeNavigation());
 }
 
 TEST_F(FrameTest, NavigateSameDomainNoGesture) {
   EXPECT_FALSE(GetDocument().GetFrame()->HasBeenActivated());
   EXPECT_FALSE(
-      GetDocument().GetFrame()->HasReceivedUserGestureBeforeNavigation());
+      GetDocument().GetFrame()->HadStickyUserActivationBeforeNavigation());
 
   NavigateSameDomain("page1", false);
   EXPECT_FALSE(GetDocument().GetFrame()->HasBeenActivated());
   EXPECT_FALSE(
-      GetDocument().GetFrame()->HasReceivedUserGestureBeforeNavigation());
+      GetDocument().GetFrame()->HadStickyUserActivationBeforeNavigation());
 }
 
 TEST_F(FrameTest, UserActivationInterfaceTest) {
diff --git a/third_party/blink/renderer/core/frame/remote_frame.cc b/third_party/blink/renderer/core/frame/remote_frame.cc
index d604f55e..a9e03626 100644
--- a/third_party/blink/renderer/core/frame/remote_frame.cc
+++ b/third_party/blink/renderer/core/frame/remote_frame.cc
@@ -346,8 +346,8 @@
   FocusImpl();
 }
 
-void RemoteFrame::SetReceivedUserGestureBeforeNavigation(bool value) {
-  SetDocumentHasReceivedUserGestureBeforeNavigation(value);
+void RemoteFrame::SetHadStickyUserActivationBeforeNavigation(bool value) {
+  Frame::SetHadStickyUserActivationBeforeNavigation(value);
 }
 
 bool RemoteFrame::IsIgnoredForHitTest() const {
diff --git a/third_party/blink/renderer/core/frame/remote_frame.h b/third_party/blink/renderer/core/frame/remote_frame.h
index 8c2b06b3..3a913c6 100644
--- a/third_party/blink/renderer/core/frame/remote_frame.h
+++ b/third_party/blink/renderer/core/frame/remote_frame.h
@@ -98,7 +98,7 @@
   void DispatchLoadEventForFrameOwner() override;
   void Collapse(bool collapsed) final;
   void Focus() override;
-  void SetReceivedUserGestureBeforeNavigation(bool value) override;
+  void SetHadStickyUserActivationBeforeNavigation(bool value) override;
 
  private:
   // Frame protected overrides:
diff --git a/third_party/blink/renderer/core/frame/reporting_observer.idl b/third_party/blink/renderer/core/frame/reporting_observer.idl
index a248a08f..ea845ee 100644
--- a/third_party/blink/renderer/core/frame/reporting_observer.idl
+++ b/third_party/blink/renderer/core/frame/reporting_observer.idl
@@ -7,10 +7,9 @@
 callback ReportingObserverCallback = void (sequence<Report> reports, ReportingObserver observer);
 
 [
-    Constructor(ReportingObserverCallback callback, optional ReportingObserverOptions options),
-    ConstructorCallWith=ExecutionContext,
     ActiveScriptWrappable
 ] interface ReportingObserver {
+    [CallWith=ExecutionContext] constructor(ReportingObserverCallback callback, optional ReportingObserverOptions options);
     void observe();
     void disconnect();
     ReportList takeRecords();
diff --git a/third_party/blink/renderer/core/geometry/dom_matrix.idl b/third_party/blink/renderer/core/geometry/dom_matrix.idl
index 2af00ad..d360b0ba 100644
--- a/third_party/blink/renderer/core/geometry/dom_matrix.idl
+++ b/third_party/blink/renderer/core/geometry/dom_matrix.idl
@@ -5,12 +5,10 @@
 // https://drafts.fxtf.org/geometry/#DOMMatrix
 
 [
-    Constructor(optional (DOMString or sequence<unrestricted double>) init),
-    RaisesException=Constructor,
-    ConstructorCallWith=ExecutionContext,
     Exposed=(Window,Worker),
     Serializable
 ] interface DOMMatrix : DOMMatrixReadOnly {
+    [CallWith=ExecutionContext, RaisesException] constructor(optional (DOMString or sequence<unrestricted double>) init);
     [RaisesException, NewObject] static DOMMatrix fromMatrix(optional DOMMatrixInit other);
     [RaisesException, NewObject] static DOMMatrix fromFloat32Array(Float32Array array32);
     [RaisesException, NewObject] static DOMMatrix fromFloat64Array(Float64Array array64);
diff --git a/third_party/blink/renderer/core/geometry/dom_matrix_read_only.idl b/third_party/blink/renderer/core/geometry/dom_matrix_read_only.idl
index dfc75bb..0b14b31 100644
--- a/third_party/blink/renderer/core/geometry/dom_matrix_read_only.idl
+++ b/third_party/blink/renderer/core/geometry/dom_matrix_read_only.idl
@@ -5,12 +5,10 @@
 // https://drafts.fxtf.org/geometry/#DOMMatrix
 
 [
-    Constructor(optional (DOMString or sequence<unrestricted double>) init),
-    RaisesException=Constructor,
-    ConstructorCallWith=ExecutionContext,
     Exposed=(Window,Worker),
     Serializable
 ] interface DOMMatrixReadOnly {
+    [CallWith=ExecutionContext, RaisesException] constructor(optional (DOMString or sequence<unrestricted double>) init);
     [RaisesException, NewObject] static DOMMatrixReadOnly fromMatrix(optional DOMMatrixInit other);
     [RaisesException, NewObject] static DOMMatrixReadOnly fromFloat32Array(Float32Array array32);
     [RaisesException, NewObject] static DOMMatrixReadOnly fromFloat64Array(Float64Array array64);
diff --git a/third_party/blink/renderer/core/geometry/dom_point.idl b/third_party/blink/renderer/core/geometry/dom_point.idl
index a2e04a27..320b046 100644
--- a/third_party/blink/renderer/core/geometry/dom_point.idl
+++ b/third_party/blink/renderer/core/geometry/dom_point.idl
@@ -5,11 +5,11 @@
 // https://drafts.fxtf.org/geometry/#DOMPoint
 
 [
-    Constructor(optional unrestricted double x = 0, optional unrestricted double y = 0,
-                optional unrestricted double z = 0, optional unrestricted double w = 1),
     Exposed=(Window,Worker),
     Serializable
 ] interface DOMPoint : DOMPointReadOnly {
+    constructor(optional unrestricted double x = 0, optional unrestricted double y = 0,
+                optional unrestricted double z = 0, optional unrestricted double w = 1);
     [NewObject] static DOMPoint fromPoint(optional DOMPointInit other);
     inherit attribute unrestricted double x;
     inherit attribute unrestricted double y;
diff --git a/third_party/blink/renderer/core/geometry/dom_point_read_only.idl b/third_party/blink/renderer/core/geometry/dom_point_read_only.idl
index 10b00aa..ac232be 100644
--- a/third_party/blink/renderer/core/geometry/dom_point_read_only.idl
+++ b/third_party/blink/renderer/core/geometry/dom_point_read_only.idl
@@ -5,11 +5,11 @@
 // https://drafts.fxtf.org/geometry/#dompointreadonly
 
 [
-    Constructor(optional unrestricted double x = 0, optional unrestricted double y = 0,
-                optional unrestricted double z = 0, optional unrestricted double w = 1),
     Exposed=(Window,Worker),
     Serializable
 ] interface DOMPointReadOnly {
+    constructor(optional unrestricted double x = 0, optional unrestricted double y = 0,
+                optional unrestricted double z = 0, optional unrestricted double w = 1);
     [NewObject] static DOMPointReadOnly fromPoint(optional DOMPointInit other);
 
     readonly attribute unrestricted double x;
diff --git a/third_party/blink/renderer/core/geometry/dom_quad.idl b/third_party/blink/renderer/core/geometry/dom_quad.idl
index 5f18cdf..4913130 100644
--- a/third_party/blink/renderer/core/geometry/dom_quad.idl
+++ b/third_party/blink/renderer/core/geometry/dom_quad.idl
@@ -5,11 +5,10 @@
 // https://drafts.fxtf.org/geometry/#domquad
 
 [
-    Constructor(optional DOMPointInit p1, optional DOMPointInit p2, optional DOMPointInit p3, optional DOMPointInit p4),
     Exposed=(Window,Worker),
     Serializable
-]
-interface DOMQuad {
+] interface DOMQuad {
+    constructor(optional DOMPointInit p1, optional DOMPointInit p2, optional DOMPointInit p3, optional DOMPointInit p4);
     [NewObject] static DOMQuad fromRect(optional DOMRectInit other);
     [NewObject] static DOMQuad fromQuad(optional DOMQuadInit other);
 
diff --git a/third_party/blink/renderer/core/geometry/dom_rect.idl b/third_party/blink/renderer/core/geometry/dom_rect.idl
index 45171c08..a286acc8 100644
--- a/third_party/blink/renderer/core/geometry/dom_rect.idl
+++ b/third_party/blink/renderer/core/geometry/dom_rect.idl
@@ -5,13 +5,13 @@
 // https://drafts.fxtf.org/geometry/#DOMRect
 
 [
-    Constructor(optional unrestricted double x = 0,
-                optional unrestricted double y = 0,
-                optional unrestricted double width = 0,
-                optional unrestricted double height = 0),
     Exposed=(Window,Worker),
     Serializable
 ] interface DOMRect : DOMRectReadOnly {
+    constructor(optional unrestricted double x = 0,
+                optional unrestricted double y = 0,
+                optional unrestricted double width = 0,
+                optional unrestricted double height = 0);
     [NewObject] static DOMRect fromRect(optional DOMRectInit other);
 
     inherit attribute unrestricted double x;
diff --git a/third_party/blink/renderer/core/geometry/dom_rect_read_only.idl b/third_party/blink/renderer/core/geometry/dom_rect_read_only.idl
index 39f4a35..39f1e90 100644
--- a/third_party/blink/renderer/core/geometry/dom_rect_read_only.idl
+++ b/third_party/blink/renderer/core/geometry/dom_rect_read_only.idl
@@ -5,11 +5,11 @@
 // https://drafts.fxtf.org/geometry/#DOMRect
 
 [
-    Constructor(optional unrestricted double x = 0, optional unrestricted double y = 0,
-                optional unrestricted double width = 0, optional unrestricted double height = 0),
     Exposed=(Window,Worker),
     Serializable
 ] interface DOMRectReadOnly {
+    constructor(optional unrestricted double x = 0, optional unrestricted double y = 0,
+                optional unrestricted double width = 0, optional unrestricted double height = 0);
     [NewObject] static DOMRectReadOnly fromRect(optional DOMRectInit other);
 
     readonly attribute unrestricted double x;
diff --git a/third_party/blink/renderer/core/html/canvas/image_data.idl b/third_party/blink/renderer/core/html/canvas/image_data.idl
index 45eace16..11907ae 100644
--- a/third_party/blink/renderer/core/html/canvas/image_data.idl
+++ b/third_party/blink/renderer/core/html/canvas/image_data.idl
@@ -32,12 +32,11 @@
 typedef (Uint8ClampedArray or Uint16Array or Float32Array) ImageDataArray;
 
 [
-    Constructor(unsigned long sw, unsigned long sh),
-    Constructor(Uint8ClampedArray data, unsigned long sw, optional unsigned long sh),
     Exposed=(Window,Worker),
-    RaisesException=Constructor,
     Serializable
 ] interface ImageData {
+    [RaisesException] constructor(unsigned long sw, unsigned long sh);
+    [RaisesException] constructor(Uint8ClampedArray data, unsigned long sw, optional unsigned long sh);
     [RuntimeEnabled=CanvasColorManagement] ImageDataColorSettings getColorSettings();
 
     readonly attribute unsigned long width;
diff --git a/third_party/blink/renderer/core/html/forms/external_date_time_chooser.cc b/third_party/blink/renderer/core/html/forms/external_date_time_chooser.cc
index 8f61483..c50532b 100644
--- a/third_party/blink/renderer/core/html/forms/external_date_time_chooser.cc
+++ b/third_party/blink/renderer/core/html/forms/external_date_time_chooser.cc
@@ -67,13 +67,6 @@
   DCHECK(client);
 }
 
-ExternalDateTimeChooser* ExternalDateTimeChooser::Create(
-    DateTimeChooserClient* client) {
-  ExternalDateTimeChooser* chooser =
-      MakeGarbageCollected<ExternalDateTimeChooser>(client);
-  return chooser;
-}
-
 void ExternalDateTimeChooser::OpenDateTimeChooser(
     LocalFrame* frame,
     const DateTimeChooserParameters& parameters) {
diff --git a/third_party/blink/renderer/core/html/forms/external_date_time_chooser.h b/third_party/blink/renderer/core/html/forms/external_date_time_chooser.h
index ae2a001..c51c03f 100644
--- a/third_party/blink/renderer/core/html/forms/external_date_time_chooser.h
+++ b/third_party/blink/renderer/core/html/forms/external_date_time_chooser.h
@@ -38,8 +38,6 @@
 
 class CORE_EXPORT ExternalDateTimeChooser final : public DateTimeChooser {
  public:
-  static ExternalDateTimeChooser* Create(DateTimeChooserClient*);
-
   explicit ExternalDateTimeChooser(DateTimeChooserClient*);
   ~ExternalDateTimeChooser() override;
   void Trace(Visitor*) override;
diff --git a/third_party/blink/renderer/core/html/forms/external_date_time_chooser_test.cc b/third_party/blink/renderer/core/html/forms/external_date_time_chooser_test.cc
index d47d4540..6f791ff3 100644
--- a/third_party/blink/renderer/core/html/forms/external_date_time_chooser_test.cc
+++ b/third_party/blink/renderer/core/html/forms/external_date_time_chooser_test.cc
@@ -9,6 +9,7 @@
 #include "third_party/blink/renderer/core/html/forms/date_time_chooser_client.h"
 #include "third_party/blink/renderer/core/html/forms/html_input_element.h"
 #include "third_party/blink/renderer/core/testing/dummy_page_holder.h"
+#include "third_party/blink/renderer/platform/heap/heap.h"
 #include "third_party/blink/renderer/platform/testing/runtime_enabled_features_test_helpers.h"
 
 namespace blink {
@@ -64,7 +65,8 @@
   auto* document = MakeGarbageCollected<Document>();
   auto* element = document->CreateRawElement(html_names::kInputTag);
   auto* client = MakeGarbageCollected<TestDateTimeChooserClient>(element);
-  auto* external_date_time_chooser = ExternalDateTimeChooser::Create(client);
+  auto* external_date_time_chooser =
+      MakeGarbageCollected<ExternalDateTimeChooser>(client);
   client->SetDateTimeChooser(external_date_time_chooser);
   external_date_time_chooser->ResponseHandler(true, 0);
 }
@@ -98,7 +100,8 @@
 
   auto* client = MakeGarbageCollected<TestDateTimeChooserClient>(
       GetDocument().documentElement());
-  auto* external_date_time_chooser = ExternalDateTimeChooser::Create(client);
+  auto* external_date_time_chooser =
+      MakeGarbageCollected<ExternalDateTimeChooser>(client);
   client->SetDateTimeChooser(external_date_time_chooser);
   external_date_time_chooser->OpenDateTimeChooser(GetDocument().GetFrame(),
                                                   params);
diff --git a/third_party/blink/renderer/core/html/forms/form_data.idl b/third_party/blink/renderer/core/html/forms/form_data.idl
index 79c8e49..cc98012e 100644
--- a/third_party/blink/renderer/core/html/forms/form_data.idl
+++ b/third_party/blink/renderer/core/html/forms/form_data.idl
@@ -33,10 +33,9 @@
 typedef (File or USVString) FormDataEntryValue;
 
 [
-    Constructor(optional HTMLFormElement form),
-    RaisesException=Constructor,
     Exposed=(Window,Worker)
 ] interface FormData {
+    [RaisesException] constructor(optional HTMLFormElement form);
     void append(USVString name, USVString value);
     [CallWith=ScriptState] void append(USVString name, Blob value, optional USVString filename);
     [ImplementedAs=deleteEntry] void delete(USVString name);
diff --git a/third_party/blink/renderer/core/html/forms/form_data_event.idl b/third_party/blink/renderer/core/html/forms/form_data_event.idl
index 0b74add..c0cdfab 100644
--- a/third_party/blink/renderer/core/html/forms/form_data_event.idl
+++ b/third_party/blink/renderer/core/html/forms/form_data_event.idl
@@ -5,9 +5,8 @@
 // https://html.spec.whatwg.org/C/#formdataevent
 
 [
-  Constructor(DOMString type, optional FormDataEventInit eventInitDict),
   Exposed=Window
-]
-interface FormDataEvent : Event {
+] interface FormDataEvent : Event {
+  constructor(DOMString type, optional FormDataEventInit eventInitDict);
   readonly attribute FormData formData;
 };
diff --git a/third_party/blink/renderer/core/html/forms/input_type.cc b/third_party/blink/renderer/core/html/forms/input_type.cc
index d0b43d2..987ba00 100644
--- a/third_party/blink/renderer/core/html/forms/input_type.cc
+++ b/third_party/blink/renderer/core/html/forms/input_type.cc
@@ -789,7 +789,7 @@
   if (!DeprecatedEqualIgnoringCase(step_string, "any"))
     new_value = step_range.AlignValueForStep(current, new_value);
 
-  // 7. If the element has a minimum, and value is less than that minimum,
+  // 8. If the element has a minimum, and value is less than that minimum,
   // then set value to the smallest value that, when subtracted from the step
   // base, is an integral multiple of the allowed value step, and that is more
   // than or equal to minimum.
@@ -800,17 +800,23 @@
     new_value = aligned_minimum;
   }
 
-  // 8. If the element has a maximum, and value is greater than that maximum,
+  // 9. If the element has a maximum, and value is greater than that maximum,
   // then set value to the largest value that, when subtracted from the step
   // base, is an integral multiple of the allowed value step, and that is less
   // than or equal to maximum.
   if (new_value > step_range.Maximum())
     new_value = aligned_maximum;
 
-  // 9. Let value as string be the result of running the algorithm to convert
+  // 10. If either the method invoked was the stepDown() method and value is
+  // greater than valueBeforeStepping, or the method invoked was the stepUp()
+  // method and value is less than valueBeforeStepping, then return.
+  if ((count < 0 && current < new_value) || (count > 0 && current > new_value))
+    return;
+
+  // 11. Let value as string be the result of running the algorithm to convert
   // a number to a string, as defined for the input element's type attribute's
   // current state, on value.
-  // 10. Set the value of the element to value as string.
+  // 12. Set the value of the element to value as string.
   SetValueAsDecimal(new_value, event_behavior, exception_state);
 
   if (AXObjectCache* cache = GetElement().GetDocument().ExistingAXObjectCache())
@@ -856,7 +862,7 @@
   //   * If 0 is in-range, but not matched to step value
   //     - The value should be the larger matched value nearest to 0 if n > 0
   //       e.g. <input type=number min=-100 step=3> -> 2
-  //     - The value should be the smaler matched value nearest to 0 if n < 0
+  //     - The value should be the smaller matched value nearest to 0 if n < 0
   //       e.g. <input type=number min=-100 step=3> -> -1
   //   As for date/datetime-local/month/time/week types, the current value is
   //   assumed as "the current local date/time".
diff --git a/third_party/blink/renderer/core/html/html_body_element.cc b/third_party/blink/renderer/core/html/html_body_element.cc
index f81c88d9..a2da9743 100644
--- a/third_party/blink/renderer/core/html/html_body_element.cc
+++ b/third_party/blink/renderer/core/html/html_body_element.cc
@@ -62,13 +62,13 @@
     const AtomicString& value,
     MutableCSSPropertyValueSet* style) {
   if (name == html_names::kBackgroundAttr) {
-    String url = StripLeadingAndTrailingHTMLSpaces(value);
+    AtomicString url(StripLeadingAndTrailingHTMLSpaces(value));
     if (!url.IsEmpty()) {
-      CSSImageValue* image_value =
-          CSSImageValue::Create(url, GetDocument().CompleteURL(url),
-                                Referrer(GetDocument().OutgoingReferrer(),
-                                         GetDocument().GetReferrerPolicy()),
-                                OriginClean::kTrue);
+      CSSImageValue* image_value = MakeGarbageCollected<CSSImageValue>(
+          url, GetDocument().CompleteURL(url),
+          Referrer(GetDocument().OutgoingReferrer(),
+                   GetDocument().GetReferrerPolicy()),
+          OriginClean::kTrue);
       image_value->SetInitiator(localName());
       style->SetProperty(
           CSSPropertyValue(GetCSSPropertyBackgroundImage(), *image_value));
diff --git a/third_party/blink/renderer/core/html/html_collection.cc b/third_party/blink/renderer/core/html/html_collection.cc
index ebc703f..750ee45c 100644
--- a/third_party/blink/renderer/core/html/html_collection.cc
+++ b/third_party/blink/renderer/core/html/html_collection.cc
@@ -277,13 +277,13 @@
     case kNodeChildren:
       return true;
     case kClassCollectionType:
-      return ToClassCollection(*this).ElementMatches(element);
+      return To<ClassCollection>(*this).ElementMatches(element);
     case kTagCollectionType:
-      return ToTagCollection(*this).ElementMatches(element);
+      return To<TagCollection>(*this).ElementMatches(element);
     case kHTMLTagCollectionType:
       return ToHTMLTagCollection(*this).ElementMatches(element);
     case kTagCollectionNSType:
-      return ToTagCollectionNS(*this).ElementMatches(element);
+      return To<TagCollectionNS>(*this).ElementMatches(element);
     case kWindowNamedItems:
       return ToWindowNameCollection(*this).ElementMatches(element);
     case kDocumentAllNamedItems:
@@ -355,7 +355,7 @@
           RootNode(), MakeIsMatch(ToHTMLTagCollection(*this)));
     case kClassCollectionType:
       return ElementTraversal::FirstWithin(
-          RootNode(), MakeIsMatch(ToClassCollection(*this)));
+          RootNode(), MakeIsMatch(To<ClassCollection>(*this)));
     default:
       if (OverridesItemAfter())
         return VirtualItemAfter(nullptr);
@@ -385,7 +385,7 @@
     case kClassCollectionType:
       return TraverseMatchingElementsForwardToOffset(
           current_element, &RootNode(), offset, current_offset,
-          MakeIsMatch(ToClassCollection(*this)));
+          MakeIsMatch(To<ClassCollection>(*this)));
     default:
       if (OverridesItemAfter()) {
         for (Element* next = VirtualItemAfter(&current_element); next;
diff --git a/third_party/blink/renderer/core/html/html_meta_element.cc b/third_party/blink/renderer/core/html/html_meta_element.cc
index 3bb87d69..f319c2e 100644
--- a/third_party/blink/renderer/core/html/html_meta_element.cc
+++ b/third_party/blink/renderer/core/html/html_meta_element.cc
@@ -613,6 +613,6 @@
 }
 
 const AtomicString& HTMLMetaElement::GetName() const {
-  return GetNameAttribute();
+  return FastGetAttribute(html_names::kNameAttr);
 }
 }
diff --git a/third_party/blink/renderer/core/html/html_script_element.cc b/third_party/blink/renderer/core/html/html_script_element.cc
index 0939536..9e54a07 100644
--- a/third_party/blink/renderer/core/html/html_script_element.cc
+++ b/third_party/blink/renderer/core/html/html_script_element.cc
@@ -138,7 +138,7 @@
     // On setting, the innerText [...] perform the regular steps, and then set
     // content object's [[ScriptText]] internal slot value [...].
     HTMLElement::setInnerText(value, exception_state);
-    script_text_internal_slot_ = value;
+    script_text_internal_slot_ = ParkableString(value.Impl());
   }
 }
 
@@ -152,7 +152,7 @@
     // On setting, [..] textContent [..] perform the regular steps, and then set
     // content object's [[ScriptText]] internal slot value [...].
     Node::setTextContent(value);
-    script_text_internal_slot_ = value;
+    script_text_internal_slot_ = ParkableString(value.Impl());
   }
 }
 
@@ -163,8 +163,8 @@
 
 void HTMLScriptElement::FinishParsingChildren() {
   Element::FinishParsingChildren();
-  DCHECK(script_text_internal_slot_.IsEmpty());
-  script_text_internal_slot_ = TextFromChildren();
+  DCHECK(!script_text_internal_slot_.length());
+  script_text_internal_slot_ = ParkableString(TextFromChildren().Impl());
 }
 
 bool HTMLScriptElement::async() const {
@@ -220,7 +220,7 @@
 }
 
 String HTMLScriptElement::ScriptTextInternalSlot() const {
-  return script_text_internal_slot_;
+  return script_text_internal_slot_.ToString();
 }
 
 bool HTMLScriptElement::AsyncAttributeValue() const {
diff --git a/third_party/blink/renderer/core/html/html_script_element.h b/third_party/blink/renderer/core/html/html_script_element.h
index 1c6474c7..e8c2348 100644
--- a/third_party/blink/renderer/core/html/html_script_element.h
+++ b/third_party/blink/renderer/core/html/html_script_element.h
@@ -30,6 +30,7 @@
 #include "third_party/blink/renderer/core/html/html_element.h"
 #include "third_party/blink/renderer/core/script/script_element_base.h"
 #include "third_party/blink/renderer/core/script/script_loader.h"
+#include "third_party/blink/renderer/platform/bindings/parkable_string.h"
 
 namespace blink {
 
@@ -75,9 +76,6 @@
   bool HasLegalLinkAttribute(const QualifiedName&) const override;
   const QualifiedName& SubResourceAttributeName() const override;
 
-  void SetTrustedTextContent(const String&);
-  void SetTrustedInnerText(const String&, ExceptionState&);
-
   // ScriptElementBase overrides:
   String SourceAttributeValue() const override;
   String CharsetAttributeValue() const override;
@@ -112,7 +110,7 @@
   Element& CloneWithoutAttributesAndChildren(Document&) const override;
 
   // https://w3c.github.io/webappsec-trusted-types/dist/spec/#script-scripttext
-  String script_text_internal_slot_;
+  ParkableString script_text_internal_slot_;
 
   Member<ScriptLoader> loader_;
 };
diff --git a/third_party/blink/renderer/core/html/html_table_element.cc b/third_party/blink/renderer/core/html/html_table_element.cc
index b527420..f53e366 100644
--- a/third_party/blink/renderer/core/html/html_table_element.cc
+++ b/third_party/blink/renderer/core/html/html_table_element.cc
@@ -327,11 +327,11 @@
       UseCounter::Count(
           GetDocument(),
           WebFeature::kHTMLTableElementPresentationAttributeBackground);
-      CSSImageValue* image_value =
-          CSSImageValue::Create(url, GetDocument().CompleteURL(url),
-                                Referrer(GetDocument().OutgoingReferrer(),
-                                         GetDocument().GetReferrerPolicy()),
-                                OriginClean::kTrue);
+      CSSImageValue* image_value = MakeGarbageCollected<CSSImageValue>(
+          AtomicString(url), GetDocument().CompleteURL(url),
+          Referrer(GetDocument().OutgoingReferrer(),
+                   GetDocument().GetReferrerPolicy()),
+          OriginClean::kTrue);
       style->SetProperty(
           CSSPropertyValue(GetCSSPropertyBackgroundImage(), *image_value));
     }
diff --git a/third_party/blink/renderer/core/html/html_table_part_element.cc b/third_party/blink/renderer/core/html/html_table_part_element.cc
index c9e312b..8d5b9846 100644
--- a/third_party/blink/renderer/core/html/html_table_part_element.cc
+++ b/third_party/blink/renderer/core/html/html_table_part_element.cc
@@ -60,11 +60,11 @@
       UseCounter::Count(
           GetDocument(),
           WebFeature::kHTMLTableElementPresentationAttributeBackground);
-      CSSImageValue* image_value =
-          CSSImageValue::Create(url, GetDocument().CompleteURL(url),
-                                Referrer(GetDocument().OutgoingReferrer(),
-                                         GetDocument().GetReferrerPolicy()),
-                                OriginClean::kTrue);
+      CSSImageValue* image_value = MakeGarbageCollected<CSSImageValue>(
+          AtomicString(url), GetDocument().CompleteURL(url),
+          Referrer(GetDocument().OutgoingReferrer(),
+                   GetDocument().GetReferrerPolicy()),
+          OriginClean::kTrue);
       style->SetProperty(
           CSSPropertyValue(GetCSSPropertyBackgroundImage(), *image_value));
     }
diff --git a/third_party/blink/renderer/core/html/media/autoplay_policy.cc b/third_party/blink/renderer/core/html/media/autoplay_policy.cc
index ad5f2bf0..64994eda 100644
--- a/third_party/blink/renderer/core/html/media/autoplay_policy.cc
+++ b/third_party/blink/renderer/core/html/media/autoplay_policy.cc
@@ -93,7 +93,7 @@
   for (Frame* frame = document.GetFrame(); frame;
        frame = frame->Tree().Parent()) {
     if (frame->HasBeenActivated() ||
-        frame->HasReceivedUserGestureBeforeNavigation()) {
+        frame->HadStickyUserActivationBeforeNavigation()) {
       return true;
     }
 
@@ -366,7 +366,7 @@
   for (Frame* frame = document.GetFrame(); frame;
        frame = frame->Tree().Parent()) {
     if (frame->HasBeenActivated() ||
-        frame->HasReceivedUserGestureBeforeNavigation()) {
+        frame->HadStickyUserActivationBeforeNavigation()) {
       autoplay_initiated_ = false;
       break;
     }
diff --git a/third_party/blink/renderer/core/html/media/autoplay_uma_helper.cc b/third_party/blink/renderer/core/html/media/autoplay_uma_helper.cc
index a9a2f85..6dbfca6 100644
--- a/third_party/blink/renderer/core/html/media/autoplay_uma_helper.cc
+++ b/third_party/blink/renderer/core/html/media/autoplay_uma_helper.cc
@@ -41,7 +41,7 @@
     result |= 0x01;
   if (frame->HasBeenActivated())
     result |= 0x02;
-  if (frame->HasReceivedUserGestureBeforeNavigation())
+  if (frame->HadStickyUserActivationBeforeNavigation())
     result |= 0x04;
 
   return result;
diff --git a/third_party/blink/renderer/core/html/media/html_media_element.cc b/third_party/blink/renderer/core/html/media/html_media_element.cc
index c960f73..e0ac62a 100644
--- a/third_party/blink/renderer/core/html/media/html_media_element.cc
+++ b/third_party/blink/renderer/core/html/media/html_media_element.cc
@@ -2966,7 +2966,7 @@
   //    text track kind to kind, its text track label to label, its text
   //    track language to language, ..., and its text track list of cues to
   //    an empty list.
-  TextTrack* text_track = TextTrack::Create(kind, label, language);
+  auto* text_track = MakeGarbageCollected<TextTrack>(kind, label, language);
   //    ..., its text track readiness state to the text track loaded state, ...
   text_track->SetReadinessState(TextTrack::kLoaded);
 
diff --git a/third_party/blink/renderer/core/html/portal/portal_activate_event.idl b/third_party/blink/renderer/core/html/portal/portal_activate_event.idl
index 228b409..77b78961 100644
--- a/third_party/blink/renderer/core/html/portal/portal_activate_event.idl
+++ b/third_party/blink/renderer/core/html/portal/portal_activate_event.idl
@@ -4,8 +4,10 @@
 
 // https://wicg.github.io/portals/#the-portalactivateevent-interface
 
-[Constructor(DOMString type, optional PortalActivateEventInit eventInitDict), Exposed=Window, RuntimeEnabled=Portals]
-interface PortalActivateEvent : Event {
+[
+ Exposed=Window, RuntimeEnabled=Portals
+] interface PortalActivateEvent : Event {
+  constructor(DOMString type, optional PortalActivateEventInit eventInitDict);
   [CallWith=ScriptState, Measure] readonly attribute any data;
   [RaisesException, Measure] HTMLPortalElement adoptPredecessor();
 };
diff --git a/third_party/blink/renderer/core/html/resources/html.css b/third_party/blink/renderer/core/html/resources/html.css
index 191587ce..277eccd 100644
--- a/third_party/blink/renderer/core/html/resources/html.css
+++ b/third_party/blink/renderer/core/html/resources/html.css
@@ -566,6 +566,7 @@
 input:-internal-autofill-previewed,
 textarea:-internal-autofill-previewed,
 select:-internal-autofill-previewed {
+  -webkit-appearance:menulist-button;
   background-color: #E8F0FE !important;
   background-image:none !important;
   color: -internal-light-dark-color(black, white) !important;
@@ -574,6 +575,7 @@
 input:-internal-autofill-selected,
 textarea:-internal-autofill-selected,
 select:-internal-autofill-selected {
+  -webkit-appearance:menulist-button;
   background-color: #E8F0FE !important;
   background-image:none !important;
   color: -internal-light-dark-color(black, white) !important;
diff --git a/third_party/blink/renderer/core/html/track/text_track.h b/third_party/blink/renderer/core/html/track/text_track.h
index d8e3bc5..9230e066 100644
--- a/third_party/blink/renderer/core/html/track/text_track.h
+++ b/third_party/blink/renderer/core/html/track/text_track.h
@@ -50,20 +50,13 @@
   USING_GARBAGE_COLLECTED_MIXIN(TextTrack);
 
  public:
-  static TextTrack* Create(const AtomicString& kind,
-                           const AtomicString& label,
-                           const AtomicString& language) {
-    return MakeGarbageCollected<TextTrack>(kind, label, language, g_empty_atom,
-                                           kAddTrack);
-  }
-
   enum TextTrackType { kTrackElement, kAddTrack, kInBand };
 
   TextTrack(const AtomicString& kind,
             const AtomicString& label,
             const AtomicString& language,
-            const AtomicString& id,
-            TextTrackType);
+            const AtomicString& id = g_empty_atom,
+            TextTrackType = kAddTrack);
   ~TextTrack() override;
 
   virtual void SetTrackList(TextTrackList*);
diff --git a/third_party/blink/renderer/core/html/track/text_track_list_test.cc b/third_party/blink/renderer/core/html/track/text_track_list_test.cc
index cd4b260..2a5fab9 100644
--- a/third_party/blink/renderer/core/html/track/text_track_list_test.cc
+++ b/third_party/blink/renderer/core/html/track/text_track_list_test.cc
@@ -20,7 +20,7 @@
   const size_t kNumTextTracks = 4;
   TextTrack* text_tracks[kNumTextTracks];
   for (size_t i = 0; i < kNumTextTracks; ++i) {
-    text_tracks[i] = TextTrack::Create("subtitles", "", "");
+    text_tracks[i] = MakeGarbageCollected<TextTrack>("subtitles", "", "");
     list->Append(text_tracks[i]);
   }
 
diff --git a/third_party/blink/renderer/core/html/track/track_event.idl b/third_party/blink/renderer/core/html/track/track_event.idl
index 78dd8b7..ad9c48268 100644
--- a/third_party/blink/renderer/core/html/track/track_event.idl
+++ b/third_party/blink/renderer/core/html/track/track_event.idl
@@ -26,8 +26,8 @@
 // https://html.spec.whatwg.org/C/#the-trackevent-interface
 
 [
-    Exposed=Window,
-    Constructor(DOMString type, optional TrackEventInit eventInitDict)
+    Exposed=Window
 ] interface TrackEvent : Event {
+    constructor(DOMString type, optional TrackEventInit eventInitDict);
     readonly attribute (VideoTrack or AudioTrack or TextTrack)? track;
 };
diff --git a/third_party/blink/renderer/core/html/track/vtt/vtt_cue.idl b/third_party/blink/renderer/core/html/track/vtt/vtt_cue.idl
index 10fe378..1d424d2 100644
--- a/third_party/blink/renderer/core/html/track/vtt/vtt_cue.idl
+++ b/third_party/blink/renderer/core/html/track/vtt/vtt_cue.idl
@@ -36,10 +36,9 @@
 enum AlignSetting { "start", "center", "end", "left", "right" };
 
 [
-    Exposed=Window,
-    Constructor(double startTime, double endTime, DOMString text),
-    ConstructorCallWith=Document
+    Exposed=Window
 ] interface VTTCue : TextTrackCue {
+    [CallWith=Document] constructor(double startTime, double endTime, DOMString text);
     [RuntimeEnabled=WebVTTRegions] attribute VTTRegion? region;
     attribute DirectionSetting vertical;
     attribute boolean snapToLines;
diff --git a/third_party/blink/renderer/core/html/track/vtt/vtt_region.idl b/third_party/blink/renderer/core/html/track/vtt/vtt_region.idl
index e2cf419c..876b0fc 100644
--- a/third_party/blink/renderer/core/html/track/vtt/vtt_region.idl
+++ b/third_party/blink/renderer/core/html/track/vtt/vtt_region.idl
@@ -29,9 +29,9 @@
 
 [
     Exposed=Window,
-    Constructor,
     RuntimeEnabled=WebVTTRegions
 ] interface VTTRegion {
+    constructor();
     attribute DOMString id;
     [RaisesException=Setter] attribute double width;
     attribute unsigned long lines;
diff --git a/third_party/blink/renderer/core/input/input_device_capabilities.idl b/third_party/blink/renderer/core/input/input_device_capabilities.idl
index 16e39ab1..62c0e74 100644
--- a/third_party/blink/renderer/core/input/input_device_capabilities.idl
+++ b/third_party/blink/renderer/core/input/input_device_capabilities.idl
@@ -11,9 +11,8 @@
 
 // https://wicg.github.io/InputDeviceCapabilities/#the-inputdevicecapabilities-interface
 
-[
-    Constructor(optional InputDeviceCapabilitiesInit deviceInitDict)
-] interface InputDeviceCapabilities {
+interface InputDeviceCapabilities {
+    constructor(optional InputDeviceCapabilitiesInit deviceInitDict);
 
     // Whether this device dispatches touch events for movement.  This is used to detect
     // mouse events which represent only an action that has already been handled  by
diff --git a/third_party/blink/renderer/core/input/touch.idl b/third_party/blink/renderer/core/input/touch.idl
index 223edc2..c9bddf1 100644
--- a/third_party/blink/renderer/core/input/touch.idl
+++ b/third_party/blink/renderer/core/input/touch.idl
@@ -26,10 +26,9 @@
 // https://w3c.github.io/touch-events/#touch-interface
 
 [
-    Constructor(TouchInit initDict),
-    ConstructorCallWith=Document,
     Exposed=Window
 ] interface Touch {
+    [CallWith=Document] constructor(TouchInit initDict);
     readonly attribute long identifier;
     readonly attribute EventTarget target;
     readonly attribute double screenX;
diff --git a/third_party/blink/renderer/core/input/touch_action_test.cc b/third_party/blink/renderer/core/input/touch_action_test.cc
index db2f54aa..88333851 100644
--- a/third_party/blink/renderer/core/input/touch_action_test.cc
+++ b/third_party/blink/renderer/core/input/touch_action_test.cc
@@ -66,7 +66,7 @@
     : public frame_test_helpers::TestWebWidgetClient {
  public:
   TouchActionTrackingWebWidgetClient()
-      : action_set_count_(0), action_(TouchAction::kTouchActionAuto) {}
+      : action_set_count_(0), action_(TouchAction::kAuto) {}
 
   // WebWidgetClient methods
   void SetTouchAction(TouchAction touch_action) override {
@@ -77,7 +77,7 @@
   // Local methods
   void Reset() {
     action_set_count_ = 0;
-    action_ = TouchAction::kTouchActionAuto;
+    action_ = TouchAction::kAuto;
   }
 
   int TouchActionSetCount() { return action_set_count_; }
@@ -342,23 +342,22 @@
       EXPECT_EQ(1, client.TouchActionSetCount()) << failure_context_pos;
       if (client.TouchActionSetCount()) {
         if (expected_action == "auto") {
-          EXPECT_EQ(TouchAction::kTouchActionAuto, client.LastTouchAction())
+          EXPECT_EQ(TouchAction::kAuto, client.LastTouchAction())
               << failure_context_pos;
         } else if (expected_action == "none") {
-          EXPECT_EQ(TouchAction::kTouchActionNone, client.LastTouchAction())
+          EXPECT_EQ(TouchAction::kNone, client.LastTouchAction())
               << failure_context_pos;
         } else if (expected_action == "pan-x") {
-          EXPECT_EQ(TouchAction::kTouchActionPanX, client.LastTouchAction())
+          EXPECT_EQ(TouchAction::kPanX, client.LastTouchAction())
               << failure_context_pos;
         } else if (expected_action == "pan-y") {
-          EXPECT_EQ(TouchAction::kTouchActionPanY, client.LastTouchAction())
+          EXPECT_EQ(TouchAction::kPanY, client.LastTouchAction())
               << failure_context_pos;
         } else if (expected_action == "pan-x-y") {
-          EXPECT_EQ((TouchAction::kTouchActionPan), client.LastTouchAction())
+          EXPECT_EQ((TouchAction::kPan), client.LastTouchAction())
               << failure_context_pos;
         } else if (expected_action == "manipulation") {
-          EXPECT_EQ((TouchAction::kTouchActionManipulation),
-                    client.LastTouchAction())
+          EXPECT_EQ((TouchAction::kManipulation), client.LastTouchAction())
               << failure_context_pos;
         } else {
           FAIL() << "Unrecognized expected-action " << expected_action << " "
diff --git a/third_party/blink/renderer/core/input/touch_action_util.cc b/third_party/blink/renderer/core/input/touch_action_util.cc
index 7aea46b..b0c40e1 100644
--- a/third_party/blink/renderer/core/input/touch_action_util.cc
+++ b/third_party/blink/renderer/core/input/touch_action_util.cc
@@ -17,7 +17,7 @@
   if (node.GetComputedStyle())
     return node.GetComputedStyle()->GetEffectiveTouchAction();
 
-  return TouchAction::kTouchActionAuto;
+  return TouchAction::kAuto;
 }
 
 }  // namespace touch_action_util
diff --git a/third_party/blink/renderer/core/input/touch_event_manager.cc b/third_party/blink/renderer/core/input/touch_event_manager.cc
index 8454196..55751582 100644
--- a/third_party/blink/renderer/core/input/touch_event_manager.cc
+++ b/third_party/blink/renderer/core/input/touch_event_manager.cc
@@ -156,7 +156,7 @@
   touch_attribute_map_.clear();
   last_coalesced_touch_event_ = WebTouchEvent();
   suppressing_touchmoves_within_slop_ = false;
-  current_touch_action_ = TouchAction::kTouchActionAuto;
+  current_touch_action_ = TouchAction::kAuto;
 }
 
 void TouchEventManager::Trace(blink::Visitor* visitor) {
@@ -577,9 +577,9 @@
   if (should_enforce_vertical_scroll_ &&
       HasEventHandlerInAncestorPath(
           touch_node, EventHandlerRegistry::kTouchStartOrMoveEventBlocking)) {
-    delayed_effective_touch_action_ = delayed_effective_touch_action_.value_or(
-                                          TouchAction::kTouchActionAuto) &
-                                      effective_touch_action;
+    delayed_effective_touch_action_ =
+        delayed_effective_touch_action_.value_or(TouchAction::kAuto) &
+        effective_touch_action;
   }
   if (!delayed_effective_touch_action_) {
     frame_->GetPage()->GetChromeClient().SetTouchAction(frame_,
@@ -680,7 +680,7 @@
 
 void TouchEventManager::AllTouchesReleasedCleanup() {
   touch_sequence_document_.Clear();
-  current_touch_action_ = TouchAction::kTouchActionAuto;
+  current_touch_action_ = TouchAction::kAuto;
   last_coalesced_touch_event_ = WebTouchEvent();
   // Ideally, we should have DCHECK(!delayed_effective_touch_action_) but we do
   // we do actually get here from HandleTouchPoint(). Supposedly, if there has
@@ -702,7 +702,7 @@
       event_result == WebInputEventResult::kHandledApplication;
   if (prevent_defaulted && delayed_effective_touch_action_) {
     // Make sure that only vertical scrolling is permitted.
-    *delayed_effective_touch_action_ &= TouchAction::kTouchActionPanY;
+    *delayed_effective_touch_action_ &= TouchAction::kPanY;
   }
 
   if (delayed_effective_touch_action_) {
diff --git a/third_party/blink/renderer/core/inspector/devtools_session.cc b/third_party/blink/renderer/core/inspector/devtools_session.cc
index 82adf9fd..628a438 100644
--- a/third_party/blink/renderer/core/inspector/devtools_session.cc
+++ b/third_party/blink/renderer/core/inspector/devtools_session.cc
@@ -198,9 +198,11 @@
     int call_id,
     const String& method,
     blink::mojom::blink::DevToolsMessagePtr message_ptr) {
-  // TODO(petermarshall): Remove the distinction between DevToolsSession and
-  // IOSession as we always use IOSession now.
-  NOTREACHED();
+  TRACE_EVENT_WITH_FLOW1(
+      "devtools", "DevToolsSession::DispatchProtocolCommand", call_id,
+      TRACE_EVENT_FLAG_FLOW_OUT | TRACE_EVENT_FLAG_FLOW_IN, "call_id", call_id);
+  return DispatchProtocolCommandImpl(call_id, method,
+                                     UnwrapMessage(message_ptr));
 }
 
 void DevToolsSession::DispatchProtocolCommandImpl(int call_id,
diff --git a/third_party/blink/renderer/core/intersection_observer/intersection_observer.idl b/third_party/blink/renderer/core/intersection_observer/intersection_observer.idl
index f96388f..7ed4229db 100644
--- a/third_party/blink/renderer/core/intersection_observer/intersection_observer.idl
+++ b/third_party/blink/renderer/core/intersection_observer/intersection_observer.idl
@@ -9,11 +9,9 @@
 [
     Exposed=Window,
     ActiveScriptWrappable,
-    Constructor(IntersectionObserverCallback callback, optional IntersectionObserverInit options),
-    ConstructorCallWith=ScriptState,
-    MeasureAs=IntersectionObserver_Constructor,
-    RaisesException=Constructor
+    MeasureAs=IntersectionObserver_Constructor
 ] interface IntersectionObserver {
+    [CallWith=ScriptState, RaisesException] constructor(IntersectionObserverCallback callback, optional IntersectionObserverInit options);
     readonly attribute Element? root;
     readonly attribute DOMString rootMargin;
     // https://github.com/WICG/IntersectionObserver/issues/114
diff --git a/third_party/blink/renderer/core/layout/BUILD.gn b/third_party/blink/renderer/core/layout/BUILD.gn
index 3ccd313..fd932af 100644
--- a/third_party/blink/renderer/core/layout/BUILD.gn
+++ b/third_party/blink/renderer/core/layout/BUILD.gn
@@ -417,6 +417,12 @@
     "ng/list/layout_ng_list_marker_image.h",
     "ng/list/ng_unpositioned_list_marker.cc",
     "ng/list/ng_unpositioned_list_marker.h",
+    "ng/mathml/layout_ng_mathml_block.cc",
+    "ng/mathml/layout_ng_mathml_block.h",
+    "ng/mathml/ng_math_layout_utils.cc",
+    "ng/mathml/ng_math_layout_utils.h",
+    "ng/mathml/ng_math_row_layout_algorithm.cc",
+    "ng/mathml/ng_math_row_layout_algorithm.h",
     "ng/ng_absolute_utils.cc",
     "ng/ng_absolute_utils.h",
     "ng/ng_block_break_token.cc",
diff --git a/third_party/blink/renderer/core/layout/custom_scrollbar.cc b/third_party/blink/renderer/core/layout/custom_scrollbar.cc
index 456ffcf2..3fefe8a 100644
--- a/third_party/blink/renderer/core/layout/custom_scrollbar.cc
+++ b/third_party/blink/renderer/core/layout/custom_scrollbar.cc
@@ -36,14 +36,6 @@
 
 namespace blink {
 
-Scrollbar* CustomScrollbar::CreateCustomScrollbar(
-    ScrollableArea* scrollable_area,
-    ScrollbarOrientation orientation,
-    Element* style_source) {
-  return MakeGarbageCollected<CustomScrollbar>(scrollable_area, orientation,
-                                               style_source);
-}
-
 CustomScrollbar::CustomScrollbar(ScrollableArea* scrollable_area,
                                  ScrollbarOrientation orientation,
                                  Element* style_source)
diff --git a/third_party/blink/renderer/core/layout/custom_scrollbar.h b/third_party/blink/renderer/core/layout/custom_scrollbar.h
index 6f09701..010fc6f 100644
--- a/third_party/blink/renderer/core/layout/custom_scrollbar.h
+++ b/third_party/blink/renderer/core/layout/custom_scrollbar.h
@@ -45,10 +45,6 @@
 // LayoutCustomScrollbarPart.
 class CustomScrollbar final : public Scrollbar {
  public:
-  static Scrollbar* CreateCustomScrollbar(ScrollableArea*,
-                                          ScrollbarOrientation,
-                                          Element*);
-
   CustomScrollbar(ScrollableArea*, ScrollbarOrientation, Element*);
   ~CustomScrollbar() override;
 
diff --git a/third_party/blink/renderer/core/layout/flexible_box_algorithm.h b/third_party/blink/renderer/core/layout/flexible_box_algorithm.h
index 3d7499fd..b833870 100644
--- a/third_party/blink/renderer/core/layout/flexible_box_algorithm.h
+++ b/third_party/blink/renderer/core/layout/flexible_box_algorithm.h
@@ -326,7 +326,7 @@
 //   https://drafts.csswg.org/css-flexbox/
 //
 // Expected usage is as follows:
-//     FlexLayoutAlgorithm algorithm(Style(), MainAxisLength(), flex_items);
+//     FlexLayoutAlgorithm algorithm(Style(), MainAxisLength());
 //     for (each child) {
 //       algorithm.emplace_back(...caller must compute these values...)
 //     }
diff --git a/third_party/blink/renderer/core/layout/layout_block_flow.cc b/third_party/blink/renderer/core/layout/layout_block_flow.cc
index 2367e95..e80df2a 100644
--- a/third_party/blink/renderer/core/layout/layout_block_flow.cc
+++ b/third_party/blink/renderer/core/layout/layout_block_flow.cc
@@ -4221,7 +4221,7 @@
   if (IsInline() || IsFloatingOrOutOfFlowPositioned() || HasOverflowClip() ||
       IsFlexItemIncludingDeprecatedAndNG() || IsCustomItem() ||
       IsDocumentElement() || IsGridItem() || IsWritingModeRoot() ||
-      StyleRef().Display() == EDisplay::kFlowRoot ||
+      IsMathItem() || StyleRef().Display() == EDisplay::kFlowRoot ||
       ShouldApplyPaintContainment() || ShouldApplyLayoutContainment() ||
       StyleRef().SpecifiesColumns() ||
       StyleRef().GetColumnSpan() == EColumnSpan::kAll) {
diff --git a/third_party/blink/renderer/core/layout/layout_box.h b/third_party/blink/renderer/core/layout/layout_box.h
index d7c8e1e..4ed80ba5 100644
--- a/third_party/blink/renderer/core/layout/layout_box.h
+++ b/third_party/blink/renderer/core/layout/layout_box.h
@@ -1315,6 +1315,8 @@
 
   bool IsGridItem() const { return Parent() && Parent()->IsLayoutGrid(); }
 
+  bool IsMathItem() const { return Parent() && Parent()->IsMathML(); }
+
   LayoutUnit LineHeight(
       bool first_line,
       LineDirectionMode,
diff --git a/third_party/blink/renderer/core/layout/layout_image_resource_style_image.cc b/third_party/blink/renderer/core/layout/layout_image_resource_style_image.cc
index 77873f5..193abf2 100644
--- a/third_party/blink/renderer/core/layout/layout_image_resource_style_image.cc
+++ b/third_party/blink/renderer/core/layout/layout_image_resource_style_image.cc
@@ -78,8 +78,9 @@
 FloatSize LayoutImageResourceStyleImage::ImageSizeWithDefaultSize(
     float multiplier,
     const LayoutSize& default_size) const {
-  return style_image_->ImageSize(layout_object_->GetDocument(), multiplier,
-                                 default_size);
+  return style_image_->ImageSize(
+      layout_object_->GetDocument(), multiplier, default_size,
+      LayoutObject::ShouldRespectImageOrientation(layout_object_));
 }
 void LayoutImageResourceStyleImage::Trace(blink::Visitor* visitor) {
   visitor->Trace(style_image_);
diff --git a/third_party/blink/renderer/core/layout/layout_list_marker.cc b/third_party/blink/renderer/core/layout/layout_list_marker.cc
index ea95a3c..fd203ff 100644
--- a/third_party/blink/renderer/core/layout/layout_list_marker.cc
+++ b/third_party/blink/renderer/core/layout/layout_list_marker.cc
@@ -77,7 +77,8 @@
       font_data->GetFontMetrics().Ascent() / LayoutUnit(2);
   return RoundedLayoutSize(
       image_->ImageSize(GetDocument(), StyleRef().EffectiveZoom(),
-                        LayoutSize(bullet_width, bullet_width)));
+                        LayoutSize(bullet_width, bullet_width),
+                        LayoutObject::ShouldRespectImageOrientation(this)));
 }
 
 void LayoutListMarker::StyleWillChange(StyleDifference diff,
@@ -311,6 +312,8 @@
 std::pair<LayoutUnit, LayoutUnit> LayoutListMarker::InlineMarginsForInside(
     const ComputedStyle& style,
     bool is_image) {
+  if (style.GetContentData())
+    return {};
   if (is_image)
     return {LayoutUnit(), LayoutUnit(kCMarkerPaddingPx)};
   switch (GetListStyleCategory(style.ListStyleType())) {
@@ -329,51 +332,31 @@
     LayoutUnit marker_inline_size) {
   LayoutUnit margin_start;
   LayoutUnit margin_end;
-  if (style.IsLeftToRightDirection()) {
-    if (is_image) {
-      margin_start = -marker_inline_size - kCMarkerPaddingPx;
-    } else {
-      switch (GetListStyleCategory(style.ListStyleType())) {
-        case ListStyleCategory::kNone:
-          break;
-        case ListStyleCategory::kSymbol: {
-          const SimpleFontData* font_data = style.GetFont().PrimaryFont();
-          DCHECK(font_data);
-          if (!font_data)
-            return {};
-          const FontMetrics& font_metrics = font_data->GetFontMetrics();
-          int offset = font_metrics.Ascent() * 2 / 3;
-          margin_start = LayoutUnit(-offset - kCMarkerPaddingPx - 1);
-          break;
-        }
-        default:
-          margin_start = -marker_inline_size;
-      }
-    }
-    margin_end = -margin_start - marker_inline_size;
+  if (style.GetContentData()) {
+    margin_start = -marker_inline_size;
+  } else if (is_image) {
+    margin_start = -marker_inline_size - kCMarkerPaddingPx;
+    margin_end = LayoutUnit(kCMarkerPaddingPx);
   } else {
-    if (is_image) {
-      margin_end = LayoutUnit(kCMarkerPaddingPx);
-    } else {
-      switch (GetListStyleCategory(style.ListStyleType())) {
-        case ListStyleCategory::kNone:
-          break;
-        case ListStyleCategory::kSymbol: {
-          const SimpleFontData* font_data = style.GetFont().PrimaryFont();
-          DCHECK(font_data);
-          if (!font_data)
-            return {};
-          const FontMetrics& font_metrics = font_data->GetFontMetrics();
-          int offset = font_metrics.Ascent() * 2 / 3;
-          margin_end = offset + kCMarkerPaddingPx + 1 - marker_inline_size;
-          break;
-        }
-        default:
-          margin_end = LayoutUnit();
+    switch (GetListStyleCategory(style.ListStyleType())) {
+      case ListStyleCategory::kNone:
+        break;
+      case ListStyleCategory::kSymbol: {
+        const SimpleFontData* font_data = style.GetFont().PrimaryFont();
+        DCHECK(font_data);
+        if (!font_data)
+          return {};
+        const FontMetrics& font_metrics = font_data->GetFontMetrics();
+        int offset = font_metrics.Ascent() * 2 / 3;
+        margin_start = LayoutUnit(-offset - kCMarkerPaddingPx - 1);
+        margin_end = offset + kCMarkerPaddingPx + 1 - marker_inline_size;
+        break;
       }
+      default:
+        margin_start = -marker_inline_size;
     }
-    margin_start = -margin_end - marker_inline_size;
   }
+  DCHECK_EQ(margin_start + margin_end, -marker_inline_size);
   return {margin_start, margin_end};
 }
 
diff --git a/third_party/blink/renderer/core/layout/layout_object.cc b/third_party/blink/renderer/core/layout/layout_object.cc
index 4821b81..f7679fc7 100644
--- a/third_party/blink/renderer/core/layout/layout_object.cc
+++ b/third_party/blink/renderer/core/layout/layout_object.cc
@@ -2280,7 +2280,7 @@
   // Elements may inherit touch action from parent frame, so we need to report
   // touchstart handler if the root layout object has non-auto effective touch
   // action.
-  TouchAction old_touch_action = TouchAction::kTouchActionAuto;
+  TouchAction old_touch_action = TouchAction::kAuto;
   bool is_document_element = GetNode() && IsDocumentElement();
   if (style_) {
     old_touch_action = is_document_element ? style_->GetEffectiveTouchAction()
@@ -2290,11 +2290,11 @@
                                      ? new_style.GetEffectiveTouchAction()
                                      : new_style.GetTouchAction();
   if (GetNode() && !GetNode()->IsTextNode() &&
-      (old_touch_action == TouchAction::kTouchActionAuto) !=
-          (new_touch_action == TouchAction::kTouchActionAuto)) {
+      (old_touch_action == TouchAction::kAuto) !=
+          (new_touch_action == TouchAction::kAuto)) {
     EventHandlerRegistry& registry =
         GetDocument().GetFrame()->GetEventHandlerRegistry();
-    if (new_touch_action != TouchAction::kTouchActionAuto) {
+    if (new_touch_action != TouchAction::kAuto) {
       registry.DidAddEventHandler(*GetNode(),
                                   EventHandlerRegistry::kTouchAction);
     } else {
@@ -2934,30 +2934,12 @@
 
 RespectImageOrientationEnum LayoutObject::ShouldRespectImageOrientation(
     const LayoutObject* layout_object) {
-  if (!layout_object)
-    return kDoNotRespectImageOrientation;
-
-  // Respect the image's orientation if it's being used as a full-page image or
-  // it's an <img> and the setting to respect it everywhere is set or the <img>
-  // has image-orientation: from-image style. FIXME: crbug.com/498233
-  if (layout_object->GetDocument().IsImageDocument())
-    return kRespectImageOrientation;
-
-  if (!IsA<HTMLImageElement>(layout_object->GetNode()))
-    return kDoNotRespectImageOrientation;
-
-  if (layout_object->GetDocument().GetSettings() &&
-      layout_object->GetDocument()
-          .GetSettings()
-          ->GetShouldRespectImageOrientation())
-    return kRespectImageOrientation;
-
-  if (layout_object->Style() &&
-      layout_object->StyleRef().RespectImageOrientation() ==
+  if (layout_object && layout_object->Style() &&
+      layout_object->StyleRef().RespectImageOrientation() !=
           kRespectImageOrientation)
-    return kRespectImageOrientation;
+    return kDoNotRespectImageOrientation;
 
-  return kDoNotRespectImageOrientation;
+  return kRespectImageOrientation;
 }
 
 LayoutObject* LayoutObject::Container(AncestorSkipInfo* skip_info) const {
@@ -3047,7 +3029,7 @@
   // m_style is null in cases of partial construction. Any handler we added
   // previously may have already been removed by the Document independently.
   if (GetNode() && !GetNode()->IsTextNode() && style_ &&
-      style_->GetTouchAction() != TouchAction::kTouchActionAuto) {
+      style_->GetTouchAction() != TouchAction::kAuto) {
     EventHandlerRegistry& registry =
         GetDocument().GetFrame()->GetEventHandlerRegistry();
     if (registry.EventHandlerTargets(EventHandlerRegistry::kTouchAction)
diff --git a/third_party/blink/renderer/core/layout/layout_object.h b/third_party/blink/renderer/core/layout/layout_object.h
index 28e6a2f..b916049 100644
--- a/third_party/blink/renderer/core/layout/layout_object.h
+++ b/third_party/blink/renderer/core/layout/layout_object.h
@@ -669,6 +669,8 @@
   bool IsListBox() const { return IsOfType(kLayoutObjectListBox); }
   bool IsListItem() const { return IsOfType(kLayoutObjectListItem); }
   bool IsListMarker() const { return IsOfType(kLayoutObjectListMarker); }
+  bool IsMathML() const { return IsOfType(kLayoutObjectMathML); }
+  bool IsMathMLRoot() const { return IsOfType(kLayoutObjectMathMLRoot); }
   bool IsMedia() const { return IsOfType(kLayoutObjectMedia); }
   bool IsMenuList() const { return IsOfType(kLayoutObjectMenuList); }
   bool IsProgress() const { return IsOfType(kLayoutObjectProgress); }
@@ -2189,11 +2191,11 @@
   // (from style) and blocking touch event handlers.
   TouchAction EffectiveAllowedTouchAction() const {
     if (InsideBlockingTouchEventHandler())
-      return TouchAction::kTouchActionNone;
+      return TouchAction::kNone;
     return StyleRef().GetEffectiveTouchAction();
   }
   bool HasEffectiveAllowedTouchAction() const {
-    return EffectiveAllowedTouchAction() != TouchAction::kTouchActionAuto;
+    return EffectiveAllowedTouchAction() != TouchAction::kAuto;
   }
 
   // Whether this object's Node has a blocking touch event handler on itself
@@ -2491,6 +2493,8 @@
     kLayoutObjectListBox,
     kLayoutObjectListItem,
     kLayoutObjectListMarker,
+    kLayoutObjectMathML,
+    kLayoutObjectMathMLRoot,
     kLayoutObjectMedia,
     kLayoutObjectMenuList,
     kLayoutObjectNGBlockFlow,
diff --git a/third_party/blink/renderer/core/layout/layout_theme.cc b/third_party/blink/renderer/core/layout/layout_theme.cc
index 488f6f7d..cd465a3 100644
--- a/third_party/blink/renderer/core/layout/layout_theme.cc
+++ b/third_party/blink/renderer/core/layout/layout_theme.cc
@@ -634,10 +634,10 @@
   if (e && (e->ShadowPseudoId() == "-webkit-media-slider-container" ||
             e->ShadowPseudoId() == "-webkit-slider-container")) {
     if (style.EffectiveAppearance() == kSliderVerticalPart) {
-      style.SetTouchAction(TouchAction::kTouchActionPanX);
+      style.SetTouchAction(TouchAction::kPanX);
       style.SetEffectiveAppearance(kNoControlPart);
     } else {
-      style.SetTouchAction(TouchAction::kTouchActionPanY);
+      style.SetTouchAction(TouchAction::kPanY);
       style.SetEffectiveAppearance(kNoControlPart);
     }
   }
diff --git a/third_party/blink/renderer/core/layout/layout_theme.h b/third_party/blink/renderer/core/layout/layout_theme.h
index 0c92b958..b6cfe7d 100644
--- a/third_party/blink/renderer/core/layout/layout_theme.h
+++ b/third_party/blink/renderer/core/layout/layout_theme.h
@@ -46,6 +46,7 @@
 class Font;
 class FontDescription;
 class HTMLInputElement;
+class IntRect;
 class LengthSize;
 class Locale;
 class LocalFrame;
diff --git a/third_party/blink/renderer/core/layout/ng/custom/layout_worklet_global_scope.cc b/third_party/blink/renderer/core/layout/ng/custom/layout_worklet_global_scope.cc
index a953e2ef..9bad59c 100644
--- a/third_party/blink/renderer/core/layout/ng/custom/layout_worklet_global_scope.cc
+++ b/third_party/blink/renderer/core/layout/ng/custom/layout_worklet_global_scope.cc
@@ -36,12 +36,12 @@
   auto* isolate = ToIsolate(frame);
   auto microtask_queue =
       v8::MicrotaskQueue::New(isolate, v8::MicrotasksPolicy::kScoped);
-  auto* agent = Agent::CreateForWorkerOrWorklet(
-      isolate,
-      creation_params->agent_cluster_id.is_empty()
-          ? base::UnguessableToken::Create()
-          : creation_params->agent_cluster_id,
-      std::move(microtask_queue));
+  auto* agent =
+      MakeGarbageCollected<Agent>(isolate,
+                                  creation_params->agent_cluster_id.is_empty()
+                                      ? base::UnguessableToken::Create()
+                                      : creation_params->agent_cluster_id,
+                                  std::move(microtask_queue));
   auto* global_scope = MakeGarbageCollected<LayoutWorkletGlobalScope>(
       frame, std::move(creation_params), reporting_proxy,
       pending_layout_registry, agent);
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc
index 5de4cfdb..419b2a1 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.cc
@@ -756,6 +756,10 @@
   if (!previous_data)
     return false;
 
+  // This function runs outside of the layout phase. Prevent purging font cache
+  // while shaping.
+  FontCachePurgePreventer fontCachePurgePreventer;
+
   String new_text(std::move(new_text_in));
   layout_text->StyleRef().ApplyTextTransform(&new_text,
                                              layout_text->PreviousCharacter());
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_line_box_fragment_builder.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_line_box_fragment_builder.cc
index af3b4b1..bad0de9 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_line_box_fragment_builder.cc
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_line_box_fragment_builder.cc
@@ -148,7 +148,9 @@
   scoped_refptr<const NGPhysicalLineBoxFragment> fragment =
       NGPhysicalLineBoxFragment::Create(this);
 
-  return base::AdoptRef(new NGLayoutResult(std::move(fragment), this));
+  return base::AdoptRef(
+      new NGLayoutResult(NGLayoutResult::NGLineBoxFragmentBuilderPassKey(),
+                         std::move(fragment), this));
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/layout/ng/mathml/layout_ng_mathml_block.cc b/third_party/blink/renderer/core/layout/ng/mathml/layout_ng_mathml_block.cc
new file mode 100644
index 0000000..71170c08
--- /dev/null
+++ b/third_party/blink/renderer/core/layout/ng/mathml/layout_ng_mathml_block.cc
@@ -0,0 +1,54 @@
+// 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 "third_party/blink/renderer/core/layout/ng/mathml/layout_ng_mathml_block.h"
+
+#include "third_party/blink/renderer/core/layout/layout_analyzer.h"
+#include "third_party/blink/renderer/core/layout/layout_view.h"
+#include "third_party/blink/renderer/core/layout/ng/ng_block_node.h"
+#include "third_party/blink/renderer/core/layout/ng/ng_constraint_space.h"
+#include "third_party/blink/renderer/core/layout/ng/ng_layout_result.h"
+#include "third_party/blink/renderer/core/layout/ng/ng_out_of_flow_positioned_node.h"
+#include "third_party/blink/renderer/core/layout/ng/ng_physical_box_fragment.h"
+
+namespace blink {
+
+LayoutNGMathMLBlock::LayoutNGMathMLBlock(MathMLElement* element)
+    : LayoutNGMixin<LayoutBlock>(element) {
+  DCHECK(element);
+}
+
+void LayoutNGMathMLBlock::UpdateBlockLayout(bool relayout_children) {
+  LayoutAnalyzer::BlockScope analyzer(*this);
+
+  if (IsOutOfFlowPositioned()) {
+    UpdateOutOfFlowBlockLayout();
+    return;
+  }
+
+  NGConstraintSpace constraint_space =
+      NGConstraintSpace::CreateFromLayoutObject(
+          *this, !View()->GetLayoutState()->Next() /* is_layout_root */);
+
+  scoped_refptr<const NGLayoutResult> result =
+      NGBlockNode(this).Layout(constraint_space);
+
+  for (const auto& descendant :
+       result->PhysicalFragment().OutOfFlowPositionedDescendants())
+    descendant.node.UseLegacyOutOfFlowPositioning();
+}
+
+bool LayoutNGMathMLBlock::IsOfType(LayoutObjectType type) const {
+  return type == kLayoutObjectMathML ||
+         (type == kLayoutObjectMathMLRoot && GetNode() &&
+          GetNode()->HasTagName(mathml_names::kMathTag)) ||
+         LayoutNGMixin<LayoutBlock>::IsOfType(type);
+}
+
+bool LayoutNGMathMLBlock::IsChildAllowed(LayoutObject* child,
+                                         const ComputedStyle&) const {
+  return child->GetNode() && child->GetNode()->IsMathMLElement();
+}
+
+}  // namespace blink
diff --git a/third_party/blink/renderer/core/layout/ng/mathml/layout_ng_mathml_block.h b/third_party/blink/renderer/core/layout/ng/mathml/layout_ng_mathml_block.h
new file mode 100644
index 0000000..1f14af71
--- /dev/null
+++ b/third_party/blink/renderer/core/layout/ng/mathml/layout_ng_mathml_block.h
@@ -0,0 +1,30 @@
+// 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 THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_MATHML_LAYOUT_NG_MATHML_BLOCK_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_MATHML_LAYOUT_NG_MATHML_BLOCK_H_
+
+#include "third_party/blink/renderer/core/layout/ng/layout_ng_mixin.h"
+#include "third_party/blink/renderer/core/mathml/mathml_element.h"
+
+namespace blink {
+
+class LayoutNGMathMLBlock : public LayoutNGMixin<LayoutBlock> {
+ public:
+  explicit LayoutNGMathMLBlock(MathMLElement*);
+
+  const char* GetName() const override { return "LayoutNGMathMLBlock"; }
+
+ private:
+  void UpdateBlockLayout(bool relayout_children) final;
+
+  bool IsOfType(LayoutObjectType) const final;
+  bool IsChildAllowed(LayoutObject*, const ComputedStyle&) const final;
+};
+
+DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutNGMathMLBlock, IsMathML());
+
+}  // namespace blink
+
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_MATHML_LAYOUT_NG_MATHML_BLOCK_H_
diff --git a/third_party/blink/renderer/core/layout/ng/mathml/ng_math_layout_utils.cc b/third_party/blink/renderer/core/layout/ng/mathml/ng_math_layout_utils.cc
new file mode 100644
index 0000000..682d214b
--- /dev/null
+++ b/third_party/blink/renderer/core/layout/ng/mathml/ng_math_layout_utils.cc
@@ -0,0 +1,41 @@
+// 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 "third_party/blink/renderer/core/layout/ng/mathml/ng_math_layout_utils.h"
+
+#include "third_party/blink/renderer/core/layout/ng/ng_block_node.h"
+#include "third_party/blink/renderer/core/layout/ng/ng_constraint_space_builder.h"
+#include "third_party/blink/renderer/core/layout/ng/ng_length_utils.h"
+#include "third_party/blink/renderer/core/layout/ng/ng_space_utils.h"
+
+namespace blink {
+
+NGConstraintSpace CreateConstraintSpaceForMathChild(
+    const NGBlockNode& parent_node,
+    const LogicalSize& child_available_size,
+    const NGConstraintSpace& parent_constraint_space,
+    const NGLayoutInputNode& child) {
+  const ComputedStyle& parent_style = parent_node.Style();
+  const ComputedStyle& child_style = child.Style();
+  DCHECK(child.CreatesNewFormattingContext());
+  NGConstraintSpaceBuilder space_builder(parent_constraint_space,
+                                         child_style.GetWritingMode(),
+                                         true /* is_new_fc */);
+  SetOrthogonalFallbackInlineSizeIfNeeded(parent_style, child, &space_builder);
+
+  space_builder.SetAvailableSize(child_available_size);
+  space_builder.SetPercentageResolutionSize(child_available_size);
+  space_builder.SetReplacedPercentageResolutionSize(child_available_size);
+
+  // TODO(rbuis): add target stretch sizes.
+
+  space_builder.SetTextDirection(child_style.Direction());
+
+  // TODO(rbuis): add ink baselines?
+  space_builder.AddBaselineRequest(
+      {NGBaselineAlgorithmType::kFirstLine, kAlphabeticBaseline});
+  return space_builder.ToConstraintSpace();
+}
+
+}  // namespace blink
diff --git a/third_party/blink/renderer/core/layout/ng/mathml/ng_math_layout_utils.h b/third_party/blink/renderer/core/layout/ng/mathml/ng_math_layout_utils.h
new file mode 100644
index 0000000..5e7bdd26
--- /dev/null
+++ b/third_party/blink/renderer/core/layout/ng/mathml/ng_math_layout_utils.h
@@ -0,0 +1,24 @@
+// 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 THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_MATHML_NG_MATH_LAYOUT_UTILS_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_MATHML_NG_MATH_LAYOUT_UTILS_H_
+
+namespace blink {
+
+struct LogicalSize;
+class NGBlockNode;
+class NGConstraintSpace;
+class NGLayoutInputNode;
+
+// Creates a new constraint space for the current child.
+NGConstraintSpace CreateConstraintSpaceForMathChild(
+    const NGBlockNode& parent_node,
+    const LogicalSize& child_available_size,
+    const NGConstraintSpace& parent_constraint_space,
+    const NGLayoutInputNode&);
+
+}  // namespace blink
+
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_MATHML_NG_MATH_LAYOUT_UTILS_H_
diff --git a/third_party/blink/renderer/core/layout/ng/mathml/ng_math_row_layout_algorithm.cc b/third_party/blink/renderer/core/layout/ng/mathml/ng_math_row_layout_algorithm.cc
new file mode 100644
index 0000000..ac5ce47
--- /dev/null
+++ b/third_party/blink/renderer/core/layout/ng/mathml/ng_math_row_layout_algorithm.cc
@@ -0,0 +1,170 @@
+// 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 "third_party/blink/renderer/core/layout/ng/mathml/ng_math_row_layout_algorithm.h"
+
+#include "third_party/blink/renderer/core/layout/ng/inline/ng_inline_child_layout_context.h"
+#include "third_party/blink/renderer/core/layout/ng/mathml/ng_math_layout_utils.h"
+#include "third_party/blink/renderer/core/layout/ng/ng_block_break_token.h"
+#include "third_party/blink/renderer/core/layout/ng/ng_fragment.h"
+#include "third_party/blink/renderer/core/layout/ng/ng_length_utils.h"
+#include "third_party/blink/renderer/core/mathml/mathml_element.h"
+
+namespace blink {
+namespace {
+
+inline LayoutUnit InlineOffsetForDisplayMathCentering(
+    bool is_display_math,
+    LayoutUnit available_inline_size,
+    LayoutUnit max_row_inline_size) {
+  if (is_display_math)
+    return (available_inline_size - max_row_inline_size) / 2;
+  return LayoutUnit();
+}
+
+}  // namespace
+
+NGMathRowLayoutAlgorithm::NGMathRowLayoutAlgorithm(
+    const NGLayoutAlgorithmParams& params)
+    : NGLayoutAlgorithm(params),
+      border_padding_(params.fragment_geometry.border +
+                      params.fragment_geometry.padding),
+      border_scrollbar_padding_(border_padding_ +
+                                params.fragment_geometry.scrollbar) {
+  DCHECK(params.space.IsNewFormattingContext());
+  DCHECK(params.fragment_geometry.scrollbar.IsEmpty());
+  DCHECK(!ConstraintSpace().HasBlockFragmentation());
+  container_builder_.SetIsNewFormattingContext(
+      params.space.IsNewFormattingContext());
+  container_builder_.SetInitialFragmentGeometry(params.fragment_geometry);
+}
+
+void NGMathRowLayoutAlgorithm::LayoutRowItems(
+    NGContainerFragmentBuilder::ChildrenVector* children,
+    LayoutUnit* max_row_block_baseline,
+    LogicalSize* row_total_size) {
+  LayoutUnit inline_offset, max_row_ascent, max_row_descent;
+  for (NGLayoutInputNode child = Node().FirstChild(); child;
+       child = child.NextSibling()) {
+    if (child.IsOutOfFlowPositioned())
+      continue;
+    const ComputedStyle& child_style = child.Style();
+    NGConstraintSpace child_space = CreateConstraintSpaceForMathChild(
+        Node(), child_available_size_, ConstraintSpace(), child);
+    scoped_refptr<const NGLayoutResult> result =
+        To<NGBlockNode>(child).Layout(child_space, nullptr /* break token */);
+    const NGPhysicalContainerFragment& physical_fragment =
+        result->PhysicalFragment();
+    NGFragment fragment(ConstraintSpace().GetWritingMode(), physical_fragment);
+
+    NGBoxStrut margins =
+        ComputeMarginsFor(child_space, child_style, ConstraintSpace());
+    inline_offset += margins.inline_start;
+
+    // TODO(rbuis): get ascent from physical fragment. Take into account writing
+    // mode.
+    LayoutUnit ascent;
+    *max_row_block_baseline = std::max(*max_row_block_baseline, ascent);
+
+    // TODO(rbuis): Operators can add lspace and rspace.
+
+    children->emplace_back(
+        LogicalOffset{inline_offset, margins.block_start - ascent},
+        &physical_fragment);
+
+    inline_offset += fragment.InlineSize() + margins.inline_end;
+
+    max_row_ascent = std::max(max_row_ascent, ascent + margins.block_start);
+    max_row_descent = std::max(
+        max_row_descent, fragment.BlockSize() + margins.block_end - ascent);
+    row_total_size->inline_size =
+        std::max(row_total_size->inline_size, inline_offset);
+  }
+  row_total_size->block_size = max_row_ascent + max_row_descent;
+}
+
+scoped_refptr<const NGLayoutResult> NGMathRowLayoutAlgorithm::Layout() {
+  DCHECK(!BreakToken());
+
+  bool is_display_math = Node().IsMathRoot() && !Style().IsDisplayInlineType();
+
+  LogicalSize max_row_size;
+  LayoutUnit max_row_block_baseline;
+
+  const LogicalSize border_box_size = container_builder_.InitialBorderBoxSize();
+  child_available_size_ =
+      ShrinkAvailableSize(border_box_size, border_scrollbar_padding_);
+
+  // TODO(rbuis): add OOF elements.
+
+  NGContainerFragmentBuilder::ChildrenVector children;
+  LayoutRowItems(&children, &max_row_block_baseline, &max_row_size);
+
+  // Add children taking into account centering, baseline and
+  // border/scrollbar/padding.
+  LayoutUnit center_offset = InlineOffsetForDisplayMathCentering(
+      is_display_math, ConstraintSpace().AvailableSize().inline_size,
+      max_row_size.inline_size);
+  LogicalOffset adjust_offset(
+      border_scrollbar_padding_.inline_start + center_offset,
+      border_scrollbar_padding_.block_start + max_row_block_baseline);
+  for (auto& child : children) {
+    child.offset += adjust_offset;
+    container_builder_.AddChild(
+        To<NGPhysicalContainerFragment>(*child.fragment), child.offset);
+  }
+
+  // TODO(rbuis): handle baselines.
+
+  auto block_size = ComputeBlockSizeForFragment(
+      ConstraintSpace(), Style(), border_padding_,
+      max_row_size.block_size + border_scrollbar_padding_.BlockSum());
+  container_builder_.SetBlockSize(block_size);
+
+  // TODO(rbuis): handle OOF layout part.
+
+  return container_builder_.ToBoxFragment();
+}
+
+base::Optional<MinMaxSize> NGMathRowLayoutAlgorithm::ComputeMinMaxSize(
+    const MinMaxSizeInput& input) const {
+  base::Optional<MinMaxSize> sizes = CalculateMinMaxSizesIgnoringChildren(
+      Node(), border_scrollbar_padding_, input.size_type);
+  if (sizes)
+    return sizes;
+
+  sizes.emplace();
+  LayoutUnit child_percentage_resolution_block_size =
+      CalculateChildPercentageBlockSizeForMinMax(
+          ConstraintSpace(), Node(), border_padding_,
+          input.percentage_resolution_block_size);
+
+  MinMaxSizeInput child_input(child_percentage_resolution_block_size);
+
+  for (NGLayoutInputNode child = Node().FirstChild(); child;
+       child = child.NextSibling()) {
+    if (child.IsOutOfFlowPositioned())
+      continue;
+    MinMaxSize child_min_max_sizes =
+        ComputeMinAndMaxContentContribution(Style(), child, child_input);
+    NGBoxStrut child_margins = ComputeMinMaxMargins(Style(), child);
+    child_min_max_sizes += child_margins.InlineSum();
+    sizes->max_size += child_min_max_sizes.max_size;
+    sizes->min_size += child_min_max_sizes.min_size;
+
+    // TODO(rbuis): Operators can add lspace and rspace.
+  }
+  sizes->max_size = std::max(sizes->max_size, sizes->min_size);
+
+  // Due to negative margins, it is possible that we calculated a negative
+  // intrinsic width. Make sure that we never return a negative width.
+  sizes->Encompass(LayoutUnit());
+
+  if (input.size_type == NGMinMaxSizeType::kBorderBoxSize)
+    *sizes += border_scrollbar_padding_.InlineSum();
+
+  return sizes;
+}
+
+}  // namespace blink
diff --git a/third_party/blink/renderer/core/layout/ng/mathml/ng_math_row_layout_algorithm.h b/third_party/blink/renderer/core/layout/ng/mathml/ng_math_row_layout_algorithm.h
new file mode 100644
index 0000000..518f0cd
--- /dev/null
+++ b/third_party/blink/renderer/core/layout/ng/mathml/ng_math_row_layout_algorithm.h
@@ -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.
+
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_MATHML_NG_MATH_ROW_LAYOUT_ALGORITHM_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_MATHML_NG_MATH_ROW_LAYOUT_ALGORITHM_H_
+
+#include "third_party/blink/renderer/core/layout/ng/ng_block_break_token.h"
+#include "third_party/blink/renderer/core/layout/ng/ng_block_node.h"
+#include "third_party/blink/renderer/core/layout/ng/ng_box_fragment_builder.h"
+#include "third_party/blink/renderer/core/layout/ng/ng_layout_algorithm.h"
+
+namespace blink {
+
+class LayoutUnit;
+
+class CORE_EXPORT NGMathRowLayoutAlgorithm
+    : public NGLayoutAlgorithm<NGBlockNode,
+                               NGBoxFragmentBuilder,
+                               NGBlockBreakToken> {
+ public:
+  NGMathRowLayoutAlgorithm(const NGLayoutAlgorithmParams& params);
+
+ protected:
+  void LayoutRowItems(NGContainerFragmentBuilder::ChildrenVector*,
+                      LayoutUnit* max_row_block_baseline,
+                      LogicalSize* row_total_size);
+
+ private:
+  scoped_refptr<const NGLayoutResult> Layout() final;
+
+  base::Optional<MinMaxSize> ComputeMinMaxSize(
+      const MinMaxSizeInput&) const final;
+
+  LogicalSize child_available_size_;
+  const NGBoxStrut border_padding_;
+  const NGBoxStrut border_scrollbar_padding_;
+};
+
+}  // namespace blink
+
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_MATHML_NG_MATH_ROW_LAYOUT_ALGORITHM_H_
diff --git a/third_party/blink/renderer/core/layout/ng/ng_block_node.cc b/third_party/blink/renderer/core/layout/ng/ng_block_node.cc
index 1eb8f37..af50c06 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_block_node.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_block_node.cc
@@ -25,6 +25,7 @@
 #include "third_party/blink/renderer/core/layout/ng/inline/ng_inline_node.h"
 #include "third_party/blink/renderer/core/layout/ng/legacy_layout_tree_walking.h"
 #include "third_party/blink/renderer/core/layout/ng/list/layout_ng_list_item.h"
+#include "third_party/blink/renderer/core/layout/ng/mathml/ng_math_row_layout_algorithm.h"
 #include "third_party/blink/renderer/core/layout/ng/ng_block_break_token.h"
 #include "third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.h"
 #include "third_party/blink/renderer/core/layout/ng/ng_box_fragment.h"
@@ -82,6 +83,8 @@
     CreateAlgorithmAndRun<NGFlexLayoutAlgorithm>(params, callback);
   } else if (box.IsLayoutNGCustom()) {
     CreateAlgorithmAndRun<NGCustomLayoutAlgorithm>(params, callback);
+  } else if (box.IsMathML()) {
+    CreateAlgorithmAndRun<NGMathRowLayoutAlgorithm>(params, callback);
   } else if (box.IsLayoutNGFieldset()) {
     CreateAlgorithmAndRun<NGFieldsetLayoutAlgorithm>(params, callback);
     // If there's a legacy layout box, we can only do block fragmentation if
diff --git a/third_party/blink/renderer/core/layout/ng/ng_box_fragment_builder.cc b/third_party/blink/renderer/core/layout/ng/ng_box_fragment_builder.cc
index 990d5a5..779ba6d 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_box_fragment_builder.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_box_fragment_builder.cc
@@ -240,12 +240,15 @@
       NGPhysicalBoxFragment::Create(this, block_or_line_writing_mode);
   fragment->CheckType();
 
-  return base::AdoptRef(new NGLayoutResult(std::move(fragment), this));
+  return base::AdoptRef(
+      new NGLayoutResult(NGLayoutResult::NGBoxFragmentBuilderPassKey(),
+                         std::move(fragment), this));
 }
 
 scoped_refptr<const NGLayoutResult> NGBoxFragmentBuilder::Abort(
     NGLayoutResult::EStatus status) {
-  return base::AdoptRef(new NGLayoutResult(status, this));
+  return base::AdoptRef(new NGLayoutResult(
+      NGLayoutResult::NGBoxFragmentBuilderPassKey(), status, this));
 }
 
 // Computes the geometry required for any inline containing blocks.
diff --git a/third_party/blink/renderer/core/layout/ng/ng_flex_layout_algorithm.cc b/third_party/blink/renderer/core/layout/ng/ng_flex_layout_algorithm.cc
index a586b30..bbefbb2 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_flex_layout_algorithm.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_flex_layout_algorithm.cc
@@ -28,10 +28,18 @@
       border_scrollbar_padding_(border_padding_ +
                                 params.fragment_geometry.scrollbar),
       is_column_(Style().ResolvedIsColumnFlexDirection()),
-      is_horizontal_flow_(FlexLayoutAlgorithm::IsHorizontalFlow(Style())) {
+      is_horizontal_flow_(FlexLayoutAlgorithm::IsHorizontalFlow(Style())),
+      is_cross_size_definite_(IsContainerCrossSizeDefinite()) {
   container_builder_.SetIsNewFormattingContext(
       params.space.IsNewFormattingContext());
   container_builder_.SetInitialFragmentGeometry(params.fragment_geometry);
+
+  border_box_size_ = container_builder_.InitialBorderBoxSize();
+  content_box_size_ =
+      ShrinkAvailableSize(border_box_size_, border_scrollbar_padding_);
+  child_percentage_size_ = CalculateChildPercentageSize(
+      ConstraintSpace(), Node(), content_box_size_);
+  algorithm_.emplace(&Style(), MainAxisContentExtent(LayoutUnit::Max()));
 }
 
 bool NGFlexLayoutAlgorithm::MainAxisIsInlineAxis(
@@ -272,7 +280,7 @@
 
 bool NGFlexLayoutAlgorithm::WillChildCrossSizeBeContainerCrossSize(
     const NGBlockNode& child) const {
-  return !algorithm_->IsMultiline() && IsContainerCrossSizeDefinite() &&
+  return !algorithm_->IsMultiline() && is_cross_size_definite_ &&
          DoesItemStretch(child);
 }
 
@@ -575,15 +583,6 @@
 }
 
 scoped_refptr<const NGLayoutResult> NGFlexLayoutAlgorithm::Layout() {
-  border_box_size_ = container_builder_.InitialBorderBoxSize();
-  content_box_size_ =
-      ShrinkAvailableSize(border_box_size_, border_scrollbar_padding_);
-  child_percentage_size_ = CalculateChildPercentageSize(
-      ConstraintSpace(), Node(), content_box_size_);
-
-  const LayoutUnit line_break_length = MainAxisContentExtent(LayoutUnit::Max());
-  algorithm_.emplace(&Style(), line_break_length);
-
   ConstructAndAppendFlexItems();
 
   LayoutUnit main_axis_offset = border_scrollbar_padding_.inline_start;
diff --git a/third_party/blink/renderer/core/layout/ng/ng_flex_layout_algorithm.h b/third_party/blink/renderer/core/layout/ng/ng_flex_layout_algorithm.h
index 16f6aaa0..fa0e0eb5f 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_flex_layout_algorithm.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_flex_layout_algorithm.h
@@ -69,8 +69,7 @@
   const NGBoxStrut border_scrollbar_padding_;
   const bool is_column_;
   const bool is_horizontal_flow_;
-  // These are populated at the top of Layout(), so aren't available in
-  // ComputeMinMaxSize() or anything it calls.
+  const bool is_cross_size_definite_;
   LogicalSize border_box_size_;
   LogicalSize content_box_size_;
   LogicalSize child_percentage_size_;
diff --git a/third_party/blink/renderer/core/layout/ng/ng_layout_input_node.h b/third_party/blink/renderer/core/layout/ng/ng_layout_input_node.h
index c77e16c..856ec28 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_layout_input_node.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_layout_input_node.h
@@ -124,6 +124,8 @@
     return IsBlock() && box_->IsRenderedLegend();
   }
 
+  bool IsMathRoot() const { return box_->IsMathMLRoot(); }
+
   bool IsAnonymousBlock() const { return box_->IsAnonymousBlock(); }
 
   // If the node is a quirky container for margin collapsing, see:
diff --git a/third_party/blink/renderer/core/layout/ng/ng_layout_result.cc b/third_party/blink/renderer/core/layout/ng/ng_layout_result.cc
index fac7783..177e7b7 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_layout_result.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_layout_result.cc
@@ -39,6 +39,7 @@
 }  // namespace
 
 NGLayoutResult::NGLayoutResult(
+    NGBoxFragmentBuilderPassKey passkey,
     scoped_refptr<const NGPhysicalContainerFragment> physical_fragment,
     NGBoxFragmentBuilder* builder)
     : NGLayoutResult(std::move(physical_fragment),
@@ -81,12 +82,15 @@
 }
 
 NGLayoutResult::NGLayoutResult(
+    NGLineBoxFragmentBuilderPassKey passkey,
     scoped_refptr<const NGPhysicalContainerFragment> physical_fragment,
     NGLineBoxFragmentBuilder* builder)
     : NGLayoutResult(std::move(physical_fragment),
                      static_cast<NGContainerFragmentBuilder*>(builder)) {}
 
-NGLayoutResult::NGLayoutResult(EStatus status, NGBoxFragmentBuilder* builder)
+NGLayoutResult::NGLayoutResult(NGBoxFragmentBuilderPassKey key,
+                               EStatus status,
+                               NGBoxFragmentBuilder* builder)
     : NGLayoutResult(/* physical_fragment */ nullptr,
                      static_cast<NGContainerFragmentBuilder*>(builder)) {
   bitfields_.status = status;
diff --git a/third_party/blink/renderer/core/layout/ng/ng_layout_result.h b/third_party/blink/renderer/core/layout/ng/ng_layout_result.h
index 77ff5c5..388d2b26 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_layout_result.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_layout_result.h
@@ -285,21 +285,24 @@
                                     bool check_same_block_size = true) const;
 #endif
 
- private:
-  friend class NGBoxFragmentBuilder;
-  friend class NGLineBoxFragmentBuilder;
-  friend class MutableForOutOfFlow;
-
+  using NGBoxFragmentBuilderPassKey = util::PassKey<NGBoxFragmentBuilder>;
+  // This constructor is for a non-success status.
+  NGLayoutResult(NGBoxFragmentBuilderPassKey, EStatus, NGBoxFragmentBuilder*);
   // This constructor requires a non-null fragment and sets a success status.
   NGLayoutResult(
+      NGBoxFragmentBuilderPassKey,
       scoped_refptr<const NGPhysicalContainerFragment> physical_fragment,
       NGBoxFragmentBuilder*);
+  using NGLineBoxFragmentBuilderPassKey =
+      util::PassKey<NGLineBoxFragmentBuilder>;
   // This constructor requires a non-null fragment and sets a success status.
   NGLayoutResult(
+      NGLineBoxFragmentBuilderPassKey,
       scoped_refptr<const NGPhysicalContainerFragment> physical_fragment,
       NGLineBoxFragmentBuilder*);
-  // This constructor is for a non-success status.
-  NGLayoutResult(EStatus, NGBoxFragmentBuilder*);
+
+ private:
+  friend class MutableForOutOfFlow;
 
   // We don't need the copy constructor, move constructor, copy
   // assigmnment-operator, or move assignment-operator today.
diff --git a/third_party/blink/renderer/core/layout/shapes/shape.cc b/third_party/blink/renderer/core/layout/shapes/shape.cc
index f961184..702e559 100644
--- a/third_party/blink/renderer/core/layout/shapes/shape.cc
+++ b/third_party/blink/renderer/core/layout/shapes/shape.cc
@@ -234,7 +234,8 @@
 
 static bool ExtractImageData(Image* image,
                              const IntSize& image_size,
-                             ArrayBufferContents& contents) {
+                             ArrayBufferContents& contents,
+                             RespectImageOrientationEnum respect_orientation) {
   if (!image)
     return false;
 
@@ -260,8 +261,8 @@
   canvas.clear(SK_ColorTRANSPARENT);
 
   image->Draw(&canvas, flags, FloatRect(image_dest_rect), image_source_rect,
-              kDoNotRespectImageOrientation,
-              Image::kDoNotClampImageToSourceRect, Image::kSyncDecode);
+              respect_orientation, Image::kDoNotClampImageToSourceRect,
+              Image::kSyncDecode);
 
   size_t size_in_bytes;
   if (!StaticBitmapImage::GetSizeInBytes(image_dest_rect, color_params)
@@ -332,12 +333,14 @@
   return size.Area() * 4 < max_image_size_bytes;
 }
 
-std::unique_ptr<Shape> Shape::CreateRasterShape(Image* image,
-                                                float threshold,
-                                                const LayoutRect& image_r,
-                                                const LayoutRect& margin_r,
-                                                WritingMode writing_mode,
-                                                float margin) {
+std::unique_ptr<Shape> Shape::CreateRasterShape(
+    Image* image,
+    float threshold,
+    const LayoutRect& image_r,
+    const LayoutRect& margin_r,
+    WritingMode writing_mode,
+    float margin,
+    RespectImageOrientationEnum respect_orientation) {
   IntRect image_rect = PixelSnappedIntRect(image_r);
   IntRect margin_rect = PixelSnappedIntRect(margin_r);
 
@@ -347,8 +350,10 @@
   }
 
   ArrayBufferContents contents;
-  if (!ExtractImageData(image, image_rect.Size(), contents))
+  if (!ExtractImageData(image, image_rect.Size(), contents,
+                        respect_orientation)) {
     return CreateEmptyRasterShape(writing_mode, margin);
+  }
 
   std::unique_ptr<RasterShapeIntervals> intervals =
       ExtractIntervalsFromImageData(contents, threshold, image_rect,
diff --git a/third_party/blink/renderer/core/layout/shapes/shape.h b/third_party/blink/renderer/core/layout/shapes/shape.h
index 45be4d0..77f7cfa 100644
--- a/third_party/blink/renderer/core/layout/shapes/shape.h
+++ b/third_party/blink/renderer/core/layout/shapes/shape.h
@@ -35,6 +35,7 @@
 #include "third_party/blink/renderer/core/style/basic_shapes.h"
 #include "third_party/blink/renderer/core/style/style_image.h"
 #include "third_party/blink/renderer/platform/geometry/layout_rect.h"
+#include "third_party/blink/renderer/platform/graphics/image_orientation.h"
 #include "third_party/blink/renderer/platform/graphics/path.h"
 #include "third_party/blink/renderer/platform/text/writing_mode.h"
 
@@ -84,7 +85,8 @@
                                                   const LayoutRect& image_rect,
                                                   const LayoutRect& margin_rect,
                                                   WritingMode,
-                                                  float margin);
+                                                  float margin,
+                                                  RespectImageOrientationEnum);
   static std::unique_ptr<Shape> CreateLayoutBoxShape(const FloatRoundedRect&,
                                                      WritingMode,
                                                      float margin);
diff --git a/third_party/blink/renderer/core/layout/shapes/shape_outside_info.cc b/third_party/blink/renderer/core/layout/shapes/shape_outside_info.cc
index 96cbb7e0..38e068b4 100644
--- a/third_party/blink/renderer/core/layout/shapes/shape_outside_info.cc
+++ b/third_party/blink/renderer/core/layout/shapes/shape_outside_info.cc
@@ -186,7 +186,8 @@
   DCHECK(!style_image->IsPendingImage());
   const LayoutSize& image_size = RoundedLayoutSize(style_image->ImageSize(
       layout_box_.GetDocument(), layout_box_.StyleRef().EffectiveZoom(),
-      reference_box_logical_size_));
+      reference_box_logical_size_,
+      LayoutObject::ShouldRespectImageOrientation(&layout_box_)));
 
   const LayoutRect& margin_rect =
       GetShapeImageMarginRect(layout_box_, reference_box_logical_size_);
@@ -199,9 +200,9 @@
       style_image->GetImage(layout_box_, layout_box_.GetDocument(),
                             layout_box_.StyleRef(), FloatSize(image_size));
 
-  return Shape::CreateRasterShape(image.get(), shape_image_threshold,
-                                  image_rect, margin_rect, writing_mode,
-                                  margin);
+  return Shape::CreateRasterShape(
+      image.get(), shape_image_threshold, image_rect, margin_rect, writing_mode,
+      margin, LayoutObject::ShouldRespectImageOrientation(&layout_box_));
 }
 
 const Shape& ShapeOutsideInfo::ComputedShape() const {
diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_party/blink/renderer/core/loader/document_loader.cc
index 88fbeae..a6d70f1 100644
--- a/third_party/blink/renderer/core/loader/document_loader.cc
+++ b/third_party/blink/renderer/core/loader/document_loader.cc
@@ -1480,12 +1480,11 @@
   // The DocumentLoader was flagged as activated if it needs to notify the frame
   // that it was activated before navigation. Update the frame state based on
   // the new value.
-  if (frame_->HasReceivedUserGestureBeforeNavigation() !=
+  if (frame_->HadStickyUserActivationBeforeNavigation() !=
       had_sticky_activation_) {
-    frame_->SetDocumentHasReceivedUserGestureBeforeNavigation(
-        had_sticky_activation_);
+    frame_->SetHadStickyUserActivationBeforeNavigation(had_sticky_activation_);
     frame_->GetLocalFrameHostRemote()
-        .ReceivedUserGestureBeforeNavigationChanged(had_sticky_activation_);
+        .HadStickyUserActivationBeforeNavigationChanged(had_sticky_activation_);
   }
 
   bool should_clear_window_name =
diff --git a/third_party/blink/renderer/core/loader/resource/image_resource_content.cc b/third_party/blink/renderer/core/loader/resource/image_resource_content.cc
index 13f1754..3ea0a06 100644
--- a/third_party/blink/renderer/core/loader/resource/image_resource_content.cc
+++ b/third_party/blink/renderer/core/loader/resource/image_resource_content.cc
@@ -517,7 +517,7 @@
   if (!image_)
     return true;
 
-  uint64_t pixels = IntrinsicSize(kDoNotRespectImageOrientation).Area();
+  uint64_t pixels = IntrinsicSize(kRespectImageOrientation).Area();
   if (!pixels)
     return true;
 
diff --git a/third_party/blink/renderer/core/mathml/BUILD.gn b/third_party/blink/renderer/core/mathml/BUILD.gn
index be46256d..13601cd 100644
--- a/third_party/blink/renderer/core/mathml/BUILD.gn
+++ b/third_party/blink/renderer/core/mathml/BUILD.gn
@@ -8,5 +8,7 @@
   sources = [
     "mathml_element.cc",
     "mathml_element.h",
+    "mathml_row_element.cc",
+    "mathml_row_element.h",
   ]
 }
diff --git a/third_party/blink/renderer/core/mathml/mathml_row_element.cc b/third_party/blink/renderer/core/mathml/mathml_row_element.cc
new file mode 100644
index 0000000..71c10e333
--- /dev/null
+++ b/third_party/blink/renderer/core/mathml/mathml_row_element.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 "third_party/blink/renderer/core/mathml/mathml_row_element.h"
+
+#include "third_party/blink/renderer/core/layout/ng/mathml/layout_ng_mathml_block.h"
+#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
+
+namespace blink {
+
+MathMLRowElement::MathMLRowElement(const QualifiedName& tagName,
+                                   Document& document)
+    : MathMLElement(tagName, document) {}
+
+LayoutObject* MathMLRowElement::CreateLayoutObject(const ComputedStyle& style,
+                                                   LegacyLayout legacy) {
+  // TODO(rbuis): legacy check should be removed.
+  if (!RuntimeEnabledFeatures::MathMLCoreEnabled() ||
+      legacy == LegacyLayout::kForce || !style.IsDisplayMathType())
+    return MathMLElement::CreateLayoutObject(style, legacy);
+  return new LayoutNGMathMLBlock(this);
+}
+
+}  // namespace blink
diff --git a/third_party/blink/renderer/core/mathml/mathml_row_element.h b/third_party/blink/renderer/core/mathml/mathml_row_element.h
new file mode 100644
index 0000000..5e0a53c
--- /dev/null
+++ b/third_party/blink/renderer/core/mathml/mathml_row_element.h
@@ -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.
+
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_MATHML_MATHML_ROW_ELEMENT_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_MATHML_MATHML_ROW_ELEMENT_H_
+
+#include "third_party/blink/renderer/core/mathml/mathml_element.h"
+
+namespace blink {
+
+class ComputedStyle;
+class Document;
+
+class CORE_EXPORT MathMLRowElement : public MathMLElement {
+ public:
+  explicit MathMLRowElement(const QualifiedName&, Document&);
+
+ private:
+  LayoutObject* CreateLayoutObject(const ComputedStyle&,
+                                   LegacyLayout legacy) final;
+};
+}  // namespace blink
+
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_MATHML_MATHML_ROW_ELEMENT_H_
diff --git a/third_party/blink/renderer/core/mathml/mathml_tag_names.json5 b/third_party/blink/renderer/core/mathml/mathml_tag_names.json5
index af9f5dd..51c8b51 100644
--- a/third_party/blink/renderer/core/mathml/mathml_tag_names.json5
+++ b/third_party/blink/renderer/core/mathml/mathml_tag_names.json5
@@ -8,7 +8,31 @@
   },
   data: [
     {
+      name: "annotation",
+      interfaceName: "MathMLElement",
+    },
+    {
+      name: "annotation-xml",
+      interfaceName: "MathMLElement",
+    },
+    {
+      name: "maction",
+      interfaceName: "MathMLRowElement",
+    },
+    {
+      name: "malignmark",
+      interfaceName: "MathMLElement",
+    },
+    {
       name: "math",
+      interfaceName: "MathMLRowElement",
+    },
+    {
+      name: "merror",
+      interfaceName: "MathMLRowElement",
+    },
+    {
+      name: "mglyph",
       interfaceName: "MathMLElement",
     },
     {
@@ -24,32 +48,28 @@
       interfaceName: "MathMLElement",
     },
     {
-      name: "mtext",
-      interfaceName: "MathMLElement",
+      name: "mphantom",
+      interfaceName: "MathMLRowElement",
+    },
+    {
+      name: "mrow",
+      interfaceName: "MathMLRowElement",
     },
     {
       name: "ms",
       interfaceName: "MathMLElement",
     },
     {
-      name: "mglyph",
-      interfaceName: "MathMLElement",
+      name: "mstyle",
+      interfaceName: "MathMLRowElement",
     },
     {
-      name: "malignmark",
-      interfaceName: "MathMLElement",
-    },
-    {
-      name: "annotation",
-      interfaceName: "MathMLElement",
-    },
-    {
-      name: "annotation-xml",
+      name: "mtext",
       interfaceName: "MathMLElement",
     },
     {
       name: "semantics",
-      interfaceName: "MathMLElement",
+      interfaceName: "MathMLRowElement",
     },
   ]
 }
diff --git a/third_party/blink/renderer/core/messaging/message_channel.idl b/third_party/blink/renderer/core/messaging/message_channel.idl
index 7377c57..ec70529 100644
--- a/third_party/blink/renderer/core/messaging/message_channel.idl
+++ b/third_party/blink/renderer/core/messaging/message_channel.idl
@@ -27,10 +27,10 @@
 // https://html.spec.whatwg.org/C/#message-channels
 
 [
-    CustomConstructor,
     Exposed=(Window,Worker),
     Measure
 ] interface MessageChannel {
+    [Custom] constructor();
     readonly attribute MessagePort port1;
     readonly attribute MessagePort port2;
 };
diff --git a/third_party/blink/renderer/core/mojo/test/mojo_interface_interceptor.idl b/third_party/blink/renderer/core/mojo/test/mojo_interface_interceptor.idl
index e50fcf3..cc6cee1 100644
--- a/third_party/blink/renderer/core/mojo/test/mojo_interface_interceptor.idl
+++ b/third_party/blink/renderer/core/mojo/test/mojo_interface_interceptor.idl
@@ -4,13 +4,11 @@
 
 [
     ActiveScriptWrappable,
-    Constructor(DOMString interfaceName, optional MojoScope scope = "context",
-                optional boolean useBrowserInterfaceBroker = false),
-    ConstructorCallWith=ExecutionContext,
     Exposed=(Window,Worker),
-    RaisesException=Constructor,
     RuntimeEnabled=MojoJSTest
 ] interface MojoInterfaceInterceptor : EventTarget {
+    [CallWith=ExecutionContext, RaisesException] constructor(DOMString interfaceName, optional MojoScope scope = "context",
+                optional boolean useBrowserInterfaceBroker = false);
     [RaisesException] void start();
     void stop();
 
diff --git a/third_party/blink/renderer/core/mojo/test/mojo_interface_request_event.idl b/third_party/blink/renderer/core/mojo/test/mojo_interface_request_event.idl
index 9d96d25..56e759c 100644
--- a/third_party/blink/renderer/core/mojo/test/mojo_interface_request_event.idl
+++ b/third_party/blink/renderer/core/mojo/test/mojo_interface_request_event.idl
@@ -3,9 +3,9 @@
 // found in the LICENSE file.
 
 [
-    Constructor(DOMString type, optional MojoInterfaceRequestEventInit eventInitDict),
     Exposed=(Window,Worker),
     RuntimeEnabled=MojoJSTest
 ] interface MojoInterfaceRequestEvent : Event {
+    constructor(DOMString type, optional MojoInterfaceRequestEventInit eventInitDict);
     readonly attribute MojoHandle handle;
 };
diff --git a/third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.idl b/third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.idl
index 0890b3be..b4ec26f 100644
--- a/third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.idl
+++ b/third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.idl
@@ -5,13 +5,12 @@
 // https://html.spec.whatwg.org/C/#the-offscreencanvas-interface
 
 [
-    Constructor([EnforceRange] unsigned long width, [EnforceRange] unsigned long height),
     Exposed=(Window,Worker),
     Transferable,
-    ConstructorCallWith=ExecutionContext,
     MeasureAs=OffscreenCanvas,
     RuntimeEnabled=SurfaceEmbeddingFeatures
 ] interface OffscreenCanvas : EventTarget {
+    [CallWith=ExecutionContext] constructor([EnforceRange] unsigned long width, [EnforceRange] unsigned long height);
     attribute [EnforceRange] unsigned long width;
     attribute [EnforceRange] unsigned long height;
 
diff --git a/third_party/blink/renderer/core/page/chrome_client_impl.cc b/third_party/blink/renderer/core/page/chrome_client_impl.cc
index 7c38943..9f3834a 100644
--- a/third_party/blink/renderer/core/page/chrome_client_impl.cc
+++ b/third_party/blink/renderer/core/page/chrome_client_impl.cc
@@ -635,7 +635,8 @@
       external_date_time_chooser_->IsShowingDateTimeChooserUI())
     return nullptr;
 
-  external_date_time_chooser_ = ExternalDateTimeChooser::Create(picker_client);
+  external_date_time_chooser_ =
+      MakeGarbageCollected<ExternalDateTimeChooser>(picker_client);
   external_date_time_chooser_->OpenDateTimeChooser(frame, parameters);
   return external_date_time_chooser_;
 }
diff --git a/third_party/blink/renderer/core/page/drag_controller.cc b/third_party/blink/renderer/core/page/drag_controller.cc
index 04bab7a7..cf625ae 100644
--- a/third_party/blink/renderer/core/page/drag_controller.cc
+++ b/third_party/blink/renderer/core/page/drag_controller.cc
@@ -1164,7 +1164,7 @@
   PropertyTreeState property_tree_state =
       frame.View()->GetLayoutView()->FirstFragment().LocalBorderBoxProperties();
   return DataTransfer::CreateDragImageForFrame(
-      frame, opacity, kDoNotRespectImageOrientation, painting_rect.Size(),
+      frame, opacity, kRespectImageOrientation, painting_rect.Size(),
       painting_rect.Location(), builder, property_tree_state);
 }
 
diff --git a/third_party/blink/renderer/core/page/drag_image.cc b/third_party/blink/renderer/core/page/drag_image.cc
index 73227022..0c9fb05 100644
--- a/third_party/blink/renderer/core/page/drag_image.cc
+++ b/third_party/blink/renderer/core/page/drag_image.cc
@@ -265,7 +265,7 @@
                           text_paint);
 
   scoped_refptr<StaticBitmapImage> image = resource_provider->Snapshot();
-  return DragImage::Create(image.get(), kDoNotRespectImageOrientation,
+  return DragImage::Create(image.get(), kRespectImageOrientation,
                            device_scale_factor);
 }
 
diff --git a/third_party/blink/renderer/core/page/drag_image.h b/third_party/blink/renderer/core/page/drag_image.h
index 5a8fd1bd..11d947d 100644
--- a/third_party/blink/renderer/core/page/drag_image.h
+++ b/third_party/blink/renderer/core/page/drag_image.h
@@ -52,7 +52,7 @@
  public:
   static std::unique_ptr<DragImage> Create(
       Image*,
-      RespectImageOrientationEnum = kDoNotRespectImageOrientation,
+      RespectImageOrientationEnum = kRespectImageOrientation,
       float device_scale_factor = 1,
       InterpolationQuality = kInterpolationDefault,
       float opacity = 1,
diff --git a/third_party/blink/renderer/core/page/drag_image_test.cc b/third_party/blink/renderer/core/page/drag_image_test.cc
index a14478b2..ffed015 100644
--- a/third_party/blink/renderer/core/page/drag_image_test.cc
+++ b/third_party/blink/renderer/core/page/drag_image_test.cc
@@ -168,7 +168,7 @@
   scoped_refptr<TestImage> test_image =
       TestImage::Create(SkImage::MakeFromBitmap(test_bitmap));
   std::unique_ptr<DragImage> drag_image = DragImage::Create(
-      test_image.get(), kDoNotRespectImageOrientation, 1, kInterpolationNone);
+      test_image.get(), kRespectImageOrientation, 1, kInterpolationNone);
   ASSERT_TRUE(drag_image);
   drag_image->Scale(2, 2);
   const SkBitmap& drag_bitmap = drag_image->Bitmap();
diff --git a/third_party/blink/renderer/core/page/scrolling/scroll_state.idl b/third_party/blink/renderer/core/page/scrolling/scroll_state.idl
index e1a9006b..6083568 100644
--- a/third_party/blink/renderer/core/page/scrolling/scroll_state.idl
+++ b/third_party/blink/renderer/core/page/scrolling/scroll_state.idl
@@ -5,10 +5,10 @@
 // https://docs.google.com/document/d/1VnvAqeWFG9JFZfgG5evBqrLGDZYRE5w6G5jEDORekPY
 
 [
-  Constructor(optional ScrollStateInit scrollStateInit),
   RuntimeEnabled = ScrollCustomization
 ] interface ScrollState
 {
+    constructor(optional ScrollStateInit scrollStateInit);
     readonly attribute double deltaX;
     readonly attribute double deltaY;
     readonly attribute long positionX;
diff --git a/third_party/blink/renderer/core/page/scrolling/scrolling_test.cc b/third_party/blink/renderer/core/page/scrolling/scrolling_test.cc
index 0c0c827..a0fde57 100644
--- a/third_party/blink/renderer/core/page/scrolling/scrolling_test.cc
+++ b/third_party/blink/renderer/core/page/scrolling/scrolling_test.cc
@@ -343,7 +343,7 @@
 
   // Pointer event handlers should not generate blocking touch action regions.
   cc::Region region = cc_layer->touch_action_region().GetRegionForTouchAction(
-      TouchAction::kTouchActionNone);
+      TouchAction::kNone);
   EXPECT_TRUE(region.IsEmpty());
 }
 
@@ -369,7 +369,7 @@
 
   const auto* cc_layer = MainFrameScrollingContentsLayer();
   cc::Region region = cc_layer->touch_action_region().GetRegionForTouchAction(
-      TouchAction::kTouchActionNone);
+      TouchAction::kNone);
   EXPECT_EQ(region.bounds(), gfx::Rect(8, 8, 100, 100));
 }
 
@@ -397,7 +397,7 @@
 
   // Passive event handlers should not generate blocking touch action regions.
   cc::Region region = cc_layer->touch_action_region().GetRegionForTouchAction(
-      TouchAction::kTouchActionNone);
+      TouchAction::kNone);
   EXPECT_TRUE(region.IsEmpty());
 }
 
@@ -409,7 +409,7 @@
 
   const auto* cc_layer = MainFrameScrollingContentsLayer();
   cc::Region region = cc_layer->touch_action_region().GetRegionForTouchAction(
-      TouchAction::kTouchActionNone);
+      TouchAction::kNone);
   EXPECT_EQ(region.bounds(), gfx::Rect(8, 8, 100, 100));
 }
 
@@ -487,7 +487,7 @@
 
   const auto* cc_layer = ScrollingContentsLayerByDOMElementId("scrollable");
   cc::Region region = cc_layer->touch_action_region().GetRegionForTouchAction(
-      TouchAction::kTouchActionPanX | TouchAction::kTouchActionPanDown);
+      TouchAction::kPanX | TouchAction::kPanDown);
   EXPECT_EQ(region.GetRegionComplexity(), 1);
   EXPECT_EQ(region.bounds(), gfx::Rect(0, 0, 1000, 1000));
 }
@@ -500,17 +500,17 @@
   const auto* cc_layer = ScrollingContentsLayerByDOMElementId("scrollable");
 
   cc::Region region = cc_layer->touch_action_region().GetRegionForTouchAction(
-      TouchAction::kTouchActionPanDown | TouchAction::kTouchActionPanX);
+      TouchAction::kPanDown | TouchAction::kPanX);
   EXPECT_EQ(region.GetRegionComplexity(), 1);
   EXPECT_EQ(region.bounds(), gfx::Rect(0, 0, 100, 100));
 
   region = cc_layer->touch_action_region().GetRegionForTouchAction(
-      TouchAction::kTouchActionPanDown | TouchAction::kTouchActionPanRight);
+      TouchAction::kPanDown | TouchAction::kPanRight);
   EXPECT_EQ(region.GetRegionComplexity(), 1);
   EXPECT_EQ(region.bounds(), gfx::Rect(0, 0, 50, 50));
 
   region = cc_layer->touch_action_region().GetRegionForTouchAction(
-      TouchAction::kTouchActionPanDown);
+      TouchAction::kPanDown);
   EXPECT_EQ(region.GetRegionComplexity(), 1);
   EXPECT_EQ(region.bounds(), gfx::Rect(0, 100, 100, 100));
 }
@@ -547,7 +547,7 @@
   const auto* cc_layer = ScrollingContentsLayerByDOMElementId("scrollable");
 
   cc::Region region = cc_layer->touch_action_region().GetRegionForTouchAction(
-      TouchAction::kTouchActionPanX);
+      TouchAction::kPanX);
   EXPECT_EQ(region.GetRegionComplexity(), 2);
   EXPECT_EQ(region.bounds(), gfx::Rect(5, 5, 150, 100));
 }
@@ -584,7 +584,7 @@
   const auto* cc_layer = ScrollingContentsLayerByDOMElementId("scrollable");
 
   cc::Region region = cc_layer->touch_action_region().GetRegionForTouchAction(
-      TouchAction::kTouchActionPanX);
+      TouchAction::kPanX);
   EXPECT_EQ(region.GetRegionComplexity(), 2);
   EXPECT_EQ(region.bounds(), gfx::Rect(5, 5, 150, 100));
 
@@ -592,7 +592,7 @@
   scrollable->setAttribute("style", "touch-action: none", ASSERT_NO_EXCEPTION);
   ForceFullCompositingUpdate();
   region = cc_layer->touch_action_region().GetRegionForTouchAction(
-      TouchAction::kTouchActionPanX);
+      TouchAction::kPanX);
   EXPECT_TRUE(region.IsEmpty());
 }
 
@@ -621,10 +621,10 @@
   const auto* cc_layer = MainFrameScrollingContentsLayer();
 
   cc::Region region = cc_layer->touch_action_region().GetRegionForTouchAction(
-      TouchAction::kTouchActionPanX);
+      TouchAction::kPanX);
   EXPECT_EQ(region.bounds(), gfx::Rect(8, 8, 150, 50));
   region = cc_layer->touch_action_region().GetRegionForTouchAction(
-      TouchAction::kTouchActionNone);
+      TouchAction::kNone);
   EXPECT_TRUE(region.IsEmpty());
 
   Element* ancestor = GetFrame()->GetDocument()->getElementById("ancestor");
@@ -632,13 +632,13 @@
   ForceFullCompositingUpdate();
 
   region = cc_layer->touch_action_region().GetRegionForTouchAction(
-      TouchAction::kTouchActionPanY);
+      TouchAction::kPanY);
   EXPECT_EQ(region.bounds(), gfx::Rect(8, 8, 100, 100));
   region = cc_layer->touch_action_region().GetRegionForTouchAction(
-      TouchAction::kTouchActionPanX);
+      TouchAction::kPanX);
   EXPECT_TRUE(region.IsEmpty());
   region = cc_layer->touch_action_region().GetRegionForTouchAction(
-      TouchAction::kTouchActionNone);
+      TouchAction::kNone);
   EXPECT_EQ(region.bounds(), gfx::Rect(8, 8, 150, 50));
 }
 
@@ -660,7 +660,7 @@
   const auto* cc_layer = MainFrameScrollingContentsLayer();
 
   cc::Region region = cc_layer->touch_action_region().GetRegionForTouchAction(
-      TouchAction::kTouchActionNone);
+      TouchAction::kNone);
   EXPECT_EQ(region.bounds(), gfx::Rect(8, 8, 100, 100));
 }
 
@@ -673,7 +673,7 @@
   const auto* cc_layer = MainFrameScrollingContentsLayer();
 
   cc::Region region = cc_layer->touch_action_region().GetRegionForTouchAction(
-      TouchAction::kTouchActionNone);
+      TouchAction::kNone);
   EXPECT_EQ(region.bounds(), gfx::Rect(8, 8, 80, 50));
 }
 
@@ -686,7 +686,7 @@
   const auto* cc_layer = MainFrameScrollingContentsLayer();
 
   cc::Region region = cc_layer->touch_action_region().GetRegionForTouchAction(
-      TouchAction::kTouchActionNone);
+      TouchAction::kNone);
   EXPECT_EQ(region.bounds(), gfx::Rect(292, 8, 20, 80));
 }
 
@@ -698,12 +698,12 @@
   const auto* cc_layer = ScrollingContentsLayerByDOMElementId("scrollable");
 
   cc::Region region = cc_layer->touch_action_region().GetRegionForTouchAction(
-      TouchAction::kTouchActionNone);
+      TouchAction::kNone);
   EXPECT_EQ(region.GetRegionComplexity(), 1);
   EXPECT_EQ(region.bounds(), gfx::Rect(0, 0, 100, 100));
 
   region = cc_layer->touch_action_region().GetRegionForTouchAction(
-      TouchAction::kTouchActionPanY);
+      TouchAction::kPanY);
   EXPECT_EQ(region.GetRegionComplexity(), 2);
   EXPECT_EQ(region.bounds(), gfx::Rect(0, 0, 1000, 1000));
 }
@@ -735,7 +735,7 @@
       ScrollingContentsLayerByDOMElementId("scrollable");
   cc::Region region =
       scrolling_contents_layer->touch_action_region().GetRegionForTouchAction(
-          TouchAction::kTouchActionPanY);
+          TouchAction::kPanY);
   EXPECT_EQ(region.bounds(), gfx::Rect(0, 0, 50, 150));
 
   const auto* container_layer =
@@ -743,7 +743,7 @@
           ? MainFrameScrollingContentsLayer()
           : LayerByDOMElementId("scrollable");
   region = container_layer->touch_action_region().GetRegionForTouchAction(
-      TouchAction::kTouchActionPanY);
+      TouchAction::kPanY);
   EXPECT_EQ(region.bounds(),
             RuntimeEnabledFeatures::CompositeAfterPaintEnabled()
                 ? gfx::Rect(8, 8, 100, 100)
@@ -772,11 +772,11 @@
       FrameScrollingContentsLayer(*child_frame->GetFrame());
   cc::Region region_child_frame =
       child_cc_layer->touch_action_region().GetRegionForTouchAction(
-          TouchAction::kTouchActionNone);
+          TouchAction::kNone);
   cc::Region region_main_frame =
       MainFrameScrollingContentsLayer()
           ->touch_action_region()
-          .GetRegionForTouchAction(TouchAction::kTouchActionNone);
+          .GetRegionForTouchAction(TouchAction::kNone);
   EXPECT_TRUE(region_main_frame.bounds().IsEmpty());
   EXPECT_FALSE(region_child_frame.bounds().IsEmpty());
   // We only check for the content size for verification as the offset is 0x0
@@ -806,7 +806,7 @@
   // The touch action region should include the entire frame, even though the
   // document is smaller than the frame.
   cc::Region region = cc_layer->touch_action_region().GetRegionForTouchAction(
-      TouchAction::kTouchActionNone);
+      TouchAction::kNone);
   EXPECT_EQ(region.bounds(), gfx::Rect(0, 0, 320, 240));
 }
 
@@ -825,7 +825,7 @@
 
   // Initially there are no touch action regions.
   auto region = cc_layer->touch_action_region().GetRegionForTouchAction(
-      TouchAction::kTouchActionNone);
+      TouchAction::kNone);
   EXPECT_TRUE(region.IsEmpty());
 
   // Adding a blocking window event handler should create a touch action region.
@@ -837,7 +837,7 @@
                                             listener, resolved_options);
   ForceFullCompositingUpdate();
   region = cc_layer->touch_action_region().GetRegionForTouchAction(
-      TouchAction::kTouchActionNone);
+      TouchAction::kNone);
   EXPECT_FALSE(region.IsEmpty());
 
   // Removing the window event handler also removes the blocking touch action
@@ -845,7 +845,7 @@
   GetFrame()->DomWindow()->RemoveAllEventListeners();
   ForceFullCompositingUpdate();
   region = cc_layer->touch_action_region().GetRegionForTouchAction(
-      TouchAction::kTouchActionNone);
+      TouchAction::kNone);
   EXPECT_TRUE(region.IsEmpty());
 }
 
@@ -1599,7 +1599,7 @@
 
   auto* cc_layer = ScrollingContentsLayerByDOMElementId("scroller");
   cc::Region region = cc_layer->touch_action_region().GetRegionForTouchAction(
-      TouchAction::kTouchActionNone);
+      TouchAction::kNone);
   EXPECT_EQ(region.bounds(), gfx::Rect(0, 5000, 200, 100));
 }
 
@@ -1647,7 +1647,7 @@
 
   const auto* cc_layer = LayerByDOMElementId("canvas");
   cc::Region region = cc_layer->touch_action_region().GetRegionForTouchAction(
-      TouchAction::kTouchActionNone);
+      TouchAction::kNone);
   EXPECT_EQ(region.bounds(), gfx::Rect(0, 0, 400, 400));
 }
 
diff --git a/third_party/blink/renderer/core/paint/background_image_geometry.cc b/third_party/blink/renderer/core/paint/background_image_geometry.cc
index a92ade1..15aed13 100644
--- a/third_party/blink/renderer/core/paint/background_image_geometry.cc
+++ b/third_party/blink/renderer/core/paint/background_image_geometry.cc
@@ -756,7 +756,8 @@
                                          : unsnapped_positioning_area_size;
   LayoutSize image_intrinsic_size(image->ImageSize(
       positioning_box_.GetDocument(),
-      positioning_box_.StyleRef().EffectiveZoom(), positioning_area_size));
+      positioning_box_.StyleRef().EffectiveZoom(), positioning_area_size,
+      LayoutObject::ShouldRespectImageOrientation(&box_)));
   switch (type) {
     case EFillSizeType::kSizeLength: {
       tile_size_ = positioning_area_size;
diff --git a/third_party/blink/renderer/core/paint/box_model_object_painter.cc b/third_party/blink/renderer/core/paint/box_model_object_painter.cc
index 20136ea..99a2f01 100644
--- a/third_party/blink/renderer/core/paint/box_model_object_painter.cc
+++ b/third_party/blink/renderer/core/paint/box_model_object_painter.cc
@@ -128,6 +128,7 @@
   return BoxPainterBase::FillLayerInfo(
       box_model_.GetDocument(), box_model_.StyleRef(),
       box_model_.HasOverflowClip(), color, bg_layer, bleed_avoidance,
+      LayoutObject::ShouldRespectImageOrientation(&box_model_),
       (flow_box_ ? flow_box_->IncludeLogicalLeftEdge() : true),
       (flow_box_ ? flow_box_->IncludeLogicalRightEdge() : true),
       box_model_.IsInline());
diff --git a/third_party/blink/renderer/core/paint/box_painter.cc b/third_party/blink/renderer/core/paint/box_painter.cc
index 56c647e..e40f63a 100644
--- a/third_party/blink/renderer/core/paint/box_painter.cc
+++ b/third_party/blink/renderer/core/paint/box_painter.cc
@@ -303,7 +303,7 @@
     return;
 
   auto touch_action = layout_box_.EffectiveAllowedTouchAction();
-  if (touch_action == TouchAction::kTouchActionAuto)
+  if (touch_action == TouchAction::kAuto)
     return;
 
   HitTestDisplayItem::Record(
diff --git a/third_party/blink/renderer/core/paint/box_painter_base.cc b/third_party/blink/renderer/core/paint/box_painter_base.cc
index 597dbee..3acd44b 100644
--- a/third_party/blink/renderer/core/paint/box_painter_base.cc
+++ b/third_party/blink/renderer/core/paint/box_painter_base.cc
@@ -22,6 +22,7 @@
 #include "third_party/blink/renderer/core/style/shadow_list.h"
 #include "third_party/blink/renderer/core/style/style_fetched_image.h"
 #include "third_party/blink/renderer/platform/geometry/layout_rect.h"
+#include "third_party/blink/renderer/platform/graphics/bitmap_image.h"
 #include "third_party/blink/renderer/platform/graphics/graphics_context_state_saver.h"
 #include "third_party/blink/renderer/platform/graphics/paint/paint_controller.h"
 #include "third_party/blink/renderer/platform/graphics/scoped_interpolation_quality.h"
@@ -274,11 +275,13 @@
     Color bg_color,
     const FillLayer& layer,
     BackgroundBleedAvoidance bleed_avoidance,
+    RespectImageOrientationEnum respect_image_orientation,
     bool include_left,
     bool include_right,
     bool is_inline)
     : image(layer.GetImage()),
       color(bg_color),
+      respect_image_orientation(respect_image_orientation),
       include_left_edge(include_left),
       include_right_edge(include_right),
       is_bottom_layer(!layer.Next()),
@@ -369,6 +372,18 @@
                    subset.Height() / scale.Height());
 }
 
+FloatRect CorrectSrcRectForImageOrientation(BitmapImage* image,
+                                            FloatRect original_rect) {
+  ImageOrientation orientation = image->CurrentFrameOrientation();
+  if (orientation != kDefaultImageOrientation) {
+    AffineTransform forward_map =
+        orientation.TransformFromDefault(original_rect.Size());
+    AffineTransform inverse_map = forward_map.Inverse();
+    return inverse_map.MapRect(original_rect);
+  }
+  return original_rect;
+}
+
 // The unsnapped_subset_size should be the target painting area implied by the
 //   content, without any snapping applied. It is necessary to correctly
 //   compute the subset of the source image to paint into the destination.
@@ -385,7 +400,8 @@
                          const FloatSize& tile_size,
                          SkBlendMode op,
                          const FloatSize& repeat_spacing,
-                         bool has_filter_property) {
+                         bool has_filter_property,
+                         RespectImageOrientationEnum respect_orientation) {
   DCHECK(!tile_size.IsEmpty());
 
   // Use the intrinsic size of the image if it has one, otherwise force the
@@ -419,9 +435,19 @@
     // would either snap only if close to integral, or move snapping
     // calculations up the stack.
     visible_src_rect = FloatRect(RoundedIntRect(visible_src_rect));
+
+    // When respecting image orientation, the drawing code expects the source
+    // rect to be in the unrotated image space, but we have computed it here in
+    // the rotated space in order to position and size the background. Undo the
+    // src rect rotation if necessaary.
+    if (respect_orientation && image->IsBitmapImage()) {
+      visible_src_rect = CorrectSrcRectForImageOrientation(ToBitmapImage(image),
+                                                           visible_src_rect);
+    }
+
     context.DrawImage(image, Image::kSyncDecode, snapped_paint_rect,
                       &visible_src_rect, has_filter_property, op,
-                      kDoNotRespectImageOrientation);
+                      respect_orientation);
     return;
   }
 
@@ -431,7 +457,8 @@
   // it into the snapped_dest_rect using phase from one_tile_rect and the
   // given repeat spacing. Note the phase is already scaled.
   context.DrawImageTiled(image, snapped_paint_rect, tile_rect, scale,
-                         one_tile_rect.Location(), repeat_spacing, op);
+                         one_tile_rect.Location(), repeat_spacing, op,
+                         respect_orientation);
 }
 
 inline bool PaintFastBottomLayer(Node* node,
@@ -528,7 +555,11 @@
   // intrinsic size is the requested tile size.
   bool has_intrinsic_size = image->HasIntrinsicSize();
   const FloatSize intrinsic_tile_size =
-      !has_intrinsic_size ? image_tile.Size() : FloatSize(image->Size());
+      !has_intrinsic_size
+          ? image_tile.Size()
+          : FloatSize(info.respect_image_orientation && image->IsBitmapImage()
+                          ? ToBitmapImage(image)->SizeRespectingOrientation()
+                          : image->Size());
   // Subset computation needs the same location as was used with
   // ComputePhaseForBackground above, but needs the unsnapped destination
   // size to correctly calculate sprite subsets in the presence of zoom. But if
@@ -550,6 +581,15 @@
   if (src_rect.IsEmpty())
     src_rect = unrounded_subset;
 
+  // When respecting image orientation, the drawing code expects the source rect
+  // to be in the unrotated image space, but we have computed it here in the
+  // rotated space in order to position and size the background. Undo the src
+  // rect rotation if necessaary.
+  if (info.respect_image_orientation && image->IsBitmapImage()) {
+    src_rect =
+        CorrectSrcRectForImageOrientation(ToBitmapImage(image), src_rect);
+  }
+
   TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "PaintImage",
                "data",
                inspector_paint_image_event::Data(
@@ -561,7 +601,7 @@
   context.DrawImageRRect(
       image, Image::kSyncDecode, image_border, src_rect,
       node && node->ComputedStyleRef().HasFilterInducingProperty(),
-      composite_op);
+      composite_op, info.respect_image_orientation);
 
   if (info.image && info.image->IsImageResource()) {
     PaintTimingDetector::NotifyBackgroundImagePaint(
@@ -691,7 +731,8 @@
         FloatRect(geometry.SnappedDestRect()), geometry.Phase(),
         FloatSize(geometry.TileSize()), composite_op,
         FloatSize(geometry.SpaceSize()),
-        node && node->ComputedStyleRef().HasFilterInducingProperty());
+        node && node->ComputedStyleRef().HasFilterInducingProperty(),
+        info.respect_image_orientation);
     if (info.image && info.image->IsImageResource()) {
       PaintTimingDetector::NotifyBackgroundImagePaint(
           node, image, To<StyleFetchedImage>(info.image.Get()),
diff --git a/third_party/blink/renderer/core/paint/box_painter_base.h b/third_party/blink/renderer/core/paint/box_painter_base.h
index 146d65c..f5f1be3 100644
--- a/third_party/blink/renderer/core/paint/box_painter_base.h
+++ b/third_party/blink/renderer/core/paint/box_painter_base.h
@@ -10,6 +10,7 @@
 #include "third_party/blink/renderer/core/style/style_image.h"
 #include "third_party/blink/renderer/platform/geometry/layout_rect_outsets.h"
 #include "third_party/blink/renderer/platform/graphics/color.h"
+#include "third_party/blink/renderer/platform/graphics/image_orientation.h"
 #include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
 #include "third_party/skia/include/core/SkBlendMode.h"
 
@@ -112,6 +113,7 @@
                   Color bg_color,
                   const FillLayer&,
                   BackgroundBleedAvoidance,
+                  RespectImageOrientationEnum,
                   bool include_left_edge,
                   bool include_right_edge,
                   bool is_inline);
@@ -122,6 +124,7 @@
     Member<StyleImage> image;
     Color color;
 
+    RespectImageOrientationEnum respect_image_orientation;
     bool include_left_edge;
     bool include_right_edge;
     bool is_bottom_layer;
diff --git a/third_party/blink/renderer/core/paint/image_element_timing.cc b/third_party/blink/renderer/core/paint/image_element_timing.cc
index 47b371c..ac6ec504 100644
--- a/third_party/blink/renderer/core/paint/image_element_timing.cc
+++ b/third_party/blink/renderer/core/paint/image_element_timing.cc
@@ -134,6 +134,9 @@
   if (!layout_object.HasNonZeroEffectiveOpacity())
     return;
 
+  RespectImageOrientationEnum respect_orientation =
+      LayoutObject::ShouldRespectImageOrientation(&layout_object);
+
   FloatRect intersection_rect = ElementTimingUtils::ComputeIntersectionRect(
       frame, layout_object.FirstFragment().VisualRect(),
       current_paint_chunk_properties);
@@ -162,8 +165,7 @@
       performance->AddElementTiming(
           ImagePaintString(), url.GetString(), intersection_rect,
           base::TimeTicks(), load_time, attr,
-          cached_image.IntrinsicSize(kDoNotRespectImageOrientation), id,
-          element);
+          cached_image.IntrinsicSize(respect_orientation), id, element);
     }
     return;
   }
@@ -177,7 +179,7 @@
                                 : url.GetString();
   element_timings_.emplace_back(MakeGarbageCollected<ElementTimingInfo>(
       image_url, intersection_rect, load_time, attr,
-      cached_image.IntrinsicSize(kDoNotRespectImageOrientation), id, element));
+      cached_image.IntrinsicSize(respect_orientation), id, element));
   // Only queue a swap promise when |element_timings_| was empty. All of the
   // records in |element_timings_| will be processed when the promise succeeds
   // or fails, and at that time the vector is cleared.
diff --git a/third_party/blink/renderer/core/paint/inline_flow_box_painter.cc b/third_party/blink/renderer/core/paint/inline_flow_box_painter.cc
index 4c14b9f..5d91667 100644
--- a/third_party/blink/renderer/core/paint/inline_flow_box_painter.cc
+++ b/third_party/blink/renderer/core/paint/inline_flow_box_painter.cc
@@ -345,7 +345,7 @@
     return;
 
   auto touch_action = layout_object->EffectiveAllowedTouchAction();
-  if (touch_action == TouchAction::kTouchActionAuto)
+  if (touch_action == TouchAction::kAuto)
     return;
 
   HitTestDisplayItem::Record(
diff --git a/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.cc b/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.cc
index 450fd87..d76cfd2 100644
--- a/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.cc
+++ b/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.cc
@@ -234,6 +234,17 @@
   return *border_edges_;
 }
 
+PhysicalRect NGBoxFragmentPainter::SelfInkOverflow() const {
+  if (paint_fragment_)
+    return paint_fragment_->SelfInkOverflow();
+  if (box_item_)
+    return box_item_->SelfInkOverflow();
+  const NGPhysicalFragment& fragment = PhysicalFragment();
+  DCHECK(fragment.IsBox() && !fragment.IsInlineBox());
+  return ToLayoutBox(fragment.GetLayoutObject())
+      ->PhysicalSelfVisualOverflowRect();
+}
+
 void NGBoxFragmentPainter::Paint(const PaintInfo& paint_info) {
   if (PhysicalFragment().IsAtomicInline() &&
       !box_fragment_.HasSelfPaintingLayer())
@@ -357,7 +368,7 @@
 
   if (paint_phase == PaintPhase::kForeground &&
       paint_info.ShouldAddUrlMetadata()) {
-    NGFragmentPainter(box_fragment_, paint_fragment_)
+    NGFragmentPainter(box_fragment_, GetDisplayItemClient())
         .AddURLRectIfNeeded(paint_info, paint_offset);
   }
 
@@ -416,7 +427,7 @@
   }
 
   if (ShouldPaintSelfOutline(paint_phase)) {
-    NGFragmentPainter(box_fragment_, paint_fragment_)
+    NGFragmentPainter(box_fragment_, GetDisplayItemClient())
         .PaintOutline(paint_info, paint_offset);
   }
 
@@ -1427,6 +1438,7 @@
   return BoxPainterBase::FillLayerInfo(
       fragment.GetLayoutObject()->GetDocument(), fragment.Style(),
       fragment.HasOverflowClip(), color, bg_layer, bleed_avoidance,
+      LayoutObject::ShouldRespectImageOrientation(fragment.GetLayoutObject()),
       border_edges.line_left, border_edges.line_right,
       fragment.GetLayoutObject()->IsInline());
 }
@@ -1499,7 +1511,7 @@
     PhysicalRect bounds_rect(physical_offset, size);
     if (UNLIKELY(hit_test.result->GetHitTestRequest().GetType() &
                  HitTestRequest::kHitTestVisualOverflow)) {
-      bounds_rect = paint_fragment_->SelfInkOverflow();
+      bounds_rect = SelfInkOverflow();
       bounds_rect.Move(physical_offset);
     }
     // TODO(kojii): Don't have good explanation why only inline box needs to
diff --git a/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.h b/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.h
index cdfffe8..a946b9e 100644
--- a/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.h
+++ b/third_party/blink/renderer/core/paint/ng/ng_box_fragment_painter.h
@@ -240,6 +240,7 @@
     return display_item_client_;
   }
   const NGBorderEdges& BorderEdges() const;
+  PhysicalRect SelfInkOverflow() const;
 
   const NGPhysicalBoxFragment& box_fragment_;
   const DisplayItemClient& display_item_client_;
diff --git a/third_party/blink/renderer/core/paint/ng/ng_fragment_painter.cc b/third_party/blink/renderer/core/paint/ng/ng_fragment_painter.cc
index 3fcbfa6..d31a76dd 100644
--- a/third_party/blink/renderer/core/paint/ng/ng_fragment_painter.cc
+++ b/third_party/blink/renderer/core/paint/ng/ng_fragment_painter.cc
@@ -96,7 +96,7 @@
     return false;
 
   auto touch_action = fragment.EffectiveAllowedTouchAction();
-  if (touch_action == TouchAction::kTouchActionAuto)
+  if (touch_action == TouchAction::kAuto)
     return false;
 
   return true;
diff --git a/third_party/blink/renderer/core/paint/ng/ng_fragment_painter.h b/third_party/blink/renderer/core/paint/ng/ng_fragment_painter.h
index 5d7cee1a..3546dde 100644
--- a/third_party/blink/renderer/core/paint/ng/ng_fragment_painter.h
+++ b/third_party/blink/renderer/core/paint/ng/ng_fragment_painter.h
@@ -22,8 +22,8 @@
 
  public:
   NGFragmentPainter(const NGPhysicalBoxFragment& box,
-                    const NGPaintFragment* paint_fragment)
-      : box_fragment_(box), paint_fragment_(paint_fragment) {}
+                    const DisplayItemClient& display_item_client)
+      : box_fragment_(box), display_item_client_(display_item_client) {}
 
   void PaintOutline(const PaintInfo&, const PhysicalOffset& paint_offset);
 
@@ -37,13 +37,11 @@
     return box_fragment_;
   }
   const DisplayItemClient& GetDisplayItemClient() const {
-    if (paint_fragment_)
-      return *paint_fragment_;
-    return *PhysicalFragment().GetLayoutObject();
+    return display_item_client_;
   }
 
   const NGPhysicalBoxFragment& box_fragment_;
-  const NGPaintFragment* paint_fragment_;
+  const DisplayItemClient& display_item_client_;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/paint/ng/ng_inline_box_fragment_painter.cc b/third_party/blink/renderer/core/paint/ng/ng_inline_box_fragment_painter.cc
index dda54a4..677abb96 100644
--- a/third_party/blink/renderer/core/paint/ng/ng_inline_box_fragment_painter.cc
+++ b/third_party/blink/renderer/core/paint/ng/ng_inline_box_fragment_painter.cc
@@ -334,7 +334,6 @@
     return;
   }
 
-  DCHECK(layout_inline.ShouldCreateBoxFragment());
   NGInlineCursor cursor(*block_flow);
   cursor.MoveTo(layout_inline);
   for (; cursor; cursor.MoveToNextForSameLayoutObject()) {
diff --git a/third_party/blink/renderer/core/paint/nine_piece_image_painter.cc b/third_party/blink/renderer/core/paint/nine_piece_image_painter.cc
index b903af4b..ca91cbaf 100644
--- a/third_party/blink/renderer/core/paint/nine_piece_image_painter.cc
+++ b/third_party/blink/renderer/core/paint/nine_piece_image_painter.cc
@@ -177,8 +177,9 @@
   // is one. For generated images, the actual image data (gradient stops, etc.)
   // are scaled to effective zoom instead so we must take care not to cause
   // scale of them again.
-  IntSize image_size = RoundedIntSize(style_image->ImageSize(
-      document, 1, border_image_rect.size.ToLayoutSize()));
+  IntSize image_size = RoundedIntSize(
+      style_image->ImageSize(document, 1, border_image_rect.size.ToLayoutSize(),
+                             kRespectImageOrientation));
   scoped_refptr<Image> image =
       style_image->GetImage(observer, document, style, FloatSize(image_size));
   if (!image)
diff --git a/third_party/blink/renderer/core/paint/paint_layer.cc b/third_party/blink/renderer/core/paint/paint_layer.cc
index 2b40f927..83e9b863 100644
--- a/third_party/blink/renderer/core/paint/paint_layer.cc
+++ b/third_party/blink/renderer/core/paint/paint_layer.cc
@@ -92,6 +92,7 @@
 #include "third_party/blink/renderer/platform/graphics/compositor_filter_operations.h"
 #include "third_party/blink/renderer/platform/graphics/filters/filter.h"
 #include "third_party/blink/renderer/platform/graphics/paint/geometry_mapper.h"
+#include "third_party/blink/renderer/platform/heap/heap.h"
 #include "third_party/blink/renderer/platform/instrumentation/tracing/trace_event.h"
 #include "third_party/blink/renderer/platform/runtime_enabled_features.h"
 #include "third_party/blink/renderer/platform/transforms/transformation_matrix.h"
@@ -1639,7 +1640,7 @@
 
 void PaintLayer::UpdateScrollableArea() {
   if (RequiresScrollableArea() && !scrollable_area_) {
-    scrollable_area_ = PaintLayerScrollableArea::Create(*this);
+    scrollable_area_ = MakeGarbageCollected<PaintLayerScrollableArea>(*this);
     if (Compositor()) {
       Compositor()->SetNeedsCompositingUpdate(kCompositingUpdateRebuildTree);
     }
diff --git a/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.cc b/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.cc
index 5cf0846..5d19ecd 100644
--- a/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.cc
+++ b/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.cc
@@ -99,6 +99,7 @@
 #include "third_party/blink/renderer/core/scroll/smooth_scroll_sequencer.h"
 #include "third_party/blink/renderer/platform/graphics/graphics_layer.h"
 #include "third_party/blink/renderer/platform/graphics/paint/drawing_recorder.h"
+#include "third_party/blink/renderer/platform/heap/heap.h"
 
 namespace blink {
 
@@ -2575,7 +2576,7 @@
       style_source.StyleRef().HasPseudoElementStyle(kPseudoIdScrollbar);
   if (has_custom_scrollbar_style) {
     DCHECK(style_source.GetNode() && style_source.GetNode()->IsElementNode());
-    scrollbar = CustomScrollbar::CreateCustomScrollbar(
+    scrollbar = MakeGarbageCollected<CustomScrollbar>(
         ScrollableArea(), orientation, To<Element>(style_source.GetNode()));
   } else {
     ScrollbarControlSize scrollbar_size = kRegularScrollbar;
diff --git a/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h b/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h
index c5a4495f..3f43bcec 100644
--- a/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h
+++ b/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h
@@ -246,10 +246,6 @@
 
   // FIXME: We should pass in the LayoutBox but this opens a window
   // for crashers during PaintLayer setup (see crbug.com/368062).
-  static PaintLayerScrollableArea* Create(PaintLayer& layer) {
-    return MakeGarbageCollected<PaintLayerScrollableArea>(layer);
-  }
-
   explicit PaintLayerScrollableArea(PaintLayer&);
   ~PaintLayerScrollableArea() override;
 
diff --git a/third_party/blink/renderer/core/paint/svg_image_painter.cc b/third_party/blink/renderer/core/paint/svg_image_painter.cc
index de9deb7..bfb7588 100644
--- a/third_party/blink/renderer/core/paint/svg_image_painter.cc
+++ b/third_party/blink/renderer/core/paint/svg_image_painter.cc
@@ -64,10 +64,9 @@
   if (image_viewport_size.IsEmpty())
     return;
 
-  scoped_refptr<Image> image =
-      image_resource->GetImage(ExpandedIntSize(image_viewport_size));
+  scoped_refptr<Image> image = image_resource->GetImage(image_viewport_size);
   FloatRect dest_rect = layout_svg_image_.ObjectBoundingBox();
-  FloatRect src_rect(0, 0, image->width(), image->height());
+  FloatRect src_rect(FloatPoint(), image->SizeAsFloat());
 
   auto* image_element = To<SVGImageElement>(layout_svg_image_.GetElement());
   image_element->preserveAspectRatio()->CurrentValue()->TransformRect(dest_rect,
@@ -121,7 +120,7 @@
     return ToSVGImage(image)->ConcreteObjectSize(
         layout_svg_image_.ObjectBoundingBox().Size());
   }
-  return FloatSize(image->Size());
+  return image->SizeAsFloat();
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/paint/svg_model_object_painter.cc b/third_party/blink/renderer/core/paint/svg_model_object_painter.cc
index dc21e16..35c7a47 100644
--- a/third_party/blink/renderer/core/paint/svg_model_object_painter.cc
+++ b/third_party/blink/renderer/core/paint/svg_model_object_painter.cc
@@ -39,7 +39,7 @@
     return;
 
   auto touch_action = layout_svg_model_object.EffectiveAllowedTouchAction();
-  if (touch_action == TouchAction::kTouchActionAuto)
+  if (touch_action == TouchAction::kAuto)
     return;
 
   auto rect =
diff --git a/third_party/blink/renderer/core/paint/svg_text_painter.cc b/third_party/blink/renderer/core/paint/svg_text_painter.cc
index 8398f6a..c3c501d 100644
--- a/third_party/blink/renderer/core/paint/svg_text_painter.cc
+++ b/third_party/blink/renderer/core/paint/svg_text_painter.cc
@@ -48,7 +48,7 @@
     return;
 
   auto touch_action = layout_svg_text_.EffectiveAllowedTouchAction();
-  if (touch_action == TouchAction::kTouchActionAuto)
+  if (touch_action == TouchAction::kAuto)
     return;
 
   auto rect = LayoutRect(layout_svg_text_.VisualRectInLocalSVGCoordinates());
diff --git a/third_party/blink/renderer/core/paint/table_row_painter.cc b/third_party/blink/renderer/core/paint/table_row_painter.cc
index 384e9a72..2e90f42 100644
--- a/third_party/blink/renderer/core/paint/table_row_painter.cc
+++ b/third_party/blink/renderer/core/paint/table_row_painter.cc
@@ -80,7 +80,7 @@
     return;
 
   auto touch_action = layout_table_row_.EffectiveAllowedTouchAction();
-  if (touch_action == TouchAction::kTouchActionAuto)
+  if (touch_action == TouchAction::kAuto)
     return;
 
   auto rect = layout_table_row_.PhysicalBorderBoxRect();
diff --git a/third_party/blink/renderer/core/resize_observer/resize_observer.idl b/third_party/blink/renderer/core/resize_observer/resize_observer.idl
index 8e09fdd..7d49c5c 100644
--- a/third_party/blink/renderer/core/resize_observer/resize_observer.idl
+++ b/third_party/blink/renderer/core/resize_observer/resize_observer.idl
@@ -11,10 +11,9 @@
 [
     Exposed=Window,
     ActiveScriptWrappable,
-    Constructor(ResizeObserverCallback callback),
-    MeasureAs=ResizeObserver_Constructor,
-    ConstructorCallWith=Document
+    MeasureAs=ResizeObserver_Constructor
 ] interface ResizeObserver {
+    [CallWith=Document] constructor(ResizeObserverCallback callback);
     void observe(Element target);
     void unobserve(Element target);
     void disconnect();
diff --git a/third_party/blink/renderer/core/streams/byte_length_queuing_strategy.idl b/third_party/blink/renderer/core/streams/byte_length_queuing_strategy.idl
index 83f2084..7a745a9 100644
--- a/third_party/blink/renderer/core/streams/byte_length_queuing_strategy.idl
+++ b/third_party/blink/renderer/core/streams/byte_length_queuing_strategy.idl
@@ -6,10 +6,9 @@
 
 [
     Exposed=(Window,Worker,Worklet),
-    ConstructorCallWith=ScriptState,
-    Constructor([PermissiveDictionaryConversion] QueuingStrategyInit init),
     MeasureAs=ByteLengthQueuingStrategyConstructor
 ] interface ByteLengthQueuingStrategy {
+    [CallWith=ScriptState] constructor([PermissiveDictionaryConversion] QueuingStrategyInit init);
     [CallWith=ScriptState] readonly attribute any highWaterMark;
 
     // size is an accessor that returns a function.
diff --git a/third_party/blink/renderer/core/streams/count_queuing_strategy.idl b/third_party/blink/renderer/core/streams/count_queuing_strategy.idl
index fe18a1e0..321dcd6 100644
--- a/third_party/blink/renderer/core/streams/count_queuing_strategy.idl
+++ b/third_party/blink/renderer/core/streams/count_queuing_strategy.idl
@@ -6,10 +6,9 @@
 
 [
     Exposed=(Window,Worker,Worklet),
-    ConstructorCallWith=ScriptState,
-    Constructor([PermissiveDictionaryConversion] QueuingStrategyInit init),
     MeasureAs=CountQueuingStrategyConstructor
 ] interface CountQueuingStrategy {
+    [CallWith=ScriptState] constructor([PermissiveDictionaryConversion] QueuingStrategyInit init);
     [CallWith=ScriptState] readonly attribute any highWaterMark;
 
     // size is an accessor that returns a function.
diff --git a/third_party/blink/renderer/core/streams/readable_stream.idl b/third_party/blink/renderer/core/streams/readable_stream.idl
index 08da2f75..785e394 100644
--- a/third_party/blink/renderer/core/streams/readable_stream.idl
+++ b/third_party/blink/renderer/core/streams/readable_stream.idl
@@ -4,11 +4,9 @@
 
 // https://streams.spec.whatwg.org/#rs-class
 [
-    Exposed=(Window,Worker,Worklet),
-    Constructor(optional any underlyingSource, optional any strategy),
-    RaisesException=Constructor,
-    ConstructorCallWith=ScriptState
+    Exposed=(Window,Worker,Worklet)
 ] interface ReadableStream {
+    [CallWith=ScriptState, RaisesException] constructor(optional any underlyingSource, optional any strategy);
     // As long as we use V8Extras, anything can raise an exception.
     [RaisesException, CallWith=ScriptState, NotEnumerable] readonly attribute boolean locked;
 
diff --git a/third_party/blink/renderer/core/streams/readable_stream_default_reader.idl b/third_party/blink/renderer/core/streams/readable_stream_default_reader.idl
index f7996e5..e732ef8 100644
--- a/third_party/blink/renderer/core/streams/readable_stream_default_reader.idl
+++ b/third_party/blink/renderer/core/streams/readable_stream_default_reader.idl
@@ -4,11 +4,9 @@
 
 // https://streams.spec.whatwg.org/#default-reader-class-definition
 [
-    Exposed=(Window,Worker,Worklet),
-    RaisesException=Constructor,
-    ConstructorCallWith=ScriptState,
-    Constructor(ReadableStream stream)
+    Exposed=(Window,Worker,Worklet)
 ] interface ReadableStreamDefaultReader {
+    [CallWith=ScriptState, RaisesException] constructor(ReadableStream stream);
     [CallWith=ScriptState, NotEnumerable] readonly attribute Promise<void>
         closed;
 
diff --git a/third_party/blink/renderer/core/streams/transform_stream.idl b/third_party/blink/renderer/core/streams/transform_stream.idl
index 31a44c7..ad26ffa 100644
--- a/third_party/blink/renderer/core/streams/transform_stream.idl
+++ b/third_party/blink/renderer/core/streams/transform_stream.idl
@@ -4,13 +4,11 @@
 
 // https://streams.spec.whatwg.org/#ts-class
 [
-    Exposed=(Window,Worker,Worklet),
-    Constructor(optional any transformer,
-                optional any writableStrategy,
-                optional any readableStrategy),
-    RaisesException=Constructor,
-    ConstructorCallWith=ScriptState
+    Exposed=(Window,Worker,Worklet)
 ] interface TransformStream {
+    [CallWith=ScriptState, RaisesException] constructor(optional any transformer,
+                optional any writableStrategy,
+                optional any readableStrategy);
     [NotEnumerable] readonly attribute ReadableStream readable;
     [NotEnumerable] readonly attribute WritableStream writable;
 };
diff --git a/third_party/blink/renderer/core/streams/writable_stream.idl b/third_party/blink/renderer/core/streams/writable_stream.idl
index 790b74ba..f79e77e7 100644
--- a/third_party/blink/renderer/core/streams/writable_stream.idl
+++ b/third_party/blink/renderer/core/streams/writable_stream.idl
@@ -5,11 +5,9 @@
 // https://streams.spec.whatwg.org/#ws-class
 [
     Exposed=(Window,Worker,Worklet),
-    Constructor(optional any underlyingSink, optional any strategy),
-    MeasureAs=WritableStreamConstructor,
-    RaisesException=Constructor,
-    ConstructorCallWith=ScriptState
+    MeasureAs=WritableStreamConstructor
 ] interface WritableStream {
+    [CallWith=ScriptState, RaisesException] constructor(optional any underlyingSink, optional any strategy);
     [NotEnumerable] readonly attribute boolean locked;
     [RaisesException, CallWith=ScriptState, NotEnumerable] Promise<void> abort(
         optional any reason);
diff --git a/third_party/blink/renderer/core/streams/writable_stream_default_writer.idl b/third_party/blink/renderer/core/streams/writable_stream_default_writer.idl
index 68cf0dd..358e2ad 100644
--- a/third_party/blink/renderer/core/streams/writable_stream_default_writer.idl
+++ b/third_party/blink/renderer/core/streams/writable_stream_default_writer.idl
@@ -6,11 +6,9 @@
 
 // https://streams.spec.whatwg.org/#default-writer-class-definition
 [
-    Exposed=(Window,Worker,Worklet),
-    RaisesException=Constructor,
-    ConstructorCallWith=ScriptState,
-    Constructor(WritableStream stream)
+    Exposed=(Window,Worker,Worklet)
 ] interface WritableStreamDefaultWriter {
+    [CallWith=ScriptState, RaisesException] constructor(WritableStream stream);
     [CallWith=ScriptState, NotEnumerable] readonly attribute Promise<void>
         closed;
     [RaisesException, CallWith=ScriptState, NotEnumerable] readonly attribute
diff --git a/third_party/blink/renderer/core/style/computed_style.h b/third_party/blink/renderer/core/style/computed_style.h
index 55b856ee..fbb92eb 100644
--- a/third_party/blink/renderer/core/style/computed_style.h
+++ b/third_party/blink/renderer/core/style/computed_style.h
@@ -2117,8 +2117,10 @@
 
   bool IsDisplayTableType() const { return IsDisplayTableType(Display()); }
 
+  bool IsDisplayMathType() const { return IsDisplayMathBox(Display()); }
+
   bool BlockifiesChildren() const {
-    return IsDisplayFlexibleOrGridBox() || IsDisplayMathBox(Display()) ||
+    return IsDisplayFlexibleOrGridBox() || IsDisplayMathType() ||
            IsDisplayLayoutCustomBox() ||
            (Display() == EDisplay::kContents && IsInBlockifyingDisplay());
   }
diff --git a/third_party/blink/renderer/core/style/computed_style_extra_fields.json5 b/third_party/blink/renderer/core/style/computed_style_extra_fields.json5
index 42efd58..5e5cd74 100644
--- a/third_party/blink/renderer/core/style/computed_style_extra_fields.json5
+++ b/third_party/blink/renderer/core/style/computed_style_extra_fields.json5
@@ -501,7 +501,7 @@
       include_paths: ["third_party/blink/renderer/platform/graphics/touch_action.h"],
       type_name: "TouchAction",
       field_size: 6,
-      default_value: "TouchAction::kTouchActionAuto",
+      default_value: "TouchAction::kAuto",
       field_group: "*",
       computed_style_custom_functions: ["getter", "setter"],
     },
diff --git a/third_party/blink/renderer/core/style/computed_style_test.cc b/third_party/blink/renderer/core/style/computed_style_test.cc
index 59c9874e0..fc5ade5 100644
--- a/third_party/blink/renderer/core/style/computed_style_test.cc
+++ b/third_party/blink/renderer/core/style/computed_style_test.cc
@@ -572,22 +572,41 @@
   CSSValueList* light_value = CSSValueList::CreateSpaceSeparated();
   light_value->Append(*CSSIdentifierValue::Create(CSSValueID::kLight));
 
-  CSSPropertyRef scheme_property("color-scheme", state.GetDocument());
-  CSSPropertyRef color_property("color", state.GetDocument());
+  auto origin = StyleCascade::Origin::kUserAgent;
 
-  To<Longhand>(color_property.GetProperty())
-      .ApplyValue(state, *internal_light_dark);
-  To<Longhand>(scheme_property.GetProperty()).ApplyValue(state, *dark_value);
-  if (!RuntimeEnabledFeatures::CSSCascadeEnabled())
-    resolver.ApplyCascadedColorValue(state);
-  EXPECT_EQ(Color::kWhite, style->VisitedDependentColor(GetCSSPropertyColor()));
+  {
+    ScopedCSSCascadeForTest scoped_cascade_enabled(false);
 
-  To<Longhand>(color_property.GetProperty())
-      .ApplyValue(state, *internal_light_dark);
-  To<Longhand>(scheme_property.GetProperty()).ApplyValue(state, *light_value);
-  if (!RuntimeEnabledFeatures::CSSCascadeEnabled())
+    To<Longhand>(GetCSSPropertyColor()).ApplyValue(state, *internal_light_dark);
+    To<Longhand>(GetCSSPropertyColorScheme()).ApplyValue(state, *dark_value);
     resolver.ApplyCascadedColorValue(state);
-  EXPECT_EQ(Color::kBlack, style->VisitedDependentColor(GetCSSPropertyColor()));
+    EXPECT_EQ(Color::kWhite,
+              style->VisitedDependentColor(GetCSSPropertyColor()));
+
+    To<Longhand>(GetCSSPropertyColor()).ApplyValue(state, *internal_light_dark);
+    To<Longhand>(GetCSSPropertyColorScheme()).ApplyValue(state, *light_value);
+    resolver.ApplyCascadedColorValue(state);
+    EXPECT_EQ(Color::kBlack,
+              style->VisitedDependentColor(GetCSSPropertyColor()));
+  }
+
+  {
+    ScopedCSSCascadeForTest scoped_cascade_enabled(true);
+
+    StyleCascade cascade1(state);
+    cascade1.Add(*CSSPropertyName::From("color"), internal_light_dark, origin);
+    cascade1.Add(*CSSPropertyName::From("color-scheme"), dark_value, origin);
+    cascade1.Apply();
+    EXPECT_EQ(Color::kWhite,
+              style->VisitedDependentColor(GetCSSPropertyColor()));
+
+    StyleCascade cascade2(state);
+    cascade2.Add(*CSSPropertyName::From("color"), internal_light_dark, origin);
+    cascade2.Add(*CSSPropertyName::From("color-scheme"), light_value, origin);
+    cascade2.Apply();
+    EXPECT_EQ(Color::kBlack,
+              style->VisitedDependentColor(GetCSSPropertyColor()));
+  }
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/style/fill_layer.cc b/third_party/blink/renderer/core/style/fill_layer.cc
index 55f513f..1b0c37c 100644
--- a/third_party/blink/renderer/core/style/fill_layer.cc
+++ b/third_party/blink/renderer/core/style/fill_layer.cc
@@ -395,8 +395,12 @@
                               const ComputedStyle& style) const {
   // Returns whether we have an image that will cover the content below it when
   // composite_ == CompositeSourceOver && blend_mode_ == BlendMode::kNormal.
+  // Note that it doesn't matter what orientation we use because we are only
+  // checking for IsEmpty.
   return image_->KnownToBeOpaque(document, style) &&
-         !image_->ImageSize(document, style.EffectiveZoom(), LayoutSize())
+         !image_
+              ->ImageSize(document, style.EffectiveZoom(), LayoutSize(),
+                          kRespectImageOrientation)
               .IsEmpty();
 }
 
diff --git a/third_party/blink/renderer/core/style/style_fetched_image.cc b/third_party/blink/renderer/core/style/style_fetched_image.cc
index ff6a1ab..544ac22 100644
--- a/third_party/blink/renderer/core/style/style_fetched_image.cc
+++ b/third_party/blink/renderer/core/style/style_fetched_image.cc
@@ -35,6 +35,7 @@
 #include "third_party/blink/renderer/core/svg/graphics/svg_image.h"
 #include "third_party/blink/renderer/core/svg/graphics/svg_image_for_container.h"
 #include "third_party/blink/renderer/platform/geometry/layout_size.h"
+#include "third_party/blink/renderer/platform/graphics/bitmap_image.h"
 #include "third_party/blink/renderer/platform/graphics/placeholder_image.h"
 #include "third_party/blink/renderer/platform/runtime_enabled_features.h"
 
@@ -81,8 +82,9 @@
 }
 
 CSSValue* StyleFetchedImage::CssValue() const {
-  return CSSImageValue::Create(
-      url_, origin_clean_ ? OriginClean::kTrue : OriginClean::kFalse,
+  return MakeGarbageCollected<CSSImageValue>(
+      AtomicString(url_.GetString()), url_, Referrer(),
+      origin_clean_ ? OriginClean::kTrue : OriginClean::kFalse,
       const_cast<StyleFetchedImage*>(this));
 }
 
@@ -106,7 +108,8 @@
 FloatSize StyleFetchedImage::ImageSize(
     const Document&,
     float multiplier,
-    const LayoutSize& default_object_size) const {
+    const LayoutSize& default_object_size,
+    RespectImageOrientationEnum respect_orientation) const {
   Image* image = image_->GetImage();
   if (image_->HasDevicePixelRatioHeaderValue()) {
     multiplier /= image_->DevicePixelRatioHeaderValue();
@@ -115,12 +118,10 @@
     return ImageSizeForSVGImage(ToSVGImage(image), multiplier,
                                 default_object_size);
   }
-  // Image orientation should only be respected for content images,
-  // not decorative images such as StyleImage (backgrounds,
-  // border-image, etc.)
-  //
-  // https://drafts.csswg.org/css-images-3/#the-image-orientation
-  FloatSize size(image->Size());
+
+  FloatSize size(respect_orientation && image->IsBitmapImage()
+                     ? ToBitmapImage(image)->SizeRespectingOrientation()
+                     : image->Size());
   return ApplyZoom(size, multiplier);
 }
 
diff --git a/third_party/blink/renderer/core/style/style_fetched_image.h b/third_party/blink/renderer/core/style/style_fetched_image.h
index f8abe68..0cba8e604 100644
--- a/third_party/blink/renderer/core/style/style_fetched_image.h
+++ b/third_party/blink/renderer/core/style/style_fetched_image.h
@@ -57,7 +57,8 @@
   bool ErrorOccurred() const override;
   FloatSize ImageSize(const Document&,
                       float multiplier,
-                      const LayoutSize& default_object_size) const override;
+                      const LayoutSize& default_object_size,
+                      RespectImageOrientationEnum) const override;
   bool HasIntrinsicSize() const override;
   void AddClient(ImageResourceObserver*) override;
   void RemoveClient(ImageResourceObserver*) override;
diff --git a/third_party/blink/renderer/core/style/style_fetched_image_set.cc b/third_party/blink/renderer/core/style/style_fetched_image_set.cc
index 7d44404b..2ab8636 100644
--- a/third_party/blink/renderer/core/style/style_fetched_image_set.cc
+++ b/third_party/blink/renderer/core/style/style_fetched_image_set.cc
@@ -29,6 +29,7 @@
 #include "third_party/blink/renderer/core/loader/resource/image_resource_content.h"
 #include "third_party/blink/renderer/core/style/computed_style.h"
 #include "third_party/blink/renderer/core/svg/graphics/svg_image_for_container.h"
+#include "third_party/blink/renderer/platform/graphics/bitmap_image.h"
 #include "third_party/blink/renderer/platform/graphics/placeholder_image.h"
 
 namespace blink {
@@ -95,18 +96,17 @@
 FloatSize StyleFetchedImageSet::ImageSize(
     const Document&,
     float multiplier,
-    const LayoutSize& default_object_size) const {
+    const LayoutSize& default_object_size,
+    RespectImageOrientationEnum respect_orientation) const {
   Image* image = best_fit_image_->GetImage();
   if (image->IsSVGImage()) {
     return ImageSizeForSVGImage(ToSVGImage(image), multiplier,
                                 default_object_size);
   }
-  // Image orientation should only be respected for content images,
-  // not decorative ones such as StyleImage (backgrounds,
-  // border-image, etc.)
-  //
-  // https://drafts.csswg.org/css-images-3/#the-image-orientation
-  FloatSize natural_size(image->Size());
+  FloatSize natural_size(respect_orientation == kRespectImageOrientation &&
+                                 image->IsBitmapImage()
+                             ? ToBitmapImage(image)->SizeRespectingOrientation()
+                             : image->Size());
   FloatSize scaled_image_size(ApplyZoom(natural_size, multiplier));
   scaled_image_size.Scale(1 / image_scale_factor_);
   return scaled_image_size;
diff --git a/third_party/blink/renderer/core/style/style_fetched_image_set.h b/third_party/blink/renderer/core/style/style_fetched_image_set.h
index 99055c0..054fc2b 100644
--- a/third_party/blink/renderer/core/style/style_fetched_image_set.h
+++ b/third_party/blink/renderer/core/style/style_fetched_image_set.h
@@ -67,7 +67,8 @@
   bool ErrorOccurred() const override;
   FloatSize ImageSize(const Document&,
                       float multiplier,
-                      const LayoutSize& default_object_size) const override;
+                      const LayoutSize& default_object_size,
+                      RespectImageOrientationEnum) const override;
   bool HasIntrinsicSize() const override;
   void AddClient(ImageResourceObserver*) override;
   void RemoveClient(ImageResourceObserver*) override;
diff --git a/third_party/blink/renderer/core/style/style_generated_image.cc b/third_party/blink/renderer/core/style/style_generated_image.cc
index dda3c293..2904709e 100644
--- a/third_party/blink/renderer/core/style/style_generated_image.cc
+++ b/third_party/blink/renderer/core/style/style_generated_image.cc
@@ -55,10 +55,10 @@
   return image_generator_value_->ComputedCSSValue(style, allow_visited_style);
 }
 
-FloatSize StyleGeneratedImage::ImageSize(
-    const Document& document,
-    float multiplier,
-    const LayoutSize& default_object_size) const {
+FloatSize StyleGeneratedImage::ImageSize(const Document& document,
+                                         float multiplier,
+                                         const LayoutSize& default_object_size,
+                                         RespectImageOrientationEnum) const {
   if (fixed_size_) {
     FloatSize unzoomed_default_object_size(default_object_size);
     unzoomed_default_object_size.Scale(1 / multiplier);
diff --git a/third_party/blink/renderer/core/style/style_generated_image.h b/third_party/blink/renderer/core/style/style_generated_image.h
index 24fc4bb..d964b85 100644
--- a/third_party/blink/renderer/core/style/style_generated_image.h
+++ b/third_party/blink/renderer/core/style/style_generated_image.h
@@ -49,7 +49,8 @@
 
   FloatSize ImageSize(const Document&,
                       float multiplier,
-                      const LayoutSize& default_object_size) const override;
+                      const LayoutSize& default_object_size,
+                      RespectImageOrientationEnum) const override;
   bool HasIntrinsicSize() const override { return fixed_size_; }
   void AddClient(ImageResourceObserver*) override;
   void RemoveClient(ImageResourceObserver*) override;
diff --git a/third_party/blink/renderer/core/style/style_image.h b/third_party/blink/renderer/core/style/style_image.h
index ddf24cf..75503b23 100644
--- a/third_party/blink/renderer/core/style/style_image.h
+++ b/third_party/blink/renderer/core/style/style_image.h
@@ -25,6 +25,7 @@
 #define THIRD_PARTY_BLINK_RENDERER_CORE_STYLE_STYLE_IMAGE_H_
 
 #include "third_party/blink/renderer/core/core_export.h"
+#include "third_party/blink/renderer/platform/graphics/image_orientation.h"
 #include "third_party/blink/renderer/platform/heap/handle.h"
 #include "third_party/blink/renderer/platform/wtf/forward.h"
 
@@ -86,9 +87,13 @@
   // not zoomed. Note that the |default_object_size| has already been snapped
   // to LayoutUnit resolution because it represents the target painted size of
   // a container.
+  //
+  // The size will respect the image orientation if requested and if the image
+  // supports it.
   virtual FloatSize ImageSize(const Document&,
                               float multiplier,
-                              const LayoutSize& default_object_size) const = 0;
+                              const LayoutSize& default_object_size,
+                              RespectImageOrientationEnum) const = 0;
 
   // The <image> has intrinsic dimensions.
   //
diff --git a/third_party/blink/renderer/core/style/style_pending_image.h b/third_party/blink/renderer/core/style/style_pending_image.h
index d31e0e03..7750ce8 100644
--- a/third_party/blink/renderer/core/style/style_pending_image.h
+++ b/third_party/blink/renderer/core/style/style_pending_image.h
@@ -74,7 +74,8 @@
 
   FloatSize ImageSize(const Document&,
                       float /*multiplier*/,
-                      const LayoutSize& /*defaultObjectSize*/) const override {
+                      const LayoutSize& /*defaultObjectSize*/,
+                      RespectImageOrientationEnum) const override {
     return FloatSize();
   }
   bool HasIntrinsicSize() const override { return true; }
diff --git a/third_party/blink/renderer/core/svg/graphics/svg_image.cc b/third_party/blink/renderer/core/svg/graphics/svg_image.cc
index 51b44434..fab634f7 100644
--- a/third_party/blink/renderer/core/svg/graphics/svg_image.cc
+++ b/third_party/blink/renderer/core/svg/graphics/svg_image.cc
@@ -331,8 +331,8 @@
     adjusted_src_size.Scale(residual_scale.Width(), residual_scale.Height());
     scaled_src.SetSize(adjusted_src_size);
 
-    DrawInternal(canvas, flags, dst_rect, scaled_src,
-                 kDoNotRespectImageOrientation, kClampImageToSourceRect, url);
+    DrawInternal(canvas, flags, dst_rect, scaled_src, kRespectImageOrientation,
+                 kClampImageToSourceRect, url);
   });
 }
 
diff --git a/third_party/blink/renderer/core/svg/graphics/svg_image_for_container.cc b/third_party/blink/renderer/core/svg/graphics/svg_image_for_container.cc
index 9745ea4..e85e14d 100644
--- a/third_party/blink/renderer/core/svg/graphics/svg_image_for_container.cc
+++ b/third_party/blink/renderer/core/svg/graphics/svg_image_for_container.cc
@@ -28,9 +28,13 @@
 namespace blink {
 
 IntSize SVGImageForContainer::Size() const {
+  return RoundedIntSize(SizeAsFloat());
+}
+
+FloatSize SVGImageForContainer::SizeAsFloat() const {
   FloatSize scaled_container_size(container_size_);
   scaled_container_size.Scale(zoom_);
-  return RoundedIntSize(scaled_container_size);
+  return scaled_container_size;
 }
 
 void SVGImageForContainer::Draw(cc::PaintCanvas* canvas,
@@ -50,7 +54,8 @@
                                        const FloatPoint& phase,
                                        SkBlendMode op,
                                        const FloatRect& dst_rect,
-                                       const FloatSize& repeat_spacing) {
+                                       const FloatSize& repeat_spacing,
+                                       RespectImageOrientationEnum) {
   image_->DrawPatternForContainer(context, container_size_, zoom_, src_rect,
                                   scale, phase, op, dst_rect, repeat_spacing,
                                   url_);
diff --git a/third_party/blink/renderer/core/svg/graphics/svg_image_for_container.h b/third_party/blink/renderer/core/svg/graphics/svg_image_for_container.h
index 1e617991..116e6ed2 100644
--- a/third_party/blink/renderer/core/svg/graphics/svg_image_for_container.h
+++ b/third_party/blink/renderer/core/svg/graphics/svg_image_for_container.h
@@ -70,6 +70,7 @@
   }
 
   IntSize Size() const override;
+  FloatSize SizeAsFloat() const override;
 
   bool HasIntrinsicSize() const override { return image_->HasIntrinsicSize(); }
 
@@ -102,7 +103,8 @@
                    const FloatPoint&,
                    SkBlendMode,
                    const FloatRect&,
-                   const FloatSize& repeat_spacing) override;
+                   const FloatSize& repeat_spacing,
+                   RespectImageOrientationEnum) override;
 
  private:
   SVGImageForContainer(SVGImage* image,
diff --git a/third_party/blink/renderer/core/svg/graphics/svg_image_test.cc b/third_party/blink/renderer/core/svg/graphics/svg_image_test.cc
index 25523b1..19feaf44 100644
--- a/third_party/blink/renderer/core/svg/graphics/svg_image_test.cc
+++ b/third_party/blink/renderer/core/svg/graphics/svg_image_test.cc
@@ -63,8 +63,8 @@
     PaintFlags flags;
     FloatRect dummy_rect(0, 0, 100, 100);
     image->Draw(&canvas, flags, dummy_rect, dummy_rect,
-                kDoNotRespectImageOrientation,
-                Image::kDoNotClampImageToSourceRect, Image::kSyncDecode);
+                kRespectImageOrientation, Image::kDoNotClampImageToSourceRect,
+                Image::kSyncDecode);
   }
 
   // Loads the image from |file_name|, computes features into |features|,
diff --git a/third_party/blink/renderer/core/svg/svg_script_element.cc b/third_party/blink/renderer/core/svg/svg_script_element.cc
index 762f761..7267a73 100644
--- a/third_party/blink/renderer/core/svg/svg_script_element.cc
+++ b/third_party/blink/renderer/core/svg/svg_script_element.cc
@@ -93,8 +93,8 @@
 void SVGScriptElement::FinishParsingChildren() {
   SVGElement::FinishParsingChildren();
   have_fired_load_ = true;
-  DCHECK(script_text_internal_slot_.IsEmpty());
-  script_text_internal_slot_ = TextFromChildren();
+  DCHECK(!script_text_internal_slot_.length());
+  script_text_internal_slot_ = ParkableString(TextFromChildren().Impl());
 }
 
 bool SVGScriptElement::HaveLoadedRequiredResources() {
@@ -114,7 +114,7 @@
 }
 
 String SVGScriptElement::ScriptTextInternalSlot() const {
-  return script_text_internal_slot_;
+  return script_text_internal_slot_.ToString();
 }
 
 bool SVGScriptElement::HasSourceAttribute() const {
diff --git a/third_party/blink/renderer/core/svg/svg_script_element.h b/third_party/blink/renderer/core/svg/svg_script_element.h
index 488454d4..2a956a3c 100644
--- a/third_party/blink/renderer/core/svg/svg_script_element.h
+++ b/third_party/blink/renderer/core/svg/svg_script_element.h
@@ -26,6 +26,7 @@
 #include "third_party/blink/renderer/core/svg/svg_element.h"
 #include "third_party/blink/renderer/core/svg/svg_uri_reference.h"
 #include "third_party/blink/renderer/core/svg_names.h"
+#include "third_party/blink/renderer/platform/bindings/parkable_string.h"
 #include "third_party/blink/renderer/platform/heap/handle.h"
 
 namespace blink {
@@ -106,7 +107,7 @@
 
   bool have_fired_load_ = false;
 
-  String script_text_internal_slot_;
+  ParkableString script_text_internal_slot_;
 
   Member<ScriptLoader> loader_;
 };
diff --git a/third_party/blink/renderer/core/testing/death_aware_script_wrappable.h b/third_party/blink/renderer/core/testing/death_aware_script_wrappable.h
index 6f19681..1bcf94b6 100644
--- a/third_party/blink/renderer/core/testing/death_aware_script_wrappable.h
+++ b/third_party/blink/renderer/core/testing/death_aware_script_wrappable.h
@@ -43,10 +43,6 @@
  public:
   typedef Member<DeathAwareScriptWrappable> Wrapper;
 
-  static DeathAwareScriptWrappable* Create() {
-    return MakeGarbageCollected<DeathAwareScriptWrappable>();
-  }
-
   static bool HasDied() { return has_died_; }
   static void ObserveDeathsOf(DeathAwareScriptWrappable* instance) {
     has_died_ = false;
diff --git a/third_party/blink/renderer/core/testing/fake_local_frame_host.cc b/third_party/blink/renderer/core/testing/fake_local_frame_host.cc
index b2d510a..68ca6929 100644
--- a/third_party/blink/renderer/core/testing/fake_local_frame_host.cc
+++ b/third_party/blink/renderer/core/testing/fake_local_frame_host.cc
@@ -63,7 +63,7 @@
     bool present,
     blink::mojom::SuddenTerminationDisablerType disabler_type) {}
 
-void FakeLocalFrameHost::ReceivedUserGestureBeforeNavigationChanged(
+void FakeLocalFrameHost::HadStickyUserActivationBeforeNavigationChanged(
     bool value) {}
 
 void FakeLocalFrameHost::BindFrameHostReceiver(
diff --git a/third_party/blink/renderer/core/testing/fake_local_frame_host.h b/third_party/blink/renderer/core/testing/fake_local_frame_host.h
index 2b6c5dae..98e5d63 100644
--- a/third_party/blink/renderer/core/testing/fake_local_frame_host.h
+++ b/third_party/blink/renderer/core/testing/fake_local_frame_host.h
@@ -46,7 +46,7 @@
   void SuddenTerminationDisablerChanged(
       bool present,
       blink::mojom::SuddenTerminationDisablerType disabler_type) override;
-  void ReceivedUserGestureBeforeNavigationChanged(bool value) override;
+  void HadStickyUserActivationBeforeNavigationChanged(bool value) override;
 
  private:
   void BindFrameHostReceiver(mojo::ScopedInterfaceEndpointHandle handle);
diff --git a/third_party/blink/renderer/core/timezone/DEPS b/third_party/blink/renderer/core/timezone/DEPS
index 3fcb405..0d7c0f69 100644
--- a/third_party/blink/renderer/core/timezone/DEPS
+++ b/third_party/blink/renderer/core/timezone/DEPS
@@ -1,7 +1,6 @@
 include_rules = [
     "+mojo/public/cpp/bindings/binding.h",
     "+services/device/public/mojom/time_zone_monitor.mojom-blink.h",
-    "+services/device/public/mojom/constants.mojom-blink.h",
     "+third_party/icu/source/common/unicode/char16ptr.h",
     "+third_party/icu/source/i18n/unicode/timezone.h",
 ]
diff --git a/third_party/blink/renderer/core/timezone/timezone_controller.cc b/third_party/blink/renderer/core/timezone/timezone_controller.cc
index a03e0b81..d5ed637 100644
--- a/third_party/blink/renderer/core/timezone/timezone_controller.cc
+++ b/third_party/blink/renderer/core/timezone/timezone_controller.cc
@@ -6,7 +6,6 @@
 
 #include "mojo/public/cpp/bindings/pending_remote.h"
 #include "mojo/public/cpp/bindings/remote.h"
-#include "services/device/public/mojom/constants.mojom-blink.h"
 #include "services/service_manager/public/cpp/connector.h"
 #include "third_party/blink/public/common/thread_safe_browser_interface_broker_proxy.h"
 #include "third_party/blink/public/platform/platform.h"
diff --git a/third_party/blink/renderer/core/timing/performance_mark.idl b/third_party/blink/renderer/core/timing/performance_mark.idl
index b13216c..4906896 100644
--- a/third_party/blink/renderer/core/timing/performance_mark.idl
+++ b/third_party/blink/renderer/core/timing/performance_mark.idl
@@ -25,10 +25,9 @@
 
 // https://w3c.github.io/user-timing/#performancemark
 
-[Exposed=(Window,Worker),
- Constructor(DOMString markName, optional PerformanceMarkOptions markOptions),
- ConstructorCallWith=ScriptState,
- RaisesException=Constructor]
-interface PerformanceMark : PerformanceEntry {
+[
+Exposed=(Window,Worker)
+] interface PerformanceMark : PerformanceEntry {
+    [CallWith=ScriptState, RaisesException] constructor(DOMString markName, optional PerformanceMarkOptions markOptions);
     [CallWith=ScriptState] readonly attribute any detail;
 };
diff --git a/third_party/blink/renderer/core/timing/performance_observer.idl b/third_party/blink/renderer/core/timing/performance_observer.idl
index 8d28a31..8cc4f1a 100644
--- a/third_party/blink/renderer/core/timing/performance_observer.idl
+++ b/third_party/blink/renderer/core/timing/performance_observer.idl
@@ -8,10 +8,9 @@
 // https://w3c.github.io/performance-timeline/#the-performanceobserver-interface
 [
     ActiveScriptWrappable,
-    Constructor(PerformanceObserverCallback callback),
-    ConstructorCallWith=ScriptState,
     Exposed=(Window,Worker)
 ] interface PerformanceObserver {
+    [CallWith=ScriptState] constructor(PerformanceObserverCallback callback);
     [RaisesException] void observe(optional PerformanceObserverInit options);
     void disconnect();
     PerformanceEntryList takeRecords();
diff --git a/third_party/blink/renderer/core/url/url.idl b/third_party/blink/renderer/core/url/url.idl
index 58fd2eb..2c533629 100644
--- a/third_party/blink/renderer/core/url/url.idl
+++ b/third_party/blink/renderer/core/url/url.idl
@@ -27,11 +27,10 @@
 // https://url.spec.whatwg.org/#url
 
 [
-    Constructor(USVString url, optional USVString base),
     Exposed=(Window,Worker),
-    ImplementedAs=DOMURL,
-    RaisesException=Constructor
+    ImplementedAs=DOMURL
 ] interface URL {
+    [RaisesException] constructor(USVString url, optional USVString base);
     stringifier attribute USVString href;
     readonly attribute USVString origin;
 
diff --git a/third_party/blink/renderer/core/url/url_search_params.idl b/third_party/blink/renderer/core/url/url_search_params.idl
index c9148aa..31c3694 100644
--- a/third_party/blink/renderer/core/url/url_search_params.idl
+++ b/third_party/blink/renderer/core/url/url_search_params.idl
@@ -5,10 +5,9 @@
 // https://url.spec.whatwg.org/#interface-urlsearchparams
 
 [
-    Constructor(optional (sequence<sequence<USVString>> or record<USVString, USVString> or USVString) init = ""),
-    Exposed=(Window,Worker),
-    RaisesException=Constructor
+    Exposed=(Window,Worker)
 ] interface URLSearchParams {
+    [RaisesException] constructor(optional (sequence<sequence<USVString>> or record<USVString, USVString> or USVString) init = "");
     void append(USVString name, USVString value);
     [ImplementedAs=deleteAllWithName] void delete(USVString name);
     USVString? get(USVString name);
diff --git a/third_party/blink/renderer/core/workers/shared_worker.cc b/third_party/blink/renderer/core/workers/shared_worker.cc
index 477f71b..f123241 100644
--- a/third_party/blink/renderer/core/workers/shared_worker.cc
+++ b/third_party/blink/renderer/core/workers/shared_worker.cc
@@ -67,6 +67,12 @@
 
 SharedWorker* SharedWorker::Create(ExecutionContext* context,
                                    const String& url,
+                                   ExceptionState& exception_state) {
+  return SharedWorker::Create(context, url, /*name=*/String(), exception_state);
+}
+
+SharedWorker* SharedWorker::Create(ExecutionContext* context,
+                                   const String& url,
                                    const String& name,
                                    ExceptionState& exception_state) {
   DCHECK(IsMainThread());
diff --git a/third_party/blink/renderer/core/workers/shared_worker.h b/third_party/blink/renderer/core/workers/shared_worker.h
index 75d7509..8cf2c8b 100644
--- a/third_party/blink/renderer/core/workers/shared_worker.h
+++ b/third_party/blink/renderer/core/workers/shared_worker.h
@@ -53,6 +53,9 @@
  public:
   static SharedWorker* Create(ExecutionContext*,
                               const String& url,
+                              ExceptionState&);
+  static SharedWorker* Create(ExecutionContext*,
+                              const String& url,
                               const String& name,
                               ExceptionState&);
 
diff --git a/third_party/blink/renderer/core/workers/shared_worker.idl b/third_party/blink/renderer/core/workers/shared_worker.idl
index 74008ed..7d0577ce 100644
--- a/third_party/blink/renderer/core/workers/shared_worker.idl
+++ b/third_party/blink/renderer/core/workers/shared_worker.idl
@@ -33,14 +33,12 @@
 
 [
     ActiveScriptWrappable,
-    // TODO(nhiroki): The second argument should be |optional (DOMString or
-    // WorkerOptions) options)|.
-    Constructor(DOMString scriptURL, optional DOMString name = null),
-    ConstructorCallWith=ExecutionContext,
     // TODO(foolip): Exposed=(Window,Worker),
-    RaisesException=Constructor,
     RuntimeEnabled=SharedWorker
 ] interface SharedWorker : EventTarget {
+    // TODO(nhiroki): The second argument should be |optional (DOMString or
+    // WorkerOptions) options)|.
+    [CallWith=ExecutionContext, RaisesException] constructor(DOMString scriptURL, optional DOMString name);
     readonly attribute MessagePort port;
 };
 
diff --git a/third_party/blink/renderer/core/workers/worker.idl b/third_party/blink/renderer/core/workers/worker.idl
index a0e36b3..5ea5b8d 100644
--- a/third_party/blink/renderer/core/workers/worker.idl
+++ b/third_party/blink/renderer/core/workers/worker.idl
@@ -29,12 +29,10 @@
 
 [
     ActiveScriptWrappable,
-    Constructor(DOMString scriptURL, optional WorkerOptions options),
-    ConstructorCallWith=ExecutionContext,
     Exposed=(Window,DedicatedWorker),
-    RaisesException=Constructor,
     ImplementedAs=DedicatedWorker
 ] interface Worker : EventTarget {
+    [CallWith=ExecutionContext, RaisesException] constructor(DOMString scriptURL, optional WorkerOptions options);
     void terminate();
 
     [CallWith=ScriptState, RaisesException] void postMessage(any message, sequence<object> transfer);
diff --git a/third_party/blink/renderer/core/workers/worker_global_scope.cc b/third_party/blink/renderer/core/workers/worker_global_scope.cc
index 6d19446..8e08129 100644
--- a/third_party/blink/renderer/core/workers/worker_global_scope.cc
+++ b/third_party/blink/renderer/core/workers/worker_global_scope.cc
@@ -64,6 +64,7 @@
 #include "third_party/blink/renderer/core/workers/worker_thread.h"
 #include "third_party/blink/renderer/platform/bindings/exception_state.h"
 #include "third_party/blink/renderer/platform/bindings/microtask.h"
+#include "third_party/blink/renderer/platform/heap/heap.h"
 #include "third_party/blink/renderer/platform/instrumentation/instance_counters.h"
 #include "third_party/blink/renderer/platform/loader/fetch/fetch_client_settings_object_snapshot.h"
 #include "third_party/blink/renderer/platform/loader/fetch/memory_cache.h"
@@ -446,7 +447,7 @@
     : WorkerOrWorkletGlobalScope(
           thread->GetIsolate(),
           CreateSecurityOrigin(creation_params.get()),
-          Agent::CreateForWorkerOrWorklet(
+          MakeGarbageCollected<Agent>(
               thread->GetIsolate(),
               (creation_params->agent_cluster_id.is_empty()
                    ? base::UnguessableToken::Create()
diff --git a/third_party/blink/renderer/core/xml/BUILD.gn b/third_party/blink/renderer/core/xml/BUILD.gn
index b3c3780..494f69a 100644
--- a/third_party/blink/renderer/core/xml/BUILD.gn
+++ b/third_party/blink/renderer/core/xml/BUILD.gn
@@ -5,6 +5,9 @@
 import("//third_party/blink/renderer/core/core.gni")
 
 blink_core_sources("xml") {
+  deps = [
+    ":xpath_generated",
+  ]
   sources = [
     "document_xml_tree_viewer.cc",
     "document_xml_tree_viewer.h",
@@ -35,12 +38,9 @@
     "xpath_expression_node.h",
     "xpath_functions.cc",
     "xpath_functions.h",
-    "xpath_grammar_generated.cc",
-    "xpath_grammar_generated.h",
     "xpath_node_set.cc",
     "xpath_node_set.h",
     "xpath_ns_resolver.h",
-    "xpath_parser.cc",
     "xpath_parser.h",
     "xpath_path.cc",
     "xpath_path.h",
@@ -67,3 +67,16 @@
     "xslt_unicode_sort.h",
   ]
 }
+
+# Chromium-style plugin produces an error for xpath_grammar_generated.h.
+# Disable the plugin for sources including xpath_grammar_generated.h.
+blink_core_sources("xpath_generated") {
+  sources = [
+    "xpath_grammar_generated.cc",
+    "xpath_grammar_generated.h",
+    "xpath_parser.cc",
+  ]
+  if (is_clang) {
+    configs -= [ "//build/config/clang:find_bad_constructs" ]
+  }
+}
diff --git a/third_party/blink/renderer/core/xml/dom_parser.idl b/third_party/blink/renderer/core/xml/dom_parser.idl
index 5f9b2ab..5780226 100644
--- a/third_party/blink/renderer/core/xml/dom_parser.idl
+++ b/third_party/blink/renderer/core/xml/dom_parser.idl
@@ -28,9 +28,8 @@
 };
 
 [
-    Constructor,
-    ConstructorCallWith=Document,
     Exposed=Window
 ] interface DOMParser {
+    [CallWith=Document] constructor();
     [NewObject, RaisesException] Document parseFromString(HTMLString str, SupportedType type);
 };
diff --git a/third_party/blink/renderer/core/xml/xml_serializer.idl b/third_party/blink/renderer/core/xml/xml_serializer.idl
index 3724948..489d4335 100644
--- a/third_party/blink/renderer/core/xml/xml_serializer.idl
+++ b/third_party/blink/renderer/core/xml/xml_serializer.idl
@@ -21,8 +21,8 @@
 // https://w3c.github.io/DOM-Parsing/#the-xmlserializer-interface
 
 [
-    Constructor,
     Exposed=Window
 ] interface XMLSerializer {
+    constructor();
     DOMString serializeToString(Node root);
 };
diff --git a/third_party/blink/renderer/core/xml/xpath_evaluator.idl b/third_party/blink/renderer/core/xml/xpath_evaluator.idl
index f9f735e..b4caf3c 100644
--- a/third_party/blink/renderer/core/xml/xpath_evaluator.idl
+++ b/third_party/blink/renderer/core/xml/xpath_evaluator.idl
@@ -26,9 +26,9 @@
 // constructable XPathEvaluator interface.
 
 [
-    Constructor,
     Measure
 ] interface XPathEvaluator {
+    constructor();
     [Measure, RaisesException] XPathExpression createExpression(DOMString expression, optional XPathNSResolver? resolver = null);
 
     [Measure] XPathNSResolver createNSResolver(Node nodeResolver);
diff --git a/third_party/blink/renderer/core/xml/xpath_grammar.y b/third_party/blink/renderer/core/xml/xpath_grammar.y
index cf93e10..187d54c 100644
--- a/third_party/blink/renderer/core/xml/xpath_grammar.y
+++ b/third_party/blink/renderer/core/xml/xpath_grammar.y
@@ -40,6 +40,15 @@
  * //third_party/bison. See https://crbug.com/1028421.
  */
 
+%require "3.4"
+%language "c++"
+
+%code requires {
+
+#include "third_party/blink/renderer/platform/heap/persistent.h"
+
+}
+
 %{
 
 #include "third_party/blink/renderer/core/xml/xpath_functions.h"
@@ -50,101 +59,88 @@
 #include "third_party/blink/renderer/core/xml/xpath_step.h"
 #include "third_party/blink/renderer/core/xml/xpath_variable_reference.h"
 
-// The union below must be located on the stack because it contains raw
-// pointers to Oilpan objects. crbug.com/961413
-#define YYSTACK_USE_ALLOCA 1
-// Bison's bug? YYSTACK_ALLOC is not defined if _MSC_VER.
-#if defined(_MSC_VER)
-#define YYSTACK_ALLOC _alloca
-#endif
-
 #define YYENABLE_NLS 0
-#define YYLTYPE_IS_TRIVIAL 1
+#define YY_EXCEPTIONS 0
 #define YYDEBUG 0
-#define YYMAXDEPTH 10000
 
 using blink::xpath::Step;
 %}
 
-%define api.pure full
-%parse-param { blink::xpath::Parser* parser }
+%define api.parser.class { YyParser }
+%parse-param { blink::xpath::Parser* parser_ }
 
-%union
-{
-  blink::xpath::Step::Axis axis;
-  blink::xpath::Step::NodeTest* node_test;
-  blink::xpath::NumericOp::Opcode num_op;
-  blink::xpath::EqTestOp::Opcode eq_op;
-  String* str;
-  blink::xpath::Expression* expr;
-  blink::HeapVector<blink::Member<blink::xpath::Predicate>>* pred_list;
-  blink::HeapVector<blink::Member<blink::xpath::Expression>>* arg_list;
-  blink::xpath::Step* step;
-  blink::xpath::LocationPath* location_path;
+%define api.value.type variant
+
+%left <blink::xpath::NumericOp::Opcode> kMulOp
+%left <blink::xpath::EqTestOp::Opcode> kEqOp kRelOp
+%left kPlus kMinus
+%left kOr kAnd
+%token <blink::xpath::Step::Axis> kAxisName
+%token <String> kNodeType kPI kFunctionName kLiteral
+%token <String> kVariableReference kNumber
+%token kDotDot kSlashSlash
+%token <String> kNameTest
+%token kXPathError
+
+%type <blink::Persistent<blink::xpath::LocationPath>> LocationPath
+%type <blink::Persistent<blink::xpath::LocationPath>> AbsoluteLocationPath
+%type <blink::Persistent<blink::xpath::LocationPath>> RelativeLocationPath
+%type <blink::Persistent<blink::xpath::Step>> Step
+%type <blink::xpath::Step::Axis> AxisSpecifier
+%type <blink::Persistent<blink::xpath::Step>> DescendantOrSelf
+%type <blink::Persistent<blink::xpath::Step::NodeTest>> NodeTest
+%type <blink::Persistent<blink::xpath::Expression>> Predicate
+%type <blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Predicate>>>> OptionalPredicateList
+%type <blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Predicate>>>> PredicateList
+%type <blink::Persistent<blink::xpath::Step>> AbbreviatedStep
+%type <blink::Persistent<blink::xpath::Expression>> Expr
+%type <blink::Persistent<blink::xpath::Expression>> PrimaryExpr
+%type <blink::Persistent<blink::xpath::Expression>> FunctionCall
+%type <blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Expression>>>> ArgumentList
+%type <blink::Persistent<blink::xpath::Expression>> Argument
+%type <blink::Persistent<blink::xpath::Expression>> UnionExpr
+%type <blink::Persistent<blink::xpath::Expression>> PathExpr
+%type <blink::Persistent<blink::xpath::Expression>> FilterExpr
+%type <blink::Persistent<blink::xpath::Expression>> OrExpr
+%type <blink::Persistent<blink::xpath::Expression>> AndExpr
+%type <blink::Persistent<blink::xpath::Expression>> EqualityExpr
+%type <blink::Persistent<blink::xpath::Expression>> RelationalExpr
+%type <blink::Persistent<blink::xpath::Expression>> AdditiveExpr
+%type <blink::Persistent<blink::xpath::Expression>> MultiplicativeExpr
+%type <blink::Persistent<blink::xpath::Expression>> UnaryExpr
+
+%code {
+
+static int xpathyylex(xpathyy::YyParser::semantic_type* yylval) {
+  return blink::xpath::Parser::Current()->Lex(yylval);
 }
 
-%{
+namespace xpathyy {
+void YyParser::error(const std::string&) { }
+}
 
-static int xpathyylex(YYSTYPE* yylval) { return blink::xpath::Parser::Current()->Lex(yylval); }
-static void xpathyyerror(void*, const char*) { }
-
-%}
-
-%left <num_op> MULOP
-%left <eq_op> EQOP RELOP
-%left PLUS MINUS
-%left OR AND
-%token <axis> AXISNAME
-%token <str> NODETYPE PI FUNCTIONNAME LITERAL
-%token <str> VARIABLEREFERENCE NUMBER
-%token DOTDOT SLASHSLASH
-%token <str> NAMETEST
-%token XPATH_ERROR
-
-%type <location_path> LocationPath
-%type <location_path> AbsoluteLocationPath
-%type <location_path> RelativeLocationPath
-%type <step> Step
-%type <axis> AxisSpecifier
-%type <step> DescendantOrSelf
-%type <node_test> NodeTest
-%type <expr> Predicate
-%type <pred_list> OptionalPredicateList
-%type <pred_list> PredicateList
-%type <step> AbbreviatedStep
-%type <expr> Expr
-%type <expr> PrimaryExpr
-%type <expr> FunctionCall
-%type <arg_list> ArgumentList
-%type <expr> Argument
-%type <expr> UnionExpr
-%type <expr> PathExpr
-%type <expr> FilterExpr
-%type <expr> OrExpr
-%type <expr> AndExpr
-%type <expr> EqualityExpr
-%type <expr> RelationalExpr
-%type <expr> AdditiveExpr
-%type <expr> MultiplicativeExpr
-%type <expr> UnaryExpr
+}
 
 %%
 
 Expr:
     OrExpr
     {
-      parser->top_expr_ = $1;
+      parser_->top_expr_ = $1;
+      $$ = $1;
     }
     ;
 
 LocationPath:
     RelativeLocationPath
     {
+      $$ = $1;
       $$->SetAbsolute(false);
     }
     |
     AbsoluteLocationPath
     {
+      $$ = $1;
       $$->SetAbsolute(true);
     }
     ;
@@ -176,11 +172,13 @@
     |
     RelativeLocationPath '/' Step
     {
+      $$ = $1;
       $$->AppendStep($3);
     }
     |
     RelativeLocationPath DescendantOrSelf Step
     {
+      $$ = $1;
       $$->AppendStep($2);
       $$->AppendStep($3);
     }
@@ -195,12 +193,12 @@
         $$ = blink::MakeGarbageCollected<Step>(Step::kChildAxis, *$1);
     }
     |
-    NAMETEST OptionalPredicateList
+    kNameTest OptionalPredicateList
     {
       AtomicString local_name;
       AtomicString namespace_uri;
-      if (!parser->ExpandQName(*$1, local_name, namespace_uri)) {
-        parser->got_namespace_error_ = true;
+      if (!parser_->ExpandQName($1, local_name, namespace_uri)) {
+        parser_->got_namespace_error_ = true;
         YYABORT;
       }
 
@@ -208,7 +206,6 @@
         $$ = blink::MakeGarbageCollected<Step>(Step::kChildAxis, Step::NodeTest(Step::NodeTest::kNameTest, local_name, namespace_uri), *$2);
       else
         $$ = blink::MakeGarbageCollected<Step>(Step::kChildAxis, Step::NodeTest(Step::NodeTest::kNameTest, local_name, namespace_uri));
-       parser->DeleteString($1);
     }
     |
     AxisSpecifier NodeTest OptionalPredicateList
@@ -219,12 +216,12 @@
         $$ = blink::MakeGarbageCollected<Step>($1, *$2);
     }
     |
-    AxisSpecifier NAMETEST OptionalPredicateList
+    AxisSpecifier kNameTest OptionalPredicateList
     {
       AtomicString local_name;
       AtomicString namespace_uri;
-      if (!parser->ExpandQName(*$2, local_name, namespace_uri)) {
-        parser->got_namespace_error_ = true;
+      if (!parser_->ExpandQName($2, local_name, namespace_uri)) {
+        parser_->got_namespace_error_ = true;
         YYABORT;
       }
 
@@ -232,14 +229,13 @@
         $$ = blink::MakeGarbageCollected<Step>($1, Step::NodeTest(Step::NodeTest::kNameTest, local_name, namespace_uri), *$3);
       else
         $$ = blink::MakeGarbageCollected<Step>($1, Step::NodeTest(Step::NodeTest::kNameTest, local_name, namespace_uri));
-      parser->DeleteString($2);
     }
     |
     AbbreviatedStep
     ;
 
 AxisSpecifier:
-    AXISNAME
+    kAxisName
     |
     '@'
     {
@@ -248,29 +244,24 @@
     ;
 
 NodeTest:
-    NODETYPE '(' ')'
+    kNodeType '(' ')'
     {
-      if (*$1 == "node")
+      if ($1 == "node")
         $$ = blink::MakeGarbageCollected<Step::NodeTest>(Step::NodeTest::kAnyNodeTest);
-      else if (*$1 == "text")
+      else if ($1 == "text")
         $$ = blink::MakeGarbageCollected<Step::NodeTest>(Step::NodeTest::kTextNodeTest);
-      else if (*$1 == "comment")
+      else if ($1 == "comment")
         $$ = blink::MakeGarbageCollected<Step::NodeTest>(Step::NodeTest::kCommentNodeTest);
-
-      parser->DeleteString($1);
     }
     |
-    PI '(' ')'
+    kPI '(' ')'
     {
       $$ = blink::MakeGarbageCollected<Step::NodeTest>(Step::NodeTest::kProcessingInstructionNodeTest);
-      parser->DeleteString($1);
     }
     |
-    PI '(' LITERAL ')'
+    kPI '(' kLiteral ')'
     {
-      $$ = blink::MakeGarbageCollected<Step::NodeTest>(Step::NodeTest::kProcessingInstructionNodeTest, $3->StripWhiteSpace());
-      parser->DeleteString($1);
-      parser->DeleteString($3);
+      $$ = blink::MakeGarbageCollected<Step::NodeTest>(Step::NodeTest::kProcessingInstructionNodeTest, $3.StripWhiteSpace());
     }
     ;
 
@@ -281,6 +272,9 @@
     }
     |
     PredicateList
+    {
+      $$ = $1;
+    }
     ;
 
 PredicateList:
@@ -292,6 +286,7 @@
     |
     PredicateList Predicate
     {
+      $$ = $1;
       $$->push_back(blink::MakeGarbageCollected<blink::xpath::Predicate>($2));
     }
     ;
@@ -304,7 +299,7 @@
     ;
 
 DescendantOrSelf:
-    SLASHSLASH
+    kSlashSlash
     {
       $$ = blink::MakeGarbageCollected<Step>(Step::kDescendantOrSelfAxis, Step::NodeTest(Step::NodeTest::kAnyNodeTest));
     }
@@ -316,17 +311,16 @@
       $$ = blink::MakeGarbageCollected<Step>(Step::kSelfAxis, Step::NodeTest(Step::NodeTest::kAnyNodeTest));
     }
     |
-    DOTDOT
+    kDotDot
     {
       $$ = blink::MakeGarbageCollected<Step>(Step::kParentAxis, Step::NodeTest(Step::NodeTest::kAnyNodeTest));
     }
     ;
 
 PrimaryExpr:
-    VARIABLEREFERENCE
+    kVariableReference
     {
-      $$ = blink::MakeGarbageCollected<blink::xpath::VariableReference>(*$1);
-      parser->DeleteString($1);
+      $$ = blink::MakeGarbageCollected<blink::xpath::VariableReference>($1);
     }
     |
     '(' Expr ')'
@@ -334,36 +328,32 @@
       $$ = $2;
     }
     |
-    LITERAL
+    kLiteral
     {
-      $$ = blink::MakeGarbageCollected<blink::xpath::StringExpression>(*$1);
-      parser->DeleteString($1);
+      $$ = blink::MakeGarbageCollected<blink::xpath::StringExpression>($1);
     }
     |
-    NUMBER
+    kNumber
     {
-      $$ = blink::MakeGarbageCollected<blink::xpath::Number>($1->ToDouble());
-      parser->DeleteString($1);
+      $$ = blink::MakeGarbageCollected<blink::xpath::Number>($1.ToDouble());
     }
     |
     FunctionCall
     ;
 
 FunctionCall:
-    FUNCTIONNAME '(' ')'
+    kFunctionName '(' ')'
     {
-      $$ = blink::xpath::CreateFunction(*$1);
+      $$ = blink::xpath::CreateFunction($1);
       if (!$$)
         YYABORT;
-      parser->DeleteString($1);
     }
     |
-    FUNCTIONNAME '(' ArgumentList ')'
+    kFunctionName '(' ArgumentList ')'
     {
-      $$ = blink::xpath::CreateFunction(*$1, *$3);
+      $$ = blink::xpath::CreateFunction($1, *$3);
       if (!$$)
         YYABORT;
-      parser->DeleteString($1);
     }
     ;
 
@@ -376,6 +366,7 @@
     |
     ArgumentList ',' Argument
     {
+      $$ = $1;
       $$->push_back($3);
     }
     ;
@@ -429,7 +420,7 @@
 OrExpr:
     AndExpr
     |
-    OrExpr OR AndExpr
+    OrExpr kOr AndExpr
     {
       $$ = blink::MakeGarbageCollected<blink::xpath::LogicalOp>(blink::xpath::LogicalOp::kOP_Or, $1, $3);
     }
@@ -438,7 +429,7 @@
 AndExpr:
     EqualityExpr
     |
-    AndExpr AND EqualityExpr
+    AndExpr kAnd EqualityExpr
     {
       $$ = blink::MakeGarbageCollected<blink::xpath::LogicalOp>(blink::xpath::LogicalOp::kOP_And, $1, $3);
     }
@@ -447,7 +438,7 @@
 EqualityExpr:
     RelationalExpr
     |
-    EqualityExpr EQOP RelationalExpr
+    EqualityExpr kEqOp RelationalExpr
     {
       $$ = blink::MakeGarbageCollected<blink::xpath::EqTestOp>($2, $1, $3);
     }
@@ -456,7 +447,7 @@
 RelationalExpr:
     AdditiveExpr
     |
-    RelationalExpr RELOP AdditiveExpr
+    RelationalExpr kRelOp AdditiveExpr
     {
       $$ = blink::MakeGarbageCollected<blink::xpath::EqTestOp>($2, $1, $3);
     }
@@ -465,12 +456,12 @@
 AdditiveExpr:
     MultiplicativeExpr
     |
-    AdditiveExpr PLUS MultiplicativeExpr
+    AdditiveExpr kPlus MultiplicativeExpr
     {
       $$ = blink::MakeGarbageCollected<blink::xpath::NumericOp>(blink::xpath::NumericOp::kOP_Add, $1, $3);
     }
     |
-    AdditiveExpr MINUS MultiplicativeExpr
+    AdditiveExpr kMinus MultiplicativeExpr
     {
       $$ = blink::MakeGarbageCollected<blink::xpath::NumericOp>(blink::xpath::NumericOp::kOP_Sub, $1, $3);
     }
@@ -479,7 +470,7 @@
 MultiplicativeExpr:
     UnaryExpr
     |
-    MultiplicativeExpr MULOP UnaryExpr
+    MultiplicativeExpr kMulOp UnaryExpr
     {
       $$ = blink::MakeGarbageCollected<blink::xpath::NumericOp>($2, $1, $3);
     }
@@ -488,7 +479,7 @@
 UnaryExpr:
     UnionExpr
     |
-    MINUS UnaryExpr
+    kMinus UnaryExpr
     {
       $$ = blink::MakeGarbageCollected<blink::xpath::Negative>();
       $$->AddSubExpression($2);
diff --git a/third_party/blink/renderer/core/xml/xpath_grammar_generated.cc b/third_party/blink/renderer/core/xml/xpath_grammar_generated.cc
index a457e9b..c3b0deba 100644
--- a/third_party/blink/renderer/core/xml/xpath_grammar_generated.cc
+++ b/third_party/blink/renderer/core/xml/xpath_grammar_generated.cc
@@ -1,79 +1,45 @@
 // clang-format off
-/* A Bison parser, made by GNU Bison 3.4.1.  */
+// A Bison parser, made by GNU Bison 3.4.2.
 
-/* Bison implementation for Yacc-like parsers in C
+// Skeleton implementation for Bison LALR(1) parsers in C++
 
-   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,
-   Inc.
+// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc.
 
-   This program is free software: you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation, either version 3 of the License, or
-   (at your option) any later version.
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
 
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
 
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+// You should have received a copy of the GNU General Public License
+// along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-/* As a special exception, you may create a larger work that contains
-   part or all of the Bison parser skeleton and distribute that work
-   under terms of your choice, so long as that work isn't itself a
-   parser generator using the skeleton or a modified version thereof
-   as a parser skeleton.  Alternatively, if you modify or redistribute
-   the parser skeleton itself, you may (at your option) remove this
-   special exception, which will cause the skeleton and the resulting
-   Bison output files to be licensed under the GNU General Public
-   License without this special exception.
+// As a special exception, you may create a larger work that contains
+// part or all of the Bison parser skeleton and distribute that work
+// under terms of your choice, so long as that work isn't itself a
+// parser generator using the skeleton or a modified version thereof
+// as a parser skeleton.  Alternatively, if you modify or redistribute
+// the parser skeleton itself, you may (at your option) remove this
+// special exception, which will cause the skeleton and the resulting
+// Bison output files to be licensed under the GNU General Public
+// License without this special exception.
 
-   This special exception was added by the Free Software Foundation in
-   version 2.2 of Bison.  */
+// This special exception was added by the Free Software Foundation in
+// version 2.2 of Bison.
 
-/* C LALR(1) parser skeleton written by Richard Stallman, by
-   simplifying the original so-called "semantic" parser.  */
-
-/* All symbols defined below should begin with yy or YY, to avoid
-   infringing on user name space.  This should be done even for local
-   variables, as they might otherwise be expanded by user macros.
-   There are some unavoidable exceptions within include files to
-   define necessary library symbols; they are noted "INFRINGES ON
-   USER NAME SPACE" below.  */
-
-/* Undocumented macros, especially those whose name start with YY_,
-   are private implementation details.  Do not rely on them.  */
-
-/* Identify Bison output.  */
-#define YYBISON 1
-
-/* Bison version.  */
-#define YYBISON_VERSION "3.4.1"
-
-/* Skeleton name.  */
-#define YYSKELETON_NAME "yacc.c"
-
-/* Pure parsers.  */
-#define YYPURE 2
-
-/* Push parsers.  */
-#define YYPUSH 0
-
-/* Pull parsers.  */
-#define YYPULL 1
+// Undocumented macros, especially those whose name start with YY_,
+// are private implementation details.  Do not rely on them.
 
 
-/* Substitute the variable and function names.  */
-#define yyparse         xpathyyparse
-#define yylex           xpathyylex
-#define yyerror         xpathyyerror
-#define yydebug         xpathyydebug
-#define yynerrs         xpathyynerrs
+// Take the name prefix into account.
+#define yylex   xpathyylex
 
-
-/* First part of user prologue.  */
-#line 43 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+// First part of user prologue.
+#line 52 "third_party/blink/renderer/core/xml/xpath_grammar.y"
 
 
 #include "third_party/blink/renderer/core/xml/xpath_functions.h"
@@ -84,379 +50,1896 @@
 #include "third_party/blink/renderer/core/xml/xpath_step.h"
 #include "third_party/blink/renderer/core/xml/xpath_variable_reference.h"
 
-// The union below must be located on the stack because it contains raw
-// pointers to Oilpan objects. crbug.com/961413
-#define YYSTACK_USE_ALLOCA 1
-// Bison's bug? YYSTACK_ALLOC is not defined if _MSC_VER.
-#if defined(_MSC_VER)
-#define YYSTACK_ALLOC _alloca
-#endif
-
 #define YYENABLE_NLS 0
-#define YYLTYPE_IS_TRIVIAL 1
+#define YY_EXCEPTIONS 0
 #define YYDEBUG 0
-#define YYMAXDEPTH 10000
 
 using blink::xpath::Step;
 
-#line 102 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-
-# ifndef YY_NULLPTR
-#  if defined __cplusplus
-#   if 201103L <= __cplusplus
-#    define YY_NULLPTR nullptr
-#   else
-#    define YY_NULLPTR 0
-#   endif
-#  else
-#   define YY_NULLPTR ((void*)0)
-#  endif
-# endif
-
-/* Enabling verbose error messages.  */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
-
-/* Use api.header.include to #include this header
-   instead of duplicating it here.  */
-#ifndef YY_XPATHYY_THIRD_PARTY_BLINK_RENDERER_CORE_XML_XPATH_GRAMMAR_GENERATED_HH_INCLUDED
-# define YY_XPATHYY_THIRD_PARTY_BLINK_RENDERER_CORE_XML_XPATH_GRAMMAR_GENERATED_HH_INCLUDED
-/* Debug traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
-#if YYDEBUG
-extern int xpathyydebug;
-#endif
-
-/* Token type.  */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
-  enum yytokentype
-  {
-    MULOP = 258,
-    EQOP = 259,
-    RELOP = 260,
-    PLUS = 261,
-    MINUS = 262,
-    OR = 263,
-    AND = 264,
-    AXISNAME = 265,
-    NODETYPE = 266,
-    PI = 267,
-    FUNCTIONNAME = 268,
-    LITERAL = 269,
-    VARIABLEREFERENCE = 270,
-    NUMBER = 271,
-    DOTDOT = 272,
-    SLASHSLASH = 273,
-    NAMETEST = 274,
-    XPATH_ERROR = 275
-  };
-#endif
-
-/* Value type.  */
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-union YYSTYPE
-{
-#line 73 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-
-  blink::xpath::Step::Axis axis;
-  blink::xpath::Step::NodeTest* node_test;
-  blink::xpath::NumericOp::Opcode num_op;
-  blink::xpath::EqTestOp::Opcode eq_op;
-  String* str;
-  blink::xpath::Expression* expr;
-  blink::HeapVector<blink::Member<blink::xpath::Predicate>>* pred_list;
-  blink::HeapVector<blink::Member<blink::xpath::Expression>>* arg_list;
-  blink::xpath::Step* step;
-  blink::xpath::LocationPath* location_path;
-
-#line 179 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-
-};
-typedef union YYSTYPE YYSTYPE;
-# define YYSTYPE_IS_TRIVIAL 1
-# define YYSTYPE_IS_DECLARED 1
-#endif
+#line 59 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
 
 
-
-int xpathyyparse (blink::xpath::Parser* parser);
-
-#endif /* !YY_XPATHYY_THIRD_PARTY_BLINK_RENDERER_CORE_XML_XPATH_GRAMMAR_GENERATED_HH_INCLUDED  */
-
-/* Second part of user prologue.  */
-#line 86 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+#include "xpath_grammar_generated.h"
 
 
-static int xpathyylex(YYSTYPE* yylval) { return blink::xpath::Parser::Current()->Lex(yylval); }
-static void xpathyyerror(void*, const char*) { }
+// Unqualified %code blocks.
+#line 112 "third_party/blink/renderer/core/xml/xpath_grammar.y"
 
 
-#line 201 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+static int xpathyylex(xpathyy::YyParser::semantic_type* yylval) {
+  return blink::xpath::Parser::Current()->Lex(yylval);
+}
+
+namespace xpathyy {
+void YyParser::error(const std::string&) { }
+}
 
 
-#ifdef short
-# undef short
-#endif
+#line 78 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
 
-#ifdef YYTYPE_UINT8
-typedef YYTYPE_UINT8 yytype_uint8;
-#else
-typedef unsigned char yytype_uint8;
-#endif
-
-#ifdef YYTYPE_INT8
-typedef YYTYPE_INT8 yytype_int8;
-#else
-typedef signed char yytype_int8;
-#endif
-
-#ifdef YYTYPE_UINT16
-typedef YYTYPE_UINT16 yytype_uint16;
-#else
-typedef unsigned short yytype_uint16;
-#endif
-
-#ifdef YYTYPE_INT16
-typedef YYTYPE_INT16 yytype_int16;
-#else
-typedef short yytype_int16;
-#endif
-
-#ifndef YYSIZE_T
-# ifdef __SIZE_TYPE__
-#  define YYSIZE_T __SIZE_TYPE__
-# elif defined size_t
-#  define YYSIZE_T size_t
-# elif ! defined YYSIZE_T
-#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-#  define YYSIZE_T size_t
-# else
-#  define YYSIZE_T unsigned
-# endif
-#endif
-
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
 
 #ifndef YY_
 # if defined YYENABLE_NLS && YYENABLE_NLS
 #  if ENABLE_NLS
-#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
+#   include <libintl.h> // FIXME: INFRINGES ON USER NAME SPACE.
+#   define YY_(msgid) dgettext ("bison-runtime", msgid)
 #  endif
 # endif
 # ifndef YY_
-#  define YY_(Msgid) Msgid
+#  define YY_(msgid) msgid
 # endif
 #endif
 
-#ifndef YY_ATTRIBUTE
-# if (defined __GNUC__                                               \
-      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
-     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
-#  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
+// Whether we are compiled with exception support.
+#ifndef YY_EXCEPTIONS
+# if defined __GNUC__ && !defined __EXCEPTIONS
+#  define YY_EXCEPTIONS 0
 # else
-#  define YY_ATTRIBUTE(Spec) /* empty */
+#  define YY_EXCEPTIONS 1
 # endif
 #endif
 
-#ifndef YY_ATTRIBUTE_PURE
-# define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
+
+
+// Enable debugging if requested.
+#if YYDEBUG
+
+// A pseudo ostream that takes yydebug_ into account.
+# define YYCDEBUG if (yydebug_) (*yycdebug_)
+
+# define YY_SYMBOL_PRINT(Title, Symbol)         \
+  do {                                          \
+    if (yydebug_)                               \
+    {                                           \
+      *yycdebug_ << Title << ' ';               \
+      yy_print_ (*yycdebug_, Symbol);           \
+      *yycdebug_ << '\n';                       \
+    }                                           \
+  } while (false)
+
+# define YY_REDUCE_PRINT(Rule)          \
+  do {                                  \
+    if (yydebug_)                       \
+      yy_reduce_print_ (Rule);          \
+  } while (false)
+
+# define YY_STACK_PRINT()               \
+  do {                                  \
+    if (yydebug_)                       \
+      yystack_print_ ();                \
+  } while (false)
+
+#else // !YYDEBUG
+
+# define YYCDEBUG if (false) std::cerr
+# define YY_SYMBOL_PRINT(Title, Symbol)  YYUSE (Symbol)
+# define YY_REDUCE_PRINT(Rule)           static_cast<void> (0)
+# define YY_STACK_PRINT()                static_cast<void> (0)
+
+#endif // !YYDEBUG
+
+#define yyerrok         (yyerrstatus_ = 0)
+#define yyclearin       (yyla.clear ())
+
+#define YYACCEPT        goto yyacceptlab
+#define YYABORT         goto yyabortlab
+#define YYERROR         goto yyerrorlab
+#define YYRECOVERING()  (!!yyerrstatus_)
+
+namespace xpathyy {
+#line 150 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+
+
+  /// Build a parser object.
+   YyParser :: YyParser  (blink::xpath::Parser* parser__yyarg)
+    :
+#if YYDEBUG
+      yydebug_ (false),
+      yycdebug_ (&std::cerr),
+#endif
+      parser_ (parser__yyarg)
+  {}
+
+   YyParser ::~ YyParser  ()
+  {}
+
+   YyParser ::syntax_error::~syntax_error () YY_NOEXCEPT YY_NOTHROW
+  {}
+
+  /*---------------.
+  | Symbol types.  |
+  `---------------*/
+
+  // basic_symbol.
+#if 201103L <= YY_CPLUSPLUS
+  template <typename Base>
+   YyParser ::basic_symbol<Base>::basic_symbol (basic_symbol&& that)
+    : Base (std::move (that))
+    , value ()
+  {
+    switch (this->type_get ())
+    {
+      case 11: // kNodeType
+      case 12: // kPI
+      case 13: // kFunctionName
+      case 14: // kLiteral
+      case 15: // kVariableReference
+      case 16: // kNumber
+      case 19: // kNameTest
+        value.move< String > (std::move (that.value));
+        break;
+
+      case 45: // ArgumentList
+        value.move< blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Expression>>> > (std::move (that.value));
+        break;
+
+      case 38: // OptionalPredicateList
+      case 39: // PredicateList
+        value.move< blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Predicate>>> > (std::move (that.value));
+        break;
+
+      case 31: // Expr
+      case 40: // Predicate
+      case 43: // PrimaryExpr
+      case 44: // FunctionCall
+      case 46: // Argument
+      case 47: // UnionExpr
+      case 48: // PathExpr
+      case 49: // FilterExpr
+      case 50: // OrExpr
+      case 51: // AndExpr
+      case 52: // EqualityExpr
+      case 53: // RelationalExpr
+      case 54: // AdditiveExpr
+      case 55: // MultiplicativeExpr
+      case 56: // UnaryExpr
+        value.move< blink::Persistent<blink::xpath::Expression> > (std::move (that.value));
+        break;
+
+      case 32: // LocationPath
+      case 33: // AbsoluteLocationPath
+      case 34: // RelativeLocationPath
+        value.move< blink::Persistent<blink::xpath::LocationPath> > (std::move (that.value));
+        break;
+
+      case 37: // NodeTest
+        value.move< blink::Persistent<blink::xpath::Step::NodeTest> > (std::move (that.value));
+        break;
+
+      case 35: // Step
+      case 41: // DescendantOrSelf
+      case 42: // AbbreviatedStep
+        value.move< blink::Persistent<blink::xpath::Step> > (std::move (that.value));
+        break;
+
+      case 4: // kEqOp
+      case 5: // kRelOp
+        value.move< blink::xpath::EqTestOp::Opcode > (std::move (that.value));
+        break;
+
+      case 3: // kMulOp
+        value.move< blink::xpath::NumericOp::Opcode > (std::move (that.value));
+        break;
+
+      case 10: // kAxisName
+      case 36: // AxisSpecifier
+        value.move< blink::xpath::Step::Axis > (std::move (that.value));
+        break;
+
+      default:
+        break;
+    }
+
+  }
 #endif
 
-#ifndef YY_ATTRIBUTE_UNUSED
-# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
+  template <typename Base>
+   YyParser ::basic_symbol<Base>::basic_symbol (const basic_symbol& that)
+    : Base (that)
+    , value ()
+  {
+    switch (this->type_get ())
+    {
+      case 11: // kNodeType
+      case 12: // kPI
+      case 13: // kFunctionName
+      case 14: // kLiteral
+      case 15: // kVariableReference
+      case 16: // kNumber
+      case 19: // kNameTest
+        value.copy< String > (YY_MOVE (that.value));
+        break;
+
+      case 45: // ArgumentList
+        value.copy< blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Expression>>> > (YY_MOVE (that.value));
+        break;
+
+      case 38: // OptionalPredicateList
+      case 39: // PredicateList
+        value.copy< blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Predicate>>> > (YY_MOVE (that.value));
+        break;
+
+      case 31: // Expr
+      case 40: // Predicate
+      case 43: // PrimaryExpr
+      case 44: // FunctionCall
+      case 46: // Argument
+      case 47: // UnionExpr
+      case 48: // PathExpr
+      case 49: // FilterExpr
+      case 50: // OrExpr
+      case 51: // AndExpr
+      case 52: // EqualityExpr
+      case 53: // RelationalExpr
+      case 54: // AdditiveExpr
+      case 55: // MultiplicativeExpr
+      case 56: // UnaryExpr
+        value.copy< blink::Persistent<blink::xpath::Expression> > (YY_MOVE (that.value));
+        break;
+
+      case 32: // LocationPath
+      case 33: // AbsoluteLocationPath
+      case 34: // RelativeLocationPath
+        value.copy< blink::Persistent<blink::xpath::LocationPath> > (YY_MOVE (that.value));
+        break;
+
+      case 37: // NodeTest
+        value.copy< blink::Persistent<blink::xpath::Step::NodeTest> > (YY_MOVE (that.value));
+        break;
+
+      case 35: // Step
+      case 41: // DescendantOrSelf
+      case 42: // AbbreviatedStep
+        value.copy< blink::Persistent<blink::xpath::Step> > (YY_MOVE (that.value));
+        break;
+
+      case 4: // kEqOp
+      case 5: // kRelOp
+        value.copy< blink::xpath::EqTestOp::Opcode > (YY_MOVE (that.value));
+        break;
+
+      case 3: // kMulOp
+        value.copy< blink::xpath::NumericOp::Opcode > (YY_MOVE (that.value));
+        break;
+
+      case 10: // kAxisName
+      case 36: // AxisSpecifier
+        value.copy< blink::xpath::Step::Axis > (YY_MOVE (that.value));
+        break;
+
+      default:
+        break;
+    }
+
+  }
+
+
+
+  template <typename Base>
+  bool
+   YyParser ::basic_symbol<Base>::empty () const YY_NOEXCEPT
+  {
+    return Base::type_get () == empty_symbol;
+  }
+
+  template <typename Base>
+  void
+   YyParser ::basic_symbol<Base>::move (basic_symbol& s)
+  {
+    super_type::move (s);
+    switch (this->type_get ())
+    {
+      case 11: // kNodeType
+      case 12: // kPI
+      case 13: // kFunctionName
+      case 14: // kLiteral
+      case 15: // kVariableReference
+      case 16: // kNumber
+      case 19: // kNameTest
+        value.move< String > (YY_MOVE (s.value));
+        break;
+
+      case 45: // ArgumentList
+        value.move< blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Expression>>> > (YY_MOVE (s.value));
+        break;
+
+      case 38: // OptionalPredicateList
+      case 39: // PredicateList
+        value.move< blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Predicate>>> > (YY_MOVE (s.value));
+        break;
+
+      case 31: // Expr
+      case 40: // Predicate
+      case 43: // PrimaryExpr
+      case 44: // FunctionCall
+      case 46: // Argument
+      case 47: // UnionExpr
+      case 48: // PathExpr
+      case 49: // FilterExpr
+      case 50: // OrExpr
+      case 51: // AndExpr
+      case 52: // EqualityExpr
+      case 53: // RelationalExpr
+      case 54: // AdditiveExpr
+      case 55: // MultiplicativeExpr
+      case 56: // UnaryExpr
+        value.move< blink::Persistent<blink::xpath::Expression> > (YY_MOVE (s.value));
+        break;
+
+      case 32: // LocationPath
+      case 33: // AbsoluteLocationPath
+      case 34: // RelativeLocationPath
+        value.move< blink::Persistent<blink::xpath::LocationPath> > (YY_MOVE (s.value));
+        break;
+
+      case 37: // NodeTest
+        value.move< blink::Persistent<blink::xpath::Step::NodeTest> > (YY_MOVE (s.value));
+        break;
+
+      case 35: // Step
+      case 41: // DescendantOrSelf
+      case 42: // AbbreviatedStep
+        value.move< blink::Persistent<blink::xpath::Step> > (YY_MOVE (s.value));
+        break;
+
+      case 4: // kEqOp
+      case 5: // kRelOp
+        value.move< blink::xpath::EqTestOp::Opcode > (YY_MOVE (s.value));
+        break;
+
+      case 3: // kMulOp
+        value.move< blink::xpath::NumericOp::Opcode > (YY_MOVE (s.value));
+        break;
+
+      case 10: // kAxisName
+      case 36: // AxisSpecifier
+        value.move< blink::xpath::Step::Axis > (YY_MOVE (s.value));
+        break;
+
+      default:
+        break;
+    }
+
+  }
+
+  // by_type.
+   YyParser ::by_type::by_type ()
+    : type (empty_symbol)
+  {}
+
+#if 201103L <= YY_CPLUSPLUS
+   YyParser ::by_type::by_type (by_type&& that)
+    : type (that.type)
+  {
+    that.clear ();
+  }
 #endif
 
-/* Suppress unused-variable warnings by "using" E.  */
-#if ! defined lint || defined __GNUC__
-# define YYUSE(E) ((void) (E))
+   YyParser ::by_type::by_type (const by_type& that)
+    : type (that.type)
+  {}
+
+   YyParser ::by_type::by_type (token_type t)
+    : type (yytranslate_ (t))
+  {}
+
+  void
+   YyParser ::by_type::clear ()
+  {
+    type = empty_symbol;
+  }
+
+  void
+   YyParser ::by_type::move (by_type& that)
+  {
+    type = that.type;
+    that.clear ();
+  }
+
+  int
+   YyParser ::by_type::type_get () const YY_NOEXCEPT
+  {
+    return type;
+  }
+
+
+  // by_state.
+   YyParser ::by_state::by_state () YY_NOEXCEPT
+    : state (empty_state)
+  {}
+
+   YyParser ::by_state::by_state (const by_state& that) YY_NOEXCEPT
+    : state (that.state)
+  {}
+
+  void
+   YyParser ::by_state::clear () YY_NOEXCEPT
+  {
+    state = empty_state;
+  }
+
+  void
+   YyParser ::by_state::move (by_state& that)
+  {
+    state = that.state;
+    that.clear ();
+  }
+
+   YyParser ::by_state::by_state (state_type s) YY_NOEXCEPT
+    : state (s)
+  {}
+
+   YyParser ::symbol_number_type
+   YyParser ::by_state::type_get () const YY_NOEXCEPT
+  {
+    if (state == empty_state)
+      return empty_symbol;
+    else
+      return yystos_[state];
+  }
+
+   YyParser ::stack_symbol_type::stack_symbol_type ()
+  {}
+
+   YyParser ::stack_symbol_type::stack_symbol_type (YY_RVREF (stack_symbol_type) that)
+    : super_type (YY_MOVE (that.state))
+  {
+    switch (that.type_get ())
+    {
+      case 11: // kNodeType
+      case 12: // kPI
+      case 13: // kFunctionName
+      case 14: // kLiteral
+      case 15: // kVariableReference
+      case 16: // kNumber
+      case 19: // kNameTest
+        value.YY_MOVE_OR_COPY< String > (YY_MOVE (that.value));
+        break;
+
+      case 45: // ArgumentList
+        value.YY_MOVE_OR_COPY< blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Expression>>> > (YY_MOVE (that.value));
+        break;
+
+      case 38: // OptionalPredicateList
+      case 39: // PredicateList
+        value.YY_MOVE_OR_COPY< blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Predicate>>> > (YY_MOVE (that.value));
+        break;
+
+      case 31: // Expr
+      case 40: // Predicate
+      case 43: // PrimaryExpr
+      case 44: // FunctionCall
+      case 46: // Argument
+      case 47: // UnionExpr
+      case 48: // PathExpr
+      case 49: // FilterExpr
+      case 50: // OrExpr
+      case 51: // AndExpr
+      case 52: // EqualityExpr
+      case 53: // RelationalExpr
+      case 54: // AdditiveExpr
+      case 55: // MultiplicativeExpr
+      case 56: // UnaryExpr
+        value.YY_MOVE_OR_COPY< blink::Persistent<blink::xpath::Expression> > (YY_MOVE (that.value));
+        break;
+
+      case 32: // LocationPath
+      case 33: // AbsoluteLocationPath
+      case 34: // RelativeLocationPath
+        value.YY_MOVE_OR_COPY< blink::Persistent<blink::xpath::LocationPath> > (YY_MOVE (that.value));
+        break;
+
+      case 37: // NodeTest
+        value.YY_MOVE_OR_COPY< blink::Persistent<blink::xpath::Step::NodeTest> > (YY_MOVE (that.value));
+        break;
+
+      case 35: // Step
+      case 41: // DescendantOrSelf
+      case 42: // AbbreviatedStep
+        value.YY_MOVE_OR_COPY< blink::Persistent<blink::xpath::Step> > (YY_MOVE (that.value));
+        break;
+
+      case 4: // kEqOp
+      case 5: // kRelOp
+        value.YY_MOVE_OR_COPY< blink::xpath::EqTestOp::Opcode > (YY_MOVE (that.value));
+        break;
+
+      case 3: // kMulOp
+        value.YY_MOVE_OR_COPY< blink::xpath::NumericOp::Opcode > (YY_MOVE (that.value));
+        break;
+
+      case 10: // kAxisName
+      case 36: // AxisSpecifier
+        value.YY_MOVE_OR_COPY< blink::xpath::Step::Axis > (YY_MOVE (that.value));
+        break;
+
+      default:
+        break;
+    }
+
+#if 201103L <= YY_CPLUSPLUS
+    // that is emptied.
+    that.state = empty_state;
+#endif
+  }
+
+   YyParser ::stack_symbol_type::stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) that)
+    : super_type (s)
+  {
+    switch (that.type_get ())
+    {
+      case 11: // kNodeType
+      case 12: // kPI
+      case 13: // kFunctionName
+      case 14: // kLiteral
+      case 15: // kVariableReference
+      case 16: // kNumber
+      case 19: // kNameTest
+        value.move< String > (YY_MOVE (that.value));
+        break;
+
+      case 45: // ArgumentList
+        value.move< blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Expression>>> > (YY_MOVE (that.value));
+        break;
+
+      case 38: // OptionalPredicateList
+      case 39: // PredicateList
+        value.move< blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Predicate>>> > (YY_MOVE (that.value));
+        break;
+
+      case 31: // Expr
+      case 40: // Predicate
+      case 43: // PrimaryExpr
+      case 44: // FunctionCall
+      case 46: // Argument
+      case 47: // UnionExpr
+      case 48: // PathExpr
+      case 49: // FilterExpr
+      case 50: // OrExpr
+      case 51: // AndExpr
+      case 52: // EqualityExpr
+      case 53: // RelationalExpr
+      case 54: // AdditiveExpr
+      case 55: // MultiplicativeExpr
+      case 56: // UnaryExpr
+        value.move< blink::Persistent<blink::xpath::Expression> > (YY_MOVE (that.value));
+        break;
+
+      case 32: // LocationPath
+      case 33: // AbsoluteLocationPath
+      case 34: // RelativeLocationPath
+        value.move< blink::Persistent<blink::xpath::LocationPath> > (YY_MOVE (that.value));
+        break;
+
+      case 37: // NodeTest
+        value.move< blink::Persistent<blink::xpath::Step::NodeTest> > (YY_MOVE (that.value));
+        break;
+
+      case 35: // Step
+      case 41: // DescendantOrSelf
+      case 42: // AbbreviatedStep
+        value.move< blink::Persistent<blink::xpath::Step> > (YY_MOVE (that.value));
+        break;
+
+      case 4: // kEqOp
+      case 5: // kRelOp
+        value.move< blink::xpath::EqTestOp::Opcode > (YY_MOVE (that.value));
+        break;
+
+      case 3: // kMulOp
+        value.move< blink::xpath::NumericOp::Opcode > (YY_MOVE (that.value));
+        break;
+
+      case 10: // kAxisName
+      case 36: // AxisSpecifier
+        value.move< blink::xpath::Step::Axis > (YY_MOVE (that.value));
+        break;
+
+      default:
+        break;
+    }
+
+    // that is emptied.
+    that.type = empty_symbol;
+  }
+
+#if YY_CPLUSPLUS < 201103L
+   YyParser ::stack_symbol_type&
+   YyParser ::stack_symbol_type::operator= (stack_symbol_type& that)
+  {
+    state = that.state;
+    switch (that.type_get ())
+    {
+      case 11: // kNodeType
+      case 12: // kPI
+      case 13: // kFunctionName
+      case 14: // kLiteral
+      case 15: // kVariableReference
+      case 16: // kNumber
+      case 19: // kNameTest
+        value.move< String > (that.value);
+        break;
+
+      case 45: // ArgumentList
+        value.move< blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Expression>>> > (that.value);
+        break;
+
+      case 38: // OptionalPredicateList
+      case 39: // PredicateList
+        value.move< blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Predicate>>> > (that.value);
+        break;
+
+      case 31: // Expr
+      case 40: // Predicate
+      case 43: // PrimaryExpr
+      case 44: // FunctionCall
+      case 46: // Argument
+      case 47: // UnionExpr
+      case 48: // PathExpr
+      case 49: // FilterExpr
+      case 50: // OrExpr
+      case 51: // AndExpr
+      case 52: // EqualityExpr
+      case 53: // RelationalExpr
+      case 54: // AdditiveExpr
+      case 55: // MultiplicativeExpr
+      case 56: // UnaryExpr
+        value.move< blink::Persistent<blink::xpath::Expression> > (that.value);
+        break;
+
+      case 32: // LocationPath
+      case 33: // AbsoluteLocationPath
+      case 34: // RelativeLocationPath
+        value.move< blink::Persistent<blink::xpath::LocationPath> > (that.value);
+        break;
+
+      case 37: // NodeTest
+        value.move< blink::Persistent<blink::xpath::Step::NodeTest> > (that.value);
+        break;
+
+      case 35: // Step
+      case 41: // DescendantOrSelf
+      case 42: // AbbreviatedStep
+        value.move< blink::Persistent<blink::xpath::Step> > (that.value);
+        break;
+
+      case 4: // kEqOp
+      case 5: // kRelOp
+        value.move< blink::xpath::EqTestOp::Opcode > (that.value);
+        break;
+
+      case 3: // kMulOp
+        value.move< blink::xpath::NumericOp::Opcode > (that.value);
+        break;
+
+      case 10: // kAxisName
+      case 36: // AxisSpecifier
+        value.move< blink::xpath::Step::Axis > (that.value);
+        break;
+
+      default:
+        break;
+    }
+
+    // that is emptied.
+    that.state = empty_state;
+    return *this;
+  }
+#endif
+
+  template <typename Base>
+  void
+   YyParser ::yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const
+  {
+    if (yymsg)
+      YY_SYMBOL_PRINT (yymsg, yysym);
+  }
+
+#if YYDEBUG
+  template <typename Base>
+  void
+   YyParser ::yy_print_ (std::ostream& yyo,
+                                     const basic_symbol<Base>& yysym) const
+  {
+    std::ostream& yyoutput = yyo;
+    YYUSE (yyoutput);
+    symbol_number_type yytype = yysym.type_get ();
+#if defined __GNUC__ && ! defined __clang__ && ! defined __ICC && __GNUC__ * 100 + __GNUC_MINOR__ <= 408
+    // Avoid a (spurious) G++ 4.8 warning about "array subscript is
+    // below array bounds".
+    if (yysym.empty ())
+      std::abort ();
+#endif
+    yyo << (yytype < yyntokens_ ? "token" : "nterm")
+        << ' ' << yytname_[yytype] << " (";
+    YYUSE (yytype);
+    yyo << ')';
+  }
+#endif
+
+  void
+   YyParser ::yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym)
+  {
+    if (m)
+      YY_SYMBOL_PRINT (m, sym);
+    yystack_.push (YY_MOVE (sym));
+  }
+
+  void
+   YyParser ::yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym)
+  {
+#if 201103L <= YY_CPLUSPLUS
+    yypush_ (m, stack_symbol_type (s, std::move (sym)));
 #else
-# define YYUSE(E) /* empty */
+    stack_symbol_type ss (s, sym);
+    yypush_ (m, ss);
 #endif
+  }
 
-#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
-/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
-    _Pragma ("GCC diagnostic push") \
-    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
-    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
-    _Pragma ("GCC diagnostic pop")
-#else
-# define YY_INITIAL_VALUE(Value) Value
-#endif
-#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END
-#endif
-#ifndef YY_INITIAL_VALUE
-# define YY_INITIAL_VALUE(Value) /* Nothing. */
-#endif
+  void
+   YyParser ::yypop_ (int n)
+  {
+    yystack_.pop (n);
+  }
+
+#if YYDEBUG
+  std::ostream&
+   YyParser ::debug_stream () const
+  {
+    return *yycdebug_;
+  }
+
+  void
+   YyParser ::set_debug_stream (std::ostream& o)
+  {
+    yycdebug_ = &o;
+  }
 
 
-#define YY_ASSERT(E) ((void) (0 && (E)))
+   YyParser ::debug_level_type
+   YyParser ::debug_level () const
+  {
+    return yydebug_;
+  }
 
-#if ! defined yyoverflow || YYERROR_VERBOSE
+  void
+   YyParser ::set_debug_level (debug_level_type l)
+  {
+    yydebug_ = l;
+  }
+#endif // YYDEBUG
 
-/* The parser invokes alloca or malloc; define the necessary symbols.  */
+   YyParser ::state_type
+   YyParser ::yy_lr_goto_state_ (state_type yystate, int yysym)
+  {
+    int yyr = yypgoto_[yysym - yyntokens_] + yystate;
+    if (0 <= yyr && yyr <= yylast_ && yycheck_[yyr] == yystate)
+      return yytable_[yyr];
+    else
+      return yydefgoto_[yysym - yyntokens_];
+  }
 
-# ifdef YYSTACK_USE_ALLOCA
-#  if YYSTACK_USE_ALLOCA
-#   ifdef __GNUC__
-#    define YYSTACK_ALLOC __builtin_alloca
-#   elif defined __BUILTIN_VA_ARG_INCR
-#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
-#   elif defined _AIX
-#    define YYSTACK_ALLOC __alloca
-#   elif defined _MSC_VER
-#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
-#    define alloca _alloca
-#   else
-#    define YYSTACK_ALLOC alloca
-#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
-#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
-#     ifndef EXIT_SUCCESS
-#      define EXIT_SUCCESS 0
-#     endif
-#    endif
-#   endif
-#  endif
-# endif
+  bool
+   YyParser ::yy_pact_value_is_default_ (int yyvalue)
+  {
+    return yyvalue == yypact_ninf_;
+  }
 
-# ifdef YYSTACK_ALLOC
-   /* Pacify GCC's 'empty if-body' warning.  */
-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
-#  ifndef YYSTACK_ALLOC_MAXIMUM
-    /* The OS might guarantee only one guard page at the bottom of the stack,
-       and a page size can be as small as 4096 bytes.  So we cannot safely
-       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
-       to allow for a few compiler-allocated temporary stack slots.  */
-#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
-#  endif
-# else
-#  define YYSTACK_ALLOC YYMALLOC
-#  define YYSTACK_FREE YYFREE
-#  ifndef YYSTACK_ALLOC_MAXIMUM
-#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
-#  endif
-#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
-       && ! ((defined YYMALLOC || defined malloc) \
-             && (defined YYFREE || defined free)))
-#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#   ifndef EXIT_SUCCESS
-#    define EXIT_SUCCESS 0
-#   endif
-#  endif
-#  ifndef YYMALLOC
-#   define YYMALLOC malloc
-#   if ! defined malloc && ! defined EXIT_SUCCESS
-void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
-#   endif
-#  endif
-#  ifndef YYFREE
-#   define YYFREE free
-#   if ! defined free && ! defined EXIT_SUCCESS
-void free (void *); /* INFRINGES ON USER NAME SPACE */
-#   endif
-#  endif
-# endif
-#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
+  bool
+   YyParser ::yy_table_value_is_error_ (int yyvalue)
+  {
+    return yyvalue == yytable_ninf_;
+  }
+
+  int
+   YyParser ::operator() ()
+  {
+    return parse ();
+  }
+
+  int
+   YyParser ::parse ()
+  {
+    // State.
+    int yyn;
+    /// Length of the RHS of the rule being reduced.
+    int yylen = 0;
+
+    // Error handling.
+    int yynerrs_ = 0;
+    int yyerrstatus_ = 0;
+
+    /// The lookahead symbol.
+    symbol_type yyla;
+
+    /// The return value of parse ().
+    int yyresult;
+
+#if YY_EXCEPTIONS
+    try
+#endif // YY_EXCEPTIONS
+      {
+    YYCDEBUG << "Starting parse\n";
 
 
-#if (! defined yyoverflow \
-     && (! defined __cplusplus \
-         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+    /* Initialize the stack.  The initial state will be set in
+       yynewstate, since the latter expects the semantical and the
+       location values to have been already stored, initialize these
+       stacks with a primary value.  */
+    yystack_.clear ();
+    yypush_ (YY_NULLPTR, 0, YY_MOVE (yyla));
 
-/* A type that is properly aligned for any stack member.  */
-union yyalloc
-{
-  yytype_int16 yyss_alloc;
-  YYSTYPE yyvs_alloc;
-};
+  /*-----------------------------------------------.
+  | yynewstate -- push a new symbol on the stack.  |
+  `-----------------------------------------------*/
+  yynewstate:
+    YYCDEBUG << "Entering state " << yystack_[0].state << '\n';
 
-/* The size of the maximum gap between one aligned stack and the next.  */
-# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+    // Accept?
+    if (yystack_[0].state == yyfinal_)
+      YYACCEPT;
 
-/* The size of an array large to enough to hold all stacks, each with
-   N elements.  */
-# define YYSTACK_BYTES(N) \
-     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
-      + YYSTACK_GAP_MAXIMUM)
+    goto yybackup;
 
-# define YYCOPY_NEEDED 1
 
-/* Relocate STACK from its old location to the new one.  The
-   local variables YYSIZE and YYSTACKSIZE give the old and new number of
-   elements in the stack, and YYPTR gives the new location of the
-   stack.  Advance YYPTR to a properly aligned location for the next
-   stack.  */
-# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
-    do                                                                  \
-      {                                                                 \
-        YYSIZE_T yynewbytes;                                            \
-        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
-        Stack = &yyptr->Stack_alloc;                                    \
-        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-        yyptr += yynewbytes / sizeof (*yyptr);                          \
-      }                                                                 \
-    while (0)
+  /*-----------.
+  | yybackup.  |
+  `-----------*/
+  yybackup:
+    // Try to take a decision without lookahead.
+    yyn = yypact_[yystack_[0].state];
+    if (yy_pact_value_is_default_ (yyn))
+      goto yydefault;
 
-#endif
+    // Read a lookahead token.
+    if (yyla.empty ())
+      {
+        YYCDEBUG << "Reading a token: ";
+#if YY_EXCEPTIONS
+        try
+#endif // YY_EXCEPTIONS
+          {
+            yyla.type = yytranslate_ (yylex (&yyla.value));
+          }
+#if YY_EXCEPTIONS
+        catch (const syntax_error& yyexc)
+          {
+            YYCDEBUG << "Caught exception: " << yyexc.what() << '\n';
+            error (yyexc);
+            goto yyerrlab1;
+          }
+#endif // YY_EXCEPTIONS
+      }
+    YY_SYMBOL_PRINT ("Next token is", yyla);
 
-#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
-/* Copy COUNT objects from SRC to DST.  The source and destination do
-   not overlap.  */
-# ifndef YYCOPY
-#  if defined __GNUC__ && 1 < __GNUC__
-#   define YYCOPY(Dst, Src, Count) \
-      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
-#  else
-#   define YYCOPY(Dst, Src, Count)              \
-      do                                        \
-        {                                       \
-          YYSIZE_T yyi;                         \
-          for (yyi = 0; yyi < (Count); yyi++)   \
-            (Dst)[yyi] = (Src)[yyi];            \
-        }                                       \
-      while (0)
-#  endif
-# endif
-#endif /* !YYCOPY_NEEDED */
+    /* If the proper action on seeing token YYLA.TYPE is to reduce or
+       to detect an error, take that action.  */
+    yyn += yyla.type_get ();
+    if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yyla.type_get ())
+      goto yydefault;
 
-/* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  47
-/* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   122
+    // Reduce or error.
+    yyn = yytable_[yyn];
+    if (yyn <= 0)
+      {
+        if (yy_table_value_is_error_ (yyn))
+          goto yyerrlab;
+        yyn = -yyn;
+        goto yyreduce;
+      }
 
-/* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  30
-/* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  27
-/* YYNRULES -- Number of rules.  */
-#define YYNRULES  61
-/* YYNSTATES -- Number of states.  */
-#define YYNSTATES  94
+    // Count tokens shifted since error; after three, turn off error status.
+    if (yyerrstatus_)
+      --yyerrstatus_;
 
-#define YYUNDEFTOK  2
-#define YYMAXUTOK   275
+    // Shift the lookahead token.
+    yypush_ ("Shifting", yyn, YY_MOVE (yyla));
+    goto yynewstate;
 
-/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
-   as returned by yylex, with out-of-bounds checking.  */
-#define YYTRANSLATE(YYX)                                                \
-  ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
-/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
-   as returned by yylex.  */
-static const yytype_uint8 yytranslate[] =
-{
+  /*-----------------------------------------------------------.
+  | yydefault -- do the default action for the current state.  |
+  `-----------------------------------------------------------*/
+  yydefault:
+    yyn = yydefact_[yystack_[0].state];
+    if (yyn == 0)
+      goto yyerrlab;
+    goto yyreduce;
+
+
+  /*-----------------------------.
+  | yyreduce -- do a reduction.  |
+  `-----------------------------*/
+  yyreduce:
+    yylen = yyr2_[yyn];
+    {
+      stack_symbol_type yylhs;
+      yylhs.state = yy_lr_goto_state_ (yystack_[yylen].state, yyr1_[yyn]);
+      /* Variants are always initialized to an empty instance of the
+         correct type. The default '$$ = $1' action is NOT applied
+         when using variants.  */
+      switch (yyr1_[yyn])
+    {
+      case 11: // kNodeType
+      case 12: // kPI
+      case 13: // kFunctionName
+      case 14: // kLiteral
+      case 15: // kVariableReference
+      case 16: // kNumber
+      case 19: // kNameTest
+        yylhs.value.emplace< String > ();
+        break;
+
+      case 45: // ArgumentList
+        yylhs.value.emplace< blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Expression>>> > ();
+        break;
+
+      case 38: // OptionalPredicateList
+      case 39: // PredicateList
+        yylhs.value.emplace< blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Predicate>>> > ();
+        break;
+
+      case 31: // Expr
+      case 40: // Predicate
+      case 43: // PrimaryExpr
+      case 44: // FunctionCall
+      case 46: // Argument
+      case 47: // UnionExpr
+      case 48: // PathExpr
+      case 49: // FilterExpr
+      case 50: // OrExpr
+      case 51: // AndExpr
+      case 52: // EqualityExpr
+      case 53: // RelationalExpr
+      case 54: // AdditiveExpr
+      case 55: // MultiplicativeExpr
+      case 56: // UnaryExpr
+        yylhs.value.emplace< blink::Persistent<blink::xpath::Expression> > ();
+        break;
+
+      case 32: // LocationPath
+      case 33: // AbsoluteLocationPath
+      case 34: // RelativeLocationPath
+        yylhs.value.emplace< blink::Persistent<blink::xpath::LocationPath> > ();
+        break;
+
+      case 37: // NodeTest
+        yylhs.value.emplace< blink::Persistent<blink::xpath::Step::NodeTest> > ();
+        break;
+
+      case 35: // Step
+      case 41: // DescendantOrSelf
+      case 42: // AbbreviatedStep
+        yylhs.value.emplace< blink::Persistent<blink::xpath::Step> > ();
+        break;
+
+      case 4: // kEqOp
+      case 5: // kRelOp
+        yylhs.value.emplace< blink::xpath::EqTestOp::Opcode > ();
+        break;
+
+      case 3: // kMulOp
+        yylhs.value.emplace< blink::xpath::NumericOp::Opcode > ();
+        break;
+
+      case 10: // kAxisName
+      case 36: // AxisSpecifier
+        yylhs.value.emplace< blink::xpath::Step::Axis > ();
+        break;
+
+      default:
+        break;
+    }
+
+
+
+      // Perform the reduction.
+      YY_REDUCE_PRINT (yyn);
+#if YY_EXCEPTIONS
+      try
+#endif // YY_EXCEPTIONS
+        {
+          switch (yyn)
+            {
+  case 2:
+#line 128 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      parser_->top_expr_ = yystack_[0].value.as < blink::Persistent<blink::xpath::Expression> > ();
+      yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = yystack_[0].value.as < blink::Persistent<blink::xpath::Expression> > ();
+    }
+#line 1070 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 3:
+#line 136 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::xpath::LocationPath> > () = yystack_[0].value.as < blink::Persistent<blink::xpath::LocationPath> > ();
+      yylhs.value.as < blink::Persistent<blink::xpath::LocationPath> > ()->SetAbsolute(false);
+    }
+#line 1079 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 4:
+#line 142 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::xpath::LocationPath> > () = yystack_[0].value.as < blink::Persistent<blink::xpath::LocationPath> > ();
+      yylhs.value.as < blink::Persistent<blink::xpath::LocationPath> > ()->SetAbsolute(true);
+    }
+#line 1088 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 5:
+#line 150 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::xpath::LocationPath> > () = blink::MakeGarbageCollected<blink::xpath::LocationPath>();
+    }
+#line 1096 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 6:
+#line 155 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::xpath::LocationPath> > () = yystack_[0].value.as < blink::Persistent<blink::xpath::LocationPath> > ();
+    }
+#line 1104 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 7:
+#line 160 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::xpath::LocationPath> > () = yystack_[0].value.as < blink::Persistent<blink::xpath::LocationPath> > ();
+      yylhs.value.as < blink::Persistent<blink::xpath::LocationPath> > ()->InsertFirstStep(yystack_[1].value.as < blink::Persistent<blink::xpath::Step> > ());
+    }
+#line 1113 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 8:
+#line 168 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::xpath::LocationPath> > () = blink::MakeGarbageCollected<blink::xpath::LocationPath>();
+      yylhs.value.as < blink::Persistent<blink::xpath::LocationPath> > ()->AppendStep(yystack_[0].value.as < blink::Persistent<blink::xpath::Step> > ());
+    }
+#line 1122 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 9:
+#line 174 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::xpath::LocationPath> > () = yystack_[2].value.as < blink::Persistent<blink::xpath::LocationPath> > ();
+      yylhs.value.as < blink::Persistent<blink::xpath::LocationPath> > ()->AppendStep(yystack_[0].value.as < blink::Persistent<blink::xpath::Step> > ());
+    }
+#line 1131 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 10:
+#line 180 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::xpath::LocationPath> > () = yystack_[2].value.as < blink::Persistent<blink::xpath::LocationPath> > ();
+      yylhs.value.as < blink::Persistent<blink::xpath::LocationPath> > ()->AppendStep(yystack_[1].value.as < blink::Persistent<blink::xpath::Step> > ());
+      yylhs.value.as < blink::Persistent<blink::xpath::LocationPath> > ()->AppendStep(yystack_[0].value.as < blink::Persistent<blink::xpath::Step> > ());
+    }
+#line 1141 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 11:
+#line 189 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      if (yystack_[0].value.as < blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Predicate>>> > ())
+        yylhs.value.as < blink::Persistent<blink::xpath::Step> > () = blink::MakeGarbageCollected<Step>(Step::kChildAxis, *yystack_[1].value.as < blink::Persistent<blink::xpath::Step::NodeTest> > (), *yystack_[0].value.as < blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Predicate>>> > ());
+      else
+        yylhs.value.as < blink::Persistent<blink::xpath::Step> > () = blink::MakeGarbageCollected<Step>(Step::kChildAxis, *yystack_[1].value.as < blink::Persistent<blink::xpath::Step::NodeTest> > ());
+    }
+#line 1152 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 12:
+#line 197 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      AtomicString local_name;
+      AtomicString namespace_uri;
+      if (!parser_->ExpandQName(yystack_[1].value.as < String > (), local_name, namespace_uri)) {
+        parser_->got_namespace_error_ = true;
+        YYABORT;
+      }
+
+      if (yystack_[0].value.as < blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Predicate>>> > ())
+        yylhs.value.as < blink::Persistent<blink::xpath::Step> > () = blink::MakeGarbageCollected<Step>(Step::kChildAxis, Step::NodeTest(Step::NodeTest::kNameTest, local_name, namespace_uri), *yystack_[0].value.as < blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Predicate>>> > ());
+      else
+        yylhs.value.as < blink::Persistent<blink::xpath::Step> > () = blink::MakeGarbageCollected<Step>(Step::kChildAxis, Step::NodeTest(Step::NodeTest::kNameTest, local_name, namespace_uri));
+    }
+#line 1170 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 13:
+#line 212 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      if (yystack_[0].value.as < blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Predicate>>> > ())
+        yylhs.value.as < blink::Persistent<blink::xpath::Step> > () = blink::MakeGarbageCollected<Step>(yystack_[2].value.as < blink::xpath::Step::Axis > (), *yystack_[1].value.as < blink::Persistent<blink::xpath::Step::NodeTest> > (), *yystack_[0].value.as < blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Predicate>>> > ());
+      else
+        yylhs.value.as < blink::Persistent<blink::xpath::Step> > () = blink::MakeGarbageCollected<Step>(yystack_[2].value.as < blink::xpath::Step::Axis > (), *yystack_[1].value.as < blink::Persistent<blink::xpath::Step::NodeTest> > ());
+    }
+#line 1181 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 14:
+#line 220 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      AtomicString local_name;
+      AtomicString namespace_uri;
+      if (!parser_->ExpandQName(yystack_[1].value.as < String > (), local_name, namespace_uri)) {
+        parser_->got_namespace_error_ = true;
+        YYABORT;
+      }
+
+      if (yystack_[0].value.as < blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Predicate>>> > ())
+        yylhs.value.as < blink::Persistent<blink::xpath::Step> > () = blink::MakeGarbageCollected<Step>(yystack_[2].value.as < blink::xpath::Step::Axis > (), Step::NodeTest(Step::NodeTest::kNameTest, local_name, namespace_uri), *yystack_[0].value.as < blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Predicate>>> > ());
+      else
+        yylhs.value.as < blink::Persistent<blink::xpath::Step> > () = blink::MakeGarbageCollected<Step>(yystack_[2].value.as < blink::xpath::Step::Axis > (), Step::NodeTest(Step::NodeTest::kNameTest, local_name, namespace_uri));
+    }
+#line 1199 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 15:
+#line 234 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    { yylhs.value.as < blink::Persistent<blink::xpath::Step> > () = yystack_[0].value.as < blink::Persistent<blink::xpath::Step> > (); }
+#line 1205 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 16:
+#line 238 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    { yylhs.value.as < blink::xpath::Step::Axis > () = yystack_[0].value.as < blink::xpath::Step::Axis > (); }
+#line 1211 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 17:
+#line 241 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::xpath::Step::Axis > () = Step::kAttributeAxis;
+    }
+#line 1219 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 18:
+#line 248 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      if (yystack_[2].value.as < String > () == "node")
+        yylhs.value.as < blink::Persistent<blink::xpath::Step::NodeTest> > () = blink::MakeGarbageCollected<Step::NodeTest>(Step::NodeTest::kAnyNodeTest);
+      else if (yystack_[2].value.as < String > () == "text")
+        yylhs.value.as < blink::Persistent<blink::xpath::Step::NodeTest> > () = blink::MakeGarbageCollected<Step::NodeTest>(Step::NodeTest::kTextNodeTest);
+      else if (yystack_[2].value.as < String > () == "comment")
+        yylhs.value.as < blink::Persistent<blink::xpath::Step::NodeTest> > () = blink::MakeGarbageCollected<Step::NodeTest>(Step::NodeTest::kCommentNodeTest);
+    }
+#line 1232 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 19:
+#line 258 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::xpath::Step::NodeTest> > () = blink::MakeGarbageCollected<Step::NodeTest>(Step::NodeTest::kProcessingInstructionNodeTest);
+    }
+#line 1240 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 20:
+#line 263 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::xpath::Step::NodeTest> > () = blink::MakeGarbageCollected<Step::NodeTest>(Step::NodeTest::kProcessingInstructionNodeTest, yystack_[1].value.as < String > ().StripWhiteSpace());
+    }
+#line 1248 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 21:
+#line 270 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Predicate>>> > () = 0;
+    }
+#line 1256 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 22:
+#line 275 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Predicate>>> > () = yystack_[0].value.as < blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Predicate>>> > ();
+    }
+#line 1264 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 23:
+#line 282 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Predicate>>> > () = blink::MakeGarbageCollected<blink::HeapVector<blink::Member<blink::xpath::Predicate>>>();
+      yylhs.value.as < blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Predicate>>> > ()->push_back(blink::MakeGarbageCollected<blink::xpath::Predicate>(yystack_[0].value.as < blink::Persistent<blink::xpath::Expression> > ()));
+    }
+#line 1273 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 24:
+#line 288 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Predicate>>> > () = yystack_[1].value.as < blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Predicate>>> > ();
+      yylhs.value.as < blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Predicate>>> > ()->push_back(blink::MakeGarbageCollected<blink::xpath::Predicate>(yystack_[0].value.as < blink::Persistent<blink::xpath::Expression> > ()));
+    }
+#line 1282 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 25:
+#line 296 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = yystack_[1].value.as < blink::Persistent<blink::xpath::Expression> > ();
+    }
+#line 1290 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 26:
+#line 303 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::xpath::Step> > () = blink::MakeGarbageCollected<Step>(Step::kDescendantOrSelfAxis, Step::NodeTest(Step::NodeTest::kAnyNodeTest));
+    }
+#line 1298 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 27:
+#line 310 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::xpath::Step> > () = blink::MakeGarbageCollected<Step>(Step::kSelfAxis, Step::NodeTest(Step::NodeTest::kAnyNodeTest));
+    }
+#line 1306 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 28:
+#line 315 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::xpath::Step> > () = blink::MakeGarbageCollected<Step>(Step::kParentAxis, Step::NodeTest(Step::NodeTest::kAnyNodeTest));
+    }
+#line 1314 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 29:
+#line 322 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = blink::MakeGarbageCollected<blink::xpath::VariableReference>(yystack_[0].value.as < String > ());
+    }
+#line 1322 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 30:
+#line 327 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = yystack_[1].value.as < blink::Persistent<blink::xpath::Expression> > ();
+    }
+#line 1330 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 31:
+#line 332 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = blink::MakeGarbageCollected<blink::xpath::StringExpression>(yystack_[0].value.as < String > ());
+    }
+#line 1338 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 32:
+#line 337 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = blink::MakeGarbageCollected<blink::xpath::Number>(yystack_[0].value.as < String > ().ToDouble());
+    }
+#line 1346 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 33:
+#line 341 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    { yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = yystack_[0].value.as < blink::Persistent<blink::xpath::Expression> > (); }
+#line 1352 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 34:
+#line 346 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = blink::xpath::CreateFunction(yystack_[2].value.as < String > ());
+      if (!yylhs.value.as < blink::Persistent<blink::xpath::Expression> > ())
+        YYABORT;
+    }
+#line 1362 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 35:
+#line 353 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = blink::xpath::CreateFunction(yystack_[3].value.as < String > (), *yystack_[1].value.as < blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Expression>>> > ());
+      if (!yylhs.value.as < blink::Persistent<blink::xpath::Expression> > ())
+        YYABORT;
+    }
+#line 1372 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 36:
+#line 362 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Expression>>> > () = blink::MakeGarbageCollected<blink::HeapVector<blink::Member<blink::xpath::Expression>>>();
+      yylhs.value.as < blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Expression>>> > ()->push_back(yystack_[0].value.as < blink::Persistent<blink::xpath::Expression> > ());
+    }
+#line 1381 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 37:
+#line 368 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Expression>>> > () = yystack_[2].value.as < blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Expression>>> > ();
+      yylhs.value.as < blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Expression>>> > ()->push_back(yystack_[0].value.as < blink::Persistent<blink::xpath::Expression> > ());
+    }
+#line 1390 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 38:
+#line 375 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    { yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = yystack_[0].value.as < blink::Persistent<blink::xpath::Expression> > (); }
+#line 1396 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 39:
+#line 379 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    { yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = yystack_[0].value.as < blink::Persistent<blink::xpath::Expression> > (); }
+#line 1402 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 40:
+#line 382 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = blink::MakeGarbageCollected<blink::xpath::Union>();
+      yylhs.value.as < blink::Persistent<blink::xpath::Expression> > ()->AddSubExpression(yystack_[2].value.as < blink::Persistent<blink::xpath::Expression> > ());
+      yylhs.value.as < blink::Persistent<blink::xpath::Expression> > ()->AddSubExpression(yystack_[0].value.as < blink::Persistent<blink::xpath::Expression> > ());
+    }
+#line 1412 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 41:
+#line 391 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = yystack_[0].value.as < blink::Persistent<blink::xpath::LocationPath> > ();
+    }
+#line 1420 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 42:
+#line 395 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    { yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = yystack_[0].value.as < blink::Persistent<blink::xpath::Expression> > (); }
+#line 1426 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 43:
+#line 398 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yystack_[0].value.as < blink::Persistent<blink::xpath::LocationPath> > ()->SetAbsolute(true);
+      yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = blink::MakeGarbageCollected<blink::xpath::Path>(yystack_[2].value.as < blink::Persistent<blink::xpath::Expression> > (), yystack_[0].value.as < blink::Persistent<blink::xpath::LocationPath> > ());
+    }
+#line 1435 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 44:
+#line 404 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yystack_[0].value.as < blink::Persistent<blink::xpath::LocationPath> > ()->InsertFirstStep(yystack_[1].value.as < blink::Persistent<blink::xpath::Step> > ());
+      yystack_[0].value.as < blink::Persistent<blink::xpath::LocationPath> > ()->SetAbsolute(true);
+      yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = blink::MakeGarbageCollected<blink::xpath::Path>(yystack_[2].value.as < blink::Persistent<blink::xpath::Expression> > (), yystack_[0].value.as < blink::Persistent<blink::xpath::LocationPath> > ());
+    }
+#line 1445 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 45:
+#line 412 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    { yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = yystack_[0].value.as < blink::Persistent<blink::xpath::Expression> > (); }
+#line 1451 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 46:
+#line 415 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = blink::MakeGarbageCollected<blink::xpath::Filter>(yystack_[1].value.as < blink::Persistent<blink::xpath::Expression> > (), *yystack_[0].value.as < blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Predicate>>> > ());
+    }
+#line 1459 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 47:
+#line 421 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    { yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = yystack_[0].value.as < blink::Persistent<blink::xpath::Expression> > (); }
+#line 1465 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 48:
+#line 424 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = blink::MakeGarbageCollected<blink::xpath::LogicalOp>(blink::xpath::LogicalOp::kOP_Or, yystack_[2].value.as < blink::Persistent<blink::xpath::Expression> > (), yystack_[0].value.as < blink::Persistent<blink::xpath::Expression> > ());
+    }
+#line 1473 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 49:
+#line 430 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    { yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = yystack_[0].value.as < blink::Persistent<blink::xpath::Expression> > (); }
+#line 1479 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 50:
+#line 433 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = blink::MakeGarbageCollected<blink::xpath::LogicalOp>(blink::xpath::LogicalOp::kOP_And, yystack_[2].value.as < blink::Persistent<blink::xpath::Expression> > (), yystack_[0].value.as < blink::Persistent<blink::xpath::Expression> > ());
+    }
+#line 1487 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 51:
+#line 439 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    { yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = yystack_[0].value.as < blink::Persistent<blink::xpath::Expression> > (); }
+#line 1493 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 52:
+#line 442 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = blink::MakeGarbageCollected<blink::xpath::EqTestOp>(yystack_[1].value.as < blink::xpath::EqTestOp::Opcode > (), yystack_[2].value.as < blink::Persistent<blink::xpath::Expression> > (), yystack_[0].value.as < blink::Persistent<blink::xpath::Expression> > ());
+    }
+#line 1501 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 53:
+#line 448 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    { yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = yystack_[0].value.as < blink::Persistent<blink::xpath::Expression> > (); }
+#line 1507 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 54:
+#line 451 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = blink::MakeGarbageCollected<blink::xpath::EqTestOp>(yystack_[1].value.as < blink::xpath::EqTestOp::Opcode > (), yystack_[2].value.as < blink::Persistent<blink::xpath::Expression> > (), yystack_[0].value.as < blink::Persistent<blink::xpath::Expression> > ());
+    }
+#line 1515 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 55:
+#line 457 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    { yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = yystack_[0].value.as < blink::Persistent<blink::xpath::Expression> > (); }
+#line 1521 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 56:
+#line 460 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = blink::MakeGarbageCollected<blink::xpath::NumericOp>(blink::xpath::NumericOp::kOP_Add, yystack_[2].value.as < blink::Persistent<blink::xpath::Expression> > (), yystack_[0].value.as < blink::Persistent<blink::xpath::Expression> > ());
+    }
+#line 1529 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 57:
+#line 465 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = blink::MakeGarbageCollected<blink::xpath::NumericOp>(blink::xpath::NumericOp::kOP_Sub, yystack_[2].value.as < blink::Persistent<blink::xpath::Expression> > (), yystack_[0].value.as < blink::Persistent<blink::xpath::Expression> > ());
+    }
+#line 1537 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 58:
+#line 471 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    { yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = yystack_[0].value.as < blink::Persistent<blink::xpath::Expression> > (); }
+#line 1543 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 59:
+#line 474 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = blink::MakeGarbageCollected<blink::xpath::NumericOp>(yystack_[1].value.as < blink::xpath::NumericOp::Opcode > (), yystack_[2].value.as < blink::Persistent<blink::xpath::Expression> > (), yystack_[0].value.as < blink::Persistent<blink::xpath::Expression> > ());
+    }
+#line 1551 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 60:
+#line 480 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    { yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = yystack_[0].value.as < blink::Persistent<blink::xpath::Expression> > (); }
+#line 1557 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+  case 61:
+#line 483 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    {
+      yylhs.value.as < blink::Persistent<blink::xpath::Expression> > () = blink::MakeGarbageCollected<blink::xpath::Negative>();
+      yylhs.value.as < blink::Persistent<blink::xpath::Expression> > ()->AddSubExpression(yystack_[0].value.as < blink::Persistent<blink::xpath::Expression> > ());
+    }
+#line 1566 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+    break;
+
+
+#line 1570 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
+
+            default:
+              break;
+            }
+        }
+#if YY_EXCEPTIONS
+      catch (const syntax_error& yyexc)
+        {
+          YYCDEBUG << "Caught exception: " << yyexc.what() << '\n';
+          error (yyexc);
+          YYERROR;
+        }
+#endif // YY_EXCEPTIONS
+      YY_SYMBOL_PRINT ("-> $$ =", yylhs);
+      yypop_ (yylen);
+      yylen = 0;
+      YY_STACK_PRINT ();
+
+      // Shift the result of the reduction.
+      yypush_ (YY_NULLPTR, YY_MOVE (yylhs));
+    }
+    goto yynewstate;
+
+
+  /*--------------------------------------.
+  | yyerrlab -- here on detecting error.  |
+  `--------------------------------------*/
+  yyerrlab:
+    // If not already recovering from an error, report this error.
+    if (!yyerrstatus_)
+      {
+        ++yynerrs_;
+        error (yysyntax_error_ (yystack_[0].state, yyla));
+      }
+
+
+    if (yyerrstatus_ == 3)
+      {
+        /* If just tried and failed to reuse lookahead token after an
+           error, discard it.  */
+
+        // Return failure if at end of input.
+        if (yyla.type_get () == yyeof_)
+          YYABORT;
+        else if (!yyla.empty ())
+          {
+            yy_destroy_ ("Error: discarding", yyla);
+            yyla.clear ();
+          }
+      }
+
+    // Else will try to reuse lookahead token after shifting the error token.
+    goto yyerrlab1;
+
+
+  /*---------------------------------------------------.
+  | yyerrorlab -- error raised explicitly by YYERROR.  |
+  `---------------------------------------------------*/
+  yyerrorlab:
+    /* Pacify compilers when the user code never invokes YYERROR and
+       the label yyerrorlab therefore never appears in user code.  */
+    if (false)
+      YYERROR;
+
+    /* Do not reclaim the symbols of the rule whose action triggered
+       this YYERROR.  */
+    yypop_ (yylen);
+    yylen = 0;
+    goto yyerrlab1;
+
+
+  /*-------------------------------------------------------------.
+  | yyerrlab1 -- common code for both syntax error and YYERROR.  |
+  `-------------------------------------------------------------*/
+  yyerrlab1:
+    yyerrstatus_ = 3;   // Each real token shifted decrements this.
+    {
+      stack_symbol_type error_token;
+      for (;;)
+        {
+          yyn = yypact_[yystack_[0].state];
+          if (!yy_pact_value_is_default_ (yyn))
+            {
+              yyn += yyterror_;
+              if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_)
+                {
+                  yyn = yytable_[yyn];
+                  if (0 < yyn)
+                    break;
+                }
+            }
+
+          // Pop the current state because it cannot handle the error token.
+          if (yystack_.size () == 1)
+            YYABORT;
+
+          yy_destroy_ ("Error: popping", yystack_[0]);
+          yypop_ ();
+          YY_STACK_PRINT ();
+        }
+
+
+      // Shift the error token.
+      error_token.state = yyn;
+      yypush_ ("Shifting", YY_MOVE (error_token));
+    }
+    goto yynewstate;
+
+
+  /*-------------------------------------.
+  | yyacceptlab -- YYACCEPT comes here.  |
+  `-------------------------------------*/
+  yyacceptlab:
+    yyresult = 0;
+    goto yyreturn;
+
+
+  /*-----------------------------------.
+  | yyabortlab -- YYABORT comes here.  |
+  `-----------------------------------*/
+  yyabortlab:
+    yyresult = 1;
+    goto yyreturn;
+
+
+  /*-----------------------------------------------------.
+  | yyreturn -- parsing is finished, return the result.  |
+  `-----------------------------------------------------*/
+  yyreturn:
+    if (!yyla.empty ())
+      yy_destroy_ ("Cleanup: discarding lookahead", yyla);
+
+    /* Do not reclaim the symbols of the rule whose action triggered
+       this YYABORT or YYACCEPT.  */
+    yypop_ (yylen);
+    while (1 < yystack_.size ())
+      {
+        yy_destroy_ ("Cleanup: popping", yystack_[0]);
+        yypop_ ();
+      }
+
+    return yyresult;
+  }
+#if YY_EXCEPTIONS
+    catch (...)
+      {
+        YYCDEBUG << "Exception caught: cleaning lookahead and stack\n";
+        // Do not try to display the values of the reclaimed symbols,
+        // as their printers might throw an exception.
+        if (!yyla.empty ())
+          yy_destroy_ (YY_NULLPTR, yyla);
+
+        while (1 < yystack_.size ())
+          {
+            yy_destroy_ (YY_NULLPTR, yystack_[0]);
+            yypop_ ();
+          }
+        throw;
+      }
+#endif // YY_EXCEPTIONS
+  }
+
+  void
+   YyParser ::error (const syntax_error& yyexc)
+  {
+    error (yyexc.what ());
+  }
+
+  // Generate an error message.
+  std::string
+   YyParser ::yysyntax_error_ (state_type, const symbol_type&) const
+  {
+    return YY_("syntax error");
+  }
+
+
+  const signed char  YyParser ::yypact_ninf_ = -44;
+
+  const signed char  YyParser ::yytable_ninf_ = -1;
+
+  const signed char
+   YyParser ::yypact_[] =
+  {
+      77,    77,   -44,    -9,    -4,    18,   -44,   -44,   -44,   -44,
+     -44,    19,    -2,   -44,    77,   -44,    36,   -44,   -44,    13,
+     -44,    11,    19,    -2,   -44,    19,   -44,    21,   -44,    17,
+      34,    38,    44,    46,    20,    49,   -44,   -44,    25,    -3,
+      59,    77,   -44,    19,   -44,    13,    29,   -44,    -2,    -2,
+      19,    19,   -44,    13,    19,    95,    -2,    -2,    77,    77,
+      77,    77,    77,    77,    77,   -44,    30,   -44,   -44,   -44,
+       0,   -44,    31,   -44,   -44,   -44,   -44,   -44,   -44,   -44,
+      13,    13,    38,    44,    46,    20,    49,    49,   -44,   -44,
+     -44,    77,   -44,   -44
+  };
+
+  const unsigned char
+   YyParser ::yydefact_[] =
+  {
+       0,     0,    16,     0,     0,     0,    31,    29,    32,    28,
+      26,    21,     5,    17,     0,    27,     0,    41,     4,     3,
+       8,     0,    21,     0,    15,    45,    33,    60,    39,    42,
+       2,    47,    49,    51,    53,    55,    58,    61,     0,     0,
+       0,     0,    12,    22,    23,     6,     0,     1,     0,     0,
+      21,    21,    11,     7,    46,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    18,     0,    19,    34,    38,
+       0,    36,     0,    24,    30,     9,    10,    14,    13,    40,
+      43,    44,    48,    50,    52,    54,    56,    57,    59,    20,
+      35,     0,    25,    37
+  };
+
+  const signed char
+   YyParser ::yypgoto_[] =
+  {
+     -44,     2,   -44,   -44,   -11,   -43,   -44,    35,   -18,    33,
+     -36,   -16,   -44,   -44,   -44,   -44,   -32,   -44,     5,   -44,
+     -44,     3,     8,    -5,     1,   -23,    -1
+  };
+
+  const signed char
+   YyParser ::yydefgoto_[] =
+  {
+      -1,    69,    17,    18,    19,    20,    21,    22,    42,    43,
+      44,    23,    24,    25,    26,    70,    71,    27,    28,    29,
+      30,    31,    32,    33,    34,    35,    36
+  };
+
+  const unsigned char
+   YyParser ::yytable_[] =
+  {
+      37,    45,    16,    49,    52,    75,    76,    73,     2,     3,
+       4,    66,    53,    57,    38,     9,    46,    11,    73,    39,
+      13,    67,     3,     4,    90,    15,    62,    63,    91,    49,
+      50,    10,    77,    78,    48,    10,    47,    49,    56,    86,
+      87,    40,    58,    72,    41,    80,    81,    59,    60,    65,
+      55,    61,    64,    74,    89,    84,    51,    92,    54,    93,
+      79,    82,    85,    88,    49,    49,     1,    83,     0,     2,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,     0,
+      12,    13,    14,    68,     1,     0,    15,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,     0,    12,    13,
+      14,     0,     0,     0,    15,     2,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,     0,    12,    13,    14,     0,
+       0,     0,    15
+  };
+
+  const signed char
+   YyParser ::yycheck_[] =
+  {
+       1,    12,     0,    19,    22,    48,    49,    43,    10,    11,
+      12,    14,    23,    29,    23,    17,    14,    19,    54,    23,
+      22,    24,    11,    12,    24,    27,     6,     7,    28,    45,
+      19,    18,    50,    51,    21,    18,     0,    53,    21,    62,
+      63,    23,     8,    41,    25,    56,    57,     9,     4,    24,
+      29,     5,     3,    24,    24,    60,    21,    26,    25,    91,
+      55,    58,    61,    64,    80,    81,     7,    59,    -1,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    -1,
+      21,    22,    23,    24,     7,    -1,    27,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    -1,    21,    22,
+      23,    -1,    -1,    -1,    27,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    -1,    21,    22,    23,    -1,
+      -1,    -1,    27
+  };
+
+  const unsigned char
+   YyParser ::yystos_[] =
+  {
+       0,     7,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    21,    22,    23,    27,    31,    32,    33,    34,
+      35,    36,    37,    41,    42,    43,    44,    47,    48,    49,
+      50,    51,    52,    53,    54,    55,    56,    56,    23,    23,
+      23,    25,    38,    39,    40,    34,    31,     0,    21,    41,
+      19,    37,    38,    34,    39,    29,    21,    41,     8,     9,
+       4,     5,     6,     7,     3,    24,    14,    24,    24,    31,
+      45,    46,    31,    40,    24,    35,    35,    38,    38,    48,
+      34,    34,    51,    52,    53,    54,    55,    55,    56,    24,
+      24,    28,    26,    46
+  };
+
+  const unsigned char
+   YyParser ::yyr1_[] =
+  {
+       0,    30,    31,    32,    32,    33,    33,    33,    34,    34,
+      34,    35,    35,    35,    35,    35,    36,    36,    37,    37,
+      37,    38,    38,    39,    39,    40,    41,    42,    42,    43,
+      43,    43,    43,    43,    44,    44,    45,    45,    46,    47,
+      47,    48,    48,    48,    48,    49,    49,    50,    50,    51,
+      51,    52,    52,    53,    53,    54,    54,    54,    55,    55,
+      56,    56
+  };
+
+  const unsigned char
+   YyParser ::yyr2_[] =
+  {
+       0,     2,     1,     1,     1,     1,     2,     2,     1,     3,
+       3,     2,     2,     3,     3,     1,     1,     1,     3,     3,
+       4,     0,     1,     1,     2,     3,     1,     1,     1,     1,
+       3,     1,     1,     1,     3,     4,     1,     3,     1,     1,
+       3,     1,     1,     3,     3,     1,     2,     1,     3,     1,
+       3,     1,     3,     1,     3,     1,     3,     3,     1,     3,
+       1,     2
+  };
+
+
+#if YYDEBUG
+  // YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+  // First, the terminals, then, starting at \a yyntokens_, nonterminals.
+  const char*
+  const  YyParser ::yytname_[] =
+  {
+  "$end", "error", "$undefined", "kMulOp", "kEqOp", "kRelOp", "kPlus",
+  "kMinus", "kOr", "kAnd", "kAxisName", "kNodeType", "kPI",
+  "kFunctionName", "kLiteral", "kVariableReference", "kNumber", "kDotDot",
+  "kSlashSlash", "kNameTest", "kXPathError", "'/'", "'@'", "'('", "')'",
+  "'['", "']'", "'.'", "','", "'|'", "$accept", "Expr", "LocationPath",
+  "AbsoluteLocationPath", "RelativeLocationPath", "Step", "AxisSpecifier",
+  "NodeTest", "OptionalPredicateList", "PredicateList", "Predicate",
+  "DescendantOrSelf", "AbbreviatedStep", "PrimaryExpr", "FunctionCall",
+  "ArgumentList", "Argument", "UnionExpr", "PathExpr", "FilterExpr",
+  "OrExpr", "AndExpr", "EqualityExpr", "RelationalExpr", "AdditiveExpr",
+  "MultiplicativeExpr", "UnaryExpr", YY_NULLPTR
+  };
+
+
+  const unsigned short
+   YyParser ::yyrline_[] =
+  {
+       0,   127,   127,   135,   141,   149,   154,   159,   167,   173,
+     179,   188,   196,   211,   219,   234,   238,   240,   247,   257,
+     262,   270,   274,   281,   287,   295,   302,   309,   314,   321,
+     326,   331,   336,   341,   345,   352,   361,   367,   375,   379,
+     381,   390,   395,   397,   403,   412,   414,   421,   423,   430,
+     432,   439,   441,   448,   450,   457,   459,   464,   471,   473,
+     480,   482
+  };
+
+  // Print the state stack on the debug stream.
+  void
+   YyParser ::yystack_print_ ()
+  {
+    *yycdebug_ << "Stack now";
+    for (stack_type::const_iterator
+           i = yystack_.begin (),
+           i_end = yystack_.end ();
+         i != i_end; ++i)
+      *yycdebug_ << ' ' << i->state;
+    *yycdebug_ << '\n';
+  }
+
+  // Report on the debug stream that the rule \a yyrule is going to be reduced.
+  void
+   YyParser ::yy_reduce_print_ (int yyrule)
+  {
+    unsigned yylno = yyrline_[yyrule];
+    int yynrhs = yyr2_[yyrule];
+    // Print the symbols being reduced, and their result.
+    *yycdebug_ << "Reducing stack by rule " << yyrule - 1
+               << " (line " << yylno << "):\n";
+    // The symbols being reduced.
+    for (int yyi = 0; yyi < yynrhs; yyi++)
+      YY_SYMBOL_PRINT ("   $" << yyi + 1 << " =",
+                       yystack_[(yynrhs) - (yyi + 1)]);
+  }
+#endif // YYDEBUG
+
+   YyParser ::token_number_type
+   YyParser ::yytranslate_ (int t)
+  {
+    // YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to
+    // TOKEN-NUM as returned by yylex.
+    static
+    const token_number_type
+    translate_table[] =
+    {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -485,1525 +1968,20 @@
        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
       15,    16,    17,    18,    19,    20
-};
+    };
+    const unsigned user_token_number_max_ = 275;
+    const token_number_type undef_token_ = 2;
 
-#if YYDEBUG
-  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
-static const yytype_uint16 yyrline[] =
-{
-       0,   134,   134,   141,   146,   153,   158,   163,   171,   177,
-     182,   190,   198,   214,   222,   238,   242,   244,   251,   263,
-     269,   279,   283,   287,   293,   300,   307,   314,   319,   326,
-     332,   337,   343,   349,   353,   361,   371,   377,   384,   388,
-     390,   399,   404,   406,   412,   421,   423,   430,   432,   439,
-     441,   448,   450,   457,   459,   466,   468,   473,   480,   482,
-     489,   491
-};
-#endif
-
-#if YYDEBUG || YYERROR_VERBOSE || 0
-/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
-   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
-static const char *const yytname[] =
-{
-  "$end", "error", "$undefined", "MULOP", "EQOP", "RELOP", "PLUS",
-  "MINUS", "OR", "AND", "AXISNAME", "NODETYPE", "PI", "FUNCTIONNAME",
-  "LITERAL", "VARIABLEREFERENCE", "NUMBER", "DOTDOT", "SLASHSLASH",
-  "NAMETEST", "XPATH_ERROR", "'/'", "'@'", "'('", "')'", "'['", "']'",
-  "'.'", "','", "'|'", "$accept", "Expr", "LocationPath",
-  "AbsoluteLocationPath", "RelativeLocationPath", "Step", "AxisSpecifier",
-  "NodeTest", "OptionalPredicateList", "PredicateList", "Predicate",
-  "DescendantOrSelf", "AbbreviatedStep", "PrimaryExpr", "FunctionCall",
-  "ArgumentList", "Argument", "UnionExpr", "PathExpr", "FilterExpr",
-  "OrExpr", "AndExpr", "EqualityExpr", "RelationalExpr", "AdditiveExpr",
-  "MultiplicativeExpr", "UnaryExpr", YY_NULLPTR
-};
-#endif
-
-# ifdef YYPRINT
-/* YYTOKNUM[NUM] -- (External) token number corresponding to the
-   (internal) symbol number NUM (which must be that of a token).  */
-static const yytype_uint16 yytoknum[] =
-{
-       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
-     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
-     275,    47,    64,    40,    41,    91,    93,    46,    44,   124
-};
-# endif
-
-#define YYPACT_NINF -44
-
-#define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-44)))
-
-#define YYTABLE_NINF -1
-
-#define yytable_value_is_error(Yytable_value) \
-  0
-
-  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-     STATE-NUM.  */
-static const yytype_int8 yypact[] =
-{
-      77,    77,   -44,    -9,    -4,    18,   -44,   -44,   -44,   -44,
-     -44,    19,    -2,   -44,    77,   -44,    36,   -44,   -44,    13,
-     -44,    11,    19,    -2,   -44,    19,   -44,    21,   -44,    17,
-      34,    38,    44,    46,    20,    49,   -44,   -44,    25,    -3,
-      59,    77,   -44,    19,   -44,    13,    29,   -44,    -2,    -2,
-      19,    19,   -44,    13,    19,    95,    -2,    -2,    77,    77,
-      77,    77,    77,    77,    77,   -44,    30,   -44,   -44,   -44,
-       0,   -44,    31,   -44,   -44,   -44,   -44,   -44,   -44,   -44,
-      13,    13,    38,    44,    46,    20,    49,    49,   -44,   -44,
-     -44,    77,   -44,   -44
-};
-
-  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
-     Performed when YYTABLE does not specify something else to do.  Zero
-     means the default is an error.  */
-static const yytype_uint8 yydefact[] =
-{
-       0,     0,    16,     0,     0,     0,    31,    29,    32,    28,
-      26,    21,     5,    17,     0,    27,     0,    41,     4,     3,
-       8,     0,    21,     0,    15,    45,    33,    60,    39,    42,
-       2,    47,    49,    51,    53,    55,    58,    61,     0,     0,
-       0,     0,    12,    22,    23,     6,     0,     1,     0,     0,
-      21,    21,    11,     7,    46,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    18,     0,    19,    34,    38,
-       0,    36,     0,    24,    30,     9,    10,    14,    13,    40,
-      43,    44,    48,    50,    52,    54,    56,    57,    59,    20,
-      35,     0,    25,    37
-};
-
-  /* YYPGOTO[NTERM-NUM].  */
-static const yytype_int8 yypgoto[] =
-{
-     -44,     2,   -44,   -44,   -11,   -43,   -44,    35,   -18,    33,
-     -36,   -16,   -44,   -44,   -44,   -44,   -32,   -44,     5,   -44,
-     -44,     3,     8,    -5,     1,   -23,    -1
-};
-
-  /* YYDEFGOTO[NTERM-NUM].  */
-static const yytype_int8 yydefgoto[] =
-{
-      -1,    69,    17,    18,    19,    20,    21,    22,    42,    43,
-      44,    23,    24,    25,    26,    70,    71,    27,    28,    29,
-      30,    31,    32,    33,    34,    35,    36
-};
-
-  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
-     positive, shift that token.  If negative, reduce the rule whose
-     number is the opposite.  If YYTABLE_NINF, syntax error.  */
-static const yytype_uint8 yytable[] =
-{
-      37,    45,    16,    49,    52,    75,    76,    73,     2,     3,
-       4,    66,    53,    57,    38,     9,    46,    11,    73,    39,
-      13,    67,     3,     4,    90,    15,    62,    63,    91,    49,
-      50,    10,    77,    78,    48,    10,    47,    49,    56,    86,
-      87,    40,    58,    72,    41,    80,    81,    59,    60,    65,
-      55,    61,    64,    74,    89,    84,    51,    92,    54,    93,
-      79,    82,    85,    88,    49,    49,     1,    83,     0,     2,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,     0,
-      12,    13,    14,    68,     1,     0,    15,     2,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,     0,    12,    13,
-      14,     0,     0,     0,    15,     2,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,     0,    12,    13,    14,     0,
-       0,     0,    15
-};
-
-static const yytype_int8 yycheck[] =
-{
-       1,    12,     0,    19,    22,    48,    49,    43,    10,    11,
-      12,    14,    23,    29,    23,    17,    14,    19,    54,    23,
-      22,    24,    11,    12,    24,    27,     6,     7,    28,    45,
-      19,    18,    50,    51,    21,    18,     0,    53,    21,    62,
-      63,    23,     8,    41,    25,    56,    57,     9,     4,    24,
-      29,     5,     3,    24,    24,    60,    21,    26,    25,    91,
-      55,    58,    61,    64,    80,    81,     7,    59,    -1,    10,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    -1,
-      21,    22,    23,    24,     7,    -1,    27,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    -1,    21,    22,
-      23,    -1,    -1,    -1,    27,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    -1,    21,    22,    23,    -1,
-      -1,    -1,    27
-};
-
-  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-     symbol of state STATE-NUM.  */
-static const yytype_uint8 yystos[] =
-{
-       0,     7,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    19,    21,    22,    23,    27,    31,    32,    33,    34,
-      35,    36,    37,    41,    42,    43,    44,    47,    48,    49,
-      50,    51,    52,    53,    54,    55,    56,    56,    23,    23,
-      23,    25,    38,    39,    40,    34,    31,     0,    21,    41,
-      19,    37,    38,    34,    39,    29,    21,    41,     8,     9,
-       4,     5,     6,     7,     3,    24,    14,    24,    24,    31,
-      45,    46,    31,    40,    24,    35,    35,    38,    38,    48,
-      34,    34,    51,    52,    53,    54,    55,    55,    56,    24,
-      24,    28,    26,    46
-};
-
-  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint8 yyr1[] =
-{
-       0,    30,    31,    32,    32,    33,    33,    33,    34,    34,
-      34,    35,    35,    35,    35,    35,    36,    36,    37,    37,
-      37,    38,    38,    39,    39,    40,    41,    42,    42,    43,
-      43,    43,    43,    43,    44,    44,    45,    45,    46,    47,
-      47,    48,    48,    48,    48,    49,    49,    50,    50,    51,
-      51,    52,    52,    53,    53,    54,    54,    54,    55,    55,
-      56,    56
-};
-
-  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
-static const yytype_uint8 yyr2[] =
-{
-       0,     2,     1,     1,     1,     1,     2,     2,     1,     3,
-       3,     2,     2,     3,     3,     1,     1,     1,     3,     3,
-       4,     0,     1,     1,     2,     3,     1,     1,     1,     1,
-       3,     1,     1,     1,     3,     4,     1,     3,     1,     1,
-       3,     1,     1,     3,     3,     1,     2,     1,     3,     1,
-       3,     1,     3,     1,     3,     1,     3,     3,     1,     3,
-       1,     2
-};
-
-
-#define yyerrok         (yyerrstatus = 0)
-#define yyclearin       (yychar = YYEMPTY)
-#define YYEMPTY         (-2)
-#define YYEOF           0
-
-#define YYACCEPT        goto yyacceptlab
-#define YYABORT         goto yyabortlab
-#define YYERROR         goto yyerrorlab
-
-
-#define YYRECOVERING()  (!!yyerrstatus)
-
-#define YYBACKUP(Token, Value)                                    \
-  do                                                              \
-    if (yychar == YYEMPTY)                                        \
-      {                                                           \
-        yychar = (Token);                                         \
-        yylval = (Value);                                         \
-        YYPOPSTACK (yylen);                                       \
-        yystate = *yyssp;                                         \
-        goto yybackup;                                            \
-      }                                                           \
-    else                                                          \
-      {                                                           \
-        yyerror (parser, YY_("syntax error: cannot back up")); \
-        YYERROR;                                                  \
-      }                                                           \
-  while (0)
-
-/* Error token number */
-#define YYTERROR        1
-#define YYERRCODE       256
-
-
-
-/* Enable debugging if requested.  */
-#if YYDEBUG
-
-# ifndef YYFPRINTF
-#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
-#  define YYFPRINTF fprintf
-# endif
-
-# define YYDPRINTF(Args)                        \
-do {                                            \
-  if (yydebug)                                  \
-    YYFPRINTF Args;                             \
-} while (0)
-
-/* This macro is provided for backward compatibility. */
-#ifndef YY_LOCATION_PRINT
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-#endif
-
-
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
-do {                                                                      \
-  if (yydebug)                                                            \
-    {                                                                     \
-      YYFPRINTF (stderr, "%s ", Title);                                   \
-      yy_symbol_print (stderr,                                            \
-                  Type, Value, parser); \
-      YYFPRINTF (stderr, "\n");                                           \
-    }                                                                     \
-} while (0)
-
-
-/*-----------------------------------.
-| Print this symbol's value on YYO.  |
-`-----------------------------------*/
-
-static void
-yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, blink::xpath::Parser* parser)
-{
-  FILE *yyoutput = yyo;
-  YYUSE (yyoutput);
-  YYUSE (parser);
-  if (!yyvaluep)
-    return;
-# ifdef YYPRINT
-  if (yytype < YYNTOKENS)
-    YYPRINT (yyo, yytoknum[yytype], *yyvaluep);
-# endif
-  YYUSE (yytype);
-}
-
-
-/*---------------------------.
-| Print this symbol on YYO.  |
-`---------------------------*/
-
-static void
-yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep, blink::xpath::Parser* parser)
-{
-  YYFPRINTF (yyo, "%s %s (",
-             yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
-
-  yy_symbol_value_print (yyo, yytype, yyvaluep, parser);
-  YYFPRINTF (yyo, ")");
-}
-
-/*------------------------------------------------------------------.
-| yy_stack_print -- Print the state stack from its BOTTOM up to its |
-| TOP (included).                                                   |
-`------------------------------------------------------------------*/
-
-static void
-yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
-{
-  YYFPRINTF (stderr, "Stack now");
-  for (; yybottom <= yytop; yybottom++)
-    {
-      int yybot = *yybottom;
-      YYFPRINTF (stderr, " %d", yybot);
-    }
-  YYFPRINTF (stderr, "\n");
-}
-
-# define YY_STACK_PRINT(Bottom, Top)                            \
-do {                                                            \
-  if (yydebug)                                                  \
-    yy_stack_print ((Bottom), (Top));                           \
-} while (0)
-
-
-/*------------------------------------------------.
-| Report that the YYRULE is going to be reduced.  |
-`------------------------------------------------*/
-
-static void
-yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule, blink::xpath::Parser* parser)
-{
-  unsigned long yylno = yyrline[yyrule];
-  int yynrhs = yyr2[yyrule];
-  int yyi;
-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
-             yyrule - 1, yylno);
-  /* The symbols being reduced.  */
-  for (yyi = 0; yyi < yynrhs; yyi++)
-    {
-      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
-      yy_symbol_print (stderr,
-                       yystos[yyssp[yyi + 1 - yynrhs]],
-                       &yyvsp[(yyi + 1) - (yynrhs)]
-                                              , parser);
-      YYFPRINTF (stderr, "\n");
-    }
-}
-
-# define YY_REDUCE_PRINT(Rule)          \
-do {                                    \
-  if (yydebug)                          \
-    yy_reduce_print (yyssp, yyvsp, Rule, parser); \
-} while (0)
-
-/* Nonzero means print parse trace.  It is left uninitialized so that
-   multiple parsers can coexist.  */
-int yydebug;
-#else /* !YYDEBUG */
-# define YYDPRINTF(Args)
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
-# define YY_STACK_PRINT(Bottom, Top)
-# define YY_REDUCE_PRINT(Rule)
-#endif /* !YYDEBUG */
-
-
-/* YYINITDEPTH -- initial size of the parser's stacks.  */
-#ifndef YYINITDEPTH
-# define YYINITDEPTH 200
-#endif
-
-/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
-   if the built-in stack extension method is used).
-
-   Do not make this value too large; the results are undefined if
-   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
-   evaluated with infinite-precision integer arithmetic.  */
-
-#ifndef YYMAXDEPTH
-# define YYMAXDEPTH 10000
-#endif
-
-
-#if YYERROR_VERBOSE
-
-# ifndef yystrlen
-#  if defined __GLIBC__ && defined _STRING_H
-#   define yystrlen strlen
-#  else
-/* Return the length of YYSTR.  */
-static YYSIZE_T
-yystrlen (const char *yystr)
-{
-  YYSIZE_T yylen;
-  for (yylen = 0; yystr[yylen]; yylen++)
-    continue;
-  return yylen;
-}
-#  endif
-# endif
-
-# ifndef yystpcpy
-#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
-#   define yystpcpy stpcpy
-#  else
-/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
-   YYDEST.  */
-static char *
-yystpcpy (char *yydest, const char *yysrc)
-{
-  char *yyd = yydest;
-  const char *yys = yysrc;
-
-  while ((*yyd++ = *yys++) != '\0')
-    continue;
-
-  return yyd - 1;
-}
-#  endif
-# endif
-
-# ifndef yytnamerr
-/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
-   quotes and backslashes, so that it's suitable for yyerror.  The
-   heuristic is that double-quoting is unnecessary unless the string
-   contains an apostrophe, a comma, or backslash (other than
-   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
-   null, do not copy; instead, return the length of what the result
-   would have been.  */
-static YYSIZE_T
-yytnamerr (char *yyres, const char *yystr)
-{
-  if (*yystr == '"')
-    {
-      YYSIZE_T yyn = 0;
-      char const *yyp = yystr;
-
-      for (;;)
-        switch (*++yyp)
-          {
-          case '\'':
-          case ',':
-            goto do_not_strip_quotes;
-
-          case '\\':
-            if (*++yyp != '\\')
-              goto do_not_strip_quotes;
-            else
-              goto append;
-
-          append:
-          default:
-            if (yyres)
-              yyres[yyn] = *yyp;
-            yyn++;
-            break;
-
-          case '"':
-            if (yyres)
-              yyres[yyn] = '\0';
-            return yyn;
-          }
-    do_not_strip_quotes: ;
-    }
-
-  if (! yyres)
-    return yystrlen (yystr);
-
-  return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres);
-}
-# endif
-
-/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
-   about the unexpected token YYTOKEN for the state stack whose top is
-   YYSSP.
-
-   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
-   not large enough to hold the message.  In that case, also set
-   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
-   required number of bytes is too large to store.  */
-static int
-yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
-                yytype_int16 *yyssp, int yytoken)
-{
-  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
-  YYSIZE_T yysize = yysize0;
-  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-  /* Internationalized format string. */
-  const char *yyformat = YY_NULLPTR;
-  /* Arguments of yyformat. */
-  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-  /* Number of reported tokens (one for the "unexpected", one per
-     "expected"). */
-  int yycount = 0;
-
-  /* There are many possibilities here to consider:
-     - If this state is a consistent state with a default action, then
-       the only way this function was invoked is if the default action
-       is an error action.  In that case, don't check for expected
-       tokens because there are none.
-     - The only way there can be no lookahead present (in yychar) is if
-       this state is a consistent state with a default action.  Thus,
-       detecting the absence of a lookahead is sufficient to determine
-       that there is no unexpected or expected token to report.  In that
-       case, just report a simple "syntax error".
-     - Don't assume there isn't a lookahead just because this state is a
-       consistent state with a default action.  There might have been a
-       previous inconsistent state, consistent state with a non-default
-       action, or user semantic action that manipulated yychar.
-     - Of course, the expected token list depends on states to have
-       correct lookahead information, and it depends on the parser not
-       to perform extra reductions after fetching a lookahead from the
-       scanner and before detecting a syntax error.  Thus, state merging
-       (from LALR or IELR) and default reductions corrupt the expected
-       token list.  However, the list is correct for canonical LR with
-       one exception: it will still contain any token that will not be
-       accepted due to an error action in a later state.
-  */
-  if (yytoken != YYEMPTY)
-    {
-      int yyn = yypact[*yyssp];
-      yyarg[yycount++] = yytname[yytoken];
-      if (!yypact_value_is_default (yyn))
-        {
-          /* Start YYX at -YYN if negative to avoid negative indexes in
-             YYCHECK.  In other words, skip the first -YYN actions for
-             this state because they are default actions.  */
-          int yyxbegin = yyn < 0 ? -yyn : 0;
-          /* Stay within bounds of both yycheck and yytname.  */
-          int yychecklim = YYLAST - yyn + 1;
-          int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-          int yyx;
-
-          for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
-                && !yytable_value_is_error (yytable[yyx + yyn]))
-              {
-                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-                  {
-                    yycount = 1;
-                    yysize = yysize0;
-                    break;
-                  }
-                yyarg[yycount++] = yytname[yyx];
-                {
-                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
-                  if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
-                    yysize = yysize1;
-                  else
-                    return 2;
-                }
-              }
-        }
-    }
-
-  switch (yycount)
-    {
-# define YYCASE_(N, S)                      \
-      case N:                               \
-        yyformat = S;                       \
-      break
-    default: /* Avoid compiler warnings. */
-      YYCASE_(0, YY_("syntax error"));
-      YYCASE_(1, YY_("syntax error, unexpected %s"));
-      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
-      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
-      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
-      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
-# undef YYCASE_
-    }
-
-  {
-    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
-    if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
-      yysize = yysize1;
+    if (static_cast<int> (t) <= yyeof_)
+      return yyeof_;
+    else if (static_cast<unsigned> (t) <= user_token_number_max_)
+      return translate_table[t];
     else
-      return 2;
+      return undef_token_;
   }
 
-  if (*yymsg_alloc < yysize)
-    {
-      *yymsg_alloc = 2 * yysize;
-      if (! (yysize <= *yymsg_alloc
-             && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
-        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
-      return 1;
-    }
+} // xpathyy
+#line 1984 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
 
-  /* Avoid sprintf, as that infringes on the user's name space.
-     Don't have undefined behavior even if the translation
-     produced a string with the wrong number of "%s"s.  */
-  {
-    char *yyp = *yymsg;
-    int yyi = 0;
-    while ((*yyp = *yyformat) != '\0')
-      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
-        {
-          yyp += yytnamerr (yyp, yyarg[yyi++]);
-          yyformat += 2;
-        }
-      else
-        {
-          yyp++;
-          yyformat++;
-        }
-  }
-  return 0;
-}
-#endif /* YYERROR_VERBOSE */
-
-/*-----------------------------------------------.
-| Release the memory associated to this symbol.  |
-`-----------------------------------------------*/
-
-static void
-yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, blink::xpath::Parser* parser)
-{
-  YYUSE (yyvaluep);
-  YYUSE (parser);
-  if (!yymsg)
-    yymsg = "Deleting";
-  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
-
-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-  YYUSE (yytype);
-  YY_IGNORE_MAYBE_UNINITIALIZED_END
-}
-
-
-
-
-/*----------.
-| yyparse.  |
-`----------*/
-
-int
-yyparse (blink::xpath::Parser* parser)
-{
-/* The lookahead symbol.  */
-int yychar;
-
-
-/* The semantic value of the lookahead symbol.  */
-/* Default value used for initialization, for pacifying older GCCs
-   or non-GCC compilers.  */
-YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
-YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
-
-    /* Number of syntax errors so far.  */
-    int yynerrs;
-
-    int yystate;
-    /* Number of tokens to shift before error messages enabled.  */
-    int yyerrstatus;
-
-    /* The stacks and their tools:
-       'yyss': related to states.
-       'yyvs': related to semantic values.
-
-       Refer to the stacks through separate pointers, to allow yyoverflow
-       to reallocate them elsewhere.  */
-
-    /* The state stack.  */
-    yytype_int16 yyssa[YYINITDEPTH];
-    yytype_int16 *yyss;
-    yytype_int16 *yyssp;
-
-    /* The semantic value stack.  */
-    YYSTYPE yyvsa[YYINITDEPTH];
-    YYSTYPE *yyvs;
-    YYSTYPE *yyvsp;
-
-    YYSIZE_T yystacksize;
-
-  int yyn;
-  int yyresult;
-  /* Lookahead token as an internal (translated) token number.  */
-  int yytoken = 0;
-  /* The variables used to return semantic value and location from the
-     action routines.  */
-  YYSTYPE yyval;
-
-#if YYERROR_VERBOSE
-  /* Buffer for error messages, and its allocated size.  */
-  char yymsgbuf[128];
-  char *yymsg = yymsgbuf;
-  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
-
-#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
-
-  /* The number of symbols on the RHS of the reduced rule.
-     Keep to zero when no symbol should be popped.  */
-  int yylen = 0;
-
-  yyssp = yyss = yyssa;
-  yyvsp = yyvs = yyvsa;
-  yystacksize = YYINITDEPTH;
-
-  YYDPRINTF ((stderr, "Starting parse\n"));
-
-  yystate = 0;
-  yyerrstatus = 0;
-  yynerrs = 0;
-  yychar = YYEMPTY; /* Cause a token to be read.  */
-  goto yysetstate;
-
-
-/*------------------------------------------------------------.
-| yynewstate -- push a new state, which is found in yystate.  |
-`------------------------------------------------------------*/
-yynewstate:
-  /* In all cases, when you get here, the value and location stacks
-     have just been pushed.  So pushing a state here evens the stacks.  */
-  yyssp++;
-
-
-/*--------------------------------------------------------------------.
-| yynewstate -- set current state (the top of the stack) to yystate.  |
-`--------------------------------------------------------------------*/
-yysetstate:
-  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
-  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
-  *yyssp = (yytype_int16) yystate;
-
-  if (yyss + yystacksize - 1 <= yyssp)
-#if !defined yyoverflow && !defined YYSTACK_RELOCATE
-    goto yyexhaustedlab;
-#else
-    {
-      /* Get the current used size of the three stacks, in elements.  */
-      YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1);
-
-# if defined yyoverflow
-      {
-        /* Give user a chance to reallocate the stack.  Use copies of
-           these so that the &'s don't force the real ones into
-           memory.  */
-        YYSTYPE *yyvs1 = yyvs;
-        yytype_int16 *yyss1 = yyss;
-
-        /* Each stack pointer address is followed by the size of the
-           data in use in that stack, in bytes.  This used to be a
-           conditional around just the two extra args, but that might
-           be undefined if yyoverflow is a macro.  */
-        yyoverflow (YY_("memory exhausted"),
-                    &yyss1, yysize * sizeof (*yyssp),
-                    &yyvs1, yysize * sizeof (*yyvsp),
-                    &yystacksize);
-        yyss = yyss1;
-        yyvs = yyvs1;
-      }
-# else /* defined YYSTACK_RELOCATE */
-      /* Extend the stack our own way.  */
-      if (YYMAXDEPTH <= yystacksize)
-        goto yyexhaustedlab;
-      yystacksize *= 2;
-      if (YYMAXDEPTH < yystacksize)
-        yystacksize = YYMAXDEPTH;
-
-      {
-        yytype_int16 *yyss1 = yyss;
-        union yyalloc *yyptr =
-          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-        if (! yyptr)
-          goto yyexhaustedlab;
-        YYSTACK_RELOCATE (yyss_alloc, yyss);
-        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
-# undef YYSTACK_RELOCATE
-        if (yyss1 != yyssa)
-          YYSTACK_FREE (yyss1);
-      }
-# endif
-
-      yyssp = yyss + yysize - 1;
-      yyvsp = yyvs + yysize - 1;
-
-      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-                  (unsigned long) yystacksize));
-
-      if (yyss + yystacksize - 1 <= yyssp)
-        YYABORT;
-    }
-#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
-
-  if (yystate == YYFINAL)
-    YYACCEPT;
-
-  goto yybackup;
-
-
-/*-----------.
-| yybackup.  |
-`-----------*/
-yybackup:
-  /* Do appropriate processing given the current state.  Read a
-     lookahead token if we need one and don't already have one.  */
-
-  /* First try to decide what to do without reference to lookahead token.  */
-  yyn = yypact[yystate];
-  if (yypact_value_is_default (yyn))
-    goto yydefault;
-
-  /* Not known => get a lookahead token if don't already have one.  */
-
-  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
-  if (yychar == YYEMPTY)
-    {
-      YYDPRINTF ((stderr, "Reading a token: "));
-      yychar = yylex (&yylval);
-    }
-
-  if (yychar <= YYEOF)
-    {
-      yychar = yytoken = YYEOF;
-      YYDPRINTF ((stderr, "Now at end of input.\n"));
-    }
-  else
-    {
-      yytoken = YYTRANSLATE (yychar);
-      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
-    }
-
-  /* If the proper action on seeing token YYTOKEN is to reduce or to
-     detect an error, take that action.  */
-  yyn += yytoken;
-  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
-    goto yydefault;
-  yyn = yytable[yyn];
-  if (yyn <= 0)
-    {
-      if (yytable_value_is_error (yyn))
-        goto yyerrlab;
-      yyn = -yyn;
-      goto yyreduce;
-    }
-
-  /* Count tokens shifted since error; after three, turn off error
-     status.  */
-  if (yyerrstatus)
-    yyerrstatus--;
-
-  /* Shift the lookahead token.  */
-  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-
-  /* Discard the shifted token.  */
-  yychar = YYEMPTY;
-
-  yystate = yyn;
-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-  *++yyvsp = yylval;
-  YY_IGNORE_MAYBE_UNINITIALIZED_END
-  goto yynewstate;
-
-
-/*-----------------------------------------------------------.
-| yydefault -- do the default action for the current state.  |
-`-----------------------------------------------------------*/
-yydefault:
-  yyn = yydefact[yystate];
-  if (yyn == 0)
-    goto yyerrlab;
-  goto yyreduce;
-
-
-/*-----------------------------.
-| yyreduce -- do a reduction.  |
-`-----------------------------*/
-yyreduce:
-  /* yyn is the number of a rule to reduce with.  */
-  yylen = yyr2[yyn];
-
-  /* If YYLEN is nonzero, implement the default value of the action:
-     '$$ = $1'.
-
-     Otherwise, the following line sets YYVAL to garbage.
-     This behavior is undocumented and Bison
-     users should not rely upon it.  Assigning to YYVAL
-     unconditionally makes the parser a bit smaller, and it avoids a
-     GCC warning that YYVAL may be used uninitialized.  */
-  yyval = yyvsp[1-yylen];
-
-
-  YY_REDUCE_PRINT (yyn);
-  switch (yyn)
-    {
-  case 2:
-#line 135 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      parser->top_expr_ = (yyvsp[0].expr);
-    }
-#line 1362 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 3:
-#line 142 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.location_path)->SetAbsolute(false);
-    }
-#line 1370 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 4:
-#line 147 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.location_path)->SetAbsolute(true);
-    }
-#line 1378 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 5:
-#line 154 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.location_path) = blink::MakeGarbageCollected<blink::xpath::LocationPath>();
-    }
-#line 1386 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 6:
-#line 159 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.location_path) = (yyvsp[0].location_path);
-    }
-#line 1394 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 7:
-#line 164 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.location_path) = (yyvsp[0].location_path);
-      (yyval.location_path)->InsertFirstStep((yyvsp[-1].step));
-    }
-#line 1403 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 8:
-#line 172 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.location_path) = blink::MakeGarbageCollected<blink::xpath::LocationPath>();
-      (yyval.location_path)->AppendStep((yyvsp[0].step));
-    }
-#line 1412 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 9:
-#line 178 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.location_path)->AppendStep((yyvsp[0].step));
-    }
-#line 1420 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 10:
-#line 183 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.location_path)->AppendStep((yyvsp[-1].step));
-      (yyval.location_path)->AppendStep((yyvsp[0].step));
-    }
-#line 1429 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 11:
-#line 191 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      if ((yyvsp[0].pred_list))
-        (yyval.step) = blink::MakeGarbageCollected<Step>(Step::kChildAxis, *(yyvsp[-1].node_test), *(yyvsp[0].pred_list));
-      else
-        (yyval.step) = blink::MakeGarbageCollected<Step>(Step::kChildAxis, *(yyvsp[-1].node_test));
-    }
-#line 1440 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 12:
-#line 199 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      AtomicString local_name;
-      AtomicString namespace_uri;
-      if (!parser->ExpandQName(*(yyvsp[-1].str), local_name, namespace_uri)) {
-        parser->got_namespace_error_ = true;
-        YYABORT;
-      }
-
-      if ((yyvsp[0].pred_list))
-        (yyval.step) = blink::MakeGarbageCollected<Step>(Step::kChildAxis, Step::NodeTest(Step::NodeTest::kNameTest, local_name, namespace_uri), *(yyvsp[0].pred_list));
-      else
-        (yyval.step) = blink::MakeGarbageCollected<Step>(Step::kChildAxis, Step::NodeTest(Step::NodeTest::kNameTest, local_name, namespace_uri));
-       parser->DeleteString((yyvsp[-1].str));
-    }
-#line 1459 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 13:
-#line 215 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      if ((yyvsp[0].pred_list))
-        (yyval.step) = blink::MakeGarbageCollected<Step>((yyvsp[-2].axis), *(yyvsp[-1].node_test), *(yyvsp[0].pred_list));
-      else
-        (yyval.step) = blink::MakeGarbageCollected<Step>((yyvsp[-2].axis), *(yyvsp[-1].node_test));
-    }
-#line 1470 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 14:
-#line 223 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      AtomicString local_name;
-      AtomicString namespace_uri;
-      if (!parser->ExpandQName(*(yyvsp[-1].str), local_name, namespace_uri)) {
-        parser->got_namespace_error_ = true;
-        YYABORT;
-      }
-
-      if ((yyvsp[0].pred_list))
-        (yyval.step) = blink::MakeGarbageCollected<Step>((yyvsp[-2].axis), Step::NodeTest(Step::NodeTest::kNameTest, local_name, namespace_uri), *(yyvsp[0].pred_list));
-      else
-        (yyval.step) = blink::MakeGarbageCollected<Step>((yyvsp[-2].axis), Step::NodeTest(Step::NodeTest::kNameTest, local_name, namespace_uri));
-      parser->DeleteString((yyvsp[-1].str));
-    }
-#line 1489 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 17:
-#line 245 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.axis) = Step::kAttributeAxis;
-    }
-#line 1497 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 18:
-#line 252 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      if (*(yyvsp[-2].str) == "node")
-        (yyval.node_test) = blink::MakeGarbageCollected<Step::NodeTest>(Step::NodeTest::kAnyNodeTest);
-      else if (*(yyvsp[-2].str) == "text")
-        (yyval.node_test) = blink::MakeGarbageCollected<Step::NodeTest>(Step::NodeTest::kTextNodeTest);
-      else if (*(yyvsp[-2].str) == "comment")
-        (yyval.node_test) = blink::MakeGarbageCollected<Step::NodeTest>(Step::NodeTest::kCommentNodeTest);
-
-      parser->DeleteString((yyvsp[-2].str));
-    }
-#line 1512 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 19:
-#line 264 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.node_test) = blink::MakeGarbageCollected<Step::NodeTest>(Step::NodeTest::kProcessingInstructionNodeTest);
-      parser->DeleteString((yyvsp[-2].str));
-    }
-#line 1521 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 20:
-#line 270 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.node_test) = blink::MakeGarbageCollected<Step::NodeTest>(Step::NodeTest::kProcessingInstructionNodeTest, (yyvsp[-1].str)->StripWhiteSpace());
-      parser->DeleteString((yyvsp[-3].str));
-      parser->DeleteString((yyvsp[-1].str));
-    }
-#line 1531 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 21:
-#line 279 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.pred_list) = 0;
-    }
-#line 1539 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 23:
-#line 288 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.pred_list) = blink::MakeGarbageCollected<blink::HeapVector<blink::Member<blink::xpath::Predicate>>>();
-      (yyval.pred_list)->push_back(blink::MakeGarbageCollected<blink::xpath::Predicate>((yyvsp[0].expr)));
-    }
-#line 1548 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 24:
-#line 294 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.pred_list)->push_back(blink::MakeGarbageCollected<blink::xpath::Predicate>((yyvsp[0].expr)));
-    }
-#line 1556 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 25:
-#line 301 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.expr) = (yyvsp[-1].expr);
-    }
-#line 1564 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 26:
-#line 308 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.step) = blink::MakeGarbageCollected<Step>(Step::kDescendantOrSelfAxis, Step::NodeTest(Step::NodeTest::kAnyNodeTest));
-    }
-#line 1572 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 27:
-#line 315 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.step) = blink::MakeGarbageCollected<Step>(Step::kSelfAxis, Step::NodeTest(Step::NodeTest::kAnyNodeTest));
-    }
-#line 1580 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 28:
-#line 320 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.step) = blink::MakeGarbageCollected<Step>(Step::kParentAxis, Step::NodeTest(Step::NodeTest::kAnyNodeTest));
-    }
-#line 1588 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 29:
-#line 327 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.expr) = blink::MakeGarbageCollected<blink::xpath::VariableReference>(*(yyvsp[0].str));
-      parser->DeleteString((yyvsp[0].str));
-    }
-#line 1597 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 30:
-#line 333 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.expr) = (yyvsp[-1].expr);
-    }
-#line 1605 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 31:
-#line 338 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.expr) = blink::MakeGarbageCollected<blink::xpath::StringExpression>(*(yyvsp[0].str));
-      parser->DeleteString((yyvsp[0].str));
-    }
-#line 1614 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 32:
-#line 344 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.expr) = blink::MakeGarbageCollected<blink::xpath::Number>((yyvsp[0].str)->ToDouble());
-      parser->DeleteString((yyvsp[0].str));
-    }
-#line 1623 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 34:
-#line 354 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.expr) = blink::xpath::CreateFunction(*(yyvsp[-2].str));
-      if (!(yyval.expr))
-        YYABORT;
-      parser->DeleteString((yyvsp[-2].str));
-    }
-#line 1634 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 35:
-#line 362 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.expr) = blink::xpath::CreateFunction(*(yyvsp[-3].str), *(yyvsp[-1].arg_list));
-      if (!(yyval.expr))
-        YYABORT;
-      parser->DeleteString((yyvsp[-3].str));
-    }
-#line 1645 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 36:
-#line 372 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.arg_list) = blink::MakeGarbageCollected<blink::HeapVector<blink::Member<blink::xpath::Expression>>>();
-      (yyval.arg_list)->push_back((yyvsp[0].expr));
-    }
-#line 1654 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 37:
-#line 378 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.arg_list)->push_back((yyvsp[0].expr));
-    }
-#line 1662 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 40:
-#line 391 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.expr) = blink::MakeGarbageCollected<blink::xpath::Union>();
-      (yyval.expr)->AddSubExpression((yyvsp[-2].expr));
-      (yyval.expr)->AddSubExpression((yyvsp[0].expr));
-    }
-#line 1672 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 41:
-#line 400 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.expr) = (yyvsp[0].location_path);
-    }
-#line 1680 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 43:
-#line 407 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyvsp[0].location_path)->SetAbsolute(true);
-      (yyval.expr) = blink::MakeGarbageCollected<blink::xpath::Path>((yyvsp[-2].expr), (yyvsp[0].location_path));
-    }
-#line 1689 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 44:
-#line 413 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyvsp[0].location_path)->InsertFirstStep((yyvsp[-1].step));
-      (yyvsp[0].location_path)->SetAbsolute(true);
-      (yyval.expr) = blink::MakeGarbageCollected<blink::xpath::Path>((yyvsp[-2].expr), (yyvsp[0].location_path));
-    }
-#line 1699 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 46:
-#line 424 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.expr) = blink::MakeGarbageCollected<blink::xpath::Filter>((yyvsp[-1].expr), *(yyvsp[0].pred_list));
-    }
-#line 1707 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 48:
-#line 433 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.expr) = blink::MakeGarbageCollected<blink::xpath::LogicalOp>(blink::xpath::LogicalOp::kOP_Or, (yyvsp[-2].expr), (yyvsp[0].expr));
-    }
-#line 1715 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 50:
-#line 442 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.expr) = blink::MakeGarbageCollected<blink::xpath::LogicalOp>(blink::xpath::LogicalOp::kOP_And, (yyvsp[-2].expr), (yyvsp[0].expr));
-    }
-#line 1723 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 52:
-#line 451 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.expr) = blink::MakeGarbageCollected<blink::xpath::EqTestOp>((yyvsp[-1].eq_op), (yyvsp[-2].expr), (yyvsp[0].expr));
-    }
-#line 1731 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 54:
-#line 460 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.expr) = blink::MakeGarbageCollected<blink::xpath::EqTestOp>((yyvsp[-1].eq_op), (yyvsp[-2].expr), (yyvsp[0].expr));
-    }
-#line 1739 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 56:
-#line 469 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.expr) = blink::MakeGarbageCollected<blink::xpath::NumericOp>(blink::xpath::NumericOp::kOP_Add, (yyvsp[-2].expr), (yyvsp[0].expr));
-    }
-#line 1747 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 57:
-#line 474 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.expr) = blink::MakeGarbageCollected<blink::xpath::NumericOp>(blink::xpath::NumericOp::kOP_Sub, (yyvsp[-2].expr), (yyvsp[0].expr));
-    }
-#line 1755 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 59:
-#line 483 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.expr) = blink::MakeGarbageCollected<blink::xpath::NumericOp>((yyvsp[-1].num_op), (yyvsp[-2].expr), (yyvsp[0].expr));
-    }
-#line 1763 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-  case 61:
-#line 492 "third_party/blink/renderer/core/xml/xpath_grammar.y"
-    {
-      (yyval.expr) = blink::MakeGarbageCollected<blink::xpath::Negative>();
-      (yyval.expr)->AddSubExpression((yyvsp[0].expr));
-    }
-#line 1772 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-    break;
-
-
-#line 1776 "third_party/blink/renderer/core/xml/xpath_grammar_generated.cc"
-
-      default: break;
-    }
-  /* User semantic actions sometimes alter yychar, and that requires
-     that yytoken be updated with the new translation.  We take the
-     approach of translating immediately before every use of yytoken.
-     One alternative is translating here after every semantic action,
-     but that translation would be missed if the semantic action invokes
-     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
-     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
-     incorrect destructor might then be invoked immediately.  In the
-     case of YYERROR or YYBACKUP, subsequent parser actions might lead
-     to an incorrect destructor call or verbose syntax error message
-     before the lookahead is translated.  */
-  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
-
-  YYPOPSTACK (yylen);
-  yylen = 0;
-  YY_STACK_PRINT (yyss, yyssp);
-
-  *++yyvsp = yyval;
-
-  /* Now 'shift' the result of the reduction.  Determine what state
-     that goes to, based on the state we popped back to and the rule
-     number reduced by.  */
-  {
-    const int yylhs = yyr1[yyn] - YYNTOKENS;
-    const int yyi = yypgoto[yylhs] + *yyssp;
-    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
-               ? yytable[yyi]
-               : yydefgoto[yylhs]);
-  }
-
-  goto yynewstate;
-
-
-/*--------------------------------------.
-| yyerrlab -- here on detecting error.  |
-`--------------------------------------*/
-yyerrlab:
-  /* Make sure we have latest lookahead translation.  See comments at
-     user semantic actions for why this is necessary.  */
-  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
-
-  /* If not already recovering from an error, report this error.  */
-  if (!yyerrstatus)
-    {
-      ++yynerrs;
-#if ! YYERROR_VERBOSE
-      yyerror (parser, YY_("syntax error"));
-#else
-# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
-                                        yyssp, yytoken)
-      {
-        char const *yymsgp = YY_("syntax error");
-        int yysyntax_error_status;
-        yysyntax_error_status = YYSYNTAX_ERROR;
-        if (yysyntax_error_status == 0)
-          yymsgp = yymsg;
-        else if (yysyntax_error_status == 1)
-          {
-            if (yymsg != yymsgbuf)
-              YYSTACK_FREE (yymsg);
-            yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
-            if (!yymsg)
-              {
-                yymsg = yymsgbuf;
-                yymsg_alloc = sizeof yymsgbuf;
-                yysyntax_error_status = 2;
-              }
-            else
-              {
-                yysyntax_error_status = YYSYNTAX_ERROR;
-                yymsgp = yymsg;
-              }
-          }
-        yyerror (parser, yymsgp);
-        if (yysyntax_error_status == 2)
-          goto yyexhaustedlab;
-      }
-# undef YYSYNTAX_ERROR
-#endif
-    }
-
-
-
-  if (yyerrstatus == 3)
-    {
-      /* If just tried and failed to reuse lookahead token after an
-         error, discard it.  */
-
-      if (yychar <= YYEOF)
-        {
-          /* Return failure if at end of input.  */
-          if (yychar == YYEOF)
-            YYABORT;
-        }
-      else
-        {
-          yydestruct ("Error: discarding",
-                      yytoken, &yylval, parser);
-          yychar = YYEMPTY;
-        }
-    }
-
-  /* Else will try to reuse lookahead token after shifting the error
-     token.  */
-  goto yyerrlab1;
-
-
-/*---------------------------------------------------.
-| yyerrorlab -- error raised explicitly by YYERROR.  |
-`---------------------------------------------------*/
-yyerrorlab:
-  /* Pacify compilers when the user code never invokes YYERROR and the
-     label yyerrorlab therefore never appears in user code.  */
-  if (0)
-    YYERROR;
-
-  /* Do not reclaim the symbols of the rule whose action triggered
-     this YYERROR.  */
-  YYPOPSTACK (yylen);
-  yylen = 0;
-  YY_STACK_PRINT (yyss, yyssp);
-  yystate = *yyssp;
-  goto yyerrlab1;
-
-
-/*-------------------------------------------------------------.
-| yyerrlab1 -- common code for both syntax error and YYERROR.  |
-`-------------------------------------------------------------*/
-yyerrlab1:
-  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
-
-  for (;;)
-    {
-      yyn = yypact[yystate];
-      if (!yypact_value_is_default (yyn))
-        {
-          yyn += YYTERROR;
-          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
-            {
-              yyn = yytable[yyn];
-              if (0 < yyn)
-                break;
-            }
-        }
-
-      /* Pop the current state because it cannot handle the error token.  */
-      if (yyssp == yyss)
-        YYABORT;
-
-
-      yydestruct ("Error: popping",
-                  yystos[yystate], yyvsp, parser);
-      YYPOPSTACK (1);
-      yystate = *yyssp;
-      YY_STACK_PRINT (yyss, yyssp);
-    }
-
-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-  *++yyvsp = yylval;
-  YY_IGNORE_MAYBE_UNINITIALIZED_END
-
-
-  /* Shift the error token.  */
-  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
-
-  yystate = yyn;
-  goto yynewstate;
-
-
-/*-------------------------------------.
-| yyacceptlab -- YYACCEPT comes here.  |
-`-------------------------------------*/
-yyacceptlab:
-  yyresult = 0;
-  goto yyreturn;
-
-
-/*-----------------------------------.
-| yyabortlab -- YYABORT comes here.  |
-`-----------------------------------*/
-yyabortlab:
-  yyresult = 1;
-  goto yyreturn;
-
-
-#if !defined yyoverflow || YYERROR_VERBOSE
-/*-------------------------------------------------.
-| yyexhaustedlab -- memory exhaustion comes here.  |
-`-------------------------------------------------*/
-yyexhaustedlab:
-  yyerror (parser, YY_("memory exhausted"));
-  yyresult = 2;
-  /* Fall through.  */
-#endif
-
-
-/*-----------------------------------------------------.
-| yyreturn -- parsing is finished, return the result.  |
-`-----------------------------------------------------*/
-yyreturn:
-  if (yychar != YYEMPTY)
-    {
-      /* Make sure we have latest lookahead translation.  See comments at
-         user semantic actions for why this is necessary.  */
-      yytoken = YYTRANSLATE (yychar);
-      yydestruct ("Cleanup: discarding lookahead",
-                  yytoken, &yylval, parser);
-    }
-  /* Do not reclaim the symbols of the rule whose action triggered
-     this YYABORT or YYACCEPT.  */
-  YYPOPSTACK (yylen);
-  YY_STACK_PRINT (yyss, yyssp);
-  while (yyssp != yyss)
-    {
-      yydestruct ("Cleanup: popping",
-                  yystos[*yyssp], yyvsp, parser);
-      YYPOPSTACK (1);
-    }
-#ifndef yyoverflow
-  if (yyss != yyssa)
-    YYSTACK_FREE (yyss);
-#endif
-#if YYERROR_VERBOSE
-  if (yymsg != yymsgbuf)
-    YYSTACK_FREE (yymsg);
-#endif
-  return yyresult;
-}
-#line 498 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+#line 489 "third_party/blink/renderer/core/xml/xpath_grammar.y"
 
diff --git a/third_party/blink/renderer/core/xml/xpath_grammar_generated.h b/third_party/blink/renderer/core/xml/xpath_grammar_generated.h
index 7d7f91e..f1fbe2d 100644
--- a/third_party/blink/renderer/core/xml/xpath_grammar_generated.h
+++ b/third_party/blink/renderer/core/xml/xpath_grammar_generated.h
@@ -1,106 +1,1483 @@
 // clang-format off
 #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_XML_XPATH_GRAMMAR_GENERATED_H_
 #define THIRD_PARTY_BLINK_RENDERER_CORE_XML_XPATH_GRAMMAR_GENERATED_H_
-/* A Bison parser, made by GNU Bison 3.4.1.  */
+// A Bison parser, made by GNU Bison 3.4.2.
 
-/* Bison interface for Yacc-like parsers in C
+// Skeleton interface for Bison LALR(1) parsers in C++
 
-   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,
-   Inc.
+// Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc.
 
-   This program is free software: you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation, either version 3 of the License, or
-   (at your option) any later version.
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
 
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
 
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+// You should have received a copy of the GNU General Public License
+// along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-/* As a special exception, you may create a larger work that contains
-   part or all of the Bison parser skeleton and distribute that work
-   under terms of your choice, so long as that work isn't itself a
-   parser generator using the skeleton or a modified version thereof
-   as a parser skeleton.  Alternatively, if you modify or redistribute
-   the parser skeleton itself, you may (at your option) remove this
-   special exception, which will cause the skeleton and the resulting
-   Bison output files to be licensed under the GNU General Public
-   License without this special exception.
+// As a special exception, you may create a larger work that contains
+// part or all of the Bison parser skeleton and distribute that work
+// under terms of your choice, so long as that work isn't itself a
+// parser generator using the skeleton or a modified version thereof
+// as a parser skeleton.  Alternatively, if you modify or redistribute
+// the parser skeleton itself, you may (at your option) remove this
+// special exception, which will cause the skeleton and the resulting
+// Bison output files to be licensed under the GNU General Public
+// License without this special exception.
 
-   This special exception was added by the Free Software Foundation in
-   version 2.2 of Bison.  */
+// This special exception was added by the Free Software Foundation in
+// version 2.2 of Bison.
 
-/* Undocumented macros, especially those whose name start with YY_,
-   are private implementation details.  Do not rely on them.  */
+
+/**
+ ** \file third_party/blink/renderer/core/xml/xpath_grammar_generated.h
+ ** Define the xpathyy::parser class.
+ */
+
+// C++ LALR(1) parser skeleton written by Akim Demaille.
+
+// Undocumented macros, especially those whose name start with YY_,
+// are private implementation details.  Do not rely on them.
 
 #ifndef YY_XPATHYY_THIRD_PARTY_BLINK_RENDERER_CORE_XML_XPATH_GRAMMAR_GENERATED_HH_INCLUDED
 # define YY_XPATHYY_THIRD_PARTY_BLINK_RENDERER_CORE_XML_XPATH_GRAMMAR_GENERATED_HH_INCLUDED
+// //                    "%code requires" blocks.
+#line 46 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+
+
+#include "third_party/blink/renderer/platform/heap/persistent.h"
+
+
+#line 54 "third_party/blink/renderer/core/xml/xpath_grammar_generated.h"
+
+
+# include <cstdlib> // std::abort
+# include <iostream>
+# include <stdexcept>
+# include <string>
+# include <vector>
+
+#if defined __cplusplus
+# define YY_CPLUSPLUS __cplusplus
+#else
+# define YY_CPLUSPLUS 199711L
+#endif
+
+// Support move semantics when possible.
+#if 201103L <= YY_CPLUSPLUS
+# define YY_MOVE           std::move
+# define YY_MOVE_OR_COPY   move
+# define YY_MOVE_REF(Type) Type&&
+# define YY_RVREF(Type)    Type&&
+# define YY_COPY(Type)     Type
+#else
+# define YY_MOVE
+# define YY_MOVE_OR_COPY   copy
+# define YY_MOVE_REF(Type) Type&
+# define YY_RVREF(Type)    const Type&
+# define YY_COPY(Type)     const Type&
+#endif
+
+// Support noexcept when possible.
+#if 201103L <= YY_CPLUSPLUS
+# define YY_NOEXCEPT noexcept
+# define YY_NOTHROW
+#else
+# define YY_NOEXCEPT
+# define YY_NOTHROW throw ()
+#endif
+
+// Support constexpr when possible.
+#if 201703 <= YY_CPLUSPLUS
+# define YY_CONSTEXPR constexpr
+#else
+# define YY_CONSTEXPR
+#endif
+
+
+#ifndef YYASSERT
+# include <cassert>
+# define YYASSERT assert
+#endif
+
+
+#ifndef YY_ATTRIBUTE
+# if (defined __GNUC__                                               \
+      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
+     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
+#  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
+# else
+#  define YY_ATTRIBUTE(Spec) /* empty */
+# endif
+#endif
+
+#ifndef YY_ATTRIBUTE_PURE
+# define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
+#endif
+
+#ifndef YY_ATTRIBUTE_UNUSED
+# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
+#endif
+
+/* Suppress unused-variable warnings by "using" E.  */
+#if ! defined lint || defined __GNUC__
+# define YYUSE(E) ((void) (E))
+#else
+# define YYUSE(E) /* empty */
+#endif
+
+#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+    _Pragma ("GCC diagnostic push") \
+    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
+    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
+    _Pragma ("GCC diagnostic pop")
+#else
+# define YY_INITIAL_VALUE(Value) Value
+#endif
+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
+#endif
+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
+#endif
+
+# ifndef YY_NULLPTR
+#  if defined __cplusplus
+#   if 201103L <= __cplusplus
+#    define YY_NULLPTR nullptr
+#   else
+#    define YY_NULLPTR 0
+#   endif
+#  else
+#   define YY_NULLPTR ((void*)0)
+#  endif
+# endif
+
 /* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
 #endif
-#if YYDEBUG
-extern int xpathyydebug;
-#endif
 
-/* Token type.  */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
-  enum yytokentype
+namespace xpathyy {
+#line 169 "third_party/blink/renderer/core/xml/xpath_grammar_generated.h"
+
+
+
+
+  /// A Bison parser.
+  class  YyParser 
   {
-    MULOP = 258,
-    EQOP = 259,
-    RELOP = 260,
-    PLUS = 261,
-    MINUS = 262,
-    OR = 263,
-    AND = 264,
-    AXISNAME = 265,
-    NODETYPE = 266,
-    PI = 267,
-    FUNCTIONNAME = 268,
-    LITERAL = 269,
-    VARIABLEREFERENCE = 270,
-    NUMBER = 271,
-    DOTDOT = 272,
-    SLASHSLASH = 273,
-    NAMETEST = 274,
-    XPATH_ERROR = 275
+  public:
+#ifndef YYSTYPE
+  /// A buffer to store and retrieve objects.
+  ///
+  /// Sort of a variant, but does not keep track of the nature
+  /// of the stored data, since that knowledge is available
+  /// via the current parser state.
+  class semantic_type
+  {
+  public:
+    /// Type of *this.
+    typedef semantic_type self_type;
+
+    /// Empty construction.
+    semantic_type () YY_NOEXCEPT
+      : yybuffer_ ()
+    {}
+
+    /// Construct and fill.
+    template <typename T>
+    semantic_type (YY_RVREF (T) t)
+    {
+      YYASSERT (sizeof (T) <= size);
+      new (yyas_<T> ()) T (YY_MOVE (t));
+    }
+
+    /// Destruction, allowed only if empty.
+    ~semantic_type () YY_NOEXCEPT
+    {}
+
+# if 201103L <= YY_CPLUSPLUS
+    /// Instantiate a \a T in here from \a t.
+    template <typename T, typename... U>
+    T&
+    emplace (U&&... u)
+    {
+      return *new (yyas_<T> ()) T (std::forward <U>(u)...);
+    }
+# else
+    /// Instantiate an empty \a T in here.
+    template <typename T>
+    T&
+    emplace ()
+    {
+      return *new (yyas_<T> ()) T ();
+    }
+
+    /// Instantiate a \a T in here from \a t.
+    template <typename T>
+    T&
+    emplace (const T& t)
+    {
+      return *new (yyas_<T> ()) T (t);
+    }
+# endif
+
+    /// Instantiate an empty \a T in here.
+    /// Obsolete, use emplace.
+    template <typename T>
+    T&
+    build ()
+    {
+      return emplace<T> ();
+    }
+
+    /// Instantiate a \a T in here from \a t.
+    /// Obsolete, use emplace.
+    template <typename T>
+    T&
+    build (const T& t)
+    {
+      return emplace<T> (t);
+    }
+
+    /// Accessor to a built \a T.
+    template <typename T>
+    T&
+    as () YY_NOEXCEPT
+    {
+      return *yyas_<T> ();
+    }
+
+    /// Const accessor to a built \a T (for %printer).
+    template <typename T>
+    const T&
+    as () const YY_NOEXCEPT
+    {
+      return *yyas_<T> ();
+    }
+
+    /// Swap the content with \a that, of same type.
+    ///
+    /// Both variants must be built beforehand, because swapping the actual
+    /// data requires reading it (with as()), and this is not possible on
+    /// unconstructed variants: it would require some dynamic testing, which
+    /// should not be the variant's responsibility.
+    /// Swapping between built and (possibly) non-built is done with
+    /// self_type::move ().
+    template <typename T>
+    void
+    swap (self_type& that) YY_NOEXCEPT
+    {
+      std::swap (as<T> (), that.as<T> ());
+    }
+
+    /// Move the content of \a that to this.
+    ///
+    /// Destroys \a that.
+    template <typename T>
+    void
+    move (self_type& that)
+    {
+# if 201103L <= YY_CPLUSPLUS
+      emplace<T> (std::move (that.as<T> ()));
+# else
+      emplace<T> ();
+      swap<T> (that);
+# endif
+      that.destroy<T> ();
+    }
+
+# if 201103L <= YY_CPLUSPLUS
+    /// Move the content of \a that to this.
+    template <typename T>
+    void
+    move (self_type&& that)
+    {
+      emplace<T> (std::move (that.as<T> ()));
+      that.destroy<T> ();
+    }
+#endif
+
+    /// Copy the content of \a that to this.
+    template <typename T>
+    void
+    copy (const self_type& that)
+    {
+      emplace<T> (that.as<T> ());
+    }
+
+    /// Destroy the stored \a T.
+    template <typename T>
+    void
+    destroy ()
+    {
+      as<T> ().~T ();
+    }
+
+  private:
+    /// Prohibit blind copies.
+    self_type& operator= (const self_type&);
+    semantic_type (const self_type&);
+
+    /// Accessor to raw memory as \a T.
+    template <typename T>
+    T*
+    yyas_ () YY_NOEXCEPT
+    {
+      void *yyp = yybuffer_.yyraw;
+      return static_cast<T*> (yyp);
+     }
+
+    /// Const accessor to raw memory as \a T.
+    template <typename T>
+    const T*
+    yyas_ () const YY_NOEXCEPT
+    {
+      const void *yyp = yybuffer_.yyraw;
+      return static_cast<const T*> (yyp);
+     }
+
+    /// An auxiliary type to compute the largest semantic type.
+    union union_type
+    {
+      // kNodeType
+      // kPI
+      // kFunctionName
+      // kLiteral
+      // kVariableReference
+      // kNumber
+      // kNameTest
+      char dummy1[sizeof (String)];
+
+      // ArgumentList
+      char dummy2[sizeof (blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Expression>>>)];
+
+      // OptionalPredicateList
+      // PredicateList
+      char dummy3[sizeof (blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Predicate>>>)];
+
+      // Expr
+      // Predicate
+      // PrimaryExpr
+      // FunctionCall
+      // Argument
+      // UnionExpr
+      // PathExpr
+      // FilterExpr
+      // OrExpr
+      // AndExpr
+      // EqualityExpr
+      // RelationalExpr
+      // AdditiveExpr
+      // MultiplicativeExpr
+      // UnaryExpr
+      char dummy4[sizeof (blink::Persistent<blink::xpath::Expression>)];
+
+      // LocationPath
+      // AbsoluteLocationPath
+      // RelativeLocationPath
+      char dummy5[sizeof (blink::Persistent<blink::xpath::LocationPath>)];
+
+      // NodeTest
+      char dummy6[sizeof (blink::Persistent<blink::xpath::Step::NodeTest>)];
+
+      // Step
+      // DescendantOrSelf
+      // AbbreviatedStep
+      char dummy7[sizeof (blink::Persistent<blink::xpath::Step>)];
+
+      // kEqOp
+      // kRelOp
+      char dummy8[sizeof (blink::xpath::EqTestOp::Opcode)];
+
+      // kMulOp
+      char dummy9[sizeof (blink::xpath::NumericOp::Opcode)];
+
+      // kAxisName
+      // AxisSpecifier
+      char dummy10[sizeof (blink::xpath::Step::Axis)];
+    };
+
+    /// The size of the largest semantic type.
+    enum { size = sizeof (union_type) };
+
+    /// A buffer to store semantic values.
+    union
+    {
+      /// Strongest alignment constraints.
+      long double yyalign_me;
+      /// A buffer large enough to store any of the semantic values.
+      char yyraw[size];
+    } yybuffer_;
   };
+
+#else
+    typedef YYSTYPE semantic_type;
 #endif
 
-/* Value type.  */
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-union YYSTYPE
-{
-#line 73 "third_party/blink/renderer/core/xml/xpath_grammar.y"
+    /// Syntax errors thrown from user actions.
+    struct syntax_error : std::runtime_error
+    {
+      syntax_error (const std::string& m)
+        : std::runtime_error (m)
+      {}
 
-  blink::xpath::Step::Axis axis;
-  blink::xpath::Step::NodeTest* node_test;
-  blink::xpath::NumericOp::Opcode num_op;
-  blink::xpath::EqTestOp::Opcode eq_op;
-  String* str;
-  blink::xpath::Expression* expr;
-  blink::HeapVector<blink::Member<blink::xpath::Predicate>>* pred_list;
-  blink::HeapVector<blink::Member<blink::xpath::Expression>>* arg_list;
-  blink::xpath::Step* step;
-  blink::xpath::LocationPath* location_path;
+      syntax_error (const syntax_error& s)
+        : std::runtime_error (s.what ())
+      {}
 
-#line 91 "third_party/blink/renderer/core/xml/xpath_grammar_generated.hh"
+      ~syntax_error () YY_NOEXCEPT YY_NOTHROW;
+    };
 
-};
-typedef union YYSTYPE YYSTYPE;
-# define YYSTYPE_IS_TRIVIAL 1
-# define YYSTYPE_IS_DECLARED 1
+    /// Tokens.
+    struct token
+    {
+      enum yytokentype
+      {
+        kMulOp = 258,
+        kEqOp = 259,
+        kRelOp = 260,
+        kPlus = 261,
+        kMinus = 262,
+        kOr = 263,
+        kAnd = 264,
+        kAxisName = 265,
+        kNodeType = 266,
+        kPI = 267,
+        kFunctionName = 268,
+        kLiteral = 269,
+        kVariableReference = 270,
+        kNumber = 271,
+        kDotDot = 272,
+        kSlashSlash = 273,
+        kNameTest = 274,
+        kXPathError = 275
+      };
+    };
+
+    /// (External) token type, as returned by yylex.
+    typedef token::yytokentype token_type;
+
+    /// Symbol type: an internal symbol number.
+    typedef int symbol_number_type;
+
+    /// The symbol type number to denote an empty symbol.
+    enum { empty_symbol = -2 };
+
+    /// Internal symbol number for tokens (subsumed by symbol_number_type).
+    typedef unsigned char token_number_type;
+
+    /// A complete symbol.
+    ///
+    /// Expects its Base type to provide access to the symbol type
+    /// via type_get ().
+    ///
+    /// Provide access to semantic value.
+    template <typename Base>
+    struct basic_symbol : Base
+    {
+      /// Alias to Base.
+      typedef Base super_type;
+
+      /// Default constructor.
+      basic_symbol ()
+        : value ()
+      {}
+
+#if 201103L <= YY_CPLUSPLUS
+      /// Move constructor.
+      basic_symbol (basic_symbol&& that);
+#endif
+
+      /// Copy constructor.
+      basic_symbol (const basic_symbol& that);
+
+      /// Constructor for valueless symbols, and symbols from each type.
+#if 201103L <= YY_CPLUSPLUS
+      basic_symbol (typename Base::kind_type t)
+        : Base (t)
+      {}
+#else
+      basic_symbol (typename Base::kind_type t)
+        : Base (t)
+      {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      basic_symbol (typename Base::kind_type t, String&& v)
+        : Base (t)
+        , value (std::move (v))
+      {}
+#else
+      basic_symbol (typename Base::kind_type t, const String& v)
+        : Base (t)
+        , value (v)
+      {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      basic_symbol (typename Base::kind_type t, blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Expression>>>&& v)
+        : Base (t)
+        , value (std::move (v))
+      {}
+#else
+      basic_symbol (typename Base::kind_type t, const blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Expression>>>& v)
+        : Base (t)
+        , value (v)
+      {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      basic_symbol (typename Base::kind_type t, blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Predicate>>>&& v)
+        : Base (t)
+        , value (std::move (v))
+      {}
+#else
+      basic_symbol (typename Base::kind_type t, const blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Predicate>>>& v)
+        : Base (t)
+        , value (v)
+      {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      basic_symbol (typename Base::kind_type t, blink::Persistent<blink::xpath::Expression>&& v)
+        : Base (t)
+        , value (std::move (v))
+      {}
+#else
+      basic_symbol (typename Base::kind_type t, const blink::Persistent<blink::xpath::Expression>& v)
+        : Base (t)
+        , value (v)
+      {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      basic_symbol (typename Base::kind_type t, blink::Persistent<blink::xpath::LocationPath>&& v)
+        : Base (t)
+        , value (std::move (v))
+      {}
+#else
+      basic_symbol (typename Base::kind_type t, const blink::Persistent<blink::xpath::LocationPath>& v)
+        : Base (t)
+        , value (v)
+      {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      basic_symbol (typename Base::kind_type t, blink::Persistent<blink::xpath::Step::NodeTest>&& v)
+        : Base (t)
+        , value (std::move (v))
+      {}
+#else
+      basic_symbol (typename Base::kind_type t, const blink::Persistent<blink::xpath::Step::NodeTest>& v)
+        : Base (t)
+        , value (v)
+      {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      basic_symbol (typename Base::kind_type t, blink::Persistent<blink::xpath::Step>&& v)
+        : Base (t)
+        , value (std::move (v))
+      {}
+#else
+      basic_symbol (typename Base::kind_type t, const blink::Persistent<blink::xpath::Step>& v)
+        : Base (t)
+        , value (v)
+      {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      basic_symbol (typename Base::kind_type t, blink::xpath::EqTestOp::Opcode&& v)
+        : Base (t)
+        , value (std::move (v))
+      {}
+#else
+      basic_symbol (typename Base::kind_type t, const blink::xpath::EqTestOp::Opcode& v)
+        : Base (t)
+        , value (v)
+      {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      basic_symbol (typename Base::kind_type t, blink::xpath::NumericOp::Opcode&& v)
+        : Base (t)
+        , value (std::move (v))
+      {}
+#else
+      basic_symbol (typename Base::kind_type t, const blink::xpath::NumericOp::Opcode& v)
+        : Base (t)
+        , value (v)
+      {}
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      basic_symbol (typename Base::kind_type t, blink::xpath::Step::Axis&& v)
+        : Base (t)
+        , value (std::move (v))
+      {}
+#else
+      basic_symbol (typename Base::kind_type t, const blink::xpath::Step::Axis& v)
+        : Base (t)
+        , value (v)
+      {}
+#endif
+
+      /// Destroy the symbol.
+      ~basic_symbol ()
+      {
+        clear ();
+      }
+
+      /// Destroy contents, and record that is empty.
+      void clear ()
+      {
+        // User destructor.
+        symbol_number_type yytype = this->type_get ();
+        basic_symbol<Base>& yysym = *this;
+        (void) yysym;
+        switch (yytype)
+        {
+       default:
+          break;
+        }
+
+        // Type destructor.
+switch (yytype)
+    {
+      case 11: // kNodeType
+      case 12: // kPI
+      case 13: // kFunctionName
+      case 14: // kLiteral
+      case 15: // kVariableReference
+      case 16: // kNumber
+      case 19: // kNameTest
+        value.template destroy< String > ();
+        break;
+
+      case 45: // ArgumentList
+        value.template destroy< blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Expression>>> > ();
+        break;
+
+      case 38: // OptionalPredicateList
+      case 39: // PredicateList
+        value.template destroy< blink::Persistent<blink::HeapVector<blink::Member<blink::xpath::Predicate>>> > ();
+        break;
+
+      case 31: // Expr
+      case 40: // Predicate
+      case 43: // PrimaryExpr
+      case 44: // FunctionCall
+      case 46: // Argument
+      case 47: // UnionExpr
+      case 48: // PathExpr
+      case 49: // FilterExpr
+      case 50: // OrExpr
+      case 51: // AndExpr
+      case 52: // EqualityExpr
+      case 53: // RelationalExpr
+      case 54: // AdditiveExpr
+      case 55: // MultiplicativeExpr
+      case 56: // UnaryExpr
+        value.template destroy< blink::Persistent<blink::xpath::Expression> > ();
+        break;
+
+      case 32: // LocationPath
+      case 33: // AbsoluteLocationPath
+      case 34: // RelativeLocationPath
+        value.template destroy< blink::Persistent<blink::xpath::LocationPath> > ();
+        break;
+
+      case 37: // NodeTest
+        value.template destroy< blink::Persistent<blink::xpath::Step::NodeTest> > ();
+        break;
+
+      case 35: // Step
+      case 41: // DescendantOrSelf
+      case 42: // AbbreviatedStep
+        value.template destroy< blink::Persistent<blink::xpath::Step> > ();
+        break;
+
+      case 4: // kEqOp
+      case 5: // kRelOp
+        value.template destroy< blink::xpath::EqTestOp::Opcode > ();
+        break;
+
+      case 3: // kMulOp
+        value.template destroy< blink::xpath::NumericOp::Opcode > ();
+        break;
+
+      case 10: // kAxisName
+      case 36: // AxisSpecifier
+        value.template destroy< blink::xpath::Step::Axis > ();
+        break;
+
+      default:
+        break;
+    }
+
+        Base::clear ();
+      }
+
+      /// Whether empty.
+      bool empty () const YY_NOEXCEPT;
+
+      /// Destructive move, \a s is emptied into this.
+      void move (basic_symbol& s);
+
+      /// The semantic value.
+      semantic_type value;
+
+    private:
+#if YY_CPLUSPLUS < 201103L
+      /// Assignment operator.
+      basic_symbol& operator= (const basic_symbol& that);
+#endif
+    };
+
+    /// Type access provider for token (enum) based symbols.
+    struct by_type
+    {
+      /// Default constructor.
+      by_type ();
+
+#if 201103L <= YY_CPLUSPLUS
+      /// Move constructor.
+      by_type (by_type&& that);
+#endif
+
+      /// Copy constructor.
+      by_type (const by_type& that);
+
+      /// The symbol type as needed by the constructor.
+      typedef token_type kind_type;
+
+      /// Constructor from (external) token numbers.
+      by_type (kind_type t);
+
+      /// Record that this symbol is empty.
+      void clear ();
+
+      /// Steal the symbol type from \a that.
+      void move (by_type& that);
+
+      /// The (internal) type number (corresponding to \a type).
+      /// \a empty when empty.
+      symbol_number_type type_get () const YY_NOEXCEPT;
+
+      /// The token.
+      token_type token () const YY_NOEXCEPT;
+
+      /// The symbol type.
+      /// \a empty_symbol when empty.
+      /// An int, not token_number_type, to be able to store empty_symbol.
+      int type;
+    };
+
+    /// "External" symbols: returned by the scanner.
+    struct symbol_type : basic_symbol<by_type>
+    {
+      /// Superclass.
+      typedef basic_symbol<by_type> super_type;
+
+      /// Empty symbol.
+      symbol_type () {}
+
+      /// Constructor for valueless symbols, and symbols from each type.
+#if 201103L <= YY_CPLUSPLUS
+      symbol_type (int tok)
+        : super_type(token_type (tok))
+      {
+        YYASSERT (tok == 0 || tok == token::kPlus || tok == token::kMinus || tok == token::kOr || tok == token::kAnd || tok == token::kDotDot || tok == token::kSlashSlash || tok == token::kXPathError || tok == 47 || tok == 64 || tok == 40 || tok == 41 || tok == 91 || tok == 93 || tok == 46 || tok == 44 || tok == 124);
+      }
+#else
+      symbol_type (int tok)
+        : super_type(token_type (tok))
+      {
+        YYASSERT (tok == 0 || tok == token::kPlus || tok == token::kMinus || tok == token::kOr || tok == token::kAnd || tok == token::kDotDot || tok == token::kSlashSlash || tok == token::kXPathError || tok == 47 || tok == 64 || tok == 40 || tok == 41 || tok == 91 || tok == 93 || tok == 46 || tok == 44 || tok == 124);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      symbol_type (int tok, String v)
+        : super_type(token_type (tok), std::move (v))
+      {
+        YYASSERT (tok == token::kNodeType || tok == token::kPI || tok == token::kFunctionName || tok == token::kLiteral || tok == token::kVariableReference || tok == token::kNumber || tok == token::kNameTest);
+      }
+#else
+      symbol_type (int tok, const String& v)
+        : super_type(token_type (tok), v)
+      {
+        YYASSERT (tok == token::kNodeType || tok == token::kPI || tok == token::kFunctionName || tok == token::kLiteral || tok == token::kVariableReference || tok == token::kNumber || tok == token::kNameTest);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      symbol_type (int tok, blink::xpath::EqTestOp::Opcode v)
+        : super_type(token_type (tok), std::move (v))
+      {
+        YYASSERT (tok == token::kEqOp || tok == token::kRelOp);
+      }
+#else
+      symbol_type (int tok, const blink::xpath::EqTestOp::Opcode& v)
+        : super_type(token_type (tok), v)
+      {
+        YYASSERT (tok == token::kEqOp || tok == token::kRelOp);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      symbol_type (int tok, blink::xpath::NumericOp::Opcode v)
+        : super_type(token_type (tok), std::move (v))
+      {
+        YYASSERT (tok == token::kMulOp);
+      }
+#else
+      symbol_type (int tok, const blink::xpath::NumericOp::Opcode& v)
+        : super_type(token_type (tok), v)
+      {
+        YYASSERT (tok == token::kMulOp);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      symbol_type (int tok, blink::xpath::Step::Axis v)
+        : super_type(token_type (tok), std::move (v))
+      {
+        YYASSERT (tok == token::kAxisName);
+      }
+#else
+      symbol_type (int tok, const blink::xpath::Step::Axis& v)
+        : super_type(token_type (tok), v)
+      {
+        YYASSERT (tok == token::kAxisName);
+      }
+#endif
+    };
+
+    /// Build a parser object.
+     YyParser  (blink::xpath::Parser* parser__yyarg);
+    virtual ~ YyParser  ();
+
+    /// Parse.  An alias for parse ().
+    /// \returns  0 iff parsing succeeded.
+    int operator() ();
+
+    /// Parse.
+    /// \returns  0 iff parsing succeeded.
+    virtual int parse ();
+
+#if YYDEBUG
+    /// The current debugging stream.
+    std::ostream& debug_stream () const YY_ATTRIBUTE_PURE;
+    /// Set the current debugging stream.
+    void set_debug_stream (std::ostream &);
+
+    /// Type for debugging levels.
+    typedef int debug_level_type;
+    /// The current debugging level.
+    debug_level_type debug_level () const YY_ATTRIBUTE_PURE;
+    /// Set the current debugging level.
+    void set_debug_level (debug_level_type l);
+#endif
+
+    /// Report a syntax error.
+    /// \param msg    a description of the syntax error.
+    virtual void error (const std::string& msg);
+
+    /// Report a syntax error.
+    void error (const syntax_error& err);
+
+    // Implementation of make_symbol for each symbol type.
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_kMulOp (blink::xpath::NumericOp::Opcode v)
+      {
+        return symbol_type (token::kMulOp, std::move (v));
+      }
+#else
+      static
+      symbol_type
+      make_kMulOp (const blink::xpath::NumericOp::Opcode& v)
+      {
+        return symbol_type (token::kMulOp, v);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_kEqOp (blink::xpath::EqTestOp::Opcode v)
+      {
+        return symbol_type (token::kEqOp, std::move (v));
+      }
+#else
+      static
+      symbol_type
+      make_kEqOp (const blink::xpath::EqTestOp::Opcode& v)
+      {
+        return symbol_type (token::kEqOp, v);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_kRelOp (blink::xpath::EqTestOp::Opcode v)
+      {
+        return symbol_type (token::kRelOp, std::move (v));
+      }
+#else
+      static
+      symbol_type
+      make_kRelOp (const blink::xpath::EqTestOp::Opcode& v)
+      {
+        return symbol_type (token::kRelOp, v);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_kPlus ()
+      {
+        return symbol_type (token::kPlus);
+      }
+#else
+      static
+      symbol_type
+      make_kPlus ()
+      {
+        return symbol_type (token::kPlus);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_kMinus ()
+      {
+        return symbol_type (token::kMinus);
+      }
+#else
+      static
+      symbol_type
+      make_kMinus ()
+      {
+        return symbol_type (token::kMinus);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_kOr ()
+      {
+        return symbol_type (token::kOr);
+      }
+#else
+      static
+      symbol_type
+      make_kOr ()
+      {
+        return symbol_type (token::kOr);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_kAnd ()
+      {
+        return symbol_type (token::kAnd);
+      }
+#else
+      static
+      symbol_type
+      make_kAnd ()
+      {
+        return symbol_type (token::kAnd);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_kAxisName (blink::xpath::Step::Axis v)
+      {
+        return symbol_type (token::kAxisName, std::move (v));
+      }
+#else
+      static
+      symbol_type
+      make_kAxisName (const blink::xpath::Step::Axis& v)
+      {
+        return symbol_type (token::kAxisName, v);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_kNodeType (String v)
+      {
+        return symbol_type (token::kNodeType, std::move (v));
+      }
+#else
+      static
+      symbol_type
+      make_kNodeType (const String& v)
+      {
+        return symbol_type (token::kNodeType, v);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_kPI (String v)
+      {
+        return symbol_type (token::kPI, std::move (v));
+      }
+#else
+      static
+      symbol_type
+      make_kPI (const String& v)
+      {
+        return symbol_type (token::kPI, v);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_kFunctionName (String v)
+      {
+        return symbol_type (token::kFunctionName, std::move (v));
+      }
+#else
+      static
+      symbol_type
+      make_kFunctionName (const String& v)
+      {
+        return symbol_type (token::kFunctionName, v);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_kLiteral (String v)
+      {
+        return symbol_type (token::kLiteral, std::move (v));
+      }
+#else
+      static
+      symbol_type
+      make_kLiteral (const String& v)
+      {
+        return symbol_type (token::kLiteral, v);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_kVariableReference (String v)
+      {
+        return symbol_type (token::kVariableReference, std::move (v));
+      }
+#else
+      static
+      symbol_type
+      make_kVariableReference (const String& v)
+      {
+        return symbol_type (token::kVariableReference, v);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_kNumber (String v)
+      {
+        return symbol_type (token::kNumber, std::move (v));
+      }
+#else
+      static
+      symbol_type
+      make_kNumber (const String& v)
+      {
+        return symbol_type (token::kNumber, v);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_kDotDot ()
+      {
+        return symbol_type (token::kDotDot);
+      }
+#else
+      static
+      symbol_type
+      make_kDotDot ()
+      {
+        return symbol_type (token::kDotDot);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_kSlashSlash ()
+      {
+        return symbol_type (token::kSlashSlash);
+      }
+#else
+      static
+      symbol_type
+      make_kSlashSlash ()
+      {
+        return symbol_type (token::kSlashSlash);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_kNameTest (String v)
+      {
+        return symbol_type (token::kNameTest, std::move (v));
+      }
+#else
+      static
+      symbol_type
+      make_kNameTest (const String& v)
+      {
+        return symbol_type (token::kNameTest, v);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_kXPathError ()
+      {
+        return symbol_type (token::kXPathError);
+      }
+#else
+      static
+      symbol_type
+      make_kXPathError ()
+      {
+        return symbol_type (token::kXPathError);
+      }
 #endif
 
 
+  private:
+    /// This class is not copyable.
+     YyParser  (const  YyParser &);
+     YyParser & operator= (const  YyParser &);
 
-int xpathyyparse (blink::xpath::Parser* parser);
+    /// State numbers.
+    typedef int state_type;
 
-#endif /* !YY_XPATHYY_THIRD_PARTY_BLINK_RENDERER_CORE_XML_XPATH_GRAMMAR_GENERATED_HH_INCLUDED  */
+    /// Generate an error message.
+    /// \param yystate   the state where the error occurred.
+    /// \param yyla      the lookahead token.
+    virtual std::string yysyntax_error_ (state_type yystate,
+                                         const symbol_type& yyla) const;
+
+    /// Compute post-reduction state.
+    /// \param yystate   the current state
+    /// \param yysym     the nonterminal to push on the stack
+    state_type yy_lr_goto_state_ (state_type yystate, int yysym);
+
+    /// Whether the given \c yypact_ value indicates a defaulted state.
+    /// \param yyvalue   the value to check
+    static bool yy_pact_value_is_default_ (int yyvalue);
+
+    /// Whether the given \c yytable_ value indicates a syntax error.
+    /// \param yyvalue   the value to check
+    static bool yy_table_value_is_error_ (int yyvalue);
+
+    static const signed char yypact_ninf_;
+    static const signed char yytable_ninf_;
+
+    /// Convert a scanner token number \a t to a symbol number.
+    static token_number_type yytranslate_ (int t);
+
+    // Tables.
+  // YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+  // STATE-NUM.
+  static const signed char yypact_[];
+
+  // YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+  // Performed when YYTABLE does not specify something else to do.  Zero
+  // means the default is an error.
+  static const unsigned char yydefact_[];
+
+  // YYPGOTO[NTERM-NUM].
+  static const signed char yypgoto_[];
+
+  // YYDEFGOTO[NTERM-NUM].
+  static const signed char yydefgoto_[];
+
+  // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
+  // positive, shift that token.  If negative, reduce the rule whose
+  // number is the opposite.  If YYTABLE_NINF, syntax error.
+  static const unsigned char yytable_[];
+
+  static const signed char yycheck_[];
+
+  // YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+  // symbol of state STATE-NUM.
+  static const unsigned char yystos_[];
+
+  // YYR1[YYN] -- Symbol number of symbol that rule YYN derives.
+  static const unsigned char yyr1_[];
+
+  // YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.
+  static const unsigned char yyr2_[];
+
+
+#if YYDEBUG
+    /// For a symbol, its name in clear.
+    static const char* const yytname_[];
+
+  // YYRLINE[YYN] -- Source line where rule number YYN was defined.
+  static const unsigned short yyrline_[];
+    /// Report on the debug stream that the rule \a r is going to be reduced.
+    virtual void yy_reduce_print_ (int r);
+    /// Print the state stack on the debug stream.
+    virtual void yystack_print_ ();
+
+    /// Debugging level.
+    int yydebug_;
+    /// Debug stream.
+    std::ostream* yycdebug_;
+
+    /// \brief Display a symbol type, value and location.
+    /// \param yyo    The output stream.
+    /// \param yysym  The symbol.
+    template <typename Base>
+    void yy_print_ (std::ostream& yyo, const basic_symbol<Base>& yysym) const;
+#endif
+
+    /// \brief Reclaim the memory associated to a symbol.
+    /// \param yymsg     Why this token is reclaimed.
+    ///                  If null, print nothing.
+    /// \param yysym     The symbol.
+    template <typename Base>
+    void yy_destroy_ (const char* yymsg, basic_symbol<Base>& yysym) const;
+
+  private:
+    /// Type access provider for state based symbols.
+    struct by_state
+    {
+      /// Default constructor.
+      by_state () YY_NOEXCEPT;
+
+      /// The symbol type as needed by the constructor.
+      typedef state_type kind_type;
+
+      /// Constructor.
+      by_state (kind_type s) YY_NOEXCEPT;
+
+      /// Copy constructor.
+      by_state (const by_state& that) YY_NOEXCEPT;
+
+      /// Record that this symbol is empty.
+      void clear () YY_NOEXCEPT;
+
+      /// Steal the symbol type from \a that.
+      void move (by_state& that);
+
+      /// The (internal) type number (corresponding to \a state).
+      /// \a empty_symbol when empty.
+      symbol_number_type type_get () const YY_NOEXCEPT;
+
+      /// The state number used to denote an empty symbol.
+      enum { empty_state = -1 };
+
+      /// The state.
+      /// \a empty when empty.
+      state_type state;
+    };
+
+    /// "Internal" symbol: element of the stack.
+    struct stack_symbol_type : basic_symbol<by_state>
+    {
+      /// Superclass.
+      typedef basic_symbol<by_state> super_type;
+      /// Construct an empty symbol.
+      stack_symbol_type ();
+      /// Move or copy construction.
+      stack_symbol_type (YY_RVREF (stack_symbol_type) that);
+      /// Steal the contents from \a sym to build this.
+      stack_symbol_type (state_type s, YY_MOVE_REF (symbol_type) sym);
+#if YY_CPLUSPLUS < 201103L
+      /// Assignment, needed by push_back by some old implementations.
+      /// Moves the contents of that.
+      stack_symbol_type& operator= (stack_symbol_type& that);
+#endif
+    };
+
+    /// A stack with random access from its top.
+    template <typename T, typename S = std::vector<T> >
+    class stack
+    {
+    public:
+      // Hide our reversed order.
+      typedef typename S::reverse_iterator iterator;
+      typedef typename S::const_reverse_iterator const_iterator;
+      typedef typename S::size_type size_type;
+
+      stack (size_type n = 200)
+        : seq_ (n)
+      {}
+
+      /// Random access.
+      ///
+      /// Index 0 returns the topmost element.
+      T&
+      operator[] (size_type i)
+      {
+        return seq_[size () - 1 - i];
+      }
+
+      /// Random access.
+      ///
+      /// Index 0 returns the topmost element.
+      T&
+      operator[] (int i)
+      {
+        return operator[] (size_type (i));
+      }
+
+      /// Random access.
+      ///
+      /// Index 0 returns the topmost element.
+      const T&
+      operator[] (size_type i) const
+      {
+        return seq_[size () - 1 - i];
+      }
+
+      /// Random access.
+      ///
+      /// Index 0 returns the topmost element.
+      const T&
+      operator[] (int i) const
+      {
+        return operator[] (size_type (i));
+      }
+
+      /// Steal the contents of \a t.
+      ///
+      /// Close to move-semantics.
+      void
+      push (YY_MOVE_REF (T) t)
+      {
+        seq_.push_back (T ());
+        operator[] (0).move (t);
+      }
+
+      /// Pop elements from the stack.
+      void
+      pop (int n = 1) YY_NOEXCEPT
+      {
+        for (; 0 < n; --n)
+          seq_.pop_back ();
+      }
+
+      /// Pop all elements from the stack.
+      void
+      clear () YY_NOEXCEPT
+      {
+        seq_.clear ();
+      }
+
+      /// Number of elements on the stack.
+      size_type
+      size () const YY_NOEXCEPT
+      {
+        return seq_.size ();
+      }
+
+      /// Iterator on top of the stack (going downwards).
+      const_iterator
+      begin () const YY_NOEXCEPT
+      {
+        return seq_.rbegin ();
+      }
+
+      /// Bottom of the stack.
+      const_iterator
+      end () const YY_NOEXCEPT
+      {
+        return seq_.rend ();
+      }
+
+      /// Present a slice of the top of a stack.
+      class slice
+      {
+      public:
+        slice (const stack& stack, int range)
+          : stack_ (stack)
+          , range_ (range)
+        {}
+
+        const T&
+        operator[] (int i) const
+        {
+          return stack_[range_ - i];
+        }
+
+      private:
+        const stack& stack_;
+        int range_;
+      };
+
+    private:
+      stack (const stack&);
+      stack& operator= (const stack&);
+      /// The wrapped container.
+      S seq_;
+    };
+
+
+    /// Stack type.
+    typedef stack<stack_symbol_type> stack_type;
+
+    /// The stack.
+    stack_type yystack_;
+
+    /// Push a new state on the stack.
+    /// \param m    a debug message to display
+    ///             if null, no trace is output.
+    /// \param sym  the symbol
+    /// \warning the contents of \a s.value is stolen.
+    void yypush_ (const char* m, YY_MOVE_REF (stack_symbol_type) sym);
+
+    /// Push a new look ahead token on the state on the stack.
+    /// \param m    a debug message to display
+    ///             if null, no trace is output.
+    /// \param s    the state
+    /// \param sym  the symbol (for its value and location).
+    /// \warning the contents of \a sym.value is stolen.
+    void yypush_ (const char* m, state_type s, YY_MOVE_REF (symbol_type) sym);
+
+    /// Pop \a n symbols from the stack.
+    void yypop_ (int n = 1);
+
+    /// Constants.
+    enum
+    {
+      yyeof_ = 0,
+      yylast_ = 122,     ///< Last index in yytable_.
+      yynnts_ = 27,  ///< Number of nonterminal symbols.
+      yyfinal_ = 47, ///< Termination state number.
+      yyterror_ = 1,
+      yyerrcode_ = 256,
+      yyntokens_ = 30  ///< Number of tokens.
+    };
+
+
+    // User arguments.
+    blink::xpath::Parser* parser_;
+  };
+
+
+} // xpathyy
+#line 1474 "third_party/blink/renderer/core/xml/xpath_grammar_generated.h"
+
+
+
+
+
+#endif // !YY_XPATHYY_THIRD_PARTY_BLINK_RENDERER_CORE_XML_XPATH_GRAMMAR_GENERATED_HH_INCLUDED
 #endif  // THIRD_PARTY_BLINK_RENDERER_CORE_XML_XPATH_GRAMMAR_GENERATED_H_
diff --git a/third_party/blink/renderer/core/xml/xpath_parser.cc b/third_party/blink/renderer/core/xml/xpath_parser.cc
index 74a064ec..c2abeec7 100644
--- a/third_party/blink/renderer/core/xml/xpath_parser.cc
+++ b/third_party/blink/renderer/core/xml/xpath_parser.cc
@@ -39,6 +39,9 @@
 namespace blink {
 namespace xpath {
 
+using xpathyy::YyParser;
+using TokenType = xpathyy::YyParser::token;
+
 Parser* Parser::current_parser_ = nullptr;
 
 enum XMLCat { kNameStart, kNameCont, kNotPartOfName };
@@ -119,20 +122,20 @@
   switch (last_token_type_) {
     case 0:
     case '@':
-    case AXISNAME:
+    case TokenType::kAxisName:
     case '(':
     case '[':
     case ',':
-    case AND:
-    case OR:
-    case MULOP:
+    case TokenType::kAnd:
+    case TokenType::kOr:
+    case TokenType::kMulOp:
     case '/':
-    case SLASHSLASH:
+    case TokenType::kSlashSlash:
     case '|':
-    case PLUS:
-    case MINUS:
-    case EQOP:
-    case RELOP:
+    case TokenType::kPlus:
+    case TokenType::kMinus:
+    case TokenType::kEqOp:
+    case TokenType::kRelOp:
       return false;
     default:
       return true;
@@ -190,12 +193,12 @@
       if (value.IsNull())
         value = "";
       ++next_pos_;  // Consume the char.
-      return Token(LITERAL, value);
+      return Token(TokenType::kLiteral, value);
     }
   }
 
   // Ouch, went off the end -- report error.
-  return Token(XPATH_ERROR);
+  return Token(TokenType::kXPathError);
 }
 
 Token Parser::LexNumber() {
@@ -216,7 +219,8 @@
     }
   }
 
-  return Token(NUMBER, data_.Substring(start_pos, next_pos_ - start_pos));
+  return Token(TokenType::kNumber,
+               data_.Substring(start_pos, next_pos_ - start_pos));
 }
 
 bool Parser::LexNCName(String& name) {
@@ -292,62 +296,69 @@
     case '.': {
       char next = PeekAheadHelper();
       if (next == '.')
-        return MakeTokenAndAdvance(DOTDOT, 2);
+        return MakeTokenAndAdvance(TokenType::kDotDot, 2);
       if (next >= '0' && next <= '9')
         return LexNumber();
       return MakeTokenAndAdvance('.');
     }
     case '/':
       if (PeekAheadHelper() == '/')
-        return MakeTokenAndAdvance(SLASHSLASH, 2);
+        return MakeTokenAndAdvance(TokenType::kSlashSlash, 2);
       return MakeTokenAndAdvance('/');
     case '+':
-      return MakeTokenAndAdvance(PLUS);
+      return MakeTokenAndAdvance(TokenType::kPlus);
     case '-':
-      return MakeTokenAndAdvance(MINUS);
+      return MakeTokenAndAdvance(TokenType::kMinus);
     case '=':
-      return MakeTokenAndAdvance(EQOP, EqTestOp::kOpcodeEqual);
+      return MakeTokenAndAdvance(TokenType::kEqOp, EqTestOp::kOpcodeEqual);
     case '!':
-      if (PeekAheadHelper() == '=')
-        return MakeTokenAndAdvance(EQOP, EqTestOp::kOpcodeNotEqual, 2);
-      return Token(XPATH_ERROR);
+      if (PeekAheadHelper() == '=') {
+        return MakeTokenAndAdvance(TokenType::kEqOp, EqTestOp::kOpcodeNotEqual,
+                                   2);
+      }
+      return Token(TokenType::kXPathError);
     case '<':
-      if (PeekAheadHelper() == '=')
-        return MakeTokenAndAdvance(RELOP, EqTestOp::kOpcodeLessOrEqual, 2);
-      return MakeTokenAndAdvance(RELOP, EqTestOp::kOpcodeLessThan);
+      if (PeekAheadHelper() == '=') {
+        return MakeTokenAndAdvance(TokenType::kRelOp,
+                                   EqTestOp::kOpcodeLessOrEqual, 2);
+      }
+      return MakeTokenAndAdvance(TokenType::kRelOp, EqTestOp::kOpcodeLessThan);
     case '>':
-      if (PeekAheadHelper() == '=')
-        return MakeTokenAndAdvance(RELOP, EqTestOp::kOpcodeGreaterOrEqual, 2);
-      return MakeTokenAndAdvance(RELOP, EqTestOp::kOpcodeGreaterThan);
+      if (PeekAheadHelper() == '=') {
+        return MakeTokenAndAdvance(TokenType::kRelOp,
+                                   EqTestOp::kOpcodeGreaterOrEqual, 2);
+      }
+      return MakeTokenAndAdvance(TokenType::kRelOp,
+                                 EqTestOp::kOpcodeGreaterThan);
     case '*':
       if (IsBinaryOperatorContext())
-        return MakeTokenAndAdvance(MULOP, NumericOp::kOP_Mul);
+        return MakeTokenAndAdvance(TokenType::kMulOp, NumericOp::kOP_Mul);
       ++next_pos_;
-      return Token(NAMETEST, "*");
+      return Token(TokenType::kNameTest, "*");
     case '$': {  // $ QName
       next_pos_++;
       String name;
       if (!LexQName(name))
-        return Token(XPATH_ERROR);
-      return Token(VARIABLEREFERENCE, name);
+        return Token(TokenType::kXPathError);
+      return Token(TokenType::kVariableReference, name);
     }
   }
 
   String name;
   if (!LexNCName(name))
-    return Token(XPATH_ERROR);
+    return Token(TokenType::kXPathError);
 
   SkipWS();
   // If we're in an operator context, check for any operator names
   if (IsBinaryOperatorContext()) {
     if (name == "and")  // ### hash?
-      return Token(AND);
+      return Token(TokenType::kAnd);
     if (name == "or")
-      return Token(OR);
+      return Token(TokenType::kOr);
     if (name == "mod")
-      return Token(MULOP, NumericOp::kOP_Mod);
+      return Token(TokenType::kMulOp, NumericOp::kOP_Mod);
     if (name == "div")
-      return Token(MULOP, NumericOp::kOP_Div);
+      return Token(TokenType::kMulOp, NumericOp::kOP_Div);
   }
 
   // See whether we are at a :
@@ -360,9 +371,9 @@
       // It might be an axis name.
       Step::Axis axis;
       if (IsAxisName(name, axis))
-        return Token(AXISNAME, axis);
+        return Token(TokenType::kAxisName, axis);
       // Ugh, :: is only valid in axis names -> error
-      return Token(XPATH_ERROR);
+      return Token(TokenType::kXPathError);
     }
 
     // Seems like this is a fully qualified qname, or perhaps the * modified
@@ -370,13 +381,13 @@
     SkipWS();
     if (PeekCurHelper() == '*') {
       next_pos_++;
-      return Token(NAMETEST, name + ":*");
+      return Token(TokenType::kNameTest, name + ":*");
     }
 
     // Make a full qname.
     String n2;
     if (!LexNCName(n2))
-      return Token(XPATH_ERROR);
+      return Token(TokenType::kXPathError);
 
     name = name + ":" + n2;
   }
@@ -388,16 +399,16 @@
     // Either node type of function name
     if (IsNodeTypeName(name)) {
       if (name == "processing-instruction")
-        return Token(PI, name);
+        return Token(TokenType::kPI, name);
 
-      return Token(NODETYPE, name);
+      return Token(TokenType::kNodeType, name);
     }
     // Must be a function name.
-    return Token(FUNCTIONNAME, name);
+    return Token(TokenType::kFunctionName, name);
   }
 
   // At this point, it must be NAMETEST.
-  return Token(NAMETEST, name);
+  return Token(TokenType::kNameTest, name);
 }
 
 Token Parser::NextToken() {
@@ -422,29 +433,28 @@
 }
 
 int Parser::Lex(void* data) {
-  YYSTYPE* yylval = static_cast<YYSTYPE*>(data);
+  auto* yylval = static_cast<YyParser::semantic_type*>(data);
   Token tok = NextToken();
 
   switch (tok.type) {
-    case AXISNAME:
-      yylval->axis = tok.axis;
+    case TokenType::kAxisName:
+      yylval->build<Step::Axis>() = tok.axis;
       break;
-    case MULOP:
-      yylval->num_op = tok.numop;
+    case TokenType::kMulOp:
+      yylval->build<NumericOp::Opcode>() = tok.numop;
       break;
-    case RELOP:
-    case EQOP:
-      yylval->eq_op = tok.eqop;
+    case TokenType::kRelOp:
+    case TokenType::kEqOp:
+      yylval->build<EqTestOp::Opcode>() = tok.eqop;
       break;
-    case NODETYPE:
-    case PI:
-    case FUNCTIONNAME:
-    case LITERAL:
-    case VARIABLEREFERENCE:
-    case NUMBER:
-    case NAMETEST:
-      yylval->str = new String(tok.str);
-      RegisterString(yylval->str);
+    case TokenType::kNodeType:
+    case TokenType::kPI:
+    case TokenType::kFunctionName:
+    case TokenType::kLiteral:
+    case TokenType::kVariableReference:
+    case TokenType::kNumber:
+    case TokenType::kNameTest:
+      yylval->build<String>() = String(tok.str);
       break;
   }
 
@@ -478,12 +488,10 @@
 
   Parser* old_parser = current_parser_;
   current_parser_ = this;
-  int parse_error = xpathyyparse(this);
+  int parse_error = YyParser(this).parse();
   current_parser_ = old_parser;
 
   if (parse_error) {
-    strings_.clear();
-
     top_expr_ = nullptr;
 
     if (got_namespace_error_)
@@ -496,28 +504,11 @@
           "The string '" + statement + "' is not a valid XPath expression.");
     return nullptr;
   }
-  DCHECK_EQ(strings_.size(), 0u);
   Expression* result = top_expr_;
   top_expr_ = nullptr;
 
   return result;
 }
 
-void Parser::RegisterString(String* s) {
-  if (!s)
-    return;
-
-  DCHECK(!strings_.Contains(s));
-  strings_.insert(base::WrapUnique(s));
-}
-
-void Parser::DeleteString(String* s) {
-  if (!s)
-    return;
-
-  DCHECK(strings_.Contains(s));
-  strings_.erase(s);
-}
-
 }  // namespace xpath
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/xml/xpath_parser.h b/third_party/blink/renderer/core/xml/xpath_parser.h
index 5c05b545..f8735243 100644
--- a/third_party/blink/renderer/core/xml/xpath_parser.h
+++ b/third_party/blink/renderer/core/xml/xpath_parser.h
@@ -84,9 +84,6 @@
   Member<Expression> top_expr_;
   bool got_namespace_error_;
 
-  void RegisterString(String*);
-  void DeleteString(String*);
-
  private:
   bool IsBinaryOperatorContext() const;
 
@@ -114,7 +111,6 @@
   int last_token_type_;
   Member<XPathNSResolver> resolver_;
 
-  HashSet<std::unique_ptr<String>> strings_;
   DISALLOW_COPY_AND_ASSIGN(Parser);
 };
 
@@ -122,5 +118,4 @@
 
 }  // namespace blink
 
-int xpathyyparse(blink::xpath::Parser*);
 #endif
diff --git a/third_party/blink/renderer/core/xml/xslt_processor.idl b/third_party/blink/renderer/core/xml/xslt_processor.idl
index ba796f26..9e7bfdb 100644
--- a/third_party/blink/renderer/core/xml/xslt_processor.idl
+++ b/third_party/blink/renderer/core/xml/xslt_processor.idl
@@ -31,11 +31,10 @@
 // https://hg.mozilla.org/mozilla-central/file/012853bd80b7/dom/webidl/XSLTProcessor.webidl
 
 [
-    Constructor,
-    ConstructorCallWith=Document,
     RuntimeEnabled=XSLT,
     MeasureAs=XSLTProcessor
 ] interface XSLTProcessor {
+    [CallWith=Document] constructor();
 
     void importStylesheet(Node style);
     // TODO(foolip): In Gecko, the transformTo*() methods throw an exception in
diff --git a/third_party/blink/renderer/core/xmlhttprequest/xml_http_request.idl b/third_party/blink/renderer/core/xmlhttprequest/xml_http_request.idl
index 55e87a7b..eb09bc37 100644
--- a/third_party/blink/renderer/core/xmlhttprequest/xml_http_request.idl
+++ b/third_party/blink/renderer/core/xmlhttprequest/xml_http_request.idl
@@ -39,10 +39,9 @@
 
 [
     ActiveScriptWrappable,
-    Constructor,
-    ConstructorCallWith=ScriptState,
     Exposed=(Window,DedicatedWorker,SharedWorker)
 ] interface XMLHttpRequest : XMLHttpRequestEventTarget {
+    [CallWith=ScriptState] constructor();
     // event handler
     attribute EventHandler onreadystatechange;
 
diff --git a/third_party/blink/renderer/modules/accessibility/ax_node_object.cc b/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
index eeabc2dd..cd094c0f 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
+++ b/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
@@ -1541,6 +1541,16 @@
     // When level count is 0 due to this list item not having an ancestor of
     // Role::kList, not nested in list groups, this list item has a level of 1.
     return level == 0 ? 1 : level;
+  } else if (RoleValue() == ax::mojom::Role::kComment) {
+    // Comment: level is based on counting comment ancestors until the root.
+    level = 1;
+    for (AXObject* parent = ParentObject(); parent;
+         parent = parent->ParentObject()) {
+      ax::mojom::Role parent_role = parent->RoleValue();
+      if (parent_role == ax::mojom::Role::kComment)
+        level++;
+    }
+    return level;
   }
 
   return 0;
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object.cc b/third_party/blink/renderer/modules/accessibility/ax_object.cc
index 64006a66..bd5a94b 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_object.cc
+++ b/third_party/blink/renderer/modules/accessibility/ax_object.cc
@@ -102,7 +102,6 @@
     {"columnheader", ax::mojom::Role::kColumnHeader},
     {"combobox", ax::mojom::Role::kComboBoxGrouping},
     {"comment", ax::mojom::Role::kComment},
-    {"commentsection", ax::mojom::Role::kCommentSection},
     {"complementary", ax::mojom::Role::kComplementary},
     {"contentinfo", ax::mojom::Role::kContentInfo},
     {"definition", ax::mojom::Role::kDefinition},
@@ -200,7 +199,6 @@
     // TODO(accessibility) region should only be mapped
     // if name present. See http://crbug.com/840819.
     {"region", ax::mojom::Role::kRegion},
-    {"revision", ax::mojom::Role::kRevision},
     {"row", ax::mojom::Role::kRow},
     {"rowgroup", ax::mojom::Role::kRowGroup},
     {"rowheader", ax::mojom::Role::kRowHeader},
@@ -241,7 +239,6 @@
     {ax::mojom::Role::kAlert, "Alert"},
     {ax::mojom::Role::kAnchor, "Anchor"},
     {ax::mojom::Role::kComment, "Comment"},
-    {ax::mojom::Role::kComment, "CommentSection"},
     {ax::mojom::Role::kApplication, "Application"},
     {ax::mojom::Role::kArticle, "Article"},
     {ax::mojom::Role::kAudio, "Audio"},
@@ -389,7 +386,6 @@
     {ax::mojom::Role::kRadioButton, "RadioButton"},
     {ax::mojom::Role::kRadioGroup, "RadioGroup"},
     {ax::mojom::Role::kRegion, "Region"},
-    {ax::mojom::Role::kRevision, "Revision"},
     {ax::mojom::Role::kRootWebArea, "WebArea"},
     {ax::mojom::Role::kRow, "Row"},
     {ax::mojom::Role::kRowGroup, "RowGroup"},
@@ -1519,6 +1515,7 @@
 bool AXObject::SupportsARIASetSizeAndPosInSet() const {
   switch (RoleValue()) {
     case ax::mojom::Role::kArticle:
+    case ax::mojom::Role::kComment:
     case ax::mojom::Role::kListBoxOption:
     case ax::mojom::Role::kListItem:
     case ax::mojom::Role::kMenuItem:
@@ -2104,9 +2101,7 @@
 
   switch (role) {
     case ax::mojom::Role::kComment:
-    case ax::mojom::Role::kCommentSection:
     case ax::mojom::Role::kMark:
-    case ax::mojom::Role::kRevision:
     case ax::mojom::Role::kSuggestion:
       UseCounter::Count(GetDocument(), WebFeature::kARIAAnnotations);
       if (!RuntimeEnabledFeatures::AccessibilityExposeARIAAnnotationsEnabled(
@@ -3495,7 +3490,6 @@
     case ax::mojom::Role::kColumn:
     case ax::mojom::Role::kComboBoxGrouping:
     case ax::mojom::Role::kComment:
-    case ax::mojom::Role::kCommentSection:
     case ax::mojom::Role::kComplementary:
     case ax::mojom::Role::kContentInfo:
     case ax::mojom::Role::kDate:
@@ -3571,7 +3565,6 @@
     case ax::mojom::Role::kPane:
     case ax::mojom::Role::kProgressIndicator:
     case ax::mojom::Role::kRadioGroup:
-    case ax::mojom::Role::kRevision:
     case ax::mojom::Role::kRootWebArea:
     case ax::mojom::Role::kRowGroup:
     case ax::mojom::Role::kScrollBar:
diff --git a/third_party/blink/renderer/modules/animationworklet/worklet_animation.idl b/third_party/blink/renderer/modules/animationworklet/worklet_animation.idl
index f4be444..2ce4e94 100644
--- a/third_party/blink/renderer/modules/animationworklet/worklet_animation.idl
+++ b/third_party/blink/renderer/modules/animationworklet/worklet_animation.idl
@@ -7,15 +7,13 @@
 // TODO(840383): Accodring to the specification |effects| is optional and
 // defaults to null. Match that here.
 [
-    Constructor(DOMString animatorName,
-                (AnimationEffect or sequence<AnimationEffect>) effects,
-                optional (DocumentTimeline or ScrollTimeline) timeline,
-                optional SerializedScriptValue options),
-    RaisesException=Constructor,
-    ConstructorCallWith=ScriptState,
     MeasureAs=WorkletAnimationConstructor,
     RuntimeEnabled=AnimationWorklet
 ] interface WorkletAnimation {
+  [CallWith=ScriptState, RaisesException] constructor(DOMString animatorName,
+                (AnimationEffect or sequence<AnimationEffect>) effects,
+                optional (DocumentTimeline or ScrollTimeline) timeline,
+                optional SerializedScriptValue options);
   readonly attribute DOMString animatorName;
   readonly attribute AnimationEffect? effect;
   readonly attribute AnimationTimeline? timeline;
diff --git a/third_party/blink/renderer/modules/app_banner/before_install_prompt_event.cc b/third_party/blink/renderer/modules/app_banner/before_install_prompt_event.cc
index 386af6a6..fd23b0c 100644
--- a/third_party/blink/renderer/modules/app_banner/before_install_prompt_event.cc
+++ b/third_party/blink/renderer/modules/app_banner/before_install_prompt_event.cc
@@ -9,6 +9,7 @@
 #include "third_party/blink/renderer/core/execution_context/execution_context.h"
 #include "third_party/blink/renderer/core/frame/web_feature.h"
 #include "third_party/blink/renderer/modules/app_banner/before_install_prompt_event_init.h"
+#include "third_party/blink/renderer/platform/bindings/exception_state.h"
 #include "third_party/blink/renderer/platform/heap/heap.h"
 #include "third_party/blink/renderer/platform/instrumentation/use_counter.h"
 
@@ -56,27 +57,30 @@
   return platforms_;
 }
 
-ScriptPromise BeforeInstallPromptEvent::userChoice(ScriptState* script_state) {
+ScriptPromise BeforeInstallPromptEvent::userChoice(
+    ScriptState* script_state,
+    ExceptionState& exception_state) {
   UseCounter::Count(ExecutionContext::From(script_state),
                     WebFeature::kBeforeInstallPromptEventUserChoice);
   // |m_binding| must be bound to allow the AppBannerService to resolve the
   // userChoice promise.
   if (user_choice_ && receiver_.is_bound())
     return user_choice_->Promise(script_state->World());
-  return ScriptPromise::RejectWithDOMException(
-      script_state, MakeGarbageCollected<DOMException>(
-                        DOMExceptionCode::kInvalidStateError,
-                        "userChoice cannot be accessed on this event."));
+  exception_state.ThrowDOMException(
+      DOMExceptionCode::kInvalidStateError,
+      "userChoice cannot be accessed on this event.");
+  return ScriptPromise();
 }
 
-ScriptPromise BeforeInstallPromptEvent::prompt(ScriptState* script_state) {
+ScriptPromise BeforeInstallPromptEvent::prompt(
+    ScriptState* script_state,
+    ExceptionState& exception_state) {
   // |m_bannerService| must be bound to allow us to inform the AppBannerService
   // to display the banner now.
   if (!banner_service_remote_.is_bound()) {
-    return ScriptPromise::RejectWithDOMException(
-        script_state, MakeGarbageCollected<DOMException>(
-                          DOMExceptionCode::kInvalidStateError,
-                          "The prompt() method cannot be called."));
+    exception_state.ThrowDOMException(DOMExceptionCode::kInvalidStateError,
+                                      "The prompt() method cannot be called.");
+    return ScriptPromise();
   }
 
   ExecutionContext* context = ExecutionContext::From(script_state);
@@ -84,11 +88,10 @@
 
   if (!LocalFrame::ConsumeTransientUserActivation(doc ? doc->GetFrame()
                                                       : nullptr)) {
-    return ScriptPromise::RejectWithDOMException(
-        script_state,
-        MakeGarbageCollected<DOMException>(
-            DOMExceptionCode::kNotAllowedError,
-            "The prompt() method must be called with a user gesture"));
+    exception_state.ThrowDOMException(
+        DOMExceptionCode::kNotAllowedError,
+        "The prompt() method must be called with a user gesture");
+    return ScriptPromise();
   }
 
   UseCounter::Count(context, WebFeature::kBeforeInstallPromptEventPrompt);
diff --git a/third_party/blink/renderer/modules/app_banner/before_install_prompt_event.h b/third_party/blink/renderer/modules/app_banner/before_install_prompt_event.h
index 80a681f..831a6e5 100644
--- a/third_party/blink/renderer/modules/app_banner/before_install_prompt_event.h
+++ b/third_party/blink/renderer/modules/app_banner/before_install_prompt_event.h
@@ -21,6 +21,7 @@
 
 class BeforeInstallPromptEvent;
 class BeforeInstallPromptEventInit;
+class ExceptionState;
 
 using UserChoiceProperty =
     ScriptPromiseProperty<Member<BeforeInstallPromptEvent>,
@@ -69,8 +70,8 @@
   void Dispose();
 
   Vector<String> platforms() const;
-  ScriptPromise userChoice(ScriptState*);
-  ScriptPromise prompt(ScriptState*);
+  ScriptPromise userChoice(ScriptState*, ExceptionState&);
+  ScriptPromise prompt(ScriptState*, ExceptionState&);
 
   const AtomicString& InterfaceName() const override;
   void preventDefault() override;
diff --git a/third_party/blink/renderer/modules/app_banner/before_install_prompt_event.idl b/third_party/blink/renderer/modules/app_banner/before_install_prompt_event.idl
index 2111f2e..aa198f96 100644
--- a/third_party/blink/renderer/modules/app_banner/before_install_prompt_event.idl
+++ b/third_party/blink/renderer/modules/app_banner/before_install_prompt_event.idl
@@ -3,11 +3,10 @@
 // found in the LICENSE file.
 
 [
-    ActiveScriptWrappable,
-    Constructor(DOMString type, optional BeforeInstallPromptEventInit eventInitDict),
-    ConstructorCallWith=ExecutionContext
+    ActiveScriptWrappable
 ] interface BeforeInstallPromptEvent : Event {
+    [CallWith=ExecutionContext] constructor(DOMString type, optional BeforeInstallPromptEventInit eventInitDict);
     readonly attribute FrozenArray<DOMString> platforms;
-    [CallWith=ScriptState] readonly attribute Promise<AppBannerPromptResult> userChoice;
-    [CallWith=ScriptState] Promise<void> prompt();
+    [CallWith=ScriptState, RaisesException] readonly attribute Promise<AppBannerPromptResult> userChoice;
+    [CallWith=ScriptState, RaisesException] Promise<void> prompt();
 };
diff --git a/third_party/blink/renderer/modules/background_fetch/background_fetch_event.idl b/third_party/blink/renderer/modules/background_fetch/background_fetch_event.idl
index e4c633e..a2f2776 100644
--- a/third_party/blink/renderer/modules/background_fetch/background_fetch_event.idl
+++ b/third_party/blink/renderer/modules/background_fetch/background_fetch_event.idl
@@ -5,9 +5,9 @@
 // https://wicg.github.io/background-fetch/#background-fetch-event
 
 [
-    Constructor(DOMString type, BackgroundFetchEventInit init),
     Exposed=ServiceWorker,
     RuntimeEnabled=BackgroundFetch
 ] interface BackgroundFetchEvent : ExtendableEvent {
+    constructor(DOMString type, BackgroundFetchEventInit init);
     readonly attribute BackgroundFetchRegistration registration;
 };
diff --git a/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.cc b/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.cc
index a8439c2..24f3c850 100644
--- a/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.cc
+++ b/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.cc
@@ -26,6 +26,7 @@
 #include "third_party/blink/renderer/modules/manifest/image_resource.h"
 #include "third_party/blink/renderer/modules/service_worker/service_worker_registration.h"
 #include "third_party/blink/renderer/platform/bindings/exception_code.h"
+#include "third_party/blink/renderer/platform/bindings/exception_state.h"
 #include "third_party/blink/renderer/platform/bindings/script_state.h"
 #include "third_party/blink/renderer/platform/bindings/v8_throw_exception.h"
 #include "third_party/blink/renderer/platform/blob/blob_data.h"
@@ -54,12 +55,12 @@
 
 ScriptPromise RejectWithTypeError(ScriptState* script_state,
                                   const KURL& request_url,
-                                  const String& reason) {
-  return ScriptPromise::Reject(
-      script_state, V8ThrowException::CreateTypeError(
-                        script_state->GetIsolate(),
-                        "Refused to fetch '" + request_url.ElidedString() +
-                            "' because " + reason + "."));
+                                  const String& reason,
+                                  ExceptionState& exception_state) {
+  exception_state.ThrowTypeError("Refused to fetch '" +
+                                 request_url.ElidedString() + "' because " +
+                                 reason + ".");
+  return ScriptPromise();
 }
 
 // Returns whether the |request_url| should be blocked by the CSP. Must be
@@ -171,11 +172,9 @@
     const BackgroundFetchOptions* options,
     ExceptionState& exception_state) {
   if (!registration_->active()) {
-    return ScriptPromise::Reject(
-        script_state,
-        V8ThrowException::CreateTypeError(script_state->GetIsolate(),
-                                          "No active registration available on "
-                                          "the ServiceWorkerRegistration."));
+    exception_state.ThrowTypeError(
+        "No active registration available on the ServiceWorkerRegistration.");
+    return ScriptPromise();
   }
 
   bool has_requests_with_body;
@@ -205,7 +204,7 @@
 
     if (!request_url.IsValid()) {
       return RejectWithTypeError(script_state, request_url,
-                                 "that URL is invalid");
+                                 "that URL is invalid", exception_state);
     }
 
     // https://wicg.github.io/background-fetch/#dom-backgroundfetchmanager-fetch
@@ -213,41 +212,47 @@
     //   rejected with a TypeError.""
     if (request->mode == network::mojom::RequestMode::kNoCors) {
       return RejectWithTypeError(script_state, request_url,
-                                 "the request mode must not be no-cors");
+                                 "the request mode must not be no-cors",
+                                 exception_state);
     }
 
     // Check this before mixed content, so that if mixed content is blocked by
     // CSP they get a CSP warning rather than a mixed content failure.
     if (ShouldBlockDueToCSP(execution_context, request_url)) {
       return RejectWithTypeError(script_state, request_url,
-                                 "it violates the Content Security Policy");
+                                 "it violates the Content Security Policy",
+                                 exception_state);
     }
 
     if (ShouldBlockPort(request_url)) {
       return RejectWithTypeError(script_state, request_url,
-                                 "that port is not allowed");
+                                 "that port is not allowed", exception_state);
     }
 
     if (ShouldBlockCredentials(execution_context, request_url)) {
       return RejectWithTypeError(script_state, request_url,
-                                 "that URL contains a username/password");
+                                 "that URL contains a username/password",
+                                 exception_state);
     }
 
     if (ShouldBlockScheme(request_url)) {
       return RejectWithTypeError(script_state, request_url,
                                  "only the https: scheme is allowed, or http: "
-                                 "for loopback IPs");
+                                 "for loopback IPs",
+                                 exception_state);
     }
 
     if (ShouldBlockDanglingMarkup(request_url)) {
       return RejectWithTypeError(script_state, request_url,
-                                 "it contains dangling markup");
+                                 "it contains dangling markup",
+                                 exception_state);
     }
 
     if (ShouldBlockGateWayAttacks(execution_context, request_url)) {
       return RejectWithTypeError(script_state, request_url,
                                  "Requestor IP address space doesn't match the "
-                                 "target address space.");
+                                 "target address space.",
+                                 exception_state);
     }
 
     kurls.insert(request_url);
@@ -358,7 +363,8 @@
 }
 
 ScriptPromise BackgroundFetchManager::get(ScriptState* script_state,
-                                          const String& id) {
+                                          const String& id,
+                                          ExceptionState& exception_state) {
   // Creating a Background Fetch registration requires an activated worker, so
   // if |registration_| has not been activated we can skip the Mojo roundtrip.
   if (!registration_->active())
@@ -367,10 +373,8 @@
   ScriptState::Scope scope(script_state);
 
   if (id.IsEmpty()) {
-    return ScriptPromise::Reject(
-        script_state,
-        V8ThrowException::CreateTypeError(script_state->GetIsolate(),
-                                          "The provided id is invalid."));
+    exception_state.ThrowTypeError("The provided id is invalid.");
+    return ScriptPromise();
   }
 
   auto* resolver = MakeGarbageCollected<ScriptPromiseResolver>(script_state);
diff --git a/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.h b/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.h
index f792dc5..e4165f6 100644
--- a/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.h
+++ b/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.h
@@ -53,7 +53,9 @@
       const RequestOrUSVStringOrRequestOrUSVStringSequence& requests,
       const BackgroundFetchOptions* options,
       ExceptionState& exception_state);
-  ScriptPromise get(ScriptState* script_state, const String& id);
+  ScriptPromise get(ScriptState* script_state,
+                    const String& id,
+                    ExceptionState& exception_state);
   ScriptPromise getIds(ScriptState* script_state);
 
   void Trace(blink::Visitor* visitor) override;
diff --git a/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.idl b/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.idl
index d62ceda..ad540ab 100644
--- a/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.idl
+++ b/third_party/blink/renderer/modules/background_fetch/background_fetch_manager.idl
@@ -9,6 +9,6 @@
     RuntimeEnabled=BackgroundFetch
 ] interface BackgroundFetchManager {
     [CallWith=ScriptState, RaisesException, MeasureAs=BackgroundFetchManagerFetch] Promise<BackgroundFetchRegistration> fetch(DOMString id, (RequestInfo or sequence<RequestInfo>) requests, optional BackgroundFetchOptions options);
-    [CallWith=ScriptState, MeasureAs=BackgroundFetchManagerGet] Promise<BackgroundFetchRegistration?> get(DOMString id);
+    [CallWith=ScriptState, RaisesException, MeasureAs=BackgroundFetchManagerGet] Promise<BackgroundFetchRegistration?> get(DOMString id);
     [CallWith=ScriptState, MeasureAs=BackgroundFetchManagerGetIds] Promise<FrozenArray<DOMString>> getIds();
 };
diff --git a/third_party/blink/renderer/modules/background_fetch/background_fetch_registration.cc b/third_party/blink/renderer/modules/background_fetch/background_fetch_registration.cc
index 08cb59a..2a5cba2 100644
--- a/third_party/blink/renderer/modules/background_fetch/background_fetch_registration.cc
+++ b/third_party/blink/renderer/modules/background_fetch/background_fetch_registration.cc
@@ -20,6 +20,7 @@
 #include "third_party/blink/renderer/modules/event_target_modules_names.h"
 #include "third_party/blink/renderer/modules/manifest/image_resource.h"
 #include "third_party/blink/renderer/modules/service_worker/service_worker_registration.h"
+#include "third_party/blink/renderer/platform/bindings/exception_state.h"
 #include "third_party/blink/renderer/platform/bindings/script_state.h"
 #include "third_party/blink/renderer/platform/heap/heap.h"
 #include "third_party/blink/renderer/platform/heap/heap_allocator.h"
@@ -210,12 +211,11 @@
                         result_ == mojom::BackgroundFetchResult::UNSET);
 
   if (!records_available_) {
-    return ScriptPromise::RejectWithDOMException(
-        script_state,
-        MakeGarbageCollected<DOMException>(
-            DOMExceptionCode::kInvalidStateError,
-            "The records associated with this background fetch are no longer "
-            "available."));
+    exception_state.ThrowDOMException(
+        DOMExceptionCode::kInvalidStateError,
+        "The records associated with this background fetch are no longer "
+        "available.");
+    return ScriptPromise();
   }
 
   auto* resolver = MakeGarbageCollected<ScriptPromiseResolver>(script_state);
diff --git a/third_party/blink/renderer/modules/background_fetch/background_fetch_registration.h b/third_party/blink/renderer/modules/background_fetch/background_fetch_registration.h
index 6addfd1..c2785dd 100644
--- a/third_party/blink/renderer/modules/background_fetch/background_fetch_registration.h
+++ b/third_party/blink/renderer/modules/background_fetch/background_fetch_registration.h
@@ -20,6 +20,7 @@
 
 class BackgroundFetchRecord;
 class CacheQueryOptions;
+class ExceptionState;
 class ScriptPromiseResolver;
 class ScriptState;
 class ServiceWorkerRegistration;
diff --git a/third_party/blink/renderer/modules/background_fetch/background_fetch_update_ui_event.cc b/third_party/blink/renderer/modules/background_fetch/background_fetch_update_ui_event.cc
index edf815e..00dc9c48 100644
--- a/third_party/blink/renderer/modules/background_fetch/background_fetch_update_ui_event.cc
+++ b/third_party/blink/renderer/modules/background_fetch/background_fetch_update_ui_event.cc
@@ -17,6 +17,7 @@
 #include "third_party/blink/renderer/modules/event_interface_modules_names.h"
 #include "third_party/blink/renderer/modules/manifest/image_resource.h"
 #include "third_party/blink/renderer/modules/service_worker/wait_until_observer.h"
+#include "third_party/blink/renderer/platform/bindings/exception_state.h"
 #include "third_party/blink/renderer/platform/bindings/script_state.h"
 #include "third_party/blink/renderer/platform/heap/heap.h"
 
@@ -45,20 +46,19 @@
 
 ScriptPromise BackgroundFetchUpdateUIEvent::updateUI(
     ScriptState* script_state,
-    const BackgroundFetchUIOptions* ui_options) {
+    const BackgroundFetchUIOptions* ui_options,
+    ExceptionState& exception_state) {
   if (observer_ && !observer_->IsEventActive()) {
     // Return a rejected promise as the event is no longer active.
-    return ScriptPromise::RejectWithDOMException(
-        script_state, MakeGarbageCollected<DOMException>(
-                          DOMExceptionCode::kInvalidStateError,
-                          "ExtendableEvent is no longer active."));
+    exception_state.ThrowDOMException(DOMExceptionCode::kInvalidStateError,
+                                      "ExtendableEvent is no longer active.");
+    return ScriptPromise();
   }
   if (update_ui_called_) {
     // Return a rejected promise as this method should only be called once.
-    return ScriptPromise::RejectWithDOMException(
-        script_state, MakeGarbageCollected<DOMException>(
-                          DOMExceptionCode::kInvalidStateError,
-                          "updateUI may only be called once."));
+    exception_state.ThrowDOMException(DOMExceptionCode::kInvalidStateError,
+                                      "updateUI may only be called once.");
+    return ScriptPromise();
   }
 
   update_ui_called_ = true;
diff --git a/third_party/blink/renderer/modules/background_fetch/background_fetch_update_ui_event.h b/third_party/blink/renderer/modules/background_fetch/background_fetch_update_ui_event.h
index 8a491c15..6be09dc 100644
--- a/third_party/blink/renderer/modules/background_fetch/background_fetch_update_ui_event.h
+++ b/third_party/blink/renderer/modules/background_fetch/background_fetch_update_ui_event.h
@@ -18,6 +18,7 @@
 class BackgroundFetchEvent;
 class BackgroundFetchIconLoader;
 class BackgroundFetchUIOptions;
+class ExceptionState;
 class ScriptPromiseResolver;
 class WaitUntilObserver;
 
@@ -53,7 +54,8 @@
 
   // Web Exposed method defined in the IDL file.
   ScriptPromise updateUI(ScriptState* script_state,
-                         const BackgroundFetchUIOptions* ui_options);
+                         const BackgroundFetchUIOptions* ui_options,
+                         ExceptionState&);
 
   void Trace(blink::Visitor* visitor) override;
 
diff --git a/third_party/blink/renderer/modules/background_fetch/background_fetch_update_ui_event.idl b/third_party/blink/renderer/modules/background_fetch/background_fetch_update_ui_event.idl
index ab7b6e5..b8114af 100644
--- a/third_party/blink/renderer/modules/background_fetch/background_fetch_update_ui_event.idl
+++ b/third_party/blink/renderer/modules/background_fetch/background_fetch_update_ui_event.idl
@@ -5,9 +5,9 @@
 // https://wicg.github.io/background-fetch/#background-fetch-update-ui-event
 
 [
-    Constructor(DOMString type, BackgroundFetchEventInit init),
     Exposed=ServiceWorker,
     RuntimeEnabled=BackgroundFetch
 ] interface BackgroundFetchUpdateUIEvent : BackgroundFetchEvent {
-    [CallWith=ScriptState] Promise<void> updateUI(optional BackgroundFetchUIOptions options);
-};
\ No newline at end of file
+    constructor(DOMString type, BackgroundFetchEventInit init);
+    [CallWith=ScriptState, RaisesException] Promise<void> updateUI(optional BackgroundFetchUIOptions options);
+};
diff --git a/third_party/blink/renderer/modules/background_sync/periodic_sync_event.idl b/third_party/blink/renderer/modules/background_sync/periodic_sync_event.idl
index caefac4c..b3d8fa62 100644
--- a/third_party/blink/renderer/modules/background_sync/periodic_sync_event.idl
+++ b/third_party/blink/renderer/modules/background_sync/periodic_sync_event.idl
@@ -5,9 +5,9 @@
 // TODO(crbug.com/925297): Link to spec.
 
 [
-    Constructor(DOMString type, PeriodicSyncEventInit init),
     Exposed=ServiceWorker,
     RuntimeEnabled=PeriodicBackgroundSync
 ] interface PeriodicSyncEvent : ExtendableEvent {
+    constructor(DOMString type, PeriodicSyncEventInit init);
     readonly attribute DOMString tag;
 };
diff --git a/third_party/blink/renderer/modules/background_sync/sync_event.idl b/third_party/blink/renderer/modules/background_sync/sync_event.idl
index 7a80e3f..68134c21 100644
--- a/third_party/blink/renderer/modules/background_sync/sync_event.idl
+++ b/third_party/blink/renderer/modules/background_sync/sync_event.idl
@@ -5,9 +5,9 @@
 // https://wicg.github.io/BackgroundSync/spec/#sync-event
 
 [
-    Constructor(DOMString type, SyncEventInit init),
     Exposed=ServiceWorker
 ] interface SyncEvent : ExtendableEvent {
+    constructor(DOMString type, SyncEventInit init);
     readonly attribute DOMString tag;
     readonly attribute boolean lastChance;
 };
diff --git a/third_party/blink/renderer/modules/broadcastchannel/broadcast_channel.idl b/third_party/blink/renderer/modules/broadcastchannel/broadcast_channel.idl
index 83ca9a2..68bdcae 100644
--- a/third_party/blink/renderer/modules/broadcastchannel/broadcast_channel.idl
+++ b/third_party/blink/renderer/modules/broadcastchannel/broadcast_channel.idl
@@ -5,13 +5,11 @@
 // https://html.spec.whatwg.org/C/#broadcastchannel
 
 [
-    Constructor(DOMString name),
-    ConstructorCallWith=ExecutionContext,
-    RaisesException=Constructor,
     Exposed=(Window,Worker),
     ActiveScriptWrappable,
     Measure
 ] interface BroadcastChannel : EventTarget {
+    [CallWith=ExecutionContext, RaisesException] constructor(DOMString name);
     readonly attribute DOMString name;
 
     [RaisesException, Measure] void postMessage(any message);
diff --git a/third_party/blink/renderer/modules/cache_storage/cache_test.cc b/third_party/blink/renderer/modules/cache_storage/cache_test.cc
index c9e0edf..fe9b645 100644
--- a/third_party/blink/renderer/modules/cache_storage/cache_test.cc
+++ b/third_party/blink/renderer/modules/cache_storage/cache_test.cc
@@ -730,7 +730,7 @@
   Request* request = NewRequestFromUrl(url);
   Response* response = Response::Create(
       GetScriptState(),
-      MakeGarbageCollected<BodyStreamBuffer>(
+      BodyStreamBuffer::Create(
           GetScriptState(),
           MakeGarbageCollected<FormDataBytesConsumer>(content), nullptr),
       content_type, ResponseInit::Create(), exception_state);
diff --git a/third_party/blink/renderer/modules/cache_storage/cache_utils.cc b/third_party/blink/renderer/modules/cache_storage/cache_utils.cc
index f702022..8c136f0 100644
--- a/third_party/blink/renderer/modules/cache_storage/cache_utils.cc
+++ b/third_party/blink/renderer/modules/cache_storage/cache_utils.cc
@@ -24,7 +24,7 @@
                                                              *response);
 
   DataPipeBytesConsumer::CompletionNotifier* completion_notifier = nullptr;
-  fetch_data->ReplaceBodyStreamBuffer(MakeGarbageCollected<BodyStreamBuffer>(
+  fetch_data->ReplaceBodyStreamBuffer(BodyStreamBuffer::Create(
       script_state,
       MakeGarbageCollected<DataPipeBytesConsumer>(
           context->GetTaskRunner(TaskType::kNetworking),
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc
index 36f6b94..fa5b416 100644
--- a/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc
+++ b/third_party/blink/renderer/modules/canvas/canvas2d/base_rendering_context_2d.cc
@@ -1105,8 +1105,7 @@
 
   if (!image_source->IsVideoElement()) {
     image_flags.setAntiAlias(ShouldDrawImageAntialiased(dst_rect));
-    image->Draw(c, image_flags, dst_rect, src_rect,
-                kDoNotRespectImageOrientation,
+    image->Draw(c, image_flags, dst_rect, src_rect, kRespectImageOrientation,
                 Image::kDoNotClampImageToSourceRect, Image::kSyncDecode);
   } else {
     c->save();
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/path_2d.idl b/third_party/blink/renderer/modules/canvas/canvas2d/path_2d.idl
index ab9862676..c2d6ff1 100644
--- a/third_party/blink/renderer/modules/canvas/canvas2d/path_2d.idl
+++ b/third_party/blink/renderer/modules/canvas/canvas2d/path_2d.idl
@@ -29,9 +29,9 @@
 // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#path2d
 
 [
-    Constructor(optional (Path2D or DOMString) path),
     Exposed=(PaintWorklet,Window,Worker)
 ] interface Path2D {
+    constructor(optional (Path2D or DOMString) path);
     [RaisesException] void addPath(Path2D path, optional DOMMatrix2DInit transform);
 };
 
diff --git a/third_party/blink/renderer/modules/clipboard/clipboard_item.idl b/third_party/blink/renderer/modules/clipboard/clipboard_item.idl
index b2444e1..25d6a685d 100644
--- a/third_party/blink/renderer/modules/clipboard/clipboard_item.idl
+++ b/third_party/blink/renderer/modules/clipboard/clipboard_item.idl
@@ -5,12 +5,11 @@
 // https://w3c.github.io/clipboard-apis/#clipboard-interface
 
 [
-  Constructor(record<DOMString, Blob> items,
-              optional ClipboardItemOptions options),
-  RaisesException=Constructor,
   Exposed=Window,
   RuntimeEnabled=AsyncClipboard
 ] interface ClipboardItem {
+  [RaisesException] constructor(record<DOMString, Blob> items,
+              optional ClipboardItemOptions options);
   readonly attribute FrozenArray<DOMString> types;
 
   [RuntimeEnabled=RawClipboard]
diff --git a/third_party/blink/renderer/modules/compression/compression_stream.idl b/third_party/blink/renderer/modules/compression/compression_stream.idl
index 66f492f..e6f9a17 100644
--- a/third_party/blink/renderer/modules/compression/compression_stream.idl
+++ b/third_party/blink/renderer/modules/compression/compression_stream.idl
@@ -1,10 +1,8 @@
 [
     Exposed=(Window,Worker),
-    Constructor(DOMString format),
-    ConstructorCallWith=ScriptState,
-    RaisesException=Constructor,
     MeasureAs=CompressionStreamConstructor
 ] interface CompressionStream {
+    [CallWith=ScriptState, RaisesException] constructor(DOMString format);
     readonly attribute ReadableStream readable;
     readonly attribute WritableStream writable;
 };
diff --git a/third_party/blink/renderer/modules/compression/decompression_stream.idl b/third_party/blink/renderer/modules/compression/decompression_stream.idl
index b13d56a..b76ae99 100644
--- a/third_party/blink/renderer/modules/compression/decompression_stream.idl
+++ b/third_party/blink/renderer/modules/compression/decompression_stream.idl
@@ -1,10 +1,8 @@
 [
     Exposed=(Window,Worker),
-    Constructor(DOMString format),
-    ConstructorCallWith=ScriptState,
-    RaisesException=Constructor,
     MeasureAs=DecompressionStreamConstructor
 ] interface DecompressionStream {
+    [CallWith=ScriptState, RaisesException] constructor(DOMString format);
     readonly attribute ReadableStream readable;
     readonly attribute WritableStream writable;
 };
diff --git a/third_party/blink/renderer/modules/content_index/content_index_event.idl b/third_party/blink/renderer/modules/content_index/content_index_event.idl
index a7cb483..33aa9bf 100644
--- a/third_party/blink/renderer/modules/content_index/content_index_event.idl
+++ b/third_party/blink/renderer/modules/content_index/content_index_event.idl
@@ -5,9 +5,9 @@
 // https://github.com/rknoll/content-index
 
 [
-    Constructor(DOMString type, ContentIndexEventInit init),
     Exposed=ServiceWorker,
     RuntimeEnabled=ContentIndex
 ] interface ContentIndexEvent : ExtendableEvent {
+    constructor(DOMString type, ContentIndexEventInit init);
     readonly attribute DOMString id;
 };
diff --git a/third_party/blink/renderer/modules/cookie_store/cookie_change_event.idl b/third_party/blink/renderer/modules/cookie_store/cookie_change_event.idl
index 4024c9a61c..223a6fd 100644
--- a/third_party/blink/renderer/modules/cookie_store/cookie_change_event.idl
+++ b/third_party/blink/renderer/modules/cookie_store/cookie_change_event.idl
@@ -11,9 +11,9 @@
 [
   Exposed=Window,
   RuntimeEnabled=CookieStore,
-  SecureContext,
-  Constructor(DOMString type, optional CookieChangeEventInit eventInitDict)
+  SecureContext
 ] interface CookieChangeEvent : Event {
+  constructor(DOMString type, optional CookieChangeEventInit eventInitDict);
   [MeasureAs=CookieStoreAPI] readonly attribute CookieList changed;
   [MeasureAs=CookieStoreAPI] readonly attribute CookieList deleted;
 };
diff --git a/third_party/blink/renderer/modules/cookie_store/extendable_cookie_change_event.idl b/third_party/blink/renderer/modules/cookie_store/extendable_cookie_change_event.idl
index 3c8d1b0..cb8d5fa2 100644
--- a/third_party/blink/renderer/modules/cookie_store/extendable_cookie_change_event.idl
+++ b/third_party/blink/renderer/modules/cookie_store/extendable_cookie_change_event.idl
@@ -9,9 +9,9 @@
 
 [
   Exposed=ServiceWorker,
-  RuntimeEnabled=CookieStore,
-  Constructor(DOMString type, optional ExtendableCookieChangeEventInit eventInitDict)
+  RuntimeEnabled=CookieStore
 ] interface ExtendableCookieChangeEvent : ExtendableEvent {
+  constructor(DOMString type, optional ExtendableCookieChangeEventInit eventInitDict);
   [MeasureAs=CookieStoreAPI] readonly attribute CookieList changed;
   [MeasureAs=CookieStoreAPI] readonly attribute CookieList deleted;
 };
diff --git a/third_party/blink/renderer/modules/credentialmanager/federated_credential.idl b/third_party/blink/renderer/modules/credentialmanager/federated_credential.idl
index ac5d3021c0..b043d5e 100644
--- a/third_party/blink/renderer/modules/credentialmanager/federated_credential.idl
+++ b/third_party/blink/renderer/modules/credentialmanager/federated_credential.idl
@@ -5,11 +5,10 @@
 // https://w3c.github.io/webappsec-credential-management/#federatedcredential
 
 [
-    RaisesException=Constructor,
-    Constructor(FederatedCredentialInit data),
     Exposed=Window,
     SecureContext
 ] interface FederatedCredential : Credential {
+    [RaisesException] constructor(FederatedCredentialInit data);
     readonly attribute USVString provider;
 
     // TODO(mkwst): We don't really support this yet; it always returns ''.
diff --git a/third_party/blink/renderer/modules/credentialmanager/password_credential.idl b/third_party/blink/renderer/modules/credentialmanager/password_credential.idl
index 4838796d..6f16a64 100644
--- a/third_party/blink/renderer/modules/credentialmanager/password_credential.idl
+++ b/third_party/blink/renderer/modules/credentialmanager/password_credential.idl
@@ -4,12 +4,11 @@
 
 // https://w3c.github.io/webappsec-credential-management/#passwordcredential
 [
-    RaisesException=Constructor,
-    Constructor(PasswordCredentialData data),
-    Constructor(HTMLFormElement form),
     Exposed=Window,
     SecureContext
 ] interface PasswordCredential : Credential {
+    [RaisesException] constructor(PasswordCredentialData data);
+    [RaisesException] constructor(HTMLFormElement form);
     readonly attribute DOMString password;
 };
 PasswordCredential includes CredentialUserData;
diff --git a/third_party/blink/renderer/modules/device_orientation/device_motion_event.idl b/third_party/blink/renderer/modules/device_orientation/device_motion_event.idl
index cb204f8b..850fb62f 100644
--- a/third_party/blink/renderer/modules/device_orientation/device_motion_event.idl
+++ b/third_party/blink/renderer/modules/device_orientation/device_motion_event.idl
@@ -26,9 +26,9 @@
 // https://w3c.github.io/deviceorientation/spec-source-orientation.html#devicemotion
 
 [
-    Constructor(DOMString type, optional DeviceMotionEventInit eventInitDict),
     Exposed=Window, SecureContext
 ] interface DeviceMotionEvent : Event {
+    constructor(DOMString type, optional DeviceMotionEventInit eventInitDict);
     readonly attribute DeviceMotionEventAcceleration? acceleration;
     readonly attribute DeviceMotionEventAcceleration? accelerationIncludingGravity;
     readonly attribute DeviceMotionEventRotationRate? rotationRate;
diff --git a/third_party/blink/renderer/modules/device_orientation/device_orientation_event.idl b/third_party/blink/renderer/modules/device_orientation/device_orientation_event.idl
index 1a94e101..499a10f 100644
--- a/third_party/blink/renderer/modules/device_orientation/device_orientation_event.idl
+++ b/third_party/blink/renderer/modules/device_orientation/device_orientation_event.idl
@@ -26,9 +26,9 @@
 // https://w3c.github.io/deviceorientation/spec-source-orientation.html#deviceorientation
 
 [
-    Constructor(DOMString type, optional DeviceOrientationEventInit eventInitDict),
     Exposed=Window, SecureContext
 ] interface DeviceOrientationEvent : Event {
+    constructor(DOMString type, optional DeviceOrientationEventInit eventInitDict);
     readonly attribute double? alpha;
     readonly attribute double? beta;
     readonly attribute double? gamma;
diff --git a/third_party/blink/renderer/modules/encoding/text_decoder.idl b/third_party/blink/renderer/modules/encoding/text_decoder.idl
index 9e1a9b6..455c365 100644
--- a/third_party/blink/renderer/modules/encoding/text_decoder.idl
+++ b/third_party/blink/renderer/modules/encoding/text_decoder.idl
@@ -30,10 +30,9 @@
 
 [
     Exposed=(Window,Worker),
-    Constructor(optional DOMString label = "utf-8", optional TextDecoderOptions options),
-    RaisesException=Constructor,
     MeasureAs=TextDecoderConstructor
 ] interface TextDecoder {
+    [RaisesException] constructor(optional DOMString label = "utf-8", optional TextDecoderOptions options);
     readonly attribute DOMString encoding;
     readonly attribute boolean fatal;
     readonly attribute boolean ignoreBOM;
diff --git a/third_party/blink/renderer/modules/encoding/text_decoder_stream.idl b/third_party/blink/renderer/modules/encoding/text_decoder_stream.idl
index 286489d..84cffc7a 100644
--- a/third_party/blink/renderer/modules/encoding/text_decoder_stream.idl
+++ b/third_party/blink/renderer/modules/encoding/text_decoder_stream.idl
@@ -5,11 +5,9 @@
 // https://encoding.spec.whatwg.org/#interface-textdecoderstream
 [
     Exposed=(Window,Worker),
-    Constructor(optional DOMString label = "utf-8", optional TextDecoderOptions options),
-    ConstructorCallWith=ScriptState,
-    RaisesException=Constructor,
     MeasureAs=TextDecoderStreamConstructor
 ] interface TextDecoderStream {
+    [CallWith=ScriptState, RaisesException] constructor(optional DOMString label = "utf-8", optional TextDecoderOptions options);
     readonly attribute DOMString encoding;
     readonly attribute boolean fatal;
     readonly attribute boolean ignoreBOM;
diff --git a/third_party/blink/renderer/modules/encoding/text_encoder.idl b/third_party/blink/renderer/modules/encoding/text_encoder.idl
index e94f2398..bd57aff 100644
--- a/third_party/blink/renderer/modules/encoding/text_encoder.idl
+++ b/third_party/blink/renderer/modules/encoding/text_encoder.idl
@@ -30,11 +30,9 @@
 
 [
     Exposed=(Window,Worker),
-    Constructor(),
-    ConstructorCallWith=ExecutionContext,
-    RaisesException=Constructor,
     MeasureAs=TextEncoderConstructor
 ] interface TextEncoder {
+    [CallWith=ExecutionContext, RaisesException] constructor();
     readonly attribute DOMString encoding;
     [MeasureAs=TextEncoderEncode] Uint8Array encode(optional USVString input = "");
     [MeasureAs=TextEncoderEncodeInto] TextEncoderEncodeIntoResult encodeInto(USVString source, Uint8Array destination);
diff --git a/third_party/blink/renderer/modules/encoding/text_encoder_stream.idl b/third_party/blink/renderer/modules/encoding/text_encoder_stream.idl
index b28dd76..7886cb0 100644
--- a/third_party/blink/renderer/modules/encoding/text_encoder_stream.idl
+++ b/third_party/blink/renderer/modules/encoding/text_encoder_stream.idl
@@ -5,11 +5,9 @@
 // https://encoding.spec.whatwg.org/#interface-textencoderstream
 [
     Exposed=(Window,Worker),
-    Constructor(),
-    ConstructorCallWith=ScriptState,
-    RaisesException=Constructor,
     MeasureAs=TextEncoderStreamConstructor
 ] interface TextEncoderStream {
+    [CallWith=ScriptState, RaisesException] constructor();
     readonly attribute DOMString encoding;
     readonly attribute ReadableStream readable;
     readonly attribute WritableStream writable;
diff --git a/third_party/blink/renderer/modules/encryptedmedia/media_encrypted_event.idl b/third_party/blink/renderer/modules/encryptedmedia/media_encrypted_event.idl
index 0a33ee8..aa409f3e 100644
--- a/third_party/blink/renderer/modules/encryptedmedia/media_encrypted_event.idl
+++ b/third_party/blink/renderer/modules/encryptedmedia/media_encrypted_event.idl
@@ -26,9 +26,9 @@
 // https://w3c.github.io/encrypted-media/#mediaencryptedevent
 
 [
-    Exposed=Window,
-    Constructor(DOMString type, optional MediaEncryptedEventInit eventInitDict)
+    Exposed=Window
 ] interface MediaEncryptedEvent : Event {
+    constructor(DOMString type, optional MediaEncryptedEventInit eventInitDict);
     readonly attribute DOMString initDataType;
     readonly attribute ArrayBuffer? initData;
 };
diff --git a/third_party/blink/renderer/modules/encryptedmedia/media_key_message_event.idl b/third_party/blink/renderer/modules/encryptedmedia/media_key_message_event.idl
index d80b520..602cd65 100644
--- a/third_party/blink/renderer/modules/encryptedmedia/media_key_message_event.idl
+++ b/third_party/blink/renderer/modules/encryptedmedia/media_key_message_event.idl
@@ -34,9 +34,9 @@
 
 [
     Exposed=Window,
-    Constructor(DOMString type, MediaKeyMessageEventInit eventInitDict),
     SecureContext
 ] interface MediaKeyMessageEvent : Event {
+    constructor(DOMString type, MediaKeyMessageEventInit eventInitDict);
     readonly attribute MediaKeyMessageType messageType;
     readonly attribute ArrayBuffer message;
 };
diff --git a/third_party/blink/renderer/modules/eventsource/event_source.idl b/third_party/blink/renderer/modules/eventsource/event_source.idl
index 900568a..7d1adc7 100644
--- a/third_party/blink/renderer/modules/eventsource/event_source.idl
+++ b/third_party/blink/renderer/modules/eventsource/event_source.idl
@@ -33,11 +33,9 @@
 
 [
     ActiveScriptWrappable,
-    Constructor(USVString url, optional EventSourceInit eventSourceInitDict),
-    ConstructorCallWith=ExecutionContext,
-    Exposed=(Window,Worker),
-    RaisesException=Constructor
+    Exposed=(Window,Worker)
 ] interface EventSource : EventTarget {
+    [CallWith=ExecutionContext, RaisesException] constructor(USVString url, optional EventSourceInit eventSourceInitDict);
     readonly attribute USVString url;
     readonly attribute boolean withCredentials;
 
diff --git a/third_party/blink/renderer/modules/gamepad/gamepad_axis_event.idl b/third_party/blink/renderer/modules/gamepad/gamepad_axis_event.idl
index 044b4b8e..5359dc90 100644
--- a/third_party/blink/renderer/modules/gamepad/gamepad_axis_event.idl
+++ b/third_party/blink/renderer/modules/gamepad/gamepad_axis_event.idl
@@ -6,9 +6,9 @@
 // https://docs.google.com/document/d/1rnQ1gU0iwPXbO7OvKS6KO9gyfpSdSQvKhK9_OkzUuKE
 
 [
-    RuntimeEnabled=GamepadButtonAxisEvents,
-    Constructor(DOMString type, optional GamepadAxisEventInit eventInitDict)
+    RuntimeEnabled=GamepadButtonAxisEvents
 ] interface GamepadAxisEvent : GamepadEvent {
+    constructor(DOMString type, optional GamepadAxisEventInit eventInitDict);
     [ImplementedAs=getAxis] readonly attribute unsigned long axis;
     [ImplementedAs=getValue] readonly attribute double value;
 };
diff --git a/third_party/blink/renderer/modules/gamepad/gamepad_button_event.idl b/third_party/blink/renderer/modules/gamepad/gamepad_button_event.idl
index 21ac8cf..a816e2c 100644
--- a/third_party/blink/renderer/modules/gamepad/gamepad_button_event.idl
+++ b/third_party/blink/renderer/modules/gamepad/gamepad_button_event.idl
@@ -6,9 +6,9 @@
 // https://docs.google.com/document/d/1rnQ1gU0iwPXbO7OvKS6KO9gyfpSdSQvKhK9_OkzUuKE
 
 [
-    RuntimeEnabled=GamepadButtonAxisEvents,
-    Constructor(DOMString type, optional GamepadButtonEventInit eventInitDict)
+    RuntimeEnabled=GamepadButtonAxisEvents
 ] interface GamepadButtonEvent : GamepadEvent {
+    constructor(DOMString type, optional GamepadButtonEventInit eventInitDict);
     [ImplementedAs=getButton] readonly attribute unsigned long button;
     [ImplementedAs=getValue] readonly attribute double value;
 };
diff --git a/third_party/blink/renderer/modules/gamepad/gamepad_event.idl b/third_party/blink/renderer/modules/gamepad/gamepad_event.idl
index e38ef38..3013b5c 100644
--- a/third_party/blink/renderer/modules/gamepad/gamepad_event.idl
+++ b/third_party/blink/renderer/modules/gamepad/gamepad_event.idl
@@ -4,8 +4,7 @@
 
 // https://w3c.github.io/gamepad/#gamepadevent-interface
 
-[
-    Constructor(DOMString type, optional GamepadEventInit eventInitDict)
-] interface GamepadEvent : Event {
+interface GamepadEvent : Event {
+    constructor(DOMString type, optional GamepadEventInit eventInitDict);
     [ImplementedAs=getGamepad] readonly attribute Gamepad gamepad;
 };
diff --git a/third_party/blink/renderer/modules/hid/hid_connection_event.idl b/third_party/blink/renderer/modules/hid/hid_connection_event.idl
index 72ede44a..c61dbe2 100644
--- a/third_party/blink/renderer/modules/hid/hid_connection_event.idl
+++ b/third_party/blink/renderer/modules/hid/hid_connection_event.idl
@@ -6,10 +6,10 @@
 // https://wicg.github.io/webhid/index.html#events
 
 [
-    Constructor(DOMString type, HIDConnectionEventInit eventInitDict),
     Exposed(Window WebHID),
     SecureContext
 ] interface HIDConnectionEvent : Event {
+    constructor(DOMString type, HIDConnectionEventInit eventInitDict);
     // The connected or disconnected device.
     [SameObject] readonly attribute HIDDevice device;
 };
diff --git a/third_party/blink/renderer/modules/idle/idle_detector.idl b/third_party/blink/renderer/modules/idle/idle_detector.idl
index f2d9ad2..8a9c7d83 100644
--- a/third_party/blink/renderer/modules/idle/idle_detector.idl
+++ b/third_party/blink/renderer/modules/idle/idle_detector.idl
@@ -9,11 +9,9 @@
   SecureContext,
   Exposed=(Window,DedicatedWorker),
   ActiveScriptWrappable,
-  Constructor(optional IdleOptions options),
-  ConstructorCallWith=ScriptState,
-  RaisesException=Constructor,
   RuntimeEnabled=IdleDetection
 ] interface IdleDetector : EventTarget {
+  [CallWith=ScriptState, RaisesException] constructor(optional IdleOptions options);
   readonly attribute IdleState state;
   attribute EventHandler onchange;
   [CallWith=ScriptState, RaisesException, MeasureAs=IdleDetectionStart] Promise<void> start();
diff --git a/third_party/blink/renderer/modules/imagecapture/image_capture.idl b/third_party/blink/renderer/modules/imagecapture/image_capture.idl
index b38692c..b1ba5eca 100644
--- a/third_party/blink/renderer/modules/imagecapture/image_capture.idl
+++ b/third_party/blink/renderer/modules/imagecapture/image_capture.idl
@@ -6,12 +6,10 @@
 
 [
     ActiveScriptWrappable,
-    ConstructorCallWith=ExecutionContext,
-    Constructor(MediaStreamTrack track),
     MeasureAs=ImageCaptureConstructor,
-    RaisesException=Constructor,
     Exposed=Window
 ] interface ImageCapture {
+    [CallWith=ExecutionContext, RaisesException] constructor(MediaStreamTrack track);
     [ImplementedAs=videoStreamTrack] readonly attribute MediaStreamTrack track;
 
     [CallWith=ScriptState] Promise<PhotoCapabilities> getPhotoCapabilities();
diff --git a/third_party/blink/renderer/modules/indexeddb/idb_observer.idl b/third_party/blink/renderer/modules/indexeddb/idb_observer.idl
index 258c4904..a56142d 100644
--- a/third_party/blink/renderer/modules/indexeddb/idb_observer.idl
+++ b/third_party/blink/renderer/modules/indexeddb/idb_observer.idl
@@ -8,9 +8,9 @@
 
 [
    Exposed=(Window,Worker),
-   Constructor(IDBObserverCallback callback),
    RuntimeEnabled=IDBObserver
 ] interface IDBObserver {
+    constructor(IDBObserverCallback callback);
     [RaisesException, Measure] void observe(IDBDatabase db, IDBTransaction tx, IDBObserverInit options);
     [RaisesException, Measure] void unobserve(IDBDatabase db);
 };
diff --git a/third_party/blink/renderer/modules/indexeddb/idb_version_change_event.idl b/third_party/blink/renderer/modules/indexeddb/idb_version_change_event.idl
index b3bdfbb..b66917f 100644
--- a/third_party/blink/renderer/modules/indexeddb/idb_version_change_event.idl
+++ b/third_party/blink/renderer/modules/indexeddb/idb_version_change_event.idl
@@ -29,9 +29,9 @@
 enum IDBDataLossAmount { "none", "total" };
 
 [
-    Exposed=(Window,Worker),
-    Constructor(DOMString type, optional IDBVersionChangeEventInit eventInitDict)
+    Exposed=(Window,Worker)
 ] interface IDBVersionChangeEvent : Event {
+    constructor(DOMString type, optional IDBVersionChangeEventInit eventInitDict);
     readonly attribute unsigned long long oldVersion;
     readonly attribute unsigned long long? newVersion;
 
diff --git a/third_party/blink/renderer/modules/manifest/manifest_parser.cc b/third_party/blink/renderer/modules/manifest/manifest_parser.cc
index 1a168633..9ae96f1 100644
--- a/third_party/blink/renderer/modules/manifest/manifest_parser.cc
+++ b/third_party/blink/renderer/modules/manifest/manifest_parser.cc
@@ -99,6 +99,7 @@
     manifest_->background_color = *background_color;
 
   manifest_->gcm_sender_id = ParseGCMSenderID(root_object.get());
+  manifest_->shortcuts = ParseShortcuts(root_object.get());
 
   ManifestUmaUtil::ParseSucceeded(manifest_);
 }
@@ -151,6 +152,41 @@
   return value;
 }
 
+base::Optional<String> ManifestParser::ParseStringForMember(
+    const JSONObject* object,
+    const String& member_name,
+    const String& key,
+    bool required,
+    TrimType trim) {
+  JSONValue* json_value = object->Get(key);
+  if (!json_value) {
+    if (required) {
+      AddErrorInfo("property '" + key + "' of '" + member_name +
+                   "' not present.");
+    }
+
+    return base::nullopt;
+  }
+
+  String value;
+  if (!json_value->AsString(&value)) {
+    AddErrorInfo("property '" + key + "' of '" + member_name +
+                 "' ignored, type string expected.");
+    return base::nullopt;
+  }
+  if (trim == TrimType::Trim)
+    value = value.StripWhiteSpace();
+
+  if (value == "") {
+    AddErrorInfo("property '" + key + "' of '" + member_name +
+                 "' is an empty string.");
+    if (required)
+      return base::nullopt;
+  }
+
+  return value;
+}
+
 base::Optional<RGBA32> ManifestParser::ParseColor(const JSONObject* object,
                                                   const String& key) {
   base::Optional<String> parsed_color = ParseString(object, key, Trim);
@@ -383,6 +419,81 @@
   return icons;
 }
 
+String ManifestParser::ParseShortcutName(const JSONObject* shortcut) {
+  base::Optional<String> name =
+      ParseStringForMember(shortcut, "shortcut", "name", true, Trim);
+  return name.has_value() ? *name : String();
+}
+
+String ManifestParser::ParseShortcutShortName(const JSONObject* shortcut) {
+  base::Optional<String> short_name =
+      ParseStringForMember(shortcut, "shortcut", "short_name", false, Trim);
+  return short_name.has_value() ? *short_name : String();
+}
+
+String ManifestParser::ParseShortcutDescription(const JSONObject* shortcut) {
+  base::Optional<String> description =
+      ParseStringForMember(shortcut, "shortcut", "description", false, Trim);
+  return description.has_value() ? *description : String();
+}
+
+KURL ManifestParser::ParseShortcutUrl(const JSONObject* shortcut) {
+  KURL shortcut_url = ParseURL(shortcut, "url", manifest_url_,
+                               ParseURLOriginRestrictions::kSameOriginOnly);
+  if (shortcut_url.IsNull()) {
+    AddErrorInfo("property 'url' of 'shortcut' not present.");
+  } else if (!shortcut_url.GetString().StartsWith(
+                 manifest_->scope.GetString())) {
+    AddErrorInfo(
+        "property 'url' of 'shortcut' ignored. url should be within scope of "
+        "the manifest.");
+    return KURL();
+  }
+
+  return shortcut_url;
+}
+
+Vector<mojom::blink::ManifestShortcutItemPtr> ManifestParser::ParseShortcuts(
+    const JSONObject* object) {
+  Vector<mojom::blink::ManifestShortcutItemPtr> shortcuts;
+  JSONValue* json_value = object->Get("shortcuts");
+  if (!json_value)
+    return shortcuts;
+
+  JSONArray* shortcuts_list = object->GetArray("shortcuts");
+  if (!shortcuts_list) {
+    AddErrorInfo("property 'shortcuts' ignored, type array expected.");
+    return shortcuts;
+  }
+
+  for (wtf_size_t i = 0; i < shortcuts_list->size(); ++i) {
+    JSONObject* shortcut_object = JSONObject::Cast(shortcuts_list->at(i));
+    if (!shortcut_object)
+      continue;
+
+    auto shortcut = mojom::blink::ManifestShortcutItem::New();
+    shortcut->url = ParseShortcutUrl(shortcut_object);
+    // A shortcut MUST have a valid url. If it does not, it MUST be ignored.
+    if (!shortcut->url.IsValid())
+      continue;
+
+    // A shortcut MUST have a valid name. If it does not, it MUST be ignored.
+    shortcut->name = ParseShortcutName(shortcut_object);
+    if (shortcut->name == String())
+      continue;
+
+    shortcut->short_name = ParseShortcutShortName(shortcut_object);
+    shortcut->description = ParseShortcutDescription(shortcut_object);
+    auto icons = ParseIcons(shortcut_object);
+    if (!icons.IsEmpty())
+      shortcut->icons = std::move(icons);
+
+    shortcuts.push_back(std::move(shortcut));
+  }
+
+  return shortcuts;
+}
+
 String ManifestParser::ParseFileFilterName(const JSONObject* file) {
   if (!file->Get("name")) {
     AddErrorInfo("property 'name' missing.");
diff --git a/third_party/blink/renderer/modules/manifest/manifest_parser.h b/third_party/blink/renderer/modules/manifest/manifest_parser.h
index 8218586..de4f518 100644
--- a/third_party/blink/renderer/modules/manifest/manifest_parser.h
+++ b/third_party/blink/renderer/modules/manifest/manifest_parser.h
@@ -67,6 +67,19 @@
                                      const String& key,
                                      TrimType trim);
 
+  // Helper function to parse strings present in a member that itself is
+  // a dictionary like 'shortcut' as defined in:
+  // https://w3c.github.io/manifest/#shortcutitem-and-its-members Each strings
+  // will identifiable by its |key|. This helper includes the member_name in any
+  // ManifestError added while parsing. This helps disambiguate member property
+  // names from top level member names. Returns the parsed string if any, a null
+  // optional if the parsing failed.
+  base::Optional<String> ParseStringForMember(const JSONObject* object,
+                                              const String& member_name,
+                                              const String& key,
+                                              bool required,
+                                              TrimType trim);
+
   // Helper function to parse colors present on a given |dictionary| in a given
   // field identified by its |key|. Returns a null optional if the value is not
   // present or is not a valid color.
@@ -148,6 +161,33 @@
   Vector<mojom::blink::ManifestImageResourcePtr> ParseIcons(
       const JSONObject* object);
 
+  // Parses the 'name' field of a shortcut, as defined in:
+  // https://w3c.github.io/manifest/#shortcuts-member
+  // Returns the parsed string if any, a null string if the parsing failed.
+  String ParseShortcutName(const JSONObject* shortcut);
+
+  // Parses the 'short_name' field of a shortcut, as defined in:
+  // https://w3c.github.io/manifest/#shortcuts-member
+  // Returns the parsed string if any, a null string if the parsing failed.
+  String ParseShortcutShortName(const JSONObject* shortcut);
+
+  // Parses the 'description' field of a shortcut, as defined in:
+  // https://w3c.github.io/manifest/#shortcuts-member
+  // Returns the parsed string if any, a null string if the parsing failed.
+  String ParseShortcutDescription(const JSONObject* shortcut);
+
+  // Parses the 'url' field of an icon, as defined in:
+  // https://w3c.github.io/manifest/#shortcuts-member
+  // Returns the parsed KURL if any, an empty KURL if the parsing failed.
+  KURL ParseShortcutUrl(const JSONObject* shortcut);
+
+  // Parses the 'shortcuts' field of a Manifest, as defined in:
+  // https://w3c.github.io/manifest/#shortcuts-member
+  // Returns a vector of ManifestShortcutPtr with the successfully parsed
+  // shortcuts, if any. An empty vector if the field was not present or empty.
+  Vector<mojom::blink::ManifestShortcutItemPtr> ParseShortcuts(
+      const JSONObject* object);
+
   // Parses the name field of a share target file, as defined in:
   // https://wicg.github.io/web-share-target/level-2/#sharetargetfiles-and-its-members
   // Returns the parsed string if any, an empty string if the parsing failed.
diff --git a/third_party/blink/renderer/modules/manifest/manifest_parser_unittest.cc b/third_party/blink/renderer/modules/manifest/manifest_parser_unittest.cc
index 6852eeb..fd9e38ac 100644
--- a/third_party/blink/renderer/modules/manifest/manifest_parser_unittest.cc
+++ b/third_party/blink/renderer/modules/manifest/manifest_parser_unittest.cc
@@ -105,6 +105,7 @@
   ASSERT_FALSE(manifest->has_background_color);
   ASSERT_TRUE(manifest->gcm_sender_id.IsNull());
   ASSERT_EQ(DefaultDocumentUrl().BaseAsString(), manifest->scope.GetString());
+  ASSERT_TRUE(manifest->shortcuts.IsEmpty());
 }
 
 TEST_F(ManifestParserTest, MultipleErrorsReporting) {
@@ -112,10 +113,10 @@
       "{ \"name\": 42, \"short_name\": 4,"
       "\"orientation\": {}, \"display\": \"foo\","
       "\"start_url\": null, \"icons\": {}, \"theme_color\": 42,"
-      "\"background_color\": 42 }");
+      "\"background_color\": 42, \"shortcuts\": {} }");
   ASSERT_FALSE(IsManifestEmpty(manifest));
 
-  EXPECT_EQ(8u, GetErrorCount());
+  EXPECT_EQ(9u, GetErrorCount());
 
   EXPECT_EQ("property 'name' ignored, type string expected.", errors()[0]);
   EXPECT_EQ("property 'short_name' ignored, type string expected.",
@@ -129,6 +130,7 @@
             errors()[6]);
   EXPECT_EQ("property 'background_color' ignored, type string expected.",
             errors()[7]);
+  EXPECT_EQ("property 'shortcuts' ignored, type array expected.", errors()[8]);
 }
 
 TEST_F(ManifestParserTest, NameParseRules) {
@@ -1074,6 +1076,423 @@
   }
 }
 
+TEST_F(ManifestParserTest, ShortcutsParseRules) {
+  // Smoke test: if no shortcut, no value.
+  {
+    auto& manifest = ParseManifest("{ \"shortcuts\": [] }");
+    EXPECT_TRUE(manifest->shortcuts.IsEmpty());
+    EXPECT_EQ(0u, GetErrorCount());
+  }
+
+  // Smoke test: if empty shortcut, no value.
+  {
+    auto& manifest = ParseManifest("{ \"shortcuts\": [ {} ] }");
+    EXPECT_TRUE(manifest->icons.IsEmpty());
+    EXPECT_EQ(1u, GetErrorCount());
+    EXPECT_EQ("property 'url' of 'shortcut' not present.", errors()[0]);
+  }
+
+  // Smoke test: shortcut with invalid name and url, it will not be present in
+  // the list.
+  {
+    auto& manifest =
+        ParseManifest("{ \"shortcuts\": [ { \"shortcuts\": [] } ] }");
+    EXPECT_TRUE(manifest->icons.IsEmpty());
+    EXPECT_EQ(1u, GetErrorCount());
+    EXPECT_EQ("property 'url' of 'shortcut' not present.", errors()[0]);
+  }
+
+  // Smoke test: shortcut with no name, it will not be present in the list.
+  {
+    auto& manifest = ParseManifest("{ \"shortcuts\": [ { \"url\": \"\" } ] }");
+    EXPECT_TRUE(manifest->shortcuts.IsEmpty());
+    EXPECT_EQ(1u, GetErrorCount());
+    EXPECT_EQ("property 'name' of 'shortcut' not present.", errors()[0]);
+  }
+
+  // Smoke test: shortcut with no url, it will not be present in the list.
+  {
+    auto& manifest = ParseManifest("{ \"shortcuts\": [ { \"name\": \"\" } ] }");
+    EXPECT_TRUE(manifest->shortcuts.IsEmpty());
+    EXPECT_EQ(1u, GetErrorCount());
+    EXPECT_EQ("property 'url' of 'shortcut' not present.", errors()[0]);
+  }
+
+  // Smoke test: shortcut with empty name, and empty src, will not be present in
+  // the list.
+  {
+    auto& manifest = ParseManifest(
+        "{ \"shortcuts\": [ { \"name\": \"\", \"url\": \"\" } ] }");
+    EXPECT_TRUE(manifest->shortcuts.IsEmpty());
+    EXPECT_EQ(1u, GetErrorCount());
+    EXPECT_EQ("property 'name' of 'shortcut' is an empty string.", errors()[0]);
+  }
+
+  // Smoke test: shortcut with valid (non-empty) name and src, will be present
+  // in the list.
+  {
+    auto& manifest = ParseManifest(
+        "{ \"shortcuts\": [{ \"name\": \"New Post\", \"url\": \"compose\" }] "
+        "}");
+    EXPECT_FALSE(manifest->shortcuts.IsEmpty());
+
+    auto& shortcuts = manifest->shortcuts;
+    EXPECT_EQ(shortcuts.size(), 1u);
+    EXPECT_EQ(shortcuts[0]->name, "New Post");
+    EXPECT_EQ(shortcuts[0]->url.GetString(), "http://foo.com/compose");
+    EXPECT_FALSE(IsManifestEmpty(manifest));
+    EXPECT_EQ(0u, GetErrorCount());
+  }
+}
+
+TEST_F(ManifestParserTest, ShortcutNameParseRules) {
+  // Smoke test.
+  {
+    auto& manifest = ParseManifest(
+        "{ \"shortcuts\": [ {\"name\": \"foo\", \"url\": \"NameParseTest\" } ] "
+        "}");
+    EXPECT_FALSE(manifest->shortcuts.IsEmpty());
+    EXPECT_EQ(manifest->shortcuts[0]->name, "foo");
+    EXPECT_EQ(0u, GetErrorCount());
+  }
+
+  // Trim whitespaces.
+  {
+    auto& manifest = ParseManifest(
+        "{ \"shortcuts\": [ {\"name\": \"  foo  \", \"url\": \"NameParseTest\" "
+        "} ] }");
+    ASSERT_EQ(manifest->shortcuts[0]->name, "foo");
+    EXPECT_EQ(0u, GetErrorCount());
+  }
+
+  // Don't parse if shortcut->name isn't present.
+  {
+    auto& manifest =
+        ParseManifest("{ \"shortcuts\": [ {\"url\": \"NameParseTest\" } ] }");
+    EXPECT_TRUE(manifest->shortcuts.IsEmpty());
+    EXPECT_EQ(1u, GetErrorCount());
+    EXPECT_EQ("property 'name' of 'shortcut' not present.", errors()[0]);
+  }
+
+  // Don't parse if shortcut->name isn't a string.
+  {
+    auto& manifest = ParseManifest(
+        "{ \"shortcuts\": [ {\"name\": {}, \"url\": \"NameParseTest\" } ] }");
+    EXPECT_TRUE(manifest->shortcuts.IsEmpty());
+    EXPECT_EQ(1u, GetErrorCount());
+    EXPECT_EQ("property 'name' of 'shortcut' ignored, type string expected.",
+              errors()[0]);
+  }
+
+  // Don't parse if shortcut->name isn't a string.
+  {
+    auto& manifest = ParseManifest(
+        "{ \"shortcuts\": [ {\"name\": 42, \"url\": \"NameParseTest\" } ] }");
+    EXPECT_TRUE(manifest->shortcuts.IsEmpty());
+    EXPECT_EQ(1u, GetErrorCount());
+    EXPECT_EQ("property 'name' of 'shortcut' ignored, type string expected.",
+              errors()[0]);
+  }
+
+  // Don't parse if shortcut->name is an empty string.
+  {
+    auto& manifest = ParseManifest(
+        "{ \"shortcuts\": [ {\"name\": \"\", \"url\": \"NameParseTest\" } ] }");
+    EXPECT_TRUE(manifest->shortcuts.IsEmpty());
+    EXPECT_EQ(1u, GetErrorCount());
+    EXPECT_EQ("property 'name' of 'shortcut' is an empty string.", errors()[0]);
+  }
+}
+
+TEST_F(ManifestParserTest, ShortcutShortNameParseRules) {
+  // Smoke test.
+  {
+    auto& manifest = ParseManifest(
+        "{ \"shortcuts\": [ {\"name\": \"ShortNameParseTest\", \"short_name\": "
+        "\"foo\", \"url\": \"ShortNameParseTest\" } ] }");
+    ASSERT_EQ(manifest->shortcuts[0]->short_name, "foo");
+    ASSERT_FALSE(IsManifestEmpty(manifest));
+    EXPECT_EQ(0u, GetErrorCount());
+  }
+
+  // Shortcut member is parsed when no short_name is present
+  {
+    auto& manifest = ParseManifest(
+        "{ \"shortcuts\": [ {\"name\": \"ShortNameParseTest\", \"url\": "
+        "\"ShortNameParseTest\" } ] }");
+    ASSERT_TRUE(manifest->shortcuts[0]->short_name.IsNull());
+    ASSERT_FALSE(IsManifestEmpty(manifest));
+    EXPECT_EQ(0u, GetErrorCount());
+  }
+
+  // Trim whitespaces.
+  {
+    auto& manifest = ParseManifest(
+        "{ \"shortcuts\": [ {\"name\": \"ShortNameParseTest\", \"short_name\": "
+        "\"  foo  \", \"url\": \"ShortNameParseTest\" } ] }");
+    ASSERT_EQ(manifest->shortcuts[0]->short_name, "foo");
+    EXPECT_EQ(0u, GetErrorCount());
+  }
+
+  // Don't parse short_name if it isn't a string.
+  {
+    auto& manifest = ParseManifest(
+        "{ \"shortcuts\": [ {\"name\": \"ShortNameParseTest\", \"short_name\": "
+        "{}, \"url\": \"ShortNameParseTest\" } ] }");
+    ASSERT_TRUE(manifest->shortcuts[0]->short_name.IsNull());
+    EXPECT_EQ(1u, GetErrorCount());
+    EXPECT_EQ(
+        "property 'short_name' of 'shortcut' ignored, type string expected.",
+        errors()[0]);
+  }
+
+  // Don't parse short_name if it isn't a string.
+  {
+    auto& manifest = ParseManifest(
+        "{ \"shortcuts\": [ {\"name\": \"ShortNameParseTest\", \"short_name\": "
+        "42, \"url\": \"ShortNameParseTest\" } ] }");
+    ASSERT_TRUE(manifest->shortcuts[0]->short_name.IsNull());
+    EXPECT_EQ(1u, GetErrorCount());
+    EXPECT_EQ(
+        "property 'short_name' of 'shortcut' ignored, type string expected.",
+        errors()[0]);
+  }
+}
+
+TEST_F(ManifestParserTest, ShortcutDescriptionParseRules) {
+  // Smoke test.
+  {
+    auto& manifest = ParseManifest(
+        "{ \"shortcuts\": [ {\"name\": \"DescriptionParseTest\", "
+        "\"description\": "
+        "\"foo\", \"url\": \"DescriptionParseTest\" } ] }");
+    ASSERT_EQ(manifest->shortcuts[0]->description, "foo");
+    ASSERT_FALSE(IsManifestEmpty(manifest));
+    EXPECT_EQ(0u, GetErrorCount());
+  }
+
+  // Shortcut member is parsed when no description is present
+  {
+    auto& manifest = ParseManifest(
+        "{ \"shortcuts\": [ {\"name\": \"DescriptionParseTest\", \"url\": "
+        "\"DescriptionParseTest\" } ] }");
+    ASSERT_TRUE(manifest->shortcuts[0]->description.IsNull());
+    ASSERT_FALSE(IsManifestEmpty(manifest));
+    EXPECT_EQ(0u, GetErrorCount());
+  }
+
+  // Trim whitespaces.
+  {
+    auto& manifest = ParseManifest(
+        "{ \"shortcuts\": [ {\"name\": \"DescriptionParseTest\", "
+        "\"description\": "
+        "\"  foo  \", \"url\": \"DescriptionParseTest\" } ] }");
+    ASSERT_EQ(manifest->shortcuts[0]->description, "foo");
+    EXPECT_EQ(0u, GetErrorCount());
+  }
+
+  // Don't parse description if it isn't a string.
+  {
+    auto& manifest = ParseManifest(
+        "{ \"shortcuts\": [ {\"name\": \"DescriptionParseTest\", "
+        "\"description\": "
+        "{}, \"url\": \"DescriptionParseTest\" } ] }");
+    ASSERT_TRUE(manifest->shortcuts[0]->description.IsNull());
+    EXPECT_EQ(1u, GetErrorCount());
+    EXPECT_EQ(
+        "property 'description' of 'shortcut' ignored, type string expected.",
+        errors()[0]);
+  }
+
+  // Don't parse description if it isn't a string.
+  {
+    auto& manifest = ParseManifest(
+        "{ \"shortcuts\": [ {\"name\": \"DescriptionParseTest\", "
+        "\"description\": "
+        "42, \"url\": \"DescriptionParseTest\" } ] }");
+    ASSERT_TRUE(manifest->shortcuts[0]->description.IsNull());
+    EXPECT_EQ(1u, GetErrorCount());
+    EXPECT_EQ(
+        "property 'description' of 'shortcut' ignored, type string expected.",
+        errors()[0]);
+  }
+}
+
+TEST_F(ManifestParserTest, ShortcutUrlParseRules) {
+  // Smoke test.
+  {
+    auto& manifest = ParseManifest(
+        "{ \"shortcuts\": [ {\"name\": \"UrlParseTest\", \"url\": \"foo\" } ] "
+        "}");
+    EXPECT_FALSE(manifest->shortcuts.IsEmpty());
+    EXPECT_EQ(manifest->shortcuts[0]->url, KURL(DefaultDocumentUrl(), "foo"));
+    EXPECT_EQ(0u, GetErrorCount());
+  }
+
+  // Smoke test. Don't parse (with an error) when url is not present.
+  {
+    auto& manifest = ParseManifest("{ \"shortcuts\": [ { \"name\": \"\" } ] }");
+    EXPECT_TRUE(manifest->shortcuts.IsEmpty());
+    EXPECT_EQ(1u, GetErrorCount());
+    EXPECT_EQ("property 'url' of 'shortcut' not present.", errors()[0]);
+  }
+
+  // Whitespaces.
+  {
+    auto& manifest = ParseManifest(
+        "{ \"shortcuts\": [ {\"name\": \"UrlParseTest\", \"url\": \"   foo   "
+        "\" } ] }");
+    EXPECT_FALSE(manifest->shortcuts.IsEmpty());
+    EXPECT_EQ(manifest->shortcuts[0]->url, KURL(DefaultDocumentUrl(), "foo"));
+    EXPECT_EQ(0u, GetErrorCount());
+  }
+
+  // Don't parse if url isn't a string.
+  {
+    auto& manifest = ParseManifest(
+        "{ \"shortcuts\": [ {\"name\": \"UrlParseTest\", \"url\": {} } ] }");
+    EXPECT_TRUE(manifest->shortcuts.IsEmpty());
+    EXPECT_EQ(2u, GetErrorCount());
+    EXPECT_EQ("property 'url' ignored, type string expected.", errors()[0]);
+    EXPECT_EQ("property 'url' of 'shortcut' not present.", errors()[1]);
+  }
+
+  // Don't parse if url isn't a string.
+  {
+    auto& manifest = ParseManifest(
+        "{ \"shortcuts\": [ {\"name\": \"UrlParseTest\", \"url\": 42 } ] }");
+    EXPECT_TRUE(manifest->shortcuts.IsEmpty());
+    EXPECT_EQ(2u, GetErrorCount());
+    EXPECT_EQ("property 'url' ignored, type string expected.", errors()[0]);
+    EXPECT_EQ("property 'url' of 'shortcut' not present.", errors()[1]);
+  }
+
+  // Resolving has to happen based on the manifest_url.
+  {
+    auto& manifest = ParseManifestWithURLs(
+        "{ \"shortcuts\": [ {\"name\": \"UrlParseTest\", \"url\": \"foo\" } ] "
+        "}",
+        KURL("http://foo.com/landing/manifest.json"), DefaultDocumentUrl());
+    EXPECT_FALSE(manifest->shortcuts.IsEmpty());
+    EXPECT_EQ(manifest->shortcuts[0]->url.GetString(),
+              "http://foo.com/landing/foo");
+    EXPECT_EQ(0u, GetErrorCount());
+  }
+
+  // Shortcut url should have same origin as the document url.
+  {
+    auto& manifest = ParseManifestWithURLs(
+        "{ \"shortcuts\": [ {\"name\": \"UrlParseTest\", \"url\": "
+        "\"http://bar.com/landing\" } ] "
+        "}",
+        KURL("http://foo.com/landing/manifest.json"), DefaultDocumentUrl());
+    EXPECT_TRUE(manifest->shortcuts.IsEmpty());
+    EXPECT_EQ(2u, GetErrorCount());
+    EXPECT_EQ("property 'url' ignored, should be same origin as document.",
+              errors()[0]);
+    EXPECT_EQ("property 'url' of 'shortcut' not present.", errors()[1]);
+  }
+
+  // Shortcut url should be within the manifest scope.
+  // The scope will be http://foo.com/landing.
+  // The shortcut_url will be http://foo.com/shortcut which is in not in scope.
+  {
+    auto& manifest = ParseManifestWithURLs(
+        "{ \"scope\": \"http://foo.com/landing\", \"shortcuts\": [ {\"name\": "
+        "\"UrlParseTest\", \"url\": \"shortcut\" } ] }",
+        KURL("http://foo.com/manifest.json"),
+        KURL("http://foo.com/landing/index.html"));
+    EXPECT_TRUE(manifest->shortcuts.IsEmpty());
+    ASSERT_EQ(manifest->scope.GetString(), "http://foo.com/landing");
+    EXPECT_EQ(1u, GetErrorCount());
+    EXPECT_EQ(
+        "property 'url' of 'shortcut' ignored. url should be within scope of "
+        "the manifest.",
+        errors()[0]);
+  }
+
+  // Shortcut url should be within the manifest scope.
+  // The scope will be http://foo.com/land.
+  // The shortcut_url will be http://foo.com/land/shortcut which is in scope.
+  {
+    auto& manifest = ParseManifestWithURLs(
+        "{ \"scope\": \"http://foo.com/land\", \"start_url\": "
+        "\"http://foo.com/land/landing.html\", \"shortcuts\": [ {\"name\": "
+        "\"UrlParseTest\", \"url\": \"shortcut\" } ] }",
+        KURL("http://foo.com/land/manifest.json"),
+        KURL("http://foo.com/index.html"));
+    EXPECT_FALSE(manifest->shortcuts.IsEmpty());
+    ASSERT_EQ(manifest->scope.GetString(), "http://foo.com/land");
+    EXPECT_EQ(manifest->shortcuts[0]->url.GetString(),
+              "http://foo.com/land/shortcut");
+    EXPECT_EQ(0u, GetErrorCount());
+  }
+}
+
+TEST_F(ManifestParserTest, ShortcutIconsParseRules) {
+  // Smoke test: if no icons, shortcut->icons has no value.
+  {
+    auto& manifest = ParseManifest(
+        "{ \"shortcuts\": [ {\"name\": \"IconParseTest\", \"url\": \"foo\", "
+        "\"icons\": [] } ] }");
+    EXPECT_FALSE(IsManifestEmpty(manifest));
+    EXPECT_FALSE(manifest->shortcuts.IsEmpty());
+    EXPECT_TRUE(manifest->shortcuts[0]->icons.IsEmpty());
+    EXPECT_EQ(0u, GetErrorCount());
+  }
+
+  // Smoke test: if empty icon, shortcut->icons has no value.
+  {
+    auto& manifest = ParseManifest(
+        "{ \"shortcuts\": [ {\"name\": \"IconParseTest\", \"url\": \"foo\", "
+        "\"icons\": [{}] } ] }");
+    EXPECT_FALSE(IsManifestEmpty(manifest));
+    EXPECT_FALSE(manifest->shortcuts.IsEmpty());
+    EXPECT_TRUE(manifest->shortcuts[0]->icons.IsEmpty());
+    EXPECT_EQ(0u, GetErrorCount());
+  }
+
+  // Smoke test: icon with invalid src, shortcut->icons has no value.
+  {
+    auto& manifest = ParseManifest(
+        "{ \"shortcuts\": [ {\"name\": \"IconParseTest\", \"url\": \"foo\", "
+        "\"icons\": [{ \"icons\": [] }] } ] }");
+    EXPECT_FALSE(IsManifestEmpty(manifest));
+    EXPECT_FALSE(manifest->shortcuts.IsEmpty());
+    EXPECT_TRUE(manifest->shortcuts[0]->icons.IsEmpty());
+    EXPECT_EQ(0u, GetErrorCount());
+  }
+
+  // Smoke test: if icon with empty src, it will be present in shortcut->icons.
+  {
+    auto& manifest = ParseManifest(
+        "{ \"shortcuts\": [ {\"name\": \"IconParseTest\", \"url\": \"foo\", "
+        "\"icons\": [ { \"src\": \"\" } ] } ] }");
+    EXPECT_FALSE(IsManifestEmpty(manifest));
+    EXPECT_FALSE(manifest->shortcuts.IsEmpty());
+    EXPECT_FALSE(manifest->shortcuts[0]->icons.IsEmpty());
+
+    auto& icons = manifest->shortcuts[0]->icons;
+    EXPECT_EQ(icons.size(), 1u);
+    EXPECT_EQ(icons[0]->src.GetString(), "http://foo.com/manifest.json");
+    EXPECT_EQ(0u, GetErrorCount());
+  }
+
+  // Smoke test: if one icon with valid src, it will be present in
+  // shortcut->icons.
+  {
+    auto& manifest = ParseManifest(
+        "{ \"shortcuts\": [ {\"name\": \"IconParseTest\", \"url\": \"foo\", "
+        "\"icons\": [ { \"src\": \"foo.jpg\" } ] } ] }");
+    EXPECT_FALSE(IsManifestEmpty(manifest));
+    EXPECT_FALSE(manifest->shortcuts.IsEmpty());
+    EXPECT_FALSE(manifest->shortcuts[0]->icons.IsEmpty());
+    auto& icons = manifest->shortcuts[0]->icons;
+    EXPECT_EQ(icons.size(), 1u);
+    EXPECT_EQ(icons[0]->src.GetString(), "http://foo.com/foo.jpg");
+    EXPECT_EQ(0u, GetErrorCount());
+  }
+}
 TEST_F(ManifestParserTest, FileHandlerParseRules) {
   // Does not contain file_handlers field.
   {
diff --git a/third_party/blink/renderer/modules/manifest/manifest_type_converters.cc b/third_party/blink/renderer/modules/manifest/manifest_type_converters.cc
index 19c1db94..54496503 100644
--- a/third_party/blink/renderer/modules/manifest/manifest_type_converters.cc
+++ b/third_party/blink/renderer/modules/manifest/manifest_type_converters.cc
@@ -40,6 +40,9 @@
   for (auto& icon : input->icons)
     output.icons.push_back(icon.To<blink::Manifest::ImageResource>());
 
+  for (auto& shortcut : input->shortcuts)
+    output.shortcuts.push_back(shortcut.To<blink::Manifest::ShortcutItem>());
+
   if (!input->share_target.is_null()) {
     output.share_target =
         input->share_target.To<blink::Manifest::ShareTarget>();
@@ -100,6 +103,34 @@
   return output;
 }
 
+blink::Manifest::ShortcutItem
+TypeConverter<blink::Manifest::ShortcutItem,
+              blink::mojom::blink::ManifestShortcutItemPtr>::
+    Convert(const blink::mojom::blink::ManifestShortcutItemPtr& input) {
+  blink::Manifest::ShortcutItem output;
+  if (input.is_null())
+    return output;
+
+  output.name = blink::WebString(input->name).Utf16();
+
+  if (!input->short_name.IsEmpty()) {
+    output.short_name =
+        base::NullableString16(blink::WebString(input->short_name).Utf16());
+  }
+
+  if (!input->description.IsEmpty()) {
+    output.description =
+        base::NullableString16(blink::WebString(input->description).Utf16());
+  }
+
+  output.url = input->url;
+
+  for (auto& icon : input->icons)
+    output.icons.push_back(icon.To<::blink::Manifest::ImageResource>());
+
+  return output;
+}
+
 blink::Manifest::ShareTarget
 TypeConverter<blink::Manifest::ShareTarget,
               blink::mojom::blink::ManifestShareTargetPtr>::
diff --git a/third_party/blink/renderer/modules/manifest/manifest_type_converters.h b/third_party/blink/renderer/modules/manifest/manifest_type_converters.h
index 58cca59..ffb17b0 100644
--- a/third_party/blink/renderer/modules/manifest/manifest_type_converters.h
+++ b/third_party/blink/renderer/modules/manifest/manifest_type_converters.h
@@ -32,6 +32,13 @@
 };
 
 template <>
+struct TypeConverter<blink::Manifest::ShortcutItem,
+                     blink::mojom::blink::ManifestShortcutItemPtr> {
+  static blink::Manifest::ShortcutItem Convert(
+      const blink::mojom::blink::ManifestShortcutItemPtr& input);
+};
+
+template <>
 struct TypeConverter<blink::Manifest::ShareTarget,
                      blink::mojom::blink::ManifestShareTargetPtr> {
   static blink::Manifest::ShareTarget Convert(
diff --git a/third_party/blink/renderer/modules/manifest/manifest_type_converters_unittest.cc b/third_party/blink/renderer/modules/manifest/manifest_type_converters_unittest.cc
index 4d94590a..6bcb873 100644
--- a/third_party/blink/renderer/modules/manifest/manifest_type_converters_unittest.cc
+++ b/third_party/blink/renderer/modules/manifest/manifest_type_converters_unittest.cc
@@ -71,4 +71,44 @@
   EXPECT_TRUE(
       base::EqualsASCII(manifest.file_handlers[0].accept[mime][0], ".png"));
 }
+
+TEST_F(ManifestTypeConvertersTest, NoShortcutsDoesNotConvert) {
+  const String json = "{\"start_url\": \"/\"}";
+  const mojom::blink::ManifestPtr& mojo_manifest = Load(json);
+
+  auto manifest = mojo_manifest.To<blink::Manifest>();
+  EXPECT_TRUE(manifest.shortcuts.empty());
+}
+
+TEST_F(ManifestTypeConvertersTest, BasicShortcutIsCorrectlyConverted) {
+  const mojom::blink::ManifestPtr& mojo_manifest = Load(
+      "{"
+      "  \"shortcuts\": ["
+      "      {"
+      "        \"name\": \"name\", "
+      "        \"short_name\": \"short_name\","
+      "        \"url\": \"url\", "
+      "        \"icons\": ["
+      "            {"
+      "              \"src\": \"image.jpg\""
+      "            }"
+      "          ] "
+      "      }"
+      "    ] "
+      "}");
+
+  auto manifest = mojo_manifest.To<blink::Manifest>();
+  ASSERT_FALSE(manifest.shortcuts.empty());
+
+  ASSERT_EQ(manifest.shortcuts.size(), 1u);
+  EXPECT_TRUE(base::EqualsASCII(manifest.shortcuts[0].name, "name"));
+  EXPECT_TRUE(base::EqualsASCII(manifest.shortcuts[0].short_name.string(),
+                                "short_name"));
+  EXPECT_EQ(manifest.shortcuts[0].url.spec(), "http://example.com/url");
+
+  ASSERT_EQ(manifest.shortcuts[0].icons.size(), 1u);
+  ASSERT_EQ(manifest.shortcuts[0].icons[0].src.spec(),
+            "http://example.com/image.jpg");
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/modules/mediarecorder/blob_event.idl b/third_party/blink/renderer/modules/mediarecorder/blob_event.idl
index 6e778ee..6d0d539 100644
--- a/third_party/blink/renderer/modules/mediarecorder/blob_event.idl
+++ b/third_party/blink/renderer/modules/mediarecorder/blob_event.idl
@@ -5,9 +5,9 @@
 // https://w3c.github.io/mediacapture-record/#blob-event
 
 [
-    Exposed=Window,
-    Constructor(DOMString type, BlobEventInit eventInitDict)
-]  interface BlobEvent : Event {
+    Exposed=Window
+] interface BlobEvent : Event {
+    constructor(DOMString type, BlobEventInit eventInitDict);
     [SameObject] readonly attribute Blob data;
     readonly attribute DOMHighResTimeStamp timecode;
 };
diff --git a/third_party/blink/renderer/modules/mediarecorder/media_recorder.idl b/third_party/blink/renderer/modules/mediarecorder/media_recorder.idl
index 13fb24d6..fdae9ce6 100644
--- a/third_party/blink/renderer/modules/mediarecorder/media_recorder.idl
+++ b/third_party/blink/renderer/modules/mediarecorder/media_recorder.idl
@@ -8,11 +8,9 @@
 
 [
     ActiveScriptWrappable,
-    ConstructorCallWith=ExecutionContext,
-    Constructor(MediaStream stream, optional MediaRecorderOptions options),
-    RaisesException=Constructor,
     Exposed=Window
 ] interface MediaRecorder : EventTarget {
+    [CallWith=ExecutionContext, RaisesException] constructor(MediaStream stream, optional MediaRecorderOptions options);
     readonly attribute MediaStream stream;
     readonly attribute DOMString mimeType;
     readonly attribute RecordingState state;
diff --git a/third_party/blink/renderer/modules/mediarecorder/video_track_recorder.cc b/third_party/blink/renderer/modules/mediarecorder/video_track_recorder.cc
index b9ecb57..cdf987d 100644
--- a/third_party/blink/renderer/modules/mediarecorder/video_track_recorder.cc
+++ b/third_party/blink/renderer/modules/mediarecorder/video_track_recorder.cc
@@ -697,12 +697,16 @@
   }
   state_ = KeyFrameState::kKeyFrameReceivedOK;
 
+  base::Optional<gfx::ColorSpace> color_space;
+  if (encoded_frame->ColorSpace())
+    color_space = encoded_frame->ColorSpace()->ToGfxColorSpace();
   auto span = encoded_frame->Data();
   const char* span_begin = reinterpret_cast<const char*>(span.data());
   std::string data(span_begin, span_begin + span.size());
   media::WebmMuxer::VideoParameters params(encoded_frame->Resolution(),
                                            /*framerate=*/0.0f,
-                                           /*codec=*/encoded_frame->Codec());
+                                           /*codec=*/encoded_frame->Codec(),
+                                           color_space);
   callback_.Run(params, std::move(data), {}, estimated_capture_time,
                 encoded_frame->IsKeyFrame());
 }
diff --git a/third_party/blink/renderer/modules/mediasession/media_metadata.idl b/third_party/blink/renderer/modules/mediasession/media_metadata.idl
index ea374ffd..af5ad294 100644
--- a/third_party/blink/renderer/modules/mediasession/media_metadata.idl
+++ b/third_party/blink/renderer/modules/mediasession/media_metadata.idl
@@ -6,11 +6,9 @@
 
 [
     Exposed=Window,
-    ConstructorCallWith=ScriptState,
-    Constructor(optional MediaMetadataInit metadata),
-    RaisesException=Constructor,
     RuntimeEnabled=MediaSession
 ] interface MediaMetadata {
+    [CallWith=ScriptState, RaisesException] constructor(optional MediaMetadataInit metadata);
     attribute DOMString title;
     attribute DOMString artist;
     attribute DOMString album;
diff --git a/third_party/blink/renderer/modules/mediasource/media_source.idl b/third_party/blink/renderer/modules/mediasource/media_source.idl
index 76a2b9b7..f1fc029a 100644
--- a/third_party/blink/renderer/modules/mediasource/media_source.idl
+++ b/third_party/blink/renderer/modules/mediasource/media_source.idl
@@ -37,10 +37,9 @@
 
 [
     ActiveScriptWrappable,
-    Constructor,
-    ConstructorCallWith=ExecutionContext,
     Exposed(Window MediaSourceStable, DedicatedWorker MediaSourceInWorkers, SharedWorker MediaSourceInWorkers)
 ] interface MediaSource : EventTarget {
+    [CallWith=ExecutionContext] constructor();
     // All the source buffers created by this object.
     readonly attribute SourceBufferList sourceBuffers;
 
diff --git a/third_party/blink/renderer/modules/mediasource/track_default.idl b/third_party/blink/renderer/modules/mediasource/track_default.idl
index 8a8e11a9..29f943f 100644
--- a/third_party/blink/renderer/modules/mediasource/track_default.idl
+++ b/third_party/blink/renderer/modules/mediasource/track_default.idl
@@ -8,10 +8,9 @@
 enum TrackDefaultType { "audio", "video", "text" };
 
 [
-    Constructor(TrackDefaultType type, DOMString language, DOMString label, sequence<DOMString> kinds, optional DOMString byteStreamTrackID = ""),
-    RaisesException=Constructor,
     RuntimeEnabled=MediaSourceExperimental
 ] interface TrackDefault {
+    [RaisesException] constructor(TrackDefaultType type, DOMString language, DOMString label, sequence<DOMString> kinds, optional DOMString byteStreamTrackID = "");
     readonly attribute TrackDefaultType type;
     readonly attribute DOMString byteStreamTrackID;
     readonly attribute DOMString language;
diff --git a/third_party/blink/renderer/modules/mediasource/track_default_list.idl b/third_party/blink/renderer/modules/mediasource/track_default_list.idl
index 9ed5174..380a9dc 100644
--- a/third_party/blink/renderer/modules/mediasource/track_default_list.idl
+++ b/third_party/blink/renderer/modules/mediasource/track_default_list.idl
@@ -6,10 +6,9 @@
 // https://w3c.github.io/media-source/#trackdefaultlist
 
 [
-    Constructor(optional sequence<TrackDefault> trackDefaults = []),
-    RaisesException=Constructor,
     RuntimeEnabled=MediaSourceExperimental
 ] interface TrackDefaultList {
+    [RaisesException] constructor(optional sequence<TrackDefault> trackDefaults = []);
     readonly attribute unsigned long length;
     [ImplementedAs=item] getter TrackDefault (unsigned long index);
 };
diff --git a/third_party/blink/renderer/modules/mediastream/media_stream.idl b/third_party/blink/renderer/modules/mediastream/media_stream.idl
index 2650f43..1e44405e 100644
--- a/third_party/blink/renderer/modules/mediastream/media_stream.idl
+++ b/third_party/blink/renderer/modules/mediastream/media_stream.idl
@@ -27,12 +27,11 @@
 
 [
     Exposed=Window,
-    ActiveScriptWrappable,
-    Constructor,
-    Constructor(MediaStream stream),
-    Constructor(sequence<MediaStreamTrack> tracks),
-    ConstructorCallWith=ExecutionContext
+    ActiveScriptWrappable
 ] interface MediaStream : EventTarget {
+    [CallWith=ExecutionContext] constructor();
+    [CallWith=ExecutionContext] constructor(MediaStream stream);
+    [CallWith=ExecutionContext] constructor(sequence<MediaStreamTrack> tracks);
     readonly attribute DOMString id;
     sequence<MediaStreamTrack> getAudioTracks();
     sequence<MediaStreamTrack> getVideoTracks();
diff --git a/third_party/blink/renderer/modules/mediastream/media_stream_event.idl b/third_party/blink/renderer/modules/mediastream/media_stream_event.idl
index 9f63d4f..aaa8af9 100644
--- a/third_party/blink/renderer/modules/mediastream/media_stream_event.idl
+++ b/third_party/blink/renderer/modules/mediastream/media_stream_event.idl
@@ -27,8 +27,8 @@
 // https://www.w3.org/TR/2015/WD-webrtc-20150210/#mediastreamevent
 
 [
-    Exposed=Window,
-    Constructor(DOMString type, optional MediaStreamEventInit eventInitDict)
+    Exposed=Window
 ] interface MediaStreamEvent : Event {
+    constructor(DOMString type, optional MediaStreamEventInit eventInitDict);
     readonly attribute MediaStream? stream;
 };
diff --git a/third_party/blink/renderer/modules/mediastream/media_stream_track_event.idl b/third_party/blink/renderer/modules/mediastream/media_stream_track_event.idl
index 0d0f447..f2f2350 100644
--- a/third_party/blink/renderer/modules/mediastream/media_stream_track_event.idl
+++ b/third_party/blink/renderer/modules/mediastream/media_stream_track_event.idl
@@ -26,8 +26,8 @@
 // https://w3c.github.io/mediacapture-main/#mediastreamtrackevent
 
 [
-    Exposed=Window,
-    Constructor(DOMString type, MediaStreamTrackEventInit eventInitDict)
+    Exposed=Window
 ] interface MediaStreamTrackEvent : Event {
+  constructor(DOMString type, MediaStreamTrackEventInit eventInitDict);
    [SameObject] readonly attribute MediaStreamTrack track;
 };
diff --git a/third_party/blink/renderer/modules/mediastream/overconstrained_error.idl b/third_party/blink/renderer/modules/mediastream/overconstrained_error.idl
index 328a7686..e9a43800 100644
--- a/third_party/blink/renderer/modules/mediastream/overconstrained_error.idl
+++ b/third_party/blink/renderer/modules/mediastream/overconstrained_error.idl
@@ -6,9 +6,8 @@
 
 // TODO(guidou): OverconstrainedError should be an Error subclass and not an
 // interface. http://crbug.com/769726
-[
-    Constructor(DOMString constraint, DOMString message)
-] interface OverconstrainedError {
+interface OverconstrainedError {
+    constructor(DOMString constraint, DOMString message);
     readonly attribute DOMString name;
     readonly attribute DOMString? message;
     readonly attribute DOMString? constraint;
diff --git a/third_party/blink/renderer/modules/nfc/ndef_message.idl b/third_party/blink/renderer/modules/nfc/ndef_message.idl
index 1fee63b..557c976 100644
--- a/third_party/blink/renderer/modules/nfc/ndef_message.idl
+++ b/third_party/blink/renderer/modules/nfc/ndef_message.idl
@@ -7,10 +7,8 @@
 [
     RuntimeEnabled=WebNFC,
     SecureContext,
-    Constructor(NDEFMessageInit messageInit),
-    ConstructorCallWith=ExecutionContext,
-    RaisesException=Constructor,
     Exposed=Window
 ] interface NDEFMessage {
+    [CallWith=ExecutionContext, RaisesException] constructor(NDEFMessageInit messageInit);
     readonly attribute FrozenArray<NDEFRecord> records;
 };
diff --git a/third_party/blink/renderer/modules/nfc/ndef_reader.idl b/third_party/blink/renderer/modules/nfc/ndef_reader.idl
index 3604095c..280ebf5a 100644
--- a/third_party/blink/renderer/modules/nfc/ndef_reader.idl
+++ b/third_party/blink/renderer/modules/nfc/ndef_reader.idl
@@ -8,10 +8,9 @@
     RuntimeEnabled=WebNFC,
     ActiveScriptWrappable,
     SecureContext,
-    Constructor(),
-    ConstructorCallWith=ExecutionContext,
     Exposed=Window
 ] interface NDEFReader : EventTarget {
+    [CallWith=ExecutionContext] constructor();
     attribute EventHandler onreading;
     attribute EventHandler onerror;
 
diff --git a/third_party/blink/renderer/modules/nfc/ndef_reading_event.idl b/third_party/blink/renderer/modules/nfc/ndef_reading_event.idl
index 61e21cb..84432047 100644
--- a/third_party/blink/renderer/modules/nfc/ndef_reading_event.idl
+++ b/third_party/blink/renderer/modules/nfc/ndef_reading_event.idl
@@ -8,10 +8,9 @@
 [
     RuntimeEnabled=WebNFC,
     SecureContext,
-    Constructor(DOMString type, NDEFReadingEventInit eventInitDict),
-    RaisesException=Constructor,
     Exposed=Window
 ] interface NDEFReadingEvent : Event {
+    [RaisesException] constructor(DOMString type, NDEFReadingEventInit eventInitDict);
     readonly attribute DOMString serialNumber;
     [SameObject] readonly attribute NDEFMessage message;
 };
diff --git a/third_party/blink/renderer/modules/nfc/ndef_record.cc b/third_party/blink/renderer/modules/nfc/ndef_record.cc
index b7a761f..84bba09 100644
--- a/third_party/blink/renderer/modules/nfc/ndef_record.cc
+++ b/third_party/blink/renderer/modules/nfc/ndef_record.cc
@@ -368,6 +368,11 @@
 }
 
 DOMDataView* NDEFRecord::data() const {
+  // Step 4 in https://w3c.github.io/web-nfc/#dfn-parse-an-ndef-record
+  if (record_type_ == "empty") {
+    DCHECK(payload_data_.IsEmpty());
+    return nullptr;
+  }
   DOMArrayBuffer* dom_buffer =
       DOMArrayBuffer::Create(payload_data_.data(), payload_data_.size());
   return DOMDataView::Create(dom_buffer, 0, payload_data_.size());
diff --git a/third_party/blink/renderer/modules/nfc/ndef_record.idl b/third_party/blink/renderer/modules/nfc/ndef_record.idl
index 03e2a95..0d6af2eb 100644
--- a/third_party/blink/renderer/modules/nfc/ndef_record.idl
+++ b/third_party/blink/renderer/modules/nfc/ndef_record.idl
@@ -7,11 +7,9 @@
 [
     RuntimeEnabled=WebNFC,
     SecureContext,
-    Constructor(NDEFRecordInit recordInit),
-    ConstructorCallWith=ExecutionContext,
-    RaisesException=Constructor,
     Exposed=Window
 ] interface NDEFRecord {
+    [CallWith=ExecutionContext, RaisesException] constructor(NDEFRecordInit recordInit);
     readonly attribute USVString recordType;
     readonly attribute USVString? mediaType;
     readonly attribute USVString? id;
diff --git a/third_party/blink/renderer/modules/nfc/ndef_writer.idl b/third_party/blink/renderer/modules/nfc/ndef_writer.idl
index 9508caa..aa28957 100644
--- a/third_party/blink/renderer/modules/nfc/ndef_writer.idl
+++ b/third_party/blink/renderer/modules/nfc/ndef_writer.idl
@@ -15,10 +15,9 @@
 [
     RuntimeEnabled=WebNFC,
     SecureContext,
-    Constructor(),
-    ConstructorCallWith=ExecutionContext,
     Exposed=Window
 ] interface NDEFWriter {
+    [CallWith=ExecutionContext] constructor();
     [CallWith=ScriptState, RaisesException] Promise<void> push(
         NDEFMessageSource message,
         optional NDEFPushOptions options={});
diff --git a/third_party/blink/renderer/modules/notifications/notification.idl b/third_party/blink/renderer/modules/notifications/notification.idl
index 6d358f68..ef759ae 100644
--- a/third_party/blink/renderer/modules/notifications/notification.idl
+++ b/third_party/blink/renderer/modules/notifications/notification.idl
@@ -41,13 +41,11 @@
 
 [
     ActiveScriptWrappable,
-    ConstructorCallWith=ExecutionContext,
-    Constructor(DOMString title, optional NotificationOptions options),
     Exposed=(Window,Worker),
     MeasureAs=NotificationCreated,
-    RaisesException=Constructor,
     RuntimeEnabled=Notifications
 ] interface Notification : EventTarget {
+    [CallWith=ExecutionContext, RaisesException] constructor(DOMString title, optional NotificationOptions options);
     [CallWith=ExecutionContext, MeasureAs=NotificationPermission] static readonly attribute NotificationPermission permission;
 
     // TODO(crbug.com/841185): |deprecatedCallback| is not nullable in the spec.
diff --git a/third_party/blink/renderer/modules/notifications/notification_event.idl b/third_party/blink/renderer/modules/notifications/notification_event.idl
index 89ded1ac..768a5c5 100644
--- a/third_party/blink/renderer/modules/notifications/notification_event.idl
+++ b/third_party/blink/renderer/modules/notifications/notification_event.idl
@@ -5,10 +5,10 @@
 // https://notifications.spec.whatwg.org/#service-worker-api
 
 [
-    Constructor(DOMString type, NotificationEventInit eventInitDict),
     Exposed=ServiceWorker,
     RuntimeEnabled=Notifications
 ] interface NotificationEvent : ExtendableEvent {
+    constructor(DOMString type, NotificationEventInit eventInitDict);
     [ImplementedAs=getNotification] readonly attribute Notification notification;
     readonly attribute DOMString action;
     readonly attribute DOMString? reply;
diff --git a/third_party/blink/renderer/modules/notifications/timestamp_trigger.idl b/third_party/blink/renderer/modules/notifications/timestamp_trigger.idl
index a648e571..c8aa8c8 100644
--- a/third_party/blink/renderer/modules/notifications/timestamp_trigger.idl
+++ b/third_party/blink/renderer/modules/notifications/timestamp_trigger.idl
@@ -5,9 +5,9 @@
 // Explainer: https://github.com/beverloo/notification-triggers
 
 [
-    Constructor(DOMTimeStamp timestamp),
     Exposed=(Window,Worker),
     RuntimeEnabled=NotificationTriggers
 ] interface TimestampTrigger {
+    constructor(DOMTimeStamp timestamp);
     readonly attribute DOMTimeStamp timestamp;
 };
diff --git a/third_party/blink/renderer/modules/payments/abort_payment_event.idl b/third_party/blink/renderer/modules/payments/abort_payment_event.idl
index e1cd327f9..0bb4311e 100644
--- a/third_party/blink/renderer/modules/payments/abort_payment_event.idl
+++ b/third_party/blink/renderer/modules/payments/abort_payment_event.idl
@@ -6,8 +6,8 @@
 
 [
     RuntimeEnabled=PaymentApp,
-    Constructor(DOMString type, ExtendableEventInit eventInitDict),
     Exposed=ServiceWorker
 ] interface AbortPaymentEvent : ExtendableEvent {
+    constructor(DOMString type, ExtendableEventInit eventInitDict);
     [CallWith=ScriptState, RaisesException] void respondWith(Promise<boolean> paymentAbortedResponse);
 };
diff --git a/third_party/blink/renderer/modules/payments/can_make_payment_event.idl b/third_party/blink/renderer/modules/payments/can_make_payment_event.idl
index b56ea70..7e298b3 100644
--- a/third_party/blink/renderer/modules/payments/can_make_payment_event.idl
+++ b/third_party/blink/renderer/modules/payments/can_make_payment_event.idl
@@ -6,9 +6,9 @@
 
 [
     RuntimeEnabled=PaymentApp,
-    Constructor(DOMString type, CanMakePaymentEventInit eventInitDict),
     Exposed=ServiceWorker
 ] interface CanMakePaymentEvent : ExtendableEvent {
+    constructor(DOMString type, CanMakePaymentEventInit eventInitDict);
     readonly attribute USVString topOrigin;
     readonly attribute USVString paymentRequestOrigin;
     readonly attribute FrozenArray<PaymentMethodData> methodData;
diff --git a/third_party/blink/renderer/modules/payments/merchant_validation_event.idl b/third_party/blink/renderer/modules/payments/merchant_validation_event.idl
index df9f1f3..03f3536 100644
--- a/third_party/blink/renderer/modules/payments/merchant_validation_event.idl
+++ b/third_party/blink/renderer/modules/payments/merchant_validation_event.idl
@@ -6,12 +6,10 @@
 // https://crbug.com/867904
 [
     RuntimeEnabled=PaymentRequestMerchantValidationEvent,
-    Constructor(DOMString type, optional MerchantValidationEventInit eventInitDict),
-    ConstructorCallWith=ScriptState,
-    RaisesException=Constructor,
     SecureContext,
     Exposed=Window
 ] interface MerchantValidationEvent : Event {
+  [CallWith=ScriptState, RaisesException] constructor(DOMString type, optional MerchantValidationEventInit eventInitDict);
   readonly attribute DOMString methodName;
   readonly attribute USVString validationURL;
   [CallWith=ScriptState,RaisesException] void complete(Promise<any> merchantSessionPromise);
diff --git a/third_party/blink/renderer/modules/payments/payment_method_change_event.idl b/third_party/blink/renderer/modules/payments/payment_method_change_event.idl
index 98e6d845..cd5d2e7 100644
--- a/third_party/blink/renderer/modules/payments/payment_method_change_event.idl
+++ b/third_party/blink/renderer/modules/payments/payment_method_change_event.idl
@@ -6,11 +6,10 @@
 
 [
     RuntimeEnabled=PaymentMethodChangeEvent,
-    ConstructorCallWith=ScriptState,
-    Constructor(DOMString type, optional PaymentMethodChangeEventInit eventInitDict),
     SecureContext,
     Exposed=Window
 ] interface PaymentMethodChangeEvent : PaymentRequestUpdateEvent {
+    [CallWith=ScriptState] constructor(DOMString type, optional PaymentMethodChangeEventInit eventInitDict);
     readonly attribute DOMString methodName;
     [CallWith=ScriptState] readonly attribute object? methodDetails;
 };
diff --git a/third_party/blink/renderer/modules/payments/payment_request.idl b/third_party/blink/renderer/modules/payments/payment_request.idl
index db41760..2995fd0 100644
--- a/third_party/blink/renderer/modules/payments/payment_request.idl
+++ b/third_party/blink/renderer/modules/payments/payment_request.idl
@@ -7,13 +7,11 @@
 
 [
     RuntimeEnabled=PaymentRequest,
-    Constructor(sequence<PaymentMethodData> methodData, PaymentDetailsInit details, optional PaymentOptions options),
-    ConstructorCallWith=ExecutionContext,
-    RaisesException=Constructor,
     SecureContext,
     Exposed=Window,
     ActiveScriptWrappable
 ] interface PaymentRequest : EventTarget {
+    [CallWith=ExecutionContext, RaisesException] constructor(sequence<PaymentMethodData> methodData, PaymentDetailsInit details, optional PaymentOptions options);
     [CallWith=ScriptState, NewObject] Promise<PaymentResponse> show(optional Promise<PaymentDetailsUpdate> detailsPromise);
     [CallWith=ScriptState, NewObject] Promise<void> abort();
     [CallWith=ScriptState, HighEntropy, Measure, NewObject] Promise<boolean> canMakePayment();
diff --git a/third_party/blink/renderer/modules/payments/payment_request_event.idl b/third_party/blink/renderer/modules/payments/payment_request_event.idl
index 21608ee..c963616 100644
--- a/third_party/blink/renderer/modules/payments/payment_request_event.idl
+++ b/third_party/blink/renderer/modules/payments/payment_request_event.idl
@@ -6,9 +6,9 @@
 
 [
     RuntimeEnabled=PaymentApp,
-    Constructor(DOMString type, PaymentRequestEventInit eventInitDict),
     Exposed=ServiceWorker
 ] interface PaymentRequestEvent : ExtendableEvent {
+    constructor(DOMString type, PaymentRequestEventInit eventInitDict);
     readonly attribute USVString topOrigin;
     readonly attribute USVString paymentRequestOrigin;
     readonly attribute DOMString paymentRequestId;
diff --git a/third_party/blink/renderer/modules/payments/payment_request_update_event.idl b/third_party/blink/renderer/modules/payments/payment_request_update_event.idl
index 90e0ad43..fad0b941 100644
--- a/third_party/blink/renderer/modules/payments/payment_request_update_event.idl
+++ b/third_party/blink/renderer/modules/payments/payment_request_update_event.idl
@@ -6,9 +6,8 @@
 
 [
     RuntimeEnabled=PaymentRequest,
-    Constructor(DOMString type, optional PaymentRequestUpdateEventInit eventInitDict),
-    ConstructorCallWith=ExecutionContext,
     Exposed=Window
 ] interface PaymentRequestUpdateEvent : Event {
+    [CallWith=ExecutionContext] constructor(DOMString type, optional PaymentRequestUpdateEventInit eventInitDict);
     [CallWith=ScriptState,RaisesException] void updateWith(Promise<PaymentDetailsUpdate> detailsPromise);
 };
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_data_channel_event.idl b/third_party/blink/renderer/modules/peerconnection/rtc_data_channel_event.idl
index 163432e0..4851e332 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_data_channel_event.idl
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_data_channel_event.idl
@@ -26,8 +26,8 @@
 // https://w3c.github.io/webrtc-pc/#rtcdatachannelevent
 
 [
-    Constructor(DOMString type, RTCDataChannelEventInit eventInitDict),
     Exposed=Window
 ] interface RTCDataChannelEvent : Event {
+    constructor(DOMString type, RTCDataChannelEventInit eventInitDict);
     readonly attribute RTCDataChannel channel;
 };
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_dtmf_tone_change_event.idl b/third_party/blink/renderer/modules/peerconnection/rtc_dtmf_tone_change_event.idl
index 69a67ae..9323e54e 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_dtmf_tone_change_event.idl
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_dtmf_tone_change_event.idl
@@ -26,8 +26,8 @@
 // https://w3c.github.io/webrtc-pc/#rtcdtmftonechangeevent
 
 [
-    Exposed=Window,
-    Constructor(DOMString type, RTCDTMFToneChangeEventInit eventInitDict)
+    Exposed=Window
 ] interface RTCDTMFToneChangeEvent : Event {
+    constructor(DOMString type, RTCDTMFToneChangeEventInit eventInitDict);
     readonly attribute DOMString tone;
 };
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_error.idl b/third_party/blink/renderer/modules/peerconnection/rtc_error.idl
index 27bb63f4..9c0e624f 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_error.idl
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_error.idl
@@ -23,9 +23,9 @@
 
 // https://w3c.github.io/webrtc-pc/#dfn-rtcerror
 [
-    Exposed=Window,
-    Constructor(RTCErrorInit init, optional DOMString message = "")
+    Exposed=Window
 ] interface RTCError : DOMException {
+    constructor(RTCErrorInit init, optional DOMString message = "");
     readonly attribute RTCErrorDetailType errorDetail;
     readonly attribute long? sdpLineNumber;
     readonly attribute long? httpRequestStatusCode;
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_error_event.idl b/third_party/blink/renderer/modules/peerconnection/rtc_error_event.idl
index 8ef88d0a..833520e 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_error_event.idl
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_error_event.idl
@@ -4,8 +4,8 @@
 
 // https://w3c.github.io/webrtc-pc/#dom-rtcerrorevent
 [
-    Exposed=Window,
-    Constructor(DOMString type, RTCErrorEventInit eventInitDict)
+    Exposed=Window
 ] interface RTCErrorEvent : Event {
+    constructor(DOMString type, RTCErrorEventInit eventInitDict);
     readonly attribute RTCError error;
 };
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_ice_candidate.idl b/third_party/blink/renderer/modules/peerconnection/rtc_ice_candidate.idl
index cbe411b5..9a64eb7 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_ice_candidate.idl
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_ice_candidate.idl
@@ -57,11 +57,9 @@
 
 // https://w3c.github.io/webrtc-pc/#rtcicecandidate-interface
 [
-    Constructor(optional RTCIceCandidateInit candidateInitDict),
-    ConstructorCallWith=ExecutionContext,
-    RaisesException=Constructor,
     Exposed=Window
 ] interface RTCIceCandidate {
+    [CallWith=ExecutionContext, RaisesException] constructor(optional RTCIceCandidateInit candidateInitDict);
     readonly attribute DOMString candidate;
     readonly attribute DOMString? sdpMid;
     readonly attribute unsigned short? sdpMLineIndex;
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_ice_transport.idl b/third_party/blink/renderer/modules/peerconnection/rtc_ice_transport.idl
index 6a14989..31f6708 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_ice_transport.idl
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_ice_transport.idl
@@ -29,13 +29,12 @@
 // https://w3c.github.io/webrtc-pc/#rtcicetransport
 [
    ActiveScriptWrappable,
-   // Constructor from https://w3c.github.io/webrtc-ice/#rtcicetransport*
-   Constructor(),
-   ConstructorCallWith=ExecutionContext,
    Exposed=Window,
    Measure,
    SecureContext
 ] interface RTCIceTransport : EventTarget {
+    // Constructor from https://w3c.github.io/webrtc-ice/#rtcicetransport*
+    [CallWith=ExecutionContext] constructor();
     // TODO(github.com/w3c/webrtc-ice/issues/4): role is non-null in the
     // WebRTC-PC specification.
     [Measure] readonly attribute RTCIceRole? role;
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.idl b/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.idl
index 8903fb56..eac3860e 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.idl
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.idl
@@ -64,12 +64,10 @@
 //  * Dictionary -> specific dictionary types like RTCConfiguration
 [
     ActiveScriptWrappable,
-    // TODO(guidou): There should only be one constructor argument.
-    Constructor(optional RTCConfiguration configuration, optional Dictionary mediaConstraints),
-    ConstructorCallWith=ExecutionContext,
-    RaisesException=Constructor,
     Exposed=Window
 ] interface RTCPeerConnection : EventTarget {
+    // TODO(guidou): There should only be one constructor argument.
+    [CallWith=ExecutionContext, RaisesException] constructor(optional RTCConfiguration configuration, optional Dictionary mediaConstraints);
     [CallWith=ScriptState, RaisesException] Promise<RTCSessionDescription> createOffer(optional RTCOfferOptions options);
     [CallWith=ScriptState, RaisesException] Promise<RTCSessionDescription> createAnswer(optional RTCAnswerOptions options);
     [CallWith=ScriptState, RaisesException] Promise<void> setLocalDescription(optional RTCSessionDescriptionInit description = {});
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_ice_error_event.idl b/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_ice_error_event.idl
index f9adca4..f728b65 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_ice_error_event.idl
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_ice_error_event.idl
@@ -5,9 +5,9 @@
 //https://w3c.github.io/webrtc-pc/#rtcpeerconnectioniceerrorevent
 
 [
-    Constructor (DOMString type, RTCPeerConnectionIceErrorEventInit eventInitDict),
     Exposed=Window
 ] interface RTCPeerConnectionIceErrorEvent : Event {
+  constructor (DOMString type, RTCPeerConnectionIceErrorEventInit eventInitDict);
   readonly attribute DOMString hostCandidate;
   readonly attribute DOMString url;
   readonly attribute unsigned short errorCode;
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_ice_event.idl b/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_ice_event.idl
index 6fde12e..774cd274 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_ice_event.idl
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_ice_event.idl
@@ -24,9 +24,9 @@
  */
 
 [
-    Constructor(DOMString type, optional RTCPeerConnectionIceEventInit eventInitDict),
     Exposed=Window
 ] interface RTCPeerConnectionIceEvent : Event {
+    constructor(DOMString type, optional RTCPeerConnectionIceEventInit eventInitDict);
     readonly attribute RTCIceCandidate? candidate;
     // TODO(loonybear): add nullable url attribute here:
     // https://rawgit.com/w3c/webrtc-pc/master/webrtc.html#rtcpeerconnectioniceevent
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_quic_stream_event.idl b/third_party/blink/renderer/modules/peerconnection/rtc_quic_stream_event.idl
index ced237c..6f3f948 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_quic_stream_event.idl
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_quic_stream_event.idl
@@ -5,8 +5,8 @@
 // https://w3c.github.io/webrtc-quic/#rtcquicstreamevent
 [
    RuntimeEnabled=RTCQuicTransport,
-   Constructor(DOMString type, optional RTCQuicStreamEventInit eventInitDict),
    Exposed=Window
 ] interface RTCQuicStreamEvent : Event {
+    constructor(DOMString type, optional RTCQuicStreamEventInit eventInitDict);
     readonly attribute RTCQuicStream stream;
 };
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_quic_transport.idl b/third_party/blink/renderer/modules/peerconnection/rtc_quic_transport.idl
index bd4055a..48da5c5d 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_quic_transport.idl
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_quic_transport.idl
@@ -13,14 +13,12 @@
 
 // https://w3c.github.io/webrtc-quic/#quic-transport*
 [
-   Constructor(RTCIceTransport transport),
-   ConstructorCallWith=ExecutionContext,
-   RaisesException=Constructor,
    Exposed=Window,
    Measure,
    RuntimeEnabled=RTCQuicTransport,
    SecureContext
 ] interface RTCQuicTransport : EventTarget {
+    [CallWith=ExecutionContext, RaisesException] constructor(RTCIceTransport transport);
     [Measure] readonly attribute RTCIceTransport transport;
     [Measure] readonly attribute RTCQuicTransportState state;
     [Measure] readonly attribute unsigned short? maxDatagramLength;
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_session_description.idl b/third_party/blink/renderer/modules/peerconnection/rtc_session_description.idl
index 425dc9a..9bc34939 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_session_description.idl
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_session_description.idl
@@ -38,10 +38,9 @@
 };
 
 [
-    Constructor(optional RTCSessionDescriptionInit descriptionInitDict),
-    ConstructorCallWith=ExecutionContext,
     Exposed=Window
 ] interface RTCSessionDescription {
+    [CallWith=ExecutionContext] constructor(optional RTCSessionDescriptionInit descriptionInitDict);
     // TODO(foolip): |type| and |sdp| should be readonly and not nullable.
     // https://crbug.com/662898
     [Measure] attribute RTCSdpType? type;
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_track_event.idl b/third_party/blink/renderer/modules/peerconnection/rtc_track_event.idl
index 5c55b025..eaefdc2 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_track_event.idl
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_track_event.idl
@@ -4,9 +4,9 @@
 
 // https://w3c.github.io/webrtc-pc/#rtctrackevent
 [
-    Constructor(DOMString type, RTCTrackEventInit eventInitDict),
     Exposed=Window
 ] interface RTCTrackEvent : Event {
+    constructor(DOMString type, RTCTrackEventInit eventInitDict);
     readonly attribute RTCRtpReceiver           receiver;
     readonly attribute MediaStreamTrack         track;
     [SameObject]
diff --git a/third_party/blink/renderer/modules/picture_in_picture/enter_picture_in_picture_event.idl b/third_party/blink/renderer/modules/picture_in_picture/enter_picture_in_picture_event.idl
index a10341a..2c8aad0 100644
--- a/third_party/blink/renderer/modules/picture_in_picture/enter_picture_in_picture_event.idl
+++ b/third_party/blink/renderer/modules/picture_in_picture/enter_picture_in_picture_event.idl
@@ -5,10 +5,9 @@
 // https://wicg.github.io/picture-in-picture/#enterpictureinpictureevent
 [
     RuntimeEnabled=PictureInPictureAPI,
-    Constructor(DOMString type, EnterPictureInPictureEventInit eventInitDict),
     Exposed=Window
-]
-interface EnterPictureInPictureEvent : Event {
+] interface EnterPictureInPictureEvent : Event {
+    constructor(DOMString type, EnterPictureInPictureEventInit eventInitDict);
     [SameObject] readonly attribute PictureInPictureWindow pictureInPictureWindow;
 };
 
diff --git a/third_party/blink/renderer/modules/presentation/presentation_connection_available_event.idl b/third_party/blink/renderer/modules/presentation/presentation_connection_available_event.idl
index a692f43..4a153f5 100644
--- a/third_party/blink/renderer/modules/presentation/presentation_connection_available_event.idl
+++ b/third_party/blink/renderer/modules/presentation/presentation_connection_available_event.idl
@@ -5,10 +5,10 @@
 // https://w3c.github.io/presentation-api/#interface-presentationconnectionavailableeevent
 
 [
-    Constructor(DOMString type, PresentationConnectionAvailableEventInit eventInitDict),
     RuntimeEnabled=Presentation,
     SecureContext,
     Exposed=Window
 ] interface PresentationConnectionAvailableEvent : Event {
+    constructor(DOMString type, PresentationConnectionAvailableEventInit eventInitDict);
     [SameObject] readonly attribute PresentationConnection connection;
 };
diff --git a/third_party/blink/renderer/modules/presentation/presentation_connection_close_event.idl b/third_party/blink/renderer/modules/presentation/presentation_connection_close_event.idl
index c89e56c..11eda2ed2 100644
--- a/third_party/blink/renderer/modules/presentation/presentation_connection_close_event.idl
+++ b/third_party/blink/renderer/modules/presentation/presentation_connection_close_event.idl
@@ -7,11 +7,11 @@
 enum PresentationConnectionCloseReason { "error", "closed", "wentaway" };
 
 [
-    Constructor(DOMString type, PresentationConnectionCloseEventInit eventInitDict),
     RuntimeEnabled=Presentation,
     SecureContext,
     Exposed=Window
 ] interface PresentationConnectionCloseEvent : Event {
+    constructor(DOMString type, PresentationConnectionCloseEventInit eventInitDict);
     readonly attribute PresentationConnectionCloseReason reason;
     readonly attribute DOMString message;
 };
diff --git a/third_party/blink/renderer/modules/presentation/presentation_request.idl b/third_party/blink/renderer/modules/presentation/presentation_request.idl
index 8229919..15e744a 100644
--- a/third_party/blink/renderer/modules/presentation/presentation_request.idl
+++ b/third_party/blink/renderer/modules/presentation/presentation_request.idl
@@ -6,15 +6,13 @@
 
 [
     ActiveScriptWrappable,
-    ConstructorCallWith=ExecutionContext,
-    Constructor(USVString url),
-    Constructor(sequence<USVString> urls),
     MeasureAs=PresentationRequestConstructor,
-    RaisesException=Constructor,
     RuntimeEnabled=Presentation,
     SecureContext,
     Exposed=Window
 ] interface PresentationRequest : EventTarget {
+    [CallWith=ExecutionContext, RaisesException] constructor(USVString url);
+    [CallWith=ExecutionContext, RaisesException] constructor(sequence<USVString> urls);
     [CallWith=ScriptState, MeasureAs=PresentationRequestStart] Promise<PresentationConnection> start();
     [CallWith=ScriptState, MeasureAs=PresentationRequestReconnect] Promise<PresentationConnection> reconnect(DOMString id);
     [CallWith=ScriptState, MeasureAs=PresentationRequestGetAvailability] Promise<PresentationAvailability> getAvailability();
diff --git a/third_party/blink/renderer/modules/push_messaging/push_event.idl b/third_party/blink/renderer/modules/push_messaging/push_event.idl
index 1b24a322..692ddb2 100644
--- a/third_party/blink/renderer/modules/push_messaging/push_event.idl
+++ b/third_party/blink/renderer/modules/push_messaging/push_event.idl
@@ -5,9 +5,9 @@
 // https://w3c.github.io/push-api/#pushevent-interface
 
 [
-    Constructor(DOMString type, optional PushEventInit eventInitDict),
     Exposed=ServiceWorker,
     RuntimeEnabled=PushMessaging
 ] interface PushEvent : ExtendableEvent {
+    constructor(DOMString type, optional PushEventInit eventInitDict);
     readonly attribute PushMessageData? data;
 };
diff --git a/third_party/blink/renderer/modules/push_messaging/push_subscription_change_event.idl b/third_party/blink/renderer/modules/push_messaging/push_subscription_change_event.idl
index 0c64c45..99fad82 100644
--- a/third_party/blink/renderer/modules/push_messaging/push_subscription_change_event.idl
+++ b/third_party/blink/renderer/modules/push_messaging/push_subscription_change_event.idl
@@ -5,10 +5,10 @@
 // https://w3c.github.io/push-api/#pushsubscriptionchangeevent-interface
 
 [
-    Constructor(DOMString type, optional PushSubscriptionChangeEventInit eventInitDict),
     Exposed=ServiceWorker,
     RuntimeEnabled=PushMessagingSubscriptionChange
 ] interface PushSubscriptionChangeEvent : ExtendableEvent {
+  constructor(DOMString type, optional PushSubscriptionChangeEventInit eventInitDict);
   readonly attribute PushSubscription? newSubscription;
   readonly attribute PushSubscription? oldSubscription;
 };
\ No newline at end of file
diff --git a/third_party/blink/renderer/modules/quota/dom_error.idl b/third_party/blink/renderer/modules/quota/dom_error.idl
index cd62ea7..9029bb2 100644
--- a/third_party/blink/renderer/modules/quota/dom_error.idl
+++ b/third_party/blink/renderer/modules/quota/dom_error.idl
@@ -30,9 +30,9 @@
 
 // FIXME: DOMError has been removed from the spec. crbug.com/460725
 [
-    Constructor(DOMString name, optional DOMString message = null),
     Measure
 ] interface DOMError {
+    constructor(DOMString name, optional DOMString message);
     [Measure] readonly attribute DOMString name;
     [Measure] readonly attribute DOMString message;
 };
diff --git a/third_party/blink/renderer/modules/scheduler/task_controller.idl b/third_party/blink/renderer/modules/scheduler/task_controller.idl
index bfa247c2..f2e27e3 100644
--- a/third_party/blink/renderer/modules/scheduler/task_controller.idl
+++ b/third_party/blink/renderer/modules/scheduler/task_controller.idl
@@ -6,11 +6,10 @@
 // https://docs.google.com/document/d/1xU7HyNsEsbXhTgt0ZnXDbeSXm5-m5FzkLJAT6LTizEI/edit#
 
 [
-    Constructor(optional TaskPriority priority = "default"),
-    ConstructorCallWith=Document,
     ImplementedAs=DOMTaskController,
     RuntimeEnabled=WebScheduler
 ] interface TaskController : AbortController {
+    [CallWith=Document] constructor(optional TaskPriority priority = "default");
     void setPriority(TaskPriority priority);
 };
 
diff --git a/third_party/blink/renderer/modules/sensor/absolute_orientation_sensor.idl b/third_party/blink/renderer/modules/sensor/absolute_orientation_sensor.idl
index 3f6765b..d68236b 100644
--- a/third_party/blink/renderer/modules/sensor/absolute_orientation_sensor.idl
+++ b/third_party/blink/renderer/modules/sensor/absolute_orientation_sensor.idl
@@ -6,11 +6,9 @@
 // https://w3c.github.io/orientation-sensor/#absoluteorientationsensor-interface
 
 [
-    Constructor(optional SpatialSensorOptions sensorOptions),
-    ConstructorCallWith=ExecutionContext,
     SecureContext,
-    RaisesException=Constructor,
     MeasureAs=AbsoluteOrientationSensorConstructor,
     Exposed=Window
 ] interface AbsoluteOrientationSensor : OrientationSensor {
+  [CallWith=ExecutionContext, RaisesException] constructor(optional SpatialSensorOptions sensorOptions);
 };
diff --git a/third_party/blink/renderer/modules/sensor/accelerometer.idl b/third_party/blink/renderer/modules/sensor/accelerometer.idl
index 0f09759e69..e2f40f2 100644
--- a/third_party/blink/renderer/modules/sensor/accelerometer.idl
+++ b/third_party/blink/renderer/modules/sensor/accelerometer.idl
@@ -6,13 +6,11 @@
 // https://w3c.github.io/accelerometer/#accelerometer-interface
 
 [
-    Constructor(optional SpatialSensorOptions sensorOptions),
-    ConstructorCallWith=ExecutionContext,
     SecureContext,
-    RaisesException=Constructor,
     MeasureAs=AccelerometerConstructor,
     Exposed=Window
 ] interface Accelerometer : Sensor {
+    [CallWith=ExecutionContext, RaisesException] constructor(optional SpatialSensorOptions sensorOptions);
     readonly attribute unrestricted double? x;
     readonly attribute unrestricted double? y;
     readonly attribute unrestricted double? z;
diff --git a/third_party/blink/renderer/modules/sensor/ambient_light_sensor.idl b/third_party/blink/renderer/modules/sensor/ambient_light_sensor.idl
index 4de8aff..3cb8c02 100644
--- a/third_party/blink/renderer/modules/sensor/ambient_light_sensor.idl
+++ b/third_party/blink/renderer/modules/sensor/ambient_light_sensor.idl
@@ -7,12 +7,10 @@
 
 [
     RuntimeEnabled=SensorExtraClasses,
-    Constructor(optional SensorOptions sensorOptions),
-    ConstructorCallWith=ExecutionContext,
     SecureContext,
-    RaisesException=Constructor,
     MeasureAs=AmbientLightSensorConstructor,
     Exposed=Window
 ] interface AmbientLightSensor : Sensor {
+    [CallWith=ExecutionContext, RaisesException] constructor(optional SensorOptions sensorOptions);
     readonly attribute unrestricted double? illuminance;
 };
diff --git a/third_party/blink/renderer/modules/sensor/gyroscope.idl b/third_party/blink/renderer/modules/sensor/gyroscope.idl
index 98f3291..3a60305 100644
--- a/third_party/blink/renderer/modules/sensor/gyroscope.idl
+++ b/third_party/blink/renderer/modules/sensor/gyroscope.idl
@@ -6,13 +6,11 @@
 // https://w3c.github.io/gyroscope/#gyroscope-interface
 
 [
-    Constructor(optional SpatialSensorOptions sensorOptions),
-    ConstructorCallWith=ExecutionContext,
-    RaisesException=Constructor,
     SecureContext,
     Exposed=Window,
     MeasureAs=GyroscopeConstructor
 ] interface Gyroscope : Sensor {
+    [CallWith=ExecutionContext, RaisesException] constructor(optional SpatialSensorOptions sensorOptions);
     readonly attribute unrestricted double? x;
     readonly attribute unrestricted double? y;
     readonly attribute unrestricted double? z;
diff --git a/third_party/blink/renderer/modules/sensor/linear_acceleration_sensor.idl b/third_party/blink/renderer/modules/sensor/linear_acceleration_sensor.idl
index feb72964..5a8e873 100644
--- a/third_party/blink/renderer/modules/sensor/linear_acceleration_sensor.idl
+++ b/third_party/blink/renderer/modules/sensor/linear_acceleration_sensor.idl
@@ -6,11 +6,9 @@
 // https://w3c.github.io/accelerometer/#linearaccelerationsensor
 
 [
-    Constructor(optional SpatialSensorOptions sensorOptions),
-    ConstructorCallWith=ExecutionContext,
     SecureContext,
-    RaisesException=Constructor,
     MeasureAs=LinearAccelerationSensorConstructor,
     Exposed=Window
 ] interface LinearAccelerationSensor : Accelerometer {
+  [CallWith=ExecutionContext, RaisesException] constructor(optional SpatialSensorOptions sensorOptions);
 };
diff --git a/third_party/blink/renderer/modules/sensor/magnetometer.idl b/third_party/blink/renderer/modules/sensor/magnetometer.idl
index 6edcbc7a..6f7d551 100644
--- a/third_party/blink/renderer/modules/sensor/magnetometer.idl
+++ b/third_party/blink/renderer/modules/sensor/magnetometer.idl
@@ -8,12 +8,10 @@
 [
     Exposed=Window,
     RuntimeEnabled=SensorExtraClasses,
-    Constructor(optional SpatialSensorOptions sensorOptions),
-    ConstructorCallWith=ExecutionContext,
     SecureContext,
-    RaisesException=Constructor,
     MeasureAs=MagnetometerConstructor
 ] interface Magnetometer : Sensor {
+    [CallWith=ExecutionContext, RaisesException] constructor(optional SpatialSensorOptions sensorOptions);
     readonly attribute unrestricted double? x;
     readonly attribute unrestricted double? y;
     readonly attribute unrestricted double? z;
diff --git a/third_party/blink/renderer/modules/sensor/relative_orientation_sensor.idl b/third_party/blink/renderer/modules/sensor/relative_orientation_sensor.idl
index c728fc8..49e9ead 100644
--- a/third_party/blink/renderer/modules/sensor/relative_orientation_sensor.idl
+++ b/third_party/blink/renderer/modules/sensor/relative_orientation_sensor.idl
@@ -6,11 +6,9 @@
 // https://w3c.github.io/orientation-sensor/#relativeorientationsensor-interface
 
 [
-    Constructor(optional SpatialSensorOptions sensorOptions),
-    ConstructorCallWith=ExecutionContext,
     SecureContext,
-    RaisesException=Constructor,
     MeasureAs=RelativeOrientationSensorConstructor,
     Exposed=Window
 ] interface RelativeOrientationSensor : OrientationSensor {
+  [CallWith=ExecutionContext, RaisesException] constructor(optional SpatialSensorOptions sensorOptions);
 };
diff --git a/third_party/blink/renderer/modules/sensor/sensor_error_event.idl b/third_party/blink/renderer/modules/sensor/sensor_error_event.idl
index 916f436..042cc7b 100644
--- a/third_party/blink/renderer/modules/sensor/sensor_error_event.idl
+++ b/third_party/blink/renderer/modules/sensor/sensor_error_event.idl
@@ -7,8 +7,8 @@
 
 [
     SecureContext,
-    Constructor(DOMString type, SensorErrorEventInit eventInitDict),
     Exposed=Window
 ] interface SensorErrorEvent : Event {
+    constructor(DOMString type, SensorErrorEventInit eventInitDict);
     readonly attribute DOMException error;
 };
diff --git a/third_party/blink/renderer/modules/service_worker/extendable_message_event.idl b/third_party/blink/renderer/modules/service_worker/extendable_message_event.idl
index a508c35..7e4f02f5 100644
--- a/third_party/blink/renderer/modules/service_worker/extendable_message_event.idl
+++ b/third_party/blink/renderer/modules/service_worker/extendable_message_event.idl
@@ -5,13 +5,13 @@
 // https://w3c.github.io/ServiceWorker/#extendablemessageevent-interface
 
 [
-    // TODO(bashi): Stop using CustomConstructor once we solve reference
-    // circulation between Blink and V8. http://crbug.com/501866
-    // Constructor should be:
-    // Constructor(DOMString type, optional ExtendableMessageEventInit eventInitDict),
-    CustomConstructor,
     Exposed=ServiceWorker
 ] interface ExtendableMessageEvent : ExtendableEvent {
+    // TODO(bashi): Stop using custom constructor once we solve reference
+    // circulation between Blink and V8. https://crbug.com/501866
+    // Constructor should be:
+    // constructor(DOMString type, optional ExtendableMessageEventInit eventInitDict = {}),
+    [Custom] constructor();
     [Custom=Getter] readonly attribute any data;
     readonly attribute DOMString origin;
     readonly attribute DOMString lastEventId;
diff --git a/third_party/blink/renderer/modules/service_worker/fetch_event.cc b/third_party/blink/renderer/modules/service_worker/fetch_event.cc
index 1b6f3e6..ba716e3 100644
--- a/third_party/blink/renderer/modules/service_worker/fetch_event.cc
+++ b/third_party/blink/renderer/modules/service_worker/fetch_event.cc
@@ -130,12 +130,12 @@
   }
   // TODO(ricea): Verify that this response can't be aborted from JS.
   FetchResponseData* response_data =
-      bytes_consumer ? FetchResponseData::CreateWithBuffer(
-                           MakeGarbageCollected<BodyStreamBuffer>(
-                               script_state, bytes_consumer,
-                               MakeGarbageCollected<AbortSignal>(
-                                   ExecutionContext::From(script_state))))
-                     : FetchResponseData::Create();
+      bytes_consumer
+          ? FetchResponseData::CreateWithBuffer(BodyStreamBuffer::Create(
+                script_state, bytes_consumer,
+                MakeGarbageCollected<AbortSignal>(
+                    ExecutionContext::From(script_state))))
+          : FetchResponseData::Create();
   Vector<KURL> url_list(1);
   url_list[0] = preload_response_->CurrentRequestUrl();
   response_data->SetURLList(url_list);
diff --git a/third_party/blink/renderer/modules/shapedetection/barcode_detector.idl b/third_party/blink/renderer/modules/shapedetection/barcode_detector.idl
index f7c5ce69..c5ecf57 100644
--- a/third_party/blink/renderer/modules/shapedetection/barcode_detector.idl
+++ b/third_party/blink/renderer/modules/shapedetection/barcode_detector.idl
@@ -5,14 +5,12 @@
 // https://wicg.github.io/shape-detection-api/#barcode-detection-api
 
 [
-    Constructor(optional BarcodeDetectorOptions barcodeDetectorOptions),
-    ConstructorCallWith=ExecutionContext,
     Exposed=(Window,Worker),
     SecureContext,
     MeasureAs=ShapeDetection_BarcodeDetectorConstructor,
-    RaisesException=Constructor,
     RuntimeEnabled=ShapeDetection
 ] interface BarcodeDetector {
+    [CallWith=ExecutionContext, RaisesException] constructor(optional BarcodeDetectorOptions barcodeDetectorOptions);
     [CallWith=ScriptState] static Promise<sequence<BarcodeFormat>> getSupportedFormats();
     [CallWith=ScriptState, MeasureAs=ShapeDetectionAPI] Promise<sequence<DetectedBarcode>> detect(ImageBitmapSource image);
 };
diff --git a/third_party/blink/renderer/modules/shapedetection/face_detector.idl b/third_party/blink/renderer/modules/shapedetection/face_detector.idl
index 574c1a51..2732177 100644
--- a/third_party/blink/renderer/modules/shapedetection/face_detector.idl
+++ b/third_party/blink/renderer/modules/shapedetection/face_detector.idl
@@ -5,12 +5,11 @@
 // https://wicg.github.io/shape-detection-api/#face-detection-api
 
 [
-    Constructor(optional FaceDetectorOptions faceDetectorOptions),
-    ConstructorCallWith=ExecutionContext,
     Exposed=(Window,Worker),
     SecureContext,
     MeasureAs=ShapeDetection_FaceDetectorConstructor,
     RuntimeEnabled=ShapeDetection
 ] interface FaceDetector {
+    [CallWith=ExecutionContext] constructor(optional FaceDetectorOptions faceDetectorOptions);
     [CallWith=ScriptState, MeasureAs=ShapeDetectionAPI] Promise<sequence<DetectedFace>> detect(ImageBitmapSource image);
 };
diff --git a/third_party/blink/renderer/modules/shapedetection/text_detector.idl b/third_party/blink/renderer/modules/shapedetection/text_detector.idl
index 3fb9ff4a..fd813c8 100644
--- a/third_party/blink/renderer/modules/shapedetection/text_detector.idl
+++ b/third_party/blink/renderer/modules/shapedetection/text_detector.idl
@@ -5,12 +5,11 @@
 // https://wicg.github.io/shape-detection-api/text.html#text-detection-api
 
 [
-    Constructor,
-    ConstructorCallWith=ExecutionContext,
     Exposed=(Window,Worker),
     SecureContext,
     MeasureAs=ShapeDetection_TextDetectorConstructor,
     RuntimeEnabled=ShapeDetection
 ] interface TextDetector {
+    [CallWith=ExecutionContext] constructor();
     [CallWith=ScriptState, MeasureAs=ShapeDetectionAPI] Promise<sequence<DetectedText>> detect(ImageBitmapSource image);
 };
diff --git a/third_party/blink/renderer/modules/speech/speech_grammar.idl b/third_party/blink/renderer/modules/speech/speech_grammar.idl
index 3d922c0..948885f3 100644
--- a/third_party/blink/renderer/modules/speech/speech_grammar.idl
+++ b/third_party/blink/renderer/modules/speech/speech_grammar.idl
@@ -26,10 +26,10 @@
 // https://w3c.github.io/speech-api/#speechgrammar
 
 [
-    Constructor,
     Measure,
     NoInterfaceObject
 ] interface SpeechGrammar {
+    constructor();
     [URL,CallWith=ScriptState] attribute DOMString src;
     attribute float weight;
 };
diff --git a/third_party/blink/renderer/modules/speech/speech_grammar_list.idl b/third_party/blink/renderer/modules/speech/speech_grammar_list.idl
index cdc19d4..f80f92e 100644
--- a/third_party/blink/renderer/modules/speech/speech_grammar_list.idl
+++ b/third_party/blink/renderer/modules/speech/speech_grammar_list.idl
@@ -26,10 +26,10 @@
 // https://w3c.github.io/speech-api/#speechgrammarlist
 
 [
-    Constructor,
     Measure,
     NoInterfaceObject
 ] interface SpeechGrammarList {
+    constructor();
     readonly attribute unsigned long length;
     [Measure] getter SpeechGrammar item(unsigned long index);
     [CallWith=ScriptState, Measure] void addFromUri(DOMString src, optional float weight);
diff --git a/third_party/blink/renderer/modules/speech/speech_recognition.idl b/third_party/blink/renderer/modules/speech/speech_recognition.idl
index bc93835..7d0eeef 100644
--- a/third_party/blink/renderer/modules/speech/speech_recognition.idl
+++ b/third_party/blink/renderer/modules/speech/speech_recognition.idl
@@ -27,11 +27,10 @@
 
 [
     ActiveScriptWrappable,
-    Constructor,
-    ConstructorCallWith=ExecutionContext,
     Measure,
     NoInterfaceObject
 ] interface SpeechRecognition : EventTarget {
+    [CallWith=ExecutionContext] constructor();
     // recognition parameters
     [Measure] attribute SpeechGrammarList grammars;
     attribute DOMString lang;
diff --git a/third_party/blink/renderer/modules/speech/speech_recognition_error_event.idl b/third_party/blink/renderer/modules/speech/speech_recognition_error_event.idl
index 837251cb..d7487f0 100644
--- a/third_party/blink/renderer/modules/speech/speech_recognition_error_event.idl
+++ b/third_party/blink/renderer/modules/speech/speech_recognition_error_event.idl
@@ -26,9 +26,9 @@
 // https://w3c.github.io/speech-api/#speechrecognitionerrorevent
 
 [
-    NoInterfaceObject,
-    Constructor(DOMString type, optional SpeechRecognitionErrorEventInit eventInitDict)
+    NoInterfaceObject
 ] interface SpeechRecognitionErrorEvent : Event {
+    constructor(DOMString type, optional SpeechRecognitionErrorEventInit eventInitDict);
     readonly attribute DOMString error;
     readonly attribute DOMString message;
 };
diff --git a/third_party/blink/renderer/modules/speech/speech_recognition_event.idl b/third_party/blink/renderer/modules/speech/speech_recognition_event.idl
index e7d1421..cb7a0c6 100644
--- a/third_party/blink/renderer/modules/speech/speech_recognition_event.idl
+++ b/third_party/blink/renderer/modules/speech/speech_recognition_event.idl
@@ -26,9 +26,9 @@
 // https://w3c.github.io/speech-api/#speechrecognitionevent
 
 [
-    NoInterfaceObject,
-    Constructor(DOMString type, optional SpeechRecognitionEventInit initDict)
+    NoInterfaceObject
 ] interface SpeechRecognitionEvent : Event {
+    constructor(DOMString type, optional SpeechRecognitionEventInit initDict);
     readonly attribute unsigned long resultIndex;
     readonly attribute SpeechRecognitionResultList? results;
 
diff --git a/third_party/blink/renderer/modules/speech/speech_synthesis_error_event.idl b/third_party/blink/renderer/modules/speech/speech_synthesis_error_event.idl
index f766c5b..f23c651 100644
--- a/third_party/blink/renderer/modules/speech/speech_synthesis_error_event.idl
+++ b/third_party/blink/renderer/modules/speech/speech_synthesis_error_event.idl
@@ -21,8 +21,8 @@
 // https://w3c.github.io/speech-api/#speechsynthesiserrorevent
 [
     Exposed=Window,
-    Constructor(DOMString type, SpeechSynthesisErrorEventInit eventInitDict),
     RuntimeEnabled=ScriptedSpeechSynthesis
 ] interface SpeechSynthesisErrorEvent : SpeechSynthesisEvent {
+    constructor(DOMString type, SpeechSynthesisErrorEventInit eventInitDict);
     readonly attribute SpeechSynthesisErrorCode error;
 };
diff --git a/third_party/blink/renderer/modules/speech/speech_synthesis_event.idl b/third_party/blink/renderer/modules/speech/speech_synthesis_event.idl
index bfacf03a6..dcc0e0c 100644
--- a/third_party/blink/renderer/modules/speech/speech_synthesis_event.idl
+++ b/third_party/blink/renderer/modules/speech/speech_synthesis_event.idl
@@ -25,9 +25,9 @@
 
 // https://w3c.github.io/speech-api/#speechsynthesisevent
 [
-    RuntimeEnabled=ScriptedSpeechSynthesis,
-    Constructor(DOMString type, SpeechSynthesisEventInit eventInitDict)
+    RuntimeEnabled=ScriptedSpeechSynthesis
 ] interface SpeechSynthesisEvent : Event {
+    constructor(DOMString type, SpeechSynthesisEventInit eventInitDict);
     readonly attribute SpeechSynthesisUtterance utterance;
     readonly attribute unsigned long charIndex;
     readonly attribute unsigned long charLength;
diff --git a/third_party/blink/renderer/modules/speech/speech_synthesis_utterance.cc b/third_party/blink/renderer/modules/speech/speech_synthesis_utterance.cc
index c20a48c..6564f61 100644
--- a/third_party/blink/renderer/modules/speech/speech_synthesis_utterance.cc
+++ b/third_party/blink/renderer/modules/speech/speech_synthesis_utterance.cc
@@ -33,6 +33,11 @@
 namespace blink {
 
 SpeechSynthesisUtterance* SpeechSynthesisUtterance::Create(
+    ExecutionContext* context) {
+  return MakeGarbageCollected<SpeechSynthesisUtterance>(context, String());
+}
+
+SpeechSynthesisUtterance* SpeechSynthesisUtterance::Create(
     ExecutionContext* context,
     const String& text) {
   return MakeGarbageCollected<SpeechSynthesisUtterance>(context, text);
diff --git a/third_party/blink/renderer/modules/speech/speech_synthesis_utterance.h b/third_party/blink/renderer/modules/speech/speech_synthesis_utterance.h
index 7635458..d215ec7 100644
--- a/third_party/blink/renderer/modules/speech/speech_synthesis_utterance.h
+++ b/third_party/blink/renderer/modules/speech/speech_synthesis_utterance.h
@@ -45,6 +45,7 @@
   USING_GARBAGE_COLLECTED_MIXIN(SpeechSynthesisUtterance);
 
  public:
+  static SpeechSynthesisUtterance* Create(ExecutionContext*);
   static SpeechSynthesisUtterance* Create(ExecutionContext*, const String&);
 
   SpeechSynthesisUtterance(ExecutionContext*, const String&);
diff --git a/third_party/blink/renderer/modules/speech/speech_synthesis_utterance.idl b/third_party/blink/renderer/modules/speech/speech_synthesis_utterance.idl
index 7ceef52c..4d55106 100644
--- a/third_party/blink/renderer/modules/speech/speech_synthesis_utterance.idl
+++ b/third_party/blink/renderer/modules/speech/speech_synthesis_utterance.idl
@@ -26,10 +26,9 @@
 // https://w3c.github.io/speech-api/#speechsynthesisutterance
 
 [
-    Constructor(optional DOMString text = null),
-    ConstructorCallWith=ExecutionContext,
     RuntimeEnabled=ScriptedSpeechSynthesis
 ] interface SpeechSynthesisUtterance : EventTarget {
+    [CallWith=ExecutionContext] constructor(optional DOMString text);
     attribute DOMString text;
     attribute DOMString lang;
     attribute SpeechSynthesisVoice? voice;
diff --git a/third_party/blink/renderer/modules/storage/storage_event.idl b/third_party/blink/renderer/modules/storage/storage_event.idl
index 0414d23..3c53611 100644
--- a/third_party/blink/renderer/modules/storage/storage_event.idl
+++ b/third_party/blink/renderer/modules/storage/storage_event.idl
@@ -26,9 +26,9 @@
 // https://html.spec.whatwg.org/C/#the-storageevent-interface
 
 [
-    Exposed=Window,
-    Constructor(DOMString type, optional StorageEventInit eventInitDict)
+    Exposed=Window
 ] interface StorageEvent : Event {
+    constructor(DOMString type, optional StorageEventInit eventInitDict);
     readonly attribute DOMString? key;
     readonly attribute DOMString? oldValue;
     readonly attribute DOMString? newValue;
diff --git a/third_party/blink/renderer/modules/webaudio/analyser_node.idl b/third_party/blink/renderer/modules/webaudio/analyser_node.idl
index 8a299b4..3f470a8 100644
--- a/third_party/blink/renderer/modules/webaudio/analyser_node.idl
+++ b/third_party/blink/renderer/modules/webaudio/analyser_node.idl
@@ -26,11 +26,9 @@
 // See https://webaudio.github.io/web-audio-api/#analysernode
 [
     Exposed=Window,
-    Constructor(BaseAudioContext context, optional AnalyserOptions options),
-    RaisesException=Constructor,
     Measure
-]
-interface AnalyserNode : AudioNode {
+] interface AnalyserNode : AudioNode {
+    [RaisesException] constructor(BaseAudioContext context, optional AnalyserOptions options);
     [RaisesException=Setter] attribute unsigned long fftSize;
     readonly attribute unsigned long frequencyBinCount;
 
diff --git a/third_party/blink/renderer/modules/webaudio/audio_buffer.idl b/third_party/blink/renderer/modules/webaudio/audio_buffer.idl
index 54e002a..11be73a 100644
--- a/third_party/blink/renderer/modules/webaudio/audio_buffer.idl
+++ b/third_party/blink/renderer/modules/webaudio/audio_buffer.idl
@@ -29,10 +29,9 @@
 // See https://webaudio.github.io/web-audio-api/#AudioBuffer
 [
     Exposed=Window,
-    Constructor(AudioBufferOptions options),
-    RaisesException=Constructor,
     Measure
 ] interface AudioBuffer {
+    [RaisesException] constructor(AudioBufferOptions options);
     readonly attribute long length; // in sample-frames
     readonly attribute double duration; // in seconds
     readonly attribute float sampleRate; // in sample-frames per second
diff --git a/third_party/blink/renderer/modules/webaudio/audio_buffer_source_node.idl b/third_party/blink/renderer/modules/webaudio/audio_buffer_source_node.idl
index e41167f6..e644690cc 100644
--- a/third_party/blink/renderer/modules/webaudio/audio_buffer_source_node.idl
+++ b/third_party/blink/renderer/modules/webaudio/audio_buffer_source_node.idl
@@ -27,12 +27,10 @@
 // See https://webaudio.github.io/web-audio-api/#AudioBufferSourceNode
 [
     Exposed=Window,
-    Constructor(BaseAudioContext context, optional AudioBufferSourceOptions options),
-    RaisesException=Constructor,
     ActiveScriptWrappable,
     Measure
-]
-interface AudioBufferSourceNode : AudioScheduledSourceNode {
+] interface AudioBufferSourceNode : AudioScheduledSourceNode {
+    [RaisesException] constructor(BaseAudioContext context, optional AudioBufferSourceOptions options);
     [RaisesException=Setter] attribute AudioBuffer? buffer;
 
     readonly attribute AudioParam playbackRate;
diff --git a/third_party/blink/renderer/modules/webaudio/audio_context.idl b/third_party/blink/renderer/modules/webaudio/audio_context.idl
index 41fd88b..86503e3a 100644
--- a/third_party/blink/renderer/modules/webaudio/audio_context.idl
+++ b/third_party/blink/renderer/modules/webaudio/audio_context.idl
@@ -34,11 +34,9 @@
 [
     Exposed=Window,
     ActiveScriptWrappable,
-    Constructor(optional AudioContextOptions contextOptions),
-    ConstructorCallWith=Document,
-    RaisesException=Constructor,
     Measure
 ] interface AudioContext : BaseAudioContext {
+    [CallWith=Document, RaisesException] constructor(optional AudioContextOptions contextOptions);
     [MeasureAs=AudioContextSuspend, CallWith=ScriptState, ImplementedAs=suspendContext] Promise<void> suspend();
     [MeasureAs=AudioContextClose, CallWith=ScriptState, ImplementedAs=closeContext] Promise<void> close();
     [MeasureAs=AudioContextResume, CallWith=ScriptState, ImplementedAs=resumeContext] Promise<void> resume();
diff --git a/third_party/blink/renderer/modules/webaudio/audio_context_autoplay_test.cc b/third_party/blink/renderer/modules/webaudio/audio_context_autoplay_test.cc
index f234d7c..17f7deed 100644
--- a/third_party/blink/renderer/modules/webaudio/audio_context_autoplay_test.cc
+++ b/third_party/blink/renderer/modules/webaudio/audio_context_autoplay_test.cc
@@ -637,8 +637,7 @@
 // document received a user gesture before navigation.
 TEST_P(AudioContextAutoplayTest,
        AutoplayMetrics_DocumentReceivedGesture_BeforeNavigation) {
-  GetDocument().GetFrame()->SetDocumentHasReceivedUserGestureBeforeNavigation(
-      true);
+  GetDocument().GetFrame()->SetHadStickyUserActivationBeforeNavigation(true);
 
   AudioContext* audio_context = AudioContext::Create(
       GetDocument(), AudioContextOptions::Create(), ASSERT_NO_EXCEPTION);
diff --git a/third_party/blink/renderer/modules/webaudio/audio_processing_event.idl b/third_party/blink/renderer/modules/webaudio/audio_processing_event.idl
index 8ca38a5..f9a87b6 100644
--- a/third_party/blink/renderer/modules/webaudio/audio_processing_event.idl
+++ b/third_party/blink/renderer/modules/webaudio/audio_processing_event.idl
@@ -25,10 +25,9 @@
 
 // See https://webaudio.github.io/web-audio-api/#audioprocessingevent
 [
-    Exposed=Window,
-    Constructor(DOMString type, AudioProcessingEventInit eventInitDict)
-]
-interface AudioProcessingEvent : Event {
+    Exposed=Window
+] interface AudioProcessingEvent : Event {
+    constructor(DOMString type, AudioProcessingEventInit eventInitDict);
     readonly attribute double playbackTime;
     readonly attribute AudioBuffer inputBuffer;
     readonly attribute AudioBuffer outputBuffer;
diff --git a/third_party/blink/renderer/modules/webaudio/audio_worklet_node.idl b/third_party/blink/renderer/modules/webaudio/audio_worklet_node.idl
index ac7e6dae..0c99102 100644
--- a/third_party/blink/renderer/modules/webaudio/audio_worklet_node.idl
+++ b/third_party/blink/renderer/modules/webaudio/audio_worklet_node.idl
@@ -7,11 +7,9 @@
 [
     Exposed=Window,
     ActiveScriptWrappable,
-    Constructor(BaseAudioContext context, DOMString name, optional AudioWorkletNodeOptions options),
-    ConstructorCallWith=ScriptState,
-    MeasureAs=AudioWorkletNodeConstructor,
-    RaisesException=Constructor
+    MeasureAs=AudioWorkletNodeConstructor
 ] interface AudioWorkletNode : AudioNode {
+    [CallWith=ScriptState, RaisesException] constructor(BaseAudioContext context, DOMString name, optional AudioWorkletNodeOptions options);
     readonly attribute AudioParamMap parameters;
     readonly attribute MessagePort port;
     attribute EventHandler onprocessorerror;
diff --git a/third_party/blink/renderer/modules/webaudio/audio_worklet_processor.idl b/third_party/blink/renderer/modules/webaudio/audio_worklet_processor.idl
index 9853c97..a6ed038 100644
--- a/third_party/blink/renderer/modules/webaudio/audio_worklet_processor.idl
+++ b/third_party/blink/renderer/modules/webaudio/audio_worklet_processor.idl
@@ -5,9 +5,8 @@
 // See https://webaudio.github.io/web-audio-api/#audioworkletprocessor
 
 [
-    Constructor,
-    ConstructorCallWith=ExecutionContext,
     Exposed=AudioWorklet
 ] interface AudioWorkletProcessor {
+  [CallWith=ExecutionContext] constructor();
   readonly attribute MessagePort port;
 };
diff --git a/third_party/blink/renderer/modules/webaudio/biquad_filter_node.idl b/third_party/blink/renderer/modules/webaudio/biquad_filter_node.idl
index f507394..6fd9ec3 100644
--- a/third_party/blink/renderer/modules/webaudio/biquad_filter_node.idl
+++ b/third_party/blink/renderer/modules/webaudio/biquad_filter_node.idl
@@ -37,11 +37,9 @@
 
 [
     Exposed=Window,
-    Constructor(BaseAudioContext context, optional BiquadFilterOptions options),
-    RaisesException=Constructor,
     Measure
-]
-interface BiquadFilterNode : AudioNode {
+] interface BiquadFilterNode : AudioNode {
+    [RaisesException] constructor(BaseAudioContext context, optional BiquadFilterOptions options);
     attribute BiquadFilterType type;
 
     readonly attribute AudioParam frequency; // in Hertz
diff --git a/third_party/blink/renderer/modules/webaudio/channel_merger_node.idl b/third_party/blink/renderer/modules/webaudio/channel_merger_node.idl
index f0639ea..c43093af 100644
--- a/third_party/blink/renderer/modules/webaudio/channel_merger_node.idl
+++ b/third_party/blink/renderer/modules/webaudio/channel_merger_node.idl
@@ -29,9 +29,7 @@
 // See https://webaudio.github.io/web-audio-api/#channelmergernode
 [
     Exposed=Window,
-    Constructor(BaseAudioContext context, optional ChannelMergerOptions options),
-    RaisesException=Constructor,
     Measure
-]
-interface ChannelMergerNode : AudioNode {
+] interface ChannelMergerNode : AudioNode {
+  [RaisesException] constructor(BaseAudioContext context, optional ChannelMergerOptions options);
 };
diff --git a/third_party/blink/renderer/modules/webaudio/channel_splitter_node.idl b/third_party/blink/renderer/modules/webaudio/channel_splitter_node.idl
index a91d7e76..7764685 100644
--- a/third_party/blink/renderer/modules/webaudio/channel_splitter_node.idl
+++ b/third_party/blink/renderer/modules/webaudio/channel_splitter_node.idl
@@ -26,9 +26,7 @@
 // See https://webaudio.github.io/web-audio-api/#channelsplitternode
 [
     Exposed=Window,
-    Constructor(BaseAudioContext context, optional ChannelSplitterOptions options),
-    RaisesException=Constructor,
     Measure
-]
-interface ChannelSplitterNode : AudioNode {
+] interface ChannelSplitterNode : AudioNode {
+  [RaisesException] constructor(BaseAudioContext context, optional ChannelSplitterOptions options);
 };
diff --git a/third_party/blink/renderer/modules/webaudio/constant_source_node.idl b/third_party/blink/renderer/modules/webaudio/constant_source_node.idl
index 6a21393a..7f80264 100644
--- a/third_party/blink/renderer/modules/webaudio/constant_source_node.idl
+++ b/third_party/blink/renderer/modules/webaudio/constant_source_node.idl
@@ -5,11 +5,9 @@
 // See https://webaudio.github.io/web-audio-api/#ConstantSourceNode
 [
     Exposed=Window,
-    Constructor(BaseAudioContext context, optional ConstantSourceOptions options),
-    RaisesException=Constructor,
     ActiveScriptWrappable,
     Measure
-]
-interface ConstantSourceNode : AudioScheduledSourceNode {
+] interface ConstantSourceNode : AudioScheduledSourceNode {
+    [RaisesException] constructor(BaseAudioContext context, optional ConstantSourceOptions options);
     readonly attribute AudioParam offset;
 };
diff --git a/third_party/blink/renderer/modules/webaudio/convolver_node.idl b/third_party/blink/renderer/modules/webaudio/convolver_node.idl
index f1dcda3..fb8e7f7f 100644
--- a/third_party/blink/renderer/modules/webaudio/convolver_node.idl
+++ b/third_party/blink/renderer/modules/webaudio/convolver_node.idl
@@ -27,11 +27,9 @@
 // See https://webaudio.github.io/web-audio-api/#ConvolverNode
 [
     Exposed=Window,
-    Constructor(BaseAudioContext context, optional ConvolverOptions options),
-    RaisesException=Constructor,
     Measure
-]
-interface ConvolverNode : AudioNode {
+] interface ConvolverNode : AudioNode {
+    [RaisesException] constructor(BaseAudioContext context, optional ConvolverOptions options);
     [RaisesException=Setter] attribute AudioBuffer? buffer;
     attribute boolean normalize;
 };
diff --git a/third_party/blink/renderer/modules/webaudio/delay_node.idl b/third_party/blink/renderer/modules/webaudio/delay_node.idl
index 9dc6923..56443d3c 100644
--- a/third_party/blink/renderer/modules/webaudio/delay_node.idl
+++ b/third_party/blink/renderer/modules/webaudio/delay_node.idl
@@ -26,10 +26,8 @@
 // See https://webaudio.github.io/web-audio-api/#DelayNode
 [
     Exposed=Window,
-    Constructor(BaseAudioContext context, optional DelayOptions options),
-    RaisesException=Constructor,
     Measure
-]
-interface DelayNode : AudioNode {
+] interface DelayNode : AudioNode {
+    [RaisesException] constructor(BaseAudioContext context, optional DelayOptions options);
     readonly attribute AudioParam delayTime;
 };
diff --git a/third_party/blink/renderer/modules/webaudio/dynamics_compressor_node.idl b/third_party/blink/renderer/modules/webaudio/dynamics_compressor_node.idl
index adcbed3..71110d04 100644
--- a/third_party/blink/renderer/modules/webaudio/dynamics_compressor_node.idl
+++ b/third_party/blink/renderer/modules/webaudio/dynamics_compressor_node.idl
@@ -26,11 +26,9 @@
 // See https://webaudio.github.io/web-audio-api/#dynamicscompressornode
 [
     Exposed=Window,
-    Constructor(BaseAudioContext context, optional DynamicsCompressorOptions options),
-    RaisesException=Constructor,
     Measure
-]
-interface DynamicsCompressorNode : AudioNode {
+] interface DynamicsCompressorNode : AudioNode {
+    [RaisesException] constructor(BaseAudioContext context, optional DynamicsCompressorOptions options);
     readonly attribute AudioParam threshold; // in Decibels
     readonly attribute AudioParam knee; // in Decibels
     readonly attribute AudioParam ratio; // unit-less
diff --git a/third_party/blink/renderer/modules/webaudio/gain_node.idl b/third_party/blink/renderer/modules/webaudio/gain_node.idl
index 78a68d6..a77121e 100644
--- a/third_party/blink/renderer/modules/webaudio/gain_node.idl
+++ b/third_party/blink/renderer/modules/webaudio/gain_node.idl
@@ -26,11 +26,9 @@
 // See https://webaudio.github.io/web-audio-api/#gainnode
 [
     Exposed=Window,
-    Constructor(BaseAudioContext context, optional GainOptions options),
-    RaisesException=Constructor,
     Measure
-]
-interface GainNode : AudioNode {
+] interface GainNode : AudioNode {
+    [RaisesException] constructor(BaseAudioContext context, optional GainOptions options);
     // FIXME: eventually it will be interesting to remove the readonly restriction, but need to properly deal with thread safety here.
     readonly attribute AudioParam gain;
 };
diff --git a/third_party/blink/renderer/modules/webaudio/iir_filter_node.idl b/third_party/blink/renderer/modules/webaudio/iir_filter_node.idl
index 6bd6e6d..16e02ac3 100644
--- a/third_party/blink/renderer/modules/webaudio/iir_filter_node.idl
+++ b/third_party/blink/renderer/modules/webaudio/iir_filter_node.idl
@@ -5,11 +5,9 @@
 // See https://webaudio.github.io/web-audio-api/#iirfilternode
 [
     Exposed=Window,
-    Constructor(BaseAudioContext context, IIRFilterOptions options),
-    RaisesException=Constructor,
     Measure
-]
-interface IIRFilterNode : AudioNode {
+] interface IIRFilterNode : AudioNode {
+    [RaisesException] constructor(BaseAudioContext context, IIRFilterOptions options);
     [RaisesException] void getFrequencyResponse(Float32Array frequencyHz,
                                                 Float32Array magResponse,
                                                 Float32Array phaseResponse);
diff --git a/third_party/blink/renderer/modules/webaudio/media_element_audio_source_node.idl b/third_party/blink/renderer/modules/webaudio/media_element_audio_source_node.idl
index 22552cc8..a14ef36 100644
--- a/third_party/blink/renderer/modules/webaudio/media_element_audio_source_node.idl
+++ b/third_party/blink/renderer/modules/webaudio/media_element_audio_source_node.idl
@@ -26,10 +26,8 @@
 // See https://webaudio.github.io/web-audio-api/#mediaelementaudiosourcenode
 [
     Exposed=Window,
-    Constructor(AudioContext context, MediaElementAudioSourceOptions options),
-    RaisesException=Constructor,
     Measure
-]
-interface MediaElementAudioSourceNode : AudioNode {
+] interface MediaElementAudioSourceNode : AudioNode {
+    [RaisesException] constructor(AudioContext context, MediaElementAudioSourceOptions options);
     [SameObject] readonly attribute HTMLMediaElement mediaElement;
 };
diff --git a/third_party/blink/renderer/modules/webaudio/media_stream_audio_destination_node.idl b/third_party/blink/renderer/modules/webaudio/media_stream_audio_destination_node.idl
index c291a7e..5e2c1b5 100644
--- a/third_party/blink/renderer/modules/webaudio/media_stream_audio_destination_node.idl
+++ b/third_party/blink/renderer/modules/webaudio/media_stream_audio_destination_node.idl
@@ -26,10 +26,8 @@
 // See https://webaudio.github.io/web-audio-api/#mediastreamaudiodestinationnode
 [
     Exposed=Window,
-    Constructor(AudioContext context, optional AudioNodeOptions options),
-    RaisesException=Constructor,
     Measure
-]
-interface MediaStreamAudioDestinationNode : AudioNode {
+] interface MediaStreamAudioDestinationNode : AudioNode {
+    [RaisesException] constructor(AudioContext context, optional AudioNodeOptions options);
     readonly attribute MediaStream stream;
 };
diff --git a/third_party/blink/renderer/modules/webaudio/media_stream_audio_source_node.idl b/third_party/blink/renderer/modules/webaudio/media_stream_audio_source_node.idl
index 654b6e057..41066ae 100644
--- a/third_party/blink/renderer/modules/webaudio/media_stream_audio_source_node.idl
+++ b/third_party/blink/renderer/modules/webaudio/media_stream_audio_source_node.idl
@@ -25,11 +25,9 @@
 
 // See https://webaudio.github.io/web-audio-api/#mediastreamaudiosourcenode
 [
-    Constructor(AudioContext context, MediaStreamAudioSourceOptions options),
-    RaisesException=Constructor,
     Measure,
     ActiveScriptWrappable
-]
-interface MediaStreamAudioSourceNode : AudioNode {
+] interface MediaStreamAudioSourceNode : AudioNode {
+  [RaisesException] constructor(AudioContext context, MediaStreamAudioSourceOptions options);
   [SameObject, ImplementedAs=getMediaStream] readonly attribute MediaStream mediaStream;
 };
diff --git a/third_party/blink/renderer/modules/webaudio/offline_audio_completion_event.idl b/third_party/blink/renderer/modules/webaudio/offline_audio_completion_event.idl
index 504d8fe2..91ddcc92 100644
--- a/third_party/blink/renderer/modules/webaudio/offline_audio_completion_event.idl
+++ b/third_party/blink/renderer/modules/webaudio/offline_audio_completion_event.idl
@@ -25,9 +25,8 @@
 
 // See https://webaudio.github.io/web-audio-api/#offlineaudiocompletionevent
 [
-    Exposed=Window,
-    Constructor(DOMString type, OfflineAudioCompletionEventInit eventInitDict)
-]
-interface OfflineAudioCompletionEvent : Event {
+    Exposed=Window
+] interface OfflineAudioCompletionEvent : Event {
+    constructor(DOMString type, OfflineAudioCompletionEventInit eventInitDict);
     readonly attribute AudioBuffer renderedBuffer;
 };
diff --git a/third_party/blink/renderer/modules/webaudio/offline_audio_context.idl b/third_party/blink/renderer/modules/webaudio/offline_audio_context.idl
index 7832c12..8dfd0ed 100644
--- a/third_party/blink/renderer/modules/webaudio/offline_audio_context.idl
+++ b/third_party/blink/renderer/modules/webaudio/offline_audio_context.idl
@@ -26,12 +26,10 @@
 // See https://webaudio.github.io/web-audio-api/#OfflineAudioContext
 [
     Exposed=Window,
-    Constructor(unsigned long numberOfChannels, unsigned long numberOfFrames, float sampleRate),
-    Constructor(OfflineAudioContextOptions options),
-    ConstructorCallWith=ExecutionContext,
-    RaisesException=Constructor,
     Measure
 ] interface OfflineAudioContext : BaseAudioContext {
+    [CallWith=ExecutionContext, RaisesException] constructor(unsigned long numberOfChannels, unsigned long numberOfFrames, float sampleRate);
+    [CallWith=ExecutionContext, RaisesException] constructor(OfflineAudioContextOptions options);
     // Offline rendering
     attribute EventHandler oncomplete;
     readonly attribute unsigned long length;
diff --git a/third_party/blink/renderer/modules/webaudio/oscillator_node.idl b/third_party/blink/renderer/modules/webaudio/oscillator_node.idl
index 328f042..e629f961 100644
--- a/third_party/blink/renderer/modules/webaudio/oscillator_node.idl
+++ b/third_party/blink/renderer/modules/webaudio/oscillator_node.idl
@@ -35,11 +35,9 @@
 // OscillatorNode is an audio generator of periodic waveforms.
 [
     Exposed=Window,
-    Constructor(BaseAudioContext context, optional OscillatorOptions options),
-    RaisesException=Constructor,
     Measure
-]
-interface OscillatorNode : AudioScheduledSourceNode {
+] interface OscillatorNode : AudioScheduledSourceNode {
+    [RaisesException] constructor(BaseAudioContext context, optional OscillatorOptions options);
 
     [RaisesException=Setter] attribute OscillatorType type;
 
diff --git a/third_party/blink/renderer/modules/webaudio/panner_node.idl b/third_party/blink/renderer/modules/webaudio/panner_node.idl
index 4a0d709..47aa5352 100644
--- a/third_party/blink/renderer/modules/webaudio/panner_node.idl
+++ b/third_party/blink/renderer/modules/webaudio/panner_node.idl
@@ -37,10 +37,9 @@
 
 [
     Exposed=Window,
-    Constructor(BaseAudioContext context, optional PannerOptions options),
-    RaisesException=Constructor,
     Measure
 ] interface PannerNode : AudioNode {
+    [RaisesException] constructor(BaseAudioContext context, optional PannerOptions options);
     // Default model for stereo is equalpower.
     attribute PanningModelType panningModel;
 
diff --git a/third_party/blink/renderer/modules/webaudio/periodic_wave.idl b/third_party/blink/renderer/modules/webaudio/periodic_wave.idl
index 6dcbc504c11..640516c 100644
--- a/third_party/blink/renderer/modules/webaudio/periodic_wave.idl
+++ b/third_party/blink/renderer/modules/webaudio/periodic_wave.idl
@@ -27,9 +27,7 @@
 // See https://webaudio.github.io/web-audio-api/#periodicwave
 [
     Exposed=Window,
-    Constructor(BaseAudioContext context, optional PeriodicWaveOptions options),
-    RaisesException=Constructor,
     Measure
-]
-interface PeriodicWave {
+] interface PeriodicWave {
+  [RaisesException] constructor(BaseAudioContext context, optional PeriodicWaveOptions options);
 };
diff --git a/third_party/blink/renderer/modules/webaudio/stereo_panner_node.idl b/third_party/blink/renderer/modules/webaudio/stereo_panner_node.idl
index ce9dedbf..e7098f4 100644
--- a/third_party/blink/renderer/modules/webaudio/stereo_panner_node.idl
+++ b/third_party/blink/renderer/modules/webaudio/stereo_panner_node.idl
@@ -5,11 +5,9 @@
 // See https://webaudio.github.io/web-audio-api/#stereopannernode
 [
     Exposed=Window,
-    Constructor(BaseAudioContext context, optional StereoPannerOptions options),
-    RaisesException=Constructor,
     Measure
-]
-interface StereoPannerNode : AudioNode {
+] interface StereoPannerNode : AudioNode {
+    [RaisesException] constructor(BaseAudioContext context, optional StereoPannerOptions options);
 
     readonly attribute AudioParam pan;
 
diff --git a/third_party/blink/renderer/modules/webaudio/wave_shaper_node.idl b/third_party/blink/renderer/modules/webaudio/wave_shaper_node.idl
index 19f396c..c99982b 100644
--- a/third_party/blink/renderer/modules/webaudio/wave_shaper_node.idl
+++ b/third_party/blink/renderer/modules/webaudio/wave_shaper_node.idl
@@ -32,11 +32,9 @@
 
 [
     Exposed=Window,
-    Constructor(BaseAudioContext context, optional WaveShaperOptions options),
-    RaisesException=Constructor,
     Measure
-]
-interface WaveShaperNode : AudioNode {
+] interface WaveShaperNode : AudioNode {
+    [RaisesException] constructor(BaseAudioContext context, optional WaveShaperOptions options);
     [RaisesException=Setter] attribute Float32Array? curve;
     attribute OverSampleType oversample;
 };
diff --git a/third_party/blink/renderer/modules/webcodecs/encoded_video_chunk.idl b/third_party/blink/renderer/modules/webcodecs/encoded_video_chunk.idl
index 038d5b6..b2eff05 100644
--- a/third_party/blink/renderer/modules/webcodecs/encoded_video_chunk.idl
+++ b/third_party/blink/renderer/modules/webcodecs/encoded_video_chunk.idl
@@ -8,10 +8,10 @@
 };
 
 [
-   Constructor(EncodedVideoChunkType type, unsigned long long timestamp, BufferSource data),
-   Constructor(EncodedVideoChunkType type, unsigned long long timestamp, unsigned long long duration, BufferSource data),
    RuntimeEnabled=WebCodecs
 ] interface EncodedVideoChunk {
+  constructor(EncodedVideoChunkType type, unsigned long long timestamp, BufferSource data);
+  constructor(EncodedVideoChunkType type, unsigned long long timestamp, unsigned long long duration, BufferSource data);
   readonly attribute EncodedVideoChunkType type;
   // TODO: Add frame dependency information
   readonly attribute unsigned long long timestamp;  // microseconds
diff --git a/third_party/blink/renderer/modules/webcodecs/video_decoder.idl b/third_party/blink/renderer/modules/webcodecs/video_decoder.idl
index c939142..a3d05ac 100644
--- a/third_party/blink/renderer/modules/webcodecs/video_decoder.idl
+++ b/third_party/blink/renderer/modules/webcodecs/video_decoder.idl
@@ -3,9 +3,9 @@
 // found in the LICENSE file.
 
 [
-    Constructor(),
     RuntimeEnabled=WebCodecs
 ] interface VideoDecoder {
+    constructor();
     [CallWith=ScriptState] Promise<void> Initialize(VideoDecoderInitParameters params);
     [CallWith=ScriptState] Promise<void> Flush();
     void Close();
diff --git a/third_party/blink/renderer/modules/webgl/webgl_context_event.idl b/third_party/blink/renderer/modules/webgl/webgl_context_event.idl
index f08c814..db40a16b 100644
--- a/third_party/blink/renderer/modules/webgl/webgl_context_event.idl
+++ b/third_party/blink/renderer/modules/webgl/webgl_context_event.idl
@@ -25,8 +25,7 @@
 
 // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.15
 
-[
-    Constructor(DOMString type, optional WebGLContextEventInit eventInit)
-] interface WebGLContextEvent : Event {
+interface WebGLContextEvent : Event {
+    constructor(DOMString type, optional WebGLContextEventInit eventInit);
     readonly attribute DOMString statusMessage;
 };
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 a60825c..e9db2ef 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
@@ -4890,7 +4890,7 @@
   // TODO(ccameron): WebGL should produce sRGB images.
   // https://crbug.com/672299
   image->Draw(resource_provider->Canvas(), flags, FloatRect(dest_rect),
-              FloatRect(src_rect), kDoNotRespectImageOrientation,
+              FloatRect(src_rect), kRespectImageOrientation,
               Image::kDoNotClampImageToSourceRect, Image::kSyncDecode);
   return resource_provider->Snapshot();
 }
diff --git a/third_party/blink/renderer/modules/webgpu/gpu_out_of_memory_error.idl b/third_party/blink/renderer/modules/webgpu/gpu_out_of_memory_error.idl
index bd16e3b0e..495f4d8 100644
--- a/third_party/blink/renderer/modules/webgpu/gpu_out_of_memory_error.idl
+++ b/third_party/blink/renderer/modules/webgpu/gpu_out_of_memory_error.idl
@@ -5,7 +5,7 @@
 // https://gpuweb.github.io/gpuweb/
 
 [
-    Constructor(),
     Exposed(Window WebGPU, Worker WebGPU)
 ] interface GPUOutOfMemoryError {
+  constructor();
 };
diff --git a/third_party/blink/renderer/modules/webgpu/gpu_uncaptured_error_event.idl b/third_party/blink/renderer/modules/webgpu/gpu_uncaptured_error_event.idl
index 8fd5127..6df8aaf 100644
--- a/third_party/blink/renderer/modules/webgpu/gpu_uncaptured_error_event.idl
+++ b/third_party/blink/renderer/modules/webgpu/gpu_uncaptured_error_event.idl
@@ -5,8 +5,8 @@
 // https://gpuweb.github.io/gpuweb/
 
 [
-    Constructor(DOMString type, GPUUncapturedErrorEventInit gpuUncapturedErrorEventInitDict),
     Exposed(Window WebGPU, Worker WebGPU)
 ] interface GPUUncapturedErrorEvent : Event {
+    constructor(DOMString type, GPUUncapturedErrorEventInit gpuUncapturedErrorEventInitDict);
     [SameObject] readonly attribute GPUError error;
 };
diff --git a/third_party/blink/renderer/modules/webgpu/gpu_validation_error.idl b/third_party/blink/renderer/modules/webgpu/gpu_validation_error.idl
index d372e5f..16fb280 100644
--- a/third_party/blink/renderer/modules/webgpu/gpu_validation_error.idl
+++ b/third_party/blink/renderer/modules/webgpu/gpu_validation_error.idl
@@ -5,8 +5,8 @@
 // https://gpuweb.github.io/gpuweb/
 
 [
-    Constructor(DOMString message),
     Exposed(Window WebGPU, Worker WebGPU)
 ] interface GPUValidationError {
+    constructor(DOMString message);
     readonly attribute DOMString message;
 };
diff --git a/third_party/blink/renderer/modules/webmidi/midi_connection_event.idl b/third_party/blink/renderer/modules/webmidi/midi_connection_event.idl
index 93532e7..092f770 100644
--- a/third_party/blink/renderer/modules/webmidi/midi_connection_event.idl
+++ b/third_party/blink/renderer/modules/webmidi/midi_connection_event.idl
@@ -31,8 +31,8 @@
 // https://webaudio.github.io/web-midi-api/#MIDIConnectionEvent
 
 [
-    SecureContext,
-    Constructor(DOMString type, optional MIDIConnectionEventInit eventInitDict)
+    SecureContext
 ] interface MIDIConnectionEvent : Event {
+    constructor(DOMString type, optional MIDIConnectionEventInit eventInitDict);
     readonly attribute MIDIPort port;
 };
diff --git a/third_party/blink/renderer/modules/webmidi/midi_message_event.idl b/third_party/blink/renderer/modules/webmidi/midi_message_event.idl
index 48c9c68..0583589c3 100644
--- a/third_party/blink/renderer/modules/webmidi/midi_message_event.idl
+++ b/third_party/blink/renderer/modules/webmidi/midi_message_event.idl
@@ -31,8 +31,8 @@
 // https://webaudio.github.io/web-midi-api/#MIDIMessageEvent
 
 [
-    SecureContext,
-    Constructor(DOMString type, optional MIDIMessageEventInit eventInitDict)
+    SecureContext
 ] interface MIDIMessageEvent : Event {
+    constructor(DOMString type, optional MIDIMessageEventInit eventInitDict);
     readonly attribute Uint8Array data;
 };
diff --git a/third_party/blink/renderer/modules/webmidi/navigator_web_midi.cc b/third_party/blink/renderer/modules/webmidi/navigator_web_midi.cc
index a3f757a..a8dc3ec 100644
--- a/third_party/blink/renderer/modules/webmidi/navigator_web_midi.cc
+++ b/third_party/blink/renderer/modules/webmidi/navigator_web_midi.cc
@@ -42,6 +42,7 @@
 #include "third_party/blink/renderer/core/inspector/console_message.h"
 #include "third_party/blink/renderer/modules/webmidi/midi_access_initializer.h"
 #include "third_party/blink/renderer/modules/webmidi/midi_options.h"
+#include "third_party/blink/renderer/platform/bindings/exception_state.h"
 #include "third_party/blink/renderer/platform/heap/heap.h"
 #include "third_party/blink/renderer/platform/instrumentation/use_counter.h"
 
@@ -75,20 +76,23 @@
   return *supplement;
 }
 
-ScriptPromise NavigatorWebMIDI::requestMIDIAccess(ScriptState* script_state,
-                                                  Navigator& navigator,
-                                                  const MIDIOptions* options) {
-  return NavigatorWebMIDI::From(navigator).requestMIDIAccess(script_state,
-                                                             options);
+ScriptPromise NavigatorWebMIDI::requestMIDIAccess(
+    ScriptState* script_state,
+    Navigator& navigator,
+    const MIDIOptions* options,
+    ExceptionState& exception_state) {
+  return NavigatorWebMIDI::From(navigator).requestMIDIAccess(
+      script_state, options, exception_state);
 }
 
-ScriptPromise NavigatorWebMIDI::requestMIDIAccess(ScriptState* script_state,
-                                                  const MIDIOptions* options) {
+ScriptPromise NavigatorWebMIDI::requestMIDIAccess(
+    ScriptState* script_state,
+    const MIDIOptions* options,
+    ExceptionState& exception_state) {
   if (!script_state->ContextIsValid()) {
-    return ScriptPromise::RejectWithDOMException(
-        script_state,
-        MakeGarbageCollected<DOMException>(DOMExceptionCode::kAbortError,
-                                           "The frame is not working."));
+    exception_state.ThrowDOMException(DOMExceptionCode::kAbortError,
+                                      "The frame is not working.");
+    return ScriptPromise();
   }
 
   Document& document = *To<Document>(ExecutionContext::From(script_state));
@@ -116,10 +120,8 @@
                                  ReportOptions::kReportOnFailure,
                                  kFeaturePolicyConsoleWarning)) {
     UseCounter::Count(document, WebFeature::kMidiDisabledByFeaturePolicy);
-    return ScriptPromise::RejectWithDOMException(
-        script_state,
-        MakeGarbageCollected<DOMException>(DOMExceptionCode::kSecurityError,
-                                           kFeaturePolicyErrorMessage));
+    exception_state.ThrowSecurityError(kFeaturePolicyErrorMessage);
+    return ScriptPromise();
   }
 
   return MIDIAccessInitializer::Start(script_state, options);
diff --git a/third_party/blink/renderer/modules/webmidi/navigator_web_midi.h b/third_party/blink/renderer/modules/webmidi/navigator_web_midi.h
index 51d1c93..18f5bed 100644
--- a/third_party/blink/renderer/modules/webmidi/navigator_web_midi.h
+++ b/third_party/blink/renderer/modules/webmidi/navigator_web_midi.h
@@ -39,6 +39,7 @@
 
 namespace blink {
 
+class ExceptionState;
 class Navigator;
 
 class NavigatorWebMIDI final : public GarbageCollected<NavigatorWebMIDI>,
@@ -51,8 +52,11 @@
   static NavigatorWebMIDI& From(Navigator&);
   static ScriptPromise requestMIDIAccess(ScriptState*,
                                          Navigator&,
-                                         const MIDIOptions*);
-  ScriptPromise requestMIDIAccess(ScriptState*, const MIDIOptions*);
+                                         const MIDIOptions*,
+                                         ExceptionState& exception_state);
+  ScriptPromise requestMIDIAccess(ScriptState*,
+                                  const MIDIOptions*,
+                                  ExceptionState& exception_state);
 
   explicit NavigatorWebMIDI(Navigator&);
 
diff --git a/third_party/blink/renderer/modules/webmidi/navigator_web_midi.idl b/third_party/blink/renderer/modules/webmidi/navigator_web_midi.idl
index a569d1e..dfb062d 100644
--- a/third_party/blink/renderer/modules/webmidi/navigator_web_midi.idl
+++ b/third_party/blink/renderer/modules/webmidi/navigator_web_midi.idl
@@ -34,5 +34,5 @@
   ImplementedAs=NavigatorWebMIDI,
   SecureContext
 ] partial interface Navigator {
-  [CallWith=ScriptState, MeasureAs=RequestMIDIAccess_ObscuredByFootprinting] Promise<MIDIAccess> requestMIDIAccess(optional MIDIOptions options);
+  [CallWith=ScriptState, RaisesException, MeasureAs=RequestMIDIAccess_ObscuredByFootprinting] Promise<MIDIAccess> requestMIDIAccess(optional MIDIOptions options);
 };
diff --git a/third_party/blink/renderer/modules/webshare/navigator_share.cc b/third_party/blink/renderer/modules/webshare/navigator_share.cc
index ac93080..cd728b16 100644
--- a/third_party/blink/renderer/modules/webshare/navigator_share.cc
+++ b/third_party/blink/renderer/modules/webshare/navigator_share.cc
@@ -17,6 +17,7 @@
 #include "third_party/blink/renderer/core/frame/navigator.h"
 #include "third_party/blink/renderer/core/frame/web_feature.h"
 #include "third_party/blink/renderer/modules/webshare/share_data.h"
+#include "third_party/blink/renderer/platform/bindings/exception_state.h"
 #include "third_party/blink/renderer/platform/bindings/v8_throw_exception.h"
 #include "third_party/blink/renderer/platform/heap/heap.h"
 #include "third_party/blink/renderer/platform/instrumentation/use_counter.h"
@@ -170,31 +171,31 @@
 }
 
 ScriptPromise NavigatorShare::share(ScriptState* script_state,
-                                    const ShareData* share_data) {
+                                    const ShareData* share_data,
+                                    ExceptionState& exception_state) {
   Document* doc = To<Document>(ExecutionContext::From(script_state));
   KURL full_url;
   String error_message = CheckForTypeError(*doc, *share_data, &full_url);
   if (!error_message.IsEmpty()) {
-    v8::Local<v8::Value> error = V8ThrowException::CreateTypeError(
-        script_state->GetIsolate(), error_message);
-    return ScriptPromise::Reject(script_state, error);
+    exception_state.ThrowTypeError(error_message);
+    return ScriptPromise();
   }
 
   if (!LocalFrame::HasTransientUserActivation(doc->GetFrame())) {
-    auto* error = MakeGarbageCollected<DOMException>(
+    exception_state.ThrowDOMException(
         DOMExceptionCode::kNotAllowedError,
         "Must be handling a user gesture to perform a share request.");
-    return ScriptPromise::RejectWithDOMException(script_state, error);
+    return ScriptPromise();
   }
 
   if (!service_remote_) {
     LocalFrame* frame = doc->GetFrame();
     if (!frame) {
-      auto* error = MakeGarbageCollected<DOMException>(
+      exception_state.ThrowDOMException(
           DOMExceptionCode::kAbortError,
-          "Internal error: document frame is missing (the "
-          "navigator may be detached).");
-      return ScriptPromise::RejectWithDOMException(script_state, error);
+          "Internal error: document frame is missing (the navigator may be "
+          "detached).");
+      return ScriptPromise();
     }
 
     // See https://bit.ly/2S0zRAS for task types.
@@ -225,9 +226,9 @@
 
     if (files.size() > kMaxSharedFileCount ||
         total_bytes > kMaxSharedFileBytes) {
-      auto* error = MakeGarbageCollected<DOMException>(
-          DOMExceptionCode::kNotAllowedError, "Permission denied");
-      return ScriptPromise::RejectWithDOMException(script_state, error);
+      exception_state.ThrowDOMException(DOMExceptionCode::kNotAllowedError,
+                                        "Permission denied");
+      return ScriptPromise();
     }
   }
 
@@ -242,8 +243,9 @@
 
 ScriptPromise NavigatorShare::share(ScriptState* script_state,
                                     Navigator& navigator,
-                                    const ShareData* share_data) {
-  return From(navigator).share(script_state, share_data);
+                                    const ShareData* share_data,
+                                    ExceptionState& exception_state) {
+  return From(navigator).share(script_state, share_data, exception_state);
 }
 
 void NavigatorShare::OnConnectionError() {
diff --git a/third_party/blink/renderer/modules/webshare/navigator_share.h b/third_party/blink/renderer/modules/webshare/navigator_share.h
index 23ff0e6..7a23199 100644
--- a/third_party/blink/renderer/modules/webshare/navigator_share.h
+++ b/third_party/blink/renderer/modules/webshare/navigator_share.h
@@ -20,6 +20,7 @@
 
 namespace blink {
 
+class ExceptionState;
 class Navigator;
 class ShareData;
 
@@ -41,8 +42,11 @@
   // Navigator partial interface
   bool canShare(ScriptState*, const ShareData*);
   static bool canShare(ScriptState*, Navigator&, const ShareData*);
-  ScriptPromise share(ScriptState*, const ShareData*);
-  static ScriptPromise share(ScriptState*, Navigator&, const ShareData*);
+  ScriptPromise share(ScriptState*, const ShareData*, ExceptionState&);
+  static ScriptPromise share(ScriptState*,
+                             Navigator&,
+                             const ShareData*,
+                             ExceptionState&);
 
   void Trace(blink::Visitor*) override;
 
diff --git a/third_party/blink/renderer/modules/webshare/navigator_share.idl b/third_party/blink/renderer/modules/webshare/navigator_share.idl
index 1a4bf168..b8558387 100644
--- a/third_party/blink/renderer/modules/webshare/navigator_share.idl
+++ b/third_party/blink/renderer/modules/webshare/navigator_share.idl
@@ -11,6 +11,6 @@
   [SecureContext, CallWith=ScriptState, MeasureAs=WebShareCanShare, RuntimeEnabled=WebShareV2]
   boolean canShare(optional ShareData data);
 
-  [SecureContext, CallWith=ScriptState, MeasureAs=WebShareShare]
+  [SecureContext, CallWith=ScriptState, RaisesException, MeasureAs=WebShareShare]
   Promise<void> share(optional ShareData data);
 };
diff --git a/third_party/blink/renderer/modules/webshare/navigator_share_test.cc b/third_party/blink/renderer/modules/webshare/navigator_share_test.cc
index 5cb3390..21b224c8 100644
--- a/third_party/blink/renderer/modules/webshare/navigator_share_test.cc
+++ b/third_party/blink/renderer/modules/webshare/navigator_share_test.cc
@@ -16,6 +16,7 @@
 #include "third_party/blink/renderer/core/frame/local_frame.h"
 #include "third_party/blink/renderer/core/testing/dummy_page_holder.h"
 #include "third_party/blink/renderer/modules/webshare/share_data.h"
+#include "third_party/blink/renderer/platform/bindings/exception_state.h"
 #include "third_party/blink/renderer/platform/instrumentation/use_counter.h"
 #include "third_party/blink/renderer/platform/testing/unit_test_helpers.h"
 
@@ -90,8 +91,9 @@
   void Share(const ShareData& share_data) {
     LocalFrame::NotifyUserActivation(&GetFrame());
     Navigator* navigator = GetFrame().DomWindow()->navigator();
-    ScriptPromise promise =
-        NavigatorShare::share(GetScriptState(), *navigator, &share_data);
+    NonThrowableExceptionState exception_state;
+    ScriptPromise promise = NavigatorShare::share(GetScriptState(), *navigator,
+                                                  &share_data, exception_state);
     test::RunPendingTasks();
     EXPECT_EQ(mock_share_service_.error() == mojom::ShareError::OK
                   ? v8::Promise::kFulfilled
diff --git a/third_party/blink/renderer/modules/websockets/close_event.idl b/third_party/blink/renderer/modules/websockets/close_event.idl
index 438a0b6..3bcc94d8 100644
--- a/third_party/blink/renderer/modules/websockets/close_event.idl
+++ b/third_party/blink/renderer/modules/websockets/close_event.idl
@@ -31,9 +31,9 @@
 // https://html.spec.whatwg.org/C/#the-closeevent-interfaces
 
 [
-    Constructor(DOMString type, optional CloseEventInit eventInitDict),
     Exposed=(Window,Worker)
 ] interface CloseEvent : Event {
+    constructor(DOMString type, optional CloseEventInit eventInitDict);
     readonly attribute boolean wasClean;
     readonly attribute unsigned short code;
     readonly attribute DOMString reason;
diff --git a/third_party/blink/renderer/modules/websockets/websocket.idl b/third_party/blink/renderer/modules/websockets/websocket.idl
index 3c46ef6..80883b7 100644
--- a/third_party/blink/renderer/modules/websockets/websocket.idl
+++ b/third_party/blink/renderer/modules/websockets/websocket.idl
@@ -35,12 +35,10 @@
 
 [
     ActiveScriptWrappable,
-    Constructor(USVString url, optional (DOMString or sequence<DOMString>) protocols),
-    ConstructorCallWith=ExecutionContext,
     Exposed=(Window,Worker),
-    ImplementedAs=DOMWebSocket,
-    RaisesException=Constructor
+    ImplementedAs=DOMWebSocket
 ] interface WebSocket : EventTarget {
+    [CallWith=ExecutionContext, RaisesException] constructor(USVString url, optional (DOMString or sequence<DOMString>) protocols);
     readonly attribute USVString url;
 
     // ready state
diff --git a/third_party/blink/renderer/modules/websockets/websocket_stream.idl b/third_party/blink/renderer/modules/websockets/websocket_stream.idl
index e205e34..a6a4073 100644
--- a/third_party/blink/renderer/modules/websockets/websocket_stream.idl
+++ b/third_party/blink/renderer/modules/websockets/websocket_stream.idl
@@ -5,14 +5,12 @@
 // TODO(ricea): Add standard link when there is one.
 
 [
-    Constructor(USVString url, optional WebSocketStreamOptions options),
-    ConstructorCallWith=ScriptState,
     Exposed=(Window,Worker),
-    RaisesException=Constructor,
     RuntimeEnabled=WebSocketStream,
     ActiveScriptWrappable,
     MeasureAs=WebSocketStreamConstructor
 ] interface WebSocketStream {
+  [CallWith=ScriptState, RaisesException] constructor(USVString url, optional WebSocketStreamOptions options);
   readonly attribute USVString url;
   [CallWith=ScriptState] readonly attribute Promise<WebSocketConnection> connection;
   [CallWith=ScriptState] readonly attribute Promise<WebSocketCloseInfo> closed;
diff --git a/third_party/blink/renderer/modules/webtransport/quic_transport.idl b/third_party/blink/renderer/modules/webtransport/quic_transport.idl
index 8ef7de6d..f6a59958 100644
--- a/third_party/blink/renderer/modules/webtransport/quic_transport.idl
+++ b/third_party/blink/renderer/modules/webtransport/quic_transport.idl
@@ -5,12 +5,10 @@
 // https://wicg.github.io/web-transport/#quic-transport
 [
     ActiveScriptWrappable,
-    Constructor(USVString url),
     Exposed=(Window,Worker),
-    RuntimeEnabled=QuicTransport,
-    ConstructorCallWith=ScriptState,
-    RaisesException=Constructor
+    RuntimeEnabled=QuicTransport
 ] interface QuicTransport {
+  [CallWith=ScriptState, RaisesException] constructor(USVString url);
   // QuicTransport is the first, and at this moment only, transport which is
   // implemented. In the (draft) spec there are many mix-in interfaces which
   // QuicTransport includes, but we define all their methods/attributes here
diff --git a/third_party/blink/renderer/modules/webusb/navigator_usb.cc b/third_party/blink/renderer/modules/webusb/navigator_usb.cc
index c341a7e3..488a75e 100644
--- a/third_party/blink/renderer/modules/webusb/navigator_usb.cc
+++ b/third_party/blink/renderer/modules/webusb/navigator_usb.cc
@@ -8,6 +8,7 @@
 #include "third_party/blink/renderer/core/frame/local_frame.h"
 #include "third_party/blink/renderer/core/frame/navigator.h"
 #include "third_party/blink/renderer/modules/webusb/usb.h"
+#include "third_party/blink/renderer/platform/heap/heap.h"
 
 namespace blink {
 
@@ -37,7 +38,7 @@
 NavigatorUSB::NavigatorUSB(Navigator& navigator) {
   if (navigator.GetFrame()) {
     DCHECK(navigator.GetFrame()->GetDocument());
-    usb_ = USB::Create(*navigator.GetFrame()->GetDocument());
+    usb_ = MakeGarbageCollected<USB>(*navigator.GetFrame()->GetDocument());
   }
 }
 
diff --git a/third_party/blink/renderer/modules/webusb/usb.cc b/third_party/blink/renderer/modules/webusb/usb.cc
index 8e17a9d4..3e5d799 100644
--- a/third_party/blink/renderer/modules/webusb/usb.cc
+++ b/third_party/blink/renderer/modules/webusb/usb.cc
@@ -197,8 +197,8 @@
     String guid = device_info->guid;
     mojo::PendingRemote<UsbDevice> pipe;
     service_->GetDevice(guid, pipe.InitWithNewPipeAndPassReceiver());
-    device = USBDevice::Create(std::move(device_info), std::move(pipe),
-                               GetExecutionContext());
+    device = MakeGarbageCollected<USBDevice>(
+        std::move(device_info), std::move(pipe), GetExecutionContext());
     device_cache_.insert(guid, device);
   }
   return device;
@@ -242,8 +242,8 @@
   String guid = device_info->guid;
   USBDevice* device = device_cache_.at(guid);
   if (!device) {
-    device = USBDevice::Create(std::move(device_info), mojo::NullRemote(),
-                               GetExecutionContext());
+    device = MakeGarbageCollected<USBDevice>(
+        std::move(device_info), mojo::NullRemote(), GetExecutionContext());
   }
   DispatchEvent(
       *USBConnectionEvent::Create(event_type_names::kDisconnect, device));
diff --git a/third_party/blink/renderer/modules/webusb/usb.h b/third_party/blink/renderer/modules/webusb/usb.h
index cdfa035d..f423a4b6 100644
--- a/third_party/blink/renderer/modules/webusb/usb.h
+++ b/third_party/blink/renderer/modules/webusb/usb.h
@@ -34,10 +34,6 @@
   USING_PRE_FINALIZER(USB, Dispose);
 
  public:
-  static USB* Create(ExecutionContext& context) {
-    return MakeGarbageCollected<USB>(context);
-  }
-
   explicit USB(ExecutionContext&);
   ~USB() override;
 
diff --git a/third_party/blink/renderer/modules/webusb/usb_alternate_interface.idl b/third_party/blink/renderer/modules/webusb/usb_alternate_interface.idl
index 80de8d9..7cd4b41 100644
--- a/third_party/blink/renderer/modules/webusb/usb_alternate_interface.idl
+++ b/third_party/blink/renderer/modules/webusb/usb_alternate_interface.idl
@@ -5,11 +5,10 @@
 // https://wicg.github.io/webusb/#interfaces
 
 [
-    Constructor(USBInterface deviceInterface, octet alternateSetting),
     Exposed(DedicatedWorker WebUSBOnDedicatedWorkers, Window WebUSB),
-    RaisesException=Constructor,
     SecureContext
 ] interface USBAlternateInterface {
+    [RaisesException] constructor(USBInterface deviceInterface, octet alternateSetting);
     readonly attribute octet alternateSetting;
     readonly attribute octet interfaceClass;
     readonly attribute octet interfaceSubclass;
diff --git a/third_party/blink/renderer/modules/webusb/usb_configuration.idl b/third_party/blink/renderer/modules/webusb/usb_configuration.idl
index 62e2d00..beea0bd 100644
--- a/third_party/blink/renderer/modules/webusb/usb_configuration.idl
+++ b/third_party/blink/renderer/modules/webusb/usb_configuration.idl
@@ -5,11 +5,10 @@
 // https://wicg.github.io/webusb/#configurations
 
 [
-    Constructor(USBDevice device, octet configurationValue),
     Exposed(DedicatedWorker WebUSBOnDedicatedWorkers, Window WebUSB),
-    RaisesException=Constructor,
     SecureContext
 ] interface USBConfiguration {
+    [RaisesException] constructor(USBDevice device, octet configurationValue);
     readonly attribute octet configurationValue;
     readonly attribute DOMString? configurationName;
     readonly attribute FrozenArray<USBInterface> interfaces;
diff --git a/third_party/blink/renderer/modules/webusb/usb_connection_event.idl b/third_party/blink/renderer/modules/webusb/usb_connection_event.idl
index e3c22d17..5138c10 100644
--- a/third_party/blink/renderer/modules/webusb/usb_connection_event.idl
+++ b/third_party/blink/renderer/modules/webusb/usb_connection_event.idl
@@ -5,9 +5,9 @@
 // https://wicg.github.io/webusb/#events
 
 [
-    Constructor(DOMString type, USBConnectionEventInit eventInitDict),
     Exposed(DedicatedWorker WebUSBOnDedicatedWorkers, Window WebUSB),
     SecureContext
 ] interface USBConnectionEvent : Event {
+    constructor(DOMString type, USBConnectionEventInit eventInitDict);
     [SameObject] readonly attribute USBDevice device;
 };
diff --git a/third_party/blink/renderer/modules/webusb/usb_device.h b/third_party/blink/renderer/modules/webusb/usb_device.h
index ecb4f04a..b86e740 100644
--- a/third_party/blink/renderer/modules/webusb/usb_device.h
+++ b/third_party/blink/renderer/modules/webusb/usb_device.h
@@ -28,14 +28,6 @@
   DEFINE_WRAPPERTYPEINFO();
 
  public:
-  static USBDevice* Create(
-      device::mojom::blink::UsbDeviceInfoPtr device_info,
-      mojo::PendingRemote<device::mojom::blink::UsbDevice> device,
-      ExecutionContext* context) {
-    return MakeGarbageCollected<USBDevice>(std::move(device_info),
-                                           std::move(device), context);
-  }
-
   explicit USBDevice(device::mojom::blink::UsbDeviceInfoPtr,
                      mojo::PendingRemote<device::mojom::blink::UsbDevice>,
                      ExecutionContext*);
diff --git a/third_party/blink/renderer/modules/webusb/usb_endpoint.idl b/third_party/blink/renderer/modules/webusb/usb_endpoint.idl
index 679e8825..0ad761ad 100644
--- a/third_party/blink/renderer/modules/webusb/usb_endpoint.idl
+++ b/third_party/blink/renderer/modules/webusb/usb_endpoint.idl
@@ -16,11 +16,10 @@
 };
 
 [
-    Constructor(USBAlternateInterface alternate, octet endpointNumber, USBDirection direction),
     Exposed(DedicatedWorker WebUSBOnDedicatedWorkers, Window WebUSB),
-    RaisesException=Constructor,
     SecureContext
 ] interface USBEndpoint {
+    [RaisesException] constructor(USBAlternateInterface alternate, octet endpointNumber, USBDirection direction);
     readonly attribute octet endpointNumber;
     readonly attribute USBDirection direction;
     readonly attribute USBEndpointType type;
diff --git a/third_party/blink/renderer/modules/webusb/usb_in_transfer_result.idl b/third_party/blink/renderer/modules/webusb/usb_in_transfer_result.idl
index 2c9fed6..17353060 100644
--- a/third_party/blink/renderer/modules/webusb/usb_in_transfer_result.idl
+++ b/third_party/blink/renderer/modules/webusb/usb_in_transfer_result.idl
@@ -6,9 +6,9 @@
 
 [
     Exposed(DedicatedWorker WebUSBOnDedicatedWorkers, Window WebUSB),
-    Constructor(USBTransferStatus status, optional DataView? data),
     SecureContext
 ] interface USBInTransferResult {
+    constructor(USBTransferStatus status, optional DataView? data);
     readonly attribute DataView? data;
     readonly attribute USBTransferStatus status;
 };
diff --git a/third_party/blink/renderer/modules/webusb/usb_interface.idl b/third_party/blink/renderer/modules/webusb/usb_interface.idl
index 16da8b7..933fae5c 100644
--- a/third_party/blink/renderer/modules/webusb/usb_interface.idl
+++ b/third_party/blink/renderer/modules/webusb/usb_interface.idl
@@ -5,11 +5,10 @@
 // https://wicg.github.io/webusb/#interfaces
 
 [
-    Constructor(USBConfiguration configuration, octet interfaceNumber),
     Exposed(DedicatedWorker WebUSBOnDedicatedWorkers, Window WebUSB),
-    RaisesException=Constructor,
     SecureContext
 ] interface USBInterface {
+    [RaisesException] constructor(USBConfiguration configuration, octet interfaceNumber);
     readonly attribute octet interfaceNumber;
     readonly attribute USBAlternateInterface? alternate;
     readonly attribute FrozenArray<USBAlternateInterface> alternates;
diff --git a/third_party/blink/renderer/modules/webusb/usb_isochronous_in_transfer_packet.idl b/third_party/blink/renderer/modules/webusb/usb_isochronous_in_transfer_packet.idl
index d1f213e..28b0759e 100644
--- a/third_party/blink/renderer/modules/webusb/usb_isochronous_in_transfer_packet.idl
+++ b/third_party/blink/renderer/modules/webusb/usb_isochronous_in_transfer_packet.idl
@@ -5,10 +5,10 @@
 // https://wicg.github.io/webusb/#usbisochronousintransferpacket
 
 [
-    Constructor(USBTransferStatus status, optional DataView? data),
     Exposed(DedicatedWorker WebUSBOnDedicatedWorkers, Window WebUSB),
     SecureContext
 ] interface USBIsochronousInTransferPacket {
+    constructor(USBTransferStatus status, optional DataView? data);
     readonly attribute USBTransferStatus status;
     readonly attribute DataView? data;
 };
diff --git a/third_party/blink/renderer/modules/webusb/usb_isochronous_in_transfer_result.idl b/third_party/blink/renderer/modules/webusb/usb_isochronous_in_transfer_result.idl
index ccf61d82..d5b459a 100644
--- a/third_party/blink/renderer/modules/webusb/usb_isochronous_in_transfer_result.idl
+++ b/third_party/blink/renderer/modules/webusb/usb_isochronous_in_transfer_result.idl
@@ -5,10 +5,10 @@
 // https://wicg.github.io/webusb/#usbisochronousintransferresult
 
 [
-    Constructor(sequence<USBIsochronousInTransferPacket> packets, optional DataView? data),
     Exposed(DedicatedWorker WebUSBOnDedicatedWorkers, Window WebUSB),
     SecureContext
 ] interface USBIsochronousInTransferResult {
+    constructor(sequence<USBIsochronousInTransferPacket> packets, optional DataView? data);
     readonly attribute DataView? data;
     readonly attribute FrozenArray<USBIsochronousInTransferPacket> packets;
 };
diff --git a/third_party/blink/renderer/modules/webusb/usb_isochronous_out_transfer_packet.idl b/third_party/blink/renderer/modules/webusb/usb_isochronous_out_transfer_packet.idl
index 7473dd03..91ab499 100644
--- a/third_party/blink/renderer/modules/webusb/usb_isochronous_out_transfer_packet.idl
+++ b/third_party/blink/renderer/modules/webusb/usb_isochronous_out_transfer_packet.idl
@@ -5,10 +5,10 @@
 // https://wicg.github.io/webusb/#usbisochronousouttransferpacket
 
 [
-    Constructor(USBTransferStatus status, optional unsigned long bytesWritten = 0),
     Exposed(DedicatedWorker WebUSBOnDedicatedWorkers, Window WebUSB),
     SecureContext
 ] interface USBIsochronousOutTransferPacket {
+    constructor(USBTransferStatus status, optional unsigned long bytesWritten = 0);
     readonly attribute unsigned long bytesWritten;
     readonly attribute USBTransferStatus status;
 };
diff --git a/third_party/blink/renderer/modules/webusb/usb_isochronous_out_transfer_result.idl b/third_party/blink/renderer/modules/webusb/usb_isochronous_out_transfer_result.idl
index 3062e08..168a163 100644
--- a/third_party/blink/renderer/modules/webusb/usb_isochronous_out_transfer_result.idl
+++ b/third_party/blink/renderer/modules/webusb/usb_isochronous_out_transfer_result.idl
@@ -5,9 +5,9 @@
 // https://wicg.github.io/webusb/#usbisochronousouttransferresult
 
 [
-    Constructor(sequence<USBIsochronousOutTransferPacket> packets),
     Exposed(DedicatedWorker WebUSBOnDedicatedWorkers, Window WebUSB),
     SecureContext
 ] interface USBIsochronousOutTransferResult {
+    constructor(sequence<USBIsochronousOutTransferPacket> packets);
     readonly attribute FrozenArray<USBIsochronousOutTransferPacket> packets;
 };
diff --git a/third_party/blink/renderer/modules/webusb/usb_out_transfer_result.idl b/third_party/blink/renderer/modules/webusb/usb_out_transfer_result.idl
index dec458c..58eae2d 100644
--- a/third_party/blink/renderer/modules/webusb/usb_out_transfer_result.idl
+++ b/third_party/blink/renderer/modules/webusb/usb_out_transfer_result.idl
@@ -6,9 +6,9 @@
 
 [
     Exposed(DedicatedWorker WebUSBOnDedicatedWorkers, Window WebUSB),
-    Constructor(USBTransferStatus status, optional unsigned long bytesWritten = 0),
     SecureContext
 ] interface USBOutTransferResult {
+    constructor(USBTransferStatus status, optional unsigned long bytesWritten = 0);
     readonly attribute unsigned long bytesWritten;
     readonly attribute USBTransferStatus status;
 };
diff --git a/third_party/blink/renderer/modules/webusb/worker_navigator_usb.cc b/third_party/blink/renderer/modules/webusb/worker_navigator_usb.cc
index 55cb400..b6c4c7e6 100644
--- a/third_party/blink/renderer/modules/webusb/worker_navigator_usb.cc
+++ b/third_party/blink/renderer/modules/webusb/worker_navigator_usb.cc
@@ -6,6 +6,7 @@
 
 #include "third_party/blink/renderer/core/workers/worker_navigator.h"
 #include "third_party/blink/renderer/modules/webusb/usb.h"
+#include "third_party/blink/renderer/platform/heap/heap.h"
 #include "third_party/blink/renderer/platform/runtime_enabled_features.h"
 
 namespace blink {
@@ -44,7 +45,7 @@
         RuntimeEnabledFeatures::WebUSBOnDedicatedWorkersEnabled();
 
     if (isDedicatedWorkerAndEnabled) {
-      usb_ = USB::Create(*context);
+      usb_ = MakeGarbageCollected<USB>(*context);
     }
   }
   return usb_;
diff --git a/third_party/blink/renderer/modules/xr/xr_bounded_reference_space.cc b/third_party/blink/renderer/modules/xr/xr_bounded_reference_space.cc
index 2ae1dd9..8615dff 100644
--- a/third_party/blink/renderer/modules/xr/xr_bounded_reference_space.cc
+++ b/third_party/blink/renderer/modules/xr/xr_bounded_reference_space.cc
@@ -15,6 +15,10 @@
 
 namespace blink {
 namespace {
+
+// Bounds must be a valid polygon (at least 3 vertices).
+constexpr wtf_size_t kMinimumNumberOfBoundVertices = 3;
+
 float RoundCm(float val) {
   // Float round will only round to the nearest whole number. In order to get
   // two decimal points of precision, we need to move the decimal out then
@@ -65,7 +69,9 @@
     // We may not have bounds if we've lost tracking after being created.
     // Whether we have them or not, we need to clear the existing bounds.
     offset_bounds_geometry_.clear();
-    if (display_info->stage_parameters->bounds) {
+    if (display_info->stage_parameters->bounds &&
+        display_info->stage_parameters->bounds->size() >=
+            kMinimumNumberOfBoundVertices) {
       for (const auto& bound : *(display_info->stage_parameters->bounds)) {
         FloatPoint3D p = offset_from_native.MapPoint(
             FloatPoint3D(bound.X(), 0.0, bound.Z()));
diff --git a/third_party/blink/renderer/modules/xr/xr_input_source_event.idl b/third_party/blink/renderer/modules/xr/xr_input_source_event.idl
index d4e4a92..aaaf293 100644
--- a/third_party/blink/renderer/modules/xr/xr_input_source_event.idl
+++ b/third_party/blink/renderer/modules/xr/xr_input_source_event.idl
@@ -5,9 +5,9 @@
 [
     SecureContext,
     Exposed=Window,
-    RuntimeEnabled=WebXR,
-    Constructor(DOMString type, XRInputSourceEventInit eventInitDict)
+    RuntimeEnabled=WebXR
 ] interface XRInputSourceEvent : Event {
+  constructor(DOMString type, XRInputSourceEventInit eventInitDict);
   [SameObject] readonly attribute XRFrame frame;
   [SameObject] readonly attribute XRInputSource inputSource;
 };
diff --git a/third_party/blink/renderer/modules/xr/xr_input_sources_change_event.idl b/third_party/blink/renderer/modules/xr/xr_input_sources_change_event.idl
index 3d3acfa..7a6cfca 100644
--- a/third_party/blink/renderer/modules/xr/xr_input_sources_change_event.idl
+++ b/third_party/blink/renderer/modules/xr/xr_input_sources_change_event.idl
@@ -5,9 +5,9 @@
 [
     SecureContext,
     Exposed=Window,
-    RuntimeEnabled=WebXR,
-    Constructor(DOMString type, XRInputSourcesChangeEventInit eventInitDict)
+    RuntimeEnabled=WebXR
 ] interface XRInputSourcesChangeEvent : Event {
+  constructor(DOMString type, XRInputSourcesChangeEventInit eventInitDict);
   [SameObject] readonly attribute XRSession session;
   [SameObject, SaveSameObject] readonly attribute FrozenArray<XRInputSource> added;
   [SameObject, SaveSameObject] readonly attribute FrozenArray<XRInputSource> removed;
diff --git a/third_party/blink/renderer/modules/xr/xr_ray.idl b/third_party/blink/renderer/modules/xr/xr_ray.idl
index 38bb19e..290203a 100644
--- a/third_party/blink/renderer/modules/xr/xr_ray.idl
+++ b/third_party/blink/renderer/modules/xr/xr_ray.idl
@@ -6,13 +6,12 @@
 [
     SecureContext,
     Exposed=Window,
-    RuntimeEnabled=WebXRHitTest,
-    Constructor(),
-    Constructor(DOMPointInit origin),
-    Constructor(DOMPointInit origin, DOMPointInit direction),
-    Constructor(XRRigidTransform transform),
-    RaisesException=Constructor
+    RuntimeEnabled=WebXRHitTest
 ] interface XRRay {
+  [RaisesException] constructor();
+  [RaisesException] constructor(DOMPointInit origin);
+  [RaisesException] constructor(DOMPointInit origin, DOMPointInit direction);
+  [RaisesException] constructor(XRRigidTransform transform);
   [SameObject] readonly attribute DOMPointReadOnly origin;
   [SameObject] readonly attribute DOMPointReadOnly direction;
   [SameObject] readonly attribute Float32Array matrix;
diff --git a/third_party/blink/renderer/modules/xr/xr_reference_space_event.idl b/third_party/blink/renderer/modules/xr/xr_reference_space_event.idl
index 3e58aae..9b151dcd 100644
--- a/third_party/blink/renderer/modules/xr/xr_reference_space_event.idl
+++ b/third_party/blink/renderer/modules/xr/xr_reference_space_event.idl
@@ -6,9 +6,9 @@
 [
     SecureContext,
     Exposed=Window,
-    RuntimeEnabled=WebXR,
-    Constructor(DOMString type, XRReferenceSpaceEventInit eventInitDict)
+    RuntimeEnabled=WebXR
 ] interface XRReferenceSpaceEvent : Event {
+  constructor(DOMString type, XRReferenceSpaceEventInit eventInitDict);
   [SameObject] readonly attribute XRReferenceSpace referenceSpace;
   [SameObject] readonly attribute XRRigidTransform transform;
 };
diff --git a/third_party/blink/renderer/modules/xr/xr_rigid_transform.idl b/third_party/blink/renderer/modules/xr/xr_rigid_transform.idl
index 1faea2b..b66eb08 100644
--- a/third_party/blink/renderer/modules/xr/xr_rigid_transform.idl
+++ b/third_party/blink/renderer/modules/xr/xr_rigid_transform.idl
@@ -7,10 +7,9 @@
 [
     SecureContext,
     Exposed=Window,
-    RuntimeEnabled=WebXR,
-    Constructor(optional DOMPointInit position, optional DOMPointInit orientation),
-    RaisesException=Constructor
+    RuntimeEnabled=WebXR
 ] interface XRRigidTransform {
+  [RaisesException] constructor(optional DOMPointInit position, optional DOMPointInit orientation);
   [SameObject] readonly attribute DOMPointReadOnly position;
   [SameObject] readonly attribute DOMPointReadOnly orientation;
   [SameObject] readonly attribute Float32Array matrix;
diff --git a/third_party/blink/renderer/modules/xr/xr_session.cc b/third_party/blink/renderer/modules/xr/xr_session.cc
index 40cbb15..1861167 100644
--- a/third_party/blink/renderer/modules/xr/xr_session.cc
+++ b/third_party/blink/renderer/modules/xr/xr_session.cc
@@ -97,8 +97,6 @@
 
 const double kDegToRad = M_PI / 180.0;
 
-constexpr wtf_size_t kMinNumberOfBounds = 2;
-
 // Indices into the views array.
 const unsigned int kMonoOrStereoLeftView = 0;
 const unsigned int kStereoRightView = 1;
@@ -503,12 +501,7 @@
           MakeGarbageCollected<XRReferenceSpace>(this, requested_type);
       break;
     case XRReferenceSpace::Type::kTypeBoundedFloor: {
-      bool supports_bounded =
-          immersive() && display_info_->stage_parameters &&
-          display_info_->stage_parameters->bounds &&
-          display_info_->stage_parameters->bounds->size() > kMinNumberOfBounds;
-
-      if (supports_bounded) {
+      if (immersive()) {
         reference_space = MakeGarbageCollected<XRBoundedReferenceSpace>(this);
       }
       break;
diff --git a/third_party/blink/renderer/modules/xr/xr_session_event.idl b/third_party/blink/renderer/modules/xr/xr_session_event.idl
index 0079794..b26e8f1e 100644
--- a/third_party/blink/renderer/modules/xr/xr_session_event.idl
+++ b/third_party/blink/renderer/modules/xr/xr_session_event.idl
@@ -6,8 +6,8 @@
 [
     SecureContext,
     Exposed=Window,
-    RuntimeEnabled=WebXR,
-    Constructor(DOMString type, XRSessionEventInit eventInitDict)
+    RuntimeEnabled=WebXR
 ] interface XRSessionEvent : Event {
+  constructor(DOMString type, XRSessionEventInit eventInitDict);
   [SameObject] readonly attribute XRSession session;
 };
diff --git a/third_party/blink/renderer/modules/xr/xr_webgl_layer.idl b/third_party/blink/renderer/modules/xr/xr_webgl_layer.idl
index 879c476..accaea1 100644
--- a/third_party/blink/renderer/modules/xr/xr_webgl_layer.idl
+++ b/third_party/blink/renderer/modules/xr/xr_webgl_layer.idl
@@ -9,10 +9,9 @@
     SecureContext,
     Exposed=Window,
     RuntimeEnabled=WebXR,
-    Constructor(XRSession session, XRWebGLRenderingContext context, optional XRWebGLLayerInit layerInit),
-    RaisesException=Constructor,
     Measure
 ] interface XRWebGLLayer {
+  [RaisesException] constructor(XRSession session, XRWebGLRenderingContext context, optional XRWebGLLayerInit layerInit);
   readonly attribute boolean antialias;
   readonly attribute boolean ignoreDepthValues;
 
diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn
index 619b030..5ec2b41 100644
--- a/third_party/blink/renderer/platform/BUILD.gn
+++ b/third_party/blink/renderer/platform/BUILD.gn
@@ -1503,6 +1503,7 @@
     "//gin",
     "//jingle:webrtc_glue",
     "//media",
+    "//media/capture:capture_switches",
     "//media/capture/mojom:video_capture",
     "//mojo/public/cpp/base",
     "//mojo/public/cpp/bindings",
diff --git a/third_party/blink/renderer/platform/exported/web_cursor_info.cc b/third_party/blink/renderer/platform/exported/web_cursor_info.cc
index c26adc1..21c245e 100644
--- a/third_party/blink/renderer/platform/exported/web_cursor_info.cc
+++ b/third_party/blink/renderer/platform/exported/web_cursor_info.cc
@@ -37,8 +37,7 @@
 static SkBitmap GetCursorBitmap(const Cursor& cursor) {
   if (!cursor.GetImage())
     return {};
-  return cursor.GetImage()->AsSkBitmapForCurrentFrame(
-      kDoNotRespectImageOrientation);
+  return cursor.GetImage()->AsSkBitmapForCurrentFrame(kRespectImageOrientation);
 }
 
 WebCursorInfo::WebCursorInfo(const Cursor& cursor)
diff --git a/third_party/blink/renderer/platform/fonts/shaping/caching_word_shape_iterator.cc b/third_party/blink/renderer/platform/fonts/shaping/caching_word_shape_iterator.cc
index 5b02036..a9886bc 100644
--- a/third_party/blink/renderer/platform/fonts/shaping/caching_word_shape_iterator.cc
+++ b/third_party/blink/renderer/platform/fonts/shaping/caching_word_shape_iterator.cc
@@ -13,8 +13,8 @@
 CachingWordShapeIterator::ShapeWordWithoutSpacing(const TextRun& word_run,
                                                   const Font* font) {
   ShapeCacheEntry* cache_entry = shape_cache_->Add(word_run, ShapeCacheEntry());
-  if (cache_entry && cache_entry->shape_result_)
-    return cache_entry->shape_result_;
+  if (cache_entry && *cache_entry)
+    return *cache_entry;
 
   const String word_text = word_run.NormalizedUTF16();
   HarfBuzzShaper shaper(word_text);
@@ -25,7 +25,7 @@
 
   shape_result->SetDeprecatedInkBounds(shape_result->ComputeInkBounds());
   if (cache_entry)
-    cache_entry->shape_result_ = shape_result;
+    *cache_entry = shape_result;
 
   return shape_result;
 }
diff --git a/third_party/blink/renderer/platform/fonts/shaping/shape_cache.h b/third_party/blink/renderer/platform/fonts/shaping/shape_cache.h
index b6a3ff9..9dfd507 100644
--- a/third_party/blink/renderer/platform/fonts/shaping/shape_cache.h
+++ b/third_party/blink/renderer/platform/fonts/shaping/shape_cache.h
@@ -39,11 +39,7 @@
 
 namespace blink {
 
-struct ShapeCacheEntry {
-  DISALLOW_NEW();
-  ShapeCacheEntry() { shape_result_ = nullptr; }
-  scoped_refptr<const ShapeResult> shape_result_;
-};
+using ShapeCacheEntry = scoped_refptr<const ShapeResult>;
 
 class ShapeCache {
   USING_FAST_MALLOC(ShapeCache);
@@ -118,7 +114,7 @@
     if (run.length() > SmallStringKey::Capacity())
       return nullptr;
 
-    return AddSlowCase(run, entry);
+    return AddSlowCase(run, std::move(entry));
   }
 
   void ClearIfVersionChanged(unsigned version) {
@@ -140,10 +136,10 @@
   size_t ByteSize() const {
     size_t self_byte_size = 0;
     for (auto cache_entry : single_char_map_) {
-      self_byte_size += cache_entry.value.shape_result_->ByteSize();
+      self_byte_size += cache_entry.value->ByteSize();
     }
     for (auto cache_entry : short_string_map_) {
-      self_byte_size += cache_entry.value.shape_result_->ByteSize();
+      self_byte_size += cache_entry.value->ByteSize();
     }
     return self_byte_size;
   }
@@ -160,7 +156,8 @@
       // as such use bit 31 (zero-based) to indicate direction.
       if (run.Direction() == TextDirection::kRtl)
         key |= (1u << 31);
-      SingleCharMap::AddResult add_result = single_char_map_.insert(key, entry);
+      SingleCharMap::AddResult add_result =
+          single_char_map_.insert(key, std::move(entry));
       is_new_entry = add_result.is_new_entry;
       value = &add_result.stored_value->value;
     } else {
@@ -170,9 +167,8 @@
       } else {
         small_string_key = SmallStringKey(run.Span16(), run.Direction());
       }
-
       SmallStringMap::AddResult add_result =
-          short_string_map_.insert(small_string_key, entry);
+          short_string_map_.insert(small_string_key, std::move(entry));
       is_new_entry = add_result.is_new_entry;
       value = &add_result.stored_value->value;
     }
@@ -202,6 +198,7 @@
   struct SmallStringKeyHashTraits : WTF::SimpleClassHashTraits<SmallStringKey> {
     STATIC_ONLY(SmallStringKeyHashTraits);
     static const bool kHasIsEmptyValueFunction = true;
+    static const bool kEmptyValueIsZero = false;
     static bool IsEmptyValue(const SmallStringKey& key) {
       return key.IsHashTableEmptyValue();
     }
diff --git a/third_party/blink/renderer/platform/graphics/canvas_resource.cc b/third_party/blink/renderer/platform/graphics/canvas_resource.cc
index 429b7c2f..6229282 100644
--- a/third_party/blink/renderer/platform/graphics/canvas_resource.cc
+++ b/third_party/blink/renderer/platform/graphics/canvas_resource.cc
@@ -315,16 +315,16 @@
     base::WeakPtr<CanvasResourceProvider> provider,
     SkFilterQuality filter_quality,
     const CanvasColorParams& color_params,
-    bool is_overlay_candidate,
     bool is_origin_top_left,
-    bool allow_concurrent_read_write_access,
-    bool is_accelerated)
+    bool is_accelerated,
+    uint32_t shared_image_usage_flags)
     : CanvasResource(std::move(provider), filter_quality, color_params),
       context_provider_wrapper_(std::move(context_provider_wrapper)),
-      is_overlay_candidate_(is_overlay_candidate),
       size_(size),
       is_origin_top_left_(is_origin_top_left),
       is_accelerated_(is_accelerated),
+      is_overlay_candidate_(shared_image_usage_flags &
+                            gpu::SHARED_IMAGE_USAGE_SCANOUT),
       texture_target_(
           is_overlay_candidate_
               ? gpu::GetBufferTextureTarget(
@@ -341,6 +341,7 @@
       Platform::Current()->GetGpuMemoryBufferManager();
   if (!is_accelerated_) {
     DCHECK(gpu_memory_buffer_manager);
+    DCHECK(shared_image_usage_flags & gpu::SHARED_IMAGE_USAGE_DISPLAY);
 
     gpu_memory_buffer_ = gpu_memory_buffer_manager->CreateGpuMemoryBuffer(
         gfx::Size(size), ColorParams().GetBufferFormat(),
@@ -355,23 +356,22 @@
       context_provider_wrapper_->ContextProvider()->SharedImageInterface();
   DCHECK(shared_image_interface);
 
-  uint32_t flags = gpu::SHARED_IMAGE_USAGE_DISPLAY |
-                   gpu::SHARED_IMAGE_USAGE_GLES2 |
-                   gpu::SHARED_IMAGE_USAGE_GLES2_FRAMEBUFFER_HINT;
-  if (is_overlay_candidate_)
-    flags |= gpu::SHARED_IMAGE_USAGE_SCANOUT;
-  if (allow_concurrent_read_write_access)
-    flags |= gpu::SHARED_IMAGE_USAGE_CONCURRENT_READ_WRITE;
+  // The GLES2 flag is needed for rendering via GL using a GrContext.
+  // TODO(jochin): Use SHARED_IMAGE_USAGE_RASTER instead when adding support for
+  // OOP raster. See crbug.com/1023277.
+  shared_image_usage_flags = shared_image_usage_flags |
+                             gpu::SHARED_IMAGE_USAGE_GLES2 |
+                             gpu::SHARED_IMAGE_USAGE_GLES2_FRAMEBUFFER_HINT;
 
   gpu::Mailbox shared_image_mailbox;
   if (gpu_memory_buffer_) {
     shared_image_mailbox = shared_image_interface->CreateSharedImage(
         gpu_memory_buffer_.get(), gpu_memory_buffer_manager,
-        ColorParams().GetStorageGfxColorSpace(), flags);
+        ColorParams().GetStorageGfxColorSpace(), shared_image_usage_flags);
   } else {
     shared_image_mailbox = shared_image_interface->CreateSharedImage(
         ColorParams().TransferableResourceFormat(), gfx::Size(size),
-        ColorParams().GetStorageGfxColorSpace(), flags);
+        ColorParams().GetStorageGfxColorSpace(), shared_image_usage_flags);
   }
 
   // Wait for the mailbox to be ready to be used.
@@ -387,7 +387,8 @@
   // a texture for writes.
   if (!is_accelerated_)
     return;
-  if (allow_concurrent_read_write_access) {
+  if (shared_image_usage_flags &
+      gpu::SHARED_IMAGE_USAGE_CONCURRENT_READ_WRITE) {
     owning_thread_data().texture_id_for_write_access =
         raster_interface->CreateAndConsumeForGpuRaster(shared_image_mailbox);
   } else {
@@ -402,15 +403,14 @@
     base::WeakPtr<CanvasResourceProvider> provider,
     SkFilterQuality filter_quality,
     const CanvasColorParams& color_params,
-    bool is_overlay_candidate,
     bool is_origin_top_left,
-    bool allow_concurrent_read_write_access,
-    bool is_accelerated) {
+    bool is_accelerated,
+    uint32_t shared_image_usage_flags) {
   TRACE_EVENT0("blink", "CanvasResourceSharedImage::Create");
   auto resource = base::AdoptRef(new CanvasResourceSharedImage(
       size, std::move(context_provider_wrapper), std::move(provider),
-      filter_quality, color_params, is_overlay_candidate, is_origin_top_left,
-      allow_concurrent_read_write_access, is_accelerated));
+      filter_quality, color_params, is_origin_top_left, is_accelerated,
+      shared_image_usage_flags));
   return resource->IsValid() ? resource : nullptr;
 }
 
diff --git a/third_party/blink/renderer/platform/graphics/canvas_resource.h b/third_party/blink/renderer/platform/graphics/canvas_resource.h
index b5f09b1d..7c39c70e 100644
--- a/third_party/blink/renderer/platform/graphics/canvas_resource.h
+++ b/third_party/blink/renderer/platform/graphics/canvas_resource.h
@@ -271,10 +271,9 @@
       base::WeakPtr<CanvasResourceProvider>,
       SkFilterQuality,
       const CanvasColorParams&,
-      bool is_overlay_candidate,
       bool is_origin_top_left,
-      bool allow_concurrent_read_write_access,
-      bool is_accelerated);
+      bool is_accelerated,
+      uint32_t shared_image_usage_flags);
   ~CanvasResourceSharedImage() override;
 
   bool IsRecycleable() const final { return true; }
@@ -356,10 +355,9 @@
                             base::WeakPtr<CanvasResourceProvider>,
                             SkFilterQuality,
                             const CanvasColorParams&,
-                            bool is_overlay_candidate,
                             bool is_origin_top_left,
-                            bool allow_concurrent_read_write_access,
-                            bool is_accelerated);
+                            bool is_accelerated,
+                            uint32_t shared_image_usage_flags);
 
   OwningThreadData& owning_thread_data() {
     DCHECK_EQ(base::PlatformThread::CurrentId(), owning_thread_id_);
@@ -394,10 +392,10 @@
   std::unique_ptr<gfx::GpuMemoryBuffer> gpu_memory_buffer_;
 
   // Accessed on any thread.
-  const bool is_overlay_candidate_;
   const IntSize size_;
   const bool is_origin_top_left_;
   const bool is_accelerated_;
+  const bool is_overlay_candidate_;
   const GLenum texture_target_;
   const scoped_refptr<base::SingleThreadTaskRunner> owning_thread_task_runner_;
 
diff --git a/third_party/blink/renderer/platform/graphics/canvas_resource_provider.cc b/third_party/blink/renderer/platform/graphics/canvas_resource_provider.cc
index b3f74eb..2a19f857 100644
--- a/third_party/blink/renderer/platform/graphics/canvas_resource_provider.cc
+++ b/third_party/blink/renderer/platform/graphics/canvas_resource_provider.cc
@@ -14,6 +14,7 @@
 #include "gpu/GLES2/gl2extchromium.h"
 #include "gpu/command_buffer/client/raster_interface.h"
 #include "gpu/command_buffer/common/capabilities.h"
+#include "gpu/command_buffer/common/shared_image_usage.h"
 #include "gpu/config/gpu_driver_bug_workaround_type.h"
 #include "gpu/config/gpu_feature_info.h"
 #include "third_party/blink/public/platform/platform.h"
@@ -133,9 +134,8 @@
           context_provider_wrapper,
       base::WeakPtr<CanvasResourceDispatcher> resource_dispatcher,
       bool is_origin_top_left,
-      bool is_overlay_candidate,
-      bool maybe_single_buffered,
-      bool is_accelerated)
+      bool is_accelerated,
+      uint32_t shared_image_usage_flags)
       : CanvasResourceProvider(
             kSharedImage,
             size,
@@ -151,9 +151,8 @@
             is_origin_top_left,
             std::move(context_provider_wrapper),
             std::move(resource_dispatcher)),
-        is_overlay_candidate_(is_overlay_candidate),
-        maybe_single_buffered_(maybe_single_buffered),
-        is_accelerated_(is_accelerated) {
+        is_accelerated_(is_accelerated),
+        shared_image_usage_flags_(shared_image_usage_flags) {
     resource_ = NewOrRecycledResource();
     if (resource_)
       EnsureWriteAccess();
@@ -165,7 +164,8 @@
   bool IsAccelerated() const final { return is_accelerated_; }
   bool SupportsDirectCompositing() const override { return true; }
   bool SupportsSingleBuffering() const override {
-    return maybe_single_buffered_;
+    return shared_image_usage_flags_ &
+           gpu::SHARED_IMAGE_USAGE_CONCURRENT_READ_WRITE;
   }
   GLuint GetBackingTextureHandleForOverwrite() override {
     DCHECK(is_accelerated_);
@@ -186,11 +186,10 @@
     if (IsGpuContextLost())
       return nullptr;
 
-    bool allow_concurrent_read_write_access = maybe_single_buffered_;
     return CanvasResourceSharedImage::Create(
         Size(), ContextProviderWrapper(), CreateWeakPtr(), FilterQuality(),
-        ColorParams(), is_overlay_candidate_, IsOriginTopLeft(),
-        allow_concurrent_read_write_access, is_accelerated_);
+        ColorParams(), IsOriginTopLeft(), is_accelerated_,
+        shared_image_usage_flags_);
   }
 
   void NotifyTexParamsModified(const CanvasResource* resource) override {
@@ -431,9 +430,8 @@
     return static_cast<const CanvasResourceSharedImage*>(resource_.get());
   }
 
-  const bool is_overlay_candidate_;
-  const bool maybe_single_buffered_;
   const bool is_accelerated_;
+  const uint32_t shared_image_usage_flags_;
   bool current_resource_has_write_access_ = false;
   scoped_refptr<CanvasResource> resource_;
   scoped_refptr<StaticBitmapImage> cached_snapshot_;
@@ -662,7 +660,9 @@
       return kAcceleratedDirect3DFallbackList;
     case CanvasResourceProvider::ResourceUsage::
         kSoftwareCompositedDirect2DResourceUsage:
-      return kCompositedFallbackList;
+      NOTREACHED();
+      static const Vector<CanvasResourceType> kEmptyList;
+      return kEmptyList;
   }
   NOTREACHED();
 }
@@ -767,50 +767,54 @@
             resource_dispatcher);
         break;
       case CanvasResourceType::kSharedImage: {
-        DCHECK_NE(usage, ResourceUsage::kSoftwareResourceUsage);
-
         if (!context_provider_wrapper)
           continue;
 
-        const bool is_accelerated =
-            usage == ResourceUsage::kAcceleratedResourceUsage ||
-            usage == ResourceUsage::kAcceleratedCompositedResourceUsage ||
-            usage == ResourceUsage::kAcceleratedDirect2DResourceUsage ||
-            usage == ResourceUsage::kAcceleratedDirect3DResourceUsage;
-
-        // If the rendering will be in software and we don't have GMB support,
-        // fallback to bitmap provider type.
-        if (!is_accelerated && !is_gpu_memory_buffer_image_allowed)
-          continue;
-
-        // texture_storage_image is required to create shared images supporting
-        // scanout usage.
         const bool can_use_overlays =
             is_gpu_memory_buffer_image_allowed &&
             context_provider_wrapper->ContextProvider()
                 ->GetCapabilities()
                 .texture_storage_image;
 
-        const bool is_overlay_candidate =
-            (usage == ResourceUsage::kAcceleratedDirect2DResourceUsage ||
-             usage == ResourceUsage::kAcceleratedDirect3DResourceUsage ||
-             usage == ResourceUsage::kAcceleratedCompositedResourceUsage ||
-             usage == ResourceUsage::kSoftwareCompositedResourceUsage) &&
-            can_use_overlays;
-
-        // Single buffering requires concurrent read/write access to the
-        // resource which is sub-optimal for software raster since that would
-        // require concurrent access to the resource on the CPU and GPU, so
-        // enable it for accelerated low latency canvas only.
-        const bool maybe_single_buffered =
-            (usage == ResourceUsage::kAcceleratedDirect2DResourceUsage ||
-             usage == ResourceUsage::kAcceleratedDirect3DResourceUsage) &&
-            is_gpu_memory_buffer_image_allowed;
+        bool is_accelerated = false;
+        uint32_t shared_image_usage_flags = 0u;
+        switch (usage) {
+          case ResourceUsage::kSoftwareResourceUsage:
+            NOTREACHED();
+            continue;
+          case ResourceUsage::kSoftwareCompositedResourceUsage:
+            // Rendering in software with accelerated compositing.
+            if (!is_gpu_memory_buffer_image_allowed)
+              continue;
+            shared_image_usage_flags |= gpu::SHARED_IMAGE_USAGE_DISPLAY;
+            if (can_use_overlays)
+              shared_image_usage_flags |= gpu::SHARED_IMAGE_USAGE_SCANOUT;
+            is_accelerated = false;
+            break;
+          case ResourceUsage::kAcceleratedDirect2DResourceUsage:
+          case ResourceUsage::kAcceleratedDirect3DResourceUsage:
+            if (can_use_overlays) {
+              shared_image_usage_flags |=
+                  gpu::SHARED_IMAGE_USAGE_CONCURRENT_READ_WRITE;
+            }
+            FALLTHROUGH;
+          case ResourceUsage::kAcceleratedCompositedResourceUsage:
+            shared_image_usage_flags |= gpu::SHARED_IMAGE_USAGE_DISPLAY;
+            if (can_use_overlays)
+              shared_image_usage_flags |= gpu::SHARED_IMAGE_USAGE_SCANOUT;
+            FALLTHROUGH;
+          case ResourceUsage::kAcceleratedResourceUsage:
+            is_accelerated = true;
+            break;
+          case ResourceUsage::kSoftwareCompositedDirect2DResourceUsage:
+            NOTREACHED();
+            continue;
+        }
 
         provider = std::make_unique<CanvasResourceProviderSharedImage>(
             size, msaa_sample_count, filter_quality, color_params,
             context_provider_wrapper, resource_dispatcher, is_origin_top_left,
-            is_overlay_candidate, maybe_single_buffered, is_accelerated);
+            is_accelerated, shared_image_usage_flags);
       } break;
     }
     if (!provider->IsValid())
diff --git a/third_party/blink/renderer/platform/graphics/canvas_resource_provider_test.cc b/third_party/blink/renderer/platform/graphics/canvas_resource_provider_test.cc
index 85b64c7..43bfd26 100644
--- a/third_party/blink/renderer/platform/graphics/canvas_resource_provider_test.cc
+++ b/third_party/blink/renderer/platform/graphics/canvas_resource_provider_test.cc
@@ -135,8 +135,7 @@
 
   auto provider = CanvasResourceProvider::Create(
       kSize,
-      CanvasResourceProvider::ResourceUsage::
-          kSoftwareCompositedDirect2DResourceUsage,
+      CanvasResourceProvider::ResourceUsage::kSoftwareCompositedResourceUsage,
       context_provider_wrapper_, 0 /* msaa_sample_count */,
       kLow_SkFilterQuality, kColorParams,
       CanvasResourceProvider::kAllowImageChromiumPresentationMode,
diff --git a/third_party/blink/renderer/platform/graphics/crossfade_generated_image.cc b/third_party/blink/renderer/platform/graphics/crossfade_generated_image.cc
index 59c68f6..3a6eb509 100644
--- a/third_party/blink/renderer/platform/graphics/crossfade_generated_image.cc
+++ b/third_party/blink/renderer/platform/graphics/crossfade_generated_image.cc
@@ -43,10 +43,12 @@
       percentage_(percentage),
       crossfade_size_(crossfade_size) {}
 
-void CrossfadeGeneratedImage::DrawCrossfade(cc::PaintCanvas* canvas,
-                                            const PaintFlags& flags,
-                                            ImageClampingMode clamp_mode,
-                                            ImageDecodingMode decode_mode) {
+void CrossfadeGeneratedImage::DrawCrossfade(
+    cc::PaintCanvas* canvas,
+    const PaintFlags& flags,
+    RespectImageOrientationEnum respect_orientation,
+    ImageClampingMode clamp_mode,
+    ImageDecodingMode decode_mode) {
   FloatRect from_image_rect(FloatPoint(), FloatSize(from_image_->Size()));
   FloatRect to_image_rect(FloatPoint(), FloatSize(to_image_->Size()));
   FloatRect dest_rect((FloatPoint()), crossfade_size_);
@@ -72,16 +74,17 @@
   image_flags.setBlendMode(SkBlendMode::kPlus);
   image_flags.setColor(ScaleAlpha(flags.getColor(), percentage_));
   to_image_->Draw(canvas, image_flags, dest_rect, to_image_rect,
-                  kDoNotRespectImageOrientation, clamp_mode, decode_mode);
+                  respect_orientation, clamp_mode, decode_mode);
 }
 
-void CrossfadeGeneratedImage::Draw(cc::PaintCanvas* canvas,
-                                   const PaintFlags& flags,
-                                   const FloatRect& dst_rect,
-                                   const FloatRect& src_rect,
-                                   RespectImageOrientationEnum,
-                                   ImageClampingMode clamp_mode,
-                                   ImageDecodingMode decode_mode) {
+void CrossfadeGeneratedImage::Draw(
+    cc::PaintCanvas* canvas,
+    const PaintFlags& flags,
+    const FloatRect& dst_rect,
+    const FloatRect& src_rect,
+    RespectImageOrientationEnum respect_orientation,
+    ImageClampingMode clamp_mode,
+    ImageDecodingMode decode_mode) {
   // Draw nothing if either of the images hasn't loaded yet.
   if (from_image_ == Image::NullImage() || to_image_ == Image::NullImage())
     return;
@@ -94,11 +97,13 @@
                   dst_rect.Height() / src_rect.Height());
   canvas->translate(-src_rect.X(), -src_rect.Y());
 
-  DrawCrossfade(canvas, flags, clamp_mode, decode_mode);
+  DrawCrossfade(canvas, flags, respect_orientation, clamp_mode, decode_mode);
 }
 
-void CrossfadeGeneratedImage::DrawTile(GraphicsContext& context,
-                                       const FloatRect& src_rect) {
+void CrossfadeGeneratedImage::DrawTile(
+    GraphicsContext& context,
+    const FloatRect& src_rect,
+    RespectImageOrientationEnum respect_orientation) {
   // Draw nothing if either of the images hasn't loaded yet.
   if (from_image_ == Image::NullImage() || to_image_ == Image::NullImage())
     return;
@@ -108,7 +113,8 @@
   FloatRect dest_rect((FloatPoint()), crossfade_size_);
   flags.setFilterQuality(
       context.ComputeFilterQuality(this, dest_rect, src_rect));
-  DrawCrossfade(context.Canvas(), flags, kClampImageToSourceRect, kSyncDecode);
+  DrawCrossfade(context.Canvas(), flags, respect_orientation,
+                kClampImageToSourceRect, kSyncDecode);
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/platform/graphics/crossfade_generated_image.h b/third_party/blink/renderer/platform/graphics/crossfade_generated_image.h
index 55c3703..17fb61c5 100644
--- a/third_party/blink/renderer/platform/graphics/crossfade_generated_image.h
+++ b/third_party/blink/renderer/platform/graphics/crossfade_generated_image.h
@@ -59,7 +59,9 @@
             RespectImageOrientationEnum,
             ImageClampingMode,
             ImageDecodingMode) override;
-  void DrawTile(GraphicsContext&, const FloatRect&) final;
+  void DrawTile(GraphicsContext&,
+                const FloatRect&,
+                RespectImageOrientationEnum) final;
 
   CrossfadeGeneratedImage(scoped_refptr<Image> from_image,
                           scoped_refptr<Image> to_image,
@@ -70,6 +72,7 @@
  private:
   void DrawCrossfade(cc::PaintCanvas*,
                      const cc::PaintFlags&,
+                     RespectImageOrientationEnum,
                      ImageClampingMode,
                      ImageDecodingMode);
 
diff --git a/third_party/blink/renderer/platform/graphics/generated_image.cc b/third_party/blink/renderer/platform/graphics/generated_image.cc
index 6efb7a029..666cc1d 100644
--- a/third_party/blink/renderer/platform/graphics/generated_image.cc
+++ b/third_party/blink/renderer/platform/graphics/generated_image.cc
@@ -38,13 +38,15 @@
 
 namespace blink {
 
-void GeneratedImage::DrawPattern(GraphicsContext& dest_context,
-                                 const FloatRect& src_rect,
-                                 const FloatSize& scale,
-                                 const FloatPoint& phase,
-                                 SkBlendMode composite_op,
-                                 const FloatRect& dest_rect,
-                                 const FloatSize& repeat_spacing) {
+void GeneratedImage::DrawPattern(
+    GraphicsContext& dest_context,
+    const FloatRect& src_rect,
+    const FloatSize& scale,
+    const FloatPoint& phase,
+    SkBlendMode composite_op,
+    const FloatRect& dest_rect,
+    const FloatSize& repeat_spacing,
+    RespectImageOrientationEnum respect_orientation) {
   FloatRect tile_rect = src_rect;
   tile_rect.Expand(repeat_spacing);
 
@@ -53,7 +55,7 @@
   pattern_matrix.preTranslate(tile_rect.X(), tile_rect.Y());
 
   sk_sp<PaintShader> tile_shader =
-      CreateShader(tile_rect, &pattern_matrix, src_rect);
+      CreateShader(tile_rect, &pattern_matrix, src_rect, respect_orientation);
 
   PaintFlags fill_flags = dest_context.FillFlags();
   fill_flags.setShader(std::move(tile_shader));
@@ -63,13 +65,15 @@
   dest_context.DrawRect(dest_rect, fill_flags);
 }
 
-sk_sp<PaintShader> GeneratedImage::CreateShader(const FloatRect& tile_rect,
-                                                const SkMatrix* pattern_matrix,
-                                                const FloatRect& src_rect) {
+sk_sp<PaintShader> GeneratedImage::CreateShader(
+    const FloatRect& tile_rect,
+    const SkMatrix* pattern_matrix,
+    const FloatRect& src_rect,
+    RespectImageOrientationEnum respect_orientation) {
   auto paint_controller = std::make_unique<PaintController>();
   GraphicsContext context(*paint_controller);
   context.BeginRecording(tile_rect);
-  DrawTile(context, src_rect);
+  DrawTile(context, src_rect, respect_orientation);
   sk_sp<PaintRecord> record = context.EndRecording();
 
   return PaintShader::MakePaintRecord(std::move(record), tile_rect,
diff --git a/third_party/blink/renderer/platform/graphics/generated_image.h b/third_party/blink/renderer/platform/graphics/generated_image.h
index 21d225cf..679b3132c 100644
--- a/third_party/blink/renderer/platform/graphics/generated_image.h
+++ b/third_party/blink/renderer/platform/graphics/generated_image.h
@@ -52,17 +52,21 @@
                    const FloatPoint&,
                    SkBlendMode,
                    const FloatRect&,
-                   const FloatSize& repeat_spacing) final;
+                   const FloatSize& repeat_spacing,
+                   RespectImageOrientationEnum) final;
   virtual sk_sp<cc::PaintShader> CreateShader(const FloatRect& tile_rect,
                                               const SkMatrix* pattern_matrix,
-                                              const FloatRect& src_rect);
+                                              const FloatRect& src_rect,
+                                              RespectImageOrientationEnum);
 
   // FIXME: Implement this to be less conservative.
   bool CurrentFrameKnownToBeOpaque() override { return false; }
 
   GeneratedImage(const FloatSize& size) : size_(size) {}
 
-  virtual void DrawTile(GraphicsContext&, const FloatRect&) = 0;
+  virtual void DrawTile(GraphicsContext&,
+                        const FloatRect&,
+                        RespectImageOrientationEnum) = 0;
 
   FloatSize size_;
 };
diff --git a/third_party/blink/renderer/platform/graphics/gradient_generated_image.cc b/third_party/blink/renderer/platform/graphics/gradient_generated_image.cc
index f9fd7b2..dbd7b216 100644
--- a/third_party/blink/renderer/platform/graphics/gradient_generated_image.cc
+++ b/third_party/blink/renderer/platform/graphics/gradient_generated_image.cc
@@ -54,7 +54,8 @@
 }
 
 void GradientGeneratedImage::DrawTile(GraphicsContext& context,
-                                      const FloatRect& src_rect) {
+                                      const FloatRect& src_rect,
+                                      RespectImageOrientationEnum) {
   // TODO(ccameron): This function should not ignore |context|'s color behavior.
   // https://crbug.com/672306
   PaintFlags gradient_flags(context.FillFlags());
diff --git a/third_party/blink/renderer/platform/graphics/gradient_generated_image.h b/third_party/blink/renderer/platform/graphics/gradient_generated_image.h
index 66641fb..072a19c2 100644
--- a/third_party/blink/renderer/platform/graphics/gradient_generated_image.h
+++ b/third_party/blink/renderer/platform/graphics/gradient_generated_image.h
@@ -59,7 +59,9 @@
             RespectImageOrientationEnum,
             ImageClampingMode,
             ImageDecodingMode) override;
-  void DrawTile(GraphicsContext&, const FloatRect&) override;
+  void DrawTile(GraphicsContext&,
+                const FloatRect&,
+                RespectImageOrientationEnum) override;
 
   GradientGeneratedImage(scoped_refptr<Gradient> generator,
                          const FloatSize& size)
diff --git a/third_party/blink/renderer/platform/graphics/graphics_context.cc b/third_party/blink/renderer/platform/graphics/graphics_context.cc
index 3bf0b074..7ae6844 100644
--- a/third_party/blink/renderer/platform/graphics/graphics_context.cc
+++ b/third_party/blink/renderer/platform/graphics/graphics_context.cc
@@ -1026,17 +1026,19 @@
       std::min(resampling, ImageInterpolationQuality()));
 }
 
-void GraphicsContext::DrawImageTiled(Image* image,
-                                     const FloatRect& dest_rect,
-                                     const FloatRect& src_rect,
-                                     const FloatSize& scale_src_to_dest,
-                                     const FloatPoint& phase,
-                                     const FloatSize& repeat_spacing,
-                                     SkBlendMode op) {
+void GraphicsContext::DrawImageTiled(
+    Image* image,
+    const FloatRect& dest_rect,
+    const FloatRect& src_rect,
+    const FloatSize& scale_src_to_dest,
+    const FloatPoint& phase,
+    const FloatSize& repeat_spacing,
+    SkBlendMode op,
+    RespectImageOrientationEnum respect_orientation) {
   if (ContextDisabled() || !image)
     return;
   image->DrawPattern(*this, src_rect, scale_src_to_dest, phase, op, dest_rect,
-                     repeat_spacing);
+                     repeat_spacing, respect_orientation);
   paint_controller_.SetImagePainted();
 }
 
diff --git a/third_party/blink/renderer/platform/graphics/graphics_context.h b/third_party/blink/renderer/platform/graphics/graphics_context.h
index b33ed07..0e7b1135 100644
--- a/third_party/blink/renderer/platform/graphics/graphics_context.h
+++ b/third_party/blink/renderer/platform/graphics/graphics_context.h
@@ -242,22 +242,22 @@
                  const FloatRect* src_rect = nullptr,
                  bool has_filter_property = false,
                  SkBlendMode = SkBlendMode::kSrcOver,
-                 RespectImageOrientationEnum = kDoNotRespectImageOrientation);
-  void DrawImageRRect(
-      Image*,
-      Image::ImageDecodingMode,
-      const FloatRoundedRect& dest,
-      const FloatRect& src_rect,
-      bool has_filter_property = false,
-      SkBlendMode = SkBlendMode::kSrcOver,
-      RespectImageOrientationEnum = kDoNotRespectImageOrientation);
+                 RespectImageOrientationEnum = kRespectImageOrientation);
+  void DrawImageRRect(Image*,
+                      Image::ImageDecodingMode,
+                      const FloatRoundedRect& dest,
+                      const FloatRect& src_rect,
+                      bool has_filter_property = false,
+                      SkBlendMode = SkBlendMode::kSrcOver,
+                      RespectImageOrientationEnum = kRespectImageOrientation);
   void DrawImageTiled(Image* image,
                       const FloatRect& dest_rect,
                       const FloatRect& src_rect,
                       const FloatSize& scale_src_to_dest,
                       const FloatPoint& phase,
                       const FloatSize& repeat_spacing,
-                      SkBlendMode = SkBlendMode::kSrcOver);
+                      SkBlendMode = SkBlendMode::kSrcOver,
+                      RespectImageOrientationEnum = kRespectImageOrientation);
 
   // These methods write to the canvas.
   // Also drawLine(const IntPoint& point1, const IntPoint& point2) and
diff --git a/third_party/blink/renderer/platform/graphics/graphics_layer.cc b/third_party/blink/renderer/platform/graphics/graphics_layer.cc
index 31607b3..eb30043a 100644
--- a/third_party/blink/renderer/platform/graphics/graphics_layer.cc
+++ b/third_party/blink/renderer/platform/graphics/graphics_layer.cc
@@ -416,35 +416,18 @@
     CcLayer()->SetNeedsDisplay();
 }
 
-void GraphicsLayer::UpdateContentsRect() {
+void GraphicsLayer::UpdateContentsLayerBounds() {
   cc::Layer* contents_layer = ContentsLayerIfRegistered();
   if (!contents_layer)
     return;
 
-  contents_layer->SetPosition(
-      FloatPoint(contents_rect_.X(), contents_rect_.Y()));
-  if (!image_layer_) {
-    contents_layer->SetBounds(static_cast<gfx::Size>(contents_rect_.Size()));
-  } else {
-    DCHECK_EQ(image_layer_.get(), contents_layer_);
-    // The image_layer_ has fixed bounds, and we apply bounds changes via the
-    // transform instead. Since we never change the transform on the
-    // |image_layer_| otherwise, we can assume it is identity and just apply
-    // the bounds to it directly. Same thing for transform origin.
-    DCHECK(image_layer_->transform_origin() == gfx::Point3F());
-
-    if (contents_rect_.Size().IsEmpty() || image_size_.IsEmpty()) {
-      image_layer_->SetTransform(gfx::Transform());
-      contents_layer->SetBounds(static_cast<gfx::Size>(contents_rect_.Size()));
-    } else {
-      gfx::Transform image_transform;
-      image_transform.Scale(
-          static_cast<float>(contents_rect_.Width()) / image_size_.Width(),
-          static_cast<float>(contents_rect_.Height()) / image_size_.Height());
-      image_layer_->SetTransform(image_transform);
-      image_layer_->SetBounds(static_cast<gfx::Size>(image_size_));
-    }
+  IntSize contents_size = contents_rect_.Size();
+  if (image_layer_) {
+    DCHECK_EQ(image_layer_.get(), contents_layer);
+    if (!contents_size.IsEmpty() && !image_size_.IsEmpty())
+      contents_size = image_size_;
   }
+  contents_layer->SetBounds(gfx::Size(contents_size));
 }
 
 static HashSet<int>* g_registered_layer_set;
@@ -472,7 +455,7 @@
       SetupContentsLayer(layer);
       children_changed = true;
     }
-    UpdateContentsRect();
+    UpdateContentsLayerBounds();
     prevent_contents_opaque_changes_ = prevent_contents_opaque_changes;
   } else {
     if (contents_layer_) {
@@ -697,7 +680,7 @@
     return;
 
   contents_rect_ = rect;
-  UpdateContentsRect();
+  UpdateContentsLayerBounds();
   client_.GraphicsLayersDidChange();
 }
 
@@ -742,7 +725,6 @@
                            image_orientation.UsesWidthAsHeight());
     // Image layers can not be marked as opaque due to crbug.com/870857.
     image_layer_->SetContentsOpaque(false);
-    UpdateContentsRect();
   } else if (image_layer_) {
     UnregisterContentsLayer(image_layer_.get());
     image_layer_ = nullptr;
diff --git a/third_party/blink/renderer/platform/graphics/graphics_layer.h b/third_party/blink/renderer/platform/graphics/graphics_layer.h
index 14169672..b4e50b8 100644
--- a/third_party/blink/renderer/platform/graphics/graphics_layer.h
+++ b/third_party/blink/renderer/platform/graphics/graphics_layer.h
@@ -174,7 +174,7 @@
   void SetContentsToImage(
       Image*,
       Image::ImageDecodingMode decode_mode,
-      RespectImageOrientationEnum = kDoNotRespectImageOrientation);
+      RespectImageOrientationEnum = kRespectImageOrientation);
   // If |prevent_contents_opaque_changes| is set to true, then calls to
   // SetContentsOpaque() will not be passed on to the |layer|. Use when
   // the client wants to have control of the opaqueness of the contents
@@ -287,7 +287,7 @@
   // Helper functions used by settors to keep layer's the state consistent.
   void UpdateChildList();
   void UpdateLayerIsDrawable();
-  void UpdateContentsRect();
+  void UpdateContentsLayerBounds();
 
   void SetContentsTo(cc::Layer*, bool prevent_contents_opaque_changes);
   void SetupContentsLayer(cc::Layer*);
diff --git a/third_party/blink/renderer/platform/graphics/hit_test_rect.h b/third_party/blink/renderer/platform/graphics/hit_test_rect.h
index 258b684..63d71b9 100644
--- a/third_party/blink/renderer/platform/graphics/hit_test_rect.h
+++ b/third_party/blink/renderer/platform/graphics/hit_test_rect.h
@@ -17,7 +17,7 @@
   TouchAction allowed_touch_action;
 
   HitTestRect(const LayoutRect& layout_rect)
-      : HitTestRect(layout_rect, TouchAction::kTouchActionNone) {}
+      : HitTestRect(layout_rect, TouchAction::kNone) {}
   HitTestRect(const LayoutRect& layout_rect, TouchAction action)
       : rect(layout_rect), allowed_touch_action(action) {}
 
diff --git a/third_party/blink/renderer/platform/graphics/image.cc b/third_party/blink/renderer/platform/graphics/image.cc
index bcb20fd..aee2360 100644
--- a/third_party/blink/renderer/platform/graphics/image.cc
+++ b/third_party/blink/renderer/platform/graphics/image.cc
@@ -215,7 +215,8 @@
                         const FloatPoint& phase,
                         SkBlendMode composite_op,
                         const FloatRect& dest_rect,
-                        const FloatSize& repeat_spacing) {
+                        const FloatSize& repeat_spacing,
+                        RespectImageOrientationEnum) {
   TRACE_EVENT0("skia", "Image::drawPattern");
 
   if (dest_rect.IsEmpty())
diff --git a/third_party/blink/renderer/platform/graphics/image.h b/third_party/blink/renderer/platform/graphics/image.h
index 445dbd8f..5072e7b2 100644
--- a/third_party/blink/renderer/platform/graphics/image.h
+++ b/third_party/blink/renderer/platform/graphics/image.h
@@ -109,6 +109,7 @@
   virtual bool HasIntrinsicSize() const { return true; }
 
   virtual IntSize Size() const = 0;
+  virtual FloatSize SizeAsFloat() const { return FloatSize(Size()); }
   IntRect Rect() const { return IntRect(IntPoint(), Size()); }
   int width() const { return Size().Width(); }
   int height() const { return Size().Height(); }
@@ -276,7 +277,8 @@
                            const FloatPoint& phase,
                            SkBlendMode,
                            const FloatRect&,
-                           const FloatSize& repeat_spacing);
+                           const FloatSize& repeat_spacing,
+                           RespectImageOrientationEnum);
 
   // Creates and initializes a PaintImageBuilder with the metadata flags for the
   // PaintImage.
diff --git a/third_party/blink/renderer/platform/graphics/paint_generated_image.cc b/third_party/blink/renderer/platform/graphics/paint_generated_image.cc
index 45dbceb..9fc7193 100644
--- a/third_party/blink/renderer/platform/graphics/paint_generated_image.cc
+++ b/third_party/blink/renderer/platform/graphics/paint_generated_image.cc
@@ -31,7 +31,8 @@
 }
 
 void PaintGeneratedImage::DrawTile(GraphicsContext& context,
-                                   const FloatRect& src_rect) {
+                                   const FloatRect& src_rect,
+                                   RespectImageOrientationEnum) {
   context.DrawRecord(record_);
 }
 
diff --git a/third_party/blink/renderer/platform/graphics/paint_generated_image.h b/third_party/blink/renderer/platform/graphics/paint_generated_image.h
index 06fb89c4..6978106 100644
--- a/third_party/blink/renderer/platform/graphics/paint_generated_image.h
+++ b/third_party/blink/renderer/platform/graphics/paint_generated_image.h
@@ -28,7 +28,9 @@
             RespectImageOrientationEnum,
             ImageClampingMode,
             ImageDecodingMode) override;
-  void DrawTile(GraphicsContext&, const FloatRect&) final;
+  void DrawTile(GraphicsContext&,
+                const FloatRect&,
+                RespectImageOrientationEnum) final;
 
   PaintGeneratedImage(sk_sp<PaintRecord> record, const FloatSize& size)
       : GeneratedImage(size), record_(std::move(record)) {}
diff --git a/third_party/blink/renderer/platform/graphics/placeholder_image.cc b/third_party/blink/renderer/platform/graphics/placeholder_image.cc
index 43a015c67..f18b186 100644
--- a/third_party/blink/renderer/platform/graphics/placeholder_image.cc
+++ b/third_party/blink/renderer/platform/graphics/placeholder_image.cc
@@ -252,8 +252,8 @@
 
   PaintRecorder paint_recorder;
   Draw(paint_recorder.beginRecording(FloatRect(dest_rect)), PaintFlags(),
-       FloatRect(dest_rect), FloatRect(dest_rect),
-       kDoNotRespectImageOrientation, kClampImageToSourceRect, kSyncDecode);
+       FloatRect(dest_rect), FloatRect(dest_rect), kRespectImageOrientation,
+       kClampImageToSourceRect, kSyncDecode);
 
   paint_record_for_current_frame_ = paint_recorder.finishRecordingAsPicture();
   paint_record_content_id_ = PaintImage::GetNextContentId();
@@ -359,13 +359,15 @@
       Font::kUseFallbackIfFontNotReady, 1.0f, flags);
 }
 
-void PlaceholderImage::DrawPattern(GraphicsContext& context,
-                                   const FloatRect& src_rect,
-                                   const FloatSize& scale,
-                                   const FloatPoint& phase,
-                                   SkBlendMode mode,
-                                   const FloatRect& dest_rect,
-                                   const FloatSize& repeat_spacing) {
+void PlaceholderImage::DrawPattern(
+    GraphicsContext& context,
+    const FloatRect& src_rect,
+    const FloatSize& scale,
+    const FloatPoint& phase,
+    SkBlendMode mode,
+    const FloatRect& dest_rect,
+    const FloatSize& repeat_spacing,
+    RespectImageOrientationEnum respect_orientation) {
   DCHECK(context.Canvas());
 
   PaintFlags flags = context.FillFlags();
@@ -374,9 +376,8 @@
   // Ignore the pattern specifications and just draw a single placeholder image
   // over the whole |dest_rect|. This is done in order to prevent repeated icons
   // from cluttering tiled background images.
-  Draw(context.Canvas(), flags, dest_rect, src_rect,
-       kDoNotRespectImageOrientation, kClampImageToSourceRect,
-       kUnspecifiedDecode);
+  Draw(context.Canvas(), flags, dest_rect, src_rect, respect_orientation,
+       kClampImageToSourceRect, kUnspecifiedDecode);
 }
 
 void PlaceholderImage::DestroyDecodedData() {
diff --git a/third_party/blink/renderer/platform/graphics/placeholder_image.h b/third_party/blink/renderer/platform/graphics/placeholder_image.h
index e6a2647..e1e70680 100644
--- a/third_party/blink/renderer/platform/graphics/placeholder_image.h
+++ b/third_party/blink/renderer/platform/graphics/placeholder_image.h
@@ -83,7 +83,8 @@
                    const FloatPoint& phase,
                    SkBlendMode,
                    const FloatRect& dest_rect,
-                   const FloatSize& repeat_spacing) override;
+                   const FloatSize& repeat_spacing,
+                   RespectImageOrientationEnum) override;
 
   // SetData does nothing, and the passed in buffer is ignored.
   SizeAvailability SetData(scoped_refptr<SharedBuffer>, bool) override;
diff --git a/third_party/blink/renderer/platform/graphics/placeholder_image_test.cc b/third_party/blink/renderer/platform/graphics/placeholder_image_test.cc
index 81fb9df..f22352b8 100644
--- a/third_party/blink/renderer/platform/graphics/placeholder_image_test.cc
+++ b/third_party/blink/renderer/platform/graphics/placeholder_image_test.cc
@@ -75,9 +75,8 @@
   EXPECT_CALL(canvas, drawTextBlob(_, _, _, _)).Times(0);
 
   image.Draw(&canvas, PaintFlags(), dest_rect,
-             FloatRect(0.0f, 0.0f, 100.0f, 100.0f),
-             kDoNotRespectImageOrientation, Image::kClampImageToSourceRect,
-             Image::kUnspecifiedDecode);
+             FloatRect(0.0f, 0.0f, 100.0f, 100.0f), kRespectImageOrientation,
+             Image::kClampImageToSourceRect, Image::kUnspecifiedDecode);
 }
 
 void DrawImageExpectingIconOnly(PlaceholderImage& image,
diff --git a/third_party/blink/renderer/platform/heap/cancelable_task_scheduler_test.cc b/third_party/blink/renderer/platform/heap/cancelable_task_scheduler_test.cc
index 23df65f..97f4c8b 100644
--- a/third_party/blink/renderer/platform/heap/cancelable_task_scheduler_test.cc
+++ b/third_party/blink/renderer/platform/heap/cancelable_task_scheduler_test.cc
@@ -25,8 +25,6 @@
     return true;
   }
 
-  bool RunsTasksInCurrentSequence() const override { return false; }
-
   void RunUntilIdle() {}
 };
 
diff --git a/third_party/blink/renderer/platform/heap/thread_state.cc b/third_party/blink/renderer/platform/heap/thread_state.cc
index 9c41e9c..9afaaa7 100644
--- a/third_party/blink/renderer/platform/heap/thread_state.cc
+++ b/third_party/blink/renderer/platform/heap/thread_state.cc
@@ -127,8 +127,6 @@
     worker_pool::PostTask(location, WTF::CrossThreadBindOnce(std::move(task)));
     return true;
   }
-
-  bool RunsTasksInCurrentSequence() const override { return false; }
 };
 
 }  // namespace
diff --git a/third_party/blink/renderer/platform/peerconnection/DEPS b/third_party/blink/renderer/platform/peerconnection/DEPS
index 8f2f646..d6fd407 100644
--- a/third_party/blink/renderer/platform/peerconnection/DEPS
+++ b/third_party/blink/renderer/platform/peerconnection/DEPS
@@ -14,6 +14,7 @@
     "+base/strings/string_split.h",
     "+base/threading/thread_restrictions.h",
     "+media/base",
+    "+media/capture/capture_switches.h",
     "+media/media_buildflags.h",
     "+media/video/gpu_video_accelerator_factories.h",
     "+media/video/video_decode_accelerator.h",
diff --git a/third_party/blink/renderer/platform/peerconnection/rtc_video_encoder.cc b/third_party/blink/renderer/platform/peerconnection/rtc_video_encoder.cc
index 59b01cfa..788cd15 100644
--- a/third_party/blink/renderer/platform/peerconnection/rtc_video_encoder.cc
+++ b/third_party/blink/renderer/platform/peerconnection/rtc_video_encoder.cc
@@ -25,10 +25,10 @@
 #include "base/time/time.h"
 #include "media/base/bind_to_current_loop.h"
 #include "media/base/bitstream_buffer.h"
-#include "media/base/media_switches.h"
 #include "media/base/video_bitrate_allocation.h"
 #include "media/base/video_frame.h"
 #include "media/base/video_util.h"
+#include "media/capture/capture_switches.h"
 #include "media/video/gpu_video_accelerator_factories.h"
 #include "media/video/h264_parser.h"
 #include "media/video/video_encode_accelerator.h"
@@ -61,34 +61,6 @@
 
 namespace {
 
-webrtc::VideoEncoder::EncoderInfo CopyToWebrtcEncoderInfo(
-    const media::VideoEncoderInfo& enc_info) {
-  webrtc::VideoEncoder::EncoderInfo info;
-  info.implementation_name = enc_info.implementation_name;
-  info.supports_native_handle = enc_info.supports_native_handle;
-  info.has_trusted_rate_controller = enc_info.has_trusted_rate_controller;
-  info.is_hardware_accelerated = enc_info.is_hardware_accelerated;
-  info.supports_simulcast = enc_info.supports_simulcast;
-  info.scaling_settings = webrtc::VideoEncoder::ScalingSettings(
-      enc_info.scaling_settings.min_qp, enc_info.scaling_settings.max_qp);
-  static_assert(
-      webrtc::kMaxSpatialLayers >= media::VideoEncoderInfo::kMaxSpatialLayers,
-      "webrtc::kMaxSpatiallayers is less than "
-      "media::VideoEncoderInfo::kMaxSpatialLayers");
-  for (size_t i = 0; i < base::size(enc_info.fps_allocation); ++i) {
-    info.fps_allocation[i] =
-        absl::InlinedVector<uint8_t, webrtc::kMaxTemporalStreams>(
-            enc_info.fps_allocation[i].begin(),
-            enc_info.fps_allocation[i].end());
-  }
-  for (const auto& limit : enc_info.resolution_bitrate_limits) {
-    info.resolution_bitrate_limits.emplace_back(
-        limit.frame_size.GetArea(), limit.min_start_bitrate_bps,
-        limit.min_bitrate_bps, limit.max_bitrate_bps);
-  }
-  return info;
-}
-
 struct RTCTimestamps {
   RTCTimestamps(const base::TimeDelta& media_timestamp,
                 int32_t rtp_timestamp,
@@ -184,11 +156,6 @@
                               media::VideoCodecProfile profile,
                               base::WaitableEvent* async_waiter,
                               int32_t* async_retval);
-
-  void GetEncoderInfo(base::WaitableEvent* async_waiter,
-                      int32_t* async_retval,
-                      webrtc::VideoEncoder::EncoderInfo* info);
-
   // Enqueue a frame from WebRTC for encoding.
   // RTCVideoEncoder expects to be able to call this function synchronously from
   // its own thread, hence the |async_waiter| and |async_retval| arguments.
@@ -457,30 +424,6 @@
   // be signaled.
 }
 
-void RTCVideoEncoder::Impl::GetEncoderInfo(
-    base::WaitableEvent* async_waiter,
-    int32_t* async_retval,
-    webrtc::VideoEncoder::EncoderInfo* info) {
-  CHECK(video_encoder_);
-  RegisterAsyncWaiter(async_waiter, async_retval);
-  int32_t status = GetStatus();
-  if (status != WEBRTC_VIDEO_CODEC_OK) {
-    SignalAsyncWaiter(status);
-    return;
-  }
-
-  media::VideoEncoderInfo enc_info = video_encoder_->GetEncoderInfo();
-  *info = CopyToWebrtcEncoderInfo(enc_info);
-  // TODO(hiroh): Remove these overwrites once all VEAs implements
-  // GetEncoderInfo().
-  if (info->implementation_name.empty())
-    info->implementation_name = RTCVideoEncoder::Impl::ImplementationName();
-  info->supports_native_handle = true;
-  info->is_hardware_accelerated = true;
-  info->has_internal_source = false;
-  SignalAsyncWaiter(WEBRTC_VIDEO_CODEC_OK);
-}
-
 void RTCVideoEncoder::Impl::Enqueue(const webrtc::VideoFrame* input_frame,
                                     bool force_keyframe,
                                     base::WaitableEvent* async_waiter,
@@ -1280,21 +1223,11 @@
 }
 
 webrtc::VideoEncoder::EncoderInfo RTCVideoEncoder::GetEncoderInfo() const {
-  CHECK(impl_);
-  base::ScopedAllowBaseSyncPrimitivesOutsideBlockingScope allow_wait;
-  base::WaitableEvent get_encoder_info_waiter(
-      base::WaitableEvent::ResetPolicy::MANUAL,
-      base::WaitableEvent::InitialState::NOT_SIGNALED);
-  int32_t get_encoder_info_retval;
-  webrtc::VideoEncoder::EncoderInfo info;
-  PostCrossThreadTask(
-      *gpu_task_runner_.get(), FROM_HERE,
-      CrossThreadBindOnce(&RTCVideoEncoder::Impl::GetEncoderInfo,
-                          scoped_refptr<Impl>(impl_),
-                          CrossThreadUnretained(&get_encoder_info_waiter),
-                          CrossThreadUnretained(&get_encoder_info_retval),
-                          CrossThreadUnretained(&info)));
-  get_encoder_info_waiter.Wait();
+  EncoderInfo info;
+  info.implementation_name = RTCVideoEncoder::Impl::ImplementationName();
+  info.supports_native_handle = true;
+  info.is_hardware_accelerated = true;
+  info.has_internal_source = false;
   return info;
 }
 
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
index 6735b8e3..f92433a 100644
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -836,7 +836,7 @@
     },
     {
       name: "ImageOrientation",
-      status: "test",
+      status: "stable",
     },
     {
       name: "ImplicitRootScroller",
@@ -962,7 +962,7 @@
     },
     {
       name: "MathMLCore",
-      status:"test",
+      status:"experimental",
       depends_on: ["LayoutNG"],
     },
     {
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc b/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc
index 0e52953..4f9da7ee 100644
--- a/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc
+++ b/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc
@@ -10,6 +10,7 @@
 #include "base/metrics/histogram_macros.h"
 #include "base/trace_event/blame_context.h"
 #include "third_party/blink/public/common/features.h"
+#include "third_party/blink/public/common/scheduler/web_scheduler_tracked_feature.h"
 #include "third_party/blink/public/platform/blame_context.h"
 #include "third_party/blink/public/platform/web_string.h"
 #include "third_party/blink/renderer/platform/runtime_enabled_features.h"
@@ -638,6 +639,12 @@
 void FrameSchedulerImpl::ResetForNavigation() {
   document_bound_weak_factory_.InvalidateWeakPtrs();
 
+  for (const auto& it : back_forward_cache_opt_out_counts_) {
+    TRACE_EVENT_ASYNC_END0(
+        "renderer.scheduler", "ActiveSchedulerTrackedFeature",
+        reinterpret_cast<intptr_t>(this) ^ static_cast<int>(it.first));
+  }
+
   back_forward_cache_opt_out_counts_.clear();
   back_forward_cache_opt_outs_.reset();
   last_uploaded_active_features_ = 0;
@@ -650,13 +657,19 @@
 
   if (policy.disable_aggressive_throttling)
     OnAddedAggressiveThrottlingOptOut();
-  if (policy.disable_back_forward_cache)
+  if (policy.disable_back_forward_cache) {
     OnAddedBackForwardCacheOptOut(feature);
+  }
 
   uint64_t new_mask = GetActiveFeaturesTrackedForBackForwardCacheMetricsMask();
 
-  if (old_mask != new_mask)
+  if (old_mask != new_mask) {
     NotifyDelegateAboutFeaturesAfterCurrentTask();
+    TRACE_EVENT_ASYNC_BEGIN1(
+        "renderer.scheduler", "ActiveSchedulerTrackedFeature",
+        reinterpret_cast<intptr_t>(this) ^ static_cast<int>(feature), "feature",
+        FeatureToString(feature));
+  }
 }
 
 void FrameSchedulerImpl::OnStoppedUsingFeature(
@@ -671,8 +684,12 @@
 
   uint64_t new_mask = GetActiveFeaturesTrackedForBackForwardCacheMetricsMask();
 
-  if (old_mask != new_mask)
+  if (old_mask != new_mask) {
     NotifyDelegateAboutFeaturesAfterCurrentTask();
+    TRACE_EVENT_ASYNC_END0(
+        "renderer.scheduler", "ActiveSchedulerTrackedFeature",
+        reinterpret_cast<intptr_t>(this) ^ static_cast<int>(feature));
+  }
 }
 
 void FrameSchedulerImpl::NotifyDelegateAboutFeaturesAfterCurrentTask() {
diff --git a/third_party/blink/renderer/platform/wtf/text/string_view_test.cc b/third_party/blink/renderer/platform/wtf/text/string_view_test.cc
index 924e1d5..143fd2b 100644
--- a/third_party/blink/renderer/platform/wtf/text/string_view_test.cc
+++ b/third_party/blink/renderer/platform/wtf/text/string_view_test.cc
@@ -460,4 +460,30 @@
   EXPECT_TRUE(EqualIgnoringASCIICase(StringView(""), ""));
 }
 
+TEST(StringViewTest, DeprecatedEqualIgnoringCase) {
+  constexpr UChar kLongSAndKelvin[] = {0x017F, 0x212A, 0};
+  EXPECT_TRUE(DeprecatedEqualIgnoringCase("SK", kLongSAndKelvin));
+  EXPECT_TRUE(DeprecatedEqualIgnoringCase("sk", kLongSAndKelvin));
+
+  // Turkish-specific mappings are not applied.
+  constexpr UChar kSmallDotlessI[] = {0x0131, 0};
+  constexpr UChar kCapitalDotI[] = {0x0130, 0};
+  EXPECT_FALSE(DeprecatedEqualIgnoringCase("i", kSmallDotlessI));
+  EXPECT_FALSE(DeprecatedEqualIgnoringCase("i", kCapitalDotI));
+
+  // DeprecatedEqualIgnoringCase() has length-equality check.
+  constexpr UChar kSmallSharpS[] = {0x00DF, 0};
+  constexpr UChar kCapitalSharpS[] = {0x1E9E, 0};
+  EXPECT_FALSE(DeprecatedEqualIgnoringCase("ss", kSmallSharpS));
+  EXPECT_FALSE(DeprecatedEqualIgnoringCase("SS", kSmallSharpS));
+  EXPECT_FALSE(DeprecatedEqualIgnoringCase("ss", kCapitalSharpS));
+  EXPECT_FALSE(DeprecatedEqualIgnoringCase("SS", kCapitalSharpS));
+  constexpr UChar kLigatureFFI[] = {0xFB03, 0};
+  EXPECT_FALSE(DeprecatedEqualIgnoringCase("ffi", kLigatureFFI));
+
+  constexpr UChar kLigatureFFIAndSSSS[] = {0xFB03, 's', 's', 's', 's', 0};
+  constexpr UChar kFFIAndSharpSs[] = {'f', 'f', 'i', 0x00DF, 0x00DF, 0};
+  EXPECT_TRUE(DeprecatedEqualIgnoringCase(kLigatureFFIAndSSSS, kFFIAndSharpSs));
+}
+
 }  // namespace WTF
diff --git a/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py b/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py
index 8997b2b..cc2c79b 100755
--- a/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py
+++ b/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py
@@ -597,6 +597,12 @@
         ],
     },
     {
+        'paths': ['third_party/blink/renderer/core/xml'],
+        'allowed': [
+            'xpathyy::.+',
+        ],
+    },
+    {
         'paths': [
             'third_party/blink/renderer/modules/device_orientation/',
             'third_party/blink/renderer/modules/gamepad/',
diff --git a/third_party/blink/tools/blinkpy/web_tests/lint_test_expectations.py b/third_party/blink/tools/blinkpy/web_tests/lint_test_expectations.py
index b34487c..3b167a4 100644
--- a/third_party/blink/tools/blinkpy/web_tests/lint_test_expectations.py
+++ b/third_party/blink/tools/blinkpy/web_tests/lint_test_expectations.py
@@ -51,30 +51,41 @@
     # (the default Port for this host) and it would work the same.
 
     failures = []
-    for port_to_lint in ports_to_lint:
-        expectations_dict = port_to_lint.all_expectations_dict()
-
-        for path in port_to_lint.extra_expectations_files():
+    wpt_overrides_exps_path = host.filesystem.join(
+        ports_to_lint[0].web_tests_dir(), 'WPTOverrideExpectations')
+    web_gpu_exps_path = host.filesystem.join(
+        ports_to_lint[0].web_tests_dir(), 'WebGPUExpectations')
+    paths = [wpt_overrides_exps_path, web_gpu_exps_path]
+    expectations_dict = {}
+    for path in paths:
+        if host.filesystem.exists(path):
+            expectations_dict[path] = host.filesystem.read_text_file(path)
+    for port in ports_to_lint:
+        expectations_dict.update(port.all_expectations_dict())
+        for path in port.extra_expectations_files():
             if host.filesystem.exists(path):
                 expectations_dict[path] = host.filesystem.read_text_file(path)
-
-        for expectations_file in expectations_dict:
-
-            if expectations_file in files_linted:
-                continue
-
-            try:
-                test_expectations.TestExpectations(
-                    port_to_lint,
-                    expectations_dict={expectations_file: expectations_dict[expectations_file]},
-                    is_lint_mode=True)
-            except test_expectations.ParseError as error:
+    for path, content in expectations_dict.items():
+        try:
+            test_expectations.TestExpectations(
+                ports_to_lint[0],
+                expectations_dict={path: content},
+                is_lint_mode=True)
+        except test_expectations.ParseError as error:
+            _log.error('')
+            for warning in error.warnings:
+                _log.error(warning)
+                failures.append('%s: %s' % (path, warning))
                 _log.error('')
-                for warning in error.warnings:
-                    _log.error(warning)
-                    failures.append('%s: %s' % (expectations_file, warning))
+        for lineno, line in enumerate(content.split('\n'), 1):
+            if line.strip().startswith('Bug('):
+                error = (("%s:%d Expectation '%s' has the Bug(...) token, "
+                          "The token has been removed in the new expectations format") %
+                          (host.filesystem.basename(path), lineno, line))
+                _log.error(error)
+                failures.append(error)
                 _log.error('')
-            files_linted.add(expectations_file)
+
     return failures
 
 
diff --git a/third_party/blink/tools/blinkpy/web_tests/lint_test_expectations_unittest.py b/third_party/blink/tools/blinkpy/web_tests/lint_test_expectations_unittest.py
index ffacca3d..f771c80 100644
--- a/third_party/blink/tools/blinkpy/web_tests/lint_test_expectations_unittest.py
+++ b/third_party/blink/tools/blinkpy/web_tests/lint_test_expectations_unittest.py
@@ -106,6 +106,7 @@
         self.assertEqual(res, [])
         self.assertEqual(host.ports_parsed, ['a', 'b', 'b-win'])
 
+    @unittest.skip('crbug.com/986447, re-enable after merging crrev.com/c/1918294')
     def test_lint_test_files(self):
         options = optparse.Values({'platform': 'test-mac-mac10.10'})
         host = MockHost()
diff --git a/third_party/blink/web_tests/ASANExpectations b/third_party/blink/web_tests/ASANExpectations
index 06a6524..9d8cf9e 100644
--- a/third_party/blink/web_tests/ASANExpectations
+++ b/third_party/blink/web_tests/ASANExpectations
@@ -1,3 +1,8 @@
+# tags: [ Android Fuchsia IOS IOS12.2 IOS13.0 Linux Mac Mac10.10 Mac10.11 Mac10.12 Retina
+#         Mac10.13 Win Win7 Win10 ]
+# tags: [ Release Debug ]
+# results: [ Timeout Crash Pass Failure Slow Skip ]
+
 # This file is used for tests that only need to be suppressed on
 # the Chromium WebKit ASAN bots.
 # Further documentation:
diff --git a/third_party/blink/web_tests/FlagExpectations/back-forward-cache b/third_party/blink/web_tests/FlagExpectations/back-forward-cache
index e2ab6428..3e8d35b4f 100644
--- a/third_party/blink/web_tests/FlagExpectations/back-forward-cache
+++ b/third_party/blink/web_tests/FlagExpectations/back-forward-cache
@@ -1,4 +1,9 @@
+# tags: [ Android Fuchsia IOS IOS12.2 IOS13.0 Linux Mac Mac10.10 Mac10.11 Mac10.12 Retina
+#         Mac10.13 Win Win7 Win10 ]
+# tags: [ Release Debug ]
+# results: [ Timeout Crash Pass Failure Slow Skip ]
+
 # Tests that fail with BackForwardCache, running on linux-bfcache-debug bot.
 crbug.com/1010870 virtual/gpu/fast/canvas/color-space/canvas-createImageBitmap-e_srgb.html [ Failure ]
 crbug.com/1010870 virtual/gpu/fast/canvas/canvas-composite-alpha.html [ Failure ]
-crbug.com/1010870 virtual/gpu/fast/canvas/canvas-composite-text-alpha.html [ Failure ]
\ No newline at end of file
+crbug.com/1010870 virtual/gpu/fast/canvas/canvas-composite-text-alpha.html [ Failure ]
diff --git a/third_party/blink/web_tests/FlagExpectations/composite-after-paint b/third_party/blink/web_tests/FlagExpectations/composite-after-paint
index 9a14df4..63a6ae45 100644
--- a/third_party/blink/web_tests/FlagExpectations/composite-after-paint
+++ b/third_party/blink/web_tests/FlagExpectations/composite-after-paint
@@ -1,29 +1,29 @@
 # Expectations for CompositeAfterPaint
 # See: https://docs.google.com/document/d/1QCM912Dr6u38DqyQqd7pxQxDy8FFOoWMMDq7uAXqKdA/view
-Bug(none) http/tests/devtools/tracing/ [ Skip ]
+http/tests/devtools/tracing/ [ Skip ]
 
-Bug(none) virtual/composite-after-paint/ [ Skip ]
+virtual/composite-after-paint/ [ Skip ]
 
-Bug(none) virtual/gpu/fast/canvas/ [ Skip ]
-Bug(none) virtual/layout_ng_block_frag/ [ Skip ]
-Bug(none) virtual/layout_ng_fieldset/ [ Skip ]
-Bug(none) virtual/layout_ng_flex_box/ [ Skip ]
-Bug(none) virtual/prefer_compositing_to_lcd_text/compositing/overflow/ [ Skip ]
-Bug(none) virtual/stable/ [ Skip ]
+virtual/gpu/fast/canvas/ [ Skip ]
+virtual/layout_ng_block_frag/ [ Skip ]
+virtual/layout_ng_fieldset/ [ Skip ]
+virtual/layout_ng_flex_box/ [ Skip ]
+virtual/prefer_compositing_to_lcd_text/compositing/overflow/ [ Skip ]
+virtual/stable/ [ Skip ]
 
 # For now we track the failures of the base tests of the following virtual suites.
-Bug(none) virtual/exotic-color-space/images/ [ Skip ]
-Bug(none) virtual/gpu-rasterization/images/ [ Skip ]
-Bug(none) virtual/mouseevent_fractional/fast/events/touch/ [ Skip ]
-Bug(none) virtual/scroll_customization/fast/events/touch/ [ Skip ]
-Bug(none) virtual/threaded/printing/ [ Skip ]
-Bug(none) virtual/threaded/http/tests/devtools/tracing/ [ Skip ]
-Bug(none) virtual/controls-refresh/ [ Skip ]
-Bug(none) virtual/controls-refresh-hc/ [ Skip ]
-Bug(none) virtual/web-components-v0-disabled/ [ Skip ]
+virtual/exotic-color-space/images/ [ Skip ]
+virtual/gpu-rasterization/images/ [ Skip ]
+virtual/mouseevent_fractional/fast/events/touch/ [ Skip ]
+virtual/scroll_customization/fast/events/touch/ [ Skip ]
+virtual/threaded/printing/ [ Skip ]
+virtual/threaded/http/tests/devtools/tracing/ [ Skip ]
+virtual/controls-refresh/ [ Skip ]
+virtual/controls-refresh-hc/ [ Skip ]
+virtual/web-components-v0-disabled/ [ Skip ]
 
 # Can't rebaseline because the file path is too long.
-Bug(none) virtual/compositor_threaded_scrollbar_scrolling/paint/invalidation/scroll/sticky/invalidate-after-composited-scroll-with-sticky.html [ Skip ]
+virtual/compositor_threaded_scrollbar_scrolling/paint/invalidation/scroll/sticky/invalidate-after-composited-scroll-with-sticky.html [ Skip ]
 
 # Fail before CompositeAfterPaint but pass with it.
 crbug.com/472330 fast/borders/border-image-outset-split-inline-vertical-lr.html [ Pass ]
@@ -45,11 +45,11 @@
 crbug.com/937573 compositing/geometry/limit-layer-bounds-transformed.html [ Failure ]
 crbug.com/937573 compositing/layer-creation/scroll-partial-update.html [ Failure ]
 
-Bug(none) virtual/android/fullscreen/video-overlay-scroll.html [ Failure ]
-Bug(none) virtual/android/rootscroller/fixed-chaining-with-implicit-pointer-events-none.html [ Failure ]
-Bug(none) virtual/android/rootscroller/nested-rootscroller-browser-controls-bounds-shown.html [ Crash ]
-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 ]
+virtual/android/fullscreen/video-overlay-scroll.html [ Failure ]
+virtual/android/rootscroller/fixed-chaining-with-implicit-pointer-events-none.html [ Failure ]
+virtual/android/rootscroller/nested-rootscroller-browser-controls-bounds-shown.html [ Crash ]
+virtual/android/url-bar/bottom-and-top-fixed-sticks-to-top.html [ Crash ]
+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 ]
@@ -63,49 +63,49 @@
 crbug.com/1029620 paint/invalidation/window-resize/window-resize-child-background-image-fixed-centered.html [ Pass Failure ]
 
 # Needs to implement logic for CompositingReasons::kAssumedOverlap.
-Bug(none) compositing/layer-creation/overlap-animation-clipping.html [ Failure ]
-Bug(none) compositing/layer-creation/overlap-animation-container.html [ Failure ]
-Bug(none) compositing/layer-creation/overlap-animation.html [ Failure ]
+compositing/layer-creation/overlap-animation-clipping.html [ Failure ]
+compositing/layer-creation/overlap-animation-container.html [ Failure ]
+compositing/layer-creation/overlap-animation.html [ Failure ]
 
 # Overlap testing seems inaccurate.
-Bug(none) compositing/layer-creation/overlap-transformed-3d.html [ Failure ]
-Bug(none) compositing/layer-creation/overlap-transformed-preserved-3d.html [ Failure ]
+compositing/layer-creation/overlap-transformed-3d.html [ Failure ]
+compositing/layer-creation/overlap-transformed-preserved-3d.html [ Failure ]
 
-Bug(none) compositing/masks/mask-with-removed-filters.html [ Failure ]
+compositing/masks/mask-with-removed-filters.html [ Failure ]
 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/squashing/do-not-squash-scroll-child-with-composited-descendants.html [ Failure ]
-Bug(none) compositing/squashing/squashed-repaints.html [ Failure ]
-Bug(none) compositing/squashing/squashing-sparsity-heuristic.html [ Failure ]
-Bug(none) compositing/visibility/layer-visible-content.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 ]
-Bug(none) external/wpt/portals/portals-rendering.html [ Failure ]
-Bug(none) fast/css/outline-offset-large.html [ Failure ]
-Bug(none) fast/forms/validation-bubble-device-emulation-change.html [ Failure ]
-Bug(none) fast/webgl/pixelated.html [ Failure ]
-Bug(none) fast/sub-pixel/transformed-iframe-copy-on-scroll.html [ Failure ]
-Bug(none) fullscreen/compositor-touch-hit-rects-fullscreen-video-controls.html [ Failure ]
-Bug(none) http/tests/devtools/layers/layers-3d-view-after-update.js [ Failure ]
-Bug(none) http/tests/input/discard-events-to-unstable-iframe.html [ Failure ]
-Bug(none) http/tests/misc/destroy-middle-click-locked-target-crash.html [ Timeout ]
-Bug(none) http/tests/misc/synthetic-gesture-initiated-in-cross-origin-frame.html [ Failure ]
-Bug(none) printing/fixed-positioned-headers-and-footers-absolute-covering-some-pages.html [ Failure ]
-Bug(none) printing/fixed-positioned-headers-and-footers-larger-than-page.html [ Failure ]
-Bug(none) printing/offscreencanvas-2d-printing.html [ Failure ]
-Bug(none) printing/webgl-repeated-printing-preservedrawingbuffer.html [ Failure ]
-Bug(none) printing/webgl-repeated-printing.html [ Failure ]
-Bug(none) transforms/3d/general/background-visibility-layers.html [ Failure ]
-Bug(none) virtual/forced-high-contrast-colors/fast/css/forced-colors-mode/forced-colors-mode-22.html [ Crash ]
-Bug(none) virtual/scalefactor200/external/wpt/largest-contentful-paint/invisible-images.html [ Failure ]
-Bug(none) virtual/scalefactor200withoutzoom/external/wpt/largest-contentful-paint/invisible-images.html [ Failure ]
-Bug(none) virtual/threaded/external/wpt/web-animations/timing-model/animations/update-playback-rate-slow.html [ Failure ]
-Bug(none) virtual/threaded/external/wpt/web-animations/timing-model/animations/update-playback-rate-zero.html [ Failure ]
-Bug(none) virtual/threaded-prefer-compositing/fast/scrolling/keyboard-scroll-page-scale.html [ Failure Pass ]
-Bug(none) virtual/threaded-prefer-compositing/fast/scrolling/no-hover-during-scroll.html [ Failure Pass ]
-Bug(none) virtual/threaded-prefer-compositing/fast/scrolling/no-hover-during-smooth-js-scroll.html [ Crash Pass ]
+compositing/squashing/do-not-squash-scroll-child-with-composited-descendants.html [ Failure ]
+compositing/squashing/squashed-repaints.html [ Failure ]
+compositing/squashing/squashing-sparsity-heuristic.html [ Failure ]
+compositing/visibility/layer-visible-content.html [ Failure ]
+external/wpt/css/css-transforms/transform3d-backface-visibility-006.html [ Failure ]
+external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-overflow.html [ Crash ]
+external/wpt/largest-contentful-paint/invisible-images.html [ Failure ]
+external/wpt/portals/portals-rendering.html [ Failure ]
+fast/css/outline-offset-large.html [ Failure ]
+fast/forms/validation-bubble-device-emulation-change.html [ Failure ]
+fast/webgl/pixelated.html [ Failure ]
+fast/sub-pixel/transformed-iframe-copy-on-scroll.html [ Failure ]
+fullscreen/compositor-touch-hit-rects-fullscreen-video-controls.html [ Failure ]
+http/tests/devtools/layers/layers-3d-view-after-update.js [ Failure ]
+http/tests/input/discard-events-to-unstable-iframe.html [ Failure ]
+http/tests/misc/destroy-middle-click-locked-target-crash.html [ Timeout ]
+http/tests/misc/synthetic-gesture-initiated-in-cross-origin-frame.html [ Failure ]
+printing/fixed-positioned-headers-and-footers-absolute-covering-some-pages.html [ Failure ]
+printing/fixed-positioned-headers-and-footers-larger-than-page.html [ Failure ]
+printing/offscreencanvas-2d-printing.html [ Failure ]
+printing/webgl-repeated-printing-preservedrawingbuffer.html [ Failure ]
+printing/webgl-repeated-printing.html [ Failure ]
+transforms/3d/general/background-visibility-layers.html [ Failure ]
+virtual/forced-high-contrast-colors/fast/css/forced-colors-mode/forced-colors-mode-22.html [ Crash ]
+virtual/scalefactor200/external/wpt/largest-contentful-paint/invisible-images.html [ Failure ]
+virtual/scalefactor200withoutzoom/external/wpt/largest-contentful-paint/invisible-images.html [ Failure ]
+virtual/threaded/external/wpt/web-animations/timing-model/animations/update-playback-rate-slow.html [ Failure ]
+virtual/threaded/external/wpt/web-animations/timing-model/animations/update-playback-rate-zero.html [ Failure ]
+virtual/threaded-prefer-compositing/fast/scrolling/keyboard-scroll-page-scale.html [ Failure Pass ]
+virtual/threaded-prefer-compositing/fast/scrolling/no-hover-during-scroll.html [ Failure Pass ]
+virtual/threaded-prefer-compositing/fast/scrolling/no-hover-during-smooth-js-scroll.html [ Crash Pass ]
 
 # Loading an image in a subframe.
 crbug.com/959936 http/tests/images/image-decode-in-frame.html [ Failure ]
@@ -115,12 +115,12 @@
 # Less invalidations or different invalidations without pixel failures.
 # Some might be good. Some might be under-invalidations for which under-invalidation
 # checking failed.
-Bug(none) paint/invalidation/compositing/should-invoke-deferred-compositing.html [ Failure ]
-Bug(none) paint/invalidation/scroll/overflow-hidden-yet-scrolled-with-custom-scrollbar.html [ Failure ]
-Bug(none) paint/invalidation/scroll/overflow-hidden-yet-scrolled.html [ Failure ]
+paint/invalidation/compositing/should-invoke-deferred-compositing.html [ Failure ]
+paint/invalidation/scroll/overflow-hidden-yet-scrolled-with-custom-scrollbar.html [ Failure ]
+paint/invalidation/scroll/overflow-hidden-yet-scrolled.html [ Failure ]
 
 # Under-invalidation
-Bug(none) fast/events/touch/touch-rect-crash-on-unpromote-layer.html [ Crash ]
+fast/events/touch/touch-rect-crash-on-unpromote-layer.html [ Crash ]
 
 # "Missing" raster invalidation because composited layers are re-created.
 crbug.com/842356 paint/invalidation/compositing/containing-block-added-individual.html [ Failure ]
@@ -129,14 +129,14 @@
 crbug.com/842356 paint/invalidation/compositing/containing-block-removed.html [ Failure ]
 
 # Extra raster invalidations.
-Bug(none) compositing/overflow/do-not-repaint-if-scrolling-composited-layers.html [ Failure ]
-Bug(none) paint/invalidation/compositing/clipping-should-not-repaint-composited-descendants.html [ Failure ]
-Bug(none) paint/invalidation/compositing/should-not-repaint-composited-filter.html [ Failure ]
-Bug(none) paint/invalidation/compositing/should-not-repaint-composited-opacity.html [ Failure ]
-Bug(none) paint/invalidation/compositing/should-not-repaint-move-backface-hidden.html [ Failure ]
-Bug(none) paint/invalidation/scroll/iframe-scroll-repaint.html [ Failure ]
-Bug(none) paint/invalidation/scroll/repaint-composited-child-in-scrolled-container.html [ Failure ]
-Bug(none) paint/invalidation/position/relative-positioned-movement-repaint.html [ Failure ]
+compositing/overflow/do-not-repaint-if-scrolling-composited-layers.html [ Failure ]
+paint/invalidation/compositing/clipping-should-not-repaint-composited-descendants.html [ Failure ]
+paint/invalidation/compositing/should-not-repaint-composited-filter.html [ Failure ]
+paint/invalidation/compositing/should-not-repaint-composited-opacity.html [ Failure ]
+paint/invalidation/compositing/should-not-repaint-move-backface-hidden.html [ Failure ]
+paint/invalidation/scroll/iframe-scroll-repaint.html [ Failure ]
+paint/invalidation/scroll/repaint-composited-child-in-scrolled-container.html [ Failure ]
+paint/invalidation/position/relative-positioned-movement-repaint.html [ Failure ]
 
 # Wrong invalidation/painting/rasterization for multicol. Different layer tree.
 crbug.com/648274 paint/invalidation/multicol/multicol-as-paint-container.html [ Failure ]
@@ -147,27 +147,27 @@
 crbug.com/757977 paint/invalidation/compositing/resize-squashing-layer-that-needs-full-repaint.html [ Failure ]
 
 # Less layers or other different layer trees.
-Bug(none) paint/invalidation/compositing/iframe-inside-squashed-layer.html [ Failure ]
-Bug(none) paint/invalidation/compositing/overlap-test-with-filter.html [ Failure ]
-Bug(none) paint/invalidation/compositing/should-not-repaint-composited-descendants.html [ Failure ]
+paint/invalidation/compositing/iframe-inside-squashed-layer.html [ Failure ]
+paint/invalidation/compositing/overlap-test-with-filter.html [ Failure ]
+paint/invalidation/compositing/should-not-repaint-composited-descendants.html [ Failure ]
 
 # Subpixel or invisible color differences that look benign, but we can't rebaseline ref tests.
-Bug(benign) compositing/overflow/ancestor-with-clip-path.html [ Failure ]
-Bug(benign) fast/multicol/mixed-opacity-fixed-test.html [ Failure ]
-Bug(benign) fullscreen/rendering/backdrop-object.html [ Failure ]
-Bug(benign) external/wpt/svg/render/reftests/blending-001.svg [ Failure ]
-Bug(benign) external/wpt/svg/render/reftests/blending-002.svg [ Failure ]
+compositing/overflow/ancestor-with-clip-path.html [ Failure ]
+fast/multicol/mixed-opacity-fixed-test.html [ Failure ]
+fullscreen/rendering/backdrop-object.html [ Failure ]
+external/wpt/svg/render/reftests/blending-001.svg [ Failure ]
+external/wpt/svg/render/reftests/blending-002.svg [ Failure ]
 
 # Text failures due to layerization differences
-Bug(none) compositing/overflow/scroller-with-border-radius.html [ Failure ]
-Bug(none) css3/blending/mix-blend-mode-isolation-remove.html [ Failure ]
+compositing/overflow/scroller-with-border-radius.html [ Failure ]
+css3/blending/mix-blend-mode-isolation-remove.html [ Failure ]
 
 # virtual/threaded variants of sub-directories and tests already skipped or marked as failing above.
-Bug(none) virtual/threaded/fast/events/pinch/pinch-zoom-pan-within-zoomed-viewport.html [ Failure ]
-Bug(none) virtual/threaded/fast/events/pinch/scroll-visual-viewport-send-boundary-events.html [ Timeout ]
-Bug(none) virtual/threaded-prefer-compositing/fast/scroll-behavior/first-scroll-runs-on-compositor.html [ Failure ]
-Bug(none) virtual/threaded/compositing/visibility/layer-visible-content.html [ Failure ]
-Bug(none) virtual/threaded/synthetic_gestures/smooth-scroll-tiny-delta.html [ Failure Timeout Pass ]
+virtual/threaded/fast/events/pinch/pinch-zoom-pan-within-zoomed-viewport.html [ Failure ]
+virtual/threaded/fast/events/pinch/scroll-visual-viewport-send-boundary-events.html [ Timeout ]
+virtual/threaded-prefer-compositing/fast/scroll-behavior/first-scroll-runs-on-compositor.html [ Failure ]
+virtual/threaded/compositing/visibility/layer-visible-content.html [ Failure ]
+virtual/threaded/synthetic_gestures/smooth-scroll-tiny-delta.html [ Failure Timeout Pass ]
 
 crbug.com/931486 compositing/overflow/overlap-testing-ancestor-scroller-high-dpi.html [ Failure ]
 crbug.com/931486 compositing/squashing/squash-above-fixed-1.html [ Failure ]
@@ -184,12 +184,12 @@
 # See comment regarding this test in NeverFixTests. It also fails for other
 # reasons, in particular that the composited layerization algorithm provides
 # different results.
-Bug(none) paint/invalidation/compositing/subpixel-offset-scaled-transform-composited.html [ Failure ]
+paint/invalidation/compositing/subpixel-offset-scaled-transform-composited.html [ Failure ]
 
-Bug(none) paint/pagination/composited-paginated-outlined-box.html [ Failure ]
-Bug(none) paint/invalidation/media-audio-no-spurious-repaints.html [ Failure ]
-Bug(none) paint/invalidation/reflection/scroll-fixed-layer-with-reflection.html [ Failure ]
-Bug(none) paint/invalidation/reflection/scroll-fixed-reflected-layer.html [ Failure ]
+paint/pagination/composited-paginated-outlined-box.html [ Failure ]
+paint/invalidation/media-audio-no-spurious-repaints.html [ Failure ]
+paint/invalidation/reflection/scroll-fixed-layer-with-reflection.html [ Failure ]
+paint/invalidation/reflection/scroll-fixed-reflected-layer.html [ Failure ]
 
 # Extra raster invalidation on start/end of animation. Caused by animation
 # element id namespaces
@@ -209,12 +209,12 @@
 crbug.com/940033 virtual/threaded-prefer-compositing/fast/scrolling/wheel-scrolling-over-custom-scrollbar.html [ Pass Failure ]
 
 # Crash during PictureLayer::GetPicture() when DisplayItemList is finished twice.
-Bug(none) http/tests/devtools/layers/layer-canvas-log.js [ Crash ]
-Bug(none) http/tests/devtools/layers/layer-replay-scale.js [ Crash ]
+http/tests/devtools/layers/layer-canvas-log.js [ Crash ]
+http/tests/devtools/layers/layer-replay-scale.js [ Crash ]
 # Missing compositing reasons
-Bug(none) http/tests/devtools/layers/layer-compositing-reasons.js [ Failure ]
+http/tests/devtools/layers/layer-compositing-reasons.js [ Failure ]
 # Missing WheelEventHandler
-Bug(none) http/tests/devtools/layers/layer-scroll-rects-get.js [ Failure ]
+http/tests/devtools/layers/layer-scroll-rects-get.js [ Failure ]
 
 # Scrollbar pixel snapping issues
 crbug.com/979380 compositing/overflow/overflow-scroll-background-fractional-offset.html [ Failure ]
@@ -224,8 +224,8 @@
 crbug.com/979380 fast/frames/transparent-scrollbar.html [ Failure ]
 
 # Crash on non-contiguous effect on multiple columns
-Bug(none) fast/multicol/composited-layer-will-change.html [ Crash ]
-Bug(none) paint/clipath/change-mask-clip-path-multicol-crash.html [ Crash ]
+fast/multicol/composited-layer-will-change.html [ Crash ]
+paint/clipath/change-mask-clip-path-multicol-crash.html [ Crash ]
 
 # Clip-path and mask.
 crbug.com/979369 svg/clip-path/deep-nested-clip-in-mask.svg [ Failure ]
diff --git a/third_party/blink/web_tests/FlagExpectations/disable-layout-ng b/third_party/blink/web_tests/FlagExpectations/disable-layout-ng
index bacca6ea..7ca2b53 100644
--- a/third_party/blink/web_tests/FlagExpectations/disable-layout-ng
+++ b/third_party/blink/web_tests/FlagExpectations/disable-layout-ng
@@ -1,3 +1,8 @@
+# tags: [ Android Fuchsia IOS IOS12.2 IOS13.0 Linux Mac Mac10.10 Mac10.11 Mac10.12 Retina
+#         Mac10.13 Win Win7 Win10 ]
+# tags: [ Release Debug ]
+# results: [ Timeout Crash Pass Failure Slow Skip ]
+
 # Tests that fail in legacy but pass in NG
 
 # accessibility/
@@ -70,6 +75,7 @@
 crbug.com/457718 external/wpt/css/css-pseudo/marker-content-003b.html [ Failure ]
 crbug.com/457718 external/wpt/css/css-pseudo/marker-content-004.html [ Failure ]
 crbug.com/457718 external/wpt/css/css-pseudo/marker-content-006.html [ Failure ]
+crbug.com/457718 external/wpt/css/css-pseudo/marker-content-012.html [ Failure ]
 crbug.com/1012289 external/wpt/css/css-pseudo/marker-unicode-bidi-default.html [ Failure ]
 crbug.com/1012289 external/wpt/css/css-pseudo/marker-unicode-bidi-normal.html [ Failure ]
 
@@ -374,18 +380,18 @@
 crbug.com/864567 paint/invalidation/svg/deep-nested-embedded-svg-size-changes-no-layout-triggers-2.html [ Failure ]
 crbug.com/864567 paint/invalidation/svg/nested-embedded-svg-size-changes-no-layout-triggers-1.html [ Failure ]
 crbug.com/864567 paint/invalidation/svg/nested-embedded-svg-size-changes-no-layout-triggers-2.html [ Failure ]
-Bug(none) compositing/squashing/squash-same-transform-ancestor.html [ Failure ]
-Bug(none) compositing/geometry/layer-due-to-layer-children-deep-switch.html [ Failure ]
-Bug(none) compositing/geometry/layer-due-to-layer-children-switch.html [ Failure ]
-Bug(none) compositing/layer-creation/overlap-transformed-layer-with-transform-body.html [ Failure ]
-Bug(none) compositing/layer-creation/overlap-transformed-layer.html [ Failure ]
-Bug(none) compositing/overflow/rotate-then-clip-effect-interleave.html [ Failure ]
-Bug(none) compositing/overflow/rotate-then-clip-z-order-interleave.html [ Failure ]
-Bug(none) compositing/overflow/rotate-then-clip.html [ Failure ]
-Bug(none) paint/invalidation/offset-change-wrong-invalidation-with-float.html [ Failure ]
-Bug(none) virtual/prefer_compositing_to_lcd_text/compositing/overflow/rotate-then-clip-effect-interleave.html [ Failure ]
-Bug(none) virtual/prefer_compositing_to_lcd_text/compositing/overflow/rotate-then-clip-z-order-interleave.html [ Failure ]
-Bug(none) virtual/prefer_compositing_to_lcd_text/compositing/overflow/rotate-then-clip.html [ Failure ]
+compositing/squashing/squash-same-transform-ancestor.html [ Failure ]
+compositing/geometry/layer-due-to-layer-children-deep-switch.html [ Failure ]
+compositing/geometry/layer-due-to-layer-children-switch.html [ Failure ]
+compositing/layer-creation/overlap-transformed-layer-with-transform-body.html [ Failure ]
+compositing/layer-creation/overlap-transformed-layer.html [ Failure ]
+compositing/overflow/rotate-then-clip-effect-interleave.html [ Failure ]
+compositing/overflow/rotate-then-clip-z-order-interleave.html [ Failure ]
+compositing/overflow/rotate-then-clip.html [ Failure ]
+paint/invalidation/offset-change-wrong-invalidation-with-float.html [ Failure ]
+virtual/prefer_compositing_to_lcd_text/compositing/overflow/rotate-then-clip-effect-interleave.html [ Failure ]
+virtual/prefer_compositing_to_lcd_text/compositing/overflow/rotate-then-clip-z-order-interleave.html [ Failure ]
+virtual/prefer_compositing_to_lcd_text/compositing/overflow/rotate-then-clip.html [ Failure ]
 crbug.com/1016759 paint/invalidation/multi-layout-one-frame.html [ Failure ]
 crbug.com/1016759 paint/invalidation/search-field-cancel.html [ Failure ]
 crbug.com/1016759 paint/invalidation/subtree-root-skipped.html [ Failure ]
@@ -397,39 +403,39 @@
 crbug.com/1007506 wpt_internal/display-lock/rendersubtree/sizing/overflow-auto-with-overflow.html [ Failure ]
 
 # 10/02/2019 Mark tests as failing. Mostly shapes, slight image differences
-Bug(none) external/wpt/css/CSS2/text/white-space-bidirectionality-001.xht [ Failure ]
-Bug(none) external/wpt/css/css-shapes/spec-examples/shape-outside-018.html [ Failure ]
-Bug(none) external/wpt/css/css-text/shaping/shaping-024.html [ Failure ]
-Bug(none) external/wpt/css/css-text/shaping/shaping-025.html [ Failure ]
-Bug(none) external/wpt/css/css-text/white-space/seg-break-transformation-018.html [ Failure ]
-Bug(none) external/wpt/css/css-text/white-space/white-space-intrinsic-size-001.html [ Failure ]
-Bug(none) external/wpt/css/css-writing-modes/available-size-007.html [ Failure ]
-Bug(none) external/wpt/css/css-writing-modes/sizing-orthog-htb-in-vrl-001.xht [ Failure ]
-Bug(none) external/wpt/css/css-writing-modes/sizing-orthog-htb-in-vrl-004.xht [ Failure ]
-Bug(none) external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-circle-048.html [ Failure ]
-Bug(none) external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-circle-049.html [ Failure ]
-Bug(none) external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-circle-051.html [ Failure ]
-Bug(none) external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-inset-025.html [ Failure ]
-Bug(none) external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-polygon-020.html [ Failure ]
-Bug(none) external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-polygon-021.html [ Failure ]
-Bug(none) virtual/text-antialias/ellipsis-with-self-painting-layer.html [ Failure ]
-Bug(none) virtual/text-antialias/zwnj-disables-kerning.html [ Failure ]
-Bug(none) virtual/text-antialias/international/shape-across-elements-simple.html [ Failure ]
-Bug(none) paint/invalidation/overflow/float-overflow-right.html [ Failure ]
-Bug(none) paint/invalidation/overflow/float-overflow.html [ Failure ]
-Bug(none) scrollingcoordinator/non-fast-scrollable-transform-changed.html [ Crash ]
-Bug(none) svg/zoom/text/zoom-svg-float-border-padding.xml [ Failure ]
-Bug(none) virtual/composite-after-paint/scrollingcoordinator/non-fast-scrollable-transform-changed.html [ Crash ]
-Bug(none) virtual/forced-high-contrast-colors/fast/css/forced-colors-mode/forced-colors-mode-15.html [ Failure ]
-Bug(none) virtual/forced-high-contrast-colors/fast/css/forced-colors-mode/backplate/forced-colors-mode-backplate-07.html [ Failure ]
-Bug(none) virtual/layout_ng_block_frag/external/wpt/css/css-break/hit-test-inline-fragmentation-with-border-radius.html [ Failure ]
+external/wpt/css/CSS2/text/white-space-bidirectionality-001.xht [ Failure ]
+external/wpt/css/css-shapes/spec-examples/shape-outside-018.html [ Failure ]
+external/wpt/css/css-text/shaping/shaping-024.html [ Failure ]
+external/wpt/css/css-text/shaping/shaping-025.html [ Failure ]
+external/wpt/css/css-text/white-space/seg-break-transformation-018.html [ Failure ]
+external/wpt/css/css-text/white-space/white-space-intrinsic-size-001.html [ Failure ]
+external/wpt/css/css-writing-modes/available-size-007.html [ Failure ]
+external/wpt/css/css-writing-modes/sizing-orthog-htb-in-vrl-001.xht [ Failure ]
+external/wpt/css/css-writing-modes/sizing-orthog-htb-in-vrl-004.xht [ Failure ]
+external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-circle-048.html [ Failure ]
+external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-circle-049.html [ Failure ]
+external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-circle-051.html [ Failure ]
+external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-inset-025.html [ Failure ]
+external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-polygon-020.html [ Failure ]
+external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-polygon-021.html [ Failure ]
+virtual/text-antialias/ellipsis-with-self-painting-layer.html [ Failure ]
+virtual/text-antialias/zwnj-disables-kerning.html [ Failure ]
+virtual/text-antialias/international/shape-across-elements-simple.html [ Failure ]
+paint/invalidation/overflow/float-overflow-right.html [ Failure ]
+paint/invalidation/overflow/float-overflow.html [ Failure ]
+scrollingcoordinator/non-fast-scrollable-transform-changed.html [ Crash ]
+svg/zoom/text/zoom-svg-float-border-padding.xml [ Failure ]
+virtual/composite-after-paint/scrollingcoordinator/non-fast-scrollable-transform-changed.html [ Crash ]
+virtual/forced-high-contrast-colors/fast/css/forced-colors-mode/forced-colors-mode-15.html [ Failure ]
+virtual/forced-high-contrast-colors/fast/css/forced-colors-mode/backplate/forced-colors-mode-backplate-07.html [ Failure ]
+virtual/layout_ng_block_frag/external/wpt/css/css-break/hit-test-inline-fragmentation-with-border-radius.html [ Failure ]
 
 
 # 10/27/2019 updates.
-Bug(none) external/wpt/css/css-writing-modes/wm-propagation-body-044.html [ Failure ]
-Bug(none) external/wpt/native-file-system/sandboxed_FileSystemBaseHandle-postMessage-MessagePort.tentative.https.window.html [ Crash ]
-Bug(none) external/wpt/native-file-system/sandboxed_FileSystemBaseHandle-postMessage.tentative.https.window.html [ Crash ]
-Bug(none) external/wpt/native-file-system/sandboxed_FileSystemDirectoryHandle-getFile.tentative.https.any.html [ Crash ]
+external/wpt/css/css-writing-modes/wm-propagation-body-044.html [ Failure ]
+external/wpt/native-file-system/sandboxed_FileSystemBaseHandle-postMessage-MessagePort.tentative.https.window.html [ Crash ]
+external/wpt/native-file-system/sandboxed_FileSystemBaseHandle-postMessage.tentative.https.window.html [ Crash ]
+external/wpt/native-file-system/sandboxed_FileSystemDirectoryHandle-getFile.tentative.https.any.html [ Crash ]
 
 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 ]
@@ -437,10 +443,10 @@
 crbug.com/591099 paint/invalidation/compositing/stacked-float-under-composited-inline.html [ Failure ]
 
 # These should be rebaselined, but cannot because file paths are too long on Windows.
-Bug(none) virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/suggestion-picker/datetimelocal-suggestion-picker-appearance.html [ Failure ]
-Bug(none) virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance.html [ Failure ]
-Bug(none) virtual/controls-refresh/color-scheme/suggestion-picker/datetimelocal-suggestion-picker-appearance.html [ Failure ]
-Bug(none) virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance.html [ Failure ]
+virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/suggestion-picker/datetimelocal-suggestion-picker-appearance.html [ Failure ]
+virtual/controls-refresh-hc/virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance.html [ Failure ]
+virtual/controls-refresh/color-scheme/suggestion-picker/datetimelocal-suggestion-picker-appearance.html [ Failure ]
+virtual/controls-refresh/color-scheme/suggestion-picker/time-suggestion-picker-appearance.html [ Failure ]
 
 # MathML depends on LayoutNG.
 crbug.com/6606 external/wpt/mathml/ [ Skip ]
diff --git a/third_party/blink/web_tests/FlagExpectations/disable-site-isolation-trials b/third_party/blink/web_tests/FlagExpectations/disable-site-isolation-trials
index b6055f5b..b377d61 100644
--- a/third_party/blink/web_tests/FlagExpectations/disable-site-isolation-trials
+++ b/third_party/blink/web_tests/FlagExpectations/disable-site-isolation-trials
@@ -1,3 +1,8 @@
+# tags: [ Android Fuchsia IOS IOS12.2 IOS13.0 Linux Mac Mac10.10 Mac10.11 Mac10.12 Retina
+#         Mac10.13 Win Win7 Win10 ]
+# tags: [ Release Debug ]
+# results: [ Timeout Crash Pass Failure Slow Skip ]
+
 # The following tests fail with UserActivationSameOriginVisibility plus UAv2.
 crbug.com/922725 http/tests/media/autoplay/document-user-activation-cross-origin-feature-policy-disabled.html [ Failure ]
 crbug.com/922725 http/tests/media/autoplay/document-user-activation-cross-origin-feature-policy-header.html [ Failure ]
@@ -17,7 +22,7 @@
 crbug.com/933880 http/tests/misc/redirect-to-about-blank.html [ Timeout ]
 
 # Test is for OOPIF-specific behavior.
-Bug(none) http/tests/inspector-protocol/fetch/fetch-oopif.js [ Skip ]
+http/tests/inspector-protocol/fetch/fetch-oopif.js [ Skip ]
 
 # JS Self-Profiling currently requires site isolation.
 crbug.com/956688 http/tests/js-self-profiling/ [ Skip ]
diff --git a/third_party/blink/web_tests/FlagExpectations/enable-features=OutOfBlinkCors b/third_party/blink/web_tests/FlagExpectations/enable-features=OutOfBlinkCors
index 34e22d4a..8015ee0 100644
--- a/third_party/blink/web_tests/FlagExpectations/enable-features=OutOfBlinkCors
+++ b/third_party/blink/web_tests/FlagExpectations/enable-features=OutOfBlinkCors
@@ -1,3 +1,8 @@
+# tags: [ Android Fuchsia IOS IOS12.2 IOS13.0 Linux Mac Mac10.10 Mac10.11 Mac10.12 Retina
+#         Mac10.13 Win Win7 Win10 ]
+# tags: [ Release Debug ]
+# results: [ Timeout Crash Pass Failure Slow Skip ]
+
 # Tests that passes only with OOR-CORS, running at linux-oor-cors-rel bot.
 # Entries below are expected to revert relevant entries in NeverFixTests.
 # TODO(cbur.com/1001450): Remove this file after the OOR-CORS launch.
diff --git a/third_party/blink/web_tests/FlagExpectations/enable-features=UseSkiaRenderer b/third_party/blink/web_tests/FlagExpectations/enable-features=UseSkiaRenderer
index 822cc3a9..14751d0 100644
--- a/third_party/blink/web_tests/FlagExpectations/enable-features=UseSkiaRenderer
+++ b/third_party/blink/web_tests/FlagExpectations/enable-features=UseSkiaRenderer
@@ -1,3 +1,8 @@
+# tags: [ Android Fuchsia IOS IOS12.2 IOS13.0 Linux Mac Mac10.10 Mac10.11 Mac10.12 Retina
+#         Mac10.13 Win Win7 Win10 ]
+# tags: [ Release Debug ]
+# results: [ Timeout Crash Pass Failure Slow Skip ]
+
 # One portion of the image is offset.
 crbug.com/1002522 fast/canvas/canvas-toDataURL-webp.html [ Skip ]
 
diff --git a/third_party/blink/web_tests/FlagExpectations/enable-gpu-rasterization b/third_party/blink/web_tests/FlagExpectations/enable-gpu-rasterization
index e5f1d8bf..74978f5 100644
--- a/third_party/blink/web_tests/FlagExpectations/enable-gpu-rasterization
+++ b/third_party/blink/web_tests/FlagExpectations/enable-gpu-rasterization
@@ -1,3 +1,8 @@
+# tags: [ Android Fuchsia IOS IOS12.2 IOS13.0 Linux Mac Mac10.10 Mac10.11 Mac10.12 Retina
+#         Mac10.13 Win Win7 Win10 ]
+# tags: [ Release Debug ]
+# results: [ Timeout Crash Pass Failure Slow Skip ]
+
 # Flaky Input Related Tests
 crbug.com/1026375 media/controls/video-enter-exit-fullscreen-without-hovering-doesnt-show-controls.html [ Failure Pass ]
 crbug.com/1026375 media/media-controls-tap-show-controls-without-activating.html [ Failure Pass ]
@@ -5,4 +10,4 @@
 crbug.com/1026375 media/video-controls-hide-after-touch-on-control.html [ Failure Pass ]
 crbug.com/1026375 media/video-controls-hide-on-move-outside-controls.html [ Failure Pass ]
 crbug.com/1026375 media/video-controls-visibility-multimodal-touch-after-mouse.html [ Failure Pass ]
-crbug.com/1026375 media/video-persistence.html [ Failure Pass ]
\ No newline at end of file
+crbug.com/1026375 media/video-persistence.html [ Failure Pass ]
diff --git a/third_party/blink/web_tests/FlagExpectations/layout-ng-fragment-item b/third_party/blink/web_tests/FlagExpectations/layout-ng-fragment-item
index ac3e437..adf2878 100644
--- a/third_party/blink/web_tests/FlagExpectations/layout-ng-fragment-item
+++ b/third_party/blink/web_tests/FlagExpectations/layout-ng-fragment-item
@@ -1,3 +1,8 @@
+# tags: [ Android Fuchsia IOS IOS12.2 IOS13.0 Linux Mac Mac10.10 Mac10.11 Mac10.12 Retina
+#         Mac10.13 Win Win7 Win10 ]
+# results: [ Timeout Crash Pass Failure Slow Skip ]
+# tags: [ Release Debug ]
+
 crbug.com/982194 accessibility/adjacent-continuations-cause-assertion-failure.html [ Failure ]
 crbug.com/982194 accessibility/aria-tables.html [ Failure ]
 crbug.com/982194 accessibility/first-letter-text-transform-causes-crash.html [ Failure ]
@@ -37,7 +42,6 @@
 crbug.com/982194 editing/selection/drag_with_unfocused_selection.html [ Failure ]
 crbug.com/982194 editing/selection/first-letter-mouse-select-full-text.html [ Failure ]
 crbug.com/982194 editing/selection/focus-and-display-none.html [ Failure ]
-crbug.com/982194 editing/selection/japanese-lr-selection.html [ Failure Pass ]
 crbug.com/982194 editing/selection/last-empty-inline.html [ Failure ]
 crbug.com/245154 editing/selection/modify_move/move-by-character-brute-force.html [ Pass ]
 crbug.com/24182 editing/selection/modify_move/move-by-word-visually-crash-test-5.html [ Pass ]
@@ -54,7 +58,7 @@
 crbug.com/982194 editing/selection/offset-from-point.html [ Failure ]
 crbug.com/591099 editing/selection/paint-hyphen.html [ Pass ]
 crbug.com/741259 editing/selection/select-bidi-run.html [ Failure ]
-crbug.com/982194 editing/selection/select-line-break-with-opposite-directionality.html [ Crash ]
+crbug.com/982194 editing/selection/select-line-break-with-opposite-directionality.html [ Crash Failure ]
 crbug.com/982194 editing/selection/select-out-of-floated-contenteditable.html [ Failure ]
 crbug.com/982194 editing/selection/select-out-of-floated-input.html [ Failure ]
 crbug.com/982194 editing/selection/shift-click.html [ Crash ]
@@ -77,7 +81,6 @@
 crbug.com/982194 external/wpt/css/CSS2/positioning/toogle-abspos-on-relpos-inline-child.html [ Failure ]
 crbug.com/982194 external/wpt/css/css-contain/contain-layout-017.html [ Pass ]
 crbug.com/982194 external/wpt/css/css-contain/contain-paint-021.html [ Pass ]
-crbug.com/982194 external/wpt/css/css-grid/alignment/grid-container-baseline-001.html [ Failure Pass ]
 crbug.com/982194 external/wpt/css/css-grid/grid-definition/grid-layout-repeat-notation.html [ Failure ]
 crbug.com/982194 external/wpt/css/css-overflow/overflow-inline-transform-relative.html [ Failure ]
 crbug.com/982194 external/wpt/css/css-position/position-absolute-in-inline-002.html [ Failure ]
@@ -104,11 +107,10 @@
 crbug.com/669473 external/wpt/css/css-ui/outline-016.html [ Pass ]
 crbug.com/982194 external/wpt/css/css-ui/text-overflow-ruby.html [ Failure ]
 crbug.com/982194 external/wpt/css/css-writig-modes/sizing-orthog-htb-in-vlr-011.xht [ Failure ]
-crbug.com/982194 external/wpt/css/css-writing-modes/inline-block-alignment-003.xht [ Failure Pass ]
-crbug.com/982194 external/wpt/css/css-writing-modes/inline-block-alignment-005.xht [ Failure Pass ]
-crbug.com/982194 external/wpt/css/css-writing-modes/inline-table-alignment-003.xht [ Failure Pass ]
-crbug.com/982194 external/wpt/css/css-writing-modes/inline-table-alignment-005.xht [ Failure Pass ]
-crbug.com/982194 external/wpt/css/css-writing-modes/text-baseline-vlr-007.xht [ Failure Pass ]
+crbug.com/982194 external/wpt/css/css-writing-modes/inline-block-alignment-003.xht [ Failure ]
+crbug.com/982194 external/wpt/css/css-writing-modes/inline-block-alignment-005.xht [ Failure ]
+crbug.com/982194 external/wpt/css/css-writing-modes/inline-table-alignment-003.xht [ Failure ]
+crbug.com/982194 external/wpt/css/css-writing-modes/inline-table-alignment-005.xht [ Failure ]
 crbug.com/982194 external/wpt/css/cssom-view/elementsFromPoint-inline-htb-ltr.html [ Failure ]
 crbug.com/982194 external/wpt/css/cssom-view/elementsFromPoint-inline-htb-rtl.html [ Failure ]
 crbug.com/982194 external/wpt/css/cssom-view/elementsFromPoint-inline-vlr-ltr.html [ Failure ]
@@ -122,7 +124,7 @@
 crbug.com/982194 external/wpt/css/filter-effects/filtered-inline-applies-to-float.html [ Failure ]
 crbug.com/982194 external/wpt/css/filter-effects/filtered-inline-is-container.html [ Failure ]
 crbug.com/846656 external/wpt/css/selectors/focus-visible-002-manual.html [ Pass ]
-crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/counter-styles-3/dependent-builtin.html [ Failure ]
+crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/counter-styles-3/dependent-builtin.html [ Failure Pass ]
 crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/counter-styles-3/descriptor-fallback-invalid.html [ Pass ]
 crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/counter-styles-3/descriptor-fallback.html [ Pass ]
 crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/counter-styles-3/descriptor-negative-invalid.html [ Pass ]
@@ -180,7 +182,7 @@
 crbug.com/852645 external/wpt/fullscreen/api/element-request-fullscreen-two-iframes-manual.html [ Timeout ]
 crbug.com/982194 external/wpt/html/cross-origin-opener-policy/coop-sandbox.https.html [ Pass ]
 crbug.com/982194 external/wpt/html/dom/elements/requirements-relating-to-bidirctional-algorithm-formatting-characters/dir-isolation-005c.html [ Failure ]
-crbug.com/982194 external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-vertical.html [ Failure Pass ]
+crbug.com/982194 external/wpt/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-vertical.html [ Failure ]
 crbug.com/736415 external/wpt/html/user-activation/activation-api-iframe.tenative.html [ Failure ]
 crbug.com/928838 external/wpt/html/user-activation/activation-transfer-cross-origin-with-click-two-child-frames.sub.tentative.html [ Failure ]
 crbug.com/928838 external/wpt/html/user-activation/activation-transfer-cross-origin-with-click.sub.tentative.html [ Failure ]
@@ -188,10 +190,10 @@
 crbug.com/626703 external/wpt/infrastructure/testdriver/actions/eventOrder.html [ Timeout ]
 crbug.com/982194 external/wpt/intersection-observe/v2/scaled-target.html [ Failure ]
 crbug.com/982194 external/wpt/intersection-observer/root-margin.html [ Failure ]
-crbug.com/982194 external/wpt/intersection-observer/v2/box-shadow.html [ Crash ]
-crbug.com/982194 external/wpt/intersection-observer/v2/drop-shadow-filter-vertical-rl.html [ Crash ]
+crbug.com/982194 external/wpt/intersection-observer/v2/box-shadow.html [ Crash Pass ]
+crbug.com/982194 external/wpt/intersection-observer/v2/drop-shadow-filter-vertical-rl.html [ Crash Failure ]
 crbug.com/982194 external/wpt/intersection-observer/v2/inline-occlusion.html [ Failure ]
-crbug.com/982194 external/wpt/intersection-observer/v2/scaled-target.html [ Crash ]
+crbug.com/982194 external/wpt/intersection-observer/v2/scaled-target.html [ Crash Pass ]
 crbug.com/982194 external/wpt/largest-contentful-paint/larger-text.html [ Timeout ]
 crbug.com/982194 external/wpt/largest-contentful-paint/observe-text.html [ Timeout ]
 crbug.com/982194 external/wpt/largest-contentful-paint/text-with-display-style.html [ Timeout ]
@@ -231,13 +233,6 @@
 crbug.com/982194 fast/block/float/overhanging-float-container-add-compositing.html [ Failure ]
 crbug.com/982194 fast/block/float/relative-painted-twice.html [ Failure ]
 crbug.com/982194 fast/block/positioning/absolute-in-inline-dynamic.html [ Failure ]
-crbug.com/982194 fast/block/positioning/auto/vertical-lr/001.html [ Failure Pass ]
-crbug.com/982194 fast/block/positioning/auto/vertical-lr/002.html [ Failure Pass ]
-crbug.com/982194 fast/block/positioning/auto/vertical-lr/003.html [ Failure Pass ]
-crbug.com/982194 fast/block/positioning/auto/vertical-lr/004.html [ Failure Pass ]
-crbug.com/982194 fast/block/positioning/auto/vertical-lr/005.html [ Failure Pass ]
-crbug.com/982194 fast/block/positioning/auto/vertical-lr/006.html [ Failure Pass ]
-crbug.com/982194 fast/block/positioning/auto/vertical-lr/007.html [ Failure Pass ]
 crbug.com/982194 fast/block/positioning/hittest-on-relative-positioned-children.html [ Failure ]
 crbug.com/982194 fast/block/positioning/rel-positioned-inline-changes-width.html [ Failure ]
 crbug.com/982194 fast/block/positioning/relative-overflow-replaced.html [ Failure ]
@@ -245,13 +240,6 @@
 crbug.com/982194 fast/borders/rtl-border-02.html [ Failure ]
 crbug.com/982194 fast/borders/rtl-border-03.html [ Failure ]
 crbug.com/982194 fast/css-generated-content/table-parts-before-and-after.html [ Failure ]
-crbug.com/982194 fast/css-grid-layout/grid-self-baseline-02.html [ Failure Pass ]
-crbug.com/982194 fast/css-grid-layout/grid-self-baseline-horiz-04.html [ Failure Pass ]
-crbug.com/982194 fast/css-grid-layout/grid-self-baseline-horiz-05.html [ Failure Pass ]
-crbug.com/982194 fast/css-grid-layout/grid-self-baseline-horiz-06.html [ Failure Pass ]
-crbug.com/982194 fast/css-grid-layout/grid-self-baseline-vertical-lr-01.html [ Failure Pass ]
-crbug.com/982194 fast/css-grid-layout/grid-self-baseline-vertical-lr-02.html [ Failure Pass ]
-crbug.com/982194 fast/css-grid-layout/grid-self-baseline-vertical-rl-07.html [ Failure Pass ]
 crbug.com/982194 fast/css/area-computedStyle.html [ Timeout ]
 crbug.com/982194 fast/css/first-line-hover-001.html [ Failure ]
 crbug.com/982194 fast/css/getComputedStyle/computed-style-percentage-top-with-position-inline.html [ Failure ]
@@ -323,9 +311,8 @@
 crbug.com/982194 fast/forms/label/label-selection-by-dragging.html [ Failure ]
 crbug.com/982194 fast/forms/label/label-selection-by-textSelection-and-click.html [ Failure ]
 crbug.com/874695 fast/forms/number/number-spinbutton-gets-disabled-or-readonly.html [ Pass ]
-crbug.com/982194 fast/history/visited-link-hover-outline-color.html [ Crash ]
+crbug.com/982194 fast/history/visited-link-hover-outline-color.html [ Crash Pass ]
 crbug.com/982194 fast/html/draggable-controls.html [ Failure ]
-crbug.com/982194 fast/inline-block/baseline-vertical.html [ Failure Pass ]
 crbug.com/982194 fast/inline/inline-box-background-long-image.html [ Failure ]
 crbug.com/982194 fast/inline/inline-box-background-repeat-x.html [ Failure ]
 crbug.com/982194 fast/inline/inline-box-background-repeat-y.html [ Failure ]
@@ -334,13 +321,10 @@
 crbug.com/889721 fast/inline/outline-continuations.html [ Failure ]
 crbug.com/982194 fast/inline/relative-positioned-overflow.html [ Failure ]
 crbug.com/982194 fast/inline/styledEmptyInlinesWithBRs.html [ Failure ]
-crbug.com/982194 fast/lists/003-vertical.html [ Failure Pass ]
-crbug.com/982194 fast/lists/008-vertical.html [ Failure Pass ]
 crbug.com/982194 fast/multicol/newmulticol/hide-box-vertical-lr.html [ Pass ]
 crbug.com/982194 fast/multicol/span/vertical-lr.html [ Pass ]
 crbug.com/982194 fast/multicol/vertical-lr/abspos-auto-position-on-line.html [ Pass ]
 crbug.com/982194 fast/multicol/vertical-lr/nested-columns.html [ Pass ]
-crbug.com/982194 fast/overflow/overflow-rtl-vertical.html [ Failure Pass ]
 crbug.com/982194 fast/overflow/scroll-div-hide-show.html [ Failure ]
 crbug.com/982194 fast/replaced/absolute-position-percentage-height.html [ Failure ]
 crbug.com/814953 fast/replaced/no-focus-ring-iframe.html [ Failure ]
@@ -349,7 +333,7 @@
 crbug.com/982194 fast/scrolling/scrollable-area-frame-overried-inherited-visibility-hidden.html [ Failure ]
 crbug.com/982194 fast/scrolling/scrollable-area-frame-scrolling-yes.html [ Failure ]
 crbug.com/982194 fast/scrolling/scrollable-area-frame-visibility-hidden-child.html [ Failure ]
-crbug.com/982194 fast/scrolling/scrollable-area-frame.html [ Failure ]
+crbug.com/982194 fast/scrolling/scrollable-area-frame.html [ Crash Failure ]
 crbug.com/889952 fast/selectors/selection-window-inactive.html [ Pass ]
 crbug.com/591099 fast/selectors/shadow-host-div-with-span.html [ Failure ]
 crbug.com/591099 fast/selectors/shadow-host-div-with-text.html [ Failure ]
@@ -372,22 +356,15 @@
 crbug.com/982194 fast/spatial-navigation/snav-zero-margin-content.html [ Failure ]
 crbug.com/874695 fast/table/multiple-captions-crash3.html [ Pass ]
 crbug.com/982194 fast/text-autosizing/layout-after-append.html [ Failure ]
-crbug.com/982194 fast/writing-mode/background-vertical-lr.html [ Failure Pass ]
-crbug.com/982194 fast/writing-mode/basic-vertical-line.html [ Failure Pass ]
 crbug.com/982194 fast/writing-mode/border-image-vertical-lr.html [ Failure ]
 crbug.com/982194 fast/writing-mode/border-image-vertical-rl.html [ Failure ]
-crbug.com/982194 fast/writing-mode/border-radius-clipping-vertical-lr.html [ Failure Pass ]
-crbug.com/982194 fast/writing-mode/border-styles-vertical-lr.html [ Failure Pass ]
-crbug.com/982194 fast/writing-mode/english-lr-text.html [ Failure Pass ]
 crbug.com/982194 fast/writing-mode/flipped-blocks-hit-test-line-edges.html [ Failure ]
-crbug.com/982194 fast/writing-mode/japanese-lr-text.html [ Failure Pass ]
 crbug.com/718155 fullscreen/full-screen-iframe-not-allowed.html [ Failure ]
 crbug.com/982194 hittesting/culled-inline-crash.html [ Failure ]
 crbug.com/982194 hittesting/inline-with-clip-path.html [ Failure ]
-crbug.com/982194 html/sections/body-legacy-colors.html [ Timeout ]
-crbug.com/982194 http/tests/devtools/a11y-axe-core/elements/main-tool-test.js [ Timeout ]
+crbug.com/982194 html/sections/body-legacy-colors.html [ Crash Timeout ]
+crbug.com/982194 http/tests/devtools/a11y-axe-core/elements/main-tool-test.js [ Pass Timeout ]
 crbug.com/982194 http/tests/devtools/a11y-axe-core/performance/performance-pane-a11y-test.js [ Pass Timeout ]
-crbug.com/982194 virtual/text-antialias/orientation-sideways.html [ Failure Pass ]
 crbug.com/591099 virtual/text-antialias/selection/inline-block-in-selection-root.html [ Pass ]
 crbug.com/591099 virtual/text-antialias/selection/selection-rect-line-height-too-small.html [ Pass ]
 crbug.com/869364 crbug.com/874695 http/tests/devtools/console/console-correct-suggestions.js [ Crash Pass Timeout ]
@@ -399,12 +376,12 @@
 crbug.com/982194 http/tests/devtools/coverage/decorations-after-script-formatter.js [ Pass Timeout ]
 crbug.com/678482 http/tests/devtools/debugger/fetch-breakpoints.js [ Pass ]
 crbug.com/846997 http/tests/devtools/editor/text-editor-ctrl-d-1.js [ Pass Timeout ]
-crbug.com/850358 http/tests/devtools/editor/text-editor-enter-behaviour.js [ Pass Timeout ]
+crbug.com/850358 http/tests/devtools/editor/text-editor-enter-behaviour.js [ Pass ]
 crbug.com/846982 crbug.com/874695 http/tests/devtools/editor/text-editor-formatter.js [ Crash Pass Timeout ]
 crbug.com/420008 crbug.com/749738 http/tests/devtools/editor/text-editor-word-jumps.js [ Crash Pass Timeout ]
 crbug.com/596486 http/tests/devtools/elements/insert-node.js [ Pass ]
 crbug.com/937811 http/tests/devtools/elements/shadow/elements-panel-shadow-selection-on-refresh-2.js [ Pass ]
-crbug.com/937811 http/tests/devtools/elements/shadow/elements-panel-shadow-selection-on-refresh-3.js [ Pass ]
+crbug.com/937811 http/tests/devtools/elements/shadow/elements-panel-shadow-selection-on-refresh-3.js [ Pass Timeout ]
 crbug.com/959002 crbug.com/959042 http/tests/devtools/elements/styles-1/color-aware-property-value-edit.js [ Crash Pass Timeout ]
 crbug.com/982194 http/tests/devtools/elements/styles-1/css-live-edit.js [ Pass Timeout ]
 crbug.com/959002 crbug.com/959042 http/tests/devtools/elements/styles-1/edit-resource-referred-by-multiple-styletags.js [ Crash Pass Timeout ]
@@ -412,15 +389,15 @@
 crbug.com/528419 http/tests/devtools/elements/styles-2/pseudo-elements.js [ Pass ]
 crbug.com/959002 crbug.com/959042 http/tests/devtools/elements/styles-3/style-autocomplete.js [ Crash Pass Timeout ]
 crbug.com/938884 http/tests/devtools/elements/styles-3/styles-add-blank-property.js [ Pass Timeout ]
-crbug.com/945665 http/tests/devtools/elements/styles-3/styles-add-new-rule-tab.js [ Failure Timeout ]
-crbug.com/945665 http/tests/devtools/elements/styles-3/styles-add-new-rule.js [ Timeout ]
+crbug.com/945665 http/tests/devtools/elements/styles-3/styles-add-new-rule-tab.js [ Failure ]
+crbug.com/945665 http/tests/devtools/elements/styles-3/styles-add-new-rule.js [ Failure Timeout ]
 crbug.com/945665 http/tests/devtools/elements/styles-3/styles-change-node-while-editing.js [ Failure ]
 crbug.com/945665 http/tests/devtools/elements/styles-3/styles-disable-inherited.js [ Failure ]
 crbug.com/959002 crbug.com/959042 http/tests/devtools/elements/styles-3/styles-variables.js [ Crash Pass Timeout ]
 crbug.com/667560 http/tests/devtools/elements/styles-4/inline-style-sourcemap.js [ Failure Pass ]
 crbug.com/959002 crbug.com/959042 http/tests/devtools/elements/styles-4/styles-keyframes.js [ Crash Pass Timeout ]
-crbug.com/946714 http/tests/devtools/elements/styles-4/styles-live-locations-leak.js [ Timeout ]
-crbug.com/982116 http/tests/devtools/elements/styles-4/styles-new-API.js [ Pass ]
+crbug.com/946714 http/tests/devtools/elements/styles-4/styles-live-locations-leak.js [ Pass Timeout ]
+crbug.com/982116 http/tests/devtools/elements/styles-4/styles-new-API.js [ Pass Timeout ]
 crbug.com/849978 http/tests/devtools/elements/styles-4/stylesheet-source-url-comment.js [ Pass Timeout ]
 crbug.com/959002 crbug.com/959042 http/tests/devtools/elements/styles-4/undo-add-new-rule.js [ Crash Pass Timeout ]
 crbug.com/978304 http/tests/devtools/elements/styles-4/undo-add-property.js [ Pass Timeout ]
@@ -431,11 +408,10 @@
 crbug.com/336481 http/tests/devtools/jump-to-previous-editing-location.js [ Pass ]
 crbug.com/327078 http/tests/devtools/network/long-script-content.js [ Pass ]
 crbug.com/938200 http/tests/devtools/network/network-blocked-reason.js [ Pass Timeout ]
-crbug.com/982194 http/tests/devtools/network/network-cookies-pane.js [ Pass ]
+crbug.com/982194 http/tests/devtools/network/network-cookies-pane.js [ Failure Pass ]
 crbug.com/679833 crbug.com/762529 http/tests/devtools/network/network-datareceived.js [ Crash Failure Timeout ]
 crbug.com/759632 http/tests/devtools/network/network-datasaver-warning.js [ Failure ]
 crbug.com/945629 http/tests/devtools/network/network-filters.js [ Pass ]
-crbug.com/982194 http/tests/devtools/network/network-search.js [ Pass Timeout ]
 crbug.com/817167 crbug.com/874695 http/tests/devtools/oopif/oopif-cookies-refresh.js [ Crash Failure Pass Timeout ]
 crbug.com/818076 http/tests/devtools/oopif/oopif-elements-navigate-in.js [ Pass ]
 crbug.com/874695 http/tests/devtools/persistence/persistence-mimetype-on-rename.js [ Pass ]
@@ -444,7 +420,7 @@
 crbug.com/849670 http/tests/devtools/service-workers/service-worker-v8-cache.js [ Pass Timeout ]
 crbug.com/874695 crbug.com/954319 http/tests/devtools/sources/debugger-breakpoints/breakpoints-ui-in-multiple-workers.js [ Crash Pass Timeout ]
 crbug.com/874695 http/tests/devtools/sources/debugger-breakpoints/breakpoints-ui-shifted-breakpoint.js [ Pass ]
-crbug.com/874695 http/tests/devtools/sources/debugger-breakpoints/dom-breakpoints.js [ Failure ]
+crbug.com/874695 http/tests/devtools/sources/debugger-breakpoints/dom-breakpoints.js [ Failure Pass ]
 crbug.com/450493 crbug.com/912793 http/tests/devtools/sources/debugger-breakpoints/restore-locations-for-breakpoint-with-broken-source-map.js [ Crash Failure Pass Timeout ]
 crbug.com/874695 http/tests/devtools/sources/debugger-frameworks/frameworks-dom-xhr-event-breakpoints.js [ Pass ]
 crbug.com/450493 crbug.com/916975 http/tests/devtools/sources/debugger-ui/call-stack-show-more.js [ Crash Failure Pass Timeout ]
@@ -471,7 +447,7 @@
 crbug.com/982194 http/tests/security/anchor-download-allow-data.html [ Timeout ]
 crbug.com/982194 http/tests/security/anchor-download-allow-sameorigin.html [ Timeout ]
 crbug.com/982194 http/tests/security/contentSecurityPolicy/frame-src-vs-shift-click.html [ Timeout ]
-crbug.com/982194 http/tests/security/mixedContent/insecure-css-resources.html [ Pass ]
+crbug.com/982194 http/tests/security/mixedContent/insecure-css-resources.html [ Failure Pass ]
 crbug.com/982194 images/55.html [ Failure ]
 crbug.com/24182 images/png-suite/test.html [ Pass ]
 crbug.com/982194 inspector-protocol/accessibility/accessibility-getFullAXTree-display-locked.js [ Failure ]
@@ -479,7 +455,7 @@
 crbug.com/874695 crbug.com/936165 media/autoplay-muted.html [ Crash Pass Timeout ]
 crbug.com/908347 media/autoplay/webaudio-audio-context-resume.html [ Failure Pass ]
 crbug.com/942951 media/controls/controls-layout-in-different-size.html [ Pass ]
-crbug.com/982194 media/picture-in-picture/v2/detached-iframe.html [ Failure Timeout ]
+crbug.com/982194 media/picture-in-picture/v2/detached-iframe.html [ Failure Pass Timeout ]
 crbug.com/982194 media/picture-in-picture/v2/request-picture-in-picture-twice.html [ Failure ]
 crbug.com/982194 media/picture-in-picture/v2/request-picture-in-picture.html [ Failure Pass Timeout ]
 crbug.com/874695 media/remoteplayback/prompt-twice-throws.html [ Pass ]
@@ -528,14 +504,14 @@
 crbug.com/982194 paint/invalidation/offset-change-wrong-invalidation-with-float.html [ Failure ]
 crbug.com/982194 paint/invalidation/outline/focus-continuations.html [ Failure ]
 crbug.com/982194 paint/invalidation/outline/focus-enable-continuations.html [ Failure ]
-crbug.com/982194 paint/invalidation/outline/focus-ring-continuation-move-crash.html [ Crash ]
+crbug.com/982194 paint/invalidation/outline/focus-ring-continuation-move-crash.html [ Crash Pass ]
 crbug.com/982194 paint/invalidation/outline/focus-ring-on-child-move.html [ Failure ]
-crbug.com/982194 paint/invalidation/outline/focus-ring-on-continuation-move.html [ Crash ]
-crbug.com/982194 paint/invalidation/outline/focus-ring-on-inline-continuation-move.html [ Crash ]
+crbug.com/982194 paint/invalidation/outline/focus-ring-on-continuation-move.html [ Crash Failure ]
+crbug.com/982194 paint/invalidation/outline/focus-ring-on-inline-continuation-move.html [ Crash Failure ]
 crbug.com/835484 paint/invalidation/outline/inline-focus.html [ Failure ]
 crbug.com/982194 paint/invalidation/outline/inline-outline-repaint-2.html [ Failure ]
 crbug.com/982194 paint/invalidation/outline/outline-change-invalidation.html [ Failure ]
-crbug.com/982194 paint/invalidation/outline/outline-containing-image-in-non-standard-mode.html [ Crash ]
+crbug.com/982194 paint/invalidation/outline/outline-containing-image-in-non-standard-mode.html [ Crash Failure ]
 crbug.com/982194 paint/invalidation/outline/outline-continuations.html [ Failure ]
 crbug.com/982194 paint/invalidation/overflow/float-overflow-right.html [ Failure ]
 crbug.com/982194 paint/invalidation/overflow/float-overflow.html [ Failure ]
@@ -544,7 +520,7 @@
 crbug.com/982194 paint/invalidation/overflow/inline-vertical-rl-overflow.html [ Failure ]
 crbug.com/982194 paint/invalidation/overflow/line-overflow.html [ Failure ]
 crbug.com/982194 paint/invalidation/overflow/negative-text-indent-with-overflow-hidden.html [ Failure ]
-crbug.com/982194 paint/invalidation/overflow/overflow-outline-repaint.html [ Crash ]
+crbug.com/982194 paint/invalidation/overflow/overflow-outline-repaint.html [ Crash Pass ]
 crbug.com/982194 paint/invalidation/paint-invalidation-with-reparent-across-frame-boundaries.html [ Failure ]
 crbug.com/982194 paint/invalidation/position/abspos-shift-image-incorrect-repaint.html [ Failure ]
 crbug.com/982194 paint/invalidation/position/inline-relative-positioned.html [ Failure ]
@@ -614,7 +590,6 @@
 crbug.com/982194 paint/invalidation/table/table-collapsed-border.html [ Failure ]
 crbug.com/982194 paint/invalidation/table/table-shrink-row-repaint.html [ Failure ]
 crbug.com/982194 paint/invalidation/text-append-dirty-lines.html [ Failure ]
-crbug.com/982194 paint/invalidation/text-emphasis-h.html [ Failure Pass ]
 crbug.com/982194 paint/invalidation/text-match-document-change.html [ Failure ]
 crbug.com/982194 paint/invalidation/transform/transform-layout-repaint.html [ Failure ]
 crbug.com/982194 paint/invalidation/vertical-rl-as-paint-container.html [ Failure ]
@@ -641,12 +616,12 @@
 crbug.com/942951 virtual/audio-service/media/controls/controls-layout-in-different-size.html [ Pass ]
 crbug.com/982194 virtual/audio-service/media/picture-in-picture/v2/detached-iframe.html [ Failure Pass ]
 crbug.com/982194 virtual/audio-service/media/picture-in-picture/v2/request-picture-in-picture-twice.html [ Failure ]
-crbug.com/982194 virtual/audio-service/media/picture-in-picture/v2/request-picture-in-picture.html [ Failure Pass ]
+crbug.com/982194 virtual/audio-service/media/picture-in-picture/v2/request-picture-in-picture.html [ Failure ]
 crbug.com/874695 virtual/audio-service/media/remoteplayback/prompt-twice-throws.html [ Pass ]
 crbug.com/982194 virtual/audio-service/media/stable/video-object-fit-stable.html [ Pass ]
 crbug.com/982194 virtual/cache-storage-sequence/external/wpt/service-workers/service-worker/udate-bytecheck.https.html [ Timeout ]
-Bug(none) virtual/composite-after-paint/compositing/geometry/outline-change.html [ Pass ]
-Bug(none) virtual/composite-after-paint/compositing/gestures/gesture-tapHighlight-img.html [ Pass ]
+virtual/composite-after-paint/compositing/geometry/outline-change.html [ Pass ]
+virtual/composite-after-paint/compositing/gestures/gesture-tapHighlight-img.html [ Pass ]
 
 crbug.com/982194 accessibility/selection-affinity.html [ Failure ]
 crbug.com/982194 compositing/overflow/composited-scroll-with-fractional-translation.html [ Pass ]
@@ -958,6 +933,22 @@
 crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-content-rtl-002.html [ Pass ]
 crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-content-vertWM-001.html [ Pass ]
 crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-content-vertWM-002.html [ Pass ]
+crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-001.html [ Pass ]
+crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-002.html [ Pass ]
+crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-003.html [ Pass ]
+crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-004.html [ Pass ]
+crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-005.html [ Pass ]
+crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-006.html [ Pass ]
+crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-007.html [ Pass ]
+crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-008.html [ Pass ]
+crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-rtl-001.html [ Pass ]
+crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-rtl-002.html [ Pass ]
+crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-rtl-003.html [ Pass ]
+crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-rtl-004.html [ Pass ]
+crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-vertWM-001.html [ Pass ]
+crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-vertWM-002.html [ Pass ]
+crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-vertWM-003.html [ Pass ]
+crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-align-self-vertWM-004.html [ Pass ]
 crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-fallback-align-content-001.html [ Pass ]
 crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-justify-content-001.html [ Pass ]
 crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/align3/flex-abspos-staticpos-justify-content-002.html [ Pass ]
@@ -1075,7 +1066,14 @@
 crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/writing-modes-3/text-combine-upright-compression-006a.html [ Pass ]
 crbug.com/982194 external/wpt/encoding/eof-utf-8-three.html [ Pass ]
 crbug.com/982194 external/wpt/encoding/eof-utf-8-two.html [ Pass ]
+crbug.com/982194 external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-06.html [ Pass ]
+crbug.com/982194 external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-08.html [ Pass ]
+crbug.com/982194 external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-10.html [ Pass ]
+crbug.com/982194 external/wpt/forced-colors-mode/forced-colors-mode-05.html [ Pass ]
+crbug.com/982194 external/wpt/forced-colors-mode/forced-colors-mode-14.html [ Pass ]
+crbug.com/982194 external/wpt/forced-colors-mode/forced-colors-mode-17.html [ Pass ]
 crbug.com/982194 external/wpt/forced-colors-mode/forced-colors-mode-19.html [ Failure ]
+crbug.com/982194 external/wpt/forced-colors-mode/forced-colors-mode-23.html [ Pass ]
 crbug.com/982194 external/wpt/geolocation-API/PositionOptions.https.html [ Failure Pass ]
 crbug.com/982194 external/wpt/html/rendering/non-replaced-elements/tables/table-border-1.html [ Pass ]
 crbug.com/982194 external/wpt/html/rendering/non-replaced-elements/tables/table-border-3q.html [ Failure ]
@@ -1104,18 +1102,19 @@
 crbug.com/982194 external/wpt/infrastructure/reftest/reftest_fuzzy_ini_full.html [ Pass ]
 crbug.com/982194 external/wpt/infrastructure/reftest/reftest_fuzzy_ini_ref_only.html [ Pass ]
 crbug.com/982194 external/wpt/infrastructure/reftest/reftest_fuzzy_ini_short.html [ Pass ]
-crbug.com/982194 external/wpt/intersection-observer/v2/animated-occlusion.html [ Crash ]
-crbug.com/982194 external/wpt/intersection-observer/v2/blur-filter.html [ Crash ]
-crbug.com/982194 external/wpt/intersection-observer/v2/cross-origin-effects.sub.html [ Crash ]
-crbug.com/982194 external/wpt/intersection-observer/v2/cross-origin-occlusion.sub.html [ Crash ]
-crbug.com/982194 external/wpt/intersection-observer/v2/delay-test.html [ Crash ]
-crbug.com/982194 external/wpt/intersection-observer/v2/position-relative.html [ Crash ]
-crbug.com/982194 external/wpt/intersection-observer/v2/simple-effects.html [ Crash ]
-crbug.com/982194 external/wpt/intersection-observer/v2/simple-occlusion-svg-foreign-object.html [ Crash ]
-crbug.com/982194 external/wpt/intersection-observer/v2/simple-occlusion.html [ Crash ]
+crbug.com/982194 external/wpt/intersection-observer/v2/animated-occlusion.html [ Crash Pass ]
+crbug.com/982194 external/wpt/intersection-observer/v2/blur-filter.html [ Crash Failure ]
+crbug.com/982194 external/wpt/intersection-observer/v2/cross-origin-effects.sub.html [ Crash Pass ]
+crbug.com/982194 external/wpt/intersection-observer/v2/cross-origin-occlusion.sub.html [ Crash Pass ]
+crbug.com/982194 external/wpt/intersection-observer/v2/delay-test.html [ Crash Failure Pass ]
+crbug.com/982194 external/wpt/intersection-observer/v2/position-relative.html [ Crash Pass ]
+crbug.com/982194 external/wpt/intersection-observer/v2/simple-effects.html [ Crash Pass ]
+crbug.com/982194 external/wpt/intersection-observer/v2/simple-occlusion-svg-foreign-object.html [ Crash Pass ]
+crbug.com/982194 external/wpt/intersection-observer/v2/simple-occlusion.html [ Crash Pass ]
 crbug.com/982194 external/wpt/largest-contentful-paint/element-only-when-fully-active.html [ Timeout ]
 crbug.com/982194 external/wpt/largest-contentful-paint/first-paint-equals-lcp-text.html [ Timeout ]
 crbug.com/982194 external/wpt/largest-contentful-paint/toJSON.html [ Timeout ]
+crbug.com/982194 external/wpt/mathml/presentation-markup/direction/direction-008.html [ Pass ]
 crbug.com/982194 external/wpt/mathml/presentation-markup/direction/direction-overall.html [ Pass ]
 crbug.com/982194 external/wpt/mathml/presentation-markup/fractions/frac-color-002.html [ Pass ]
 crbug.com/982194 external/wpt/mathml/presentation-markup/fractions/frac-created-dynamically-2.html [ Pass ]
@@ -1144,7 +1143,8 @@
 crbug.com/982194 external/wpt/mathml/presentation-markup/radicals/radical-rendering-from-in-flow.html [ Pass ]
 crbug.com/982194 external/wpt/mathml/presentation-markup/scripts/subsup-legacy-scriptshift-attributes-001.tentative.html [ Pass ]
 crbug.com/982194 external/wpt/mathml/presentation-markup/scripts/underover-legacy-align-attribute-001.html [ Pass ]
-crbug.com/982194 external/wpt/mathml/presentation-markup/spaces/mspace-children.html [ Pass ]
+crbug.com/982194 external/wpt/mathml/presentation-markup/spaces/mspace-children.html [ Failure Pass ]
+crbug.com/982194 external/wpt/mathml/presentation-markup/tables/table-001.html [ Crash Failure ]
 crbug.com/982194 external/wpt/mathml/presentation-markup/tokens/ms-001.html [ Pass ]
 crbug.com/982194 external/wpt/mathml/relations/css-styling/color-002.html [ Pass ]
 crbug.com/982194 external/wpt/mathml/relations/css-styling/color-003.html [ Pass ]
@@ -1155,11 +1155,22 @@
 crbug.com/982194 external/wpt/mathml/relations/css-styling/displaystyle-013.html [ Pass ]
 crbug.com/982194 external/wpt/mathml/relations/css-styling/displaystyle-014.html [ Pass ]
 crbug.com/982194 external/wpt/mathml/relations/css-styling/displaystyle-015.html [ Pass ]
+crbug.com/982194 external/wpt/mathml/relations/css-styling/mathvariant-auto.html [ Failure Pass ]
+crbug.com/982194 external/wpt/mathml/relations/css-styling/mathvariant-bold-fraktur.html [ Failure Pass ]
+crbug.com/982194 external/wpt/mathml/relations/css-styling/mathvariant-bold-italic.html [ Failure Pass ]
+crbug.com/982194 external/wpt/mathml/relations/css-styling/mathvariant-bold-sans-serif.html [ Failure Pass ]
 crbug.com/982194 external/wpt/mathml/relations/css-styling/mathvariant-bold-script.html [ Pass ]
+crbug.com/982194 external/wpt/mathml/relations/css-styling/mathvariant-bold.html [ Failure Pass ]
 crbug.com/982194 external/wpt/mathml/relations/css-styling/mathvariant-case-sensitivity.html [ Pass ]
+crbug.com/982194 external/wpt/mathml/relations/css-styling/mathvariant-double-struck.html [ Failure Pass ]
+crbug.com/982194 external/wpt/mathml/relations/css-styling/mathvariant-fraktur.html [ Failure Pass ]
 crbug.com/982194 external/wpt/mathml/relations/css-styling/mathvariant-initial.html [ Pass ]
+crbug.com/982194 external/wpt/mathml/relations/css-styling/mathvariant-italic.html [ Failure Pass ]
 crbug.com/982194 external/wpt/mathml/relations/css-styling/mathvariant-looped.html [ Pass ]
+crbug.com/982194 external/wpt/mathml/relations/css-styling/mathvariant-monospace.html [ Failure Pass ]
+crbug.com/982194 external/wpt/mathml/relations/css-styling/mathvariant-sans-serif-bold-italic.html [ Failure Pass ]
 crbug.com/982194 external/wpt/mathml/relations/css-styling/mathvariant-sans-serif-italic.html [ Pass ]
+crbug.com/982194 external/wpt/mathml/relations/css-styling/mathvariant-sans-serif.html [ Failure Pass ]
 crbug.com/982194 external/wpt/mathml/relations/css-styling/mathvariant-script.html [ Pass ]
 crbug.com/982194 external/wpt/mathml/relations/css-styling/mathvariant-stretched.html [ Pass ]
 crbug.com/982194 external/wpt/mathml/relations/css-styling/mathvariant-tailed.html [ Pass ]
@@ -1170,17 +1181,18 @@
 crbug.com/982194 external/wpt/mathml/relations/html5-tree/display-2.html [ Pass ]
 crbug.com/982194 external/wpt/mathml/relations/html5-tree/href-click-3.html [ Pass ]
 crbug.com/982194 external/wpt/mathml/relations/html5-tree/integration-point-2.html [ Pass ]
+crbug.com/982194 external/wpt/mathml/relations/html5-tree/integration-point-3.html [ Pass ]
 crbug.com/982194 external/wpt/media-source/mediasource-getvideoplaybackquality.html [ Pass ]
-crbug.com/982194 external/wpt/native-file-system/sandboxed_FileSystemBaseHandle-postMessage-BroadcastChannel.tentative.https.window.html [ Crash ]
+crbug.com/982194 external/wpt/native-file-system/sandboxed_FileSystemBaseHandle-postMessage-BroadcastChannel.tentative.https.window.html [ Crash Pass ]
 crbug.com/982194 external/wpt/native-file-system/sandboxed_FileSystemBaseHandle-postMessage-MessagePort.tentative.https.window.html [ Crash ]
 crbug.com/982194 external/wpt/native-file-system/sandboxed_FileSystemBaseHandle-postMessage.tentative.https.window.html [ Crash ]
 crbug.com/982194 external/wpt/native-file-system/sandboxed_FileSystemDirectoryHandle-getEntries.tentative.https.any.html [ Crash Pass ]
-crbug.com/982194 external/wpt/native-file-system/sandboxed_FileSystemDirectoryHandle-getEntries.tentative.https.any.worker.html [ Crash ]
+crbug.com/982194 external/wpt/native-file-system/sandboxed_FileSystemDirectoryHandle-getEntries.tentative.https.any.worker.html [ Crash Pass ]
 crbug.com/982194 external/wpt/native-file-system/sandboxed_FileSystemDirectoryHandle-getFile.tentative.https.any.html [ Crash Pass ]
-crbug.com/982194 external/wpt/native-file-system/sandboxed_FileSystemDirectoryHandle-getFile.tentative.https.any.worker.html [ Crash ]
+crbug.com/982194 external/wpt/native-file-system/sandboxed_FileSystemDirectoryHandle-getFile.tentative.https.any.worker.html [ Crash Pass ]
 crbug.com/982194 external/wpt/native-file-system/sandboxed_FileSystemDirectoryHandle-removeEntry.tentative.https.any.html [ Crash Pass ]
 crbug.com/982194 external/wpt/native-file-system/sandboxed_FileSystemDirectoryHandle-removeEntry.tentative.https.any.worker.html [ Crash Pass ]
-crbug.com/982194 external/wpt/native-file-system/sandboxed_FileSystemWriter.tentative.https.any.html [ Crash ]
+crbug.com/982194 external/wpt/native-file-system/sandboxed_FileSystemWriter.tentative.https.any.html [ Crash Pass ]
 crbug.com/982194 external/wpt/native-file-system/sandboxed_FileSystemWriter.tentative.https.any.worker.html [ Crash ]
 crbug.com/982194 external/wpt/payment-method-basic-card/apply_the_modifiers.html [ Timeout ]
 crbug.com/982194 external/wpt/payment-method-basic-card/steps_for_selecting_the_payment_handler.html [ Timeout ]
@@ -1198,6 +1210,9 @@
 crbug.com/982194 external/wpt/svg/text/reftests/text-inline-size-003.svg [ Pass ]
 crbug.com/982194 external/wpt/svg/text/reftests/text-multiline-003.svg [ Pass ]
 crbug.com/982194 external/wpt/svg/text/reftests/text-xml-space-001.svg [ Pass ]
+crbug.com/982194 external/wpt/trusted-types/eval-csp-no-tt.tentative.html [ Pass ]
+crbug.com/982194 external/wpt/trusted-types/eval-no-csp-no-tt-default-policy.tentative.html [ Pass ]
+crbug.com/982194 external/wpt/trusted-types/eval-no-csp-no-tt.tentative.html [ Pass ]
 crbug.com/982194 external/wpt/webvtt/rendering/cues-with-video/processing-model/2_cues_overlapping_completely_move_up.html [ Pass ]
 crbug.com/982194 external/wpt/webvtt/rendering/cues-with-video/processing-model/2_cues_overlapping_partially_move_down.html [ Pass ]
 crbug.com/982194 external/wpt/webvtt/rendering/cues-with-video/processing-model/2_tracks.html [ Pass ]
@@ -1394,25 +1409,21 @@
 crbug.com/982194 fast/block/float/hittest-float-in-anchor.html [ Failure ]
 crbug.com/982194 fast/borders/border-image-outset-split-inline-vertical-lr.html [ Pass ]
 crbug.com/982194 fast/borders/inline-mask-overlay-image-outset-vertical-rl.html [ Failure ]
-crbug.com/982194 fast/css-grid-layout/grid-self-baseline-01.html [ Failure Pass ]
-crbug.com/982194 fast/css-grid-layout/grid-self-baseline-04.html [ Failure Pass ]
-crbug.com/982194 fast/css-grid-layout/grid-self-baseline-05.html [ Failure Pass ]
-crbug.com/982194 fast/css-grid-layout/grid-self-baseline-07.html [ Failure Pass ]
 crbug.com/982194 fast/css3-text/css3-text-decoration/text-underline-position/text-underline-position-under.html [ Pass ]
 crbug.com/982194 fast/dom/SelectorAPI/resig-SelectorsAPI-test.xhtml [ Pass ]
 crbug.com/982194 fast/events/mouse-relative-position.html [ Failure ]
 crbug.com/982194 fast/events/tabindex-focus-blur-all.html [ Pass ]
 crbug.com/982194 fast/events/touch/compositor-touch-hit-rects-list-translate.html [ Failure ]
-crbug.com/982194 fast/multicol/vertical-lr/column-break-with-balancing.html [ Failure Pass ]
-crbug.com/982194 fast/multicol/vertical-lr/column-count-with-rules.html [ Failure Pass ]
-crbug.com/982194 fast/multicol/vertical-lr/column-rules.html [ Failure Pass ]
+crbug.com/982194 fast/multicol/vertical-lr/column-break-with-balancing.html [ Failure ]
+crbug.com/982194 fast/multicol/vertical-lr/column-count-with-rules.html [ Failure ]
+crbug.com/982194 fast/multicol/vertical-lr/column-rules.html [ Failure ]
 crbug.com/982194 fast/multicol/vertical-lr/float-avoidance.html [ Pass ]
-crbug.com/982194 fast/multicol/vertical-lr/float-big-line.html [ Failure Pass ]
-crbug.com/982194 fast/multicol/vertical-lr/float-break.html [ Failure Pass ]
-crbug.com/982194 fast/multicol/vertical-lr/float-content-break.html [ Failure Pass ]
-crbug.com/982194 fast/multicol/vertical-lr/float-edge.html [ Failure Pass ]
-crbug.com/982194 fast/multicol/vertical-lr/float-paginate.html [ Failure Pass ]
-crbug.com/982194 fast/multicol/vertical-lr/unsplittable-inline-block.html [ Failure Pass ]
+crbug.com/982194 fast/multicol/vertical-lr/float-big-line.html [ Failure ]
+crbug.com/982194 fast/multicol/vertical-lr/float-break.html [ Failure ]
+crbug.com/982194 fast/multicol/vertical-lr/float-content-break.html [ Failure ]
+crbug.com/982194 fast/multicol/vertical-lr/float-edge.html [ Failure ]
+crbug.com/982194 fast/multicol/vertical-lr/float-paginate.html [ Failure ]
+crbug.com/982194 fast/multicol/vertical-lr/unsplittable-inline-block.html [ Failure ]
 crbug.com/982194 fast/multicol/vertical-rl/nested-columns.html [ Pass ]
 crbug.com/982194 fast/overflow/scrollbar-click-retains-focus.html [ Failure ]
 crbug.com/982194 fast/scroll-snap/snaps-after-scrollbar-scrolling.html [ Failure ]
@@ -1426,7 +1437,7 @@
 crbug.com/982194 http/tests/devtools/elements/highlight/highlight-dom-updates.js [ Pass Timeout ]
 crbug.com/982194 http/tests/devtools/elements/styles-4/styles-update-from-js.js [ Timeout ]
 crbug.com/982194 http/tests/devtools/indexeddb/database-refresh-view.js [ Pass ]
-crbug.com/982194 http/tests/devtools/oopif/oopif-storage.js [ Pass Timeout ]
+crbug.com/982194 http/tests/devtools/oopif/oopif-storage.js [ Pass ]
 crbug.com/982194 http/tests/devtools/profiler/heap-snapshot-location.js [ Pass ]
 crbug.com/982194 http/tests/devtools/resource-tree/resource-tree-crafted-frame-add.js [ Pass ]
 crbug.com/982194 http/tests/devtools/resource-tree/resource-tree-frame-in-crafted-frame.js [ Pass ]
@@ -1440,7 +1451,7 @@
 crbug.com/982194 http/tests/devtools/service-workers/user-agent-override.js [ Pass ]
 crbug.com/982194 http/tests/devtools/sources/debugger/navigator-view.js [ Crash Pass ]
 crbug.com/982194 http/tests/devtools/tracing/timeline-paint/paint-profiler-update.js [ Pass ]
-crbug.com/982194 http/tests/intersection-observer/cross-origin-display-none.html [ Crash ]
+crbug.com/982194 http/tests/intersection-observer/cross-origin-display-none.html [ Crash Pass ]
 crbug.com/982194 http/tests/navigation/anchor-frames-same-origin.html [ Failure ]
 crbug.com/982194 ietestcenter/css3/bordersbackgrounds/background-attachment-local-scrolling.htm [ Failure ]
 crbug.com/982194 jquery/attributes.html [ Pass ]
@@ -1452,7 +1463,7 @@
 crbug.com/982194 jquery/manipulation.html [ Pass ]
 crbug.com/982194 jquery/offset.html [ Pass ]
 crbug.com/982194 jquery/traversing.html [ Pass ]
-crbug.com/982194 media/video-canvas-draw.html [ Failure ]
+crbug.com/982194 media/video-canvas-draw.html [ Crash Failure ]
 crbug.com/982194 paint/invalidation/compositing/float-under-composited-inline.html [ Failure ]
 crbug.com/982194 paint/invalidation/flexbox/scrollbars-changed.html [ Failure ]
 crbug.com/982194 paint/invalidation/multi-layout-one-frame.html [ Failure ]
@@ -1474,7 +1485,7 @@
 crbug.com/982194 virtual/forced-high-contrast-colors/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-01.html [ Failure ]
 crbug.com/982194 virtual/forced-high-contrast-colors/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-02.html [ Failure ]
 crbug.com/982194 virtual/forced-high-contrast-colors/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-03.html [ Failure ]
-crbug.com/982194 virtual/forced-high-contrast-colors/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-04.html [ Failure ]
+crbug.com/982194 virtual/forced-high-contrast-colors/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-04.html [ Crash Failure ]
 crbug.com/982194 virtual/forced-high-contrast-colors/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-05.html [ Failure ]
 crbug.com/982194 virtual/forced-high-contrast-colors/external/wpt/forced-colors-mode/backplate/forced-colors-mode-backplate-09.html [ Failure ]
 crbug.com/982194 virtual/gpu-rasterization/images/55.html [ Failure ]
@@ -1483,7 +1494,7 @@
 crbug.com/982194 virtual/gpu/fast/canvas/canvas-arc-circumference.html [ Pass ]
 crbug.com/982194 virtual/gpu/fast/canvas/canvas-ellipse-circumference-fill.html [ Pass ]
 crbug.com/982194 virtual/gpu/fast/canvas/canvas-ellipse-circumference.html [ Pass ]
-crbug.com/866850 virtual/gpu/fast/canvas/color-space/canvas-createImageBitmap-rec2020.html [ Failure Pass ]
+crbug.com/866850 virtual/gpu/fast/canvas/color-space/canvas-createImageBitmap-rec2020.html [ Pass ]
 crbug.com/982194 virtual/layout_ng_block_frag/external/wpt/css/css-break/fieldset-001.html [ Pass ]
 crbug.com/982194 virtual/layout_ng_block_frag/external/wpt/css/css-break/floats-and-text-narrow-and-short-dynamic.html [ Pass ]
 crbug.com/982194 virtual/layout_ng_block_frag/external/wpt/css/css-break/line-after-unbreakable-float-after-padding.html [ Pass ]
@@ -1539,8 +1550,8 @@
 crbug.com/982194 virtual/layout_ng_block_frag/external/wpt/css/css-multicol/multicol-span-all-dynamic-add-002.html [ Pass ]
 crbug.com/982194 virtual/layout_ng_block_frag/external/wpt/css/css-multicol/multicol-span-all-dynamic-add-003.html [ Pass ]
 crbug.com/982194 virtual/layout_ng_block_frag/external/wpt/css/css-multicol/multicol-span-all-dynamic-add-004.html [ Pass ]
-crbug.com/982194 virtual/layout_ng_block_frag/external/wpt/css/css-multicol/multicol-span-all-dynamic-add-007.html [ Crash ]
-crbug.com/982194 virtual/layout_ng_block_frag/external/wpt/css/css-multicol/multicol-span-all-dynamic-remove-004.html [ Crash ]
+crbug.com/982194 virtual/layout_ng_block_frag/external/wpt/css/css-multicol/multicol-span-all-dynamic-add-007.html [ Crash Pass ]
+crbug.com/982194 virtual/layout_ng_block_frag/external/wpt/css/css-multicol/multicol-span-all-dynamic-remove-004.html [ Crash Pass ]
 crbug.com/982194 virtual/layout_ng_block_frag/external/wpt/css/css-multicol/multicol-span-all-rule-001.html [ Pass ]
 crbug.com/982194 virtual/layout_ng_block_frag/external/wpt/css/css-multicol/multicol-width-004.html [ Pass ]
 crbug.com/982194 virtual/layout_ng_block_frag/external/wpt/css/css-multicol/multicol-width-005.html [ Pass ]
@@ -1639,7 +1650,7 @@
 crbug.com/591099 virtual/layout_ng_block_frag/fast/multicol/out-of-flow/abspos-auto-position-on-line.html [ Pass ]
 crbug.com/982194 virtual/layout_ng_block_frag/fast/multicol/out-of-flow/abspos-auto-position-small-on-line-at-boundary.html [ Pass ]
 crbug.com/591099 virtual/layout_ng_block_frag/fast/multicol/out-of-flow/nested-multicol.html [ Pass ]
-crbug.com/591099 virtual/layout_ng_block_frag/fast/multicol/outlines-at-column-boundaries.html [ Crash ]
+crbug.com/591099 virtual/layout_ng_block_frag/fast/multicol/outlines-at-column-boundaries.html [ Crash Pass ]
 crbug.com/982194 virtual/layout_ng_block_frag/fast/multicol/overflow-across-columns.html [ Pass ]
 crbug.com/982194 virtual/layout_ng_block_frag/fast/multicol/overflow-content.html [ Pass ]
 crbug.com/982194 virtual/layout_ng_block_frag/fast/multicol/overflow-unsplittable.html [ Pass ]
@@ -1859,13 +1870,15 @@
 crbug.com/982194 virtual/stable/http/tests/navigation/ping-cross-origin.html [ Timeout ]
 crbug.com/982194 virtual/stable/http/tests/navigation/ping-same-origin.html [ Timeout ]
 crbug.com/982194 virtual/stable/media/stable/video-object-fit-stable.html [ Pass ]
+crbug.com/982194 virtual/streaming-preload/external/wpt/html/semantics/scripting-1/the-script-element/css-module/css-module-worker-test.html [ Pass ]
+crbug.com/982194 virtual/streaming-preload/external/wpt/html/semantics/scripting-1/the-script-element/css-module/import-css-module-basic.html [ Pass ]
+crbug.com/982194 virtual/streaming-preload/external/wpt/html/semantics/scripting-1/the-script-element/css-module/utf8.tentative.html [ Pass ]
 crbug.com/874695 virtual/sxg-with-network-service/http/tests/devtools/sxg/sxg-disable-cache.js [ Pass ]
 crbug.com/851363 virtual/sxg-with-network-service/http/tests/devtools/sxg/sxg-prefetch-fail.js [ Failure Pass ]
-crbug.com/851363 virtual/sxg-with-network-service/http/tests/devtools/sxg/sxg-prefetch.js [ Pass ]
-crbug.com/982194 virtual/text-antialias/emphasis-vertical.html [ Failure Pass ]
+crbug.com/851363 virtual/sxg-with-network-service/http/tests/devtools/sxg/sxg-prefetch.js [ Failure Pass ]
 crbug.com/982194 virtual/text-antialias/font-format-support-color-cff2-vertical.html [ Pass ]
 crbug.com/982194 virtual/text-antialias/remove-zero-length-run.html [ Failure ]
-crbug.com/982194 virtual/threaded-no-composited-antialiasing/animations/timing/animation-duration-infinite.html [ Failure ]
+crbug.com/982194 virtual/threaded-no-composited-antialiasing/animations/timing/animation-duration-infinite.html [ Failure Pass ]
 crbug.com/982194 virtual/threaded-prefer-compositing/fast/scrolling/scrollable-area-frame-overflow-hidden.html [ Failure ]
 crbug.com/982194 virtual/threaded-prefer-compositing/fast/scrolling/scrollable-area-frame-overried-inherited-visibility-hidden.html [ Failure ]
 crbug.com/982194 virtual/threaded-prefer-compositing/fast/scrolling/scrollable-area-frame-scrolling-yes.html [ Failure ]
diff --git a/third_party/blink/web_tests/FlagExpectations/use-gl=any b/third_party/blink/web_tests/FlagExpectations/use-gl=any
index 3424fae2..baf44ce 100644
--- a/third_party/blink/web_tests/FlagExpectations/use-gl=any
+++ b/third_party/blink/web_tests/FlagExpectations/use-gl=any
@@ -1,3 +1,8 @@
+# tags: [ Android Fuchsia IOS IOS12.2 IOS13.0 Linux Mac Mac10.10 Mac10.11 Mac10.12 Retina
+#         Mac10.13 Win Win7 Win10 ]
+# tags: [ Release Debug ]
+# results: [ Timeout Crash Pass Failure Slow Skip ]
+
 # Need a Skia GL specific baseline.
 crbug.com/993384 compositing/geometry/vertical-scroll-composited.html [ Skip ]
 crbug.com/993384 compositing/lots-of-img-layers.html [ Skip ]
diff --git a/third_party/blink/web_tests/FlagExpectations/use-vulkan=native b/third_party/blink/web_tests/FlagExpectations/use-vulkan=native
index 9ae11e89..d430c27 100644
--- a/third_party/blink/web_tests/FlagExpectations/use-vulkan=native
+++ b/third_party/blink/web_tests/FlagExpectations/use-vulkan=native
@@ -1,3 +1,8 @@
+# tags: [ Android Fuchsia IOS IOS12.2 IOS13.0 Linux Mac Mac10.10 Mac10.11 Mac10.12 Retina
+#         Mac10.13 Win Win7 Win10 ]
+# tags: [ Release Debug ]
+# results: [ Timeout Crash Pass Failure Slow Skip ]
+
 # Need a Vulkan native specific baseline.
 crbug.com/993384 compositing/geometry/vertical-scroll-composited.html [ Skip ]
 crbug.com/993384 compositing/lots-of-img-layers.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 fdee1c2f..ad4e1e5 100644
--- a/third_party/blink/web_tests/FlagExpectations/use-vulkan=swiftshader
+++ b/third_party/blink/web_tests/FlagExpectations/use-vulkan=swiftshader
@@ -1,3 +1,8 @@
+# tags: [ Android Fuchsia IOS IOS12.2 IOS13.0 Linux Mac Mac10.10 Mac10.11 Mac10.12 Retina
+#         Mac10.13 Win Win7 Win10 ]
+# tags: [ Release Debug ]
+# results: [ Timeout Crash Pass Failure Slow 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 ]
@@ -19,4 +24,4 @@
 # Expected Image Region Rendering Nothing.
 crbug.com/1002547 fast/canvas/imagebitmap/transferFromImageBitmap-alpha.html [ Skip ]
 crbug.com/1002547 fast/canvas/imagebitmap/transferFromImageBitmap-no-alpha.html [ Skip ]
-crbug.com/1002547 fast/canvas/imagebitmap/transferFromImageBitmap.html [ Skip ]
\ No newline at end of file
+crbug.com/1002547 fast/canvas/imagebitmap/transferFromImageBitmap.html [ Skip ]
diff --git a/third_party/blink/web_tests/LeakExpectations b/third_party/blink/web_tests/LeakExpectations
index 9018500..29c6f73 100644
--- a/third_party/blink/web_tests/LeakExpectations
+++ b/third_party/blink/web_tests/LeakExpectations
@@ -1,3 +1,8 @@
+# tags: [ Android Fuchsia IOS IOS12.2 IOS13.0 Linux Mac Mac10.10 Mac10.11 Mac10.12 Retina
+#         Mac10.13 Win Win7 Win10 ]
+# tags: [ Release Debug ]
+# results: [ Timeout Crash Pass Failure Slow Skip ]
+
 # This file is used for tests that only need to be suppressed on the Chromium
 # WebKit Leak bots.
 # Further documentation:
diff --git a/third_party/blink/web_tests/MSANExpectations b/third_party/blink/web_tests/MSANExpectations
index 32adf96..3a6763b 100644
--- a/third_party/blink/web_tests/MSANExpectations
+++ b/third_party/blink/web_tests/MSANExpectations
@@ -1,3 +1,8 @@
+# tags: [ Android Fuchsia IOS IOS12.2 IOS13.0 Linux Mac Mac10.10 Mac10.11 Mac10.12 Retina
+#         Mac10.13 Win Win7 Win10 ]
+# tags: [ Release Debug ]
+# results: [ Timeout Crash Pass Failure Slow Skip ]
+
 # This file is used for tests that only need to be suppressed on
 # the Chromium Blink MSan bots.
 # Further documentation:
diff --git a/third_party/blink/web_tests/NeverFixTests b/third_party/blink/web_tests/NeverFixTests
index c527fdf..fc15390 100644
--- a/third_party/blink/web_tests/NeverFixTests
+++ b/third_party/blink/web_tests/NeverFixTests
@@ -1,3 +1,8 @@
+# tags: [ Android Fuchsia IOS IOS12.2 IOS13.0 Linux Mac Mac10.10 Mac10.11 Mac10.12 Retina
+#         Mac10.13 Win Win7 Win10 ]
+# tags: [ Release Debug ]
+# results: [ Timeout Crash Pass Failure Slow Skip ]
+
 # This file should only include tests that we never want to run.
 # There should only be the following categories of tests here:
 #   1. Tests of the test harness (run_web_tests.py) itself.
@@ -1991,20 +1996,20 @@
 # Skip below.  Note that by default Site Isolation isolates *sites* rather
 # than *origin* and therefore avoids problems related to document.domain
 # compatibility.
-Bug(none) external/wpt/html/browsers/origin/relaxing-the-same-origin-restriction [ Skip ]
-Bug(none) external/wpt/FileAPI/url/multi-global-origin-serialization.sub.html [ Skip ]
-Bug(none) external/wpt/dom/events/EventListener-incumbent-global-1.sub.html [ Skip ]
-Bug(none) external/wpt/dom/events/EventListener-incumbent-global-2.sub.html [ Skip ]
-Bug(none) http/tests/dom/EventListener-incumbent-global-1.html [ Skip ]
-Bug(none) http/tests/dom/EventListener-incumbent-global-2.html [ Skip ]
-Bug(none) external/wpt/html/browsers/history/the-location-interface/allow_prototype_cycle_through_location.sub.html [ Skip ]
-Bug(none) external/wpt/html/browsers/history/the-location-interface/location-prototype-setting-same-origin-domain.sub.html [ Skip ]
-Bug(none) external/wpt/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html [ Skip ]
-Bug(none) external/wpt/html/browsers/the-windowproxy-exotic-object/windowproxy-prototype-setting-same-origin-domain.sub.html [ Skip ]
-Bug(none) external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-domain-success.https.sub.html [ Skip ]
-Bug(none) external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-similar-but-cross-origin-success.https.sub.html [ Skip ]
-Bug(none) external/wpt/wasm/serialization/module/window-domain-success.sub.html [ Skip ]
-Bug(none) external/wpt/wasm/serialization/module/window-similar-but-cross-origin-success.sub.html [ Skip ]
+external/wpt/html/browsers/origin/relaxing-the-same-origin-restriction [ Skip ]
+external/wpt/FileAPI/url/multi-global-origin-serialization.sub.html [ Skip ]
+external/wpt/dom/events/EventListener-incumbent-global-1.sub.html [ Skip ]
+external/wpt/dom/events/EventListener-incumbent-global-2.sub.html [ Skip ]
+http/tests/dom/EventListener-incumbent-global-1.html [ Skip ]
+http/tests/dom/EventListener-incumbent-global-2.html [ Skip ]
+external/wpt/html/browsers/history/the-location-interface/allow_prototype_cycle_through_location.sub.html [ Skip ]
+external/wpt/html/browsers/history/the-location-interface/location-prototype-setting-same-origin-domain.sub.html [ Skip ]
+external/wpt/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html [ Skip ]
+external/wpt/html/browsers/the-windowproxy-exotic-object/windowproxy-prototype-setting-same-origin-domain.sub.html [ Skip ]
+external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-domain-success.https.sub.html [ Skip ]
+external/wpt/html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-similar-but-cross-origin-success.https.sub.html [ Skip ]
+external/wpt/wasm/serialization/module/window-domain-success.sub.html [ Skip ]
+external/wpt/wasm/serialization/module/window-similar-but-cross-origin-success.sub.html [ Skip ]
 # -------------------- origin-vs-url in console messages -----------------
 # Process hosting https://foo.example.com should not get any data from
 # https://bar.other-site-example.com.  This includes things like cookies
@@ -2025,7 +2030,7 @@
 # but don't make sense if
 # 3) site isolation is enabled without also enabling
 #    IsolatedCodeCache (tests disabled by the test expectation below).
-Bug(none) http/tests/devtools/isolated-code-cache/cross-origin-test.js [ Skip ]
+http/tests/devtools/isolated-code-cache/cross-origin-test.js [ Skip ]
 # ==== Tests incompatible with the default WPT Origin Isolation end here ==^^
 
 # Tests using testRunner.useUnfortunateSynchronousResizeMode occasionally fail on Win7,
diff --git a/third_party/blink/web_tests/SlowTests b/third_party/blink/web_tests/SlowTests
index 8ba7a5de..603795d 100644
--- a/third_party/blink/web_tests/SlowTests
+++ b/third_party/blink/web_tests/SlowTests
@@ -1,3 +1,8 @@
+# tags: [ Android Fuchsia IOS IOS12.2 IOS13.0 Linux Mac Mac10.10 Mac10.11 Mac10.12 Retina
+#         Mac10.13 Win Win7 Win10 ]
+# tags: [ Release Debug ]
+# results: [ Timeout Crash Pass Failure Slow Skip ]
+
 # This file should only mark tests as Slow. If they are failing in some other way, that listing should be in TestExpectations.
 # Lines listed in both files will have the *union* of the expectations.
 #
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index 2fca86d9..be2a62e 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -1,15 +1,20 @@
+# tags: [ Android Fuchsia IOS IOS12.2 IOS13.0 Linux Mac Mac10.10 Mac10.11 Mac10.12 Retina
+#         Mac10.13 Win Win7 Win10 ]
+# tags: [ Release Debug ]
+# results: [ Timeout Crash Pass Failure Slow Skip ]
+
 # This is the main failure suppression file for Blink LayoutTests.
 # Further documentation:
 # https://chromium.googlesource.com/chromium/src/+/master/docs/testing/web_test_expectations.md
 
 # Intentional failures to test the layout test system.
-Bug(intentional) harness-tests/crash.html [ Crash ]
-Bug(intentional) harness-tests/timeout.html [ Timeout ]
-Bug(intentional) external/wpt/infrastructure/reftest/reftest_match_fail.html [ Failure ]
-Bug(intentional) external/wpt/infrastructure/reftest/reftest_mismatch_fail.html [ Failure ]
-Bug(intentional) external/wpt/infrastructure/reftest/reftest_ref_timeout.html [ Timeout ]
-Bug(intentional) external/wpt/infrastructure/reftest/reftest_timeout.html [ Timeout ]
-Bug(intentional) external/wpt/infrastructure/expected-fail/timeout.html [ Timeout ]
+harness-tests/crash.html [ Crash ]
+harness-tests/timeout.html [ Timeout ]
+external/wpt/infrastructure/reftest/reftest_match_fail.html [ Failure ]
+external/wpt/infrastructure/reftest/reftest_mismatch_fail.html [ Failure ]
+external/wpt/infrastructure/reftest/reftest_ref_timeout.html [ Timeout ]
+external/wpt/infrastructure/reftest/reftest_timeout.html [ Timeout ]
+external/wpt/infrastructure/expected-fail/timeout.html [ Timeout ]
 
 crbug.com/997202 external/wpt/infrastructure/reftest/reftest_fuzzy_1.html [ Failure ]
 crbug.com/997202 external/wpt/infrastructure/reftest/reftest_fuzzy_chain_ini.html [ Failure ]
@@ -111,30 +116,30 @@
 # --- Begin CompositeAfterPaint Tests --
 # Only whitelisted tests run under the virtual suite.
 # More tests run with CompositeAfterPaint on the flag-specific try bot.
-Bug(none) virtual/composite-after-paint/ [ Skip ]
-Bug(none) virtual/composite-after-paint/compositing/backface-visibility/ [ Pass ]
-Bug(none) virtual/composite-after-paint/compositing/backgrounds/ [ Pass ]
-Bug(none) virtual/composite-after-paint/compositing/geometry/abs-position-inside-opacity.html [ Pass ]
-Bug(none) virtual/composite-after-paint/compositing/geometry/composited-html-size.html [ Pass ]
-Bug(none) virtual/composite-after-paint/compositing/geometry/outline-change.html [ Pass ]
-Bug(none) virtual/composite-after-paint/compositing/geometry/tall-page-composited.html [ Pass ]
-Bug(none) virtual/composite-after-paint/compositing/gestures/gesture-tapHighlight-img.html [ Pass ]
-Bug(none) virtual/composite-after-paint/compositing/gestures/gesture-tapHighlight-simple-scaledY.html [ Pass ]
-Bug(none) virtual/composite-after-paint/compositing/iframes/iframe-in-composited-layer.html [ Pass ]
-Bug(none) virtual/composite-after-paint/compositing/masks/mask-of-clipped-layer.html [ Pass ]
-Bug(none) virtual/composite-after-paint/compositing/overflow/clip-rotate-opacity-fixed.html [ Pass ]
-Bug(none) virtual/composite-after-paint/compositing/overlap-blending/children-opacity-huge.html [ Pass ]
-Bug(none) virtual/composite-after-paint/compositing/plugins/ [ Pass ]
-Bug(none) virtual/composite-after-paint/compositing/reflections/reflection-ordering.html [ Pass ]
-Bug(none) virtual/composite-after-paint/compositing/rtl/rtl-overflow-scrolling.html [ Pass ]
-Bug(none) virtual/composite-after-paint/compositing/squashing/squash-composited-input.html [ Pass ]
-Bug(none) virtual/composite-after-paint/compositing/transitions/opacity-on-inline.html [ Pass ]
-Bug(none) virtual/composite-after-paint/compositing/will-change/stacking-context-creation.html [ Pass ]
-Bug(none) virtual/composite-after-paint/compositing/z-order/ [ Pass ]
-Bug(none) virtual/composite-after-paint/paint/background/ [ Pass ]
-Bug(none) virtual/composite-after-paint/paint/filters/ [ Pass ]
-Bug(none) virtual/composite-after-paint/paint/frames [ Pass ]
-Bug(none) virtual/composite-after-paint/scrollingcoordinator [ Pass ]
+virtual/composite-after-paint/ [ Skip ]
+virtual/composite-after-paint/compositing/backface-visibility/ [ Pass ]
+virtual/composite-after-paint/compositing/backgrounds/ [ Pass ]
+virtual/composite-after-paint/compositing/geometry/abs-position-inside-opacity.html [ Pass ]
+virtual/composite-after-paint/compositing/geometry/composited-html-size.html [ Pass ]
+virtual/composite-after-paint/compositing/geometry/outline-change.html [ Pass ]
+virtual/composite-after-paint/compositing/geometry/tall-page-composited.html [ Pass ]
+virtual/composite-after-paint/compositing/gestures/gesture-tapHighlight-img.html [ Pass ]
+virtual/composite-after-paint/compositing/gestures/gesture-tapHighlight-simple-scaledY.html [ Pass ]
+virtual/composite-after-paint/compositing/iframes/iframe-in-composited-layer.html [ Pass ]
+virtual/composite-after-paint/compositing/masks/mask-of-clipped-layer.html [ Pass ]
+virtual/composite-after-paint/compositing/overflow/clip-rotate-opacity-fixed.html [ Pass ]
+virtual/composite-after-paint/compositing/overlap-blending/children-opacity-huge.html [ Pass ]
+virtual/composite-after-paint/compositing/plugins/ [ Pass ]
+virtual/composite-after-paint/compositing/reflections/reflection-ordering.html [ Pass ]
+virtual/composite-after-paint/compositing/rtl/rtl-overflow-scrolling.html [ Pass ]
+virtual/composite-after-paint/compositing/squashing/squash-composited-input.html [ Pass ]
+virtual/composite-after-paint/compositing/transitions/opacity-on-inline.html [ Pass ]
+virtual/composite-after-paint/compositing/will-change/stacking-context-creation.html [ Pass ]
+virtual/composite-after-paint/compositing/z-order/ [ Pass ]
+virtual/composite-after-paint/paint/background/ [ Pass ]
+virtual/composite-after-paint/paint/filters/ [ Pass ]
+virtual/composite-after-paint/paint/frames [ Pass ]
+virtual/composite-after-paint/scrollingcoordinator [ Pass ]
 # --- End CompositeAfterPaint Tests --
 
 # Subpixel differences
@@ -317,8 +322,8 @@
 
 # WebGPU tests are only run on GPU bots, so they are skipped by default and run
 # separately from other Web Tests.
-Bug(intentional) external/wpt/webgpu/ [ Skip ]
-Bug(intentional) wpt_internal/webgpu/ [ Skip ]
+external/wpt/webgpu/ [ Skip ]
+wpt_internal/webgpu/ [ Skip ]
 
 crbug.com/1018273 [ Mac ] compositing/gestures/gesture-tapHighlight-1-iframe-scrolled.html [ Failure ]
 crbug.com/1018273 [ Mac ] compositing/gestures/gesture-tapHighlight-1-iframe.html [ Failure ]
@@ -733,6 +738,7 @@
 crbug.com/591099 virtual/mouseevent_fractional/fast/events/touch/compositor-touch-hit-rects-continuation.html [ Failure ]
 crbug.com/591099 virtual/mouseevent_fractional/fast/events/touch/compositor-touch-hit-rects-list-translate.html [ Failure ]
 crbug.com/591099 virtual/mouseevent_fractional/fast/events/touch/compositor-touch-hit-rects.html [ Failure ]
+crbug.com/591099 external/wpt/paint-timing/sibling-painting-first-image.html [ Failure ]
 crbug.com/591099 virtual/paint-timing/external/wpt/paint-timing/sibling-painting-first-image.html [ Failure ]
 crbug.com/591099 virtual/scalefactor200/css3/filters/composited-layer-child-bounds-after-composited-to-sw-shadow-change.html [ Failure ]
 
@@ -1290,7 +1296,7 @@
 crbug.com/829028 virtual/layout_ng_block_frag/printing/frameset.html [ Failure ]
 crbug.com/824918 virtual/layout_ng_block_frag/printing/setPrinting.html [ Failure ]
 crbug.com/829804 virtual/layout_ng_block_frag/printing/webgl-oversized-printing.html [ Skip ]
-Bug(none) virtual/layout_ng_block_frag/fragmentation/scrolling-contents-scroll.html [ Crash Failure ]
+virtual/layout_ng_block_frag/fragmentation/scrolling-contents-scroll.html [ Crash Failure ]
 
 # Flexbox in NG
 #
@@ -1380,6 +1386,9 @@
 # ====== MathMLCore-only tests from here ======
 
 crbug.com/6606 external/wpt/mathml/presentation-markup/direction/direction-006.html [ Failure ]
+crbug.com/6606 external/wpt/mathml/presentation-markup/direction/direction-007.html [ Failure ]
+crbug.com/6606 external/wpt/mathml/presentation-markup/direction/direction-008.html [ Failure ]
+crbug.com/6606 external/wpt/mathml/presentation-markup/direction/direction-009.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/direction/direction-overall.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/direction/direction.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/fractions/frac-1.html [ Failure ]
@@ -1406,7 +1415,6 @@
 crbug.com/6606 external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-004.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-005.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-006.html [ Failure ]
-crbug.com/6606 external/wpt/mathml/presentation-markup/fractions/frac-rendering-from-in-flow.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/fractions/frac-visibility-001.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/menclose/legacy-menclose-radical-notation.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/mrow/inferred-mrow-baseline.html [ Failure ]
@@ -1415,8 +1423,6 @@
 crbug.com/6606 external/wpt/mathml/presentation-markup/mrow/legacy-mrow-like-elements-001.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/mrow/legacy-mrow-like-elements-002.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/mrow/legacy-mstyle-attributes.html [ Failure ]
-crbug.com/6606 external/wpt/mathml/presentation-markup/operators/embellished-operator-001.html [ Failure ]
-crbug.com/6606 external/wpt/mathml/presentation-markup/operators/embellished-operator-002.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/operators/mo-axis-height-1.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/operators/mo-form-dynamic.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/operators/mo-form-fallback.html [ Failure ]
@@ -1424,7 +1430,6 @@
 crbug.com/6606 external/wpt/mathml/presentation-markup/operators/mo-form.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/operators/mo-movablelimits-default.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/operators/mo-movablelimits-dynamic.html [ Failure ]
-crbug.com/6606 external/wpt/mathml/presentation-markup/operators/mo-movablelimits-from-in-flow.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/operators/mo-movablelimits.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/operators/mo-paint-lspace-rspace.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/operators/operator-dictionary-001.html [ Failure ]
@@ -1433,9 +1438,7 @@
 crbug.com/6606 external/wpt/mathml/presentation-markup/operators/operator-dictionary-004.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/operators/operator-dictionary-005.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/operators/operator-dictionary-006.html [ Failure ]
-crbug.com/6606 external/wpt/mathml/presentation-markup/radicals/radical-rendering-from-in-flow.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/radicals/root-parameters-1.html [ Failure ]
-crbug.com/6606 external/wpt/mathml/presentation-markup/scripts/cramped-001.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/scripts/empty-underover.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/scripts/subsup-1.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/scripts/subsup-2.html [ Failure ]
@@ -1457,7 +1460,6 @@
 crbug.com/6606 external/wpt/mathml/presentation-markup/spaces/space-like-001.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/spaces/space-like-002.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/spaces/space-like-003.html [ Failure ]
-crbug.com/6606 external/wpt/mathml/presentation-markup/spaces/space-like-004.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/tables/table-001.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/tables/table-002.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/tables/table-axis-height.html [ Failure ]
@@ -1476,8 +1478,6 @@
 crbug.com/6606 external/wpt/mathml/relations/css-styling/ignored-properties-001.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/css-styling/lengths-1.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/css-styling/lengths-2.html [ Failure ]
-crbug.com/6606 external/wpt/mathml/relations/css-styling/mathbackground-004.html [ Failure ]
-crbug.com/6606 external/wpt/mathml/relations/css-styling/mathcolor-004.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/css-styling/mathvariant-auto.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/css-styling/mathvariant-bold-fraktur.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/css-styling/mathvariant-bold-italic.html [ Failure ]
@@ -1497,7 +1497,6 @@
 crbug.com/6606 external/wpt/mathml/relations/css-styling/mathvariant-script.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/css-styling/mathvariant-stretched.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/css-styling/mathvariant-tailed.html [ Failure ]
-crbug.com/6606 external/wpt/mathml/relations/css-styling/not-participating-to-parent-layout.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/css-styling/padding-border-margin/border-001.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/css-styling/padding-border-margin/border-002.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/css-styling/padding-border-margin/margin-001.html [ Failure ]
@@ -1517,9 +1516,20 @@
 crbug.com/6606 external/wpt/mathml/relations/html5-tree/href-click-2.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/html5-tree/integration-point-1.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/html5-tree/integration-point-2.html [ Failure ]
+crbug.com/6606 external/wpt/mathml/relations/html5-tree/integration-point-3.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/html5-tree/integration-point-4.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/html5-tree/required-extensions-2.html [ Failure ]
 
+# Need to handle OOF for these.
+crbug.com/6606 external/wpt/mathml/presentation-markup/fractions/frac-rendering-from-in-flow.html [ Skip ]
+crbug.com/6606 external/wpt/mathml/presentation-markup/operators/embellished-operator-001.html [ Skip ]
+crbug.com/6606 external/wpt/mathml/presentation-markup/operators/embellished-operator-002.html [ Skip ]
+crbug.com/6606 external/wpt/mathml/presentation-markup/operators/mo-movablelimits-from-in-flow.html [ Skip ]
+crbug.com/6606 external/wpt/mathml/presentation-markup/radicals/radical-rendering-from-in-flow.html [ Skip ]
+crbug.com/6606 external/wpt/mathml/presentation-markup/scripts/cramped-001.html [ Skip ]
+crbug.com/6606 external/wpt/mathml/presentation-markup/spaces/space-like-004.html [ Skip ]
+crbug.com/6606 external/wpt/mathml/relations/css-styling/not-participating-to-parent-layout.html [ Skip ]
+
 # These tests time out when MathML is not implemented.
 # See https://github.com/mathml-refresh/mathml/issues/167
 crbug.com/6606 external/wpt/mathml/relations/html5-tree/href-click-3.html [ Timeout ]
@@ -1747,9 +1757,6 @@
 crbug.com/613672 [ Mac ] virtual/threaded/synthetic_gestures/synthetic-pinch-zoom-gesture-touchscreen-zoom-in-slow-desktop.html [ Skip ]
 crbug.com/613672 [ Mac ] virtual/threaded/synthetic_gestures/synthetic-pinch-zoom-gesture-touchscreen-desktop.html [ Skip ]
 
-crbug.com/522648 fast/events/touch/compositor-touch-hit-rects-iframes.html [ Crash Failure Pass ]
-crbug.com/522648 virtual/mouseevent_fractional/fast/events/touch/compositor-touch-hit-rects-iframes.html [ Crash Failure Pass ]
-crbug.com/522648 virtual/scroll_customization/fast/events/touch/compositor-touch-hit-rects-iframes.html [ Skip ]
 crbug.com/652536 fast/events/mouse-cursor-change-after-image-load.html [ Failure Pass Crash ]
 crbug.com/652536 virtual/mouseevent_fractional/fast/events/mouse-cursor-change-after-image-load.html [ Failure Pass Crash ]
 crbug.com/520188 [ Win ] http/tests/local/fileapi/file-last-modified-after-delete.html [ Failure Pass ]
@@ -2543,6 +2550,8 @@
 
 # 1px scroll offset difference for compositor threaded scrollbar scrolling on Linux.
 crbug.com/1009892 [ Mac ] virtual/compositor_threaded_scrollbar_scrolling_hidpi/fast/scrolling/scrollbars/dsf-ready/mouse-interactions-dsf-2.html [ Failure Timeout ]
+# FAIL Test mouse drags on non-custom composited div scrollbar thumb. assert_equals: Vertical thumb drag downwards did not scroll as expected. expected 46 but got 0
+crbug.com/1009892 [ Mac ] virtual/compositor_threaded_scrollbar_scrolling/fast/scrolling/scrollbars/dsf-ready/mouse-interactions-dsf-2.html [ Failure ]
 
 # Some control characters still not visible
 crbug.com/893490 [ Mac ] external/wpt/css/css-text/white-space/control-chars-001.html [ Failure ]
@@ -2660,6 +2669,9 @@
 crbug.com/1029514 external/wpt/html/semantics/embedded-content/the-video-element/resize-during-playback.html [ Pass Failure ]
 
 # ====== New tests from wpt-importer added here ======
+crbug.com/626703 [ Linux ] external/wpt/css/css-pseudo/marker-content-013.html [ Timeout ]
+crbug.com/626703 [ Mac ] external/wpt/css/css-pseudo/marker-content-013.html [ Timeout ]
+crbug.com/626703 [ Win ] external/wpt/css/css-pseudo/marker-content-013.html [ Timeout ]
 crbug.com/626703 [ Linux ] external/wpt/css/motion/offset-anchor-transform-box-fill-box-003.html [ Failure ]
 crbug.com/626703 [ Mac ] external/wpt/css/motion/offset-anchor-transform-box-fill-box-003.html [ Failure ]
 crbug.com/626703 [ Win ] external/wpt/css/motion/offset-anchor-transform-box-fill-box-003.html [ Failure ]
@@ -3820,6 +3832,7 @@
 crbug.com/1031667 external/wpt/css/css-pseudo/marker-content-009.tentative.html [ Failure ]
 crbug.com/457718 external/wpt/css/css-pseudo/marker-content-010.html [ Failure ]
 crbug.com/1031667 external/wpt/css/css-pseudo/marker-content-011.tentative.html [ Failure ]
+crbug.com/1031667 external/wpt/css/css-pseudo/marker-content-014.html [ Failure ]
 crbug.com/457718 external/wpt/css/css-pseudo/marker-font-variant-numeric-normal.html [ Failure ]
 crbug.com/457718 external/wpt/css/css-pseudo/marker-list-style-position.html [ Failure ]
 
@@ -3972,7 +3985,7 @@
 crbug.com/865579 external/wpt/css/css-logical/animation-002.html [ Failure Pass ]
 
 # [css-animations]
-crbug.com/993365 external/wpt/css/css-animations/Element-getAnimations.tentative.html [ Failure Pass ]
+crbug.com/993365 external/wpt/css/css-transitions/Element-getAnimations.tentative.html [ Failure Pass ]
 
 # [selectors-4]
 crbug.com/576815 external/wpt/css/selectors/selectors-dir-selector-ltr-001.html [ Failure ]
@@ -4711,9 +4724,6 @@
 
 crbug.com/769056 virtual/text-antialias/emoji-web-font.html [ Failure ]
 
-# Paint-timing tests timeout without threaded-compositing, so skip them.
-crbug.com/720047 external/wpt/paint-timing [ Skip ]
-
 ### See crbug.com/891427 comment near the top of this file:
 ###crbug.com/849979 media/video-layer-crash.html [ Pass Timeout ]
 
@@ -6091,8 +6101,8 @@
 
 # Temporary suppression to allow devtools-frontend changes
 crbug.com/1029489 http/tests/devtools/elements/elements-linkify-attributes.js [ Pass Failure ]
+crbug.com/1029826 http/tests/devtools/copy-network-request.js [ Pass Failure ]
 crbug.com/1029521 virtual/threaded/external/wpt/web-animations/timing-model/animations/updating-the-finished-state.html [ Pass Failure Timeout ]
-crbug.com/1026879 http/tests/devtools/network/network-cookies-pane.js [ Pass Failure ]
 
 # Enable scroll-snap tests on impl thread
 # These are currently failing on Mac which needs more investigation, snap-scrolls-visual-viewport seems flaky
@@ -6106,9 +6116,6 @@
 # Sheriff 2019-12-10
 crbug.com/1032451 virtual/threaded-no-composited-antialiasing/animations/stability/animation-iteration-event-destroy-renderer.html [ Pass Timeout ]
 
-# Temporarily disabled to land DOM breakpoint changes in DevTools
-crbug.com/963183 http/tests/devtools/sources/debugger-breakpoints/dom-breakpoints.js [ Pass Failure ]
-crbug.com/963183 http/tests/devtools/a11y-axe-core/sources/dom-breakpoints-pane-a11y-test.js [ Pass Failure ]
 
 # Temporarily disabled for landing changes to front_end/common in DevTools
 crbug.com/1006759 inspector-protocol/heap-profiler/heap-samples-in-snapshot.js [ Pass Failure ]
@@ -6132,18 +6139,30 @@
 crbug.com/1033213 http/tests/devtools/security/interstitial-sidebar.js [ Pass Failure ]
 crbug.com/1033213 http/tests/devtools/security/mixed-content-sidebar.js [ Pass Failure ]
 
-# Temporarily disabled for landing changes to source formatter in DevTools
-crbug.com/1004203 http/tests/devtools/sources/debugger-ui/script-formatter-breakpoints-2.js [ Pass Failure ]
-crbug.com/1004203 http/tests/devtools/sources/debugger-ui/script-formatter-breakpoints-3.js [ Pass Failure ]
-crbug.com/1004203 http/tests/devtools/sources/formatter-css.js [ Pass Failure ]
-crbug.com/1004203 http/tests/devtools/sources/formatter-js.js [ Pass Failure ]
-crbug.com/1004203 http/tests/devtools/sources/inline-styles-scripts-locations.js [ Pass Failure ]
-crbug.com/1004203 http/tests/devtools/startup/sources/debugger/linkifier.js [ Pass Failure ]
-crbug.com/1004203 http/tests/devtools/startup/sources/debugger/script-formatter-breakpoints-1.js [ Pass Failure ]
-crbug.com/1004203 http/tests/devtools/startup/sources/debugger/script-formatter-breakpoints-4.js [ Pass Failure ]
-crbug.com/1004203 http/tests/devtools/startup/sources/debugger/script-formatter-breakpoints-inline-with-sourceURL.js [ Pass Failure ]
-
 # Sheriff 2019-12-13
 crbug.com/1032451 [ Win7 ] virtual/webrtc-wpt-plan-b/external/wpt/webrtc/idlharness.https.window.html [ Failure ]
 crbug.com/1033852 [ Win7 ] virtual/omt-worker-fetch/external/wpt/fetch/api/idlharness.any.sharedworker.html [ Failure ]
 crbug.com/1033387 [ Mac ] http/tests/portals/crbug-1031677.html [ Pass Timeout ]
+
+# Sheriff 2019-12-16
+crbug.com/1034374 [ Linux Debug ] http/tests/devtools/tracing/timeline-worker-events.js [ Pass Failure ]
+crbug.com/1034374 [ Linux Debug ] virtual/threaded/http/tests/devtools/tracing/timeline-worker-events.js [ Pass Failure ]
+crbug.com/1034513 [ Win7 ] virtual/stable/fast/dom/Window/window-resize-contents.html [ Pass Failure ]
+crbug.com/1026712 [ Mac ] fast/forms/time-multiple-fields/time-multiple-fields-stepup-stepdown-from-renderer-hour.html [ Pass Timeout ]
+crbug.com/1026712 [ Mac ] virtual/web-components-v0-disabled/fast/forms/time-multiple-fields/time-multiple-fields-stepup-stepdown-from-renderer-hour.html [ Pass Timeout ]
+
+# The Wasm code cache requires disabling the baseline compiler, so only the
+# virtual test should be run.
+http/tests/devtools/wasm-isolated-code-cache/wasm-cache-test.js [ Skip ]
+
+# Assertion errors need to be fixed
+crbug.com/1034492 http/tests/devtools/unit/filtered-item-selection-dialog-filtering.js [ Pass Failure ]
+crbug.com/1034492 http/tests/devtools/unit/filtered-list-widget-providers.js [ Pass Failure ]
+
+# Sheriff 2019-12-17
+crbug.com/1034841 external/wpt/webxr/xrSession_requestAnimationFrame_getViewerPose.https.html [ Pass Failure Timeout ]
+crbug.com/1034789 [ Mac10.13 ] virtual/web-components-v0-disabled/fast/events/no-fake-mousemove.html [ Pass Timeout ]
+crbug.com/1034789 [ Mac10.13 ] http/tests/security/frameNavigation/xss-ALLOWED-parent-navigation-change-async.html [ Pass Timeout ]
+crbug.com/1034789 [ Mac10.13 ] virtual/threaded/fast/scroll-snap/snap-to-target-on-layout-change.html [ Pass Timeout ]
+crbug.com/1034789 [ Mac10.13 ] external/wpt/pointerevents/pointerevent_coalesced_events_attributes.html [ Pass Failure ]
+crbug.com/1034839 css3/filters/effect-reference-image.html [ Pass Failure ]
\ No newline at end of file
diff --git a/third_party/blink/web_tests/VirtualTestSuites b/third_party/blink/web_tests/VirtualTestSuites
index 527d50a..66f21be9 100644
--- a/third_party/blink/web_tests/VirtualTestSuites
+++ b/third_party/blink/web_tests/VirtualTestSuites
@@ -535,7 +535,8 @@
               "external/wpt/css/css-scoping",
               "external/wpt/css/css-typed-om",
               "external/wpt/css/css-variables",
-              "fast/css/variables"],
+              "fast/css/variables",
+              "fast/forms/select/select-autofilled.html"],
     "args": ["--enable-blink-features=CSSCascade"]
   },
   {
diff --git a/third_party/blink/web_tests/W3CImportExpectations b/third_party/blink/web_tests/W3CImportExpectations
index 640928f..3ca5683 100644
--- a/third_party/blink/web_tests/W3CImportExpectations
+++ b/third_party/blink/web_tests/W3CImportExpectations
@@ -1,3 +1,8 @@
+# tags: [ Android Fuchsia IOS IOS12.2 IOS13.0 Linux Mac Mac10.10 Mac10.11 Mac10.12 Retina
+#         Mac10.13 Win Win7 Win10 ]
+# tags: [ Release Debug ]
+# results: [ Timeout Crash Pass Failure Slow Skip ]
+
 # This file controls which subdirectories of the w3c test repos we import.
 #
 # This file acts as a blacklist; directories and files not listed here will
diff --git a/third_party/blink/web_tests/WPTOverrideExpectations b/third_party/blink/web_tests/WPTOverrideExpectations
index ad63ea49e..2ec426a4 100644
--- a/third_party/blink/web_tests/WPTOverrideExpectations
+++ b/third_party/blink/web_tests/WPTOverrideExpectations
@@ -1,3 +1,8 @@
+# tags: [ Android Fuchsia IOS IOS12.2 IOS13.0 Linux Mac Mac10.10 Mac10.11 Mac10.12 Retina
+#         Mac10.13 Win Win7 Win10 ]
+# tags: [ Release Debug ]
+# results: [ Timeout Crash Pass Failure Slow Skip ]
+
 # This file lists test expectations for WPT tests running ONLY under the wptrunner code path in
 # Chromium. See go/wpt-in-chromium-ci for more info on the overall project.
 
@@ -454,7 +459,7 @@
 crbug.com/lpz external/wpt/signed-exchange/sxg-version1b2.tentative.html [ Failure ]
 crbug.com/lpz external/wpt/sms/idlharness.https.any.html [ Failure ]
 crbug.com/lpz external/wpt/sms/idlharness.https.any.worker.html [ Failure ]
-crbug.com/lpz external/wpt/sms/interceptor.https.html [ Timeout ]
+crbug.com/lpz external/wpt/sms/interceptor.https.html [ Timeout Failure ]
 crbug.com/lpz external/wpt/sms/sms-top-level-frame-only.https.html [ Timeout ]
 crbug.com/lpz external/wpt/speech-api/historical.html [ Failure ]
 crbug.com/lpz external/wpt/streams/readable-byte-streams/construct-byob-request.any.html [ Failure ]
@@ -508,7 +513,7 @@
 crbug.com/lpz external/wpt/web-animations/interfaces/KeyframeEffect/style-change-events.html [ Failure ]
 crbug.com/lpz external/wpt/web-locks/clientids.tentative.https.html [ Failure ]
 crbug.com/lpz external/wpt/web-locks/query-ordering.tentative.https.html [ Pass Failure ]
-crbug.com/lpz external/wpt/web-nfc/NDEFWriter_push.https.html [ Failure ]
+crbug.com/lpz external/wpt/web-nfc/NDEFWriter_push.https.html [ Failure Timeout ]
 crbug.com/lpz external/wpt/webaudio/the-audio-api/the-audioworklet-interface/audioworkletnode-output-channel-count.https.html [ Pass Failure ]
 crbug.com/lpz external/wpt/webauthn/createcredential-extensions.https.html [ Timeout ]
 crbug.com/lpz external/wpt/webauthn/createcredential-timeout.https.html [ Failure ]
@@ -896,7 +901,6 @@
 # Testharness test. Fail locally. Fail on wpt.fyi
 crbug.com/lpz external/wpt/mathml/relations/html5-tree/tabindex-002.html [ Failure ]
 crbug.com/lpz external/wpt/portals/portals-repeated-activate.html [ Failure ]
-crbug.com/lpz external/wpt/sms/interceptor.https.html [ Failure ]
 
 # WebXr tests fail because they need mojo stubs. crbug.com/1033611
 crbug.com/1033611 external/wpt/webxr/events_input_source_recreation.https.html [ Failure ]
@@ -988,7 +992,6 @@
 crbug.com/lpz external/wpt/web-nfc/NDEFReader_scan_filter.https.html [ Timeout ]
 crbug.com/lpz external/wpt/web-nfc/NDEFReader_scan_iframe.https.html [ Timeout ]
 crbug.com/lpz external/wpt/web-nfc/NDEFReader_scan.https.html [ Timeout ]
-crbug.com/lpz external/wpt/web-nfc/NDEFWriter_push.https.html [ Timeout ]
 crbug.com/lpz external/wpt/websockets/stream-tentative/close.any.html [ Timeout ]
 crbug.com/lpz external/wpt/websockets/stream-tentative/close.any.serviceworker.html [ Timeout ]
 crbug.com/lpz external/wpt/websockets/stream-tentative/close.any.sharedworker.html [ Timeout ]
diff --git a/third_party/blink/web_tests/WebDriverExpectations b/third_party/blink/web_tests/WebDriverExpectations
index 12157cd..913d0a4e 100644
--- a/third_party/blink/web_tests/WebDriverExpectations
+++ b/third_party/blink/web_tests/WebDriverExpectations
@@ -1,3 +1,8 @@
+# tags: [ Android Fuchsia IOS IOS12.2 IOS13.0 Linux Mac Mac10.10 Mac10.11 Mac10.12 Retina
+#         Mac10.13 Win Win7 Win10 ]
+# tags: [ Release Debug ]
+# results: [ Timeout Crash Pass Failure Slow Skip ]
+
 # This is the main failure suppression file for WPT WebDriver Tests.
 # WPT WebDriver tests are a part of layout tests, but are run by a
 # separate runner, run_webdriver_tests.py. Thus this is a separate
diff --git a/third_party/blink/web_tests/WebGPUExpectations b/third_party/blink/web_tests/WebGPUExpectations
index ee9ee808..96c09f0 100644
--- a/third_party/blink/web_tests/WebGPUExpectations
+++ b/third_party/blink/web_tests/WebGPUExpectations
@@ -1,3 +1,8 @@
+# tags: [ Android Fuchsia IOS IOS12.2 IOS13.0 Linux Mac Mac10.10 Mac10.11 Mac10.12 Retina
+#         Mac10.13 Win Win7 Win10 ]
+# tags: [ Release Debug ]
+# results: [ Timeout Crash Pass Failure Slow Skip ]
+
 # WebGPU tests are only run on GPU bots, so they are skipped by default and run
 # separately from other Web Tests, with this expectations file.
 #
diff --git a/third_party/blink/web_tests/accessibility/element-role-mapping-normal-expected.txt b/third_party/blink/web_tests/accessibility/element-role-mapping-normal-expected.txt
index 1e0f8d0..8e2a3cc 100644
--- a/third_party/blink/web_tests/accessibility/element-role-mapping-normal-expected.txt
+++ b/third_party/blink/web_tests/accessibility/element-role-mapping-normal-expected.txt
@@ -9,7 +9,11 @@
 - black hot drink
 Milk
 - white cold drink
-x + a / b
+x
++
+a
+/
+b
 Most important heading here
 Google Chrome
 
@@ -83,16 +87,23 @@
                 AXRole: AXStaticText "- white cold drink"
                     AXRole: AXInlineTextBox "- white cold drink"
         AXRole: AXMath
-            AXRole: AXStaticText "x "
-                AXRole: AXInlineTextBox "x "
-            AXRole: AXStaticText "+ "
-                AXRole: AXInlineTextBox "+ "
-            AXRole: AXStaticText "a "
-                AXRole: AXInlineTextBox "a "
-            AXRole: AXStaticText "/ "
-                AXRole: AXInlineTextBox "/ "
-            AXRole: AXStaticText "b"
-                AXRole: AXInlineTextBox "b"
+            AXRole: AXGenericContainer
+                AXRole: AXGenericContainer
+                    AXRole: AXStaticText "x"
+                        AXRole: AXInlineTextBox "x"
+                AXRole: AXGenericContainer
+                    AXRole: AXStaticText "+"
+                        AXRole: AXInlineTextBox "+"
+                AXRole: AXGenericContainer
+                    AXRole: AXGenericContainer
+                        AXRole: AXStaticText "a"
+                            AXRole: AXInlineTextBox "a"
+                    AXRole: AXGenericContainer
+                        AXRole: AXStaticText "/"
+                            AXRole: AXInlineTextBox "/"
+                    AXRole: AXGenericContainer
+                        AXRole: AXStaticText "b"
+                            AXRole: AXInlineTextBox "b"
         AXRole: AXMain
             AXRole: AXArticle
                 AXRole: AXHeaderAsNonLandmark
diff --git a/third_party/blink/web_tests/app_banner/app-banner-event-prompt.html b/third_party/blink/web_tests/app_banner/app-banner-event-prompt.html
index 677cb7b..ad47c58 100644
--- a/third_party/blink/web_tests/app_banner/app-banner-event-prompt.html
+++ b/third_party/blink/web_tests/app_banner/app-banner-event-prompt.html
@@ -124,7 +124,8 @@
             );
             assert_equals(
                 error.message,
-                "The prompt() method must be called with a user gesture",
+                "Failed to execute 'prompt' on 'BeforeInstallPromptEvent': " +
+                    "The prompt() method must be called with a user gesture",
                 "Rejected promise does not provide expected message."
             );
         })
diff --git a/third_party/blink/web_tests/css-parser/image-orientation.html b/third_party/blink/web_tests/css-parser/image-orientation.html
new file mode 100644
index 0000000..fdddbaad
--- /dev/null
+++ b/third_party/blink/web_tests/css-parser/image-orientation.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<script src="../resources/testharness.js"></script>
+<script src="../resources/testharnessreport.js"></script>
+<script src="resources/property-parsing-test.js"></script>
+<script>
+assert_valid_value("image-orientation", "none");
+assert_valid_value("image-orientation", "from-image");
+
+assert_invalid_value("image-orientation", "0deg");
+</script>
diff --git a/third_party/blink/web_tests/css-parser/unitless-zero-angle.html b/third_party/blink/web_tests/css-parser/unitless-zero-angle.html
index 0639b870..8b9a374 100644
--- a/third_party/blink/web_tests/css-parser/unitless-zero-angle.html
+++ b/third_party/blink/web_tests/css-parser/unitless-zero-angle.html
@@ -3,11 +3,9 @@
 <script src="../resources/testharnessreport.js"></script>
 <script src="resources/property-parsing-test.js"></script>
 <script>
-assert_valid_value("image-orientation", "0deg");
 assert_valid_value("rotate", "0deg");
 assert_valid_value("offset-path", "ray(0deg farthest-corner)");
 
-assert_invalid_value("image-orientation", "0");
 assert_invalid_value("rotate", "0");
 assert_invalid_value("offset-path", "ray(0 farthest-corner)");
 </script>
diff --git a/third_party/blink/web_tests/editing/pasteboard/mathml-sanitizer-bypass.html b/third_party/blink/web_tests/editing/pasteboard/mathml-sanitizer-bypass.html
index ef4fd20..5e6984a 100644
--- a/third_party/blink/web_tests/editing/pasteboard/mathml-sanitizer-bypass.html
+++ b/third_party/blink/web_tests/editing/pasteboard/mathml-sanitizer-bypass.html
@@ -10,7 +10,7 @@
     selection.setClipboardData('<math><xss style=display:block>t<style>X<a title="</style><img src onerror=alert(1)>">.<a>.');
     selection.document.execCommand('paste');
   },
-  '<div contenteditable>te<br>t<img src>">.<a>.|</a>st</div>',
+  '<div contenteditable>tet<img src>">.<a>.|</a>st</div>',
   'Paste blocks script injection');
 
 // crbug.com/1017871
@@ -20,7 +20,7 @@
     selection.setClipboardData('<math><xss style=display:block>t<style>X<a title="</style><style>*{background:red}</style>">.<a>.');
     selection.document.execCommand('paste');
   },
-  '<div contenteditable>te<br>t">.<a>.|</a>st</div>',
+  '<div contenteditable>tet">.<a>.|</a>st</div>',
   'Paste blocks HTML style injection');
 
 // crbug.com/1017871
@@ -30,6 +30,6 @@
     selection.setClipboardData('A<math>B<a style=display:block>C<title>D<a id="</title><svg><style>*{background:red}</style>">c');
     selection.document.execCommand('paste');
   },
-  '<div contenteditable>teA<math>B<br></math>C|<svg></svg>st</div>',
+  '<div contenteditable>teA<br>C|<svg></svg>st</div>',
   'Paste blocks SVG style injection');
 </script>
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 708176a..ab66606 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
@@ -63767,6 +63767,30 @@
      {}
     ]
    ],
+   "css/css-pseudo/marker-content-012.html": [
+    [
+     "css/css-pseudo/marker-content-012.html",
+     [
+      [
+       "/css/css-pseudo/marker-content-012-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
+   "css/css-pseudo/marker-content-013.html": [
+    [
+     "css/css-pseudo/marker-content-013.html",
+     [
+      [
+       "/css/css-pseudo/marker-content-013-ref.html",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
    "css/css-pseudo/marker-display-dynamic-001.html": [
     [
      "css/css-pseudo/marker-display-dynamic-001.html",
@@ -120161,6 +120185,18 @@
      {}
     ]
    ],
+   "svg/embedded/image-fractional-width-vertical-fidelity.svg": [
+    [
+     "svg/embedded/image-fractional-width-vertical-fidelity.svg",
+     [
+      [
+       "/svg/embedded/reference/green-rect-100x100.svg",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
    "svg/extensibility/foreignObject/composited-inside-object.html": [
     [
      "svg/extensibility/foreignObject/composited-inside-object.html",
@@ -134552,6 +134588,42 @@
    "css/css-color-adjust/inheritance-expected.txt": [
     []
    ],
+   "css/css-color-adjust/meta/meta-color-scheme-attribute-changes-expected.txt": [
+    []
+   ],
+   "css/css-color-adjust/meta/meta-color-scheme-empty-content-value-expected.txt": [
+    []
+   ],
+   "css/css-color-adjust/meta/meta-color-scheme-first-valid-applies-expected.txt": [
+    []
+   ],
+   "css/css-color-adjust/meta/meta-color-scheme-insert-expected.txt": [
+    []
+   ],
+   "css/css-color-adjust/meta/meta-color-scheme-no-content-value-expected.txt": [
+    []
+   ],
+   "css/css-color-adjust/meta/meta-color-scheme-presentational-hint-expected.txt": [
+    []
+   ],
+   "css/css-color-adjust/meta/meta-color-scheme-remove-expected.txt": [
+    []
+   ],
+   "css/css-color-adjust/meta/meta-color-scheme-remove-head-expected.txt": [
+    []
+   ],
+   "css/css-color-adjust/meta/meta-color-scheme-single-value-in-body-expected.txt": [
+    []
+   ],
+   "css/css-color-adjust/meta/meta-color-scheme-single-value-in-head-expected.txt": [
+    []
+   ],
+   "css/css-color-adjust/meta/meta-color-scheme-single-value-in-shadow-tree-expected.txt": [
+    []
+   ],
+   "css/css-color-adjust/meta/support/compute-root-color-scheme.js": [
+    []
+   ],
    "css/css-color-adjust/parsing/color-scheme-computed-expected.txt": [
     []
    ],
@@ -141884,12 +141956,6 @@
    "css/css-images/multiple-position-color-stop-radial-2-ref.html": [
     []
    ],
-   "css/css-images/parsing/image-orientation-computed-expected.txt": [
-    []
-   ],
-   "css/css-images/parsing/image-orientation-valid-expected.txt": [
-    []
-   ],
    "css/css-images/parsing/image-rendering-computed-expected.txt": [
     []
    ],
@@ -143843,6 +143909,12 @@
    "css/css-pseudo/marker-content-011-ref.html": [
     []
    ],
+   "css/css-pseudo/marker-content-012-ref.html": [
+    []
+   ],
+   "css/css-pseudo/marker-content-013-ref.html": [
+    []
+   ],
    "css/css-pseudo/marker-font-properties-ref.html": [
     []
    ],
@@ -147989,9 +148061,6 @@
    "css/css-transitions/Document-getAnimations.tentative-expected.txt": [
     []
    ],
-   "css/css-transitions/Element-getAnimations.tentative-expected.txt": [
-    []
-   ],
    "css/css-transitions/KeyframeEffect-getKeyframes.tentative-expected.txt": [
     []
    ],
@@ -155150,6 +155219,123 @@
    "element-timing/resources/square20.png": [
     []
    ],
+   "encoding-detection/ar-ISO-8859-6-late.tentative-expected.txt": [
+    []
+   ],
+   "encoding-detection/ar-ISO-8859-6.tentative-expected.txt": [
+    []
+   ],
+   "encoding-detection/el-windows-1253-late.tentative-expected.txt": [
+    []
+   ],
+   "encoding-detection/el-windows-1253.tentative-expected.txt": [
+    []
+   ],
+   "encoding-detection/fi-windows-1252-late.tentative-expected.txt": [
+    []
+   ],
+   "encoding-detection/ja-EUC-JP-late.tentative-expected.txt": [
+    []
+   ],
+   "encoding-detection/ja-EUC-JP.tentative-expected.txt": [
+    []
+   ],
+   "encoding-detection/support/ar-ISO-8859-6-late.sub.html": [
+    []
+   ],
+   "encoding-detection/support/ar-windows-1256-late.sub.html": [
+    []
+   ],
+   "encoding-detection/support/el-ISO-8859-7-late.sub.html": [
+    []
+   ],
+   "encoding-detection/support/el-windows-1253-late.sub.html": [
+    []
+   ],
+   "encoding-detection/support/fa-windows-1256-late.sub.html": [
+    []
+   ],
+   "encoding-detection/support/fi-windows-1252-late.sub.html": [
+    []
+   ],
+   "encoding-detection/support/he-ISO-8859-8-late.sub.html": [
+    []
+   ],
+   "encoding-detection/support/he-windows-1255-late.sub.html": [
+    []
+   ],
+   "encoding-detection/support/is-windows-1252-late.sub.html": [
+    []
+   ],
+   "encoding-detection/support/ja-EUC-JP-late.sub.html": [
+    []
+   ],
+   "encoding-detection/support/ja-ISO-2022-JP-late.sub.html": [
+    []
+   ],
+   "encoding-detection/support/ja-Shift_JIS-late.sub.html": [
+    []
+   ],
+   "encoding-detection/support/ko-EUC-KR-late.sub.html": [
+    []
+   ],
+   "encoding-detection/support/lt-windows-1257-late.sub.html": [
+    []
+   ],
+   "encoding-detection/support/lv-windows-1257-late.sub.html": [
+    []
+   ],
+   "encoding-detection/support/pl-ISO-8859-2-late.sub.html": [
+    []
+   ],
+   "encoding-detection/support/pl-windows-1250-late.sub.html": [
+    []
+   ],
+   "encoding-detection/support/pt-windows-1252-late.sub.html": [
+    []
+   ],
+   "encoding-detection/support/ru-IBM866-late.sub.html": [
+    []
+   ],
+   "encoding-detection/support/ru-ISO-8859-5-late.sub.html": [
+    []
+   ],
+   "encoding-detection/support/th-windows-874-late.sub.html": [
+    []
+   ],
+   "encoding-detection/support/tr-windows-1254-late.sub.html": [
+    []
+   ],
+   "encoding-detection/support/uk-KOI8-U-late.sub.html": [
+    []
+   ],
+   "encoding-detection/support/uk-windows-1251-late.sub.html": [
+    []
+   ],
+   "encoding-detection/support/vi-windows-1258-late.sub.html": [
+    []
+   ],
+   "encoding-detection/support/yi-windows-1255-late.sub.html": [
+    []
+   ],
+   "encoding-detection/support/zh-Big5-late.sub.html": [
+    []
+   ],
+   "encoding-detection/support/zh-GBK-late.sub.html": [
+    []
+   ],
+   "encoding-detection/uk-KOI8-U-late.tentative-expected.txt": [
+    []
+   ],
+   "encoding-detection/uk-KOI8-U.tentative-expected.txt": [
+    []
+   ],
+   "encoding-detection/vi-windows-1258-late.tentative-expected.txt": [
+    []
+   ],
+   "encoding-detection/vi-windows-1258.tentative-expected.txt": [
+    []
+   ],
    "encoding/META.yml": [
     []
    ],
@@ -166538,9 +166724,6 @@
    "kv-storage/secure-context/resources/test-side-effects.js": [
     []
    ],
-   "largest-contentful-paint/idlharness-expected.txt": [
-    []
-   ],
    "largest-contentful-paint/resources/iframe-stores-entry.html": [
     []
    ],
@@ -166583,9 +166766,18 @@
    "lint.whitelist": [
     []
    ],
+   "loading/lazyload/META.yml": [
+    []
+   ],
+   "loading/lazyload/below-viewport-image-loading-lazy-load-event.tentative-expected.txt": [
+    []
+   ],
    "loading/lazyload/common.js": [
     []
    ],
+   "loading/lazyload/image-loading-lazy-load-event.tentative-expected.txt": [
+    []
+   ],
    "loading/lazyload/invisible-lazy-image.tentative-expected.txt": [
     []
    ],
@@ -166826,9 +167018,6 @@
    "mathml/presentation-markup/tokens/ms-001-ref.html": [
     []
    ],
-   "mathml/relations/css-styling/attribute-mapping-001-expected.txt": [
-    []
-   ],
    "mathml/relations/css-styling/color-001-ref.html": [
     []
    ],
@@ -169532,6 +169721,12 @@
    "portals/resources/eval-portal.html": [
     []
    ],
+   "portals/resources/focus-page-with-button.html": [
+    []
+   ],
+   "portals/resources/focus-page-with-x-origin-iframe.sub.html": [
+    []
+   ],
    "portals/resources/open-blank-host.js": [
     []
    ],
@@ -210846,6 +211041,72 @@
      {}
     ]
    ],
+   "css/css-color-adjust/meta/meta-color-scheme-attribute-changes.html": [
+    [
+     "css/css-color-adjust/meta/meta-color-scheme-attribute-changes.html",
+     {}
+    ]
+   ],
+   "css/css-color-adjust/meta/meta-color-scheme-empty-content-value.html": [
+    [
+     "css/css-color-adjust/meta/meta-color-scheme-empty-content-value.html",
+     {}
+    ]
+   ],
+   "css/css-color-adjust/meta/meta-color-scheme-first-valid-applies.html": [
+    [
+     "css/css-color-adjust/meta/meta-color-scheme-first-valid-applies.html",
+     {}
+    ]
+   ],
+   "css/css-color-adjust/meta/meta-color-scheme-insert.html": [
+    [
+     "css/css-color-adjust/meta/meta-color-scheme-insert.html",
+     {}
+    ]
+   ],
+   "css/css-color-adjust/meta/meta-color-scheme-no-content-value.html": [
+    [
+     "css/css-color-adjust/meta/meta-color-scheme-no-content-value.html",
+     {}
+    ]
+   ],
+   "css/css-color-adjust/meta/meta-color-scheme-presentational-hint.html": [
+    [
+     "css/css-color-adjust/meta/meta-color-scheme-presentational-hint.html",
+     {}
+    ]
+   ],
+   "css/css-color-adjust/meta/meta-color-scheme-remove-head.html": [
+    [
+     "css/css-color-adjust/meta/meta-color-scheme-remove-head.html",
+     {}
+    ]
+   ],
+   "css/css-color-adjust/meta/meta-color-scheme-remove.html": [
+    [
+     "css/css-color-adjust/meta/meta-color-scheme-remove.html",
+     {}
+    ]
+   ],
+   "css/css-color-adjust/meta/meta-color-scheme-single-value-in-body.html": [
+    [
+     "css/css-color-adjust/meta/meta-color-scheme-single-value-in-body.html",
+     {}
+    ]
+   ],
+   "css/css-color-adjust/meta/meta-color-scheme-single-value-in-head.html": [
+    [
+     "css/css-color-adjust/meta/meta-color-scheme-single-value-in-head.html",
+     {}
+    ]
+   ],
+   "css/css-color-adjust/meta/meta-color-scheme-single-value-in-shadow-tree.html": [
+    [
+     "css/css-color-adjust/meta/meta-color-scheme-single-value-in-shadow-tree.html",
+     {}
+    ]
+   ],
    "css/css-color-adjust/parsing/color-scheme-computed.html": [
     [
      "css/css-color-adjust/parsing/color-scheme-computed.html",
@@ -231997,6 +232258,348 @@
      {}
     ]
    ],
+   "encoding-detection/ar-ISO-8859-6-late.tentative.html": [
+    [
+     "encoding-detection/ar-ISO-8859-6-late.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/ar-ISO-8859-6.tentative.html": [
+    [
+     "encoding-detection/ar-ISO-8859-6.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/ar-windows-1256-late.tentative.html": [
+    [
+     "encoding-detection/ar-windows-1256-late.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/ar-windows-1256.tentative.html": [
+    [
+     "encoding-detection/ar-windows-1256.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/el-ISO-8859-7-late.tentative.html": [
+    [
+     "encoding-detection/el-ISO-8859-7-late.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/el-ISO-8859-7.tentative.html": [
+    [
+     "encoding-detection/el-ISO-8859-7.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/el-windows-1253-late.tentative.html": [
+    [
+     "encoding-detection/el-windows-1253-late.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/el-windows-1253.tentative.html": [
+    [
+     "encoding-detection/el-windows-1253.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/fa-windows-1256-late.tentative.html": [
+    [
+     "encoding-detection/fa-windows-1256-late.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/fa-windows-1256.tentative.html": [
+    [
+     "encoding-detection/fa-windows-1256.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/fi-windows-1252-late.tentative.html": [
+    [
+     "encoding-detection/fi-windows-1252-late.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/fi-windows-1252.tentative.html": [
+    [
+     "encoding-detection/fi-windows-1252.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/he-ISO-8859-8-late.tentative.html": [
+    [
+     "encoding-detection/he-ISO-8859-8-late.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/he-ISO-8859-8.tentative.html": [
+    [
+     "encoding-detection/he-ISO-8859-8.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/he-windows-1255-late.tentative.html": [
+    [
+     "encoding-detection/he-windows-1255-late.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/he-windows-1255.tentative.html": [
+    [
+     "encoding-detection/he-windows-1255.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/is-windows-1252-late.tentative.html": [
+    [
+     "encoding-detection/is-windows-1252-late.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/is-windows-1252.tentative.html": [
+    [
+     "encoding-detection/is-windows-1252.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/ja-EUC-JP-late.tentative.html": [
+    [
+     "encoding-detection/ja-EUC-JP-late.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/ja-EUC-JP.tentative.html": [
+    [
+     "encoding-detection/ja-EUC-JP.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/ja-ISO-2022-JP-late.tentative.html": [
+    [
+     "encoding-detection/ja-ISO-2022-JP-late.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/ja-ISO-2022-JP.tentative.html": [
+    [
+     "encoding-detection/ja-ISO-2022-JP.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/ja-Shift_JIS-late.tentative.html": [
+    [
+     "encoding-detection/ja-Shift_JIS-late.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/ja-Shift_JIS.tentative.html": [
+    [
+     "encoding-detection/ja-Shift_JIS.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/ko-EUC-KR-late.tentative.html": [
+    [
+     "encoding-detection/ko-EUC-KR-late.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/ko-EUC-KR.tentative.html": [
+    [
+     "encoding-detection/ko-EUC-KR.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/lt-windows-1257-late.tentative.html": [
+    [
+     "encoding-detection/lt-windows-1257-late.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/lt-windows-1257.tentative.html": [
+    [
+     "encoding-detection/lt-windows-1257.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/lv-windows-1257-late.tentative.html": [
+    [
+     "encoding-detection/lv-windows-1257-late.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/lv-windows-1257.tentative.html": [
+    [
+     "encoding-detection/lv-windows-1257.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/pl-ISO-8859-2-late.tentative.html": [
+    [
+     "encoding-detection/pl-ISO-8859-2-late.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/pl-ISO-8859-2.tentative.html": [
+    [
+     "encoding-detection/pl-ISO-8859-2.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/pl-windows-1250-late.tentative.html": [
+    [
+     "encoding-detection/pl-windows-1250-late.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/pl-windows-1250.tentative.html": [
+    [
+     "encoding-detection/pl-windows-1250.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/pt-windows-1252-late.tentative.html": [
+    [
+     "encoding-detection/pt-windows-1252-late.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/pt-windows-1252.tentative.html": [
+    [
+     "encoding-detection/pt-windows-1252.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/ru-IBM866-late.tentative.html": [
+    [
+     "encoding-detection/ru-IBM866-late.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/ru-IBM866.tentative.html": [
+    [
+     "encoding-detection/ru-IBM866.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/ru-ISO-8859-5-late.tentative.html": [
+    [
+     "encoding-detection/ru-ISO-8859-5-late.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/ru-ISO-8859-5.tentative.html": [
+    [
+     "encoding-detection/ru-ISO-8859-5.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/th-windows-874-late.tentative.html": [
+    [
+     "encoding-detection/th-windows-874-late.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/th-windows-874.tentative.html": [
+    [
+     "encoding-detection/th-windows-874.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/tr-windows-1254-late.tentative.html": [
+    [
+     "encoding-detection/tr-windows-1254-late.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/tr-windows-1254.tentative.html": [
+    [
+     "encoding-detection/tr-windows-1254.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/uk-KOI8-U-late.tentative.html": [
+    [
+     "encoding-detection/uk-KOI8-U-late.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/uk-KOI8-U.tentative.html": [
+    [
+     "encoding-detection/uk-KOI8-U.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/uk-windows-1251-late.tentative.html": [
+    [
+     "encoding-detection/uk-windows-1251-late.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/uk-windows-1251.tentative.html": [
+    [
+     "encoding-detection/uk-windows-1251.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/utf-8.html": [
+    [
+     "encoding-detection/utf-8.html",
+     {}
+    ]
+   ],
+   "encoding-detection/vi-windows-1258-late.tentative.html": [
+    [
+     "encoding-detection/vi-windows-1258-late.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/vi-windows-1258.tentative.html": [
+    [
+     "encoding-detection/vi-windows-1258.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/yi-windows-1255-late.tentative.html": [
+    [
+     "encoding-detection/yi-windows-1255-late.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/yi-windows-1255.tentative.html": [
+    [
+     "encoding-detection/yi-windows-1255.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/zh-Big5-late.tentative.html": [
+    [
+     "encoding-detection/zh-Big5-late.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/zh-Big5.tentative.html": [
+    [
+     "encoding-detection/zh-Big5.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/zh-GBK-late.tentative.html": [
+    [
+     "encoding-detection/zh-GBK-late.tentative.html",
+     {}
+    ]
+   ],
+   "encoding-detection/zh-GBK.tentative.html": [
+    [
+     "encoding-detection/zh-GBK.tentative.html",
+     {}
+    ]
+   ],
    "encoding/api-basics.any.js": [
     [
      "encoding/api-basics.any.html",
@@ -262840,6 +263443,12 @@
      {}
     ]
    ],
+   "loading/lazyload/below-viewport-image-loading-lazy-load-event.tentative.html": [
+    [
+     "loading/lazyload/below-viewport-image-loading-lazy-load-event.tentative.html",
+     {}
+    ]
+   ],
    "loading/lazyload/disconnected-image-loading-lazy.tentative.html": [
     [
      "loading/lazyload/disconnected-image-loading-lazy.tentative.html",
@@ -262864,9 +263473,15 @@
      {}
     ]
    ],
-   "loading/lazyload/image-loading-lazy-multicol-tentative.html": [
+   "loading/lazyload/image-loading-lazy-load-event.tentative.html": [
     [
-     "loading/lazyload/image-loading-lazy-multicol-tentative.html",
+     "loading/lazyload/image-loading-lazy-load-event.tentative.html",
+     {}
+    ]
+   ],
+   "loading/lazyload/image-loading-lazy-multicol.tentative.html": [
+    [
+     "loading/lazyload/image-loading-lazy-multicol.tentative.html",
      {}
     ]
    ],
@@ -262882,9 +263497,15 @@
      {}
     ]
    ],
-   "loading/lazyload/invisible-lazy-image.tentative.html": [
+   "loading/lazyload/not-rendered-below-viewport-image-loading-lazy.tentative.html": [
     [
-     "loading/lazyload/invisible-lazy-image.tentative.html",
+     "loading/lazyload/not-rendered-below-viewport-image-loading-lazy.tentative.html",
+     {}
+    ]
+   ],
+   "loading/lazyload/not-rendered-image-loading-lazy.tentative.html": [
+    [
+     "loading/lazyload/not-rendered-image-loading-lazy.tentative.html",
      {}
     ]
    ],
@@ -280375,6 +280996,12 @@
      {}
     ]
    ],
+   "portals/portals-focus.sub.html": [
+    [
+     "portals/portals-focus.sub.html",
+     {}
+    ]
+   ],
    "portals/portals-host-exposure.sub.html": [
     [
      "portals/portals-host-exposure.sub.html",
@@ -296211,6 +296838,12 @@
      {}
     ]
    ],
+   "scroll-animations/setting-current-time.html": [
+    [
+     "scroll-animations/setting-current-time.html",
+     {}
+    ]
+   ],
    "scroll-to-text-fragment/scroll-to-text-fragment-api.html": [
     [
      "scroll-to-text-fragment/scroll-to-text-fragment-api.html",
@@ -319178,6 +319811,14 @@
      }
     ]
    ],
+   "webrtc/RTCDataChannel-close.html": [
+    [
+     "webrtc/RTCDataChannel-close.html",
+     {
+      "timeout": "long"
+     }
+    ]
+   ],
    "webrtc/RTCDataChannel-id.html": [
     [
      "webrtc/RTCDataChannel-id.html",
@@ -372651,6 +373292,98 @@
    "f7f6529349bf1ba0436e2d1165a81552de95ffaa",
    "testharness"
   ],
+  "css/css-color-adjust/meta/meta-color-scheme-attribute-changes-expected.txt": [
+   "231a8a75695a17bf1806d37f7be916737dc2e35d",
+   "support"
+  ],
+  "css/css-color-adjust/meta/meta-color-scheme-attribute-changes.html": [
+   "bb9fa659f32778b3860d93b0c4964521db01720d",
+   "testharness"
+  ],
+  "css/css-color-adjust/meta/meta-color-scheme-empty-content-value-expected.txt": [
+   "a98e7011f2ea9fa3f1bc37f46510e676fc2303e3",
+   "support"
+  ],
+  "css/css-color-adjust/meta/meta-color-scheme-empty-content-value.html": [
+   "86cc93c2dc9e2eef670f9f153b89e6f764db382e",
+   "testharness"
+  ],
+  "css/css-color-adjust/meta/meta-color-scheme-first-valid-applies-expected.txt": [
+   "1b1dfe931d83aa4814c974b4fc6ee0bf4d36bcab",
+   "support"
+  ],
+  "css/css-color-adjust/meta/meta-color-scheme-first-valid-applies.html": [
+   "0ade6df501eef9ac035b6688a0b1b6a38ecda1e7",
+   "testharness"
+  ],
+  "css/css-color-adjust/meta/meta-color-scheme-insert-expected.txt": [
+   "bab8830711bc9d635a2e146ec7f9b8e3f30df95f",
+   "support"
+  ],
+  "css/css-color-adjust/meta/meta-color-scheme-insert.html": [
+   "861818284bcb74857bc89b293c34b02c7a464223",
+   "testharness"
+  ],
+  "css/css-color-adjust/meta/meta-color-scheme-no-content-value-expected.txt": [
+   "724eb0fce8162103d13d6f253bc0e9d5beea3f93",
+   "support"
+  ],
+  "css/css-color-adjust/meta/meta-color-scheme-no-content-value.html": [
+   "6edb761960b60b2b0b69842179772aeb9288e4c8",
+   "testharness"
+  ],
+  "css/css-color-adjust/meta/meta-color-scheme-presentational-hint-expected.txt": [
+   "1d7f4b4d790cf4f05bd527f60d22db7b22f9c8d6",
+   "support"
+  ],
+  "css/css-color-adjust/meta/meta-color-scheme-presentational-hint.html": [
+   "5a87604e86b992669e92fd1be3a243841e5d890e",
+   "testharness"
+  ],
+  "css/css-color-adjust/meta/meta-color-scheme-remove-expected.txt": [
+   "448983787b18b25a480c45c545674c3b01e0e546",
+   "support"
+  ],
+  "css/css-color-adjust/meta/meta-color-scheme-remove-head-expected.txt": [
+   "a20d3febe098cdb9ec979fdd66fd2aed8edefb2d",
+   "support"
+  ],
+  "css/css-color-adjust/meta/meta-color-scheme-remove-head.html": [
+   "d627f62df781a15b3bc9f8d1ea28f755104a7e54",
+   "testharness"
+  ],
+  "css/css-color-adjust/meta/meta-color-scheme-remove.html": [
+   "8439c5046259dfe3648331476849976f1b60f9e5",
+   "testharness"
+  ],
+  "css/css-color-adjust/meta/meta-color-scheme-single-value-in-body-expected.txt": [
+   "bebcb58ff5f1b092a1d3199a1ad090be1362b8c0",
+   "support"
+  ],
+  "css/css-color-adjust/meta/meta-color-scheme-single-value-in-body.html": [
+   "ff8fe416251c15f28e45ba07d2cca4b4f87733a3",
+   "testharness"
+  ],
+  "css/css-color-adjust/meta/meta-color-scheme-single-value-in-head-expected.txt": [
+   "9d8f04761e45b9d85c64f68700c590acff8e341d",
+   "support"
+  ],
+  "css/css-color-adjust/meta/meta-color-scheme-single-value-in-head.html": [
+   "6b5e5c0f8a6f6519a5ac63945811671ef743dee7",
+   "testharness"
+  ],
+  "css/css-color-adjust/meta/meta-color-scheme-single-value-in-shadow-tree-expected.txt": [
+   "5e342274270548d7f8c95b930e6d908280997c7d",
+   "support"
+  ],
+  "css/css-color-adjust/meta/meta-color-scheme-single-value-in-shadow-tree.html": [
+   "23ec7de1a945876a6a2e75eb4b72ce41be972a8a",
+   "testharness"
+  ],
+  "css/css-color-adjust/meta/support/compute-root-color-scheme.js": [
+   "8ceddbc40bf2cdc37c0c26e0bede9b7a24892caf",
+   "support"
+  ],
   "css/css-color-adjust/parsing/color-scheme-computed-expected.txt": [
    "6d404702f85bd9e733b0a127b70491d57b95efeb",
    "support"
@@ -390960,7 +391693,7 @@
    "reftest"
   ],
   "css/css-images/inheritance.html": [
-   "5ca1ed6b23ff70637d790baf81ae4e3cbf5afe8c",
+   "cf51ef3f7d91b15724e93f4c9a2060319f248aba",
    "testharness"
   ],
   "css/css-images/linear-gradient-1.html": [
@@ -391011,10 +391744,6 @@
    "9857496fe4407fb0b9b4d6fe32ef9ed982c9cc88",
    "testharness"
   ],
-  "css/css-images/parsing/image-orientation-computed-expected.txt": [
-   "338b2f45dcf736565f7e905d9aed315096564ab3",
-   "support"
-  ],
   "css/css-images/parsing/image-orientation-computed.html": [
    "23a27a3393ed9b94c6de618b89d5ea4f2326c0c0",
    "testharness"
@@ -391023,10 +391752,6 @@
    "72e32eba1d9cce6dac7f013c1e726b4eea39ea1b",
    "testharness"
   ],
-  "css/css-images/parsing/image-orientation-valid-expected.txt": [
-   "ae71ae245a11bf94cc2efec003328f094bf5720e",
-   "support"
-  ],
   "css/css-images/parsing/image-orientation-valid.html": [
    "e40517bdc89125283b20411eb4937530c82bf681",
    "testharness"
@@ -398523,6 +399248,22 @@
    "0cc20b0cdcd242021bc37b9e2d3500ed21c5b35f",
    "reftest"
   ],
+  "css/css-pseudo/marker-content-012-ref.html": [
+   "d40c55c7362e0bee717efa86259161926085bb66",
+   "support"
+  ],
+  "css/css-pseudo/marker-content-012.html": [
+   "f36228719a0656e822892661e83a23a8382c742c",
+   "reftest"
+  ],
+  "css/css-pseudo/marker-content-013-ref.html": [
+   "7657cfbd710763325972f860af7744eda98a236a",
+   "support"
+  ],
+  "css/css-pseudo/marker-content-013.html": [
+   "18f00d173821b22ebce43d792b5888aa8f3ea310",
+   "reftest"
+  ],
   "css/css-pseudo/marker-default-styles.html": [
    "05da6f89a9e2f858eadfdfb63e5194feda5ce3fc",
    "testharness"
@@ -415763,10 +416504,6 @@
    "cecddfaa401f90ff0226d39f1c7eae9be9b7b10c",
    "testharness"
   ],
-  "css/css-transitions/Element-getAnimations.tentative-expected.txt": [
-   "8878ef0b1b6752fc2ea0af3ab09f2d36ea0ad4d1",
-   "support"
-  ],
   "css/css-transitions/Element-getAnimations.tentative.html": [
    "26e988ffe69759ab3b9216d24af2a28a70e0c08b",
    "testharness"
@@ -442723,6 +443460,390 @@
    "d988934708116f29f9289511559079544aba1ba6",
    "testharness"
   ],
+  "encoding-detection/ar-ISO-8859-6-late.tentative-expected.txt": [
+   "32e1d19abef929ae5183085cc1aeeb7004deba00",
+   "support"
+  ],
+  "encoding-detection/ar-ISO-8859-6-late.tentative.html": [
+   "2fc94256dde5fa4b57dec409bdd0fa76ac7dba73",
+   "testharness"
+  ],
+  "encoding-detection/ar-ISO-8859-6.tentative-expected.txt": [
+   "32e1d19abef929ae5183085cc1aeeb7004deba00",
+   "support"
+  ],
+  "encoding-detection/ar-ISO-8859-6.tentative.html": [
+   "6967aaeb0a0da8497192a60257cdbfef72d66ae5",
+   "testharness"
+  ],
+  "encoding-detection/ar-windows-1256-late.tentative.html": [
+   "9928968869d5a3747f593c395278e01f7ec0814f",
+   "testharness"
+  ],
+  "encoding-detection/ar-windows-1256.tentative.html": [
+   "d2d6d93d581021856add19c474286ee66abeaed1",
+   "testharness"
+  ],
+  "encoding-detection/el-ISO-8859-7-late.tentative.html": [
+   "fc5e799b814d58d9503bc9449ad8d96e71c8097e",
+   "testharness"
+  ],
+  "encoding-detection/el-ISO-8859-7.tentative.html": [
+   "f22b6ec5757dd96342142fcbb86cf2976dd1cb49",
+   "testharness"
+  ],
+  "encoding-detection/el-windows-1253-late.tentative-expected.txt": [
+   "8582d960d2a8f6073fbee28e606f92681ce17894",
+   "support"
+  ],
+  "encoding-detection/el-windows-1253-late.tentative.html": [
+   "9a2960b4ff68d2a170957461753b5608ef745303",
+   "testharness"
+  ],
+  "encoding-detection/el-windows-1253.tentative-expected.txt": [
+   "8582d960d2a8f6073fbee28e606f92681ce17894",
+   "support"
+  ],
+  "encoding-detection/el-windows-1253.tentative.html": [
+   "b314aa58e6b47642c203fb46b942b4747deba965",
+   "testharness"
+  ],
+  "encoding-detection/fa-windows-1256-late.tentative.html": [
+   "5398445c0ee03c091ed427aec99335b4721dd3ed",
+   "testharness"
+  ],
+  "encoding-detection/fa-windows-1256.tentative.html": [
+   "fb93c389fd17bbded9bf8165f90b876822ce7b75",
+   "testharness"
+  ],
+  "encoding-detection/fi-windows-1252-late.tentative-expected.txt": [
+   "ddb1883f2689c3b32350fd09425d8ee77cb53eb0",
+   "support"
+  ],
+  "encoding-detection/fi-windows-1252-late.tentative.html": [
+   "b84a257a51988a99a7fcfb55f657e98015e710d1",
+   "testharness"
+  ],
+  "encoding-detection/fi-windows-1252.tentative.html": [
+   "5a4efcaf95eca332d6a0d599eb550de9210c8a68",
+   "testharness"
+  ],
+  "encoding-detection/he-ISO-8859-8-late.tentative.html": [
+   "bd19bdb6d40d9e5ca306a7569fa2cf183e46d046",
+   "testharness"
+  ],
+  "encoding-detection/he-ISO-8859-8.tentative.html": [
+   "f1651da3ef6dd9d28247fb812977ed976ed7ec73",
+   "testharness"
+  ],
+  "encoding-detection/he-windows-1255-late.tentative.html": [
+   "9627458c034924ea7d935730d8f7f84080654a1f",
+   "testharness"
+  ],
+  "encoding-detection/he-windows-1255.tentative.html": [
+   "738cc35da897d578064aab548c2bbe9436969b2d",
+   "testharness"
+  ],
+  "encoding-detection/is-windows-1252-late.tentative.html": [
+   "7f733a4fb156f3d2060f800543a17c8e7b052bf2",
+   "testharness"
+  ],
+  "encoding-detection/is-windows-1252.tentative.html": [
+   "06151d857542cd8028e24bd32b3a294313e75b7c",
+   "testharness"
+  ],
+  "encoding-detection/ja-EUC-JP-late.tentative-expected.txt": [
+   "30cef115c9bfe703361c3150a18b7fa9cf5acf59",
+   "support"
+  ],
+  "encoding-detection/ja-EUC-JP-late.tentative.html": [
+   "aac50f6cd12959e7b902a69f79bc018ef7d5643e",
+   "testharness"
+  ],
+  "encoding-detection/ja-EUC-JP.tentative-expected.txt": [
+   "30cef115c9bfe703361c3150a18b7fa9cf5acf59",
+   "support"
+  ],
+  "encoding-detection/ja-EUC-JP.tentative.html": [
+   "5929825f357e18bc90e6d2f4ba82a3f0d1f2cd83",
+   "testharness"
+  ],
+  "encoding-detection/ja-ISO-2022-JP-late.tentative.html": [
+   "6e4bc9157d809aa6ed795164bc68baeca7260258",
+   "testharness"
+  ],
+  "encoding-detection/ja-ISO-2022-JP.tentative.html": [
+   "405e123808dfa46a95c680ceffd8df1528a776cd",
+   "testharness"
+  ],
+  "encoding-detection/ja-Shift_JIS-late.tentative.html": [
+   "c822ae34a5916b789997181ab4ef62b8b213c339",
+   "testharness"
+  ],
+  "encoding-detection/ja-Shift_JIS.tentative.html": [
+   "a496e48ad98c6c2e8aff20d147db77d3f0cb280b",
+   "testharness"
+  ],
+  "encoding-detection/ko-EUC-KR-late.tentative.html": [
+   "9ff224a54cb2b65d6a2598eb0160e86c0faf020b",
+   "testharness"
+  ],
+  "encoding-detection/ko-EUC-KR.tentative.html": [
+   "dac67b1e934359ea95449b93039995ba6e666d75",
+   "testharness"
+  ],
+  "encoding-detection/lt-windows-1257-late.tentative.html": [
+   "6f9ceed7639f1c288c54de450deb50f8de451b80",
+   "testharness"
+  ],
+  "encoding-detection/lt-windows-1257.tentative.html": [
+   "88112a2c643c8a459824788ff6db092e59f97fcb",
+   "testharness"
+  ],
+  "encoding-detection/lv-windows-1257-late.tentative.html": [
+   "5651e415ad4728f0f81a6cbb5ffd4220e1d98c5b",
+   "testharness"
+  ],
+  "encoding-detection/lv-windows-1257.tentative.html": [
+   "3baeb4015e7df7163bf6f3529cc815726bf38636",
+   "testharness"
+  ],
+  "encoding-detection/pl-ISO-8859-2-late.tentative.html": [
+   "e5db00b005637078130753bc05aa11bca2887be8",
+   "testharness"
+  ],
+  "encoding-detection/pl-ISO-8859-2.tentative.html": [
+   "da1fcefb18a3517236a32a6579191fe692abfc6a",
+   "testharness"
+  ],
+  "encoding-detection/pl-windows-1250-late.tentative.html": [
+   "adeca83fac1512860458ff27e4b5220f78e19c7c",
+   "testharness"
+  ],
+  "encoding-detection/pl-windows-1250.tentative.html": [
+   "b3955c418488081f5b9d999f294baa1e025ce9f4",
+   "testharness"
+  ],
+  "encoding-detection/pt-windows-1252-late.tentative.html": [
+   "d37dac058f23c422e9dba2de867db48405d222c2",
+   "testharness"
+  ],
+  "encoding-detection/pt-windows-1252.tentative.html": [
+   "cf55dbb6278625b4ad16deb7f99bbf0db5189679",
+   "testharness"
+  ],
+  "encoding-detection/ru-IBM866-late.tentative.html": [
+   "03f5643a9a1011583b5304c7cc91b526986f1979",
+   "testharness"
+  ],
+  "encoding-detection/ru-IBM866.tentative.html": [
+   "79924952594905b0035c21c35b7172072d186e62",
+   "testharness"
+  ],
+  "encoding-detection/ru-ISO-8859-5-late.tentative.html": [
+   "760dc96c1204e9a6c64a72b6d4c86e1b6bb92b0e",
+   "testharness"
+  ],
+  "encoding-detection/ru-ISO-8859-5.tentative.html": [
+   "a2ee62c65f53610691f366ed9eac0f19ae310ff9",
+   "testharness"
+  ],
+  "encoding-detection/support/ar-ISO-8859-6-late.sub.html": [
+   "b5d8d50498ec87cc10bebaf586452913f640a26b",
+   "support"
+  ],
+  "encoding-detection/support/ar-windows-1256-late.sub.html": [
+   "fd80acd437deaf8b9593e0717e7e8819713806c6",
+   "support"
+  ],
+  "encoding-detection/support/el-ISO-8859-7-late.sub.html": [
+   "26cc057b9ea7c74cd8357b540f16ae8c5ddcfbc8",
+   "support"
+  ],
+  "encoding-detection/support/el-windows-1253-late.sub.html": [
+   "235c8e06eca32c2624c624e0b92800e07a3029d1",
+   "support"
+  ],
+  "encoding-detection/support/fa-windows-1256-late.sub.html": [
+   "6cb79b9c366e3493a78c4d95c50f1634b9b3c8c4",
+   "support"
+  ],
+  "encoding-detection/support/fi-windows-1252-late.sub.html": [
+   "7d99bf3f693dd4c7a89565a26c49bc3441e81ca6",
+   "support"
+  ],
+  "encoding-detection/support/he-ISO-8859-8-late.sub.html": [
+   "32aadf0b7349a8d588eb4a9240b2397ed47f32d5",
+   "support"
+  ],
+  "encoding-detection/support/he-windows-1255-late.sub.html": [
+   "3ded8c05857961d1f22b384a06b57d17a1a13b90",
+   "support"
+  ],
+  "encoding-detection/support/is-windows-1252-late.sub.html": [
+   "41654c0c896d6b8eb0ba0615ab7c4b3e55571d58",
+   "support"
+  ],
+  "encoding-detection/support/ja-EUC-JP-late.sub.html": [
+   "d957a12c50059e90cde5738956605eb8033a857a",
+   "support"
+  ],
+  "encoding-detection/support/ja-ISO-2022-JP-late.sub.html": [
+   "6f6561c50a91b34b7416ae90374aeef835108506",
+   "support"
+  ],
+  "encoding-detection/support/ja-Shift_JIS-late.sub.html": [
+   "c28380fe96211502d63c1dbe759805ec504833db",
+   "support"
+  ],
+  "encoding-detection/support/ko-EUC-KR-late.sub.html": [
+   "58b6f96e613e33abeac74cdb7b87b660ca2cea68",
+   "support"
+  ],
+  "encoding-detection/support/lt-windows-1257-late.sub.html": [
+   "4957b4563cba7212c8bf1c781d7417df7bcba257",
+   "support"
+  ],
+  "encoding-detection/support/lv-windows-1257-late.sub.html": [
+   "f258839a8181daf415b9fdda7d6e5592d615225c",
+   "support"
+  ],
+  "encoding-detection/support/pl-ISO-8859-2-late.sub.html": [
+   "53ec94dc31b149322fc5d4d27b9ade8c5f1c6a21",
+   "support"
+  ],
+  "encoding-detection/support/pl-windows-1250-late.sub.html": [
+   "894a065e011acac36f10c9509bbffdd15027ade8",
+   "support"
+  ],
+  "encoding-detection/support/pt-windows-1252-late.sub.html": [
+   "7a950e48722ab0a74f68fadedceffe9575a2c957",
+   "support"
+  ],
+  "encoding-detection/support/ru-IBM866-late.sub.html": [
+   "929ce96640ea11d346087d03b6cc3c6a61f68edf",
+   "support"
+  ],
+  "encoding-detection/support/ru-ISO-8859-5-late.sub.html": [
+   "7ad29ce34df2676289e46f0c28d66d71db9cc4f0",
+   "support"
+  ],
+  "encoding-detection/support/th-windows-874-late.sub.html": [
+   "11d569cb71fc9fa8fe3976189be0f22a9e98848e",
+   "support"
+  ],
+  "encoding-detection/support/tr-windows-1254-late.sub.html": [
+   "adcf9ccd53de24a127ceecf659b20cb10b63afa9",
+   "support"
+  ],
+  "encoding-detection/support/uk-KOI8-U-late.sub.html": [
+   "3802d0e3f7b9eb068922754739bb553aa23abd3b",
+   "support"
+  ],
+  "encoding-detection/support/uk-windows-1251-late.sub.html": [
+   "0bd38d93eabff8ec3762c57edabab7a921667820",
+   "support"
+  ],
+  "encoding-detection/support/vi-windows-1258-late.sub.html": [
+   "9139072035c5d1ed9419f8f7e5b5bc4ac0818d9f",
+   "support"
+  ],
+  "encoding-detection/support/yi-windows-1255-late.sub.html": [
+   "2e5adcb31a0dfd6253f37cdde70d5c13935389fe",
+   "support"
+  ],
+  "encoding-detection/support/zh-Big5-late.sub.html": [
+   "517ae19c993a5692723a6dba0b495fec84940686",
+   "support"
+  ],
+  "encoding-detection/support/zh-GBK-late.sub.html": [
+   "74e5c131bdec94b541b4cae0865470bcff80b918",
+   "support"
+  ],
+  "encoding-detection/th-windows-874-late.tentative.html": [
+   "1428ca0a672eb75d6e571f032ef149b72d7be091",
+   "testharness"
+  ],
+  "encoding-detection/th-windows-874.tentative.html": [
+   "2069360f5228ac9b9b455d2808ad1f32530514ae",
+   "testharness"
+  ],
+  "encoding-detection/tr-windows-1254-late.tentative.html": [
+   "bc48d31907d87b60f5a3e6bf89bcaee9eed4ac0a",
+   "testharness"
+  ],
+  "encoding-detection/tr-windows-1254.tentative.html": [
+   "73e888b20177aa21f748c78dafe3fa0c3bd86289",
+   "testharness"
+  ],
+  "encoding-detection/uk-KOI8-U-late.tentative-expected.txt": [
+   "a8340c8a2d02ce784f3719c2c1c9c76ac7983731",
+   "support"
+  ],
+  "encoding-detection/uk-KOI8-U-late.tentative.html": [
+   "f82ff24abda84ccf0701abaecd087ae3bbed24f9",
+   "testharness"
+  ],
+  "encoding-detection/uk-KOI8-U.tentative-expected.txt": [
+   "a8340c8a2d02ce784f3719c2c1c9c76ac7983731",
+   "support"
+  ],
+  "encoding-detection/uk-KOI8-U.tentative.html": [
+   "9852ae8a012c35b77bc6bb67a82ef0f3ea233930",
+   "testharness"
+  ],
+  "encoding-detection/uk-windows-1251-late.tentative.html": [
+   "2dc83eecd98362d2a78787daaf193177e8cb5545",
+   "testharness"
+  ],
+  "encoding-detection/uk-windows-1251.tentative.html": [
+   "d410eee62286725e4bc1dddb9ae8e96146fec6b3",
+   "testharness"
+  ],
+  "encoding-detection/utf-8.html": [
+   "a2a5982ef480bd0fd2b8944c39a077b476c49588",
+   "testharness"
+  ],
+  "encoding-detection/vi-windows-1258-late.tentative-expected.txt": [
+   "09df9b23c7f9696c4d38c71b14f2a9b20f7c504a",
+   "support"
+  ],
+  "encoding-detection/vi-windows-1258-late.tentative.html": [
+   "1a2499cd501de157aa58066c1f4cec8d5149c481",
+   "testharness"
+  ],
+  "encoding-detection/vi-windows-1258.tentative-expected.txt": [
+   "09df9b23c7f9696c4d38c71b14f2a9b20f7c504a",
+   "support"
+  ],
+  "encoding-detection/vi-windows-1258.tentative.html": [
+   "15f3b122f8d9461ea94f73810fd8fa834e354c39",
+   "testharness"
+  ],
+  "encoding-detection/yi-windows-1255-late.tentative.html": [
+   "52c3ffe5d68931d172c74530b323ad3e25a295bc",
+   "testharness"
+  ],
+  "encoding-detection/yi-windows-1255.tentative.html": [
+   "b778590cd458f4b26321b2f370461e5ae8e686ac",
+   "testharness"
+  ],
+  "encoding-detection/zh-Big5-late.tentative.html": [
+   "7df76aac4e0f040bb017ead6509120b56d3e1a99",
+   "testharness"
+  ],
+  "encoding-detection/zh-Big5.tentative.html": [
+   "edd8017f491bd713b515f0fb67df6ae379e54288",
+   "testharness"
+  ],
+  "encoding-detection/zh-GBK-late.tentative.html": [
+   "83e9b8e2a24849b46b935e35441541f22b7e2ab7",
+   "testharness"
+  ],
+  "encoding-detection/zh-GBK.tentative.html": [
+   "0b88da6751dd106510936c63e5b01ea2060aec89",
+   "testharness"
+  ],
   "encoding/META.yml": [
    "a219a492f0b963f19c50c094e9f00cf3cb69d467",
    "support"
@@ -464416,11 +465537,11 @@
    "testharness"
   ],
   "html/semantics/forms/the-input-element/input-stepdown.html": [
-   "9ce5e5e1f454c22da589b5ecb0299e23626bb897",
+   "a970b531f5d1499818a1537c2619478d14fda2b4",
    "testharness"
   ],
   "html/semantics/forms/the-input-element/input-stepup.html": [
-   "47457066e3c530abe56d6d1d5cdef4b2f00f7475",
+   "8f5888a6e4e1504a7451e8ec66337af88f1314d8",
    "testharness"
   ],
   "html/semantics/forms/the-input-element/input-type-button.html": [
@@ -472863,12 +473984,8 @@
    "a49a83f346d59f8c5e1a218891ecddc5a85ac5ea",
    "testharness"
   ],
-  "largest-contentful-paint/idlharness-expected.txt": [
-   "5ebae7c63b916928748bcaa9adb6a46838ebfca4",
-   "support"
-  ],
   "largest-contentful-paint/idlharness.html": [
-   "273fef80ce2d855075781512a9a8ab0a736af420",
+   "84d1c7ff9aea26fe7b5810b3d236213d8fac6a5a",
    "testharness"
   ],
   "largest-contentful-paint/iframe-content-not-observed.html": [
@@ -473103,12 +474220,24 @@
    "d06f4c59bca28d01632cf693062a7d30ecbd5cc8",
    "support"
   ],
+  "loading/lazyload/META.yml": [
+   "cf46037be689ed345755b4c14fc76ae0a9951e8e",
+   "support"
+  ],
+  "loading/lazyload/below-viewport-image-loading-lazy-load-event.tentative-expected.txt": [
+   "9d32e7d3a7d3d8f247da9777e1f025aa4d1d4e32",
+   "support"
+  ],
+  "loading/lazyload/below-viewport-image-loading-lazy-load-event.tentative.html": [
+   "a42b0f6a8ec70b0ecd3c348e2d1377c3eb5744a0",
+   "testharness"
+  ],
   "loading/lazyload/common.js": [
    "06f18b3e0498549df1811c6a8008857e65b4117c",
    "support"
   ],
   "loading/lazyload/disconnected-image-loading-lazy.tentative.html": [
-   "c3b72b26239ea18c0575b65d0d6aa3aaef08792d",
+   "fe6d79fe2a558bae6740932e24ff31c30425225c",
    "testharness"
   ],
   "loading/lazyload/iframe-loading-eager.tentative.html": [
@@ -473123,12 +474252,20 @@
    "76eef3a8f45c131bdbf90028f8bcad75be0e5f32",
    "testharness"
   ],
-  "loading/lazyload/image-loading-lazy-multicol-tentative.html": [
+  "loading/lazyload/image-loading-lazy-load-event.tentative-expected.txt": [
+   "dcab815dbd61e63cfc1b2089b430f179315be6e6",
+   "support"
+  ],
+  "loading/lazyload/image-loading-lazy-load-event.tentative.html": [
+   "9e56a3150953494533d117841dcdd454aaa039f2",
+   "testharness"
+  ],
+  "loading/lazyload/image-loading-lazy-multicol.tentative.html": [
    "eb69d6810d60a198ae5861211423acb7f76245f9",
    "testharness"
   ],
   "loading/lazyload/image-loading-lazy.tentative.html": [
-   "e593a58e56351322819b8589ecc155f92a19a535",
+   "04625e0d7c4d87f04302e455f0ae001aa14ce2e9",
    "testharness"
   ],
   "loading/lazyload/invisible-image.tentative.html": [
@@ -473139,20 +474276,24 @@
    "edae3d82d288c02e34ecbc9ef069e0102b685815",
    "support"
   ],
-  "loading/lazyload/invisible-lazy-image.tentative.html": [
-   "94f0dbfd6da8178119f51e3be29f77869e46da22",
+  "loading/lazyload/not-rendered-below-viewport-image-loading-lazy.tentative.html": [
+   "0c40d7dbcd832b379a3d8427f9390fca842439cd",
+   "testharness"
+  ],
+  "loading/lazyload/not-rendered-image-loading-lazy.tentative.html": [
+   "fafd668e32ad995968f0ec00650f6f785ea26b6b",
    "testharness"
   ],
   "loading/lazyload/original-base-url-applied-2-tentative-expected.txt": [
-   "9ef23477c6f47bb8f028afc4a6074404036b9888",
+   "9503477826d68886d7a81b22f5952db3021bad86",
    "support"
   ],
   "loading/lazyload/original-base-url-applied-2-tentative.html": [
-   "1eb8ff466a9e488ec66fdf2549207b560521108b",
+   "debfbadb2b04fc462f8cee0cd1579bf7a8096157",
    "testharness"
   ],
   "loading/lazyload/original-base-url-applied-iframe-tentative.html": [
-   "01c0b47017cdef988f1f1968716c78f3bcf6ce9c",
+   "0734b335781629c4084d6e9646a61d9b80017169",
    "testharness"
   ],
   "loading/lazyload/original-base-url-applied-tentative-expected.txt": [
@@ -473951,10 +475092,6 @@
    "b0b03f225525ffacf1d8f73da03a3848b39e96f8",
    "reftest"
   ],
-  "mathml/relations/css-styling/attribute-mapping-001-expected.txt": [
-   "5c64785af046109797f9980ec7da6db6f4b3acb1",
-   "support"
-  ],
   "mathml/relations/css-styling/attribute-mapping-001.html": [
    "3424e8c1a8cbb775a91839db6b3951dfe869af95",
    "testharness"
@@ -488419,6 +489556,10 @@
    "e19a225de046ba01a1232fb0cb456b6a706f583a",
    "testharness"
   ],
+  "portals/portals-focus.sub.html": [
+   "a05786186e5d332c019765106e051ec457eb4495",
+   "testharness"
+  ],
   "portals/portals-host-exposure.sub.html": [
    "36fc2b48c8d87e10a1cb533e19372de1a9251825",
    "testharness"
@@ -488491,6 +489632,14 @@
    "98c2013915eae38bea2b8722bb8f80378ae894a0",
    "support"
   ],
+  "portals/resources/focus-page-with-button.html": [
+   "2b6f0ff75604a5750ba96f6c19c9cc6508495676",
+   "support"
+  ],
+  "portals/resources/focus-page-with-x-origin-iframe.sub.html": [
+   "7c9df9dba643a8202529d9f0b154a504535d7bcb",
+   "support"
+  ],
   "portals/resources/open-blank-host.js": [
    "f7580bd15212234c36b55a368efa0c729bd64e5b",
    "support"
@@ -502716,7 +503865,11 @@
    "support"
   ],
   "scroll-animations/scroll-animation.html": [
-   "0320210f8394c7439353a6e1efd0eba339b27e20",
+   "d565788e1089af140fb3579fca67d4ca9b60bdf3",
+   "testharness"
+  ],
+  "scroll-animations/setting-current-time.html": [
+   "7a77f17509c6fff104d268d6a753f66469bb5dec",
    "testharness"
   ],
   "scroll-to-text-fragment/META.yml": [
@@ -509539,6 +510692,10 @@
    "653856de21bc50a48d8d2aa55fdaa276f994b8f6",
    "reftest"
   ],
+  "svg/embedded/image-fractional-width-vertical-fidelity.svg": [
+   "81f27922b94e031f2dc49ce77a69c6350ea474bc",
+   "reftest"
+  ],
   "svg/embedded/reference/green-rect-100x100.svg": [
    "120941444a4898197d6b6001f9908a6cd48b62ba",
    "support"
@@ -521744,7 +522901,7 @@
    "support"
   ],
   "web-animations/animation-model/animation-types/accumulation-per-property-expected.txt": [
-   "b079e4ef143b084037417455deef76ece768b58f",
+   "9b5d78ab275ad7a9946a2462afa077a40de644bb",
    "support"
   ],
   "web-animations/animation-model/animation-types/accumulation-per-property.html": [
@@ -521752,7 +522909,7 @@
    "testharness"
   ],
   "web-animations/animation-model/animation-types/addition-per-property-expected.txt": [
-   "21a7dd2f47ad82f9abcb0a973e43a2fcdf698be3",
+   "e86adfcc4b057135aac3056709f1d34083c2582a",
    "support"
   ],
   "web-animations/animation-model/animation-types/addition-per-property.html": [
@@ -521764,7 +522921,7 @@
    "testharness"
   ],
   "web-animations/animation-model/animation-types/interpolation-per-property-expected.txt": [
-   "93ad9fea3acd591153d3f5c8844801af691832f2",
+   "2f6eb6ada35a39b55ec87108c1f163f91384832b",
    "support"
   ],
   "web-animations/animation-model/animation-types/interpolation-per-property.html": [
@@ -522380,7 +523537,7 @@
    "testharness"
   ],
   "web-nfc/NDEFRecord_constructor.https.html": [
-   "f3546b99dcb9461a519579b656ce33adacaaf5a3",
+   "d46503ab172bf358bff005ce8c2c56941e333eea",
    "testharness"
   ],
   "web-nfc/NDEFWriter-document-hidden-manual.https-expected.txt": [
@@ -522608,7 +523765,7 @@
    "support"
   ],
   "webaudio/resources/audit.js": [
-   "fe6fc45b1400ac7526e37a53a54ec3ac52fde528",
+   "ac97b66249db236e3175ebc1102531ec869f47cc",
    "support"
   ],
   "webaudio/resources/biquad-filters.js": [
@@ -523016,7 +524173,7 @@
    "support"
   ],
   "webaudio/the-audio-api/the-audioworklet-interface/audioworklet-suspend.https.html": [
-   "89d361d22f35ffc6e7fbff6abdfc60c57a1d8ebb",
+   "685546aeb5e2f96e77e9c88cec19946f2b0fcb16",
    "testharness"
   ],
   "webaudio/the-audio-api/the-audioworklet-interface/audioworkletglobalscope-sample-rate.https.html": [
@@ -525591,6 +526748,10 @@
    "89f6b1b4d7a425f2d05688d14315227454a3d4be",
    "testharness"
   ],
+  "webrtc/RTCDataChannel-close.html": [
+   "13215d70e8bb5bc3afcc9a66aa73fd81c4281f78",
+   "testharness"
+  ],
   "webrtc/RTCDataChannel-id.html": [
    "0cf01976ff0eeb66c51ded321e777123f063b02c",
    "testharness"
@@ -531140,7 +532301,7 @@
    "support"
   ],
   "webxr/xrBoundedReferenceSpace_updates.https.html": [
-   "812acf457c155c64bd47341ba3b710d696993a8c",
+   "55d311591116bf0ab175dcbd4b1b13b7a2ef9d9f",
    "testharness"
   ],
   "webxr/xrDevice_disconnect_ends.https.html": [
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-attribute-changes-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-attribute-changes-expected.txt
new file mode 100644
index 0000000..231a8a75
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-attribute-changes-expected.txt
@@ -0,0 +1,10 @@
+This is a testharness.js-based test.
+FAIL Meta color-scheme initially 'dark'. assert_equals: expected (string) "dark" but got (undefined) undefined
+FAIL Removed name attribute from meta color-scheme. assert_equals: expected (string) "normal" but got (undefined) undefined
+FAIL Set meta name to color-scheme. assert_equals: expected (string) "dark" but got (undefined) undefined
+FAIL Set content attribute of meta color-scheme to empty string. assert_equals: expected (string) "normal" but got (undefined) undefined
+FAIL Set content attribute of meta color-scheme to an invalid value. assert_equals: expected (string) "normal" but got (undefined) undefined
+FAIL Set content attribute of meta color-scheme to 'light'. assert_equals: expected (string) "light" but got (undefined) undefined
+FAIL Removed the content attribute of meta color-scheme. assert_equals: expected (string) "normal" but got (undefined) undefined
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-attribute-changes.html b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-attribute-changes.html
new file mode 100644
index 0000000..bb9fa65
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-attribute-changes.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<title>CSS Color Adjust Test: meta color-scheme - attribute changes</title>
+<meta id="meta" name="color-scheme" content="dark">
+<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/compute-root-color-scheme.js"></script>
+<script>
+  assert_root_color_scheme("dark", "Meta color-scheme initially 'dark'.");
+
+  meta.removeAttribute("name");
+  assert_root_color_scheme("normal", "Removed name attribute from meta color-scheme.");
+
+  meta.setAttribute("name", "color-scheme");
+  assert_root_color_scheme("dark", "Set meta name to color-scheme.");
+
+  meta.setAttribute("content", "");
+  assert_root_color_scheme("normal", "Set content attribute of meta color-scheme to empty string.");
+
+  meta.setAttribute("content", ",,invalid");
+  assert_root_color_scheme("normal", "Set content attribute of meta color-scheme to an invalid value.");
+
+  meta.setAttribute("content", "light");
+  assert_root_color_scheme("light", "Set content attribute of meta color-scheme to 'light'.");
+
+  meta.removeAttribute("content");
+  assert_root_color_scheme("normal", "Removed the content attribute of meta color-scheme.");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-empty-content-value-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-empty-content-value-expected.txt
new file mode 100644
index 0000000..a98e7011
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-empty-content-value-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL Meta color-scheme with empty content attribute has no effect. assert_equals: expected (string) "normal" but got (undefined) undefined
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-empty-content-value.html b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-empty-content-value.html
new file mode 100644
index 0000000..86cc93c2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-empty-content-value.html
@@ -0,0 +1,10 @@
+<!doctype html>
+<title>CSS Color Adjust Test: meta color-scheme - empty content value</title>
+<meta name="color-scheme" content="">
+<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/compute-root-color-scheme.js"></script>
+<script>
+  assert_root_color_scheme("normal", "Meta color-scheme with empty content attribute has no effect.");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-first-valid-applies-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-first-valid-applies-expected.txt
new file mode 100644
index 0000000..1b1dfe9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-first-valid-applies-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL Tree order decides which meta color-scheme applies. assert_equals: expected (string) "dark" but got (undefined) undefined
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-first-valid-applies.html b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-first-valid-applies.html
new file mode 100644
index 0000000..0ade6df5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-first-valid-applies.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<title>CSS Color Adjust Test: multiple meta tags - first valid applies</title>
+<meta name="color-scheme">
+<meta name="color-scheme" content>
+<meta name="color-scheme" content="">
+<meta name="color-scheme" content="light,dark">
+<!-- This is first with a valid content value -->
+<meta name="color-scheme" content="dark">
+<meta name="color-scheme" content="light">
+<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/compute-root-color-scheme.js"></script>
+<script>
+  assert_root_color_scheme("dark", "Tree order decides which meta color-scheme applies.");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-insert-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-insert-expected.txt
new file mode 100644
index 0000000..bab8830
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-insert-expected.txt
@@ -0,0 +1,6 @@
+This is a testharness.js-based test.
+FAIL Initial color-scheme assert_equals: expected (string) "normal" but got (undefined) undefined
+FAIL Inserted meta color-scheme applies assert_equals: expected (string) "light" but got (undefined) undefined
+FAIL Inserted meta color-scheme before existing in head applies assert_equals: expected (string) "dark" but got (undefined) undefined
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-insert.html b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-insert.html
new file mode 100644
index 0000000..8618182
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-insert.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<title>CSS Color Adjust Test: insert meta tags</title>
+<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/compute-root-color-scheme.js"></script>
+<script>
+  function createMeta(content) {
+    const meta = document.createElement("meta");
+    meta.setAttribute("name", "color-scheme");
+    meta.setAttribute("content", content);
+    return meta;
+  }
+
+  assert_root_color_scheme("normal", "Initial color-scheme");
+
+  document.head.appendChild(createMeta("light"));
+  assert_root_color_scheme("light", "Inserted meta color-scheme applies");
+
+  document.head.insertBefore(createMeta("dark"), document.head.lastChild);
+  assert_root_color_scheme("dark", "Inserted meta color-scheme before existing in head applies");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-no-content-value-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-no-content-value-expected.txt
new file mode 100644
index 0000000..724eb0fce
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-no-content-value-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL Meta color-scheme without content attribute has no effect. assert_equals: expected (string) "normal" but got (undefined) undefined
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-no-content-value.html b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-no-content-value.html
new file mode 100644
index 0000000..6edb761
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-no-content-value.html
@@ -0,0 +1,10 @@
+<!doctype html>
+<title>CSS Color Adjust Test: meta color-scheme - no content value</title>
+<meta name="color-scheme">
+<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/compute-root-color-scheme.js"></script>
+<script>
+  assert_root_color_scheme("normal", "Meta color-scheme without content attribute has no effect.");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-presentational-hint-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-presentational-hint-expected.txt
new file mode 100644
index 0000000..1d7f4b4d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-presentational-hint-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL Author origin style rule overrides meta color-scheme. assert_equals: expected (string) "light" but got (undefined) undefined
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-presentational-hint.html b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-presentational-hint.html
new file mode 100644
index 0000000..5a87604
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-presentational-hint.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<title>CSS Color Adjust Test: meta color-scheme - presentational hint</title>
+<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/compute-root-color-scheme.js"></script>
+<style>
+  * { color-scheme: light }
+</style>
+<meta name="color-scheme" content="dark">
+<script>
+  // Author level CSS color-scheme property overrides meta color-scheme value
+  // which is at the presentational hint cascade order.
+  assert_root_color_scheme("light", "Author origin style rule overrides meta color-scheme.");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-remove-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-remove-expected.txt
new file mode 100644
index 0000000..4489837
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-remove-expected.txt
@@ -0,0 +1,6 @@
+This is a testharness.js-based test.
+FAIL First meta applies. assert_equals: expected (string) "dark" but got (undefined) undefined
+FAIL Second meta applies after first one is removed. assert_equals: expected (string) "light" but got (undefined) undefined
+FAIL Initial color-scheme with both meta elements removed. assert_equals: expected (string) "normal" but got (undefined) undefined
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-remove-head-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-remove-head-expected.txt
new file mode 100644
index 0000000..a20d3fe
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-remove-head-expected.txt
@@ -0,0 +1,5 @@
+This is a testharness.js-based test.
+FAIL Meta color-scheme applies. assert_equals: expected (string) "dark" but got (undefined) undefined
+FAIL Initial value after removing head including meta color-scheme. assert_equals: expected (string) "normal" but got (undefined) undefined
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-remove-head.html b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-remove-head.html
new file mode 100644
index 0000000..d627f62d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-remove-head.html
@@ -0,0 +1,13 @@
+<!doctype html>
+<title>CSS Color Adjust Test: Remove head with meta color-scheme</title>
+<meta name="color-scheme" content="dark">
+<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/compute-root-color-scheme.js"></script>
+<body></body>
+<script>
+  assert_root_color_scheme("dark", "Meta color-scheme applies.");
+  document.head.remove();
+  assert_root_color_scheme("normal", "Initial value after removing head including meta color-scheme.");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-remove.html b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-remove.html
new file mode 100644
index 0000000..8439c50
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-remove.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<title>CSS Color Adjust Test: remove meta tag</title>
+<meta id="dark" name="color-scheme" content="dark">
+<meta id="light" name="color-scheme" content="light">
+<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/compute-root-color-scheme.js"></script>
+<script>
+  assert_root_color_scheme("dark", "First meta applies.");
+  dark.remove();
+  assert_root_color_scheme("light", "Second meta applies after first one is removed.");
+  light.remove();
+  assert_root_color_scheme("normal", "Initial color-scheme with both meta elements removed.");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-single-value-in-body-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-single-value-in-body-expected.txt
new file mode 100644
index 0000000..bebcb58
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-single-value-in-body-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL Meta color-scheme in body does not apply. assert_equals: expected (string) "normal" but got (undefined) undefined
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-single-value-in-body.html b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-single-value-in-body.html
new file mode 100644
index 0000000..ff8fe41
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-single-value-in-body.html
@@ -0,0 +1,12 @@
+<!doctype html>
+<title>CSS Color Adjust Test: meta color-scheme in body should not apply</title>
+<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/compute-root-color-scheme.js"></script>
+<body>
+  <meta name="color-scheme" content="dark">
+</body>
+<script>
+  assert_root_color_scheme("normal", "Meta color-scheme in body does not apply.");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-single-value-in-head-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-single-value-in-head-expected.txt
new file mode 100644
index 0000000..9d8f0476
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-single-value-in-head-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL Meta color-scheme in head applies. assert_equals: expected (string) "dark" but got (undefined) undefined
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-single-value-in-head.html b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-single-value-in-head.html
new file mode 100644
index 0000000..6b5e5c0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-single-value-in-head.html
@@ -0,0 +1,10 @@
+<!doctype html>
+<title>CSS Color Adjust Test: Single meta color-scheme in head</title>
+<meta name="color-scheme" content="dark">
+<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/compute-root-color-scheme.js"></script>
+<script>
+  assert_root_color_scheme("dark", "Meta color-scheme in head applies.");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-single-value-in-shadow-tree-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-single-value-in-shadow-tree-expected.txt
new file mode 100644
index 0000000..5e342274
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-single-value-in-shadow-tree-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL Meta color-scheme in shadow tree does not apply. assert_equals: expected (string) "normal" but got (undefined) undefined
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-single-value-in-shadow-tree.html b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-single-value-in-shadow-tree.html
new file mode 100644
index 0000000..23ec7de
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/meta-color-scheme-single-value-in-shadow-tree.html
@@ -0,0 +1,18 @@
+<!doctype html>
+<title>CSS Color Adjust Test: meta color-scheme in shadow-tree should not apply</title>
+<link rel="help" href="https://drafts.csswg.org/css-color-adjust-1/#color-scheme-meta">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/compute-root-color-scheme.js"></script>
+<script>
+  const host = document.createElement("div");
+  host.id = "host";
+  document.head.appendChild(host);
+  const root = host.attachShadow({mode:"open"});
+  const meta = document.createElement("meta");
+  meta.setAttribute("name", "color-scheme");
+  meta.setAttribute("content", "dark");
+  root.appendChild(meta);
+
+  assert_root_color_scheme("normal", "Meta color-scheme in shadow tree does not apply.");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/support/compute-root-color-scheme.js b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/support/compute-root-color-scheme.js
new file mode 100644
index 0000000..8ceddbc
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-color-adjust/meta/support/compute-root-color-scheme.js
@@ -0,0 +1,7 @@
+'use strict';
+
+function assert_root_color_scheme(expected, description) {
+  test(() => {
+    assert_equals(getComputedStyle(document.documentElement).colorScheme, expected), "Check root element color scheme";
+  }, description);
+}
diff --git a/third_party/blink/web_tests/external/wpt/css/css-images/inheritance.html b/third_party/blink/web_tests/external/wpt/css/css-images/inheritance.html
index 5ca1ed6b..cf51ef3 100644
--- a/third_party/blink/web_tests/external/wpt/css/css-images/inheritance.html
+++ b/third_party/blink/web_tests/external/wpt/css/css-images/inheritance.html
@@ -15,7 +15,7 @@
 <div id="target"></div>
 </div>
 <script>
-assert_inherited('image-orientation', '0deg', 'from-image'); // none is 0deg
+assert_inherited('image-orientation', 'from-image', 'none');
 assert_inherited('image-rendering', 'auto', 'pixelated');
 assert_not_inherited('object-fit', 'fill', 'contain');
 assert_not_inherited('object-position', '50% 50%', '10px 20px');
diff --git a/third_party/blink/web_tests/external/wpt/css/css-images/parsing/image-orientation-computed-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-images/parsing/image-orientation-computed-expected.txt
deleted file mode 100644
index 338b2f4..0000000
--- a/third_party/blink/web_tests/external/wpt/css/css-images/parsing/image-orientation-computed-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-This is a testharness.js-based test.
-PASS Property image-orientation value 'from-image'
-FAIL Property image-orientation value 'none' assert_true: 'none' is a supported value for image-orientation. expected true got false
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/css/css-images/parsing/image-orientation-valid-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-images/parsing/image-orientation-valid-expected.txt
deleted file mode 100644
index ae71ae24..0000000
--- a/third_party/blink/web_tests/external/wpt/css/css-images/parsing/image-orientation-valid-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-This is a testharness.js-based test.
-PASS e.style['image-orientation'] = "from-image" should set the property value
-FAIL e.style['image-orientation'] = "none" should set the property value assert_not_equals: property should be set got disallowed value ""
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/css/css-pseudo/marker-content-012-ref.html b/third_party/blink/web_tests/external/wpt/css/css-pseudo/marker-content-012-ref.html
new file mode 100644
index 0000000..d40c55c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-pseudo/marker-content-012-ref.html
@@ -0,0 +1,72 @@
+<!DOCTYPE html>
+<html><head>
+<meta charset="utf-8">
+<title>CSS Reference: ::marker pseudo elements styled with 'content' property</title>
+<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com">
+<style>
+:root {
+  --red-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="32" height="16" style="background: red"></svg>');
+  --green-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="32" height="16" style="background: green"></svg>');
+}
+ul {
+  float: left;
+}
+.inside {
+  list-style-position: inside;
+}
+.text, .image {
+  list-style-type: none;
+  list-style-image: none;
+}
+.outside.text::before, .outside.image::before {
+  display: inline-block;
+  direction: rtl;
+  width: 0;
+}
+.text::before {
+  content: "text";
+}
+.image::before {
+  content: var(--green-image);
+}
+</style>
+<ul style="list-style-type: none">
+  <li class="outside normal">item</li>
+  <li class="outside text">item</li>
+  <li class="outside image">item</li>
+  <li class="inside normal">item</li>
+  <li class="inside text">item</li>
+  <li class="inside image">item</li>
+</ul>
+<ul style="list-style-type: decimal">
+  <li class="outside normal">item</li>
+  <li class="outside text">item</li>
+  <li class="outside image">item</li>
+  <li class="inside normal">item</li>
+  <li class="inside text">item</li>
+  <li class="inside image">item</li>
+</ul>
+<ul style="list-style-type: disc">
+  <li class="outside normal">item</li>
+  <li class="outside text">item</li>
+  <li class="outside image">item</li>
+  <li class="inside normal">item</li>
+  <li class="inside text">item</li>
+  <li class="inside image">item</li>
+</ul>
+<ul style="list-style-type: 'string'">
+  <li class="outside normal">item</li>
+  <li class="outside text">item</li>
+  <li class="outside image">item</li>
+  <li class="inside normal">item</li>
+  <li class="inside text">item</li>
+  <li class="inside image">item</li>
+</ul>
+<ul style="list-style-image: var(--red-image)">
+  <li class="outside normal">item</li>
+  <li class="outside text">item</li>
+  <li class="outside image">item</li>
+  <li class="inside normal">item</li>
+  <li class="inside text">item</li>
+  <li class="inside image">item</li>
+</ul>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-pseudo/marker-content-012.html b/third_party/blink/web_tests/external/wpt/css/css-pseudo/marker-content-012.html
new file mode 100644
index 0000000..f362287
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-pseudo/marker-content-012.html
@@ -0,0 +1,66 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Test: ::marker pseudo elements styled with 'content' property</title>
+<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com">
+<link rel="match" href="marker-content-012-ref.html">
+<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#marker-pseudo">
+<link rel="help" href="https://drafts.csswg.org/css-lists/#content-property">
+<meta name="assert" content="Checks that ::marker's 'content' takes precendence over 'list-style-type' and 'list-style-image'">
+<style>
+:root {
+  --red-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="32" height="16" style="background: red"></svg>');
+  --green-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="32" height="16" style="background: green"></svg>');
+}
+ul {
+  float: left;
+}
+.inside {
+  list-style-position: inside;
+}
+.text::marker {
+  content: "text";
+}
+.image::marker {
+  content: var(--green-image);
+}
+</style>
+<ul style="list-style-type: none">
+  <li class="outside normal">item</li>
+  <li class="outside text">item</li>
+  <li class="outside image">item</li>
+  <li class="inside normal">item</li>
+  <li class="inside text">item</li>
+  <li class="inside image">item</li>
+</ul>
+<ul style="list-style-type: decimal">
+  <li class="outside normal">item</li>
+  <li class="outside text">item</li>
+  <li class="outside image">item</li>
+  <li class="inside normal">item</li>
+  <li class="inside text">item</li>
+  <li class="inside image">item</li>
+</ul>
+<ul style="list-style-type: disc">
+  <li class="outside normal">item</li>
+  <li class="outside text">item</li>
+  <li class="outside image">item</li>
+  <li class="inside normal">item</li>
+  <li class="inside text">item</li>
+  <li class="inside image">item</li>
+</ul>
+<ul style="list-style-type: 'string'">
+  <li class="outside normal">item</li>
+  <li class="outside text">item</li>
+  <li class="outside image">item</li>
+  <li class="inside normal">item</li>
+  <li class="inside text">item</li>
+  <li class="inside image">item</li>
+</ul>
+<ul style="list-style-image: var(--red-image)">
+  <li class="outside normal">item</li>
+  <li class="outside text">item</li>
+  <li class="outside image">item</li>
+  <li class="inside normal">item</li>
+  <li class="inside text">item</li>
+  <li class="inside image">item</li>
+</ul>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-pseudo/marker-content-013-ref.html b/third_party/blink/web_tests/external/wpt/css/css-pseudo/marker-content-013-ref.html
new file mode 100644
index 0000000..7657cfb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-pseudo/marker-content-013-ref.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html><head>
+<meta charset="utf-8">
+<title>CSS Reference: ::marker pseudo elements styled with 'content' property</title>
+<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com">
+<style>
+.inside {
+  list-style-position: inside;
+}
+.string {
+  list-style-type: "string";
+}
+.content::marker {
+  content: "content";
+}
+</style>
+<ol class="outside">
+  <li class="decimal">item</li>
+  <li class="string">item</li>
+  <li class="content">item</li>
+</ol>
+<ol class="inside">
+  <li class="decimal">item</li>
+  <li class="string">item</li>
+  <li class="content">item</li>
+</ol>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-pseudo/marker-content-013.html b/third_party/blink/web_tests/external/wpt/css/css-pseudo/marker-content-013.html
new file mode 100644
index 0000000..18f00d17
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-pseudo/marker-content-013.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<meta charset="utf-8">
+<title>CSS Test: ::marker pseudo elements styled with 'content' property</title>
+<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com">
+<link rel="match" href="marker-content-013-ref.html">
+<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#marker-pseudo">
+<link rel="help" href="https://drafts.csswg.org/css-lists/#list-style-position-property">
+<meta name="assert" content="Checks that ::marker is updated when 'list-style-position' changes dynamically.">
+<style>
+.inside {
+  list-style-position: inside;
+}
+.string {
+  list-style-type: "string";
+}
+.content::marker {
+  content: "content";
+}
+</style>
+<ol class="inside">
+  <li class="decimal">item</li>
+  <li class="string">item</li>
+  <li class="content">item</li>
+</ol>
+<ol class="outside">
+  <li class="decimal">item</li>
+  <li class="string">item</li>
+  <li class="content">item</li>
+</ol>
+<script>
+"use strict";
+addEventListener("load", function() {
+  requestAnimationFrame(() => {
+    for (const list of document.querySelectorAll("ol")) {
+      list.classList.toggle("inside");
+      list.classList.toggle("outside");
+    }
+    takeScreenshot();
+  });
+}, {once: true});
+</script>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-pseudo/marker-content-014-ref.html b/third_party/blink/web_tests/external/wpt/css/css-pseudo/marker-content-014-ref.html
new file mode 100644
index 0000000..a4d2694
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-pseudo/marker-content-014-ref.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<meta charset="utf-8">
+<title>CSS Reference: ::marker pseudo elements styled with 'content' property</title>
+<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com">
+<style>
+iframe {
+  width: 600px;
+  border: none;
+}
+</style>
+<body>
+<script src="/common/reftest-wait.js"></script>
+<script>
+"use strict";
+const code = `
+  <!DOCTYPE html>
+  <style>
+  ::marker {
+    font-size: 3vw;
+  }
+  ol {
+    float: left;
+  }
+  .inside {
+    list-style-position: inside;
+  }
+  .decimal {
+    list-style-type: decimal;
+  }
+  .string {
+    list-style-type: "1. ";
+  }
+  .marker::marker {
+    content: "1. ";
+  }
+  </style>
+  <ol>
+    <li class="decimal">item</li>
+    <li class="string">item</li>
+    <li class="marker">item</li>
+  </ol>
+  <ol class="inside">
+    <li class="decimal">item</li>
+    <li class="string">item</li>
+    <li class="marker">item</li>
+  </ol>
+`;
+const iframe = document.createElement("iframe");
+iframe.src = "data:text/html," + encodeURI(code);
+iframe.addEventListener("load", function() {
+  takeScreenshot();
+}, {once: true});
+document.body.appendChild(iframe);
+</script>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-pseudo/marker-content-014.html b/third_party/blink/web_tests/external/wpt/css/css-pseudo/marker-content-014.html
new file mode 100644
index 0000000..8be9d759e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-pseudo/marker-content-014.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<meta charset="utf-8">
+<title>CSS Test: ::marker pseudo elements styled with 'content' property</title>
+<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com">
+<link rel="match" href="marker-content-014-ref.html">
+<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#marker-pseudo">
+<link rel="help" href="https://drafts.csswg.org/css-values/#viewport-relative-lengths">
+<meta name="assert" content="Checks that viewport units in ::marker are recalculated when viewport size changes.">
+<style>
+iframe {
+  width: 300px;
+  border: none;
+}
+iframe.big {
+  width: 600px;
+}
+</style>
+<body>
+<script src="/common/reftest-wait.js"></script>
+<script>
+"use strict";
+const code = `
+  <!DOCTYPE html>
+  <style>
+  ::marker {
+    font-size: 3vw;
+  }
+  ol {
+    float: left;
+  }
+  .inside {
+    list-style-position: inside;
+  }
+  .decimal {
+    list-style-type: decimal;
+  }
+  .string {
+    list-style-type: "1. ";
+  }
+  .marker::marker {
+    content: "1. ";
+  }
+  </style>
+  <ol>
+    <li class="decimal">item</li>
+    <li class="string">item</li>
+    <li class="marker">item</li>
+  </ol>
+  <ol class="inside">
+    <li class="decimal">item</li>
+    <li class="string">item</li>
+    <li class="marker">item</li>
+  </ol>
+`;
+const iframe = document.createElement("iframe");
+iframe.src = "data:text/html," + encodeURI(code);
+iframe.addEventListener("load", function() {
+  iframe.classList.add("big");
+  takeScreenshot();
+}, {once: true});
+document.body.appendChild(iframe);
+</script>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-transitions/Element-getAnimations.tentative-expected.txt b/third_party/blink/web_tests/external/wpt/css/css-transitions/Element-getAnimations.tentative-expected.txt
deleted file mode 100644
index 8878ef0..0000000
--- a/third_party/blink/web_tests/external/wpt/css/css-transitions/Element-getAnimations.tentative-expected.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-This is a testharness.js-based test.
-PASS getAnimations returns one Animation per transitioning property
-PASS getAnimations returns CSSTransition objects for CSS Transitions
-PASS getAnimations does not return finished CSS Transitions
-PASS getAnimations does not return a transition for a non-animatable property
-PASS getAnimations does not return a transition for an unsupposed property
-FAIL getAnimations sorts simultaneous transitions by name assert_equals: expected "border-bottom-width" but got "opacity"
-PASS getAnimations sorts transitions by when they were generated
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/ar-ISO-8859-6-late.tentative-expected.txt b/third_party/blink/web_tests/external/wpt/encoding-detection/ar-ISO-8859-6-late.tentative-expected.txt
new file mode 100644
index 0000000..32e1d19a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/ar-ISO-8859-6-late.tentative-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL Check detection result assert_equals: Expected ISO-8859-6 expected "ISO-8859-6" but got "windows-1256"
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/ar-ISO-8859-6-late.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/ar-ISO-8859-6-late.tentative.html
new file mode 100644
index 0000000..2fc9425
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/ar-ISO-8859-6-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>ar ISO-8859-6 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+    test(function() {
+        assert_equals(e.data, "ISO-8859-6", 'Expected ISO-8859-6');
+    }, "Check detection result");
+    w.close();
+    done();
+};
+var w = window.open("support/ar-ISO-8859-6-late.sub.html");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/ar-ISO-8859-6.tentative-expected.txt b/third_party/blink/web_tests/external/wpt/encoding-detection/ar-ISO-8859-6.tentative-expected.txt
new file mode 100644
index 0000000..32e1d19a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/ar-ISO-8859-6.tentative-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL Check detection result assert_equals: Expected ISO-8859-6 expected "ISO-8859-6" but got "windows-1256"
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/ar-ISO-8859-6.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/ar-ISO-8859-6.tentative.html
new file mode 100644
index 0000000..6967aae
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/ar-ISO-8859-6.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>ar ISO-8859-6</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>çÐÇ çè ÇÎÊÈÇÑ ÊÑåêÒ ÇäÃÍÑá.</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+    test(function() {
+        assert_equals(document.characterSet, "ISO-8859-6", 'Expected ISO-8859-6');
+    }, "Check detection result");
+      done();
+};
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/ar-windows-1256-late.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/ar-windows-1256-late.tentative.html
new file mode 100644
index 0000000..9928968
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/ar-windows-1256-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>ar windows-1256 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+    test(function() {
+        assert_equals(e.data, "windows-1256", 'Expected windows-1256');
+    }, "Check detection result");
+    w.close();
+    done();
+};
+var w = window.open("support/ar-windows-1256-late.sub.html");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/ar-windows-1256.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/ar-windows-1256.tentative.html
new file mode 100644
index 0000000..d2d6d93
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/ar-windows-1256.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>ar windows-1256</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>åÐÇ åæ ÇÎÊÈÇÑ ÊÑãíÒ ÇáÃÍÑÝ.</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+    test(function() {
+        assert_equals(document.characterSet, "windows-1256", 'Expected windows-1256');
+    }, "Check detection result");
+      done();
+};
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/el-ISO-8859-7-late.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/el-ISO-8859-7-late.tentative.html
new file mode 100644
index 0000000..fc5e799
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/el-ISO-8859-7-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>el ISO-8859-7 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+    test(function() {
+        assert_equals(e.data, "ISO-8859-7", 'Expected ISO-8859-7');
+    }, "Check detection result");
+    w.close();
+    done();
+};
+var w = window.open("support/el-ISO-8859-7-late.sub.html");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/el-ISO-8859-7.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/el-ISO-8859-7.tentative.html
new file mode 100644
index 0000000..f22b6ec
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/el-ISO-8859-7.tentative.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<title>el ISO-8859-7</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>Ðñüêåéôáé ãéá äïêéìÞ êùäéêïðïßçóçò ÷áñáêôÞñùí: ¶ñçò
+<!-- I needed to work capital alpha with tonos into the test somehow... --></p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+    test(function() {
+        assert_equals(document.characterSet, "ISO-8859-7", 'Expected ISO-8859-7');
+    }, "Check detection result");
+      done();
+};
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/el-windows-1253-late.tentative-expected.txt b/third_party/blink/web_tests/external/wpt/encoding-detection/el-windows-1253-late.tentative-expected.txt
new file mode 100644
index 0000000..8582d960
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/el-windows-1253-late.tentative-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL Check detection result assert_equals: Expected windows-1253 expected "windows-1253" but got "ISO-8859-7"
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/el-windows-1253-late.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/el-windows-1253-late.tentative.html
new file mode 100644
index 0000000..9a2960b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/el-windows-1253-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>el windows-1253 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+    test(function() {
+        assert_equals(e.data, "windows-1253", 'Expected windows-1253');
+    }, "Check detection result");
+    w.close();
+    done();
+};
+var w = window.open("support/el-windows-1253-late.sub.html");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/el-windows-1253.tentative-expected.txt b/third_party/blink/web_tests/external/wpt/encoding-detection/el-windows-1253.tentative-expected.txt
new file mode 100644
index 0000000..8582d960
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/el-windows-1253.tentative-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL Check detection result assert_equals: Expected windows-1253 expected "windows-1253" but got "ISO-8859-7"
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/el-windows-1253.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/el-windows-1253.tentative.html
new file mode 100644
index 0000000..b314aa5
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/el-windows-1253.tentative.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<title>el windows-1253</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>Ðñüêåéôáé ãéá äïêéìÞ êùäéêïðïßçóçò ÷áñáêôÞñùí: ¢ñçò
+<!-- I needed to work capital alpha with tonos into the test somehow... --></p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+    test(function() {
+        assert_equals(document.characterSet, "windows-1253", 'Expected windows-1253');
+    }, "Check detection result");
+      done();
+};
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/fa-windows-1256-late.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/fa-windows-1256-late.tentative.html
new file mode 100644
index 0000000..5398445
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/fa-windows-1256-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>fa windows-1256 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+    test(function() {
+        assert_equals(e.data, "windows-1256", 'Expected windows-1256');
+    }, "Check detection result");
+    w.close();
+    done();
+};
+var w = window.open("support/fa-windows-1256-late.sub.html");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/fa-windows-1256.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/fa-windows-1256.tentative.html
new file mode 100644
index 0000000..fb93c38
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/fa-windows-1256.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>fa windows-1256</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>Ç&#1740;ä &#1740;˜ ÊÓÊ ÑãҐÐÇÑ&#1740; ˜ÇÑǘÊÑ ÇÓÊ.</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+    test(function() {
+        assert_equals(document.characterSet, "windows-1256", 'Expected windows-1256');
+    }, "Check detection result");
+      done();
+};
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/fi-windows-1252-late.tentative-expected.txt b/third_party/blink/web_tests/external/wpt/encoding-detection/fi-windows-1252-late.tentative-expected.txt
new file mode 100644
index 0000000..ddb1883
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/fi-windows-1252-late.tentative-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL Check detection result assert_equals: Expected windows-1252 expected "windows-1252" but got "windows-1257"
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/fi-windows-1252-late.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/fi-windows-1252-late.tentative.html
new file mode 100644
index 0000000..b84a257
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/fi-windows-1252-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>fi windows-1252 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+    test(function() {
+        assert_equals(e.data, "windows-1252", 'Expected windows-1252');
+    }, "Check detection result");
+    w.close();
+    done();
+};
+var w = window.open("support/fi-windows-1252-late.sub.html");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/fi-windows-1252.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/fi-windows-1252.tentative.html
new file mode 100644
index 0000000..5a4efca
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/fi-windows-1252.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>fi windows-1252</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>Tämä on merkkikoodaustesti.</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+    test(function() {
+        assert_equals(document.characterSet, "windows-1252", 'Expected windows-1252');
+    }, "Check detection result");
+      done();
+};
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/he-ISO-8859-8-late.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/he-ISO-8859-8-late.tentative.html
new file mode 100644
index 0000000..bd19bdb6d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/he-ISO-8859-8-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>he ISO-8859-8 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+    test(function() {
+        assert_equals(e.data, "ISO-8859-8", 'Expected ISO-8859-8');
+    }, "Check detection result");
+    w.close();
+    done();
+};
+var w = window.open("support/he-ISO-8859-8-late.sub.html");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/he-ISO-8859-8.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/he-ISO-8859-8.tentative.html
new file mode 100644
index 0000000..f1651da
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/he-ISO-8859-8.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>he ISO-8859-8</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>.íéååú ãåãé÷ ïçáî åäæ</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+    test(function() {
+        assert_equals(document.characterSet, "ISO-8859-8", 'Expected ISO-8859-8');
+    }, "Check detection result");
+      done();
+};
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/he-windows-1255-late.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/he-windows-1255-late.tentative.html
new file mode 100644
index 0000000..9627458
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/he-windows-1255-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>he windows-1255 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+    test(function() {
+        assert_equals(e.data, "windows-1255", 'Expected windows-1255');
+    }, "Check detection result");
+    w.close();
+    done();
+};
+var w = window.open("support/he-windows-1255-late.sub.html");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/he-windows-1255.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/he-windows-1255.tentative.html
new file mode 100644
index 0000000..738cc35d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/he-windows-1255.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>he windows-1255</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>æäå îáçï ÷éãåã úååéí.</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+    test(function() {
+        assert_equals(document.characterSet, "windows-1255", 'Expected windows-1255');
+    }, "Check detection result");
+      done();
+};
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/is-windows-1252-late.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/is-windows-1252-late.tentative.html
new file mode 100644
index 0000000..7f733a4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/is-windows-1252-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>is windows-1252 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+    test(function() {
+        assert_equals(e.data, "windows-1252", 'Expected windows-1252');
+    }, "Check detection result");
+    w.close();
+    done();
+};
+var w = window.open("support/is-windows-1252-late.sub.html");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/is-windows-1252.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/is-windows-1252.tentative.html
new file mode 100644
index 0000000..06151d8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/is-windows-1252.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>is windows-1252</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>Þetta er kóðunarpróf á staf. Fyrir sum tungumál sem nota latneska stafi þurfum við meira inntak til að taka ákvörðunina.</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+    test(function() {
+        assert_equals(document.characterSet, "windows-1252", 'Expected windows-1252');
+    }, "Check detection result");
+      done();
+};
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/ja-EUC-JP-late.tentative-expected.txt b/third_party/blink/web_tests/external/wpt/encoding-detection/ja-EUC-JP-late.tentative-expected.txt
new file mode 100644
index 0000000..30cef115
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/ja-EUC-JP-late.tentative-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL Check detection result assert_equals: Expected EUC-JP expected "EUC-JP" but got "GBK"
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/ja-EUC-JP-late.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/ja-EUC-JP-late.tentative.html
new file mode 100644
index 0000000..aac50f6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/ja-EUC-JP-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>ja EUC-JP late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+    test(function() {
+        assert_equals(e.data, "EUC-JP", 'Expected EUC-JP');
+    }, "Check detection result");
+    w.close();
+    done();
+};
+var w = window.open("support/ja-EUC-JP-late.sub.html");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/ja-EUC-JP.tentative-expected.txt b/third_party/blink/web_tests/external/wpt/encoding-detection/ja-EUC-JP.tentative-expected.txt
new file mode 100644
index 0000000..30cef115
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/ja-EUC-JP.tentative-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL Check detection result assert_equals: Expected EUC-JP expected "EUC-JP" but got "GBK"
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/ja-EUC-JP.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/ja-EUC-JP.tentative.html
new file mode 100644
index 0000000..5929825
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/ja-EUC-JP.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>ja EUC-JP</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>¤³¤ì¤Ïʸ»ú¼Â¸³¤Ç¤¹¡£</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+    test(function() {
+        assert_equals(document.characterSet, "EUC-JP", 'Expected EUC-JP');
+    }, "Check detection result");
+      done();
+};
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/ja-ISO-2022-JP-late.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/ja-ISO-2022-JP-late.tentative.html
new file mode 100644
index 0000000..6e4bc91
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/ja-ISO-2022-JP-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>ja ISO-2022-JP late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+    test(function() {
+        assert_equals(e.data, "ISO-2022-JP", 'Expected ISO-2022-JP');
+    }, "Check detection result");
+    w.close();
+    done();
+};
+var w = window.open("support/ja-ISO-2022-JP-late.sub.html");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/ja-ISO-2022-JP.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/ja-ISO-2022-JP.tentative.html
new file mode 100644
index 0000000..405e123
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/ja-ISO-2022-JP.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>ja ISO-2022-JP</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>$B$3$l$OJ8;z<B83$G$9!#(B</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+    test(function() {
+        assert_equals(document.characterSet, "ISO-2022-JP", 'Expected ISO-2022-JP');
+    }, "Check detection result");
+      done();
+};
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/ja-Shift_JIS-late.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/ja-Shift_JIS-late.tentative.html
new file mode 100644
index 0000000..c822ae3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/ja-Shift_JIS-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>ja Shift_JIS late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+    test(function() {
+        assert_equals(e.data, "Shift_JIS", 'Expected Shift_JIS');
+    }, "Check detection result");
+    w.close();
+    done();
+};
+var w = window.open("support/ja-Shift_JIS-late.sub.html");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/ja-Shift_JIS.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/ja-Shift_JIS.tentative.html
new file mode 100644
index 0000000..a496e48
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/ja-Shift_JIS.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>ja Shift_JIS</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>‚±‚ê‚Í•¶ŽšŽÀŒ±‚Å‚·B</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+    test(function() {
+        assert_equals(document.characterSet, "Shift_JIS", 'Expected Shift_JIS');
+    }, "Check detection result");
+      done();
+};
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/ko-EUC-KR-late.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/ko-EUC-KR-late.tentative.html
new file mode 100644
index 0000000..9ff224a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/ko-EUC-KR-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>ko EUC-KR late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+    test(function() {
+        assert_equals(e.data, "EUC-KR", 'Expected EUC-KR');
+    }, "Check detection result");
+    w.close();
+    done();
+};
+var w = window.open("support/ko-EUC-KR-late.sub.html");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/ko-EUC-KR.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/ko-EUC-KR.tentative.html
new file mode 100644
index 0000000..dac67b1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/ko-EUC-KR.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>ko EUC-KR</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>À̰ÍÀº ¹®ÀÚ ÀÎÄÚµù Å×½ºÆ®ÀÔ´Ï´Ù.</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+    test(function() {
+        assert_equals(document.characterSet, "EUC-KR", 'Expected EUC-KR');
+    }, "Check detection result");
+      done();
+};
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/lt-windows-1257-late.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/lt-windows-1257-late.tentative.html
new file mode 100644
index 0000000..6f9ceed
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/lt-windows-1257-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>lt windows-1257 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+    test(function() {
+        assert_equals(e.data, "windows-1257", 'Expected windows-1257');
+    }, "Check detection result");
+    w.close();
+    done();
+};
+var w = window.open("support/lt-windows-1257-late.sub.html");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/lt-windows-1257.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/lt-windows-1257.tentative.html
new file mode 100644
index 0000000..88112a2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/lt-windows-1257.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>lt windows-1257</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>Tai simboliø kodavimo testas. Kai kurioms kalboms, naudojanèioms lotyniðkus raðmenis, mums reikia daugiau informacijos, kad galëtume priimti sprendimà.</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+    test(function() {
+        assert_equals(document.characterSet, "windows-1257", 'Expected windows-1257');
+    }, "Check detection result");
+      done();
+};
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/lv-windows-1257-late.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/lv-windows-1257-late.tentative.html
new file mode 100644
index 0000000..5651e415
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/lv-windows-1257-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>lv windows-1257 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+    test(function() {
+        assert_equals(e.data, "windows-1257", 'Expected windows-1257');
+    }, "Check detection result");
+    w.close();
+    done();
+};
+var w = window.open("support/lv-windows-1257-late.sub.html");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/lv-windows-1257.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/lv-windows-1257.tentative.html
new file mode 100644
index 0000000..3baeb40
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/lv-windows-1257.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>lv windows-1257</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>Ðis ir rakstzîmju kodçðanas tests. Daþâs valodâs, kurâs tiek izmantotas latîòu valodas burti, lçmuma pieòemðanai mums ir nepiecieðams vairâk ieguldîjuma.</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+    test(function() {
+        assert_equals(document.characterSet, "windows-1257", 'Expected windows-1257');
+    }, "Check detection result");
+      done();
+};
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/pl-ISO-8859-2-late.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/pl-ISO-8859-2-late.tentative.html
new file mode 100644
index 0000000..e5db00b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/pl-ISO-8859-2-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>pl ISO-8859-2 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+    test(function() {
+        assert_equals(e.data, "ISO-8859-2", 'Expected ISO-8859-2');
+    }, "Check detection result");
+    w.close();
+    done();
+};
+var w = window.open("support/pl-ISO-8859-2-late.sub.html");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/pl-ISO-8859-2.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/pl-ISO-8859-2.tentative.html
new file mode 100644
index 0000000..da1fcefb1
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/pl-ISO-8859-2.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>pl ISO-8859-2</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>To jest test kodowania znaków. W przypadku niektórych jêzyków, które u¿ywaj± znaków ³aciñskich, potrzebujemy wiêcej danych, aby podj±æ decyzjê.</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+    test(function() {
+        assert_equals(document.characterSet, "ISO-8859-2", 'Expected ISO-8859-2');
+    }, "Check detection result");
+      done();
+};
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/pl-windows-1250-late.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/pl-windows-1250-late.tentative.html
new file mode 100644
index 0000000..adeca83
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/pl-windows-1250-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>pl windows-1250 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+    test(function() {
+        assert_equals(e.data, "windows-1250", 'Expected windows-1250');
+    }, "Check detection result");
+    w.close();
+    done();
+};
+var w = window.open("support/pl-windows-1250-late.sub.html");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/pl-windows-1250.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/pl-windows-1250.tentative.html
new file mode 100644
index 0000000..b3955c4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/pl-windows-1250.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>pl windows-1250</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>To jest test kodowania znaków. W przypadku niektórych jêzyków, które u¿ywaj¹ znaków ³aciñskich, potrzebujemy wiêcej danych, aby podj¹æ decyzjê.</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+    test(function() {
+        assert_equals(document.characterSet, "windows-1250", 'Expected windows-1250');
+    }, "Check detection result");
+      done();
+};
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/pt-windows-1252-late.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/pt-windows-1252-late.tentative.html
new file mode 100644
index 0000000..d37dac0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/pt-windows-1252-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>pt windows-1252 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+    test(function() {
+        assert_equals(e.data, "windows-1252", 'Expected windows-1252');
+    }, "Check detection result");
+    w.close();
+    done();
+};
+var w = window.open("support/pt-windows-1252-late.sub.html");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/pt-windows-1252.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/pt-windows-1252.tentative.html
new file mode 100644
index 0000000..cf55dbb6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/pt-windows-1252.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>pt windows-1252</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>Este é um teste de codificação de caracteres.</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+    test(function() {
+        assert_equals(document.characterSet, "windows-1252", 'Expected windows-1252');
+    }, "Check detection result");
+      done();
+};
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/ru-IBM866-late.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/ru-IBM866-late.tentative.html
new file mode 100644
index 0000000..03f5643
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/ru-IBM866-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>ru IBM866 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+    test(function() {
+        assert_equals(e.data, "IBM866", 'Expected IBM866');
+    }, "Check detection result");
+    w.close();
+    done();
+};
+var w = window.open("support/ru-IBM866-late.sub.html");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/ru-IBM866.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/ru-IBM866.tentative.html
new file mode 100644
index 0000000..7992495
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/ru-IBM866.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>ru IBM866</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>â® â¥áâ ª®¤¨à®¢ª¨ ᨬ¢®«®¢.</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+    test(function() {
+        assert_equals(document.characterSet, "IBM866", 'Expected IBM866');
+    }, "Check detection result");
+      done();
+};
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/ru-ISO-8859-5-late.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/ru-ISO-8859-5-late.tentative.html
new file mode 100644
index 0000000..760dc96c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/ru-ISO-8859-5-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>ru ISO-8859-5 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+    test(function() {
+        assert_equals(e.data, "ISO-8859-5", 'Expected ISO-8859-5');
+    }, "Check detection result");
+    w.close();
+    done();
+};
+var w = window.open("support/ru-ISO-8859-5-late.sub.html");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/ru-ISO-8859-5.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/ru-ISO-8859-5.tentative.html
new file mode 100644
index 0000000..a2ee62c6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/ru-ISO-8859-5.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>ru ISO-8859-5</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>ÍâÞ âÕáâ ÚÞÔØàÞÒÚØ áØÜÒÞÛÞÒ.</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+    test(function() {
+        assert_equals(document.characterSet, "ISO-8859-5", 'Expected ISO-8859-5');
+    }, "Check detection result");
+      done();
+};
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/support/ar-ISO-8859-6-late.sub.html b/third_party/blink/web_tests/external/wpt/encoding-detection/support/ar-ISO-8859-6-late.sub.html
new file mode 100644
index 0000000..b5d8d504
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/support/ar-ISO-8859-6-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>ar ISO-8859-6 late</title>
+<script>
+onload = function() {
+    opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>çÐÇ çè ÇÎÊÈÇÑ ÊÑåêÒ ÇäÃÍÑá.</p>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/support/ar-windows-1256-late.sub.html b/third_party/blink/web_tests/external/wpt/encoding-detection/support/ar-windows-1256-late.sub.html
new file mode 100644
index 0000000..fd80acd4
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/support/ar-windows-1256-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>ar windows-1256 late</title>
+<script>
+onload = function() {
+    opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>åÐÇ åæ ÇÎÊÈÇÑ ÊÑãíÒ ÇáÃÍÑÝ.</p>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/support/el-ISO-8859-7-late.sub.html b/third_party/blink/web_tests/external/wpt/encoding-detection/support/el-ISO-8859-7-late.sub.html
new file mode 100644
index 0000000..26cc057b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/support/el-ISO-8859-7-late.sub.html
@@ -0,0 +1,10 @@
+<!doctype html>
+<title>el ISO-8859-7 late</title>
+<script>
+onload = function() {
+    opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>Ðñüêåéôáé ãéá äïêéìÞ êùäéêïðïßçóçò ÷áñáêôÞñùí: ¶ñçò
+<!-- I needed to work capital alpha with tonos into the test somehow... --></p>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/support/el-windows-1253-late.sub.html b/third_party/blink/web_tests/external/wpt/encoding-detection/support/el-windows-1253-late.sub.html
new file mode 100644
index 0000000..235c8e0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/support/el-windows-1253-late.sub.html
@@ -0,0 +1,10 @@
+<!doctype html>
+<title>el windows-1253 late</title>
+<script>
+onload = function() {
+    opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>Ðñüêåéôáé ãéá äïêéìÞ êùäéêïðïßçóçò ÷áñáêôÞñùí: ¢ñçò
+<!-- I needed to work capital alpha with tonos into the test somehow... --></p>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/support/fa-windows-1256-late.sub.html b/third_party/blink/web_tests/external/wpt/encoding-detection/support/fa-windows-1256-late.sub.html
new file mode 100644
index 0000000..6cb79b9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/support/fa-windows-1256-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>fa windows-1256 late</title>
+<script>
+onload = function() {
+    opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>Ç&#1740;ä &#1740;˜ ÊÓÊ ÑãҐÐÇÑ&#1740; ˜ÇÑǘÊÑ ÇÓÊ.</p>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/support/fi-windows-1252-late.sub.html b/third_party/blink/web_tests/external/wpt/encoding-detection/support/fi-windows-1252-late.sub.html
new file mode 100644
index 0000000..7d99bf3f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/support/fi-windows-1252-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>fi windows-1252 late</title>
+<script>
+onload = function() {
+    opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>Tämä on merkkikoodaustesti.</p>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/support/he-ISO-8859-8-late.sub.html b/third_party/blink/web_tests/external/wpt/encoding-detection/support/he-ISO-8859-8-late.sub.html
new file mode 100644
index 0000000..32aadf0b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/support/he-ISO-8859-8-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>he ISO-8859-8 late</title>
+<script>
+onload = function() {
+    opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>.íéååú ãåãé÷ ïçáî åäæ</p>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/support/he-windows-1255-late.sub.html b/third_party/blink/web_tests/external/wpt/encoding-detection/support/he-windows-1255-late.sub.html
new file mode 100644
index 0000000..3ded8c0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/support/he-windows-1255-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>he windows-1255 late</title>
+<script>
+onload = function() {
+    opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>æäå îáçï ÷éãåã úååéí.</p>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/support/is-windows-1252-late.sub.html b/third_party/blink/web_tests/external/wpt/encoding-detection/support/is-windows-1252-late.sub.html
new file mode 100644
index 0000000..41654c0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/support/is-windows-1252-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>is windows-1252 late</title>
+<script>
+onload = function() {
+    opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>Þetta er kóðunarpróf á staf. Fyrir sum tungumál sem nota latneska stafi þurfum við meira inntak til að taka ákvörðunina.</p>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/support/ja-EUC-JP-late.sub.html b/third_party/blink/web_tests/external/wpt/encoding-detection/support/ja-EUC-JP-late.sub.html
new file mode 100644
index 0000000..d957a12c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/support/ja-EUC-JP-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>ja EUC-JP late</title>
+<script>
+onload = function() {
+    opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>¤³¤ì¤Ïʸ»ú¼Â¸³¤Ç¤¹¡£</p>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/support/ja-ISO-2022-JP-late.sub.html b/third_party/blink/web_tests/external/wpt/encoding-detection/support/ja-ISO-2022-JP-late.sub.html
new file mode 100644
index 0000000..6f6561c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/support/ja-ISO-2022-JP-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>ja ISO-2022-JP late</title>
+<script>
+onload = function() {
+    opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>$B$3$l$OJ8;z<B83$G$9!#(B</p>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/support/ja-Shift_JIS-late.sub.html b/third_party/blink/web_tests/external/wpt/encoding-detection/support/ja-Shift_JIS-late.sub.html
new file mode 100644
index 0000000..c28380f
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/support/ja-Shift_JIS-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>ja Shift_JIS late</title>
+<script>
+onload = function() {
+    opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>‚±‚ê‚Í•¶ŽšŽÀŒ±‚Å‚·B</p>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/support/ko-EUC-KR-late.sub.html b/third_party/blink/web_tests/external/wpt/encoding-detection/support/ko-EUC-KR-late.sub.html
new file mode 100644
index 0000000..58b6f96
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/support/ko-EUC-KR-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>ko EUC-KR late</title>
+<script>
+onload = function() {
+    opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>À̰ÍÀº ¹®ÀÚ ÀÎÄÚµù Å×½ºÆ®ÀÔ´Ï´Ù.</p>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/support/lt-windows-1257-late.sub.html b/third_party/blink/web_tests/external/wpt/encoding-detection/support/lt-windows-1257-late.sub.html
new file mode 100644
index 0000000..4957b45
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/support/lt-windows-1257-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>lt windows-1257 late</title>
+<script>
+onload = function() {
+    opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>Tai simboliø kodavimo testas. Kai kurioms kalboms, naudojanèioms lotyniðkus raðmenis, mums reikia daugiau informacijos, kad galëtume priimti sprendimà.</p>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/support/lv-windows-1257-late.sub.html b/third_party/blink/web_tests/external/wpt/encoding-detection/support/lv-windows-1257-late.sub.html
new file mode 100644
index 0000000..f258839a
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/support/lv-windows-1257-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>lv windows-1257 late</title>
+<script>
+onload = function() {
+    opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>Ðis ir rakstzîmju kodçðanas tests. Daþâs valodâs, kurâs tiek izmantotas latîòu valodas burti, lçmuma pieòemðanai mums ir nepiecieðams vairâk ieguldîjuma.</p>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/support/pl-ISO-8859-2-late.sub.html b/third_party/blink/web_tests/external/wpt/encoding-detection/support/pl-ISO-8859-2-late.sub.html
new file mode 100644
index 0000000..53ec94d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/support/pl-ISO-8859-2-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>pl ISO-8859-2 late</title>
+<script>
+onload = function() {
+    opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>To jest test kodowania znaków. W przypadku niektórych jêzyków, które u¿ywaj± znaków ³aciñskich, potrzebujemy wiêcej danych, aby podj±æ decyzjê.</p>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/support/pl-windows-1250-late.sub.html b/third_party/blink/web_tests/external/wpt/encoding-detection/support/pl-windows-1250-late.sub.html
new file mode 100644
index 0000000..894a065
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/support/pl-windows-1250-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>pl windows-1250 late</title>
+<script>
+onload = function() {
+    opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>To jest test kodowania znaków. W przypadku niektórych jêzyków, które u¿ywaj¹ znaków ³aciñskich, potrzebujemy wiêcej danych, aby podj¹æ decyzjê.</p>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/support/pt-windows-1252-late.sub.html b/third_party/blink/web_tests/external/wpt/encoding-detection/support/pt-windows-1252-late.sub.html
new file mode 100644
index 0000000..7a950e487
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/support/pt-windows-1252-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>pt windows-1252 late</title>
+<script>
+onload = function() {
+    opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>Este é um teste de codificação de caracteres.</p>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/support/ru-IBM866-late.sub.html b/third_party/blink/web_tests/external/wpt/encoding-detection/support/ru-IBM866-late.sub.html
new file mode 100644
index 0000000..929ce96
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/support/ru-IBM866-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>ru IBM866 late</title>
+<script>
+onload = function() {
+    opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>â® â¥áâ ª®¤¨à®¢ª¨ ᨬ¢®«®¢.</p>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/support/ru-ISO-8859-5-late.sub.html b/third_party/blink/web_tests/external/wpt/encoding-detection/support/ru-ISO-8859-5-late.sub.html
new file mode 100644
index 0000000..7ad29ce3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/support/ru-ISO-8859-5-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>ru ISO-8859-5 late</title>
+<script>
+onload = function() {
+    opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>ÍâÞ âÕáâ ÚÞÔØàÞÒÚØ áØÜÒÞÛÞÒ.</p>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/support/th-windows-874-late.sub.html b/third_party/blink/web_tests/external/wpt/encoding-detection/support/th-windows-874-late.sub.html
new file mode 100644
index 0000000..11d569cb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/support/th-windows-874-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>th windows-874 late</title>
+<script>
+onload = function() {
+    opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>¹Õè¤×Í¡Ò÷´Êͺ¡ÒÃà¢éÒÃËÑÊÍÑ¡¢ÃÐ</p>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/support/tr-windows-1254-late.sub.html b/third_party/blink/web_tests/external/wpt/encoding-detection/support/tr-windows-1254-late.sub.html
new file mode 100644
index 0000000..adcf9ccd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/support/tr-windows-1254-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>tr windows-1254 late</title>
+<script>
+onload = function() {
+    opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>Bu bir karakter kodlama testidir. Latince karakterleri kullanan bazý dillerde karar vermek için daha fazla girdiye ihtiyacýmýz var.</p>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/support/uk-KOI8-U-late.sub.html b/third_party/blink/web_tests/external/wpt/encoding-detection/support/uk-KOI8-U-late.sub.html
new file mode 100644
index 0000000..3802d0e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/support/uk-KOI8-U-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>uk KOI8-U late</title>
+<script>
+onload = function() {
+    opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>ãÅ ÔÅÓÔ ÎÁ ËÏÄÕ×ÁÎÎÑ ÓÉÍ×Ï̦×.</p>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/support/uk-windows-1251-late.sub.html b/third_party/blink/web_tests/external/wpt/encoding-detection/support/uk-windows-1251-late.sub.html
new file mode 100644
index 0000000..0bd38d9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/support/uk-windows-1251-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>uk windows-1251 late</title>
+<script>
+onload = function() {
+    opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>Öå òåñò íà êîäóâàííÿ ñèìâîë³â.</p>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/support/vi-windows-1258-late.sub.html b/third_party/blink/web_tests/external/wpt/encoding-detection/support/vi-windows-1258-late.sub.html
new file mode 100644
index 0000000..91390720
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/support/vi-windows-1258-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>vi windows-1258 late</title>
+<script>
+onload = function() {
+    opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>Ðây laÌ môòt thýÒ nghiêòm maÞ hoìa kyì týò.</p>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/support/yi-windows-1255-late.sub.html b/third_party/blink/web_tests/external/wpt/encoding-detection/support/yi-windows-1255-late.sub.html
new file mode 100644
index 0000000..2e5adcb
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/support/yi-windows-1255-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>yi windows-1255 late</title>
+<script>
+onload = function() {
+    opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>ãàÈñ àéæ àÇ èòñè ôÏàÇø ÷àÈãéøåðâ ôåï ëàÇøàÇ÷èòø.</p>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/support/zh-Big5-late.sub.html b/third_party/blink/web_tests/external/wpt/encoding-detection/support/zh-Big5-late.sub.html
new file mode 100644
index 0000000..517ae19c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/support/zh-Big5-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>zh Big5 late</title>
+<script>
+onload = function() {
+    opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>³o¬O¤@­Ó¦r²Å½s½X´ú¸Õ¡C</p>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/support/zh-GBK-late.sub.html b/third_party/blink/web_tests/external/wpt/encoding-detection/support/zh-GBK-late.sub.html
new file mode 100644
index 0000000..74e5c13
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/support/zh-GBK-late.sub.html
@@ -0,0 +1,9 @@
+<!doctype html>
+<title>zh GBK late</title>
+<script>
+onload = function() {
+    opener.postMessage(document.characterSet, "*");
+};
+</script>
+<!-- massive comment abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz -->
+<p>ÕâÊÇÒ»¸ö×Ö·û±àÂë²âÊÔ¡£</p>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/th-windows-874-late.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/th-windows-874-late.tentative.html
new file mode 100644
index 0000000..1428ca0
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/th-windows-874-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>th windows-874 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+    test(function() {
+        assert_equals(e.data, "windows-874", 'Expected windows-874');
+    }, "Check detection result");
+    w.close();
+    done();
+};
+var w = window.open("support/th-windows-874-late.sub.html");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/th-windows-874.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/th-windows-874.tentative.html
new file mode 100644
index 0000000..2069360
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/th-windows-874.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>th windows-874</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>¹Õè¤×Í¡Ò÷´Êͺ¡ÒÃà¢éÒÃËÑÊÍÑ¡¢ÃÐ</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+    test(function() {
+        assert_equals(document.characterSet, "windows-874", 'Expected windows-874');
+    }, "Check detection result");
+      done();
+};
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/tr-windows-1254-late.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/tr-windows-1254-late.tentative.html
new file mode 100644
index 0000000..bc48d31
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/tr-windows-1254-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>tr windows-1254 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+    test(function() {
+        assert_equals(e.data, "windows-1254", 'Expected windows-1254');
+    }, "Check detection result");
+    w.close();
+    done();
+};
+var w = window.open("support/tr-windows-1254-late.sub.html");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/tr-windows-1254.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/tr-windows-1254.tentative.html
new file mode 100644
index 0000000..73e888b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/tr-windows-1254.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>tr windows-1254</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>Bu bir karakter kodlama testidir. Latince karakterleri kullanan bazý dillerde karar vermek için daha fazla girdiye ihtiyacýmýz var.</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+    test(function() {
+        assert_equals(document.characterSet, "windows-1254", 'Expected windows-1254');
+    }, "Check detection result");
+      done();
+};
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/uk-KOI8-U-late.tentative-expected.txt b/third_party/blink/web_tests/external/wpt/encoding-detection/uk-KOI8-U-late.tentative-expected.txt
new file mode 100644
index 0000000..a8340c8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/uk-KOI8-U-late.tentative-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL Check detection result assert_equals: Expected KOI8-U expected "KOI8-U" but got "KOI8-R"
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/uk-KOI8-U-late.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/uk-KOI8-U-late.tentative.html
new file mode 100644
index 0000000..f82ff24
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/uk-KOI8-U-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>uk KOI8-U late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+    test(function() {
+        assert_equals(e.data, "KOI8-U", 'Expected KOI8-U');
+    }, "Check detection result");
+    w.close();
+    done();
+};
+var w = window.open("support/uk-KOI8-U-late.sub.html");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/uk-KOI8-U.tentative-expected.txt b/third_party/blink/web_tests/external/wpt/encoding-detection/uk-KOI8-U.tentative-expected.txt
new file mode 100644
index 0000000..a8340c8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/uk-KOI8-U.tentative-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL Check detection result assert_equals: Expected KOI8-U expected "KOI8-U" but got "KOI8-R"
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/uk-KOI8-U.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/uk-KOI8-U.tentative.html
new file mode 100644
index 0000000..9852ae8
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/uk-KOI8-U.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>uk KOI8-U</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>ãÅ ÔÅÓÔ ÎÁ ËÏÄÕ×ÁÎÎÑ ÓÉÍ×Ï̦×.</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+    test(function() {
+        assert_equals(document.characterSet, "KOI8-U", 'Expected KOI8-U');
+    }, "Check detection result");
+      done();
+};
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/uk-windows-1251-late.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/uk-windows-1251-late.tentative.html
new file mode 100644
index 0000000..2dc83ee
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/uk-windows-1251-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>uk windows-1251 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+    test(function() {
+        assert_equals(e.data, "windows-1251", 'Expected windows-1251');
+    }, "Check detection result");
+    w.close();
+    done();
+};
+var w = window.open("support/uk-windows-1251-late.sub.html");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/uk-windows-1251.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/uk-windows-1251.tentative.html
new file mode 100644
index 0000000..d410eee6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/uk-windows-1251.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>uk windows-1251</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>Öå òåñò íà êîäóâàííÿ ñèìâîë³â.</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+    test(function() {
+        assert_equals(document.characterSet, "windows-1251", 'Expected windows-1251');
+    }, "Check detection result");
+      done();
+};
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/utf-8.html b/third_party/blink/web_tests/external/wpt/encoding-detection/utf-8.html
new file mode 100644
index 0000000..a2a5982e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/utf-8.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>UTF-8</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>これは文字実験です。</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+    test(function() {
+        assert_not_equals(document.characterSet.toUpperCase(), "UTF-8", 'Must not detect UTF-8');
+    }, "Check detection result");
+      done();
+};
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/vi-windows-1258-late.tentative-expected.txt b/third_party/blink/web_tests/external/wpt/encoding-detection/vi-windows-1258-late.tentative-expected.txt
new file mode 100644
index 0000000..09df9b2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/vi-windows-1258-late.tentative-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL Check detection result assert_equals: Expected windows-1258 expected "windows-1258" but got "windows-1252"
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/vi-windows-1258-late.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/vi-windows-1258-late.tentative.html
new file mode 100644
index 0000000..1a2499c
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/vi-windows-1258-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>vi windows-1258 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+    test(function() {
+        assert_equals(e.data, "windows-1258", 'Expected windows-1258');
+    }, "Check detection result");
+    w.close();
+    done();
+};
+var w = window.open("support/vi-windows-1258-late.sub.html");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/vi-windows-1258.tentative-expected.txt b/third_party/blink/web_tests/external/wpt/encoding-detection/vi-windows-1258.tentative-expected.txt
new file mode 100644
index 0000000..09df9b2
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/vi-windows-1258.tentative-expected.txt
@@ -0,0 +1,4 @@
+This is a testharness.js-based test.
+FAIL Check detection result assert_equals: Expected windows-1258 expected "windows-1258" but got "windows-1252"
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/vi-windows-1258.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/vi-windows-1258.tentative.html
new file mode 100644
index 0000000..15f3b12
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/vi-windows-1258.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>vi windows-1258</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>Ðây laÌ môòt thýÒ nghiêòm maÞ hoìa kyì týò.</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+    test(function() {
+        assert_equals(document.characterSet, "windows-1258", 'Expected windows-1258');
+    }, "Check detection result");
+      done();
+};
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/yi-windows-1255-late.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/yi-windows-1255-late.tentative.html
new file mode 100644
index 0000000..52c3ffe
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/yi-windows-1255-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>yi windows-1255 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+    test(function() {
+        assert_equals(e.data, "windows-1255", 'Expected windows-1255');
+    }, "Check detection result");
+    w.close();
+    done();
+};
+var w = window.open("support/yi-windows-1255-late.sub.html");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/yi-windows-1255.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/yi-windows-1255.tentative.html
new file mode 100644
index 0000000..b778590
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/yi-windows-1255.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>yi windows-1255</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>ãàÈñ àéæ àÇ èòñè ôÏàÇø ÷àÈãéøåðâ ôåï ëàÇøàÇ÷èòø.</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+    test(function() {
+        assert_equals(document.characterSet, "windows-1255", 'Expected windows-1255');
+    }, "Check detection result");
+      done();
+};
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/zh-Big5-late.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/zh-Big5-late.tentative.html
new file mode 100644
index 0000000..7df76aac
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/zh-Big5-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>zh Big5 late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+    test(function() {
+        assert_equals(e.data, "Big5", 'Expected Big5');
+    }, "Check detection result");
+    w.close();
+    done();
+};
+var w = window.open("support/zh-Big5-late.sub.html");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/zh-Big5.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/zh-Big5.tentative.html
new file mode 100644
index 0000000..edd8017
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/zh-Big5.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>zh Big5</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>³o¬O¤@­Ó¦r²Å½s½X´ú¸Õ¡C</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+    test(function() {
+        assert_equals(document.characterSet, "Big5", 'Expected Big5');
+    }, "Check detection result");
+      done();
+};
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/zh-GBK-late.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/zh-GBK-late.tentative.html
new file mode 100644
index 0000000..83e9b8e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/zh-GBK-late.tentative.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>zh GBK late</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+setup({explicit_done:true});
+window.onmessage = function(e) {
+    test(function() {
+        assert_equals(e.data, "GBK", 'Expected GBK');
+    }, "Check detection result");
+    w.close();
+    done();
+};
+var w = window.open("support/zh-GBK-late.sub.html");
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/encoding-detection/zh-GBK.tentative.html b/third_party/blink/web_tests/external/wpt/encoding-detection/zh-GBK.tentative.html
new file mode 100644
index 0000000..0b88da67
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/encoding-detection/zh-GBK.tentative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<title>zh GBK</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<p>ÕâÊÇÒ»¸ö×Ö·û±àÂë²âÊÔ¡£</p>
+<script>
+setup({explicit_done:true});
+onload = function() {
+    test(function() {
+        assert_equals(document.characterSet, "GBK", 'Expected GBK');
+    }, "Check detection result");
+      done();
+};
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/html/dom/reflection-embedded-expected.txt b/third_party/blink/web_tests/external/wpt/html/dom/reflection-embedded-expected.txt
index 969c1d2..f1fe741 100644
--- a/third_party/blink/web_tests/external/wpt/html/dom/reflection-embedded-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/html/dom/reflection-embedded-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 8641 tests; 8535 PASS, 106 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 8695 tests; 8589 PASS, 106 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS picture.title: 38 tests
 PASS picture.lang: 38 tests
 PASS picture.dir: 68 tests
@@ -19,7 +19,7 @@
 PASS img.alt: 38 tests
 PASS img.src: 44 tests
 PASS img.srcset: 38 tests
-PASS img.crossOrigin: 58 tests
+PASS img.crossOrigin: 62 tests
 PASS img.useMap: 38 tests
 PASS img.isMap: 39 tests
 PASS img.width: 8 tests
@@ -28,28 +28,28 @@
 FAIL img.referrerPolicy: setAttribute() to "same-origin" assert_equals: IDL get expected "same-origin" but got ""
 PASS img.referrerPolicy: 3 tests
 FAIL img.referrerPolicy: setAttribute() to "SAME-ORIGIN" assert_equals: IDL get expected "same-origin" but got ""
-PASS img.referrerPolicy: 5 tests
+PASS img.referrerPolicy: 6 tests
 FAIL img.referrerPolicy: setAttribute() to "strict-origin" assert_equals: IDL get expected "strict-origin" but got ""
 PASS img.referrerPolicy: 3 tests
 FAIL img.referrerPolicy: setAttribute() to "STRICT-ORIGIN" assert_equals: IDL get expected "strict-origin" but got ""
-PASS img.referrerPolicy: 5 tests
+PASS img.referrerPolicy: 7 tests
 FAIL img.referrerPolicy: setAttribute() to "strict-origin-when-cross-origin" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
 PASS img.referrerPolicy: 3 tests
 FAIL img.referrerPolicy: setAttribute() to "STRICT-ORIGIN-WHEN-CROSS-ORIGIN" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
-PASS img.referrerPolicy: 33 tests
+PASS img.referrerPolicy: 35 tests
 FAIL img.referrerPolicy: IDL set to "same-origin" assert_equals: IDL get expected "same-origin" but got ""
 PASS img.referrerPolicy: 3 tests
 FAIL img.referrerPolicy: IDL set to "SAME-ORIGIN" assert_equals: IDL get expected "same-origin" but got ""
-PASS img.referrerPolicy: 5 tests
+PASS img.referrerPolicy: 6 tests
 FAIL img.referrerPolicy: IDL set to "strict-origin" assert_equals: IDL get expected "strict-origin" but got ""
 PASS img.referrerPolicy: 3 tests
 FAIL img.referrerPolicy: IDL set to "STRICT-ORIGIN" assert_equals: IDL get expected "strict-origin" but got ""
-PASS img.referrerPolicy: 5 tests
+PASS img.referrerPolicy: 7 tests
 FAIL img.referrerPolicy: IDL set to "strict-origin-when-cross-origin" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
 PASS img.referrerPolicy: 3 tests
 FAIL img.referrerPolicy: IDL set to "STRICT-ORIGIN-WHEN-CROSS-ORIGIN" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
-PASS img.referrerPolicy: 5 tests
-PASS img.decoding: 66 tests
+PASS img.referrerPolicy: 7 tests
+PASS img.decoding: 70 tests
 PASS img.name: 38 tests
 PASS img.lowsrc: 44 tests
 PASS img.align: 38 tests
@@ -115,27 +115,27 @@
 FAIL iframe.referrerPolicy: setAttribute() to "same-origin" assert_equals: IDL get expected "same-origin" but got ""
 PASS iframe.referrerPolicy: 3 tests
 FAIL iframe.referrerPolicy: setAttribute() to "SAME-ORIGIN" assert_equals: IDL get expected "same-origin" but got ""
-PASS iframe.referrerPolicy: 5 tests
+PASS iframe.referrerPolicy: 6 tests
 FAIL iframe.referrerPolicy: setAttribute() to "strict-origin" assert_equals: IDL get expected "strict-origin" but got ""
 PASS iframe.referrerPolicy: 3 tests
 FAIL iframe.referrerPolicy: setAttribute() to "STRICT-ORIGIN" assert_equals: IDL get expected "strict-origin" but got ""
-PASS iframe.referrerPolicy: 5 tests
+PASS iframe.referrerPolicy: 7 tests
 FAIL iframe.referrerPolicy: setAttribute() to "strict-origin-when-cross-origin" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
 PASS iframe.referrerPolicy: 3 tests
 FAIL iframe.referrerPolicy: setAttribute() to "STRICT-ORIGIN-WHEN-CROSS-ORIGIN" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
-PASS iframe.referrerPolicy: 33 tests
+PASS iframe.referrerPolicy: 35 tests
 FAIL iframe.referrerPolicy: IDL set to "same-origin" assert_equals: IDL get expected "same-origin" but got ""
 PASS iframe.referrerPolicy: 3 tests
 FAIL iframe.referrerPolicy: IDL set to "SAME-ORIGIN" assert_equals: IDL get expected "same-origin" but got ""
-PASS iframe.referrerPolicy: 5 tests
+PASS iframe.referrerPolicy: 6 tests
 FAIL iframe.referrerPolicy: IDL set to "strict-origin" assert_equals: IDL get expected "strict-origin" but got ""
 PASS iframe.referrerPolicy: 3 tests
 FAIL iframe.referrerPolicy: IDL set to "STRICT-ORIGIN" assert_equals: IDL get expected "strict-origin" but got ""
-PASS iframe.referrerPolicy: 5 tests
+PASS iframe.referrerPolicy: 7 tests
 FAIL iframe.referrerPolicy: IDL set to "strict-origin-when-cross-origin" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
 PASS iframe.referrerPolicy: 3 tests
 FAIL iframe.referrerPolicy: IDL set to "STRICT-ORIGIN-WHEN-CROSS-ORIGIN" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
-PASS iframe.referrerPolicy: 5 tests
+PASS iframe.referrerPolicy: 7 tests
 FAIL iframe.delegateStickyUserActivation: typeof IDL attribute assert_equals: expected "string" but got "undefined"
 FAIL iframe.delegateStickyUserActivation: setAttribute() to "vibration" assert_equals: IDL get expected (string) "vibration" but got (undefined) undefined
 FAIL iframe.delegateStickyUserActivation: setAttribute() to "VIBRATION" assert_equals: IDL get expected (string) "vibration" but got (undefined) undefined
@@ -234,7 +234,7 @@
 PASS video.accessKey: 38 tests
 PASS video.tabIndex: 26 tests
 PASS video.src: 44 tests
-PASS video.crossOrigin: 58 tests
+PASS video.crossOrigin: 62 tests
 PASS video.preload: 40 tests
 PASS video.autoplay: 39 tests
 PASS video.loop: 39 tests
@@ -253,7 +253,7 @@
 PASS audio.accessKey: 38 tests
 PASS audio.tabIndex: 26 tests
 PASS audio.src: 44 tests
-PASS audio.crossOrigin: 58 tests
+PASS audio.crossOrigin: 62 tests
 PASS audio.preload: 40 tests
 PASS audio.autoplay: 39 tests
 PASS audio.loop: 39 tests
@@ -280,7 +280,7 @@
 PASS track.hidden: 39 tests
 PASS track.accessKey: 38 tests
 PASS track.tabIndex: 26 tests
-PASS track.kind: 88 tests
+PASS track.kind: 96 tests
 PASS track.src: 44 tests
 PASS track.srclang: 38 tests
 PASS track.label: 38 tests
@@ -323,27 +323,27 @@
 FAIL area.referrerPolicy: setAttribute() to "same-origin" assert_equals: IDL get expected "same-origin" but got ""
 PASS area.referrerPolicy: 3 tests
 FAIL area.referrerPolicy: setAttribute() to "SAME-ORIGIN" assert_equals: IDL get expected "same-origin" but got ""
-PASS area.referrerPolicy: 5 tests
+PASS area.referrerPolicy: 6 tests
 FAIL area.referrerPolicy: setAttribute() to "strict-origin" assert_equals: IDL get expected "strict-origin" but got ""
 PASS area.referrerPolicy: 3 tests
 FAIL area.referrerPolicy: setAttribute() to "STRICT-ORIGIN" assert_equals: IDL get expected "strict-origin" but got ""
-PASS area.referrerPolicy: 5 tests
+PASS area.referrerPolicy: 7 tests
 FAIL area.referrerPolicy: setAttribute() to "strict-origin-when-cross-origin" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
 PASS area.referrerPolicy: 3 tests
 FAIL area.referrerPolicy: setAttribute() to "STRICT-ORIGIN-WHEN-CROSS-ORIGIN" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
-PASS area.referrerPolicy: 33 tests
+PASS area.referrerPolicy: 35 tests
 FAIL area.referrerPolicy: IDL set to "same-origin" assert_equals: IDL get expected "same-origin" but got ""
 PASS area.referrerPolicy: 3 tests
 FAIL area.referrerPolicy: IDL set to "SAME-ORIGIN" assert_equals: IDL get expected "same-origin" but got ""
-PASS area.referrerPolicy: 5 tests
+PASS area.referrerPolicy: 6 tests
 FAIL area.referrerPolicy: IDL set to "strict-origin" assert_equals: IDL get expected "strict-origin" but got ""
 PASS area.referrerPolicy: 3 tests
 FAIL area.referrerPolicy: IDL set to "STRICT-ORIGIN" assert_equals: IDL get expected "strict-origin" but got ""
-PASS area.referrerPolicy: 5 tests
+PASS area.referrerPolicy: 7 tests
 FAIL area.referrerPolicy: IDL set to "strict-origin-when-cross-origin" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
 PASS area.referrerPolicy: 3 tests
 FAIL area.referrerPolicy: IDL set to "STRICT-ORIGIN-WHEN-CROSS-ORIGIN" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
-PASS area.referrerPolicy: 5 tests
+PASS area.referrerPolicy: 7 tests
 PASS area.href: 44 tests
 PASS area.noHref: 39 tests
 Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/external/wpt/html/dom/reflection-forms-expected.txt b/third_party/blink/web_tests/external/wpt/html/dom/reflection-forms-expected.txt
new file mode 100644
index 0000000..97c98daf
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/html/dom/reflection-forms-expected.txt
@@ -0,0 +1,214 @@
+This is a testharness.js-based test.
+Found 8087 tests; 8079 PASS, 8 FAIL, 0 TIMEOUT, 0 NOTRUN.
+PASS form.title: 38 tests
+PASS form.lang: 38 tests
+PASS form.dir: 68 tests
+PASS form.className (<form class>): 38 tests
+PASS form.autofocus: 39 tests
+PASS form.hidden: 39 tests
+PASS form.accessKey: 38 tests
+PASS form.tabIndex: 26 tests
+PASS form.acceptCharset (<form accept-charset>): 38 tests
+PASS form.action: 44 tests
+PASS form.autocomplete: 58 tests
+PASS form.enctype: 68 tests
+PASS form.encoding (<form enctype>): 68 tests
+PASS form.method: 30 tests
+FAIL form.method: setAttribute() to "poſt" assert_equals: IDL get expected "get" but got "post"
+PASS form.method: 33 tests
+FAIL form.method: IDL set to "poſt" assert_equals: IDL get expected "get" but got "post"
+PASS form.method: 5 tests
+PASS form.name: 38 tests
+PASS form.noValidate: 39 tests
+PASS form.target: 38 tests
+PASS fieldset.title: 38 tests
+PASS fieldset.lang: 38 tests
+PASS fieldset.dir: 68 tests
+PASS fieldset.className (<fieldset class>): 38 tests
+PASS fieldset.autofocus: 39 tests
+PASS fieldset.hidden: 39 tests
+PASS fieldset.accessKey: 38 tests
+PASS fieldset.tabIndex: 26 tests
+PASS fieldset.disabled: 39 tests
+PASS fieldset.name: 38 tests
+PASS legend.title: 38 tests
+PASS legend.lang: 38 tests
+PASS legend.dir: 68 tests
+PASS legend.className (<legend class>): 38 tests
+PASS legend.autofocus: 39 tests
+PASS legend.hidden: 39 tests
+PASS legend.accessKey: 38 tests
+PASS legend.tabIndex: 26 tests
+PASS legend.align: 38 tests
+PASS label.title: 38 tests
+PASS label.lang: 38 tests
+PASS label.dir: 68 tests
+PASS label.className (<label class>): 38 tests
+PASS label.autofocus: 39 tests
+PASS label.hidden: 39 tests
+PASS label.accessKey: 38 tests
+PASS label.tabIndex: 26 tests
+PASS label.htmlFor (<label for>): 38 tests
+PASS input.title: 38 tests
+PASS input.lang: 38 tests
+PASS input.dir: 68 tests
+PASS input.className (<input class>): 38 tests
+PASS input.autofocus: 39 tests
+PASS input.hidden: 39 tests
+PASS input.accessKey: 38 tests
+PASS input.tabIndex: 26 tests
+PASS input.accept: 38 tests
+PASS input.alt: 38 tests
+PASS input.autocomplete: 19 tests
+PASS input.defaultChecked (<input checked>): 39 tests
+PASS input.dirName: 38 tests
+PASS input.disabled: 39 tests
+PASS input.formAction: 44 tests
+PASS input.formEnctype: 68 tests
+PASS input.formMethod: 30 tests
+FAIL input.formMethod: setAttribute() to "poſt" assert_equals: IDL get expected "get" but got "post"
+PASS input.formMethod: 28 tests
+FAIL input.formMethod: IDL set to "poſt" assert_equals: IDL get expected "get" but got "post"
+PASS input.formNoValidate: 39 tests
+PASS input.formTarget: 38 tests
+PASS input.height: 8 tests
+PASS input.max: 38 tests
+PASS input.maxLength: 64 tests
+PASS input.min: 38 tests
+PASS input.minLength: 64 tests
+PASS input.multiple: 39 tests
+PASS input.name: 38 tests
+PASS input.pattern: 38 tests
+PASS input.placeholder: 38 tests
+PASS input.readOnly: 39 tests
+PASS input.required: 39 tests
+PASS input.size: 62 tests
+PASS input.src: 44 tests
+PASS input.step: 38 tests
+PASS input.type: 270 tests
+PASS input.width: 8 tests
+PASS input.defaultValue (<input value>): 38 tests
+PASS input.align: 38 tests
+PASS input.useMap: 38 tests
+PASS button.title: 38 tests
+PASS button.lang: 38 tests
+PASS button.dir: 68 tests
+PASS button.className (<button class>): 38 tests
+PASS button.autofocus: 39 tests
+PASS button.hidden: 39 tests
+PASS button.accessKey: 38 tests
+PASS button.tabIndex: 26 tests
+PASS button.disabled: 39 tests
+PASS button.formAction: 44 tests
+PASS button.formEnctype: 68 tests
+PASS button.formMethod: 30 tests
+FAIL button.formMethod: setAttribute() to "poſt" assert_equals: IDL get expected "get" but got "post"
+PASS button.formMethod: 33 tests
+FAIL button.formMethod: IDL set to "poſt" assert_equals: IDL get expected "get" but got "post"
+PASS button.formMethod: 5 tests
+PASS button.formNoValidate: 39 tests
+PASS button.formTarget: 38 tests
+PASS button.name: 38 tests
+PASS button.type: 31 tests
+FAIL button.type: setAttribute() to "reſet" assert_equals: IDL get expected "submit" but got "reset"
+PASS button.type: 34 tests
+FAIL button.type: IDL set to "reſet" assert_equals: IDL get expected "submit" but got "reset"
+PASS button.type: 5 tests
+PASS button.value: 38 tests
+PASS select.title: 38 tests
+PASS select.lang: 38 tests
+PASS select.dir: 68 tests
+PASS select.className (<select class>): 38 tests
+PASS select.autofocus: 39 tests
+PASS select.hidden: 39 tests
+PASS select.accessKey: 38 tests
+PASS select.tabIndex: 26 tests
+PASS select.autocomplete: 19 tests
+PASS select.disabled: 39 tests
+PASS select.multiple: 39 tests
+PASS select.name: 38 tests
+PASS select.required: 39 tests
+PASS select.size: 65 tests
+PASS datalist.title: 38 tests
+PASS datalist.lang: 38 tests
+PASS datalist.dir: 68 tests
+PASS datalist.className (<datalist class>): 38 tests
+PASS datalist.autofocus: 39 tests
+PASS datalist.hidden: 39 tests
+PASS datalist.accessKey: 38 tests
+PASS datalist.tabIndex: 26 tests
+PASS optgroup.title: 38 tests
+PASS optgroup.lang: 38 tests
+PASS optgroup.dir: 68 tests
+PASS optgroup.className (<optgroup class>): 38 tests
+PASS optgroup.autofocus: 39 tests
+PASS optgroup.hidden: 39 tests
+PASS optgroup.accessKey: 38 tests
+PASS optgroup.tabIndex: 26 tests
+PASS optgroup.disabled: 39 tests
+PASS optgroup.label: 38 tests
+PASS option.title: 38 tests
+PASS option.lang: 38 tests
+PASS option.dir: 68 tests
+PASS option.className (<option class>): 38 tests
+PASS option.autofocus: 39 tests
+PASS option.hidden: 39 tests
+PASS option.accessKey: 38 tests
+PASS option.tabIndex: 26 tests
+PASS option.disabled: 39 tests
+PASS option.label: 19 tests
+PASS option.defaultSelected (<option selected>): 39 tests
+PASS option.value: 19 tests
+PASS textarea.title: 38 tests
+PASS textarea.lang: 38 tests
+PASS textarea.dir: 68 tests
+PASS textarea.className (<textarea class>): 38 tests
+PASS textarea.autofocus: 39 tests
+PASS textarea.hidden: 39 tests
+PASS textarea.accessKey: 38 tests
+PASS textarea.tabIndex: 26 tests
+PASS textarea.autocomplete: 19 tests
+PASS textarea.cols: 62 tests
+PASS textarea.dirName: 38 tests
+PASS textarea.disabled: 39 tests
+PASS textarea.maxLength: 64 tests
+PASS textarea.minLength: 64 tests
+PASS textarea.name: 38 tests
+PASS textarea.placeholder: 38 tests
+PASS textarea.readOnly: 39 tests
+PASS textarea.required: 39 tests
+PASS textarea.rows: 62 tests
+PASS textarea.wrap: 38 tests
+PASS output.title: 38 tests
+PASS output.lang: 38 tests
+PASS output.dir: 68 tests
+PASS output.className (<output class>): 38 tests
+PASS output.autofocus: 39 tests
+PASS output.hidden: 39 tests
+PASS output.accessKey: 38 tests
+PASS output.tabIndex: 26 tests
+PASS output.name: 38 tests
+PASS progress.title: 38 tests
+PASS progress.lang: 38 tests
+PASS progress.dir: 68 tests
+PASS progress.className (<progress class>): 38 tests
+PASS progress.autofocus: 39 tests
+PASS progress.hidden: 39 tests
+PASS progress.accessKey: 38 tests
+PASS progress.tabIndex: 26 tests
+PASS meter.title: 38 tests
+PASS meter.lang: 38 tests
+PASS meter.dir: 68 tests
+PASS meter.className (<meter class>): 38 tests
+PASS meter.autofocus: 39 tests
+PASS meter.hidden: 39 tests
+PASS meter.accessKey: 38 tests
+PASS meter.tabIndex: 26 tests
+PASS meter.value: 7 tests
+PASS meter.min: 7 tests
+PASS meter.max: 7 tests
+PASS meter.low: 7 tests
+PASS meter.high: 7 tests
+PASS meter.optimum: 7 tests
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/html/dom/reflection-metadata-expected.txt b/third_party/blink/web_tests/external/wpt/html/dom/reflection-metadata-expected.txt
index 69f32cd..bfd647b4 100644
--- a/third_party/blink/web_tests/external/wpt/html/dom/reflection-metadata-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/html/dom/reflection-metadata-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 3036 tests; 2950 PASS, 86 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 3060 tests; 2974 PASS, 86 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS head.title: 38 tests
 PASS head.lang: 38 tests
 PASS head.dir: 68 tests
@@ -35,7 +35,7 @@
 PASS link.accessKey: 38 tests
 PASS link.tabIndex: 26 tests
 PASS link.href: 44 tests
-PASS link.crossOrigin: 58 tests
+PASS link.crossOrigin: 62 tests
 PASS link.rel: 38 tests
 PASS link.as: 25 tests
 FAIL link.as: setAttribute() to "audio" assert_equals: IDL get expected "audio" but got ""
@@ -51,17 +51,18 @@
 FAIL link.as: setAttribute() to "manifest" assert_equals: IDL get expected "manifest" but got ""
 PASS link.as: 3 tests
 FAIL link.as: setAttribute() to "MANIFEST" assert_equals: IDL get expected "manifest" but got ""
+PASS link.as: setAttribute() to "manifeſt"
 FAIL link.as: setAttribute() to "object" assert_equals: IDL get expected "object" but got ""
 PASS link.as: 3 tests
 FAIL link.as: setAttribute() to "OBJECT" assert_equals: IDL get expected "object" but got ""
 FAIL link.as: setAttribute() to "report" assert_equals: IDL get expected "report" but got ""
 PASS link.as: 3 tests
 FAIL link.as: setAttribute() to "REPORT" assert_equals: IDL get expected "report" but got ""
-PASS link.as: 5 tests
+PASS link.as: 6 tests
 FAIL link.as: setAttribute() to "sharedworker" assert_equals: IDL get expected "sharedworker" but got ""
 PASS link.as: 3 tests
 FAIL link.as: setAttribute() to "SHAREDWORKER" assert_equals: IDL get expected "sharedworker" but got ""
-PASS link.as: 12 tests
+PASS link.as: 14 tests
 FAIL link.as: setAttribute() to "video" assert_equals: IDL get expected "video" but got ""
 PASS link.as: 3 tests
 FAIL link.as: setAttribute() to "VIDEO" assert_equals: IDL get expected "video" but got ""
@@ -72,7 +73,7 @@
 FAIL link.as: setAttribute() to "xslt" assert_equals: IDL get expected "xslt" but got ""
 PASS link.as: 3 tests
 FAIL link.as: setAttribute() to "XSLT" assert_equals: IDL get expected "xslt" but got ""
-PASS link.as: 23 tests
+PASS link.as: 24 tests
 FAIL link.as: IDL set to "audio" assert_equals: IDL get expected "audio" but got ""
 PASS link.as: 3 tests
 FAIL link.as: IDL set to "AUDIO" assert_equals: IDL get expected "audio" but got ""
@@ -86,17 +87,18 @@
 FAIL link.as: IDL set to "manifest" assert_equals: IDL get expected "manifest" but got ""
 PASS link.as: 3 tests
 FAIL link.as: IDL set to "MANIFEST" assert_equals: IDL get expected "manifest" but got ""
+PASS link.as: IDL set to "manifeſt"
 FAIL link.as: IDL set to "object" assert_equals: IDL get expected "object" but got ""
 PASS link.as: 3 tests
 FAIL link.as: IDL set to "OBJECT" assert_equals: IDL get expected "object" but got ""
 FAIL link.as: IDL set to "report" assert_equals: IDL get expected "report" but got ""
 PASS link.as: 3 tests
 FAIL link.as: IDL set to "REPORT" assert_equals: IDL get expected "report" but got ""
-PASS link.as: 5 tests
+PASS link.as: 6 tests
 FAIL link.as: IDL set to "sharedworker" assert_equals: IDL get expected "sharedworker" but got ""
 PASS link.as: 3 tests
 FAIL link.as: IDL set to "SHAREDWORKER" assert_equals: IDL get expected "sharedworker" but got ""
-PASS link.as: 12 tests
+PASS link.as: 14 tests
 FAIL link.as: IDL set to "video" assert_equals: IDL get expected "video" but got ""
 PASS link.as: 3 tests
 FAIL link.as: IDL set to "VIDEO" assert_equals: IDL get expected "video" but got ""
@@ -107,6 +109,7 @@
 FAIL link.as: IDL set to "xslt" assert_equals: IDL get expected "xslt" but got ""
 PASS link.as: 3 tests
 FAIL link.as: IDL set to "XSLT" assert_equals: IDL get expected "xslt" but got ""
+PASS link.as: IDL set to "xſlt"
 PASS link.media: 38 tests
 PASS link.nonce: 20 tests
 FAIL link.nonce: IDL set to "" assert_equals: getAttribute() expected "" but got "test-valueOf"
@@ -134,27 +137,27 @@
 FAIL link.referrerPolicy: setAttribute() to "same-origin" assert_equals: IDL get expected "same-origin" but got ""
 PASS link.referrerPolicy: 3 tests
 FAIL link.referrerPolicy: setAttribute() to "SAME-ORIGIN" assert_equals: IDL get expected "same-origin" but got ""
-PASS link.referrerPolicy: 5 tests
+PASS link.referrerPolicy: 6 tests
 FAIL link.referrerPolicy: setAttribute() to "strict-origin" assert_equals: IDL get expected "strict-origin" but got ""
 PASS link.referrerPolicy: 3 tests
 FAIL link.referrerPolicy: setAttribute() to "STRICT-ORIGIN" assert_equals: IDL get expected "strict-origin" but got ""
-PASS link.referrerPolicy: 5 tests
+PASS link.referrerPolicy: 7 tests
 FAIL link.referrerPolicy: setAttribute() to "strict-origin-when-cross-origin" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
 PASS link.referrerPolicy: 3 tests
 FAIL link.referrerPolicy: setAttribute() to "STRICT-ORIGIN-WHEN-CROSS-ORIGIN" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
-PASS link.referrerPolicy: 33 tests
+PASS link.referrerPolicy: 35 tests
 FAIL link.referrerPolicy: IDL set to "same-origin" assert_equals: IDL get expected "same-origin" but got ""
 PASS link.referrerPolicy: 3 tests
 FAIL link.referrerPolicy: IDL set to "SAME-ORIGIN" assert_equals: IDL get expected "same-origin" but got ""
-PASS link.referrerPolicy: 5 tests
+PASS link.referrerPolicy: 6 tests
 FAIL link.referrerPolicy: IDL set to "strict-origin" assert_equals: IDL get expected "strict-origin" but got ""
 PASS link.referrerPolicy: 3 tests
 FAIL link.referrerPolicy: IDL set to "STRICT-ORIGIN" assert_equals: IDL get expected "strict-origin" but got ""
-PASS link.referrerPolicy: 5 tests
+PASS link.referrerPolicy: 7 tests
 FAIL link.referrerPolicy: IDL set to "strict-origin-when-cross-origin" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
 PASS link.referrerPolicy: 3 tests
 FAIL link.referrerPolicy: IDL set to "STRICT-ORIGIN-WHEN-CROSS-ORIGIN" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
-PASS link.referrerPolicy: 5 tests
+PASS link.referrerPolicy: 7 tests
 PASS link.charset: 38 tests
 PASS link.rev: 38 tests
 PASS link.target: 38 tests
diff --git a/third_party/blink/web_tests/external/wpt/html/dom/reflection-misc-expected.txt b/third_party/blink/web_tests/external/wpt/html/dom/reflection-misc-expected.txt
index 6456861b..13c04358a 100644
--- a/third_party/blink/web_tests/external/wpt/html/dom/reflection-misc-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/html/dom/reflection-misc-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 4879 tests; 4862 PASS, 17 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 4891 tests; 4874 PASS, 17 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS html.title: 38 tests
 PASS html.lang: 38 tests
 PASS html.dir: 68 tests
@@ -22,7 +22,7 @@
 PASS script.noModule: 39 tests
 PASS script.charset: 38 tests
 PASS script.defer: 39 tests
-PASS script.crossOrigin: 58 tests
+PASS script.crossOrigin: 62 tests
 PASS script.nonce: 20 tests
 FAIL script.nonce: IDL set to "" assert_equals: getAttribute() expected "" but got "test-valueOf"
 FAIL script.nonce: IDL set to " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " assert_equals: getAttribute() expected " \0\x01\x02\x03\x04\x05\x06\x07 \b\t\n\v\f\r\x0e\x0f \x10\x11\x12\x13\x14\x15\x16\x17 \x18\x19\x1a\x1b\x1c\x1d\x1e\x1f  foo " but got "test-valueOf"
@@ -133,7 +133,7 @@
 PASS undefinedelement.hidden: 39 tests
 PASS undefinedelement.accessKey: 38 tests
 PASS undefinedelement.tabIndex: 26 tests
-PASS undefinedelement.enterKeyHint: 108 tests
-PASS undefinedelement.inputMode: 118 tests
+PASS undefinedelement.enterKeyHint: 114 tests
+PASS undefinedelement.inputMode: 120 tests
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/html/dom/reflection-text-expected.txt b/third_party/blink/web_tests/external/wpt/html/dom/reflection-text-expected.txt
index 777c18aa..aa7349f 100644
--- a/third_party/blink/web_tests/external/wpt/html/dom/reflection-text-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/html/dom/reflection-text-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 10134 tests; 10122 PASS, 12 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 10144 tests; 10132 PASS, 12 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS a.title: 38 tests
 PASS a.lang: 38 tests
 PASS a.dir: 68 tests
@@ -18,27 +18,27 @@
 FAIL a.referrerPolicy: setAttribute() to "same-origin" assert_equals: IDL get expected "same-origin" but got ""
 PASS a.referrerPolicy: 3 tests
 FAIL a.referrerPolicy: setAttribute() to "SAME-ORIGIN" assert_equals: IDL get expected "same-origin" but got ""
-PASS a.referrerPolicy: 5 tests
+PASS a.referrerPolicy: 6 tests
 FAIL a.referrerPolicy: setAttribute() to "strict-origin" assert_equals: IDL get expected "strict-origin" but got ""
 PASS a.referrerPolicy: 3 tests
 FAIL a.referrerPolicy: setAttribute() to "STRICT-ORIGIN" assert_equals: IDL get expected "strict-origin" but got ""
-PASS a.referrerPolicy: 5 tests
+PASS a.referrerPolicy: 7 tests
 FAIL a.referrerPolicy: setAttribute() to "strict-origin-when-cross-origin" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
 PASS a.referrerPolicy: 3 tests
 FAIL a.referrerPolicy: setAttribute() to "STRICT-ORIGIN-WHEN-CROSS-ORIGIN" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
-PASS a.referrerPolicy: 33 tests
+PASS a.referrerPolicy: 35 tests
 FAIL a.referrerPolicy: IDL set to "same-origin" assert_equals: IDL get expected "same-origin" but got ""
 PASS a.referrerPolicy: 3 tests
 FAIL a.referrerPolicy: IDL set to "SAME-ORIGIN" assert_equals: IDL get expected "same-origin" but got ""
-PASS a.referrerPolicy: 5 tests
+PASS a.referrerPolicy: 6 tests
 FAIL a.referrerPolicy: IDL set to "strict-origin" assert_equals: IDL get expected "strict-origin" but got ""
 PASS a.referrerPolicy: 3 tests
 FAIL a.referrerPolicy: IDL set to "STRICT-ORIGIN" assert_equals: IDL get expected "strict-origin" but got ""
-PASS a.referrerPolicy: 5 tests
+PASS a.referrerPolicy: 7 tests
 FAIL a.referrerPolicy: IDL set to "strict-origin-when-cross-origin" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
 PASS a.referrerPolicy: 3 tests
 FAIL a.referrerPolicy: IDL set to "STRICT-ORIGIN-WHEN-CROSS-ORIGIN" assert_equals: IDL get expected "strict-origin-when-cross-origin" but got ""
-PASS a.referrerPolicy: 5 tests
+PASS a.referrerPolicy: 7 tests
 PASS a.href: 44 tests
 PASS a.coords: 38 tests
 PASS a.charset: 38 tests
diff --git a/third_party/blink/web_tests/external/wpt/html/dom/reflection.js b/third_party/blink/web_tests/external/wpt/html/dom/reflection.js
index fca9e43..a5f7b3f 100644
--- a/third_party/blink/web_tests/external/wpt/html/dom/reflection.js
+++ b/third_party/blink/web_tests/external/wpt/html/dom/reflection.js
@@ -685,10 +685,14 @@
                 domTests.push(data.keywords[i].toUpperCase());
                 idlTests.push(data.keywords[i].toUpperCase());
             }
-            if (data.keywords[i] != data.keywords[i].replace(/k/g, "\u212A")) {
+            if (data.keywords[i].indexOf("k") != -1) {
                 domTests.push(data.keywords[i].replace(/k/g, "\u212A"));
                 idlTests.push(data.keywords[i].replace(/k/g, "\u212A"));
             }
+            if (data.keywords[i].indexOf("s") != -1) {
+                domTests.push(data.keywords[i].replace(/s/g, "\u017F"));
+                idlTests.push(data.keywords[i].replace(/s/g, "\u017F"));
+            }
         }
 
         // Per spec, the expected DOM values are the same as the value we set
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/the-input-element/input-stepdown.html b/third_party/blink/web_tests/external/wpt/html/semantics/forms/the-input-element/input-stepdown.html
index 9ce5e5e..a970b53 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/forms/the-input-element/input-stepdown.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/the-input-element/input-stepdown.html
@@ -1,27 +1,18 @@
 <!DOCTYPE HTML>
 <html>
- <head>
-  <title>Forms</title>
-  <script src="/resources/testharness.js"></script>
-  <script src="/resources/testharnessreport.js"></script>
- </head>
- <body>
-  <p>
-    <h3>input_stepDown</h3>
-  </p>
+<title>Forms</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<h3>input_stepDown</h3>
+<input type='number' id='input_number'>
+<input type="number" id="number_input" min="300" step="1" value="200">
+<input type="date" id="date_input"  min="2011-02-10" step="1" value="2010-02-10">
+<input type="datetime-local" id="dtl_input" min="2011-02-10T20:13" step="1" value="2010-02-10T20:13">
+<input type="month" id="month_input" min="2011-02" step="1" value="2010-02">
+<input type="time" id="time_input" min="21:13" step="60" value="20:13">
+<input type="week" id="week_input" min="2011-W02" step="1" value="2010-W02">
 
-  <hr>
-
-  <div id="log"></div>
-
-  <form method="post"
-      enctype="application/x-www-form-urlencoded"
-      action=""
-      name="input_form">
-  <p><input type='number' id='input_number'></p>
-  </form>
-
-  <script>
+<script>
     var input_number = document.getElementById("input_number");
     input_number.max = "30";
     input_number.step = "3";
@@ -38,7 +29,19 @@
       });
     }
 
-  </script>
+   function testStepDownOverflow(id, value, type) {
+      test(function() {
+        var input = document.getElementById(id);
+        input.stepDown();
+        assert_equals(input.value, value, "value shouldn't change.");
+      }, "Calling stepDown() on input - " + type + " - where value < min should not modify value.");
+    }
 
- </body>
+    testStepDownOverflow("number_input", "200", "number");
+    testStepDownOverflow("date_input", "2010-02-10", "date");
+    testStepDownOverflow("dtl_input", "2010-02-10T20:13", "datetime-local");
+    testStepDownOverflow("month_input", "2010-02", "month");
+    testStepDownOverflow("time_input", "20:13", "time");
+    testStepDownOverflow("week_input", "2010-W02", "week");
+</script>
 </html>
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/the-input-element/input-stepup.html b/third_party/blink/web_tests/external/wpt/html/semantics/forms/the-input-element/input-stepup.html
index 4745706..8f5888a 100644
--- a/third_party/blink/web_tests/external/wpt/html/semantics/forms/the-input-element/input-stepup.html
+++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/the-input-element/input-stepup.html
@@ -1,27 +1,18 @@
 <!DOCTYPE HTML>
 <html>
- <head>
-  <title>Forms</title>
-  <script src="/resources/testharness.js"></script>
-  <script src="/resources/testharnessreport.js"></script>
- </head>
- <body>
-  <p>
-    <h3>input_stepUp</h3>
-  </p>
+<title>Forms</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<h3>input_stepUp</h3>
+<input type='number' id='input_number'> <br/>
+<input type="number" id="number_input" max="100" step="1" value="200">
+<input type="date" id="date_input"  max="2009-02-10" step="1" value="2010-02-10">
+<input type="datetime-local" id="dtl_input" max="2009-02-10T20:13" step="1" value="2010-02-10T20:13">
+<input type="month" id="month_input" max="2009-02" step="1" value="2010-02">
+<input type="time" id="time_input" max="19:13" step="60" value="20:13">
+<input type="week" id="week_input" max="2009-W02" step="1" value="2010-W02">
 
-  <hr>
-
-  <div id="log"></div>
-
-  <form method="post"
-      enctype="application/x-www-form-urlencoded"
-      action=""
-      name="input_form">
-  <p><input type='number' id='input_number'></p>
-  </form>
-
-  <script>
+<script>
 
     var input_number = document.getElementById("input_number");
     input_number.max = "30";
@@ -39,7 +30,19 @@
       });
     }
 
-  </script>
+    function testStepUpOverflow(id, value, type) {
+      test(function() {
+        var input = document.getElementById(id);
+        input.stepUp();
+        assert_equals(input.value, value, "value shouldn't change.");
+      }, "Calling stepUp() on input -" + type + "- where value > max should not modify value.");
+    }
 
- </body>
+    testStepUpOverflow("number_input", "200", "number");
+    testStepUpOverflow("date_input", "2010-02-10", "date");
+    testStepUpOverflow("dtl_input", "2010-02-10T20:13", "datetime-local");
+    testStepUpOverflow("month_input", "2010-02", "month");
+    testStepUpOverflow("time_input", "20:13", "time");
+    testStepUpOverflow("week_input", "2010-W02", "week");
+</script>
 </html>
diff --git a/third_party/blink/web_tests/external/wpt/largest-contentful-paint/idlharness-expected.txt b/third_party/blink/web_tests/external/wpt/largest-contentful-paint/idlharness-expected.txt
deleted file mode 100644
index 5ebae7c6..0000000
--- a/third_party/blink/web_tests/external/wpt/largest-contentful-paint/idlharness-expected.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-This is a testharness.js-based test.
-PASS idl_test setup
-PASS idl_test validation
-PASS Element includes ParentNode: member names are unique
-PASS Element includes NonDocumentTypeChildNode: member names are unique
-PASS Element includes ChildNode: member names are unique
-PASS Element includes Slotable: member names are unique
-PASS LargestContentfulPaint interface: existence and properties of interface object
-PASS LargestContentfulPaint interface object length
-PASS LargestContentfulPaint interface object name
-PASS LargestContentfulPaint interface: existence and properties of interface prototype object
-PASS LargestContentfulPaint interface: existence and properties of interface prototype object's "constructor" property
-PASS LargestContentfulPaint interface: existence and properties of interface prototype object's @@unscopables property
-PASS LargestContentfulPaint interface: attribute renderTime
-PASS LargestContentfulPaint interface: attribute loadTime
-PASS LargestContentfulPaint interface: attribute size
-PASS LargestContentfulPaint interface: attribute id
-PASS LargestContentfulPaint interface: attribute url
-PASS LargestContentfulPaint interface: attribute element
-PASS LargestContentfulPaint interface: operation toJSON()
-PASS LargestContentfulPaint must be primary interface of lcp
-PASS Stringification of lcp
-PASS LargestContentfulPaint interface: lcp must inherit property "renderTime" with the proper type
-PASS LargestContentfulPaint interface: lcp must inherit property "loadTime" with the proper type
-PASS LargestContentfulPaint interface: lcp must inherit property "size" with the proper type
-PASS LargestContentfulPaint interface: lcp must inherit property "id" with the proper type
-PASS LargestContentfulPaint interface: lcp must inherit property "url" with the proper type
-PASS LargestContentfulPaint interface: lcp must inherit property "element" with the proper type
-PASS LargestContentfulPaint interface: lcp must inherit property "toJSON()" with the proper type
-FAIL LargestContentfulPaint interface: default toJSON operation on lcp Type DOMHighResTimeStamp not found
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/largest-contentful-paint/idlharness.html b/third_party/blink/web_tests/external/wpt/largest-contentful-paint/idlharness.html
index 273fef8..84d1c7f 100644
--- a/third_party/blink/web_tests/external/wpt/largest-contentful-paint/idlharness.html
+++ b/third_party/blink/web_tests/external/wpt/largest-contentful-paint/idlharness.html
@@ -10,7 +10,7 @@
 
 idl_test(
   ['largest-contentful-paint'],
-  ['performance-timeline', 'dom'],
+  ['performance-timeline', 'dom', 'hr-time'],
   async (idl_array, t) => {
     idl_array.add_objects({
       LargestContentfulPaint: ['lcp']
diff --git a/third_party/blink/web_tests/external/wpt/loading/lazyload/META.yml b/third_party/blink/web_tests/external/wpt/loading/lazyload/META.yml
new file mode 100644
index 0000000..cf46037b
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/loading/lazyload/META.yml
@@ -0,0 +1,4 @@
+spec: https://github.com/whatwg/html/pull/3752
+suggested_reviewers:
+  - domfarolino
+  - rwlbuis
diff --git a/third_party/blink/web_tests/external/wpt/loading/lazyload/below-viewport-image-loading-lazy-load-event.tentative-expected.txt b/third_party/blink/web_tests/external/wpt/loading/lazyload/below-viewport-image-loading-lazy-load-event.tentative-expected.txt
new file mode 100644
index 0000000..9d32e7d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/loading/lazyload/below-viewport-image-loading-lazy-load-event.tentative-expected.txt
@@ -0,0 +1,11 @@
+main frame - DidStartNavigation
+main frame - ReadyToCommitNavigation
+main frame - didCommitLoadForFrame
+main frame - didReceiveTitle: Below-viewport loading=lazy images do not block the window load event when scrolled into viewport
+main frame - didFinishDocumentLoadForFrame
+main frame - didHandleOnloadEventsForFrame
+main frame - didFinishLoadForFrame
+This is a testharness.js-based test.
+FAIL Below-viewport loading=lazy images do not block the window load event when scrolled into viewport assert_true: The window load event should fire before the below-viewport loading=lazy images load expected true got false
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/loading/lazyload/below-viewport-image-loading-lazy-load-event.tentative.html b/third_party/blink/web_tests/external/wpt/loading/lazyload/below-viewport-image-loading-lazy-load-event.tentative.html
new file mode 100644
index 0000000..a42b0f6
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/loading/lazyload/below-viewport-image-loading-lazy-load-event.tentative.html
@@ -0,0 +1,73 @@
+<!DOCTYPE html>
+<head>
+  <title>Below-viewport loading=lazy images do not block the window load event
+         when scrolled into viewport</title>
+  <link rel="author" title="Rob Buis" href="mailto:rbuis@igalia.com">
+  <link rel="author" title="Dom Farolino" href="mailto:dom@chromium.org">
+  <script src="/resources/testharness.js"></script>
+  <script src="/resources/testharnessreport.js"></script>
+  <script src="common.js"></script>
+</head>
+
+<body>
+  <!-- When this image loads, we will scroll the below-viewport loading=lazy
+       images into the viewport. This happens before the window load event is
+       fired -->
+  <img id="scroll_trigger"
+       src="resources/image.png?scroll-trigger&pipe=trickle(d1)"
+       onload="scroll_trigger_img.resolve();" onerror="scroll_trigger_img.reject();">
+  <!-- This image blocks the window load event for 2 seconds -->
+  <img src="resources/image.png?window-load-blocking&pipe=trickle(d2)">
+
+  <div style="height:1000vh"></div>
+  <!-- These images must load because they intersect the viewport, but they must
+       not block the window load event, because they are loading=lazy -->
+  <img id="visible"
+       src="resources/image.png?visible&pipe=trickle(d3)" loading="lazy"
+       onload="visible_img.resolve();" onerror="visible_img.reject();">
+  <img id="visibility_hidden" style="visibility:hidden;"
+       src="resources/image.png?visibility_hidden&pipe=trickle(d3)" loading="lazy"
+       onload="visibility_hidden_img.resolve();" onerror="visibility_hidden_img.reject();">
+</body>
+
+<!--
+Marked as tentative until https://github.com/whatwg/html/pull/3752 is landed.
+-->
+
+<script>
+  const scroll_trigger_img = new ElementLoadPromise("visible");
+  const visible_img = new ElementLoadPromise("visible");
+  const visibility_hidden_img = new ElementLoadPromise("visibility_hidden");
+
+  async_test(t => {
+    let has_window_loaded = false;
+
+    scroll_trigger_img.promise
+      .then(t.step_func(() => {
+        assert_false(has_window_loaded,
+                     "The scroll_trigger image should load before the window " +
+                     "load event fires");
+        visibility_hidden_img.element().scrollIntoView();
+    }))
+    .catch(t.unreached_func("The scroll_trigger image should load"));
+
+    window.addEventListener("load", t.step_func(() => {
+      has_window_loaded = true;
+    }));
+
+    Promise.all([visible_img.promise, visibility_hidden_img.promise])
+      .then(t.step_func_done(() => {
+        assert_true(has_window_loaded,
+                    "The window load event should fire before the " +
+                    "below-viewport loading=lazy images load");
+        assert_true(visible_img.element().complete,
+                    "The below-viewport loading=lazy visible image is complete");
+        assert_true(visibility_hidden_img.element().complete,
+                    "The below-viewport loading=lazy visibility:hidden image is complete");
+      }))
+      .catch(t.unreached_func("The images should load successfully"));
+
+  }, "Below-viewport loading=lazy images do not block the window load event when " +
+     "scrolled into viewport");
+</script>
+
diff --git a/third_party/blink/web_tests/external/wpt/loading/lazyload/disconnected-image-loading-lazy.tentative.html b/third_party/blink/web_tests/external/wpt/loading/lazyload/disconnected-image-loading-lazy.tentative.html
index c3b72b26..fe6d79f 100644
--- a/third_party/blink/web_tests/external/wpt/loading/lazyload/disconnected-image-loading-lazy.tentative.html
+++ b/third_party/blink/web_tests/external/wpt/loading/lazyload/disconnected-image-loading-lazy.tentative.html
@@ -3,28 +3,30 @@
 <script src="/resources/testharnessreport.js"></script>
 <body>
 <script>
-async_test(function(t) {
+async_test(t => {
   x = new Image();
   x.loading = "auto";
   x.src = "resources/image.png?auto";
-  x.onload = e => {
-    t.step(function() {
-      t.step_func_done();
-    });
-  };
-  t.step_timeout(function() { t.done(); }, 2000);
+  x.onload = t.step_func_done();
+  t.step_timeout(t.unreached_func("Disconnected loading=auto image loads " +
+                                  "successfully, and doesn't timeout"), 2000);
 }, "loading=auto for disconnected image");
 
-async_test(function(t) {
+async_test(t => {
+  x = new Image();
+  x.loading = "eager";
+  x.src = "resources/image.png?eager";
+  x.onload = t.step_func_done();
+  t.step_timeout(t.unreached_func("Disconnected loading=eager image loads " +
+                                  "successfully, and doesn't timeout"), 2000);
+}, "loading=eager for disconnected image");
+
+async_test(t => {
   x = new Image();
   x.loading = "lazy";
   x.src = "resources/image.png?lazy";
-  x.onload = e => {
-    t.step(function() {
-      t.unreached_func("Disconnected image with loading=lazy should be loaded lazily.");
-    });
-  };
-  t.step_timeout(function() { t.done(); }, 2000);
+  x.onload = t.unreached_func("Disconnected loading=lazy image loads lazily.");
+  t.step_timeout(t.step_func_done(), 2000);
 }, "loading=lazy for disconnected image");
 </script>
 </body>
diff --git a/third_party/blink/web_tests/external/wpt/loading/lazyload/image-loading-lazy-load-event.tentative-expected.txt b/third_party/blink/web_tests/external/wpt/loading/lazyload/image-loading-lazy-load-event.tentative-expected.txt
new file mode 100644
index 0000000..dcab815
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/loading/lazyload/image-loading-lazy-load-event.tentative-expected.txt
@@ -0,0 +1,11 @@
+main frame - DidStartNavigation
+main frame - ReadyToCommitNavigation
+main frame - didCommitLoadForFrame
+main frame - didReceiveTitle: In-viewport loading=lazy images do not block the window load event
+main frame - didFinishDocumentLoadForFrame
+main frame - didHandleOnloadEventsForFrame
+main frame - didFinishLoadForFrame
+This is a testharness.js-based test.
+FAIL In-viewport loading=lazy images do not block the window load event assert_true: The window load event should fire before the in-viewport loading=lazy images load expected true got false
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/loading/lazyload/image-loading-lazy-load-event.tentative.html b/third_party/blink/web_tests/external/wpt/loading/lazyload/image-loading-lazy-load-event.tentative.html
new file mode 100644
index 0000000..9e56a31
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/loading/lazyload/image-loading-lazy-load-event.tentative.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<head>
+  <title>In-viewport loading=lazy images do not block the window load event</title>
+  <link rel="author" title="Rob Buis" href="mailto:rbuis@igalia.com">
+  <link rel="author" title="Dom Farolino" href="mailto:dom@chromium.org">
+  <script src="/resources/testharness.js"></script>
+  <script src="/resources/testharnessreport.js"></script>
+  <script src="common.js"></script>
+</head>
+
+<body>
+  <!-- This image blocks the window load event for 1 second -->
+  <img src="resources/image.png?window-load-blocking&pipe=trickle(d1)">
+
+  <!-- These images must load because they intersect the viewport, but they must
+       not block the window load event, because they are loading=lazy -->
+  <img id="visible"
+       src="resources/image.png?visible&pipe=trickle(d3)" loading="lazy"
+       onload="visible_img.resolve();" onerror="visible_img.reject();">
+  <img id="visibility_hidden" style="visibility:hidden;"
+       src="resources/image.png?visibility_hidden&pipe=trickle(d3)" loading="lazy"
+       onload="visibility_hidden_img.resolve();" onerror="visibility_hidden_img.reject();">
+</body>
+
+<!--
+Marked as tentative until https://github.com/whatwg/html/pull/3752 is landed.
+-->
+
+<script>
+  const visible_img = new ElementLoadPromise("visible");
+  const visibility_hidden_img = new ElementLoadPromise("visibility_hidden");
+
+  async_test(t => {
+
+    let has_window_loaded = false;
+    window.addEventListener("load", t.step_func(() => {
+      has_window_loaded = true;
+    }));
+
+    Promise.all([visible_img.promise, visibility_hidden_img.promise])
+      .then(t.step_func_done(() => {
+        assert_true(has_window_loaded,
+                    "The window load event should fire before the " +
+                    "in-viewport loading=lazy images load");
+        assert_true(visible_img.element().complete,
+                    "The in-viewport loading=lazy visible image is complete");
+        assert_true(visibility_hidden_img.element().complete,
+                    "The in-viewport loading=lazy visibility:hidden image is " +
+                    "complete");
+      }))
+      .catch(t.unreached_func("The images should load successfully"));
+
+  }, "In-viewport loading=lazy images do not block the window load event");
+</script>
+
diff --git a/third_party/blink/web_tests/external/wpt/loading/lazyload/image-loading-lazy-multicol-tentative.html b/third_party/blink/web_tests/external/wpt/loading/lazyload/image-loading-lazy-multicol.tentative.html
similarity index 100%
rename from third_party/blink/web_tests/external/wpt/loading/lazyload/image-loading-lazy-multicol-tentative.html
rename to third_party/blink/web_tests/external/wpt/loading/lazyload/image-loading-lazy-multicol.tentative.html
diff --git a/third_party/blink/web_tests/external/wpt/loading/lazyload/image-loading-lazy.tentative.html b/third_party/blink/web_tests/external/wpt/loading/lazyload/image-loading-lazy.tentative.html
index e593a58..04625e0 100644
--- a/third_party/blink/web_tests/external/wpt/loading/lazyload/image-loading-lazy.tentative.html
+++ b/third_party/blink/web_tests/external/wpt/loading/lazyload/image-loading-lazy.tentative.html
@@ -1,11 +1,11 @@
 <!DOCTYPE html>
 <head>
-  <title>Images with loading='lazy' load when in the viewport</title>
+  <title>Images with loading='lazy' load only when in the viewport</title>
   <link rel="author" title="Scott Little" href="mailto:sclittle@chromium.org">
+  <link rel="author" title="Dom Farolino" href="mailto:dom@chromium.org">
   <link rel="help" href="https://github.com/scott-little/lazyload">
   <script src="/resources/testharness.js"></script>
   <script src="/resources/testharnessreport.js"></script>
-  <script src="common.js"></script>
 </head>
 
 <!--
@@ -13,43 +13,40 @@
 -->
 
 <script>
-  const t = async_test("Test that images with loading='lazy' load once they enter the viewport.");
+  const t = async_test("Images with loading='lazy' load only when in the viewport");
 
   let has_in_viewport_loaded = false;
-  let has_window_loaded = false;
+  let has_window_load_fired = false;
 
-  const in_viewport_img_onload = t.step_func(function() {
-    assert_false(has_in_viewport_loaded, "The in_viewport element should load only once.");
+  const in_viewport_img_onload = t.step_func(() => {
+    assert_false(has_in_viewport_loaded,
+                 "The in_viewport element should load only once.");
     has_in_viewport_loaded = true;
+    assert_true(document.getElementById("in_viewport").complete);
+    document.getElementById("below_viewport").scrollIntoView();
   });
 
-  window.addEventListener("load", t.step_func(function() {
-    assert_true(has_in_viewport_loaded, "The in_viewport element should have loaded before window.load().");
-    assert_true(document.getElementById("in_viewport").complete);
-    assert_false(has_window_loaded, "The window.load() event should only fire once.");
-    has_window_loaded = true;
-    document.getElementById("below_viewport").scrollIntoView();
+  window.addEventListener("load", t.step_func(() => {
+    has_window_load_fired = true;
   }));
 
-  const below_viewport_img_onload = t.step_func_done(function() {
-    assert_true(is_image_fully_loaded(
-                  document.getElementById("below_viewport"),
-                  document.getElementById("in_viewport")));
-    assert_true(has_window_loaded, "The window.load() event should have fired before below_viewport loaded.");
+  const below_viewport_img_onload = t.step_func_done(() => {
+    assert_true(has_in_viewport_loaded,
+                "The below-viewport image should not load until it has been " +
+                "scrolled into viewport, after the in-viewport image loads");
+    assert_true(has_window_load_fired,
+                "Below-viewport loading=lazy images should not block the " +
+                "window load event from firing");
   });
 </script>
 
 <body>
-  <img id="in_viewport" src="resources/image.png?first" loading="lazy" onload="in_viewport_img_onload();">
-  <div style="height:10000px;"></div>
-  <img id="below_viewport" src="resources/image.png?second" loading="lazy" onload="below_viewport_img_onload();">
-
-  <!--
-    This async script loads very slowly in order to ensure that, if the
-    below_viewport element has started loading, it has a chance to finish
-    loading before window.load() happens, so that the test will dependably fail
-    in that case instead of potentially passing depending on how long different
-    resource fetches take.
-  -->
-  <script async src="/common/slow.py"></script>
+  <!-- |in_viewport| takes 2 seconds to load, so that in browsers that don't
+       support lazy loading, |below_viewport| finishes before |in_viewport|, and
+       the test will dependably fail without relying on a timeout. -->
+  <img id="in_viewport" loading="lazy" src="resources/image.png?first&pipe=trickle(d2)"
+       onload="in_viewport_img_onload();">
+  <div style="height:1000vh;"></div>
+  <img id="below_viewport" loading="lazy" src="resources/image.png?second"
+       onload="below_viewport_img_onload();">
 </body>
diff --git a/third_party/blink/web_tests/external/wpt/loading/lazyload/invisible-lazy-image.tentative.html b/third_party/blink/web_tests/external/wpt/loading/lazyload/invisible-lazy-image.tentative.html
deleted file mode 100644
index 94f0dbf..0000000
--- a/third_party/blink/web_tests/external/wpt/loading/lazyload/invisible-lazy-image.tentative.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE html>
-<head>
-  <title>Test behavior of in viewport invisible lazy images</title>
-  <link rel="author" title="Rob Buis" href="mailto:rbuis@igalia.com">
-  <script src="/resources/testharness.js"></script>
-  <script src="/resources/testharnessreport.js"></script>
-  <script src="common.js"></script>
-</head>
-
-<body>
-  <!-- These two images should load, the latter not blocking the window load event -->
-  <img id="expected" src='resources/image.png?expected&pipe=trickle(d1)'>
-  <img id="visibility_hidden" style="visibility:hidden;"
-       src='resources/image.png?visibility_hidden&pipe=trickle(d2)' loading='lazy'
-       onload="visibility_hidden_img.resolve();" onerror="visibility_hidden_img.reject();">
-
-  <!-- These images should not load at all -->
-  <img id="display_none" style="display:none;" src='resources/image.png?display_none'
-       loading='lazy'
-       onload="display_none_img.resolve();" onerror="display_none_img.reject();">
-  <img id="attribute_hidden" hidden src='resources/image.png?attribute_hidden' loading='lazy'
-       onload="attribute_hidden_img.resolve();" onerror="attribute_hidden_img.reject();">
-  <img id="js_display_none" src='resources/image.png?js_display_none' loading='lazy'
-       onload="js_display_none_img.resolve();" onerror="js_display_none_img.reject();">
-  <script>
-    document.getElementById("js_display_none").style = 'display:none;';
-  </script>
-</body>
-
-<!--
-Marked as tentative until https://github.com/whatwg/html/pull/3752 is landed.
--->
-
-<script>
-  const expected = document.getElementById("expected");
-  const visibility_hidden_img = new ElementLoadPromise("visibility_hidden");
-  const display_none_img = new ElementLoadPromise("display_none");
-  const attribute_hidden_img = new ElementLoadPromise("attribute_hidden");
-  const js_display_none_img = new ElementLoadPromise("js_display_none");
-
-  let has_window_loaded = false;
-
-  async_test(t => {
-    window.addEventListener("load", t.step_func(() => {
-      has_window_loaded = true;
-    }));
-
-    const unreached_not_rendered_img_func =
-      t.unreached_func("The not-rendered in-viewport loading=lazy images " +
-                       "should not have attempted to load.");
-
-    display_none_img.promise
-      .then(unreached_not_rendered_img_func)
-      .catch(unreached_not_rendered_img_func);
-
-    attribute_hidden_img.promise
-      .then(unreached_not_rendered_img_func)
-      .catch(unreached_not_rendered_img_func);
-
-    js_display_none_img.promise
-      .then(unreached_not_rendered_img_func)
-      .catch(unreached_not_rendered_img_func);
-
-    visibility_hidden_img.promise.then(
-      t.step_func_done(() => {
-        assert_true(is_image_fully_loaded(visibility_hidden_img.element(), expected),
-                    "The loading=lazy visibility:hidden image is equivalent " +
-                    "to the expected image.");
-        assert_true(has_window_loaded,
-                    "The loading=lazy visibility:hidden image does not block " +
-                    "the window load event, and finishes loading after the " +
-                    "window load event fires.");
-      })
-    ).catch(t.unreached_func("The loading=lazy visibility:hidden image " +
-                             "should load successfully."));
-  }, "Test behavior of in viewport invisible lazy images");
-</script>
-
diff --git a/third_party/blink/web_tests/external/wpt/loading/lazyload/not-rendered-below-viewport-image-loading-lazy.tentative.html b/third_party/blink/web_tests/external/wpt/loading/lazyload/not-rendered-below-viewport-image-loading-lazy.tentative.html
new file mode 100644
index 0000000..0c40d7db
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/loading/lazyload/not-rendered-below-viewport-image-loading-lazy.tentative.html
@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+<head>
+  <title>Below-viewport loading=lazy not-rendered images should never load,
+         even when scrolled into view</title>
+  <link rel="author" title="Rob Buis" href="mailto:rbuis@igalia.com">
+  <link rel="author" title="Dom Farolino" href="mailto:dom@chromium.org">
+  <script src="/resources/testharness.js"></script>
+  <script src="/resources/testharnessreport.js"></script>
+  <script src="common.js"></script>
+</head>
+
+<body>
+  <!-- These images must not attempt to load when scrolled into the
+       viewport -->
+  <img id="display_none" style="display:none;" src="resources/image.png?2" loading="lazy"
+       onload="display_none_img.resolve();" onerror="display_none_img.reject();">
+  <img id="attribute_hidden" hidden src="resources/image.png?3" loading="lazy"
+       onload="attribute_hidden_img.resolve();" onerror="attribute_hidden_img.reject();">
+  <img id="js_display_none" src="resources/image.png?4" loading="lazy"
+       onload="js_display_none_img.resolve();" onerror="js_display_none_img.reject();">
+  <script>
+    document.getElementById("js_display_none").style = 'display:none;';
+  </script>
+
+  <!-- Later in the test we'll scroll to this div, instead of the above images,
+       since due to them not being rendered, they cannot be scrolled to -->
+  <div id="rendered_div"></div>
+</body>
+
+<!--
+Marked as tentative until https://github.com/whatwg/html/pull/3752 is landed.
+-->
+
+<script>
+  const display_none_img = new ElementLoadPromise("display_none");
+  const attribute_hidden_img = new ElementLoadPromise("attribute_hidden");
+  const js_display_none_img = new ElementLoadPromise("js_display_none");
+  const rendered_div_element = document.querySelector('#rendered_div');
+
+  async_test(t => {
+    window.addEventListener("load", t.step_func(() => {
+      rendered_div.scrollIntoView();
+    }));
+
+    const unreached_not_rendered_img_func =
+      t.unreached_func("The not-rendered below-viewport loading=lazy images " +
+                       "should not attempt to load.");
+
+    display_none_img.promise
+      .then(unreached_not_rendered_img_func)
+      .catch(unreached_not_rendered_img_func);
+
+    attribute_hidden_img.promise
+      .then(unreached_not_rendered_img_func)
+      .catch(unreached_not_rendered_img_func);
+
+    js_display_none_img.promise
+      .then(unreached_not_rendered_img_func)
+      .catch(unreached_not_rendered_img_func);
+
+    // If none of the above images load after being scrolled to within the below
+    // timeout, the test passes.
+    t.step_timeout(t.done, 2000);
+  }, "Below-viewport loading=lazy not-rendered images should never load, " +
+     "even when scrolled into view");
+</script>
+
diff --git a/third_party/blink/web_tests/external/wpt/loading/lazyload/not-rendered-image-loading-lazy.tentative.html b/third_party/blink/web_tests/external/wpt/loading/lazyload/not-rendered-image-loading-lazy.tentative.html
new file mode 100644
index 0000000..fafd668e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/loading/lazyload/not-rendered-image-loading-lazy.tentative.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<head>
+  <title>In-viewport loading=lazy not-rendered images should never load</title>
+  <link rel="author" title="Rob Buis" href="mailto:rbuis@igalia.com">
+  <link rel="author" title="Dom Farolino" href="mailto:dom@chromium.org">
+  <script src="/resources/testharness.js"></script>
+  <script src="/resources/testharnessreport.js"></script>
+  <script src="common.js"></script>
+</head>
+
+<body>
+  <!-- These images must not attempt to load -->
+  <img id="display_none" style="display:none;" src="resources/image.png?2" loading="lazy"
+       onload="display_none_img.resolve();" onerror="display_none_img.reject();">
+  <img id="attribute_hidden" hidden src="resources/image.png?3" loading="lazy"
+       onload="attribute_hidden_img.resolve();" onerror="attribute_hidden_img.reject();">
+  <img id="js_display_none" src="resources/image.png?4" loading="lazy"
+       onload="js_display_none_img.resolve();" onerror="js_display_none_img.reject();">
+  <script>
+    document.getElementById("js_display_none").style = 'display:none;';
+  </script>
+</body>
+
+<!--
+Marked as tentative until https://github.com/whatwg/html/pull/3752 is landed.
+-->
+
+<script>
+  const display_none_img = new ElementLoadPromise("display_none");
+  const attribute_hidden_img = new ElementLoadPromise("attribute_hidden");
+  const js_display_none_img = new ElementLoadPromise("js_display_none");
+
+  async_test(t => {
+    const unreached_not_rendered_img_func =
+      t.unreached_func("The not-rendered in-viewport loading=lazy images " +
+                       "should not attempt to load.");
+
+    display_none_img.promise
+      .then(unreached_not_rendered_img_func)
+      .catch(unreached_not_rendered_img_func);
+
+    attribute_hidden_img.promise
+      .then(unreached_not_rendered_img_func)
+      .catch(unreached_not_rendered_img_func);
+
+    js_display_none_img.promise
+      .then(unreached_not_rendered_img_func)
+      .catch(unreached_not_rendered_img_func);
+
+    t.step_timeout(t.done, 2000);
+  }, "In-viewport loading=lazy not-rendered images should never load");
+</script>
+
diff --git a/third_party/blink/web_tests/external/wpt/loading/lazyload/original-base-url-applied-2-tentative-expected.txt b/third_party/blink/web_tests/external/wpt/loading/lazyload/original-base-url-applied-2-tentative-expected.txt
index 9ef2347..9503477 100644
--- a/third_party/blink/web_tests/external/wpt/loading/lazyload/original-base-url-applied-2-tentative-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/loading/lazyload/original-base-url-applied-2-tentative-expected.txt
@@ -6,6 +6,6 @@
 main frame - didHandleOnloadEventsForFrame
 main frame - didFinishLoadForFrame
 This is a testharness.js-based test.
-FAIL Test that when deferred img is loaded, it uses the parse time base URL. assert_unreached: The image request should not load relative to the current (incorrect) base URL. Reached unreachable code
+FAIL Deferred images with loading='lazy' use the original base URL specified at the parse time assert_unreached: The image request should not load relative to the current (incorrect) base URL. Reached unreachable code
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/loading/lazyload/original-base-url-applied-2-tentative.html b/third_party/blink/web_tests/external/wpt/loading/lazyload/original-base-url-applied-2-tentative.html
index 1eb8ff46..debfbad 100644
--- a/third_party/blink/web_tests/external/wpt/loading/lazyload/original-base-url-applied-2-tentative.html
+++ b/third_party/blink/web_tests/external/wpt/loading/lazyload/original-base-url-applied-2-tentative.html
@@ -30,13 +30,21 @@
 
     below_viewport_img_promise.promise.then(
       t.step_func_done(function() {
-        assert_true(has_window_loaded);
-        assert_true(below_viewport_img_promise.element().complete);
-        assert_greater_than(below_viewport_img_promise.element().naturalWidth, 0);
+        assert_true(has_window_loaded,
+                    "Below-viewport loading=lazy images do not block the " +
+                    "window load event");
+        assert_true(below_viewport_img_promise.element().complete,
+                    "The loading=lazy image should be considered complete " +
+                    "upon load.");
+        assert_greater_than(below_viewport_img_promise.element().naturalWidth,
+                            0,
+                            "The loading=lazy should have non-zero width " +
+                            "upon loading");
       })
     ).catch(t.unreached_func("The image request should not load relative to " +
                              "the current (incorrect) base URL."));
-  }, "Test that when deferred img is loaded, it uses the parse time base URL.");
+  }, "Deferred images with loading='lazy' use the original base URL " +
+     "specified at the parse time");
 </script>
 
 <body>
diff --git a/third_party/blink/web_tests/external/wpt/loading/lazyload/original-base-url-applied-iframe-tentative.html b/third_party/blink/web_tests/external/wpt/loading/lazyload/original-base-url-applied-iframe-tentative.html
index 01c0b47..0734b33 100644
--- a/third_party/blink/web_tests/external/wpt/loading/lazyload/original-base-url-applied-iframe-tentative.html
+++ b/third_party/blink/web_tests/external/wpt/loading/lazyload/original-base-url-applied-iframe-tentative.html
@@ -31,13 +31,17 @@
 
     below_viewport_iframe_promise.promise.then(
       t.step_func_done(function() {
-        assert_true(has_window_loaded);
+        assert_true(has_window_loaded,
+                    "Below-viewport loading=lazy iframes do not block the " +
+                    "window load event");
         assert_true(below_viewport_iframe_promise.element().contentDocument.body.
-          innerHTML.includes("<p>Subframe</p>"));
+                    innerHTML.includes("<p>Subframe</p>"),
+                    "The loading=lazy iframe's content is accessible upon loading");
       })
     ).catch(t.unreached_func("The iframe request should not load relative to " +
                              "the current (incorrect) base URL."));
-  }, "Test that when deferred iframe is loaded, the parse time base URL is used.");
+  }, "Deferred iframes with loading='lazy' use the original base URL " +
+      "specified at the parse time");
 </script>
 
 <body>
diff --git a/third_party/blink/web_tests/external/wpt/mathml/relations/css-styling/attribute-mapping-001-expected.txt b/third_party/blink/web_tests/external/wpt/mathml/relations/css-styling/attribute-mapping-001-expected.txt
deleted file mode 100644
index 5c64785a..0000000
--- a/third_party/blink/web_tests/external/wpt/mathml/relations/css-styling/attribute-mapping-001-expected.txt
+++ /dev/null
@@ -1,164 +0,0 @@
-This is a testharness.js-based test.
-Found 160 tests; 158 PASS, 2 FAIL, 0 TIMEOUT, 0 NOTRUN.
-PASS dir on the math element is mapped to CSS direction
-PASS mathcolor on the math element is mapped to CSS color
-PASS mathbackground on the math element is mapped to CSS background-color
-PASS mathsize on the math element is mapped to CSS font-size
-PASS deprecated MathML3 attributes on the math element are not mapped to CSS
-PASS dir on the annotation element is mapped to CSS direction
-PASS mathcolor on the annotation element is mapped to CSS color
-PASS mathbackground on the annotation element is mapped to CSS background-color
-PASS mathsize on the annotation element is mapped to CSS font-size
-PASS deprecated MathML3 attributes on the annotation element are not mapped to CSS
-PASS dir on the annotation-xml element is mapped to CSS direction
-PASS mathcolor on the annotation-xml element is mapped to CSS color
-PASS mathbackground on the annotation-xml element is mapped to CSS background-color
-PASS mathsize on the annotation-xml element is mapped to CSS font-size
-PASS deprecated MathML3 attributes on the annotation-xml element are not mapped to CSS
-PASS dir on the maction element is mapped to CSS direction
-PASS mathcolor on the maction element is mapped to CSS color
-PASS mathbackground on the maction element is mapped to CSS background-color
-PASS mathsize on the maction element is mapped to CSS font-size
-PASS deprecated MathML3 attributes on the maction element are not mapped to CSS
-PASS dir on the menclose element is mapped to CSS direction
-PASS mathcolor on the menclose element is mapped to CSS color
-PASS mathbackground on the menclose element is mapped to CSS background-color
-PASS mathsize on the menclose element is mapped to CSS font-size
-PASS deprecated MathML3 attributes on the menclose element are not mapped to CSS
-PASS dir on the merror element is mapped to CSS direction
-FAIL mathcolor on the merror element is mapped to CSS color assert_equals: no attribute expected "rgb(255, 0, 0)" but got "rgb(0, 0, 255)"
-FAIL mathbackground on the merror element is mapped to CSS background-color assert_equals: no attribute expected "rgb(255, 255, 224)" but got "rgba(0, 0, 0, 0)"
-PASS mathsize on the merror element is mapped to CSS font-size
-PASS deprecated MathML3 attributes on the merror element are not mapped to CSS
-PASS dir on the mfrac element is mapped to CSS direction
-PASS mathcolor on the mfrac element is mapped to CSS color
-PASS mathbackground on the mfrac element is mapped to CSS background-color
-PASS mathsize on the mfrac element is mapped to CSS font-size
-PASS deprecated MathML3 attributes on the mfrac element are not mapped to CSS
-PASS dir on the mi element is mapped to CSS direction
-PASS mathcolor on the mi element is mapped to CSS color
-PASS mathbackground on the mi element is mapped to CSS background-color
-PASS mathsize on the mi element is mapped to CSS font-size
-PASS deprecated MathML3 attributes on the mi element are not mapped to CSS
-PASS dir on the mmultiscripts element is mapped to CSS direction
-PASS mathcolor on the mmultiscripts element is mapped to CSS color
-PASS mathbackground on the mmultiscripts element is mapped to CSS background-color
-PASS mathsize on the mmultiscripts element is mapped to CSS font-size
-PASS deprecated MathML3 attributes on the mmultiscripts element are not mapped to CSS
-PASS dir on the mn element is mapped to CSS direction
-PASS mathcolor on the mn element is mapped to CSS color
-PASS mathbackground on the mn element is mapped to CSS background-color
-PASS mathsize on the mn element is mapped to CSS font-size
-PASS deprecated MathML3 attributes on the mn element are not mapped to CSS
-PASS dir on the mo element is mapped to CSS direction
-PASS mathcolor on the mo element is mapped to CSS color
-PASS mathbackground on the mo element is mapped to CSS background-color
-PASS mathsize on the mo element is mapped to CSS font-size
-PASS deprecated MathML3 attributes on the mo element are not mapped to CSS
-PASS dir on the mover element is mapped to CSS direction
-PASS mathcolor on the mover element is mapped to CSS color
-PASS mathbackground on the mover element is mapped to CSS background-color
-PASS mathsize on the mover element is mapped to CSS font-size
-PASS deprecated MathML3 attributes on the mover element are not mapped to CSS
-PASS dir on the mpadded element is mapped to CSS direction
-PASS mathcolor on the mpadded element is mapped to CSS color
-PASS mathbackground on the mpadded element is mapped to CSS background-color
-PASS mathsize on the mpadded element is mapped to CSS font-size
-PASS deprecated MathML3 attributes on the mpadded element are not mapped to CSS
-PASS dir on the mphantom element is mapped to CSS direction
-PASS mathcolor on the mphantom element is mapped to CSS color
-PASS mathbackground on the mphantom element is mapped to CSS background-color
-PASS mathsize on the mphantom element is mapped to CSS font-size
-PASS deprecated MathML3 attributes on the mphantom element are not mapped to CSS
-PASS dir on the mprescripts element is mapped to CSS direction
-PASS mathcolor on the mprescripts element is mapped to CSS color
-PASS mathbackground on the mprescripts element is mapped to CSS background-color
-PASS mathsize on the mprescripts element is mapped to CSS font-size
-PASS deprecated MathML3 attributes on the mprescripts element are not mapped to CSS
-PASS dir on the mroot element is mapped to CSS direction
-PASS mathcolor on the mroot element is mapped to CSS color
-PASS mathbackground on the mroot element is mapped to CSS background-color
-PASS mathsize on the mroot element is mapped to CSS font-size
-PASS deprecated MathML3 attributes on the mroot element are not mapped to CSS
-PASS dir on the mrow element is mapped to CSS direction
-PASS mathcolor on the mrow element is mapped to CSS color
-PASS mathbackground on the mrow element is mapped to CSS background-color
-PASS mathsize on the mrow element is mapped to CSS font-size
-PASS deprecated MathML3 attributes on the mrow element are not mapped to CSS
-PASS dir on the ms element is mapped to CSS direction
-PASS mathcolor on the ms element is mapped to CSS color
-PASS mathbackground on the ms element is mapped to CSS background-color
-PASS mathsize on the ms element is mapped to CSS font-size
-PASS deprecated MathML3 attributes on the ms element are not mapped to CSS
-PASS dir on the mspace element is mapped to CSS direction
-PASS mathcolor on the mspace element is mapped to CSS color
-PASS mathbackground on the mspace element is mapped to CSS background-color
-PASS mathsize on the mspace element is mapped to CSS font-size
-PASS deprecated MathML3 attributes on the mspace element are not mapped to CSS
-PASS dir on the msqrt element is mapped to CSS direction
-PASS mathcolor on the msqrt element is mapped to CSS color
-PASS mathbackground on the msqrt element is mapped to CSS background-color
-PASS mathsize on the msqrt element is mapped to CSS font-size
-PASS deprecated MathML3 attributes on the msqrt element are not mapped to CSS
-PASS dir on the mstyle element is mapped to CSS direction
-PASS mathcolor on the mstyle element is mapped to CSS color
-PASS mathbackground on the mstyle element is mapped to CSS background-color
-PASS mathsize on the mstyle element is mapped to CSS font-size
-PASS deprecated MathML3 attributes on the mstyle element are not mapped to CSS
-PASS dir on the msub element is mapped to CSS direction
-PASS mathcolor on the msub element is mapped to CSS color
-PASS mathbackground on the msub element is mapped to CSS background-color
-PASS mathsize on the msub element is mapped to CSS font-size
-PASS deprecated MathML3 attributes on the msub element are not mapped to CSS
-PASS dir on the msubsup element is mapped to CSS direction
-PASS mathcolor on the msubsup element is mapped to CSS color
-PASS mathbackground on the msubsup element is mapped to CSS background-color
-PASS mathsize on the msubsup element is mapped to CSS font-size
-PASS deprecated MathML3 attributes on the msubsup element are not mapped to CSS
-PASS dir on the msup element is mapped to CSS direction
-PASS mathcolor on the msup element is mapped to CSS color
-PASS mathbackground on the msup element is mapped to CSS background-color
-PASS mathsize on the msup element is mapped to CSS font-size
-PASS deprecated MathML3 attributes on the msup element are not mapped to CSS
-PASS dir on the mtable element is mapped to CSS direction
-PASS mathcolor on the mtable element is mapped to CSS color
-PASS mathbackground on the mtable element is mapped to CSS background-color
-PASS mathsize on the mtable element is mapped to CSS font-size
-PASS deprecated MathML3 attributes on the mtable element are not mapped to CSS
-PASS dir on the mtd element is mapped to CSS direction
-PASS mathcolor on the mtd element is mapped to CSS color
-PASS mathbackground on the mtd element is mapped to CSS background-color
-PASS mathsize on the mtd element is mapped to CSS font-size
-PASS deprecated MathML3 attributes on the mtd element are not mapped to CSS
-PASS dir on the mtext element is mapped to CSS direction
-PASS mathcolor on the mtext element is mapped to CSS color
-PASS mathbackground on the mtext element is mapped to CSS background-color
-PASS mathsize on the mtext element is mapped to CSS font-size
-PASS deprecated MathML3 attributes on the mtext element are not mapped to CSS
-PASS dir on the mtr element is mapped to CSS direction
-PASS mathcolor on the mtr element is mapped to CSS color
-PASS mathbackground on the mtr element is mapped to CSS background-color
-PASS mathsize on the mtr element is mapped to CSS font-size
-PASS deprecated MathML3 attributes on the mtr element are not mapped to CSS
-PASS dir on the munder element is mapped to CSS direction
-PASS mathcolor on the munder element is mapped to CSS color
-PASS mathbackground on the munder element is mapped to CSS background-color
-PASS mathsize on the munder element is mapped to CSS font-size
-PASS deprecated MathML3 attributes on the munder element are not mapped to CSS
-PASS dir on the munderover element is mapped to CSS direction
-PASS mathcolor on the munderover element is mapped to CSS color
-PASS mathbackground on the munderover element is mapped to CSS background-color
-PASS mathsize on the munderover element is mapped to CSS font-size
-PASS deprecated MathML3 attributes on the munderover element are not mapped to CSS
-PASS dir on the none element is mapped to CSS direction
-PASS mathcolor on the none element is mapped to CSS color
-PASS mathbackground on the none element is mapped to CSS background-color
-PASS mathsize on the none element is mapped to CSS font-size
-PASS deprecated MathML3 attributes on the none element are not mapped to CSS
-PASS dir on the semantics element is mapped to CSS direction
-PASS mathcolor on the semantics element is mapped to CSS color
-PASS mathbackground on the semantics element is mapped to CSS background-color
-PASS mathsize on the semantics element is mapped to CSS font-size
-PASS deprecated MathML3 attributes on the semantics element are not mapped to CSS
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/portals/portals-focus.sub.html b/third_party/blink/web_tests/external/wpt/portals/portals-focus.sub.html
new file mode 100644
index 0000000..a057861
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/portals/portals-focus.sub.html
@@ -0,0 +1,72 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/open-blank-host.js"></script>
+<body>
+<script>
+  async function createPortal(doc, url) {
+    let portal = doc.createElement("portal");
+    portal.src = url;
+    doc.body.appendChild(portal);
+    await new Promise(r => portal.onload = r);
+    return portal;
+  }
+
+  promise_test(async t => {
+    let portal = await createPortal(document, new URL("resources/focus-page-with-button.html", location.href));
+    portal.onmessage = t.step_func(e => {
+      assert_unreached("button inside portal should not be focused");
+    });
+    portal.postMessage("focus", "*");
+    return new Promise(r => t.step_timeout(r, 500));
+  }, "test that an element inside a portal cannot steal focus");
+
+  promise_test(async t => {
+    let portal = await createPortal(document, new URL("resources/focus-page-with-x-origin-iframe.sub.html", location.href));
+    portal.onmessage = t.step_func(e => {
+      assert_unreached("button inside portal should not be focused");
+    });
+    portal.postMessage("focus", "*");
+    return new Promise(r => t.step_timeout(r, 500));
+  }, "test that an element inside a portal's x-origin subframe cannot steal focus");
+
+  promise_test(async t => {
+    let win = await openBlankPortalHost();
+    let doc = win.document;
+
+    let portal = await createPortal(doc, new URL("resources/simple-portal-adopts-predecessor.html", location.href));
+    let button = doc.createElement("button");
+    doc.body.appendChild(button);
+
+    await portal.activate();
+    doc.body.removeChild(portal);
+
+    button.onfocus = t.step_func(() => {
+      assert_unreached("button inside adopted portal should not be focused");
+    });
+    button.focus();
+    return new Promise(r => t.step_timeout(r, 500));
+  }, "test that an element inside an adopted portal cannot steal focus");
+
+  promise_test(async t => {
+    let win = await openBlankPortalHost();
+    let doc = win.document;
+
+    let portal = await createPortal(doc, new URL("resources/simple-portal-adopts-predecessor.html", location.href));
+    let iframe = doc.createElement("iframe");
+    iframe.src = new URL("resources/focus-page-with-button.html",
+                         "http://{{hosts[alt][www]}}:{{ports[http][0]}}/portals/");
+    doc.body.appendChild(iframe);
+    await new Promise(r => iframe.onload = r);
+
+    await portal.activate();
+    doc.body.removeChild(portal);
+
+    iframe.contentWindow.postMessage("focus", "*");
+    window.onmessage = t.step_func(() => {
+      assert_unreached("button inside x-origin iframe inside a portal should not be focused");
+    });
+    await new Promise(r => t.step_timeout(r, 500));
+  }, "test that a x-origin iframe inside an adopted portal cannot steal focus");
+</script>
+</body>
diff --git a/third_party/blink/web_tests/external/wpt/portals/resources/focus-page-with-button.html b/third_party/blink/web_tests/external/wpt/portals/resources/focus-page-with-button.html
new file mode 100644
index 0000000..2b6f0ff7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/portals/resources/focus-page-with-button.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<body>
+  <script>
+    function handleMessage(e) {
+      if (e.data == "focus") {
+        let button = document.querySelector("button");
+        button.onfocus = () => e.source.postMessage({focused: true}, "*");
+        button.focus();
+      }
+    }
+
+    if (window.portalHost)
+      window.portalHost.onmessage = handleMessage;
+
+    window.onmessage = handleMessage;
+
+    window.onportalactivate = e => {
+      let portal = e.adoptPredecessor();
+      document.body.appendChild(portal);
+      portal.onmessage = handleMessage;
+    }
+  </script>
+  <button>A</button>
+</body>
diff --git a/third_party/blink/web_tests/external/wpt/portals/resources/focus-page-with-x-origin-iframe.sub.html b/third_party/blink/web_tests/external/wpt/portals/resources/focus-page-with-x-origin-iframe.sub.html
new file mode 100644
index 0000000..7c9df9d
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/portals/resources/focus-page-with-x-origin-iframe.sub.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<body>
+  <script>
+    function handleMessage(e) {
+      if (e.data == "focus") {
+        let iframe = document.querySelector("iframe");
+        iframe.contentWindow.postMessage("focus", "*");
+      }
+    }
+
+    if (window.portalHost)
+      window.portalHost.onmessage = handleMessage;
+
+    window.onportalactivate = e => {
+      var portal = e.adoptPredecessor();
+      document.body.appendChild(portal);
+      portal.onmessage = handleMessage;
+    }
+
+    window.onmessage = e => {
+      if (window.portalHost)
+        window.portalHost.postMessage(e.data, "*");
+      else
+        document.querySelector("portal").postMessage(e.data, "*");
+    }
+  </script>
+  <iframe src="http://{{hosts[alt][www]}}:{{ports[http][0]}}/portals/resources/focus-page-with-button.html"></iframe>
+</body>
diff --git a/third_party/blink/web_tests/external/wpt/scroll-animations/scroll-animation.html b/third_party/blink/web_tests/external/wpt/scroll-animations/scroll-animation.html
index 0320210f..d565788 100644
--- a/third_party/blink/web_tests/external/wpt/scroll-animations/scroll-animation.html
+++ b/third_party/blink/web_tests/external/wpt/scroll-animations/scroll-animation.html
@@ -89,7 +89,7 @@
       "The start time is null in Idle state.");
     animation.play();
     // Verify initial start and current times in Pending state.
-    assert_equals(animation.currentTime, 0,
+    assert_equals(animation.currentTime, animation.timeline.currentTime,
       "The current time is a hold time in Pending state.");
     assert_equals(animation.startTime, null,
       "The start time is null in Pending state.");
@@ -125,12 +125,14 @@
     animation1.play();
     animation2.play();
     // Verify initial start and current times in Pending state.
-    assert_equals(animation1.currentTime, 0,
-      "The current time is a hold time in Pending state.");
+    assert_equals(animation1.currentTime, timeline.currentTime,
+      "The current time corresponds to the scroll position of the scroller" +
+        " in Pending state.");
     assert_equals(animation1.startTime, null,
       "The start time is null in Pending state.");
-    assert_equals(animation2.currentTime, 0,
-      "The current time is a hold time in Pending state.");
+    assert_equals(animation2.currentTime, timeline.currentTime,
+      "The current time corresponds to the scroll position of the scroller" +
+        " in Pending state.");
     assert_equals(animation2.startTime, null,
       "The start time is null in Pending state.");
 
diff --git a/third_party/blink/web_tests/external/wpt/scroll-animations/setting-current-time.html b/third_party/blink/web_tests/external/wpt/scroll-animations/setting-current-time.html
new file mode 100644
index 0000000..7a77f17
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/scroll-animations/setting-current-time.html
@@ -0,0 +1,223 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>Setting the current time of an animation</title>
+<link rel="help" href="https://drafts.csswg.org/web-animations-1/#setting-the-current-time-of-an-animation">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/web-animations/testcommon.js"></script>
+<style>
+.scroller {
+  overflow: auto;
+  height: 200px;
+  width: 100px;
+}
+.contents {
+  height: 1000px;
+  width: 100%;
+}
+</style>
+<body>
+<div id="log"></div>
+<script>
+'use strict';
+
+  function createScroller(test) {
+    var scroller = createDiv(test);
+    scroller.innerHTML = "<div class='contents'></div>";
+    scroller.classList.add('scroller');
+    return scroller;
+  }
+
+  function createScrollTimeline(test) {
+    return new ScrollTimeline({
+      scrollSource: createScroller(test),
+      timeRange: 1000
+    });
+  }
+
+  function createScrollLinkedAnimation(test, timeline) {
+    if(timeline === undefined)
+      timeline = createScrollTimeline(test);
+    const DURATION = 1000; // ms
+    const KEYFRAMES = { opacity: [1, 0] };
+    return new Animation(
+      new KeyframeEffect(createDiv(test), KEYFRAMES, DURATION), timeline);
+  }
+
+  promise_test(async t => {
+    const animation = createScrollLinkedAnimation(t);
+    const scroller = animation.timeline.scrollSource;
+    const maxScroll = scroller.scrollHeight - scroller.clientHeight;
+    scroller.scrollTop = 0.25 * maxScroll;
+    animation.play();
+
+    await animation.ready;
+
+    assert_throws(new TypeError(), () => {
+      animation.currentTime = null;
+    });
+  }, 'Setting animation current time to null throws TypeError.');
+
+  test(t => {
+    const animation = createScrollLinkedAnimation(t);
+    const scroller = animation.timeline.scrollSource;
+    const maxScroll = scroller.scrollHeight - scroller.clientHeight;
+    scroller.scrollTop = 0.25 * maxScroll;
+
+    animation.currentTime = 333;
+
+    assert_times_equal(
+      animation.currentTime,
+      333,
+      "Animation current time should be equal to the set value."
+    );
+  }, 'Set animation current time to a valid value without playing.');
+
+  promise_test(async t => {
+    const animation = createScrollLinkedAnimation(t);
+    const scroller = animation.timeline.scrollSource;
+    const maxScroll = scroller.scrollHeight - scroller.clientHeight;
+    scroller.scrollTop = 0.25 * maxScroll;
+    animation.play();
+
+    await animation.ready;
+    animation.currentTime = 333;
+
+    assert_times_equal(
+      animation.currentTime,
+      333,
+      "Animation current time should be equal to the set value."
+    );
+  }, 'Set animation current time to a valid value while playing.');
+
+  promise_test(async t => {
+    const animation = createScrollLinkedAnimation(t);
+    const scroller = animation.timeline.scrollSource;
+    const maxScroll = scroller.scrollHeight - scroller.clientHeight;
+    const range = animation.timeline.timeRange;
+    scroller.scrollTop = 0.25 * maxScroll;
+    animation.play();
+
+    await animation.ready;
+    const largerThanDuration = animation.effect.getTiming().duration * 2;
+    animation.currentTime = largerThanDuration;
+
+    assert_greater_than_equal(largerThanDuration, range, "Make sure that the" +
+      " test value is after the end of the effect and the timeline");
+    assert_equals(animation.playState, "finished");
+    assert_times_equal(
+      animation.currentTime,
+      largerThanDuration,
+      "Animation current time should be equal to the set value."
+    );
+  }, 'Set animation current time to a value beyond effect end.');
+
+  promise_test(async t => {
+    const animation = createScrollLinkedAnimation(t);
+    const scroller = animation.timeline.scrollSource;
+    const maxScroll = scroller.scrollHeight - scroller.clientHeight;
+    const range = animation.timeline.timeRange;
+    scroller.scrollTop = 0.25 * maxScroll;
+    animation.play();
+
+    await animation.ready;
+    animation.currentTime = -100;
+
+    assert_equals(animation.playState, "running");
+    assert_times_equal(
+      animation.currentTime,
+      -100,
+      "Animation current time should be equal to the set value."
+    );
+  }, 'Set animation current time to a negative value.');
+
+  test(t => {
+    const animation = createScrollLinkedAnimation(t);
+    const scroller = animation.timeline.scrollSource;
+    const maxScroll = scroller.scrollHeight - scroller.clientHeight;
+    scroller.scrollTop = 0.25 * maxScroll;
+    animation.play();
+
+    animation.currentTime = 300;
+
+    assert_equals(animation.playState, "running");
+    assert_true(animation.pending);
+    assert_time_equals_literal(animation.currentTime, 300);
+  }, "Setting current time while play pending overrides the current time");
+
+  promise_test(async t => {
+    const animation = createScrollLinkedAnimation(t);
+    const scroller = animation.timeline.scrollSource;
+    const maxScroll = scroller.scrollHeight - scroller.clientHeight;
+    scroller.scrollTop = 0.25 * maxScroll;
+    animation.play();
+
+    await animation.ready;
+    animation.currentTime = 333;
+
+    assert_times_equal(
+      animation.currentTime,
+      333,
+      "Animation current time should be equal to the set value."
+    );
+
+    // Cancel the animation and play it again, check that current time has reset
+    // to scroll offset based current time.
+    animation.cancel();
+    animation.play();
+    await animation.ready;
+
+    assert_times_equal(
+      animation.currentTime,
+      animation.timeline.currentTime,
+      "Animation current time should return to a value matching its" +
+      " timeline current time after animation is cancelled and played again."
+    );
+  }, 'Setting animation.currentTime then restarting the animation should' +
+    ' reset the current time.');
+
+  promise_test(async t => {
+    const animation = createScrollLinkedAnimation(t);
+    const scroller = animation.timeline.scrollSource;
+    const maxScroll = scroller.scrollHeight - scroller.clientHeight;
+    scroller.scrollTop = 0.25 * maxScroll;
+    animation.play();
+
+    await animation.ready;
+    const originalCurrentTime = animation.currentTime;
+
+    // Set the current time to something other than where the scroll offset.
+    animation.currentTime = 500;
+
+    // Setting current time is internally setting the start time to
+    // scrollTimeline.currentTime - newAnimationCurrentTime.
+    // Which results in current time of (timeline.currentTime - start_time).
+    // This behavior puts the animation in a strange "out of sync" state between
+    // the scroller and the animation effect, this is currently expected
+    // behavior.
+
+    const expectedStartTime = originalCurrentTime - animation.currentTime;
+    assert_times_equal(
+      animation.startTime,
+      expectedStartTime,
+      "Animation current time should be updated when setting the current time" +
+      " to a time within the range of the animation.");
+
+    scroller.scrollTop = 0.7 * maxScroll;
+
+    assert_times_equal(
+      animation.startTime,
+      expectedStartTime,
+      "Animation start time should remain unchanged when the scroller changes" +
+      " position."
+    );
+    assert_times_equal(
+      animation.currentTime,
+      animation.timeline.currentTime - animation.startTime,
+      "Animation current time should return to a value equal to" +
+      " (timeline.currentTime - animation.startTime) after timeline scroll" +
+      " source has been scrolled."
+    );
+  }, 'Set Animation current time then scroll.');
+</script>
+</body>
diff --git a/third_party/blink/web_tests/external/wpt/svg/embedded/image-fractional-width-vertical-fidelity.svg b/third_party/blink/web_tests/external/wpt/svg/embedded/image-fractional-width-vertical-fidelity.svg
new file mode 100644
index 0000000..81f27922
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/svg/embedded/image-fractional-width-vertical-fidelity.svg
@@ -0,0 +1,14 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml">
+  <title>Vertical fidelity of &#x3c;image&#x3e; element with fractional width</title>
+  <h:link rel="help" href="https://svgwg.org/svg2-draft/embedded.html#ImageElement"/>
+  <h:link rel="match" href="reference/green-rect-100x100.svg"/>
+  <rect width="100" height="100" fill="red"/>
+  <g clip-path="url(#c)">
+    <clipPath id="c">
+      <rect width="100" height="100"/>
+    </clipPath>
+    <image href="data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' preserveAspectRatio='xMinYMin'%3e
+                 %3crect width='100' height='100' fill='green'/%3e%3c/svg%3e"
+                 width="101.2" height="100"/>
+  </g>
+</svg>
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt b/third_party/blink/web_tests/external/wpt/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt
index b079e4e..9b5d78a 100644
--- a/third_party/blink/web_tests/external/wpt/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 560 tests; 541 PASS, 19 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 560 tests; 542 PASS, 18 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS Setup
 PASS align-content (type: discrete) has testAccumulation function
 PASS align-content: "flex-end" onto "flex-start"
@@ -300,7 +300,7 @@
 PASS hyphens: "manual" onto "none"
 PASS image-orientation (type: discrete) has testAccumulation function
 PASS image-orientation: "from-image" onto "none"
-FAIL image-orientation: "none" onto "from-image" assert_equals: The value should be none at 0ms expected "none" but got "from-image"
+PASS image-orientation: "none" onto "from-image"
 PASS isolation (type: discrete) has testAccumulation function
 PASS isolation: "isolate" onto "auto"
 PASS isolation: "auto" onto "isolate"
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/animation-model/animation-types/addition-per-property-expected.txt b/third_party/blink/web_tests/external/wpt/web-animations/animation-model/animation-types/addition-per-property-expected.txt
index 21a7dd2f..e86adfc 100644
--- a/third_party/blink/web_tests/external/wpt/web-animations/animation-model/animation-types/addition-per-property-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/web-animations/animation-model/animation-types/addition-per-property-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 556 tests; 538 PASS, 18 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 556 tests; 539 PASS, 17 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS Setup
 PASS align-content (type: discrete) has testAddition function
 PASS align-content: "flex-end" onto "flex-start"
@@ -300,7 +300,7 @@
 PASS hyphens: "manual" onto "none"
 PASS image-orientation (type: discrete) has testAddition function
 PASS image-orientation: "from-image" onto "none"
-FAIL image-orientation: "none" onto "from-image" assert_equals: The value should be none at 0ms expected "none" but got "from-image"
+PASS image-orientation: "none" onto "from-image"
 PASS isolation (type: discrete) has testAddition function
 PASS isolation: "isolate" onto "auto"
 PASS isolation: "auto" onto "isolate"
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt b/third_party/blink/web_tests/external/wpt/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt
index 93ad9fe..2f6eb6a 100644
--- a/third_party/blink/web_tests/external/wpt/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 686 tests; 653 PASS, 33 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 686 tests; 656 PASS, 30 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS Setup
 PASS align-content (type: discrete) has testInterpolation function
 PASS align-content uses discrete animation when animating between "flex-start" and "flex-end" with linear easing
@@ -370,9 +370,9 @@
 PASS hyphens uses discrete animation when animating between "manual" and "none" with effect easing
 PASS hyphens uses discrete animation when animating between "manual" and "none" with keyframe easing
 PASS image-orientation (type: discrete) has testInterpolation function
-FAIL image-orientation uses discrete animation when animating between "none" and "from-image" with linear easing assert_equals: The value should be none at 0ms expected "none" but got "0deg"
-FAIL image-orientation uses discrete animation when animating between "none" and "from-image" with effect easing assert_equals: The value should be none at 0ms expected "none" but got "0deg"
-FAIL image-orientation uses discrete animation when animating between "none" and "from-image" with keyframe easing assert_equals: The value should be none at 0ms expected "none" but got "0deg"
+PASS image-orientation uses discrete animation when animating between "none" and "from-image" with linear easing
+PASS image-orientation uses discrete animation when animating between "none" and "from-image" with effect easing
+PASS image-orientation uses discrete animation when animating between "none" and "from-image" with keyframe easing
 PASS isolation (type: discrete) has testInterpolation function
 PASS isolation uses discrete animation when animating between "auto" and "isolate" with linear easing
 PASS isolation uses discrete animation when animating between "auto" and "isolate" with effect easing
diff --git a/third_party/blink/web_tests/external/wpt/web-nfc/NDEFRecord_constructor.https.html b/third_party/blink/web_tests/external/wpt/web-nfc/NDEFRecord_constructor.https.html
index f3546b99..d46503ab 100644
--- a/third_party/blink/web_tests/external/wpt/web-nfc/NDEFRecord_constructor.https.html
+++ b/third_party/blink/web_tests/external/wpt/web-nfc/NDEFRecord_constructor.https.html
@@ -70,6 +70,18 @@
   }, 'NDEFRecord constructor with custom record ids');
 
   test(() => {
+    const record = new NDEFRecord(createRecord('empty'));
+    assert_equals(record.recordType, 'empty', 'recordType');
+    assert_equals(record.mediaType, null, 'mediaType');
+    assert_equals(record.id, null, 'id');
+    assert_equals(record.encoding, null, 'encoding');
+    assert_equals(record.lang, null, 'lang');
+    assert_equals(record.data, null, 'data');
+    assert_throws('NotSupportedError', () => record.toRecords(),
+        'Only smart-poster records and external type records could have embedded records.');
+  }, 'NDEFRecord constructor with empty record type');
+
+  test(() => {
     const record = new NDEFRecord(createTextRecord(test_text_data));
     assert_equals(record.recordType, 'text', 'recordType');
     assert_equals(record.mediaType, null, 'mediaType');
diff --git a/third_party/blink/web_tests/external/wpt/webaudio/resources/audit.js b/third_party/blink/web_tests/external/wpt/webaudio/resources/audit.js
index fe6fc45..ac97b66 100644
--- a/third_party/blink/web_tests/external/wpt/webaudio/resources/audit.js
+++ b/third_party/blink/web_tests/external/wpt/webaudio/resources/audit.js
@@ -51,12 +51,6 @@
     }, message);
   }
 
-  function _logException(message, exception) {
-    test(function() {
-      throw exception;
-    }, message);
-  }
-
   function _throwException(message) {
     throw new Error(message);
   }
@@ -1185,30 +1179,22 @@
 
     // Run this task. |this| task will be passed into the user-supplied test
     // task function.
-    run() {
+    run(harnessTest) {
       this._state = TaskState.STARTED;
-
+      this._harnessTest = harnessTest;
       // Print out the task entry with label and description.
       _logPassed(
           '> [' + this._label + '] ' +
           (this._description ? this._description : ''));
 
-      // Ideally we would just use testharness async_test instead of reinventing
-      // that wheel, but since it's been reinvented...  At least make sure that
-      // an exception while running a task doesn't preclude us running all the
-      // _other_ tasks for the test.
-      let testName = `Executing "${this.label}"`;
-      try {
-        this._taskFunction(this, this.should.bind(this));
-        _logPassed(testName);
-      } catch (e) {
-        _logException(testName, e);
-        if (this.state != TaskState.FINISHED) {
-          // We threw before calling done(), so do that manually to run our
-          // other tasks.
-          this.done();
+      return new Promise((resolve, reject) => {
+        this._resolve = resolve;
+        this._reject = reject;
+        let result = this._taskFunction(this, this.should.bind(this));
+        if (result && typeof result.then === "function") {
+          result.then(() => this.done()).catch(reject);
         }
-      }
+      });
     }
 
     // Update the task success based on the individual assertion/test inside.
@@ -1224,6 +1210,7 @@
 
     // Finish the current task and start the next one if available.
     done() {
+      assert_equals(this._state, TaskState.STARTED)
       this._state = TaskState.FINISHED;
 
       let message = '< [' + this._label + '] ';
@@ -1238,17 +1225,24 @@
         _logFailed(message);
       }
 
-      this._taskRunner._runNextTask();
+      this._resolve();
     }
 
     // Runs |subTask| |time| milliseconds later. |setTimeout| is not allowed in
     // WPT linter, so a thin wrapper around the harness's |step_timeout| is
-    // used here.
+    // used here.  Returns a Promise which is resolved after |subTask| runs.
     timeout(subTask, time) {
-      async_test((test) => {
-        test.step_timeout(() => {
-          subTask();
-          test.done();
+      return new Promise(resolve => {
+        this._harnessTest.step_timeout(() => {
+          let result = subTask();
+          if (result && typeof result.then === "function") {
+            // Chain rejection directly to the harness test Promise, to report
+            // the rejection against the subtest even when the caller of
+            // timeout does not handle the rejection.
+            result.then(resolve, this._reject());
+          } else {
+            resolve();
+          }
         }, time);
       });
     }
@@ -1271,20 +1265,11 @@
     constructor() {
       this._tasks = {};
       this._taskSequence = [];
-      this._currentTaskIndex = -1;
 
       // Configure testharness.js for the async operation.
       setup(new Function(), {explicit_done: true});
     }
 
-    _runNextTask() {
-      if (this._currentTaskIndex < this._taskSequence.length) {
-        this._tasks[this._taskSequence[this._currentTaskIndex++]].run();
-      } else {
-        this._finish();
-      }
-    }
-
     _finish() {
       let numberOfFailures = 0;
       for (let taskIndex in this._taskSequence) {
@@ -1302,13 +1287,13 @@
             prefix + this._taskSequence.length + ' tasks ran successfully.');
       }
 
-      // From testharness.js, report back to the test infrastructure that
-      // the task runner completed all the tasks.
-      _testharnessDone();
+      return Promise.resolve();
     }
 
     // |taskLabel| can be either a string or a dictionary. See Task constructor
-    // for the detail.
+    // for the detail.  If |taskFunction| returns a thenable, then the task
+    // is considered complete when the thenable is fulfilled; otherwise the
+    // task must be completed with an explicit call to |task.done()|.
     define(taskLabel, taskFunction) {
       let task = new Task(this, taskLabel, taskFunction);
       if (this._tasks.hasOwnProperty(task.label)) {
@@ -1347,9 +1332,19 @@
         return;
       }
 
-      // Start the first task.
-      this._currentTaskIndex = 0;
-      this._runNextTask();
+      for (let taskIndex in this._taskSequence) {
+        let task = this._tasks[this._taskSequence[taskIndex]];
+        // Some tests assume that tasks run in sequence, which is provided by
+        // promise_test().
+        promise_test((t) => task.run(t), `Executing "${task.label}"`);
+      }
+
+      // Schedule a summary report on completion.
+      promise_test(() => this._finish(), "Audit report");
+
+      // From testharness.js. The harness now need not wait for more subtests
+      // to be added.
+      _testharnessDone();
     }
   }
 
diff --git a/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-suspend.https.html b/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-suspend.https.html
index 89d361d..685546a 100644
--- a/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-suspend.https.html
+++ b/third_party/blink/web_tests/external/wpt/webaudio/the-audio-api/the-audioworklet-interface/audioworklet-suspend.https.html
@@ -25,12 +25,11 @@
             const suspendTime = context.currentTime;
             const dummy = new AudioWorkletNode(context, 'dummy');
             dummy.connect(context.destination);
-            task.timeout(() => {
+            return task.timeout(() => {
               should(context.currentTime === suspendTime,
                      'context.currentTime did not change after worklet started')
                   .beTrue();
               should(context.state, 'context.state').beEqualTo('suspended');
-              task.done();
             }, 500);
           });
 
diff --git a/third_party/blink/web_tests/external/wpt/webrtc/RTCDataChannel-close.html b/third_party/blink/web_tests/external/wpt/webrtc/RTCDataChannel-close.html
new file mode 100644
index 0000000..13215d7
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/webrtc/RTCDataChannel-close.html
@@ -0,0 +1,54 @@
+<!doctype html>
+<meta charset=utf-8>
+<meta name="timeout" content="long">
+<title>RTCDataChannel.prototype.close</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="RTCPeerConnection-helper.js"></script>
+<script>
+'use strict';
+
+promise_test(async t => {
+  let pc1 = new RTCPeerConnection();
+  t.add_cleanup(() => pc1.close());
+  let [channel1, channel2] = await createDataChannelPair(pc1);
+  let close_handler = new Promise(resolve => {
+    channel2.onclose = event => {
+      resolve();
+    };
+  });
+  channel2.addEventListener('error', t.unreached_func());
+  channel1.close();
+  await close_handler;
+}, 'Close datachannel causes onclose to be called');
+
+promise_test(async t => {
+  // This is the same test as above, but using addEventListener
+  // rather than the "onclose" attribute.
+  let pc1 = new RTCPeerConnection();
+  t.add_cleanup(() => pc1.close());
+  let [channel1, channel2] = await createDataChannelPair(pc1);
+  let close_handler = new Promise(resolve => {
+    channel2.addEventListener('close', event => {
+      resolve();
+    });
+  });
+  channel2.addEventListener('error', t.unreached_func());
+  channel1.close();
+  await close_handler;
+}, 'Close datachannel causes close event to be called');
+
+promise_test(async t => {
+  let pc1 = new RTCPeerConnection();
+  t.add_cleanup(() => pc1.close());
+  let [channel1, channel2] = await createDataChannelPair(pc1);
+  let close_handler = new Promise(resolve => {
+    channel2.addEventListener('close', event => {
+      resolve();
+    });
+  });
+  pc1.close();
+  await close_handler;
+}, 'Close peerconnection causes close event to be called');
+
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/webxr/xrBoundedReferenceSpace_updates.https.html b/third_party/blink/web_tests/external/wpt/webxr/xrBoundedReferenceSpace_updates.https.html
index 812acf4..55d3115 100644
--- a/third_party/blink/web_tests/external/wpt/webxr/xrBoundedReferenceSpace_updates.https.html
+++ b/third_party/blink/web_tests/external/wpt/webxr/xrBoundedReferenceSpace_updates.https.html
@@ -24,38 +24,32 @@
     session.requestReferenceSpace('bounded-floor')
       .then((referenceSpace) => {
           t.step(() => {
-            assert_unreached("Should not be able to get a bounded space until bounds set");
-          });
-        }).catch((err) => {
-          t.step(() => {
-            assert_equals(err.name, "NotSupportedError");
+              // A bounded space may be created if no bounds have been set but the system has the capability to support bounded-floor
+              // A lack of bounds is indicated by an empty boundsGeometry
+              assert_true(referenceSpace.boundsGeometry.length == 0);
           });
 
           function onFrame(time, xrFrame) {
-            // After setting the bounds explicitly, we should be able to get a
-            // reference space
-            session.requestReferenceSpace('bounded-floor')
-            .then((referenceSpace) => {
-              t.step(() => {
-                assert_equals(referenceSpace.boundsGeometry.length, VALID_BOUNDS.length);
-                for (i = 0; i < VALID_BOUNDS.length; ++i) {
-                  let valid_point = VALID_BOUNDS[i];
-                  let bounds_point = referenceSpace.boundsGeometry[i];
-                  assert_equals(valid_point.x, bounds_point.x);
-                  assert_equals(bounds_point.y, 0.0);
-                  assert_equals(valid_point.z, bounds_point.z);
-                  assert_equals(bounds_point.w, 1.0);
-                }
-              });
-
-              resolve();
+            // After the bounds have been explicitly set, they should be what we expect.
+            t.step(() => {
+              assert_equals(referenceSpace.boundsGeometry.length, VALID_BOUNDS.length);
+              for (i = 0; i < VALID_BOUNDS.length; ++i) {
+                let valid_point = VALID_BOUNDS[i];
+                let bounds_point = referenceSpace.boundsGeometry[i];
+                assert_equals(valid_point.x, bounds_point.x);
+                assert_equals(bounds_point.y, 0.0);
+                assert_equals(valid_point.z, bounds_point.z);
+                assert_equals(bounds_point.w, 1.0);
+              }
             });
+
+            resolve();
           }
 
           // Now set the bounds explicitly and check again on the next frame.
           fakeDeviceController.setBoundsGeometry(VALID_BOUNDS);
           session.requestAnimationFrame(onFrame);
-      });
+        });
     });
 };
 
diff --git a/third_party/blink/web_tests/fast/css/getComputedStyle/computed-style-listing-expected.txt b/third_party/blink/web_tests/fast/css/getComputedStyle/computed-style-listing-expected.txt
index 080a849..13d325d8 100644
--- a/third_party/blink/web_tests/fast/css/getComputedStyle/computed-style-listing-expected.txt
+++ b/third_party/blink/web_tests/fast/css/getComputedStyle/computed-style-listing-expected.txt
@@ -169,7 +169,7 @@
 grid-template-rows: none
 height: 0px
 hyphens: manual
-image-orientation: 0deg
+image-orientation: from-image
 image-rendering: auto
 isolation: auto
 justify-content: normal
diff --git a/third_party/blink/web_tests/fast/css/getComputedStyle/computed-style-without-renderer-listing-expected.txt b/third_party/blink/web_tests/fast/css/getComputedStyle/computed-style-without-renderer-listing-expected.txt
index 3c2dda1..7440265 100644
--- a/third_party/blink/web_tests/fast/css/getComputedStyle/computed-style-without-renderer-listing-expected.txt
+++ b/third_party/blink/web_tests/fast/css/getComputedStyle/computed-style-without-renderer-listing-expected.txt
@@ -169,7 +169,7 @@
 grid-template-rows: none
 height: auto
 hyphens: manual
-image-orientation: 0deg
+image-orientation: from-image
 image-rendering: auto
 isolation: auto
 justify-content: normal
diff --git a/third_party/blink/web_tests/fast/css/image-orientation/image-orientation-default-expected.txt b/third_party/blink/web_tests/fast/css/image-orientation/image-orientation-default-expected.txt
index ad882ae..54966d0 100644
--- a/third_party/blink/web_tests/fast/css/image-orientation/image-orientation-default-expected.txt
+++ b/third_party/blink/web_tests/fast/css/image-orientation/image-orientation-default-expected.txt
@@ -1,4 +1,4 @@
-The images should not rotate respecting their EXIF orientation since no image-orientation is specified.
+The images should rotate respecting their EXIF orientation since no image-orientation is specified.
 
 
 Normal 
@@ -17,8 +17,8 @@
 img2 size = 100px by 50px
 img3 size = 100px by 50px
 img4 size = 100px by 50px
-img5 size = 100px by 50px
-img6 size = 100px by 50px
-img7 size = 100px by 50px
-img8 size = 100px by 50px
+img5 size = 50px by 100px
+img6 size = 50px by 100px
+img7 size = 50px by 100px
+img8 size = 50px by 100px
 img9 size = 100px by 50px
diff --git a/third_party/blink/web_tests/fast/css/image-orientation/image-orientation-default.html b/third_party/blink/web_tests/fast/css/image-orientation/image-orientation-default.html
index 4f92b21..0876f49 100644
--- a/third_party/blink/web_tests/fast/css/image-orientation/image-orientation-default.html
+++ b/third_party/blink/web_tests/fast/css/image-orientation/image-orientation-default.html
@@ -31,7 +31,7 @@
 </style>
 </head>
 <body onload="load()">
-<b>The images should not rotate respecting their EXIF orientation since no image-orientation is specified.</b><br><br>
+<b>The images should rotate respecting their EXIF orientation since no image-orientation is specified.</b><br><br>
 <div><img id="img1" src="../../../images/resources/exif-orientation-1-ul.jpg"><br>Normal</div>
 <div><img id="img2" src="../../../images/resources/exif-orientation-2-ur.jpg"><br>Flipped horizontally</div>
 <div><img id="img3" src="../../../images/resources/exif-orientation-3-lr.jpg"><br>Rotated 180&deg;</div>
diff --git a/third_party/blink/web_tests/fast/css/image-orientation/image-orientation-expected.txt b/third_party/blink/web_tests/fast/css/image-orientation/image-orientation-expected.txt
index 16e9493..be0b590 100644
--- a/third_party/blink/web_tests/fast/css/image-orientation/image-orientation-expected.txt
+++ b/third_party/blink/web_tests/fast/css/image-orientation/image-orientation-expected.txt
@@ -4,42 +4,42 @@
 
 PASS img.style.cssText is "image-orientation: from-image;"
 PASS getComputedStyle(img).imageOrientation is "from-image"
-PASS img.style.cssText is "image-orientation: 0deg;"
-PASS getComputedStyle(img).imageOrientation is "0deg"
+PASS img.style.cssText is "image-orientation: none;"
+PASS getComputedStyle(img).imageOrientation is "none"
 PASS img.style.cssText is ""
-PASS getComputedStyle(img).imageOrientation is "0deg"
+PASS getComputedStyle(img).imageOrientation is "from-image"
 PASS img.style.cssText is ""
-PASS getComputedStyle(img).imageOrientation is "0deg"
+PASS getComputedStyle(img).imageOrientation is "from-image"
 PASS img.style.cssText is ""
-PASS getComputedStyle(img).imageOrientation is "0deg"
+PASS getComputedStyle(img).imageOrientation is "from-image"
 PASS img.style.cssText is ""
-PASS getComputedStyle(img).imageOrientation is "0deg"
+PASS getComputedStyle(img).imageOrientation is "from-image"
 PASS img.style.cssText is ""
-PASS getComputedStyle(img).imageOrientation is "0deg"
+PASS getComputedStyle(img).imageOrientation is "from-image"
 PASS img.style.cssText is ""
-PASS getComputedStyle(img).imageOrientation is "0deg"
+PASS getComputedStyle(img).imageOrientation is "from-image"
 PASS img.style.cssText is ""
-PASS getComputedStyle(img).imageOrientation is "0deg"
+PASS getComputedStyle(img).imageOrientation is "from-image"
 PASS img.style.cssText is ""
-PASS getComputedStyle(img).imageOrientation is "0deg"
+PASS getComputedStyle(img).imageOrientation is "from-image"
 PASS img.style.cssText is ""
-PASS getComputedStyle(img).imageOrientation is "0deg"
+PASS getComputedStyle(img).imageOrientation is "from-image"
 PASS img.style.cssText is ""
-PASS getComputedStyle(img).imageOrientation is "0deg"
+PASS getComputedStyle(img).imageOrientation is "from-image"
 PASS img.style.cssText is ""
-PASS getComputedStyle(img).imageOrientation is "0deg"
+PASS getComputedStyle(img).imageOrientation is "from-image"
 PASS img.style.cssText is ""
-PASS getComputedStyle(img).imageOrientation is "0deg"
+PASS getComputedStyle(img).imageOrientation is "from-image"
 PASS img.style.cssText is ""
-PASS getComputedStyle(img).imageOrientation is "0deg"
+PASS getComputedStyle(img).imageOrientation is "from-image"
 PASS img.style.cssText is ""
-PASS getComputedStyle(img).imageOrientation is "0deg"
+PASS getComputedStyle(img).imageOrientation is "from-image"
 PASS img.style.cssText is ""
-PASS getComputedStyle(img).imageOrientation is "0deg"
+PASS getComputedStyle(img).imageOrientation is "from-image"
 PASS img.style.cssText is ""
-PASS getComputedStyle(img).imageOrientation is "0deg"
+PASS getComputedStyle(img).imageOrientation is "from-image"
 PASS img.style.cssText is ""
-PASS getComputedStyle(img).imageOrientation is "0deg"
+PASS getComputedStyle(img).imageOrientation is "from-image"
 PASS successfullyParsed is true
 
 TEST COMPLETE
diff --git a/third_party/blink/web_tests/fast/css/image-orientation/image-orientation-none-expected.txt b/third_party/blink/web_tests/fast/css/image-orientation/image-orientation-none-expected.txt
new file mode 100644
index 0000000..08aacee
--- /dev/null
+++ b/third_party/blink/web_tests/fast/css/image-orientation/image-orientation-none-expected.txt
@@ -0,0 +1,24 @@
+The images should not rotate respecting their EXIF orientation since image-orientation: none is specified.
+
+
+Normal 
+Flipped horizontally 
+Rotated 180° 
+Flipped vertically
+
+Rotated 90° CCW and flipped vertically 
+Rotated 90° CCW 
+Rotated 90° CW and flipped vertically 
+Rotated 90° CW
+
+Undefined (invalid value)
+
+img1 size = 100px by 50px
+img2 size = 100px by 50px
+img3 size = 100px by 50px
+img4 size = 100px by 50px
+img5 size = 100px by 50px
+img6 size = 100px by 50px
+img7 size = 100px by 50px
+img8 size = 100px by 50px
+img9 size = 100px by 50px
diff --git a/third_party/blink/web_tests/fast/css/image-orientation/image-orientation-none.html b/third_party/blink/web_tests/fast/css/image-orientation/image-orientation-none.html
new file mode 100644
index 0000000..a69682c1
--- /dev/null
+++ b/third_party/blink/web_tests/fast/css/image-orientation/image-orientation-none.html
@@ -0,0 +1,49 @@
+<html>
+<head>
+<script>
+if (window.testRunner) {
+    testRunner.dumpAsTextWithPixelResults();
+}
+
+function log(str) {
+    var li = document.createElement("li");
+    li.appendChild(document.createTextNode(str));
+    var console = document.getElementById("console");
+    console.appendChild(li);
+}
+
+function imageSize(el) {
+    var computedStyle = window.getComputedStyle(el);
+    return computedStyle.width + " by " + computedStyle.height;
+}
+
+
+function load() {
+    for (var i = 1; i <= 9; i++)
+        log("img" + i + " size = " + imageSize(document.getElementById("img" + i)))
+}
+
+</script>
+<style>
+body { overflow: hidden; image-orientation: none;}
+img { border: 1px solid black; }
+div { display: inline-block; margin-right: 20px; margin-bottom: 10px; width: 100px; vertical-align: top; }
+</style>
+</head>
+<body onload="load()">
+<b>The images should not rotate respecting their EXIF orientation since image-orientation: none is specified.</b><br><br>
+<div><img id="img1" src="../../../images/resources/exif-orientation-1-ul.jpg"><br>Normal</div>
+<div><img id="img2" src="../../../images/resources/exif-orientation-2-ur.jpg"><br>Flipped horizontally</div>
+<div><img id="img3" src="../../../images/resources/exif-orientation-3-lr.jpg"><br>Rotated 180&deg;</div>
+<div><img id="img4" src="../../../images/resources/exif-orientation-4-lol.jpg"><br>Flipped vertically</div>
+<br>
+<div><img id="img5" src="../../../images/resources/exif-orientation-5-lu.jpg"><br>Rotated 90&deg; CCW and flipped vertically</div>
+<div><img id="img6" src="../../../images/resources/exif-orientation-6-ru.jpg"><br>Rotated 90&deg; CCW</div>
+<div><img id="img7" src="../../../images/resources/exif-orientation-7-rl.jpg"><br>Rotated 90&deg; CW and flipped vertically </div>
+<div><img id="img8" src="../../../images/resources/exif-orientation-8-llo.jpg"><br>Rotated 90&deg; CW</div>
+<br>
+<div><img id="img9" src="../../../images/resources/exif-orientation-9-u.jpg"><br>Undefined (invalid value)</div>
+<br>
+<ul id="console"></ul>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/fast/css/image-orientation/image-orientation-none.txt b/third_party/blink/web_tests/fast/css/image-orientation/image-orientation-none.txt
new file mode 100644
index 0000000..ad882ae
--- /dev/null
+++ b/third_party/blink/web_tests/fast/css/image-orientation/image-orientation-none.txt
@@ -0,0 +1,24 @@
+The images should not rotate respecting their EXIF orientation since no image-orientation is specified.
+
+
+Normal 
+Flipped horizontally 
+Rotated 180° 
+Flipped vertically
+
+Rotated 90° CCW and flipped vertically 
+Rotated 90° CCW 
+Rotated 90° CW and flipped vertically 
+Rotated 90° CW
+
+Undefined (invalid value)
+
+img1 size = 100px by 50px
+img2 size = 100px by 50px
+img3 size = 100px by 50px
+img4 size = 100px by 50px
+img5 size = 100px by 50px
+img6 size = 100px by 50px
+img7 size = 100px by 50px
+img8 size = 100px by 50px
+img9 size = 100px by 50px
diff --git a/third_party/blink/web_tests/fast/css/image-orientation/image-orientation.html b/third_party/blink/web_tests/fast/css/image-orientation/image-orientation.html
index dc4688c..c26f428 100644
--- a/third_party/blink/web_tests/fast/css/image-orientation/image-orientation.html
+++ b/third_party/blink/web_tests/fast/css/image-orientation/image-orientation.html
@@ -9,7 +9,7 @@
 
 var expectations = {
     'from-image': ['from-image'],
-    '0deg': ['0deg'],
+    'none': ['none'],
     '': ['-360deg', '-315deg', '315deg', '360deg', '90deg', '-270deg', '-225deg', '45deg',
     '180deg', '-180deg', '-135deg', '135deg', '270deg', '-90deg', '-45deg', '225deg', '0']
 };
@@ -22,7 +22,7 @@
         img.style.imageOrientation = test;
         if (expected == '') {
             shouldBe('img.style.cssText', '""');
-            shouldBe('getComputedStyle(img).imageOrientation', '"0deg"');
+            shouldBe('getComputedStyle(img).imageOrientation', '"from-image"');
         } else {
             shouldBe('img.style.cssText', '"image-orientation: ' + test + ';"');
             shouldBe('getComputedStyle(img).imageOrientation', '"' + expected + '"');
diff --git a/third_party/blink/web_tests/fast/css/style-for-math-with-class-expected.html b/third_party/blink/web_tests/fast/css/style-for-math-with-class-expected.html
index 0ae412a..0e76edd6 100644
--- a/third_party/blink/web_tests/fast/css/style-for-math-with-class-expected.html
+++ b/third_party/blink/web_tests/fast/css/style-for-math-with-class-expected.html
@@ -1,5 +1 @@
 <!DOCTYPE html>
-<style>
-    span { background: green }
-</style>
-<span>Text</span>
diff --git a/third_party/blink/web_tests/fast/events/touch/compositor-touch-hit-rects-iframes-expected.txt b/third_party/blink/web_tests/fast/events/touch/compositor-touch-hit-rects-iframes-expected.txt
index 71ff950c..9d73e16 100644
--- a/third_party/blink/web_tests/fast/events/touch/compositor-touch-hit-rects-iframes-expected.txt
+++ b/third_party/blink/web_tests/fast/events/touch/compositor-touch-hit-rects-iframes-expected.txt
@@ -1,13 +1,13 @@
 This tests verifies the hit test regions given to the compositor when non-composited iframes are involved. It can only be run in DumpRenderTree. The outputted rects should cover the hit test regions of all the listed elements. Enable visualize mode to quickly validate graphically.
 
-iframe: layer(0,0 800x600) has hit test rect (23,130 290x15)
+iframe: layer(800x600) has hit test rect (23,130 290x15)
 
-iframe-nested: layer(0,0 800x600) has hit test rect (33,168 290x15)
+iframe-nested: layer(800x600) has hit test rect (33,168 290x15)
 
-iframe-transform: layer(0,0 800x600) has hit test rect (34,207 320x22)
+iframe-transform: layer(800x600) has hit test rect (34,207 320x23)
 
-iframe-fixed: layer(0,0 800x600) has hit test rect (31,262 332x16)
+iframe-fixed: layer(332x22) has hit test rect (0,0 332x22)
 
-iframe-doc: layer(0,0 800x600) has hit test rect (10,284 385x25)
+iframe-doc: layer(800x600) has hit test rect (10,284 385x25)
 
 
diff --git a/third_party/blink/web_tests/fast/forms/time/time-stepup-stepdown-expected.txt b/third_party/blink/web_tests/fast/forms/time/time-stepup-stepdown-expected.txt
index 7da8a78..b29763f 100644
--- a/third_party/blink/web_tests/fast/forms/time/time-stepup-stepdown-expected.txt
+++ b/third_party/blink/web_tests/fast/forms/time/time-stepup-stepdown-expected.txt
@@ -37,8 +37,8 @@
 
 
 Step-mismatched initial values
-PASS stepUp("20:13", "86400.000", null, 65536) is "00:00"
-PASS stepUp("20:13", "86400.001", null, 65536) is "00:00:00.000"
+PASS stepUp("20:13", "86400.000", null, 65536) is "20:13"
+PASS stepUp("20:13", "86400.001", null, 65536) is "20:13"
 PASS stepUp("20:13", "600", null, 1) is "20:20"
 PASS stepUp("20:13", "600", null, 2) is "20:30"
 PASS stepDown("20:13", "600", null, 1) is "20:10"
diff --git a/third_party/blink/web_tests/fast/forms/time/time-stepup-stepdown.html b/third_party/blink/web_tests/fast/forms/time/time-stepup-stepdown.html
index 3b5391a..fa7ccbf 100644
--- a/third_party/blink/web_tests/fast/forms/time/time-stepup-stepdown.html
+++ b/third_party/blink/web_tests/fast/forms/time/time-stepup-stepdown.html
@@ -80,8 +80,8 @@
 debug('');
 debug('Step-mismatched initial values');
 // There are no step-match values in 00:00 - 23:59:59.999 except 00:00.
-shouldBeEqualToString('stepUp("20:13", "86400.000", null, 65536)', '00:00');
-shouldBeEqualToString('stepUp("20:13", "86400.001", null, 65536)', '00:00:00.000');
+shouldBeEqualToString('stepUp("20:13", "86400.000", null, 65536)', '20:13');
+shouldBeEqualToString('stepUp("20:13", "86400.001", null, 65536)', '20:13');
 shouldBeEqualToString('stepUp("20:13", "600", null, 1)', '20:20');
 shouldBeEqualToString('stepUp("20:13", "600", null, 2)', '20:30');
 shouldBeEqualToString('stepDown("20:13", "600", null, 1)', '20:10');
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/accessibility/element-role-mapping-normal-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/accessibility/element-role-mapping-normal-expected.txt
new file mode 100644
index 0000000..1e0f8d0
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/accessibility/element-role-mapping-normal-expected.txt
@@ -0,0 +1,201 @@
+This is a Header for this page
+Heading
+Division
+
+Paragraph
+
+韓國한국
+Coffee
+- black hot drink
+Milk
+- white cold drink
+x + a / b
+Most important heading here
+Google Chrome
+
+Google Chrome is a free, open-source web browser developed by Google, released in 2008.
+
+Footer in article
+
+HTML | CSS | JavaScript |
+
+Text that appears under aside
+
+Text in a    pre
+element
+
+Most important heading here
+
+Section
+
+Footer in section
+
+Written by Julie
+Visit us at:www.chromium.org
+
+
+January
+This is an open dialog window
+
+Caption
+Cell1	Cell2
+Fig1. - Blue Box
+
+This is a footer.
+
+End of test
+
+This test make sure that unfocuasable elements are mapped implicitly to AX roles.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+AXRole: AXWebArea
+    AXRole: AXGenericContainer
+        AXRole: AXHeader
+            AXRole: AXStaticText "This is a Header for this page"
+                AXRole: AXInlineTextBox "This is a Header for this page"
+        AXRole: AXHeading "Heading"
+            AXRole: AXStaticText "Heading"
+                AXRole: AXInlineTextBox "Heading"
+        AXRole: AXGenericContainer
+            AXRole: AXStaticText "Division"
+                AXRole: AXInlineTextBox "Division"
+        AXRole: AXParagraph
+            AXRole: AXStaticText "Paragraph"
+                AXRole: AXInlineTextBox "Paragraph"
+        AXRole: AXRuby
+            AXRole: AXRubyAnnotation
+                AXRole: AXStaticText "한국"
+                    AXRole: AXInlineTextBox "한국"
+            AXRole: AXStaticText "韓國"
+                AXRole: AXInlineTextBox "韓國"
+        AXRole: AXDescriptionList
+            AXRole: AXDescriptionListTerm
+                AXRole: AXStaticText "Coffee"
+                    AXRole: AXInlineTextBox "Coffee"
+            AXRole: AXDescriptionListDetail
+                AXRole: AXStaticText "- black hot drink"
+                    AXRole: AXInlineTextBox "- black hot drink"
+            AXRole: AXDescriptionListTerm
+                AXRole: AXStaticText "Milk"
+                    AXRole: AXInlineTextBox "Milk"
+            AXRole: AXDescriptionListDetail
+                AXRole: AXStaticText "- white cold drink"
+                    AXRole: AXInlineTextBox "- white cold drink"
+        AXRole: AXMath
+            AXRole: AXStaticText "x "
+                AXRole: AXInlineTextBox "x "
+            AXRole: AXStaticText "+ "
+                AXRole: AXInlineTextBox "+ "
+            AXRole: AXStaticText "a "
+                AXRole: AXInlineTextBox "a "
+            AXRole: AXStaticText "/ "
+                AXRole: AXInlineTextBox "/ "
+            AXRole: AXStaticText "b"
+                AXRole: AXInlineTextBox "b"
+        AXRole: AXMain
+            AXRole: AXArticle
+                AXRole: AXHeaderAsNonLandmark
+                    AXRole: AXHeading "Most important heading here"
+                        AXRole: AXStaticText "Most important heading here"
+                            AXRole: AXInlineTextBox "Most important heading here"
+                AXRole: AXHeading "Google Chrome"
+                    AXRole: AXStaticText "Google Chrome"
+                        AXRole: AXInlineTextBox "Google Chrome"
+                AXRole: AXParagraph
+                    AXRole: AXStaticText "Google Chrome is a free, open-source web browser developed by Google, released in 2008."
+                        AXRole: AXInlineTextBox "Google Chrome is a free, open-source web browser developed by Google, "
+                        AXRole: AXInlineTextBox "released in 2008."
+                AXRole: AXFooterAsNonLandmark
+                    AXRole: AXParagraph
+                        AXRole: AXStaticText "Footer in article"
+                            AXRole: AXInlineTextBox "Footer in article"
+        AXRole: AXNavigation
+            AXRole: AXLink "HTML"
+                AXRole: AXStaticText "HTML"
+                    AXRole: AXInlineTextBox "HTML"
+            AXRole: AXStaticText " | "
+                AXRole: AXInlineTextBox " | "
+            AXRole: AXLink "CSS"
+                AXRole: AXStaticText "CSS"
+                    AXRole: AXInlineTextBox "CSS"
+            AXRole: AXStaticText " | "
+                AXRole: AXInlineTextBox " | "
+            AXRole: AXLink "JavaScript"
+                AXRole: AXStaticText "JavaScript"
+                    AXRole: AXInlineTextBox "JavaScript"
+            AXRole: AXStaticText " |"
+                AXRole: AXInlineTextBox " |"
+        AXRole: AXComplementary
+            AXRole: AXParagraph
+                AXRole: AXStaticText "Text that appears under aside"
+                    AXRole: AXInlineTextBox "Text that appears under aside"
+        AXRole: AXPre
+            AXRole: AXStaticText "Text in a    pre
+element
+"
+                AXRole: AXInlineTextBox "Text in a    pre"
+                AXRole: AXInlineTextBox "
+"
+                AXRole: AXInlineTextBox "element"
+                AXRole: AXInlineTextBox "
+"
+        AXRole: AXSection
+            AXRole: AXHeaderAsNonLandmark
+                AXRole: AXHeading "Most important heading here"
+                    AXRole: AXStaticText "Most important heading here"
+                        AXRole: AXInlineTextBox "Most important heading here"
+            AXRole: AXParagraph
+                AXRole: AXStaticText "Section"
+                    AXRole: AXInlineTextBox "Section"
+            AXRole: AXFooterAsNonLandmark
+                AXRole: AXParagraph
+                    AXRole: AXStaticText "Footer in section"
+                        AXRole: AXInlineTextBox "Footer in section"
+        AXRole: AXGenericContainer
+            AXRole: AXStaticText "Written by Julie"
+                AXRole: AXInlineTextBox "Written by Julie"
+            AXRole: AXLineBreak "
+"
+                AXRole: AXInlineTextBox "
+"
+            AXRole: AXStaticText "Visit us at:www.chromium.org"
+                AXRole: AXInlineTextBox "Visit us at:www.chromium.org"
+            AXRole: AXLineBreak "
+"
+                AXRole: AXInlineTextBox "
+"
+        AXRole: AXParagraph
+            AXRole: AXStaticText "January"
+                AXRole: AXInlineTextBox "January"
+            AXRole: AXDialog
+                AXRole: AXStaticText "This is an open dialog window"
+                    AXRole: AXInlineTextBox "This is an open dialog window"
+        AXRole: AXTable "Caption"
+            AXRole: AXCaption
+                AXRole: AXStaticText "Caption"
+                    AXRole: AXInlineTextBox "Caption"
+            AXRole: AXRow
+                AXRole: AXCell "Cell1"
+                    AXRole: AXStaticText "Cell1"
+                        AXRole: AXInlineTextBox "Cell1"
+                AXRole: AXCell "Cell2"
+                    AXRole: AXStaticText "Cell2"
+                        AXRole: AXInlineTextBox "Cell2"
+        AXRole: AXFigure "Fig1. - Blue Box"
+            AXRole: AXImage "blue"
+            AXRole: AXFigcaption
+                AXRole: AXStaticText "Fig1. - Blue Box"
+                    AXRole: AXInlineTextBox "Fig1. - Blue Box"
+        AXRole: AXEmbeddedObject
+        AXRole: AXFooter
+            AXRole: AXParagraph
+                AXRole: AXStaticText "This is a footer."
+                    AXRole: AXInlineTextBox "This is a footer."
+        AXRole: AXParagraph
+            AXRole: AXStaticText "End of test"
+
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/editing/pasteboard/mathml-sanitizer-bypass-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/editing/pasteboard/mathml-sanitizer-bypass-expected.txt
new file mode 100644
index 0000000..ff0ee721c
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/editing/pasteboard/mathml-sanitizer-bypass-expected.txt
@@ -0,0 +1,15 @@
+This is a testharness.js-based test.
+FAIL Paste blocks script injection resources/testharness.js:1587:25)
+	 expected <div contenteditable>tet<img src>">.<a>.|</a>st</div>,
+	 but got  <div contenteditable>te<br>t<img src>">.<a>.|</a>st</div>,
+	 sameupto <div contenteditable>te
+FAIL Paste blocks HTML style injection resources/testharness.js:1587:25)
+	 expected <div contenteditable>tet">.<a>.|</a>st</div>,
+	 but got  <div contenteditable>te<br>t">.<a>.|</a>st</div>,
+	 sameupto <div contenteditable>te
+FAIL Paste blocks SVG style injection resources/testharness.js:1587:25)
+	 expected <div contenteditable>teA<br>C|<svg></svg>st</div>,
+	 but got  <div contenteditable>teA<math>B<br></math>C|<svg></svg>st</div>,
+	 sameupto <div contenteditable>teA<
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/css/image-orientation/image-orientation-default-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/css/image-orientation/image-orientation-none-expected.png
similarity index 100%
rename from third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/css/image-orientation/image-orientation-default-expected.png
rename to third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/css/image-orientation/image-orientation-none-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/css/style-for-math-with-class-expected.html b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/css/style-for-math-with-class-expected.html
new file mode 100644
index 0000000..0ae412a
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/css/style-for-math-with-class-expected.html
@@ -0,0 +1,5 @@
+<!DOCTYPE html>
+<style>
+    span { background: green }
+</style>
+<span>Text</span>
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/webexposed/global-interface-listing-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/webexposed/global-interface-listing-expected.txt
index 1150b04..cba0c1e 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/webexposed/global-interface-listing-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/webexposed/global-interface-listing-expected.txt
@@ -1188,6 +1188,12 @@
     method getAll
     method set
     setter onchange
+interface CookieStoreManager
+    attribute @@toStringTag
+    method constructor
+    method getSubscriptions
+    method subscribe
+    method unsubscribe
 interface CountQueuingStrategy
     attribute @@toStringTag
     getter highWaterMark
@@ -2362,6 +2368,13 @@
     attribute @@toStringTag
     method constructor
     method detect
+interface FeaturePolicy
+    attribute @@toStringTag
+    method allowedFeatures
+    method allowsFeature
+    method constructor
+    method features
+    method getAllowlistForFeature
 interface FederatedCredential : Credential
     attribute @@toStringTag
     getter iconURL
@@ -7685,6 +7698,7 @@
     attribute @@toStringTag
     getter active
     getter backgroundFetch
+    getter cookies
     getter index
     getter installing
     getter navigationPreload
@@ -10872,6 +10886,7 @@
     getter session
     method constructor
     method getHitTestResults
+    method getHitTestResultsForTransientInput
     method getPose
     method getViewerPose
 interface XRHitResult
@@ -10884,6 +10899,7 @@
     method getPose
 interface XRHitTestSource
     attribute @@toStringTag
+    method cancel
     method constructor
 interface XRInputSource
     attribute @@toStringTag
@@ -10968,6 +10984,7 @@
     method requestAnimationFrame
     method requestHitTest
     method requestHitTestSource
+    method requestHitTestSourceForTransientInput
     method requestReferenceSpace
     method updateRenderState
     setter onend
@@ -10983,6 +11000,15 @@
 interface XRSpace : EventTarget
     attribute @@toStringTag
     method constructor
+interface XRTransientInputHitTestResult
+    attribute @@toStringTag
+    getter inputSource
+    getter results
+    method constructor
+interface XRTransientInputHitTestSource
+    attribute @@toStringTag
+    method cancel
+    method constructor
 interface XRView
     attribute @@toStringTag
     getter eye
diff --git a/third_party/blink/web_tests/http/tests/activedomobject/media-expected.txt b/third_party/blink/web_tests/http/tests/activedomobject/media-expected.txt
index 5fe8d87..a8c80b9 100644
--- a/third_party/blink/web_tests/http/tests/activedomobject/media-expected.txt
+++ b/third_party/blink/web_tests/http/tests/activedomobject/media-expected.txt
@@ -1,8 +1,8 @@
 Tests that reparenting media elements also reparents ActiveDOMObject.
 
 Before Reparenting
-PASS: internals.contextLifecycleStateObserverObjectCount(document) should be '2' and is.
-PASS: internals.contextLifecycleStateObserverObjectCount(iframe) should be '5' and is.
+PASS: internals.contextLifecycleStateObserverObjectCount(document) should be '1' and is.
+PASS: internals.contextLifecycleStateObserverObjectCount(iframe) should be '4' and is.
 After Reparenting
-PASS: internals.contextLifecycleStateObserverObjectCount(document) should be '5' and is.
-PASS: internals.contextLifecycleStateObserverObjectCount(iframe) should be '3' and is.
+PASS: internals.contextLifecycleStateObserverObjectCount(document) should be '4' and is.
+PASS: internals.contextLifecycleStateObserverObjectCount(iframe) should be '2' and is.
diff --git a/third_party/blink/web_tests/http/tests/activedomobject/media.html b/third_party/blink/web_tests/http/tests/activedomobject/media.html
index 9523ef6..73526b6 100644
--- a/third_party/blink/web_tests/http/tests/activedomobject/media.html
+++ b/third_party/blink/web_tests/http/tests/activedomobject/media.html
@@ -10,8 +10,8 @@
         window.iframe = document.querySelector('iframe').contentDocument;
 
         log('Before Reparenting');
-        shouldBe('internals.contextLifecycleStateObserverObjectCount(document)', 2);
-        shouldBe('internals.contextLifecycleStateObserverObjectCount(iframe)', 5);
+        shouldBe('internals.contextLifecycleStateObserverObjectCount(document)', 1);
+        shouldBe('internals.contextLifecycleStateObserverObjectCount(iframe)', 4);
 
         document.body.appendChild(window.iframe.querySelector('video'));
 
@@ -20,8 +20,8 @@
         // but a new one will be created in |document|, so the count is expected
         // to differ by one.
         log('After Reparenting');
-        shouldBe('internals.contextLifecycleStateObserverObjectCount(document)', 5);
-        shouldBe('internals.contextLifecycleStateObserverObjectCount(iframe)', 3);
+        shouldBe('internals.contextLifecycleStateObserverObjectCount(document)', 4);
+        shouldBe('internals.contextLifecycleStateObserverObjectCount(iframe)', 2);
     }
 </script>
 </body>
diff --git a/third_party/blink/web_tests/http/tests/devtools/a11y-axe-core/sources/dom-breakpoints-pane-a11y-test-expected.txt b/third_party/blink/web_tests/http/tests/devtools/a11y-axe-core/sources/dom-breakpoints-pane-a11y-test-expected.txt
index 65648a9..cc84d71 100644
--- a/third_party/blink/web_tests/http/tests/devtools/a11y-axe-core/sources/dom-breakpoints-pane-a11y-test-expected.txt
+++ b/third_party/blink/web_tests/http/tests/devtools/a11y-axe-core/sources/dom-breakpoints-pane-a11y-test-expected.txt
@@ -1,39 +1,8 @@
 Testing accessibility in the DOM breakpoints pane.
 Setting DOM breakpoints.
-DOM breakpoints container text content: DOM BreakpointsSubtree modifiedNode removedNo breakpoints
-DOM breakpoints pane text content: Subtree modifiedNode removedNo breakpoints
+DOM breakpoints container text content: DOM BreakpointsNo breakpointsSubtree modifiedcheckedNode removedunchecked
+DOM breakpoints pane text content: No breakpointsSubtree modifiedcheckedNode removedunchecked
 Running the axe-core linter on the DOM breakpoints pane.
-aXe violations: [
-  {
-    "ruleDescription": "Ensures every form element has a label",
-    "helpUrl": "https://dequeuniversity.com/rules/axe/3.3/label?application=axeAPI",
-    "ruleId": "label",
-    "impact": "critical",
-    "failedNodes": [
-      {
-        "target": [
-          [
-            ".flex-none.flex-auto.vbox:nth-child(7) > .flex-auto.vbox",
-            ".breakpoint-entry:nth-child(1) > span[is=\"dt-checkbox\"]",
-            "#ui-checkbox-label9"
-          ]
-        ],
-        "html": "<input type=\"checkbox\" id=\"ui-checkbox-label9\">",
-        "failureSummary": "Fix any of the following:\n  aria-label attribute does not exist or is empty\n  aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n  Form element does not have an implicit (wrapped) <label>\n  Form element does not have an explicit <label>\n  Element has no title attribute or the title attribute is empty"
-      },
-      {
-        "target": [
-          [
-            ".flex-none.flex-auto.vbox:nth-child(7) > .flex-auto.vbox",
-            ".breakpoint-entry:nth-child(2) > span[is=\"dt-checkbox\"]",
-            "#ui-checkbox-label10"
-          ]
-        ],
-        "html": "<input type=\"checkbox\" id=\"ui-checkbox-label10\">",
-        "failureSummary": "Fix any of the following:\n  aria-label attribute does not exist or is empty\n  aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty\n  Form element does not have an implicit (wrapped) <label>\n  Form element does not have an explicit <label>\n  Element has no title attribute or the title attribute is empty"
-      }
-    ]
-  }
-]
+aXe violations: []
 
 
diff --git a/third_party/blink/web_tests/http/tests/devtools/network/network-cookies-pane-expected.txt b/third_party/blink/web_tests/http/tests/devtools/network/network-cookies-pane-expected.txt
index 01ea5a8..073c0c10 100644
--- a/third_party/blink/web_tests/http/tests/devtools/network/network-cookies-pane-expected.txt
+++ b/third_party/blink/web_tests/http/tests/devtools/network/network-cookies-pane-expected.txt
@@ -11,7 +11,8 @@
 HttpOnly
 Secure
 SameSite
-Name	Value	Domain	Path	Expires / Max-Age	Size	HttpOnly	Secure	SameSite
-mycookie	myvalue	N/A	N/A	N/A	17
-myother	myvalue2	N/A	N/A	N/A	16
+Priority
+Name	Value	Domain	Path	Expires / Max-Age	Size	HttpOnly	Secure	SameSite	Priority
+mycookie	myvalue	N/A	N/A	N/A	17				medium
+myother	myvalue2	N/A	N/A	N/A	16				medium
 
diff --git a/third_party/blink/web_tests/http/tests/devtools/sources/debugger-breakpoints/dom-breakpoints.js b/third_party/blink/web_tests/http/tests/devtools/sources/debugger-breakpoints/dom-breakpoints.js
index 89322f1a..2e2a517 100644
--- a/third_party/blink/web_tests/http/tests/devtools/sources/debugger-breakpoints/dom-breakpoints.js
+++ b/third_party/blink/web_tests/http/tests/devtools/sources/debugger-breakpoints/dom-breakpoints.js
@@ -40,7 +40,8 @@
           rootElement,
           SDK.DOMDebuggerModel.DOMBreakpoint.Type.AttributeModified);
       TestRunner.addResult('Set DOM breakpoint.');
-      pane._items.get(breakpoint).checkbox.click();
+      const breakpointElement = pane._list._itemToElement.get(breakpoint);
+      breakpointElement.firstElementChild.checkboxElement.click();
       TestRunner.addResult('Uncheck DOM breakpoint.');
       TestRunner
           .evaluateInPagePromise(
@@ -50,7 +51,8 @@
 
       function step2() {
         TestRunner.addResult('Check DOM breakpoint.');
-        pane._items.get(breakpoint).checkbox.click();
+        const breakpointElement = pane._list._itemToElement.get(breakpoint);
+        breakpointElement.firstElementChild.checkboxElement.click();
         TestRunner.evaluateInPageWithTimeout(
             'modifyAttribute(\'rootElement\', \'data-test-breakpoint-toggle\', \'bar\')');
         TestRunner.addResult(
diff --git a/third_party/blink/web_tests/http/tests/devtools/sources/debugger-ui/script-formatter-breakpoints-2.js b/third_party/blink/web_tests/http/tests/devtools/sources/debugger-ui/script-formatter-breakpoints-2.js
index 6cfa983..d21688b 100644
--- a/third_party/blink/web_tests/http/tests/devtools/sources/debugger-ui/script-formatter-breakpoints-2.js
+++ b/third_party/blink/web_tests/http/tests/devtools/sources/debugger-ui/script-formatter-breakpoints-2.js
@@ -49,7 +49,7 @@
             .then(() => SourcesTestRunner.dumpBreakpointSidebarPane('while paused in raw'))
             .then(() => SourcesTestRunner.resumeExecution(next));
         SourcesTestRunner.removeBreakpoint(formattedSourceFrame, 3);
-        Sources.sourceFormatter.discardFormattedUISourceCode(panel.visibleView.uiSourceCode());
+        Formatter.sourceFormatter.discardFormattedUISourceCode(panel.visibleView.uiSourceCode());
       }
     }
   ]);
diff --git a/third_party/blink/web_tests/http/tests/devtools/sources/debugger-ui/script-formatter-breakpoints-3.js b/third_party/blink/web_tests/http/tests/devtools/sources/debugger-ui/script-formatter-breakpoints-3.js
index 8822e50..b17afeb9d 100644
--- a/third_party/blink/web_tests/http/tests/devtools/sources/debugger-ui/script-formatter-breakpoints-3.js
+++ b/third_party/blink/web_tests/http/tests/devtools/sources/debugger-ui/script-formatter-breakpoints-3.js
@@ -49,7 +49,7 @@
             .then(() => SourcesTestRunner.dumpBreakpointSidebarPane('while paused in raw'))
             .then(() => SourcesTestRunner.resumeExecution(next));
         // No need to remove breakpoint since formattedUISourceCode was removed.
-        Sources.sourceFormatter.discardFormattedUISourceCode(panel.visibleView.uiSourceCode());
+        Formatter.sourceFormatter.discardFormattedUISourceCode(panel.visibleView.uiSourceCode());
       }
     }
   ]);
diff --git a/third_party/blink/web_tests/http/tests/devtools/sources/formatter-css.js b/third_party/blink/web_tests/http/tests/devtools/sources/formatter-css.js
index 1afe1867..73f80ae9 100644
--- a/third_party/blink/web_tests/http/tests/devtools/sources/formatter-css.js
+++ b/third_party/blink/web_tests/http/tests/devtools/sources/formatter-css.js
@@ -9,7 +9,7 @@
   await TestRunner.addStylesheetTag('resources/style-formatter-obfuscated.css');
 
   var uiSourceCode = await TestRunner.waitForUISourceCode('style-formatter-obfuscated.css');
-  var formatData = await Sources.sourceFormatter.format(uiSourceCode);
+  var formatData = await Formatter.sourceFormatter.format(uiSourceCode);
   var targetContent = (await formatData.formattedSourceCode.requestContent()).content;
 
   TestRunner.addResult(`Formatted:\n${targetContent}`);
@@ -33,7 +33,7 @@
   TestRunner.addResult('Location mapping with formatted source:');
   dumpLocations();
 
-  Sources.sourceFormatter.discardFormattedUISourceCode(formatData.formattedSourceCode);
+  Formatter.sourceFormatter.discardFormattedUISourceCode(formatData.formattedSourceCode);
 
   TestRunner.addResult('Location mapping without formatted source:');
   dumpLocations();
diff --git a/third_party/blink/web_tests/http/tests/devtools/sources/formatter-js.js b/third_party/blink/web_tests/http/tests/devtools/sources/formatter-js.js
index 9042ea7..adc0c70 100644
--- a/third_party/blink/web_tests/http/tests/devtools/sources/formatter-js.js
+++ b/third_party/blink/web_tests/http/tests/devtools/sources/formatter-js.js
@@ -9,7 +9,7 @@
   await TestRunner.addScriptTag('debugger/resources/obfuscated.js');
 
   var uiSourceCode = await TestRunner.waitForUISourceCode('obfuscated.js');
-  var formatData = await Sources.sourceFormatter.format(uiSourceCode);
+  var formatData = await Formatter.sourceFormatter.format(uiSourceCode);
   var targetContent = (await formatData.formattedSourceCode.requestContent()).content;
 
   TestRunner.addResult(`Formatted:\n${targetContent}`);
@@ -24,7 +24,7 @@
   TestRunner.addResult('Location mapping with formatted source:');
   dumpLocations(positions);
 
-  Sources.sourceFormatter.discardFormattedUISourceCode(formatData.formattedSourceCode);
+  Formatter.sourceFormatter.discardFormattedUISourceCode(formatData.formattedSourceCode);
 
   TestRunner.addResult('Location mapping without formatted source:');
   dumpLocations(positions);
diff --git a/third_party/blink/web_tests/http/tests/devtools/sources/inline-styles-scripts-locations.js b/third_party/blink/web_tests/http/tests/devtools/sources/inline-styles-scripts-locations.js
index cbabda8..3ebaf4f0 100644
--- a/third_party/blink/web_tests/http/tests/devtools/sources/inline-styles-scripts-locations.js
+++ b/third_party/blink/web_tests/http/tests/devtools/sources/inline-styles-scripts-locations.js
@@ -18,7 +18,7 @@
 
   TestRunner.addResult("\n\nFormatting source now...\n\n");
 
-  const formatData = await Sources.sourceFormatter.format(source);
+  const formatData = await Formatter.sourceFormatter.format(source);
   const formattedSource = formatData.formattedSourceCode;
   var formattedContent = (await formatData.formattedSourceCode.requestContent()).content;
   TestRunner.addResult(`Formatted Content:\n${formattedContent}`);
diff --git a/third_party/blink/web_tests/http/tests/devtools/startup/sources/debugger/linkifier.js b/third_party/blink/web_tests/http/tests/devtools/startup/sources/debugger/linkifier.js
index b9dd500..3220f48 100644
--- a/third_party/blink/web_tests/http/tests/devtools/startup/sources/debugger/linkifier.js
+++ b/third_party/blink/web_tests/http/tests/devtools/startup/sources/debugger/linkifier.js
@@ -51,10 +51,10 @@
 
   async function uiSourceCodeScriptFormatted() {
     TestRunner.addResult('pretty printed location: ' + link.textContent);
-    var formattedContent = (await Sources.sourceFormatter._formattedSourceCodes.get(uiSourceCode).formatData.formattedSourceCode.requestContent()).content;
+    var formattedContent = (await Formatter.sourceFormatter._formattedSourceCodes.get(uiSourceCode).formatData.formattedSourceCode.requestContent()).content;
     TestRunner.addResult('pretty printed content:');
     TestRunner.addResult(formattedContent);
-    Sources.sourceFormatter.discardFormattedUISourceCode(UI.panels.sources.visibleView.uiSourceCode());
+    Formatter.sourceFormatter.discardFormattedUISourceCode(UI.panels.sources.visibleView.uiSourceCode());
     TestRunner.addResult('reverted location: ' + link.textContent);
 
     var count1 = liveLocationsCount();
diff --git a/third_party/blink/web_tests/http/tests/devtools/startup/sources/debugger/script-formatter-breakpoints-1.js b/third_party/blink/web_tests/http/tests/devtools/startup/sources/debugger/script-formatter-breakpoints-1.js
index 6b3e221..91794d3 100644
--- a/third_party/blink/web_tests/http/tests/devtools/startup/sources/debugger/script-formatter-breakpoints-1.js
+++ b/third_party/blink/web_tests/http/tests/devtools/startup/sources/debugger/script-formatter-breakpoints-1.js
@@ -52,7 +52,7 @@
 
       function pausedInF1Again(callFrames) {
         SourcesTestRunner.dumpBreakpointSidebarPane('while paused in pretty printed');
-        Sources.sourceFormatter.discardFormattedUISourceCode(panel.visibleView.uiSourceCode());
+        Formatter.sourceFormatter.discardFormattedUISourceCode(panel.visibleView.uiSourceCode());
         SourcesTestRunner.waitBreakpointSidebarPane().then(onBreakpointsUpdated);
       }
 
diff --git a/third_party/blink/web_tests/http/tests/devtools/startup/sources/debugger/script-formatter-breakpoints-4.js b/third_party/blink/web_tests/http/tests/devtools/startup/sources/debugger/script-formatter-breakpoints-4.js
index c4bb1886..9fe318b 100644
--- a/third_party/blink/web_tests/http/tests/devtools/startup/sources/debugger/script-formatter-breakpoints-4.js
+++ b/third_party/blink/web_tests/http/tests/devtools/startup/sources/debugger/script-formatter-breakpoints-4.js
@@ -45,7 +45,7 @@
             formattedSourceFrame);
         SourcesTestRunner.removeBreakpoint(formattedSourceFrame, 11);
         TestRunner.addResult('Unformatting.');
-        Sources.sourceFormatter.discardFormattedUISourceCode(panel.visibleView.uiSourceCode());
+        Formatter.sourceFormatter.discardFormattedUISourceCode(panel.visibleView.uiSourceCode());
         var breakpoints = Bindings.breakpointManager._storage._setting.get();
         TestRunner.assertEquals(breakpoints.length, 0, 'There should not be any breakpoints in the storage.');
         next();
diff --git a/third_party/blink/web_tests/http/tests/devtools/startup/sources/debugger/script-formatter-breakpoints-inline-with-sourceURL.js b/third_party/blink/web_tests/http/tests/devtools/startup/sources/debugger/script-formatter-breakpoints-inline-with-sourceURL.js
index 74bfb4c..e87c8b3 100644
--- a/third_party/blink/web_tests/http/tests/devtools/startup/sources/debugger/script-formatter-breakpoints-inline-with-sourceURL.js
+++ b/third_party/blink/web_tests/http/tests/devtools/startup/sources/debugger/script-formatter-breakpoints-inline-with-sourceURL.js
@@ -59,7 +59,7 @@
       function didShowFormattedScriptSource(frame) {
         formattedSourceFrame = frame;
         SourcesTestRunner.removeBreakpoint(formattedSourceFrame, 2);  // Lines here are zero based.
-        Sources.sourceFormatter.discardFormattedUISourceCode(formattedSourceFrame.uiSourceCode());
+        Formatter.sourceFormatter.discardFormattedUISourceCode(formattedSourceFrame.uiSourceCode());
         SourcesTestRunner.waitBreakpointSidebarPane().then(onBreakpointsUpdated);
       }
 
diff --git a/third_party/blink/web_tests/http/tests/devtools/wasm-isolated-code-cache/wasm-cache-test-expected.txt b/third_party/blink/web_tests/http/tests/devtools/wasm-isolated-code-cache/wasm-cache-test-expected.txt
index ddb0553..e3c7954e 100644
--- a/third_party/blink/web_tests/http/tests/devtools/wasm-isolated-code-cache/wasm-cache-test-expected.txt
+++ b/third_party/blink/web_tests/http/tests/devtools/wasm-isolated-code-cache/wasm-cache-test-expected.txt
@@ -10,10 +10,6 @@
 v8.wasm.compiledModule: 2 for large.wasm, 4 for small.wasm
 v8.wasm.moduleCacheHit: 2 for large.wasm
 
-If the baseline compiler is enabled, then only the small wasm modules will fully
-compile before the test ends. In that case, we expect 4 v8.wasm.compiledModule
-events.
-
 v8.wasm.streamFromResponseCallback Properties:
 {
     data : {
diff --git a/third_party/blink/web_tests/http/tests/devtools/wasm-isolated-code-cache/wasm-cache-test.js b/third_party/blink/web_tests/http/tests/devtools/wasm-isolated-code-cache/wasm-cache-test.js
index d5f104a6..cd9ed9ab 100644
--- a/third_party/blink/web_tests/http/tests/devtools/wasm-isolated-code-cache/wasm-cache-test.js
+++ b/third_party/blink/web_tests/http/tests/devtools/wasm-isolated-code-cache/wasm-cache-test.js
@@ -52,10 +52,6 @@
 v8.wasm.streamFromResponseCallback: 8 .wasm resources are fetched
 v8.wasm.compiledModule: 2 for large.wasm, 4 for small.wasm
 v8.wasm.moduleCacheHit: 2 for large.wasm
-
-If the baseline compiler is enabled, then only the small wasm modules will fully
-compile before the test ends. In that case, we expect 4 v8.wasm.compiledModule
-events.
 `
 );
 
diff --git a/third_party/blink/web_tests/http/tests/xmlviewer/dumpAsText/mathml-expected.txt b/third_party/blink/web_tests/http/tests/xmlviewer/dumpAsText/mathml-expected.txt
index cd3d768..43c4376 100644
--- a/third_party/blink/web_tests/http/tests/xmlviewer/dumpAsText/mathml-expected.txt
+++ b/third_party/blink/web_tests/http/tests/xmlviewer/dumpAsText/mathml-expected.txt
@@ -1 +1,2 @@
-This tests that xml viewer is not used when there is a tag in MATHML namespace. SUCCESS
+This tests that xml viewer is not used when there is a tag in MATHML namespace.
+SUCCESS
diff --git a/third_party/blink/web_tests/images/exif-orientation-css-expected.txt b/third_party/blink/web_tests/images/exif-orientation-css-expected.txt
index 8904b74..8977a26 100644
--- a/third_party/blink/web_tests/images/exif-orientation-css-expected.txt
+++ b/third_party/blink/web_tests/images/exif-orientation-css-expected.txt
@@ -1,4 +1,4 @@
-None of the images should be rotated. This test is only valid when run with testRunner (or with WebKitShouldRespectImageOrientation manually set to true).
+All of the images should be rotated and/or flipped according to their exif information.
 
 
 Normal 
@@ -22,10 +22,10 @@
 img2 size = 100px by 50px
 img3 size = 100px by 50px
 img4 size = 100px by 50px
-img5 size = 100px by 50px
-img6 size = 100px by 50px
-img7 size = 100px by 50px
-img8 size = 100px by 50px
+img5 size = 50px by 100px
+img6 size = 50px by 100px
+img7 size = 50px by 100px
+img8 size = 50px by 100px
 img9 size = 100px by 100px
 img10 size = 100px by 100px
 img11 size = 100px by 100px
diff --git a/third_party/blink/web_tests/images/exif-orientation-css.html b/third_party/blink/web_tests/images/exif-orientation-css.html
index 36c67b5..dbfb462 100644
--- a/third_party/blink/web_tests/images/exif-orientation-css.html
+++ b/third_party/blink/web_tests/images/exif-orientation-css.html
@@ -2,7 +2,6 @@
 <head>
 <script>
 if (window.testRunner) {
-    testRunner.overridePreference('WebKitShouldRespectImageOrientation', 1);
     testRunner.dumpAsTextWithPixelResults();
 }
 
@@ -33,7 +32,7 @@
 </style>
 </head>
 <body onload="load()">
-<b>None of the images should be rotated. This test is only valid when run with testRunner (or with WebKitShouldRespectImageOrientation manually set to true).</b><br><br>
+<b>All of the images should be rotated and/or flipped according to their exif information.</b><br><br>
 <div class="container"><div class="image" id="img1" style="content: url(resources/exif-orientation-1-ul.jpg)"></div><br>Normal</div>
 <div class="container"><div class="image" id="img2" style="content: url(resources/exif-orientation-2-ur.jpg)"></div><br>Flipped horizontally</div>
 <div class="container"><div class="image" id="img3" style="content: url(resources/exif-orientation-3-lr.jpg)"></div><br>Rotated 180&deg;</div>
diff --git a/third_party/blink/web_tests/images/exif-orientation-none-css-expected.txt b/third_party/blink/web_tests/images/exif-orientation-none-css-expected.txt
new file mode 100644
index 0000000..3560561
--- /dev/null
+++ b/third_party/blink/web_tests/images/exif-orientation-none-css-expected.txt
@@ -0,0 +1,33 @@
+None of the images should be rotated and/or flipped according to their exif information.
+
+
+Normal 
+Flipped horizontally 
+Rotated 180° 
+Flipped vertically
+
+Rotated 90° CCW and flipped vertically 
+Rotated 90° CCW 
+Rotated 90° CW and flipped vertically 
+Rotated 90° CW
+
+Rotated 90° CCW and flipped vertically 
+Rotated 90° CCW 
+Rotated 90° CW and flipped vertically 
+Rotated 90° CW
+
+Undefined (invalid value)
+
+img1 size = 100px by 50px
+img2 size = 100px by 50px
+img3 size = 100px by 50px
+img4 size = 100px by 50px
+img5 size = 100px by 50px
+img6 size = 100px by 50px
+img7 size = 100px by 50px
+img8 size = 100px by 50px
+img9 size = 100px by 100px
+img10 size = 100px by 100px
+img11 size = 100px by 100px
+img12 size = 100px by 100px
+img13 size = 100px by 50px
diff --git a/third_party/blink/web_tests/images/exif-orientation-none-css.html b/third_party/blink/web_tests/images/exif-orientation-none-css.html
new file mode 100644
index 0000000..a2fb181d
--- /dev/null
+++ b/third_party/blink/web_tests/images/exif-orientation-none-css.html
@@ -0,0 +1,55 @@
+<html>
+<head>
+<script>
+if (window.testRunner) {
+    testRunner.dumpAsTextWithPixelResults();
+}
+
+function log(str) {
+    var li = document.createElement("li");
+    li.appendChild(document.createTextNode(str));
+    var console = document.getElementById("console");
+    console.appendChild(li);
+}
+
+function imageSize(el) {
+    var computedStyle = window.getComputedStyle(el);
+    return computedStyle.width + " by " + computedStyle.height;
+}
+
+
+function load() {
+    for(var i = 1; i <= 13; i++)
+        log("img" + i + " size = " + imageSize(document.getElementById("img" + i)))
+}
+
+</script>
+<style>
+div.image { display: inline-block; border: 1px solid black; }
+div.container { display: inline-block; margin-right: 20px; margin-bottom: 10px; width: 100px; vertical-align: top; }
+img { width: 100px; height: 100px; background-repeat: no-repeat; }
+body { overflow: hidden; image-orientation: none;}
+</style>
+</head>
+<body onload="load()">
+<b>None of the images should be rotated and/or flipped according to their exif information.</b><br><br>
+<div class="container"><div class="image" id="img1" style="content: url(resources/exif-orientation-1-ul.jpg)"></div><br>Normal</div>
+<div class="container"><div class="image" id="img2" style="content: url(resources/exif-orientation-2-ur.jpg)"></div><br>Flipped horizontally</div>
+<div class="container"><div class="image" id="img3" style="content: url(resources/exif-orientation-3-lr.jpg)"></div><br>Rotated 180&deg;</div>
+<div class="container"><div class="image" id="img4" style="content: url(resources/exif-orientation-4-lol.jpg)"></div><br>Flipped vertically</div>
+<br>
+<div class="container"><div class="image" id="img5" style="content: url(resources/exif-orientation-5-lu.jpg)"></div><br>Rotated 90&deg; CCW and flipped vertically</div>
+<div class="container"><div class="image" id="img6" style="content: url(resources/exif-orientation-6-ru.jpg)"></div><br>Rotated 90&deg; CCW</div>
+<div class="container"><div class="image" id="img7" style="content: url(resources/exif-orientation-7-rl.jpg)"></div><br>Rotated 90&deg; CW and flipped vertically</div>
+<div class="container"><div class="image" id="img8" style="content: url(resources/exif-orientation-8-llo.jpg)"></div><br>Rotated 90&deg; CW</div>
+<br>
+<div class="container"><img id="img9" style="background-image: url(resources/exif-orientation-5-lu.jpg)"></img><br>Rotated 90&deg; CCW and flipped vertically</div>
+<div class="container"><img id="img10" style="background-image: url(resources/exif-orientation-6-ru.jpg)"></img><br>Rotated 90&deg; CCW</div>
+<div class="container"><img id="img11" style="background-image: url(resources/exif-orientation-7-rl.jpg)"></img><br>Rotated 90&deg; CW and flipped vertically</div>
+<div class="container"><img id="img12" style="background-image: url(resources/exif-orientation-8-llo.jpg)"></img><br>Rotated 90&deg; CW</div>
+<br>
+<div class="container"><div class="image" id="img13" style="content: url(resources/exif-orientation-9-u.jpg)"></div><br>Undefined (invalid value)</div>
+<br>
+<ul id="console"></ul>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/platform/linux/external/wpt/css/css-transitions/Element-getAnimations.tentative-expected.txt b/third_party/blink/web_tests/platform/linux/external/wpt/css/css-transitions/Element-getAnimations.tentative-expected.txt
deleted file mode 100644
index b044be3..0000000
--- a/third_party/blink/web_tests/platform/linux/external/wpt/css/css-transitions/Element-getAnimations.tentative-expected.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-This is a testharness.js-based test.
-PASS getAnimations returns one Animation per transitioning property
-PASS getAnimations returns CSSTransition objects for CSS Transitions
-PASS getAnimations does not return finished CSS Transitions
-PASS getAnimations does not return a transition for a non-animatable property
-PASS getAnimations does not return a transition for an unsupposed property
-FAIL getAnimations sorts simultaneous transitions by name assert_equals: expected "border-right-width" but got "opacity"
-PASS getAnimations sorts transitions by when they were generated
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/platform/linux/fast/backgrounds/background-svg-scaling-expected.png b/third_party/blink/web_tests/platform/linux/fast/backgrounds/background-svg-scaling-expected.png
new file mode 100644
index 0000000..e43aef8
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/fast/backgrounds/background-svg-scaling-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/css/image-orientation/image-orientation-default-expected.png b/third_party/blink/web_tests/platform/linux/fast/css/image-orientation/image-orientation-default-expected.png
index 9d3ff469..12234c68 100644
--- a/third_party/blink/web_tests/platform/linux/fast/css/image-orientation/image-orientation-default-expected.png
+++ b/third_party/blink/web_tests/platform/linux/fast/css/image-orientation/image-orientation-default-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/fast/css/image-orientation/image-orientation-none-expected.png b/third_party/blink/web_tests/platform/linux/fast/css/image-orientation/image-orientation-none-expected.png
new file mode 100644
index 0000000..9d3ff469
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/fast/css/image-orientation/image-orientation-none-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/images/exif-orientation-css-expected.png b/third_party/blink/web_tests/platform/linux/images/exif-orientation-css-expected.png
index a5e481a..44ecded 100644
--- a/third_party/blink/web_tests/platform/linux/images/exif-orientation-css-expected.png
+++ b/third_party/blink/web_tests/platform/linux/images/exif-orientation-css-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/images/exif-orientation-none-css-expected.png b/third_party/blink/web_tests/platform/linux/images/exif-orientation-none-css-expected.png
new file mode 100644
index 0000000..857277c0
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/images/exif-orientation-none-css-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/exif-orientation-css-expected.png b/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/exif-orientation-css-expected.png
index 43333de7..f986d6c 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/exif-orientation-css-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/exif-orientation-css-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/exif-orientation-none-css-expected.png b/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/exif-orientation-none-css-expected.png
new file mode 100644
index 0000000..e404cb37
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/virtual/exotic-color-space/images/exif-orientation-none-css-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/exif-orientation-css-expected.png b/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/exif-orientation-css-expected.png
index 7c3e1444..ea46c7a 100644
--- a/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/exif-orientation-css-expected.png
+++ b/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/exif-orientation-css-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/exif-orientation-none-css-expected.png b/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/exif-orientation-none-css-expected.png
new file mode 100644
index 0000000..1194d9b
--- /dev/null
+++ b/third_party/blink/web_tests/platform/linux/virtual/gpu-rasterization/images/exif-orientation-none-css-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/external/wpt/css/css-transitions/Element-getAnimations.tentative-expected.txt b/third_party/blink/web_tests/platform/mac/external/wpt/css/css-transitions/Element-getAnimations.tentative-expected.txt
deleted file mode 100644
index b044be3..0000000
--- a/third_party/blink/web_tests/platform/mac/external/wpt/css/css-transitions/Element-getAnimations.tentative-expected.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-This is a testharness.js-based test.
-PASS getAnimations returns one Animation per transitioning property
-PASS getAnimations returns CSSTransition objects for CSS Transitions
-PASS getAnimations does not return finished CSS Transitions
-PASS getAnimations does not return a transition for a non-animatable property
-PASS getAnimations does not return a transition for an unsupposed property
-FAIL getAnimations sorts simultaneous transitions by name assert_equals: expected "border-right-width" but got "opacity"
-PASS getAnimations sorts transitions by when they were generated
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/platform/mac/fast/backgrounds/background-svg-scaling-expected.png b/third_party/blink/web_tests/platform/mac/fast/backgrounds/background-svg-scaling-expected.png
index 3a7ef208..027a214 100644
--- a/third_party/blink/web_tests/platform/mac/fast/backgrounds/background-svg-scaling-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/backgrounds/background-svg-scaling-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/css/image-orientation/image-orientation-default-expected.png b/third_party/blink/web_tests/platform/mac/fast/css/image-orientation/image-orientation-default-expected.png
index 24bb01a..1ce0b48c 100644
--- a/third_party/blink/web_tests/platform/mac/fast/css/image-orientation/image-orientation-default-expected.png
+++ b/third_party/blink/web_tests/platform/mac/fast/css/image-orientation/image-orientation-default-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/fast/css/image-orientation/image-orientation-none-expected.png b/third_party/blink/web_tests/platform/mac/fast/css/image-orientation/image-orientation-none-expected.png
new file mode 100644
index 0000000..87adfa34
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac/fast/css/image-orientation/image-orientation-none-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/images/exif-orientation-css-expected.png b/third_party/blink/web_tests/platform/mac/images/exif-orientation-css-expected.png
index 02ac122..acb0aed 100644
--- a/third_party/blink/web_tests/platform/mac/images/exif-orientation-css-expected.png
+++ b/third_party/blink/web_tests/platform/mac/images/exif-orientation-css-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/images/exif-orientation-none-css-expected.png b/third_party/blink/web_tests/platform/mac/images/exif-orientation-none-css-expected.png
new file mode 100644
index 0000000..35a8886
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac/images/exif-orientation-none-css-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/svg/as-image/image-respects-deviceScaleFactor-expected.png b/third_party/blink/web_tests/platform/mac/svg/as-image/image-respects-deviceScaleFactor-expected.png
index 775efc4e..73135f9 100644
--- a/third_party/blink/web_tests/platform/mac/svg/as-image/image-respects-deviceScaleFactor-expected.png
+++ b/third_party/blink/web_tests/platform/mac/svg/as-image/image-respects-deviceScaleFactor-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/exif-orientation-css-expected.png b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/exif-orientation-css-expected.png
index 33e5432..de3294d 100644
--- a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/exif-orientation-css-expected.png
+++ b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/exif-orientation-css-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/exif-orientation-none-css-expected.png b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/exif-orientation-none-css-expected.png
new file mode 100644
index 0000000..ae1e290
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac/virtual/exotic-color-space/images/exif-orientation-none-css-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/exif-orientation-css-expected.png b/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/exif-orientation-css-expected.png
deleted file mode 100644
index 7b8a281..0000000
--- a/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/exif-orientation-css-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/exif-orientation-none-css-expected.png b/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/exif-orientation-none-css-expected.png
new file mode 100644
index 0000000..6cd8fd8
--- /dev/null
+++ b/third_party/blink/web_tests/platform/mac/virtual/gpu-rasterization/images/exif-orientation-none-css-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/external/wpt/css/css-transitions/Element-getAnimations.tentative-expected.txt b/third_party/blink/web_tests/platform/win/external/wpt/css/css-transitions/Element-getAnimations.tentative-expected.txt
deleted file mode 100644
index b044be3..0000000
--- a/third_party/blink/web_tests/platform/win/external/wpt/css/css-transitions/Element-getAnimations.tentative-expected.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-This is a testharness.js-based test.
-PASS getAnimations returns one Animation per transitioning property
-PASS getAnimations returns CSSTransition objects for CSS Transitions
-PASS getAnimations does not return finished CSS Transitions
-PASS getAnimations does not return a transition for a non-animatable property
-PASS getAnimations does not return a transition for an unsupposed property
-FAIL getAnimations sorts simultaneous transitions by name assert_equals: expected "border-right-width" but got "opacity"
-PASS getAnimations sorts transitions by when they were generated
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/platform/win/fast/backgrounds/background-svg-scaling-expected.png b/third_party/blink/web_tests/platform/win/fast/backgrounds/background-svg-scaling-expected.png
index e43aef8..8bbd523 100644
--- a/third_party/blink/web_tests/platform/win/fast/backgrounds/background-svg-scaling-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/backgrounds/background-svg-scaling-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/css/image-orientation/image-orientation-default-expected.png b/third_party/blink/web_tests/platform/win/fast/css/image-orientation/image-orientation-default-expected.png
index 056a8fd..2b65636 100644
--- a/third_party/blink/web_tests/platform/win/fast/css/image-orientation/image-orientation-default-expected.png
+++ b/third_party/blink/web_tests/platform/win/fast/css/image-orientation/image-orientation-default-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/fast/css/image-orientation/image-orientation-none-expected.png b/third_party/blink/web_tests/platform/win/fast/css/image-orientation/image-orientation-none-expected.png
new file mode 100644
index 0000000..36b957c86
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win/fast/css/image-orientation/image-orientation-none-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/images/exif-orientation-css-expected.png b/third_party/blink/web_tests/platform/win/images/exif-orientation-css-expected.png
index 5e67087..03c1bf6c 100644
--- a/third_party/blink/web_tests/platform/win/images/exif-orientation-css-expected.png
+++ b/third_party/blink/web_tests/platform/win/images/exif-orientation-css-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/images/exif-orientation-none-css-expected.png b/third_party/blink/web_tests/platform/win/images/exif-orientation-none-css-expected.png
new file mode 100644
index 0000000..fc2e4a53
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win/images/exif-orientation-none-css-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/svg/as-image/image-respects-deviceScaleFactor-expected.png b/third_party/blink/web_tests/platform/win/svg/as-image/image-respects-deviceScaleFactor-expected.png
index 4aa17cf..20407b6 100644
--- a/third_party/blink/web_tests/platform/win/svg/as-image/image-respects-deviceScaleFactor-expected.png
+++ b/third_party/blink/web_tests/platform/win/svg/as-image/image-respects-deviceScaleFactor-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/exif-orientation-css-expected.png b/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/exif-orientation-css-expected.png
index ad41d99..7ab53b6 100644
--- a/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/exif-orientation-css-expected.png
+++ b/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/exif-orientation-css-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/exif-orientation-none-css-expected.png b/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/exif-orientation-none-css-expected.png
new file mode 100644
index 0000000..75c02d6b
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win/virtual/exotic-color-space/images/exif-orientation-none-css-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/exif-orientation-css-expected.png b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/exif-orientation-css-expected.png
deleted file mode 100644
index deaeb1c..0000000
--- a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/exif-orientation-css-expected.png
+++ /dev/null
Binary files differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/exif-orientation-none-css-expected.png b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/exif-orientation-none-css-expected.png
new file mode 100644
index 0000000..d1c19f4
--- /dev/null
+++ b/third_party/blink/web_tests/platform/win/virtual/gpu-rasterization/images/exif-orientation-none-css-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/svg/css/getComputedStyle-listing-expected.txt b/third_party/blink/web_tests/svg/css/getComputedStyle-listing-expected.txt
index c3c3aa5d..5289e0b6 100644
--- a/third_party/blink/web_tests/svg/css/getComputedStyle-listing-expected.txt
+++ b/third_party/blink/web_tests/svg/css/getComputedStyle-listing-expected.txt
@@ -169,7 +169,7 @@
 grid-template-rows: none
 height: 100px
 hyphens: manual
-image-orientation: 0deg
+image-orientation: from-image
 image-rendering: auto
 isolation: auto
 justify-content: normal
diff --git a/third_party/blink/web_tests/virtual/stable/webexposed/css-properties-as-js-properties-expected.txt b/third_party/blink/web_tests/virtual/stable/webexposed/css-properties-as-js-properties-expected.txt
index 21133e5..770e8329 100644
--- a/third_party/blink/web_tests/virtual/stable/webexposed/css-properties-as-js-properties-expected.txt
+++ b/third_party/blink/web_tests/virtual/stable/webexposed/css-properties-as-js-properties-expected.txt
@@ -176,6 +176,7 @@
 gridTemplateRows
 height
 hyphens
+imageOrientation
 imageRendering
 inlineSize
 isolation
diff --git a/third_party/blink/web_tests/virtual/stable/webexposed/css-property-listing-expected.txt b/third_party/blink/web_tests/virtual/stable/webexposed/css-property-listing-expected.txt
index c6ede6d..ebb921f 100644
--- a/third_party/blink/web_tests/virtual/stable/webexposed/css-property-listing-expected.txt
+++ b/third_party/blink/web_tests/virtual/stable/webexposed/css-property-listing-expected.txt
@@ -194,6 +194,7 @@
     grid-template-rows
     height
     hyphens
+    image-orientation
     image-rendering
     inline-size
     isolation
diff --git a/third_party/blink/web_tests/virtual/wasm-site-isolated-code-cache/http/tests/devtools/wasm-isolated-code-cache/wasm-cache-test-expected.txt b/third_party/blink/web_tests/virtual/wasm-site-isolated-code-cache/http/tests/devtools/wasm-isolated-code-cache/wasm-cache-test-expected.txt
index 83efdb3..16491b2 100644
--- a/third_party/blink/web_tests/virtual/wasm-site-isolated-code-cache/http/tests/devtools/wasm-isolated-code-cache/wasm-cache-test-expected.txt
+++ b/third_party/blink/web_tests/virtual/wasm-site-isolated-code-cache/http/tests/devtools/wasm-isolated-code-cache/wasm-cache-test-expected.txt
@@ -10,10 +10,6 @@
 v8.wasm.compiledModule: 2 for large.wasm, 4 for small.wasm
 v8.wasm.moduleCacheHit: 2 for large.wasm
 
-If the baseline compiler is enabled, then only the small wasm modules will fully
-compile before the test ends. In that case, we expect 4 v8.wasm.compiledModule
-events.
-
 v8.wasm.cachedModule Properties:
 {
     data : {
diff --git a/third_party/cct_dynamic_module/BUILD.gn b/third_party/cct_dynamic_module/BUILD.gn
index 6fbc508..e1ef425 100644
--- a/third_party/cct_dynamic_module/BUILD.gn
+++ b/third_party/cct_dynamic_module/BUILD.gn
@@ -25,4 +25,3 @@
     "src/src/java/org/chromium/chrome/browser/customtabs/dynamicmodule/IObjectWrapper.aidl",
   ]
 }
-
diff --git a/third_party/closure_compiler/externs/automation.js b/third_party/closure_compiler/externs/automation.js
index 99ac5c9..22c70b3 100644
--- a/third_party/closure_compiler/externs/automation.js
+++ b/third_party/closure_compiler/externs/automation.js
@@ -111,7 +111,6 @@
   COMBO_BOX_GROUPING: 'comboBoxGrouping',
   COMBO_BOX_MENU_BUTTON: 'comboBoxMenuButton',
   COMMENT: 'comment',
-  COMMENT_SECTION: 'commentSection',
   COMPLEMENTARY: 'complementary',
   CONTENT_DELETION: 'contentDeletion',
   CONTENT_INSERTION: 'contentInsertion',
@@ -231,7 +230,6 @@
   RADIO_BUTTON: 'radioButton',
   RADIO_GROUP: 'radioGroup',
   REGION: 'region',
-  REVISION: 'revision',
   ROOT_WEB_AREA: 'rootWebArea',
   ROW: 'row',
   ROW_GROUP: 'rowGroup',
diff --git a/third_party/freetype/BUILD.gn b/third_party/freetype/BUILD.gn
index 0dcf7742..9d0aafca 100644
--- a/third_party/freetype/BUILD.gn
+++ b/third_party/freetype/BUILD.gn
@@ -63,7 +63,9 @@
 
   # FreeType only exposes ft2build.h, all other FreeType headers are accessed by macro names.
   # gn check does not expand macros, so list only this header.
-  public = [ "src/include/ft2build.h" ]
+  public = [
+    "src/include/ft2build.h",
+  ]
 
   sources = [
     "include/freetype-custom-config/ftconfig.h",
diff --git a/third_party/freetype/README.chromium b/third_party/freetype/README.chromium
index 54275f09..01d4f56 100644
--- a/third_party/freetype/README.chromium
+++ b/third_party/freetype/README.chromium
@@ -1,7 +1,7 @@
 Name: FreeType
 URL: http://www.freetype.org/
-Version: VER-2-10-1-87-g0c14a3adb
-Revision: 0c14a3adb08ca5aaac3188a63246361c50b069d4
+Version: VER-2-10-1-88-g7e1b39f6c
+Revision: 7e1b39f6cd1f8e14d45592c9b192ade643d8d9de
 License: Custom license "inspired by the BSD, Artistic, and IJG (Independent
          JPEG Group) licenses"
 License File: src/docs/FTL.TXT
diff --git a/third_party/inspector_protocol/README.chromium b/third_party/inspector_protocol/README.chromium
index 199b07a..263fba8 100644
--- a/third_party/inspector_protocol/README.chromium
+++ b/third_party/inspector_protocol/README.chromium
@@ -2,7 +2,7 @@
 Short Name: inspector_protocol
 URL: https://chromium.googlesource.com/deps/inspector_protocol/
 Version: 0
-Revision: 3d1b8aed28506966cb1f084067b65d87eab683c3
+Revision: c9d951e40c7fad12cb5825d567e38604889d6e0d
 License: BSD
 License File: LICENSE
 Security Critical: yes
diff --git a/third_party/inspector_protocol/templates/Imported_h.template b/third_party/inspector_protocol/templates/Imported_h.template
index d82466a9..fc57764 100644
--- a/third_party/inspector_protocol/templates/Imported_h.template
+++ b/third_party/inspector_protocol/templates/Imported_h.template
@@ -34,9 +34,11 @@
         String local_json = ({{config.imported.from_imported_string % "std::move(json)"}});
         StringUtil::builderAppend(*output, local_json);
     }
+
     void AppendSerialized(std::vector<uint8_t>* output) const override {
-        m_exported->writeBinary(output);
+        m_exported->AppendSerialized(output);
     }
+
     std::unique_ptr<Value> clone() const override {
         return std::unique_ptr<Value>(new ImportedValue(m_exported));
     }
@@ -72,11 +74,6 @@
     {
         return ImportedValue::fromExported(exported);
     }
-
-    static std::unique_ptr<protocol::Value> toValue(const std::unique_ptr<{{"::".join(config.imported.namespace)}}::{{domain.domain}}::API::{{type.id}}>& value)
-    {
-        return toValue(value.get());
-    }
 };
 
   {% endfor %}
diff --git a/third_party/inspector_protocol/templates/TypeBuilder_cpp.template b/third_party/inspector_protocol/templates/TypeBuilder_cpp.template
index 02671d36..a39328c3 100644
--- a/third_party/inspector_protocol/templates/TypeBuilder_cpp.template
+++ b/third_party/inspector_protocol/templates/TypeBuilder_cpp.template
@@ -122,7 +122,7 @@
 
 void {{type.id}}::writeBinary(std::vector<uint8_t>* out) const
 {
-    toValue()->AppendSerialized(out);
+    AppendSerialized(out);
 }
 
 // static
diff --git a/third_party/leveldatabase/BUILD.gn b/third_party/leveldatabase/BUILD.gn
index 527856e..4f78167 100644
--- a/third_party/leveldatabase/BUILD.gn
+++ b/third_party/leveldatabase/BUILD.gn
@@ -18,10 +18,10 @@
 leveldb_sources = [
   "env_chromium.cc",
   "env_chromium.h",
-  "leveldb_features.h",
-  "leveldb_features.cc",
   "leveldb_chrome.cc",
   "leveldb_chrome.h",
+  "leveldb_features.cc",
+  "leveldb_features.h",
   "port/port_chromium.cc",
   "port/port_chromium.h",
   "src/db/builder.cc",
diff --git a/third_party/libaom/libaom_srcs.gni b/third_party/libaom/libaom_srcs.gni
index 69ad34a..47aa8e4 100644
--- a/third_party/libaom/libaom_srcs.gni
+++ b/third_party/libaom/libaom_srcs.gni
@@ -168,8 +168,8 @@
   "//third_party/libaom/source/libaom/av1/decoder/detokenize.c",
   "//third_party/libaom/source/libaom/av1/decoder/detokenize.h",
   "//third_party/libaom/source/libaom/av1/decoder/dthread.h",
-  "//third_party/libaom/source/libaom/av1/decoder/obu.h",
   "//third_party/libaom/source/libaom/av1/decoder/obu.c",
+  "//third_party/libaom/source/libaom/av1/decoder/obu.h",
 ]
 
 aom_av1_encoder_asm_sse2 = [
@@ -257,14 +257,16 @@
   "//third_party/libaom/source/libaom/av1/encoder/corner_match.h",
   "//third_party/libaom/source/libaom/av1/encoder/cost.c",
   "//third_party/libaom/source/libaom/av1/encoder/cost.h",
+  "//third_party/libaom/source/libaom/av1/encoder/dwt.c",
+  "//third_party/libaom/source/libaom/av1/encoder/dwt.h",
+  "//third_party/libaom/source/libaom/av1/encoder/encode_strategy.c",
+  "//third_party/libaom/source/libaom/av1/encoder/encode_strategy.h",
   "//third_party/libaom/source/libaom/av1/encoder/encodeframe.c",
   "//third_party/libaom/source/libaom/av1/encoder/encodeframe.h",
   "//third_party/libaom/source/libaom/av1/encoder/encodemb.c",
   "//third_party/libaom/source/libaom/av1/encoder/encodemb.h",
   "//third_party/libaom/source/libaom/av1/encoder/encodemv.c",
   "//third_party/libaom/source/libaom/av1/encoder/encodemv.h",
-  "//third_party/libaom/source/libaom/av1/encoder/encode_strategy.c",
-  "//third_party/libaom/source/libaom/av1/encoder/encode_strategy.h",
   "//third_party/libaom/source/libaom/av1/encoder/encoder.c",
   "//third_party/libaom/source/libaom/av1/encoder/encoder.h",
   "//third_party/libaom/source/libaom/av1/encoder/encodetxb.c",
@@ -326,8 +328,6 @@
   "//third_party/libaom/source/libaom/third_party/fastfeat/nonmax.c",
   "//third_party/libaom/source/libaom/third_party/vector/vector.c",
   "//third_party/libaom/source/libaom/third_party/vector/vector.h",
-  "//third_party/libaom/source/libaom/av1/encoder/dwt.c",
-  "//third_party/libaom/source/libaom/av1/encoder/dwt.h",
 ]
 
 aom_dsp_common_asm_sse2 = [
@@ -432,6 +432,7 @@
   "//third_party/libaom/source/libaom/aom_dsp/aom_filter.h",
   "//third_party/libaom/source/libaom/aom_dsp/aom_simd.h",
   "//third_party/libaom/source/libaom/aom_dsp/aom_simd_inline.h",
+  "//third_party/libaom/source/libaom/aom_dsp/avg.c",
   "//third_party/libaom/source/libaom/aom_dsp/bitreader_buffer.c",
   "//third_party/libaom/source/libaom/aom_dsp/bitreader_buffer.h",
   "//third_party/libaom/source/libaom/aom_dsp/bitwriter_buffer.c",
@@ -458,7 +459,6 @@
   "//third_party/libaom/source/libaom/aom_dsp/subtract.c",
   "//third_party/libaom/source/libaom/aom_dsp/txfm_common.h",
   "//third_party/libaom/source/libaom/aom_dsp/x86/convolve_common_intrin.h",
-  "//third_party/libaom/source/libaom/aom_dsp/avg.c",
 ]
 
 aom_dsp_decoder_sources = [
@@ -489,12 +489,12 @@
 aom_ports_asm_x86 = [ "//third_party/libaom/source/libaom/aom_ports/emms.asm" ]
 
 aom_rtcd_sources = [
-  "//third_party/libaom/source/libaom/aom_dsp/aom_dsp_rtcd_defs.pl",
   "//third_party/libaom/source/libaom/aom_dsp/aom_dsp_rtcd.c",
-  "//third_party/libaom/source/libaom/aom_scale/aom_scale_rtcd.pl",
+  "//third_party/libaom/source/libaom/aom_dsp/aom_dsp_rtcd_defs.pl",
   "//third_party/libaom/source/libaom/aom_scale/aom_scale_rtcd.c",
-  "//third_party/libaom/source/libaom/av1/common/av1_rtcd_defs.pl",
+  "//third_party/libaom/source/libaom/aom_scale/aom_scale_rtcd.pl",
   "//third_party/libaom/source/libaom/av1/common/av1_rtcd.c",
+  "//third_party/libaom/source/libaom/av1/common/av1_rtcd_defs.pl",
   "//third_party/libaom/source/libaom/build/cmake/rtcd.pl",
 ]
 
@@ -532,9 +532,9 @@
 aom_util_sources = [
   "//third_party/libaom/source/libaom/aom_util/aom_thread.c",
   "//third_party/libaom/source/libaom/aom_util/aom_thread.h",
-  "//third_party/libaom/source/libaom/aom_util/endian_inl.h",
   "//third_party/libaom/source/libaom/aom_util/debug_util.c",
   "//third_party/libaom/source/libaom/aom_util/debug_util.h",
+  "//third_party/libaom/source/libaom/aom_util/endian_inl.h",
 ]
 
 aom_webm_decoder_sources = [
diff --git a/third_party/libpng/BUILD.gn b/third_party/libpng/BUILD.gn
index caa1d127..2b1b0da 100644
--- a/third_party/libpng/BUILD.gn
+++ b/third_party/libpng/BUILD.gn
@@ -2,8 +2,8 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-import("//build/config/chromecast_build.gni")
 import("//build/config/arm.gni")
+import("//build/config/chromecast_build.gni")
 import("//build/config/mips.gni")
 import("//testing/libfuzzer/fuzzer_test.gni")
 
diff --git a/third_party/libsync/BUILD.gn b/third_party/libsync/BUILD.gn
index 6db1a51..3df859f 100644
--- a/third_party/libsync/BUILD.gn
+++ b/third_party/libsync/BUILD.gn
@@ -2,6 +2,7 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+import("//build/config/chromeos/args.gni")
 import("//build/config/linux/pkg_config.gni")
 
 declare_args() {
@@ -9,7 +10,7 @@
   # library shipped with the system. In release builds of Chrome OS we
   # use the system version, but when building on dev workstations we
   # bundle it because Ubuntu doesn't ship a usable version.
-  use_system_libsync = false
+  use_system_libsync = is_chromeos_device
 }
 
 if (!use_system_libsync) {
diff --git a/third_party/lzma_sdk/BUILD.gn b/third_party/lzma_sdk/BUILD.gn
index 6da9d54..b0329b8 100644
--- a/third_party/lzma_sdk/BUILD.gn
+++ b/third_party/lzma_sdk/BUILD.gn
@@ -71,7 +71,7 @@
 
     # Must be after no_chromium_code for warning flags to be ordered correctly.
     ":clang_warnings",
-    ":lzma_defines"
+    ":lzma_defines",
   ]
   public_configs = [ ":lzma_sdk_config" ]
 }
@@ -91,7 +91,7 @@
   ]
 
   deps = [
-    ":lzma_sdk"
+    ":lzma_sdk",
   ]
 
   configs -= [ "//build/config/compiler:chromium_code" ]
@@ -100,7 +100,7 @@
 
     # Must be after no_chromium_code for warning flags to be ordered correctly.
     ":clang_warnings",
-    ":lzma_defines"
+    ":lzma_defines",
   ]
   public_configs = [ ":lzma_sdk_config" ]
 }
diff --git a/third_party/minigbm/BUILD.gn b/third_party/minigbm/BUILD.gn
index 0a100c8d..ad58294 100644
--- a/third_party/minigbm/BUILD.gn
+++ b/third_party/minigbm/BUILD.gn
@@ -68,8 +68,8 @@
   shared_library("minigbm") {
     sources = [
       "src/amdgpu.c",
-      "src/drv.c",
       "src/dri.c",
+      "src/drv.c",
       "src/evdi.c",
       "src/exynos.c",
       "src/gbm.c",
diff --git a/third_party/private-join-and-compute/src/BUILD.gn b/third_party/private-join-and-compute/src/BUILD.gn
index d4eea3969..955af2dc 100644
--- a/third_party/private-join-and-compute/src/BUILD.gn
+++ b/third_party/private-join-and-compute/src/BUILD.gn
@@ -1,7 +1,5 @@
 config("private_join_and_compute_config") {
-  include_dirs = [
-    "//third_party/boringssl/src/include",
-  ]
+  include_dirs = [ "//third_party/boringssl/src/include" ]
 }
 
 source_set("ec_commutative_cipher") {
diff --git a/third_party/sqlite/BUILD.gn b/third_party/sqlite/BUILD.gn
index 3d1ef781..57bd230 100644
--- a/third_party/sqlite/BUILD.gn
+++ b/third_party/sqlite/BUILD.gn
@@ -494,18 +494,15 @@
 }
 
 fuzzer_test("sqlite3_shadow_table_fuzzer") {
-    sources = [
-       "fuzz/shadow_table_fuzzer.cc",
-    ]
-    deps = [
-      ":sqlite",
-    ]
-    additional_configs = [
-      ":sqlite_warnings",
-    ]
+  sources = [
+    "fuzz/shadow_table_fuzzer.cc",
+  ]
+  deps = [
+    ":sqlite",
+  ]
+  additional_configs = [ ":sqlite_warnings" ]
 }
 
-
 fuzzer_test("sqlite3_select_printf_lpm_fuzzer") {
   sources = [
     "fuzz/sql_printf_fuzzer.cc",
diff --git a/third_party/wtl/BUILD.gn b/third_party/wtl/BUILD.gn
index aa629e7..a88545cd 100644
--- a/third_party/wtl/BUILD.gn
+++ b/third_party/wtl/BUILD.gn
@@ -6,7 +6,7 @@
   include_dirs = [ "include" ]
 
   if (is_clang) {
-    defines = [ "_WTL_NO_AUTOMATIC_NAMESPACE"]
+    defines = [ "_WTL_NO_AUTOMATIC_NAMESPACE" ]
   }
 }
 
diff --git a/tools/android/checkstyle/suppressions.xml b/tools/android/checkstyle/suppressions.xml
index 66ab5ee..61fe39f 100644
--- a/tools/android/checkstyle/suppressions.xml
+++ b/tools/android/checkstyle/suppressions.xml
@@ -7,6 +7,8 @@
             files="src/(android_webview|base|chromecast|components|content|device|media|net|remoting|services|testing|third_party|tools|ui|weblayer)/"/>
   <suppress id="UseSharedPreferencesManagerFromChromeCheck"
             files="SharedPreferencesManager.java"/>
+  <suppress id="UseSharedPreferencesManagerFromChromeCheck"
+            files="Test.java"/>
   <!-- All other usages of the app SharedPreference should go through
        ContextUtils. -->
   <suppress id="DefaultSharedPreferencesCheck" files="ContextUtils.java"/>
diff --git a/tools/android/forwarder2/BUILD.gn b/tools/android/forwarder2/BUILD.gn
index c77915a..594646f 100644
--- a/tools/android/forwarder2/BUILD.gn
+++ b/tools/android/forwarder2/BUILD.gn
@@ -8,9 +8,9 @@
 group("forwarder2") {
   testonly = true
   data_deps = [
+    ":device_forwarder_prepare_dist($default_toolchain)",
     ":host_forwarder",
     ":host_forwarder_unittests",
-    ":device_forwarder_prepare_dist($default_toolchain)",
   ]
 }
 
diff --git a/tools/android/md5sum/BUILD.gn b/tools/android/md5sum/BUILD.gn
index 36a81e0..e7c370e 100644
--- a/tools/android/md5sum/BUILD.gn
+++ b/tools/android/md5sum/BUILD.gn
@@ -7,8 +7,8 @@
 
 group("md5sum") {
   data_deps = [
-    ":md5sum_prepare_dist($default_toolchain)",
     ":md5sum_bin_host($default_toolchain)",
+    ":md5sum_prepare_dist($default_toolchain)",
   ]
 
   # TODO(cjhopman): Remove once group data_deps are fixed.
diff --git a/tools/json_schema_compiler/json_schema_api.gni b/tools/json_schema_compiler/json_schema_api.gni
index 3ace2ec..7f3c717 100644
--- a/tools/json_schema_compiler/json_schema_api.gni
+++ b/tools/json_schema_compiler/json_schema_api.gni
@@ -97,7 +97,7 @@
   }
 
   root_namespace = invoker.root_namespace
-  if (defined(invoker.root)) { 
+  if (defined(invoker.root)) {
     root_folder = invoker.root
   } else {
     root_folder = "//"
@@ -221,7 +221,7 @@
   }
 
   # Child directory inside the generated file tree.
-  gen_child_dir = get_path_info(invoker.impl_dir+"/", "gen_dir")
+  gen_child_dir = get_path_info(invoker.impl_dir + "/", "gen_dir")
 
   bundle_generator_registration_name =
       target_name + "_bundle_generator_registration"
diff --git a/tools/mb/mb_config.pyl b/tools/mb/mb_config.pyl
index c3ffe9f..39e99d1 100644
--- a/tools/mb/mb_config.pyl
+++ b/tools/mb/mb_config.pyl
@@ -554,7 +554,7 @@
     },
 
     'client.devtools-frontend.integration': {
-      'DevTools Linux': 'release_bot',
+      'DevTools Linux': 'release_trybot',
     },
 
     'client.openscreen.chromium': {
@@ -941,6 +941,7 @@
       'gpu-fyi-try-win10-nvidia-skgl-64': 'gpu_fyi_tests_release_trybot',
       'win10_chromium_x64_dbg_ng': 'gpu_tests_debug_bot',
       'win10_chromium_x64_rel_ng': 'gpu_tests_release_trybot_resource_whitelisting',
+      'win10_chromium_x64_coverage_rel_ng': 'gpu_tests_release_trybot_resource_whitelisting_code_coverage',
       'win10_chromium_x64_rel_ng_exp': 'release_trybot',
       'win-annotator-rel': 'release_trybot',
       'win-asan': 'asan_clang_fuzzer_static_v8_heap_minimal_symbols_release',
@@ -959,9 +960,9 @@
     },
 
     'tryserver.devtools-frontend': {
-      # Use pure release as CI doesn't have a debug builder.
-      'devtools_frontend_linux_blink_light_rel': 'release_bot',
-      'devtools_frontend_linux_blink_rel': 'release_bot',
+      # Align devtools blink builders with chromium linux-rel
+      'devtools_frontend_linux_blink_light_rel': 'release_trybot',
+      'devtools_frontend_linux_blink_rel': 'release_trybot',
     },
 
     'tryserver.v8': {
@@ -1679,6 +1680,14 @@
       'gpu_tests', 'release_trybot', 'resource_whitelisting',
     ],
 
+    # TODO(crbug.com/1004523) Delete this once coverage mode is enabled on the
+    # standard Windows trybot and the dedicated coverage trybot is no longer
+    # needed.
+    'gpu_tests_release_trybot_resource_whitelisting_code_coverage': [
+      'gpu_tests', 'release_trybot', 'resource_whitelisting',
+      'use_clang_coverage', 'partial_code_coverage_instrumentation',
+    ],
+
     'gpu_tests_release_trybot_no_symbols_use_dummy_lastchange': [
       'gpu_tests', 'release_trybot', 'no_symbols', 'use_dummy_lastchange',
     ],
diff --git a/tools/media_engagement_preload/BUILD.gn b/tools/media_engagement_preload/BUILD.gn
index 78582072..6c8dee9 100644
--- a/tools/media_engagement_preload/BUILD.gn
+++ b/tools/media_engagement_preload/BUILD.gn
@@ -7,46 +7,46 @@
   "media_engagement_preload_pb2.py",
 
   # protobuf dependency
-  "../../third_party/protobuf/python/google/protobuf/descriptor_pb2.py",
-  "../../third_party/protobuf/python/google/protobuf/json_format.py",
-  "../../third_party/protobuf/python/google/protobuf/service.py",
-  "../../third_party/protobuf/python/google/protobuf/message.py",
-  "../../third_party/protobuf/python/google/protobuf/service_reflection.py",
-  "../../third_party/protobuf/python/google/protobuf/text_encoding.py",
-  "../../third_party/protobuf/python/google/protobuf/proto_builder.py",
-  "../../third_party/protobuf/python/google/protobuf/python_protobuf.h",
+  "../../third_party/protobuf/python/google/__init__.py",
+  "../../third_party/protobuf/python/google/protobuf/__init__.py",
   "../../third_party/protobuf/python/google/protobuf/descriptor.py",
   "../../third_party/protobuf/python/google/protobuf/descriptor_database.py",
-  "../../third_party/protobuf/python/google/protobuf/message_factory.py",
-  "../../third_party/protobuf/python/google/protobuf/symbol_database.py",
-  "../../third_party/protobuf/python/google/protobuf/text_format.py",
+  "../../third_party/protobuf/python/google/protobuf/descriptor_pb2.py",
   "../../third_party/protobuf/python/google/protobuf/descriptor_pool.py",
+  "../../third_party/protobuf/python/google/protobuf/internal/__init__.py",
+  "../../third_party/protobuf/python/google/protobuf/internal/_parameterized.py",
+  "../../third_party/protobuf/python/google/protobuf/internal/api_implementation.cc",
+  "../../third_party/protobuf/python/google/protobuf/internal/api_implementation.py",
+  "../../third_party/protobuf/python/google/protobuf/internal/containers.py",
+  "../../third_party/protobuf/python/google/protobuf/internal/decoder.py",
+  "../../third_party/protobuf/python/google/protobuf/internal/encoder.py",
+  "../../third_party/protobuf/python/google/protobuf/internal/enum_type_wrapper.py",
+  "../../third_party/protobuf/python/google/protobuf/internal/extension_dict.py",
+  "../../third_party/protobuf/python/google/protobuf/internal/message_listener.py",
+  "../../third_party/protobuf/python/google/protobuf/internal/message_set_extensions.proto",
+  "../../third_party/protobuf/python/google/protobuf/internal/missing_enum_values.proto",
   "../../third_party/protobuf/python/google/protobuf/internal/more_extensions.proto",
-  "../../third_party/protobuf/python/google/protobuf/internal/wire_format.py",
+  "../../third_party/protobuf/python/google/protobuf/internal/more_extensions_dynamic.proto",
+  "../../third_party/protobuf/python/google/protobuf/internal/more_messages.proto",
+  "../../third_party/protobuf/python/google/protobuf/internal/python_message.py",
+  "../../third_party/protobuf/python/google/protobuf/internal/python_protobuf.cc",
+  "../../third_party/protobuf/python/google/protobuf/internal/test_bad_identifiers.proto",
+  "../../third_party/protobuf/python/google/protobuf/internal/test_util.py",
   "../../third_party/protobuf/python/google/protobuf/internal/testing_refleaks.py",
   "../../third_party/protobuf/python/google/protobuf/internal/type_checkers.py",
-  "../../third_party/protobuf/python/google/protobuf/internal/missing_enum_values.proto",
-  "../../third_party/protobuf/python/google/protobuf/internal/more_messages.proto",
-  "../../third_party/protobuf/python/google/protobuf/internal/containers.py",
-  "../../third_party/protobuf/python/google/protobuf/internal/test_bad_identifiers.proto",
-  "../../third_party/protobuf/python/google/protobuf/internal/_parameterized.py",
-  "../../third_party/protobuf/python/google/protobuf/internal/message_listener.py",
-  "../../third_party/protobuf/python/google/protobuf/internal/enum_type_wrapper.py",
-  "../../third_party/protobuf/python/google/protobuf/internal/api_implementation.py",
-  "../../third_party/protobuf/python/google/protobuf/internal/encoder.py",
-  "../../third_party/protobuf/python/google/protobuf/internal/test_util.py",
   "../../third_party/protobuf/python/google/protobuf/internal/well_known_types.py",
-  "../../third_party/protobuf/python/google/protobuf/internal/decoder.py",
-  "../../third_party/protobuf/python/google/protobuf/internal/api_implementation.cc",
-  "../../third_party/protobuf/python/google/protobuf/internal/python_message.py",
-  "../../third_party/protobuf/python/google/protobuf/internal/extension_dict.py",
-  "../../third_party/protobuf/python/google/protobuf/internal/message_set_extensions.proto",
-  "../../third_party/protobuf/python/google/protobuf/internal/python_protobuf.cc",
-  "../../third_party/protobuf/python/google/protobuf/internal/more_extensions_dynamic.proto",
-  "../../third_party/protobuf/python/google/protobuf/internal/__init__.py",
+  "../../third_party/protobuf/python/google/protobuf/internal/wire_format.py",
+  "../../third_party/protobuf/python/google/protobuf/json_format.py",
+  "../../third_party/protobuf/python/google/protobuf/message.py",
+  "../../third_party/protobuf/python/google/protobuf/message_factory.py",
+  "../../third_party/protobuf/python/google/protobuf/proto_builder.py",
+  "../../third_party/protobuf/python/google/protobuf/python_protobuf.h",
   "../../third_party/protobuf/python/google/protobuf/reflection.py",
-  "../../third_party/protobuf/python/google/protobuf/__init__.py",
-  "../../third_party/protobuf/python/google/__init__.py",
+  "../../third_party/protobuf/python/google/protobuf/service.py",
+  "../../third_party/protobuf/python/google/protobuf/service_reflection.py",
+  "../../third_party/protobuf/python/google/protobuf/symbol_database.py",
+  "../../third_party/protobuf/python/google/protobuf/text_encoding.py",
+  "../../third_party/protobuf/python/google/protobuf/text_format.py",
   "../../third_party/protobuf/third_party/six/six.py",
 ]
 
diff --git a/tools/metrics/actions/actions.xml b/tools/metrics/actions/actions.xml
index 6e55091..8a161ff 100644
--- a/tools/metrics/actions/actions.xml
+++ b/tools/metrics/actions/actions.xml
@@ -4147,11 +4147,13 @@
 </action>
 
 <action name="ChromeColors_ColorApplied">
+  <obsolete>Deprecated as of 12/2019.</obsolete>
   <owner>gayane@chromium.org</owner>
   <description>Chrome Colors was applied from Colors menu.</description>
 </action>
 
 <action name="ChromeColors_DefaultApplied">
+  <obsolete>Deprecated as of 12/2019.</obsolete>
   <owner>gayane@chromium.org</owner>
   <description>Default theme was applied from Colors menu.</description>
 </action>
@@ -4175,6 +4177,7 @@
 </action>
 
 <action name="ChromeColors_ThemeUninstalled">
+  <obsolete>Deprecated as of 7/2019.</obsolete>
   <owner>gayane@chromium.org</owner>
   <description>Webstore theme uninstalled from Colors menu.</description>
 </action>
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index e2f717c..95e651a 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -5114,6 +5114,7 @@
   <int value="0" label="WRLHH_LOGGING_STOPPED_BAD_STATE"/>
   <int value="1" label="PPH_EXTRA_PREVIEW_MESSAGE"/>
   <int value="2" label="PMF_INVALID_INITIATOR_ORIGIN"/>
+  <int value="3" label="RFH_INVALID_WEB_UI_CONTROLLER"/>
 </enum>
 
 <enum name="BadMessageReasonContent">
@@ -5354,6 +5355,7 @@
   <int value="218" label="MDDH_INVALID_STREAM_SELECTION_INFO"/>
   <int value="219" label="REGISTER_PROTOCOL_HANDLER_INVALID_URL"/>
   <int value="220" label="NC_SAME_DOCUMENT_POST_COMMIT_ERROR"/>
+  <int value="221" label="RFH_INVALID_WEB_UI_CONTROLLER"/>
 </enum>
 
 <enum name="BadMessageReasonExtensions">
@@ -16109,6 +16111,7 @@
   <int value="14" label="SENSITIVE_CONTENT_BLOCK"/>
   <int value="15" label="DEEP_SCANNED_SAFE"/>
   <int value="16" label="DEEP_SCANNED_OPENED_DANGEROUS"/>
+  <int value="17" label="PROMPT_FOR_SCANNING"/>
 </enum>
 
 <enum name="DownloadLocationDialogResult">
@@ -16726,6 +16729,7 @@
   <int value="24" label="P-384"/>
   <int value="25" label="P-521"/>
   <int value="29" label="X25519"/>
+  <int value="16696" label="CECPQ2"/>
 </enum>
 
 <enum name="EdidColorSpaceChecksOutcome">
@@ -18928,6 +18932,7 @@
   <int value="653" label="NTPCustomBackgroundEnabled"/>
   <int value="654" label="DNSInterceptionChecksEnabled"/>
   <int value="655" label="PrimaryMouseButtonSwitch"/>
+  <int value="656" label="ReportDeviceCpuInfo"/>
 </enum>
 
 <enum name="EnterprisePolicyInvalidations">
@@ -30804,6 +30809,7 @@
   <int value="3" label="ProgressAfterMoreThreadTime"/>
   <int value="4" label="TimeoutWait"/>
   <int value="5" label="ProgressAfterWait"/>
+  <int value="6" label="ContinueOnNonHostServerTty"/>
 </enum>
 
 <enum name="GPUWebGraphicsContext3D_Init_CanLoseContext">
@@ -45132,6 +45138,7 @@
   <int value="5" label="PSB 10MHz-wide"/>
   <int value="6" label="PSB 5MHz-wide"/>
   <int value="7" label="802.11ac"/>
+  <int value="8" label="802.11ax"/>
 </enum>
 
 <enum name="NetworkPortalResult">
@@ -52930,6 +52937,18 @@
   <int value="21" label="QUIC_CHROMIUM_CLIENT_SESSION_CLOSE_SESSION_ON_ERROR"/>
 </enum>
 
+<enum name="QuickAnswersLoadStatus">
+  <int value="0" label="kNetworkError"/>
+  <int value="1" label="kNoResult"/>
+  <int value="2" label="kSuccess"/>
+</enum>
+
+<enum name="QuickAnswersResultType">
+  <int value="5493" label="kDefinitionResult"/>
+  <int value="6613" label="kTranslationResult"/>
+  <int value="13668" label="kUnitConversionResult"/>
+</enum>
+
 <enum name="QuickofficeErrorTypes">
   <int value="0" label="doc uncaught js exception"/>
   <int value="1" label="docx uncaught js exception"/>
@@ -55671,7 +55690,6 @@
   <int value="31" label="SENSITIVE_CONTENT_WARNING"/>
   <int value="32" label="SENSITIVE_CONTENT_BLOCK"/>
   <int value="33" label="DEEP_SCANNED_SAFE"/>
-  <int value="34" label="DEEP_SCANNED_OPENED_DANGEROUS"/>
 </enum>
 
 <enum name="SBClientDownloadCheckResult">
@@ -57456,6 +57474,13 @@
   <int value="3" label="Error dialog"/>
 </enum>
 
+<enum name="SharingMajorVersionComparison">
+  <int value="0" label="Unknown"/>
+  <int value="1" label="Sender version is lower"/>
+  <int value="2" label="Sender and receiver versions are same"/>
+  <int value="3" label="Sender version is higher"/>
+</enum>
+
 <enum name="SharingMessageType">
   <int value="0" label="Unknown"/>
   <int value="1" label="Ping"/>
@@ -61499,6 +61524,16 @@
   <int value="4" label="TRUSTED_VAULT_PASSPHRASE"/>
 </enum>
 
+<enum name="SyncPassphraseType2">
+  <int value="0" label="No active syncing profiles"/>
+  <int value="1" label="Inconsistent state across profiles"/>
+  <int value="2" label="Implicit passphrase"/>
+  <int value="3" label="Keystore passphrase"/>
+  <int value="4" label="Frozen implicit passphrase"/>
+  <int value="5" label="Custom passphrase"/>
+  <int value="6" label="Trusted vault passphrase"/>
+</enum>
+
 <enum name="SyncPositioningScheme">
   <int value="0" label="UNIQUE_POSITION"/>
   <int value="1" label="POSITION_IN_PARENT"/>
@@ -62133,6 +62168,7 @@
   <int value="0" label="Token was empty"/>
   <int value="1" label="Token stayed unchanged"/>
   <int value="2" label="Token has changed"/>
+  <int value="3" label="Token was cleared"/>
 </enum>
 
 <enum name="TouchActions">
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index 9e49b54c..c051f7d 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -8033,7 +8033,7 @@
   <owner>anasalazar@chromium.com</owner>
   <owner>newcomer@chromium.com</owner>
   <summary>
-    Tracks the animation smoothness for the transitions of the hoseat to and
+    Tracks the animation smoothness for the transitions of the hotseat to and
     from the shown state.
   </summary>
 </histogram>
@@ -12620,6 +12620,10 @@
 
 <histogram name="Autofill.MaskedCardComparisonNetworksMatch"
     enum="BooleanEqual" expires_after="2020-01-15">
+  <obsolete>
+    Deprecated as of 12/2019. The comparison found that Chrome and Payments
+    correctly matched 99.9% of the time.
+  </obsolete>
   <owner>jsaul@google.com</owner>
   <owner>payments-autofill-team@google.com</owner>
   <summary>
@@ -13892,6 +13896,9 @@
 
 <histogram name="AutogeneratedTheme.ColorGenerationTime" units="ms"
     expires_after="2019-12-31">
+  <obsolete>
+    Deprecated 12/2019. No longer tracked.
+  </obsolete>
   <owner>gayane@chromium.org</owner>
   <summary>
     Time that it takes to calculate all the theme properties for autogenerated
@@ -16101,7 +16108,8 @@
 </histogram>
 
 <histogram base="true" name="Blink.Compositing.LayerPromotionCount"
-    units="units" expires_after="2020-01-26">
+    units="units" expires_after="2020-10-26">
+  <owner>pdr@chromium.org</owner>
   <owner>paint-dev@chromium.org</owner>
   <summary>
     Number of composited layers based on various reasons. Recorded when a page
@@ -21924,6 +21932,9 @@
 
 <histogram name="ChromeColors.AppliedColor" enum="ChromeColorsInfo"
     expires_after="2020-05-03">
+  <obsolete>
+    Deprecated 12/2019. No longer tracked.
+  </obsolete>
   <owner>gayane@chromium.org</owner>
   <owner>yyushkina@chromium.org</owner>
   <summary>
@@ -21933,6 +21944,9 @@
 
 <histogram name="ChromeColors.ChangesConfirmed"
     enum="BooleanChromeColorsChangesConfirmed" expires_after="2020-05-03">
+  <obsolete>
+    Deprecated 12/2019. No longer tracked.
+  </obsolete>
   <owner>gayane@chromium.org</owner>
   <owner>yyushkina@chromium.org</owner>
   <summary>
@@ -21953,6 +21967,9 @@
 
 <histogram name="ChromeColors.RevertReason" enum="ChromeColorsRevertReason"
     expires_after="2020-05-03">
+  <obsolete>
+    Deprecated 12/2019. No longer tracked.
+  </obsolete>
   <owner>gayane@chromium.org</owner>
   <owner>yyushkina@chromium.org</owner>
   <summary>
@@ -24493,14 +24510,16 @@
   <owner>sadrul@chromium.org</owner>
   <owner>graphics-dev@chromium.org</owner>
   <summary>
-    Tracks the duration of stages in the pipeline while processing a single
-    frame on the multithread compositor, when the Main frame did not miss its
-    deadline.
+    Tracks the duration of various stages in the pipeline as a single frame goes
+    through the various stages in the compositor. This is reported for frames
+    that went through all the compositor stages in chromium, and was presented
+    to the user.
 
-    A Main frame that missed its deadline is a frame such that
-    SubmitCompositorFrame happened before a commit and activation happened. E.g.
-    BeginImplFrame1 -&gt; BeginMainFrame1 -&gt; SubmitCompositorFrame -&gt;
-    BeginImplFrame2 -&gt; Commit1 -&gt; Activate1 -&gt; SubmitCompositorFrame
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -24509,14 +24528,17 @@
   <owner>sadrul@chromium.org</owner>
   <owner>graphics-dev@chromium.org</owner>
   <summary>
-    Tracks the duration of stages in the pipeline while processing a single
-    frame on the multithread compositor, when the Main frame missed its
-    deadline.
+    Tracks the duration of various stages in the pipeline as a single frame goes
+    through the various stages in the compositor. This is reported for frames
+    that the user did not see: this includes frames that are dropped in various
+    stages inside chromium, or even frames that went through all stages in
+    chromium, but ultimately was not presented to the user.
 
-    A Main frame that missed its deadline is a frame such that
-    SubmitCompositorFrame happened before a commit and activation happened. E.g.
-    BeginImplFrame1 -&gt; BeginMainFrame1 -&gt; SubmitCompositorFrame -&gt;
-    BeginImplFrame2 -&gt; Commit1 -&gt; Activate1 -&gt; SubmitCompositorFrame
+    Warning: This metric may include reports from clients with low-resolution
+    clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
+    will cause this metric to have an abnormal distribution. When considering
+    revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
+    solution.
   </summary>
 </histogram>
 
@@ -51774,6 +51796,21 @@
 </histogram>
 
 <histogram name="FCMInvalidations.TokenStateOnRegistrationRequest"
+    enum="TokenStateOnRegistrationRequest" expires_after="M80">
+  <obsolete>
+    Replaced in 2019-12 by FCMInvalidations.TokenStateOnRegistrationRequest2.
+    This first version did not record the &quot;Token was cleared&quot; bucket.
+  </obsolete>
+  <owner>melandory@chromium.org</owner>
+  <owner>treib@chromium.org</owner>
+  <summary>
+    Records the outcome of instance ID token requests (i.e. whether the token
+    changed). Such requests are made when invalidations are first enabled (e.g.
+    on sign-in), and then periodically every 24 hours.
+  </summary>
+</histogram>
+
+<histogram name="FCMInvalidations.TokenStateOnRegistrationRequest2"
     enum="TokenStateOnRegistrationRequest" expires_after="never">
 <!-- expires-never: For monitoring FCM based invalidations. -->
 
@@ -56869,7 +56906,7 @@
 </histogram>
 
 <histogram name="Graphics.Smoothness.Checkerboarding" units="%"
-    expires_after="M85">
+    expires_after="2020-12-31">
   <owner>sadrul@chromium.org</owner>
   <owner>graphics-dev@chromium.org</owner>
   <summary>
@@ -56894,17 +56931,78 @@
   </summary>
 </histogram>
 
-<histogram name="Graphics.Smoothness.Throughput" units="%" expires_after="M85">
+<histogram name="Graphics.Smoothness.Throughput" units="%"
+    expires_after="2020-12-31">
   <owner>sadrul@chromium.org</owner>
   <owner>graphics-dev@chromium.org</owner>
   <summary>
     Tracks the throughput of a particular sequence of frames (e.g. during
-    scroll, animation, etc.). Note that this is only recorded for sequences of
-    length &gt; 4.
+    scroll, animation, etc.). This is reported in various sub-metrics with
+    suffixes describing the type of the sequence (e.g. TouchScroll etc.).
 
     Throughput is measured by tracking the number of frames the sequence was
     expected to produce, and the number of frames that were actually displayed
     on screen.
+
+    Note that this metric is reported only when there are sufficient number of
+    frames (&gt;= 100). If there are sequences with fewer frames, then these are
+    aggregated until there are enough frames to produce the metric.
+  </summary>
+</histogram>
+
+<histogram name="Graphics.Smoothness.Throughput.AllAnimations" units="%"
+    expires_after="2020-12-31">
+  <owner>sadrul@chromium.org</owner>
+  <owner>ericrk@chromium.org</owner>
+  <summary>
+    Tracks the throughput of a particular sequence of frames for all animations.
+    This metric is reported for all animations (e.g. comositor-driven
+    animations, main-thread driven animations, and raf-driven animations).
+
+    Throughput is measured by tracking the number of frames the sequence was
+    expected to produce, and the number of frames that were actually displayed
+    on screen.
+
+    Note that this metric is reported only when there are sufficient number of
+    frames (&gt;= 100). If there are sequences with fewer frames, then these are
+    aggregated until there are enough frames to produce the metric.
+  </summary>
+</histogram>
+
+<histogram name="Graphics.Smoothness.Throughput.AllInteractions" units="%"
+    expires_after="2020-12-31">
+  <owner>sadrul@chromium.org</owner>
+  <owner>ericrk@chromium.org</owner>
+  <summary>
+    Tracks the throughput of a particular sequence of frames where a user-input
+    (e.g. scroll, pinch) is active. This metric is reported for all sources of
+    user-input (i.e. both touchscreen and touchpad/mouse-wheel).
+
+    Throughput is measured by tracking the number of frames the sequence was
+    expected to produce, and the number of frames that were actually displayed
+    on screen.
+
+    Note that this metric is reported only when there are sufficient number of
+    frames (&gt;= 100). If there are sequences with fewer frames, then these are
+    aggregated until there are enough frames to produce the metric.
+  </summary>
+</histogram>
+
+<histogram name="Graphics.Smoothness.Throughput.AllSequences" units="%"
+    expires_after="2020-12-31">
+  <owner>sadrul@chromium.org</owner>
+  <owner>ericrk@chromium.org</owner>
+  <summary>
+    Tracks the throughput of a particular sequence of frames. This metric is
+    reported for all animations and all interactions.
+
+    Throughput is measured by tracking the number of frames the sequence was
+    expected to produce, and the number of frames that were actually displayed
+    on screen.
+
+    Note that this metric is reported only when there are sufficient number of
+    frames (&gt;= 100). If there are sequences with fewer frames, then these are
+    aggregated until there are enough frames to produce the metric.
   </summary>
 </histogram>
 
@@ -119012,7 +119110,10 @@
 </histogram>
 
 <histogram base="true" name="Previews.ServerLitePage.Penalty" units="ms"
-    expires_after="2020-01-26">
+    expires_after="M80">
+  <obsolete>
+    Removed in M79.
+  </obsolete>
   <owner>robertogden@chromium.org</owner>
   <summary>
     The lost time spent attempting a server lite page via canceling and
@@ -119135,7 +119236,10 @@
 </histogram>
 
 <histogram name="Previews.ServerLitePage.Triggered" enum="Boolean"
-    expires_after="2020-01-26">
+    expires_after="M80">
+  <obsolete>
+    Removed in M79.
+  </obsolete>
   <owner>robertogden@chromium.org</owner>
   <summary>
     Whether or not the server lite page preview is triggered. Recorded on every
@@ -121419,6 +121523,45 @@
   </summary>
 </histogram>
 
+<histogram name="QuickAnswer.Loading.Duration" units="ms"
+    expires_after="2020-12-10">
+  <owner>llin@google.com</owner>
+  <owner>croissant-eng@chromium.org</owner>
+  <summary>
+    For every quick answers fetch, records the duration between fetch start and
+    fetch finish. ChromeOS only.
+  </summary>
+</histogram>
+
+<histogram name="QuickAnswer.Loading.Status" enum="QuickAnswersLoadStatus"
+    expires_after="2020-12-10">
+  <owner>llin@google.com</owner>
+  <owner>croissant-eng@chromium.org</owner>
+  <summary>
+    For every quick answers fetch, records the result status. ChromeOS only.
+  </summary>
+</histogram>
+
+<histogram name="QuickAnswer.Result" enum="QuickAnswersResultType"
+    expires_after="2020-12-10">
+  <owner>llin@google.com</owner>
+  <owner>croissant-eng@chromium.org</owner>
+  <summary>
+    For every quick answer result received event, records the result type.
+    ChromeOS only.
+  </summary>
+</histogram>
+
+<histogram name="QuickAnswer.Result.Duration" units="ms"
+    expires_after="2020-12-10">
+  <owner>llin@google.com</owner>
+  <owner>croissant-eng@chromium.org</owner>
+  <summary>
+    For every quick answer result received event, records the duration between
+    fetch start and fetch finish. ChromeOS only.
+  </summary>
+</histogram>
+
 <histogram name="Quickoffice.csvFormattedCellCount" units="units"
     expires_after="2020-02-29">
   <owner>snopanen@google.com</owner>
@@ -140579,6 +140722,18 @@
   </summary>
 </histogram>
 
+<histogram name="Sharing.MajorVersionComparison"
+    enum="SharingMajorVersionComparison" expires_after="M84">
+<!-- Name completed by histogram_suffixes name="SharingMessage" -->
+
+  <owner>mvanouwerkerk@chromium.org</owner>
+  <owner>knollr@chromium.org</owner>
+  <summary>
+    The comparison of the major version of Chrome on this (the sender) device
+    and the receiver device. Logged when a message is sent. All platforms.
+  </summary>
+</histogram>
+
 <histogram name="Sharing.MessageAckTime" units="ms" expires_after="M84">
 <!-- Name completed by histogram_suffixes name="SharingMessage" -->
 
@@ -151875,6 +152030,15 @@
   <summary>The active sync passphrase type at sync startup.</summary>
 </histogram>
 
+<histogram name="Sync.PassphraseType2" enum="SyncPassphraseType2"
+    expires_after="never">
+<!-- expires-never: important for UMA filtering. -->
+
+  <owner>mmoskvitin@google.com</owner>
+  <owner>mastiz@chromium.org</owner>
+  <summary>Sync passphrase type collected at each metrics upload.</summary>
+</histogram>
+
 <histogram name="Sync.PasswordAssociationTime" units="ms"
     expires_after="2016-06-20">
   <obsolete>
@@ -176793,6 +176957,7 @@
       name="Download.DownloadDangerPrompt.DeepScannedOpenedDangerous"/>
   <affected-histogram name="Download.DownloadDangerPrompt.DeepScannedSafe"/>
   <affected-histogram name="Download.DownloadDangerPrompt.PotentiallyUnwanted"/>
+  <affected-histogram name="Download.DownloadDangerPrompt.PromptForScanning"/>
   <affected-histogram
       name="Download.DownloadDangerPrompt.SensitiveContentBlock"/>
   <affected-histogram
@@ -176813,6 +176978,7 @@
       label="File marked DEEP_SCANNED_OPENED_DANGEROUS"/>
   <suffix name="DeepScannedSafe" label="File marked DEEP_SCANNED_SAFE"/>
   <suffix name="PotentiallyUnwanted" label="File marked POTENTIALLY_UNWANTED"/>
+  <suffix name="PromptForScanning" label="File marked PROMPT_FOR_SCANNING"/>
   <suffix name="SensitiveContentBlock"
       label="File marked SENSITIVE_CONTENT_BLOCK"/>
   <suffix name="SensitiveContentWarning"
@@ -184451,6 +184617,9 @@
 </histogram_suffixes>
 
 <histogram_suffixes name="Previews.ServerLitePage.Penalty.Types" separator=".">
+  <obsolete>
+    Removed in M79.
+  </obsolete>
   <suffix name="Bypass" label="Bypass"/>
   <suffix name="Failure" label="Failure"/>
   <suffix name="Redirect" label="Redirect"/>
@@ -184849,6 +185018,13 @@
   <affected-histogram name="Net.QuicSession.HandshakeRoundTrips"/>
 </histogram_suffixes>
 
+<histogram_suffixes name="QuickAnswersResultType" separator=".">
+  <suffix name="Definition" label="Definition result type"/>
+  <suffix name="Translation" label="Translation result type"/>
+  <suffix name="UnitConversion" label="UnitConversion result type"/>
+  <affected-histogram name="QuickAnswer.Result.Duration"/>
+</histogram_suffixes>
+
 <histogram_suffixes name="QuicPortSelection" separator="">
   <suffix name="RandomPort"
       label="The operating system randomly selected a source port for the
@@ -186964,6 +187140,7 @@
   <suffix name="SMS_FETCH_REQUEST" label="SMS Fetch Request"/>
   <suffix name="UNKNOWN_MESSAGE" label="Unknown Message"/>
   <affected-histogram name="Sharing.DeviceLastUpdatedAge"/>
+  <affected-histogram name="Sharing.MajorVersionComparison"/>
   <affected-histogram name="Sharing.MessageAckTime"/>
   <affected-histogram name="Sharing.MessageReceivedType"/>
   <affected-histogram name="Sharing.SendAckMessageResult"/>
diff --git a/tools/perf/benchmarks/rendering.py b/tools/perf/benchmarks/rendering.py
index 8176519..110e9e8 100644
--- a/tools/perf/benchmarks/rendering.py
+++ b/tools/perf/benchmarks/rendering.py
@@ -24,6 +24,9 @@
     'Graphics.Smoothness.Checkerboarding.TouchScroll',
     'Graphics.Smoothness.Checkerboarding.Video',
     'Graphics.Smoothness.Checkerboarding.WheelScroll',
+    'Graphics.Smoothness.Throughput.AllAnimations',
+    'Graphics.Smoothness.Throughput.AllInteractions',
+    'Graphics.Smoothness.Throughput.AllSequences',
     'Graphics.Smoothness.Throughput.MainThread.MainThreadAnimation',
     'Graphics.Smoothness.Throughput.MainThread.PinchZoom',
     'Graphics.Smoothness.Throughput.MainThread.RAF',
diff --git a/tools/perf/chrome_telemetry_build/BUILD.gn b/tools/perf/chrome_telemetry_build/BUILD.gn
index 96e219e..c11d68e 100644
--- a/tools/perf/chrome_telemetry_build/BUILD.gn
+++ b/tools/perf/chrome_telemetry_build/BUILD.gn
@@ -21,9 +21,9 @@
 
   if (is_android) {
     data_deps += [
+      ":telemetry_weblayer_apks",
       "//android_webview/test:webview_instrumentation_apk",
       "//chrome/android:chrome_public_apk",
-      ":telemetry_weblayer_apks",
     ]
 
     if (enable_chrome_android_internal) {
@@ -81,12 +81,12 @@
   data_deps = []
   if (is_android) {
     data_deps += [
+      "//weblayer/shell/android:weblayer_shell_system_webview_apk",
+
       # TODO(crbug.com/1022823): Remove the following two deps once our tooling
       # is configured to use weblayer_shell_system_webview_apk.
-      "//weblayer/shell/android:weblayer_support_apk",
       "//weblayer/shell/android:weblayer_shell_apk",
-
-      "//weblayer/shell/android:weblayer_shell_system_webview_apk",
+      "//weblayer/shell/android:weblayer_support_apk",
     ]
   }
 }
@@ -101,11 +101,12 @@
   ]
   data_deps = [
     "//third_party/catapult:telemetry_chrome_test_support",
+    "//tools/metrics:metrics_python_tests",
   ]
   if (is_chromeos) {
     data_deps += [
-      "//third_party/breakpad:minidump_stackwalk",
       "//third_party/breakpad:dump_syms",
+      "//third_party/breakpad:minidump_stackwalk",
     ]
   }
   if (is_android) {
@@ -120,8 +121,8 @@
       "$root_out_dir/build.ninja",
     ]
     data_deps += [
-      "//chrome/android/webapk/shell_apk:maps_go_webapk",
       "//build/android:devil_chromium_py",
+      "//chrome/android/webapk/shell_apk:maps_go_webapk",
       "//third_party/breakpad:dump_syms",
       "//third_party/breakpad:minidump_dump",
       "//third_party/breakpad:minidump_stackwalk",
diff --git a/tools/perf/chrome_telemetry_build/chromium_config.py b/tools/perf/chrome_telemetry_build/chromium_config.py
index c5ae1bc2..a6f88b13 100644
--- a/tools/perf/chrome_telemetry_build/chromium_config.py
+++ b/tools/perf/chrome_telemetry_build/chromium_config.py
@@ -10,9 +10,10 @@
 CLIENT_CONFIG_PATH = os.path.join(
     os.path.dirname(os.path.abspath(__file__)), 'binary_dependencies.json')
 
-path_util.AddTelemetryToPath()
-
-from telemetry import project_config
+with path_util.SysPath(path_util.GetTelemetryDir()):
+  from telemetry import project_config
+with path_util.SysPath(path_util.GetVariationsDir()):
+  import fieldtrial_util  # pylint: disable=import-error
 
 
 class ChromiumConfig(project_config.ProjectConfig):
@@ -30,6 +31,9 @@
         client_configs=client_configs, default_chrome_root=default_chrome_root,
         expectations_files=expectations_files)
 
+  def AdjustStartupFlags(self, args):
+    return fieldtrial_util.MergeFeaturesAndFieldTrialsArgs(args)
+
 
 def GetDefaultChromiumConfig():
   return ChromiumConfig(
diff --git a/tools/perf/core/path_util.py b/tools/perf/core/path_util.py
index 8f66398..9964fbc 100644
--- a/tools/perf/core/path_util.py
+++ b/tools/perf/core/path_util.py
@@ -2,10 +2,26 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+import contextlib
 import os
 import sys
 
 
+@contextlib.contextmanager
+def SysPath(path, position=None):
+  if position is None:
+    sys.path.append(path)
+  else:
+    sys.path.insert(position, path)
+  try:
+    yield
+  finally:
+    if sys.path[-1] == path:
+      sys.path.pop()
+    else:
+      sys.path.remove(path)
+
+
 def GetChromiumSrcDir():
   return os.path.abspath(os.path.join(
       os.path.dirname(__file__), '..', '..', '..'))
@@ -46,6 +62,10 @@
   return os.path.join(GetChromiumSrcDir(), 'build', 'android')
 
 
+def GetVariationsDir():
+  return os.path.join(GetChromiumSrcDir(), 'tools', 'variations')
+
+
 def AddTelemetryToPath():
   telemetry_path = GetTelemetryDir()
   if telemetry_path not in sys.path:
diff --git a/tools/perf/core/path_util_unittest.py b/tools/perf/core/path_util_unittest.py
new file mode 100644
index 0000000..dd92f01
--- /dev/null
+++ b/tools/perf/core/path_util_unittest.py
@@ -0,0 +1,20 @@
+# 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 sys
+import unittest
+
+from core import path_util
+
+
+class PathUtilTest(unittest.TestCase):
+
+  def testSysPath(self):
+    sys_path_before = list(sys.path)
+    with path_util.SysPath('_test_dir'):
+      sys_path_within_context = list(sys.path)
+    sys_path_after = list(sys.path)
+
+    self.assertEquals(sys_path_before, sys_path_after)
+    self.assertEquals(sys_path_before + ['_test_dir'], sys_path_within_context)
diff --git a/tools/perf/core/perf_benchmark.py b/tools/perf/core/perf_benchmark.py
index d2798113..76cafe9 100644
--- a/tools/perf/core/perf_benchmark.py
+++ b/tools/perf/core/perf_benchmark.py
@@ -95,7 +95,8 @@
     # binary format that an older build does not expect.
     if (browser_options.browser_type != 'reference' and
         'no-field-trials' not in browser_options.compatibility_mode):
-      variations = self._GetVariationsBrowserArgs(finder_options)
+      variations = self._GetVariationsBrowserArgs(
+          finder_options, browser_options.extra_browser_args)
       browser_options.AppendExtraBrowserArgs(variations)
 
       browser_options.profile_files_to_copy.extend(
@@ -130,7 +131,7 @@
       return 'chromeos'
     return target_os
 
-  def _GetVariationsBrowserArgs(self, finder_options):
+  def _GetVariationsBrowserArgs(self, finder_options, current_args):
     chrome_root = finder_options.chrome_root
     if chrome_root is None:
       chrome_root = path_module.GetChromiumSrcDir()
@@ -142,7 +143,8 @@
 
     return fieldtrial_util.GenerateArgs(
         os.path.join(variations_dir, 'fieldtrial_testing_config.json'),
-        self.FixupTargetOS(possible_browser.target_os))
+        self.FixupTargetOS(possible_browser.target_os),
+        current_args)
 
   @staticmethod
   def _GetPossibleBuildDirectories(chrome_src_dir, browser_type):
diff --git a/ui/accessibility/ax_enum_util.cc b/ui/accessibility/ax_enum_util.cc
index 40e3d0da..1acb610 100644
--- a/ui/accessibility/ax_enum_util.cc
+++ b/ui/accessibility/ax_enum_util.cc
@@ -313,8 +313,6 @@
       return "comboBoxMenuButton";
     case ax::mojom::Role::kComment:
       return "comment";
-    case ax::mojom::Role::kCommentSection:
-      return "commentSection";
     case ax::mojom::Role::kComplementary:
       return "complementary";
     case ax::mojom::Role::kContentDeletion:
@@ -553,8 +551,6 @@
       return "radioGroup";
     case ax::mojom::Role::kRegion:
       return "region";
-    case ax::mojom::Role::kRevision:
-      return "revision";
     case ax::mojom::Role::kRootWebArea:
       return "rootWebArea";
     case ax::mojom::Role::kRow:
@@ -695,8 +691,6 @@
     return ax::mojom::Role::kComboBoxMenuButton;
   if (0 == strcmp(role, "comment"))
     return ax::mojom::Role::kComment;
-  if (0 == strcmp(role, "commentSection"))
-    return ax::mojom::Role::kCommentSection;
   if (0 == strcmp(role, "complementary"))
     return ax::mojom::Role::kComplementary;
   if (0 == strcmp(role, "contentDeletion"))
@@ -935,8 +929,6 @@
     return ax::mojom::Role::kRadioGroup;
   if (0 == strcmp(role, "region"))
     return ax::mojom::Role::kRegion;
-  if (0 == strcmp(role, "revision"))
-    return ax::mojom::Role::kRevision;
   if (0 == strcmp(role, "rootWebArea"))
     return ax::mojom::Role::kRootWebArea;
   if (0 == strcmp(role, "row"))
diff --git a/ui/accessibility/ax_enums.mojom b/ui/accessibility/ax_enums.mojom
index 7bc7d48..0ba3a708 100644
--- a/ui/accessibility/ax_enums.mojom
+++ b/ui/accessibility/ax_enums.mojom
@@ -129,7 +129,6 @@
   kComboBoxMenuButton,
   kComplementary,
   kComment,
-  kCommentSection,
   kContentDeletion,
   kContentInsertion,
   kContentInfo,
@@ -261,7 +260,6 @@
   kRadioButton,
   kRadioGroup,
   kRegion,
-  kRevision,
   kRootWebArea,
   kRow,
   kRowGroup,
diff --git a/ui/accessibility/ax_role_properties.cc b/ui/accessibility/ax_role_properties.cc
index 25ffdf9..54c72b9 100644
--- a/ui/accessibility/ax_role_properties.cc
+++ b/ui/accessibility/ax_role_properties.cc
@@ -191,6 +191,7 @@
 bool IsItemLike(const ax::mojom::Role role) {
   switch (role) {
     case ax::mojom::Role::kArticle:
+    case ax::mojom::Role::kComment:
     case ax::mojom::Role::kListItem:
     case ax::mojom::Role::kMenuItem:
     case ax::mojom::Role::kMenuItemRadio:
diff --git a/ui/accessibility/ax_tree.cc b/ui/accessibility/ax_tree.cc
index 7185b528..41752651 100644
--- a/ui/accessibility/ax_tree.cc
+++ b/ui/accessibility/ax_tree.cc
@@ -1896,6 +1896,7 @@
     // matches ordered set role.
     if ((node_is_radio_button &&
          child->data().role == ax::mojom::Role::kRadioButton) ||
+        child->data().role == ax::mojom::Role::kComment ||
         (!node_is_radio_button && child->SetRoleMatchesItemRole(ordered_set))) {
       int child_level =
           child->GetIntAttribute(ax::mojom::IntAttribute::kHierarchicalLevel);
diff --git a/ui/accessibility/platform/ax_platform_node_auralinux.cc b/ui/accessibility/platform/ax_platform_node_auralinux.cc
index cf79174..0568314 100644
--- a/ui/accessibility/platform/ax_platform_node_auralinux.cc
+++ b/ui/accessibility/platform/ax_platform_node_auralinux.cc
@@ -2147,8 +2147,7 @@
 
 // static
 ImplementedAtkInterfaces AXPlatformNodeAuraLinux::GetGTypeInterfaceMask(
-    const AXNodeData& data,
-    AtkRole atk_role) {
+    const AXNodeData& data) {
   // The default implementation set includes the AtkComponent and AtkAction
   // interfaces, which are provided by all the AtkObjects that we produce.
   ImplementedAtkInterfaces interface_mask;
@@ -2159,32 +2158,31 @@
       interface_mask.Add(ImplementedAtkInterfaces::kHypertext);
   }
 
-  // Value Interface
   if (data.IsRangeValueSupported())
     interface_mask.Add(ImplementedAtkInterfaces::kValue);
 
-  // Document Interface
-  if (atk_role == ATK_ROLE_DOCUMENT_WEB)
+  if (ui::IsDocument(data.role))
     interface_mask.Add(ImplementedAtkInterfaces::kDocument);
 
-  // Image Interface
-  if (atk_role == ATK_ROLE_IMAGE || atk_role == ATK_ROLE_IMAGE_MAP)
+  if (IsImage(data.role))
     interface_mask.Add(ImplementedAtkInterfaces::kImage);
 
   // The AtkHyperlinkImpl interface allows getting a AtkHyperlink from an
   // AtkObject. It is indeed implemented by actual web hyperlinks, but also by
   // objects that will become embedded objects in ATK hypertext, so the name is
   // a bit of a misnomer from the ATK API.
-  if (atk_role == ATK_ROLE_LINK || !ui::IsText(data.role))
+  if (IsLink(data.role) || data.role == ax::mojom::Role::kAnchor ||
+      !ui::IsText(data.role)) {
     interface_mask.Add(ImplementedAtkInterfaces::kHyperlink);
+  }
 
-  if (atk_role == ATK_ROLE_FRAME)
+  if (data.role == ax::mojom::Role::kWindow)
     interface_mask.Add(ImplementedAtkInterfaces::kWindow);
 
   if (IsContainerWithSelectableChildren(data.role))
     interface_mask.Add(ImplementedAtkInterfaces::kSelection);
 
-  if (atk_role == ATK_ROLE_TABLE || atk_role == ATK_ROLE_TREE_TABLE)
+  if (IsTableLike(data.role))
     interface_mask.Add(ImplementedAtkInterfaces::kTable);
 
   // Because the TableCell Interface is only supported in ATK version 2.12 and
@@ -2192,10 +2190,8 @@
   // enough version. If we don't, GetAccessibilityGType will exclude
   // AtkTableCell from the supported interfaces and none of its methods or
   // properties will be exposed to assistive technologies.
-  if (atk_role == ATK_ROLE_TABLE_CELL || atk_role == ATK_ROLE_COLUMN_HEADER ||
-      atk_role == ATK_ROLE_ROW_HEADER) {
+  if (IsCellOrTableHeader(data.role))
     interface_mask.Add(ImplementedAtkInterfaces::kTableCell);
-  }
 
   return interface_mask;
 }
@@ -2302,7 +2298,7 @@
 
 AtkObject* AXPlatformNodeAuraLinux::CreateAtkObject() {
   EnsureGTypeInit();
-  interface_mask_ = GetGTypeInterfaceMask(GetData(), GetAtkRole());
+  interface_mask_ = GetGTypeInterfaceMask(GetData());
   GType type = GetAccessibilityGType();
   AtkObject* atk_object = static_cast<AtkObject*>(g_object_new(type, nullptr));
 
@@ -2376,8 +2372,6 @@
     case ax::mojom::Role::kAnchor:
       return ATK_ROLE_LINK;
     case ax::mojom::Role::kComment:
-    case ax::mojom::Role::kCommentSection:
-    case ax::mojom::Role::kRevision:
     case ax::mojom::Role::kSuggestion:
       return ATK_ROLE_SECTION;
     case ax::mojom::Role::kApplication:
@@ -3025,8 +3019,7 @@
     // If the object's role changes and that causes its
     // interface mask to change, we need to create a new
     // AtkObject for it.
-    ImplementedAtkInterfaces interface_mask =
-        GetGTypeInterfaceMask(GetData(), GetAtkRole());
+    ImplementedAtkInterfaces interface_mask = GetGTypeInterfaceMask(GetData());
     if (interface_mask != interface_mask_)
       DestroyAtkObjects();
   }
diff --git a/ui/accessibility/platform/ax_platform_node_auralinux.h b/ui/accessibility/platform/ax_platform_node_auralinux.h
index 27cf900e..eb349145 100644
--- a/ui/accessibility/platform/ax_platform_node_auralinux.h
+++ b/ui/accessibility/platform/ax_platform_node_auralinux.h
@@ -302,8 +302,7 @@
 
   // This is static to ensure that we aren't trying to access the rest of the
   // accessibility tree during node initialization.
-  static ImplementedAtkInterfaces GetGTypeInterfaceMask(const AXNodeData& data,
-                                                        AtkRole atk_role);
+  static ImplementedAtkInterfaces GetGTypeInterfaceMask(const AXNodeData& data);
 
   GType GetAccessibilityGType();
   AtkObject* CreateAtkObject();
diff --git a/ui/accessibility/platform/ax_platform_node_mac.mm b/ui/accessibility/platform/ax_platform_node_mac.mm
index 4068877..314a6db 100644
--- a/ui/accessibility/platform/ax_platform_node_mac.mm
+++ b/ui/accessibility/platform/ax_platform_node_mac.mm
@@ -54,7 +54,6 @@
       {ax::mojom::Role::kComboBoxGrouping, NSAccessibilityGroupRole},
       {ax::mojom::Role::kComboBoxMenuButton, NSAccessibilityButtonRole},
       {ax::mojom::Role::kComment, NSAccessibilityGroupRole},
-      {ax::mojom::Role::kCommentSection, NSAccessibilityGroupRole},
       {ax::mojom::Role::kComplementary, NSAccessibilityGroupRole},
       {ax::mojom::Role::kContentDeletion, NSAccessibilityGroupRole},
       {ax::mojom::Role::kContentInsertion, NSAccessibilityGroupRole},
@@ -176,7 +175,6 @@
       {ax::mojom::Role::kRadioButton, NSAccessibilityRadioButtonRole},
       {ax::mojom::Role::kRadioGroup, NSAccessibilityRadioGroupRole},
       {ax::mojom::Role::kRegion, NSAccessibilityGroupRole},
-      {ax::mojom::Role::kRevision, NSAccessibilityGroupRole},
       {ax::mojom::Role::kRootWebArea, @"AXWebArea"},
       {ax::mojom::Role::kRow, NSAccessibilityRowRole},
       {ax::mojom::Role::kRowGroup, NSAccessibilityGroupRole},
diff --git a/ui/accessibility/platform/ax_platform_node_win.cc b/ui/accessibility/platform/ax_platform_node_win.cc
index a5b6dcf3..c7e87186 100644
--- a/ui/accessibility/platform/ax_platform_node_win.cc
+++ b/ui/accessibility/platform/ax_platform_node_win.cc
@@ -4603,8 +4603,6 @@
       return ROLE_SYSTEM_LINK;
 
     case ax::mojom::Role::kComment:
-    case ax::mojom::Role::kCommentSection:
-    case ax::mojom::Role::kRevision:
     case ax::mojom::Role::kSuggestion:
       return ROLE_SYSTEM_GROUPING;
 
@@ -5213,9 +5211,6 @@
       return IA2_ROLE_COMMENT;
     case ax::mojom::Role::kSuggestion:
       return IA2_ROLE_SUGGESTION;
-    case ax::mojom::Role::kCommentSection:
-    case ax::mojom::Role::kRevision:
-      return IA2_ROLE_SECTION;
     case ax::mojom::Role::kBanner:
     case ax::mojom::Role::kHeader:
       // CORE-AAM recommends LANDMARK instead of HEADER.
@@ -5433,8 +5428,6 @@
       return L"link";
 
     case ax::mojom::Role::kComment:
-    case ax::mojom::Role::kCommentSection:
-    case ax::mojom::Role::kRevision:
     case ax::mojom::Role::kSuggestion:
       return L"group";
 
@@ -6108,8 +6101,6 @@
       return UIA_HyperlinkControlTypeId;
 
     case ax::mojom::Role::kComment:
-    case ax::mojom::Role::kCommentSection:
-    case ax::mojom::Role::kRevision:
     case ax::mojom::Role::kSuggestion:
       return ROLE_SYSTEM_GROUPING;
 
diff --git a/ui/base/BUILD.gn b/ui/base/BUILD.gn
index 0178944c..7ff80e8 100644
--- a/ui/base/BUILD.gn
+++ b/ui/base/BUILD.gn
@@ -1162,8 +1162,8 @@
       "$root_out_dir/ui_test.pak",  # TODO(brettw): remove this line.
     ]
     data_deps += [
-      "//ui/resources:ui_test_pak",  # TODO(brettw): this does nothing.
       "//third_party/mesa_headers",
+      "//ui/resources:ui_test_pak",  # TODO(brettw): this does nothing.
     ]
   }
   if (is_linux || is_win || is_fuchsia) {
diff --git a/ui/base/x/x11_shm_image_pool.cc b/ui/base/x/x11_shm_image_pool.cc
index 077f7dc..f6717a3 100644
--- a/ui/base/x/x11_shm_image_pool.cc
+++ b/ui/base/x/x11_shm_image_pool.cc
@@ -11,15 +11,16 @@
 
 namespace ui {
 
-X11ShmImagePool::X11ShmImagePool(base::TaskRunner* host_task_runner,
-                                 base::TaskRunner* event_task_runner,
-                                 XDisplay* display,
-                                 XID drawable,
-                                 Visual* visual,
-                                 int depth,
-                                 std::size_t frames_pending)
-    : XShmImagePoolBase(host_task_runner,
-                        event_task_runner,
+X11ShmImagePool::X11ShmImagePool(
+    scoped_refptr<base::SequencedTaskRunner> host_task_runner,
+    scoped_refptr<base::SequencedTaskRunner> event_task_runner,
+    XDisplay* display,
+    XID drawable,
+    Visual* visual,
+    int depth,
+    std::size_t frames_pending)
+    : XShmImagePoolBase(std::move(host_task_runner),
+                        std::move(event_task_runner),
                         display,
                         drawable,
                         visual,
diff --git a/ui/base/x/x11_shm_image_pool.h b/ui/base/x/x11_shm_image_pool.h
index 498208546..c74cff51 100644
--- a/ui/base/x/x11_shm_image_pool.h
+++ b/ui/base/x/x11_shm_image_pool.h
@@ -18,8 +18,8 @@
     : public XShmImagePoolBase,
       public PlatformEventDispatcher {
  public:
-  X11ShmImagePool(base::TaskRunner* host_task_runner,
-                  base::TaskRunner* event_task_runner,
+  X11ShmImagePool(scoped_refptr<base::SequencedTaskRunner> host_task_runner,
+                  scoped_refptr<base::SequencedTaskRunner> event_task_runner,
                   XDisplay* display,
                   XID drawable,
                   Visual* visual,
diff --git a/ui/base/x/x11_shm_image_pool_base.cc b/ui/base/x/x11_shm_image_pool_base.cc
index 8505b62..cabf6e0 100644
--- a/ui/base/x/x11_shm_image_pool_base.cc
+++ b/ui/base/x/x11_shm_image_pool_base.cc
@@ -88,15 +88,16 @@
 
 XShmImagePoolBase::SwapClosure::~SwapClosure() = default;
 
-XShmImagePoolBase::XShmImagePoolBase(base::TaskRunner* host_task_runner,
-                                     base::TaskRunner* event_task_runner,
-                                     XDisplay* display,
-                                     XID drawable,
-                                     Visual* visual,
-                                     int depth,
-                                     std::size_t frames_pending)
-    : host_task_runner_(host_task_runner),
-      event_task_runner_(event_task_runner),
+XShmImagePoolBase::XShmImagePoolBase(
+    scoped_refptr<base::SequencedTaskRunner> host_task_runner,
+    scoped_refptr<base::SequencedTaskRunner> event_task_runner,
+    XDisplay* display,
+    XID drawable,
+    Visual* visual,
+    int depth,
+    std::size_t frames_pending)
+    : host_task_runner_(std::move(host_task_runner)),
+      event_task_runner_(std::move(event_task_runner)),
       display_(display),
       drawable_(drawable),
       visual_(visual),
diff --git a/ui/base/x/x11_shm_image_pool_base.h b/ui/base/x/x11_shm_image_pool_base.h
index 8056e95..3ef616f 100644
--- a/ui/base/x/x11_shm_image_pool_base.h
+++ b/ui/base/x/x11_shm_image_pool_base.h
@@ -13,7 +13,7 @@
 #include "base/component_export.h"
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
-#include "base/task_runner.h"
+#include "base/sequenced_task_runner.h"
 #include "third_party/skia/include/core/SkBitmap.h"
 #include "third_party/skia/include/core/SkCanvas.h"
 #include "ui/base/x/x11_util.h"
@@ -29,8 +29,8 @@
 class COMPONENT_EXPORT(UI_BASE_X) XShmImagePoolBase
     : public base::RefCountedThreadSafe<XShmImagePoolBase> {
  public:
-  XShmImagePoolBase(base::TaskRunner* host_task_runner,
-                    base::TaskRunner* event_task_runner,
+  XShmImagePoolBase(scoped_refptr<base::SequencedTaskRunner> host_task_runner,
+                    scoped_refptr<base::SequencedTaskRunner> event_task_runner,
                     XDisplay* display,
                     XID drawable,
                     Visual* visual,
@@ -66,8 +66,8 @@
 
   bool CanDispatchXEvent(XEvent* xev);
 
-  base::TaskRunner* const host_task_runner_;
-  base::TaskRunner* const event_task_runner_;
+  const scoped_refptr<base::SequencedTaskRunner> host_task_runner_;
+  const scoped_refptr<base::SequencedTaskRunner> event_task_runner_;
 
 #ifndef NDEBUG
   bool dispatcher_registered_ = false;
diff --git a/ui/base/x/x11_shm_image_pool_ozone.cc b/ui/base/x/x11_shm_image_pool_ozone.cc
index 55523a9bd..33eb582 100644
--- a/ui/base/x/x11_shm_image_pool_ozone.cc
+++ b/ui/base/x/x11_shm_image_pool_ozone.cc
@@ -10,15 +10,16 @@
 
 namespace ui {
 
-X11ShmImagePoolOzone::X11ShmImagePoolOzone(base::TaskRunner* host_task_runner,
-                                           base::TaskRunner* event_task_runner,
-                                           XDisplay* display,
-                                           XID drawable,
-                                           Visual* visual,
-                                           int depth,
-                                           std::size_t frames_pending)
-    : XShmImagePoolBase(host_task_runner,
-                        event_task_runner,
+X11ShmImagePoolOzone::X11ShmImagePoolOzone(
+    scoped_refptr<base::SequencedTaskRunner> host_task_runner,
+    scoped_refptr<base::SequencedTaskRunner> event_task_runner,
+    XDisplay* display,
+    XID drawable,
+    Visual* visual,
+    int depth,
+    std::size_t frames_pending)
+    : XShmImagePoolBase(std::move(host_task_runner),
+                        std::move(event_task_runner),
                         display,
                         drawable,
                         visual,
diff --git a/ui/base/x/x11_shm_image_pool_ozone.h b/ui/base/x/x11_shm_image_pool_ozone.h
index 944853d22..08fec98 100644
--- a/ui/base/x/x11_shm_image_pool_ozone.h
+++ b/ui/base/x/x11_shm_image_pool_ozone.h
@@ -18,13 +18,14 @@
     : public XShmImagePoolBase,
       public XEventDispatcher {
  public:
-  X11ShmImagePoolOzone(base::TaskRunner* host_task_runner,
-                       base::TaskRunner* event_task_runner,
-                       XDisplay* display,
-                       XID drawable,
-                       Visual* visual,
-                       int depth,
-                       std::size_t max_frames_pending);
+  X11ShmImagePoolOzone(
+      scoped_refptr<base::SequencedTaskRunner> host_task_runner,
+      scoped_refptr<base::SequencedTaskRunner> event_task_runner,
+      XDisplay* display,
+      XID drawable,
+      Visual* visual,
+      int depth,
+      std::size_t max_frames_pending);
 
  private:
   ~X11ShmImagePoolOzone() override;
diff --git a/ui/base/x/x11_software_bitmap_presenter.cc b/ui/base/x/x11_software_bitmap_presenter.cc
index ea5072e..7ce0193e 100644
--- a/ui/base/x/x11_software_bitmap_presenter.cc
+++ b/ui/base/x/x11_software_bitmap_presenter.cc
@@ -124,8 +124,8 @@
 
 X11SoftwareBitmapPresenter::X11SoftwareBitmapPresenter(
     gfx::AcceleratedWidget widget,
-    base::TaskRunner* host_task_runner,
-    base::TaskRunner* event_task_runner)
+    scoped_refptr<base::SequencedTaskRunner> host_task_runner,
+    scoped_refptr<base::SequencedTaskRunner> event_task_runner)
     : widget_(widget),
       display_(gfx::GetXDisplay()),
       gc_(nullptr),
diff --git a/ui/base/x/x11_software_bitmap_presenter.h b/ui/base/x/x11_software_bitmap_presenter.h
index 9b815f1..5d883f5 100644
--- a/ui/base/x/x11_software_bitmap_presenter.h
+++ b/ui/base/x/x11_software_bitmap_presenter.h
@@ -8,6 +8,7 @@
 #include "base/component_export.h"
 #include "base/macros.h"
 #include "base/memory/scoped_refptr.h"
+#include "base/sequenced_task_runner.h"
 #include "third_party/skia/include/core/SkRefCnt.h"
 #include "third_party/skia/include/core/SkSurface.h"
 #include "ui/gfx/geometry/rect.h"
@@ -18,10 +19,6 @@
 
 class SkCanvas;
 
-namespace base {
-class TaskRunner;
-}
-
 namespace ui {
 
 class XShmImagePoolBase;
@@ -31,9 +28,10 @@
   // Corresponds to SwapBuffersCallback alias in SoftwareOutputDevice.
   using SwapBuffersCallback = base::OnceCallback<void(const gfx::Size&)>;
 
-  X11SoftwareBitmapPresenter(gfx::AcceleratedWidget widget,
-                             base::TaskRunner* host_task_runner,
-                             base::TaskRunner* event_task_runner);
+  X11SoftwareBitmapPresenter(
+      gfx::AcceleratedWidget widget,
+      scoped_refptr<base::SequencedTaskRunner> host_task_runner,
+      scoped_refptr<base::SequencedTaskRunner> event_task_runner);
 
   ~X11SoftwareBitmapPresenter();
 
@@ -70,7 +68,7 @@
   scoped_refptr<ui::XShmImagePoolBase> shm_pool_;
   bool needs_swap_ = false;
 
-  base::TaskRunner* host_task_runner_;
+  scoped_refptr<base::SequencedTaskRunner> host_task_runner_;
   sk_sp<SkSurface> surface_;
 
   gfx::Size viewport_pixel_size_;
diff --git a/ui/chromeos/search_box/search_box_view_base.cc b/ui/chromeos/search_box/search_box_view_base.cc
index 80af3b4..37dafce 100644
--- a/ui/chromeos/search_box/search_box_view_base.cc
+++ b/ui/chromeos/search_box/search_box_view_base.cc
@@ -96,8 +96,6 @@
     SetPaintToLayer();
     layer()->SetFillsBoundsOpaquely(false);
     SetInkDropMode(InkDropMode::ON);
-    // InkDropState will reset after clicking.
-    set_has_ink_drop_action_on_click(true);
 
     SetPreferredSize({kButtonSizeDip, kButtonSizeDip});
     SetImageHorizontalAlignment(ALIGN_CENTER);
diff --git a/ui/chromeos/translations/ui_chromeos_strings_da.xtb b/ui/chromeos/translations/ui_chromeos_strings_da.xtb
index 1527ce6..bd498dd8 100644
--- a/ui/chromeos/translations/ui_chromeos_strings_da.xtb
+++ b/ui/chromeos/translations/ui_chromeos_strings_da.xtb
@@ -638,7 +638,7 @@
 <translation id="8279388322240498158">Sorani-kurdisk tastatur (engelskbaseret)</translation>
 <translation id="8280151743281770066">Armensk (fonetisk)</translation>
 <translation id="8294431847097064396">Kilde</translation>
-<translation id="8297012244086013755">Hangul 3-sæt (ingen shift)</translation>
+<translation id="8297012244086013755">Hangul 3-sæt (ingen Shift)</translation>
 <translation id="8299269255470343364">Japansk</translation>
 <translation id="8312871300878166382">Indsæt i mappe</translation>
 <translation id="8329978297633540474">Almindelig tekst</translation>
diff --git a/ui/events/blink/input_handler_proxy.cc b/ui/events/blink/input_handler_proxy.cc
index f66b6574..766e54a 100644
--- a/ui/events/blink/input_handler_proxy.cc
+++ b/ui/events/blink/input_handler_proxy.cc
@@ -1008,7 +1008,7 @@
       continue;
     }
 
-    cc::TouchAction touch_action = cc::kTouchActionAuto;
+    cc::TouchAction touch_action = cc::TouchAction::kAuto;
     cc::InputHandler::TouchStartOrMoveEventListenerType event_listener_type =
         input_handler_->EventListenerTypeForTouchStartOrMoveAt(
             gfx::Point(touch_event.touches[i].PositionInWidget().x,
@@ -1024,10 +1024,10 @@
           cc::InputHandler::TouchStartOrMoveEventListenerType::
               HANDLER_ON_SCROLLING_LAYER;
       // A non-passive touch start / move will always set the whitelisted touch
-      // action to kTouchActionNone, and in that case we do not ack the event
+      // action to TouchAction::kNone, and in that case we do not ack the event
       // from the compositor.
       if (compositor_touch_action_enabled_ && white_listed_touch_action &&
-          *white_listed_touch_action != cc::kTouchActionNone)
+          *white_listed_touch_action != cc::TouchAction::kNone)
         result = DID_HANDLE_NON_BLOCKING;
       else
         result = DID_NOT_HANDLE;
@@ -1082,7 +1082,7 @@
 InputHandlerProxy::EventDisposition InputHandlerProxy::HandleTouchStart(
     const blink::WebTouchEvent& touch_event) {
   bool is_touching_scrolling_layer;
-  cc::TouchAction white_listed_touch_action = cc::kTouchActionAuto;
+  cc::TouchAction white_listed_touch_action = cc::TouchAction::kAuto;
   EventDisposition result = HitTestTouchEvent(
       touch_event, &is_touching_scrolling_layer, &white_listed_touch_action);
 
@@ -1115,7 +1115,7 @@
   if (touch_result_ == kEventDispositionUndefined ||
       touch_event.touch_start_or_first_touch_move) {
     bool is_touching_scrolling_layer;
-    cc::TouchAction white_listed_touch_action = cc::kTouchActionAuto;
+    cc::TouchAction white_listed_touch_action = cc::TouchAction::kAuto;
     EventDisposition result = HitTestTouchEvent(
         touch_event, &is_touching_scrolling_layer, &white_listed_touch_action);
     client_->SetWhiteListedTouchAction(
diff --git a/ui/events/blink/input_handler_proxy_unittest.cc b/ui/events/blink/input_handler_proxy_unittest.cc
index 8bd4717..ca0385a7 100644
--- a/ui/events/blink/input_handler_proxy_unittest.cc
+++ b/ui/events/blink/input_handler_proxy_unittest.cc
@@ -1161,7 +1161,7 @@
                   testing::Property(&gfx::Point::x, testing::Eq(0)), _))
       .WillOnce(testing::Invoke([](const gfx::Point&,
                                    cc::TouchAction* touch_action) {
-        *touch_action = cc::kTouchActionMax;
+        *touch_action = cc::TouchAction::kMax;
         return cc::InputHandler::TouchStartOrMoveEventListenerType::NO_HANDLER;
       }));
 
@@ -1170,7 +1170,7 @@
                   testing::Property(&gfx::Point::x, testing::Gt(0)), _))
       .WillOnce(
           testing::Invoke([](const gfx::Point&, cc::TouchAction* touch_action) {
-            *touch_action = cc::kTouchActionPanUp;
+            *touch_action = cc::TouchAction::kPanUp;
             return cc::InputHandler::TouchStartOrMoveEventListenerType::
                 HANDLER_ON_SCROLLING_LAYER;
           }));
@@ -1187,12 +1187,12 @@
   touch.touches[2] = CreateWebTouchPoint(WebTouchPoint::kStatePressed, -10, 10);
 
   bool is_touching_scrolling_layer;
-  cc::TouchAction white_listed_touch_action = cc::kTouchActionAuto;
+  cc::TouchAction white_listed_touch_action = cc::TouchAction::kAuto;
   EXPECT_EQ(expected_disposition_, input_handler_->HitTestTouchEventForTest(
                                        touch, &is_touching_scrolling_layer,
                                        &white_listed_touch_action));
   EXPECT_TRUE(is_touching_scrolling_layer);
-  EXPECT_EQ(white_listed_touch_action, cc::kTouchActionPanUp);
+  EXPECT_EQ(white_listed_touch_action, cc::TouchAction::kPanUp);
   VERIFY_AND_RESET_MOCKS();
 }
 
@@ -1253,11 +1253,11 @@
       .Times(2)
       .WillRepeatedly(testing::Invoke([](const gfx::Point&,
                                          cc::TouchAction* touch_action) {
-        *touch_action = cc::kTouchActionPanUp;
+        *touch_action = cc::TouchAction::kPanUp;
         return cc::InputHandler::TouchStartOrMoveEventListenerType::NO_HANDLER;
       }));
   EXPECT_CALL(mock_client_,
-              SetWhiteListedTouchAction(cc::kTouchActionPanUp, 1,
+              SetWhiteListedTouchAction(cc::TouchAction::kPanUp, 1,
                                         InputHandlerProxy::DROP_EVENT))
       .WillOnce(testing::Return());
 
@@ -1289,7 +1289,7 @@
                   testing::Property(&gfx::Point::x, testing::Eq(0)), _))
       .WillOnce(testing::Invoke([](const gfx::Point&,
                                    cc::TouchAction* touch_action) {
-        *touch_action = cc::kTouchActionAuto;
+        *touch_action = cc::TouchAction::kAuto;
         return cc::InputHandler::TouchStartOrMoveEventListenerType::NO_HANDLER;
       }));
   EXPECT_CALL(mock_input_handler_,
@@ -1297,11 +1297,11 @@
                   testing::Property(&gfx::Point::x, testing::Gt(0)), _))
       .WillOnce(
           testing::Invoke([](const gfx::Point&, cc::TouchAction* touch_action) {
-            *touch_action = cc::kTouchActionPanY;
+            *touch_action = cc::TouchAction::kPanY;
             return cc::InputHandler::TouchStartOrMoveEventListenerType::
                 HANDLER_ON_SCROLLING_LAYER;
           }));
-  EXPECT_CALL(mock_client_, SetWhiteListedTouchAction(cc::kTouchActionPanY, 1,
+  EXPECT_CALL(mock_client_, SetWhiteListedTouchAction(cc::TouchAction::kPanY, 1,
                                                       expected_disposition_))
       .WillOnce(testing::Return());
   // Since the second touch point hits a touch-region, there should be no
@@ -1336,16 +1336,16 @@
       .Times(3)
       .WillOnce(testing::Invoke([](const gfx::Point&,
                                    cc::TouchAction* touch_action) {
-        *touch_action = cc::kTouchActionPanRight;
+        *touch_action = cc::TouchAction::kPanRight;
         return cc::InputHandler::TouchStartOrMoveEventListenerType::NO_HANDLER;
       }))
       .WillRepeatedly(testing::Invoke([](const gfx::Point&,
                                          cc::TouchAction* touch_action) {
-        *touch_action = cc::kTouchActionPanX;
+        *touch_action = cc::TouchAction::kPanX;
         return cc::InputHandler::TouchStartOrMoveEventListenerType::NO_HANDLER;
       }));
   EXPECT_CALL(mock_client_, SetWhiteListedTouchAction(
-                                cc::kTouchActionPanRight, 1,
+                                cc::TouchAction::kPanRight, 1,
                                 InputHandlerProxy::DID_HANDLE_NON_BLOCKING))
       .WillOnce(testing::Return());
 
@@ -1382,11 +1382,11 @@
   EXPECT_CALL(mock_input_handler_, EventListenerTypeForTouchStartOrMoveAt(_, _))
       .WillOnce(testing::Invoke([](const gfx::Point&,
                                    cc::TouchAction* touch_action) {
-        *touch_action = cc::kTouchActionNone;
+        *touch_action = cc::TouchAction::kNone;
         return cc::InputHandler::TouchStartOrMoveEventListenerType::NO_HANDLER;
       }));
   EXPECT_CALL(mock_client_, SetWhiteListedTouchAction(
-                                cc::kTouchActionNone, 1,
+                                cc::TouchAction::kNone, 1,
                                 InputHandlerProxy::DID_HANDLE_NON_BLOCKING))
       .WillOnce(testing::Return());
 
diff --git a/ui/events/ozone/evdev/input_device_factory_evdev.h b/ui/events/ozone/evdev/input_device_factory_evdev.h
index 5a0f0e3..b04fbc56 100644
--- a/ui/events/ozone/evdev/input_device_factory_evdev.h
+++ b/ui/events/ozone/evdev/input_device_factory_evdev.h
@@ -17,7 +17,7 @@
 #include "base/macros.h"
 #include "base/memory/ref_counted.h"
 #include "base/memory/weak_ptr.h"
-#include "base/task_runner.h"
+#include "base/sequenced_task_runner.h"
 #include "mojo/public/cpp/bindings/pending_receiver.h"
 #include "ui/events/ozone/evdev/event_converter_evdev.h"
 #include "ui/events/ozone/evdev/event_device_info.h"
@@ -107,7 +107,7 @@
   void EnableDevices();
 
   // Task runner for our thread.
-  const scoped_refptr<base::TaskRunner> task_runner_;
+  const scoped_refptr<base::SequencedTaskRunner> task_runner_;
 
   // Cursor movement.
   CursorDelegateEvdev* const cursor_;
diff --git a/ui/gfx/render_text.cc b/ui/gfx/render_text.cc
index 58dcb1d..9880b81 100644
--- a/ui/gfx/render_text.cc
+++ b/ui/gfx/render_text.cc
@@ -1345,93 +1345,99 @@
       U16_SET_CP_START(text_.data(), 0, reveal_index);
   }
 
-  // Iterates through codepoints in both strings. Both string have the same
-  // amount of codepoints but some codepoints may differ (e.g. obscured or
-  // replaced) and may differ in length (e.g. surrogate pair).
+  // Iterates through graphemes from |text_| and rewrite its codepoints to
+  // |layout_text_|.
   base::i18n::UTF16CharIterator text_iter(&text_);
   internal::StyleIterator styles = GetTextStyleIterator();
-  size_t text_grapheme_start_position = 0;
-  size_t layout_grapheme_start_position = 0;
-  while (!text_iter.end()) {
-    size_t current_text_position = text_iter.array_pos();
-    if (grapheme_iter.IsGraphemeBoundary(current_text_position)) {
-      text_grapheme_start_position = current_text_position;
-      layout_grapheme_start_position = layout_text_.size();
+  bool text_truncated = false;
+  while (!text_iter.end() && !text_truncated) {
+    std::vector<uint32_t> grapheme_codepoints;
+    const size_t text_grapheme_start_position = text_iter.array_pos();
+    const size_t layout_grapheme_start_position = layout_text_.size();
 
-      // Keep track of the mapping between |text_| and |layout_text_| indices.
-      internal::TextToDisplayIndex mapping = {text_grapheme_start_position,
-                                              layout_grapheme_start_position};
-      text_to_display_indices_.push_back(mapping);
+    // Retrieve codepoints of the current grapheme.
+    do {
+      grapheme_codepoints.push_back(text_iter.get());
+      text_iter.Advance();
+    } while (!grapheme_iter.IsGraphemeBoundary(text_iter.array_pos()) &&
+             !text_iter.end());
+    const size_t text_grapheme_end_position = text_iter.array_pos();
+
+    // Keep track of the mapping between |text_| and |layout_text_| indices.
+    internal::TextToDisplayIndex mapping = {text_grapheme_start_position,
+                                            layout_grapheme_start_position};
+    text_to_display_indices_.push_back(mapping);
+
+    // Obscure the layout text by replacing the grapheme by a bullet.
+    if (obscured_ &&
+        (reveal_index < text_grapheme_start_position ||
+         reveal_index >= text_grapheme_end_position) &&
+        (grapheme_codepoints.size() != 1 || grapheme_codepoints[0] != '\n' ||
+         !multiline_)) {
+      grapheme_codepoints.clear();
+      grapheme_codepoints.push_back(RenderText::kPasswordReplacementChar);
     }
 
-    int32_t codepoint = text_iter.get();
-    // Move text iterator to the next character.
-    text_iter.Advance();
+    // Rewrite each codepoint of the grapheme.
+    for (uint32_t codepoint : grapheme_codepoints) {
+      // Handle unicode control characters ISO 6429 (block C0). Range from 0 to
+      // 0x1F and 0x7F.
+      codepoint = ReplaceControlCharacter(multiline_, codepoint);
 
-    // Obscure the layout text by replacing hidden characters by bullets.
-    if (obscured_ && reveal_index != current_text_position &&
-        (codepoint != '\n' || !multiline_)) {
-      codepoint = RenderText::kPasswordReplacementChar;
+      // Truncate the remaining codepoints if appending the codepoint to
+      // |layout_text_| is making the text larger than |truncate_length_|.
+      size_t codepoint_length = U16_LENGTH(codepoint);
+      text_truncated =
+          (truncate_length_ != 0 &&
+           ((layout_text_.size() + codepoint_length > truncate_length_) ||
+            (!text_iter.end() &&
+             (layout_text_.size() + codepoint_length == truncate_length_))));
+
+      if (text_truncated) {
+        codepoint = kEllipsisCodepoint;
+        codepoint_length = U16_LENGTH(codepoint);
+        // On truncate, remove the whole current grapheme.
+        layout_text_.resize(layout_grapheme_start_position);
+      }
+
+      // Append the codepoint to the layout text.
+      const size_t current_layout_text_position = layout_text_.size();
+      if (codepoint_length == 1) {
+        layout_text_ += codepoint;
+      } else {
+        layout_text_ += U16_LEAD(codepoint);
+        layout_text_ += U16_TRAIL(codepoint);
+      }
+
+      // Apply the style at current grapheme position to the layout text.
+      styles.IncrementToPosition(text_grapheme_start_position);
+
+      Range range(current_layout_text_position, layout_text_.size());
+      layout_colors_.ApplyValue(styles.color(), range);
+      layout_baselines_.ApplyValue(styles.baseline(), range);
+      layout_font_size_overrides_.ApplyValue(styles.font_size_override(),
+                                             range);
+      layout_weights_.ApplyValue(styles.weight(), range);
+      for (size_t i = 0; i < TEXT_STYLE_COUNT; ++i) {
+        layout_styles_[i].ApplyValue(styles.style(static_cast<TextStyle>(i)),
+                                     range);
+      }
+
+      const Range grapheme_start_range(gfx::Range(
+          text_grapheme_start_position, text_grapheme_start_position + 1));
+
+      // Apply an underline to the composition range in |underlines|.
+      if (composition_range_.Contains(grapheme_start_range))
+        layout_styles_[TEXT_STYLE_HEAVY_UNDERLINE].ApplyValue(true, range);
+
+      // Apply the selected text color to the selection range.
+      if (!selection().is_empty() && selection().Contains(grapheme_start_range))
+        layout_colors_.ApplyValue(selection_color_, range);
+
+      // Stop appending characters if the text is truncated.
+      if (text_truncated)
+        break;
     }
-
-    // Handle unicode control characters ISO 6429 (block C0). Range from 0 to
-    // 0x1F and 0x7F.
-    codepoint = ReplaceControlCharacter(multiline_, codepoint);
-
-    // Truncate the remaining codepoints if appending the codepoint to
-    // |layout_text_| is making the text larger than |truncate_length_|.
-    size_t codepoint_length = U16_LENGTH(codepoint);
-    const bool truncate_text =
-        (truncate_length_ != 0 &&
-         ((layout_text_.size() + codepoint_length > truncate_length_) ||
-          (!text_iter.end() &&
-           (layout_text_.size() + codepoint_length == truncate_length_))));
-
-    if (truncate_text) {
-      codepoint = kEllipsisCodepoint;
-      codepoint_length = U16_LENGTH(codepoint);
-      // On truncate, remove the whole current grapheme.
-      layout_text_.resize(layout_grapheme_start_position);
-    }
-
-    // Append the codepoint to the layout text.
-    const size_t current_layout_text_position = layout_text_.size();
-    if (codepoint_length == 1) {
-      layout_text_ += codepoint;
-    } else {
-      layout_text_ += U16_LEAD(codepoint);
-      layout_text_ += U16_TRAIL(codepoint);
-    }
-
-    // Apply the style at current grapheme position to the layout text.
-    styles.IncrementToPosition(text_grapheme_start_position);
-
-    Range range(current_layout_text_position, layout_text_.size());
-    layout_colors_.ApplyValue(styles.color(), range);
-    layout_baselines_.ApplyValue(styles.baseline(), range);
-    layout_font_size_overrides_.ApplyValue(styles.font_size_override(), range);
-    layout_weights_.ApplyValue(styles.weight(), range);
-    for (size_t i = 0; i < TEXT_STYLE_COUNT; ++i) {
-      layout_styles_[i].ApplyValue(styles.style(static_cast<TextStyle>(i)),
-                                   range);
-    }
-
-    const Range grapheme_start_range(gfx::Range(
-        text_grapheme_start_position, text_grapheme_start_position + 1));
-
-    // Apply an underline to the composition range in |underlines|.
-    if (composition_range_.Contains(grapheme_start_range)) {
-      layout_styles_[TEXT_STYLE_HEAVY_UNDERLINE].ApplyValue(true, range);
-    }
-
-    // Apply the selected text color to the selection range.
-    if (!selection().is_empty() && selection().Contains(grapheme_start_range)) {
-      layout_colors_.ApplyValue(selection_color_, range);
-    }
-
-    // Stop appending characters if the text is truncated.
-    if (truncate_text)
-      break;
   }
 
   // Resize the layout text attributes to the actual layout text length.
diff --git a/ui/gfx/render_text.h b/ui/gfx/render_text.h
index fe228e41..575c9aa 100644
--- a/ui/gfx/render_text.h
+++ b/ui/gfx/render_text.h
@@ -478,9 +478,6 @@
   // amid multi-character graphemes are allowed here, unlike IsValidCursorIndex.
   bool IsValidLogicalIndex(size_t index) const;
 
-  // Returns true if this instance supports text selection.
-  virtual bool IsSelectionSupported() const = 0;
-
   // Get the visual bounds of a cursor at |caret|. These bounds typically
   // represent a vertical line if |insert_mode| is true. Pass false for
   // |insert_mode| to retrieve the bounds of the associated glyph. These bounds
diff --git a/ui/gfx/render_text_harfbuzz.cc b/ui/gfx/render_text_harfbuzz.cc
index 2186fa6..454766c4 100644
--- a/ui/gfx/render_text_harfbuzz.cc
+++ b/ui/gfx/render_text_harfbuzz.cc
@@ -1506,10 +1506,6 @@
   return LineSelectionModel(line_index, CURSOR_RIGHT);
 }
 
-bool RenderTextHarfBuzz::IsSelectionSupported() const {
-  return true;
-}
-
 std::vector<Rect> RenderTextHarfBuzz::GetSubstringBounds(const Range& range) {
   EnsureLayout();
   DCHECK(!update_display_run_list_);
@@ -1814,7 +1810,8 @@
   BreakList<SkColor> colors = layout_colors();
   if (!selection.is_empty()) {
     colors.ApplyValue(selection_color(),
-                      Range(selection.GetMin(), selection.GetMax()));
+                      Range(TextIndexToDisplayIndex(selection.GetMin()),
+                            TextIndexToDisplayIndex(selection.GetMax())));
   }
 
   internal::TextRunList* run_list = GetRunList();
diff --git a/ui/gfx/render_text_harfbuzz.h b/ui/gfx/render_text_harfbuzz.h
index fac2350a..6d7ff06 100644
--- a/ui/gfx/render_text_harfbuzz.h
+++ b/ui/gfx/render_text_harfbuzz.h
@@ -225,7 +225,6 @@
   float TotalLineWidth() override;
   SelectionModel FindCursorPosition(const Point& point,
                                     const Point& drag_origin) override;
-  bool IsSelectionSupported() const override;
   std::vector<Rect> GetSubstringBounds(const Range& range) override;
   RangeF GetCursorSpan(const Range& text_range) override;
   size_t GetLineContainingCaret(const SelectionModel& caret) override;
diff --git a/ui/gfx/render_text_unittest.cc b/ui/gfx/render_text_unittest.cc
index 8547731..cf18ac8 100644
--- a/ui/gfx/render_text_unittest.cc
+++ b/ui/gfx/render_text_unittest.cc
@@ -2244,6 +2244,24 @@
             render_text->GetDisplayText());
 }
 
+TEST_F(RenderTextTest, TruncatedObscuredTextWithGraphemes) {
+  RenderText* render_text = GetRenderText();
+  render_text->set_truncate_length(3);
+  render_text->SetText(
+      WideToUTF16(L"e\u0301\U0001F468\u200D\u2708\uFE0F\U0001D11E"));
+  render_text->SetObscured(true);
+  EXPECT_EQ(GetObscuredString(3), render_text->GetDisplayText());
+
+  render_text->SetObscuredRevealIndex(0);
+  EXPECT_EQ(UTF8ToUTF16("e\u0301\u2026"), render_text->GetDisplayText());
+
+  render_text->SetObscuredRevealIndex(2);
+  EXPECT_EQ(UTF8ToUTF16("\u2022\u2026"), render_text->GetDisplayText());
+
+  render_text->SetObscuredRevealIndex(7);
+  EXPECT_EQ(UTF8ToUTF16("\u2022\u2022\u2026"), render_text->GetDisplayText());
+}
+
 TEST_F(RenderTextTest, TruncatedCursorMovementLTR) {
   RenderText* render_text = GetRenderText();
   render_text->set_truncate_length(2);
@@ -3065,15 +3083,50 @@
   iterator = render_text->GetGraphemeIteratorAtDisplayTextIndex(3);
   EXPECT_EQ(3U, render_text->GetDisplayTextIndex(iterator));
 
+  render_text->SetText(UTF8ToUTF16("e\u0301b"));
+  render_text->SetObscured(true);
+  iterator = render_text->GetGraphemeIteratorAtDisplayTextIndex(0);
+  EXPECT_EQ(0U, render_text->GetTextIndex(iterator));
+  iterator = render_text->GetGraphemeIteratorAtDisplayTextIndex(1);
+  EXPECT_EQ(2U, render_text->GetTextIndex(iterator));
+  render_text->SetObscured(false);
+  iterator = render_text->GetGraphemeIteratorAtDisplayTextIndex(0);
+  EXPECT_EQ(0U, render_text->GetTextIndex(iterator));
+  iterator = render_text->GetGraphemeIteratorAtDisplayTextIndex(1);
+  EXPECT_EQ(0U, render_text->GetTextIndex(iterator));
+  iterator = render_text->GetGraphemeIteratorAtDisplayTextIndex(2);
+  EXPECT_EQ(2U, render_text->GetTextIndex(iterator));
+
   render_text->SetText(WideToUTF16(L"a\U0001F601b"));
   render_text->SetObscured(true);
-
   iterator = render_text->GetGraphemeIteratorAtDisplayTextIndex(0);
+  EXPECT_EQ(0U, render_text->GetTextIndex(iterator));
   EXPECT_EQ(0U, render_text->GetDisplayTextIndex(iterator));
   iterator = render_text->GetGraphemeIteratorAtDisplayTextIndex(1);
+  EXPECT_EQ(1U, render_text->GetTextIndex(iterator));
   EXPECT_EQ(1U, render_text->GetDisplayTextIndex(iterator));
   iterator = render_text->GetGraphemeIteratorAtDisplayTextIndex(2);
+  EXPECT_EQ(3U, render_text->GetTextIndex(iterator));
   EXPECT_EQ(2U, render_text->GetDisplayTextIndex(iterator));
+
+  render_text->SetText(UTF8ToUTF16("\U0001F468\u200D\u2708\uFE0Fx"));
+  render_text->SetObscured(true);
+  iterator = render_text->GetGraphemeIteratorAtDisplayTextIndex(0);
+  EXPECT_EQ(0U, render_text->GetTextIndex(iterator));
+  EXPECT_EQ(0U, render_text->GetDisplayTextIndex(iterator));
+  iterator = render_text->GetGraphemeIteratorAtDisplayTextIndex(1);
+  EXPECT_EQ(5U, render_text->GetTextIndex(iterator));
+  EXPECT_EQ(1U, render_text->GetDisplayTextIndex(iterator));
+  render_text->SetObscured(false);
+  iterator = render_text->GetGraphemeIteratorAtDisplayTextIndex(0);
+  EXPECT_EQ(0U, render_text->GetTextIndex(iterator));
+  EXPECT_EQ(0U, render_text->GetDisplayTextIndex(iterator));
+  iterator = render_text->GetGraphemeIteratorAtDisplayTextIndex(1);
+  EXPECT_EQ(0U, render_text->GetTextIndex(iterator));
+  EXPECT_EQ(0U, render_text->GetDisplayTextIndex(iterator));
+  iterator = render_text->GetGraphemeIteratorAtDisplayTextIndex(5);
+  EXPECT_EQ(5U, render_text->GetTextIndex(iterator));
+  EXPECT_EQ(5U, render_text->GetDisplayTextIndex(iterator));
 }
 
 TEST_F(RenderTextTest, GraphemeBoundaries) {
@@ -7303,4 +7356,21 @@
   EXPECT_EQ(text_log[2].color, SK_ColorBLACK);
 }
 
+TEST_F(RenderTextTest, DrawVisualText_WithSelectionOnObcuredEmoji) {
+  RenderText* render_text = GetRenderText();
+  render_text->SetText(WideToUTF16(L"\U0001F628\U0001F628\U0001F628"));
+  render_text->SetObscured(true);
+  render_text->set_selection_color(SK_ColorRED);
+  DrawVisualText({4, 6});
+
+  std::vector<TestSkiaTextRenderer::TextLog> text_log;
+  renderer()->GetTextLogAndReset(&text_log);
+
+  ASSERT_EQ(text_log.size(), 2u);
+  EXPECT_EQ(text_log[0].glyph_count, 2u);
+  EXPECT_EQ(text_log[0].color, SK_ColorBLACK);
+  EXPECT_EQ(text_log[1].glyph_count, 1u);
+  EXPECT_EQ(text_log[1].color, SK_ColorRED);
+}
+
 }  // namespace gfx
diff --git a/ui/message_center/views/notification_header_view.cc b/ui/message_center/views/notification_header_view.cc
index ae2d928..255fd7b 100644
--- a/ui/message_center/views/notification_header_view.cc
+++ b/ui/message_center/views/notification_header_view.cc
@@ -304,6 +304,7 @@
 void NotificationHeaderView::GetAccessibleNodeData(ui::AXNodeData* node_data) {
   Button::GetAccessibleNodeData(node_data);
 
+  node_data->role = ax::mojom::Role::kGenericContainer;
   node_data->SetName(app_name_view_->GetText());
   node_data->SetDescription(summary_text_view_->GetText() +
                             base::ASCIIToUTF16(" ") +
diff --git a/ui/message_center/views/notification_view_md.cc b/ui/message_center/views/notification_view_md.cc
index 05fb759f..4fb3d61 100644
--- a/ui/message_center/views/notification_view_md.cc
+++ b/ui/message_center/views/notification_view_md.cc
@@ -332,7 +332,6 @@
       placeholder_(placeholder) {
   SetHorizontalAlignment(gfx::ALIGN_CENTER);
   SetInkDropMode(InkDropMode::ON);
-  set_has_ink_drop_action_on_click(true);
   set_ink_drop_base_color(SK_ColorBLACK);
   set_ink_drop_visible_opacity(kActionButtonInkDropRippleVisibleOpacity);
   SetEnabledTextColors(kActionButtonTextColor);
diff --git a/ui/message_center/views/padded_button.cc b/ui/message_center/views/padded_button.cc
index a5cfe72..a4d176a 100644
--- a/ui/message_center/views/padded_button.cc
+++ b/ui/message_center/views/padded_button.cc
@@ -27,7 +27,6 @@
 
   SetInkDropMode(InkDropMode::ON);
   set_ink_drop_base_color(SkColorSetA(SK_ColorBLACK, 0.6 * 0xff));
-  set_has_ink_drop_action_on_click(true);
 }
 
 std::unique_ptr<views::InkDrop> PaddedButton::CreateInkDrop() {
diff --git a/ui/ozone/platform/cast/surface_factory_cast.cc b/ui/ozone/platform/cast/surface_factory_cast.cc
index 562e60e12..d62a4f86 100644
--- a/ui/ozone/platform/cast/surface_factory_cast.cc
+++ b/ui/ozone/platform/cast/surface_factory_cast.cc
@@ -114,7 +114,7 @@
 
 std::unique_ptr<SurfaceOzoneCanvas> SurfaceFactoryCast::CreateCanvasForWidget(
     gfx::AcceleratedWidget widget,
-    base::TaskRunner* task_runner) {
+    scoped_refptr<base::SequencedTaskRunner> task_runner) {
   // Software canvas support only in headless mode
   if (egl_implementation_)
     return nullptr;
diff --git a/ui/ozone/platform/cast/surface_factory_cast.h b/ui/ozone/platform/cast/surface_factory_cast.h
index fd1e30a7..87bd44ad 100644
--- a/ui/ozone/platform/cast/surface_factory_cast.h
+++ b/ui/ozone/platform/cast/surface_factory_cast.h
@@ -33,7 +33,7 @@
   GLOzone* GetGLOzone(gl::GLImplementation implementation) override;
   std::unique_ptr<SurfaceOzoneCanvas> CreateCanvasForWidget(
       gfx::AcceleratedWidget widget,
-      base::TaskRunner* task_runner) override;
+      scoped_refptr<base::SequencedTaskRunner> task_runner) override;
   scoped_refptr<gfx::NativePixmap> CreateNativePixmap(
       gfx::AcceleratedWidget widget,
       VkDevice vk_device,
diff --git a/ui/ozone/platform/drm/gpu/gbm_surface_factory.cc b/ui/ozone/platform/drm/gpu/gbm_surface_factory.cc
index d52ce8a4..b0c588e 100644
--- a/ui/ozone/platform/drm/gpu/gbm_surface_factory.cc
+++ b/ui/ozone/platform/drm/gpu/gbm_surface_factory.cc
@@ -274,7 +274,7 @@
 
 std::unique_ptr<SurfaceOzoneCanvas> GbmSurfaceFactory::CreateCanvasForWidget(
     gfx::AcceleratedWidget widget,
-    base::TaskRunner* task_runner) {
+    scoped_refptr<base::SequencedTaskRunner> task_runner) {
   DCHECK(thread_checker_.CalledOnValidThread());
   LOG(ERROR) << "Software rendering mode is not supported with GBM platform";
   return nullptr;
diff --git a/ui/ozone/platform/drm/gpu/gbm_surface_factory.h b/ui/ozone/platform/drm/gpu/gbm_surface_factory.h
index 679848c..1d13844 100644
--- a/ui/ozone/platform/drm/gpu/gbm_surface_factory.h
+++ b/ui/ozone/platform/drm/gpu/gbm_surface_factory.h
@@ -55,7 +55,7 @@
       gfx::AcceleratedWidget window) override;
   std::unique_ptr<SurfaceOzoneCanvas> CreateCanvasForWidget(
       gfx::AcceleratedWidget widget,
-      base::TaskRunner* task_runner) override;
+      scoped_refptr<base::SequencedTaskRunner> task_runner) override;
   scoped_refptr<gfx::NativePixmap> CreateNativePixmap(
       gfx::AcceleratedWidget widget,
       VkDevice vk_device,
diff --git a/ui/ozone/platform/headless/headless_surface_factory.cc b/ui/ozone/platform/headless/headless_surface_factory.cc
index 2829df0..49a6f9ff0 100644
--- a/ui/ozone/platform/headless/headless_surface_factory.cc
+++ b/ui/ozone/platform/headless/headless_surface_factory.cc
@@ -232,8 +232,9 @@
 }
 
 std::unique_ptr<SurfaceOzoneCanvas>
-HeadlessSurfaceFactory::CreateCanvasForWidget(gfx::AcceleratedWidget widget,
-                                              base::TaskRunner* task_runner) {
+HeadlessSurfaceFactory::CreateCanvasForWidget(
+    gfx::AcceleratedWidget widget,
+    scoped_refptr<base::SequencedTaskRunner> task_runner) {
   return std::make_unique<FileSurface>(GetPathForWidget(base_path_, widget));
 }
 
diff --git a/ui/ozone/platform/headless/headless_surface_factory.h b/ui/ozone/platform/headless/headless_surface_factory.h
index 8270d643..074334c 100644
--- a/ui/ozone/platform/headless/headless_surface_factory.h
+++ b/ui/ozone/platform/headless/headless_surface_factory.h
@@ -25,7 +25,7 @@
   GLOzone* GetGLOzone(gl::GLImplementation implementation) override;
   std::unique_ptr<SurfaceOzoneCanvas> CreateCanvasForWidget(
       gfx::AcceleratedWidget widget,
-      base::TaskRunner* task_runner) override;
+      scoped_refptr<base::SequencedTaskRunner> task_runner) override;
   scoped_refptr<gfx::NativePixmap> CreateNativePixmap(
       gfx::AcceleratedWidget widget,
       VkDevice vk_device,
diff --git a/ui/ozone/platform/scenic/scenic_surface_factory.cc b/ui/ozone/platform/scenic/scenic_surface_factory.cc
index 8cdaf028..ec2cde24 100644
--- a/ui/ozone/platform/scenic/scenic_surface_factory.cc
+++ b/ui/ozone/platform/scenic/scenic_surface_factory.cc
@@ -123,7 +123,7 @@
 
 std::unique_ptr<SurfaceOzoneCanvas> ScenicSurfaceFactory::CreateCanvasForWidget(
     gfx::AcceleratedWidget widget,
-    base::TaskRunner* task_runner) {
+    scoped_refptr<base::SequencedTaskRunner> task_runner) {
   ScenicSurface* surface = GetSurface(widget);
   return std::make_unique<ScenicWindowCanvas>(surface);
 }
diff --git a/ui/ozone/platform/scenic/scenic_surface_factory.h b/ui/ozone/platform/scenic/scenic_surface_factory.h
index 2214f0ad..4272ae1 100644
--- a/ui/ozone/platform/scenic/scenic_surface_factory.h
+++ b/ui/ozone/platform/scenic/scenic_surface_factory.h
@@ -41,7 +41,7 @@
       gfx::AcceleratedWidget widget) override;
   std::unique_ptr<SurfaceOzoneCanvas> CreateCanvasForWidget(
       gfx::AcceleratedWidget widget,
-      base::TaskRunner* task_runner) override;
+      scoped_refptr<base::SequencedTaskRunner> task_runner) override;
   scoped_refptr<gfx::NativePixmap> CreateNativePixmap(
       gfx::AcceleratedWidget widget,
       VkDevice vk_device,
diff --git a/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc b/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc
index 99ed4240..5a987361 100644
--- a/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc
+++ b/ui/ozone/platform/wayland/gpu/wayland_surface_factory.cc
@@ -128,8 +128,9 @@
 WaylandSurfaceFactory::~WaylandSurfaceFactory() = default;
 
 std::unique_ptr<SurfaceOzoneCanvas>
-WaylandSurfaceFactory::CreateCanvasForWidget(gfx::AcceleratedWidget widget,
-                                             base::TaskRunner* task_runner) {
+WaylandSurfaceFactory::CreateCanvasForWidget(
+    gfx::AcceleratedWidget widget,
+    scoped_refptr<base::SequencedTaskRunner> task_runner) {
   return std::make_unique<WaylandCanvasSurface>(buffer_manager_, widget);
 }
 
diff --git a/ui/ozone/platform/wayland/gpu/wayland_surface_factory.h b/ui/ozone/platform/wayland/gpu/wayland_surface_factory.h
index 07c132c2..a7fd86f4 100644
--- a/ui/ozone/platform/wayland/gpu/wayland_surface_factory.h
+++ b/ui/ozone/platform/wayland/gpu/wayland_surface_factory.h
@@ -31,7 +31,7 @@
   GLOzone* GetGLOzone(gl::GLImplementation implementation) override;
   std::unique_ptr<SurfaceOzoneCanvas> CreateCanvasForWidget(
       gfx::AcceleratedWidget widget,
-      base::TaskRunner* task_runner) override;
+      scoped_refptr<base::SequencedTaskRunner> task_runner) override;
   scoped_refptr<gfx::NativePixmap> CreateNativePixmap(
       gfx::AcceleratedWidget widget,
       VkDevice vk_device,
diff --git a/ui/ozone/platform/x11/x11_canvas_surface.cc b/ui/ozone/platform/x11/x11_canvas_surface.cc
index 49afa733..97f1ebf 100644
--- a/ui/ozone/platform/x11/x11_canvas_surface.cc
+++ b/ui/ozone/platform/x11/x11_canvas_surface.cc
@@ -11,12 +11,13 @@
 
 namespace ui {
 
-X11CanvasSurface::X11CanvasSurface(gfx::AcceleratedWidget widget,
-                                   base::TaskRunner* gpu_task_runner)
+X11CanvasSurface::X11CanvasSurface(
+    gfx::AcceleratedWidget widget,
+    scoped_refptr<base::SequencedTaskRunner> gpu_task_runner)
     : task_runner_(base::SequencedTaskRunnerHandle::Get()),
       x11_software_bitmap_presenter_(widget,
                                      task_runner_.get(),
-                                     gpu_task_runner) {}
+                                     std::move(gpu_task_runner)) {}
 
 X11CanvasSurface::~X11CanvasSurface() = default;
 
diff --git a/ui/ozone/platform/x11/x11_canvas_surface.h b/ui/ozone/platform/x11/x11_canvas_surface.h
index b6371f5c..63127ba 100644
--- a/ui/ozone/platform/x11/x11_canvas_surface.h
+++ b/ui/ozone/platform/x11/x11_canvas_surface.h
@@ -8,6 +8,8 @@
 #include <memory>
 
 #include "base/macros.h"
+#include "base/memory/scoped_refptr.h"
+#include "base/sequenced_task_runner.h"
 #include "base/threading/sequenced_task_runner_handle.h"
 #include "third_party/skia/include/core/SkRefCnt.h"
 #include "third_party/skia/include/core/SkSurface.h"
@@ -25,7 +27,7 @@
 class X11CanvasSurface : public SurfaceOzoneCanvas {
  public:
   X11CanvasSurface(gfx::AcceleratedWidget widget,
-                   base::TaskRunner* gpu_task_runner);
+                   scoped_refptr<base::SequencedTaskRunner> gpu_task_runner);
   ~X11CanvasSurface() override;
 
   // SurfaceOzoneCanvas overrides:
diff --git a/ui/ozone/platform/x11/x11_surface_factory.cc b/ui/ozone/platform/x11/x11_surface_factory.cc
index c231ba2..e2400a3 100644
--- a/ui/ozone/platform/x11/x11_surface_factory.cc
+++ b/ui/ozone/platform/x11/x11_surface_factory.cc
@@ -106,8 +106,8 @@
 
 std::unique_ptr<SurfaceOzoneCanvas> X11SurfaceFactory::CreateCanvasForWidget(
     gfx::AcceleratedWidget widget,
-    base::TaskRunner* task_runner) {
-  return std::make_unique<X11CanvasSurface>(widget, task_runner);
+    scoped_refptr<base::SequencedTaskRunner> task_runner) {
+  return std::make_unique<X11CanvasSurface>(widget, std::move(task_runner));
 }
 
 }  // namespace ui
diff --git a/ui/ozone/platform/x11/x11_surface_factory.h b/ui/ozone/platform/x11/x11_surface_factory.h
index 18a2ee78..33dbb696 100644
--- a/ui/ozone/platform/x11/x11_surface_factory.h
+++ b/ui/ozone/platform/x11/x11_surface_factory.h
@@ -32,7 +32,7 @@
 #endif
   std::unique_ptr<SurfaceOzoneCanvas> CreateCanvasForWidget(
       gfx::AcceleratedWidget widget,
-      base::TaskRunner* task_runner) override;
+      scoped_refptr<base::SequencedTaskRunner> task_runner) override;
 
  private:
   std::unique_ptr<GLOzone> glx_implementation_;
diff --git a/ui/ozone/public/surface_factory_ozone.cc b/ui/ozone/public/surface_factory_ozone.cc
index 3cf24e6..2247c0c 100644
--- a/ui/ozone/public/surface_factory_ozone.cc
+++ b/ui/ozone/public/surface_factory_ozone.cc
@@ -67,7 +67,7 @@
 
 std::unique_ptr<SurfaceOzoneCanvas> SurfaceFactoryOzone::CreateCanvasForWidget(
     gfx::AcceleratedWidget widget,
-    base::TaskRunner* task_runner) {
+    scoped_refptr<base::SequencedTaskRunner> task_runner) {
   return nullptr;
 }
 
diff --git a/ui/ozone/public/surface_factory_ozone.h b/ui/ozone/public/surface_factory_ozone.h
index a721f99..82b3d546 100644
--- a/ui/ozone/public/surface_factory_ozone.h
+++ b/ui/ozone/public/surface_factory_ozone.h
@@ -115,7 +115,7 @@
   // Browser Process using only the handle contained in gfx::AcceleratedWidget.
   virtual std::unique_ptr<SurfaceOzoneCanvas> CreateCanvasForWidget(
       gfx::AcceleratedWidget widget,
-      base::TaskRunner* task_runner);
+      scoped_refptr<base::SequencedTaskRunner> task_runner);
 
   // Create a single native buffer to be used for overlay planes or zero copy
   // for |widget| representing a particular display controller or default
diff --git a/ui/views/BUILD.gn b/ui/views/BUILD.gn
index c8a03985..30c9ea7 100644
--- a/ui/views/BUILD.gn
+++ b/ui/views/BUILD.gn
@@ -1417,7 +1417,7 @@
   ]
 
   data_deps = [
-    "//ui/resources:ui_test_pak_data",
     "//testing:run_perf_test",
+    "//ui/resources:ui_test_pak_data",
   ]
 }
diff --git a/ui/views/controls/button/button.h b/ui/views/controls/button/button.h
index 984b893..7c516816b 100644
--- a/ui/views/controls/button/button.h
+++ b/ui/views/controls/button/button.h
@@ -349,7 +349,7 @@
 
   // True when a button click should trigger an animation action on
   // ink_drop_delegate().
-  bool has_ink_drop_action_on_click_ = false;
+  bool has_ink_drop_action_on_click_ = true;
 
   // When true, the ink drop ripple and hover will be hidden prior to showing
   // the context menu.
diff --git a/ui/views/controls/button/checkbox.cc b/ui/views/controls/button/checkbox.cc
index 31898b3..7f81f5a 100644
--- a/ui/views/controls/button/checkbox.cc
+++ b/ui/views/controls/button/checkbox.cc
@@ -51,7 +51,6 @@
 
   set_request_focus_on_press(false);
   SetInkDropMode(InkDropMode::ON);
-  set_has_ink_drop_action_on_click(true);
 
   // Limit the checkbox height to match the legacy appearance.
   const gfx::Size preferred_size(LabelButton::CalculatePreferredSize());
diff --git a/ui/views/controls/button/image_button_factory.cc b/ui/views/controls/button/image_button_factory.cc
index a7977b8..07f0550 100644
--- a/ui/views/controls/button/image_button_factory.cc
+++ b/ui/views/controls/button/image_button_factory.cc
@@ -30,7 +30,6 @@
 
 void ConfigureVectorImageButton(ImageButton* button) {
   button->SetInkDropMode(Button::InkDropMode::ON);
-  button->set_has_ink_drop_action_on_click(true);
   button->SetImageHorizontalAlignment(ImageButton::ALIGN_CENTER);
   button->SetImageVerticalAlignment(ImageButton::ALIGN_MIDDLE);
   button->SetBorder(CreateEmptyBorder(
diff --git a/ui/views/controls/button/label_button.cc b/ui/views/controls/button/label_button.cc
index f476f17..ef555fa 100644
--- a/ui/views/controls/button/label_button.cc
+++ b/ui/views/controls/button/label_button.cc
@@ -383,6 +383,7 @@
 
 void LabelButton::UpdateImage() {
   image_->SetImage(GetImage(GetVisualState()));
+  ResetCachedPreferredSize();
 }
 
 void LabelButton::UpdateThemedBorder() {
diff --git a/ui/views/controls/button/md_text_button.cc b/ui/views/controls/button/md_text_button.cc
index 65f109a..1299014f 100644
--- a/ui/views/controls/button/md_text_button.cc
+++ b/ui/views/controls/button/md_text_button.cc
@@ -179,7 +179,6 @@
     : LabelButton(listener, base::string16(), button_context),
       is_prominent_(false) {
   SetInkDropMode(InkDropMode::ON);
-  set_has_ink_drop_action_on_click(true);
   SetCornerRadius(LayoutProvider::Get()->GetCornerRadiusMetric(EMPHASIS_LOW));
   SetHorizontalAlignment(gfx::ALIGN_CENTER);
   SetFocusForPlatform();
diff --git a/ui/views/controls/button/toggle_button.cc b/ui/views/controls/button/toggle_button.cc
index f4b3a42..f73a1dca 100644
--- a/ui/views/controls/button/toggle_button.cc
+++ b/ui/views/controls/button/toggle_button.cc
@@ -119,7 +119,6 @@
   // regression in crbug.com/1031983, but a matching FocusRing would probably be
   // desirable.
   SetInstallFocusRingOnFocus(false);
-  set_has_ink_drop_action_on_click(true);
 }
 
 ToggleButton::~ToggleButton() {
diff --git a/ui/views/controls/combobox/combobox.cc b/ui/views/controls/combobox/combobox.cc
index a27de976..8159d360 100644
--- a/ui/views/controls/combobox/combobox.cc
+++ b/ui/views/controls/combobox/combobox.cc
@@ -65,7 +65,6 @@
         ButtonController::NotifyAction::kOnPress);
 
     SetInkDropMode(InkDropMode::ON);
-    set_has_ink_drop_action_on_click(true);
   }
   ~TransparentButton() override = default;
 
diff --git a/ui/views/controls/editable_combobox/editable_combobox.cc b/ui/views/controls/editable_combobox/editable_combobox.cc
index b347881c..4dd0c543 100644
--- a/ui/views/controls/editable_combobox/editable_combobox.cc
+++ b/ui/views/controls/editable_combobox/editable_combobox.cc
@@ -73,7 +73,6 @@
         ButtonController::NotifyAction::kOnPress);
 
     SetInkDropMode(InkDropMode::ON);
-    set_has_ink_drop_action_on_click(true);
   }
   ~Arrow() override = default;
 
diff --git a/ui/views/controls/label.cc b/ui/views/controls/label.cc
index b166c6f..b2fc78e 100644
--- a/ui/views/controls/label.cc
+++ b/ui/views/controls/label.cc
@@ -375,7 +375,7 @@
 }
 
 bool Label::IsSelectionSupported() const {
-  return !GetObscured() && full_text_->IsSelectionSupported();
+  return !GetObscured();
 }
 
 bool Label::GetSelectable() const {
diff --git a/ui/views/controls/webview/web_dialog_view.cc b/ui/views/controls/webview/web_dialog_view.cc
index e75441d..9f8c2a3 100644
--- a/ui/views/controls/webview/web_dialog_view.cc
+++ b/ui/views/controls/webview/web_dialog_view.cc
@@ -65,6 +65,10 @@
     delegate_->OnMainFrameResourceLoadComplete(resource_load_info);
 }
 
+void ObservableWebView::ResetDelegate() {
+  delegate_ = nullptr;
+}
+
 ////////////////////////////////////////////////////////////////////////////////
 // WebDialogView, public:
 
@@ -293,6 +297,8 @@
   if (delegate_) {
     delegate_->OnDialogClosed(json_retval);
     delegate_ = nullptr;  // We will not communicate further with the delegate.
+    // Clear the copy of the delegate in |web_view_| too.
+    web_view_->ResetDelegate();
   }
 }
 
diff --git a/ui/views/controls/webview/web_dialog_view.h b/ui/views/controls/webview/web_dialog_view.h
index 6240f01e..c82d3f9 100644
--- a/ui/views/controls/webview/web_dialog_view.h
+++ b/ui/views/controls/webview/web_dialog_view.h
@@ -45,6 +45,10 @@
       const content::GlobalRequestID& request_id,
       const content::mojom::ResourceLoadInfo& resource_load_info) override;
 
+  // Resets the delegate. The delegate will no longer receive calls after this
+  // point.
+  void ResetDelegate();
+
  private:
   ui::WebDialogDelegate* delegate_;
 
diff --git a/ui/views/controls/webview/web_dialog_view_unittest.cc b/ui/views/controls/webview/web_dialog_view_unittest.cc
index 80086d9..48bfc96ad 100644
--- a/ui/views/controls/webview/web_dialog_view_unittest.cc
+++ b/ui/views/controls/webview/web_dialog_view_unittest.cc
@@ -8,6 +8,7 @@
 #include <memory>
 
 #include "base/run_loop.h"
+#include "content/public/browser/render_frame_host.h"
 #include "content/public/common/content_client.h"
 #include "content/public/test/browser_task_environment.h"
 #include "content/public/test/browser_test_utils.h"
@@ -65,9 +66,11 @@
     // dependencies from content.
     SetBrowserClientForTesting(&test_browser_client_);
 
+    web_dialog_delegate_ =
+        std::make_unique<TestWebDialogViewWebDialogDelegate>();
     web_contents_ = CreateWebContents();
     web_dialog_view_ = new WebDialogView(
-        web_contents_->GetBrowserContext(), &web_dialog_delegate_,
+        web_contents_->GetBrowserContext(), web_dialog_delegate_.get(),
         std::make_unique<ui::test::TestWebContentsHandler>());
 
     // This prevents the initialization of the dialog from navigating
@@ -94,10 +97,20 @@
 
   WebDialogView* web_dialog_view() { return web_dialog_view_; }
 
-  TestWebDialogViewWebDialogDelegate* web_dialog_delegate() {
-    return &web_dialog_delegate_;
+  views::WebView* web_view() {
+    return web_dialog_view_ ? web_dialog_view_->web_view_ : nullptr;
   }
 
+  ui::WebDialogDelegate* web_view_delegate() {
+    return web_dialog_view_ ? web_dialog_view_->delegate_ : nullptr;
+  }
+
+  TestWebDialogViewWebDialogDelegate* web_dialog_delegate() {
+    return web_dialog_delegate_.get();
+  }
+
+  void ResetWebDialogDelegate() { web_dialog_delegate_.reset(); }
+
  protected:
   std::unique_ptr<content::TestWebContents> CreateWebContents() const {
     return base::WrapUnique<content::TestWebContents>(
@@ -125,7 +138,7 @@
   WebDialogView* web_dialog_view_ = nullptr;
   base::RepeatingClosure quit_closure_;
 
-  TestWebDialogViewWebDialogDelegate web_dialog_delegate_;
+  std::unique_ptr<TestWebDialogViewWebDialogDelegate> web_dialog_delegate_;
   std::unique_ptr<content::TestWebContents> web_contents_;
 
   DISALLOW_COPY_AND_ASSIGN(WebDialogViewUnitTest);
@@ -151,4 +164,25 @@
   EXPECT_FALSE(widget_is_closed());
 }
 
+TEST_F(WebDialogViewUnitTest, ObservableWebViewOnWebDialogViewClosed) {
+  // Close the widget by pressing ESC key.
+  web_dialog_delegate()->set_close_on_escape(true);
+  const ui::KeyEvent escape_event(ui::ET_KEY_PRESSED, ui::VKEY_ESCAPE,
+                                  ui::EF_NONE);
+  SimulateKeyEvent(escape_event);
+
+  // The Dialog Widget should be closed .
+  ASSERT_TRUE(widget_is_closed());
+  // The delegate should be nullified so no further communication with it.
+  EXPECT_FALSE(web_view_delegate());
+
+  ResetWebDialogDelegate();
+  // Calling back to web view's ResourceLoadComplete() should not cause crash.
+  content::RenderFrameHost* rfh = web_view()->web_contents()->GetMainFrame();
+  ASSERT_TRUE(rfh);
+  content::GlobalRequestID request_id;
+  content::mojom::ResourceLoadInfo resource_load_info;
+  web_view()->ResourceLoadComplete(rfh, request_id, resource_load_info);
+}
+
 }  // namespace views
diff --git a/ui/views/layout/animating_layout_manager.cc b/ui/views/layout/animating_layout_manager.cc
index b089912..71ec973a 100644
--- a/ui/views/layout/animating_layout_manager.cc
+++ b/ui/views/layout/animating_layout_manager.cc
@@ -19,6 +19,21 @@
 
 namespace views {
 
+namespace {
+
+// Returns true if the specified |size| can fit in the specified |bounds|.
+// Returns false if either the width or height of |bounds| is specified and is
+// smaller than the corresponding element of |size|.
+bool CanFitInBounds(const gfx::Size& size, const SizeBounds& bounds) {
+  if (bounds.width() && *bounds.width() < size.width())
+    return false;
+  if (bounds.height() && *bounds.height() < size.height())
+    return false;
+  return true;
+}
+
+}  // namespace
+
 // Holds data about a view that is fading in or out as part of an animation.
 struct AnimatingLayoutManager::LayoutFadeInfo {
   // Whether the view is fading in or out.
@@ -140,7 +155,6 @@
 void AnimatingLayoutManager::AnimationDelegate::MakeReadyForAnimation() {
   if (!ready_to_animate_) {
     target_layout_manager_->ResetLayout();
-    target_layout_manager_->InvalidateHost(false);
     ready_to_animate_ = true;
     if (scoped_observer_.IsObserving(target_layout_manager_->host_view()))
       scoped_observer_.Remove(target_layout_manager_->host_view());
@@ -176,7 +190,6 @@
   if (should_animate_bounds_ != should_animate_bounds) {
     should_animate_bounds_ = should_animate_bounds;
     ResetLayout();
-    InvalidateHost(false);
   }
   return *this;
 }
@@ -203,7 +216,6 @@
   if (orientation_ != orientation) {
     orientation_ = orientation;
     ResetLayout();
-    InvalidateHost(false);
   }
   return *this;
 }
@@ -217,36 +229,8 @@
 void AnimatingLayoutManager::ResetLayout() {
   if (!target_layout_manager())
     return;
-
-  const gfx::Size target_size =
-      should_animate_bounds_
-          ? target_layout_manager()->GetPreferredSize(host_view())
-          : host_view()->size();
-
-  ResetLayoutToSize(target_size);
-}
-
-void AnimatingLayoutManager::ResetLayoutToSize(const gfx::Size& target_size) {
-  if (animation_delegate_)
-    animation_delegate_->Reset();
-
-  target_layout_ = target_layout_manager()->GetProposedLayout(target_size);
-  current_layout_ = target_layout_;
-  starting_layout_ = current_layout_;
-  fade_infos_.clear();
-  current_offset_ = 1.0;
-  set_cached_layout_size(target_size);
-
-  if (is_animating_)
-    OnAnimationEnded();
-}
-
-void AnimatingLayoutManager::OnAnimationEnded() {
-  DCHECK(is_animating_);
-  is_animating_ = false;
-  RunDelayedActions();
-  DCHECK(!is_animating_) << "Queued actions should not change animation state.";
-  NotifyIsAnimatingChanged();
+  ResetLayoutToTargetSize();
+  InvalidateHost(false);
 }
 
 void AnimatingLayoutManager::FadeOut(View* child_view) {
@@ -295,6 +279,7 @@
 gfx::Size AnimatingLayoutManager::GetPreferredSize(const View* host) const {
   if (!target_layout_manager())
     return gfx::Size();
+
   return should_animate_bounds_
              ? current_layout_.host_size
              : target_layout_manager()->GetPreferredSize(host);
@@ -315,6 +300,7 @@
                                                        int width) const {
   if (!target_layout_manager())
     return 0;
+
   // TODO(dfried): revisit this computation.
   return should_animate_bounds_
              ? current_layout_.host_size.height()
@@ -358,6 +344,11 @@
     QueueDelayedAction(std::move(action));
 }
 
+FlexRule AnimatingLayoutManager::GetDefaultFlexRule() const {
+  return base::BindRepeating(&AnimatingLayoutManager::DefaultFlexRuleImpl,
+                             base::Unretained(this));
+}
+
 gfx::AnimationContainer*
 AnimatingLayoutManager::GetAnimationContainerForTesting() {
   DCHECK(animation_delegate_);
@@ -396,13 +387,31 @@
   // RecalculateTarget() below).
   const gfx::Size host_size = host_view()->size();
   if (should_animate_bounds_) {
+    // Reset the layout immediately if the current or target layout exceeds the
+    // host size or the available space.
+    const SizeBounds available_size = GetAvailableHostSize();
+    const base::Optional<int> bounds_main =
+        GetMainAxis(orientation(), available_size);
     const int host_main = GetMainAxis(orientation(), host_size);
-    const int desired_main =
+    const int current_main =
         GetMainAxis(orientation(), current_layout_.host_size);
-    if (desired_main > host_main)
+    if (current_main > host_main ||
+        (bounds_main && current_main > *bounds_main)) {
+      DCHECK(!bounds_main || *bounds_main >= host_main);
+      last_available_host_size_ = available_size;
       ResetLayoutToSize(host_size);
+    } else if (available_size != last_available_host_size_) {
+      // May need to re-trigger animation if our bounds were relaxed; let us
+      // expand into the new available space.
+      RecalculateTarget();
+    }
+
+    // Verify that the last available size has been updated.
+    DCHECK_EQ(available_size, last_available_host_size_);
+
   } else if (!cached_layout_size() || host_size != *cached_layout_size()) {
-    ResetLayout();
+    // Host size changed, so reset the layout.
+    ResetLayoutToTargetSize();
   }
 
   ApplyLayout(current_layout_);
@@ -413,6 +422,33 @@
     OnAnimationEnded();
 }
 
+void AnimatingLayoutManager::OnAnimationEnded() {
+  DCHECK(is_animating_);
+  is_animating_ = false;
+  RunDelayedActions();
+  DCHECK(!is_animating_) << "Queued actions should not change animation state.";
+  NotifyIsAnimatingChanged();
+}
+
+void AnimatingLayoutManager::ResetLayoutToTargetSize() {
+  ResetLayoutToSize(GetAvailableTargetLayoutSize());
+}
+
+void AnimatingLayoutManager::ResetLayoutToSize(const gfx::Size& target_size) {
+  if (animation_delegate_)
+    animation_delegate_->Reset();
+
+  target_layout_ = target_layout_manager()->GetProposedLayout(target_size);
+  current_layout_ = target_layout_;
+  starting_layout_ = current_layout_;
+  fade_infos_.clear();
+  current_offset_ = 1.0;
+  set_cached_layout_size(target_size);
+
+  if (is_animating_)
+    OnAnimationEnded();
+}
+
 bool AnimatingLayoutManager::RecalculateTarget() {
   constexpr double kResetAnimationThreshold = 0.8;
 
@@ -421,22 +457,20 @@
 
   if (!cached_layout_size() || !animation_delegate_ ||
       !animation_delegate_->ready_to_animate()) {
-    ResetLayout();
+    ResetLayoutToTargetSize();
     return true;
   }
 
-  const gfx::Size target_size =
-      should_animate_bounds_
-          ? target_layout_manager()->GetPreferredSize(host_view())
-          : host_view()->size();
+  const gfx::Size target_size = GetAvailableTargetLayoutSize();
 
   // For layouts that are confined to available space, changing the available
   // space causes a fresh layout, not an animation.
-  // TODO(dfried): define a way for views to animate into and out of empty space
-  // as adjacent child views appear/disappear. This will be useful in animating
-  // tab titles, which currently slide over when the favicon disappears.
+  // TODO(dfried): define a way for views to animate into and out of empty
+  // space as adjacent child views appear/disappear. This will be useful in
+  // animating tab titles, which currently slide over when the favicon
+  // disappears.
   if (!should_animate_bounds_ && *cached_layout_size() != target_size) {
-    ResetLayout();
+    ResetLayoutToSize(target_size);
     return true;
   }
 
@@ -805,4 +839,95 @@
   return child_layout;
 }
 
+SizeBounds AnimatingLayoutManager::GetAvailableHostSize() const {
+  if (!host_view() || !host_view()->parent())
+    return SizeBounds();
+  return host_view()->parent()->GetAvailableSize(host_view());
+}
+
+// Returns the space in which to calculate the target layout.
+gfx::Size AnimatingLayoutManager::GetAvailableTargetLayoutSize() {
+  if (!should_animate_bounds_)
+    return host_view()->size();
+
+  const SizeBounds bounds = GetAvailableHostSize();
+  last_available_host_size_ = bounds;
+  const gfx::Size preferred_size =
+      target_layout_manager()->GetPreferredSize(host_view());
+  if (!bounds.width() || *bounds.width() > preferred_size.width()) {
+    return {preferred_size.width(),
+            bounds.height()
+                ? std::min(preferred_size.height(), *bounds.height())
+                : preferred_size.height()};
+  }
+
+  const int height = target_layout_manager()->GetPreferredHeightForWidth(
+      host_view(), *bounds.width());
+  return {*bounds.width(),
+          bounds.height() ? std::min(height, *bounds.height()) : height};
+}
+
+// static
+gfx::Size AnimatingLayoutManager::DefaultFlexRuleImpl(
+    const AnimatingLayoutManager* animating_layout,
+    const View* view,
+    const SizeBounds& size_bounds) {
+  DCHECK_EQ(view->GetLayoutManager(), animating_layout);
+
+  // This is the current preferred size, which takes animation into account.
+  const gfx::Size preferred_size = animating_layout->GetPreferredSize(view);
+
+  // Does the preferred size fit in the bounds? If so, return the preferred
+  // size. Note that the *target* size might not fit in the bounds, but we'll
+  // recalculate that the next time we lay out.
+  if (CanFitInBounds(preferred_size, size_bounds))
+    return preferred_size;
+
+  const LayoutOrientation orientation = animating_layout->orientation();
+  const base::Optional<int> bounds_main = GetMainAxis(orientation, size_bounds);
+
+  // Special case - if we're being asked for a zero-size layout we'll return the
+  // minimum size of the layout. This is because we're being probed for how
+  // small we can get, not being asked for an actual size.
+  if (bounds_main && *bounds_main <= 0)
+    return animating_layout->GetMinimumSize(view);
+
+  // We know our current size does not fit into the bounds being given to us.
+  // This is going to force a snap to a new size, which will be the ideal size
+  // of the target layout in the provided space.
+  const LayoutManagerBase* const target_layout =
+      animating_layout->target_layout_manager();
+
+  // Easiest case is that the target layout's preferred size *does* fit, in
+  // which case we can use that.
+  const gfx::Size target_preferred = target_layout->GetPreferredSize(view);
+  if (CanFitInBounds(target_preferred, size_bounds))
+    return target_preferred;
+
+  // We know that at least one of the width and height are constrained, so we
+  // need to ask the target layout how large it wants to be in the space
+  // provided.
+  gfx::Size size;
+  if (size_bounds.width() && size_bounds.height()) {
+    // If both width and height are specified, query the preferred layout in
+    // that space and return its size.
+    size = {*size_bounds.width(), *size_bounds.height()};
+  } else if (size_bounds.width()) {
+    // If only the width is specified and we are still constrained, use the
+    // height-for-width calculation.
+    // TODO(dfried): This should be rare, but it is also inefficient. See if we
+    // can't add an alternative to GetPreferredHeightForWidth that actually
+    // calculates the layout in this space so we don't have to do it twice.
+    const int height =
+        target_layout->GetPreferredHeightForWidth(view, *size_bounds.width());
+    size = {*size_bounds.width(), height};
+  } else {
+    // We now know that only the height is constrained and it's too small.
+    // Fortunately the height of a layout can't (shouldn't?) affect its width.
+    size = {target_preferred.width(), *size_bounds.height()};
+  }
+
+  return target_layout->GetProposedLayout(size).host_size;
+}
+
 }  // namespace views
diff --git a/ui/views/layout/animating_layout_manager.h b/ui/views/layout/animating_layout_manager.h
index 01abd47..d7a3846 100644
--- a/ui/views/layout/animating_layout_manager.h
+++ b/ui/views/layout/animating_layout_manager.h
@@ -12,6 +12,7 @@
 #include "base/observer_list.h"
 #include "base/time/time.h"
 #include "ui/gfx/animation/tween.h"
+#include "ui/views/layout/flex_layout_types.h"
 #include "ui/views/layout/layout_manager_base.h"
 #include "ui/views/views_export.h"
 
@@ -125,22 +126,19 @@
     DCHECK_EQ(0U, num_owned_layouts());
     T* const result = AddOwnedLayout(std::move(layout_manager));
     ResetLayout();
-    InvalidateHost(false);
     return result;
   }
+  LayoutManagerBase* target_layout_manager() {
+    return num_owned_layouts() ? owned_layout(0) : nullptr;
+  }
+  const LayoutManagerBase* target_layout_manager() const {
+    return num_owned_layouts() ? owned_layout(0) : nullptr;
+  }
 
   // Clears any previous layout, stops any animation, and re-loads the proposed
-  // layout from the embedded layout manager.
+  // layout from the embedded layout manager. Also invalidates the host view.
   void ResetLayout();
 
-  // Does the work of ResetLayout() or FreezeLayout(), with the resulting layout
-  // snapped to |target_size|.
-  void ResetLayoutToSize(const gfx::Size& target_size);
-
-  // Cleans up after an animation, runs delayed actions, and sends
-  // notifications.
-  void OnAnimationEnded();
-
   // Causes the specified child view to fade out and become hidden. Alternative
   // to directly hiding the view (which will have the same effect, but could
   // cause visual flicker if the view paints before it can re-layout.
@@ -171,6 +169,10 @@
   // animating the action is run immediately.
   void RunOrQueueAction(DelayedAction action);
 
+  // Returns a flex rule for the host view that will work in the vast majority
+  // of cases where the host view is embedded in a FlexLayout.
+  FlexRule GetDefaultFlexRule() const;
+
   // Returns the animation container being used by the layout manager, creating
   // one if one has not yet been created. Implicitly enables animation on this
   // layout, so you do not need to also call EnableAnimationForTesting().
@@ -194,12 +196,17 @@
   class AnimationDelegate;
   friend class AnimationDelegate;
 
-  LayoutManagerBase* target_layout_manager() {
-    return num_owned_layouts() ? owned_layout(0) : nullptr;
-  }
-  const LayoutManagerBase* target_layout_manager() const {
-    return num_owned_layouts() ? owned_layout(0) : nullptr;
-  }
+  // Cleans up after an animation, runs delayed actions, and sends
+  // notifications.
+  void OnAnimationEnded();
+
+  // Equivalent to calling ResetLayoutToSize(GetAvailableTargetLayoutSize()).
+  // Convenience method.
+  void ResetLayoutToTargetSize();
+
+  // Does the work of ResetLayout(), with the resulting layout snapped to
+  // |target_size|.
+  void ResetLayoutToSize(const gfx::Size& target_size);
 
   // Calculates the new target layout and returns true if it has changed.
   bool RecalculateTarget();
@@ -237,6 +244,19 @@
                                  double scale_percent,
                                  bool slide_from_leading) const;
 
+  // Returns the size available to the host view from its parent.
+  SizeBounds GetAvailableHostSize() const;
+
+  // Returns the space in which to calculate the target layout.
+  gfx::Size GetAvailableTargetLayoutSize();
+
+  // Implementation of the default flex rule for animating layout manager.
+  // See GetDefaultFlexRule() above.
+  static gfx::Size DefaultFlexRuleImpl(
+      const AnimatingLayoutManager* animating_layout,
+      const View* view,
+      const SizeBounds& size_bounds);
+
   // Whether or not to animate the bounds of the host view when the preferred
   // size of the layout changes. If false, the size will have to be set
   // explicitly by the host view's owner. Bounds animation is done by changing
@@ -265,6 +285,10 @@
   // The current animation progress.
   double current_offset_ = 1.0;
 
+  // The restrictions on the layout's size the last time we recalculated our
+  // target layout.
+  SizeBounds last_available_host_size_;
+
   // The layout being animated away from.
   ProposedLayout starting_layout_;
 
diff --git a/ui/views/layout/animating_layout_manager_unittest.cc b/ui/views/layout/animating_layout_manager_unittest.cc
index 1158d422..e8ae837b 100644
--- a/ui/views/layout/animating_layout_manager_unittest.cc
+++ b/ui/views/layout/animating_layout_manager_unittest.cc
@@ -23,6 +23,8 @@
 
 namespace {
 
+constexpr gfx::Size kChildViewSize{10, 10};
+
 // Returns a size which is the intersection of |size| and the constraints
 // provided by |bounds|, if any.
 gfx::Size ConstrainSizeToBounds(const gfx::Size& size,
@@ -44,10 +46,23 @@
     return minimum_size_ ? *minimum_size_ : View::GetMinimumSize();
   }
 
+  void SetFixArea(bool fix_area) { fix_area_ = fix_area; }
+  bool fix_area() const { return fix_area_; }
+
+  int GetHeightForWidth(int width) const override {
+    const gfx::Size preferred_size = GetPreferredSize();
+    return fix_area_ ? preferred_size.height() * preferred_size.width() /
+                           std::max(1, width)
+                     : preferred_size.height();
+  }
+
  private:
   base::Optional<gfx::Size> minimum_size_;
+  bool fix_area_ = false;
 };
 
+// Layout that provides a predictable target layout for an
+// AnimatingLayoutManager.
 class TestLayoutManager : public LayoutManagerBase {
  public:
   void SetLayout(const ProposedLayout& layout) {
@@ -88,13 +103,31 @@
   }
 };
 
-constexpr gfx::Size kChildViewSize{10, 10};
+class AnimationEventLogger : public AnimatingLayoutManager::Observer {
+ public:
+  ~AnimationEventLogger() override {}
+
+  explicit AnimationEventLogger(AnimatingLayoutManager* layout) {
+    scoped_observer_.Add(layout);
+  }
+
+  void OnLayoutIsAnimatingChanged(AnimatingLayoutManager* source,
+                                  bool is_animating) override {
+    events_.push_back(is_animating);
+  }
+
+  const std::vector<bool> events() const { return events_; }
+
+ private:
+  std::vector<bool> events_;
+  ScopedObserver<AnimatingLayoutManager, Observer> scoped_observer_{this};
+};
 
 }  // anonymous namespace
 
 // Test fixture which creates an AnimatingLayoutManager and instruments it so
 // the animations can be directly controlled via gfx::AnimationContainerTestApi.
-class AnimatingLayoutManagerSteppingTest : public testing::Test {
+class AnimatingLayoutManagerTest : public testing::Test {
  public:
   void SetUp() override {
     // Don't use a unique_ptr because derived classes may want to own this view.
@@ -182,6 +215,9 @@
 
   virtual bool UseContainerTestApi() const { return true; }
 
+  static const FlexSpecification kDropOut;
+  static const FlexSpecification kFlex;
+
  private:
   ProposedLayout layout1_;
   ProposedLayout layout2_;
@@ -192,7 +228,17 @@
   std::unique_ptr<gfx::AnimationContainerTestApi> container_test_api_;
 };
 
-TEST_F(AnimatingLayoutManagerSteppingTest, SetLayoutManager_NoAnimation) {
+const FlexSpecification AnimatingLayoutManagerTest::kDropOut =
+    FlexSpecification::ForSizeRule(MinimumFlexSizeRule::kPreferredSnapToZero,
+                                   MaximumFlexSizeRule::kPreferred)
+        .WithWeight(0);
+
+const FlexSpecification AnimatingLayoutManagerTest::kFlex =
+    FlexSpecification::ForSizeRule(MinimumFlexSizeRule::kScaleToZero,
+                                   MaximumFlexSizeRule::kUnbounded)
+        .WithOrder(2);
+
+TEST_F(AnimatingLayoutManagerTest, SetLayoutManager_NoAnimation) {
   auto test_layout = std::make_unique<TestLayoutManager>();
   test_layout->SetLayout(layout1());
   layout()->SetShouldAnimateBounds(true);
@@ -204,7 +250,7 @@
   EnsureLayout(layout1());
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest, ResetLayout_NoAnimation) {
+TEST_F(AnimatingLayoutManagerTest, ResetLayout_NoAnimation) {
   layout()->SetShouldAnimateBounds(true);
   auto* const test_layout =
       layout()->SetTargetLayoutManager(std::make_unique<TestLayoutManager>());
@@ -217,7 +263,7 @@
   EnsureLayout(layout1());
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest, HostInvalidate_TriggersAnimation) {
+TEST_F(AnimatingLayoutManagerTest, HostInvalidate_TriggersAnimation) {
   layout()->SetShouldAnimateBounds(true);
   auto* const test_layout =
       layout()->SetTargetLayoutManager(std::make_unique<TestLayoutManager>());
@@ -235,7 +281,7 @@
   EnsureLayout(layout1());
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest,
+TEST_F(AnimatingLayoutManagerTest,
        HostInvalidate_AnimateBounds_AnimationProgresses) {
   layout()->SetShouldAnimateBounds(true);
   auto* const test_layout =
@@ -273,8 +319,7 @@
   EnsureLayout(expected);
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest,
-       HostInvalidate_NoAnimateBounds_NoAnimation) {
+TEST_F(AnimatingLayoutManagerTest, HostInvalidate_NoAnimateBounds_NoAnimation) {
   layout()->SetShouldAnimateBounds(false);
   auto* const test_layout =
       layout()->SetTargetLayoutManager(std::make_unique<TestLayoutManager>());
@@ -295,8 +340,7 @@
   EnsureLayout(layout1());
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest,
-       HostResize_NoAnimateBounds_NoAnimation) {
+TEST_F(AnimatingLayoutManagerTest, HostResize_NoAnimateBounds_NoAnimation) {
   layout()->SetShouldAnimateBounds(false);
   auto* const test_layout =
       layout()->SetTargetLayoutManager(std::make_unique<TestLayoutManager>());
@@ -319,7 +363,7 @@
   EnsureLayout(layout2());
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest,
+TEST_F(AnimatingLayoutManagerTest,
        HostInvalidate_NoAnimateBounds_NewLayoutTriggersAnimation) {
   layout()->SetShouldAnimateBounds(false);
   auto* const test_layout =
@@ -344,7 +388,7 @@
   EnsureLayout(layout1());
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest,
+TEST_F(AnimatingLayoutManagerTest,
        HostInvalidate_NoAnimateBounds_AnimationProgresses) {
   layout()->SetShouldAnimateBounds(false);
   auto* const test_layout =
@@ -390,8 +434,7 @@
   EnsureLayout(expected);
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest,
-       FadeInOutMode_MiddleView_ScaleFromZero) {
+TEST_F(AnimatingLayoutManagerTest, FadeInOutMode_MiddleView_ScaleFromZero) {
   const ProposedLayout initial_layout{{50, 20},
                                       {{child(0), true, {5, 5, 10, 10}},
                                        {child(1), true, {20, 5, 10, 10}},
@@ -470,8 +513,7 @@
   EnsureLayout(final_layout);
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest,
-       FadeInOutMode_MiddleView_ScaleFromMinimum) {
+TEST_F(AnimatingLayoutManagerTest, FadeInOutMode_MiddleView_ScaleFromMinimum) {
   const ProposedLayout initial_layout{{50, 20},
                                       {{child(0), true, {5, 5, 10, 10}},
                                        {child(1), true, {20, 5, 10, 10}},
@@ -534,8 +576,7 @@
   EnsureLayout(final_layout);
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest,
-       FadeInOutMode_LeadingView_ScaleFromMinimum) {
+TEST_F(AnimatingLayoutManagerTest, FadeInOutMode_LeadingView_ScaleFromMinimum) {
   const ProposedLayout initial_layout{{50, 20},
                                       {{child(0), true, {5, 5, 10, 10}},
                                        {child(1), true, {20, 5, 10, 10}},
@@ -596,7 +637,7 @@
   EnsureLayout(final_layout);
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest,
+TEST_F(AnimatingLayoutManagerTest,
        FadeInOutMode_TrailingView_ScaleFromMinimum_FadeIn) {
   const ProposedLayout initial_layout{{35, 20},
                                       {{child(0), true, {5, 5, 10, 10}},
@@ -661,7 +702,7 @@
   EnsureLayout(final_layout);
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest,
+TEST_F(AnimatingLayoutManagerTest,
        FadeInOutMode_TrailingView_ScaleFromMinimum) {
   const ProposedLayout initial_layout{{50, 20},
                                       {{child(0), true, {5, 5, 10, 10}},
@@ -725,7 +766,7 @@
   EnsureLayout(final_layout);
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest,
+TEST_F(AnimatingLayoutManagerTest,
        FadeInOutMode_TrailingView_ScaleFromMinimum_Vertical) {
   const ProposedLayout initial_layout{{20, 50},
                                       {{child(0), true, {5, 5, 10, 10}},
@@ -786,8 +827,7 @@
   EnsureLayout(final_layout);
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest,
-       FadeInOutMode_SlideFromLeading_LastView) {
+TEST_F(AnimatingLayoutManagerTest, FadeInOutMode_SlideFromLeading_LastView) {
   const ProposedLayout initial_layout{{35, 20},
                                       {{child(0), true, {5, 5, 10, 10}},
                                        {child(1), true, {20, 5, 10, 10}},
@@ -834,8 +874,7 @@
   EnsureLayout(final_layout);
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest,
-       FadeInOutMode_SlideFromLeading_Vertical) {
+TEST_F(AnimatingLayoutManagerTest, FadeInOutMode_SlideFromLeading_Vertical) {
   const ProposedLayout initial_layout{{20, 35},
                                       {{child(0), true, {5, 5, 10, 10}},
                                        {child(1), true, {5, 20, 10, 10}},
@@ -882,8 +921,7 @@
   EnsureLayout(final_layout);
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest,
-       FadeInOutMode_SlideFromLeading_MiddleView) {
+TEST_F(AnimatingLayoutManagerTest, FadeInOutMode_SlideFromLeading_MiddleView) {
   const ProposedLayout initial_layout{{50, 20},
                                       {{child(0), true, {5, 5, 10, 10}},
                                        {child(1), true, {20, 5, 5, 10}},
@@ -932,7 +970,7 @@
   EnsureLayout(final_layout);
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest,
+TEST_F(AnimatingLayoutManagerTest,
        FadeInOutMode_SlideFromLeading_LeadingView_SlidesFromTrailing) {
   const ProposedLayout initial_layout{{50, 20},
                                       {{child(0), true, {5, 5, 10, 10}},
@@ -982,8 +1020,7 @@
   EnsureLayout(final_layout);
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest,
-       FadeInOutMode_SlideFromTrailing_MiddleView) {
+TEST_F(AnimatingLayoutManagerTest, FadeInOutMode_SlideFromTrailing_MiddleView) {
   const ProposedLayout initial_layout{{50, 20},
                                       {{child(0), true, {5, 5, 10, 10}},
                                        {child(1), true, {20, 5, 5, 10}},
@@ -1032,7 +1069,7 @@
   EnsureLayout(final_layout);
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest, FlexLayout_FadeOutOnVisibilitySet) {
+TEST_F(AnimatingLayoutManagerTest, FlexLayout_FadeOutOnVisibilitySet) {
   constexpr gfx::Insets kChildMargins(5);
   layout()->SetShouldAnimateBounds(false);
   layout()->SetOrientation(LayoutOrientation::kHorizontal);
@@ -1088,7 +1125,7 @@
   EnsureLayout(expected_end);
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest, FlexLayout_FadeInOnVisibilitySet) {
+TEST_F(AnimatingLayoutManagerTest, FlexLayout_FadeInOnVisibilitySet) {
   constexpr gfx::Insets kChildMargins(5);
   layout()->SetShouldAnimateBounds(false);
   layout()->SetOrientation(LayoutOrientation::kHorizontal);
@@ -1146,7 +1183,7 @@
 }
 
 // Regression test for issues: crbug.com/1021332, crbug.com/1003500
-TEST_F(AnimatingLayoutManagerSteppingTest,
+TEST_F(AnimatingLayoutManagerTest,
        FlexLayout_AnimateOutOnDescendentVisbilitySet) {
   constexpr gfx::Insets kChildMargins(5);
   layout()->SetShouldAnimateBounds(false);
@@ -1208,7 +1245,7 @@
 }
 
 // Regression test for issues: crbug.com/1021332, crbug.com/1003500
-TEST_F(AnimatingLayoutManagerSteppingTest,
+TEST_F(AnimatingLayoutManagerTest,
        FlexLayout_AnimateInOnDescendentVisbilitySet) {
   constexpr gfx::Insets kChildMargins(5);
   layout()->SetShouldAnimateBounds(false);
@@ -1270,7 +1307,7 @@
   EnsureLayout(expected_end);
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest, FlexLayout_FadeInOnAdded) {
+TEST_F(AnimatingLayoutManagerTest, FlexLayout_FadeInOnAdded) {
   constexpr gfx::Insets kChildMargins(5);
   layout()->SetShouldAnimateBounds(false);
   layout()->SetOrientation(LayoutOrientation::kHorizontal);
@@ -1330,7 +1367,7 @@
   EnsureLayout(expected_end);
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest, FlexLayout_FadeIn) {
+TEST_F(AnimatingLayoutManagerTest, FlexLayout_FadeIn) {
   constexpr gfx::Insets kChildMargins(5);
   layout()->SetShouldAnimateBounds(false);
   layout()->SetOrientation(LayoutOrientation::kHorizontal);
@@ -1387,7 +1424,7 @@
   EnsureLayout(expected_end);
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest, FlexLayout_FadeOut) {
+TEST_F(AnimatingLayoutManagerTest, FlexLayout_FadeOut) {
   constexpr gfx::Insets kChildMargins(5);
   layout()->SetShouldAnimateBounds(false);
   layout()->SetOrientation(LayoutOrientation::kHorizontal);
@@ -1443,7 +1480,7 @@
   EnsureLayout(expected_end);
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest, FlexLayout_FadeOut_NoCrashOnRemove) {
+TEST_F(AnimatingLayoutManagerTest, FlexLayout_FadeOut_NoCrashOnRemove) {
   constexpr gfx::Insets kChildMargins(5);
   layout()->SetShouldAnimateBounds(false);
   layout()->SetOrientation(LayoutOrientation::kHorizontal);
@@ -1501,7 +1538,7 @@
   EnsureLayout(expected_end);
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest, FlexLayout_FadeOut_IgnoreChildView) {
+TEST_F(AnimatingLayoutManagerTest, FlexLayout_FadeOut_IgnoreChildView) {
   constexpr gfx::Insets kChildMargins(5);
   layout()->SetShouldAnimateBounds(false);
   layout()->SetOrientation(LayoutOrientation::kHorizontal);
@@ -1555,7 +1592,7 @@
 
 // Test that when one view can flex to fill the space yielded by another view
 // which is hidden, and that such a layout change triggers animation.
-TEST_F(AnimatingLayoutManagerSteppingTest, FlexLayout_SlideAfterViewHidden) {
+TEST_F(AnimatingLayoutManagerTest, FlexLayout_SlideAfterViewHidden) {
   constexpr gfx::Insets kChildMargins(5);
   layout()->SetShouldAnimateBounds(false);
   auto* const flex_layout =
@@ -1607,7 +1644,7 @@
 
 // Test that when one view can flex to fill the space yielded by another view
 // which is removed, and that such a layout change triggers animation.
-TEST_F(AnimatingLayoutManagerSteppingTest, FlexLayout_SlideAfterViewRemoved) {
+TEST_F(AnimatingLayoutManagerTest, FlexLayout_SlideAfterViewRemoved) {
   constexpr gfx::Insets kChildMargins(5);
   layout()->SetShouldAnimateBounds(false);
   auto* const flex_layout =
@@ -1659,7 +1696,7 @@
 
 // Test that when an animation starts and then the target changes mid-stream,
 // the animation redirects.
-TEST_F(AnimatingLayoutManagerSteppingTest, FlexLayout_RedirectAnimation) {
+TEST_F(AnimatingLayoutManagerTest, FlexLayout_RedirectAnimation) {
   constexpr gfx::Insets kChildMargins(5);
   layout()->SetShouldAnimateBounds(false);
   auto* const flex_layout =
@@ -1718,7 +1755,7 @@
 
 // Test that when an animation starts and then the target changes near the end
 // of the animation, the animation resets.
-TEST_F(AnimatingLayoutManagerSteppingTest, FlexLayout_ResetAnimation) {
+TEST_F(AnimatingLayoutManagerTest, FlexLayout_ResetAnimation) {
   constexpr gfx::Insets kChildMargins(5);
   layout()->SetShouldAnimateBounds(false);
   auto* const flex_layout =
@@ -1779,27 +1816,7 @@
   EnsureLayout(expected_end2);
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest, TestEvents) {
-  class EventWatcher : public AnimatingLayoutManager::Observer {
-   public:
-    ~EventWatcher() override {}
-
-    explicit EventWatcher(AnimatingLayoutManager* layout) {
-      scoped_observer_.Add(layout);
-    }
-
-    void OnLayoutIsAnimatingChanged(AnimatingLayoutManager* source,
-                                    bool is_animating) override {
-      events_.push_back(is_animating);
-    }
-
-    const std::vector<bool> events() const { return events_; }
-
-   private:
-    std::vector<bool> events_;
-    ScopedObserver<AnimatingLayoutManager, Observer> scoped_observer_{this};
-  };
-
+TEST_F(AnimatingLayoutManagerTest, TestEvents) {
   layout()->SetShouldAnimateBounds(true);
   auto* const test_layout =
       layout()->SetTargetLayoutManager(std::make_unique<TestLayoutManager>());
@@ -1808,29 +1825,29 @@
   SizeAndLayout();
 
   EXPECT_FALSE(layout()->is_animating());
-  EventWatcher watcher(layout());
+  AnimationEventLogger logger(layout());
   test_layout->SetLayout(layout2());
 
   // Invalidating the layout forces a recalculation, which starts the animation.
   const std::vector<bool> expected1{true};
   view()->InvalidateLayout();
   EXPECT_TRUE(layout()->is_animating());
-  EXPECT_EQ(expected1, watcher.events());
+  EXPECT_EQ(expected1, logger.events());
 
   // Advance to completion.
   animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(1000));
   EXPECT_TRUE(layout()->is_animating());
-  EXPECT_EQ(expected1, watcher.events());
+  EXPECT_EQ(expected1, logger.events());
 
   // Final layout clears the |is_animating| state because the views are now in
   // their final configuration.
   const std::vector<bool> expected2{true, false};
   SizeAndLayout();
   EXPECT_FALSE(layout()->is_animating());
-  EXPECT_EQ(expected2, watcher.events());
+  EXPECT_EQ(expected2, logger.events());
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest, QueueDelayedAction) {
+TEST_F(AnimatingLayoutManagerTest, QueueDelayedAction) {
   bool action1_called = false;
   bool action2_called = false;
   auto action1 =
@@ -1877,8 +1894,7 @@
   EXPECT_TRUE(action2_called);
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest,
-       QueueDelayedAction_ContinueAnimation) {
+TEST_F(AnimatingLayoutManagerTest, QueueDelayedAction_ContinueAnimation) {
   bool action1_called = false;
   bool action2_called = false;
   auto action1 =
@@ -1936,7 +1952,7 @@
   EXPECT_TRUE(action2_called);
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest, QueueDelayedAction_NeverFinishes) {
+TEST_F(AnimatingLayoutManagerTest, QueueDelayedAction_NeverFinishes) {
   bool action1_called = false;
   bool action2_called = false;
   auto action1 =
@@ -1976,7 +1992,7 @@
   EXPECT_FALSE(action2_called);
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest, RunOrQueueAction) {
+TEST_F(AnimatingLayoutManagerTest, RunOrQueueAction) {
   bool action1_called = false;
   bool action2_called = false;
   auto action1 =
@@ -2028,11 +2044,11 @@
   EXPECT_TRUE(action2_called);
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest, ZOrder_UnchangedWhenNotAnimating) {
+TEST_F(AnimatingLayoutManagerTest, ZOrder_UnchangedWhenNotAnimating) {
   EXPECT_EQ(view()->children(), view()->GetChildrenInZOrder());
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest, ZOrder_UnchangedWhenNotFading) {
+TEST_F(AnimatingLayoutManagerTest, ZOrder_UnchangedWhenNotFading) {
   layout()->SetShouldAnimateBounds(true);
   auto* const test_layout =
       layout()->SetTargetLayoutManager(std::make_unique<TestLayoutManager>());
@@ -2060,7 +2076,7 @@
   EXPECT_EQ(view()->children(), view()->GetChildrenInZOrder());
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest, ZOrder_FadingOutViewMovedToBack) {
+TEST_F(AnimatingLayoutManagerTest, ZOrder_FadingOutViewMovedToBack) {
   const ProposedLayout starting_layout{{10, 10},
                                        {{child(0), true, {1, 1, 2, 2}},
                                         {child(1), true, {3, 3, 2, 2}},
@@ -2099,7 +2115,7 @@
   EXPECT_EQ(view()->children(), view()->GetChildrenInZOrder());
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest, ZOrder_FadingInViewMovedToBack) {
+TEST_F(AnimatingLayoutManagerTest, ZOrder_FadingInViewMovedToBack) {
   const ProposedLayout starting_layout{{8, 8},
                                        {{child(0), true, {1, 1, 2, 2}},
                                         {child(1), false},
@@ -2138,7 +2154,7 @@
   EXPECT_EQ(view()->children(), view()->GetChildrenInZOrder());
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest, ConstrainedSpace_StopsAnimation) {
+TEST_F(AnimatingLayoutManagerTest, ConstrainedSpace_StopsAnimation) {
   layout()->SetShouldAnimateBounds(true);
   auto* const test_layout =
       layout()->SetTargetLayoutManager(std::make_unique<TestLayoutManager>());
@@ -2158,8 +2174,7 @@
   EXPECT_FALSE(layout()->is_animating());
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest,
-       ConstrainedSpace_TriggersDelayedAction) {
+TEST_F(AnimatingLayoutManagerTest, ConstrainedSpace_TriggersDelayedAction) {
   layout()->SetShouldAnimateBounds(true);
   auto* const test_layout =
       layout()->SetTargetLayoutManager(std::make_unique<TestLayoutManager>());
@@ -2183,8 +2198,7 @@
   EXPECT_TRUE(action_called);
 }
 
-TEST_F(AnimatingLayoutManagerSteppingTest,
-       ConstrainedSpace_SubsequentAnimation) {
+TEST_F(AnimatingLayoutManagerTest, ConstrainedSpace_SubsequentAnimation) {
   layout()->SetShouldAnimateBounds(true);
   auto* const test_layout =
       layout()->SetTargetLayoutManager(std::make_unique<TestLayoutManager>());
@@ -2219,7 +2233,7 @@
 
 // Layout manager which immediately lays out its child views when it is
 // invalidated.
-class ImmediateLayoutManager : public LayoutManager {
+class ImmediateLayoutManager : public LayoutManagerBase {
  public:
   ImmediateLayoutManager(bool use_preferred_size,
                          const SizeBounds& size_bounds = SizeBounds())
@@ -2229,37 +2243,42 @@
 
   // LayoutManager:
 
-  void InvalidateLayout() override { Layout(host_); }
-
-  gfx::Size GetPreferredSize(const View* view) const override {
-    return gfx::Size();
+  void OnLayoutChanged() override {
+    LayoutManagerBase::OnLayoutChanged();
+    host_view()->Layout();
   }
 
-  void Layout(View* view) override {
-    EXPECT_EQ(host_, view);
-    for (View* child : host_->children()) {
+  ProposedLayout CalculateProposedLayout(
+      const SizeBounds& bounds) const override {
+    ProposedLayout layout;
+    for (View* child : host_view()->children()) {
+      if (!IsChildIncludedInLayout(child))
+        continue;
+      ChildLayout child_layout;
+      child_layout.child_view = child;
+      child_layout.visible = child->GetVisible();
+      child_layout.available_size = size_bounds_;
       if (use_preferred_size_) {
-        const gfx::Size preferred =
-            ConstrainSizeToBounds(child->GetPreferredSize(), size_bounds_);
-        if (preferred != child->size()) {
-          // This implicityly lays out the child view.
-          child->SetSize(preferred);
-          continue;
-        }
+        child_layout.bounds = gfx::Rect(
+            ConstrainSizeToBounds(child->GetPreferredSize(), size_bounds_));
+      } else {
+        child_layout.bounds = child->bounds();
       }
-      child->Layout();
+      layout.host_size.SetToMax(child_layout.bounds.size());
+      layout.child_layouts.push_back(child_layout);
     }
+    return layout;
   }
 
-  void Installed(View* host) override {
-    DCHECK(!host_);
-    host_ = host;
+  void SetSizeBounds(const SizeBounds& size_bounds) {
+    size_bounds_ = size_bounds;
+    LayoutManagerBase::OnLayoutChanged();
+    GetProposedLayout(host_view()->size());
   }
 
  private:
   const bool use_preferred_size_;
-  const SizeBounds size_bounds_;
-  View* host_ = nullptr;
+  SizeBounds size_bounds_;
 };
 
 // Allows an AnimatingLayoutManager to be observed so that we can wait for an
@@ -2299,29 +2318,1305 @@
 
 }  // anonymous namespace
 
+// Test which explores an animating layout manager's response to available size
+// changes.
+class AnimatingLayoutManagerRootViewTest : public AnimatingLayoutManagerTest {
+ public:
+  void SetUp() override {
+    AnimatingLayoutManagerTest::SetUp();
+    root_view_ = std::make_unique<View>();
+    root_view_->AddChildView(view());
+  }
+
+  void TearDown() override {
+    // Don't call base version because we own the view.
+  }
+
+  View* root_view() { return root_view_.get(); }
+
+ private:
+  std::unique_ptr<View> root_view_;
+};
+
+// Available Size Tests --------------------------------------------------------
+
+class AnimatingLayoutManagerAvailableSizeTest
+    : public AnimatingLayoutManagerRootViewTest {
+ protected:
+  void InitRootView() {
+    root_layout_ =
+        root_view()->SetLayoutManager(std::make_unique<ImmediateLayoutManager>(
+            layout()->should_animate_bounds()));
+  }
+
+  ImmediateLayoutManager* root_layout() { return root_layout_; }
+
+ private:
+  ImmediateLayoutManager* root_layout_;
+};
+
+TEST_F(AnimatingLayoutManagerAvailableSizeTest, AvailableSize_LimitsExpansion) {
+  constexpr gfx::Insets kChildMargins(5);
+  layout()->SetShouldAnimateBounds(true);
+  auto* const flex_layout =
+      layout()->SetTargetLayoutManager(std::make_unique<FlexLayout>());
+  flex_layout->SetOrientation(LayoutOrientation::kHorizontal);
+  flex_layout->SetCollapseMargins(true);
+  flex_layout->SetCrossAxisAlignment(LayoutAlignment::kStart);
+  flex_layout->SetDefault(kMarginsKey, kChildMargins);
+  flex_layout->SetDefault(kFlexBehaviorKey, kDropOut);
+  InitRootView();
+
+  child(1)->SetVisible(false);
+  child(2)->SetVisible(false);
+  layout()->ResetLayout();
+  view()->InvalidateLayout();
+
+  // Verify the initial layout.
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_EQ(gfx::Size(20, 20), view()->GetPreferredSize());
+  EXPECT_EQ(gfx::Size(20, 20), view()->size());
+  EXPECT_EQ(gfx::Rect(5, 5, 10, 10), child(0)->bounds());
+
+  // Set the root view bounds.
+  root_layout()->SetSizeBounds({40, 25});
+  child(1)->SetVisible(true);
+  child(2)->SetVisible(true);
+
+  // Animation should have started.
+  EXPECT_TRUE(layout()->is_animating());
+  EXPECT_EQ(gfx::Size(20, 20), view()->GetPreferredSize());
+
+  // Complete the animation.
+  AnimationEventLogger logger(layout());
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(1000));
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_EQ(gfx::Size(35, 20), view()->size());
+  EXPECT_TRUE(child(0)->GetVisible());
+  EXPECT_EQ(gfx::Rect(5, 5, 10, 10), child(0)->bounds());
+  EXPECT_TRUE(child(1)->GetVisible());
+  EXPECT_EQ(gfx::Rect(20, 5, 10, 10), child(1)->bounds());
+  EXPECT_FALSE(child(2)->GetVisible());
+
+  const std::vector<bool> expected_events{false};
+  EXPECT_EQ(expected_events, logger.events());
+}
+
+TEST_F(AnimatingLayoutManagerAvailableSizeTest,
+       AvailableSize_RestartsAnimation) {
+  constexpr gfx::Insets kChildMargins(5);
+  layout()->SetShouldAnimateBounds(true);
+  auto* const flex_layout =
+      layout()->SetTargetLayoutManager(std::make_unique<FlexLayout>());
+  flex_layout->SetOrientation(LayoutOrientation::kHorizontal);
+  flex_layout->SetCollapseMargins(true);
+  flex_layout->SetCrossAxisAlignment(LayoutAlignment::kStart);
+  flex_layout->SetDefault(kMarginsKey, kChildMargins);
+  flex_layout->SetDefault(kFlexBehaviorKey, kDropOut);
+  InitRootView();
+
+  child(1)->SetVisible(false);
+  child(2)->SetVisible(false);
+  layout()->ResetLayout();
+  view()->InvalidateLayout();
+
+  // Set the root view bounds and trigger an animation.
+  root_layout()->SetSizeBounds({40, 25});
+  child(1)->SetVisible(true);
+  child(2)->SetVisible(true);
+  EXPECT_TRUE(layout()->is_animating());
+
+  // Complete the animation.
+  AnimationEventLogger logger(layout());
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(1000));
+  EXPECT_FALSE(layout()->is_animating());
+
+  // Unconstrain the bounds and do another layout.
+  root_layout()->SetSizeBounds({80, 30});
+  root_view()->Layout();
+  EXPECT_TRUE(layout()->is_animating());
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(1000));
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_EQ(gfx::Size(50, 20), view()->GetPreferredSize());
+  EXPECT_EQ(gfx::Size(50, 20), view()->size());
+
+  const std::vector<bool> expected_events{false, true, false};
+  EXPECT_EQ(expected_events, logger.events());
+}
+
+TEST_F(AnimatingLayoutManagerAvailableSizeTest,
+       AvailableSize_RestartsAnimation_Vertical) {
+  constexpr gfx::Insets kChildMargins(5);
+  layout()->SetShouldAnimateBounds(true);
+  auto* const flex_layout =
+      layout()->SetTargetLayoutManager(std::make_unique<FlexLayout>());
+  flex_layout->SetOrientation(LayoutOrientation::kVertical);
+  flex_layout->SetCollapseMargins(true);
+  flex_layout->SetCrossAxisAlignment(LayoutAlignment::kStart);
+  flex_layout->SetDefault(kMarginsKey, kChildMargins);
+  flex_layout->SetDefault(kFlexBehaviorKey, kDropOut);
+  InitRootView();
+
+  child(1)->SetVisible(false);
+  child(2)->SetVisible(false);
+  layout()->ResetLayout();
+  view()->InvalidateLayout();
+
+  // Set the root view bounds and trigger an animation.
+  root_layout()->SetSizeBounds({25, 40});
+  child(1)->SetVisible(true);
+  child(2)->SetVisible(true);
+  EXPECT_TRUE(layout()->is_animating());
+
+  // Complete the animation.
+  AnimationEventLogger logger(layout());
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(1000));
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_TRUE(child(0)->GetVisible());
+  EXPECT_EQ(gfx::Rect(5, 5, 10, 10), child(0)->bounds());
+  EXPECT_TRUE(child(1)->GetVisible());
+  EXPECT_EQ(gfx::Rect(5, 20, 10, 10), child(1)->bounds());
+  EXPECT_FALSE(child(2)->GetVisible());
+
+  // Unconstrain the bounds and do another layout.
+  root_layout()->SetSizeBounds({30, 80});
+  root_view()->Layout();
+  EXPECT_TRUE(layout()->is_animating());
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(1000));
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_EQ(gfx::Size(20, 50), view()->GetPreferredSize());
+  EXPECT_EQ(gfx::Size(20, 50), view()->size());
+  EXPECT_TRUE(child(0)->GetVisible());
+  EXPECT_EQ(gfx::Rect(5, 5, 10, 10), child(0)->bounds());
+  EXPECT_TRUE(child(1)->GetVisible());
+  EXPECT_EQ(gfx::Rect(5, 20, 10, 10), child(1)->bounds());
+  EXPECT_TRUE(child(2)->GetVisible());
+  EXPECT_EQ(gfx::Rect(5, 35, 10, 10), child(2)->bounds());
+
+  const std::vector<bool> expected_events{false, true, false};
+  EXPECT_EQ(expected_events, logger.events());
+}
+
+TEST_F(AnimatingLayoutManagerAvailableSizeTest,
+       AvailableSize_RedirectsAnimation) {
+  constexpr gfx::Insets kChildMargins(5);
+  layout()->SetShouldAnimateBounds(true);
+  auto* const flex_layout =
+      layout()->SetTargetLayoutManager(std::make_unique<FlexLayout>());
+  flex_layout->SetOrientation(LayoutOrientation::kHorizontal);
+  flex_layout->SetCollapseMargins(true);
+  flex_layout->SetCrossAxisAlignment(LayoutAlignment::kStart);
+  flex_layout->SetDefault(kMarginsKey, kChildMargins);
+  flex_layout->SetDefault(kFlexBehaviorKey, kDropOut);
+  InitRootView();
+
+  child(1)->SetVisible(false);
+  child(2)->SetVisible(false);
+  layout()->ResetLayout();
+  view()->InvalidateLayout();
+
+  // Kick off an animation to full size.
+  child(1)->SetVisible(true);
+  child(2)->SetVisible(true);
+  EXPECT_TRUE(layout()->is_animating());
+
+  // Set the root view bounds larger than the expected size halfway through the
+  // animation (35 px wide), but smaller than the target (50px wide).
+  AnimationEventLogger logger(layout());
+  root_layout()->SetSizeBounds({45, 25});
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(500));
+
+  // This should redirect the animation.
+  EXPECT_TRUE(layout()->is_animating());
+
+  // Finish the animation.
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(500));
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_EQ(gfx::Size(35, 20), view()->size());
+  EXPECT_TRUE(child(0)->GetVisible());
+  EXPECT_EQ(gfx::Rect(5, 5, 10, 10), child(0)->bounds());
+  EXPECT_TRUE(child(1)->GetVisible());
+  EXPECT_EQ(gfx::Rect(20, 5, 10, 10), child(1)->bounds());
+  EXPECT_FALSE(child(2)->GetVisible());
+
+  const std::vector<bool> expected_events{false};
+  EXPECT_EQ(expected_events, logger.events());
+}
+
+TEST_F(AnimatingLayoutManagerAvailableSizeTest, AvailableSize_StopsAnimation) {
+  constexpr gfx::Insets kChildMargins(5);
+  layout()->SetShouldAnimateBounds(true);
+  auto* const flex_layout =
+      layout()->SetTargetLayoutManager(std::make_unique<FlexLayout>());
+  flex_layout->SetOrientation(LayoutOrientation::kHorizontal);
+  flex_layout->SetCollapseMargins(true);
+  flex_layout->SetCrossAxisAlignment(LayoutAlignment::kStart);
+  flex_layout->SetDefault(kMarginsKey, kChildMargins);
+  flex_layout->SetDefault(kFlexBehaviorKey, kDropOut);
+  InitRootView();
+
+  child(1)->SetVisible(false);
+  child(2)->SetVisible(false);
+  layout()->ResetLayout();
+  view()->InvalidateLayout();
+
+  // Kick off an animation to full size.
+  child(1)->SetVisible(true);
+  child(2)->SetVisible(true);
+  EXPECT_TRUE(layout()->is_animating());
+
+  // Set the root view bounds smaller than the expected size halfway through the
+  // animation (35 px wide).
+  AnimationEventLogger logger(layout());
+  root_layout()->SetSizeBounds({25, 25});
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(500));
+
+  // This should stop the animation.
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_TRUE(child(0)->GetVisible());
+  EXPECT_EQ(gfx::Rect(5, 5, 10, 10), child(0)->bounds());
+  EXPECT_FALSE(child(1)->GetVisible());
+  EXPECT_FALSE(child(2)->GetVisible());
+
+  const std::vector<bool> expected_events{false};
+  EXPECT_EQ(expected_events, logger.events());
+}
+
+TEST_F(AnimatingLayoutManagerAvailableSizeTest, AvailableSize_ImmediateResize) {
+  constexpr gfx::Insets kChildMargins(5);
+  layout()->SetShouldAnimateBounds(true);
+  auto* const flex_layout =
+      layout()->SetTargetLayoutManager(std::make_unique<FlexLayout>());
+  flex_layout->SetOrientation(LayoutOrientation::kHorizontal);
+  flex_layout->SetCollapseMargins(true);
+  flex_layout->SetCrossAxisAlignment(LayoutAlignment::kStart);
+  flex_layout->SetDefault(kMarginsKey, kChildMargins);
+  flex_layout->SetDefault(kFlexBehaviorKey, kDropOut);
+  InitRootView();
+  layout()->ResetLayout();
+  view()->InvalidateLayout();
+
+  // Set the root view bounds smaller than the expected size.
+  AnimationEventLogger logger(layout());
+  root_layout()->SetSizeBounds({25, 25});
+  root_view()->Layout();
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_TRUE(child(0)->GetVisible());
+  EXPECT_EQ(gfx::Rect(5, 5, 10, 10), child(0)->bounds());
+  EXPECT_FALSE(child(1)->GetVisible());
+  EXPECT_FALSE(child(2)->GetVisible());
+
+  const std::vector<bool> expected_events{};
+  EXPECT_EQ(expected_events, logger.events());
+}
+
+TEST_F(AnimatingLayoutManagerAvailableSizeTest, AvailableSize_StepDownStepUp) {
+  constexpr gfx::Insets kChildMargins(5);
+  layout()->SetShouldAnimateBounds(true);
+  auto* const flex_layout =
+      layout()->SetTargetLayoutManager(std::make_unique<FlexLayout>());
+  flex_layout->SetOrientation(LayoutOrientation::kHorizontal);
+  flex_layout->SetCollapseMargins(true);
+  flex_layout->SetCrossAxisAlignment(LayoutAlignment::kStart);
+  flex_layout->SetDefault(kMarginsKey, kChildMargins);
+  flex_layout->SetDefault(kFlexBehaviorKey, kDropOut);
+  InitRootView();
+  layout()->ResetLayout();
+  view()->InvalidateLayout();
+
+  // Set the root view bounds smaller than the expected size.
+  AnimationEventLogger logger(layout());
+  root_layout()->SetSizeBounds({25, 25});
+  root_view()->Layout();
+
+  // Step down again to a tighter bound. Should not result in animation.
+  root_layout()->SetSizeBounds({20, 20});
+  root_view()->Layout();
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_TRUE(child(0)->GetVisible());
+  EXPECT_EQ(gfx::Rect(5, 5, 10, 10), child(0)->bounds());
+  EXPECT_FALSE(child(1)->GetVisible());
+  EXPECT_FALSE(child(2)->GetVisible());
+
+  // Step back up. Should not result in animation.
+  root_layout()->SetSizeBounds({30, 30});
+  root_view()->Layout();
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_TRUE(child(0)->GetVisible());
+  EXPECT_EQ(gfx::Rect(5, 5, 10, 10), child(0)->bounds());
+  EXPECT_FALSE(child(1)->GetVisible());
+  EXPECT_FALSE(child(2)->GetVisible());
+
+  const std::vector<bool> expected_events{};
+  EXPECT_EQ(expected_events, logger.events());
+}
+
+TEST_F(AnimatingLayoutManagerAvailableSizeTest,
+       AvailableSize_ConstraintRemovedStartsAnimation) {
+  constexpr gfx::Insets kChildMargins(5);
+  layout()->SetShouldAnimateBounds(true);
+  auto* const flex_layout =
+      layout()->SetTargetLayoutManager(std::make_unique<FlexLayout>());
+  flex_layout->SetOrientation(LayoutOrientation::kHorizontal);
+  flex_layout->SetCollapseMargins(true);
+  flex_layout->SetCrossAxisAlignment(LayoutAlignment::kStart);
+  flex_layout->SetDefault(kMarginsKey, kChildMargins);
+  flex_layout->SetDefault(kFlexBehaviorKey, kDropOut);
+  InitRootView();
+  layout()->ResetLayout();
+  view()->InvalidateLayout();
+
+  // Set the root view bounds smaller than the expected size.
+  AnimationEventLogger logger(layout());
+  root_layout()->SetSizeBounds({25, 25});
+  root_view()->Layout();
+
+  // Remove the constraint. This should start an animation.
+  root_layout()->SetSizeBounds(SizeBounds());
+  root_view()->Layout();
+  EXPECT_TRUE(layout()->is_animating());
+
+  // Finish the animation.
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(1000));
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_EQ(gfx::Size(50, 20), view()->size());
+  EXPECT_TRUE(child(0)->GetVisible());
+  EXPECT_EQ(gfx::Rect(5, 5, 10, 10), child(0)->bounds());
+  EXPECT_TRUE(child(1)->GetVisible());
+  EXPECT_EQ(gfx::Rect(20, 5, 10, 10), child(1)->bounds());
+  EXPECT_TRUE(child(2)->GetVisible());
+  EXPECT_EQ(gfx::Rect(35, 5, 10, 10), child(2)->bounds());
+
+  const std::vector<bool> expected_events{true, false};
+  EXPECT_EQ(expected_events, logger.events());
+}
+
+TEST_F(AnimatingLayoutManagerAvailableSizeTest,
+       AvailableSize_LimitsExpansion_WithFlex) {
+  constexpr gfx::Insets kChildMargins(5);
+  layout()->SetShouldAnimateBounds(true);
+  auto* const flex_layout =
+      layout()->SetTargetLayoutManager(std::make_unique<FlexLayout>());
+  flex_layout->SetOrientation(LayoutOrientation::kHorizontal);
+  flex_layout->SetCollapseMargins(true);
+  flex_layout->SetCrossAxisAlignment(LayoutAlignment::kStart);
+  flex_layout->SetDefault(kMarginsKey, kChildMargins);
+  flex_layout->SetDefault(kFlexBehaviorKey, kDropOut);
+  child(1)->SetProperty(kFlexBehaviorKey, kFlex);
+  InitRootView();
+
+  child(1)->SetVisible(false);
+  child(2)->SetVisible(false);
+  layout()->ResetLayout();
+  view()->InvalidateLayout();
+
+  // Verify the initial layout.
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_EQ(gfx::Size(20, 20), view()->GetPreferredSize());
+  EXPECT_EQ(gfx::Size(20, 20), view()->size());
+  EXPECT_EQ(gfx::Rect(5, 5, 10, 10), child(0)->bounds());
+
+  // Set the root view bounds.
+  root_layout()->SetSizeBounds({45, 25});
+  child(1)->SetVisible(true);
+  child(2)->SetVisible(true);
+
+  // Animation should have started.
+  EXPECT_TRUE(layout()->is_animating());
+  EXPECT_EQ(gfx::Size(20, 20), view()->GetPreferredSize());
+
+  // Complete the animation.
+  AnimationEventLogger logger(layout());
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(1000));
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_EQ(gfx::Size(45, 20), view()->size());
+  EXPECT_TRUE(child(0)->GetVisible());
+  EXPECT_EQ(gfx::Rect(5, 5, 10, 10), child(0)->bounds());
+  EXPECT_TRUE(child(1)->GetVisible());
+  EXPECT_EQ(gfx::Rect(20, 5, 5, 10), child(1)->bounds());
+  EXPECT_TRUE(child(2)->GetVisible());
+  EXPECT_EQ(gfx::Rect(30, 5, 10, 10), child(2)->bounds());
+
+  const std::vector<bool> expected_events{false};
+  EXPECT_EQ(expected_events, logger.events());
+}
+
+TEST_F(AnimatingLayoutManagerAvailableSizeTest,
+       AvailableSize_RestartsAnimation_WithFlex) {
+  constexpr gfx::Insets kChildMargins(5);
+  layout()->SetShouldAnimateBounds(true);
+  auto* const flex_layout =
+      layout()->SetTargetLayoutManager(std::make_unique<FlexLayout>());
+  flex_layout->SetOrientation(LayoutOrientation::kHorizontal);
+  flex_layout->SetCollapseMargins(true);
+  flex_layout->SetCrossAxisAlignment(LayoutAlignment::kStart);
+  flex_layout->SetDefault(kMarginsKey, kChildMargins);
+  flex_layout->SetDefault(kFlexBehaviorKey, kDropOut);
+  child(1)->SetProperty(kFlexBehaviorKey, kFlex);
+  InitRootView();
+
+  child(1)->SetVisible(false);
+  child(2)->SetVisible(false);
+  layout()->ResetLayout();
+  view()->InvalidateLayout();
+
+  // Set the root view bounds and trigger an animation.
+  root_layout()->SetSizeBounds({45, 25});
+  child(1)->SetVisible(true);
+  child(2)->SetVisible(true);
+  EXPECT_TRUE(layout()->is_animating());
+
+  // Complete the animation.
+  AnimationEventLogger logger(layout());
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(1000));
+  EXPECT_FALSE(layout()->is_animating());
+
+  // Unconstrain the bounds and do another layout.
+  root_layout()->SetSizeBounds({80, 30});
+  root_view()->Layout();
+  EXPECT_TRUE(layout()->is_animating());
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(1000));
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_EQ(gfx::Size(50, 20), view()->GetPreferredSize());
+  EXPECT_EQ(gfx::Size(50, 20), view()->size());
+
+  const std::vector<bool> expected_events{false, true, false};
+  EXPECT_EQ(expected_events, logger.events());
+}
+
+TEST_F(AnimatingLayoutManagerAvailableSizeTest,
+       AvailableSize_RedirectsAnimation_WithFlex) {
+  constexpr gfx::Insets kChildMargins(5);
+  layout()->SetShouldAnimateBounds(true);
+  auto* const flex_layout =
+      layout()->SetTargetLayoutManager(std::make_unique<FlexLayout>());
+  flex_layout->SetOrientation(LayoutOrientation::kHorizontal);
+  flex_layout->SetCollapseMargins(true);
+  flex_layout->SetCrossAxisAlignment(LayoutAlignment::kStart);
+  flex_layout->SetDefault(kMarginsKey, kChildMargins);
+  flex_layout->SetDefault(kFlexBehaviorKey, kDropOut);
+  child(1)->SetProperty(kFlexBehaviorKey, kFlex);
+  InitRootView();
+
+  child(1)->SetVisible(false);
+  child(2)->SetVisible(false);
+  layout()->ResetLayout();
+  view()->InvalidateLayout();
+
+  // Kick off an animation to full size.
+  child(1)->SetVisible(true);
+  child(2)->SetVisible(true);
+  EXPECT_TRUE(layout()->is_animating());
+
+  // Set the root view bounds larger than the expected size halfway through the
+  // animation (35 px wide), but smaller than the target (50px wide).
+  AnimationEventLogger logger(layout());
+  root_layout()->SetSizeBounds({45, 25});
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(500));
+
+  // This should redirect the animation.
+  EXPECT_TRUE(layout()->is_animating());
+
+  // Finish the animation.
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(500));
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_EQ(gfx::Size(45, 20), view()->size());
+  EXPECT_TRUE(child(0)->GetVisible());
+  EXPECT_EQ(gfx::Rect(5, 5, 10, 10), child(0)->bounds());
+  EXPECT_TRUE(child(1)->GetVisible());
+  EXPECT_EQ(gfx::Rect(20, 5, 5, 10), child(1)->bounds());
+  EXPECT_TRUE(child(2)->GetVisible());
+  EXPECT_EQ(gfx::Rect(30, 5, 10, 10), child(2)->bounds());
+
+  const std::vector<bool> expected_events{false};
+  EXPECT_EQ(expected_events, logger.events());
+}
+
+TEST_F(AnimatingLayoutManagerAvailableSizeTest,
+       AvailableSize_StopsAnimation_WithFlex) {
+  constexpr gfx::Insets kChildMargins(5);
+  layout()->SetShouldAnimateBounds(true);
+  auto* const flex_layout =
+      layout()->SetTargetLayoutManager(std::make_unique<FlexLayout>());
+  flex_layout->SetOrientation(LayoutOrientation::kHorizontal);
+  flex_layout->SetCollapseMargins(true);
+  flex_layout->SetCrossAxisAlignment(LayoutAlignment::kStart);
+  flex_layout->SetDefault(kMarginsKey, kChildMargins);
+  flex_layout->SetDefault(kFlexBehaviorKey, kDropOut);
+  child(1)->SetProperty(kFlexBehaviorKey, kFlex);
+  InitRootView();
+
+  child(1)->SetVisible(false);
+  child(2)->SetVisible(false);
+  layout()->ResetLayout();
+  view()->InvalidateLayout();
+
+  // Kick off an animation to full size.
+  child(1)->SetVisible(true);
+  child(2)->SetVisible(true);
+  EXPECT_TRUE(layout()->is_animating());
+
+  // Set the root view bounds smaller than the expected size halfway through the
+  // animation (35 px wide).
+  AnimationEventLogger logger(layout());
+  root_layout()->SetSizeBounds({25, 25});
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(500));
+
+  // This should stop the animation.
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_TRUE(child(0)->GetVisible());
+  EXPECT_EQ(gfx::Rect(5, 5, 10, 10), child(0)->bounds());
+  EXPECT_FALSE(child(1)->GetVisible());
+  EXPECT_FALSE(child(2)->GetVisible());
+
+  const std::vector<bool> expected_events{false};
+  EXPECT_EQ(expected_events, logger.events());
+}
+
+TEST_F(AnimatingLayoutManagerAvailableSizeTest,
+       AvailableSize_ImmediateResize_WithFlex) {
+  constexpr gfx::Insets kChildMargins(5);
+  layout()->SetShouldAnimateBounds(true);
+  auto* const flex_layout =
+      layout()->SetTargetLayoutManager(std::make_unique<FlexLayout>());
+  flex_layout->SetOrientation(LayoutOrientation::kHorizontal);
+  flex_layout->SetCollapseMargins(true);
+  flex_layout->SetCrossAxisAlignment(LayoutAlignment::kStart);
+  flex_layout->SetDefault(kMarginsKey, kChildMargins);
+  flex_layout->SetDefault(kFlexBehaviorKey, kDropOut);
+  child(1)->SetProperty(kFlexBehaviorKey, kFlex);
+  InitRootView();
+  layout()->ResetLayout();
+  view()->InvalidateLayout();
+
+  // Set the root view bounds smaller than the expected size.
+  AnimationEventLogger logger(layout());
+  root_layout()->SetSizeBounds({25, 25});
+  root_view()->Layout();
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_TRUE(child(0)->GetVisible());
+  EXPECT_EQ(gfx::Rect(5, 5, 10, 10), child(0)->bounds());
+  EXPECT_FALSE(child(1)->GetVisible());
+  EXPECT_FALSE(child(2)->GetVisible());
+
+  const std::vector<bool> expected_events{};
+  EXPECT_EQ(expected_events, logger.events());
+}
+
+TEST_F(AnimatingLayoutManagerAvailableSizeTest,
+       AvailableSize_StepDownStepUp_WithFlex) {
+  constexpr gfx::Insets kChildMargins(5);
+  layout()->SetShouldAnimateBounds(true);
+  auto* const flex_layout =
+      layout()->SetTargetLayoutManager(std::make_unique<FlexLayout>());
+  flex_layout->SetOrientation(LayoutOrientation::kHorizontal);
+  flex_layout->SetCollapseMargins(true);
+  flex_layout->SetCrossAxisAlignment(LayoutAlignment::kStart);
+  flex_layout->SetDefault(kMarginsKey, kChildMargins);
+  flex_layout->SetDefault(kFlexBehaviorKey, kDropOut);
+  InitRootView();
+  layout()->ResetLayout();
+  view()->InvalidateLayout();
+
+  // Set the root view bounds smaller than the expected size.
+  AnimationEventLogger logger(layout());
+  root_layout()->SetSizeBounds({25, 25});
+  root_view()->Layout();
+
+  // Step down again to a tighter bound. Should not result in animation.
+  root_layout()->SetSizeBounds({20, 20});
+  root_view()->Layout();
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_TRUE(child(0)->GetVisible());
+  EXPECT_EQ(gfx::Rect(5, 5, 10, 10), child(0)->bounds());
+  EXPECT_FALSE(child(1)->GetVisible());
+  EXPECT_FALSE(child(2)->GetVisible());
+
+  // Step back up. Should not result in animation.
+  root_layout()->SetSizeBounds({30, 30});
+  root_view()->Layout();
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_TRUE(child(0)->GetVisible());
+  EXPECT_EQ(gfx::Rect(5, 5, 10, 10), child(0)->bounds());
+  EXPECT_FALSE(child(1)->GetVisible());
+  EXPECT_FALSE(child(2)->GetVisible());
+
+  const std::vector<bool> expected_events{};
+  EXPECT_EQ(expected_events, logger.events());
+}
+
+TEST_F(AnimatingLayoutManagerAvailableSizeTest,
+       AvailableSize_ConstraintRemovedStartsAnimation_WithFlex) {
+  constexpr gfx::Insets kChildMargins(5);
+  layout()->SetShouldAnimateBounds(true);
+  auto* const flex_layout =
+      layout()->SetTargetLayoutManager(std::make_unique<FlexLayout>());
+  flex_layout->SetOrientation(LayoutOrientation::kHorizontal);
+  flex_layout->SetCollapseMargins(true);
+  flex_layout->SetCrossAxisAlignment(LayoutAlignment::kStart);
+  flex_layout->SetDefault(kMarginsKey, kChildMargins);
+  flex_layout->SetDefault(kFlexBehaviorKey, kDropOut);
+  child(1)->SetProperty(kFlexBehaviorKey, kFlex);
+  InitRootView();
+  layout()->ResetLayout();
+  root_view()->Layout();
+
+  // Set the root view bounds smaller than the expected size.
+  AnimationEventLogger logger(layout());
+  root_layout()->SetSizeBounds({25, 25});
+  root_view()->Layout();
+  EXPECT_FALSE(layout()->is_animating());
+
+  // Remove the constraint. This should start an animation.
+  root_layout()->SetSizeBounds({60, 25});
+  root_view()->Layout();
+  EXPECT_TRUE(layout()->is_animating());
+
+  // Finish the animation.
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(1000));
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_EQ(gfx::Size(50, 20), view()->size());
+  EXPECT_TRUE(child(0)->GetVisible());
+  EXPECT_EQ(gfx::Rect(5, 5, 10, 10), child(0)->bounds());
+  EXPECT_TRUE(child(1)->GetVisible());
+  EXPECT_EQ(gfx::Rect(20, 5, 10, 10), child(1)->bounds());
+  EXPECT_TRUE(child(2)->GetVisible());
+  EXPECT_EQ(gfx::Rect(35, 5, 10, 10), child(2)->bounds());
+
+  const std::vector<bool> expected_events{true, false};
+  EXPECT_EQ(expected_events, logger.events());
+}
+
+// Flex Rule Tests -------------------------------------------------------------
+
+class AnimatingLayoutManagerFlexRuleTest : public AnimatingLayoutManagerTest {
+ public:
+  void InitLayout(LayoutOrientation orientation,
+                  const FlexSpecification& default_flex,
+                  const base::Optional<gfx::Size>& minimum_size,
+                  bool fix_child_size) {
+    for (size_t i = 0; i < num_children(); ++i) {
+      if (minimum_size)
+        child(i)->SetMinimumSize(*minimum_size);
+      if (fix_child_size)
+        child(i)->SetFixArea(true);
+    }
+    layout()->SetOrientation(orientation);
+    flex_layout_ =
+        layout()->SetTargetLayoutManager(std::make_unique<FlexLayout>());
+    flex_layout_->SetOrientation(orientation);
+    flex_layout_->SetCollapseMargins(true);
+    flex_layout_->SetDefault(kMarginsKey, gfx::Insets(5));
+    flex_layout_->SetDefault(kFlexBehaviorKey, default_flex);
+    flex_rule_ = layout()->GetDefaultFlexRule();
+  }
+
+  size_t GetVisibleChildCount(const gfx::Size& size) const {
+    ProposedLayout layout = flex_layout_->GetProposedLayout(size);
+    EXPECT_EQ(size, layout.host_size);
+    return std::count_if(
+        layout.child_layouts.begin(), layout.child_layouts.end(),
+        [](const ChildLayout& layout) { return layout.visible; });
+  }
+
+  FlexLayout* flex_layout() { return flex_layout_; }
+  FlexRule* flex_rule() { return &flex_rule_; }
+
+  static const FlexSpecification kScaleToMinimumSnapToZero;
+
+ private:
+  FlexLayout* flex_layout_;
+  FlexRule flex_rule_;
+};
+
+const FlexSpecification
+    AnimatingLayoutManagerFlexRuleTest::kScaleToMinimumSnapToZero =
+        FlexSpecification::ForSizeRule(
+            MinimumFlexSizeRule::kScaleToMinimumSnapToZero,
+            MaximumFlexSizeRule::kUnbounded,
+            true)
+            .WithOrder(2);
+
+TEST_F(AnimatingLayoutManagerFlexRuleTest, ReturnsPreferredSize) {
+  InitLayout(LayoutOrientation::kHorizontal, kScaleToMinimumSnapToZero,
+             gfx::Size(5, 5), false);
+  EXPECT_EQ(flex_layout()->GetPreferredSize(view()),
+            flex_rule()->Run(view(), {}));
+}
+
+TEST_F(AnimatingLayoutManagerFlexRuleTest,
+       VerticalBounded_ReturnsPreferredSize) {
+  InitLayout(LayoutOrientation::kVertical, kScaleToMinimumSnapToZero,
+             gfx::Size(5, 5), true);
+  const gfx::Size preferred = flex_layout()->GetPreferredSize(view());
+  const gfx::Size result =
+      flex_rule()->Run(view(), {preferred.width() + 5, base::nullopt});
+  EXPECT_EQ(preferred, result);
+  EXPECT_EQ(3U, GetVisibleChildCount(result));
+}
+
+TEST_F(AnimatingLayoutManagerFlexRuleTest,
+       VerticalBounded_ReturnsHeightForWidth) {
+  InitLayout(LayoutOrientation::kVertical, kScaleToMinimumSnapToZero,
+             gfx::Size(5, 5), true);
+
+  const gfx::Size preferred = flex_layout()->GetPreferredSize(view());
+  const int width = preferred.width() - 5;
+  const int height_for_width =
+      flex_layout()->GetPreferredHeightForWidth(view(), width);
+  DCHECK_GT(height_for_width, preferred.height());
+  const gfx::Size result = flex_rule()->Run(view(), {width, base::nullopt});
+  EXPECT_EQ(gfx::Size(width, height_for_width), result);
+  EXPECT_EQ(3U, GetVisibleChildCount(result));
+}
+
+TEST_F(AnimatingLayoutManagerFlexRuleTest, HorizontalBounded_FlexToSize) {
+  InitLayout(LayoutOrientation::kHorizontal, kScaleToMinimumSnapToZero,
+             gfx::Size(5, 5), false);
+
+  const gfx::Size preferred = flex_layout()->GetPreferredSize(view());
+  const gfx::Size actual{preferred.width() - 5, preferred.height()};
+  const ProposedLayout layout = flex_layout()->GetProposedLayout(actual);
+  DCHECK_LT(layout.host_size.width(), preferred.width());
+  const gfx::Size result = flex_rule()->Run(view(), SizeBounds(actual));
+  EXPECT_EQ(actual, result);
+  EXPECT_EQ(3U, GetVisibleChildCount(result));
+}
+
+TEST_F(AnimatingLayoutManagerFlexRuleTest, HorizontalBounded_DropOut) {
+  InitLayout(LayoutOrientation::kHorizontal, kDropOut, {}, false);
+
+  const gfx::Size preferred = flex_layout()->GetPreferredSize(view());
+  const gfx::Size actual{preferred.width() - 5, preferred.height()};
+  const ProposedLayout layout = flex_layout()->GetProposedLayout(actual);
+  DCHECK_LT(layout.host_size.width(), actual.width());
+  const gfx::Size result = flex_rule()->Run(view(), SizeBounds(actual));
+  EXPECT_EQ(layout.host_size, result);
+  EXPECT_EQ(2U, GetVisibleChildCount(result));
+}
+
+TEST_F(AnimatingLayoutManagerFlexRuleTest, VerticalBounded_FlexToSize) {
+  InitLayout(LayoutOrientation::kVertical, kScaleToMinimumSnapToZero,
+             gfx::Size(5, 5), false);
+
+  const gfx::Size preferred = flex_layout()->GetPreferredSize(view());
+  const gfx::Size actual{preferred.width(), preferred.height() - 5};
+  const ProposedLayout layout = flex_layout()->GetProposedLayout(actual);
+  DCHECK_LT(layout.host_size.height(), preferred.height());
+  const gfx::Size result = flex_rule()->Run(view(), SizeBounds(actual));
+  EXPECT_EQ(actual, result);
+  EXPECT_EQ(3U, GetVisibleChildCount(result));
+}
+
+TEST_F(AnimatingLayoutManagerFlexRuleTest, VerticalBounded_DropOut) {
+  InitLayout(LayoutOrientation::kVertical, kDropOut, {}, false);
+
+  const gfx::Size preferred = flex_layout()->GetPreferredSize(view());
+  const gfx::Size actual{preferred.width(), preferred.height() - 5};
+  const ProposedLayout layout = flex_layout()->GetProposedLayout(actual);
+  DCHECK_LT(layout.host_size.height(), actual.height());
+  const gfx::Size result = flex_rule()->Run(view(), SizeBounds(actual));
+  EXPECT_EQ(layout.host_size, result);
+  EXPECT_EQ(2U, GetVisibleChildCount(result));
+}
+
+TEST_F(AnimatingLayoutManagerFlexRuleTest, HorizontalDoubleBounded_DropOut) {
+  InitLayout(LayoutOrientation::kHorizontal, kScaleToMinimumSnapToZero,
+             gfx::Size(10, 5), true);
+
+  const gfx::Size preferred = flex_layout()->GetPreferredSize(view());
+  const gfx::Size actual{preferred.width() - 5, preferred.height() - 5};
+  const ProposedLayout layout = flex_layout()->GetProposedLayout(actual);
+  DCHECK_LT(layout.host_size.width(), preferred.width());
+  DCHECK_LT(layout.host_size.height(), preferred.height());
+  const gfx::Size result = flex_rule()->Run(view(), SizeBounds(actual));
+  EXPECT_EQ(layout.host_size, result);
+  EXPECT_EQ(2U, GetVisibleChildCount(result));
+}
+
+TEST_F(AnimatingLayoutManagerFlexRuleTest, VerticalDoubleBounded_DropOut) {
+  InitLayout(LayoutOrientation::kVertical, kScaleToMinimumSnapToZero,
+             gfx::Size(5, 10), true);
+
+  const gfx::Size preferred = flex_layout()->GetPreferredSize(view());
+  const gfx::Size actual{preferred.width() - 5, preferred.height() - 5};
+  const ProposedLayout layout = flex_layout()->GetProposedLayout(actual);
+  DCHECK_LT(layout.host_size.width(), preferred.width());
+  DCHECK_LT(layout.host_size.height(), preferred.height());
+  const gfx::Size result = flex_rule()->Run(view(), SizeBounds(actual));
+  EXPECT_EQ(layout.host_size, result);
+  EXPECT_EQ(2U, GetVisibleChildCount(result));
+}
+
+TEST_F(AnimatingLayoutManagerFlexRuleTest, HorizontalMinimumSize) {
+  InitLayout(LayoutOrientation::kHorizontal, kScaleToMinimumSnapToZero,
+             gfx::Size(5, 5), true);
+
+  const gfx::Size minimum = flex_layout()->GetMinimumSize(view());
+  const gfx::Size preferred = flex_layout()->GetPreferredSize(view());
+  DCHECK_GT(preferred.width(), minimum.width());
+  DCHECK_GT(preferred.height(), minimum.height());
+  const gfx::Size result = flex_rule()->Run(view(), SizeBounds(0, 0));
+  EXPECT_EQ(minimum, result);
+}
+
+TEST_F(AnimatingLayoutManagerFlexRuleTest, VerticalMinimumSize) {
+  InitLayout(LayoutOrientation::kVertical, kScaleToMinimumSnapToZero,
+             gfx::Size(5, 5), true);
+
+  const gfx::Size minimum = flex_layout()->GetMinimumSize(view());
+  const gfx::Size preferred = flex_layout()->GetPreferredSize(view());
+  DCHECK_GT(preferred.width(), minimum.width());
+  DCHECK_GT(preferred.height(), minimum.height());
+  const gfx::Size result = flex_rule()->Run(view(), SizeBounds(0, 0));
+  EXPECT_EQ(minimum, result);
+}
+
+// Animating Layout in Flex Layout ---------------------------------------------
+
+class AnimatingLayoutManagerInFlexLayoutTest
+    : public AnimatingLayoutManagerRootViewTest {
+ protected:
+  void SetUp() override {
+    AnimatingLayoutManagerRootViewTest::SetUp();
+    layout()->SetShouldAnimateBounds(true);
+    root_layout_ =
+        root_view()->SetLayoutManager(std::make_unique<FlexLayout>());
+    root_layout_->SetOrientation(LayoutOrientation::kHorizontal)
+        .SetMainAxisAlignment(LayoutAlignment::kStart)
+        .SetCrossAxisAlignment(LayoutAlignment::kStart);
+    view()->SetProperty(kFlexBehaviorKey, FlexSpecification::ForCustomRule(
+                                              layout()->GetDefaultFlexRule())
+                                              .WithOrder(2));
+    target_layout_ =
+        layout()->SetTargetLayoutManager(std::make_unique<FlexLayout>());
+    target_layout_->SetOrientation(LayoutOrientation::kHorizontal)
+        .SetMainAxisAlignment(LayoutAlignment::kStart)
+        .SetCrossAxisAlignment(LayoutAlignment::kStart)
+        .SetCollapseMargins(true)
+        .SetDefault(kMarginsKey, gfx::Insets(5))
+        .SetDefault(kFlexBehaviorKey, kDropOut);
+    other_view_ = root_view()->AddChildView(std::make_unique<TestView>());
+  }
+
+  FlexLayout* root_layout() { return root_layout_; }
+  FlexLayout* target_layout() { return target_layout_; }
+  TestView* other_view() { return other_view_; }
+
+ private:
+  FlexLayout* root_layout_;
+  FlexLayout* target_layout_;
+  TestView* other_view_;
+};
+
+TEST_F(AnimatingLayoutManagerInFlexLayoutTest, NoAnimation) {
+  other_view()->SetPreferredSize(gfx::Size());
+  const gfx::Size preferred = target_layout()->GetPreferredSize(view());
+  root_view()->SetSize(preferred);
+  layout()->ResetLayout();
+  root_view()->Layout();
+  AnimationEventLogger logger(layout());
+  EXPECT_EQ(preferred, view()->size());
+  const std::vector<bool> expected_events{};
+  EXPECT_EQ(expected_events, logger.events());
+}
+
+TEST_F(AnimatingLayoutManagerInFlexLayoutTest,
+       AnimateFullyWithinAvailableSpace) {
+  other_view()->SetPreferredSize(gfx::Size());
+  const gfx::Size preferred = target_layout()->GetPreferredSize(view());
+  root_view()->SetSize(preferred);
+  layout()->ResetLayout();
+  root_view()->Layout();
+  AnimationEventLogger logger(layout());
+
+  // Shrink the view by hiding a child view.
+  child(0)->SetVisible(false);
+  EXPECT_TRUE(layout()->is_animating());
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(1000));
+  root_view()->Layout();
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_EQ(target_layout()->GetPreferredSize(view()), view()->size());
+  EXPECT_EQ(child(1)->size(), kChildViewSize);
+  EXPECT_EQ(child(2)->size(), kChildViewSize);
+
+  // Grow the view back to its original size.
+  child(0)->SetVisible(true);
+  EXPECT_TRUE(layout()->is_animating());
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(1000));
+  root_view()->Layout();
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_EQ(target_layout()->GetPreferredSize(view()), view()->size());
+  EXPECT_EQ(child(0)->size(), kChildViewSize);
+  EXPECT_EQ(child(1)->size(), kChildViewSize);
+  EXPECT_EQ(child(2)->size(), kChildViewSize);
+
+  // Verify the event log.
+  const std::vector<bool> expected_events{true, false, true, false};
+  EXPECT_EQ(expected_events, logger.events());
+}
+
+TEST_F(AnimatingLayoutManagerInFlexLayoutTest, NoAnimationRestart) {
+  other_view()->SetPreferredSize(gfx::Size());
+  const gfx::Size preferred = target_layout()->GetPreferredSize(view());
+  root_view()->SetSize(preferred);
+  layout()->ResetLayout();
+  root_view()->Layout();
+  AnimationEventLogger logger(layout());
+
+  // Shrink the view by hiding a child view.
+  child(0)->SetVisible(false);
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(1000));
+  root_view()->Layout();
+  // Do an extra layout.
+  root_view()->Layout();
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_EQ(target_layout()->GetPreferredSize(view()), view()->size());
+
+  // Grow the view back to its original size.
+  child(0)->SetVisible(true);
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(1000));
+  root_view()->Layout();
+  // Do an extra layout.
+  root_view()->Layout();
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_EQ(target_layout()->GetPreferredSize(view()), view()->size());
+
+  // Verify the event log.
+  const std::vector<bool> expected_events{true, false, true, false};
+  EXPECT_EQ(expected_events, logger.events());
+}
+
+TEST_F(AnimatingLayoutManagerInFlexLayoutTest, GrowWithinConstrainedSpace) {
+  other_view()->SetPreferredSize({5, 5});
+  const gfx::Size preferred = target_layout()->GetPreferredSize(view());
+  root_view()->SetSize(preferred);
+  layout()->ResetLayout();
+  root_view()->Layout();
+  AnimationEventLogger logger(layout());
+
+  // Shrink the view by hiding child views.
+  child(0)->SetVisible(false);
+  child(1)->SetVisible(false);
+  EXPECT_TRUE(layout()->is_animating());
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(1000));
+  root_view()->Layout();
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_EQ(gfx::Size(20, 20), view()->size());
+  EXPECT_EQ(child(2)->size(), kChildViewSize);
+
+  // Grow the view back to a constrained size.
+  child(0)->SetVisible(true);
+  child(1)->SetVisible(true);
+  EXPECT_TRUE(layout()->is_animating());
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(1000));
+  root_view()->Layout();
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_EQ(gfx::Size(35, 20), view()->size());
+  EXPECT_EQ(child(0)->size(), kChildViewSize);
+  EXPECT_EQ(child(1)->size(), kChildViewSize);
+  EXPECT_FALSE(child(2)->GetVisible());
+
+  // Verify the event log.
+  const std::vector<bool> expected_events{true, false, true, false};
+  EXPECT_EQ(expected_events, logger.events());
+}
+
+TEST_F(AnimatingLayoutManagerInFlexLayoutTest,
+       GrowWithinConstrainedSpace_NoAnimationRestart) {
+  other_view()->SetPreferredSize({5, 5});
+  const gfx::Size preferred = target_layout()->GetPreferredSize(view());
+  root_view()->SetSize(preferred);
+  layout()->ResetLayout();
+  root_view()->Layout();
+  AnimationEventLogger logger(layout());
+
+  // Shrink the view by hiding child views.
+  child(0)->SetVisible(false);
+  child(1)->SetVisible(false);
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(1000));
+  root_view()->Layout();
+  // Do an extra layout.
+  root_view()->Layout();
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_EQ(gfx::Size(20, 20), view()->size());
+
+  // Grow the view back to a constrained size.
+  child(0)->SetVisible(true);
+  child(1)->SetVisible(true);
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(1000));
+  root_view()->Layout();
+  // Do an extra layout.
+  root_view()->Layout();
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_EQ(gfx::Size(35, 20), view()->size());
+
+  // Verify the event log.
+  const std::vector<bool> expected_events{true, false, true, false};
+  EXPECT_EQ(expected_events, logger.events());
+}
+
+TEST_F(AnimatingLayoutManagerInFlexLayoutTest,
+       GrowWithinConstrainedSpace_AnimationRedirected) {
+  const gfx::Size preferred = target_layout()->GetPreferredSize(view());
+  root_view()->SetSize(preferred);
+  layout()->ResetLayout();
+  root_view()->Layout();
+
+  // Shrink the view by hiding child views.
+  child(0)->SetVisible(false);
+  child(1)->SetVisible(false);
+  layout()->ResetLayout();
+  root_view()->Layout();
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_EQ(gfx::Size(20, 20), view()->size());
+
+  AnimationEventLogger logger(layout());
+
+  // Grow the view back to full size.
+  child(0)->SetVisible(true);
+  child(1)->SetVisible(true);
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(500));
+
+  // Constrain the layout before continuing.
+  other_view()->SetPreferredSize({5, 5});
+  root_view()->Layout();
+  EXPECT_TRUE(layout()->is_animating());
+
+  // Finish the animation.
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(500));
+  root_view()->Layout();
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_EQ(gfx::Size(35, 20), view()->size());
+  EXPECT_EQ(child(0)->size(), kChildViewSize);
+  EXPECT_EQ(child(1)->size(), kChildViewSize);
+  EXPECT_FALSE(child(2)->GetVisible());
+
+  // Verify the event log.
+  const std::vector<bool> expected_events{true, false};
+  EXPECT_EQ(expected_events, logger.events());
+}
+
+TEST_F(AnimatingLayoutManagerInFlexLayoutTest,
+       GrowWithinConstrainedSpace_AnimationInterrupted) {
+  const gfx::Size preferred = target_layout()->GetPreferredSize(view());
+  root_view()->SetSize(preferred);
+  layout()->ResetLayout();
+  root_view()->Layout();
+
+  // Shrink the view by hiding child views.
+  child(0)->SetVisible(false);
+  child(1)->SetVisible(false);
+  layout()->ResetLayout();
+  root_view()->Layout();
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_EQ(gfx::Size(20, 20), view()->size());
+
+  AnimationEventLogger logger(layout());
+
+  // Grow the view back to full size.
+  child(0)->SetVisible(true);
+  child(1)->SetVisible(true);
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(500));
+
+  // Constrain the layout before continuing, killing the animation.
+  other_view()->SetPreferredSize({20, 5});
+  root_view()->Layout();
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_EQ(gfx::Size(20, 20), view()->size());
+  EXPECT_EQ(child(0)->size(), kChildViewSize);
+  EXPECT_FALSE(child(1)->GetVisible());
+  EXPECT_FALSE(child(2)->GetVisible());
+
+  // Verify the event log.
+  const std::vector<bool> expected_events{true, false};
+  EXPECT_EQ(expected_events, logger.events());
+}
+
+TEST_F(AnimatingLayoutManagerInFlexLayoutTest,
+       ShrinkWithinConstrainedSpace_AnimationProceeds) {
+  const gfx::Size preferred = target_layout()->GetPreferredSize(view());
+  root_view()->SetSize(preferred);
+  layout()->ResetLayout();
+  root_view()->Layout();
+
+  AnimationEventLogger logger(layout());
+
+  // Shrink the view by hiding child views.
+  child(0)->SetVisible(false);
+  child(1)->SetVisible(false);
+  EXPECT_TRUE(layout()->is_animating());
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(500));
+
+  // Constrain the layout before continuing, but not enough to affect the
+  // current frame or target layout.
+  other_view()->SetPreferredSize({5, 5});
+  root_view()->Layout();
+  EXPECT_TRUE(layout()->is_animating());
+
+  // Finish the animation.
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(500));
+  root_view()->Layout();
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_EQ(gfx::Size(20, 20), view()->size());
+  EXPECT_FALSE(child(0)->GetVisible());
+  EXPECT_FALSE(child(1)->GetVisible());
+  EXPECT_EQ(child(2)->size(), kChildViewSize);
+
+  // Verify the event log.
+  const std::vector<bool> expected_events{true, false};
+  EXPECT_EQ(expected_events, logger.events());
+}
+
+TEST_F(AnimatingLayoutManagerInFlexLayoutTest,
+       ShrinkWithinConstrainedSpace_ExpandedSpaceHasNoEffect) {
+  const gfx::Size preferred = target_layout()->GetPreferredSize(view());
+  root_view()->SetSize(preferred);
+  layout()->ResetLayout();
+  root_view()->Layout();
+
+  AnimationEventLogger logger(layout());
+
+  // Shrink the view by hiding child views.
+  child(0)->SetVisible(false);
+  child(1)->SetVisible(false);
+  EXPECT_TRUE(layout()->is_animating());
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(500));
+
+  // Further unconstrain the layout before continuing.
+  root_view()->SetSize({preferred.width() + 5, preferred.height()});
+  EXPECT_TRUE(layout()->is_animating());
+
+  // Finish the animation.
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(500));
+  root_view()->Layout();
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_EQ(gfx::Size(20, 20), view()->size());
+  EXPECT_FALSE(child(0)->GetVisible());
+  EXPECT_FALSE(child(1)->GetVisible());
+  EXPECT_EQ(child(2)->size(), kChildViewSize);
+
+  // Verify the event log.
+  const std::vector<bool> expected_events{true, false};
+  EXPECT_EQ(expected_events, logger.events());
+}
+
+TEST_F(AnimatingLayoutManagerInFlexLayoutTest,
+       ShrinkWithinConstrainedSpace_SnapToFinalLayout) {
+  const gfx::Size preferred = target_layout()->GetPreferredSize(view());
+  root_view()->SetSize(preferred);
+  layout()->ResetLayout();
+  root_view()->Layout();
+
+  AnimationEventLogger logger(layout());
+
+  // Shrink the view by hiding child views.
+  child(0)->SetVisible(false);
+  child(1)->SetVisible(false);
+  EXPECT_TRUE(layout()->is_animating());
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(500));
+
+  // Constrain the layout before continuing.
+  other_view()->SetPreferredSize({20, 5});
+  root_view()->Layout();
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_EQ(gfx::Size(20, 20), view()->size());
+  EXPECT_FALSE(child(0)->GetVisible());
+  EXPECT_FALSE(child(1)->GetVisible());
+  EXPECT_EQ(child(2)->size(), kChildViewSize);
+
+  // Verify the event log.
+  const std::vector<bool> expected_events{true, false};
+  EXPECT_EQ(expected_events, logger.events());
+}
+
+TEST_F(AnimatingLayoutManagerInFlexLayoutTest,
+       ShrinkWithinConstrainedSpace_SnapToConstrainedLayout) {
+  const gfx::Size preferred = target_layout()->GetPreferredSize(view());
+  root_view()->SetSize(preferred);
+  layout()->ResetLayout();
+  root_view()->Layout();
+
+  AnimationEventLogger logger(layout());
+
+  // Shrink the view by hiding child views.
+  child(0)->SetVisible(false);
+  EXPECT_TRUE(layout()->is_animating());
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(500));
+
+  // Constrain the layout before continuing.
+  other_view()->SetPreferredSize({20, 5});
+  root_view()->Layout();
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_EQ(gfx::Size(20, 20), view()->size());
+  EXPECT_FALSE(child(0)->GetVisible());
+  EXPECT_EQ(child(1)->size(), kChildViewSize);
+  EXPECT_FALSE(child(2)->GetVisible());
+
+  // Verify the event log.
+  const std::vector<bool> expected_events{true, false};
+  EXPECT_EQ(expected_events, logger.events());
+}
+
+TEST_F(AnimatingLayoutManagerInFlexLayoutTest,
+       ShrinkWithinConstrainedSpace_NoRestartOnLargerPreferredSize) {
+  const gfx::Size preferred = target_layout()->GetPreferredSize(view());
+  root_view()->SetSize(preferred);
+  layout()->ResetLayout();
+  root_view()->Layout();
+
+  AnimationEventLogger logger(layout());
+
+  // Shrink the view by hiding child views.
+  child(0)->SetVisible(false);
+  child(1)->SetVisible(false);
+  EXPECT_TRUE(layout()->is_animating());
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(750));
+
+  // Constrain the layout before continuing.
+  other_view()->SetPreferredSize({20, 5});
+  child(1)->SetVisible(true);
+  root_view()->Layout();
+  EXPECT_TRUE(layout()->is_animating());
+
+  // Finish the animation.
+  animation_api()->IncrementTime(base::TimeDelta::FromMilliseconds(250));
+  root_view()->Layout();
+  EXPECT_FALSE(layout()->is_animating());
+  EXPECT_EQ(gfx::Size(20, 20), view()->size());
+  EXPECT_FALSE(child(0)->GetVisible());
+  EXPECT_EQ(child(1)->size(), kChildViewSize);
+  EXPECT_FALSE(child(2)->GetVisible());
+
+  // Verify the event log.
+  const std::vector<bool> expected_events{true, false};
+  EXPECT_EQ(expected_events, logger.events());
+}
+
+// Realtime Tests --------------------------------------------------------------
+
 // Test fixture for testing animations in realtime. Provides a parent view with
 // an ImmediateLayoutManager so that when animation frames are triggered, the
 // host view is laid out immediately. Animation durations are kept short to
 // prevent tests from taking too long.
 class AnimatingLayoutManagerRealtimeTest
-    : public AnimatingLayoutManagerSteppingTest {
+    : public AnimatingLayoutManagerRootViewTest {
  public:
   void SetUp() override {
-    AnimatingLayoutManagerSteppingTest::SetUp();
-    root_view_ = std::make_unique<View>();
-    root_view_->AddChildView(view());
+    AnimatingLayoutManagerRootViewTest::SetUp();
     animation_watcher_ = std::make_unique<AnimationWatcher>(layout());
   }
 
   void TearDown() override {
     animation_watcher_.reset();
-    // Don't call base version because we own the view.
+    AnimatingLayoutManagerRootViewTest::TearDown();
   }
 
   bool UseContainerTestApi() const override { return false; }
 
+ protected:
   void InitRootView(const SizeBounds& bounds = SizeBounds()) {
-    root_view_->SetLayoutManager(std::make_unique<ImmediateLayoutManager>(
+    root_view()->SetLayoutManager(std::make_unique<ImmediateLayoutManager>(
         layout()->should_animate_bounds(), bounds));
     layout()->EnableAnimationForTesting();
   }
@@ -2329,7 +3624,6 @@
   AnimationWatcher* animation_watcher() { return animation_watcher_.get(); }
 
  private:
-  std::unique_ptr<View> root_view_;
   std::unique_ptr<AnimationWatcher> animation_watcher_;
 };
 
@@ -2426,6 +3720,7 @@
                                               MinimumFlexSizeRule::kScaleToZero,
                                               MaximumFlexSizeRule::kPreferred));
   child(0)->SetVisible(false);
+  layout()->ResetLayout();
   view()->InvalidateLayout();
 
   const ProposedLayout starting_layout{
@@ -2453,8 +3748,7 @@
   EnsureLayout(ending_layout);
 }
 
-TEST_F(AnimatingLayoutManagerRealtimeTest,
-       TestConstrainedSpaceRestartedAnimationStops) {
+TEST_F(AnimatingLayoutManagerRealtimeTest, TestConstrainedSpaceDoesNotRestart) {
   constexpr gfx::Insets kChildMargins(5);
   static const SizeBounds kSizeBounds(45, base::nullopt);
   layout()->SetShouldAnimateBounds(true);
@@ -2470,6 +3764,7 @@
                                               MinimumFlexSizeRule::kScaleToZero,
                                               MaximumFlexSizeRule::kPreferred));
   child(0)->SetVisible(false);
+  layout()->ResetLayout();
   view()->InvalidateLayout();
 
   const ProposedLayout starting_layout{
@@ -2492,11 +3787,9 @@
   child(0)->SetVisible(true);
   animation_watcher()->WaitForAnimationToComplete();
 
-  // Invalidating the host causes an additional layout, but animation will stop
-  // immediately.
+  // Invalidating the host does not cause an additional layout - it knows how
+  // large it can be.
   view()->InvalidateLayout();
-  EXPECT_TRUE(layout()->is_animating());
-  animation_watcher()->WaitForAnimationToComplete();
   EXPECT_FALSE(layout()->is_animating());
   EXPECT_EQ(ending_layout.host_size, view()->size());
   EnsureLayout(ending_layout);
@@ -2519,6 +3812,7 @@
                                               MinimumFlexSizeRule::kScaleToZero,
                                               MaximumFlexSizeRule::kPreferred));
   child(0)->SetVisible(false);
+  layout()->ResetLayout();
   view()->InvalidateLayout();
 
   const ProposedLayout starting_layout{
diff --git a/ui/views/layout/flex_layout.cc b/ui/views/layout/flex_layout.cc
index 83d98621..8ad4e96 100644
--- a/ui/views/layout/flex_layout.cc
+++ b/ui/views/layout/flex_layout.cc
@@ -315,6 +315,15 @@
   return *this;
 }
 
+FlexLayout& FlexLayout::SetFlexAllocationOrder(
+    FlexAllocationOrder flex_allocation_order) {
+  if (flex_allocation_order_ != flex_allocation_order) {
+    flex_allocation_order_ = flex_allocation_order;
+    InvalidateHost(true);
+  }
+  return *this;
+}
+
 ProposedLayout FlexLayout::CalculateProposedLayout(
     const SizeBounds& size_bounds) const {
   FlexLayoutData data;
@@ -735,7 +744,10 @@
     // We currently consider this user error; if the behavior is not
     // desired, prioritize the child views' flex.
     bool dirty = false;
-    for (int view_index : flex_elem.second) {
+    std::vector<size_t> view_indices(flex_elem.second);
+    if (flex_allocation_order() == FlexAllocationOrder::kReverse)
+      std::reverse(view_indices.begin(), view_indices.end());
+    for (int view_index : view_indices) {
       ChildLayout& child_layout = data->layout.child_layouts[view_index];
       FlexChildData& flex_child = data->child_data[view_index];
 
diff --git a/ui/views/layout/flex_layout.h b/ui/views/layout/flex_layout.h
index bc8940b..6c483b7f 100644
--- a/ui/views/layout/flex_layout.h
+++ b/ui/views/layout/flex_layout.h
@@ -86,6 +86,7 @@
   FlexLayout& SetIncludeHostInsetsInLayout(bool include_host_insets_in_layout);
   FlexLayout& SetIgnoreDefaultMainAxisMargins(
       bool ignore_default_main_axis_margins);
+  FlexLayout& SetFlexAllocationOrder(FlexAllocationOrder flex_allocation_order);
 
   LayoutOrientation orientation() const { return orientation_; }
   bool collapse_margins() const { return collapse_margins_; }
@@ -99,6 +100,9 @@
   bool ignore_default_main_axis_margins() const {
     return ignore_default_main_axis_margins_;
   }
+  FlexAllocationOrder flex_allocation_order() const {
+    return flex_allocation_order_;
+  }
 
   // Moves and uses |value| as the default value for layout property |key|.
   template <class T, class U>
@@ -268,6 +272,12 @@
   // trailing edge of the host view.
   bool ignore_default_main_axis_margins_ = false;
 
+  // Order in which the host's child views receive their flex allocation.
+  // Setting to reverse is useful when, for example, you want views to drop out
+  // left-to-right when there's insufficient space to display them all instead
+  // of right-to-left.
+  FlexAllocationOrder flex_allocation_order_ = FlexAllocationOrder::kNormal;
+
   // Default properties for any views that don't have them explicitly set for
   // this layout.
   PropertyHandler layout_defaults_{this};
diff --git a/ui/views/layout/flex_layout_types.h b/ui/views/layout/flex_layout_types.h
index f53a63f..63b760b 100644
--- a/ui/views/layout/flex_layout_types.h
+++ b/ui/views/layout/flex_layout_types.h
@@ -25,6 +25,12 @@
 // Describes how elements should be aligned within a layout.
 enum class LayoutAlignment { kStart, kCenter, kEnd, kStretch };
 
+// Specifies whether flex space is allocated in the same order as the children
+// in the host view, or in reverse order. Reverse order is useful when you want
+// child views to drop out from left to right instead of right to left if there
+// isn't enough space to display them.
+enum class FlexAllocationOrder { kNormal, kReverse };
+
 // Callback used to specify the size of a child view based on its size bounds.
 // Create your own custom rules, or use the Minimum|MaximumFlexSizeRule
 // constants below for common behaviors.
diff --git a/ui/views/layout/flex_layout_unittest.cc b/ui/views/layout/flex_layout_unittest.cc
index dd6b673d..1ae5719 100644
--- a/ui/views/layout/flex_layout_unittest.cc
+++ b/ui/views/layout/flex_layout_unittest.cc
@@ -2506,6 +2506,56 @@
             host_->GetAvailableSize(child4));
 }
 
+// Flex Allocation Order -------------------------------------------------------
+
+TEST_F(FlexLayoutTest, FlexAllocationOrderNormal) {
+  layout_->SetOrientation(LayoutOrientation::kHorizontal);
+  layout_->SetDefault(kFlexBehaviorKey, kDropOut.WithWeight(0));
+  layout_->SetFlexAllocationOrder(FlexAllocationOrder::kNormal);
+  View* const v1 = AddChild({10, 10});
+  View* const v2 = AddChild({10, 10});
+  View* const v3 = AddChild({10, 10});
+
+  host_->SetSize({35, 10});
+  EXPECT_TRUE(v1->GetVisible());
+  EXPECT_TRUE(v2->GetVisible());
+  EXPECT_TRUE(v3->GetVisible());
+
+  host_->SetSize({25, 10});
+  EXPECT_TRUE(v1->GetVisible());
+  EXPECT_TRUE(v2->GetVisible());
+  EXPECT_FALSE(v3->GetVisible());
+
+  host_->SetSize({15, 10});
+  EXPECT_TRUE(v1->GetVisible());
+  EXPECT_FALSE(v2->GetVisible());
+  EXPECT_FALSE(v3->GetVisible());
+}
+
+TEST_F(FlexLayoutTest, FlexAllocationOrderReverse) {
+  layout_->SetOrientation(LayoutOrientation::kHorizontal);
+  layout_->SetDefault(kFlexBehaviorKey, kDropOut.WithWeight(0));
+  layout_->SetFlexAllocationOrder(FlexAllocationOrder::kReverse);
+  View* const v1 = AddChild({10, 10});
+  View* const v2 = AddChild({10, 10});
+  View* const v3 = AddChild({10, 10});
+
+  host_->SetSize({35, 10});
+  EXPECT_TRUE(v1->GetVisible());
+  EXPECT_TRUE(v2->GetVisible());
+  EXPECT_TRUE(v3->GetVisible());
+
+  host_->SetSize({25, 10});
+  EXPECT_FALSE(v1->GetVisible());
+  EXPECT_TRUE(v2->GetVisible());
+  EXPECT_TRUE(v3->GetVisible());
+
+  host_->SetSize({15, 10});
+  EXPECT_FALSE(v1->GetVisible());
+  EXPECT_FALSE(v2->GetVisible());
+  EXPECT_TRUE(v3->GetVisible());
+}
+
 // Specific Regression Cases ---------------------------------------------------
 
 // Test case (and example code) for crbug.com/1012119:
diff --git a/ui/views/layout/layout_manager_base.cc b/ui/views/layout/layout_manager_base.cc
index 367cb2e..1fcb369f 100644
--- a/ui/views/layout/layout_manager_base.cc
+++ b/ui/views/layout/layout_manager_base.cc
@@ -126,8 +126,17 @@
     // If the child view is not visible and we haven't bothered to specify
     // bounds, don't bother setting them (which would cause another cascade of
     // events that wouldn't do anything useful).
-    if (child_layout.visible || !child_layout.bounds.IsEmpty())
-      child_view->SetBoundsRect(child_layout.bounds);
+    if (child_layout.visible || !child_layout.bounds.IsEmpty()) {
+      if (child_view->bounds() != child_layout.bounds)
+        child_view->SetBoundsRect(child_layout.bounds);
+      // Child layouts which are not invalid will not be laid out by the default
+      // View::Layout() implementation, but if there is an available size
+      // constraint it's important that the child view be laid out. So we'll do
+      // it here.
+      // TODO(dfried): figure out a better way to handle this.
+      else if (child_layout.available_size != SizeBounds())
+        child_view->Layout();
+    }
   }
 }
 
diff --git a/ui/views/view.cc b/ui/views/view.cc
index 1ae351f7..5bef003 100644
--- a/ui/views/view.cc
+++ b/ui/views/view.cc
@@ -1016,6 +1016,7 @@
 }
 
 void View::SetBorder(std::unique_ptr<Border> b) {
+  const gfx::Rect old_contents_bounds = GetContentsBounds();
   border_ = std::move(b);
 
   // Conceptually, this should be PreferredSizeChanged(), but for some view
@@ -1025,7 +1026,8 @@
   // InvalidateLayout() still triggers a re-layout of the view, which should
   // include re-querying its preferred size so in practice this is both safe and
   // has the intended effect.
-  InvalidateLayout();
+  if (old_contents_bounds != GetContentsBounds())
+    InvalidateLayout();
 
   SchedulePaint();
 }
diff --git a/ui/views/window/dialog_client_view.cc b/ui/views/window/dialog_client_view.cc
index c755d9d..58ce3ab 100644
--- a/ui/views/window/dialog_client_view.cc
+++ b/ui/views/window/dialog_client_view.cc
@@ -434,10 +434,12 @@
     UpdateDialogButton(&ok_button_, ui::DIALOG_BUTTON_OK);
   }
 
-  if (extra_view_)
+  auto disowned_extra_view = GetDialogDelegate()->DisownExtraView();
+  if (!disowned_extra_view)
     return;
 
-  extra_view_ = GetDialogDelegate()->DisownExtraView().release();
+  delete extra_view_;
+  extra_view_ = disowned_extra_view.release();
   if (extra_view_ && Button::AsButton(extra_view_))
     extra_view_->SetGroup(kButtonGroup);
 }
diff --git a/ui/views/window/frame_caption_button.cc b/ui/views/window/frame_caption_button.cc
index 5a57f099..7157922 100644
--- a/ui/views/window/frame_caption_button.cc
+++ b/ui/views/window/frame_caption_button.cc
@@ -53,7 +53,6 @@
   set_animate_on_state_change(true);
   swap_images_animation_->Reset(1);
 
-  set_has_ink_drop_action_on_click(true);
   SetInkDropMode(InkDropMode::ON);
   set_ink_drop_visible_opacity(kInkDropVisibleOpacity);
   UpdateInkDropBaseColor();
diff --git a/ui/webui/mojo_web_ui_controller.h b/ui/webui/mojo_web_ui_controller.h
index bd3d7cc2..ddae2e22 100644
--- a/ui/webui/mojo_web_ui_controller.h
+++ b/ui/webui/mojo_web_ui_controller.h
@@ -35,17 +35,24 @@
   ~MojoWebUIController() override;
 
   // content::WebContentsObserver implementation.
+  // TODO(crbug.com/936482) Remove once all subclasses of MojoWebUIController
+  // have been migrated to BrowserInterfaceBroker
   void OnInterfaceRequestFromFrame(
       content::RenderFrameHost* render_frame_host,
       const std::string& interface_name,
       mojo::ScopedMessagePipeHandle* interface_pipe) override;
 
+  // TODO(crbug.com/936482) Remove once all subclasses of MojoWebUIController
+  // have been migrated to BrowserInterfaceBroker, and update the class-level
+  // comment instructing to call this method from subclasses' constructors.
   template <typename Binder>
   void AddHandlerToRegistry(Binder binder) {
     registry_.AddInterface(std::move(binder));
   }
 
  private:
+  // TODO(crbug.com/936482) Remove once all subclasses of MojoWebUIController
+  // have been migrated to BrowserInterfaceBroker
   service_manager::BinderRegistry registry_;
 
   DISALLOW_COPY_AND_ASSIGN(MojoWebUIController);
diff --git a/ui/webui/resources/cr_components/chromeos/network/BUILD.gn b/ui/webui/resources/cr_components/chromeos/network/BUILD.gn
index 30b69da..1b2d9c1 100644
--- a/ui/webui/resources/cr_components/chromeos/network/BUILD.gn
+++ b/ui/webui/resources/cr_components/chromeos/network/BUILD.gn
@@ -179,6 +179,7 @@
   deps = [
     ":network_list_types",
     "//ui/webui/resources/cr_elements:cr_scrollable_behavior",
+    "//ui/webui/resources/js:list_property_update_behavior",
   ]
 }
 
@@ -188,6 +189,7 @@
     "//ui/webui/resources/cr_elements/policy:cr_policy_network_behavior_mojo",
     "//ui/webui/resources/js:assert",
     "//ui/webui/resources/js:i18n_behavior",
+    "//ui/webui/resources/js/cr/ui:focus_row_behavior",
   ]
 }
 
diff --git a/ui/webui/resources/cr_components/chromeos/network/network_config.js b/ui/webui/resources/cr_components/chromeos/network/network_config.js
index 13b4a7e..083266f 100644
--- a/ui/webui/resources/cr_components/chromeos/network/network_config.js
+++ b/ui/webui/resources/cr_components/chromeos/network/network_config.js
@@ -323,8 +323,11 @@
     'updateEapCerts_(eapProperties_.*, serverCaCerts_, userCerts_)',
     'updateShowEap_(configProperties_.*, eapProperties_.*, securityType_)',
     'updateVpnType_(configProperties_, vpnType_)',
-    'updateVpnIPsecCerts_(vpnType_, configProperties_.typeConfig.vpn.ipSec.*)',
-    'updateOpenVPNCerts_(vpnType_, configProperties_.typeConfig.vpn.openVpn.*)',
+    'updateVpnIPsecCerts_(vpnType_,' +
+        'configProperties_.typeConfig.vpn.ipSec.*, serverCaCerts_, userCerts_)',
+    'updateOpenVPNCerts_(vpnType_,' +
+        'configProperties_.typeConfig.vpn.openVpn.*,' +
+        'serverCaCerts_, userCerts_)',
     // Multiple updateIsConfigured observers for different configurations.
     'updateIsConfigured_(configProperties_.*, securityType_)',
     'updateIsConfigured_(configProperties_, eapProperties_.*)',
@@ -391,7 +394,6 @@
     this.hiddenNetworkWarning_ = this.showHiddenNetworkWarning_();
 
     this.updateIsConfigured_();
-    this.onNetworkCertificatesChanged();
   },
 
   save: function() {
@@ -804,6 +806,8 @@
     if (autoConnect !== undefined) {
       configProperties.autoConnect = {value: autoConnect};
     }
+    // Request certificates the first time |configProperties_| is set.
+    const requestCertificates = this.configProperties_ == undefined;
     this.configProperties_ = configProperties;
     this.securityType_ = security;
     this.set('eapProperties_', this.getEap_(this.configProperties_));
@@ -813,6 +817,9 @@
     if (managedProperties.type == mojom.NetworkType.kVPN) {
       this.vpnType_ = this.getVpnTypeFromProperties_(this.configProperties_);
     }
+    if (requestCertificates) {
+      this.onNetworkCertificatesChanged();
+    }
   },
 
   /**
diff --git a/ui/webui/resources/cr_components/chromeos/network/network_list.html b/ui/webui/resources/cr_components/chromeos/network/network_list.html
index 44d83bf..dc9fda0 100644
--- a/ui/webui/resources/cr_components/chromeos/network/network_list.html
+++ b/ui/webui/resources/cr_components/chromeos/network/network_list.html
@@ -5,6 +5,8 @@
 <link rel="import" href="chrome://resources/cr_elements/shared_style_css.html">
 <link rel="import" href="chrome://resources/polymer/v1_0/iron-flex-layout/iron-flex-layout-classes.html">
 <link rel="import" href="chrome://resources/polymer/v1_0/iron-list/iron-list.html">
+<link rel="import" href="chrome://resources/html/list_property_update_behavior.html">
+
 
 <dom-module id="network-list">
   <template>
@@ -35,13 +37,18 @@
     </style>
     <div id="container" class="layout vertical flex" scrollable
         no-bottom-scroll-border$="[[noBottomScrollBorder]]">
-      <iron-list id="networkList" selection-enabled items="[[listItems_]]"
-          scroll-target="container" selected-item="{{selectedItem}}">
+      <iron-list id="networkList" items="[[listItems_]]"
+          scroll-target="container" preserve-focus>
         <template>
           <network-list-item item="[[item]]"
               show-technology-badge="[[showTechnologyBadge]]"
-              show-buttons="[[showButtons]]" tabindex$="[[tabIndex]]"
-              activation-unavailable="[[activationUnavailable]]">
+              show-buttons="[[showButtons]]"
+              tabindex$="[[tabIndex]]"
+              focus-row-index="[[index]]"
+              iron-list-tab-index="[[tabIndex]]"
+              activation-unavailable="[[activationUnavailable]]"
+              last-focused="{{lastFocused_}}"
+              list-blurred="{{listBlurred_}}">
           </network-list-item>
         </template>
       </iron-list>
diff --git a/ui/webui/resources/cr_components/chromeos/network/network_list.js b/ui/webui/resources/cr_components/chromeos/network/network_list.js
index 040de7a4..f2ca62e 100644
--- a/ui/webui/resources/cr_components/chromeos/network/network_list.js
+++ b/ui/webui/resources/cr_components/chromeos/network/network_list.js
@@ -67,82 +67,48 @@
         return [];
       },
     },
+
+    /**
+     * Used by FocusRowBehavior to track the last focused element on a row.
+     * @private
+     */
+    lastFocused_: Object,
+
+    /**
+     * Used by FocusRowBehavior to track if the list has been blurred.
+     * @private
+     */
+    listBlurred_: Boolean,
   },
 
-  behaviors: [CrScrollableBehavior],
+  behaviors: [CrScrollableBehavior, ListPropertyUpdateBehavior],
 
   observers: ['updateListItems_(networks, customItems)'],
 
   /** @private {boolean} */
   focusRequested_: false,
 
-  /**
-   * GUID of the focused network before the list is updated.  This
-   * is used to re-apply focus to the same network if possible.
-   * @private {string}
-   */
-  focusedGuidBeforeUpdate_: '',
-
-  /**
-   * Index of the focused network before the list is updated.  This
-   * is used to re-apply focus when the previously focused network
-   * is no longer listed.
-   * @private {number}
-   */
-  focusedIndexBeforeUpdate_: -1,
-
   focus: function() {
     this.focusRequested_ = true;
     this.focusFirstItem_();
   },
 
   /** @private */
-  saveFocus_: function() {
-    if (this.shadowRoot.activeElement &&
-        this.shadowRoot.activeElement.is === 'network-list-item') {
-      const focusedNetwork = /** @type {!NetworkList.NetworkListItem} */ (
-          this.shadowRoot.activeElement);
-      if (focusedNetwork.item && focusedNetwork.item.guid) {
-        this.focusedGuidBeforeUpdate = focusedNetwork.item.guid;
-        this.focusedIndexBeforeUpdate_ = this.listItems_.findIndex(
-            n => n.guid === this.focusedGuidBeforeUpdate);
-        return;
-      }
-    }
-    this.focusedGuidBeforeUpdate = '';
-    this.focusedIndexBeforeUpdate_ = -1;
-  },
-
-  /** @private */
-  restoreFocus_: function() {
-    if (this.focusedGuidBeforeUpdate) {
-      let currentIndex = this.listItems_.findIndex(
-          (n) => n.guid === this.focusedGuidBeforeUpdate);
-      if (currentIndex < 0) {
-        currentIndex = this.focusedIndexBeforeUpdate_ < this.listItems_.length ?
-            this.focusedIndexBeforeUpdate_ :
-            0;
-      }
-      this.$.networkList.focusItem(currentIndex);
-    } else if (this.focusRequested_) {
-      this.async(function() {
-        this.focusFirstItem_();
-      });
-    }
-  },
-
-  /** @private */
   updateListItems_: function() {
-    this.saveScroll(this.$.networkList);
-    this.saveFocus_();
+    if (!this.listItems_) {
+      // TODO(https://crbug.com/1034794) Determine how |listItems_| can be
+      // undefined when initializing OOBE.
+      return;
+    }
     const beforeNetworks =
         this.customItems.filter(n => n.showBeforeNetworksList == true);
     const afterNetworks =
         this.customItems.filter(n => n.showBeforeNetworksList == false);
-    this.listItems_ = beforeNetworks.concat(this.networks, afterNetworks);
-    this.restoreScroll(this.$.networkList);
+    const newList = beforeNetworks.concat(this.networks, afterNetworks);
+
+    this.updateList('listItems_', item => item.guid, newList);
+
     this.updateScrollableContents();
-    this.restoreFocus_();
   },
 
   /** @private */
@@ -155,28 +121,4 @@
     item.focus();
     this.focusRequested_ = false;
   },
-
-  /**
-   * Use iron-list selection (which is not the same as focus) to trigger
-   * tap (requires selection-enabled) or keyboard selection.
-   * @private
-   */
-  selectedItemChanged_: function() {
-    if (this.selectedItem) {
-      this.onItemAction_(this.selectedItem);
-    }
-  },
-
-  /**
-   * @param {!NetworkList.NetworkListItemType} item
-   * @private
-   */
-  onItemAction_: function(item) {
-    if (item.hasOwnProperty('customItemName')) {
-      this.fire('custom-item-selected', item);
-    } else {
-      this.fire('selected', item);
-      this.focusRequested_ = true;
-    }
-  },
 });
diff --git a/ui/webui/resources/cr_components/chromeos/network/network_list_item.html b/ui/webui/resources/cr_components/chromeos/network/network_list_item.html
index 3ae7c98..a88fb63 100644
--- a/ui/webui/resources/cr_components/chromeos/network/network_list_item.html
+++ b/ui/webui/resources/cr_components/chromeos/network/network_list_item.html
@@ -9,6 +9,7 @@
 <link rel="import" href="chrome://resources/cr_elements/shared_style_css.html">
 <link rel="import" href="chrome://resources/cr_elements/shared_vars_css.html">
 <link rel="import" href="chrome://resources/html/i18n_behavior.html">
+<link rel="import" href="chrome://resources/html/cr/ui/focus_row_behavior.html">
 <link rel="import" href="chrome://resources/polymer/v1_0/iron-flex-layout/iron-flex-layout-classes.html">
 
 <dom-module id="network-list-item">
@@ -20,6 +21,7 @@
       }
 
       #divOuter {
+        height: 100%;
         padding-inline-end: var(--cr-icon-ripple-padding);
       }
 
@@ -55,39 +57,59 @@
       cr-policy-indicator {
         padding: 0 var(--cr-controlled-by-spacing);
       }
+
+      #wrapper {
+        height: 100%;
+      }
     </style>
-    <div id="divOuter"
-        class="layout horizontal center flex" actionable>
-      <template is="dom-if" if="[[networkState]]">
-        <network-icon is-list-item
-            show-technology-badge="[[showTechnologyBadge]]"
-            network-state="[[networkState]]">
-        </network-icon>
-      </template>
-      <template is="dom-if" if="[[item.polymerIcon]]">
-        <iron-icon icon="[[item.polymerIcon]]"></iron-icon>
-      </template>
-      <div id="divText" class="layout horizontal flex">
-        <div aria-hidden="true">[[getItemName_(item)]]</div>
-        <div id="networkStateText"
-            hidden$="[[!isStateTextVisible_(networkState)]]"
-            active$="[[isStateTextActive_(networkState,
-                         activationUnavailable)]]">
-          [[getNetworkStateText_(networkState, activationUnavailable)]]
+    <div id="wrapper" focus-row-container
+         class="layout horizontal center flex">
+      <div id="divOuter"
+           class="layout horizontal center flex"
+           actionable
+           focus-row-control
+           selectable
+           aria-label$="[[rowLabel]]"
+           role="button"
+           focus-type="rowWrapper"
+           on-keydown="onKeydown_"
+           on-click="onSelected_">
+        <template is="dom-if" if="[[networkState]]">
+          <network-icon is-list-item
+              show-technology-badge="[[showTechnologyBadge]]"
+              network-state="[[networkState]]">
+          </network-icon>
+        </template>
+        <template is="dom-if" if="[[item.polymerIcon]]">
+          <iron-icon icon="[[item.polymerIcon]]"></iron-icon>
+        </template>
+        <div id="divText" class="layout horizontal flex">
+          <div aria-hidden="true">[[getItemName_(item)]]</div>
+          <div id="networkStateText"
+              hidden$="[[!isStateTextVisible_(networkState)]]"
+              active$="[[isStateTextActive_(networkState,
+                           activationUnavailable)]]">
+            [[getNetworkStateText_(networkState, activationUnavailable)]]
+          </div>
         </div>
+        <template is="dom-if" if="[[isPolicySource(networkState.source)]]">
+          <cr-policy-indicator indicator-type="[[getIndicatorTypeForSource(
+              networkState.source)]]">
+          </cr-policy-indicator>
+        </template>
+        <template is="dom-if" if="[[isSubpageButtonVisible_(networkState, showButtons)]]" restamp>
+          <div>
+            <cr-icon-button class="subpage-arrow"
+                id="subpage-button"
+                on-click="onSubpageArrowClick_"
+                tabindex$="[[tabindex]]"
+                aria-label$="[[buttonLabel]]"
+                focus-row-control
+                focus-type="subpageButton">
+            </cr-icon-button>
+          </div>
+        </template>
       </div>
-      <template is="dom-if" if="[[isPolicySource(networkState.source)]]">
-        <cr-policy-indicator indicator-type="[[getIndicatorTypeForSource(
-            networkState.source)]]">
-        </cr-policy-indicator>
-      </template>
-      <template is="dom-if"
-          if="[[isSubpageButtonVisible_(networkState, showButtons)]]" restamp>
-        <cr-icon-button class="subpage-arrow" id="subpage-button"
-            on-click="onSubpageArrowClick_" tabindex$="[[tabindex]]"
-            aria-label$="[[buttonLabel]]">
-        </cr-icon-button>
-      </template>
     </div>
   </template>
   <script src="network_list_item.js"></script>
diff --git a/ui/webui/resources/cr_components/chromeos/network/network_list_item.js b/ui/webui/resources/cr_components/chromeos/network/network_list_item.js
index 9d1f0f9..c3d010a5 100644
--- a/ui/webui/resources/cr_components/chromeos/network/network_list_item.js
+++ b/ui/webui/resources/cr_components/chromeos/network/network_list_item.js
@@ -13,6 +13,7 @@
   behaviors: [
     CrPolicyNetworkBehaviorMojo,
     I18nBehavior,
+    cr.ui.FocusRowBehavior,
   ],
 
   properties: {
@@ -45,7 +46,6 @@
     tabindex: {
       type: Number,
       value: -1,
-      reflectToAttribute: true,
     },
 
     /**
@@ -53,11 +53,10 @@
      * added as an attribute on this top-level network-list-item, and can
      * be used by any sub-element which applies it.
      */
-    ariaLabel: {
+    rowLabel: {
       type: String,
       notify: true,
-      reflectToAttribute: true,
-      computed: 'getAriaLabel_(item, networkState)',
+      computed: 'getRowLabel_(item, networkState)',
     },
 
     buttonLabel: {
@@ -155,15 +154,16 @@
    * @return {string}
    * @private
    */
-  getAriaLabel_: function() {
+  getRowLabel_: function() {
     const NetworkType = chromeos.networkConfig.mojom.NetworkType;
     const OncSource = chromeos.networkConfig.mojom.OncSource;
     const SecurityType = chromeos.networkConfig.mojom.SecurityType;
     const status = this.getNetworkStateText_();
     const isManaged = this.item.source === OncSource.kDevicePolicy ||
         this.item.source === OncSource.kUserPolicy;
-    const index = this.parentElement.items.indexOf(this.item) + 1;
-    const total = this.parentElement.items.length;
+    const list = this.parentElement;
+    const index = list.items.indexOf(this.item) + 1;
+    const total = list.items.length;
     switch (this.item.type) {
       case NetworkType.kCellular:
         if (isManaged) {
@@ -324,13 +324,11 @@
   onKeydown_: function(event) {
     // The only key event handled by this element is pressing Enter when the
     // subpage arrow is focused.
-    if (event.key != 'Enter' ||
-        !this.isSubpageButtonVisible_(this.networkState, this.showButtons) ||
-        this.$$('#subpage-button') != this.shadowRoot.activeElement) {
+    if (event.key != 'Enter' && event.key != ' ') {
       return;
     }
 
-    this.fireShowDetails_(event);
+    this.onSelected_(event);
 
     // The default event for pressing Enter on a focused button is to simulate a
     // click on the button. Prevent this action, since it would navigate a
@@ -340,6 +338,22 @@
   },
 
   /**
+   * @param {!Event} event
+   * @private
+   */
+  onSelected_: function(event) {
+    if (this.isSubpageButtonVisible_(this.networkState, this.showButtons) &&
+        this.$$('#subpage-button') == this.shadowRoot.activeElement) {
+      this.fireShowDetails_(event);
+    } else if (this.item.hasOwnProperty('customItemName')) {
+      this.fire('custom-item-selected', this.item);
+    } else {
+      this.fire('selected', this.item);
+      this.focusRequested_ = true;
+    }
+  },
+
+  /**
    * @param {!MouseEvent} event
    * @private
    */
diff --git a/ui/webui/resources/cr_components/chromeos/network/network_select.js b/ui/webui/resources/cr_components/chromeos/network/network_select.js
index 91d2638..10f24670 100644
--- a/ui/webui/resources/cr_components/chromeos/network/network_select.js
+++ b/ui/webui/resources/cr_components/chromeos/network/network_select.js
@@ -125,7 +125,7 @@
     for (const network of networkList.children) {
       if (network.is === 'network-list-item' &&
           network.$$('#divText').children[0].innerText === name) {
-        return network;
+        return network.shadowRoot.getElementById('divOuter');
       }
     }
     return null;
diff --git a/weblayer/BUILD.gn b/weblayer/BUILD.gn
index 033d9251..9496d84 100644
--- a/weblayer/BUILD.gn
+++ b/weblayer/BUILD.gn
@@ -92,6 +92,8 @@
     "browser/browser_main_parts_impl.h",
     "browser/content_browser_client_impl.cc",
     "browser/content_browser_client_impl.h",
+    "browser/download_manager_delegate_impl.cc",
+    "browser/download_manager_delegate_impl.h",
     "browser/file_select_helper.cc",
     "browser/file_select_helper.h",
     "browser/i18n_util.cc",
diff --git a/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/TopControlsTest.java b/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/TopControlsTest.java
index 3b7eb10..9aca591 100644
--- a/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/TopControlsTest.java
+++ b/weblayer/browser/android/javatests/src/org/chromium/weblayer/test/TopControlsTest.java
@@ -4,6 +4,7 @@
 
 package org.chromium.weblayer.test;
 
+import android.os.SystemClock;
 import android.support.test.filters.SmallTest;
 import android.support.v4.app.Fragment;
 import android.view.View;
@@ -88,6 +89,10 @@
         mInitialVisiblePageHeight = getVisiblePageHeight();
         Assert.assertTrue(mInitialVisiblePageHeight > 0);
 
+        // TODO(http://crbug.com/1034147): Remove this and find a way to pass command line arguments
+        // to the implementation.
+        SystemClock.sleep(3100);
+
         // Move by the size of the top-controls.
         EventUtils.simulateDragFromCenterOfView(
                 activity.getWindow().getDecorView(), 0, -mTopControlsHeight);
diff --git a/weblayer/browser/download_manager_delegate_impl.cc b/weblayer/browser/download_manager_delegate_impl.cc
new file mode 100644
index 0000000..ddde768
--- /dev/null
+++ b/weblayer/browser/download_manager_delegate_impl.cc
@@ -0,0 +1,37 @@
+// 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 "weblayer/browser/download_manager_delegate_impl.h"
+
+#include "weblayer/browser/tab_impl.h"
+#include "weblayer/public/download_delegate.h"
+
+namespace weblayer {
+
+DownloadManagerDelegateImpl::DownloadManagerDelegateImpl() = default;
+DownloadManagerDelegateImpl::~DownloadManagerDelegateImpl() = default;
+
+bool DownloadManagerDelegateImpl::InterceptDownloadIfApplicable(
+    const GURL& url,
+    const std::string& user_agent,
+    const std::string& content_disposition,
+    const std::string& mime_type,
+    const std::string& request_origin,
+    int64_t content_length,
+    bool is_transient,
+    content::WebContents* web_contents) {
+  // If there's no DownloadDelegate, the download is simply dropped.
+  auto* tab = TabImpl::FromWebContents(web_contents);
+  if (!tab)
+    return true;
+
+  DownloadDelegate* delegate = tab->download_delegate();
+  if (!delegate)
+    return true;
+
+  return delegate->InterceptDownload(url, user_agent, content_disposition,
+                                     mime_type, content_length);
+}
+
+}  // namespace weblayer
diff --git a/weblayer/browser/download_manager_delegate_impl.h b/weblayer/browser/download_manager_delegate_impl.h
new file mode 100644
index 0000000..6ed60d4
--- /dev/null
+++ b/weblayer/browser/download_manager_delegate_impl.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 WEBLAYER_BROWSER_DOWNLOAD_MANAGER_DELEGATE_IMPL_H_
+#define WEBLAYER_BROWSER_DOWNLOAD_MANAGER_DELEGATE_IMPL_H_
+
+#include "content/public/browser/download_manager_delegate.h"
+
+namespace weblayer {
+
+class DownloadManagerDelegateImpl : public content::DownloadManagerDelegate {
+ public:
+  DownloadManagerDelegateImpl();
+  ~DownloadManagerDelegateImpl() override;
+
+  // content::DownloadManagerDelegate implementation:
+  bool InterceptDownloadIfApplicable(
+      const GURL& url,
+      const std::string& user_agent,
+      const std::string& content_disposition,
+      const std::string& mime_type,
+      const std::string& request_origin,
+      int64_t content_length,
+      bool is_transient,
+      content::WebContents* web_contents) override;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(DownloadManagerDelegateImpl);
+};
+
+}  // namespace weblayer
+
+#endif  // WEBLAYER_BROWSER_DOWNLOAD_MANAGER_DELEGATE_IMPL_H_
diff --git a/weblayer/browser/errorpage_browsertest.cc b/weblayer/browser/errorpage_browsertest.cc
index 4b13608..5f096193 100644
--- a/weblayer/browser/errorpage_browsertest.cc
+++ b/weblayer/browser/errorpage_browsertest.cc
@@ -5,6 +5,7 @@
 #include "weblayer/test/weblayer_browser_test.h"
 
 #include "base/macros.h"
+#include "build/build_config.h"
 #include "net/test/url_request/url_request_failed_job.h"
 #include "weblayer/shell/browser/shell.h"
 #include "weblayer/test/weblayer_browser_test_utils.h"
@@ -18,6 +19,8 @@
 
 using ErrorPageBrowserTest = WebLayerBrowserTest;
 
+// Disabled on Windows, see crbug.com/1034764
+#if !defined(OS_WIN)
 IN_PROC_BROWSER_TEST_F(ErrorPageBrowserTest, NameNotResolved) {
   GURL error_page_url =
       net::URLRequestFailedJob::GetMockHttpUrl(net::ERR_NAME_NOT_RESOLVED);
@@ -41,5 +44,6 @@
 
   NavigateAndWaitForFailure(error_page_url, shell());
 }
+#endif  // !defined(OS_WIN)
 
 }  // namespace weblayer
diff --git a/weblayer/browser/navigation_browsertest.cc b/weblayer/browser/navigation_browsertest.cc
index f3139ce6..7cdc341 100644
--- a/weblayer/browser/navigation_browsertest.cc
+++ b/weblayer/browser/navigation_browsertest.cc
@@ -5,6 +5,7 @@
 #include "weblayer/test/weblayer_browser_test.h"
 
 #include "base/files/file_path.h"
+#include "build/build_config.h"
 #include "content/public/test/url_loader_interceptor.h"
 #include "net/test/embedded_test_server/embedded_test_server.h"
 #include "weblayer/public/navigation.h"
@@ -67,6 +68,8 @@
 
 using NavigationBrowserTest = WebLayerBrowserTest;
 
+// Disabled on Windows, see crbug.com/1034764
+#if !defined(OS_WIN)
 IN_PROC_BROWSER_TEST_F(NavigationBrowserTest, NoError) {
   EXPECT_TRUE(embedded_test_server()->Start());
 
@@ -147,5 +150,6 @@
   EXPECT_EQ(observer.load_error(), Navigation::kConnectivityError);
   EXPECT_EQ(observer.navigation_state(), NavigationState::kFailed);
 }
+#endif  // !defined(OS_WIN)
 
 }  // namespace weblayer
diff --git a/weblayer/browser/profile_impl.cc b/weblayer/browser/profile_impl.cc
index ebc7b9d..76ebe3f 100644
--- a/weblayer/browser/profile_impl.cc
+++ b/weblayer/browser/profile_impl.cc
@@ -21,14 +21,13 @@
 #include "content/public/browser/browser_context.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/browsing_data_remover.h"
-#include "content/public/browser/download_manager_delegate.h"
 #include "content/public/browser/resource_context.h"
 #include "content/public/browser/storage_partition.h"
 #include "services/network/public/mojom/network_context.mojom.h"
+#include "weblayer/browser/download_manager_delegate_impl.h"
 #include "weblayer/browser/ssl_host_state_delegate_impl.h"
 #include "weblayer/browser/tab_impl.h"
 #include "weblayer/common/weblayer_paths.h"
-#include "weblayer/public/download_delegate.h"
 
 #if defined(OS_ANDROID)
 #include "base/android/callback_android.h"
@@ -59,37 +58,6 @@
   DISALLOW_COPY_AND_ASSIGN(ResourceContextImpl);
 };
 
-class DownloadManagerDelegateImpl : public content::DownloadManagerDelegate {
- public:
-  DownloadManagerDelegateImpl() = default;
-  ~DownloadManagerDelegateImpl() override = default;
-
-  bool InterceptDownloadIfApplicable(
-      const GURL& url,
-      const std::string& user_agent,
-      const std::string& content_disposition,
-      const std::string& mime_type,
-      const std::string& request_origin,
-      int64_t content_length,
-      bool is_transient,
-      content::WebContents* web_contents) override {
-    // If there's no DownloadDelegate, the download is simply dropped.
-    auto* tab = TabImpl::FromWebContents(web_contents);
-    if (!tab)
-      return true;
-
-    DownloadDelegate* delegate = tab->download_delegate();
-    if (!delegate)
-      return true;
-
-    return delegate->InterceptDownload(url, user_agent, content_disposition,
-                                       mime_type, content_length);
-  }
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(DownloadManagerDelegateImpl);
-};
-
 bool IsNameValid(const std::string& name) {
   for (size_t i = 0; i < name.size(); ++i) {
     char c = name[i];
diff --git a/weblayer/browser/ssl_browsertest.cc b/weblayer/browser/ssl_browsertest.cc
index 513a10c9..73c0343 100644
--- a/weblayer/browser/ssl_browsertest.cc
+++ b/weblayer/browser/ssl_browsertest.cc
@@ -7,6 +7,7 @@
 #include "base/files/file_path.h"
 #include "base/macros.h"
 #include "base/optional.h"
+#include "build/build_config.h"
 #include "net/test/embedded_test_server/embedded_test_server.h"
 #include "weblayer/shell/browser/shell.h"
 #include "weblayer/test/interstitial_utils.h"
@@ -126,6 +127,8 @@
   DISALLOW_COPY_AND_ASSIGN(SSLBrowserTest);
 };
 
+// Disabled on Windows, see crbug.com/1034764
+#if !defined(OS_WIN)
 // Tests clicking "take me back" on the interstitial page.
 IN_PROC_BROWSER_TEST_F(SSLBrowserTest, TakeMeBack) {
   NavigateToOkPage();
@@ -196,5 +199,6 @@
   NavigateToPageWithSslErrorExpectBlocked();
   NavigateToOtherOkPage();
 }
+#endif  // !defined(OS_WIN)
 
 }  // namespace weblayer
diff --git a/weblayer/browser/tab_impl.cc b/weblayer/browser/tab_impl.cc
index ace5e750..0987c1c 100644
--- a/weblayer/browser/tab_impl.cc
+++ b/weblayer/browser/tab_impl.cc
@@ -9,10 +9,10 @@
 #include "content/public/browser/file_select_listener.h"
 #include "content/public/browser/interstitial_page.h"
 #include "content/public/browser/navigation_controller.h"
+#include "content/public/browser/navigation_handle.h"
 #include "content/public/browser/render_frame_host.h"
 #include "content/public/browser/render_view_host.h"
 #include "content/public/browser/web_contents.h"
-#include "content/public/common/browser_controls_state.h"
 #include "third_party/blink/public/mojom/renderer_preferences.mojom.h"
 #include "ui/base/window_open_disposition.h"
 #include "weblayer/browser/file_select_helper.h"
@@ -42,6 +42,14 @@
 
 namespace {
 
+#if defined(OS_ANDROID)
+// The time that must elapse after a navigation before the browser controls can
+// be hidden. This value matches what chrome has in
+// TabStateBrowserControlsVisibilityDelegate.
+constexpr base::TimeDelta kBrowserControlsAllowHideDelay =
+    base::TimeDelta::FromSeconds(3);
+#endif
+
 NewTabType NewTabTypeFromWindowDisposition(WindowOpenDisposition disposition) {
   // WindowOpenDisposition has a *ton* of types, but the following are really
   // the only ones that should be hit for this code path.
@@ -291,8 +299,6 @@
 }
 
 int TabImpl::GetTopControlsHeight() {
-  if (is_fullscreen_)
-    return 0;
 #if defined(OS_ANDROID)
   return top_controls_container_view_
              ? top_controls_container_view_->GetTopControlsHeight()
@@ -327,11 +333,21 @@
                                                 weak_ptr_factory_.GetWeakPtr());
   base::AutoReset<bool> reset(&processing_enter_fullscreen_, true);
   fullscreen_delegate_->EnterFullscreen(std::move(exit_fullscreen_closure));
+#if defined(OS_ANDROID)
+  // Make sure browser controls cannot show when the tab is fullscreen.
+  UpdateBrowserControlsState(content::BROWSER_CONTROLS_STATE_HIDDEN,
+                             content::BROWSER_CONTROLS_STATE_BOTH, false);
+#endif
 }
 
 void TabImpl::ExitFullscreenModeForTab(content::WebContents* web_contents) {
   is_fullscreen_ = false;
   fullscreen_delegate_->ExitFullscreen();
+#if defined(OS_ANDROID)
+  // Attempt to show browser controls when exiting fullscreen.
+  UpdateBrowserControlsState(content::BROWSER_CONTROLS_STATE_BOTH,
+                             content::BROWSER_CONTROLS_STATE_SHOWN, true);
+#endif
 }
 
 bool TabImpl::IsFullscreenForTabOrPending(
@@ -368,16 +384,18 @@
 void TabImpl::DidFinishNavigation(
     content::NavigationHandle* navigation_handle) {
 #if defined(OS_ANDROID)
-  web_contents_->GetMainFrame()->UpdateBrowserControlsState(
-      content::BROWSER_CONTROLS_STATE_BOTH,
-      content::BROWSER_CONTROLS_STATE_SHOWN, false);
-
-  if (web_contents_->ShowingInterstitialPage()) {
-    web_contents_->GetInterstitialPage()
-        ->GetMainFrame()
-        ->UpdateBrowserControlsState(content::BROWSER_CONTROLS_STATE_SHOWN,
-                                     content::BROWSER_CONTROLS_STATE_SHOWN,
-                                     false);
+  if (navigation_handle->IsInMainFrame() &&
+      !navigation_handle->IsSameDocument()) {
+    // Force the browser controls to show initially, then allow hiding after a
+    // short delay.
+    UpdateBrowserControlsState(content::BROWSER_CONTROLS_STATE_SHOWN,
+                               content::BROWSER_CONTROLS_STATE_BOTH, true);
+    update_browser_controls_state_timer_.Start(
+        FROM_HERE, kBrowserControlsAllowHideDelay,
+        base::BindOnce(&TabImpl::UpdateBrowserControlsState,
+                       base::Unretained(this),
+                       content::BROWSER_CONTROLS_STATE_BOTH,
+                       content::BROWSER_CONTROLS_STATE_BOTH, true));
   }
 #endif
 }
@@ -403,6 +421,24 @@
     web_contents_->SyncRendererPrefs();
 }
 
+#if defined(OS_ANDROID)
+void TabImpl::UpdateBrowserControlsState(
+    content::BrowserControlsState constraints,
+    content::BrowserControlsState current,
+    bool animate) {
+  // Cancel the timer since the state was set explicitly.
+  update_browser_controls_state_timer_.Stop();
+  web_contents_->GetMainFrame()->UpdateBrowserControlsState(constraints,
+                                                            current, animate);
+
+  if (web_contents_->ShowingInterstitialPage()) {
+    web_contents_->GetInterstitialPage()
+        ->GetMainFrame()
+        ->UpdateBrowserControlsState(constraints, current, animate);
+  }
+}
+#endif
+
 std::unique_ptr<Tab> Tab::Create(Profile* profile) {
   return std::make_unique<TabImpl>(static_cast<ProfileImpl*>(profile));
 }
diff --git a/weblayer/browser/tab_impl.h b/weblayer/browser/tab_impl.h
index 8f55f31c..5b6b8a7 100644
--- a/weblayer/browser/tab_impl.h
+++ b/weblayer/browser/tab_impl.h
@@ -10,9 +10,11 @@
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
 #include "base/observer_list.h"
+#include "base/timer/timer.h"
 #include "build/build_config.h"
 #include "content/public/browser/web_contents_delegate.h"
 #include "content/public/browser/web_contents_observer.h"
+#include "content/public/common/browser_controls_state.h"
 #include "weblayer/browser/i18n_util.h"
 #include "weblayer/public/tab.h"
 
@@ -136,6 +138,12 @@
 
   void UpdateRendererPrefs(bool should_sync_prefs);
 
+#if defined(OS_ANDROID)
+  void UpdateBrowserControlsState(content::BrowserControlsState constraints,
+                                  content::BrowserControlsState current,
+                                  bool animate);
+#endif
+
   DownloadDelegate* download_delegate_ = nullptr;
   ErrorPageDelegate* error_page_delegate_ = nullptr;
   FullscreenDelegate* fullscreen_delegate_ = nullptr;
@@ -148,6 +156,7 @@
 #if defined(OS_ANDROID)
   TopControlsContainerView* top_controls_container_view_ = nullptr;
   base::android::ScopedJavaGlobalRef<jobject> java_impl_;
+  base::OneShotTimer update_browser_controls_state_timer_;
 #endif
 
   bool is_fullscreen_ = false;
diff --git a/weblayer/browser/webui/webui_browsertest.cc b/weblayer/browser/webui/webui_browsertest.cc
index 9d8f838..f92c02ac 100644
--- a/weblayer/browser/webui/webui_browsertest.cc
+++ b/weblayer/browser/webui/webui_browsertest.cc
@@ -4,12 +4,15 @@
 
 #include "weblayer/test/weblayer_browser_test.h"
 
+#include "build/build_config.h"
 #include "weblayer/test/weblayer_browser_test_utils.h"
 
 namespace weblayer {
 
 using WebLayerWebUIBrowserTest = WebLayerBrowserTest;
 
+// Disabled on Windows, see crbug.com/1034764
+#if !defined(OS_WIN)
 IN_PROC_BROWSER_TEST_F(WebLayerWebUIBrowserTest, WebUI) {
   NavigateAndWaitForCompletion(GURL("chrome://weblayer"), shell());
   base::RunLoop run_loop;
@@ -25,5 +28,6 @@
   EXPECT_TRUE(result);
 #endif
 }
+#endif  // !defined(OS_WIN)
 
 }  // namespace weblayer
diff --git a/weblayer/test/weblayer_browser_test_test.cc b/weblayer/test/weblayer_browser_test_test.cc
index 242e321..5ec9981b 100644
--- a/weblayer/test/weblayer_browser_test_test.cc
+++ b/weblayer/test/weblayer_browser_test_test.cc
@@ -4,16 +4,20 @@
 
 #include "weblayer/test/weblayer_browser_test.h"
 
+#include "build/build_config.h"
 #include "net/test/embedded_test_server/embedded_test_server.h"
 #include "weblayer/test/weblayer_browser_test_utils.h"
 
 namespace weblayer {
 
+// Disabled on Windows, see crbug.com/1034764
+#if !defined(OS_WIN)
 IN_PROC_BROWSER_TEST_F(WebLayerBrowserTest, Basic) {
   ASSERT_TRUE(embedded_test_server()->Start());
   GURL url = embedded_test_server()->GetURL("/simple_page.html");
 
   NavigateAndWaitForCompletion(url, shell());
 }
+#endif  // !defined(OS_WIN)
 
 }  // namespace weblayer